@hestia-earth/ui-components 0.3.6 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/hestia-earth-ui-components.umd.js +129 -41
- package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
- package/common/blank-node-state/blank-node-state.component.d.ts +3 -1
- package/common/blank-node-state-notice/blank-node-state-notice.component.d.ts +1 -2
- package/cycles/cycles-activity-logs/cycles-activity-logs.component.d.ts +1 -0
- package/cycles/cycles-emissions-logs/cycles-emissions-logs.component.d.ts +1 -0
- package/cycles/cycles-practices-logs/cycles-practices-logs.component.d.ts +1 -0
- package/cycles/cycles-practices-timeline/cycles-practices-timeline.component.d.ts +3 -1
- package/engine/aggregation-engine.service.d.ts +1 -1
- package/engine/engine-orchestrator-edit/engine-orchestrator-edit.component.d.ts +21 -6
- package/engine/engine.module.d.ts +1 -1
- package/engine/engine.service.d.ts +10 -2
- package/esm2015/common/blank-node-state/blank-node-state.component.js +11 -5
- package/esm2015/common/blank-node-state-notice/blank-node-state-notice.component.js +2 -5
- package/esm2015/common/link-key-value/link-key-value.component.js +1 -1
- package/esm2015/cycles/cycles-activity/cycles-activity.component.js +2 -2
- package/esm2015/cycles/cycles-completeness/cycles-completeness.component.js +2 -2
- package/esm2015/cycles/cycles-emissions/cycles-emissions.component.js +2 -2
- package/esm2015/cycles/cycles-practices/cycles-practices.component.js +2 -2
- package/esm2015/cycles/cycles-practices-timeline/cycles-practices-timeline.component.js +4 -2
- package/esm2015/engine/aggregation-engine.service.js +1 -1
- package/esm2015/engine/engine-orchestrator-edit/engine-orchestrator-edit.component.js +73 -11
- package/esm2015/engine/engine.module.js +5 -5
- package/esm2015/engine/engine.service.js +13 -9
- package/esm2015/fontawesome/fontawesome.module.js +3 -3
- package/esm2015/impact-assessments/impact-assessments-products/impact-assessments-products.component.js +2 -2
- package/esm2015/sites/sites-measurements/sites-measurements.component.js +2 -2
- package/fesm2015/hestia-earth-ui-components.js +96 -34
- package/fesm2015/hestia-earth-ui-components.js.map +1 -1
- package/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.d.ts +1 -0
- package/package.json +4 -4
|
@@ -132,7 +132,7 @@ export class ImpactAssessmentsProductsComponent {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
ImpactAssessmentsProductsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsProductsComponent, deps: [{ token: i1.HeNodeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
135
|
-
ImpactAssessmentsProductsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImpactAssessmentsProductsComponent, selector: "he-impact-assessments-products", inputs: { cycles: "cycles", impactAssessments: "impactAssessments", key: "key", dataState: "dataState", filterTermTypes: "filterTermTypes", enableFilterMethodModel: "enableFilterMethodModel" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && indicators.length\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep\"></div>\n </ng-container>\n <div class=\"column is-narrow\" *ngIf=\"impactAssessments.length > 1 || enableBreakdown || !isOriginal\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"impactAssessments.length > 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"enableBreakdown\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.breakdown\" (click)=\"selectedView = View.breakdown\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Breakdown view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"showRecalculationLogs()\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"indicators.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"impactAssessments.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto py-0\">\n <div class=\"select is-small\" *ngIf=\"enableFilterMethodModel\">\n <select name=\"selectedMethodModel\"\n (change)=\"updateImpacts()\" [(ngModel)]=\"selectedMethodModel\"\n >\n <option [ngValue]=\"undefined\">Filter Model</option>\n <option *ngFor=\"let term of methodModels\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </th>\n <th class=\"has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let indicator of indicators\"\n [attr.title]=\"indicator.value.term.name\"\n >\n <he-node-link [node]=\"indicator.value.term\">\n <span>{{indicator.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/ImpactAssessment#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/ImpactAssessment#product'\" target=\"_blank\">Product</a>\n </th>\n <th *ngFor=\"let indicator of indicators\"\n [attr.title]=\"indicator.value.term.units\"\n >{{indicator.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let impactAssessment of impactAssessments; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"impactName(impactAssessment)\">\n <he-node-link [node]=\"impactAssessment\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{impactName(impactAssessment)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\" [attr.title]=\"impactAssessment.product?.units\">\n <span class=\"is-nowrap has-text-ellipsis\">1 {{impactAssessment.product?.units}}</span>\n </td>\n <td class=\"has-border-right\" [attr.title]=\"impactAssessment.product?.name\">\n <he-node-link *ngIf=\"impactAssessment.product\" [node]=\"impactAssessment.product\">\n <span>{{impactAssessment.product.name | ellipsis:30}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let indicator of indicators\">\n <span *ngIf=\"indicator.value.values[impactAssessment['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: indicator.value.values[impactAssessment['@id']], impactAssessment: impactAssessment, key: key })\"\n >\n <span pointer>{{propertyValue(indicator.value.values[impactAssessment['@id']].value, indicator.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"indicator.value.values[impactAssessment['@id']].node\"\n key=\"value\"\n [state]=\"impactAssessment.aggregated ? 'aggregated' : undefined\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-impact-assessments-indicator-breakdown-chart *ngIf=\"selectedView === View.breakdown\"\n [impactAssessment]=\"impactAssessments[0]\"\n [indicators]=\"impactAssessments[0][key]\"\n></he-impact-assessments-indicator-breakdown-chart>\n\n<he-impact-assessments-indicators-chart *ngIf=\"impactAssessments.length > 1\" [class.is-hidden]=\"selectedView !== View.chart\"\n [key]=\"key\"\n [impactAssessments]=\"impactAssessments\"\n [filterTermTypes]=\"filterTermTypes\"\n></he-impact-assessments-indicators-chart>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"impactAssessments.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select an Impact Assessment</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of impactAssessments; let i = index\" [value]=\"i\">{{i + 1}}. {{impactName(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-impact-assessments-products-logs *ngIf=\"selectedIndex >= 0\"\n [key]=\"key\"\n [impactAssessment]=\"impactAssessments[selectedIndex]\"\n [filterTermTypes]=\"filterTermTypes\"\n [originalValues]=\"originalValues[selectedIndex]?.[key]\"\n [recalculatedValues]=\"impactAssessments[selectedIndex]?.[key]\"\n ></he-impact-assessments-products-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"impactAssessments\" [filename]=\"'impact-' + key + '.csv'\" [isUpload]=\"false\"\n [headerKeys]=\"['impactAssessment.id', 'impactAssessment.@id', 'impactAssessment.' + key + '.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"impactAssessment\" let-data=\"data\" let-key=\"key\">\n <p *bindOnce=\"node\">\n <b>\n <span *ngIf=\"data.cycle\">{{cycleLabel(node.cycle)}}</span>\n <span *ngIf=\"!data.cycle\">{{data.name}}</span>\n </b>\n </p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n\n<ng-template #suggestion let-impact=\"result\" let-t=\"term\">\n <div class=\"is-block\">\n <ngb-highlight [result]=\"impact.name || impact.cycle.name\" [term]=\"t\"></ngb-highlight>\n </div>\n <div class=\"columns is-flex\">\n <div class=\"column\" *ngIf=\"impact.country\">\n <span class=\"pr-1 has-text-underline\">Country:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.country.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <div class=\"column\" *ngIf=\"impact.product\">\n <span class=\"pr-1 has-text-underline\">Product:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.product.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <div class=\"column\" *ngIf=\"impact.endDate\">\n <span class=\"pr-1 has-text-underline\">Date:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.endDate\" [term]=\"t\"></ngb-highlight></span>\n </div>\n </div>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"], components: [{ type: i2.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { type: i3.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { type: i4.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["nodeType", "dataKey", "key", "node", "state"] }, { type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted", "showUnchanged"] }, { type: i7.ImpactAssessmentsIndicatorBreakdownChartComponent, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: ["impactAssessment", "indicators"] }, { type: i8.ImpactAssessmentsIndicatorsChartComponent, selector: "he-impact-assessments-indicators-chart", inputs: ["impactAssessments", "key", "filterTermTypes"] }, { type: i9.ImpactAssessmentsProductsLogsComponent, selector: "he-impact-assessments-products-logs", inputs: ["impactAssessment", "key", "filterTermTypes", "originalValues", "recalculatedValues"] }, { type: i10.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { type: i11.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { type: i12.NgbHighlight, selector: "ngb-highlight", inputs: ["highlightClass", "result", "term"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i14.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i14.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { type: i15.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }], pipes: { "ellipsis": i16.EllipsisPipe, "default": i17.DefaultPipe, "precision": i18.PrecisionPipe } });
|
|
135
|
+
ImpactAssessmentsProductsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImpactAssessmentsProductsComponent, selector: "he-impact-assessments-products", inputs: { cycles: "cycles", impactAssessments: "impactAssessments", key: "key", dataState: "dataState", filterTermTypes: "filterTermTypes", enableFilterMethodModel: "enableFilterMethodModel" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && indicators.length\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep\"></div>\n </ng-container>\n <div class=\"column is-narrow\" *ngIf=\"impactAssessments.length > 1 || enableBreakdown || !isOriginal\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"impactAssessments.length > 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"enableBreakdown\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.breakdown\" (click)=\"selectedView = View.breakdown\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Breakdown view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"showRecalculationLogs()\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"indicators.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"impactAssessments.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto py-0\">\n <div class=\"select is-small\" *ngIf=\"enableFilterMethodModel\">\n <select name=\"selectedMethodModel\"\n (change)=\"updateImpacts()\" [(ngModel)]=\"selectedMethodModel\"\n >\n <option [ngValue]=\"undefined\">Filter Model</option>\n <option *ngFor=\"let term of methodModels\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </th>\n <th class=\"has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let indicator of indicators\"\n [attr.title]=\"indicator.value.term.name\"\n >\n <he-node-link [node]=\"indicator.value.term\">\n <span>{{indicator.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/ImpactAssessment#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/ImpactAssessment#product'\" target=\"_blank\">Product</a>\n </th>\n <th *ngFor=\"let indicator of indicators\"\n [attr.title]=\"indicator.value.term.units\"\n >{{indicator.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let impactAssessment of impactAssessments; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"impactName(impactAssessment)\">\n <he-node-link [node]=\"impactAssessment\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{impactName(impactAssessment)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\" [attr.title]=\"impactAssessment.product?.units\">\n <span class=\"is-nowrap has-text-ellipsis\">1 {{impactAssessment.product?.units}}</span>\n </td>\n <td class=\"has-border-right\" [attr.title]=\"impactAssessment.product?.name\">\n <he-node-link *ngIf=\"impactAssessment.product\" [node]=\"impactAssessment.product\">\n <span>{{impactAssessment.product.name | ellipsis:30}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let indicator of indicators\">\n <span *ngIf=\"indicator.value.values[impactAssessment['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: indicator.value.values[impactAssessment['@id']], impactAssessment: impactAssessment, key: key })\"\n >\n <span pointer>{{propertyValue(indicator.value.values[impactAssessment['@id']].value, indicator.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"indicator.value.values[impactAssessment['@id']].node\"\n key=\"value\"\n [state]=\"impactAssessment.aggregated ? 'aggregated' : undefined\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-impact-assessments-indicator-breakdown-chart *ngIf=\"selectedView === View.breakdown\"\n [impactAssessment]=\"impactAssessments[0]\"\n [indicators]=\"impactAssessments[0][key]\"\n></he-impact-assessments-indicator-breakdown-chart>\n\n<he-impact-assessments-indicators-chart *ngIf=\"impactAssessments.length > 1\" [class.is-hidden]=\"selectedView !== View.chart\"\n [key]=\"key\"\n [impactAssessments]=\"impactAssessments\"\n [filterTermTypes]=\"filterTermTypes\"\n></he-impact-assessments-indicators-chart>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"impactAssessments.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select an Impact Assessment</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of impactAssessments; let i = index\" [value]=\"i\">{{i + 1}}. {{impactName(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-impact-assessments-products-logs *ngIf=\"selectedIndex >= 0\"\n [key]=\"key\"\n [impactAssessment]=\"impactAssessments[selectedIndex]\"\n [filterTermTypes]=\"filterTermTypes\"\n [originalValues]=\"originalValues[selectedIndex]?.[key]\"\n [recalculatedValues]=\"impactAssessments[selectedIndex]?.[key]\"\n ></he-impact-assessments-products-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"impactAssessments\" [filename]=\"'impact-' + key + '.csv'\" [isUpload]=\"false\"\n [headerKeys]=\"['impactAssessment.id', 'impactAssessment.@id', 'impactAssessment.' + key + '.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"impactAssessment\" let-data=\"data\" let-key=\"key\">\n <p *bindOnce=\"node\">\n <b>\n <span *ngIf=\"data.cycle\">{{cycleLabel(node.cycle)}}</span>\n <span *ngIf=\"!data.cycle\">{{data.name}}</span>\n </b>\n </p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n\n<ng-template #suggestion let-impact=\"result\" let-t=\"term\">\n <div class=\"is-block\">\n <ngb-highlight [result]=\"impact.name || impact.cycle.name\" [term]=\"t\"></ngb-highlight>\n </div>\n <div class=\"columns is-flex\">\n <div class=\"column\" *ngIf=\"impact.country\">\n <span class=\"pr-1 has-text-underline\">Country:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.country.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <div class=\"column\" *ngIf=\"impact.product\">\n <span class=\"pr-1 has-text-underline\">Product:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.product.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <div class=\"column\" *ngIf=\"impact.endDate\">\n <span class=\"pr-1 has-text-underline\">Date:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.endDate\" [term]=\"t\"></ngb-highlight></span>\n </div>\n </div>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"], components: [{ type: i2.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { type: i3.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { type: i4.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state"] }, { type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { type: i7.ImpactAssessmentsIndicatorBreakdownChartComponent, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: ["impactAssessment", "indicators"] }, { type: i8.ImpactAssessmentsIndicatorsChartComponent, selector: "he-impact-assessments-indicators-chart", inputs: ["impactAssessments", "key", "filterTermTypes"] }, { type: i9.ImpactAssessmentsProductsLogsComponent, selector: "he-impact-assessments-products-logs", inputs: ["impactAssessment", "key", "filterTermTypes", "originalValues", "recalculatedValues"] }, { type: i10.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { type: i11.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { type: i12.NgbHighlight, selector: "ngb-highlight", inputs: ["highlightClass", "result", "term"] }], directives: [{ type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i14.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i14.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i14.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i14.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i14.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { type: i15.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }], pipes: { "ellipsis": i16.EllipsisPipe, "default": i17.DefaultPipe, "precision": i18.PrecisionPipe } });
|
|
136
136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsProductsComponent, decorators: [{
|
|
137
137
|
type: Component,
|
|
138
138
|
args: [{
|
|
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
153
153
|
}], enableFilterMethodModel: [{
|
|
154
154
|
type: Input
|
|
155
155
|
}] } });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy9pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUk5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWdCLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFKN0MsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFNMUMsSUFBSyxJQUtKO0FBTEQsV0FBSyxJQUFJO0lBQ1AsdUJBQWUsQ0FBQTtJQUNmLHVCQUFlLENBQUE7SUFDZiwrQkFBdUIsQ0FBQTtJQUN2QixxQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxJLElBQUksS0FBSixJQUFJLFFBS1I7QUFPRCxNQUFNLE9BQU8sa0NBQWtDO0lBK0I3QyxZQUNVLFdBQTBCO1FBQTFCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBL0I1QixvQkFBZSxHQUVuQixFQUFFLENBQUM7UUFLQSxzQkFBaUIsR0FBOEIsRUFBRSxDQUFDO1FBRWxELFFBQUcsR0FBcUQsU0FBUyxDQUFDO1FBTWxFLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUVoQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzlCLFlBQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNwQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRTFCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBRTFCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLGVBQVUsR0FBOEIsRUFBRSxDQUFDO0lBSS9DLENBQUM7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxtQkFBbUIsSUFBSSxPQUFPLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBVSxDQUFDLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2RixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN0QjtRQUNELElBQUksV0FBVyxJQUFJLE9BQU8sRUFBRTtZQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQWMsRUFBRSxJQUE2QjtRQUM1RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkYsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFXOztRQUM3QixPQUFPLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxlQUFlLDBDQUFFLE1BQU0sQ0FBQSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLFFBQVMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTyxNQUFNO1FBQ1osSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUI7YUFDeEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNuRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBc0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxhQUFhO1FBQ2xCLE1BQU0sNEJBQTRCLEdBQUcsZ0JBQWdCLENBQ25ELElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzFGLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3BILE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVhLGFBQWEsQ0FBQyxTQUFvQjs7O1lBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQSxNQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLDBDQUFFLE1BQU0sT0FBSyxNQUFBLElBQUksQ0FBQyxpQkFBaUIsMENBQUUsTUFBTSxDQUFBLENBQUMsQ0FBQztnQkFDNUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsaUNBQ2YsSUFBSSxLQUNQLFNBQVMsSUFDVCxDQUNILENBQ0YsQ0FBQzs7S0FDTDtJQUVhLGVBQWU7O1lBQzNCLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBVSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVUsQ0FBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hFLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLENBQUM7S0FBQTtJQUVNLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTztRQUNuQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxVQUFVLENBQUMsTUFBK0I7UUFDL0MsT0FBTyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFLLE1BQWMsQ0FBQyxFQUFFLENBQUM7SUFDN0csQ0FBQztJQUVNLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFPOztRQUN4QyxPQUFPLElBQUksS0FBSSxNQUFBLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLDBDQUFFLElBQUksQ0FBQSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxzQkFBc0IsQ0FBQztJQUN4RyxDQUFDO0lBRUQscUJBQXFCO0lBRWQsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4Qiw4QkFBOEI7UUFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVZLHFCQUFxQjs7WUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIseUNBQXlDO1lBQ3pDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2hDLENBQUM7S0FBQTs7Z0lBdElVLGtDQUFrQztvSEFBbEMsa0NBQWtDLDZSQ3ZCL0MseXNUQWtOQTs0RkQzTGEsa0NBQWtDO2tCQUw5QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFdBQVcsRUFBRSw4Q0FBOEM7b0JBQzNELFNBQVMsRUFBRSxDQUFDLDhDQUE4QyxDQUFDO2lCQUM1RDtvR0FNUyxNQUFNO3NCQURiLEtBQUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUdDLEdBQUc7c0JBRFQsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsZUFBZTtzQkFEckIsS0FBSztnQkFHQyx1QkFBdUI7c0JBRDdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElDeWNsZUpTT05MRCwgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvciwgVGVybVRlcm1UeXBlLCBUZXJtIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscy9kaXN0L3Rlcm0nO1xuY29uc3Qgb3JkZXJCeSA9IHJlcXVpcmUoJ2xvZGFzaC5vcmRlcmJ5Jyk7XG5cbmltcG9ydCB7IEhlTm9kZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUuc2VydmljZSc7XG5pbXBvcnQgeyBncm91cE5vZGVzQnlUZXJtLCBJR3JvdXBlZEtleXMsIGdyb3VwcGVkS2V5cywgaXNNZXRob2RNb2RlbEFsbG93ZWQgfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuZW51bSBWaWV3IHtcbiAgdGFibGUgPSAndGFibGUnLFxuICBjaGFydCA9ICdjaGFydCcsXG4gIGJyZWFrZG93biA9ICdicmVha2Rvd24nLFxuICBsb2dzID0gJ2xvZ3MnXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJbXBhY3RBc3Nlc3NtZW50c1Byb2R1Y3RzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBkYXRhU3RhdGVWYWx1ZXM6IHtcbiAgICBbZGF0YVN0YXRlIGluIERhdGFTdGF0ZV0/OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRFtdO1xuICB9ID0ge307XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgY3ljbGVzPzogSUN5Y2xlSlNPTkxEW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGltcGFjdEFzc2Vzc21lbnRzOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRFtdID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBrZXk6ICdlbmRwb2ludHMnIHwgJ2ltcGFjdHMnIHwgJ2VtaXNzaW9uc1Jlc291cmNlVXNlJyA9ICdpbXBhY3RzJztcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGZpbHRlclRlcm1UeXBlcz86IFRlcm1UZXJtVHlwZVtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWwgPSBmYWxzZTtcblxuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuICBwdWJsaWMgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWU7XG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMgc2hvd0Rvd25sb2FkID0gZmFsc2U7XG4gIHB1YmxpYyBWaWV3ID0gVmlldztcbiAgcHVibGljIHNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG5cbiAgcHVibGljIG1ldGhvZE1vZGVsczogVGVybVtdID0gW107XG4gIHB1YmxpYyBzZWxlY3RlZE1ldGhvZE1vZGVsPzogVGVybTtcbiAgcHVibGljIHNlbGVjdGVkSW5kZXggPSAwO1xuXG4gIHB1YmxpYyBpbmRpY2F0b3JzOiBJR3JvdXBlZEtleXM8SW5kaWNhdG9yPltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBub2RlU2VydmljZTogSGVOb2RlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgnaW1wYWN0QXNzZXNzbWVudHMnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZGF0YVN0YXRlVmFsdWVzW3RoaXMuZGF0YVN0YXRlIV0gPSBjaGFuZ2VzLmltcGFjdEFzc2Vzc21lbnRzLmN1cnJlbnRWYWx1ZS5zbGljZSgpO1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIGlmICgnZGF0YVN0YXRlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkge1xuICAgIHJldHVybiBpdGVtWydAaWQnXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcmlnaW5hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3RhdGUgPT09IERhdGFTdGF0ZS5vcmlnaW5hbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3JpZ2luYWxWYWx1ZXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLmlzT3JpZ2luYWwgPyBudWxsIDogdGhpcy5kYXRhU3RhdGVWYWx1ZXNbRGF0YVN0YXRlLm9yaWdpbmFsXSkgfHwgW107XG4gIH1cblxuICBwcml2YXRlIHRlcm1BbGxvd2VkKHRlcm0/OiBUZXJtKSB7XG4gICAgcmV0dXJuICF0aGlzLmZpbHRlclRlcm1UeXBlcz8ubGVuZ3RoIHx8ICh0aGlzLmZpbHRlclRlcm1UeXBlcyB8fCBbXSkuaW5jbHVkZXModGVybT8udGVybVR5cGUhKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCkge1xuICAgIHRoaXMudXBkYXRlSW1wYWN0cygpO1xuICAgIHRoaXMuZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWwgJiYgdGhpcy51cGRhdGVNZXRob2RNb2RlbHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWV0aG9kTW9kZWxzKCkge1xuICAgIGNvbnN0IG1ldGhvZE1vZGVscyA9IHRoaXMuaW1wYWN0QXNzZXNzbWVudHNcbiAgICAgIC5mbGF0TWFwKGltcGFjdCA9PiAoaW1wYWN0W3RoaXMua2V5XSB8fCBbXSkubWFwKHYgPT4gdi5tZXRob2RNb2RlbCkpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIHRoaXMubWV0aG9kTW9kZWxzID0gdW5pcXVlKG1ldGhvZE1vZGVscyBhcyBUZXJtW10pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUltcGFjdHMoKSB7XG4gICAgY29uc3QgaW5kaWNhdG9yUGVySW1wYWN0QXNzZXNzbWVudCA9IGdyb3VwTm9kZXNCeVRlcm08SUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvcj4oXG4gICAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzLFxuICAgICAgdGhpcy5rZXksXG4gICAgICB0aGlzLm9yaWdpbmFsVmFsdWVzLFxuICAgICAgdGhpcy5lbmFibGVGaWx0ZXJNZXRob2RNb2RlbCA/IGlzTWV0aG9kTW9kZWxBbGxvd2VkKHRoaXMuc2VsZWN0ZWRNZXRob2RNb2RlbCkgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIHRoaXMuaW5kaWNhdG9ycyA9IG9yZGVyQnkoZ3JvdXBwZWRLZXlzKGluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQpLCBbJ3ZhbHVlLm1ldGhvZFRpZXJPcmRlcicsICdrZXknXSwgWydhc2MnLCAnYXNjJ10pXG4gICAgICAuZmlsdGVyKCh7IHZhbHVlIH0pID0+IHRoaXMudGVybUFsbG93ZWQodmFsdWU/LnRlcm0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERhdGFTdGF0ZShkYXRhU3RhdGU6IERhdGFTdGF0ZSkge1xuICAgIHRoaXMuZGF0YVN0YXRlVmFsdWVzW2RhdGFTdGF0ZV0gPSB0aGlzLmRhdGFTdGF0ZVZhbHVlc1tkYXRhU3RhdGVdPy5sZW5ndGggPT09IHRoaXMuaW1wYWN0QXNzZXNzbWVudHM/Lmxlbmd0aCA/XG4gICAgICB0aGlzLmRhdGFTdGF0ZVZhbHVlc1tkYXRhU3RhdGVdIDpcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzLm1hcChub2RlID0+XG4gICAgICAgICAgdGhpcy5ub2RlU2VydmljZS5nZXQ8SUltcGFjdEFzc2Vzc21lbnRKU09OTEQ+KHtcbiAgICAgICAgICAgIC4uLm5vZGUsXG4gICAgICAgICAgICBkYXRhU3RhdGVcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVEYXRhU3RhdGUoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YVN0YXRlKHRoaXMuZGF0YVN0YXRlISk7XG4gICAgdGhpcy5pbXBhY3RBc3Nlc3NtZW50cyA9IHRoaXMuZGF0YVN0YXRlVmFsdWVzW3RoaXMuZGF0YVN0YXRlIV0hLnNsaWNlKCk7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIHBvcG92ZXIuaXNPcGVuKCkgPyBwb3BvdmVyLmNsb3NlKCkgOiBwb3BvdmVyLm9wZW4oY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgaW1wYWN0TmFtZShpbXBhY3Q6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSB7XG4gICAgcmV0dXJuIGltcGFjdC5uYW1lIHx8IChpbXBhY3QuY3ljbGUgPyB0aGlzLmN5Y2xlTGFiZWwoaW1wYWN0LmN5Y2xlKSA6IGltcGFjdFsnQGlkJ10pIHx8IChpbXBhY3QgYXMgYW55KS5pZDtcbiAgfVxuXG4gIHB1YmxpYyBjeWNsZUxhYmVsKHsgJ0BpZCc6IGlkLCBuYW1lIH06IGFueSkge1xuICAgIHJldHVybiBuYW1lIHx8ICh0aGlzLmN5Y2xlcyB8fCBbXSkuZmluZCh2ID0+IHZbJ0BpZCddID09PSBpZCk/Lm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuYWJsZUJyZWFrZG93bigpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNPcmlnaW5hbCAmJiB0aGlzLmltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmtleSAhPT0gJ2VtaXNzaW9uc1Jlc291cmNlVXNlJztcbiAgfVxuXG4gIC8vIFJlY2FsY3VsYXRpb24gbG9nc1xuXG4gIHB1YmxpYyBzZWxlY3RJbmRleCh7IHRhcmdldDogeyB2YWx1ZSB9fSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICAgIC8vIGZvcmNlIGEgcmVmcmVzaCBvZiB0aGUgbG9nc1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuc2VsZWN0ZWRJbmRleCA9ICt2YWx1ZSkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNob3dSZWNhbGN1bGF0aW9uTG9ncygpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIC8vIG1ha2Ugc3VyZSBvcmlnaW5hbCBkYXRhIGlzIGFsc28gbG9hZGVkXG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YVN0YXRlKERhdGFTdGF0ZS5vcmlnaW5hbCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBWaWV3LmxvZ3M7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLXZhcmlhYmxlIGlzLWFsaWduLWl0ZW1zLWNlbnRlciBpcy0yIG0tMFwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLWhpZGRlbi1tb2JpbGVcIj48L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy50YWJsZSAmJiBpbmRpY2F0b3JzLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLWRhcmsgaXMtb3V0bGluZWQgaXMtc21hbGxcIiAoY2xpY2spPVwic2hvd0Rvd25sb2FkID0gdHJ1ZVwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRvd25sb2FkIChDU1YpPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgY29sLXNlcFwiPjwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIiAqbmdJZj1cImltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA+IDEgfHwgZW5hYmxlQnJlYWtkb3duIHx8ICFpc09yaWdpbmFsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy50YWJsZVwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibGlzdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+VGFibGUgdmlldzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJpbXBhY3RBc3Nlc3NtZW50cy5sZW5ndGggPiAxXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5jaGFydFwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LmNoYXJ0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2hhcnQtYmFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj5DaGFydCB2aWV3PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cImVuYWJsZUJyZWFrZG93blwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcuYnJlYWtkb3duXCIgKGNsaWNrKT1cInNlbGVjdGVkVmlldyA9IFZpZXcuYnJlYWtkb3duXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2hhcnQtYmFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj5CcmVha2Rvd24gdmlldzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCIhaXNPcmlnaW5hbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9nc1wiIChjbGljayk9XCJzaG93UmVjYWxjdWxhdGlvbkxvZ3MoKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPlJlY2FsY3VsYXRpb25zIGxvZ3M8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJweC0zIHBiLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy50YWJsZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kaWNhdG9ycy5sZW5ndGg7IGVsc2UgZW1wdHlUYWJsZVwiPlxuICAgIDxoZS1kYXRhLXRhYmxlIGNsYXNzPVwibWItMSBpcy1zbWFsbFwiIFtzbWFsbF09XCJ0cnVlXCIgW25iUm93c109XCJpbXBhY3RBc3Nlc3NtZW50cy5sZW5ndGhcIiBtYXhIZWlnaHQ9XCIzMjBcIj5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGlzLW5hcnJvdyBpcy1zdHJpcGVkXCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvIHB5LTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbFwiICpuZ0lmPVwiZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWxcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJzZWxlY3RlZE1ldGhvZE1vZGVsXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlSW1wYWN0cygpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1ldGhvZE1vZGVsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPkZpbHRlciBNb2RlbDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdGVybSBvZiBtZXRob2RNb2RlbHNcIiBbbmdWYWx1ZV09XCJ0ZXJtXCI+e3t0ZXJtLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+PC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBpbmRpY2F0b3Igb2YgaW5kaWNhdG9yc1wiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImluZGljYXRvci52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImluZGljYXRvci52YWx1ZS50ZXJtXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3tpbmRpY2F0b3IudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6MzB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9JbXBhY3RBc3Nlc3NtZW50I2Z1bmN0aW9uYWxVbml0J1wiIHRhcmdldD1cIl9ibGFua1wiPkZ1bmN0aW9uYWwgdW5pdDwvYT5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9JbXBhY3RBc3Nlc3NtZW50I3Byb2R1Y3QnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+UHJvZHVjdDwvYT5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGluZGljYXRvciBvZiBpbmRpY2F0b3JzXCJcbiAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaW5kaWNhdG9yLnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgPnt7aW5kaWNhdG9yLnZhbHVlLnRlcm0udW5pdHN9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltcGFjdEFzc2Vzc21lbnQgb2YgaW1wYWN0QXNzZXNzbWVudHM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aWR0aC1hdXRvXCIgW2F0dHIudGl0bGVdPVwiaW1wYWN0TmFtZShpbXBhY3RBc3Nlc3NtZW50KVwiPlxuICAgICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwiaW1wYWN0QXNzZXNzbWVudFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1ub3dyYXAgaGFzLXRleHQtZWxsaXBzaXNcIj57e2kgKyAxfX0uIHt7aW1wYWN0TmFtZShpbXBhY3RBc3Nlc3NtZW50KX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCIgW2F0dHIudGl0bGVdPVwiaW1wYWN0QXNzZXNzbWVudC5wcm9kdWN0Py51bml0c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtbm93cmFwIGhhcy10ZXh0LWVsbGlwc2lzXCI+MSB7e2ltcGFjdEFzc2Vzc21lbnQucHJvZHVjdD8udW5pdHN9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaGFzLWJvcmRlci1yaWdodFwiIFthdHRyLnRpdGxlXT1cImltcGFjdEFzc2Vzc21lbnQucHJvZHVjdD8ubmFtZVwiPlxuICAgICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgKm5nSWY9XCJpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3RcIiBbbm9kZV09XCJpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3RcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aW1wYWN0QXNzZXNzbWVudC5wcm9kdWN0Lm5hbWUgfCBlbGxpcHNpczozMH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJpcy1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgaW5kaWNhdG9yIG9mIGluZGljYXRvcnNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImluZGljYXRvci52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dOyBlbHNlIGVtcHR5VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmlnZ2VyLXBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiZGV0YWlsc1wiIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCIgI3A9XCJuZ2JQb3BvdmVyXCIgcGxhY2VtZW50PVwibGVmdFwiIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIocCwgeyBkYXRhOiBpbmRpY2F0b3IudmFsdWUudmFsdWVzW2ltcGFjdEFzc2Vzc21lbnRbJ0BpZCddXSwgaW1wYWN0QXNzZXNzbWVudDogaW1wYWN0QXNzZXNzbWVudCwga2V5OiBrZXkgfSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+e3twcm9wZXJ0eVZhbHVlKGluZGljYXRvci52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dLnZhbHVlLCBpbmRpY2F0b3IudmFsdWUudGVybVsnQGlkJ10pIHwgcHJlY2lzaW9uOjMgfCBkZWZhdWx0OictJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJtbC0xXCJcbiAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwiaW5kaWNhdG9yLnZhbHVlLnZhbHVlc1tpbXBhY3RBc3Nlc3NtZW50WydAaWQnXV0ubm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIGtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cImltcGFjdEFzc2Vzc21lbnQuYWdncmVnYXRlZCA/ICdhZ2dyZWdhdGVkJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvaGUtZGF0YS10YWJsZT5cblxuICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZSBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZVwiPjwvaGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2U+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxoZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydCAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5icmVha2Rvd25cIlxuICBbaW1wYWN0QXNzZXNzbWVudF09XCJpbXBhY3RBc3Nlc3NtZW50c1swXVwiXG4gIFtpbmRpY2F0b3JzXT1cImltcGFjdEFzc2Vzc21lbnRzWzBdW2tleV1cIlxuPjwvaGUtaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQ+XG5cbjxoZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydCAqbmdJZj1cImltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA+IDFcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy5jaGFydFwiXG4gIFtrZXldPVwia2V5XCJcbiAgW2ltcGFjdEFzc2Vzc21lbnRzXT1cImltcGFjdEFzc2Vzc21lbnRzXCJcbiAgW2ZpbHRlclRlcm1UeXBlc109XCJmaWx0ZXJUZXJtVHlwZXNcIlxuPjwvaGUtaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvcnMtY2hhcnQ+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9ncyAmJiAhaXNPcmlnaW5hbFwiPlxuICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBwdC0yIHB4LTNcIiAqbmdJZj1cImltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA+IDFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljXCI+U2VsZWN0IGFuIEltcGFjdCBBc3Nlc3NtZW50PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aFwiPlxuICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0SW5kZXgoJGV2ZW50KVwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHZhbHVlIG9mIGltcGFjdEFzc2Vzc21lbnRzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cImlcIj57e2kgKyAxfX0uIHt7aW1wYWN0TmFtZSh2YWx1ZSl9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8aGUtaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLWxvZ3MgKm5nSWY9XCJzZWxlY3RlZEluZGV4ID49IDBcIlxuICAgIFtrZXldPVwia2V5XCJcbiAgICBbaW1wYWN0QXNzZXNzbWVudF09XCJpbXBhY3RBc3Nlc3NtZW50c1tzZWxlY3RlZEluZGV4XVwiXG4gICAgW2ZpbHRlclRlcm1UeXBlc109XCJmaWx0ZXJUZXJtVHlwZXNcIlxuICAgIFtvcmlnaW5hbFZhbHVlc109XCJvcmlnaW5hbFZhbHVlc1tzZWxlY3RlZEluZGV4XT8uW2tleV1cIlxuICAgIFtyZWNhbGN1bGF0ZWRWYWx1ZXNdPVwiaW1wYWN0QXNzZXNzbWVudHNbc2VsZWN0ZWRJbmRleF0/LltrZXldXCJcbiAgPjwvaGUtaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLWxvZ3M+XG48L25nLWNvbnRhaW5lcj5cblxuPGhlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtICpuZ0lmPVwic2hvd0Rvd25sb2FkXCJcbiAgW25vZGVzXT1cImltcGFjdEFzc2Vzc21lbnRzXCIgW2ZpbGVuYW1lXT1cIidpbXBhY3QtJyArIGtleSArICcuY3N2J1wiIFtpc1VwbG9hZF09XCJmYWxzZVwiXG4gIFtoZWFkZXJLZXlzXT1cIlsnaW1wYWN0QXNzZXNzbWVudC5pZCcsICdpbXBhY3RBc3Nlc3NtZW50LkBpZCcsICdpbXBhY3RBc3Nlc3NtZW50LicgKyBrZXkgKyAnLiddXCJcbiAgKGNsb3NlZCk9XCJzaG93RG93bmxvYWQgPSBmYWxzZVwiXG4+PC9oZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVRhYmxlPlxuICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5cbiAgICA8c3Bhbj5ObyBkYXRhPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlWYWx1ZT5cbiAgPHNwYW4+LTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlscyBsZXQtbm9kZT1cImltcGFjdEFzc2Vzc21lbnRcIiBsZXQtZGF0YT1cImRhdGFcIiBsZXQta2V5PVwia2V5XCI+XG4gIDxwICpiaW5kT25jZT1cIm5vZGVcIj5cbiAgICA8Yj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YS5jeWNsZVwiPnt7Y3ljbGVMYWJlbChub2RlLmN5Y2xlKX19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhZGF0YS5jeWNsZVwiPnt7ZGF0YS5uYW1lfX08L3NwYW4+XG4gICAgPC9iPlxuICA8L3A+XG4gIDxoZS1ub2RlLXZhbHVlLWRldGFpbHNcbiAgICBbZGF0YV09XCJkYXRhXCIgW25vZGVUeXBlXT1cIm5vZGVbJ0B0eXBlJ11cIiBbZGF0YUtleV09XCJrZXlcIlxuICA+PC9oZS1ub2RlLXZhbHVlLWRldGFpbHM+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N1Z2dlc3Rpb24gbGV0LWltcGFjdD1cInJlc3VsdFwiIGxldC10PVwidGVybVwiPlxuICA8ZGl2IGNsYXNzPVwiaXMtYmxvY2tcIj5cbiAgICA8bmdiLWhpZ2hsaWdodCBbcmVzdWx0XT1cImltcGFjdC5uYW1lIHx8IGltcGFjdC5jeWNsZS5uYW1lXCIgW3Rlcm1dPVwidFwiPjwvbmdiLWhpZ2hsaWdodD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLWZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCIgKm5nSWY9XCJpbXBhY3QuY291bnRyeVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwci0xIGhhcy10ZXh0LXVuZGVybGluZVwiPkNvdW50cnk6PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpcy1pbmxpbmUtZmxleFwiPjxuZ2ItaGlnaGxpZ2h0IFtyZXN1bHRdPVwiaW1wYWN0LmNvdW50cnkubmFtZVwiIFt0ZXJtXT1cInRcIj48L25nYi1oaWdobGlnaHQ+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIiAqbmdJZj1cImltcGFjdC5wcm9kdWN0XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInByLTEgaGFzLXRleHQtdW5kZXJsaW5lXCI+UHJvZHVjdDo8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImlzLWlubGluZS1mbGV4XCI+PG5nYi1oaWdobGlnaHQgW3Jlc3VsdF09XCJpbXBhY3QucHJvZHVjdC5uYW1lXCIgW3Rlcm1dPVwidFwiPjwvbmdiLWhpZ2hsaWdodD48L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtblwiICpuZ0lmPVwiaW1wYWN0LmVuZERhdGVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHItMSBoYXMtdGV4dC11bmRlcmxpbmVcIj5EYXRlOjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaXMtaW5saW5lLWZsZXhcIj48bmdiLWhpZ2hsaWdodCBbcmVzdWx0XT1cImltcGFjdC5lbmREYXRlXCIgW3Rlcm1dPVwidFwiPjwvbmdiLWhpZ2hsaWdodD48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy9pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUk5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWdCLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFKN0MsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFNMUMsSUFBSyxJQUtKO0FBTEQsV0FBSyxJQUFJO0lBQ1AsdUJBQWUsQ0FBQTtJQUNmLHVCQUFlLENBQUE7SUFDZiwrQkFBdUIsQ0FBQTtJQUN2QixxQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxJLElBQUksS0FBSixJQUFJLFFBS1I7QUFPRCxNQUFNLE9BQU8sa0NBQWtDO0lBK0I3QyxZQUNVLFdBQTBCO1FBQTFCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBL0I1QixvQkFBZSxH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O1lBQ3pDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2hDLENBQUM7S0FBQTs7Z0lBdElVLGtDQUFrQztvSEFBbEMsa0NBQWtDLDZSQ3ZCL0MsbXVUQWtOQTs0RkQzTGEsa0NBQWtDO2tCQUw5QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFdBQVcsRUFBRSw4Q0FBOEM7b0JBQzNELFNBQVMsRUFBRSxDQUFDLDhDQUE4QyxDQUFDO2lCQUM1RDtvR0FNUyxNQUFNO3NCQURiLEtBQUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUdDLEdBQUc7c0JBRFQsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsZUFBZTtzQkFEckIsS0FBSztnQkFHQyx1QkFBdUI7c0JBRDdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElDeWNsZUpTT05MRCwgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvciwgVGVybVRlcm1UeXBlLCBUZXJtIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscy9kaXN0L3Rlcm0nO1xuY29uc3Qgb3JkZXJCeSA9IHJlcXVpcmUoJ2xvZGFzaC5vcmRlcmJ5Jyk7XG5cbmltcG9ydCB7IEhlTm9kZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUuc2VydmljZSc7XG5pbXBvcnQgeyBncm91cE5vZGVzQnlUZXJtLCBJR3JvdXBlZEtleXMsIGdyb3VwcGVkS2V5cywgaXNNZXRob2RNb2RlbEFsbG93ZWQgfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuZW51bSBWaWV3IHtcbiAgdGFibGUgPSAndGFibGUnLFxuICBjaGFydCA9ICdjaGFydCcsXG4gIGJyZWFrZG93biA9ICdicmVha2Rvd24nLFxuICBsb2dzID0gJ2xvZ3MnXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJbXBhY3RBc3Nlc3NtZW50c1Byb2R1Y3RzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBkYXRhU3RhdGVWYWx1ZXM6IHtcbiAgICBbZGF0YVN0YXRlIGluIERhdGFTdGF0ZV0/OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRFtdO1xuICB9ID0ge307XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgY3ljbGVzPzogSUN5Y2xlSlNPTkxEW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGltcGFjdEFzc2Vzc21lbnRzOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRFtdID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBrZXk6ICdlbmRwb2ludHMnIHwgJ2ltcGFjdHMnIHwgJ2VtaXNzaW9uc1Jlc291cmNlVXNlJyA9ICdpbXBhY3RzJztcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGZpbHRlclRlcm1UeXBlcz86IFRlcm1UZXJtVHlwZVtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWwgPSBmYWxzZTtcblxuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuICBwdWJsaWMgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWU7XG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMgc2hvd0Rvd25sb2FkID0gZmFsc2U7XG4gIHB1YmxpYyBWaWV3ID0gVmlldztcbiAgcHVibGljIHNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG5cbiAgcHVibGljIG1ldGhvZE1vZGVsczogVGVybVtdID0gW107XG4gIHB1YmxpYyBzZWxlY3RlZE1ldGhvZE1vZGVsPzogVGVybTtcbiAgcHVibGljIHNlbGVjdGVkSW5kZXggPSAwO1xuXG4gIHB1YmxpYyBpbmRpY2F0b3JzOiBJR3JvdXBlZEtleXM8SW5kaWNhdG9yPltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBub2RlU2VydmljZTogSGVOb2RlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgnaW1wYWN0QXNzZXNzbWVudHMnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZGF0YVN0YXRlVmFsdWVzW3RoaXMuZGF0YVN0YXRlIV0gPSBjaGFuZ2VzLmltcGFjdEFzc2Vzc21lbnRzLmN1cnJlbnRWYWx1ZS5zbGljZSgpO1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIGlmICgnZGF0YVN0YXRlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkge1xuICAgIHJldHVybiBpdGVtWydAaWQnXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcmlnaW5hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3RhdGUgPT09IERhdGFTdGF0ZS5vcmlnaW5hbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3JpZ2luYWxWYWx1ZXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLmlzT3JpZ2luYWwgPyBudWxsIDogdGhpcy5kYXRhU3RhdGVWYWx1ZXNbRGF0YVN0YXRlLm9yaWdpbmFsXSkgfHwgW107XG4gIH1cblxuICBwcml2YXRlIHRlcm1BbGxvd2VkKHRlcm0/OiBUZXJtKSB7XG4gICAgcmV0dXJuICF0aGlzLmZpbHRlclRlcm1UeXBlcz8ubGVuZ3RoIHx8ICh0aGlzLmZpbHRlclRlcm1UeXBlcyB8fCBbXSkuaW5jbHVkZXModGVybT8udGVybVR5cGUhKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCkge1xuICAgIHRoaXMudXBkYXRlSW1wYWN0cygpO1xuICAgIHRoaXMuZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWwgJiYgdGhpcy51cGRhdGVNZXRob2RNb2RlbHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWV0aG9kTW9kZWxzKCkge1xuICAgIGNvbnN0IG1ldGhvZE1vZGVscyA9IHRoaXMuaW1wYWN0QXNzZXNzbWVudHNcbiAgICAgIC5mbGF0TWFwKGltcGFjdCA9PiAoaW1wYWN0W3RoaXMua2V5XSB8fCBbXSkubWFwKHYgPT4gdi5tZXRob2RNb2RlbCkpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIHRoaXMubWV0aG9kTW9kZWxzID0gdW5pcXVlKG1ldGhvZE1vZGVscyBhcyBUZXJtW10pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUltcGFjdHMoKSB7XG4gICAgY29uc3QgaW5kaWNhdG9yUGVySW1wYWN0QXNzZXNzbWVudCA9IGdyb3VwTm9kZXNCeVRlcm08SUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvcj4oXG4gICAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzLFxuICAgICAgdGhpcy5rZXksXG4gICAgICB0aGlzLm9yaWdpbmFsVmFsdWVzLFxuICAgICAgdGhpcy5lbmFibGVGaWx0ZXJNZXRob2RNb2RlbCA/IGlzTWV0aG9kTW9kZWxBbGxvd2VkKHRoaXMuc2VsZWN0ZWRNZXRob2RNb2RlbCkgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIHRoaXMuaW5kaWNhdG9ycyA9IG9yZGVyQnkoZ3JvdXBwZWRLZXlzKGluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQpLCBbJ3ZhbHVlLm1ldGhvZFRpZXJPcmRlcicsICdrZXknXSwgWydhc2MnLCAnYXNjJ10pXG4gICAgICAuZmlsdGVyKCh7IHZhbHVlIH0pID0+IHRoaXMudGVybUFsbG93ZWQodmFsdWU/LnRlcm0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERhdGFTdGF0ZShkYXRhU3RhdGU6IERhdGFTdGF0ZSkge1xuICAgIHRoaXMuZGF0YVN0YXRlVmFsdWVzW2RhdGFTdGF0ZV0gPSB0aGlzLmRhdGFTdGF0ZVZhbHVlc1tkYXRhU3RhdGVdPy5sZW5ndGggPT09IHRoaXMuaW1wYWN0QXNzZXNzbWVudHM/Lmxlbmd0aCA/XG4gICAgICB0aGlzLmRhdGFTdGF0ZVZhbHVlc1tkYXRhU3RhdGVdIDpcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzLm1hcChub2RlID0+XG4gICAgICAgICAgdGhpcy5ub2RlU2VydmljZS5nZXQ8SUltcGFjdEFzc2Vzc21lbnRKU09OTEQ+KHtcbiAgICAgICAgICAgIC4uLm5vZGUsXG4gICAgICAgICAgICBkYXRhU3RhdGVcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVEYXRhU3RhdGUoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YVN0YXRlKHRoaXMuZGF0YVN0YXRlISk7XG4gICAgdGhpcy5pbXBhY3RBc3Nlc3NtZW50cyA9IHRoaXMuZGF0YVN0YXRlVmFsdWVzW3RoaXMuZGF0YVN0YXRlIV0hLnNsaWNlKCk7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIHBvcG92ZXIuaXNPcGVuKCkgPyBwb3BvdmVyLmNsb3NlKCkgOiBwb3BvdmVyLm9wZW4oY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgaW1wYWN0TmFtZShpbXBhY3Q6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSB7XG4gICAgcmV0dXJuIGltcGFjdC5uYW1lIHx8IChpbXBhY3QuY3ljbGUgPyB0aGlzLmN5Y2xlTGFiZWwoaW1wYWN0LmN5Y2xlKSA6IGltcGFjdFsnQGlkJ10pIHx8IChpbXBhY3QgYXMgYW55KS5pZDtcbiAgfVxuXG4gIHB1YmxpYyBjeWNsZUxhYmVsKHsgJ0BpZCc6IGlkLCBuYW1lIH06IGFueSkge1xuICAgIHJldHVybiBuYW1lIHx8ICh0aGlzLmN5Y2xlcyB8fCBbXSkuZmluZCh2ID0+IHZbJ0BpZCddID09PSBpZCk/Lm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuYWJsZUJyZWFrZG93bigpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNPcmlnaW5hbCAmJiB0aGlzLmltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmtleSAhPT0gJ2VtaXNzaW9uc1Jlc291cmNlVXNlJztcbiAgfVxuXG4gIC8vIFJlY2FsY3VsYXRpb24gbG9nc1xuXG4gIHB1YmxpYyBzZWxlY3RJbmRleCh7IHRhcmdldDogeyB2YWx1ZSB9fSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICAgIC8vIGZvcmNlIGEgcmVmcmVzaCBvZiB0aGUgbG9nc1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuc2VsZWN0ZWRJbmRleCA9ICt2YWx1ZSkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNob3dSZWNhbGN1bGF0aW9uTG9ncygpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIC8vIG1ha2Ugc3VyZSBvcmlnaW5hbCBkYXRhIGlzIGFsc28gbG9hZGVkXG4gICAgYXdhaXQgdGhpcy5sb2FkRGF0YVN0YXRlKERhdGFTdGF0ZS5vcmlnaW5hbCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBWaWV3LmxvZ3M7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLXZhcmlhYmxlIGlzLWFsaWduLWl0ZW1zLWNlbnRlciBpcy0yIG0tMFwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLWhpZGRlbi1tb2JpbGVcIj48L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy50YWJsZSAmJiBpbmRpY2F0b3JzLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLWRhcmsgaXMtb3V0bGluZWQgaXMtc21hbGxcIiAoY2xpY2spPVwic2hvd0Rvd25sb2FkID0gdHJ1ZVwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRvd25sb2FkIChDU1YpPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgY29sLXNlcFwiPjwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIiAqbmdJZj1cImltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA+IDEgfHwgZW5hYmxlQnJlYWtkb3duIHx8ICFpc09yaWdpbmFsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy50YWJsZVwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibGlzdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+VGFibGUgdmlldzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJpbXBhY3RBc3Nlc3NtZW50cy5sZW5ndGggPiAxXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5jaGFydFwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LmNoYXJ0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2hhcnQtYmFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj5DaGFydCB2aWV3PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cImVuYWJsZUJyZWFrZG93blwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcuYnJlYWtkb3duXCIgKGNsaWNrKT1cInNlbGVjdGVkVmlldyA9IFZpZXcuYnJlYWtkb3duXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2hhcnQtYmFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj5CcmVha2Rvd24gdmlldzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCIhaXNPcmlnaW5hbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9nc1wiIChjbGljayk9XCJzaG93UmVjYWxjdWxhdGlvbkxvZ3MoKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPlJlY2FsY3VsYXRpb25zIGxvZ3M8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJweC0zIHBiLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy50YWJsZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kaWNhdG9ycy5sZW5ndGg7IGVsc2UgZW1wdHlUYWJsZVwiPlxuICAgIDxoZS1kYXRhLXRhYmxlIGNsYXNzPVwibWItMSBpcy1zbWFsbFwiIFtzbWFsbF09XCJ0cnVlXCIgW25iUm93c109XCJpbXBhY3RBc3Nlc3NtZW50cy5sZW5ndGhcIiBtYXhIZWlnaHQ9XCIzMjBcIj5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGlzLW5hcnJvdyBpcy1zdHJpcGVkXCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvIHB5LTBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbFwiICpuZ0lmPVwiZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWxcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJzZWxlY3RlZE1ldGhvZE1vZGVsXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlSW1wYWN0cygpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1ldGhvZE1vZGVsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPkZpbHRlciBNb2RlbDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdGVybSBvZiBtZXRob2RNb2RlbHNcIiBbbmdWYWx1ZV09XCJ0ZXJtXCI+e3t0ZXJtLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+PC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBpbmRpY2F0b3Igb2YgaW5kaWNhdG9yc1wiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImluZGljYXRvci52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImluZGljYXRvci52YWx1ZS50ZXJtXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3tpbmRpY2F0b3IudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6MzB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9JbXBhY3RBc3Nlc3NtZW50I2Z1bmN0aW9uYWxVbml0J1wiIHRhcmdldD1cIl9ibGFua1wiPkZ1bmN0aW9uYWwgdW5pdDwvYT5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9JbXBhY3RBc3Nlc3NtZW50I3Byb2R1Y3QnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+UHJvZHVjdDwvYT5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGluZGljYXRvciBvZiBpbmRpY2F0b3JzXCJcbiAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaW5kaWNhdG9yLnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgPnt7aW5kaWNhdG9yLnZhbHVlLnRlcm0udW5pdHN9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltcGFjdEFzc2Vzc21lbnQgb2YgaW1wYWN0QXNzZXNzbWVudHM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aWR0aC1hdXRvXCIgW2F0dHIudGl0bGVdPVwiaW1wYWN0TmFtZShpbXBhY3RBc3Nlc3NtZW50KVwiPlxuICAgICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwiaW1wYWN0QXNzZXNzbWVudFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1ub3dyYXAgaGFzLXRleHQtZWxsaXBzaXNcIj57e2kgKyAxfX0uIHt7aW1wYWN0TmFtZShpbXBhY3RBc3Nlc3NtZW50KX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCIgW2F0dHIudGl0bGVdPVwiaW1wYWN0QXNzZXNzbWVudC5wcm9kdWN0Py51bml0c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtbm93cmFwIGhhcy10ZXh0LWVsbGlwc2lzXCI+MSB7e2ltcGFjdEFzc2Vzc21lbnQucHJvZHVjdD8udW5pdHN9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaGFzLWJvcmRlci1yaWdodFwiIFthdHRyLnRpdGxlXT1cImltcGFjdEFzc2Vzc21lbnQucHJvZHVjdD8ubmFtZVwiPlxuICAgICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgKm5nSWY9XCJpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3RcIiBbbm9kZV09XCJpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3RcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aW1wYWN0QXNzZXNzbWVudC5wcm9kdWN0Lm5hbWUgfCBlbGxpcHNpczozMH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJpcy1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgaW5kaWNhdG9yIG9mIGluZGljYXRvcnNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImluZGljYXRvci52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dOyBlbHNlIGVtcHR5VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmlnZ2VyLXBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiZGV0YWlsc1wiIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCIgI3A9XCJuZ2JQb3BvdmVyXCIgcGxhY2VtZW50PVwibGVmdFwiIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIocCwgeyBkYXRhOiBpbmRpY2F0b3IudmFsdWUudmFsdWVzW2ltcGFjdEFzc2Vzc21lbnRbJ0BpZCddXSwgaW1wYWN0QXNzZXNzbWVudDogaW1wYWN0QXNzZXNzbWVudCwga2V5OiBrZXkgfSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+e3twcm9wZXJ0eVZhbHVlKGluZGljYXRvci52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dLnZhbHVlLCBpbmRpY2F0b3IudmFsdWUudGVybVsnQGlkJ10pIHwgcHJlY2lzaW9uOjMgfCBkZWZhdWx0OictJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJtbC0xXCIgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbm9kZV09XCJpbmRpY2F0b3IudmFsdWUudmFsdWVzW2ltcGFjdEFzc2Vzc21lbnRbJ0BpZCddXS5ub2RlXCJcbiAgICAgICAgICAgICAgICAgICAga2V5PVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiaW1wYWN0QXNzZXNzbWVudC5hZ2dyZWdhdGVkID8gJ2FnZ3JlZ2F0ZWQnIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9oZS1kYXRhLXRhYmxlPlxuXG4gICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZT5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGhlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0ICpuZ0lmPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmJyZWFrZG93blwiXG4gIFtpbXBhY3RBc3Nlc3NtZW50XT1cImltcGFjdEFzc2Vzc21lbnRzWzBdXCJcbiAgW2luZGljYXRvcnNdPVwiaW1wYWN0QXNzZXNzbWVudHNbMF1ba2V5XVwiXG4+PC9oZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydD5cblxuPGhlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0ICpuZ0lmPVwiaW1wYWN0QXNzZXNzbWVudHMubGVuZ3RoID4gMVwiIFtjbGFzcy5pcy1oaWRkZW5dPVwic2VsZWN0ZWRWaWV3ICE9PSBWaWV3LmNoYXJ0XCJcbiAgW2tleV09XCJrZXlcIlxuICBbaW1wYWN0QXNzZXNzbWVudHNdPVwiaW1wYWN0QXNzZXNzbWVudHNcIlxuICBbZmlsdGVyVGVybVR5cGVzXT1cImZpbHRlclRlcm1UeXBlc1wiXG4+PC9oZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydD5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzICYmICFpc09yaWdpbmFsXCI+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIHB0LTIgcHgtM1wiICpuZ0lmPVwiaW1wYWN0QXNzZXNzbWVudHMubGVuZ3RoID4gMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWNcIj5TZWxlY3QgYW4gSW1wYWN0IEFzc2Vzc21lbnQ8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGwgaXMtZnVsbHdpZHRoXCI+XG4gICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RJbmRleCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgaW1wYWN0QXNzZXNzbWVudHM7IGxldCBpID0gaW5kZXhcIiBbdmFsdWVdPVwiaVwiPnt7aSArIDF9fS4ge3tpbXBhY3ROYW1lKHZhbHVlKX19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxoZS1pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMtbG9ncyAqbmdJZj1cInNlbGVjdGVkSW5kZXggPj0gMFwiXG4gICAgW2tleV09XCJrZXlcIlxuICAgIFtpbXBhY3RBc3Nlc3NtZW50XT1cImltcGFjdEFzc2Vzc21lbnRzW3NlbGVjdGVkSW5kZXhdXCJcbiAgICBbZmlsdGVyVGVybVR5cGVzXT1cImZpbHRlclRlcm1UeXBlc1wiXG4gICAgW29yaWdpbmFsVmFsdWVzXT1cIm9yaWdpbmFsVmFsdWVzW3NlbGVjdGVkSW5kZXhdPy5ba2V5XVwiXG4gICAgW3JlY2FsY3VsYXRlZFZhbHVlc109XCJpbXBhY3RBc3Nlc3NtZW50c1tzZWxlY3RlZEluZGV4XT8uW2tleV1cIlxuICA+PC9oZS1pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMtbG9ncz5cbjwvbmctY29udGFpbmVyPlxuXG48aGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0gKm5nSWY9XCJzaG93RG93bmxvYWRcIlxuICBbbm9kZXNdPVwiaW1wYWN0QXNzZXNzbWVudHNcIiBbZmlsZW5hbWVdPVwiJ2ltcGFjdC0nICsga2V5ICsgJy5jc3YnXCIgW2lzVXBsb2FkXT1cImZhbHNlXCJcbiAgW2hlYWRlcktleXNdPVwiWydpbXBhY3RBc3Nlc3NtZW50LmlkJywgJ2ltcGFjdEFzc2Vzc21lbnQuQGlkJywgJ2ltcGFjdEFzc2Vzc21lbnQuJyArIGtleSArICcuJ11cIlxuICAoY2xvc2VkKT1cInNob3dEb3dubG9hZCA9IGZhbHNlXCJcbj48L2hlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VGFibGU+XG4gIDxkaXYgY2xhc3M9XCJoYXMtdGV4dC1jZW50ZXJlZFwiPlxuICAgIDxzcGFuPk5vIGRhdGE8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVZhbHVlPlxuICA8c3Bhbj4tPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZXRhaWxzIGxldC1ub2RlPVwiaW1wYWN0QXNzZXNzbWVudFwiIGxldC1kYXRhPVwiZGF0YVwiIGxldC1rZXk9XCJrZXlcIj5cbiAgPHAgKmJpbmRPbmNlPVwibm9kZVwiPlxuICAgIDxiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhLmN5Y2xlXCI+e3tjeWNsZUxhYmVsKG5vZGUuY3ljbGUpfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFkYXRhLmN5Y2xlXCI+e3tkYXRhLm5hbWV9fTwvc3Bhbj5cbiAgICA8L2I+XG4gIDwvcD5cbiAgPGhlLW5vZGUtdmFsdWUtZGV0YWlsc1xuICAgIFtkYXRhXT1cImRhdGFcIiBbbm9kZVR5cGVdPVwibm9kZVsnQHR5cGUnXVwiIFtkYXRhS2V5XT1cImtleVwiXG4gID48L2hlLW5vZGUtdmFsdWUtZGV0YWlscz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3VnZ2VzdGlvbiBsZXQtaW1wYWN0PVwicmVzdWx0XCIgbGV0LXQ9XCJ0ZXJtXCI+XG4gIDxkaXYgY2xhc3M9XCJpcy1ibG9ja1wiPlxuICAgIDxuZ2ItaGlnaGxpZ2h0IFtyZXN1bHRdPVwiaW1wYWN0Lm5hbWUgfHwgaW1wYWN0LmN5Y2xlLm5hbWVcIiBbdGVybV09XCJ0XCI+PC9uZ2ItaGlnaGxpZ2h0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtZmxleFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIiAqbmdJZj1cImltcGFjdC5jb3VudHJ5XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInByLTEgaGFzLXRleHQtdW5kZXJsaW5lXCI+Q291bnRyeTo8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImlzLWlubGluZS1mbGV4XCI+PG5nYi1oaWdobGlnaHQgW3Jlc3VsdF09XCJpbXBhY3QuY291bnRyeS5uYW1lXCIgW3Rlcm1dPVwidFwiPjwvbmdiLWhpZ2hsaWdodD48L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtblwiICpuZ0lmPVwiaW1wYWN0LnByb2R1Y3RcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHItMSBoYXMtdGV4dC11bmRlcmxpbmVcIj5Qcm9kdWN0Ojwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaXMtaW5saW5lLWZsZXhcIj48bmdiLWhpZ2hsaWdodCBbcmVzdWx0XT1cImltcGFjdC5wcm9kdWN0Lm5hbWVcIiBbdGVybV09XCJ0XCI+PC9uZ2ItaGlnaGxpZ2h0Pjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCIgKm5nSWY9XCJpbXBhY3QuZW5kRGF0ZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwci0xIGhhcy10ZXh0LXVuZGVybGluZVwiPkRhdGU6PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpcy1pbmxpbmUtZmxleFwiPjxuZ2ItaGlnaGxpZ2h0IFtyZXN1bHRdPVwiaW1wYWN0LmVuZERhdGVcIiBbdGVybV09XCJ0XCI+PC9uZ2ItaGlnaGxpZ2h0Pjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -70,7 +70,7 @@ export class SitesMeasurementsComponent {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
SitesMeasurementsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SitesMeasurementsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
-
SitesMeasurementsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SitesMeasurementsComponent, selector: "he-sites-measurements", inputs: { originalValues: "originalValues", sites: "sites", dataState: "dataState" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && measurements.length\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep\"></div>\n </ng-container>\n <div class=\"column is-narrow\" *ngIf=\"!isOriginal\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"measurements.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"sites.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let measurement of measurements\"\n [attr.title]=\"measurement.value.term.name\"\n >\n <he-node-link [node]=\"measurement.value.term\">\n <span>{{measurement.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let measurement of measurements\"\n [attr.title]=\"measurement.value.term.units\"\n >{{measurement.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let site of sites; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(site)\">\n <he-node-link [node]=\"site\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(site)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let measurement of measurements\">\n <span *ngIf=\"measurement.value.values[site['@id']]\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: measurement.value.values[site['@id']], site: site, key: 'measurements' })\"\n >\n <span pointer>{{measurementValue(measurement.value.values[site['@id']], measurement.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"measurement.value.values[site['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n <span *ngIf=\"!measurement.value.values[site['@id']]\">\n <span>-</span>\n <sup class=\"pl-1\" *ngIf=\"siteTooBig(site)\">(1)</sup>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n\n <p class=\"is-size-7 is-italic\" *ngIf=\"showAreaTooBig\">\n (1) This region is >{{maxAreaSize}}km2 and is too large to reliably gap fill Measurements.\n </p>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"sites.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select a Site</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of sites; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-sites-measurements-logs *ngIf=\"selectedIndex >= 0\"\n [site]=\"sites[selectedIndex]\"\n [originalValues]=\"originalValues[selectedIndex]?.measurements\"\n [recalculatedValues]=\"sites[selectedIndex]?.measurements\"\n ></he-sites-measurements-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"sites\" filename=\"site-measurements.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['site.id', 'site.@id', 'site.measurements.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"site\" let-data=\"data\" let-key=\"key\">\n <p><b>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}\n"], components: [{ type: i1.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { type: i2.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { type: i3.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i4.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["nodeType", "dataKey", "key", "node", "state"] }, { type: i5.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"
|
|
73
|
+
SitesMeasurementsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SitesMeasurementsComponent, selector: "he-sites-measurements", inputs: { originalValues: "originalValues", sites: "sites", dataState: "dataState" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && measurements.length\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep\"></div>\n </ng-container>\n <div class=\"column is-narrow\" *ngIf=\"!isOriginal\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"measurements.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"sites.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let measurement of measurements\"\n [attr.title]=\"measurement.value.term.name\"\n >\n <he-node-link [node]=\"measurement.value.term\">\n <span>{{measurement.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let measurement of measurements\"\n [attr.title]=\"measurement.value.term.units\"\n >{{measurement.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let site of sites; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(site)\">\n <he-node-link [node]=\"site\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(site)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let measurement of measurements\">\n <span *ngIf=\"measurement.value.values[site['@id']]\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: measurement.value.values[site['@id']], site: site, key: 'measurements' })\"\n >\n <span pointer>{{measurementValue(measurement.value.values[site['@id']], measurement.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"measurement.value.values[site['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n <span *ngIf=\"!measurement.value.values[site['@id']]\">\n <span>-</span>\n <sup class=\"pl-1\" *ngIf=\"siteTooBig(site)\">(1)</sup>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n\n <p class=\"is-size-7 is-italic\" *ngIf=\"showAreaTooBig\">\n (1) This region is >{{maxAreaSize}}km2 and is too large to reliably gap fill Measurements.\n </p>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"sites.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select a Site</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of sites; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-sites-measurements-logs *ngIf=\"selectedIndex >= 0\"\n [site]=\"sites[selectedIndex]\"\n [originalValues]=\"originalValues[selectedIndex]?.measurements\"\n [recalculatedValues]=\"sites[selectedIndex]?.measurements\"\n ></he-sites-measurements-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"sites\" filename=\"site-measurements.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['site.id', 'site.@id', 'site.measurements.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"site\" let-data=\"data\" let-key=\"key\">\n <p><b>{{node.name}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}\n"], components: [{ type: i1.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { type: i2.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { type: i3.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i4.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state"] }, { type: i5.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { type: i6.SitesMeasurementsLogsComponent, selector: "he-sites-measurements-logs", inputs: ["site", "originalValues", "recalculatedValues"] }, { type: i7.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { type: i8.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { type: i11.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i11.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "ellipsis": i12.EllipsisPipe, "default": i13.DefaultPipe, "precision": i14.PrecisionPipe } });
|
|
74
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SitesMeasurementsComponent, decorators: [{
|
|
75
75
|
type: Component,
|
|
76
76
|
args: [{
|
|
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
85
85
|
}], dataState: [{
|
|
86
86
|
type: Input
|
|
87
87
|
}] } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZXMtbWVhc3VyZW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaXRlcy9zaXRlcy1tZWFzdXJlbWVudHMvc2l0ZXMtbWVhc3VyZW1lbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9zaXRlcy9zaXRlcy1tZWFzdXJlbWVudHMvc2l0ZXMtbWVhc3VyZW1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWdCLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQUpsRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQU0xQyxJQUFLLElBR0o7QUFIRCxXQUFLLElBQUk7SUFDUCx1QkFBZSxDQUFBO0lBQ2YscUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFISSxJQUFJLEtBQUosSUFBSSxRQUdSO0FBT0QsTUFBTSxPQUFPLDBCQUEwQjtJQUx2QztRQU9TLG1CQUFjLEdBQWtCLEVBQUUsQ0FBQztRQUVuQyxVQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUkxQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzFCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsaUJBQVksR0FBRyxZQUFZLENBQUM7UUFDNUIscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFFcEMsaUJBQVksR0FBZ0MsRUFBRSxDQUFDO0tBeUN2RDtJQXZDQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxXQUFXLElBQUksT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNoQztJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsTUFBYyxFQUFFLElBQWlCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDL0MsQ0FBQztJQUVPLE1BQU07UUFDWixNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUMxQyxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUNoRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTztRQUNuQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQscUJBQXFCO0lBRWQsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4Qiw4QkFBOEI7UUFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7d0hBekRVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLHdLQ25CdkMsNHVMQTBJQTs0RkR2SGEsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSxxQ0FBcUM7b0JBQ2xELFNBQVMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDO2lCQUNuRDs4QkFHUSxjQUFjO3NCQURwQixLQUFLO2dCQUdDLEtBQUs7c0JBRFgsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElTaXRlSlNPTkxELCBNZWFzdXJlbWVudCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmNvbnN0IG9yZGVyQnkgPSByZXF1aXJlKCdsb2Rhc2gub3JkZXJieScpO1xuXG5pbXBvcnQgeyBtZWFzdXJlbWVudFZhbHVlLCBtYXhBcmVhU2l6ZSwgc2l0ZVRvb0JpZyB9IGZyb20gJy4uL3NpdGVzLm1vZGVsJztcbmltcG9ydCB7IGdyb3VwTm9kZXNCeVRlcm0sIElHcm91cGVkS2V5cywgZ3JvdXBwZWRLZXlzIH0gZnJvbSAnLi4vLi4vY29tbW9uL25vZGUtdXRpbHMnO1xuaW1wb3J0IHsgZGVmYXVsdExhYmVsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuZW51bSBWaWV3IHtcbiAgdGFibGUgPSAndGFibGUnLFxuICBsb2dzID0gJ2xvZ3MnXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLXNpdGVzLW1lYXN1cmVtZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaXRlcy1tZWFzdXJlbWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaXRlcy1tZWFzdXJlbWVudHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTaXRlc01lYXN1cmVtZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcmlnaW5hbFZhbHVlczogSVNpdGVKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2l0ZXM6IElTaXRlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcblxuICBwdWJsaWMgc2hvd0Rvd25sb2FkID0gZmFsc2U7XG4gIHB1YmxpYyBWaWV3ID0gVmlldztcbiAgcHVibGljIHNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gIHB1YmxpYyBzZWxlY3RlZEluZGV4ID0gMDtcbiAgcHVibGljIG1heEFyZWFTaXplID0gbWF4QXJlYVNpemU7XG4gIHB1YmxpYyBzaXRlVG9vQmlnID0gc2l0ZVRvb0JpZztcbiAgcHVibGljIGRlZmF1bHRMYWJlbCA9IGRlZmF1bHRMYWJlbDtcbiAgcHVibGljIG1lYXN1cmVtZW50VmFsdWUgPSBtZWFzdXJlbWVudFZhbHVlO1xuXG4gIHB1YmxpYyBtZWFzdXJlbWVudHM6IElHcm91cGVkS2V5czxNZWFzdXJlbWVudD5bXSA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ3NpdGVzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gICAgaWYgKCdkYXRhU3RhdGUnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBJU2l0ZUpTT05MRCkge1xuICAgIHJldHVybiBpdGVtWydAaWQnXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcmlnaW5hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3RhdGUgPT09IERhdGFTdGF0ZS5vcmlnaW5hbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCkge1xuICAgIGNvbnN0IG1lYXN1cmVtZW50c1BlclNpdGUgPSBncm91cE5vZGVzQnlUZXJtPElTaXRlSlNPTkxELCBNZWFzdXJlbWVudD4oXG4gICAgICB0aGlzLnNpdGVzLCAnbWVhc3VyZW1lbnRzJywgdGhpcy5vcmlnaW5hbFZhbHVlc1xuICAgICk7XG4gICAgdGhpcy5tZWFzdXJlbWVudHMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhtZWFzdXJlbWVudHNQZXJTaXRlKSwgWydrZXknXSwgWydhc2MnXSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIHBvcG92ZXIuaXNPcGVuKCkgPyBwb3BvdmVyLmNsb3NlKCkgOiBwb3BvdmVyLm9wZW4oY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3dBcmVhVG9vQmlnKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCAmJiAodGhpcy5zaXRlcyB8fCBbXSkuc29tZShzaXRlVG9vQmlnKTtcbiAgfVxuXG4gIC8vIFJlY2FsY3VsYXRpb24gbG9nc1xuXG4gIHB1YmxpYyBzZWxlY3RJbmRleCh7IHRhcmdldDogeyB2YWx1ZSB9fSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICAgIC8vIGZvcmNlIGEgcmVmcmVzaCBvZiB0aGUgbG9nc1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuc2VsZWN0ZWRJbmRleCA9ICt2YWx1ZSkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy12YXJpYWJsZSBpcy1hbGlnbi1pdGVtcy1jZW50ZXIgaXMtMiBtLTBcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1oaWRkZW4tbW9iaWxlXCI+PC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGUgJiYgbWVhc3VyZW1lbnRzLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLWRhcmsgaXMtb3V0bGluZWQgaXMtc21hbGxcIiAoY2xpY2spPVwic2hvd0Rvd25sb2FkID0gdHJ1ZVwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRvd25sb2FkIChDU1YpPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgY29sLXNlcFwiPjwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIiAqbmdJZj1cIiFpc09yaWdpbmFsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy50YWJsZVwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibGlzdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+VGFibGUgdmlldzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzXCIgKGNsaWNrKT1cInNlbGVjdGVkVmlldyA9IFZpZXcubG9nc1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPlJlY2FsY3VsYXRpb25zIGxvZ3M8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJweC0zIHBiLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy50YWJsZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVhc3VyZW1lbnRzLmxlbmd0aDsgZWxzZSBlbXB0eVRhYmxlXCI+XG4gICAgPGhlLWRhdGEtdGFibGUgY2xhc3M9XCJtYi0xIGlzLXNtYWxsXCIgW3NtYWxsXT1cInRydWVcIiBbbmJSb3dzXT1cInNpdGVzLmxlbmd0aFwiIG1heEhlaWdodD1cIjMyMFwiPlxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtbmFycm93IGlzLXN0cmlwZWRcIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBtZWFzdXJlbWVudCBvZiBtZWFzdXJlbWVudHNcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJtZWFzdXJlbWVudC52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cIm1lYXN1cmVtZW50LnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e21lYXN1cmVtZW50LnZhbHVlLnRlcm0ubmFtZSB8IGVsbGlwc2lzOjMwfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBtZWFzdXJlbWVudCBvZiBtZWFzdXJlbWVudHNcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJtZWFzdXJlbWVudC52YWx1ZS50ZXJtLnVuaXRzXCJcbiAgICAgICAgICAgID57e21lYXN1cmVtZW50LnZhbHVlLnRlcm0udW5pdHN9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNpdGUgb2Ygc2l0ZXM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aWR0aC1hdXRvXCIgW2F0dHIudGl0bGVdPVwiZGVmYXVsdExhYmVsKHNpdGUpXCI+XG4gICAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJzaXRlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLW5vd3JhcCBoYXMtdGV4dC1lbGxpcHNpc1wiPnt7aSArIDF9fS4ge3tkZWZhdWx0TGFiZWwoc2l0ZSl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCIgKm5nRm9yPVwibGV0IG1lYXN1cmVtZW50IG9mIG1lYXN1cmVtZW50c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWVhc3VyZW1lbnQudmFsdWUudmFsdWVzW3NpdGVbJ0BpZCddXVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRyaWdnZXItcG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIiAjcD1cIm5nYlBvcG92ZXJcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUG9wb3ZlcihwLCB7IGRhdGE6IG1lYXN1cmVtZW50LnZhbHVlLnZhbHVlc1tzaXRlWydAaWQnXV0sIHNpdGU6IHNpdGUsIGtleTogJ21lYXN1cmVtZW50cycgfSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+e3ttZWFzdXJlbWVudFZhbHVlKG1lYXN1cmVtZW50LnZhbHVlLnZhbHVlc1tzaXRlWydAaWQnXV0sIG1lYXN1cmVtZW50LnZhbHVlLnRlcm1bJ0BpZCddKSB8IHByZWNpc2lvbjozIHwgZGVmYXVsdDonLSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwibWwtMVwiXG4gICAgICAgICAgICAgICAgICAgIFtub2RlXT1cIm1lYXN1cmVtZW50LnZhbHVlLnZhbHVlc1tzaXRlWydAaWQnXV0ubm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIGtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW1lYXN1cmVtZW50LnZhbHVlLnZhbHVlc1tzaXRlWydAaWQnXV1cIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPi08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3VwIGNsYXNzPVwicGwtMVwiICpuZ0lmPVwic2l0ZVRvb0JpZyhzaXRlKVwiPigxKTwvc3VwPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvaGUtZGF0YS10YWJsZT5cblxuICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZSBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZVwiPjwvaGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2U+XG5cbiAgICA8cCBjbGFzcz1cImlzLXNpemUtNyBpcy1pdGFsaWNcIiAqbmdJZj1cInNob3dBcmVhVG9vQmlnXCI+XG4gICAgICAoMSkgVGhpcyByZWdpb24gaXMgPnt7bWF4QXJlYVNpemV9fWttMiBhbmQgaXMgdG9vIGxhcmdlIHRvIHJlbGlhYmx5IGdhcCBmaWxsIE1lYXN1cmVtZW50cy5cbiAgICA8L3A+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9ncyAmJiAhaXNPcmlnaW5hbFwiPlxuICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBwdC0yIHB4LTNcIiAqbmdJZj1cInNpdGVzLmxlbmd0aCA+IDFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljXCI+U2VsZWN0IGEgU2l0ZTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbCBpcy1mdWxsd2lkdGhcIj5cbiAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInNlbGVjdEluZGV4KCRldmVudClcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBzaXRlczsgbGV0IGkgPSBpbmRleFwiIFt2YWx1ZV09XCJpXCI+e3tpICsgMX19LiB7e2RlZmF1bHRMYWJlbCh2YWx1ZSl9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8aGUtc2l0ZXMtbWVhc3VyZW1lbnRzLWxvZ3MgKm5nSWY9XCJzZWxlY3RlZEluZGV4ID49IDBcIlxuICAgIFtzaXRlXT1cInNpdGVzW3NlbGVjdGVkSW5kZXhdXCJcbiAgICBbb3JpZ2luYWxWYWx1ZXNdPVwib3JpZ2luYWxWYWx1ZXNbc2VsZWN0ZWRJbmRleF0/Lm1lYXN1cmVtZW50c1wiXG4gICAgW3JlY2FsY3VsYXRlZFZhbHVlc109XCJzaXRlc1tzZWxlY3RlZEluZGV4XT8ubWVhc3VyZW1lbnRzXCJcbiAgPjwvaGUtc2l0ZXMtbWVhc3VyZW1lbnRzLWxvZ3M+XG48L25nLWNvbnRhaW5lcj5cblxuPGhlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtICpuZ0lmPVwic2hvd0Rvd25sb2FkXCJcbiAgW25vZGVzXT1cInNpdGVzXCIgZmlsZW5hbWU9XCJzaXRlLW1lYXN1cmVtZW50cy5jc3ZcIiBbaXNVcGxvYWRdPVwiZmFsc2VcIlxuICBbaGVhZGVyS2V5c109XCJbJ3NpdGUuaWQnLCAnc2l0ZS5AaWQnLCAnc2l0ZS5tZWFzdXJlbWVudHMuJ11cIlxuICAoY2xvc2VkKT1cInNob3dEb3dubG9hZCA9IGZhbHNlXCJcbj48L2hlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VGFibGU+XG4gIDxkaXYgY2xhc3M9XCJoYXMtdGV4dC1jZW50ZXJlZFwiPlxuICAgIDxzcGFuPk5vIGRhdGE8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVZhbHVlPlxuICA8c3Bhbj4tPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZXRhaWxzIGxldC1ub2RlPVwic2l0ZVwiIGxldC1kYXRhPVwiZGF0YVwiIGxldC1rZXk9XCJrZXlcIj5cbiAgPHA+PGI+e3tub2RlLm5hbWV9fTwvYj48L3A+XG4gIDxoZS1ub2RlLXZhbHVlLWRldGFpbHNcbiAgICBbZGF0YV09XCJkYXRhXCIgW25vZGVUeXBlXT1cIm5vZGVbJ0B0eXBlJ11cIiBbZGF0YUtleV09XCJrZXlcIlxuICA+PC9oZS1ub2RlLXZhbHVlLWRldGFpbHM+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZXMtbWVhc3VyZW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaXRlcy9zaXRlcy1tZWFzdXJlbWVudHMvc2l0ZXMtbWVhc3VyZW1lbnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9zaXRlcy9zaXRlcy1tZWFzdXJlbWVudHMvc2l0ZXMtbWVhc3VyZW1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWdCLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQUpsRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQU0xQyxJQUFLLElBR0o7QUFIRCxXQUFLLElBQUk7SUFDUCx1QkFBZSxDQUFBO0lBQ2YscUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFISSxJQUFJLEtBQUosSUFBSSxRQUdSO0FBT0QsTUFBTSxPQUFPLDBCQUEwQjtJQUx2QztRQU9TLG1CQUFjLEdBQWtCLEVBQUUsQ0FBQztRQUVuQyxVQUFLLEdBQWtCLEVBQUUsQ0FBQztRQUkxQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzFCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsaUJBQVksR0FBRyxZQUFZLENBQUM7UUFDNUIscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFFcEMsaUJBQVksR0FBZ0MsRUFBRSxDQUFDO0tBeUN2RDtJQXZDQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxXQUFXLElBQUksT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNoQztJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsTUFBYyxFQUFFLElBQWlCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDL0MsQ0FBQztJQUVPLE1BQU07UUFDWixNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUMxQyxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUNoRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTztRQUNuQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQscUJBQXFCO0lBRWQsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4Qiw4QkFBOEI7UUFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7d0hBekRVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLHdLQ25CdkMsc3dMQTBJQTs0RkR2SGEsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSxxQ0FBcUM7b0JBQ2xELFNBQVMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDO2lCQUNuRDs4QkFHUSxjQUFjO3NCQURwQixLQUFLO2dCQUdDLEtBQUs7c0JBRFgsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElTaXRlSlNPTkxELCBNZWFzdXJlbWVudCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmNvbnN0IG9yZGVyQnkgPSByZXF1aXJlKCdsb2Rhc2gub3JkZXJieScpO1xuXG5pbXBvcnQgeyBtZWFzdXJlbWVudFZhbHVlLCBtYXhBcmVhU2l6ZSwgc2l0ZVRvb0JpZyB9IGZyb20gJy4uL3NpdGVzLm1vZGVsJztcbmltcG9ydCB7IGdyb3VwTm9kZXNCeVRlcm0sIElHcm91cGVkS2V5cywgZ3JvdXBwZWRLZXlzIH0gZnJvbSAnLi4vLi4vY29tbW9uL25vZGUtdXRpbHMnO1xuaW1wb3J0IHsgZGVmYXVsdExhYmVsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuZW51bSBWaWV3IHtcbiAgdGFibGUgPSAndGFibGUnLFxuICBsb2dzID0gJ2xvZ3MnXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLXNpdGVzLW1lYXN1cmVtZW50cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaXRlcy1tZWFzdXJlbWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaXRlcy1tZWFzdXJlbWVudHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTaXRlc01lYXN1cmVtZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcmlnaW5hbFZhbHVlczogSVNpdGVKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2l0ZXM6IElTaXRlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcblxuICBwdWJsaWMgc2hvd0Rvd25sb2FkID0gZmFsc2U7XG4gIHB1YmxpYyBWaWV3ID0gVmlldztcbiAgcHVibGljIHNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gIHB1YmxpYyBzZWxlY3RlZEluZGV4ID0gMDtcbiAgcHVibGljIG1heEFyZWFTaXplID0gbWF4QXJlYVNpemU7XG4gIHB1YmxpYyBzaXRlVG9vQmlnID0gc2l0ZVRvb0JpZztcbiAgcHVibGljIGRlZmF1bHRMYWJlbCA9IGRlZmF1bHRMYWJlbDtcbiAgcHVibGljIG1lYXN1cmVtZW50VmFsdWUgPSBtZWFzdXJlbWVudFZhbHVlO1xuXG4gIHB1YmxpYyBtZWFzdXJlbWVudHM6IElHcm91cGVkS2V5czxNZWFzdXJlbWVudD5bXSA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ3NpdGVzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gICAgaWYgKCdkYXRhU3RhdGUnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBJU2l0ZUpTT05MRCkge1xuICAgIHJldHVybiBpdGVtWydAaWQnXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcmlnaW5hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3RhdGUgPT09IERhdGFTdGF0ZS5vcmlnaW5hbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCkge1xuICAgIGNvbnN0IG1lYXN1cmVtZW50c1BlclNpdGUgPSBncm91cE5vZGVzQnlUZXJtPElTaXRlSlNPTkxELCBNZWFzdXJlbWVudD4oXG4gICAgICB0aGlzLnNpdGVzLCAnbWVhc3VyZW1lbnRzJywgdGhpcy5vcmlnaW5hbFZhbHVlc1xuICAgICk7XG4gICAgdGhpcy5tZWFzdXJlbWVudHMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhtZWFzdXJlbWVudHNQZXJTaXRlKSwgWydrZXknXSwgWydhc2MnXSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIHBvcG92ZXIuaXNPcGVuKCkgPyBwb3BvdmVyLmNsb3NlKCkgOiBwb3BvdmVyLm9wZW4oY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3dBcmVhVG9vQmlnKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCAmJiAodGhpcy5zaXRlcyB8fCBbXSkuc29tZShzaXRlVG9vQmlnKTtcbiAgfVxuXG4gIC8vIFJlY2FsY3VsYXRpb24gbG9nc1xuXG4gIHB1YmxpYyBzZWxlY3RJbmRleCh7IHRhcmdldDogeyB2YWx1ZSB9fSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xuICAgIC8vIGZvcmNlIGEgcmVmcmVzaCBvZiB0aGUgbG9nc1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMuc2VsZWN0ZWRJbmRleCA9ICt2YWx1ZSkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy12YXJpYWJsZSBpcy1hbGlnbi1pdGVtcy1jZW50ZXIgaXMtMiBtLTBcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1oaWRkZW4tbW9iaWxlXCI+PC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGUgJiYgbWVhc3VyZW1lbnRzLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLWRhcmsgaXMtb3V0bGluZWQgaXMtc21hbGxcIiAoY2xpY2spPVwic2hvd0Rvd25sb2FkID0gdHJ1ZVwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRvd25sb2FkIChDU1YpPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgY29sLXNlcFwiPjwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIiAqbmdJZj1cIiFpc09yaWdpbmFsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy50YWJsZVwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibGlzdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+VGFibGUgdmlldzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzXCIgKGNsaWNrKT1cInNlbGVjdGVkVmlldyA9IFZpZXcubG9nc1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPlJlY2FsY3VsYXRpb25zIGxvZ3M8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJweC0zIHBiLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy50YWJsZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVhc3VyZW1lbnRzLmxlbmd0aDsgZWxzZSBlbXB0eVRhYmxlXCI+XG4gICAgPGhlLWRhdGEtdGFibGUgY2xhc3M9XCJtYi0xIGlzLXNtYWxsXCIgW3NtYWxsXT1cInRydWVcIiBbbmJSb3dzXT1cInNpdGVzLmxlbmd0aFwiIG1heEhlaWdodD1cIjMyMFwiPlxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtbmFycm93IGlzLXN0cmlwZWRcIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBtZWFzdXJlbWVudCBvZiBtZWFzdXJlbWVudHNcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJtZWFzdXJlbWVudC52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cIm1lYXN1cmVtZW50LnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e21lYXN1cmVtZW50LnZhbHVlLnRlcm0ubmFtZSB8IGVsbGlwc2lzOjMwfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBtZWFzdXJlbWVudCBvZiBtZWFzdXJlbWVudHNcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJtZWFzdXJlbWVudC52YWx1ZS50ZXJtLnVuaXRzXCJcbiAgICAgICAgICAgID57e21lYXN1cmVtZW50LnZhbHVlLnRlcm0udW5pdHN9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNpdGUgb2Ygc2l0ZXM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aWR0aC1hdXRvXCIgW2F0dHIudGl0bGVdPVwiZGVmYXVsdExhYmVsKHNpdGUpXCI+XG4gICAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJzaXRlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLW5vd3JhcCBoYXMtdGV4dC1lbGxpcHNpc1wiPnt7aSArIDF9fS4ge3tkZWZhdWx0TGFiZWwoc2l0ZSl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCIgKm5nRm9yPVwibGV0IG1lYXN1cmVtZW50IG9mIG1lYXN1cmVtZW50c1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWVhc3VyZW1lbnQudmFsdWUudmFsdWVzW3NpdGVbJ0BpZCddXVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRyaWdnZXItcG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIiAjcD1cIm5nYlBvcG92ZXJcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUG9wb3ZlcihwLCB7IGRhdGE6IG1lYXN1cmVtZW50LnZhbHVlLnZhbHVlc1tzaXRlWydAaWQnXV0sIHNpdGU6IHNpdGUsIGtleTogJ21lYXN1cmVtZW50cycgfSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+e3ttZWFzdXJlbWVudFZhbHVlKG1lYXN1cmVtZW50LnZhbHVlLnZhbHVlc1tzaXRlWydAaWQnXV0sIG1lYXN1cmVtZW50LnZhbHVlLnRlcm1bJ0BpZCddKSB8IHByZWNpc2lvbjozIHwgZGVmYXVsdDonLSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwibWwtMVwiIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwibWVhc3VyZW1lbnQudmFsdWUudmFsdWVzW3NpdGVbJ0BpZCddXS5ub2RlXCJcbiAgICAgICAgICAgICAgICAgICAga2V5PVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgPjwvaGUtYmxhbmstbm9kZS1zdGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbWVhc3VyZW1lbnQudmFsdWUudmFsdWVzW3NpdGVbJ0BpZCddXVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+LTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzdXAgY2xhc3M9XCJwbC0xXCIgKm5nSWY9XCJzaXRlVG9vQmlnKHNpdGUpXCI+KDEpPC9zdXA+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9oZS1kYXRhLXRhYmxlPlxuXG4gICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZT5cblxuICAgIDxwIGNsYXNzPVwiaXMtc2l6ZS03IGlzLWl0YWxpY1wiICpuZ0lmPVwic2hvd0FyZWFUb29CaWdcIj5cbiAgICAgICgxKSBUaGlzIHJlZ2lvbiBpcyA+e3ttYXhBcmVhU2l6ZX19a20yIGFuZCBpcyB0b28gbGFyZ2UgdG8gcmVsaWFibHkgZ2FwIGZpbGwgTWVhc3VyZW1lbnRzLlxuICAgIDwvcD5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzICYmICFpc09yaWdpbmFsXCI+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIHB0LTIgcHgtM1wiICpuZ0lmPVwic2l0ZXMubGVuZ3RoID4gMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWNcIj5TZWxlY3QgYSBTaXRlPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aFwiPlxuICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0SW5kZXgoJGV2ZW50KVwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHZhbHVlIG9mIHNpdGVzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cImlcIj57e2kgKyAxfX0uIHt7ZGVmYXVsdExhYmVsKHZhbHVlKX19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxoZS1zaXRlcy1tZWFzdXJlbWVudHMtbG9ncyAqbmdJZj1cInNlbGVjdGVkSW5kZXggPj0gMFwiXG4gICAgW3NpdGVdPVwic2l0ZXNbc2VsZWN0ZWRJbmRleF1cIlxuICAgIFtvcmlnaW5hbFZhbHVlc109XCJvcmlnaW5hbFZhbHVlc1tzZWxlY3RlZEluZGV4XT8ubWVhc3VyZW1lbnRzXCJcbiAgICBbcmVjYWxjdWxhdGVkVmFsdWVzXT1cInNpdGVzW3NlbGVjdGVkSW5kZXhdPy5tZWFzdXJlbWVudHNcIlxuICA+PC9oZS1zaXRlcy1tZWFzdXJlbWVudHMtbG9ncz5cbjwvbmctY29udGFpbmVyPlxuXG48aGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0gKm5nSWY9XCJzaG93RG93bmxvYWRcIlxuICBbbm9kZXNdPVwic2l0ZXNcIiBmaWxlbmFtZT1cInNpdGUtbWVhc3VyZW1lbnRzLmNzdlwiIFtpc1VwbG9hZF09XCJmYWxzZVwiXG4gIFtoZWFkZXJLZXlzXT1cIlsnc2l0ZS5pZCcsICdzaXRlLkBpZCcsICdzaXRlLm1lYXN1cmVtZW50cy4nXVwiXG4gIChjbG9zZWQpPVwic2hvd0Rvd25sb2FkID0gZmFsc2VcIlxuPjwvaGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlUYWJsZT5cbiAgPGRpdiBjbGFzcz1cImhhcy10ZXh0LWNlbnRlcmVkXCI+XG4gICAgPHNwYW4+Tm8gZGF0YTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VmFsdWU+XG4gIDxzcGFuPi08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RldGFpbHMgbGV0LW5vZGU9XCJzaXRlXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LWtleT1cImtleVwiPlxuICA8cD48Yj57e25vZGUubmFtZX19PC9iPjwvcD5cbiAgPGhlLW5vZGUtdmFsdWUtZGV0YWlsc1xuICAgIFtkYXRhXT1cImRhdGFcIiBbbm9kZVR5cGVdPVwibm9kZVsnQHR5cGUnXVwiIFtkYXRhS2V5XT1cImtleVwiXG4gID48L2hlLW5vZGUtdmFsdWUtZGV0YWlscz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|