@firestitch/report 18.3.2 → 18.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/reports/export/report-pptx.service.d.ts +1 -0
- package/app/reports/interfaces/report.interface.d.ts +3 -1
- package/app/reports/option-builder.d.ts +3 -1
- package/esm2022/app/reports/export/report-pptx.service.mjs +33 -4
- package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
- package/esm2022/app/reports/option-builder.mjs +30 -8
- package/fesm2022/{firestitch-report-echarts-D4xJt3zs.mjs → firestitch-report-echarts-CFkoNvo_.mjs} +2 -2
- package/fesm2022/{firestitch-report-echarts-D4xJt3zs.mjs.map → firestitch-report-echarts-CFkoNvo_.mjs.map} +1 -1
- package/fesm2022/{firestitch-report-firestitch-report-DY8HwvAU.mjs → firestitch-report-firestitch-report-PZzkYYTD.mjs} +66 -15
- package/fesm2022/firestitch-report-firestitch-report-PZzkYYTD.mjs.map +1 -0
- package/fesm2022/firestitch-report.mjs +1 -1
- package/package.json +1 -1
- package/fesm2022/firestitch-report-firestitch-report-DY8HwvAU.mjs.map +0 -1
|
@@ -86,8 +86,9 @@ export declare const GRANULARITY_OPTIONS: {
|
|
|
86
86
|
value: ChartGranularity;
|
|
87
87
|
name: string;
|
|
88
88
|
}[];
|
|
89
|
+
export type AxisChartType = 'bar' | 'line' | 'area';
|
|
89
90
|
export interface ChartConfig {
|
|
90
|
-
chartType?:
|
|
91
|
+
chartType?: AxisChartType | 'pie' | 'donut';
|
|
91
92
|
xAxis?: {
|
|
92
93
|
column: string;
|
|
93
94
|
kind?: 'category' | 'time';
|
|
@@ -113,6 +114,7 @@ export interface ChartMeasure {
|
|
|
113
114
|
column: string;
|
|
114
115
|
aggregation?: 'sum' | 'count' | 'avg' | 'min' | 'max';
|
|
115
116
|
label?: string;
|
|
117
|
+
type?: AxisChartType;
|
|
116
118
|
format?: 'number' | 'percent' | 'currency';
|
|
117
119
|
precision?: number;
|
|
118
120
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EChartsOption } from 'echarts';
|
|
2
|
-
import { ChartConfig, ChartGranularity, ComponentData, LegendPosition, ReportComponent } from './interfaces/report.interface';
|
|
2
|
+
import { AxisChartType, ChartConfig, ChartGranularity, ComponentData, LegendPosition, ReportComponent } from './interfaces/report.interface';
|
|
3
3
|
export declare function isColorBy(config: ChartConfig): boolean;
|
|
4
4
|
export declare function colorByColumn(config: ChartConfig): string | undefined;
|
|
5
5
|
export interface ExtractedChartSeries {
|
|
@@ -7,9 +7,11 @@ export interface ExtractedChartSeries {
|
|
|
7
7
|
series: {
|
|
8
8
|
name: string;
|
|
9
9
|
values: (number | null)[];
|
|
10
|
+
type?: AxisChartType;
|
|
10
11
|
}[];
|
|
11
12
|
}
|
|
12
13
|
export declare function extractChartSeries(component: ReportComponent, data: ComponentData): ExtractedChartSeries;
|
|
14
|
+
export declare function seriesTypes(extracted: ExtractedChartSeries, chartType: AxisChartType): AxisChartType[];
|
|
13
15
|
export declare function buildChartOption(component: ReportComponent, data: ComponentData): EChartsOption;
|
|
14
16
|
export declare function resolveLegendPosition(config: ChartConfig, seriesCount: number, colorBy?: boolean): LegendPosition;
|
|
15
17
|
export declare function spansMultipleYears(categories: string[]): boolean;
|
|
@@ -3,7 +3,7 @@ import { format } from 'date-fns';
|
|
|
3
3
|
import { formatMeasureValue } from '../format';
|
|
4
4
|
import { DEFAULT_COMPONENT_PADDING, pageGeometry } from '../layout';
|
|
5
5
|
import { DEFAULT_TEXT_COLOR, DEFAULT_TEXT_SIZE, textParagraphs } from '../text';
|
|
6
|
-
import { extractChartSeries, formatPeriodLabel, isColorBy, resolveLegendPosition, spansMultipleYears } from '../option-builder';
|
|
6
|
+
import { extractChartSeries, formatPeriodLabel, isColorBy, resolveLegendPosition, seriesTypes, spansMultipleYears } from '../option-builder';
|
|
7
7
|
import { REPORT_CHART_COLORS } from '../theme/palette';
|
|
8
8
|
import { emptyLabel } from './report-export-collector.service';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
@@ -205,7 +205,7 @@ export class ReportPptxService {
|
|
|
205
205
|
const legendPosition = colorBy
|
|
206
206
|
? 'hidden'
|
|
207
207
|
: resolveLegendPosition(config, extracted.series.length);
|
|
208
|
-
|
|
208
|
+
const options = {
|
|
209
209
|
x, y, w, h,
|
|
210
210
|
chartColors: REPORT_CHART_COLORS,
|
|
211
211
|
showLegend: legendPosition !== 'hidden',
|
|
@@ -223,7 +223,36 @@ export class ReportPptxService {
|
|
|
223
223
|
valAxisTitle: config.measures?.[0]?.label,
|
|
224
224
|
valAxisTitleFontSize: 10,
|
|
225
225
|
dataBorder: { pt: 0, color: 'FFFFFF' },
|
|
226
|
-
}
|
|
226
|
+
};
|
|
227
|
+
// The type each chartData entry is drawn as. A pie is one entry of its own
|
|
228
|
+
// type; colorBy collapsed its series into one, drawn as the lone measure's.
|
|
229
|
+
const dataTypes = pie
|
|
230
|
+
? [chartType]
|
|
231
|
+
: seriesTypes(extracted, chartType).slice(0, colorBy ? 1 : undefined);
|
|
232
|
+
this._addChart(slide, typeMap, dataTypes.length ? dataTypes : [chartType], chartData, options);
|
|
233
|
+
}
|
|
234
|
+
// One native chart when every entry is drawn as the same type. A combo is
|
|
235
|
+
// pptxgenjs's multi-type chart: one entry per type, all on the same category
|
|
236
|
+
// and value axes. It restarts the palette for every type, so each type is
|
|
237
|
+
// handed the colors its series have on screen.
|
|
238
|
+
_addChart(slide, typeMap, dataTypes, chartData, options) {
|
|
239
|
+
const distinct = [...new Set(dataTypes)];
|
|
240
|
+
if (distinct.length === 1) {
|
|
241
|
+
slide.addChart(typeMap[distinct[0]], chartData, options);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
slide.addChart(distinct.map((type) => {
|
|
245
|
+
const indexes = dataTypes
|
|
246
|
+
.map((dataType, index) => (dataType === type ? index : -1))
|
|
247
|
+
.filter((index) => index >= 0);
|
|
248
|
+
return {
|
|
249
|
+
type: typeMap[type],
|
|
250
|
+
data: indexes.map((index) => chartData[index]),
|
|
251
|
+
options: {
|
|
252
|
+
chartColors: indexes.map((index) => REPORT_CHART_COLORS[index % REPORT_CHART_COLORS.length]),
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
}), options);
|
|
227
256
|
}
|
|
228
257
|
_renderTable(slide, component, data, x, y, w, h) {
|
|
229
258
|
const config = component.config;
|
|
@@ -294,4 +323,4 @@ export class ReportPptxService {
|
|
|
294
323
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportPptxService, decorators: [{
|
|
295
324
|
type: Injectable
|
|
296
325
|
}] });
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBwdHguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9leHBvcnQvcmVwb3J0LXBwdHguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBVy9DLE9BQU8sRUFBcUIseUJBQXlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBb0IsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQXVDLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUdwRyxxREFBcUQ7QUFDckQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLHVFQUF1RTtBQUN2RSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFFekIsNEVBQTRFO0FBQzVFLDZFQUE2RTtBQUM3RSxVQUFVO0FBQ1YsTUFBTSxlQUFlLEdBQWtEO0lBQ3JFLEdBQUcsRUFBRSxHQUFHO0lBQ1IsTUFBTSxFQUFFLEdBQUc7SUFDWCxJQUFJLEVBQUUsR0FBRztJQUNULEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLEdBQUc7Q0FDWixDQUFDO0FBRUYsMkVBQTJFO0FBQzNFLDJFQUEyRTtBQUMzRSw2RUFBNkU7QUFDN0UsMEVBQTBFO0FBQzFFLDBF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QUFFLENBQUMsSUFBSSxRQUFRLENBQUM7SUFDNUYsQ0FBQzt3R0FsVVUsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcblxuaW1wb3J0IHsgZm9ybWF0TWVhc3VyZVZhbHVlIH0gZnJvbSAnLi4vZm9ybWF0JztcbmltcG9ydCB7XG4gIENoYXJ0Q29uZmlnLFxuICBDb21wb25lbnREYXRhLFxuICBMZWdlbmRQb3NpdGlvbixcbiAgTGlzdENvbmZpZyxcbiAgS3BpQ29uZmlnLFxuICBSZXBvcnQsXG4gIFJlcG9ydENvbXBvbmVudCxcbiAgUmVwb3J0UGFnZSxcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBvbmVudEdlb21ldHJ5LCBERUZBVUxUX0NPTVBPTkVOVF9QQURESU5HLCBwYWdlR2VvbWV0cnkgfSBmcm9tICcuLi9sYXlvdXQnO1xuaW1wb3J0IHsgREVGQVVMVF9URVhUX0NPTE9SLCBERUZBVUxUX1RFWFRfU0laRSwgVGV4dFRva2VuQ29udGV4dCwgdGV4dFBhcmFncmFwaHMgfSBmcm9tICcuLi90ZXh0JztcbmltcG9ydCB7IGV4dHJhY3RDaGFydFNlcmllcywgZm9ybWF0UGVyaW9kTGFiZWwsIGlzQ29sb3JCeSwgcmVzb2x2ZUxlZ2VuZFBvc2l0aW9uLCBzcGFuc011bHRpcGxlWWVhcnMgfSBmcm9tICcuLi9vcHRpb24tYnVpbGRlcic7XG5pbXBvcnQgeyBSRVBPUlRfQ0hBUlRfQ09MT1JTIH0gZnJvbSAnLi4vdGhlbWUvcGFsZXR0ZSc7XG5pbXBvcnQgeyBDb2xsZWN0ZWRDb21wb25lbnQsIENvbGxlY3RlZFJlcG9ydCwgZW1wdHlMYWJlbCB9IGZyb20gJy4vcmVwb3J0LWV4cG9ydC1jb2xsZWN0b3Iuc2VydmljZSc7XG5cblxuLy8gQ29tcG9uZW50IHRpdGxlIHN0cmlwIGhlaWdodCBvbiB0aGUgc2xpZGUsIGluY2hlcy5cbmNvbnN0IFRJVExFX0ggPSAwLjI4O1xuLy8gQXBwcm94aW1hdGUgdGFibGUgcm93IGhlaWdodCwgaW5jaGVzIOKAlCBkcml2ZXMgdGhlIHJvd3MtdGhhdC1maXQgY2FwLlxuY29uc3QgVEFCTEVfUk9XX0ggPSAwLjI2O1xuXG4vLyBPdXIgbGVnZW5kIHBvc2l0aW9ucyBtYXBwZWQgdG8gcHB0eGdlbmpzJ3Mgc2luZ2xlLWxldHRlciBsZWdlbmRQb3MgY29kZXMuXG4vLyAnaGlkZGVuJyBoYXMgbm8gc2xvdCDigJQgc2hvd0xlZ2VuZCBpcyB0dXJuZWQgb2ZmIGluc3RlYWQg4oCUIHNvIGl0IGZhbGxzIGJhY2tcbi8vIHRvIHRvcC5cbmNvbnN0IFBQVFhfTEVHRU5EX1BPUzogUmVjb3JkPExlZ2VuZFBvc2l0aW9uLCAndCcgfCAnYicgfCAnbCcgfCAncic+ID0ge1xuICB0b3A6ICd0JyxcbiAgYm90dG9tOiAnYicsXG4gIGxlZnQ6ICdsJyxcbiAgcmlnaHQ6ICdyJyxcbiAgaGlkZGVuOiAndCcsXG59O1xuXG4vLyBCdWlsZHMgdGhlIFBvd2VyUG9pbnQgZGVjayBjbGllbnQtc2lkZSB3aXRoIHBwdHhnZW5qcy4gQ2hhcnRzIGFyZSBOQVRJVkVcbi8vIGVkaXRhYmxlIFBvd2VyUG9pbnQgY2hhcnRzIChzbGlkZS5hZGRDaGFydCB3cml0ZXMgcmVhbCBjaGFydCBYTUwgd2l0aCBhblxuLy8gZW1iZWRkZWQgZGF0YSB3b3JrYm9vayDigJQgXCJFZGl0IERhdGFcIiB3b3JrcyksIG5ldmVyIGltYWdlcy4gVGhlIHBhZ2UgSVMgdGhlXG4vLyBzbGlkZTogdGhlIHJlcG9ydCdzIHVuaXQgaXMgaW5jaGVzIOKAlCBleGFjdGx5IFBvd2VyUG9pbnQncyB1bml0IOKAlCBzbyB0aGVcbi8vIGxheW91dCBhbmQgZXZlcnkgY29tcG9uZW50IHBvc2l0aW9uIHRyYW5zZmVyIHdpdGggbm8gY29udmVyc2lvbiBhdCBhbGwuXG4vLyBwcHR4Z2VuanMgaXMgbG9hZGVkIGxhemlseSBzbyBpdCBsaXZlcyBpbiBpdHMgb3duIHdlYnBhY2sgY2h1bmsuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVwb3J0UHB0eFNlcnZpY2Uge1xuXG4gIHB1YmxpYyBhc3luYyBleHBvcnQoY29sbGVjdGVkOiBDb2xsZWN0ZWRSZXBvcnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBQcHR4R2VuSlMgPSAoYXdhaXQgaW1wb3J0KCdwcHR4Z2VuanMnKSkuZGVmYXVsdDtcblxuICAgIGNvbnN0IHJlcG9ydCA9IGNvbGxlY3RlZC5yZXBvcnQ7XG4gICAgY29uc3QgcGFnZVcgPSByZXBvcnQucGFnZVdpZHRoO1xuICAgIGNvbnN0IHBhZ2VIID0gcmVwb3J0LnBhZ2VIZWlnaHQ7XG5cbiAgICBjb25zdCBwcHR4ID0gbmV3IFBwdHhHZW5KUygpO1xuICAgIHBwdHguZGVmaW5lTGF5b3V0KHsgbmFtZTogJ1JFUE9SVCcsIHdpZHRoOiBwYWdlVywgaGVpZ2h0OiBwYWdlSCB9KTtcbiAgICBwcHR4LmxheW91dCA9ICdSRVBPUlQnO1xuICAgIHBwdHgudGl0bGUgPSByZXBvcnQubmFtZTtcblxuICAgIHRoaXMuX3RpdGxlU2xpZGUocHB0eCwgY29sbGVjdGVkLCBwYWdlVywgcGFnZUgpO1xuXG4gICAgY29sbGVjdGVkLnBhZ2VzLmZvckVhY2goKGNvbGxlY3RlZFBhZ2UsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzbGlkZSA9IHBwdHguYWRkU2xpZGUoKTtcbiAgICAgIGNvbnN0IGdlb21ldHJ5ID0gcGFnZUdlb21ldHJ5KHJlcG9ydCwgY29sbGVjdGVkUGFnZS5wYWdlKTtcbiAgICAgIGNvbnN0IHRva2VucyA9IHRoaXMuX3Rva2VucyhyZXBvcnQsIGNvbGxlY3RlZFBhZ2UucGFnZSwgaW5kZXgpO1xuXG4gICAgICAvLyBUaGUgaGVhZGVyIGFuZCBmb290ZXIgZmlyc3QsIHNvIHRoZSBwYWdlJ3Mgb3duIGNvbXBvbmVudHMgc2l0IG9uIHRvcFxuICAgICAgLy8gb2YgdGhlbSBleGFjdGx5IGFzIG9uIHRoZSBjYW52YXMuXG4gICAgICBpZiAoIWNvbGxlY3RlZFBhZ2UucGFnZS5tYXN0ZXJIaWRkZW4pIHtcbiAgICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgcmVwb3J0Lm1hc3Rlcj8uY29tcG9uZW50cyA/PyBbXSkge1xuICAgICAgICAgIHRoaXMuX3JlbmRlclRleHQoc2xpZGUsIGNvbXBvbmVudCwgY29tcG9uZW50LCB0b2tlbnMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb2xsZWN0ZWRQYWdlLmNvbXBvbmVudHMpIHtcbiAgICAgICAgY29uc3QgYm94ID0gZ2VvbWV0cnkuZ2V0KGl0ZW0uY29tcG9uZW50LmlkKTtcblxuICAgICAgICBpZiAoaXRlbS5jb21wb25lbnQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgdGhpcy5fcmVuZGVyVGV4dChzbGlkZSwgaXRlbS5jb21wb25lbnQsIGJveCA/PyBpdGVtLmNvbXBvbmVudCwgdG9rZW5zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJDb21wb25lbnQocHB0eCwgc2xpZGUsIGl0ZW0sIGJveCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGF3YWl0IHBwdHgud3JpdGVGaWxlKHsgZmlsZU5hbWU6IGAke3RoaXMuX3NsdWcocmVwb3J0Lm5hbWUpfS5wcHR4YCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3RpdGxlU2xpZGUocHB0eDogYW55LCBjb2xsZWN0ZWQ6IENvbGxlY3RlZFJlcG9ydCwgcGFnZVc6IG51bWJlciwgcGFnZUg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHNsaWRlID0gcHB0eC5hZGRTbGlkZSgpO1xuXG4gICAgc2xpZGUuYWRkVGV4dChjb2xsZWN0ZWQucmVwb3J0Lm5hbWUsIHtcbiAgICAgIHg6IDAuNSwgeTogcGFnZUggKiAwLjMsIHc6IHBhZ2VXIC0gMSwgaDogMC44LFxuICAgICAgZm9udFNpemU6IDMwLCBib2xkOiB0cnVlLCBjb2xvcjogJzFGMjkzMycsXG4gICAgfSk7XG5cbiAgICBjb25zdCBsaW5lcyA9IFtcbiAgICAgIGZvcm1hdChuZXcgRGF0ZSgpLCAnTU1NTSBkLCB5eXl5JyksXG4gICAgICAuLi5jb2xsZWN0ZWQuZmlsdGVyU3VtbWFyeSxcbiAgICBdO1xuXG4gICAgc2xpZGUuYWRkVGV4dChsaW5lcy5qb2luKCdcXG4nKSwge1xuICAgICAgeDogMC41LCB5OiBwYWdlSCAqIDAuMyArIDAuOSwgdzogcGFnZVcgLSAxLCBoOiBNYXRoLm1heCgwLjQsIGxpbmVzLmxlbmd0aCAqIDAuMjUpLFxuICAgICAgZm9udFNpemU6IDEyLCBjb2xvcjogJzUyNjA2RCcsXG4gICAgfSk7XG4gIH1cblxuICAvLyBBIHRleHQgYmxvY2sgYXMgT05FIG5hdGl2ZSBQb3dlclBvaW50IHRleHQgYm94IOKAlCBlZGl0YWJsZSBpbiB0aGUgZGVjaywgd2l0aFxuICAvLyBlYWNoIHBhcmFncmFwaCdzIHJ1bnMgY2FycnlpbmcgdGhlaXIgb3duIGJvbGQvaXRhbGljL2NvbG9yL3NpemUuIFRoZSBib3gnc1xuICAvLyBpbnNldCBpcyB0aGUgYmxvY2sncyBwYWRkaW5nLCBzbyB0aGUgd29yZHMgbGFuZCB3aGVyZSB0aGV5IHNhdCBvbiBzY3JlZW4uXG4gIHByaXZhdGUgX3JlbmRlclRleHQoc2xpZGU6IGFueSwgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnQsIGJveDogQ29tcG9uZW50R2VvbWV0cnksIHRva2VuczogVGV4dFRva2VuQ29udGV4dCk6IHZvaWQge1xuICAgIGNvbnN0IHJ1bnM6IGFueVtdID0gW107XG4gICAgY29uc3QgcGFyYWdyYXBocyA9IHRleHRQYXJhZ3JhcGhzKGNvbXBvbmVudC5jb25maWc/Lmh0bWwgPz8gJycsIHRva2Vucyk7XG5cbiAgICBwYXJhZ3JhcGhzLmZvckVhY2goKHBhcmFncmFwaCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGlzTGFzdCA9IGluZGV4ID09PSBwYXJhZ3JhcGhzLmxlbmd0aCAtIDE7XG4gICAgICBjb25zdCBwYXJhZ3JhcGhPcHRpb25zID0ge1xuICAgICAgICBhbGlnbjogcGFyYWdyYXBoLmFsaWduLFxuICAgICAgICBidWxsZXQ6IHBhcmFncmFwaC5idWxsZXQgPT09ICdudW1iZXInXG4gICAgICAgICAgPyB7IHR5cGU6ICdudW1iZXInIH1cbiAgICAgICAgICA6IChwYXJhZ3JhcGguYnVsbGV0ID09PSAnYnVsbGV0JyA/IHRydWUgOiB1bmRlZmluZWQpLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHBhcmFncmFwaFJ1bnMgPSBwYXJhZ3JhcGgucnVucy5sZW5ndGggPyBwYXJhZ3JhcGgucnVucyA6IFt7IHRleHQ6ICcnIH1dO1xuXG4gICAgICBwYXJhZ3JhcGhSdW5zLmZvckVhY2goKHJ1biwgcnVuSW5kZXgpID0+IHtcbiAgICAgICAgcnVucy5wdXNoKHtcbiAgICAgICAgICB0ZXh0OiBydW4udGV4dCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAuLi5wYXJhZ3JhcGhPcHRpb25zLFxuICAgICAgICAgICAgYm9sZDogcnVuLmJvbGQsXG4gICAgICAgICAgICBpdGFsaWM6IHJ1bi5pdGFsaWMsXG4gICAgICAgICAgICB1bmRlcmxpbmU6IHJ1bi51bmRlcmxpbmUgPyB7IHN0eWxlOiAnc25nJyB9IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc3RyaWtlOiBydW4uc3RyaWtlID8gJ3NuZ1N0cmlrZScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb2xvcjogKHJ1bi5jb2xvciA/PyBERUZBVUxUX1RFWFRfQ09MT1IpLnJlcGxhY2UoJyMnLCAnJyksXG4gICAgICAgICAgICBoaWdobGlnaHQ6IHJ1bi5oaWdobGlnaHQ/LnJlcGxhY2UoJyMnLCAnJyksXG4gICAgICAgICAgICBmb250U2l6ZTogcnVuLmZvbnRTaXplID8/IERFRkFVTFRfVEVYVF9TSVpFLFxuICAgICAgICAgICAgZm9udEZhY2U6IHJ1bi5mb250RmFjZSxcbiAgICAgICAgICAgIGh5cGVybGluazogcnVuLmxpbmsgPyB7IHVybDogcnVuLmxpbmsgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJyZWFrTGluZTogcnVuSW5kZXggPT09IHBhcmFncmFwaFJ1bnMubGVuZ3RoIC0gMSAmJiAhaXNMYXN0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpZiAoIXJ1bnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFkZGluZyA9IGNvbXBvbmVudC5jb25maWc/LnBhZGRpbmc7XG4gICAgY29uc3QgaW5zZXQgPSAodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gKHZhbHVlID8/IERFRkFVTFRfQ09NUE9ORU5UX1BBRERJTkcpICogNzI7XG5cbiAgICBzbGlkZS5hZGRUZXh0KHJ1bnMsIHtcbiAgICAgIHg6IGJveC54LCB5OiBib3gueSwgdzogYm94LncsIGg6IGJveC5oLFxuICAgICAgdmFsaWduOiAndG9wJyxcbiAgICAgIGZvbnRGYWNlOiAnQXJpYWwnLFxuICAgICAgbWFyZ2luOiBbaW5zZXQocGFkZGluZz8ubGVmdCksIGluc2V0KHBhZGRpbmc/LnJpZ2h0KSwgaW5zZXQocGFkZGluZz8uYm90dG9tKSwgaW5zZXQocGFkZGluZz8udG9wKV0sXG4gICAgICBmaXQ6ICdub25lJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFdoYXQgYSB0ZXh0IGJsb2NrJ3MgdG9rZW5zIGZpbGwgd2l0aCBvbiB0aGlzIHNsaWRlOiB0aGUgcGFnZSdzIHBvc2l0aW9uXG4gIC8vIGFtb25nIHRoZSByZXBvcnQncyBwYWdlcyDigJQgdGhlIHRpdGxlIHNsaWRlIGlzIG5vdCBhIHJlcG9ydCBwYWdlLlxuICBwcml2YXRlIF90b2tlbnMocmVwb3J0OiBSZXBvcnQsIHBhZ2U6IFJlcG9ydFBhZ2UsIGluZGV4OiBudW1iZXIpOiBUZXh0VG9rZW5Db250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnZU51bWJlcjogaW5kZXggKyAxLFxuICAgICAgcGFnZU5hbWU6IHBhZ2UubmFtZSB8fCBgUGFnZSAke2luZGV4ICsgMX1gLFxuICAgICAgcmVwb3J0TmFtZTogcmVwb3J0Lm5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlckNvbXBvbmVudChwcHR4OiBhbnksIHNsaWRlOiBhbnksIGl0ZW06IENvbGxlY3RlZENvbXBvbmVudCwgZ2VvbWV0cnk/OiBDb21wb25lbnRHZW9tZXRyeSk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IGl0ZW0uY29tcG9uZW50O1xuICAgIC8vIEdlb21ldHJ5IGlzIGluIGluY2hlcyDigJQgUG93ZXJQb2ludCdzIG5hdGl2ZSB1bml0IChmbG93IGxheW91dCBhcnJpdmVzXG4gICAgLy8gcHJlLXJlc29sdmVkIGludG8gcm93cyBieSBwYWdlR2VvbWV0cnkpLlxuICAgIGNvbnN0IHsgeCwgeSwgdywgaCB9ID0gZ2VvbWV0cnkgPz8gY29tcG9uZW50O1xuXG4gICAgaWYgKGNvbXBvbmVudC50aXRsZSkge1xuICAgICAgc2xpZGUuYWRkVGV4dChjb21wb25lbnQudGl0bGUsIHtcbiAgICAgICAgeCwgeSwgdywgaDogVElUTEVfSCxcbiAgICAgICAgZm9udFNpemU6IDEwLCBib2xkOiB0cnVlLCBjb2xvcjogJzFGMjkzMycsIHZhbGlnbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5WSA9IHkgKyBUSVRMRV9IO1xuICAgIGNvbnN0IGJvZHlIID0gTWF0aC5tYXgoMC4zLCBoIC0gVElUTEVfSCk7XG5cbiAgICBpZiAoIWl0ZW0uZGF0YSB8fCAhaXRlbS5kYXRhLnJvd3M/Lmxlbmd0aCkge1xuICAgICAgc2xpZGUuYWRkVGV4dChlbXB0eUxhYmVsKGl0ZW0pLCB7XG4gICAgICAgIHgsIHk6IGJvZHlZLCB3LCBoOiBib2R5SCxcbiAgICAgICAgZm9udFNpemU6IDEwLCBpdGFsaWM6IHRydWUsIGNvbG9yOiAnN0I4Nzk0JywgYWxpZ246ICdjZW50ZXInLCB2YWxpZ246ICdtaWRkbGUnLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XG4gICAgICBjYXNlICdjaGFydCc6XG4gICAgICAgIHRoaXMuX3JlbmRlckNoYXJ0KHBwdHgsIHNsaWRlLCBjb21wb25lbnQsIGl0ZW0uZGF0YSwgeCwgYm9keVksIHcsIGJvZHlIKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsaXN0JzpcbiAgICAgICAgdGhpcy5fcmVuZGVyVGFibGUoc2xpZGUsIGNvbXBvbmVudCwgaXRlbS5kYXRhLCB4LCBib2R5WSwgdywgYm9keUgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2twaSc6XG4gICAgICAgIHRoaXMuX3JlbmRlcktwaShzbGlkZSwgY29tcG9uZW50LCBpdGVtLmRhdGEsIHgsIGJvZHlZLCB3LCBib2R5SCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlckNoYXJ0KFxuICAgIHBwdHg6IGFueSxcbiAgICBzbGlkZTogYW55LFxuICAgIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICAgIGRhdGE6IENvbXBvbmVudERhdGEsXG4gICAgeDogbnVtYmVyLCB5OiBudW1iZXIsIHc6IG51bWJlciwgaDogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBjb25maWcgPSBjb21wb25lbnQuY29uZmlnIGFzIENoYXJ0Q29uZmlnO1xuICAgIGNvbnN0IGNoYXJ0VHlwZSA9IGNvbmZpZy5jaGFydFR5cGUgPz8gJ2Jhcic7XG4gICAgY29uc3QgZXh0cmFjdGVkID0gZXh0cmFjdENoYXJ0U2VyaWVzKGNvbXBvbmVudCwgZGF0YSk7XG5cbiAgICBjb25zdCB0eXBlTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgYmFyOiBwcHR4LkNoYXJ0VHlwZS5iYXIsXG4gICAgICBsaW5lOiBwcHR4LkNoYXJ0VHlwZS5saW5lLFxuICAgICAgYXJlYTogcHB0eC5DaGFydFR5cGUuYXJlYSxcbiAgICAgIHBpZTogcHB0eC5DaGFydFR5cGUucGllLFxuICAgICAgZG9udXQ6IHBwdHguQ2hhcnRUeXBlLmRvdWdobnV0LFxuICAgIH07XG5cbiAgICBjb25zdCBwaWUgPSBjaGFydFR5cGUgPT09ICdwaWUnIHx8IGNoYXJ0VHlwZSA9PT0gJ2RvbnV0JztcbiAgICBjb25zdCBjb2xvckJ5ID0gaXNDb2xvckJ5KGNvbmZpZyk7XG5cbiAgICAvLyBDb21wYWN0IHBlcmlvZCBsYWJlbHMgbWF0Y2ggdGhlIG9uLXNjcmVlbiBheGlzICh5ZWFyIG9ubHkgd2hlbiB0aGUgZGF0YVxuICAgIC8vIHNwYW5zIHllYXJzKTsgUG93ZXJQb2ludCBjYW4ndCBkbyBhIHN0eWxlZCBzZWNvbmQgbGluZSwgc28gaXQncyBpbmxpbmUuXG4gICAgY29uc3QgZ3JhbnVsYXJpdHkgPSBkYXRhLmdyYW51bGFyaXR5O1xuICAgIGNvbnN0IGxhYmVscyA9IGdyYW51bGFyaXR5XG4gICAgICA/IGV4dHJhY3RlZC5jYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnkpID0+XG4gICAgICAgIGZvcm1hdFBlcmlvZExhYmVsKGNhdGVnb3J5LCBncmFudWxhcml0eSwgc3BhbnNNdWx0aXBsZVllYXJzKGV4dHJhY3RlZC5jYXRlZ29yaWVzKSkpXG4gICAgICA6IGV4dHJhY3RlZC5jYXRlZ29yaWVzO1xuXG4gICAgLy8gTmF0aXZlIGNoYXJ0IGRhdGE6IG9uZSBlbnRyeSBwZXIgc2VyaWVzIChwaWUgY2hhcnRzIHRha2UgZXhhY3RseSBvbmUpLlxuICAgIC8vIGNvbG9yQnkgZW1pdHMgb25lIHNlcmllcyBwZXIgY2F0ZWdvcnkgZm9yIHRoZSBvbi1zY3JlZW4gb3ZlcmxhcDsgUG93ZXJQb2ludFxuICAgIC8vIGhhcyBubyBlcXVpdmFsZW50IG92ZXJsYXAsIHNvIGNvbGxhcHNlIHRoZW0gYmFjayBpbnRvIGEgc2luZ2xlIHNlcmllcyAoZWFjaFxuICAgIC8vIGNhdGVnb3J5J3MgdmFsdWUgc2l0cyBhdCBpdHMgb3duIHNsb3QpIOKAlCBvbmUgZnVsbC13aWR0aCBiYXIgcGVyIGNhdGVnb3J5IOKAlFxuICAgIC8vIHJhdGhlciB0aGFuIGxldHRpbmcgUG93ZXJQb2ludCBjbHVzdGVyIHRoZW0gaW50byBzbGl2ZXJzLlxuICAgIGNvbnN0IGNoYXJ0RGF0YSA9IGNvbG9yQnlcbiAgICAgID8gW3tcbiAgICAgICAgbmFtZTogY29uZmlnLm1lYXN1cmVzPy5bMF0/LmxhYmVsID8/IGNvbmZpZy5jb2xvckJ5Py5sYWJlbCA/PyAnJyxcbiAgICAgICAgbGFiZWxzLFxuICAgICAgICB2YWx1ZXM6IGV4dHJhY3RlZC5jYXRlZ29yaWVzLm1hcCgoXywgaW5kZXgpID0+IGV4dHJhY3RlZC5zZXJpZXNbaW5kZXhdPy52YWx1ZXNbaW5kZXhdID8/IDApLFxuICAgICAgfV1cbiAgICAgIDogKHBpZSA/IGV4dHJhY3RlZC5zZXJpZXMuc2xpY2UoMCwgMSkgOiBleHRyYWN0ZWQuc2VyaWVzKVxuICAgICAgICAubWFwKChzZXJpZXMpID0+ICh7XG4gICAgICAgICAgbmFtZTogc2VyaWVzLm5hbWUsXG4gICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgIHZhbHVlczogc2VyaWVzLnZhbHVlcy5tYXAoKHZhbHVlKSA9PiB2YWx1ZSA/PyAwKSxcbiAgICAgICAgfSkpO1xuXG4gICAgLy8gQSBzaW5nbGUtc2VyaWVzIGNvbG9yQnkgY2hhcnQgY2FuJ3QgY2FycnkgYSBwZXItY2F0ZWdvcnkgbGVnZW5kIGluIGEgbmF0aXZlXG4gICAgLy8gUG93ZXJQb2ludCBiYXIgY2hhcnQ7IHRoZSBjYXRlZ29yeSBheGlzIGxhYmVscyBpZGVudGlmeSBlYWNoIGJhciBpbnN0ZWFkLlxuICAgIGNvbnN0IGxlZ2VuZFBvc2l0aW9uID0gY29sb3JCeVxuICAgICAgPyAnaGlkZGVuJ1xuICAgICAgOiByZXNvbHZlTGVnZW5kUG9zaXRpb24oY29uZmlnLCBleHRyYWN0ZWQuc2VyaWVzLmxlbmd0aCk7XG5cbiAgICBzbGlkZS5hZGRDaGFydCh0eXBlTWFwW2NoYXJ0VHlwZV0sIGNoYXJ0RGF0YSwge1xuICAgICAgeCwgeSwgdywgaCxcbiAgICAgIGNoYXJ0Q29sb3JzOiBSRVBPUlRfQ0hBUlRfQ09MT1JTLFxuICAgICAgc2hvd0xlZ2VuZDogbGVnZW5kUG9zaXRpb24gIT09ICdoaWRkZW4nLFxuICAgICAgbGVnZW5kUG9zOiBQUFRYX0xFR0VORF9QT1NbbGVnZW5kUG9zaXRpb25dLFxuICAgICAgbGVnZW5kRm9udFNpemU6IDksXG4gICAgICBiYXJEaXI6IGNvbmZpZy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ2JhcicgOiAnY29sJyxcbiAgICAgIGJhckdyb3VwaW5nOiBjb25maWcuc3RhY2tlZCA/ICdzdGFja2VkJyA6ICdjbHVzdGVyZWQnLFxuICAgICAgaG9sZVNpemU6IGNoYXJ0VHlwZSA9PT0gJ2RvbnV0JyA/IDU1IDogdW5kZWZpbmVkLFxuICAgICAgY2F0QXhpc0xhYmVsRm9udFNpemU6IDksXG4gICAgICB2YWxBeGlzTGFiZWxGb250U2l6ZTogOSxcbiAgICAgIHNob3dDYXRBeGlzVGl0bGU6ICEhY29uZmlnLnhBeGlzPy5sYWJlbCxcbiAgICAgIGNhdEF4aXNUaXRsZTogY29uZmlnLnhBeGlzPy5sYWJlbCxcbiAgICAgIGNhdEF4aXNUaXRsZUZvbnRTaXplOiAxMCxcbiAgICAgIHNob3dWYWxBeGlzVGl0bGU6ICEhY29uZmlnLm1lYXN1cmVzPy5bMF0/LmxhYmVsICYmICFwaWUsXG4gICAgICB2YWxBeGlzVGl0bGU6IGNvbmZpZy5tZWFzdXJlcz8uWzBdPy5sYWJlbCxcbiAgICAgIHZhbEF4aXNUaXRsZUZvbnRTaXplOiAxMCxcbiAgICAgIGRhdGFCb3JkZXI6IHsgcHQ6IDAsIGNvbG9yOiAnRkZGRkZGJyB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyVGFibGUoXG4gICAgc2xpZGU6IGFueSxcbiAgICBjb21wb25lbnQ6IFJlcG9ydENvbXBvbmVudCxcbiAgICBkYXRhOiBDb21wb25lbnREYXRhLFxuICAgIHg6IG51bWJlciwgeTogbnVtYmVyLCB3OiBudW1iZXIsIGg6IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnID0gY29tcG9uZW50LmNvbmZpZyBhcyBMaXN0Q29uZmlnO1xuICAgIGNvbnN0IGNvbHVtbnMgPSBjb25maWcuY29sdW1ucz8ubGVuZ3RoXG4gICAgICA/IGNvbmZpZy5jb2x1bW5zXG4gICAgICA6IGRhdGEuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHsgY29sdW1uLCBsYWJlbDogY29sdW1uIH0pKTtcblxuICAgIGNvbnN0IGNhcCA9IE1hdGgubWF4KDIsIE1hdGguZmxvb3IoaCAvIFRBQkxFX1JPV19IKSAtIDEpO1xuICAgIGNvbnN0IHJvd3MgPSBkYXRhLnJvd3Muc2xpY2UoMCwgY2FwKTtcbiAgICBjb25zdCByZW1haW5pbmcgPSAoZGF0YS5wYWdpbmc/LnRvdGFsID8/IGRhdGEucm93cy5sZW5ndGgpIC0gcm93cy5sZW5ndGg7XG5cbiAgICBjb25zdCBoZWFkZXIgPSBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiAoe1xuICAgICAgdGV4dDogY29sdW1uLmxhYmVsIHx8IGNvbHVtbi5jb2x1bW4sXG4gICAgICBvcHRpb25zOiB7IGJvbGQ6IHRydWUsIGNvbG9yOiAnRkZGRkZGJywgZmlsbDogeyBjb2xvcjogJzRFNzlBNycgfSB9LFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGJvZHkgPSByb3dzLm1hcCgocm93KSA9PiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiAoe1xuICAgICAgdGV4dDogdGhpcy5fY2VsbChyb3dbY29sdW1uLmNvbHVtbl0sIGNvbHVtbi5mb3JtYXQpLFxuICAgICAgb3B0aW9uczoge30sXG4gICAgfSkpKTtcblxuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBib2R5LnB1c2goW3tcbiAgICAgICAgdGV4dDogYOKApiAke3JlbWFpbmluZ30gbW9yZSByb3cocykg4oCUIHVzZSB0aGUgY29tcG9uZW50J3MgQ1NWIGV4cG9ydCBmb3IgdGhlIGZ1bGwgZGF0YXNldGAsXG4gICAgICAgIG9wdGlvbnM6IHsgY29sc3BhbjogY29sdW1ucy5sZW5ndGgsIGl0YWxpYzogdHJ1ZSwgY29sb3I6ICc3Qjg3OTQnIH0gYXMgYW55LFxuICAgICAgfV0pO1xuICAgIH1cblxuICAgIHNsaWRlLmFkZFRhYmxlKFtoZWFkZXIsIC4uLmJvZHldLCB7XG4gICAgICB4LCB5LCB3LFxuICAgICAgZm9udFNpemU6IDksXG4gICAgICBjb2xvcjogJzFGMjkzMycsXG4gICAgICBib3JkZXI6IHsgdHlwZTogJ3NvbGlkJywgcHQ6IDAuNSwgY29sb3I6ICdFNEU3RUInIH0sXG4gICAgICBhdXRvUGFnZTogZmFsc2UsXG4gICAgICByb3dIOiBUQUJMRV9ST1dfSCxcbiAgICAgIHZhbGlnbjogJ21pZGRsZScsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJLcGkoXG4gICAgc2xpZGU6IGFueSxcbiAgICBjb21wb25lbnQ6IFJlcG9ydENvbXBvbmVudCxcbiAgICBkYXRhOiBDb21wb25lbnREYXRhLFxuICAgIHg6IG51bWJlciwgeTogbnVtYmVyLCB3OiBudW1iZXIsIGg6IG51bWJlcixcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnID0gY29tcG9uZW50LmNvbmZpZyBhcyBLcGlDb25maWc7XG4gICAgY29uc3Qgcm93ID0gZGF0YS5yb3dzWzBdID8/IHt9O1xuICAgIGNvbnN0IGNvbHVtbiA9IGNvbmZpZy5tZWFzdXJlPy5jb2x1bW4gPz8gT2JqZWN0LmtleXMocm93KVswXTtcbiAgICBjb25zdCB2YWx1ZSA9IGZvcm1hdE1lYXN1cmVWYWx1ZShyb3dbY29sdW1uXSwgY29uZmlnLm1lYXN1cmU/LmZvcm1hdCwgY29uZmlnLm1lYXN1cmU/LnByZWNpc2lvbik7XG5cbiAgICBzbGlkZS5hZGRUZXh0KFtcbiAgICAgIHsgdGV4dDogdmFsdWUsIG9wdGlvbnM6IHsgZm9udFNpemU6IDI4LCBib2xkOiB0cnVlLCBjb2xvcjogJzFGMjkzMycsIGJyZWFrTGluZTogdHJ1ZSB9IH0sXG4gICAgICB7IHRleHQ6IGNvbmZpZy5tZWFzdXJlPy5sYWJlbCA/PyAnJywgb3B0aW9uczogeyBmb250U2l6ZTogMTAsIGNvbG9yOiAnN0I4Nzk0JyB9IH0sXG4gICAgXSwge1xuICAgICAgeCwgeSwgdywgaCxcbiAgICAgIGFsaWduOiAnY2VudGVyJyxcbiAgICAgIHZhbGlnbjogJ21pZGRsZScsXG4gICAgfSk7XG4gIH1cblxuICAvLyBUaGUgZXhwb3J0ZWQgY2VsbCBtdXN0IHJlYWQgbGlrZSB0aGUgb24tc2NyZWVuIGNlbGw6IHRoZSBTUUwgYWxyZWFkeVxuICAvLyBjYXJyaWVzIHRoZSBmb3JtYXR0aW5nLCBzbyB0aGUgdmFsdWUgZ29lcyBvdXQgdmVyYmF0aW0uIEEgcmF3IGRhdGUgaXMgdGhlXG4gIC8vIG9uZSB2YWx1ZSB0aGUgY2xpZW50IHJlbmRlcnMgKHRoZSBjb2x1bW4gc3RheXMgYSBSQVcgdGltZXN0YW1wIGZvciB0aGVcbiAgLy8gcmVwb3J0IHRpbWV6b25lKSwgYW5kIGl0IGlzIHJlbmRlcmVkIGhlcmUgdG9vLlxuICBwcml2YXRlIF9jZWxsKHZhbHVlOiB1bmtub3duLCBjb2x1bW5Gb3JtYXQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbkZvcm1hdCA9PT0gJ2RhdGUnKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoU3RyaW5nKHZhbHVlKSk7XG5cbiAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4oZGF0ZS5nZXRUaW1lKCkpID8gU3RyaW5nKHZhbHVlKSA6IGZvcm1hdChkYXRlLCAnTU1NIGQsIHl5eXknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NsdWcobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKS5yZXBsYWNlKC9eLSt8LSskL2csICcnKSB8fCAncmVwb3J0JztcbiAgfVxufVxuIl19
|
|
326
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBwdHguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9leHBvcnQvcmVwb3J0LXBwdHguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBVy9DLE9BQU8sRUFBcUIseUJBQXlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBb0IsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0ksT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUF1QyxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHcEcscURBQXFEO0FBQ3JELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQztBQUNyQix1RUFBdUU7QUFDdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBRXpCLDRFQUE0RTtBQUM1RSw2RUFBNkU7QUFDN0UsVUFBVTtBQUNWLE1BQU0sZUFBZSxHQUFrRDtJQUNyRSxHQUFHLEVBQUUsR0FBRztJQUNSLE1BQU0sRUFBRSxHQUFHO0lBQ1gsSUFBSSxFQUFFLEdBQUc7SUFDVCxLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0NBQ1osQ0FBQztBQUVGLDJFQUEyRTtBQUMzRSwyRUFBMkU7QUFDM0UsNkVBQTZFO0FBQzdFLDBFQUEw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QUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFFckMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxLQUFLLENBQUMsSUFBWTtRQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDO0lBQzVGLENBQUM7d0dBM1dVLGlCQUFpQjs0R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tICdkYXRlLWZucyc7XG5cbmltcG9ydCB7IGZvcm1hdE1lYXN1cmVWYWx1ZSB9IGZyb20gJy4uL2Zvcm1hdCc7XG5pbXBvcnQge1xuICBDaGFydENvbmZpZyxcbiAgQ29tcG9uZW50RGF0YSxcbiAgTGVnZW5kUG9zaXRpb24sXG4gIExpc3RDb25maWcsXG4gIEtwaUNvbmZpZyxcbiAgUmVwb3J0LFxuICBSZXBvcnRDb21wb25lbnQsXG4gIFJlcG9ydFBhZ2UsXG59IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnRHZW9tZXRyeSwgREVGQVVMVF9DT01QT05FTlRfUEFERElORywgcGFnZUdlb21ldHJ5IH0gZnJvbSAnLi4vbGF5b3V0JztcbmltcG9ydCB7IERFRkFVTFRfVEVYVF9DT0xPUiwgREVGQVVMVF9URVhUX1NJWkUsIFRleHRUb2tlbkNvbnRleHQsIHRleHRQYXJhZ3JhcGhzIH0gZnJvbSAnLi4vdGV4dCc7XG5pbXBvcnQgeyBleHRyYWN0Q2hhcnRTZXJpZXMsIGZvcm1hdFBlcmlvZExhYmVsLCBpc0NvbG9yQnksIHJlc29sdmVMZWdlbmRQb3NpdGlvbiwgc2VyaWVzVHlwZXMsIHNwYW5zTXVsdGlwbGVZZWFycyB9IGZyb20gJy4uL29wdGlvbi1idWlsZGVyJztcbmltcG9ydCB7IFJFUE9SVF9DSEFSVF9DT0xPUlMgfSBmcm9tICcuLi90aGVtZS9wYWxldHRlJztcbmltcG9ydCB7IENvbGxlY3RlZENvbXBvbmVudCwgQ29sbGVjdGVkUmVwb3J0LCBlbXB0eUxhYmVsIH0gZnJvbSAnLi9yZXBvcnQtZXhwb3J0LWNvbGxlY3Rvci5zZXJ2aWNlJztcblxuXG4vLyBDb21wb25lbnQgdGl0bGUgc3RyaXAgaGVpZ2h0IG9uIHRoZSBzbGlkZSwgaW5jaGVzLlxuY29uc3QgVElUTEVfSCA9IDAuMjg7XG4vLyBBcHByb3hpbWF0ZSB0YWJsZSByb3cgaGVpZ2h0LCBpbmNoZXMg4oCUIGRyaXZlcyB0aGUgcm93cy10aGF0LWZpdCBjYXAuXG5jb25zdCBUQUJMRV9ST1dfSCA9IDAuMjY7XG5cbi8vIE91ciBsZWdlbmQgcG9zaXRpb25zIG1hcHBlZCB0byBwcHR4Z2VuanMncyBzaW5nbGUtbGV0dGVyIGxlZ2VuZFBvcyBjb2Rlcy5cbi8vICdoaWRkZW4nIGhhcyBubyBzbG90IOKAlCBzaG93TGVnZW5kIGlzIHR1cm5lZCBvZmYgaW5zdGVhZCDigJQgc28gaXQgZmFsbHMgYmFja1xuLy8gdG8gdG9wLlxuY29uc3QgUFBUWF9MRUdFTkRfUE9TOiBSZWNvcmQ8TGVnZW5kUG9zaXRpb24sICd0JyB8ICdiJyB8ICdsJyB8ICdyJz4gPSB7XG4gIHRvcDogJ3QnLFxuICBib3R0b206ICdiJyxcbiAgbGVmdDogJ2wnLFxuICByaWdodDogJ3InLFxuICBoaWRkZW46ICd0Jyxcbn07XG5cbi8vIEJ1aWxkcyB0aGUgUG93ZXJQb2ludCBkZWNrIGNsaWVudC1zaWRlIHdpdGggcHB0eGdlbmpzLiBDaGFydHMgYXJlIE5BVElWRVxuLy8gZWRpdGFibGUgUG93ZXJQb2ludCBjaGFydHMgKHNsaWRlLmFkZENoYXJ0IHdyaXRlcyByZWFsIGNoYXJ0IFhNTCB3aXRoIGFuXG4vLyBlbWJlZGRlZCBkYXRhIHdvcmtib29rIOKAlCBcIkVkaXQgRGF0YVwiIHdvcmtzKSwgbmV2ZXIgaW1hZ2VzLiBUaGUgcGFnZSBJUyB0aGVcbi8vIHNsaWRlOiB0aGUgcmVwb3J0J3MgdW5pdCBpcyBpbmNoZXMg4oCUIGV4YWN0bHkgUG93ZXJQb2ludCdzIHVuaXQg4oCUIHNvIHRoZVxuLy8gbGF5b3V0IGFuZCBldmVyeSBjb21wb25lbnQgcG9zaXRpb24gdHJhbnNmZXIgd2l0aCBubyBjb252ZXJzaW9uIGF0IGFsbC5cbi8vIHBwdHhnZW5qcyBpcyBsb2FkZWQgbGF6aWx5IHNvIGl0IGxpdmVzIGluIGl0cyBvd24gd2VicGFjayBjaHVuay5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXBvcnRQcHR4U2VydmljZSB7XG5cbiAgcHVibGljIGFzeW5jIGV4cG9ydChjb2xsZWN0ZWQ6IENvbGxlY3RlZFJlcG9ydCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IFBwdHhHZW5KUyA9IChhd2FpdCBpbXBvcnQoJ3BwdHhnZW5qcycpKS5kZWZhdWx0O1xuXG4gICAgY29uc3QgcmVwb3J0ID0gY29sbGVjdGVkLnJlcG9ydDtcbiAgICBjb25zdCBwYWdlVyA9IHJlcG9ydC5wYWdlV2lkdGg7XG4gICAgY29uc3QgcGFnZUggPSByZXBvcnQucGFnZUhlaWdodDtcblxuICAgIGNvbnN0IHBwdHggPSBuZXcgUHB0eEdlbkpTKCk7XG4gICAgcHB0eC5kZWZpbmVMYXlvdXQoeyBuYW1lOiAnUkVQT1JUJywgd2lkdGg6IHBhZ2VXLCBoZWlnaHQ6IHBhZ2VIIH0pO1xuICAgIHBwdHgubGF5b3V0ID0gJ1JFUE9SVCc7XG4gICAgcHB0eC50aXRsZSA9IHJlcG9ydC5uYW1lO1xuXG4gICAgdGhpcy5fdGl0bGVTbGlkZShwcHR4LCBjb2xsZWN0ZWQsIHBhZ2VXLCBwYWdlSCk7XG5cbiAgICBjb2xsZWN0ZWQucGFnZXMuZm9yRWFjaCgoY29sbGVjdGVkUGFnZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHNsaWRlID0gcHB0eC5hZGRTbGlkZSgpO1xuICAgICAgY29uc3QgZ2VvbWV0cnkgPSBwYWdlR2VvbWV0cnkocmVwb3J0LCBjb2xsZWN0ZWRQYWdlLnBhZ2UpO1xuICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy5fdG9rZW5zKHJlcG9ydCwgY29sbGVjdGVkUGFnZS5wYWdlLCBpbmRleCk7XG5cbiAgICAgIC8vIFRoZSBoZWFkZXIgYW5kIGZvb3RlciBmaXJzdCwgc28gdGhlIHBhZ2UncyBvd24gY29tcG9uZW50cyBzaXQgb24gdG9wXG4gICAgICAvLyBvZiB0aGVtIGV4YWN0bHkgYXMgb24gdGhlIGNhbnZhcy5cbiAgICAgIGlmICghY29sbGVjdGVkUGFnZS5wYWdlLm1hc3RlckhpZGRlbikge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiByZXBvcnQubWFzdGVyPy5jb21wb25lbnRzID8/IFtdKSB7XG4gICAgICAgICAgdGhpcy5fcmVuZGVyVGV4dChzbGlkZSwgY29tcG9uZW50LCBjb21wb25lbnQsIHRva2Vucyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbGxlY3RlZFBhZ2UuY29tcG9uZW50cykge1xuICAgICAgICBjb25zdCBib3ggPSBnZW9tZXRyeS5nZXQoaXRlbS5jb21wb25lbnQuaWQpO1xuXG4gICAgICAgIGlmIChpdGVtLmNvbXBvbmVudC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJUZXh0KHNsaWRlLCBpdGVtLmNvbXBvbmVudCwgYm94ID8/IGl0ZW0uY29tcG9uZW50LCB0b2tlbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3JlbmRlckNvbXBvbmVudChwcHR4LCBzbGlkZSwgaXRlbSwgYm94KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYXdhaXQgcHB0eC53cml0ZUZpbGUoeyBmaWxlTmFtZTogYCR7dGhpcy5fc2x1ZyhyZXBvcnQubmFtZSl9LnBwdHhgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGl0bGVTbGlkZShwcHR4OiBhbnksIGNvbGxlY3RlZDogQ29sbGVjdGVkUmVwb3J0LCBwYWdlVzogbnVtYmVyLCBwYWdlSDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgc2xpZGUgPSBwcHR4LmFkZFNsaWRlKCk7XG5cbiAgICBzbGlkZS5hZGRUZXh0KGNvbGxlY3RlZC5yZXBvcnQubmFtZSwge1xuICAgICAgeDogMC41LCB5OiBwYWdlSCAqIDAuMywgdzogcGFnZVcgLSAxLCBoOiAwLjgsXG4gICAgICBmb250U2l6ZTogMzAsIGJvbGQ6IHRydWUsIGNvbG9yOiAnMUYyOTMzJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgZm9ybWF0KG5ldyBEYXRlKCksICdNTU1NIGQsIHl5eXknKSxcbiAgICAgIC4uLmNvbGxlY3RlZC5maWx0ZXJTdW1tYXJ5LFxuICAgIF07XG5cbiAgICBzbGlkZS5hZGRUZXh0KGxpbmVzLmpvaW4oJ1xcbicpLCB7XG4gICAgICB4OiAwLjUsIHk6IHBhZ2VIICogMC4zICsgMC45LCB3OiBwYWdlVyAtIDEsIGg6IE1hdGgubWF4KDAuNCwgbGluZXMubGVuZ3RoICogMC4yNSksXG4gICAgICBmb250U2l6ZTogMTIsIGNvbG9yOiAnNTI2MDZEJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEEgdGV4dCBibG9jayBhcyBPTkUgbmF0aXZlIFBvd2VyUG9pbnQgdGV4dCBib3gg4oCUIGVkaXRhYmxlIGluIHRoZSBkZWNrLCB3aXRoXG4gIC8vIGVhY2ggcGFyYWdyYXBoJ3MgcnVucyBjYXJyeWluZyB0aGVpciBvd24gYm9sZC9pdGFsaWMvY29sb3Ivc2l6ZS4gVGhlIGJveCdzXG4gIC8vIGluc2V0IGlzIHRoZSBibG9jaydzIHBhZGRpbmcsIHNvIHRoZSB3b3JkcyBsYW5kIHdoZXJlIHRoZXkgc2F0IG9uIHNjcmVlbi5cbiAgcHJpdmF0ZSBfcmVuZGVyVGV4dChzbGlkZTogYW55LCBjb21wb25lbnQ6IFJlcG9ydENvbXBvbmVudCwgYm94OiBDb21wb25lbnRHZW9tZXRyeSwgdG9rZW5zOiBUZXh0VG9rZW5Db250ZXh0KTogdm9pZCB7XG4gICAgY29uc3QgcnVuczogYW55W10gPSBbXTtcbiAgICBjb25zdCBwYXJhZ3JhcGhzID0gdGV4dFBhcmFncmFwaHMoY29tcG9uZW50LmNvbmZpZz8uaHRtbCA/PyAnJywgdG9rZW5zKTtcblxuICAgIHBhcmFncmFwaHMuZm9yRWFjaCgocGFyYWdyYXBoLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgaXNMYXN0ID0gaW5kZXggPT09IHBhcmFncmFwaHMubGVuZ3RoIC0gMTtcbiAgICAgIGNvbnN0IHBhcmFncmFwaE9wdGlvbnMgPSB7XG4gICAgICAgIGFsaWduOiBwYXJhZ3JhcGguYWxpZ24sXG4gICAgICAgIGJ1bGxldDogcGFyYWdyYXBoLmJ1bGxldCA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IHsgdHlwZTogJ251bWJlcicgfVxuICAgICAgICAgIDogKHBhcmFncmFwaC5idWxsZXQgPT09ICdidWxsZXQnID8gdHJ1ZSA6IHVuZGVmaW5lZCksXG4gICAgICB9O1xuICAgICAgY29uc3QgcGFyYWdyYXBoUnVucyA9IHBhcmFncmFwaC5ydW5zLmxlbmd0aCA/IHBhcmFncmFwaC5ydW5zIDogW3sgdGV4dDogJycgfV07XG5cbiAgICAgIHBhcmFncmFwaFJ1bnMuZm9yRWFjaCgocnVuLCBydW5JbmRleCkgPT4ge1xuICAgICAgICBydW5zLnB1c2goe1xuICAgICAgICAgIHRleHQ6IHJ1bi50ZXh0LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLnBhcmFncmFwaE9wdGlvbnMsXG4gICAgICAgICAgICBib2xkOiBydW4uYm9sZCxcbiAgICAgICAgICAgIGl0YWxpYzogcnVuLml0YWxpYyxcbiAgICAgICAgICAgIHVuZGVybGluZTogcnVuLnVuZGVybGluZSA/IHsgc3R5bGU6ICdzbmcnIH0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzdHJpa2U6IHJ1bi5zdHJpa2UgPyAnc25nU3RyaWtlJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvbG9yOiAocnVuLmNvbG9yID8/IERFRkFVTFRfVEVYVF9DT0xPUikucmVwbGFjZSgnIycsICcnKSxcbiAgICAgICAgICAgIGhpZ2hsaWdodDogcnVuLmhpZ2hsaWdodD8ucmVwbGFjZSgnIycsICcnKSxcbiAgICAgICAgICAgIGZvbnRTaXplOiBydW4uZm9udFNpemUgPz8gREVGQVVMVF9URVhUX1NJWkUsXG4gICAgICAgICAgICBmb250RmFjZTogcnVuLmZvbnRGYWNlLFxuICAgICAgICAgICAgaHlwZXJsaW5rOiBydW4ubGluayA/IHsgdXJsOiBydW4ubGluayB9IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYnJlYWtMaW5lOiBydW5JbmRleCA9PT0gcGFyYWdyYXBoUnVucy5sZW5ndGggLSAxICYmICFpc0xhc3QsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmICghcnVucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYWRkaW5nID0gY29tcG9uZW50LmNvbmZpZz8ucGFkZGluZztcbiAgICBjb25zdCBpbnNldCA9ICh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiAodmFsdWUgPz8gREVGQVVMVF9DT01QT05FTlRfUEFERElORykgKiA3MjtcblxuICAgIHNsaWRlLmFkZFRleHQocnVucywge1xuICAgICAgeDogYm94LngsIHk6IGJveC55LCB3OiBib3gudywgaDogYm94LmgsXG4gICAgICB2YWxpZ246ICd0b3AnLFxuICAgICAgZm9udEZhY2U6ICdBcmlhbCcsXG4gICAgICBtYXJnaW46IFtpbnNldChwYWRkaW5nPy5sZWZ0KSwgaW5zZXQocGFkZGluZz8ucmlnaHQpLCBpbnNldChwYWRkaW5nPy5ib3R0b20pLCBpbnNldChwYWRkaW5nPy50b3ApXSxcbiAgICAgIGZpdDogJ25vbmUnLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gV2hhdCBhIHRleHQgYmxvY2sncyB0b2tlbnMgZmlsbCB3aXRoIG9uIHRoaXMgc2xpZGU6IHRoZSBwYWdlJ3MgcG9zaXRpb25cbiAgLy8gYW1vbmcgdGhlIHJlcG9ydCdzIHBhZ2VzIOKAlCB0aGUgdGl0bGUgc2xpZGUgaXMgbm90IGEgcmVwb3J0IHBhZ2UuXG4gIHByaXZhdGUgX3Rva2VucyhyZXBvcnQ6IFJlcG9ydCwgcGFnZTogUmVwb3J0UGFnZSwgaW5kZXg6IG51bWJlcik6IFRleHRUb2tlbkNvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBwYWdlTnVtYmVyOiBpbmRleCArIDEsXG4gICAgICBwYWdlTmFtZTogcGFnZS5uYW1lIHx8IGBQYWdlICR7aW5kZXggKyAxfWAsXG4gICAgICByZXBvcnROYW1lOiByZXBvcnQubmFtZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyQ29tcG9uZW50KHBwdHg6IGFueSwgc2xpZGU6IGFueSwgaXRlbTogQ29sbGVjdGVkQ29tcG9uZW50LCBnZW9tZXRyeT86IENvbXBvbmVudEdlb21ldHJ5KTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gaXRlbS5jb21wb25lbnQ7XG4gICAgLy8gR2VvbWV0cnkgaXMgaW4gaW5jaGVzIOKAlCBQb3dlclBvaW50J3MgbmF0aXZlIHVuaXQgKGZsb3cgbGF5b3V0IGFycml2ZXNcbiAgICAvLyBwcmUtcmVzb2x2ZWQgaW50byByb3dzIGJ5IHBhZ2VHZW9tZXRyeSkuXG4gICAgY29uc3QgeyB4LCB5LCB3LCBoIH0gPSBnZW9tZXRyeSA/PyBjb21wb25lbnQ7XG5cbiAgICBpZiAoY29tcG9uZW50LnRpdGxlKSB7XG4gICAgICBzbGlkZS5hZGRUZXh0KGNvbXBvbmVudC50aXRsZSwge1xuICAgICAgICB4LCB5LCB3LCBoOiBUSVRMRV9ILFxuICAgICAgICBmb250U2l6ZTogMTAsIGJvbGQ6IHRydWUsIGNvbG9yOiAnMUYyOTMzJywgdmFsaWduOiAndG9wJyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHlZID0geSArIFRJVExFX0g7XG4gICAgY29uc3QgYm9keUggPSBNYXRoLm1heCgwLjMsIGggLSBUSVRMRV9IKTtcblxuICAgIGlmICghaXRlbS5kYXRhIHx8ICFpdGVtLmRhdGEucm93cz8ubGVuZ3RoKSB7XG4gICAgICBzbGlkZS5hZGRUZXh0KGVtcHR5TGFiZWwoaXRlbSksIHtcbiAgICAgICAgeCwgeTogYm9keVksIHcsIGg6IGJvZHlILFxuICAgICAgICBmb250U2l6ZTogMTAsIGl0YWxpYzogdHJ1ZSwgY29sb3I6ICc3Qjg3OTQnLCBhbGlnbjogJ2NlbnRlcicsIHZhbGlnbjogJ21pZGRsZScsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ2NoYXJ0JzpcbiAgICAgICAgdGhpcy5fcmVuZGVyQ2hhcnQocHB0eCwgc2xpZGUsIGNvbXBvbmVudCwgaXRlbS5kYXRhLCB4LCBib2R5WSwgdywgYm9keUgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xpc3QnOlxuICAgICAgICB0aGlzLl9yZW5kZXJUYWJsZShzbGlkZSwgY29tcG9uZW50LCBpdGVtLmRhdGEsIHgsIGJvZHlZLCB3LCBib2R5SCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAna3BpJzpcbiAgICAgICAgdGhpcy5fcmVuZGVyS3BpKHNsaWRlLCBjb21wb25lbnQsIGl0ZW0uZGF0YSwgeCwgYm9keVksIHcsIGJvZHlIKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyQ2hhcnQoXG4gICAgcHB0eDogYW55LFxuICAgIHNsaWRlOiBhbnksXG4gICAgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnQsXG4gICAgZGF0YTogQ29tcG9uZW50RGF0YSxcbiAgICB4OiBudW1iZXIsIHk6IG51bWJlciwgdzogbnVtYmVyLCBoOiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNvbXBvbmVudC5jb25maWcgYXMgQ2hhcnRDb25maWc7XG4gICAgY29uc3QgY2hhcnRUeXBlID0gY29uZmlnLmNoYXJ0VHlwZSA/PyAnYmFyJztcbiAgICBjb25zdCBleHRyYWN0ZWQgPSBleHRyYWN0Q2hhcnRTZXJpZXMoY29tcG9uZW50LCBkYXRhKTtcblxuICAgIGNvbnN0IHR5cGVNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBiYXI6IHBwdHguQ2hhcnRUeXBlLmJhcixcbiAgICAgIGxpbmU6IHBwdHguQ2hhcnRUeXBlLmxpbmUsXG4gICAgICBhcmVhOiBwcHR4LkNoYXJ0VHlwZS5hcmVhLFxuICAgICAgcGllOiBwcHR4LkNoYXJ0VHlwZS5waWUsXG4gICAgICBkb251dDogcHB0eC5DaGFydFR5cGUuZG91Z2hudXQsXG4gICAgfTtcblxuICAgIGNvbnN0IHBpZSA9IGNoYXJ0VHlwZSA9PT0gJ3BpZScgfHwgY2hhcnRUeXBlID09PSAnZG9udXQnO1xuICAgIGNvbnN0IGNvbG9yQnkgPSBpc0NvbG9yQnkoY29uZmlnKTtcblxuICAgIC8vIENvbXBhY3QgcGVyaW9kIGxhYmVscyBtYXRjaCB0aGUgb24tc2NyZWVuIGF4aXMgKHllYXIgb25seSB3aGVuIHRoZSBkYXRhXG4gICAgLy8gc3BhbnMgeWVhcnMpOyBQb3dlclBvaW50IGNhbid0IGRvIGEgc3R5bGVkIHNlY29uZCBsaW5lLCBzbyBpdCdzIGlubGluZS5cbiAgICBjb25zdCBncmFudWxhcml0eSA9IGRhdGEuZ3JhbnVsYXJpdHk7XG4gICAgY29uc3QgbGFiZWxzID0gZ3JhbnVsYXJpdHlcbiAgICAgID8gZXh0cmFjdGVkLmNhdGVnb3JpZXMubWFwKChjYXRlZ29yeSkgPT5cbiAgICAgICAgZm9ybWF0UGVyaW9kTGFiZWwoY2F0ZWdvcnksIGdyYW51bGFyaXR5LCBzcGFuc011bHRpcGxlWWVhcnMoZXh0cmFjdGVkLmNhdGVnb3JpZXMpKSlcbiAgICAgIDogZXh0cmFjdGVkLmNhdGVnb3JpZXM7XG5cbiAgICAvLyBOYXRpdmUgY2hhcnQgZGF0YTogb25lIGVudHJ5IHBlciBzZXJpZXMgKHBpZSBjaGFydHMgdGFrZSBleGFjdGx5IG9uZSkuXG4gICAgLy8gY29sb3JCeSBlbWl0cyBvbmUgc2VyaWVzIHBlciBjYXRlZ29yeSBmb3IgdGhlIG9uLXNjcmVlbiBvdmVybGFwOyBQb3dlclBvaW50XG4gICAgLy8gaGFzIG5vIGVxdWl2YWxlbnQgb3ZlcmxhcCwgc28gY29sbGFwc2UgdGhlbSBiYWNrIGludG8gYSBzaW5nbGUgc2VyaWVzIChlYWNoXG4gICAgLy8gY2F0ZWdvcnkncyB2YWx1ZSBzaXRzIGF0IGl0cyBvd24gc2xvdCkg4oCUIG9uZSBmdWxsLXdpZHRoIGJhciBwZXIgY2F0ZWdvcnkg4oCUXG4gICAgLy8gcmF0aGVyIHRoYW4gbGV0dGluZyBQb3dlclBvaW50IGNsdXN0ZXIgdGhlbSBpbnRvIHNsaXZlcnMuXG4gICAgY29uc3QgY2hhcnREYXRhID0gY29sb3JCeVxuICAgICAgPyBbe1xuICAgICAgICBuYW1lOiBjb25maWcubWVhc3VyZXM/LlswXT8ubGFiZWwgPz8gY29uZmlnLmNvbG9yQnk/LmxhYmVsID8/ICcnLFxuICAgICAgICBsYWJlbHMsXG4gICAgICAgIHZhbHVlczogZXh0cmFjdGVkLmNhdGVnb3JpZXMubWFwKChfLCBpbmRleCkgPT4gZXh0cmFjdGVkLnNlcmllc1tpbmRleF0/LnZhbHVlc1tpbmRleF0gPz8gMCksXG4gICAgICB9XVxuICAgICAgOiAocGllID8gZXh0cmFjdGVkLnNlcmllcy5zbGljZSgwLCAxKSA6IGV4dHJhY3RlZC5zZXJpZXMpXG4gICAgICAgIC5tYXAoKHNlcmllcykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzZXJpZXMubmFtZSxcbiAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgdmFsdWVzOiBzZXJpZXMudmFsdWVzLm1hcCgodmFsdWUpID0+IHZhbHVlID8/IDApLFxuICAgICAgICB9KSk7XG5cbiAgICAvLyBBIHNpbmdsZS1zZXJpZXMgY29sb3JCeSBjaGFydCBjYW4ndCBjYXJyeSBhIHBlci1jYXRlZ29yeSBsZWdlbmQgaW4gYSBuYXRpdmVcbiAgICAvLyBQb3dlclBvaW50IGJhciBjaGFydDsgdGhlIGNhdGVnb3J5IGF4aXMgbGFiZWxzIGlkZW50aWZ5IGVhY2ggYmFyIGluc3RlYWQuXG4gICAgY29uc3QgbGVnZW5kUG9zaXRpb24gPSBjb2xvckJ5XG4gICAgICA/ICdoaWRkZW4nXG4gICAgICA6IHJlc29sdmVMZWdlbmRQb3NpdGlvbihjb25maWcsIGV4dHJhY3RlZC5zZXJpZXMubGVuZ3RoKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICB4LCB5LCB3LCBoLFxuICAgICAgY2hhcnRDb2xvcnM6IFJFUE9SVF9DSEFSVF9DT0xPUlMsXG4gICAgICBzaG93TGVnZW5kOiBsZWdlbmRQb3NpdGlvbiAhPT0gJ2hpZGRlbicsXG4gICAgICBsZWdlbmRQb3M6IFBQVFhfTEVHRU5EX1BPU1tsZWdlbmRQb3NpdGlvbl0sXG4gICAgICBsZWdlbmRGb250U2l6ZTogOSxcbiAgICAgIGJhckRpcjogY29uZmlnLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAnYmFyJyA6ICdjb2wnLFxuICAgICAgYmFyR3JvdXBpbmc6IGNvbmZpZy5zdGFja2VkID8gJ3N0YWNrZWQnIDogJ2NsdXN0ZXJlZCcsXG4gICAgICBob2xlU2l6ZTogY2hhcnRUeXBlID09PSAnZG9udXQnID8gNTUgOiB1bmRlZmluZWQsXG4gICAgICBjYXRBeGlzTGFiZWxGb250U2l6ZTogOSxcbiAgICAgIHZhbEF4aXNMYWJlbEZvbnRTaXplOiA5LFxuICAgICAgc2hvd0NhdEF4aXNUaXRsZTogISFjb25maWcueEF4aXM/LmxhYmVsLFxuICAgICAgY2F0QXhpc1RpdGxlOiBjb25maWcueEF4aXM/LmxhYmVsLFxuICAgICAgY2F0QXhpc1RpdGxlRm9udFNpemU6IDEwLFxuICAgICAgc2hvd1ZhbEF4aXNUaXRsZTogISFjb25maWcubWVhc3VyZXM/LlswXT8ubGFiZWwgJiYgIXBpZSxcbiAgICAgIHZhbEF4aXNUaXRsZTogY29uZmlnLm1lYXN1cmVzPy5bMF0/LmxhYmVsLFxuICAgICAgdmFsQXhpc1RpdGxlRm9udFNpemU6IDEwLFxuICAgICAgZGF0YUJvcmRlcjogeyBwdDogMCwgY29sb3I6ICdGRkZGRkYnIH0sXG4gICAgfTtcblxuICAgIC8vIFRoZSB0eXBlIGVhY2ggY2hhcnREYXRhIGVudHJ5IGlzIGRyYXduIGFzLiBBIHBpZSBpcyBvbmUgZW50cnkgb2YgaXRzIG93blxuICAgIC8vIHR5cGU7IGNvbG9yQnkgY29sbGFwc2VkIGl0cyBzZXJpZXMgaW50byBvbmUsIGRyYXduIGFzIHRoZSBsb25lIG1lYXN1cmUncy5cbiAgICBjb25zdCBkYXRhVHlwZXM6IHN0cmluZ1tdID0gcGllXG4gICAgICA/IFtjaGFydFR5cGVdXG4gICAgICA6IHNlcmllc1R5cGVzKGV4dHJhY3RlZCwgY2hhcnRUeXBlKS5zbGljZSgwLCBjb2xvckJ5ID8gMSA6IHVuZGVmaW5lZCk7XG5cbiAgICB0aGlzLl9hZGRDaGFydChzbGlkZSwgdHlwZU1hcCwgZGF0YVR5cGVzLmxlbmd0aCA/IGRhdGFUeXBlcyA6IFtjaGFydFR5cGVdLCBjaGFydERhdGEsIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gT25lIG5hdGl2ZSBjaGFydCB3aGVuIGV2ZXJ5IGVudHJ5IGlzIGRyYXduIGFzIHRoZSBzYW1lIHR5cGUuIEEgY29tYm8gaXNcbiAgLy8gcHB0eGdlbmpzJ3MgbXVsdGktdHlwZSBjaGFydDogb25lIGVudHJ5IHBlciB0eXBlLCBhbGwgb24gdGhlIHNhbWUgY2F0ZWdvcnlcbiAgLy8gYW5kIHZhbHVlIGF4ZXMuIEl0IHJlc3RhcnRzIHRoZSBwYWxldHRlIGZvciBldmVyeSB0eXBlLCBzbyBlYWNoIHR5cGUgaXNcbiAgLy8gaGFuZGVkIHRoZSBjb2xvcnMgaXRzIHNlcmllcyBoYXZlIG9uIHNjcmVlbi5cbiAgcHJpdmF0ZSBfYWRkQ2hhcnQoXG4gICAgc2xpZGU6IGFueSxcbiAgICB0eXBlTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGRhdGFUeXBlczogc3RyaW5nW10sXG4gICAgY2hhcnREYXRhOiB1bmtub3duW10sXG4gICAgb3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGRpc3RpbmN0ID0gWy4uLm5ldyBTZXQoZGF0YVR5cGVzKV07XG4gICAgaWYgKGRpc3RpbmN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2xpZGUuYWRkQ2hhcnQodHlwZU1hcFtkaXN0aW5jdFswXV0sIGNoYXJ0RGF0YSwgb3B0aW9ucyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzbGlkZS5hZGRDaGFydChkaXN0aW5jdC5tYXAoKHR5cGUpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ZXMgPSBkYXRhVHlwZXNcbiAgICAgICAgLm1hcCgoZGF0YVR5cGUsIGluZGV4KSA9PiAoZGF0YVR5cGUgPT09IHR5cGUgPyBpbmRleCA6IC0xKSlcbiAgICAgICAgLmZpbHRlcigoaW5kZXgpID0+IGluZGV4ID49IDApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiB0eXBlTWFwW3R5cGVdLFxuICAgICAgICBkYXRhOiBpbmRleGVzLm1hcCgoaW5kZXgpID0+IGNoYXJ0RGF0YVtpbmRleF0pLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgY2hhcnRDb2xvcnM6IGluZGV4ZXMubWFwKChpbmRleCkgPT4gUkVQT1JUX0NIQVJUX0NPTE9SU1tpbmRleCAlIFJFUE9SVF9DSEFSVF9DT0xPUlMubGVuZ3RoXSksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlclRhYmxlKFxuICAgIHNsaWRlOiBhbnksXG4gICAgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnQsXG4gICAgZGF0YTogQ29tcG9uZW50RGF0YSxcbiAgICB4OiBudW1iZXIsIHk6IG51bWJlciwgdzogbnVtYmVyLCBoOiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNvbXBvbmVudC5jb25maWcgYXMgTGlzdENvbmZpZztcbiAgICBjb25zdCBjb2x1bW5zID0gY29uZmlnLmNvbHVtbnM/Lmxlbmd0aFxuICAgICAgPyBjb25maWcuY29sdW1uc1xuICAgICAgOiBkYXRhLmNvbHVtbnMubWFwKChjb2x1bW4pID0+ICh7IGNvbHVtbiwgbGFiZWw6IGNvbHVtbiB9KSk7XG5cbiAgICBjb25zdCBjYXAgPSBNYXRoLm1heCgyLCBNYXRoLmZsb29yKGggLyBUQUJMRV9ST1dfSCkgLSAxKTtcbiAgICBjb25zdCByb3dzID0gZGF0YS5yb3dzLnNsaWNlKDAsIGNhcCk7XG4gICAgY29uc3QgcmVtYWluaW5nID0gKGRhdGEucGFnaW5nPy50b3RhbCA/PyBkYXRhLnJvd3MubGVuZ3RoKSAtIHJvd3MubGVuZ3RoO1xuXG4gICAgY29uc3QgaGVhZGVyID0gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgIHRleHQ6IGNvbHVtbi5sYWJlbCB8fCBjb2x1bW4uY29sdW1uLFxuICAgICAgb3B0aW9uczogeyBib2xkOiB0cnVlLCBjb2xvcjogJ0ZGRkZGRicsIGZpbGw6IHsgY29sb3I6ICc0RTc5QTcnIH0gfSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBib2R5ID0gcm93cy5tYXAoKHJvdykgPT4gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgIHRleHQ6IHRoaXMuX2NlbGwocm93W2NvbHVtbi5jb2x1bW5dLCBjb2x1bW4uZm9ybWF0KSxcbiAgICAgIG9wdGlvbnM6IHt9LFxuICAgIH0pKSk7XG5cbiAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgYm9keS5wdXNoKFt7XG4gICAgICAgIHRleHQ6IGDigKYgJHtyZW1haW5pbmd9IG1vcmUgcm93KHMpIOKAlCB1c2UgdGhlIGNvbXBvbmVudCdzIENTViBleHBvcnQgZm9yIHRoZSBmdWxsIGRhdGFzZXRgLFxuICAgICAgICBvcHRpb25zOiB7IGNvbHNwYW46IGNvbHVtbnMubGVuZ3RoLCBpdGFsaWM6IHRydWUsIGNvbG9yOiAnN0I4Nzk0JyB9IGFzIGFueSxcbiAgICAgIH1dKTtcbiAgICB9XG5cbiAgICBzbGlkZS5hZGRUYWJsZShbaGVhZGVyLCAuLi5ib2R5XSwge1xuICAgICAgeCwgeSwgdyxcbiAgICAgIGZvbnRTaXplOiA5LFxuICAgICAgY29sb3I6ICcxRjI5MzMnLFxuICAgICAgYm9yZGVyOiB7IHR5cGU6ICdzb2xpZCcsIHB0OiAwLjUsIGNvbG9yOiAnRTRFN0VCJyB9LFxuICAgICAgYXV0b1BhZ2U6IGZhbHNlLFxuICAgICAgcm93SDogVEFCTEVfUk9XX0gsXG4gICAgICB2YWxpZ246ICdtaWRkbGUnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyS3BpKFxuICAgIHNsaWRlOiBhbnksXG4gICAgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnQsXG4gICAgZGF0YTogQ29tcG9uZW50RGF0YSxcbiAgICB4OiBudW1iZXIsIHk6IG51bWJlciwgdzogbnVtYmVyLCBoOiBudW1iZXIsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNvbXBvbmVudC5jb25maWcgYXMgS3BpQ29uZmlnO1xuICAgIGNvbnN0IHJvdyA9IGRhdGEucm93c1swXSA/PyB7fTtcbiAgICBjb25zdCBjb2x1bW4gPSBjb25maWcubWVhc3VyZT8uY29sdW1uID8/IE9iamVjdC5rZXlzKHJvdylbMF07XG4gICAgY29uc3QgdmFsdWUgPSBmb3JtYXRNZWFzdXJlVmFsdWUocm93W2NvbHVtbl0sIGNvbmZpZy5tZWFzdXJlPy5mb3JtYXQsIGNvbmZpZy5tZWFzdXJlPy5wcmVjaXNpb24pO1xuXG4gICAgc2xpZGUuYWRkVGV4dChbXG4gICAgICB7IHRleHQ6IHZhbHVlLCBvcHRpb25zOiB7IGZvbnRTaXplOiAyOCwgYm9sZDogdHJ1ZSwgY29sb3I6ICcxRjI5MzMnLCBicmVha0xpbmU6IHRydWUgfSB9LFxuICAgICAgeyB0ZXh0OiBjb25maWcubWVhc3VyZT8ubGFiZWwgPz8gJycsIG9wdGlvbnM6IHsgZm9udFNpemU6IDEwLCBjb2xvcjogJzdCODc5NCcgfSB9LFxuICAgIF0sIHtcbiAgICAgIHgsIHksIHcsIGgsXG4gICAgICBhbGlnbjogJ2NlbnRlcicsXG4gICAgICB2YWxpZ246ICdtaWRkbGUnLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gVGhlIGV4cG9ydGVkIGNlbGwgbXVzdCByZWFkIGxpa2UgdGhlIG9uLXNjcmVlbiBjZWxsOiB0aGUgU1FMIGFscmVhZHlcbiAgLy8gY2FycmllcyB0aGUgZm9ybWF0dGluZywgc28gdGhlIHZhbHVlIGdvZXMgb3V0IHZlcmJhdGltLiBBIHJhdyBkYXRlIGlzIHRoZVxuICAvLyBvbmUgdmFsdWUgdGhlIGNsaWVudCByZW5kZXJzICh0aGUgY29sdW1uIHN0YXlzIGEgUkFXIHRpbWVzdGFtcCBmb3IgdGhlXG4gIC8vIHJlcG9ydCB0aW1lem9uZSksIGFuZCBpdCBpcyByZW5kZXJlZCBoZXJlIHRvby5cbiAgcHJpdmF0ZSBfY2VsbCh2YWx1ZTogdW5rbm93biwgY29sdW1uRm9ybWF0Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmIChjb2x1bW5Gb3JtYXQgPT09ICdkYXRlJykge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKFN0cmluZyh2YWx1ZSkpO1xuXG4gICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSA/IFN0cmluZyh2YWx1ZSkgOiBmb3JtYXQoZGF0ZSwgJ01NTSBkLCB5eXl5Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9zbHVnKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJykucmVwbGFjZSgvXi0rfC0rJC9nLCAnJykgfHwgJ3JlcG9ydCc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -27,4 +27,4 @@ export var ReportState;
|
|
|
27
27
|
ReportState["Active"] = "active";
|
|
28
28
|
ReportState["Deleted"] = "deleted";
|
|
29
29
|
})(ReportState || (ReportState = {}));
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQXdLbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUE0TUYsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQixtQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekI7QUF1QkQsZ0ZBQWdGO0FBQ2hGLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIsZ0NBQWlCLENBQUE7SUFDakIsa0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIGFzc2VtYmxlZCByZXBvcnQgc3RydWN0dXJlIHJldHVybmVkIGJ5IEdFVCAvYXBpL3JlcG9ydHMvOmlkIOKAlCBjb21wb3NlZFxuLy8gc2VydmVyLXNpZGUgZnJvbSB0aGUgbm9ybWFsaXplZCB0YWJsZXMgKHJlcG9ydHMg4oaSIHJlcG9ydF9wYWdlcyDihpJcbi8vIHJlcG9ydF9jb21wb25lbnRzICsgcmVwb3J0X2ZpbHRlcnMsIHBsdXMgcmVwb3J0X2ZpbHRlcl9ncm91cHMpLiBBbGwga2V5cyBhcmVcbi8vIGNhbWVsQ2FzZTsgY29tcG9uZW50IGBjb25maWdgIGlzIHRoZSBzdGFuZGFyZCBmb3JtYXQgdGhlIHJlbmRlcmVyIG1hcHMgdG9cbi8vIEVDaGFydHMgb3B0aW9ucyAvIEZzTGlzdCBjb25maWcuXG5cbi8vIExheW91dCBtb2RlczogRnJlZWZvcm0gPSBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgY29tcG9uZW50cyAoZHJhZyBhbnl3aGVyZSk7XG4vLyBGbG93ID0gY29tcG9uZW50cyBmbG93IGxpa2Ugcm93cywgZWFjaCB0YWtpbmcgZmxvd1dpZHRoICUgb2YgdGhlIHBhZ2Ugd2lkdGguXG5leHBvcnQgdHlwZSBSZXBvcnRMYXlvdXQgPSAnZnJlZWZvcm0nIHwgJ2Zsb3cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydCB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgbGF5b3V0OiBSZXBvcnRMYXlvdXQ7XG4gIC8vIElBTkEgdGltZXpvbmUgKGUuZy4gQW1lcmljYS9OZXdfWW9yaykgYW5jaG9yaW5nIGRhdGUgZmlsdGVyaW5nICsgY2hhcnQgZGF0ZVxuICAvLyBidWNrZXRpbmcuIG51bGwgZmFsbHMgYmFjayB0byB0aGUgYWNjb3VudCB6b25lIHRoZW4gVVRDIChyZXNvbHZlZCBzZXJ2ZXItc2lkZSkuXG4gIHRpbWV6b25lOiBzdHJpbmcgfCBudWxsO1xuICAvLyBSZXBvcnQtbGV2ZWwgY29uZmlnOiB0eXBvZ3JhcGhpYyBzdHlsZXMsIGV0Yy4gKGNhbWVsQ2FzZSBKU09OIGNvbHVtbikuXG4gIGNvbmZpZzogUmVwb3J0Q29uZmlnO1xuICAvLyBUaGUgcGFnZSBpbiBJTkNIRVMgKHRoZSByZXBvcnQncyBuYXRpdmUgdW5pdCDigJQgUERGcyBhbmQgUG93ZXJQb2ludCBhcmVcbiAgLy8gaW5jaC1iYXNlZCwgc28gZXhwb3J0cyBhcmUgZGltZW5zaW9uYWxseSBleGFjdCkuIE9yaWVudGF0aW9uIGlzIG5vdCBhIGZpZWxkXG4gIC8vIG9mIGl0cyBvd246IGEgcGFnZSB3aWRlciB0aGFuIGl0IGlzIHRhbGwgSVMgbGFuZHNjYXBlLlxuICBwYWdlV2lkdGg6IG51bWJlcjtcbiAgcGFnZUhlaWdodDogbnVtYmVyO1xuICBwYWdlczogUmVwb3J0UGFnZVtdO1xuICAvLyBUaGUgaGVhZGVyIGFuZCBmb290ZXI6IHRoZSByZXBvcnQncyBtYXN0ZXIgcGFnZSwgd2hvc2UgY29tcG9uZW50cyBkcmF3XG4gIC8vIHVuZGVyIGV2ZXJ5IHBhZ2UgdGhhdCBkb2VzIG5vdCBoaWRlIHRoZW0gKFBvd2VyUG9pbnQncyBzbGlkZSBtYXN0ZXIpLiBOdWxsXG4gIC8vIHVudGlsIGFueXRoaW5nIGhhcyBiZWVuIHBsYWNlZCBpbiB0aGVtLlxuICBtYXN0ZXI6IFJlcG9ydE1hc3RlciB8IG51bGw7XG4gIGZpbHRlckdyb3VwczogUmVwb3J0RmlsdGVyR3JvdXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRNYXN0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gVGhlIGRlcHRoIG9mIHRoZSBoZWFkZXIgYmFuZCAodG9wIG9mIGV2ZXJ5IHBhZ2UpIGFuZCB0aGUgZm9vdGVyIGJhbmQgKGJvdHRvbVxuLy8gb2YgZXZlcnkgcGFnZSksIGluIElOQ0hFUy4gVGhlIGJhbmRzIGhvbGQgbm8gY29udGVudCBvZiB0aGVpciBvd24g4oCUIHRoZVxuLy8gbWFzdGVyJ3MgY29tcG9uZW50cyBzaXQgaW4gdGhlbSDigJQgdGhleSBhcmUgdGhlIHJlc2VydmVkIG1hcmdpbnMgdGhlIGVkaXRvclxuLy8gZHJhd3MgYXMgZ3VpZGVzIGFuZCBzbmFwcyB0by4gQWx3YXlzIGFycml2ZXMgcmVzb2x2ZWQgKDAgPSBubyBiYW5kKS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SGVhZGVyRm9vdGVyIHtcbiAgaGVhZGVySGVpZ2h0OiBudW1iZXI7XG4gIGZvb3RlckhlaWdodDogbnVtYmVyO1xufVxuXG4vLyBSZXBvcnQtbGV2ZWwgc3R5bGluZy4gU2l6ZXMgYXJlIGluIFBPSU5UUyAoMS83MlwiKSDigJQgdGhlIHJlcG9ydCdzIHR5cG9ncmFwaHlcbi8vIG1hcHMgMToxIHRvIFBERiAoNzJwdC9pbikgYW5kIFBvd2VyUG9pbnQgKHBvaW50IGZvbnQgc2l6ZXMpLCBzbyBhIHBvaW50XG4vLyB2YWx1ZSBpcyBkaW1lbnNpb25hbGx5IGV4YWN0IG9uIHNjcmVlbiBhbmQgaW4gZXZlcnkgZXhwb3J0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb25maWcge1xuICBzdHlsZXM/OiBSZXBvcnRTdHlsZXM7XG4gIC8vIFRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sLiBPcHRpb25hbCBvbiB0aGUgdHlwZSBiZWNhdXNlIGEgUmVwb3J0Q29uZmlnXG4gIC8vIGxpdGVyYWwgbmVlZCBub3QgY2FycnkgaXQ7IHRoZSBBUEkgYWx3YXlzIHNlbmRzIGl0LCByZXNvbHZlZC5cbiAgZ3JvdXBCeT86IFJlcG9ydEdyb3VwQnk7XG4gIC8vIFJlc29sdmVkIGJ5IHRoZSBBUEkgbGlrZSBncm91cEJ5LlxuICBoZWFkZXJGb290ZXI/OiBSZXBvcnRIZWFkZXJGb290ZXI7XG59XG5cbi8vIFRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sIOKAlCB0aGUgb25lIHN3aXRjaCB0aGF0IHJlLWJ1Y2tldHMgZXZlcnlcbi8vIHRpbWUtc2VyaWVzIGNoYXJ0IG9uIHRoZSByZXBvcnQgYmV0d2VlbiBkYXksIHdlZWssIG1vbnRoLCBxdWFydGVyIGFuZCB5ZWFyLlxuLy9cbi8vIEl0IGlzIE5PVCBhIGZpbHRlcjogYSBmaWx0ZXIgbmFycm93cyB3aGljaCByb3dzIGFyZSBjb3VudGVkLCB0aGlzIGNoYW5nZXMgaG93XG4vLyB0aGUgc3Vydml2aW5nIHJvd3MgYXJlIGJ1Y2tldGVkLiBJdCBzaGFyZXMgdGhlIHJlcG9ydCdzIGZpbHRlciBiYXIgYmVjYXVzZVxuLy8gdGhhdCBpcyB0aGUgb25lIHJvdyBvZiBjb250cm9scyBhIHZpZXdlciByZWFkcyBhIHJlcG9ydCB0aHJvdWdoIOKAlCB0aGVcbi8vIHNlcGFyYXRpb24gdGhhdCBtYXR0ZXJzIGlzIGluIHRoZSBtb2RlbCwgbm90IGluIHdoZXJlIHRoZSBjb250cm9sIGlzIHBhaW50ZWQuXG4vL1xuLy8gQWx3YXlzIGFycml2ZXMgUkVTT0xWRUQgKHRoZSBiYWNrZW5kIGZpbGxzIGFuIGFic2VudCBvciBwYXJ0aWFsIHN0b3JlZCBibG9ja1xuLy8gaW4gZnJvbSBpdHMgb3duIGRlZmF1bHRzKSwgc28gdGhlcmUgaXMgbm90aGluZyB0byBkZWZhdWx0IGhlcmUg4oCUIHJlbmRlciB3aGF0XG4vLyB5b3UgYXJlIGdpdmVuLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRHcm91cEJ5IHtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgZ3JhbnVsYXJpdGllczogQ2hhcnRHcmFudWxhcml0eVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFN0eWxlcyB7XG4gIGhlYWRpbmc/OiB7IHNpemU/OiBudW1iZXIgfTtcbn1cblxuLy8gQ29udGVudCBwYWRkaW5nIGFyb3VuZCBhIGNvbXBvbmVudCdzIGJvZHksIGluIElOQ0hFUyAodGhlIGdlb21ldHJ5IHVuaXQpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRQYWRkaW5nIHtcbiAgdG9wPzogbnVtYmVyO1xuICByaWdodD86IG51bWJlcjtcbiAgYm90dG9tPzogbnVtYmVyO1xuICBsZWZ0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFBhZ2Uge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmcgfCBudWxsO1xuICBvcmRlcjogbnVtYmVyO1xuICAvLyBUaGUgcGFnZSBvcHRzIG91dCBvZiB0aGUgcmVwb3J0J3MgaGVhZGVyIGFuZCBmb290ZXIgKGEgdGl0bGUgcGFnZSkuXG4gIG1hc3RlckhpZGRlbjogYm9vbGVhbjtcbiAgY29tcG9uZW50czogUmVwb3J0Q29tcG9uZW50W107XG59XG5cbi8vICd0ZXh0JyBpcyBhdXRob3JlZCByaWNoIHRleHQgd2l0aCBubyBxdWVyeSBiZWhpbmQgaXQg4oCUIGl0IG5ldmVyIGZldGNoZXMgZGF0YS5cbmV4cG9ydCB0eXBlIFJlcG9ydENvbXBvbmVudFR5cGUgPSAnY2hhcnQnIHwgJ2xpc3QnIHwgJ2twaScgfCAndGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50IHtcbiAgaWQ6IG51bWJlcjtcbiAgdHlwZTogUmVwb3J0Q29tcG9uZW50VHlwZTtcbiAgdGl0bGU6IHN0cmluZyB8IG51bGw7XG4gIC8vIEdlb21ldHJ5IGluIElOQ0hFUy4gRnJlZWZvcm06IGFic29sdXRlIHBvc2l0aW9uIG9uIHRoZSBwYWdlIGNhbnZhcy5cbiAgLy8gRmxvdzogb25seSBmbG93V2lkdGgvb3JkZXIgYXBwbHk7IHgveSBhcmUgcmVtZW1iZXJlZCBmb3IgYSBzd2l0Y2ggYmFjayB0b1xuICAvLyBmcmVlZm9ybS5cbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHc6IG51bWJlcjtcbiAgaDogbnVtYmVyO1xuICAvLyBIZWlnaHQgbW9kZSwgREVSSVZFRCBmcm9tIHR5cGUgc2VydmVyLXNpZGUgKG5vdCBzdG9yZWQsIHJlYWQtb25seSk6IGxpc3RzXG4gIC8vIGFuZCBLUEkgdGlsZXMgYXJlIGF1dG8gKHRoZSBib3ggc2l6ZXMgdG8gaXRzIGNvbnRlbnQsIGBoYCBpZ25vcmVkKTsgY2hhcnRzXG4gIC8vIGFyZSBhbHdheXMgZml4ZWQgKHVzZSBgaGApIHNvIHRoZXkgZml0IHRoZSBib3ggYW5kIG5ldmVyIG92ZXJmbG93LlxuICBhdXRvSGVpZ2h0OiBib29sZWFuO1xuICAvLyBGbG93IGxheW91dDogJSBvZiB0aGUgcGFnZSBjb250ZW50IHdpZHRoIHRoaXMgY29tcG9uZW50IHRha2VzLlxuICBmbG93V2lkdGg6IG51bWJlcjtcbiAgLy8gRmxvdyBsYXlvdXQgb3JkZXJpbmcuXG4gIG9yZGVyOiBudW1iZXI7XG4gIC8vIFRoZSBzdG9yZWQgU1FMIG9mIGEgbGVnYWN5IHNxbC1tb2RlIGNvbXBvbmVudC4gTlVMTCBmb3IgYSBkZXJpdmVkIG9uZSxcbiAgLy8gd2hvc2Ugc3RhdGVtZW50IGRvZXMgbm90IGV4aXN0IHVudGlsIGl0cyBkb2N1bWVudCBpcyBjb21waWxlZCDigJQgdGhlIFNRTCB0YWJcbiAgLy8gZmV0Y2hlcyB0aGF0IHNlcGFyYXRlbHkgKHNlZSBSZXBvcnRDb21wb25lbnRTcWwpLlxuICBzcWw6IHN0cmluZyB8IG51bGw7XG4gIGNvbmZpZzogQ2hhcnRDb25maWcgJiBMaXN0Q29uZmlnICYgS3BpQ29uZmlnICYgVGV4dENvbmZpZyAmIENvbXBvbmVudExheW91dENvbmZpZyAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmaWx0ZXJzOiBSZXBvcnRGaWx0ZXJbXTtcbn1cblxuLy8gV2hhdCB0aGUgU1FMIHRhYiBmZXRjaGVzOiB0aGUgc3RhdGVtZW50IGEgY29tcG9uZW50IHJ1bnMuXG4vL1xuLy8gRm9yIGEgZGVyaXZlZCBjb21wb25lbnQgYGJhc2VsaW5lYCBpcyB0cnVlIGFuZCBgc3FsYCBpcyB3aGF0IGl0cyBkb2N1bWVudFxuLy8gY29tcGlsZXMgdG8gd2l0aCBOTyB2aWV3ZXIgc3RhdGUg4oCUIG5vIGZpbHRlcnMsIFVUQywgdGhlIGF1dGhvcmVkIGdyYWluLiBUaGVcbi8vIG51bWJlcnMgb24gc2NyZWVuIGNvbWUgZnJvbSB0aGF0IHN0YXRlbWVudCBwbHVzIHdoYXRldmVyIHRoZSB2aWV3ZXIgcGlja2VkLFxuLy8gc28gdGhlIHR3byBjYW4gbGVnaXRpbWF0ZWx5IGRpZmZlciBhbmQgdGhlIHRhYiBzYXlzIHNvIHJhdGhlciB0aGFuIGltcGx5aW5nXG4vLyB0aGV5IG1hdGNoLlxuLy9cbi8vIGBlcnJvcmAgaXMgbm90IGEgZmFpbHVyZSBvZiB0aGUgcmVxdWVzdDogYSBkb2N1bWVudCB0aGF0IG5vIGxvbmdlciBjb21waWxlc1xuLy8gaXMgcHJlY2lzZWx5IHdoYXQgc29tZW9uZSBvcGVucyB0aGlzIHRhYiB0byBkaXNjb3Zlciwgc28gaXQgYXJyaXZlcyBhcyBhXG4vLyBtZXNzYWdlIHRvIHJlbmRlciB3aXRoIGBlcnJvclR5cGVgIG5hbWluZyB3aGljaCBraW5kICgnc3RhbGUtcXVlcnknIG9yXG4vLyAnc2Vuc2l0aXZlLWNvbHVtbicpLCBhbmQgYHNxbGAgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50U3FsIHtcbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBvcmlnaW46ICdzcWwnIHwgJ2RicScgfCAnZGVyaXZlZCc7XG4gIGJhc2VsaW5lOiBib29sZWFuO1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3JUeXBlOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIHRleHQgYmxvY2sncyBjb250ZW50OiBhbiBodG1sIGZyYWdtZW50IHRoZSBzZXJ2ZXIgaGFzIGFscmVhZHkgcmVidWlsdCBmcm9tXG4vLyBhbiBhbGxvd2xpc3QsIHdoaWNoIG1heSBjYXJyeSB7e3BhZ2UubnVtYmVyfX0sIHt7cGFnZS5uYW1lfX0gYW5kXG4vLyB7e3JlcG9ydC5uYW1lfX0gdG9rZW5zIChzZWUgdGV4dC50cykuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDb25maWcge1xuICBodG1sPzogc3RyaW5nO1xufVxuXG4vLyBDcm9zcy10eXBlIGxheW91dC9zdHlsZSBrZXlzIGNhcnJpZWQgaW4gYSBjb21wb25lbnQncyBjb25maWcgKGFsb25nc2lkZSB0aGVcbi8vIHR5cGUtc3BlY2lmaWMgY2hhcnQvbGlzdC9rcGkga2V5cykuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudExheW91dENvbmZpZyB7XG4gIHBhZGRpbmc/OiBDb21wb25lbnRQYWRkaW5nO1xufVxuXG4vLyBUaGUgcHJlc2VudGF0aW9uIHNldHRpbmdzIGEgY29tcG9uZW50J3Mgc2V0dGluZ3MgZGlhbG9nIGVkaXRzLiBOZWl0aGVyIGZpZWxkXG4vLyBpcyBwYXJ0IG9mIHdoYXQgdGhlIGNvbXBvbmVudCBxdWVyaWVzLCBzbyBhIGNoYW5nZSB0byB0aGVtIHJlcGFpbnRzIHdpdGhvdXRcbi8vIHJlLXJ1bm5pbmcgYW55dGhpbmcuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFNldHRpbmdzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgcGFkZGluZzogQ29tcG9uZW50UGFkZGluZztcbn1cblxuLy8gV2hlcmUgYSBjaGFydCdzIGxlZ2VuZCBzaXRzIHJlbGF0aXZlIHRvIHRoZSBwbG90LCBvciAnaGlkZGVuJyB0byBkcm9wIGl0LlxuZXhwb3J0IHR5cGUgTGVnZW5kUG9zaXRpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdoaWRkZW4nO1xuXG5leHBvcnQgdHlwZSBDaGFydEdyYW51bGFyaXR5ID0gJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInO1xuXG4vLyBIb3cgZWFjaCBncmFudWxhcml0eSByZWFkcyBpbiB0aGUgZ3JvdXAtYnkgY29udHJvbCBhbmQgb24gYW4gZXhwb3J0IGNvdmVyXG4vLyBzaGVldC4gV0hJQ0ggb2YgdGhlbSBhIGdpdmVuIHJlcG9ydCBvZmZlcnMgY29tZXMgZnJvbSBpdHMgUmVwb3J0R3JvdXBCeTtcbi8vIHRoaXMgaXMgb25seSB0aGUgbmFtaW5nLiAneWVhcicgcmVhZHMgYXMgXCJBbm51YWxseVwiLlxuZXhwb3J0IGNvbnN0IEdSQU5VTEFSSVRZX09QVElPTlM6IHsgdmFsdWU6IENoYXJ0R3JhbnVsYXJpdHk7IG5hbWU6IHN0cmluZyB9W10gPSBbXG4gIHsgdmFsdWU6ICdkYXknLCBuYW1lOiAnRGF5JyB9LFxuICB7IHZhbHVlOiAnd2VlaycsIG5hbWU6ICdXZWVrJyB9LFxuICB7IHZhbHVlOiAnbW9udGgnLCBuYW1lOiAnTW9udGgnIH0sXG4gIHsgdmFsdWU6ICdxdWFydGVyJywgbmFtZTogJ1F1YXJ0ZXInIH0sXG4gIHsgdmFsdWU6ICd5ZWFyJywgbmFtZTogJ0FubnVhbGx5JyB9LFxuXTtcblxuZXhwb3J0IGludGVyZmFjZSBDaGFydENvbmZpZyB7XG4gIGNoYXJ0VHlwZT86ICdiYXInIHwgJ2xpbmUnIHwgJ2FyZWEnIHwgJ3BpZScgfCAnZG9udXQnO1xuICAvLyBGb3Iga2luZCAndGltZScsIHRoZSBzZXJ2ZXIgYnVja2V0cyB0aGUgcmF3IGRhdGV0aW1lIGNvbHVtbiB0byBgZ3JhbnVsYXJpdHlgXG4gIC8vIGluIHRoZSByZXBvcnQncyB0aW1lem9uZSAodGhlIFNRTCBleHBvc2VzIHRoZSByYXcgY29sdW1uLCB1bmJ1Y2tldGVkKS5cbiAgeEF4aXM/OiB7IGNvbHVtbjogc3RyaW5nOyBraW5kPzogJ2NhdGVnb3J5JyB8ICd0aW1lJzsgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5OyBsYWJlbD86IHN0cmluZyB9O1xuICBtZWFzdXJlcz86IENoYXJ0TWVhc3VyZVtdO1xuICBzcGxpdEJ5PzogeyBjb2x1bW46IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfTtcbiAgLy8gU2luZ2xlLWRpbWVuc2lvbiBiYXIgY2hhcnRzIG9ubHk6IGNvbG9yIGVhY2ggYmFyIGJ5IGl0cyBvd24gY2F0ZWdvcnkgYW5kXG4gIC8vIHNob3cgYSBsZWdlbmQsIFdJVEhPVVQgc3BsaXR0aW5nIGludG8gbXVsdGlwbGUgc2VyaWVzICh3aGljaCBzbGl2ZXJzIHRoZVxuICAvLyBiYXJzKS4gdjEgZXhwZWN0cyBjb2xvckJ5LmNvbHVtbiA9PT0geEF4aXMuY29sdW1uLiBJZ25vcmVkIHdoZW4gc3BsaXRCeSBpc1xuICAvLyBzZXQgb3IgdGhlIGNoYXJ0IGlzbid0IGEgYmFyIGNoYXJ0LlxuICBjb2xvckJ5PzogeyBjb2x1bW46IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfTtcbiAgb3JpZW50YXRpb24/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnO1xuICBzdGFja2VkPzogYm9vbGVhbjtcbiAgbGVnZW5kPzogTGVnZW5kUG9zaXRpb247XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBsaW1pdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFydE1lYXN1cmUge1xuICBjb2x1bW46IHN0cmluZztcbiAgYWdncmVnYXRpb24/OiAnc3VtJyB8ICdjb3VudCcgfCAnYXZnJyB8ICdtaW4nIHwgJ21heCc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBBcHBsaWVkIHRvIGEgS1BJJ3Mgc2luZ2xlIHZhbHVlIG9ubHkg4oCUIGl0IGlzIGFnZ3JlZ2F0ZWQgc2VydmVyLXNpZGUgYWZ0ZXJcbiAgLy8gdGhlIFNRTCBydW5zLCBzbyB0aGUgU1FMIGNhbm5vdCBmb3JtYXQgaXQuIENoYXJ0IG1lYXN1cmVzIHN0YXkgbnVtZXJpYy5cbiAgZm9ybWF0PzogJ251bWJlcicgfCAncGVyY2VudCcgfCAnY3VycmVuY3knO1xuICAvLyBIb3cgbWFueSBkZWNpbWFsIHBsYWNlcyB0aGUgdmFsdWUgaXMgc2hvd24gdG8uIEZpeGVkIHJhdGhlciB0aGFuIG1heGltdW06XG4gIC8vIGEgY29sdW1uIG9mIHJhdGVzIGlzIHVucmVhZGFibGUgd2hlbiBlYWNoIG9uZSBzaG93cyBhIGRpZmZlcmVudCBudW1iZXIgb2ZcbiAgLy8gZGVjaW1hbHMuIE9taXR0ZWQgbGVhdmVzIHRoZSBsb2NhbGUncyBvd24gZGVmYXVsdCwgd2hpY2ggaXMgd2hhdCBldmVyeVxuICAvLyByZXBvcnQgYXV0aG9yZWQgYmVmb3JlIHRoaXMgZGlkLlxuICAvL1xuICAvLyBJdCBjYW5ub3QgYmUgYXBwbGllZCBpbiB0aGUgU1FMOiB0aGUgdmFsdWUgaXMgYWdncmVnYXRlZCBhZnRlciB0aGUgcmVwb3J0J3NcbiAgLy8gZmlsdGVycyBydW4sIHNvIHByZS1yb3VuZGluZyB3b3VsZCBicmVhayBsaXZlIHJlLWZpbHRlcmluZyBieSBkYXRlIHJhbmdlIG9yXG4gIC8vIHBhcnRuZXIuXG4gIHByZWNpc2lvbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0Q29uZmlnIHtcbiAgLy8gQSBsaXN0IGNlbGwgcmVuZGVycyB0aGUgdmFsdWUgdmVyYmF0aW06IHBlcmNlbnQgc2lnbnMsIGN1cnJlbmN5IHN5bWJvbHMsXG4gIC8vIHRob3VzYW5kcyBzZXBhcmF0b3JzIGFuZCBkZWNpbWFsIHBsYWNlcyBhcmUgcHJvZHVjZWQgYnkgdGhlIGNvbXBvbmVudCdzXG4gIC8vIFNRTCAodGhlIGJhY2tlbmQgcmVqZWN0cyBhbnkgb3RoZXIgYGZvcm1hdGAgaGVyZSkuIGBkYXRlYCBpcyB0aGUgZXhjZXB0aW9uXG4gIC8vIOKAlCBhIGRhdGUgY29sdW1uIHN0YXlzIGEgUkFXIHRpbWVzdGFtcCBzbyB0aGUgcmVwb3J0IHRpbWV6b25lIGFuZCBpdHNcbiAgLy8gZGF0ZVJhbmdlIGZpbHRlcnMga2VlcCB3b3JraW5nLCBhbmQgdGhlIHZpZXdlciBsb2NhbGlzZXMgaXQgYXQgcmVuZGVyLlxuICAvLyBBIFNRTC1mb3JtYXR0ZWQgY29sdW1uIGlzIHRleHQsIHNvIGl0IG5hbWVzIGBzb3J0Q29sdW1uYDogdGhlIHJhdyBudW1lcmljXG4gIC8vIGFsaWFzIHRoZSBxdWVyeSBhbHNvIG91dHB1dHMsIHdoaWNoIHRoZSBzZXJ2ZXIgb3JkZXJzIGJ5IGluc3RlYWQuXG4gIGNvbHVtbnM/OiB7IGNvbHVtbjogc3RyaW5nOyBsYWJlbD86IHN0cmluZzsgZm9ybWF0PzogJ2RhdGUnOyBzb3J0Q29sdW1uPzogc3RyaW5nIH1bXTtcbiAgLy8gQSBjcm9zcy10YWI6IGByb3dCeWAgc3RheXMgZG93biB0aGUgc2lkZSBhbmQgZXZlcnkgdmFsdWUgb2YgYHBpdm90QnlgXG4gIC8vIGJlY29tZXMgYSBjb2x1bW4uIFRoZSB0d28gYXJlIHNldCB0b2dldGhlciwgYGNvbHVtbnNgIGlzIG9taXR0ZWQgKHRoZVxuICAvLyBiYWNrZW5kIHJlamVjdHMgYXV0aG9yaW5nIGJvdGgpLCBhbmQgdGhlIGNvbHVtbiBzZXQgYXJyaXZlcyB3aXRoIHRoZSByb3dzXG4gIC8vIGluIENvbXBvbmVudERhdGEuY29sdW1ucyBiZWNhdXNlIG9ubHkgdGhlIHJlc3VsdCBrbm93cyB0aGUgcGl2b3QgdmFsdWVzLlxuICByb3dCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIHBpdm90Qnk/OiB7IGNvbHVtbjogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9O1xuICBzb3J0PzogUmVwb3J0U29ydDtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ29uZmlnIHtcbiAgbWVhc3VyZT86IENoYXJ0TWVhc3VyZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTb3J0IHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGRpcmVjdGlvbj86ICdhc2MnIHwgJ2Rlc2MnO1xufVxuXG5leHBvcnQgdHlwZSBSZXBvcnRGaWx0ZXJUeXBlID0gJ2RhdGVSYW5nZScgfCAnc2VsZWN0JyB8ICdrZXl3b3JkJztcblxuLy8gV2hlcmUgYSBmaWx0ZXIgZ3JvdXAncyBjb250cm9sIGlzIGV4cG9zZWQuIEEgZ3JvdXAgY2FuIGJlIHNob3duIG9uIGl0c1xuLy8gY29tcG9uZW50cywgaW4gdGhlIHJlcG9ydCBiYXIsIG9yIEJPVEggYXQgb25jZSAodGhlIHR3byBhcmUgaW5kZXBlbmRlbnRcbi8vIHRvZ2dsZXMgaW4gdGhlIFVJKTsgYSBjb2x1bW4gd2l0aCBuZWl0aGVyIGV4cG9zZWQgc2ltcGx5IGhhcyBubyBmaWx0ZXIuXG5leHBvcnQgdHlwZSBSZXBvcnRGaWx0ZXJMZXZlbCA9ICdjb21wb25lbnQnIHwgJ3JlcG9ydCcgfCAnYm90aCc7XG5cbi8vIE9uZSBmaWx0ZXJhYmxlIG91dHB1dCBjb2x1bW4gb2YgYSBjb21wb25lbnQncyBTUUwsIHdpdGggdGhlIGZpbHRlciBpbnRlcmZhY2Vcbi8vIElORkVSUkVEIGZyb20gaXRzIGRhdGEgKHRoZSBodW1hbiBuZXZlciBwaWNrcyB0aGUgaW50ZXJmYWNlIOKAlCBpdCBmb2xsb3dzIHRoZVxuLy8gY29sdW1uJ3MgdHlwZSkuIERyaXZlcyB0aGUgRmlsdGVycyB0YWIgbGlzdGluZy5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyYWJsZUNvbHVtbiB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICB0eXBlOiBSZXBvcnRGaWx0ZXJUeXBlO1xufVxuXG4vLyBHcm91bmQgdHJ1dGg6IG9uZSBmaWx0ZXJhYmxlIG91dHB1dCBjb2x1bW4gT04gb25lIGNvbXBvbmVudCdzIFNRTC4gQWx3YXlzIGFcbi8vIG1lbWJlciBvZiBhIGZpbHRlciBncm91cCDigJQgdGhlIHVuaXQgdGhhdCBsaW5rcyBlcXVpdmFsZW50IGZpbHRlcnMgYWNyb3NzXG4vLyBjb21wb25lbnRzIGFuZCBkZWNpZGVzIHdoZXJlIHRoZSBjb250cm9sIHJlbmRlcnMgKGNvbXBvbmVudCB2cyByZXBvcnQgYmFyKS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyIHtcbiAgaWQ6IG51bWJlcjtcbiAgY29tcG9uZW50SWQ6IG51bWJlcjtcbiAgZmlsdGVyR3JvdXBJZDogbnVtYmVyO1xuICBmaWx0ZXJDb2x1bW46IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGhhc09wdGlvbnM6IGJvb2xlYW47XG4gIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8vIE9uZSBjaG9pY2UgaW4gYSBzZWxlY3QgZmlsdGVyJ3Mgb3B0aW9uIGxpc3QuIFRoZSB2YWx1ZSBpcyB3aGF0IHRoZSBmaWx0ZXJcbi8vIG1hdGNoZXMgb24gYW5kIGdldHMgc3RvcmVkIGluIGEgc2F2ZWQgZGVmYXVsdCDigJQgZm9yIGFuIGVudGl0eSB0aGF0IGlzIGl0c1xuLy8gc3RhYmxlIGlkLCBuZXZlciBpdHMgbmFtZSwgc28gcmVuYW1pbmcgdGhlIGVudGl0eSBtb3ZlcyB0aGUgbGFiZWwgd2l0aG91dFxuLy8gYnJlYWtpbmcgdGhlIGRlZmF1bHQuIFRoZSBsYWJlbCBpcyBvbmx5IGV2ZXIgd2hhdCB0aGUgdmlld2VyIHJlYWRzLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXJPcHRpb24ge1xuICB2YWx1ZTogdW5rbm93bjtcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXJHcm91cCB7XG4gIGlkOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xuICB0eXBlOiBSZXBvcnRGaWx0ZXJUeXBlO1xuICBsZXZlbDogUmVwb3J0RmlsdGVyTGV2ZWw7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGNvbmZpZzogeyBkZWZhdWx0PzogRmlsdGVyR3JvdXBEZWZhdWx0IH0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZmlsdGVyczogUmVwb3J0RmlsdGVyW107XG59XG5cbi8vIEEgZmlsdGVyIGdyb3VwJ3MgYXV0aG9yZWQgZGVmYXVsdCDigJQgdGhlIHZhbHVlIHRoYXQgc2VlZHMgdGhlIHJlcG9ydCBiYXIgb25cbi8vIGV2ZXJ5IG9wZW4uIFNoYXBlIGZvbGxvd3MgdGhlIGdyb3VwJ3MgdHlwZTogZGF0ZVJhbmdlIHVzZXMgc3RhcnQvZW5kIChhIGZpeGVkXG4vLyBjYWxlbmRhci1kYXkgcmFuZ2UpIG9yIGEgcmVsYXRpdmUgcHJlc2V0OyBzZWxlY3QgdXNlcyB2YWx1ZXM7IGtleXdvcmQgdXNlc1xuLy8gdmFsdWUuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckdyb3VwRGVmYXVsdCB7XG4gIC8vIGRhdGVSYW5nZSByZWxhdGl2ZSBwcmVzZXQsIHJlc29sdmVkIGFnYWluc3QgXCJub3dcIiBvbiBldmVyeSBvcGVuLiBPbmUgb2Y6XG4gIC8vIHRoaXNXZWVrLCBsYXN0V2VlaywgbGFzdDdEYXlzLCBsYXN0MzBEYXlzLCBsYXN0M01vbnRocywgbGFzdDZNb250aHMsXG4gIC8vIGxhc3QxMk1vbnRocywgdGhpc01vbnRoLCB0aGlzUXVhcnRlciwgdGhpc1llYXIveWVhclRvRGF0ZS4gVGhlIHdlZWsgb25lc1xuICAvLyBhcmUgd2hvbGUgY2FsZW5kYXIgZGF5cywgU3VuZGF5IHRvIFNhdHVyZGF5LCBpbiB0aGUgcmVwb3J0J3MgdGltZXpvbmUuXG4gIHJlbGF0aXZlPzogc3RyaW5nO1xuICBzdGFydD86IHN0cmluZzsgLy8gZGF0ZVJhbmdlIGZpeGVkIHN0YXJ0ICh5eXl5LU1NLWRkKVxuICBlbmQ/OiBzdHJpbmc7IC8vIGRhdGVSYW5nZSBmaXhlZCBlbmQgKHl5eXktTU0tZGQpXG4gIHZhbHVlcz86IHVua25vd25bXTsgLy8gc2VsZWN0IGRlZmF1bHQgcGlja2VkIHZhbHVlc1xuICB2YWx1ZT86IHN0cmluZzsgLy8ga2V5d29yZCBkZWZhdWx0IHRleHRcbn1cblxuLy8gVGhlIHNlc3Npb24gdmFsdWUgb2YgYSBmaWx0ZXIgZ3JvdXAgKG5ldmVyIHBlcnNpc3RlZCk6IHNoYXBlIGRlcGVuZHMgb24gdGhlXG4vLyBncm91cCdzIHR5cGUuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckdyb3VwVmFsdWUge1xuICBzdGFydD86IERhdGUgfCBzdHJpbmcgfCBudWxsOyAvLyBkYXRlUmFuZ2VcbiAgZW5kPzogRGF0ZSB8IHN0cmluZyB8IG51bGw7IC8vIGRhdGVSYW5nZVxuICB2YWx1ZXM/OiB1bmtub3duW107IC8vIHNlbGVjdFxuICB2YWx1ZT86IHN0cmluZzsgLy8ga2V5d29yZFxufVxuXG4vLyBPbmUgcmVzb2x2ZWQgZmlsdGVyIHNlbnQgd2l0aCBhIGNvbXBvbmVudCdzIGRhdGEgcmVxdWVzdC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRGaWx0ZXJWYWx1ZSB7XG4gIGZpbHRlcklkOiBudW1iZXI7XG4gIHN0YXJ0Pzogc3RyaW5nO1xuICBlbmQ/OiBzdHJpbmc7XG4gIHZhbHVlcz86IHVua25vd25bXTtcbiAgdmFsdWU/OiBzdHJpbmc7XG59XG5cbi8vIFBlci1jb21wb25lbnQgaW50ZXJhY3Rpb24gc3RhdGUgc2VudCB3aXRoIHRoZSBkYXRhIHJlcXVlc3Q6IGxpc3RzIHNlbmRcbi8vIHNvcnQvcGFnaW5nOyB0aW1lLXNlcmllcyBjaGFydHMgc2VuZCB0aGUgZ3JhaW4gcGlja2VkIG9uIHRoZSByZXBvcnQncyBncm91cC1ieVxuLy8gY29udHJvbCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBhdXRob3JlZCBncmFudWxhcml0eSBmb3IgdGhhdCByZXF1ZXN0IG9ubHkuIFRoZVxuLy8gd2lyZSBrZXkgc3RheXMgYGZyZXF1ZW5jeWAg4oCUIGl0IGlzIHRoZSBidWNrZXRpbmcgZnJlcXVlbmN5IHRoZSBzZXJ2ZXIgYXBwbGllcy5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGF0YVN0YXRlIHtcbiAgc29ydD86IFJlcG9ydFNvcnQ7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICBmcmVxdWVuY3k/OiBDaGFydEdyYW51bGFyaXR5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGEge1xuICBjb2x1bW5zOiBzdHJpbmdbXTtcbiAgcm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgcGFnaW5nPzogeyB0b3RhbDogbnVtYmVyOyBwYWdlOiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfTtcbiAgdHJ1bmNhdGVkOiBib29sZWFuO1xuICAvLyBUaGUgZWZmZWN0aXZlIHRpbWUgYnVja2V0IHRoZSByb3dzIHdlcmUgZ3JvdXBlZCBpbnRvIChhZnRlciBhbnkgZ3JvdXAtYnlcbiAgLy8gb3ZlcnJpZGUpLCBvciBudWxsIGZvciBhIG5vbi10aW1lIGF4aXMuIERyaXZlcyB0aGUgY29tcGFjdCB4LWF4aXMgbGFiZWxzLlxuICBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydExpc3RJdGVtIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBtb2RpZnlEYXRlOiBzdHJpbmc7XG4gIHN0YXRlPzogUmVwb3J0U3RhdGU7XG4gIC8vIFRoZSBmb2xkZXIgdGhlIHJlcG9ydCBpcyBmaWxlZCB1bmRlci4gbnVsbCBpcyBhIHJlYWwsIGNvbW1vbiB2YWx1ZSDigJQgdGhlXG4gIC8vIHJlcG9ydCBzaXRzIGF0IHRoZSByb290IG9mIHRoZSBsaXN0aW5nIHRyZWUgYWxvbmdzaWRlIHRoZSBmb2xkZXJzLlxuICAvL1xuICAvLyBPcHRpb25hbCBsaWtlIGBzdGF0ZWAgYmVzaWRlIGl0OiB0aGUgYmFja2VuZCBhbHdheXMgc2VuZHMgaXQsIGJ1dCBtYWtpbmcgaXRcbiAgLy8gcmVxdWlyZWQgaXMgYSBicmVha2luZyB0eXBlIGNoYW5nZSBmb3IgZXZlcnkgY29uc3VtZXIgaG9sZGluZyBhXG4gIC8vIFJlcG9ydExpc3RJdGVtIGxpdGVyYWwgKGZpeHR1cmVzLCBtb2NrcykgYW5kIGJ1eXMgbm90aGluZyDigJQgdGhlIGxpc3RpbmdcbiAgLy8gcmVhZHMgaXQgYXMgYD8/IG51bGxgIGVpdGhlciB3YXkuXG4gIHJlcG9ydEZvbGRlcklkPzogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gT25lIGZvbGRlciBpbiB0aGUgbGlzdGluZyB0cmVlIOKAlCBhbiBhdWRpZW5jZSBidWNrZXQgKFwiTWFuYWdlbWVudFwiLFxuLy8gXCJPcGVyYXRpb25zXCIpIHJlcG9ydHMgYXJlIGZpbGVkIGludG8uIEZvbGRlcnMgbmVzdCB2aWEgcGFyZW50UmVwb3J0Rm9sZGVySWQ7XG4vLyByZXBvcnRzIG5ldmVyIGRvLCBzbyB0aGUgdHJlZSdzIG9ubHkgYnJhbmNoIG5vZGVzIGFyZSBmb2xkZXJzLlxuLy9cbi8vIGBzdGF0ZWAgaXMgdGhlIGZvbGRlcidzIE9XTiBzdGF0ZS4gRGVsZXRpbmcgYSBmb2xkZXIgd3JpdGVzIG9ubHkgdGhhdCwgYW5kXG4vLyBldmVyeXRoaW5nIGJlbG93IGl0IGNvdW50cyBhcyBkZWxldGVkIGJ5IHBvc2l0aW9uIOKAlCBzZWUgUmVwb3J0Tm9kZS5kZWxldGVkLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGb2xkZXIge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHBhcmVudFJlcG9ydEZvbGRlcklkOiBudW1iZXIgfCBudWxsO1xuICBzdGF0ZT86IFJlcG9ydFN0YXRlO1xufVxuXG4vLyBHRVQgL2FwaS9yZXBvcnRzIHJldHVybnMgYm90aCBoYWx2ZXMgZmxhdDsgdGhlIGxpc3RpbmcgbmVzdHMgdGhlbSBpdHNlbGYuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFRyZWUge1xuICByZXBvcnRzOiBSZXBvcnRMaXN0SXRlbVtdO1xuICBmb2xkZXJzOiBSZXBvcnRGb2xkZXJbXTtcbn1cblxuZXhwb3J0IGVudW0gUmVwb3J0Tm9kZVR5cGUge1xuICBGb2xkZXIgPSAnZm9sZGVyJyxcbiAgUmVwb3J0ID0gJ3JlcG9ydCcsXG59XG5cbi8vIE9uZSBub2RlIGFzIGZzLXRyZWUgc2VlcyBpdC4gRm9sZGVycyBhbmQgcmVwb3J0cyBzaGFyZSBvbmUgaWQgc3BhY2UgaW4gdGhlXG4vLyB2aWV3LCBzbyB0aGUgaWRzIGFyZSBwcmVmaXhlZCAoJ2Y6MTInIC8gJ3I6MzQnKSDigJQgYGlkYCBpcyB0aGUgb3JpZ2luYWwsXG4vLyBwZXItdGFibGUgaWQgdGhhdCB0aGUgQVBJIGVuZHBvaW50cyB0YWtlLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnROb2RlIHtcbiAga2V5OiBzdHJpbmc7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogUmVwb3J0Tm9kZVR5cGU7XG4gIC8vIE9ubHkgZXZlciBwb3B1bGF0ZWQgb24gYSBmb2xkZXI7IGEgcmVwb3J0IGlzIGFsd2F5cyBhIGxlYWYuXG4gIGNoaWxkcmVuOiBSZXBvcnROb2RlW107XG4gIC8vIFByZXNlbnQgb24gcmVwb3J0IG5vZGVzIG9ubHkuXG4gIHJlcG9ydD86IFJlcG9ydExpc3RJdGVtO1xuICAvLyBUaGUgbm9kZSdzIG93biByb3cgaXMgZGVsZXRlZC4gV2hhdCBlYXJucyB0aGUgXCJEZWxldGVkXCIgY2hpcCDigJQgdGhpcyBpc1xuICAvLyB3aGF0IHNvbWVib2R5IGFjdHVhbGx5IGRlbGV0ZWQuXG4gIHN0YXRlRGVsZXRlZDogYm9vbGVhbjtcbiAgLy8gRGVsZXRlZCBpdHNlbGYgT1IgYW55d2hlcmUgYmVsb3cgYSBkZWxldGVkIGZvbGRlci4gT25seSBldmVyIHRydWUgaW4gU2hvd1xuICAvLyBEZWxldGVkIG1vZGUgKHRoZSBkZWZhdWx0IGxpc3RpbmcgbmV2ZXIgcmV0dXJucyBzdWNoIGEgbm9kZSksIGFuZCBpdCBpcyB3aGF0XG4gIC8vIHN3YXBzIHRoZSByb3cncyBhY3Rpb25zIGZvciBSZXN0b3JlLlxuICBkZWxldGVkOiBib29sZWFuO1xufVxuXG4vLyBSZXBvcnRzIGFuZCBmb2xkZXJzIGFyZSBib3RoIHNvZnQtZGVsZXRhYmxlLiBBIGRlbGV0ZWQgcmVwb3J0IGtlZXBzIGl0cyBwYWdlc1xuLy8gYW5kIGNvbXBvbmVudHM7IGEgZGVsZXRlZCBmb2xkZXIga2VlcHMgZXZlcnl0aGluZyBmaWxlZCB1bmRlciBpdCwgd2hpY2ggbGVhdmVzXG4vLyB0aGUgbGlzdGluZyB3aXRoIGl0IGFuZCBjb21lcyBiYWNrIHdpdGggaXQuIFwiU2hvdyBEZWxldGVkXCIgc2hvd3MgdGhlIHdob2xlXG4vLyB0cmVlLCBsaXZlIGFuZCBkZWxldGVkIHRvZ2V0aGVyLCBzbyBhbnkgb2YgaXQgY2FuIGJlIHJlc3RvcmVkIGluIHBsYWNlLlxuZXhwb3J0IGVudW0gUmVwb3J0U3RhdGUge1xuICBBY3RpdmUgPSAnYWN0aXZlJyxcbiAgRGVsZXRlZCA9ICdkZWxldGVkJyxcbn1cblxuLy8gVGhlIGNoYXQgdHVybiBmbGFncyB0aGlzIGNvbnRleHQncyBiYWNrZW5kIGFkZHMgKFJlcG9ydHNcXEFpVmlldykuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENoYXRSZXNwb25zZSB7XG4gIHJlcG9ydENoYW5nZWQ/OiBib29sZWFuO1xuICByZXBvcnRSZW5hbWVkPzogYm9vbGVhbjtcbn1cblxuLy8gT25lIHZlcnNpb24gb2YgdGhlIGdsb2JhbCBBSSBrbm93bGVkZ2UgZG9jdW1lbnQg4oCUIHRoZSBvcGVyYXRvci1hdXRob3JlZFxuLy8gbWFya2Rvd24gYXBwZW5kZWQgdG8gdGhlIHJlcG9ydCBhZ2VudCdzIHN5c3RlbSBpbnN0cnVjdGlvbnMgb24gZXZlcnkgdHVybi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SW5zdHJ1Y3Rpb24ge1xuICBpZDogbnVtYmVyO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIGN1cnJlbnQ6IGJvb2xlYW47XG4gIGNyZWF0ZURhdGU6IERhdGU7XG4gIG1vZGlmeURhdGU6IERhdGU7XG4gIGFjY291bnRJZDogbnVtYmVyIHwgbnVsbDtcbiAgYWNjb3VudE5hbWU6IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIEdFVC9QVVQgaW5zdHJ1Y3Rpb25zIHBheWxvYWQ6IHRoZSBjdXJyZW50IHZlcnNpb24gKG51bGwgdW50aWwgb25lIGlzXG4vLyBhdXRob3JlZCkgcGx1cyB0aGUgZnVsbCBoaXN0b3J5LCBuZXdlc3QgZmlyc3QuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEluc3RydWN0aW9ucyB7XG4gIGluc3RydWN0aW9uczogUmVwb3J0SW5zdHJ1Y3Rpb24gfCBudWxsO1xuICB2ZXJzaW9uczogUmVwb3J0SW5zdHJ1Y3Rpb25bXTtcbn1cblxuLy8gVGhlIGxhdGVzdCBzZW1hbnRpYy1kYXRhYmFzZSBidWlsZCAoYW4gZmZfcHJvY2Vzc2VzIHJvdykg4oCUIGVub3VnaCBmb3IgdGhlXG4vLyBzZXR0aW5ncyBkaWFsb2cgdG8gc2F5IHdoYXQgc3RhdGUgdGhlIGJ1aWxkIGlzIGluIGFuZCB3aGVuIGl0IGxhc3QgcmFuLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkIHtcbiAgaWQ6IG51bWJlcjtcbiAgc3RhdGU6IHN0cmluZztcbiAgcGVyY2VudDogbnVtYmVyIHwgc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIGNyZWF0ZURhdGU6IERhdGU7XG4gIHN0YXJ0RGF0ZTogRGF0ZTtcbiAgZW5kRGF0ZTogRGF0ZTtcbn1cblxuLy8gQSBidWlsZCBzdGFnZSdzIHN0YXRlIG9uIHRoZSBlbnRpdHkgc2NvcmVib2FyZDogJ2RvbmUnID0gYnVpbHQsICdtaXNzaW5nJyA9XG4vLyBzdGlsbCBuZWVkcyBidWlsZGluZyAoYSBtaXNzaW5nIHN0YWdlIGlzIHVuYnVpbHQgY29udGVudCwgbmV2ZXIgYW4gZXJyb3IpLlxuZXhwb3J0IHR5cGUgU2VtYW50aWNCdWlsZFN0YWdlID0gJ2RvbmUnIHwgJ21pc3NpbmcnO1xuXG4vLyBPbmUgZW51bSBjb2x1bW4gb2YgYW4gZW50aXR5LCB3aXRoIHRoZSBhbGxvd2VkIHZhbHVlcyB0aGUgYnVpbGQgaW5saW5lZC5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZEVudW0ge1xuICBjb2x1bW46IHN0cmluZztcbiAgdmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuLy8gT25lIGVudGl0eSByb3cgb2YgdGhlIHNjb3JlYm9hcmQgKGFuIGVudGl0eSA9IGEgdGFibGUgKyBhIG1vZGVsICsgYVxuLy8gaGFuZGxlcik6IGl0cyB0YWJsZS9zaGFwZSBjb3VudHMsIGlubGluZWQgZW51bSB2YWx1ZXMsIGNvbXB1dGVkIGZpZWxkcywgaG93XG4vLyBtYW55IGNvZGUgZnVuY3Rpb25zIHdlcmUgY2FjaGVkIChzcGxpdCBtb2RlbCB2cyBoYW5kbGVyKSwgYW5kIHRoZSBwZXItc3RhZ2Vcbi8vIGJ1aWx0L21pc3Npbmcgc3RhdGUuXG4vL1xuLy8gYG1vZGVsYC9gaGFuZGxlcmAgYXJlIHRoZSBjbGFzc2VzIHRoZSBmdW5jdGlvbnMgd2VyZSByZWFkIGZyb20g4oCUIHdoYXQgYVxuLy8gcmVhZGVyIHJlY29nbml6ZXMgdGhlIHJvdyBieSwgd2hlcmUgYGtleWAgaXMgd2hhdCB0aGUgcmVwb3J0IEFJIGFkZHJlc3NlcyBpdFxuLy8gYnkgaW4gZGVzY3JpYmVfZW50aXR5IC8gY29tcGlsZV9xdWVyeS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZEVudGl0eSB7XG4gIGtleTogc3RyaW5nO1xuICB0YWJsZTogc3RyaW5nO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgaGFuZGxlcjogc3RyaW5nIHwgbnVsbDtcbiAgY29sdW1uczogbnVtYmVyO1xuICByZWxhdGlvbnNoaXBzOiBudW1iZXI7XG4gIGVudW1zOiBTZW1hbnRpY0J1aWxkRW51bVtdO1xuICBjb21wdXRlZEZpZWxkczogc3RyaW5nW107XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgbW9kZWxGdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGhhbmRsZXJGdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIHN0YWdlczogUmVjb3JkPHN0cmluZywgU2VtYW50aWNCdWlsZFN0YWdlPjtcbn1cblxuLy8gT25lIHN0YW5kYWxvbmUgY29kZSBjbGFzcyB0aGUgYnVpbGQgcmVhZDogZG9tYWluIGxvZ2ljIHdpdGggbm8gdGFibGUgb2YgaXRzXG4vLyBvd24gKGEgc3VtbWFyeSBtb2RlbCwgYSBjYWxjdWxhdGlvbiBzZXJ2aWNlKS4gVGhlIHJlcG9ydCBBSSByZWFkcyBpdHMgY29kZVxuLy8gZXhhY3RseSBsaWtlIGFuIGVudGl0eSdzLCBidXQgaXQgY2FuIG5ldmVyIGJlIHF1ZXJpZWQg4oCUIHRoZXJlIGlzIG5vdGhpbmcgdG9cbi8vIHNlbGVjdCBmcm9tIOKAlCBzbyBpdCBjYXJyaWVzIG5vIHRhYmxlLCBjb2x1bW5zIG9yIHJlbGF0aW9uc2hpcHMuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRDbGFzcyB7XG4gIGtleTogc3RyaW5nO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xufVxuXG4vLyBXaGF0IHRoZSBidWlsZCBkZWNpZGVkIGEgcGh5c2ljYWwgdGFibGUgaXMuIEVudGl0eSBhbmQganVuY3Rpb24gYXJlIGJvdGhcbi8vIHJlYWNoYWJsZSBieSB0aGUgcmVwb3J0IEFJIOKAlCBhbiBlbnRpdHkgZGlyZWN0bHksIGEganVuY3Rpb24gdGhyb3VnaCB0aGVcbi8vIG1hbnktdG8tbWFueSBpdCBicmlkZ2VzLiBFeGNsdWRlZCBpcyBub3QgcmVhY2hhYmxlIGF0IGFsbC5cbmV4cG9ydCB0eXBlIFNlbWFudGljVGFibGVDbGFzc2lmaWNhdGlvbiA9ICdlbnRpdHknIHwgJ2p1bmN0aW9uJyB8ICdleGNsdWRlZCc7XG5cbi8vIE9uZSBwaHlzaWNhbCB0YWJsZSBhcyB0aGUgYnVpbGQgY2xhc3NpZmllZCBpdC4gYHJlYXNvbmAgYW5zd2VycyBhIHNpbmdsZVxuLy8gcXVlc3Rpb24g4oCUIHdoeSBjYW4ndCB0aGUgcmVwb3J0IEFJIHNlZSB0aGlzIHRhYmxlPyDigJQgYW5kIGlzIG51bGwgd2hlbiBpdCBjYW4uXG4vLyBBIGp1bmN0aW9uIHdpdGggYSByZWFzb24gYnJpZGdlZCBub3RoaW5nLCBzbyBpdCBpcyBqdXN0IGFzIGludmlzaWJsZSBhcyBhblxuLy8gZXhjbHVkZWQgdGFibGUuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRUYWJsZSB7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIGNsYXNzaWZpY2F0aW9uOiBTZW1hbnRpY1RhYmxlQ2xhc3NpZmljYXRpb247XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICByZWFzb246IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIFRoZSBidWlsZCBzY29yZWJvYXJkIHNoaXBwZWQgYWxvbmdzaWRlIHRoZSBidWlsZCBzdGF0dXM6IHRoZSBzdW1tYXJ5IGNvdW50cyxcbi8vIHRoZSBmdWxsIGJyZWFrZG93biB0aGUgc2V0dGluZ3MgZGlhbG9nIGRyaWxscyBpbnRvIOKAlCBCT1RIIGtpbmRzIG9mIHVuaXQgdGhlXG4vLyBidWlsZCBjYWNoZXMsIHRhYmxlLWJhY2tlZCBlbnRpdGllcyBhbmQgc3RhbmRhbG9uZSBjb2RlIGNsYXNzZXMg4oCUIGFuZCB0aGVcbi8vIGNhdGFsb2cgb2YgZXZlcnkgdGFibGUgdGhlIGJ1aWxkIHNhdywgc28gdGhlIHRhYiBjYW4gc2hvdyB3aGF0IHRoZSByZXBvcnQgQUlcbi8vIGNhbid0IHNlZSwgbm90IGp1c3Qgd2hhdCBpdCBjYW4uXG4vL1xuLy8gYGZ1bmN0aW9uQ291bnRgIHNwYW5zIGVudGl0aWVzIGFuZCBjbGFzc2VzIGFsaWtlOiBpdCBpcyB0aGUgc2FtZSB0b3RhbCB0aGVcbi8vIGJ1aWxkIGl0c2VsZiByZXBvcnRzIHdoZW4gaXQgZmluaXNoZXMuXG4vL1xuLy8gYHRhYmxlc2AgaXMgZW1wdHkgZm9yIGFuIGFydGlmYWN0IGJ1aWx0IGJlZm9yZSB0aGUgY2F0YWxvZyBleGlzdGVkLiBSZWFkIHRoYXRcbi8vIGFzIFwibm8gY2F0YWxvZ1wiLCBuZXZlciBhcyBcIm5vdGhpbmcgd2FzIGV4Y2x1ZGVkXCIuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGREZXRhaWwge1xuICAvLyBXaGV0aGVyIHRoZSBhcnRpZmFjdCB3YXMgcHJvZHVjZWQgYnkgYSBidWlsZCB0aGF0IHJhbiB0byB0aGUgZW5kLiBSZWFkIGl0XG4gIC8vIGJlc2lkZSBgZ2VuZXJhdGVkQXRgLCBuZXZlciBpbnN0ZWFkIG9mIGl0OiB0aGUgc3RydWN0dXJhbCBhcnRpZmFjdCBpc1xuICAvLyBwdWJsaXNoZWQgQkVGT1JFIHRoZSBBSSBmdW5jdGlvbiBwYXNzLCBzbyBhIGJ1aWxkIHdob3NlIEFJIHBhc3MgZmFpbGVkIHN0aWxsXG4gIC8vIGNhcnJpZXMgYSBkYXRlIGFuZCBhIGZ1bGwgc2V0IG9mIGNvdW50cy4gVGhlIGRhdGUgc2F5cyBzb21ldGhpbmcgd2FzXG4gIC8vIHdyaXR0ZW47IG9ubHkgdGhpcyBzYXlzIHRoZSBidWlsZCBmaW5pc2hlZCB3cml0aW5nIGl0LlxuICBjb21wbGV0ZTogYm9vbGVhbjtcbiAgZ2VuZXJhdGVkQXQ6IERhdGUgfCBudWxsO1xuICBlbnRpdHlDb3VudDogbnVtYmVyO1xuICBjbGFzc0NvdW50OiBudW1iZXI7XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgZW50aXRpZXM6IFNlbWFudGljQnVpbGRFbnRpdHlbXTtcbiAgY2xhc3NlczogU2VtYW50aWNCdWlsZENsYXNzW107XG4gIHRhYmxlQ291bnQ6IG51bWJlcjtcbiAganVuY3Rpb25Db3VudDogbnVtYmVyO1xuICB1bmxpbmtlZEp1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgZXhjbHVkZWRDb3VudDogbnVtYmVyO1xuICB0YWJsZXM6IFNlbWFudGljQnVpbGRUYWJsZVtdO1xufVxuXG4vLyBXaGljaCBjbGFzcyBhIGNhY2hlZCBmdW5jdGlvbiB3YXMgcmVhZCBmcm9tLiBBbiBlbnRpdHkncyBjYWNoZSBzcGxpdHMgaW50b1xuLy8gJ21vZGVsJyBhbmQgJ2hhbmRsZXInOyBhIHN0YW5kYWxvbmUgY29kZSBjbGFzcyBoYXMgb25lIGdyb3VwLCAnY2xhc3MnLlxuZXhwb3J0IHR5cGUgU2VtYW50aWNGdW5jdGlvblNvdXJjZSA9ICdtb2RlbCcgfCAnaGFuZGxlcicgfCAnY2xhc3MnO1xuXG4vLyBPbmUgQUktY2xhc3NpZmllZCBjb2RlIGZ1bmN0aW9uIGZyb20gYSBtb2RlbCwgaGFuZGxlciBvciBzdGFuZGFsb25lIGNsYXNzOlxuLy8gd2hhdCBraW5kIG9mIGxvZ2ljIGl0IGlzLCB3aGF0IGl0IGRvZXMsIGFuZCB3aGF0IGl0IHByb2R1Y2VzIOKAlCB0aGUgYnVpbGQnc1xuLy8gY2FjaGVkIFwid2hhdCB0aGUgY29kZSBkb2VzXCIga25vd2xlZGdlIHNob3duIGluIHRoZSBmdW5jdGlvbnMgZGlhbG9nLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0VudGl0eUZ1bmN0aW9uIHtcbiAgY2xhc3M6IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xuICBraW5kOiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgcHJvZHVjZXM6IHN0cmluZztcbiAgc291cmNlOiBTZW1hbnRpY0Z1bmN0aW9uU291cmNlO1xufVxuXG4vLyBPbmUgZW50aXR5J3MgY2FjaGVkIGNvZGUtZnVuY3Rpb24ga25vd2xlZGdlLCBmZXRjaGVkIHdoZW4gYSBmdW5jdGlvbnMgZGlhbG9nXG4vLyBvcGVucyAodGhlIGZ1bGwgc2V0IGFjcm9zcyBhbGwgZW50aXRpZXMgaXMgdG9vIGJpZyB0byBzaGlwIHdpdGggdGhlXG4vLyBzY29yZWJvYXJkKS4gT25lIHBheWxvYWQgc2VydmVzIGJvdGggZGlhbG9ncyDigJQgY29uc3VtZXJzIGZpbHRlciBieSBzb3VyY2UuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljRW50aXR5RnVuY3Rpb25zIHtcbiAgZW50aXR5OiBzdHJpbmc7XG4gIGdlbmVyYXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgbW9kZWxDbGFzczogc3RyaW5nIHwgbnVsbDtcbiAgaGFuZGxlckNsYXNzOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbnM6IFNlbWFudGljRW50aXR5RnVuY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkU3RhdHVzIHtcbiAgYnVpbGQ6IFNlbWFudGljQnVpbGQgfCBudWxsO1xuICBkZXRhaWw6IFNlbWFudGljQnVpbGREZXRhaWw7XG59XG5cbi8vIFRoZSByZXBvcnQgbW9kdWxlJ3MgR2VuZXJhbCBzZXR0aW5ncyAoYSBzbWFsbCBnbG9iYWwga2V5L3ZhbHVlIHN0b3JlLCB0aGVcbi8vIHJlcG9ydGluZyBjb3VudGVycGFydCBvZiB0aGUgYXBwLXdpZGUgc2V0dGluZ3MpLiBFYWNoIHZhbHVlIHNoaXBzIHdpdGggdGhlXG4vLyBzYWZlIGJhbmQgaXRzIGVkaXRvciBmaWVsZCBpcyBib3VuZGVkIHRvLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTZXR0aW5ncyB7XG4gIC8vIEhvdyBtYW55IHN1bW1hcnkgY2FsbHMgdGhlIHNlbWFudGljIGJ1aWxkIHJ1bnMgYXQgb25jZS5cbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5OiBudW1iZXI7XG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeU1pbjogbnVtYmVyO1xuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3lNYXg6IG51bWJlcjtcbn1cbiJdfQ==
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQXdLbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUFxTkYsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQixtQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekI7QUF1QkQsZ0ZBQWdGO0FBQ2hGLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDckIsZ0NBQWlCLENBQUE7SUFDakIsa0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIGFzc2VtYmxlZCByZXBvcnQgc3RydWN0dXJlIHJldHVybmVkIGJ5IEdFVCAvYXBpL3JlcG9ydHMvOmlkIOKAlCBjb21wb3NlZFxuLy8gc2VydmVyLXNpZGUgZnJvbSB0aGUgbm9ybWFsaXplZCB0YWJsZXMgKHJlcG9ydHMg4oaSIHJlcG9ydF9wYWdlcyDihpJcbi8vIHJlcG9ydF9jb21wb25lbnRzICsgcmVwb3J0X2ZpbHRlcnMsIHBsdXMgcmVwb3J0X2ZpbHRlcl9ncm91cHMpLiBBbGwga2V5cyBhcmVcbi8vIGNhbWVsQ2FzZTsgY29tcG9uZW50IGBjb25maWdgIGlzIHRoZSBzdGFuZGFyZCBmb3JtYXQgdGhlIHJlbmRlcmVyIG1hcHMgdG9cbi8vIEVDaGFydHMgb3B0aW9ucyAvIEZzTGlzdCBjb25maWcuXG5cbi8vIExheW91dCBtb2RlczogRnJlZWZvcm0gPSBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgY29tcG9uZW50cyAoZHJhZyBhbnl3aGVyZSk7XG4vLyBGbG93ID0gY29tcG9uZW50cyBmbG93IGxpa2Ugcm93cywgZWFjaCB0YWtpbmcgZmxvd1dpZHRoICUgb2YgdGhlIHBhZ2Ugd2lkdGguXG5leHBvcnQgdHlwZSBSZXBvcnRMYXlvdXQgPSAnZnJlZWZvcm0nIHwgJ2Zsb3cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydCB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgbGF5b3V0OiBSZXBvcnRMYXlvdXQ7XG4gIC8vIElBTkEgdGltZXpvbmUgKGUuZy4gQW1lcmljYS9OZXdfWW9yaykgYW5jaG9yaW5nIGRhdGUgZmlsdGVyaW5nICsgY2hhcnQgZGF0ZVxuICAvLyBidWNrZXRpbmcuIG51bGwgZmFsbHMgYmFjayB0byB0aGUgYWNjb3VudCB6b25lIHRoZW4gVVRDIChyZXNvbHZlZCBzZXJ2ZXItc2lkZSkuXG4gIHRpbWV6b25lOiBzdHJpbmcgfCBudWxsO1xuICAvLyBSZXBvcnQtbGV2ZWwgY29uZmlnOiB0eXBvZ3JhcGhpYyBzdHlsZXMsIGV0Yy4gKGNhbWVsQ2FzZSBKU09OIGNvbHVtbikuXG4gIGNvbmZpZzogUmVwb3J0Q29uZmlnO1xuICAvLyBUaGUgcGFnZSBpbiBJTkNIRVMgKHRoZSByZXBvcnQncyBuYXRpdmUgdW5pdCDigJQgUERGcyBhbmQgUG93ZXJQb2ludCBhcmVcbiAgLy8gaW5jaC1iYXNlZCwgc28gZXhwb3J0cyBhcmUgZGltZW5zaW9uYWxseSBleGFjdCkuIE9yaWVudGF0aW9uIGlzIG5vdCBhIGZpZWxkXG4gIC8vIG9mIGl0cyBvd246IGEgcGFnZSB3aWRlciB0aGFuIGl0IGlzIHRhbGwgSVMgbGFuZHNjYXBlLlxuICBwYWdlV2lkdGg6IG51bWJlcjtcbiAgcGFnZUhlaWdodDogbnVtYmVyO1xuICBwYWdlczogUmVwb3J0UGFnZVtdO1xuICAvLyBUaGUgaGVhZGVyIGFuZCBmb290ZXI6IHRoZSByZXBvcnQncyBtYXN0ZXIgcGFnZSwgd2hvc2UgY29tcG9uZW50cyBkcmF3XG4gIC8vIHVuZGVyIGV2ZXJ5IHBhZ2UgdGhhdCBkb2VzIG5vdCBoaWRlIHRoZW0gKFBvd2VyUG9pbnQncyBzbGlkZSBtYXN0ZXIpLiBOdWxsXG4gIC8vIHVudGlsIGFueXRoaW5nIGhhcyBiZWVuIHBsYWNlZCBpbiB0aGVtLlxuICBtYXN0ZXI6IFJlcG9ydE1hc3RlciB8IG51bGw7XG4gIGZpbHRlckdyb3VwczogUmVwb3J0RmlsdGVyR3JvdXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRNYXN0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gVGhlIGRlcHRoIG9mIHRoZSBoZWFkZXIgYmFuZCAodG9wIG9mIGV2ZXJ5IHBhZ2UpIGFuZCB0aGUgZm9vdGVyIGJhbmQgKGJvdHRvbVxuLy8gb2YgZXZlcnkgcGFnZSksIGluIElOQ0hFUy4gVGhlIGJhbmRzIGhvbGQgbm8gY29udGVudCBvZiB0aGVpciBvd24g4oCUIHRoZVxuLy8gbWFzdGVyJ3MgY29tcG9uZW50cyBzaXQgaW4gdGhlbSDigJQgdGhleSBhcmUgdGhlIHJlc2VydmVkIG1hcmdpbnMgdGhlIGVkaXRvclxuLy8gZHJhd3MgYXMgZ3VpZGVzIGFuZCBzbmFwcyB0by4gQWx3YXlzIGFycml2ZXMgcmVzb2x2ZWQgKDAgPSBubyBiYW5kKS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SGVhZGVyRm9vdGVyIHtcbiAgaGVhZGVySGVpZ2h0OiBudW1iZXI7XG4gIGZvb3RlckhlaWdodDogbnVtYmVyO1xufVxuXG4vLyBSZXBvcnQtbGV2ZWwgc3R5bGluZy4gU2l6ZXMgYXJlIGluIFBPSU5UUyAoMS83MlwiKSDigJQgdGhlIHJlcG9ydCdzIHR5cG9ncmFwaHlcbi8vIG1hcHMgMToxIHRvIFBERiAoNzJwdC9pbikgYW5kIFBvd2VyUG9pbnQgKHBvaW50IGZvbnQgc2l6ZXMpLCBzbyBhIHBvaW50XG4vLyB2YWx1ZSBpcyBkaW1lbnNpb25hbGx5IGV4YWN0IG9uIHNjcmVlbiBhbmQgaW4gZXZlcnkgZXhwb3J0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb25maWcge1xuICBzdHlsZXM/OiBSZXBvcnRTdHlsZXM7XG4gIC8vIFRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sLiBPcHRpb25hbCBvbiB0aGUgdHlwZSBiZWNhdXNlIGEgUmVwb3J0Q29uZmlnXG4gIC8vIGxpdGVyYWwgbmVlZCBub3QgY2FycnkgaXQ7IHRoZSBBUEkgYWx3YXlzIHNlbmRzIGl0LCByZXNvbHZlZC5cbiAgZ3JvdXBCeT86IFJlcG9ydEdyb3VwQnk7XG4gIC8vIFJlc29sdmVkIGJ5IHRoZSBBUEkgbGlrZSBncm91cEJ5LlxuICBoZWFkZXJGb290ZXI/OiBSZXBvcnRIZWFkZXJGb290ZXI7XG59XG5cbi8vIFRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sIOKAlCB0aGUgb25lIHN3aXRjaCB0aGF0IHJlLWJ1Y2tldHMgZXZlcnlcbi8vIHRpbWUtc2VyaWVzIGNoYXJ0IG9uIHRoZSByZXBvcnQgYmV0d2VlbiBkYXksIHdlZWssIG1vbnRoLCBxdWFydGVyIGFuZCB5ZWFyLlxuLy9cbi8vIEl0IGlzIE5PVCBhIGZpbHRlcjogYSBmaWx0ZXIgbmFycm93cyB3aGljaCByb3dzIGFyZSBjb3VudGVkLCB0aGlzIGNoYW5nZXMgaG93XG4vLyB0aGUgc3Vydml2aW5nIHJvd3MgYXJlIGJ1Y2tldGVkLiBJdCBzaGFyZXMgdGhlIHJlcG9ydCdzIGZpbHRlciBiYXIgYmVjYXVzZVxuLy8gdGhhdCBpcyB0aGUgb25lIHJvdyBvZiBjb250cm9scyBhIHZpZXdlciByZWFkcyBhIHJlcG9ydCB0aHJvdWdoIOKAlCB0aGVcbi8vIHNlcGFyYXRpb24gdGhhdCBtYXR0ZXJzIGlzIGluIHRoZSBtb2RlbCwgbm90IGluIHdoZXJlIHRoZSBjb250cm9sIGlzIHBhaW50ZWQuXG4vL1xuLy8gQWx3YXlzIGFycml2ZXMgUkVTT0xWRUQgKHRoZSBiYWNrZW5kIGZpbGxzIGFuIGFic2VudCBvciBwYXJ0aWFsIHN0b3JlZCBibG9ja1xuLy8gaW4gZnJvbSBpdHMgb3duIGRlZmF1bHRzKSwgc28gdGhlcmUgaXMgbm90aGluZyB0byBkZWZhdWx0IGhlcmUg4oCUIHJlbmRlciB3aGF0XG4vLyB5b3UgYXJlIGdpdmVuLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRHcm91cEJ5IHtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgZ3JhbnVsYXJpdGllczogQ2hhcnRHcmFudWxhcml0eVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFN0eWxlcyB7XG4gIGhlYWRpbmc/OiB7IHNpemU/OiBudW1iZXIgfTtcbn1cblxuLy8gQ29udGVudCBwYWRkaW5nIGFyb3VuZCBhIGNvbXBvbmVudCdzIGJvZHksIGluIElOQ0hFUyAodGhlIGdlb21ldHJ5IHVuaXQpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRQYWRkaW5nIHtcbiAgdG9wPzogbnVtYmVyO1xuICByaWdodD86IG51bWJlcjtcbiAgYm90dG9tPzogbnVtYmVyO1xuICBsZWZ0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFBhZ2Uge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmcgfCBudWxsO1xuICBvcmRlcjogbnVtYmVyO1xuICAvLyBUaGUgcGFnZSBvcHRzIG91dCBvZiB0aGUgcmVwb3J0J3MgaGVhZGVyIGFuZCBmb290ZXIgKGEgdGl0bGUgcGFnZSkuXG4gIG1hc3RlckhpZGRlbjogYm9vbGVhbjtcbiAgY29tcG9uZW50czogUmVwb3J0Q29tcG9uZW50W107XG59XG5cbi8vICd0ZXh0JyBpcyBhdXRob3JlZCByaWNoIHRleHQgd2l0aCBubyBxdWVyeSBiZWhpbmQgaXQg4oCUIGl0IG5ldmVyIGZldGNoZXMgZGF0YS5cbmV4cG9ydCB0eXBlIFJlcG9ydENvbXBvbmVudFR5cGUgPSAnY2hhcnQnIHwgJ2xpc3QnIHwgJ2twaScgfCAndGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50IHtcbiAgaWQ6IG51bWJlcjtcbiAgdHlwZTogUmVwb3J0Q29tcG9uZW50VHlwZTtcbiAgdGl0bGU6IHN0cmluZyB8IG51bGw7XG4gIC8vIEdlb21ldHJ5IGluIElOQ0hFUy4gRnJlZWZvcm06IGFic29sdXRlIHBvc2l0aW9uIG9uIHRoZSBwYWdlIGNhbnZhcy5cbiAgLy8gRmxvdzogb25seSBmbG93V2lkdGgvb3JkZXIgYXBwbHk7IHgveSBhcmUgcmVtZW1iZXJlZCBmb3IgYSBzd2l0Y2ggYmFjayB0b1xuICAvLyBmcmVlZm9ybS5cbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHc6IG51bWJlcjtcbiAgaDogbnVtYmVyO1xuICAvLyBIZWlnaHQgbW9kZSwgREVSSVZFRCBmcm9tIHR5cGUgc2VydmVyLXNpZGUgKG5vdCBzdG9yZWQsIHJlYWQtb25seSk6IGxpc3RzXG4gIC8vIGFuZCBLUEkgdGlsZXMgYXJlIGF1dG8gKHRoZSBib3ggc2l6ZXMgdG8gaXRzIGNvbnRlbnQsIGBoYCBpZ25vcmVkKTsgY2hhcnRzXG4gIC8vIGFyZSBhbHdheXMgZml4ZWQgKHVzZSBgaGApIHNvIHRoZXkgZml0IHRoZSBib3ggYW5kIG5ldmVyIG92ZXJmbG93LlxuICBhdXRvSGVpZ2h0OiBib29sZWFuO1xuICAvLyBGbG93IGxheW91dDogJSBvZiB0aGUgcGFnZSBjb250ZW50IHdpZHRoIHRoaXMgY29tcG9uZW50IHRha2VzLlxuICBmbG93V2lkdGg6IG51bWJlcjtcbiAgLy8gRmxvdyBsYXlvdXQgb3JkZXJpbmcuXG4gIG9yZGVyOiBudW1iZXI7XG4gIC8vIFRoZSBzdG9yZWQgU1FMIG9mIGEgbGVnYWN5IHNxbC1tb2RlIGNvbXBvbmVudC4gTlVMTCBmb3IgYSBkZXJpdmVkIG9uZSxcbiAgLy8gd2hvc2Ugc3RhdGVtZW50IGRvZXMgbm90IGV4aXN0IHVudGlsIGl0cyBkb2N1bWVudCBpcyBjb21waWxlZCDigJQgdGhlIFNRTCB0YWJcbiAgLy8gZmV0Y2hlcyB0aGF0IHNlcGFyYXRlbHkgKHNlZSBSZXBvcnRDb21wb25lbnRTcWwpLlxuICBzcWw6IHN0cmluZyB8IG51bGw7XG4gIGNvbmZpZzogQ2hhcnRDb25maWcgJiBMaXN0Q29uZmlnICYgS3BpQ29uZmlnICYgVGV4dENvbmZpZyAmIENvbXBvbmVudExheW91dENvbmZpZyAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmaWx0ZXJzOiBSZXBvcnRGaWx0ZXJbXTtcbn1cblxuLy8gV2hhdCB0aGUgU1FMIHRhYiBmZXRjaGVzOiB0aGUgc3RhdGVtZW50IGEgY29tcG9uZW50IHJ1bnMuXG4vL1xuLy8gRm9yIGEgZGVyaXZlZCBjb21wb25lbnQgYGJhc2VsaW5lYCBpcyB0cnVlIGFuZCBgc3FsYCBpcyB3aGF0IGl0cyBkb2N1bWVudFxuLy8gY29tcGlsZXMgdG8gd2l0aCBOTyB2aWV3ZXIgc3RhdGUg4oCUIG5vIGZpbHRlcnMsIFVUQywgdGhlIGF1dGhvcmVkIGdyYWluLiBUaGVcbi8vIG51bWJlcnMgb24gc2NyZWVuIGNvbWUgZnJvbSB0aGF0IHN0YXRlbWVudCBwbHVzIHdoYXRldmVyIHRoZSB2aWV3ZXIgcGlja2VkLFxuLy8gc28gdGhlIHR3byBjYW4gbGVnaXRpbWF0ZWx5IGRpZmZlciBhbmQgdGhlIHRhYiBzYXlzIHNvIHJhdGhlciB0aGFuIGltcGx5aW5nXG4vLyB0aGV5IG1hdGNoLlxuLy9cbi8vIGBlcnJvcmAgaXMgbm90IGEgZmFpbHVyZSBvZiB0aGUgcmVxdWVzdDogYSBkb2N1bWVudCB0aGF0IG5vIGxvbmdlciBjb21waWxlc1xuLy8gaXMgcHJlY2lzZWx5IHdoYXQgc29tZW9uZSBvcGVucyB0aGlzIHRhYiB0byBkaXNjb3Zlciwgc28gaXQgYXJyaXZlcyBhcyBhXG4vLyBtZXNzYWdlIHRvIHJlbmRlciB3aXRoIGBlcnJvclR5cGVgIG5hbWluZyB3aGljaCBraW5kICgnc3RhbGUtcXVlcnknIG9yXG4vLyAnc2Vuc2l0aXZlLWNvbHVtbicpLCBhbmQgYHNxbGAgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50U3FsIHtcbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBvcmlnaW46ICdzcWwnIHwgJ2RicScgfCAnZGVyaXZlZCc7XG4gIGJhc2VsaW5lOiBib29sZWFuO1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3JUeXBlOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIHRleHQgYmxvY2sncyBjb250ZW50OiBhbiBodG1sIGZyYWdtZW50IHRoZSBzZXJ2ZXIgaGFzIGFscmVhZHkgcmVidWlsdCBmcm9tXG4vLyBhbiBhbGxvd2xpc3QsIHdoaWNoIG1heSBjYXJyeSB7e3BhZ2UubnVtYmVyfX0sIHt7cGFnZS5uYW1lfX0gYW5kXG4vLyB7e3JlcG9ydC5uYW1lfX0gdG9rZW5zIChzZWUgdGV4dC50cykuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDb25maWcge1xuICBodG1sPzogc3RyaW5nO1xufVxuXG4vLyBDcm9zcy10eXBlIGxheW91dC9zdHlsZSBrZXlzIGNhcnJpZWQgaW4gYSBjb21wb25lbnQncyBjb25maWcgKGFsb25nc2lkZSB0aGVcbi8vIHR5cGUtc3BlY2lmaWMgY2hhcnQvbGlzdC9rcGkga2V5cykuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudExheW91dENvbmZpZyB7XG4gIHBhZGRpbmc/OiBDb21wb25lbnRQYWRkaW5nO1xufVxuXG4vLyBUaGUgcHJlc2VudGF0aW9uIHNldHRpbmdzIGEgY29tcG9uZW50J3Mgc2V0dGluZ3MgZGlhbG9nIGVkaXRzLiBOZWl0aGVyIGZpZWxkXG4vLyBpcyBwYXJ0IG9mIHdoYXQgdGhlIGNvbXBvbmVudCBxdWVyaWVzLCBzbyBhIGNoYW5nZSB0byB0aGVtIHJlcGFpbnRzIHdpdGhvdXRcbi8vIHJlLXJ1bm5pbmcgYW55dGhpbmcuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFNldHRpbmdzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgcGFkZGluZzogQ29tcG9uZW50UGFkZGluZztcbn1cblxuLy8gV2hlcmUgYSBjaGFydCdzIGxlZ2VuZCBzaXRzIHJlbGF0aXZlIHRvIHRoZSBwbG90LCBvciAnaGlkZGVuJyB0byBkcm9wIGl0LlxuZXhwb3J0IHR5cGUgTGVnZW5kUG9zaXRpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdoaWRkZW4nO1xuXG5leHBvcnQgdHlwZSBDaGFydEdyYW51bGFyaXR5ID0gJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInO1xuXG4vLyBIb3cgZWFjaCBncmFudWxhcml0eSByZWFkcyBpbiB0aGUgZ3JvdXAtYnkgY29udHJvbCBhbmQgb24gYW4gZXhwb3J0IGNvdmVyXG4vLyBzaGVldC4gV0hJQ0ggb2YgdGhlbSBhIGdpdmVuIHJlcG9ydCBvZmZlcnMgY29tZXMgZnJvbSBpdHMgUmVwb3J0R3JvdXBCeTtcbi8vIHRoaXMgaXMgb25seSB0aGUgbmFtaW5nLiAneWVhcicgcmVhZHMgYXMgXCJBbm51YWxseVwiLlxuZXhwb3J0IGNvbnN0IEdSQU5VTEFSSVRZX09QVElPTlM6IHsgdmFsdWU6IENoYXJ0R3JhbnVsYXJpdHk7IG5hbWU6IHN0cmluZyB9W10gPSBbXG4gIHsgdmFsdWU6ICdkYXknLCBuYW1lOiAnRGF5JyB9LFxuICB7IHZhbHVlOiAnd2VlaycsIG5hbWU6ICdXZWVrJyB9LFxuICB7IHZhbHVlOiAnbW9udGgnLCBuYW1lOiAnTW9udGgnIH0sXG4gIHsgdmFsdWU6ICdxdWFydGVyJywgbmFtZTogJ1F1YXJ0ZXInIH0sXG4gIHsgdmFsdWU6ICd5ZWFyJywgbmFtZTogJ0FubnVhbGx5JyB9LFxuXTtcblxuLy8gVGhlIGNoYXJ0IHR5cGVzIHRoYXQgcGxvdCBzZXJpZXMgYWdhaW5zdCBhIGNhdGVnb3J5IGFuZCBhIHZhbHVlIGF4aXMg4oCUIGV2ZXJ5XG4vLyBjaGFydCB0eXBlIGV4Y2VwdCB0aGUgcGllIGZhbWlseSwgd2hpY2ggaGFzIG5vIGF4ZXMgZm9yIHNlcmllcyB0byBzaGFyZS5cbmV4cG9ydCB0eXBlIEF4aXNDaGFydFR5cGUgPSAnYmFyJyB8ICdsaW5lJyB8ICdhcmVhJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGFydENvbmZpZyB7XG4gIGNoYXJ0VHlwZT86IEF4aXNDaGFydFR5cGUgfCAncGllJyB8ICdkb251dCc7XG4gIC8vIEZvciBraW5kICd0aW1lJywgdGhlIHNlcnZlciBidWNrZXRzIHRoZSByYXcgZGF0ZXRpbWUgY29sdW1uIHRvIGBncmFudWxhcml0eWBcbiAgLy8gaW4gdGhlIHJlcG9ydCdzIHRpbWV6b25lICh0aGUgU1FMIGV4cG9zZXMgdGhlIHJhdyBjb2x1bW4sIHVuYnVja2V0ZWQpLlxuICB4QXhpcz86IHsgY29sdW1uOiBzdHJpbmc7IGtpbmQ/OiAnY2F0ZWdvcnknIHwgJ3RpbWUnOyBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHk7IGxhYmVsPzogc3RyaW5nIH07XG4gIG1lYXN1cmVzPzogQ2hhcnRNZWFzdXJlW107XG4gIHNwbGl0Qnk/OiB7IGNvbHVtbjogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9O1xuICAvLyBTaW5nbGUtZGltZW5zaW9uIGJhciBjaGFydHMgb25seTogY29sb3IgZWFjaCBiYXIgYnkgaXRzIG93biBjYXRlZ29yeSBhbmRcbiAgLy8gc2hvdyBhIGxlZ2VuZCwgV0lUSE9VVCBzcGxpdHRpbmcgaW50byBtdWx0aXBsZSBzZXJpZXMgKHdoaWNoIHNsaXZlcnMgdGhlXG4gIC8vIGJhcnMpLiB2MSBleHBlY3RzIGNvbG9yQnkuY29sdW1uID09PSB4QXhpcy5jb2x1bW4uIElnbm9yZWQgd2hlbiBzcGxpdEJ5IGlzXG4gIC8vIHNldCBvciB0aGUgY2hhcnQgaXNuJ3QgYSBiYXIgY2hhcnQuXG4gIGNvbG9yQnk/OiB7IGNvbHVtbjogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9O1xuICBvcmllbnRhdGlvbj86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XG4gIHN0YWNrZWQ/OiBib29sZWFuO1xuICBsZWdlbmQ/OiBMZWdlbmRQb3NpdGlvbjtcbiAgc29ydD86IFJlcG9ydFNvcnQ7XG4gIGxpbWl0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0TWVhc3VyZSB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBhZ2dyZWdhdGlvbj86ICdzdW0nIHwgJ2NvdW50JyB8ICdhdmcnIHwgJ21pbicgfCAnbWF4JztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8vIERyYXdzIHRoaXMgbWVhc3VyZSdzIHNlcmllcyBhcyBhIGRpZmZlcmVudCB0eXBlIGZyb20gdGhlIGNoYXJ0J3Mgb3duXG4gIC8vIGNoYXJ0VHlwZSDigJQgY291bnRzIGFzIGJhcnMgd2l0aCBhIHJhdGUgYXMgYSBsaW5lIG92ZXIgdGhlbSBpcyBhIGNvbWJvXG4gIC8vIGNoYXJ0LiBPbWl0dGVkLCB0aGUgc2VyaWVzIHRha2VzIHRoZSBjaGFydCdzIHR5cGUuIEF4aXMgY2hhcnRzIG9ubHkgKGEgcGllXG4gIC8vIGlnbm9yZXMgaXQpLCBhbmQgZXZlcnkgc2VyaWVzIHNoYXJlcyB0aGUgY2hhcnQncyBvbmUgdmFsdWUgYXhpcy5cbiAgdHlwZT86IEF4aXNDaGFydFR5cGU7XG4gIC8vIEFwcGxpZWQgdG8gYSBLUEkncyBzaW5nbGUgdmFsdWUgb25seSDigJQgaXQgaXMgYWdncmVnYXRlZCBzZXJ2ZXItc2lkZSBhZnRlclxuICAvLyB0aGUgU1FMIHJ1bnMsIHNvIHRoZSBTUUwgY2Fubm90IGZvcm1hdCBpdC4gQ2hhcnQgbWVhc3VyZXMgc3RheSBudW1lcmljLlxuICBmb3JtYXQ/OiAnbnVtYmVyJyB8ICdwZXJjZW50JyB8ICdjdXJyZW5jeSc7XG4gIC8vIEhvdyBtYW55IGRlY2ltYWwgcGxhY2VzIHRoZSB2YWx1ZSBpcyBzaG93biB0by4gRml4ZWQgcmF0aGVyIHRoYW4gbWF4aW11bTpcbiAgLy8gYSBjb2x1bW4gb2YgcmF0ZXMgaXMgdW5yZWFkYWJsZSB3aGVuIGVhY2ggb25lIHNob3dzIGEgZGlmZmVyZW50IG51bWJlciBvZlxuICAvLyBkZWNpbWFscy4gT21pdHRlZCBsZWF2ZXMgdGhlIGxvY2FsZSdzIG93biBkZWZhdWx0LCB3aGljaCBpcyB3aGF0IGV2ZXJ5XG4gIC8vIHJlcG9ydCBhdXRob3JlZCBiZWZvcmUgdGhpcyBkaWQuXG4gIC8vXG4gIC8vIEl0IGNhbm5vdCBiZSBhcHBsaWVkIGluIHRoZSBTUUw6IHRoZSB2YWx1ZSBpcyBhZ2dyZWdhdGVkIGFmdGVyIHRoZSByZXBvcnQnc1xuICAvLyBmaWx0ZXJzIHJ1biwgc28gcHJlLXJvdW5kaW5nIHdvdWxkIGJyZWFrIGxpdmUgcmUtZmlsdGVyaW5nIGJ5IGRhdGUgcmFuZ2Ugb3JcbiAgLy8gcGFydG5lci5cbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb25maWcge1xuICAvLyBBIGxpc3QgY2VsbCByZW5kZXJzIHRoZSB2YWx1ZSB2ZXJiYXRpbTogcGVyY2VudCBzaWducywgY3VycmVuY3kgc3ltYm9scyxcbiAgLy8gdGhvdXNhbmRzIHNlcGFyYXRvcnMgYW5kIGRlY2ltYWwgcGxhY2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgY29tcG9uZW50J3NcbiAgLy8gU1FMICh0aGUgYmFja2VuZCByZWplY3RzIGFueSBvdGhlciBgZm9ybWF0YCBoZXJlKS4gYGRhdGVgIGlzIHRoZSBleGNlcHRpb25cbiAgLy8g4oCUIGEgZGF0ZSBjb2x1bW4gc3RheXMgYSBSQVcgdGltZXN0YW1wIHNvIHRoZSByZXBvcnQgdGltZXpvbmUgYW5kIGl0c1xuICAvLyBkYXRlUmFuZ2UgZmlsdGVycyBrZWVwIHdvcmtpbmcsIGFuZCB0aGUgdmlld2VyIGxvY2FsaXNlcyBpdCBhdCByZW5kZXIuXG4gIC8vIEEgU1FMLWZvcm1hdHRlZCBjb2x1bW4gaXMgdGV4dCwgc28gaXQgbmFtZXMgYHNvcnRDb2x1bW5gOiB0aGUgcmF3IG51bWVyaWNcbiAgLy8gYWxpYXMgdGhlIHF1ZXJ5IGFsc28gb3V0cHV0cywgd2hpY2ggdGhlIHNlcnZlciBvcmRlcnMgYnkgaW5zdGVhZC5cbiAgY29sdW1ucz86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nOyBmb3JtYXQ/OiAnZGF0ZSc7IHNvcnRDb2x1bW4/OiBzdHJpbmcgfVtdO1xuICAvLyBBIGNyb3NzLXRhYjogYHJvd0J5YCBzdGF5cyBkb3duIHRoZSBzaWRlIGFuZCBldmVyeSB2YWx1ZSBvZiBgcGl2b3RCeWBcbiAgLy8gYmVjb21lcyBhIGNvbHVtbi4gVGhlIHR3byBhcmUgc2V0IHRvZ2V0aGVyLCBgY29sdW1uc2AgaXMgb21pdHRlZCAodGhlXG4gIC8vIGJhY2tlbmQgcmVqZWN0cyBhdXRob3JpbmcgYm90aCksIGFuZCB0aGUgY29sdW1uIHNldCBhcnJpdmVzIHdpdGggdGhlIHJvd3NcbiAgLy8gaW4gQ29tcG9uZW50RGF0YS5jb2x1bW5zIGJlY2F1c2Ugb25seSB0aGUgcmVzdWx0IGtub3dzIHRoZSBwaXZvdCB2YWx1ZXMuXG4gIHJvd0J5PzogeyBjb2x1bW46IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfTtcbiAgcGl2b3RCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLcGlDb25maWcge1xuICBtZWFzdXJlPzogQ2hhcnRNZWFzdXJlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNvcnQge1xuICBjb2x1bW46IHN0cmluZztcbiAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCB0eXBlIFJlcG9ydEZpbHRlclR5cGUgPSAnZGF0ZVJhbmdlJyB8ICdzZWxlY3QnIHwgJ2tleXdvcmQnO1xuXG4vLyBXaGVyZSBhIGZpbHRlciBncm91cCdzIGNvbnRyb2wgaXMgZXhwb3NlZC4gQSBncm91cCBjYW4gYmUgc2hvd24gb24gaXRzXG4vLyBjb21wb25lbnRzLCBpbiB0aGUgcmVwb3J0IGJhciwgb3IgQk9USCBhdCBvbmNlICh0aGUgdHdvIGFyZSBpbmRlcGVuZGVudFxuLy8gdG9nZ2xlcyBpbiB0aGUgVUkpOyBhIGNvbHVtbiB3aXRoIG5laXRoZXIgZXhwb3NlZCBzaW1wbHkgaGFzIG5vIGZpbHRlci5cbmV4cG9ydCB0eXBlIFJlcG9ydEZpbHRlckxldmVsID0gJ2NvbXBvbmVudCcgfCAncmVwb3J0JyB8ICdib3RoJztcblxuLy8gT25lIGZpbHRlcmFibGUgb3V0cHV0IGNvbHVtbiBvZiBhIGNvbXBvbmVudCdzIFNRTCwgd2l0aCB0aGUgZmlsdGVyIGludGVyZmFjZVxuLy8gSU5GRVJSRUQgZnJvbSBpdHMgZGF0YSAodGhlIGh1bWFuIG5ldmVyIHBpY2tzIHRoZSBpbnRlcmZhY2Ug4oCUIGl0IGZvbGxvd3MgdGhlXG4vLyBjb2x1bW4ncyB0eXBlKS4gRHJpdmVzIHRoZSBGaWx0ZXJzIHRhYiBsaXN0aW5nLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXJhYmxlQ29sdW1uIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHR5cGU6IFJlcG9ydEZpbHRlclR5cGU7XG59XG5cbi8vIEdyb3VuZCB0cnV0aDogb25lIGZpbHRlcmFibGUgb3V0cHV0IGNvbHVtbiBPTiBvbmUgY29tcG9uZW50J3MgU1FMLiBBbHdheXMgYVxuLy8gbWVtYmVyIG9mIGEgZmlsdGVyIGdyb3VwIOKAlCB0aGUgdW5pdCB0aGF0IGxpbmtzIGVxdWl2YWxlbnQgZmlsdGVycyBhY3Jvc3Ncbi8vIGNvbXBvbmVudHMgYW5kIGRlY2lkZXMgd2hlcmUgdGhlIGNvbnRyb2wgcmVuZGVycyAoY29tcG9uZW50IHZzIHJlcG9ydCBiYXIpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRJZDogbnVtYmVyO1xuICBmaWx0ZXJHcm91cElkOiBudW1iZXI7XG4gIGZpbHRlckNvbHVtbjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgaGFzT3B0aW9uczogYm9vbGVhbjtcbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLy8gT25lIGNob2ljZSBpbiBhIHNlbGVjdCBmaWx0ZXIncyBvcHRpb24gbGlzdC4gVGhlIHZhbHVlIGlzIHdoYXQgdGhlIGZpbHRlclxuLy8gbWF0Y2hlcyBvbiBhbmQgZ2V0cyBzdG9yZWQgaW4gYSBzYXZlZCBkZWZhdWx0IOKAlCBmb3IgYW4gZW50aXR5IHRoYXQgaXMgaXRzXG4vLyBzdGFibGUgaWQsIG5ldmVyIGl0cyBuYW1lLCBzbyByZW5hbWluZyB0aGUgZW50aXR5IG1vdmVzIHRoZSBsYWJlbCB3aXRob3V0XG4vLyBicmVha2luZyB0aGUgZGVmYXVsdC4gVGhlIGxhYmVsIGlzIG9ubHkgZXZlciB3aGF0IHRoZSB2aWV3ZXIgcmVhZHMuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlck9wdGlvbiB7XG4gIHZhbHVlOiB1bmtub3duO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlckdyb3VwIHtcbiAgaWQ6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIHR5cGU6IFJlcG9ydEZpbHRlclR5cGU7XG4gIGxldmVsOiBSZXBvcnRGaWx0ZXJMZXZlbDtcbiAgb3JkZXI6IG51bWJlcjtcbiAgY29uZmlnOiB7IGRlZmF1bHQ/OiBGaWx0ZXJHcm91cERlZmF1bHQgfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmaWx0ZXJzOiBSZXBvcnRGaWx0ZXJbXTtcbn1cblxuLy8gQSBmaWx0ZXIgZ3JvdXAncyBhdXRob3JlZCBkZWZhdWx0IOKAlCB0aGUgdmFsdWUgdGhhdCBzZWVkcyB0aGUgcmVwb3J0IGJhciBvblxuLy8gZXZlcnkgb3Blbi4gU2hhcGUgZm9sbG93cyB0aGUgZ3JvdXAncyB0eXBlOiBkYXRlUmFuZ2UgdXNlcyBzdGFydC9lbmQgKGEgZml4ZWRcbi8vIGNhbGVuZGFyLWRheSByYW5nZSkgb3IgYSByZWxhdGl2ZSBwcmVzZXQ7IHNlbGVjdCB1c2VzIHZhbHVlczsga2V5d29yZCB1c2VzXG4vLyB2YWx1ZS5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyR3JvdXBEZWZhdWx0IHtcbiAgLy8gZGF0ZVJhbmdlIHJlbGF0aXZlIHByZXNldCwgcmVzb2x2ZWQgYWdhaW5zdCBcIm5vd1wiIG9uIGV2ZXJ5IG9wZW4uIE9uZSBvZjpcbiAgLy8gdGhpc1dlZWssIGxhc3RXZWVrLCBsYXN0N0RheXMsIGxhc3QzMERheXMsIGxhc3QzTW9udGhzLCBsYXN0Nk1vbnRocyxcbiAgLy8gbGFzdDEyTW9udGhzLCB0aGlzTW9udGgsIHRoaXNRdWFydGVyLCB0aGlzWWVhci95ZWFyVG9EYXRlLiBUaGUgd2VlayBvbmVzXG4gIC8vIGFyZSB3aG9sZSBjYWxlbmRhciBkYXlzLCBTdW5kYXkgdG8gU2F0dXJkYXksIGluIHRoZSByZXBvcnQncyB0aW1lem9uZS5cbiAgcmVsYXRpdmU/OiBzdHJpbmc7XG4gIHN0YXJ0Pzogc3RyaW5nOyAvLyBkYXRlUmFuZ2UgZml4ZWQgc3RhcnQgKHl5eXktTU0tZGQpXG4gIGVuZD86IHN0cmluZzsgLy8gZGF0ZVJhbmdlIGZpeGVkIGVuZCAoeXl5eS1NTS1kZClcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3QgZGVmYXVsdCBwaWNrZWQgdmFsdWVzXG4gIHZhbHVlPzogc3RyaW5nOyAvLyBrZXl3b3JkIGRlZmF1bHQgdGV4dFxufVxuXG4vLyBUaGUgc2Vzc2lvbiB2YWx1ZSBvZiBhIGZpbHRlciBncm91cCAobmV2ZXIgcGVyc2lzdGVkKTogc2hhcGUgZGVwZW5kcyBvbiB0aGVcbi8vIGdyb3VwJ3MgdHlwZS5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyR3JvdXBWYWx1ZSB7XG4gIHN0YXJ0PzogRGF0ZSB8IHN0cmluZyB8IG51bGw7IC8vIGRhdGVSYW5nZVxuICBlbmQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDsgLy8gZGF0ZVJhbmdlXG4gIHZhbHVlcz86IHVua25vd25bXTsgLy8gc2VsZWN0XG4gIHZhbHVlPzogc3RyaW5nOyAvLyBrZXl3b3JkXG59XG5cbi8vIE9uZSByZXNvbHZlZCBmaWx0ZXIgc2VudCB3aXRoIGEgY29tcG9uZW50J3MgZGF0YSByZXF1ZXN0LlxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZEZpbHRlclZhbHVlIHtcbiAgZmlsdGVySWQ6IG51bWJlcjtcbiAgc3RhcnQ/OiBzdHJpbmc7XG4gIGVuZD86IHN0cmluZztcbiAgdmFsdWVzPzogdW5rbm93bltdO1xuICB2YWx1ZT86IHN0cmluZztcbn1cblxuLy8gUGVyLWNvbXBvbmVudCBpbnRlcmFjdGlvbiBzdGF0ZSBzZW50IHdpdGggdGhlIGRhdGEgcmVxdWVzdDogbGlzdHMgc2VuZFxuLy8gc29ydC9wYWdpbmc7IHRpbWUtc2VyaWVzIGNoYXJ0cyBzZW5kIHRoZSBncmFpbiBwaWNrZWQgb24gdGhlIHJlcG9ydCdzIGdyb3VwLWJ5XG4vLyBjb250cm9sLCB3aGljaCBvdmVycmlkZXMgdGhlIGF1dGhvcmVkIGdyYW51bGFyaXR5IGZvciB0aGF0IHJlcXVlc3Qgb25seS4gVGhlXG4vLyB3aXJlIGtleSBzdGF5cyBgZnJlcXVlbmN5YCDigJQgaXQgaXMgdGhlIGJ1Y2tldGluZyBmcmVxdWVuY3kgdGhlIHNlcnZlciBhcHBsaWVzLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhU3RhdGUge1xuICBzb3J0PzogUmVwb3J0U29ydDtcbiAgcGFnZT86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIGZyZXF1ZW5jeT86IENoYXJ0R3JhbnVsYXJpdHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RGF0YSB7XG4gIGNvbHVtbnM6IHN0cmluZ1tdO1xuICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICBwYWdpbmc/OiB7IHRvdGFsOiBudW1iZXI7IHBhZ2U6IG51bWJlcjsgcGFnZVNpemU6IG51bWJlciB9O1xuICB0cnVuY2F0ZWQ6IGJvb2xlYW47XG4gIC8vIFRoZSBlZmZlY3RpdmUgdGltZSBidWNrZXQgdGhlIHJvd3Mgd2VyZSBncm91cGVkIGludG8gKGFmdGVyIGFueSBncm91cC1ieVxuICAvLyBvdmVycmlkZSksIG9yIG51bGwgZm9yIGEgbm9uLXRpbWUgYXhpcy4gRHJpdmVzIHRoZSBjb21wYWN0IHgtYXhpcyBsYWJlbHMuXG4gIGdyYW51bGFyaXR5PzogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TGlzdEl0ZW0ge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIG1vZGlmeURhdGU6IHN0cmluZztcbiAgc3RhdGU/OiBSZXBvcnRTdGF0ZTtcbiAgLy8gVGhlIGZvbGRlciB0aGUgcmVwb3J0IGlzIGZpbGVkIHVuZGVyLiBudWxsIGlzIGEgcmVhbCwgY29tbW9uIHZhbHVlIOKAlCB0aGVcbiAgLy8gcmVwb3J0IHNpdHMgYXQgdGhlIHJvb3Qgb2YgdGhlIGxpc3RpbmcgdHJlZSBhbG9uZ3NpZGUgdGhlIGZvbGRlcnMuXG4gIC8vXG4gIC8vIE9wdGlvbmFsIGxpa2UgYHN0YXRlYCBiZXNpZGUgaXQ6IHRoZSBiYWNrZW5kIGFsd2F5cyBzZW5kcyBpdCwgYnV0IG1ha2luZyBpdFxuICAvLyByZXF1aXJlZCBpcyBhIGJyZWFraW5nIHR5cGUgY2hhbmdlIGZvciBldmVyeSBjb25zdW1lciBob2xkaW5nIGFcbiAgLy8gUmVwb3J0TGlzdEl0ZW0gbGl0ZXJhbCAoZml4dHVyZXMsIG1vY2tzKSBhbmQgYnV5cyBub3RoaW5nIOKAlCB0aGUgbGlzdGluZ1xuICAvLyByZWFkcyBpdCBhcyBgPz8gbnVsbGAgZWl0aGVyIHdheS5cbiAgcmVwb3J0Rm9sZGVySWQ/OiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBPbmUgZm9sZGVyIGluIHRoZSBsaXN0aW5nIHRyZWUg4oCUIGFuIGF1ZGllbmNlIGJ1Y2tldCAoXCJNYW5hZ2VtZW50XCIsXG4vLyBcIk9wZXJhdGlvbnNcIikgcmVwb3J0cyBhcmUgZmlsZWQgaW50by4gRm9sZGVycyBuZXN0IHZpYSBwYXJlbnRSZXBvcnRGb2xkZXJJZDtcbi8vIHJlcG9ydHMgbmV2ZXIgZG8sIHNvIHRoZSB0cmVlJ3Mgb25seSBicmFuY2ggbm9kZXMgYXJlIGZvbGRlcnMuXG4vL1xuLy8gYHN0YXRlYCBpcyB0aGUgZm9sZGVyJ3MgT1dOIHN0YXRlLiBEZWxldGluZyBhIGZvbGRlciB3cml0ZXMgb25seSB0aGF0LCBhbmRcbi8vIGV2ZXJ5dGhpbmcgYmVsb3cgaXQgY291bnRzIGFzIGRlbGV0ZWQgYnkgcG9zaXRpb24g4oCUIHNlZSBSZXBvcnROb2RlLmRlbGV0ZWQuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZvbGRlciB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgcGFyZW50UmVwb3J0Rm9sZGVySWQ6IG51bWJlciB8IG51bGw7XG4gIHN0YXRlPzogUmVwb3J0U3RhdGU7XG59XG5cbi8vIEdFVCAvYXBpL3JlcG9ydHMgcmV0dXJucyBib3RoIGhhbHZlcyBmbGF0OyB0aGUgbGlzdGluZyBuZXN0cyB0aGVtIGl0c2VsZi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0VHJlZSB7XG4gIHJlcG9ydHM6IFJlcG9ydExpc3RJdGVtW107XG4gIGZvbGRlcnM6IFJlcG9ydEZvbGRlcltdO1xufVxuXG5leHBvcnQgZW51bSBSZXBvcnROb2RlVHlwZSB7XG4gIEZvbGRlciA9ICdmb2xkZXInLFxuICBSZXBvcnQgPSAncmVwb3J0Jyxcbn1cblxuLy8gT25lIG5vZGUgYXMgZnMtdHJlZSBzZWVzIGl0LiBGb2xkZXJzIGFuZCByZXBvcnRzIHNoYXJlIG9uZSBpZCBzcGFjZSBpbiB0aGVcbi8vIHZpZXcsIHNvIHRoZSBpZHMgYXJlIHByZWZpeGVkICgnZjoxMicgLyAncjozNCcpIOKAlCBgaWRgIGlzIHRoZSBvcmlnaW5hbCxcbi8vIHBlci10YWJsZSBpZCB0aGF0IHRoZSBBUEkgZW5kcG9pbnRzIHRha2UuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydE5vZGUge1xuICBrZXk6IHN0cmluZztcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBSZXBvcnROb2RlVHlwZTtcbiAgLy8gT25seSBldmVyIHBvcHVsYXRlZCBvbiBhIGZvbGRlcjsgYSByZXBvcnQgaXMgYWx3YXlzIGEgbGVhZi5cbiAgY2hpbGRyZW46IFJlcG9ydE5vZGVbXTtcbiAgLy8gUHJlc2VudCBvbiByZXBvcnQgbm9kZXMgb25seS5cbiAgcmVwb3J0PzogUmVwb3J0TGlzdEl0ZW07XG4gIC8vIFRoZSBub2RlJ3Mgb3duIHJvdyBpcyBkZWxldGVkLiBXaGF0IGVhcm5zIHRoZSBcIkRlbGV0ZWRcIiBjaGlwIOKAlCB0aGlzIGlzXG4gIC8vIHdoYXQgc29tZWJvZHkgYWN0dWFsbHkgZGVsZXRlZC5cbiAgc3RhdGVEZWxldGVkOiBib29sZWFuO1xuICAvLyBEZWxldGVkIGl0c2VsZiBPUiBhbnl3aGVyZSBiZWxvdyBhIGRlbGV0ZWQgZm9sZGVyLiBPbmx5IGV2ZXIgdHJ1ZSBpbiBTaG93XG4gIC8vIERlbGV0ZWQgbW9kZSAodGhlIGRlZmF1bHQgbGlzdGluZyBuZXZlciByZXR1cm5zIHN1Y2ggYSBub2RlKSwgYW5kIGl0IGlzIHdoYXRcbiAgLy8gc3dhcHMgdGhlIHJvdydzIGFjdGlvbnMgZm9yIFJlc3RvcmUuXG4gIGRlbGV0ZWQ6IGJvb2xlYW47XG59XG5cbi8vIFJlcG9ydHMgYW5kIGZvbGRlcnMgYXJlIGJvdGggc29mdC1kZWxldGFibGUuIEEgZGVsZXRlZCByZXBvcnQga2VlcHMgaXRzIHBhZ2VzXG4vLyBhbmQgY29tcG9uZW50czsgYSBkZWxldGVkIGZvbGRlciBrZWVwcyBldmVyeXRoaW5nIGZpbGVkIHVuZGVyIGl0LCB3aGljaCBsZWF2ZXNcbi8vIHRoZSBsaXN0aW5nIHdpdGggaXQgYW5kIGNvbWVzIGJhY2sgd2l0aCBpdC4gXCJTaG93IERlbGV0ZWRcIiBzaG93cyB0aGUgd2hvbGVcbi8vIHRyZWUsIGxpdmUgYW5kIGRlbGV0ZWQgdG9nZXRoZXIsIHNvIGFueSBvZiBpdCBjYW4gYmUgcmVzdG9yZWQgaW4gcGxhY2UuXG5leHBvcnQgZW51bSBSZXBvcnRTdGF0ZSB7XG4gIEFjdGl2ZSA9ICdhY3RpdmUnLFxuICBEZWxldGVkID0gJ2RlbGV0ZWQnLFxufVxuXG4vLyBUaGUgY2hhdCB0dXJuIGZsYWdzIHRoaXMgY29udGV4dCdzIGJhY2tlbmQgYWRkcyAoUmVwb3J0c1xcQWlWaWV3KS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q2hhdFJlc3BvbnNlIHtcbiAgcmVwb3J0Q2hhbmdlZD86IGJvb2xlYW47XG4gIHJlcG9ydFJlbmFtZWQ/OiBib29sZWFuO1xufVxuXG4vLyBPbmUgdmVyc2lvbiBvZiB0aGUgZ2xvYmFsIEFJIGtub3dsZWRnZSBkb2N1bWVudCDigJQgdGhlIG9wZXJhdG9yLWF1dGhvcmVkXG4vLyBtYXJrZG93biBhcHBlbmRlZCB0byB0aGUgcmVwb3J0IGFnZW50J3Mgc3lzdGVtIGluc3RydWN0aW9ucyBvbiBldmVyeSB0dXJuLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRJbnN0cnVjdGlvbiB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgY3VycmVudDogYm9vbGVhbjtcbiAgY3JlYXRlRGF0ZTogRGF0ZTtcbiAgbW9kaWZ5RGF0ZTogRGF0ZTtcbiAgYWNjb3VudElkOiBudW1iZXIgfCBudWxsO1xuICBhY2NvdW50TmFtZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gR0VUL1BVVCBpbnN0cnVjdGlvbnMgcGF5bG9hZDogdGhlIGN1cnJlbnQgdmVyc2lvbiAobnVsbCB1bnRpbCBvbmUgaXNcbi8vIGF1dGhvcmVkKSBwbHVzIHRoZSBmdWxsIGhpc3RvcnksIG5ld2VzdCBmaXJzdC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SW5zdHJ1Y3Rpb25zIHtcbiAgaW5zdHJ1Y3Rpb25zOiBSZXBvcnRJbnN0cnVjdGlvbiB8IG51bGw7XG4gIHZlcnNpb25zOiBSZXBvcnRJbnN0cnVjdGlvbltdO1xufVxuXG4vLyBUaGUgbGF0ZXN0IHNlbWFudGljLWRhdGFiYXNlIGJ1aWxkIChhbiBmZl9wcm9jZXNzZXMgcm93KSDigJQgZW5vdWdoIGZvciB0aGVcbi8vIHNldHRpbmdzIGRpYWxvZyB0byBzYXkgd2hhdCBzdGF0ZSB0aGUgYnVpbGQgaXMgaW4gYW5kIHdoZW4gaXQgbGFzdCByYW4uXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGQge1xuICBpZDogbnVtYmVyO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwZXJjZW50OiBudW1iZXIgfCBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgY3JlYXRlRGF0ZTogRGF0ZTtcbiAgc3RhcnREYXRlOiBEYXRlO1xuICBlbmREYXRlOiBEYXRlO1xufVxuXG4vLyBBIGJ1aWxkIHN0YWdlJ3Mgc3RhdGUgb24gdGhlIGVudGl0eSBzY29yZWJvYXJkOiAnZG9uZScgPSBidWlsdCwgJ21pc3NpbmcnID1cbi8vIHN0aWxsIG5lZWRzIGJ1aWxkaW5nIChhIG1pc3Npbmcgc3RhZ2UgaXMgdW5idWlsdCBjb250ZW50LCBuZXZlciBhbiBlcnJvcikuXG5leHBvcnQgdHlwZSBTZW1hbnRpY0J1aWxkU3RhZ2UgPSAnZG9uZScgfCAnbWlzc2luZyc7XG5cbi8vIE9uZSBlbnVtIGNvbHVtbiBvZiBhbiBlbnRpdHksIHdpdGggdGhlIGFsbG93ZWQgdmFsdWVzIHRoZSBidWlsZCBpbmxpbmVkLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRW51bSB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICB2YWx1ZXM6IHN0cmluZ1tdO1xufVxuXG4vLyBPbmUgZW50aXR5IHJvdyBvZiB0aGUgc2NvcmVib2FyZCAoYW4gZW50aXR5ID0gYSB0YWJsZSArIGEgbW9kZWwgKyBhXG4vLyBoYW5kbGVyKTogaXRzIHRhYmxlL3NoYXBlIGNvdW50cywgaW5saW5lZCBlbnVtIHZhbHVlcywgY29tcHV0ZWQgZmllbGRzLCBob3dcbi8vIG1hbnkgY29kZSBmdW5jdGlvbnMgd2VyZSBjYWNoZWQgKHNwbGl0IG1vZGVsIHZzIGhhbmRsZXIpLCBhbmQgdGhlIHBlci1zdGFnZVxuLy8gYnVpbHQvbWlzc2luZyBzdGF0ZS5cbi8vXG4vLyBgbW9kZWxgL2BoYW5kbGVyYCBhcmUgdGhlIGNsYXNzZXMgdGhlIGZ1bmN0aW9ucyB3ZXJlIHJlYWQgZnJvbSDigJQgd2hhdCBhXG4vLyByZWFkZXIgcmVjb2duaXplcyB0aGUgcm93IGJ5LCB3aGVyZSBga2V5YCBpcyB3aGF0IHRoZSByZXBvcnQgQUkgYWRkcmVzc2VzIGl0XG4vLyBieSBpbiBkZXNjcmliZV9lbnRpdHkgLyBjb21waWxlX3F1ZXJ5LlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRW50aXR5IHtcbiAga2V5OiBzdHJpbmc7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICBoYW5kbGVyOiBzdHJpbmcgfCBudWxsO1xuICBjb2x1bW5zOiBudW1iZXI7XG4gIHJlbGF0aW9uc2hpcHM6IG51bWJlcjtcbiAgZW51bXM6IFNlbWFudGljQnVpbGRFbnVtW107XG4gIGNvbXB1dGVkRmllbGRzOiBzdHJpbmdbXTtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBtb2RlbEZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgaGFuZGxlckZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgc3RhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBTZW1hbnRpY0J1aWxkU3RhZ2U+O1xufVxuXG4vLyBPbmUgc3RhbmRhbG9uZSBjb2RlIGNsYXNzIHRoZSBidWlsZCByZWFkOiBkb21haW4gbG9naWMgd2l0aCBubyB0YWJsZSBvZiBpdHNcbi8vIG93biAoYSBzdW1tYXJ5IG1vZGVsLCBhIGNhbGN1bGF0aW9uIHNlcnZpY2UpLiBUaGUgcmVwb3J0IEFJIHJlYWRzIGl0cyBjb2RlXG4vLyBleGFjdGx5IGxpa2UgYW4gZW50aXR5J3MsIGJ1dCBpdCBjYW4gbmV2ZXIgYmUgcXVlcmllZCDigJQgdGhlcmUgaXMgbm90aGluZyB0b1xuLy8gc2VsZWN0IGZyb20g4oCUIHNvIGl0IGNhcnJpZXMgbm8gdGFibGUsIGNvbHVtbnMgb3IgcmVsYXRpb25zaGlwcy5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZENsYXNzIHtcbiAga2V5OiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG59XG5cbi8vIFdoYXQgdGhlIGJ1aWxkIGRlY2lkZWQgYSBwaHlzaWNhbCB0YWJsZSBpcy4gRW50aXR5IGFuZCBqdW5jdGlvbiBhcmUgYm90aFxuLy8gcmVhY2hhYmxlIGJ5IHRoZSByZXBvcnQgQUkg4oCUIGFuIGVudGl0eSBkaXJlY3RseSwgYSBqdW5jdGlvbiB0aHJvdWdoIHRoZVxuLy8gbWFueS10by1tYW55IGl0IGJyaWRnZXMuIEV4Y2x1ZGVkIGlzIG5vdCByZWFjaGFibGUgYXQgYWxsLlxuZXhwb3J0IHR5cGUgU2VtYW50aWNUYWJsZUNsYXNzaWZpY2F0aW9uID0gJ2VudGl0eScgfCAnanVuY3Rpb24nIHwgJ2V4Y2x1ZGVkJztcblxuLy8gT25lIHBoeXNpY2FsIHRhYmxlIGFzIHRoZSBidWlsZCBjbGFzc2lmaWVkIGl0LiBgcmVhc29uYCBhbnN3ZXJzIGEgc2luZ2xlXG4vLyBxdWVzdGlvbiDigJQgd2h5IGNhbid0IHRoZSByZXBvcnQgQUkgc2VlIHRoaXMgdGFibGU/IOKAlCBhbmQgaXMgbnVsbCB3aGVuIGl0IGNhbi5cbi8vIEEganVuY3Rpb24gd2l0aCBhIHJlYXNvbiBicmlkZ2VkIG5vdGhpbmcsIHNvIGl0IGlzIGp1c3QgYXMgaW52aXNpYmxlIGFzIGFuXG4vLyBleGNsdWRlZCB0YWJsZS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZFRhYmxlIHtcbiAgdGFibGU6IHN0cmluZztcbiAgY2xhc3NpZmljYXRpb246IFNlbWFudGljVGFibGVDbGFzc2lmaWNhdGlvbjtcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIHJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gVGhlIGJ1aWxkIHNjb3JlYm9hcmQgc2hpcHBlZCBhbG9uZ3NpZGUgdGhlIGJ1aWxkIHN0YXR1czogdGhlIHN1bW1hcnkgY291bnRzLFxuLy8gdGhlIGZ1bGwgYnJlYWtkb3duIHRoZSBzZXR0aW5ncyBkaWFsb2cgZHJpbGxzIGludG8g4oCUIEJPVEgga2luZHMgb2YgdW5pdCB0aGVcbi8vIGJ1aWxkIGNhY2hlcywgdGFibGUtYmFja2VkIGVudGl0aWVzIGFuZCBzdGFuZGFsb25lIGNvZGUgY2xhc3NlcyDigJQgYW5kIHRoZVxuLy8gY2F0YWxvZyBvZiBldmVyeSB0YWJsZSB0aGUgYnVpbGQgc2F3LCBzbyB0aGUgdGFiIGNhbiBzaG93IHdoYXQgdGhlIHJlcG9ydCBBSVxuLy8gY2FuJ3Qgc2VlLCBub3QganVzdCB3aGF0IGl0IGNhbi5cbi8vXG4vLyBgZnVuY3Rpb25Db3VudGAgc3BhbnMgZW50aXRpZXMgYW5kIGNsYXNzZXMgYWxpa2U6IGl0IGlzIHRoZSBzYW1lIHRvdGFsIHRoZVxuLy8gYnVpbGQgaXRzZWxmIHJlcG9ydHMgd2hlbiBpdCBmaW5pc2hlcy5cbi8vXG4vLyBgdGFibGVzYCBpcyBlbXB0eSBmb3IgYW4gYXJ0aWZhY3QgYnVpbHQgYmVmb3JlIHRoZSBjYXRhbG9nIGV4aXN0ZWQuIFJlYWQgdGhhdFxuLy8gYXMgXCJubyBjYXRhbG9nXCIsIG5ldmVyIGFzIFwibm90aGluZyB3YXMgZXhjbHVkZWRcIi5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZERldGFpbCB7XG4gIC8vIFdoZXRoZXIgdGhlIGFydGlmYWN0IHdhcyBwcm9kdWNlZCBieSBhIGJ1aWxkIHRoYXQgcmFuIHRvIHRoZSBlbmQuIFJlYWQgaXRcbiAgLy8gYmVzaWRlIGBnZW5lcmF0ZWRBdGAsIG5ldmVyIGluc3RlYWQgb2YgaXQ6IHRoZSBzdHJ1Y3R1cmFsIGFydGlmYWN0IGlzXG4gIC8vIHB1Ymxpc2hlZCBCRUZPUkUgdGhlIEFJIGZ1bmN0aW9uIHBhc3MsIHNvIGEgYnVpbGQgd2hvc2UgQUkgcGFzcyBmYWlsZWQgc3RpbGxcbiAgLy8gY2FycmllcyBhIGRhdGUgYW5kIGEgZnVsbCBzZXQgb2YgY291bnRzLiBUaGUgZGF0ZSBzYXlzIHNvbWV0aGluZyB3YXNcbiAgLy8gd3JpdHRlbjsgb25seSB0aGlzIHNheXMgdGhlIGJ1aWxkIGZpbmlzaGVkIHdyaXRpbmcgaXQuXG4gIGNvbXBsZXRlOiBib29sZWFuO1xuICBnZW5lcmF0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGVudGl0eUNvdW50OiBudW1iZXI7XG4gIGNsYXNzQ291bnQ6IG51bWJlcjtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBlbnRpdGllczogU2VtYW50aWNCdWlsZEVudGl0eVtdO1xuICBjbGFzc2VzOiBTZW1hbnRpY0J1aWxkQ2xhc3NbXTtcbiAgdGFibGVDb3VudDogbnVtYmVyO1xuICBqdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIHVubGlua2VkSnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBleGNsdWRlZENvdW50OiBudW1iZXI7XG4gIHRhYmxlczogU2VtYW50aWNCdWlsZFRhYmxlW107XG59XG5cbi8vIFdoaWNoIGNsYXNzIGEgY2FjaGVkIGZ1bmN0aW9uIHdhcyByZWFkIGZyb20uIEFuIGVudGl0eSdzIGNhY2hlIHNwbGl0cyBpbnRvXG4vLyAnbW9kZWwnIGFuZCAnaGFuZGxlcic7IGEgc3RhbmRhbG9uZSBjb2RlIGNsYXNzIGhhcyBvbmUgZ3JvdXAsICdjbGFzcycuXG5leHBvcnQgdHlwZSBTZW1hbnRpY0Z1bmN0aW9uU291cmNlID0gJ21vZGVsJyB8ICdoYW5kbGVyJyB8ICdjbGFzcyc7XG5cbi8vIE9uZSBBSS1jbGFzc2lmaWVkIGNvZGUgZnVuY3Rpb24gZnJvbSBhIG1vZGVsLCBoYW5kbGVyIG9yIHN0YW5kYWxvbmUgY2xhc3M6XG4vLyB3aGF0IGtpbmQgb2YgbG9naWMgaXQgaXMsIHdoYXQgaXQgZG9lcywgYW5kIHdoYXQgaXQgcHJvZHVjZXMg4oCUIHRoZSBidWlsZCdzXG4vLyBjYWNoZWQgXCJ3aGF0IHRoZSBjb2RlIGRvZXNcIiBrbm93bGVkZ2Ugc2hvd24gaW4gdGhlIGZ1bmN0aW9ucyBkaWFsb2cuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljRW50aXR5RnVuY3Rpb24ge1xuICBjbGFzczogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gIGtpbmQ6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xuICBwcm9kdWNlczogc3RyaW5nO1xuICBzb3VyY2U6IFNlbWFudGljRnVuY3Rpb25Tb3VyY2U7XG59XG5cbi8vIE9uZSBlbnRpdHkncyBjYWNoZWQgY29kZS1mdW5jdGlvbiBrbm93bGVkZ2UsIGZldGNoZWQgd2hlbiBhIGZ1bmN0aW9ucyBkaWFsb2dcbi8vIG9wZW5zICh0aGUgZnVsbCBzZXQgYWNyb3NzIGFsbCBlbnRpdGllcyBpcyB0b28gYmlnIHRvIHNoaXAgd2l0aCB0aGVcbi8vIHNjb3JlYm9hcmQpLiBPbmUgcGF5bG9hZCBzZXJ2ZXMgYm90aCBkaWFsb2dzIOKAlCBjb25zdW1lcnMgZmlsdGVyIGJ5IHNvdXJjZS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNFbnRpdHlGdW5jdGlvbnMge1xuICBlbnRpdHk6IHN0cmluZztcbiAgZ2VuZXJhdGVkQXQ6IERhdGUgfCBudWxsO1xuICBtb2RlbENsYXNzOiBzdHJpbmcgfCBudWxsO1xuICBoYW5kbGVyQ2xhc3M6IHN0cmluZyB8IG51bGw7XG4gIGZ1bmN0aW9uczogU2VtYW50aWNFbnRpdHlGdW5jdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRTdGF0dXMge1xuICBidWlsZDogU2VtYW50aWNCdWlsZCB8IG51bGw7XG4gIGRldGFpbDogU2VtYW50aWNCdWlsZERldGFpbDtcbn1cblxuLy8gVGhlIHJlcG9ydCBtb2R1bGUncyBHZW5lcmFsIHNldHRpbmdzIChhIHNtYWxsIGdsb2JhbCBrZXkvdmFsdWUgc3RvcmUsIHRoZVxuLy8gcmVwb3J0aW5nIGNvdW50ZXJwYXJ0IG9mIHRoZSBhcHAtd2lkZSBzZXR0aW5ncykuIEVhY2ggdmFsdWUgc2hpcHMgd2l0aCB0aGVcbi8vIHNhZmUgYmFuZCBpdHMgZWRpdG9yIGZpZWxkIGlzIGJvdW5kZWQgdG8uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNldHRpbmdzIHtcbiAgLy8gSG93IG1hbnkgc3VtbWFyeSBjYWxscyB0aGUgc2VtYW50aWMgYnVpbGQgcnVucyBhdCBvbmNlLlxuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3k6IG51bWJlcjtcbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5TWluOiBudW1iZXI7XG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeU1heDogbnVtYmVyO1xufVxuIl19
|