@testgorilla/tgo-ui 3.10.6 → 3.10.8-beta.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.
@@ -2,9 +2,9 @@ import { Component, Input } from '@angular/core';
2
2
  import { Color } from '../../models/colors.model';
3
3
  import gaussian from 'gaussian';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "ng2-charts";
6
- import * as i2 from "@angular/material/tooltip";
7
- import * as i3 from "@angular/common";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "ng2-charts";
7
+ import * as i3 from "@angular/material/tooltip";
8
8
  import * as i4 from "../icon/icon.component";
9
9
  import * as i5 from "../../pipes/ui-translate.pipe";
10
10
  import * as i6 from "../../pipes/memoize-func.pipe";
@@ -26,6 +26,12 @@ export class GaussianChartComponent {
26
26
  * @memberof SpinnerComponent
27
27
  */
28
28
  this.applicationTheme = 'light';
29
+ /**
30
+ * Controls the position of the legend relative to the chart.
31
+ * @type {LegendPosition}
32
+ * @memberof GaussianChartComponent
33
+ */
34
+ this.legendPosition = 'bottom-start';
29
35
  this.minXValue = -3;
30
36
  this.maxXValue = 3;
31
37
  this.minYValue = 0;
@@ -231,16 +237,18 @@ export class GaussianChartComponent {
231
237
  }
232
238
  }
233
239
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GaussianChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
234
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GaussianChartComponent, selector: "ui-gaussian-chart", inputs: { score: "score", bestCandidateScore: "bestCandidateScore", applicationTheme: "applicationTheme" }, ngImport: i0, template: "<div class=\"chart-section\" *ngIf=\"score\"\n [attr.aria-label]=\"(translationContext + 'ARIA_LABEL') | uiTranslate :\n { score: score,\n activeBucket: getScoreTranslationKey(score) | uiTranslate | async,\n bestCandidateScore: bestCandidateScore,\n activeBucketBestScore: getScoreTranslationKey(bestCandidateScore) | uiTranslate | async\n } | async\"\n tabindex=\"0\">\n <div class=\"chart-range-wrapper\">\n <div class=\"normal-chart-container\">\n <div class=\"normal-chart\">\n <canvas baseChart\n [data]=\"gaussianChartData\"\n [options]=\"gaussianChartOptions\"\n type=\"line\"\n class=\"chart\"\n >\n </canvas>\n <div class=\"overlay-icon\"\n [style.bottom]=\"[overlayYValue, 3, 'subtract'] | memoizeFunc : getCalcPosition\"\n [style.left]=\"[overlayXValue, 20, 'subtract'] | memoizeFunc : getCalcPosition\">\n <div class=\"drop-icon\">\n <ui-icon name=\"Pin-marker\" size=\"40\"></ui-icon>\n <span class=\"curve-score\">{{score}}</span>\n </div>\n </div>\n <div class=\"best-score\"\n [style.height]=\"[100 - overlayYBestScoreValue, normalContainerPadding, 'add'] | memoizeFunc : getCalcPosition\"\n [style.bottom]=\"overlayYBestScoreValue + '%'\"\n [style.left]=\"overlayXBestScoreValue + '%'\">\n <div class=\"best-score-content\"\n [style.left]=\"bestCandidateScore | memoizeFunc : getBestScoreContentPosition : this\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{bestCandidateScore}}\n </div>\n </div>\n </div>\n <div class=\"overlay\">\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.AVERAGE\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.AVERAGE\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST') | uiTranslate | async}}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"range\">\n <div>1</div>\n <div>20</div>\n <div>40</div>\n <div>60</div>\n <div>80</div>\n <div>99</div>\n </div>\n </div>\n\n <div class=\"legend-container mt-16\">\n <div class=\"legend\">\n <ui-icon name=\"Dot\"></ui-icon>\n {{(translationContext + 'CANDIDATE_SCORE') | uiTranslate | async}}\n </div>\n <div class=\"legend\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{(translationContext + 'HIGHEST_SCORE') | uiTranslate | async}}\n </div>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.chart-section{display:flex;flex-direction:column;gap:8px;overflow:auto;width:100%}.chart-section .chart-range-wrapper{display:flex;flex-direction:column;gap:8px;width:100%}.chart-section .chart-range-wrapper .normal-chart-container{position:relative;padding-bottom:32px;padding-top:50px;margin-top:16px;border:1px solid #D3D3D3;border-radius:10px;width:100%;height:230px}.chart-section .chart-range-wrapper .normal-chart-container .normal-chart{position:relative;z-index:1;width:100%;height:100%}.chart-section .chart-range-wrapper .normal-chart-container .overlay{position:absolute;top:0;left:0;height:100%;width:100%;display:flex}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column{flex:1;font-size:12px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column .column-item{cursor:pointer}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column:not(:last-child){border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active{background-color:#fff5ed;border-bottom:3px solid #242424}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border:none;position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{content:\"\";position:absolute;bottom:0;width:calc(100% - 4px);height:2.5px;background-color:#000}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-top-left-radius:8px;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before{right:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border-top-right-radius:8px;border-bottom-right-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{left:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon{position:absolute;z-index:1;display:flex;flex-direction:column;align-items:center}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon{position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon .curve-score{font-size:14px;font-weight:700;position:absolute;width:100%;text-align:center;top:0;left:.5px;padding:4px 4px 9px}.chart-section .chart-range-wrapper .normal-chart-container .best-score{position:absolute;border-left:1px #242424 dashed}.chart-section .chart-range-wrapper .normal-chart-container .best-score .best-score-content{position:absolute;display:flex;gap:3px;align-items:center}.chart-section .chart-range-wrapper .range{display:flex;justify-content:space-between;color:#919191}.chart-section .chart-range-wrapper .range div{width:35px;text-align:center}.chart-section .chart-range-wrapper .range div:nth-child(2){text-align:left}.chart-section .chart-range-wrapper .range div:nth-last-child(2){text-align:right}.chart-section .legend-container{display:flex;gap:16px}.chart-section .legend-container .legend{display:flex;gap:8px;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.BaseChartDirective, selector: "canvas[baseChart]", inputs: ["type", "legend", "data", "options", "plugins", "labels", "datasets"], outputs: ["chartClick", "chartHover"], exportAs: ["base-chart"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "pipe", type: i5.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.MemoizeFuncPipe, name: "memoizeFunc" }] }); }
240
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: GaussianChartComponent, selector: "ui-gaussian-chart", inputs: { score: "score", bestCandidateScore: "bestCandidateScore", applicationTheme: "applicationTheme", legendPosition: "legendPosition" }, ngImport: i0, template: "<div\n class=\"chart-section\"\n *ngIf=\"score\"\n [attr.aria-label]=\"\n translationContext + 'ARIA_LABEL'\n | uiTranslate\n : {\n score: score,\n activeBucket: getScoreTranslationKey(score) | uiTranslate | async,\n bestCandidateScore: bestCandidateScore,\n activeBucketBestScore: getScoreTranslationKey(bestCandidateScore) | uiTranslate | async,\n }\n | async\n \"\n tabindex=\"0\"\n>\n <!-- Legend positioned at top -->\n @if (legendPosition === 'top-start' || legendPosition === 'top-end') {\n <ng-container [ngTemplateOutlet]=\"legendTemplate\"></ng-container>\n }\n\n <div class=\"chart-range-wrapper\">\n <div class=\"normal-chart-container\">\n <div class=\"normal-chart\">\n <canvas baseChart [data]=\"gaussianChartData\" [options]=\"gaussianChartOptions\" type=\"line\" class=\"chart\">\n </canvas>\n <div\n class=\"overlay-icon\"\n [style.bottom]=\"[overlayYValue, 3, 'subtract'] | memoizeFunc: getCalcPosition\"\n [style.left]=\"[overlayXValue, 20, 'subtract'] | memoizeFunc: getCalcPosition\"\n >\n <div class=\"drop-icon\">\n <ui-icon name=\"Pin-marker\" size=\"40\"></ui-icon>\n <span class=\"curve-score\">{{ score }}</span>\n </div>\n </div>\n <div\n class=\"best-score\"\n [style.height]=\"[100 - overlayYBestScoreValue, normalContainerPadding, 'add'] | memoizeFunc: getCalcPosition\"\n [style.bottom]=\"overlayYBestScoreValue + '%'\"\n [style.left]=\"overlayXBestScoreValue + '%'\"\n >\n <div\n class=\"best-score-content\"\n [style.left]=\"bestCandidateScore | memoizeFunc: getBestScoreContentPosition : this\"\n >\n <ui-icon name=\"Trophy\"></ui-icon>\n {{ bestCandidateScore }}\n </div>\n </div>\n </div>\n <div class=\"overlay\">\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWEST\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.LOWEST\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWER\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.LOWER\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.AVERAGE\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.AVERAGE\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHER\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHER\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHEST\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHEST\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST' | uiTranslate | async }}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"range\">\n <div>1</div>\n <div>20</div>\n <div>40</div>\n <div>60</div>\n <div>80</div>\n <div>99</div>\n </div>\n </div>\n\n <!-- Legend positioned at bottom -->\n @if (legendPosition === 'bottom-start' || legendPosition === 'bottom-end') {\n <ng-container [ngTemplateOutlet]=\"legendTemplate\"></ng-container>\n }\n</div>\n\n<!-- Reusable legend template -->\n<ng-template #legendTemplate>\n <div class=\"legend-container\" [ngClass]=\"'legend-' + legendPosition\">\n <div class=\"legend\">\n <ui-icon name=\"Dot\" color=\"gray\"></ui-icon>\n {{ translationContext + 'CANDIDATE_SCORE' | uiTranslate | async }}\n </div>\n <div class=\"legend\">\n <ui-icon name=\"Trophy\" color=\"gray\"></ui-icon>\n {{ translationContext + 'HIGHEST_SCORE' | uiTranslate | async }}\n </div>\n </div>\n</ng-template>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.chart-section{display:flex;flex-direction:column;gap:16px;overflow:auto;width:100%}.chart-section .chart-range-wrapper{display:flex;flex-direction:column;gap:8px;width:100%}.chart-section .chart-range-wrapper .normal-chart-container{position:relative;padding-bottom:32px;padding-top:50px;border:1px solid #D3D3D3;border-radius:10px;width:100%;height:230px}.chart-section .chart-range-wrapper .normal-chart-container .normal-chart{position:relative;z-index:1;width:100%;height:100%}.chart-section .chart-range-wrapper .normal-chart-container .overlay{position:absolute;top:0;left:0;height:100%;width:100%;display:flex}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column{flex:1;font-size:12px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column .column-item{cursor:pointer}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column:not(:last-child){border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active{background-color:#fff5ed;border-bottom:3px solid #242424}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border:none;position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{content:\"\";position:absolute;bottom:0;width:calc(100% - 4px);height:2.5px;background-color:#000}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-top-left-radius:8px;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before{right:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border-top-right-radius:8px;border-bottom-right-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{left:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon{position:absolute;z-index:1;display:flex;flex-direction:column;align-items:center}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon{position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon .curve-score{font-size:14px;font-weight:700;position:absolute;width:100%;text-align:center;top:0;left:.5px;padding:4px 4px 9px}.chart-section .chart-range-wrapper .normal-chart-container .best-score{position:absolute;border-left:1px #242424 dashed}.chart-section .chart-range-wrapper .normal-chart-container .best-score .best-score-content{position:absolute;display:flex;gap:3px;align-items:center}.chart-section .chart-range-wrapper .range{display:flex;justify-content:space-between;color:#919191}.chart-section .chart-range-wrapper .range div{width:35px;text-align:center}.chart-section .chart-range-wrapper .range div:nth-child(2){text-align:left}.chart-section .chart-range-wrapper .range div:nth-last-child(2){text-align:right}.chart-section .legend-container{display:flex;gap:16px}.chart-section .legend-container.legend-top-start,.chart-section .legend-container.legend-bottom-start{justify-content:flex-start}.chart-section .legend-container.legend-top-end,.chart-section .legend-container.legend-bottom-end{justify-content:flex-end}.chart-section .legend-container .legend{display:flex;gap:8px;align-items:center;color:#666}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.BaseChartDirective, selector: "canvas[baseChart]", inputs: ["type", "legend", "data", "options", "plugins", "labels", "datasets"], outputs: ["chartClick", "chartHover"], exportAs: ["base-chart"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "pipe", type: i5.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.MemoizeFuncPipe, name: "memoizeFunc" }] }); }
235
241
  }
236
242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GaussianChartComponent, decorators: [{
237
243
  type: Component,
238
- args: [{ selector: 'ui-gaussian-chart', template: "<div class=\"chart-section\" *ngIf=\"score\"\n [attr.aria-label]=\"(translationContext + 'ARIA_LABEL') | uiTranslate :\n { score: score,\n activeBucket: getScoreTranslationKey(score) | uiTranslate | async,\n bestCandidateScore: bestCandidateScore,\n activeBucketBestScore: getScoreTranslationKey(bestCandidateScore) | uiTranslate | async\n } | async\"\n tabindex=\"0\">\n <div class=\"chart-range-wrapper\">\n <div class=\"normal-chart-container\">\n <div class=\"normal-chart\">\n <canvas baseChart\n [data]=\"gaussianChartData\"\n [options]=\"gaussianChartOptions\"\n type=\"line\"\n class=\"chart\"\n >\n </canvas>\n <div class=\"overlay-icon\"\n [style.bottom]=\"[overlayYValue, 3, 'subtract'] | memoizeFunc : getCalcPosition\"\n [style.left]=\"[overlayXValue, 20, 'subtract'] | memoizeFunc : getCalcPosition\">\n <div class=\"drop-icon\">\n <ui-icon name=\"Pin-marker\" size=\"40\"></ui-icon>\n <span class=\"curve-score\">{{score}}</span>\n </div>\n </div>\n <div class=\"best-score\"\n [style.height]=\"[100 - overlayYBestScoreValue, normalContainerPadding, 'add'] | memoizeFunc : getCalcPosition\"\n [style.bottom]=\"overlayYBestScoreValue + '%'\"\n [style.left]=\"overlayXBestScoreValue + '%'\">\n <div class=\"best-score-content\"\n [style.left]=\"bestCandidateScore | memoizeFunc : getBestScoreContentPosition : this\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{bestCandidateScore}}\n </div>\n </div>\n </div>\n <div class=\"overlay\">\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.AVERAGE\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.AVERAGE\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST') | uiTranslate | async}}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"range\">\n <div>1</div>\n <div>20</div>\n <div>40</div>\n <div>60</div>\n <div>80</div>\n <div>99</div>\n </div>\n </div>\n\n <div class=\"legend-container mt-16\">\n <div class=\"legend\">\n <ui-icon name=\"Dot\"></ui-icon>\n {{(translationContext + 'CANDIDATE_SCORE') | uiTranslate | async}}\n </div>\n <div class=\"legend\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{(translationContext + 'HIGHEST_SCORE') | uiTranslate | async}}\n </div>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.chart-section{display:flex;flex-direction:column;gap:8px;overflow:auto;width:100%}.chart-section .chart-range-wrapper{display:flex;flex-direction:column;gap:8px;width:100%}.chart-section .chart-range-wrapper .normal-chart-container{position:relative;padding-bottom:32px;padding-top:50px;margin-top:16px;border:1px solid #D3D3D3;border-radius:10px;width:100%;height:230px}.chart-section .chart-range-wrapper .normal-chart-container .normal-chart{position:relative;z-index:1;width:100%;height:100%}.chart-section .chart-range-wrapper .normal-chart-container .overlay{position:absolute;top:0;left:0;height:100%;width:100%;display:flex}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column{flex:1;font-size:12px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column .column-item{cursor:pointer}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column:not(:last-child){border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active{background-color:#fff5ed;border-bottom:3px solid #242424}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border:none;position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{content:\"\";position:absolute;bottom:0;width:calc(100% - 4px);height:2.5px;background-color:#000}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-top-left-radius:8px;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before{right:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border-top-right-radius:8px;border-bottom-right-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{left:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon{position:absolute;z-index:1;display:flex;flex-direction:column;align-items:center}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon{position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon .curve-score{font-size:14px;font-weight:700;position:absolute;width:100%;text-align:center;top:0;left:.5px;padding:4px 4px 9px}.chart-section .chart-range-wrapper .normal-chart-container .best-score{position:absolute;border-left:1px #242424 dashed}.chart-section .chart-range-wrapper .normal-chart-container .best-score .best-score-content{position:absolute;display:flex;gap:3px;align-items:center}.chart-section .chart-range-wrapper .range{display:flex;justify-content:space-between;color:#919191}.chart-section .chart-range-wrapper .range div{width:35px;text-align:center}.chart-section .chart-range-wrapper .range div:nth-child(2){text-align:left}.chart-section .chart-range-wrapper .range div:nth-last-child(2){text-align:right}.chart-section .legend-container{display:flex;gap:16px}.chart-section .legend-container .legend{display:flex;gap:8px;align-items:center}\n"] }]
244
+ args: [{ selector: 'ui-gaussian-chart', template: "<div\n class=\"chart-section\"\n *ngIf=\"score\"\n [attr.aria-label]=\"\n translationContext + 'ARIA_LABEL'\n | uiTranslate\n : {\n score: score,\n activeBucket: getScoreTranslationKey(score) | uiTranslate | async,\n bestCandidateScore: bestCandidateScore,\n activeBucketBestScore: getScoreTranslationKey(bestCandidateScore) | uiTranslate | async,\n }\n | async\n \"\n tabindex=\"0\"\n>\n <!-- Legend positioned at top -->\n @if (legendPosition === 'top-start' || legendPosition === 'top-end') {\n <ng-container [ngTemplateOutlet]=\"legendTemplate\"></ng-container>\n }\n\n <div class=\"chart-range-wrapper\">\n <div class=\"normal-chart-container\">\n <div class=\"normal-chart\">\n <canvas baseChart [data]=\"gaussianChartData\" [options]=\"gaussianChartOptions\" type=\"line\" class=\"chart\">\n </canvas>\n <div\n class=\"overlay-icon\"\n [style.bottom]=\"[overlayYValue, 3, 'subtract'] | memoizeFunc: getCalcPosition\"\n [style.left]=\"[overlayXValue, 20, 'subtract'] | memoizeFunc: getCalcPosition\"\n >\n <div class=\"drop-icon\">\n <ui-icon name=\"Pin-marker\" size=\"40\"></ui-icon>\n <span class=\"curve-score\">{{ score }}</span>\n </div>\n </div>\n <div\n class=\"best-score\"\n [style.height]=\"[100 - overlayYBestScoreValue, normalContainerPadding, 'add'] | memoizeFunc: getCalcPosition\"\n [style.bottom]=\"overlayYBestScoreValue + '%'\"\n [style.left]=\"overlayXBestScoreValue + '%'\"\n >\n <div\n class=\"best-score-content\"\n [style.left]=\"bestCandidateScore | memoizeFunc: getBestScoreContentPosition : this\"\n >\n <ui-icon name=\"Trophy\"></ui-icon>\n {{ bestCandidateScore }}\n </div>\n </div>\n </div>\n <div class=\"overlay\">\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWEST\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.LOWEST\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWER\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.LOWER\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.AVERAGE\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.AVERAGE\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHER\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHER\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER' | uiTranslate | async }}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHEST\">\n <div\n class=\"column-item\"\n [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHEST\"\n [matTooltip]=\"(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST_TOOLTIP' | uiTranslate | async) || ''\"\n >\n {{ translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST' | uiTranslate | async }}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"range\">\n <div>1</div>\n <div>20</div>\n <div>40</div>\n <div>60</div>\n <div>80</div>\n <div>99</div>\n </div>\n </div>\n\n <!-- Legend positioned at bottom -->\n @if (legendPosition === 'bottom-start' || legendPosition === 'bottom-end') {\n <ng-container [ngTemplateOutlet]=\"legendTemplate\"></ng-container>\n }\n</div>\n\n<!-- Reusable legend template -->\n<ng-template #legendTemplate>\n <div class=\"legend-container\" [ngClass]=\"'legend-' + legendPosition\">\n <div class=\"legend\">\n <ui-icon name=\"Dot\" color=\"gray\"></ui-icon>\n {{ translationContext + 'CANDIDATE_SCORE' | uiTranslate | async }}\n </div>\n <div class=\"legend\">\n <ui-icon name=\"Trophy\" color=\"gray\"></ui-icon>\n {{ translationContext + 'HIGHEST_SCORE' | uiTranslate | async }}\n </div>\n </div>\n</ng-template>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.chart-section{display:flex;flex-direction:column;gap:16px;overflow:auto;width:100%}.chart-section .chart-range-wrapper{display:flex;flex-direction:column;gap:8px;width:100%}.chart-section .chart-range-wrapper .normal-chart-container{position:relative;padding-bottom:32px;padding-top:50px;border:1px solid #D3D3D3;border-radius:10px;width:100%;height:230px}.chart-section .chart-range-wrapper .normal-chart-container .normal-chart{position:relative;z-index:1;width:100%;height:100%}.chart-section .chart-range-wrapper .normal-chart-container .overlay{position:absolute;top:0;left:0;height:100%;width:100%;display:flex}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column{flex:1;font-size:12px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column .column-item{cursor:pointer}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column:not(:last-child){border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active{background-color:#fff5ed;border-bottom:3px solid #242424}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border:none;position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{content:\"\";position:absolute;bottom:0;width:calc(100% - 4px);height:2.5px;background-color:#000}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-top-left-radius:8px;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before{right:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border-top-right-radius:8px;border-bottom-right-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{left:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon{position:absolute;z-index:1;display:flex;flex-direction:column;align-items:center}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon{position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon .curve-score{font-size:14px;font-weight:700;position:absolute;width:100%;text-align:center;top:0;left:.5px;padding:4px 4px 9px}.chart-section .chart-range-wrapper .normal-chart-container .best-score{position:absolute;border-left:1px #242424 dashed}.chart-section .chart-range-wrapper .normal-chart-container .best-score .best-score-content{position:absolute;display:flex;gap:3px;align-items:center}.chart-section .chart-range-wrapper .range{display:flex;justify-content:space-between;color:#919191}.chart-section .chart-range-wrapper .range div{width:35px;text-align:center}.chart-section .chart-range-wrapper .range div:nth-child(2){text-align:left}.chart-section .chart-range-wrapper .range div:nth-last-child(2){text-align:right}.chart-section .legend-container{display:flex;gap:16px}.chart-section .legend-container.legend-top-start,.chart-section .legend-container.legend-bottom-start{justify-content:flex-start}.chart-section .legend-container.legend-top-end,.chart-section .legend-container.legend-bottom-end{justify-content:flex-end}.chart-section .legend-container .legend{display:flex;gap:8px;align-items:center;color:#666}\n"] }]
239
245
  }], propDecorators: { score: [{
240
246
  type: Input
241
247
  }], bestCandidateScore: [{
242
248
  type: Input
243
249
  }], applicationTheme: [{
244
250
  type: Input
251
+ }], legendPosition: [{
252
+ type: Input
245
253
  }] } });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F1c3NpYW4tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2dhdXNzaWFuLWNoYXJ0L2dhdXNzaWFuLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9nYXVzc2lhbi1jaGFydC9nYXVzc2lhbi1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEQsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDOzs7Ozs7OztBQUVoQyxJQUFLLG1CQU1KO0FBTkQsV0FBSyxtQkFBbUI7SUFDdEIsa0VBQVcsQ0FBQTtJQUNYLGdFQUFVLENBQUE7SUFDVixvRUFBWSxDQUFBO0lBQ1osa0VBQVcsQ0FBQTtJQUNYLHFFQUFhLENBQUE7QUFDZixDQUFDLEVBTkksbUJBQW1CLEtBQW5CLG1CQUFtQixRQU12QjtBQU9ELE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFvQkU7Ozs7OztXQU1HO1FBQ00scUJBQWdCLEdBQXFCLE9BQU8sQ0FBQztRQUU3QyxjQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFDZixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixvQkFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3JFLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJ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QU0sS0FBSyxDQUFDO0lBQ3hELENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxTQUFpQjtRQUMzQyxPQUFPLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3RHLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sMkNBQTJDLENBQUM7UUFDckQsQ0FBQzthQUFNLElBQUksS0FBSyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEYsT0FBTyxzQ0FBc0MsQ0FBQztRQUNoRCxDQUFDO2FBQU0sSUFBSSxLQUFLLElBQUksbUJBQW1CLENBQUMsS0FBSyxJQUFJLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyRixPQUFPLGdDQUFnQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxJQUFJLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RGLE9BQU8sc0NBQXNDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLDJDQUEyQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDOytHQTdQVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixxS0NwQm5DLGkvSUE0RkE7OzRGRHhFYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1COzhCQVVwQixLQUFLO3NCQUFiLEtBQUs7Z0JBT0csa0JBQWtCO3NCQUExQixLQUFLO2dCQVNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBDaGFydCwgQ2hhcnREYXRhLCBDaGFydE9wdGlvbnMsIFRvb2x0aXBPcHRpb25zIH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sb3JzLm1vZGVsJztcbmltcG9ydCB7IF9EZWVwUGFydGlhbE9iamVjdCB9IGZyb20gJ2NoYXJ0LmpzL2Rpc3QvdHlwZXMvdXRpbHMnO1xuaW1wb3J0IGdhdXNzaWFuIGZyb20gJ2dhdXNzaWFuJztcblxuZW51bSBQZXJjZW50aWxlVGhyZXNob2xkIHtcbiAgTE9XRVNUID0gMjAsXG4gIExPV0VSID0gNDAsXG4gIEFWRVJBR0UgPSA2MCxcbiAgSElHSEVSID0gODAsXG4gIEhJR0hFU1QgPSAxMDAsXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWdhdXNzaWFuLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhdXNzaWFuLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2F1c3NpYW4tY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2F1c3NpYW5DaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgY2FuZGlkYXRlIHNjb3JlIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgY2hhcnQuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzY29yZSE6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJlc3QgY2FuZGlkYXRlIHNjb3JlIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgY2hhcnQuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBiZXN0Q2FuZGlkYXRlU2NvcmUhOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgU3Bpbm5lckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgcmVhZG9ubHkgbWluWFZhbHVlID0gLTM7XG4gIHJlYWRvbmx5IG1heFhWYWx1ZSA9IDM7XG4gIHJlYWRvbmx5IG1pbllWYWx1ZSA9IDA7XG4gIHJlYWRvbmx5IHN0ZXBTaXplID0gMC4xO1xuICByZWFkb25seSBwb2ludHNUb1NraXAgPSAyO1xuICByZWFkb25seSBhY3R1YWxNaW5YdmFsdWUgPSB0aGlzLm1pblhWYWx1ZSArIHRoaXMucG9pbnRzVG9Ta2lwICogdGhpcy5zdGVwU2l6ZTtcbiAgcmVhZG9ubHkgYWN0dWFsTWF4WHZhbHVlID0gdGhpcy5tYXhYVmFsdWUgLSB0aGlzLnBvaW50c1RvU2tpcCAqIHRoaXMuc3RlcFNpemU7XG4gIHJlYWRvbmx5IG5vcm1hbENvbnRhaW5lclBhZGRpbmcgPSA1MDsgLy9pbiBweFxuICByZWFkb25seSBiZXN0U2NvcmVUaHJlc2hvbGQgPSA5MjtcbiAgcmVhZG9ubHkgYmVzdFNjb3JlU3BhY2luZ1JpZ2h0ID0gJzRweCc7XG4gIHJlYWRvbmx5IGJlc3RTY29yZVNwYWNpbmdMZWZ0ID0gJy0zOXB4JztcblxuICBQZXJjZW50aWxlVGhyZXNob2xkID0gUGVyY2VudGlsZVRocmVzaG9sZDtcbiAgY2hhcnQ6IENoYXJ0O1xuICBnYXVzc2lhbkRpc3RyaWJ1dGlvbjogZ2F1c3NpYW4uR2F1c3NpYW47XG4gIGFjdGl2ZUJ1Y2tldDogUGVyY2VudGlsZVRocmVzaG9sZDtcbiAgb3ZlcmxheVhWYWx1ZTogbnVtYmVyO1xuICBvdmVybGF5WVZhbHVlOiBudW1iZXI7XG4gIG92ZXJsYXlYQmVzdFNjb3JlVmFsdWU6IG51bWJlcjtcbiAgb3ZlcmxheVlCZXN0U2NvcmVWYWx1ZTogbnVtYmVyO1xuICBtYXhZVmFsdWU6IG51bWJlcjtcblxuICBnYXVzc2lhbkNoYXJ0RGF0YTogQ2hhcnREYXRhPCdsaW5lJz4gPSB7XG4gICAgbGFiZWxzOiBbXSxcbiAgICBkYXRhc2V0czogW10sXG4gIH07XG4gIGdhdXNzaWFuQ2hhcnRPcHRpb25zOiBDaGFydE9wdGlvbnM8J2xpbmUnPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYW5zbGF0aW9uQ29udGV4dCA9ICdDSEFSVFMuR0FVU1NJQU5fQ0hBUlQuJztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuc2NvcmUgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgXCJzY29yZVwiIGlzIHJlcXVpcmVkIGZvciBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50LicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5iZXN0Q2FuZGlkYXRlU2NvcmUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmJlc3RDYW5kaWRhdGVTY29yZSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBcImJlc3RDYW5kaWRhdGVTY29yZVwiIGlzIHJlcXVpcmVkIGZvciBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50LicpO1xuICAgIH1cbiAgICB0aGlzLnNldEFjdGl2ZUJ1Y2tldCgpO1xuICAgIHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24gPSBnYXVzc2lhbigwLCAxKTtcbiAgICB0aGlzLm1heFlWYWx1ZSA9IHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKDApO1xuICAgIHRoaXMuc2V0T3ZlcmxheVZhbHVlcygpO1xuICAgIHRoaXMuc2V0T3ZlcmxheVZhbHVlc0ZvckJlc3RTY29yZSgpO1xuICAgIHRoaXMuc2V0Q2hhcnREYXRhKCk7XG4gICAgdGhpcy5zZXRDaGFydE9wdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2hhcnREYXRhKCkge1xuICAgIGNvbnN0IHhWYWx1ZXM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgeVZhbHVlczogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmdlbmVyYXRlTGFiZWxzKHRoaXMubWluWFZhbHVlLCB0aGlzLm1heFhWYWx1ZSwgdGhpcy5zdGVwU2l6ZSk7XG5cbiAgICBmb3IgKGxldCB4ID0gdGhpcy5taW5YVmFsdWU7IHggPCB0aGlzLm1heFhWYWx1ZSArIHRoaXMuc3RlcFNpemU7IHggPSBOdW1iZXIoKHggKyB0aGlzLnN0ZXBTaXplKS50b0ZpeGVkKDIpKSkge1xuICAgICAgeFZhbHVlcy5wdXNoKHgpO1xuICAgICAgeVZhbHVlcy5wdXNoKHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKHgpKTtcbiAgICB9XG5cbiAgICB0aGlzLmdhdXNzaWFuQ2hhcnREYXRhID0ge1xuICAgICAgbGFiZWxzLFxuICAgICAgZGF0YXNldHM6IHRoaXMuZ2VuZXJhdGVEYXRhc2V0KHlWYWx1ZXMpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldENoYXJ0T3B0aW9ucygpIHtcbiAgICB0aGlzLmdhdXNzaWFuQ2hhcnRPcHRpb25zID0ge1xuICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgc2NhbGVzOiB0aGlzLmdldFNjYWxlKCksXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIC8vIFRvIGJlIHVzZWQgb25seSBmb3IgZGV2IHB1cnBvc2VcbiAgICAgICAgLy8gdG9vbHRpcDogdGhpcy5nZXRUb29sdGlwKCksXG4gICAgICAgIC8vIENvbW1lbnQgdGhlIGJlbG93IGxpbmUgaWYgeW91IGVuYWJsZSB0aGUgY2FsbCBmb3IgdG9vbHRpcFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb29sdGlwKCk6IF9EZWVwUGFydGlhbE9iamVjdDxUb29sdGlwT3B0aW9uczwnbGluZSc+PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludGVyc2VjdDogZmFsc2UsXG4gICAgICBtb2RlOiAnbmVhcmVzdCcsXG4gICAgICBkaXNwbGF5Q29sb3JzOiBmYWxzZSxcbiAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICBsYWJlbDogdG9vbHRpcEl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24uY2RmKHBhcnNlRmxvYXQodG9vbHRpcEl0ZW0ubGFiZWwpKSAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICAgICAgICByZXR1cm4gYCR7dmFsdWV9JWA7XG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiAoKSA9PiAnJywgLy8gRGlzYWJsZSB0aGUgZGVmYXVsdCB0aXRsZVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTY2FsZSgpOiB7XG4gICAgeDogeyBkaXNwbGF5OiBib29sZWFuOyBncmlkOiB7IGRpc3BsYXk6IGJvb2xlYW4gfSB9O1xuICAgIHk6IHsgZGlzcGxheTogYm9vbGVhbjsgZ3JpZDogeyBkaXNwbGF5OiBib29sZWFuIH0gfTtcbiAgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHtcbiAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgIGdyaWQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZSwgLy8gRGlzYWJsZSBncmlkIGxpbmVzIGZvciB4LWF4aXNcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB5OiB7XG4gICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICBncmlkOiB7XG4gICAgICAgICAgZGlzcGxheTogZmFsc2UsIC8vIERpc2FibGUgZ3JpZCBsaW5lcyBmb3IgeS1heGlzXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRGF0YXNldChcbiAgICB5VmFsdWVzOiBudW1iZXJbXVxuICApOiB7IGRhdGE6IGFueVtdOyBsYWJlbDogc3RyaW5nOyBib3JkZXJDb2xvcjogQ29sb3I7IGJvcmRlcldpZHRoOiBudW1iZXI7IHBvaW50UmFkaXVzOiBudW1iZXI7IGZpbGw6IGJvb2xlYW4gfVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBkYXRhOiBbLi4ueVZhbHVlcy5zbGljZSgwLCB0aGlzLnBvaW50c1RvU2tpcCksIC4uLkFycmF5KHlWYWx1ZXMubGVuZ3RoIC0gdGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCldLFxuICAgICAgICBsYWJlbDogJycsXG4gICAgICAgIGJvcmRlckNvbG9yOiB0aGlzLmFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1QgPyBDb2xvci5BQ0NFTlRfMjAgOiBDb2xvci5UR09fV0hJVEUsXG4gICAgICAgIGJvcmRlcldpZHRoOiAyLFxuICAgICAgICBwb2ludFJhZGl1czogMCxcbiAgICAgICAgZmlsbDogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgLi4uQXJyYXkodGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgICAgLi4ueVZhbHVlcy5zbGljZSh0aGlzLnBvaW50c1RvU2tpcCwgeVZhbHVlcy5sZW5ndGggLSB0aGlzLnBvaW50c1RvU2tpcCksXG4gICAgICAgICAgLi4uQXJyYXkodGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgIF0sXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgYm9yZGVyQ29sb3I6IENvbG9yLkJMQUNLLFxuICAgICAgICBib3JkZXJXaWR0aDogMixcbiAgICAgICAgcG9pbnRSYWRpdXM6IDAsXG4gICAgICAgIGZpbGw6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGF0YTogW1xuICAgICAgICAgIC4uLkFycmF5KHlWYWx1ZXMubGVuZ3RoIC0gdGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgICAgLi4ueVZhbHVlcy5zbGljZSh5VmFsdWVzLmxlbmd0aCAtIHRoaXMucG9pbnRzVG9Ta2lwLCB5VmFsdWVzLmxlbmd0aCksXG4gICAgICAgIF0sXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgYm9yZGVyQ29sb3I6IHRoaXMuYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1QgPyBDb2xvci5BQ0NFTlRfMjAgOiBDb2xvci5UR09fV0hJVEUsXG4gICAgICAgIGJvcmRlcldpZHRoOiAyLFxuICAgICAgICBwb2ludFJhZGl1czogMCxcbiAgICAgICAgZmlsbDogZmFsc2UsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlTGFiZWxzKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgc3RlcDogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGxhYmVscyA9IFtdO1xuICAgIGZvciAobGV0IHggPSBtaW47IHggPCBtYXggKyBzdGVwOyB4ID0gTnVtYmVyKCh4ICsgc3RlcCkudG9GaXhlZCgyKSkpIHtcbiAgICAgIGxhYmVscy5wdXNoKHgudG9GaXhlZCgxKSk7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZUJ1Y2tldCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUKSB7XG4gICAgICB0aGlzLmFjdGl2ZUJ1Y2tldCA9IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VTVCAmJiB0aGlzLnNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUikge1xuICAgICAgdGhpcy5hY3RpdmVCdWNrZXQgPSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VSO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VSICYmIHRoaXMuc2NvcmUgPCBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0UpIHtcbiAgICAgIHRoaXMuYWN0aXZlQnVja2V0ID0gUGVyY2VudGlsZVRocmVzaG9sZC5BVkVSQUdFO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0UgJiYgdGhpcy5zY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVSKSB7XG4gICAgICB0aGlzLmFjdGl2ZUJ1Y2tldCA9IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVSO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFUikge1xuICAgICAgdGhpcy5hY3RpdmVCdWNrZXQgPSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1Q7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIG1vcmUgY29udGV4dDogaHR0cHM6Ly90ZXN0Z29yaWxsYS5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1NSL3BhZ2VzLzE4MTM5MDU3MzYvUGVyY2VudGlsZXMrY3VydmUrRkUraW1wbGVtZW50YXRpb25cbiAgcHJpdmF0ZSBzZXRPdmVybGF5VmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgb3ZlcmxheVhWYWx1ZSwgb3ZlcmxheVlWYWx1ZSB9ID0gdGhpcy5jYWxjdWxhdGVPdmVybGF5VmFsdWVzKHRoaXMuc2NvcmUpO1xuICAgIHRoaXMub3ZlcmxheVhWYWx1ZSA9IG92ZXJsYXlYVmFsdWU7XG4gICAgdGhpcy5vdmVybGF5WVZhbHVlID0gb3ZlcmxheVlWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0T3ZlcmxheVZhbHVlc0ZvckJlc3RTY29yZSgpOiB2b2lkIHtcbiAgICBjb25zdCB7IG92ZXJsYXlYVmFsdWUsIG92ZXJsYXlZVmFsdWUgfSA9IHRoaXMuY2FsY3VsYXRlT3ZlcmxheVZhbHVlcyh0aGlzLmJlc3RDYW5kaWRhdGVTY29yZSk7XG4gICAgdGhpcy5vdmVybGF5WEJlc3RTY29yZVZhbHVlID0gb3ZlcmxheVhWYWx1ZTtcbiAgICB0aGlzLm92ZXJsYXlZQmVzdFNjb3JlVmFsdWUgPSBvdmVybGF5WVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVPdmVybGF5VmFsdWVzKHNjb3JlOiBudW1iZXIpOiB7IG92ZXJsYXlYVmFsdWU6IG51bWJlcjsgb3ZlcmxheVlWYWx1ZTogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHhWYWx1ZSA9IHRoaXMubWFwUmFuZ2Uoc2NvcmUsIDAsIDEwMCwgdGhpcy5taW5YVmFsdWUsIHRoaXMubWF4WFZhbHVlKTtcbiAgICBjb25zdCB5VmFsdWUgPSB0aGlzLmdhdXNzaWFuRGlzdHJpYnV0aW9uLnBkZih4VmFsdWUpO1xuICAgIGxldCBvdmVybGF5WFZhbHVlID0gc2NvcmU7XG4gICAgbGV0IG92ZXJsYXlZVmFsdWUgPSB0aGlzLm1hcFJhbmdlKHlWYWx1ZSwgdGhpcy5taW5ZVmFsdWUsIHRoaXMubWF4WVZhbHVlLCAwLCAxMDApO1xuXG4gICAgaWYgKHhWYWx1ZSA8PSB0aGlzLmFjdHVhbE1pblh2YWx1ZSB8fCB4VmFsdWUgPj0gdGhpcy5hY3R1YWxNYXhYdmFsdWUpIHtcbiAgICAgIGNvbnN0IHhWYWx1ZUV4dHJlbWUgPSB4VmFsdWUgPD0gdGhpcy5hY3R1YWxNaW5YdmFsdWUgPyB0aGlzLmFjdHVhbE1pblh2YWx1ZSA6IHRoaXMuYWN0dWFsTWF4WHZhbHVlO1xuICAgICAgY29uc3QgeVZhbHVlRXh0cmVtZSA9IHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKHhWYWx1ZUV4dHJlbWUpO1xuICAgICAgb3ZlcmxheVhWYWx1ZSA9IHRoaXMubWFwUmFuZ2UoeFZhbHVlRXh0cmVtZSwgdGhpcy5taW5YVmFsdWUsIHRoaXMubWF4WFZhbHVlLCAwLCAxMDApO1xuICAgICAgb3ZlcmxheVlWYWx1ZSA9IHRoaXMubWFwUmFuZ2UoeVZhbHVlRXh0cmVtZSwgdGhpcy5taW5ZVmFsdWUsIHRoaXMubWF4WVZhbHVlLCAwLCAxMDApO1xuICAgIH1cblxuICAgIHJldHVybiB7IG92ZXJsYXlYVmFsdWUsIG92ZXJsYXlZVmFsdWUgfTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwUmFuZ2UodmFsdWU6IG51bWJlciwgaW5NaW46IG51bWJlciwgaW5NYXg6IG51bWJlciwgb3V0TWluOiBudW1iZXIsIG91dE1heDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKCh2YWx1ZSAtIGluTWluKSAqIChvdXRNYXggLSBvdXRNaW4pKSAvIChpbk1heCAtIGluTWluKSArIG91dE1pbjtcbiAgfVxuXG4gIGdldENhbGNQb3NpdGlvbihbcGVyY2VudGFnZSwgcGl4ZWxzLCBvcGVyYXRpb24gPSAnYWRkJ106IFtudW1iZXIsIG51bWJlciwgJ2FkZCcgfCAnc3VidHJhY3QnXSk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3BlcmF0b3IgPSBvcGVyYXRpb24gPT09ICdhZGQnID8gJysnIDogJy0nO1xuICAgIHJldHVybiBgY2FsYygke3BlcmNlbnRhZ2V9JSAke29wZXJhdG9yfSAke3BpeGVsc31weClgO1xuICB9XG5cbiAgZ2V0QmVzdFNjb3JlQ29udGVudFBvc2l0aW9uKGJlc3RTY29yZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYmVzdFNjb3JlIDwgdGhpcy5iZXN0U2NvcmVUaHJlc2hvbGQgPyB0aGlzLmJlc3RTY29yZVNwYWNpbmdSaWdodCA6IHRoaXMuYmVzdFNjb3JlU3BhY2luZ0xlZnQ7XG4gIH1cblxuICBnZXRTY29yZVRyYW5zbGF0aW9uS2V5KHNjb3JlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChzY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUKSB7XG4gICAgICByZXR1cm4gJ1BFUkNFTlRJTEVfTEFCRUxfVFlQRVMuV0VMTF9CRUxPV19BVkVSQUdFJztcbiAgICB9IGVsc2UgaWYgKHNjb3JlID49IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUICYmIHNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUikge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLkJFTE9XX0FWRVJBR0UnO1xuICAgIH0gZWxzZSBpZiAoc2NvcmUgPj0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUiAmJiBzY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuQVZFUkFHRSkge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLkFWRVJBR0UnO1xuICAgIH0gZWxzZSBpZiAoc2NvcmUgPj0gUGVyY2VudGlsZVRocmVzaG9sZC5BVkVSQUdFICYmIHNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVIpIHtcbiAgICAgIHJldHVybiAnUEVSQ0VOVElMRV9MQUJFTF9UWVBFUy5BQk9WRV9BVkVSQUdFJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLldFTExfQUJPVkVfQVZFUkFHRSc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2hhcnQtc2VjdGlvblwiICpuZ0lmPVwic2NvcmVcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cIih0cmFuc2xhdGlvbkNvbnRleHQgKyAnQVJJQV9MQUJFTCcpIHwgdWlUcmFuc2xhdGUgOlxuICB7IHNjb3JlOiBzY29yZSxcbiAgICBhY3RpdmVCdWNrZXQ6IGdldFNjb3JlVHJhbnNsYXRpb25LZXkoc2NvcmUpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyxcbiAgICBiZXN0Q2FuZGlkYXRlU2NvcmU6IGJlc3RDYW5kaWRhdGVTY29yZSxcbiAgICBhY3RpdmVCdWNrZXRCZXN0U2NvcmU6IGdldFNjb3JlVHJhbnNsYXRpb25LZXkoYmVzdENhbmRpZGF0ZVNjb3JlKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmNcbiAgfSB8IGFzeW5jXCJcbiAgdGFiaW5kZXg9XCIwXCI+XG4gIDxkaXYgY2xhc3M9XCJjaGFydC1yYW5nZS13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5vcm1hbC1jaGFydC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJub3JtYWwtY2hhcnRcIj5cbiAgICAgICAgPGNhbnZhcyBiYXNlQ2hhcnRcbiAgICAgICAgICBbZGF0YV09XCJnYXVzc2lhbkNoYXJ0RGF0YVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwiZ2F1c3NpYW5DaGFydE9wdGlvbnNcIlxuICAgICAgICAgIHR5cGU9XCJsaW5lXCJcbiAgICAgICAgICBjbGFzcz1cImNoYXJ0XCJcbiAgICAgICAgPlxuICAgICAgICA8L2NhbnZhcz5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktaWNvblwiXG4gICAgICAgICAgW3N0eWxlLmJvdHRvbV09XCJbb3ZlcmxheVlWYWx1ZSwgMywgJ3N1YnRyYWN0J10gfCBtZW1vaXplRnVuYyA6IGdldENhbGNQb3NpdGlvblwiXG4gICAgICAgICAgW3N0eWxlLmxlZnRdPVwiW292ZXJsYXlYVmFsdWUsIDIwLCAnc3VidHJhY3QnXSB8IG1lbW9pemVGdW5jIDogZ2V0Q2FsY1Bvc2l0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtaWNvblwiPlxuICAgICAgICAgICAgPHVpLWljb24gbmFtZT1cIlBpbi1tYXJrZXJcIiBzaXplPVwiNDBcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnZlLXNjb3JlXCI+e3tzY29yZX19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJlc3Qtc2NvcmVcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiWzEwMCAtIG92ZXJsYXlZQmVzdFNjb3JlVmFsdWUsIG5vcm1hbENvbnRhaW5lclBhZGRpbmcsICdhZGQnXSB8IG1lbW9pemVGdW5jIDogZ2V0Q2FsY1Bvc2l0aW9uXCJcbiAgICAgICAgICBbc3R5bGUuYm90dG9tXT1cIm92ZXJsYXlZQmVzdFNjb3JlVmFsdWUgKyAnJSdcIlxuICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIm92ZXJsYXlYQmVzdFNjb3JlVmFsdWUgKyAnJSdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmVzdC1zY29yZS1jb250ZW50XCJcbiAgICAgICAgICBbc3R5bGUubGVmdF09XCJiZXN0Q2FuZGlkYXRlU2NvcmUgfCBtZW1vaXplRnVuYyA6IGdldEJlc3RTY29yZUNvbnRlbnRQb3NpdGlvbiA6IHRoaXNcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIG5hbWU9XCJUcm9waHlcIj48L3VpLWljb24+XG4gICAgICAgICAgICB7e2Jlc3RDYW5kaWRhdGVTY29yZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1jb2x1bW5cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1RcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWl0ZW1cIiBbY2xhc3MudGV4dC1ib2xkXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1RcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkxPV0VTVF9UT09MVElQJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiPlxuICAgICAgICAgICAge3sodHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5MT1dFU1QnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWl0ZW1cIiBbY2xhc3MudGV4dC1ib2xkXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUlwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguTE9XRVJfVE9PTFRJUCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgIHt7KHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguTE9XRVInKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuQVZFUkFHRVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4taXRlbVwiIFtjbGFzcy50ZXh0LWJvbGRdPVwiYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0VcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkFWRVJBR0VfVE9PTFRJUCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgIHt7KHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguQVZFUkFHRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luY319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1jb2x1bW5cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWl0ZW1cIiBbY2xhc3MudGV4dC1ib2xkXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVJcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkhJR0hFUl9UT09MVElQJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiPlxuICAgICAgICAgICAge3sodHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5ISUdIRVInKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVTVFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4taXRlbVwiIFtjbGFzcy50ZXh0LWJvbGRdPVwiYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1RcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkhJR0hFU1RfVE9PTFRJUCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgIHt7KHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguSElHSEVTVCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luY319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicmFuZ2VcIj5cbiAgICAgIDxkaXY+MTwvZGl2PlxuICAgICAgPGRpdj4yMDwvZGl2PlxuICAgICAgPGRpdj40MDwvZGl2PlxuICAgICAgPGRpdj42MDwvZGl2PlxuICAgICAgPGRpdj44MDwvZGl2PlxuICAgICAgPGRpdj45OTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGVnZW5kLWNvbnRhaW5lciBtdC0xNlwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWdlbmRcIj5cbiAgICAgIDx1aS1pY29uIG5hbWU9XCJEb3RcIj48L3VpLWljb24+XG4gICAgICB7eyh0cmFuc2xhdGlvbkNvbnRleHQgKyAnQ0FORElEQVRFX1NDT1JFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGVnZW5kXCI+XG4gICAgICA8dWktaWNvbiBuYW1lPVwiVHJvcGh5XCI+PC91aS1pY29uPlxuICAgICAge3sodHJhbnNsYXRpb25Db250ZXh0ICsgJ0hJR0hFU1RfU0NPUkUnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F1c3NpYW4tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2dhdXNzaWFuLWNoYXJ0L2dhdXNzaWFuLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9nYXVzc2lhbi1jaGFydC9nYXVzc2lhbi1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEQsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDOzs7Ozs7OztBQUVoQyxJQUFLLG1CQU1KO0FBTkQsV0FBSyxtQkFBbUI7SUFDdEIsa0VBQVcsQ0FBQTtJQUNYLGdFQUFVLENBQUE7SUFDVixvRUFBWSxDQUFBO0lBQ1osa0VBQVcsQ0FBQTtJQUNYLHFFQUFhLENBQUE7QUFDZixDQUFDLEVBTkksbUJBQW1CLEtBQW5CLG1CQUFtQixRQU12QjtBQVNELE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFvQkU7Ozs7OztXQU1HO1FBQ00scUJBQWdCLEdBQXFCLE9BQU8sQ0FBQztRQUV0RDs7OztXQUlHO1FBQ00sbUJBQWMsR0FBbUIsY0FBYyxDQUFDO1FBRWhELGNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNmLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNmLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDckUsb0JBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNyRSwyQkFBc0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPO1FBQ3BDLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QiwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIseUJBQW9CLEdBQUcsT0FBTyxDQUFDO1FBRXhDLHdCQUFtQixHQUFHLG1CQUFtQixDQUFDO1FBVTFDLHNCQUFpQixHQUFzQjtZQUNyQyxNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQztRQUVpQix1QkFBa0IsR0FBRyx3QkFBd0IsQ0FBQztLQTJNbEU7SUF6TUMsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztRQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbEYsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUc7WUFDdkIsTUFBTTtZQUNOLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQztTQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLG9CQUFvQixHQUFHO1lBQzFCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdkIsT0FBTyxFQUFFO2dCQUNQLGtDQUFrQztnQkFDbEMsOEJBQThCO2dCQUM5Qiw0REFBNEQ7Z0JBQzVELE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsS0FBSztpQkFDZjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sT0FBTyxFQUFFLEtBQUs7aUJBQ2Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVTtRQUNoQixPQUFPO1lBQ0wsU0FBUyxFQUFFLEtBQUs7WUFDaEIsSUFBSSxFQUFFLFNBQVM7WUFDZixhQUFhLEVBQUUsS0FBSztZQUNwQixTQUFTLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFO29CQUNuQixNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUYsT0FBTyxHQUFHLEtBQUssR0FBRyxDQUFDO2dCQUNyQixDQUFDO2dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsNEJBQTRCO2FBQzlDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxRQUFRO1FBSWQsT0FBTztZQUNMLENBQUMsRUFBRTtnQkFDRCxPQUFPLEVBQUUsS0FBSztnQkFDZCxJQUFJLEVBQUU7b0JBQ0osT0FBTyxFQUFFLEtBQUssRUFBRSxnQ0FBZ0M7aUJBQ2pEO2FBQ0Y7WUFDRCxDQUFDLEVBQUU7Z0JBQ0QsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFO29CQUNKLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0NBQWdDO2lCQUNqRDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlLENBQ3JCLE9BQWlCO1FBRWpCLE9BQU87WUFDTDtnQkFDRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZHLEtBQUssRUFBRSxFQUFFO2dCQUNULFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxLQUFLLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVM7Z0JBQ2pHLFdBQVcsRUFBRSxDQUFDO2dCQUNkLFdBQVcsRUFBRSxDQUFDO2dCQUNkLElBQUksRUFBRSxLQUFLO2FBQ1o7WUFDRDtnQkFDRSxJQUFJLEVBQUU7b0JBQ0osR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ3RDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztvQkFDdkUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ3ZDO2dCQUNELEtBQUssRUFBRSxFQUFFO2dCQUNULFdBQVcsRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDeEIsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLEtBQUs7YUFDWjtZQUNEO2dCQUNFLElBQUksRUFBRTtvQkFDSixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUN2RCxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUM7aUJBQ3JFO2dCQUNELEtBQUssRUFBRSxFQUFFO2dCQUNULFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxLQUFLLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVM7Z0JBQ2xHLFdBQVcsRUFBRSxDQUFDO2dCQUNkLFdBQVcsRUFBRSxDQUFDO2dCQUNkLElBQUksRUFBRSxLQUFLO2FBQ1o7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFXLEVBQUUsR0FBVyxFQUFFLElBQVk7UUFDM0QsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBQ2pELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksbUJBQW1CLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUYsSUFBSSxDQUFDLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7UUFDaEQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvRixJQUFJLENBQUMsWUFBWSxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztRQUNsRCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLG1CQUFtQixDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hHLElBQUksQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBQ2pELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRCwwSEFBMEg7SUFDbEgsZ0JBQWdCO1FBQ3RCLE1BQU0sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUNyQyxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLE1BQU0sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGFBQWEsQ0FBQztJQUM5QyxDQUFDO0lBRU8sc0JBQXNCLENBQUMsS0FBYTtRQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbEYsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ25HLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbkUsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckYsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUVELE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFhLEVBQUUsS0FBYSxFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsTUFBYztRQUMxRixPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUUsQ0FBQztJQUVELGVBQWUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUFHLEtBQUssQ0FBdUM7UUFDM0YsTUFBTSxRQUFRLEdBQUcsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDakQsT0FBTyxRQUFRLFVBQVUsS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLENBQUM7SUFDeEQsQ0FBQztJQUVELDJCQUEyQixDQUFDLFNBQWlCO1FBQzNDLE9BQU8sU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDdEcsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQWE7UUFDbEMsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkMsT0FBTywyQ0FBMkMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sSUFBSSxLQUFLLElBQUksbUJBQW1CLENBQUMsTUFBTSxJQUFJLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwRixPQUFPLHNDQUFzQyxDQUFDO1FBQ2hELENBQUM7YUFBTSxJQUFJLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JGLE9BQU8sZ0NBQWdDLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksS0FBSyxJQUFJLG1CQUFtQixDQUFDLE9BQU8sSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEYsT0FBTyxzQ0FBc0MsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sMkNBQTJDLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7K0dBcFFVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHVNQ3RCbkMsZ3lLQWlJQTs7NEZEM0dhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxtQkFBbUI7OEJBVXBCLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBU0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQU9HLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uVGhlbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwbGljYXRpb24tdGhlbWUubW9kZWwnO1xuaW1wb3J0IHsgQ2hhcnQsIENoYXJ0RGF0YSwgQ2hhcnRPcHRpb25zLCBUb29sdGlwT3B0aW9ucyB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IENvbG9yIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbG9ycy5tb2RlbCc7XG5pbXBvcnQgeyBfRGVlcFBhcnRpYWxPYmplY3QgfSBmcm9tICdjaGFydC5qcy9kaXN0L3R5cGVzL3V0aWxzJztcbmltcG9ydCBnYXVzc2lhbiBmcm9tICdnYXVzc2lhbic7XG5cbmVudW0gUGVyY2VudGlsZVRocmVzaG9sZCB7XG4gIExPV0VTVCA9IDIwLFxuICBMT1dFUiA9IDQwLFxuICBBVkVSQUdFID0gNjAsXG4gIEhJR0hFUiA9IDgwLFxuICBISUdIRVNUID0gMTAwLFxufVxuXG5leHBvcnQgdHlwZSBMZWdlbmRQb3NpdGlvbiA9ICd0b3Atc3RhcnQnIHwgJ3RvcC1lbmQnIHwgJ2JvdHRvbS1zdGFydCcgfCAnYm90dG9tLWVuZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWdhdXNzaWFuLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhdXNzaWFuLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2F1c3NpYW4tY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2F1c3NpYW5DaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgY2FuZGlkYXRlIHNjb3JlIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgY2hhcnQuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzY29yZSE6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJlc3QgY2FuZGlkYXRlIHNjb3JlIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgY2hhcnQuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBiZXN0Q2FuZGlkYXRlU2NvcmUhOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgU3Bpbm5lckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGVnZW5kIHJlbGF0aXZlIHRvIHRoZSBjaGFydC5cbiAgICogQHR5cGUge0xlZ2VuZFBvc2l0aW9ufVxuICAgKiBAbWVtYmVyb2YgR2F1c3NpYW5DaGFydENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbGVnZW5kUG9zaXRpb246IExlZ2VuZFBvc2l0aW9uID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgcmVhZG9ubHkgbWluWFZhbHVlID0gLTM7XG4gIHJlYWRvbmx5IG1heFhWYWx1ZSA9IDM7XG4gIHJlYWRvbmx5IG1pbllWYWx1ZSA9IDA7XG4gIHJlYWRvbmx5IHN0ZXBTaXplID0gMC4xO1xuICByZWFkb25seSBwb2ludHNUb1NraXAgPSAyO1xuICByZWFkb25seSBhY3R1YWxNaW5YdmFsdWUgPSB0aGlzLm1pblhWYWx1ZSArIHRoaXMucG9pbnRzVG9Ta2lwICogdGhpcy5zdGVwU2l6ZTtcbiAgcmVhZG9ubHkgYWN0dWFsTWF4WHZhbHVlID0gdGhpcy5tYXhYVmFsdWUgLSB0aGlzLnBvaW50c1RvU2tpcCAqIHRoaXMuc3RlcFNpemU7XG4gIHJlYWRvbmx5IG5vcm1hbENvbnRhaW5lclBhZGRpbmcgPSA1MDsgLy9pbiBweFxuICByZWFkb25seSBiZXN0U2NvcmVUaHJlc2hvbGQgPSA5MjtcbiAgcmVhZG9ubHkgYmVzdFNjb3JlU3BhY2luZ1JpZ2h0ID0gJzRweCc7XG4gIHJlYWRvbmx5IGJlc3RTY29yZVNwYWNpbmdMZWZ0ID0gJy0zOXB4JztcblxuICBQZXJjZW50aWxlVGhyZXNob2xkID0gUGVyY2VudGlsZVRocmVzaG9sZDtcbiAgY2hhcnQ6IENoYXJ0O1xuICBnYXVzc2lhbkRpc3RyaWJ1dGlvbjogZ2F1c3NpYW4uR2F1c3NpYW47XG4gIGFjdGl2ZUJ1Y2tldDogUGVyY2VudGlsZVRocmVzaG9sZDtcbiAgb3ZlcmxheVhWYWx1ZTogbnVtYmVyO1xuICBvdmVybGF5WVZhbHVlOiBudW1iZXI7XG4gIG92ZXJsYXlYQmVzdFNjb3JlVmFsdWU6IG51bWJlcjtcbiAgb3ZlcmxheVlCZXN0U2NvcmVWYWx1ZTogbnVtYmVyO1xuICBtYXhZVmFsdWU6IG51bWJlcjtcblxuICBnYXVzc2lhbkNoYXJ0RGF0YTogQ2hhcnREYXRhPCdsaW5lJz4gPSB7XG4gICAgbGFiZWxzOiBbXSxcbiAgICBkYXRhc2V0czogW10sXG4gIH07XG4gIGdhdXNzaWFuQ2hhcnRPcHRpb25zOiBDaGFydE9wdGlvbnM8J2xpbmUnPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYW5zbGF0aW9uQ29udGV4dCA9ICdDSEFSVFMuR0FVU1NJQU5fQ0hBUlQuJztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuc2NvcmUgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgXCJzY29yZVwiIGlzIHJlcXVpcmVkIGZvciBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50LicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5iZXN0Q2FuZGlkYXRlU2NvcmUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmJlc3RDYW5kaWRhdGVTY29yZSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBcImJlc3RDYW5kaWRhdGVTY29yZVwiIGlzIHJlcXVpcmVkIGZvciBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50LicpO1xuICAgIH1cbiAgICB0aGlzLnNldEFjdGl2ZUJ1Y2tldCgpO1xuICAgIHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24gPSBnYXVzc2lhbigwLCAxKTtcbiAgICB0aGlzLm1heFlWYWx1ZSA9IHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKDApO1xuICAgIHRoaXMuc2V0T3ZlcmxheVZhbHVlcygpO1xuICAgIHRoaXMuc2V0T3ZlcmxheVZhbHVlc0ZvckJlc3RTY29yZSgpO1xuICAgIHRoaXMuc2V0Q2hhcnREYXRhKCk7XG4gICAgdGhpcy5zZXRDaGFydE9wdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2hhcnREYXRhKCkge1xuICAgIGNvbnN0IHhWYWx1ZXM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgeVZhbHVlczogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmdlbmVyYXRlTGFiZWxzKHRoaXMubWluWFZhbHVlLCB0aGlzLm1heFhWYWx1ZSwgdGhpcy5zdGVwU2l6ZSk7XG5cbiAgICBmb3IgKGxldCB4ID0gdGhpcy5taW5YVmFsdWU7IHggPCB0aGlzLm1heFhWYWx1ZSArIHRoaXMuc3RlcFNpemU7IHggPSBOdW1iZXIoKHggKyB0aGlzLnN0ZXBTaXplKS50b0ZpeGVkKDIpKSkge1xuICAgICAgeFZhbHVlcy5wdXNoKHgpO1xuICAgICAgeVZhbHVlcy5wdXNoKHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKHgpKTtcbiAgICB9XG5cbiAgICB0aGlzLmdhdXNzaWFuQ2hhcnREYXRhID0ge1xuICAgICAgbGFiZWxzLFxuICAgICAgZGF0YXNldHM6IHRoaXMuZ2VuZXJhdGVEYXRhc2V0KHlWYWx1ZXMpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldENoYXJ0T3B0aW9ucygpIHtcbiAgICB0aGlzLmdhdXNzaWFuQ2hhcnRPcHRpb25zID0ge1xuICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgc2NhbGVzOiB0aGlzLmdldFNjYWxlKCksXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIC8vIFRvIGJlIHVzZWQgb25seSBmb3IgZGV2IHB1cnBvc2VcbiAgICAgICAgLy8gdG9vbHRpcDogdGhpcy5nZXRUb29sdGlwKCksXG4gICAgICAgIC8vIENvbW1lbnQgdGhlIGJlbG93IGxpbmUgaWYgeW91IGVuYWJsZSB0aGUgY2FsbCBmb3IgdG9vbHRpcFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb29sdGlwKCk6IF9EZWVwUGFydGlhbE9iamVjdDxUb29sdGlwT3B0aW9uczwnbGluZSc+PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludGVyc2VjdDogZmFsc2UsXG4gICAgICBtb2RlOiAnbmVhcmVzdCcsXG4gICAgICBkaXNwbGF5Q29sb3JzOiBmYWxzZSxcbiAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICBsYWJlbDogdG9vbHRpcEl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24uY2RmKHBhcnNlRmxvYXQodG9vbHRpcEl0ZW0ubGFiZWwpKSAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICAgICAgICByZXR1cm4gYCR7dmFsdWV9JWA7XG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiAoKSA9PiAnJywgLy8gRGlzYWJsZSB0aGUgZGVmYXVsdCB0aXRsZVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTY2FsZSgpOiB7XG4gICAgeDogeyBkaXNwbGF5OiBib29sZWFuOyBncmlkOiB7IGRpc3BsYXk6IGJvb2xlYW4gfSB9O1xuICAgIHk6IHsgZGlzcGxheTogYm9vbGVhbjsgZ3JpZDogeyBkaXNwbGF5OiBib29sZWFuIH0gfTtcbiAgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHtcbiAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgIGdyaWQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZSwgLy8gRGlzYWJsZSBncmlkIGxpbmVzIGZvciB4LWF4aXNcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB5OiB7XG4gICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICBncmlkOiB7XG4gICAgICAgICAgZGlzcGxheTogZmFsc2UsIC8vIERpc2FibGUgZ3JpZCBsaW5lcyBmb3IgeS1heGlzXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRGF0YXNldChcbiAgICB5VmFsdWVzOiBudW1iZXJbXVxuICApOiB7IGRhdGE6IGFueVtdOyBsYWJlbDogc3RyaW5nOyBib3JkZXJDb2xvcjogQ29sb3I7IGJvcmRlcldpZHRoOiBudW1iZXI7IHBvaW50UmFkaXVzOiBudW1iZXI7IGZpbGw6IGJvb2xlYW4gfVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBkYXRhOiBbLi4ueVZhbHVlcy5zbGljZSgwLCB0aGlzLnBvaW50c1RvU2tpcCksIC4uLkFycmF5KHlWYWx1ZXMubGVuZ3RoIC0gdGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCldLFxuICAgICAgICBsYWJlbDogJycsXG4gICAgICAgIGJvcmRlckNvbG9yOiB0aGlzLmFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1QgPyBDb2xvci5BQ0NFTlRfMjAgOiBDb2xvci5UR09fV0hJVEUsXG4gICAgICAgIGJvcmRlcldpZHRoOiAyLFxuICAgICAgICBwb2ludFJhZGl1czogMCxcbiAgICAgICAgZmlsbDogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgLi4uQXJyYXkodGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgICAgLi4ueVZhbHVlcy5zbGljZSh0aGlzLnBvaW50c1RvU2tpcCwgeVZhbHVlcy5sZW5ndGggLSB0aGlzLnBvaW50c1RvU2tpcCksXG4gICAgICAgICAgLi4uQXJyYXkodGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgIF0sXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgYm9yZGVyQ29sb3I6IENvbG9yLkJMQUNLLFxuICAgICAgICBib3JkZXJXaWR0aDogMixcbiAgICAgICAgcG9pbnRSYWRpdXM6IDAsXG4gICAgICAgIGZpbGw6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGF0YTogW1xuICAgICAgICAgIC4uLkFycmF5KHlWYWx1ZXMubGVuZ3RoIC0gdGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgICAgLi4ueVZhbHVlcy5zbGljZSh5VmFsdWVzLmxlbmd0aCAtIHRoaXMucG9pbnRzVG9Ta2lwLCB5VmFsdWVzLmxlbmd0aCksXG4gICAgICAgIF0sXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgYm9yZGVyQ29sb3I6IHRoaXMuYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1QgPyBDb2xvci5BQ0NFTlRfMjAgOiBDb2xvci5UR09fV0hJVEUsXG4gICAgICAgIGJvcmRlcldpZHRoOiAyLFxuICAgICAgICBwb2ludFJhZGl1czogMCxcbiAgICAgICAgZmlsbDogZmFsc2UsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlTGFiZWxzKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgc3RlcDogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGxhYmVscyA9IFtdO1xuICAgIGZvciAobGV0IHggPSBtaW47IHggPCBtYXggKyBzdGVwOyB4ID0gTnVtYmVyKCh4ICsgc3RlcCkudG9GaXhlZCgyKSkpIHtcbiAgICAgIGxhYmVscy5wdXNoKHgudG9GaXhlZCgxKSk7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZUJ1Y2tldCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUKSB7XG4gICAgICB0aGlzLmFjdGl2ZUJ1Y2tldCA9IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VTVCAmJiB0aGlzLnNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUikge1xuICAgICAgdGhpcy5hY3RpdmVCdWNrZXQgPSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VSO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VSICYmIHRoaXMuc2NvcmUgPCBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0UpIHtcbiAgICAgIHRoaXMuYWN0aXZlQnVja2V0ID0gUGVyY2VudGlsZVRocmVzaG9sZC5BVkVSQUdFO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0UgJiYgdGhpcy5zY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVSKSB7XG4gICAgICB0aGlzLmFjdGl2ZUJ1Y2tldCA9IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVSO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFUikge1xuICAgICAgdGhpcy5hY3RpdmVCdWNrZXQgPSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1Q7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIG1vcmUgY29udGV4dDogaHR0cHM6Ly90ZXN0Z29yaWxsYS5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1NSL3BhZ2VzLzE4MTM5MDU3MzYvUGVyY2VudGlsZXMrY3VydmUrRkUraW1wbGVtZW50YXRpb25cbiAgcHJpdmF0ZSBzZXRPdmVybGF5VmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgb3ZlcmxheVhWYWx1ZSwgb3ZlcmxheVlWYWx1ZSB9ID0gdGhpcy5jYWxjdWxhdGVPdmVybGF5VmFsdWVzKHRoaXMuc2NvcmUpO1xuICAgIHRoaXMub3ZlcmxheVhWYWx1ZSA9IG92ZXJsYXlYVmFsdWU7XG4gICAgdGhpcy5vdmVybGF5WVZhbHVlID0gb3ZlcmxheVlWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0T3ZlcmxheVZhbHVlc0ZvckJlc3RTY29yZSgpOiB2b2lkIHtcbiAgICBjb25zdCB7IG92ZXJsYXlYVmFsdWUsIG92ZXJsYXlZVmFsdWUgfSA9IHRoaXMuY2FsY3VsYXRlT3ZlcmxheVZhbHVlcyh0aGlzLmJlc3RDYW5kaWRhdGVTY29yZSk7XG4gICAgdGhpcy5vdmVybGF5WEJlc3RTY29yZVZhbHVlID0gb3ZlcmxheVhWYWx1ZTtcbiAgICB0aGlzLm92ZXJsYXlZQmVzdFNjb3JlVmFsdWUgPSBvdmVybGF5WVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVPdmVybGF5VmFsdWVzKHNjb3JlOiBudW1iZXIpOiB7IG92ZXJsYXlYVmFsdWU6IG51bWJlcjsgb3ZlcmxheVlWYWx1ZTogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHhWYWx1ZSA9IHRoaXMubWFwUmFuZ2Uoc2NvcmUsIDAsIDEwMCwgdGhpcy5taW5YVmFsdWUsIHRoaXMubWF4WFZhbHVlKTtcbiAgICBjb25zdCB5VmFsdWUgPSB0aGlzLmdhdXNzaWFuRGlzdHJpYnV0aW9uLnBkZih4VmFsdWUpO1xuICAgIGxldCBvdmVybGF5WFZhbHVlID0gc2NvcmU7XG4gICAgbGV0IG92ZXJsYXlZVmFsdWUgPSB0aGlzLm1hcFJhbmdlKHlWYWx1ZSwgdGhpcy5taW5ZVmFsdWUsIHRoaXMubWF4WVZhbHVlLCAwLCAxMDApO1xuXG4gICAgaWYgKHhWYWx1ZSA8PSB0aGlzLmFjdHVhbE1pblh2YWx1ZSB8fCB4VmFsdWUgPj0gdGhpcy5hY3R1YWxNYXhYdmFsdWUpIHtcbiAgICAgIGNvbnN0IHhWYWx1ZUV4dHJlbWUgPSB4VmFsdWUgPD0gdGhpcy5hY3R1YWxNaW5YdmFsdWUgPyB0aGlzLmFjdHVhbE1pblh2YWx1ZSA6IHRoaXMuYWN0dWFsTWF4WHZhbHVlO1xuICAgICAgY29uc3QgeVZhbHVlRXh0cmVtZSA9IHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKHhWYWx1ZUV4dHJlbWUpO1xuICAgICAgb3ZlcmxheVhWYWx1ZSA9IHRoaXMubWFwUmFuZ2UoeFZhbHVlRXh0cmVtZSwgdGhpcy5taW5YVmFsdWUsIHRoaXMubWF4WFZhbHVlLCAwLCAxMDApO1xuICAgICAgb3ZlcmxheVlWYWx1ZSA9IHRoaXMubWFwUmFuZ2UoeVZhbHVlRXh0cmVtZSwgdGhpcy5taW5ZVmFsdWUsIHRoaXMubWF4WVZhbHVlLCAwLCAxMDApO1xuICAgIH1cblxuICAgIHJldHVybiB7IG92ZXJsYXlYVmFsdWUsIG92ZXJsYXlZVmFsdWUgfTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwUmFuZ2UodmFsdWU6IG51bWJlciwgaW5NaW46IG51bWJlciwgaW5NYXg6IG51bWJlciwgb3V0TWluOiBudW1iZXIsIG91dE1heDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKCh2YWx1ZSAtIGluTWluKSAqIChvdXRNYXggLSBvdXRNaW4pKSAvIChpbk1heCAtIGluTWluKSArIG91dE1pbjtcbiAgfVxuXG4gIGdldENhbGNQb3NpdGlvbihbcGVyY2VudGFnZSwgcGl4ZWxzLCBvcGVyYXRpb24gPSAnYWRkJ106IFtudW1iZXIsIG51bWJlciwgJ2FkZCcgfCAnc3VidHJhY3QnXSk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3BlcmF0b3IgPSBvcGVyYXRpb24gPT09ICdhZGQnID8gJysnIDogJy0nO1xuICAgIHJldHVybiBgY2FsYygke3BlcmNlbnRhZ2V9JSAke29wZXJhdG9yfSAke3BpeGVsc31weClgO1xuICB9XG5cbiAgZ2V0QmVzdFNjb3JlQ29udGVudFBvc2l0aW9uKGJlc3RTY29yZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYmVzdFNjb3JlIDwgdGhpcy5iZXN0U2NvcmVUaHJlc2hvbGQgPyB0aGlzLmJlc3RTY29yZVNwYWNpbmdSaWdodCA6IHRoaXMuYmVzdFNjb3JlU3BhY2luZ0xlZnQ7XG4gIH1cblxuICBnZXRTY29yZVRyYW5zbGF0aW9uS2V5KHNjb3JlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChzY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUKSB7XG4gICAgICByZXR1cm4gJ1BFUkNFTlRJTEVfTEFCRUxfVFlQRVMuV0VMTF9CRUxPV19BVkVSQUdFJztcbiAgICB9IGVsc2UgaWYgKHNjb3JlID49IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUICYmIHNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUikge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLkJFTE9XX0FWRVJBR0UnO1xuICAgIH0gZWxzZSBpZiAoc2NvcmUgPj0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUiAmJiBzY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuQVZFUkFHRSkge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLkFWRVJBR0UnO1xuICAgIH0gZWxzZSBpZiAoc2NvcmUgPj0gUGVyY2VudGlsZVRocmVzaG9sZC5BVkVSQUdFICYmIHNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVIpIHtcbiAgICAgIHJldHVybiAnUEVSQ0VOVElMRV9MQUJFTF9UWVBFUy5BQk9WRV9BVkVSQUdFJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLldFTExfQUJPVkVfQVZFUkFHRSc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiY2hhcnQtc2VjdGlvblwiXG4gICpuZ0lmPVwic2NvcmVcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgIHRyYW5zbGF0aW9uQ29udGV4dCArICdBUklBX0xBQkVMJ1xuICAgICAgfCB1aVRyYW5zbGF0ZVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHNjb3JlOiBzY29yZSxcbiAgICAgICAgICAgIGFjdGl2ZUJ1Y2tldDogZ2V0U2NvcmVUcmFuc2xhdGlvbktleShzY29yZSkgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jLFxuICAgICAgICAgICAgYmVzdENhbmRpZGF0ZVNjb3JlOiBiZXN0Q2FuZGlkYXRlU2NvcmUsXG4gICAgICAgICAgICBhY3RpdmVCdWNrZXRCZXN0U2NvcmU6IGdldFNjb3JlVHJhbnNsYXRpb25LZXkoYmVzdENhbmRpZGF0ZVNjb3JlKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMsXG4gICAgICAgICAgfVxuICAgICAgfCBhc3luY1xuICBcIlxuICB0YWJpbmRleD1cIjBcIlxuPlxuICA8IS0tIExlZ2VuZCBwb3NpdGlvbmVkIGF0IHRvcCAtLT5cbiAgQGlmIChsZWdlbmRQb3NpdGlvbiA9PT0gJ3RvcC1zdGFydCcgfHwgbGVnZW5kUG9zaXRpb24gPT09ICd0b3AtZW5kJykge1xuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGVnZW5kVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJjaGFydC1yYW5nZS13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5vcm1hbC1jaGFydC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJub3JtYWwtY2hhcnRcIj5cbiAgICAgICAgPGNhbnZhcyBiYXNlQ2hhcnQgW2RhdGFdPVwiZ2F1c3NpYW5DaGFydERhdGFcIiBbb3B0aW9uc109XCJnYXVzc2lhbkNoYXJ0T3B0aW9uc1wiIHR5cGU9XCJsaW5lXCIgY2xhc3M9XCJjaGFydFwiPlxuICAgICAgICA8L2NhbnZhcz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwib3ZlcmxheS1pY29uXCJcbiAgICAgICAgICBbc3R5bGUuYm90dG9tXT1cIltvdmVybGF5WVZhbHVlLCAzLCAnc3VidHJhY3QnXSB8IG1lbW9pemVGdW5jOiBnZXRDYWxjUG9zaXRpb25cIlxuICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIltvdmVybGF5WFZhbHVlLCAyMCwgJ3N1YnRyYWN0J10gfCBtZW1vaXplRnVuYzogZ2V0Q2FsY1Bvc2l0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWljb25cIj5cbiAgICAgICAgICAgIDx1aS1pY29uIG5hbWU9XCJQaW4tbWFya2VyXCIgc2l6ZT1cIjQwXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJ2ZS1zY29yZVwiPnt7IHNjb3JlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYmVzdC1zY29yZVwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJbMTAwIC0gb3ZlcmxheVlCZXN0U2NvcmVWYWx1ZSwgbm9ybWFsQ29udGFpbmVyUGFkZGluZywgJ2FkZCddIHwgbWVtb2l6ZUZ1bmM6IGdldENhbGNQb3NpdGlvblwiXG4gICAgICAgICAgW3N0eWxlLmJvdHRvbV09XCJvdmVybGF5WUJlc3RTY29yZVZhbHVlICsgJyUnXCJcbiAgICAgICAgICBbc3R5bGUubGVmdF09XCJvdmVybGF5WEJlc3RTY29yZVZhbHVlICsgJyUnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYmVzdC1zY29yZS1jb250ZW50XCJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cImJlc3RDYW5kaWRhdGVTY29yZSB8IG1lbW9pemVGdW5jOiBnZXRCZXN0U2NvcmVDb250ZW50UG9zaXRpb24gOiB0aGlzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dWktaWNvbiBuYW1lPVwiVHJvcGh5XCI+PC91aS1pY29uPlxuICAgICAgICAgICAge3sgYmVzdENhbmRpZGF0ZVNjb3JlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1jb2x1bW5cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1RcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbHVtbi1pdGVtXCJcbiAgICAgICAgICAgIFtjbGFzcy50ZXh0LWJvbGRdPVwiYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VTVFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5MT1dFU1RfVE9PTFRJUCcgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5MT1dFU1QnIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbHVtbi1pdGVtXCJcbiAgICAgICAgICAgIFtjbGFzcy50ZXh0LWJvbGRdPVwiYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VSXCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIih0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkxPV0VSX1RPT0xUSVAnIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguTE9XRVInIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuQVZFUkFHRVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uLWl0ZW1cIlxuICAgICAgICAgICAgW2NsYXNzLnRleHQtYm9sZF09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuQVZFUkFHRVwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5BVkVSQUdFX1RPT0xUSVAnIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguQVZFUkFHRScgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1jb2x1bW5cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbHVtbi1pdGVtXCJcbiAgICAgICAgICAgIFtjbGFzcy50ZXh0LWJvbGRdPVwiYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFUlwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5ISUdIRVJfVE9PTFRJUCcgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5ISUdIRVInIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVTVFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uLWl0ZW1cIlxuICAgICAgICAgICAgW2NsYXNzLnRleHQtYm9sZF09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVTVFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5ISUdIRVNUX1RPT0xUSVAnIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguSElHSEVTVCcgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicmFuZ2VcIj5cbiAgICAgIDxkaXY+MTwvZGl2PlxuICAgICAgPGRpdj4yMDwvZGl2PlxuICAgICAgPGRpdj40MDwvZGl2PlxuICAgICAgPGRpdj42MDwvZGl2PlxuICAgICAgPGRpdj44MDwvZGl2PlxuICAgICAgPGRpdj45OTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIExlZ2VuZCBwb3NpdGlvbmVkIGF0IGJvdHRvbSAtLT5cbiAgQGlmIChsZWdlbmRQb3NpdGlvbiA9PT0gJ2JvdHRvbS1zdGFydCcgfHwgbGVnZW5kUG9zaXRpb24gPT09ICdib3R0b20tZW5kJykge1xuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGVnZW5kVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgfVxuPC9kaXY+XG5cbjwhLS0gUmV1c2FibGUgbGVnZW5kIHRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNsZWdlbmRUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImxlZ2VuZC1jb250YWluZXJcIiBbbmdDbGFzc109XCInbGVnZW5kLScgKyBsZWdlbmRQb3NpdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWdlbmRcIj5cbiAgICAgIDx1aS1pY29uIG5hbWU9XCJEb3RcIiBjb2xvcj1cImdyYXlcIj48L3VpLWljb24+XG4gICAgICB7eyB0cmFuc2xhdGlvbkNvbnRleHQgKyAnQ0FORElEQVRFX1NDT1JFJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGVnZW5kXCI+XG4gICAgICA8dWktaWNvbiBuYW1lPVwiVHJvcGh5XCIgY29sb3I9XCJncmF5XCI+PC91aS1pY29uPlxuICAgICAge3sgdHJhbnNsYXRpb25Db250ZXh0ICsgJ0hJR0hFU1RfU0NPUkUnIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=