@hestia-earth/ui-components 0.0.19 → 0.0.22

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.
Files changed (35) hide show
  1. package/bundles/hestia-earth-ui-components.umd.js +183 -452
  2. package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
  3. package/cycles/cycles-activity/cycles-activity.component.d.ts +4 -2
  4. package/cycles/cycles-completeness/cycles-completeness.component.d.ts +3 -1
  5. package/cycles/cycles-emissions/cycles-emissions.component.d.ts +3 -11
  6. package/cycles/cycles-emissions-chart/cycles-emissions-chart.component.d.ts +2 -1
  7. package/cycles/cycles-practices/cycles-practices.component.d.ts +3 -11
  8. package/cycles/cycles-result/cycles-result.component.d.ts +3 -1
  9. package/cycles/cycles.module.d.ts +5 -6
  10. package/cycles/index.d.ts +0 -1
  11. package/esm2015/cycles/cycles-activity/cycles-activity.component.js +17 -23
  12. package/esm2015/cycles/cycles-completeness/cycles-completeness.component.js +8 -2
  13. package/esm2015/cycles/cycles-emissions/cycles-emissions.component.js +17 -56
  14. package/esm2015/cycles/cycles-emissions-chart/cycles-emissions-chart.component.js +18 -8
  15. package/esm2015/cycles/cycles-practices/cycles-practices.component.js +16 -55
  16. package/esm2015/cycles/cycles-result/cycles-result.component.js +19 -6
  17. package/esm2015/cycles/cycles.module.js +4 -8
  18. package/esm2015/cycles/index.js +1 -2
  19. package/esm2015/files/files-error.model.js +3 -3
  20. package/esm2015/files/files-form/files-form.component.js +1 -1
  21. package/esm2015/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.js +24 -54
  22. package/esm2015/impact-assessments/impact-assessments-products/impact-assessments-products.component.js +30 -131
  23. package/esm2015/node/node-csv-select-headers/node-csv-select-headers.component.js +11 -7
  24. package/esm2015/sites/sites-maps/sites-maps.component.js +10 -3
  25. package/esm2015/sites/sites-measurements/sites-measurements.component.js +8 -2
  26. package/fesm2015/hestia-earth-ui-components.js +125 -350
  27. package/fesm2015/hestia-earth-ui-components.js.map +1 -1
  28. package/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.d.ts +5 -8
  29. package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +5 -30
  30. package/node/node-csv-select-headers/node-csv-select-headers.component.d.ts +9 -3
  31. package/package.json +1 -1
  32. package/sites/sites-maps/sites-maps.component.d.ts +3 -1
  33. package/sites/sites-measurements/sites-measurements.component.d.ts +3 -1
  34. package/cycles/cycles-suggest-form/cycles-suggest-form.component.d.ts +0 -23
  35. package/esm2015/cycles/cycles-suggest-form/cycles-suggest-form.component.js +0 -83
@@ -1,24 +1,21 @@
1
- import { __awaiter } from "tslib";
2
1
  import { Component, Input } from '@angular/core';
3
2
  import { DataState } from '@hestia-earth/api';
4
- import { propertyValue, groupNodesByTerm, grouppedKeys, itemColor } from '../../common/utils';
5
- import { baseUrl } from '../../common/utils';
3
+ import { baseUrl, propertyValue, groupNodesByTerm, grouppedKeys, defaultLabel } from '../../common/utils';
6
4
  import * as i0 from "@angular/core";
7
5
  import * as i1 from "@fortawesome/angular-fontawesome";
8
6
  import * as i2 from "../../node/node-link/node-link.component";
9
7
  import * as i3 from "../cycles-functional-unit-measure/cycles-functional-unit-measure.component";
10
8
  import * as i4 from "../../common/blank-node-state/blank-node-state.component";
11
9
  import * as i5 from "../../common/blank-node-state-notice/blank-node-state-notice.component";
12
- import * as i6 from "../cycles-suggest-form/cycles-suggest-form.component";
13
- import * as i7 from "../cycles-emissions-chart/cycles-emissions-chart.component";
14
- import * as i8 from "../cycles-emissions-logs/cycles-emissions-logs.component";
15
- import * as i9 from "../../node/node-csv-export-confirm/node-csv-export-confirm.component";
16
- import * as i10 from "../../node/node-value-details/node-value-details.component";
17
- import * as i11 from "@angular/common";
18
- import * as i12 from "@ng-bootstrap/ng-bootstrap";
19
- import * as i13 from "../../common/ellipsis.pipe";
20
- import * as i14 from "../../common/default.pipe";
21
- import * as i15 from "../../common/precision.pipe";
10
+ import * as i6 from "../cycles-emissions-chart/cycles-emissions-chart.component";
11
+ import * as i7 from "../cycles-emissions-logs/cycles-emissions-logs.component";
12
+ import * as i8 from "../../node/node-csv-export-confirm/node-csv-export-confirm.component";
13
+ import * as i9 from "../../node/node-value-details/node-value-details.component";
14
+ import * as i10 from "@angular/common";
15
+ import * as i11 from "@ng-bootstrap/ng-bootstrap";
16
+ import * as i12 from "../../common/ellipsis.pipe";
17
+ import * as i13 from "../../common/default.pipe";
18
+ import * as i14 from "../../common/precision.pipe";
22
19
  const orderBy = require('lodash.orderby');
23
20
  var View;
24
21
  (function (View) {
@@ -30,14 +27,13 @@ export class CyclesEmissionsComponent {
30
27
  constructor() {
31
28
  this.originalValues = [];
32
29
  this.cycles = [];
33
- this.enableCompare = true;
30
+ this.selected = [];
34
31
  this.baseUrl = baseUrl();
35
32
  this.propertyValue = propertyValue;
36
- this.itemColor = itemColor;
33
+ this.defaultLabel = defaultLabel;
37
34
  this.showDownload = false;
38
35
  this.View = View;
39
36
  this.selectedView = View.table;
40
- this.selectedCycles = [];
41
37
  this.emissions = [];
42
38
  }
43
39
  ngOnChanges(changes) {
@@ -57,51 +53,16 @@ export class CyclesEmissionsComponent {
57
53
  update() {
58
54
  const emissionsPerCycle = groupNodesByTerm(this.cycles, 'emissions', this.originalValues);
59
55
  this.emissions = orderBy(grouppedKeys(emissionsPerCycle), ['value.methodTierOrder', 'key'], ['asc', 'asc']);
60
- this.selectAllCycles();
61
56
  }
62
57
  togglePopover(popover, context) {
63
58
  return popover.isOpen() ? popover.close() : popover.open(context);
64
59
  }
65
- // Add from suggestion
66
- addCycle(cycle) {
67
- return __awaiter(this, void 0, void 0, function* () {
68
- this.cycles = [
69
- ...this.cycles,
70
- cycle
71
- ];
72
- return this.update();
73
- });
74
- }
75
- // Cycle selection
76
- selectAllCycles() {
77
- this.selectedCycles = this.cycles.slice();
78
- }
79
- unselectAllCycles() {
80
- this.selectedCycles = [];
81
- }
82
- toggleAllCycles() {
83
- return this.selectedCycles.length ? this.selectAllCycles() : this.unselectAllCycles();
84
- }
85
- selectCycle(cycle) {
86
- this.selectedCycles = [
87
- ...this.selectedCycles,
88
- cycle
89
- ];
90
- }
91
- unselectCycle(index) {
92
- this.selectedCycles.splice(index, 1);
93
- this.selectedCycles = this.selectedCycles.slice();
94
- }
95
- toggleCycle(cycle) {
96
- const index = this.selectedCycles.indexOf(cycle);
97
- return index >= 0 ? this.unselectCycle(index) : this.selectCycle(cycle);
98
- }
99
60
  isSelected(cycle) {
100
- return this.selectedCycles.includes(cycle);
61
+ return this.selected.length === 0 || this.selected.includes(cycle['@id']);
101
62
  }
102
63
  }
103
64
  CyclesEmissionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CyclesEmissionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
104
- CyclesEmissionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesEmissionsComponent, selector: "he-cycles-emissions", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"emissions.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\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=\"cycles.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=\"!isOriginal && cycles.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{emissions.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngFor=\"let emission of emissions\"\n [attr.title]=\"emission.value.term.name\"\n >\n <he-node-link [node]=\"emission.value.term\">\n <span>{{emission.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th>\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let emission of emissions\"\n [attr.title]=\"emission.value.term.units\"\n >{{emission.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"cycle.name\" [style.border-left-color]=\"itemColor(i)\">\n <label *ngIf=\"enableCompare\" class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n (change)=\"toggleCycle(cycle)\"\n [checked]=\"isSelected(cycle)\"\n >\n </label>\n <he-node-link class=\"is-inline-block\" [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{cycle.name || cycle.id}}</span>\n </he-node-link>\n </td>\n <td>\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let emission of emissions\">\n <span *ngIf=\"emission.value.values[cycle['@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: emission.value.values[cycle['@id']], cycle: cycle, key: 'emissions' })\"\n >\n <span pointer>{{propertyValue(emission.value.values[cycle['@id']].value, emission.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"emission.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n\n <he-cycles-suggest-form *ngIf=\"enableCompare\" [cycles]=\"cycles\" (cycleAdded)=\"addCycle($event)\"></he-cycles-suggest-form>\n </div>\n\n <he-cycles-emissions-chart *ngIf=\"cycles.length > 1\" [class.is-hidden]=\"selectedView !== View.chart\"\n [cycles]=\"selectedCycles\"\n ></he-cycles-emissions-chart>\n\n <he-cycles-emissions-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [cycle]=\"cycles[0]\"\n [originalValues]=\"originalValues[0]?.emissions\"\n [recalculatedValues]=\"cycles[0]?.emissions\"\n ></he-cycles-emissions-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-emissions.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.emissions.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\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=\"cycle\" 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: ["label.checkbox{width:20px}td he-node-link{width:160px}table.data-table td:first-child{border-left-width:8px}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.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i3.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { 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", "showUnchanged"] }, { type: i6.CyclesSuggestFormComponent, selector: "he-cycles-suggest-form", inputs: ["cycles"], outputs: ["cycleAdded"] }, { type: i7.CyclesEmissionsChartComponent, selector: "he-cycles-emissions-chart", inputs: ["cycles"] }, { type: i8.CyclesEmissionsLogsComponent, selector: "he-cycles-emissions-logs", inputs: ["cycle", "originalValues", "recalculatedValues"] }, { type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.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"] }], pipes: { "ellipsis": i13.EllipsisPipe, "default": i14.DefaultPipe, "precision": i15.PrecisionPipe } });
65
+ CyclesEmissionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesEmissionsComponent, selector: "he-cycles-emissions", inputs: { originalValues: "originalValues", cycles: "cycles", selected: "selected", dataState: "dataState" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"emissions.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\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=\"cycles.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=\"!isOriginal && cycles.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{emissions.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngFor=\"let emission of emissions\"\n [attr.title]=\"emission.value.term.name\"\n >\n <he-node-link [node]=\"emission.value.term\">\n <span>{{emission.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th>\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let emission of emissions\"\n [attr.title]=\"emission.value.term.units\"\n >{{emission.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr *ngIf=\"isSelected(cycle)\">\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td>\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let emission of emissions\">\n <span *ngIf=\"emission.value.values[cycle['@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: emission.value.values[cycle['@id']], cycle: cycle, key: 'emissions' })\"\n >\n <span pointer>{{propertyValue(emission.value.values[cycle['@id']].value, emission.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"emission.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n </div>\n\n <he-cycles-emissions-chart *ngIf=\"cycles.length > 1\" [class.is-hidden]=\"selectedView !== View.chart\"\n [cycles]=\"cycles\" [selected]=\"selected\"\n ></he-cycles-emissions-chart>\n\n <he-cycles-emissions-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [cycle]=\"cycles[0]\"\n [originalValues]=\"originalValues[0]?.emissions\"\n [recalculatedValues]=\"cycles[0]?.emissions\"\n ></he-cycles-emissions-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-emissions.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.emissions.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\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=\"cycle\" 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.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i3.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { 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", "showUnchanged"] }, { type: i6.CyclesEmissionsChartComponent, selector: "he-cycles-emissions-chart", inputs: ["cycles", "selected"] }, { type: i7.CyclesEmissionsLogsComponent, selector: "he-cycles-emissions-logs", inputs: ["cycle", "originalValues", "recalculatedValues"] }, { type: i8.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { type: i9.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }], pipes: { "ellipsis": i12.EllipsisPipe, "default": i13.DefaultPipe, "precision": i14.PrecisionPipe } });
105
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CyclesEmissionsComponent, decorators: [{
106
67
  type: Component,
107
68
  args: [{
@@ -113,9 +74,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
113
74
  type: Input
114
75
  }], cycles: [{
115
76
  type: Input
116
- }], dataState: [{
77
+ }], selected: [{
117
78
  type: Input
118
- }], enableCompare: [{
79
+ }], dataState: [{
119
80
  type: Input
120
81
  }] } });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWVtaXNzaW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1lbWlzc2lvbnMvY3ljbGVzLWVtaXNzaW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1lbWlzc2lvbnMvY3ljbGVzLWVtaXNzaW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUk5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFnQixZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUg3QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUsxQyxJQUFLLElBSUo7QUFKRCxXQUFLLElBQUk7SUFDUCx1QkFBZSxDQUFBO0lBQ2YsdUJBQWUsQ0FBQTtJQUNmLHFCQUFhLENBQUE7QUFDZixDQUFDLEVBSkksSUFBSSxLQUFKLElBQUksUUFJUjtBQU9ELE1BQU0sT0FBTyx3QkFBd0I7SUFMckM7UUFPUyxtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFFcEMsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFJNUIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsWUFBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzlCLGNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsU0FBSSxHQUFHLElBQUksQ0FBQztRQUNaLGlCQUFZLEdB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Q25DLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7c0hBMUZVLHdCQUF3QjswR0FBeEIsd0JBQXdCLHdNQ25CckMsNjVMQTBJQTs0RkR2SGEsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2lCQUNqRDs4QkFHUSxjQUFjO3NCQURwQixLQUFLO2dCQUdDLE1BQU07c0JBRFosS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsYUFBYTtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBFbWlzc2lvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmNvbnN0IG9yZGVyQnkgPSByZXF1aXJlKCdsb2Rhc2gub3JkZXJieScpO1xuXG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlLCBncm91cE5vZGVzQnlUZXJtLCBJR3JvdXBlZEtleXMsIGdyb3VwcGVkS2V5cywgaXRlbUNvbG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGNoYXJ0ID0gJ2NoYXJ0JyxcbiAgbG9ncyA9ICdsb2dzJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1jeWNsZXMtZW1pc3Npb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N5Y2xlcy1lbWlzc2lvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jeWNsZXMtZW1pc3Npb25zLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3ljbGVzRW1pc3Npb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIG9yaWdpbmFsVmFsdWVzOiBJQ3ljbGVKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3ljbGVzOiBJQ3ljbGVKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YVN0YXRlPzogRGF0YVN0YXRlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZW5hYmxlQ29tcGFyZSA9IHRydWU7XG5cbiAgcHVibGljIGJhc2VVcmwgPSBiYXNlVXJsKCk7XG4gIHB1YmxpYyBwcm9wZXJ0eVZhbHVlID0gcHJvcGVydHlWYWx1ZTtcbiAgcHVibGljIGl0ZW1Db2xvciA9IGl0ZW1Db2xvcjtcbiAgcHVibGljIHNob3dEb3dubG9hZCA9IGZhbHNlO1xuICBwdWJsaWMgVmlldyA9IFZpZXc7XG4gIHB1YmxpYyBzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlO1xuICBwdWJsaWMgc2VsZWN0ZWRDeWNsZXM6IElDeWNsZUpTT05MRFtdID0gW107XG5cbiAgcHVibGljIGVtaXNzaW9uczogSUdyb3VwZWRLZXlzPEVtaXNzaW9uPltdID0gW107XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgnY3ljbGVzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gICAgaWYgKCdkYXRhU3RhdGUnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBJQ3ljbGVKU09OTEQpIHtcbiAgICByZXR1cm4gaXRlbVsnQGlkJ107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3JpZ2luYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN0YXRlID09PSBEYXRhU3RhdGUub3JpZ2luYWw7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZSgpIHtcbiAgICBjb25zdCBlbWlzc2lvbnNQZXJDeWNsZSA9IGdyb3VwTm9kZXNCeVRlcm08SUN5Y2xlSlNPTkxELCBFbWlzc2lvbj4odGhpcy5jeWNsZXMsICdlbWlzc2lvbnMnLCB0aGlzLm9yaWdpbmFsVmFsdWVzKTtcbiAgICB0aGlzLmVtaXNzaW9ucyA9IG9yZGVyQnkoZ3JvdXBwZWRLZXlzKGVtaXNzaW9uc1BlckN5Y2xlKSwgWyd2YWx1ZS5tZXRob2RUaWVyT3JkZXInLCAna2V5J10sIFsnYXNjJywgJ2FzYyddKTtcbiAgICB0aGlzLnNlbGVjdEFsbEN5Y2xlcygpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVBvcG92ZXIocG9wb3ZlcjogYW55LCBjb250ZXh0OiBhbnkpIHtcbiAgICByZXR1cm4gcG9wb3Zlci5pc09wZW4oKSA/IHBvcG92ZXIuY2xvc2UoKSA6IHBvcG92ZXIub3Blbihjb250ZXh0KTtcbiAgfVxuXG4gIC8vIEFkZCBmcm9tIHN1Z2dlc3Rpb25cblxuICBwdWJsaWMgYXN5bmMgYWRkQ3ljbGUoY3ljbGU6IElDeWNsZUpTT05MRCkge1xuICAgIHRoaXMuY3ljbGVzID0gW1xuICAgICAgLi4udGhpcy5jeWNsZXMsXG4gICAgICBjeWNsZVxuICAgIF07XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gIH1cblxuICAvLyBDeWNsZSBzZWxlY3Rpb25cblxuICBwcml2YXRlIHNlbGVjdEFsbEN5Y2xlcygpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGVzID0gdGhpcy5jeWNsZXMuc2xpY2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zZWxlY3RBbGxDeWNsZXMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEN5Y2xlcyA9IFtdO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUFsbEN5Y2xlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEN5Y2xlcy5sZW5ndGggPyB0aGlzLnNlbGVjdEFsbEN5Y2xlcygpIDogdGhpcy51bnNlbGVjdEFsbEN5Y2xlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDeWNsZShjeWNsZTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgdGhpcy5zZWxlY3RlZEN5Y2xlcyA9IFtcbiAgICAgIC4uLnRoaXMuc2VsZWN0ZWRDeWNsZXMsXG4gICAgICBjeWNsZVxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHVuc2VsZWN0Q3ljbGUoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRDeWNsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGVzID0gdGhpcy5zZWxlY3RlZEN5Y2xlcy5zbGljZSgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUN5Y2xlKGN5Y2xlOiBJQ3ljbGVKU09OTEQpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDeWNsZXMuaW5kZXhPZihjeWNsZSk7XG4gICAgcmV0dXJuIGluZGV4ID49IDAgPyB0aGlzLnVuc2VsZWN0Q3ljbGUoaW5kZXgpIDogdGhpcy5zZWxlY3RDeWNsZShjeWNsZSk7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxlY3RlZChjeWNsZTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDeWNsZXMuaW5jbHVkZXMoY3ljbGUpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZW1pc3Npb25zLmxlbmd0aDsgZWxzZSBlbXB0eVRhYmxlXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLXZhcmlhYmxlIGlzLTIgbS0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1oaWRkZW4tbW9iaWxlXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIFtjbGFzcy5pcy1hY3RpdmVdPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LnRhYmxlXCIgKGNsaWNrKT1cInNlbGVjdGVkVmlldyA9IFZpZXcudGFibGVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibGlzdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlRhYmxlIHZpZXc8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwiY3ljbGVzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcuY2hhcnRcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy5jaGFydFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJjaGFydC1iYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5DaGFydCB2aWV3PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cIiFpc09yaWdpbmFsICYmIGN5Y2xlcy5sZW5ndGggPT09IDFcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9nc1wiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LmxvZ3NcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2FsY3VsYXRvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlJlY2FsY3VsYXRpb25zIGxvZ3M8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJweC0zIHBiLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy50YWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJoYXMtdGV4dC1yaWdodCBtYi0yXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLWRhcmsgaXMtb3V0bGluZWQgaXMtc21hbGxcIiAoY2xpY2spPVwic2hvd0Rvd25sb2FkID0gdHJ1ZVwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRvd25sb2FkIChDU1YpPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIGRhdGEtdGFibGUtY29udGFpbmVyIG1iLTFcIj5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGlzLW5hcnJvdyBkYXRhLXRhYmxlIGhhcy1jaGlsZHJlbi17e2VtaXNzaW9ucy5sZW5ndGh9fVwiPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgZW1pc3Npb24gb2YgZW1pc3Npb25zXCJcbiAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiZW1pc3Npb24udmFsdWUudGVybS5uYW1lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJlbWlzc2lvbi52YWx1ZS50ZXJtXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3tlbWlzc2lvbi52YWx1ZS50ZXJtLm5hbWUgfCBlbGxpcHNpczozMH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvXCI+PC90aD5cbiAgICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiYmFzZVVybCArICcvc2NoZW1hL0N5Y2xlI2Z1bmN0aW9uYWxVbml0J1wiIHRhcmdldD1cIl9ibGFua1wiPkZ1bmN0aW9uYWwgdW5pdDwvYT5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGVtaXNzaW9uIG9mIGVtaXNzaW9uc1wiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImVtaXNzaW9uLnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgPnt7ZW1pc3Npb24udmFsdWUudGVybS51bml0c319PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBjeWNsZSBvZiBjeWNsZXM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwid2lkdGgtYXV0b1wiIFthdHRyLnRpdGxlXT1cImN5Y2xlLm5hbWVcIiBbc3R5bGUuYm9yZGVyLWxlZnQtY29sb3JdPVwiaXRlbUNvbG9yKGkpXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cImVuYWJsZUNvbXBhcmVcIiBjbGFzcz1cImlzLWlubGluZS1ibG9jayBjaGVja2JveFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cInNlbGVjdG9yXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlQ3ljbGUoY3ljbGUpXCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoY3ljbGUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgY2xhc3M9XCJpcy1pbmxpbmUtYmxvY2tcIiBbbm9kZV09XCJjeWNsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtbm93cmFwIGhhcy10ZXh0LWVsbGlwc2lzXCI+e3tpICsgMX19LiB7e2N5Y2xlLm5hbWUgfHwgY3ljbGUuaWR9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICA8aGUtY3ljbGVzLWZ1bmN0aW9uYWwtdW5pdC1tZWFzdXJlIFtjeWNsZV09XCJjeWNsZXNbMF1cIj48L2hlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJpcy1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgZW1pc3Npb24gb2YgZW1pc3Npb25zXCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW1pc3Npb24udmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV07IGVsc2UgZW1wdHlWYWx1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmlnZ2VyLXBvcG92ZXJcIlxuICAgICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImRldGFpbHNcIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIiAjcD1cIm5nYlBvcG92ZXJcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIocCwgeyBkYXRhOiBlbWlzc2lvbi52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXSwgY3ljbGU6IGN5Y2xlLCBrZXk6ICdlbWlzc2lvbnMnIH0pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+e3twcm9wZXJ0eVZhbHVlKGVtaXNzaW9uLnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLnZhbHVlLCBlbWlzc2lvbi52YWx1ZS50ZXJtWydAaWQnXSkgfCBwcmVjaXNpb246MyB8IGRlZmF1bHQ6Jy0nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJtbC0xXCJcbiAgICAgICAgICAgICAgICAgIFtub2RlXT1cImVtaXNzaW9uLnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLm5vZGVzWzBdXCJcbiAgICAgICAgICAgICAgICAgIGtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuXG4gICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCIgW3Nob3dEZWxldGVkXT1cInRydWVcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlPlxuXG4gICAgPGhlLWN5Y2xlcy1zdWdnZXN0LWZvcm0gKm5nSWY9XCJlbmFibGVDb21wYXJlXCIgW2N5Y2xlc109XCJjeWNsZXNcIiAoY3ljbGVBZGRlZCk9XCJhZGRDeWNsZSgkZXZlbnQpXCI+PC9oZS1jeWNsZXMtc3VnZ2VzdC1mb3JtPlxuICA8L2Rpdj5cblxuICA8aGUtY3ljbGVzLWVtaXNzaW9ucy1jaGFydCAqbmdJZj1cImN5Y2xlcy5sZW5ndGggPiAxXCIgW2NsYXNzLmlzLWhpZGRlbl09XCJzZWxlY3RlZFZpZXcgIT09IFZpZXcuY2hhcnRcIlxuICAgIFtjeWNsZXNdPVwic2VsZWN0ZWRDeWNsZXNcIlxuICA+PC9oZS1jeWNsZXMtZW1pc3Npb25zLWNoYXJ0PlxuXG4gIDxoZS1jeWNsZXMtZW1pc3Npb25zLWxvZ3MgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9ncyAmJiAhaXNPcmlnaW5hbFwiXG4gICAgW2N5Y2xlXT1cImN5Y2xlc1swXVwiXG4gICAgW29yaWdpbmFsVmFsdWVzXT1cIm9yaWdpbmFsVmFsdWVzWzBdPy5lbWlzc2lvbnNcIlxuICAgIFtyZWNhbGN1bGF0ZWRWYWx1ZXNdPVwiY3ljbGVzWzBdPy5lbWlzc2lvbnNcIlxuICA+PC9oZS1jeWNsZXMtZW1pc3Npb25zLWxvZ3M+XG48L25nLWNvbnRhaW5lcj5cblxuPGhlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtICpuZ0lmPVwic2hvd0Rvd25sb2FkXCJcbiAgW25vZGVzXT1cImN5Y2xlc1wiIGZpbGVuYW1lPVwiY3ljbGUtZW1pc3Npb25zLmNzdlwiIFtpc1VwbG9hZF09XCJmYWxzZVwiXG4gIFtoZWFkZXJLZXlzXT1cIlsnY3ljbGUuaWQnLCAnY3ljbGUuQGlkJywgJ2N5Y2xlLmVtaXNzaW9ucy4nXVwiXG4gIChjbG9zZWQpPVwic2hvd0Rvd25sb2FkID0gZmFsc2VcIlxuPjwvaGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlUYWJsZT5cbiAgPGRpdiBjbGFzcz1cInBhbmVsLWJsb2NrXCI+XG4gICAgPHNwYW4+Tm8gZGF0YTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VmFsdWU+XG4gIDxzcGFuPi08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RldGFpbHMgbGV0LW5vZGU9XCJjeWNsZVwiIGxldC1kYXRhPVwiZGF0YVwiIGxldC1rZXk9XCJrZXlcIj5cbiAgPHA+PGI+e3tub2RlLm5hbWV9fTwvYj48L3A+XG4gIDxoZS1ub2RlLXZhbHVlLWRldGFpbHNcbiAgICBbZGF0YV09XCJkYXRhXCIgW25vZGVUeXBlXT1cIm5vZGVbJ0B0eXBlJ11cIiBbZGF0YUtleV09XCJrZXlcIlxuICA+PC9oZS1ub2RlLXZhbHVlLWRldGFpbHM+XG48L25nLXRlbXBsYXRlPlxuIl19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWVtaXNzaW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1lbWlzc2lvbnMvY3ljbGVzLWVtaXNzaW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1lbWlzc2lvbnMvY3ljbGVzLWVtaXNzaW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFnQixZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFGeEgsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFJMUMsSUFBSyxJQUlKO0FBSkQsV0FBSyxJQUFJO0lBQ1AsdUJBQWUsQ0FBQTtJQUNmLHVCQUFlLENBQUE7SUFDZixxQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpJLElBQUksS0FBSixJQUFJLFFBSVI7QUFPRCxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBT1MsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBRTVCLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFJeEIsWUFBTyxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzlCLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1FBQzVCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixpQkFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFMUIsY0FBUyxHQUE2QixFQUFFLENBQUM7S0ErQmpEO0lBN0JDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdEI7UUFDRCxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFjLEVBQUUsSUFBa0I7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUMvQyxDQUFDO0lBRU8sTUFBTTtRQUNaLE1BQU0saUJBQWlCLEdBQUcsZ0JBQWdCLENBQXlCLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsSCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUFZLEVBQUUsT0FBWTtRQUM3QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBbUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7c0hBL0NVLHdCQUF3QjswR0FBeEIsd0JBQXdCLDhMQ2xCckMsd2tMQW9JQTs0RkRsSGEsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2lCQUNqRDs4QkFHUSxjQUFjO3NCQURwQixLQUFLO2dCQUdDLE1BQU07c0JBRFosS0FBSztnQkFHQyxRQUFRO3NCQURkLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBJQ3ljbGVKU09OTEQsIEVtaXNzaW9uIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuY29uc3Qgb3JkZXJCeSA9IHJlcXVpcmUoJ2xvZGFzaC5vcmRlcmJ5Jyk7XG5cbmltcG9ydCB7IGJhc2VVcmwsIHByb3BlcnR5VmFsdWUsIGdyb3VwTm9kZXNCeVRlcm0sIElHcm91cGVkS2V5cywgZ3JvdXBwZWRLZXlzLCBkZWZhdWx0TGFiZWwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGNoYXJ0ID0gJ2NoYXJ0JyxcbiAgbG9ncyA9ICdsb2dzJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1jeWNsZXMtZW1pc3Npb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N5Y2xlcy1lbWlzc2lvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jeWNsZXMtZW1pc3Npb25zLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3ljbGVzRW1pc3Npb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIG9yaWdpbmFsVmFsdWVzOiBJQ3ljbGVKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3ljbGVzOiBJQ3ljbGVKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWQ6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRhU3RhdGU/OiBEYXRhU3RhdGU7XG5cbiAgcHVibGljIGJhc2VVcmwgPSBiYXNlVXJsKCk7XG4gIHB1YmxpYyBwcm9wZXJ0eVZhbHVlID0gcHJvcGVydHlWYWx1ZTtcbiAgcHVibGljIGRlZmF1bHRMYWJlbCA9IGRlZmF1bHRMYWJlbDtcbiAgcHVibGljIHNob3dEb3dubG9hZCA9IGZhbHNlO1xuICBwdWJsaWMgVmlldyA9IFZpZXc7XG4gIHB1YmxpYyBzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlO1xuXG4gIHB1YmxpYyBlbWlzc2lvbnM6IElHcm91cGVkS2V5czxFbWlzc2lvbj5bXSA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2N5Y2xlcycgaW4gY2hhbmdlcykge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIGlmICgnZGF0YVN0YXRlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJZChfaW5kZXg6IG51bWJlciwgaXRlbTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09yaWdpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLm9yaWdpbmFsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgY29uc3QgZW1pc3Npb25zUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgRW1pc3Npb24+KHRoaXMuY3ljbGVzLCAnZW1pc3Npb25zJywgdGhpcy5vcmlnaW5hbFZhbHVlcyk7XG4gICAgdGhpcy5lbWlzc2lvbnMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhlbWlzc2lvbnNQZXJDeWNsZSksIFsndmFsdWUubWV0aG9kVGllck9yZGVyJywgJ2tleSddLCBbJ2FzYycsICdhc2MnXSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyOiBhbnksIGNvbnRleHQ6IGFueSkge1xuICAgIHJldHVybiBwb3BvdmVyLmlzT3BlbigpID8gcG9wb3Zlci5jbG9zZSgpIDogcG9wb3Zlci5vcGVuKGNvbnRleHQpO1xuICB9XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQoY3ljbGU6IElDeWNsZUpTT05MRCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCB8fCB0aGlzLnNlbGVjdGVkLmluY2x1ZGVzKGN5Y2xlWydAaWQnXSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJlbWlzc2lvbnMubGVuZ3RoOyBlbHNlIGVtcHR5VGFibGVcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtdmFyaWFibGUgaXMtMiBtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLWhpZGRlbi1tb2JpbGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGVcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJsaXN0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+VGFibGUgdmlldzwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJjeWNsZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5jaGFydFwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LmNoYXJ0XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNoYXJ0LWJhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPkNoYXJ0IHZpZXc8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwiIWlzT3JpZ2luYWwgJiYgY3ljbGVzLmxlbmd0aCA9PT0gMVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzXCIgKGNsaWNrKT1cInNlbGVjdGVkVmlldyA9IFZpZXcubG9nc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJjYWxjdWxhdG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+UmVjYWxjdWxhdGlvbnMgbG9nczwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInB4LTMgcGItM1wiIFtjbGFzcy5pcy1oaWRkZW5dPVwic2VsZWN0ZWRWaWV3ICE9PSBWaWV3LnRhYmxlXCI+XG4gICAgPGRpdiBjbGFzcz1cImhhcy10ZXh0LXJpZ2h0IG1iLTJcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtZGFyayBpcy1vdXRsaW5lZCBpcy1zbWFsbFwiIChjbGljayk9XCJzaG93RG93bmxvYWQgPSB0cnVlXCI+XG4gICAgICAgIDxmYS1pY29uIGljb249XCJkb3dubG9hZFwiPjwvZmEtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+RG93bmxvYWQgKENTVik8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXIgZGF0YS10YWJsZS1jb250YWluZXIgbWItMVwiPlxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtbmFycm93IGRhdGEtdGFibGUgaGFzLWNoaWxkcmVuLXt7ZW1pc3Npb25zLmxlbmd0aH19XCI+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvXCI+PC90aD5cbiAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBlbWlzc2lvbiBvZiBlbWlzc2lvbnNcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJlbWlzc2lvbi52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImVtaXNzaW9uLnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e2VtaXNzaW9uLnZhbHVlLnRlcm0ubmFtZSB8IGVsbGlwc2lzOjMwfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICA8YSBbaHJlZl09XCJiYXNlVXJsICsgJy9zY2hlbWEvQ3ljbGUjZnVuY3Rpb25hbFVuaXQnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+RnVuY3Rpb25hbCB1bml0PC9hPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgZW1pc3Npb24gb2YgZW1pc3Npb25zXCJcbiAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiZW1pc3Npb24udmFsdWUudGVybS51bml0c1wiXG4gICAgICAgICAgICA+e3tlbWlzc2lvbi52YWx1ZS50ZXJtLnVuaXRzfX08L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjeWNsZSBvZiBjeWNsZXM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiaXNTZWxlY3RlZChjeWNsZSlcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwid2lkdGgtYXV0b1wiIFthdHRyLnRpdGxlXT1cImRlZmF1bHRMYWJlbChjeWNsZSlcIj5cbiAgICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImN5Y2xlXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLW5vd3JhcCBoYXMtdGV4dC1lbGxpcHNpc1wiPnt7aSArIDF9fS4ge3tkZWZhdWx0TGFiZWwoY3ljbGUpfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICA8aGUtY3ljbGVzLWZ1bmN0aW9uYWwtdW5pdC1tZWFzdXJlIFtjeWNsZV09XCJjeWNsZXNbMF1cIj48L2hlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZT5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCIgKm5nRm9yPVwibGV0IGVtaXNzaW9uIG9mIGVtaXNzaW9uc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW1pc3Npb24udmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV07IGVsc2UgZW1wdHlWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRyaWdnZXItcG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIiAjcD1cIm5nYlBvcG92ZXJcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUG9wb3ZlcihwLCB7IGRhdGE6IGVtaXNzaW9uLnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLCBjeWNsZTogY3ljbGUsIGtleTogJ2VtaXNzaW9ucycgfSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+e3twcm9wZXJ0eVZhbHVlKGVtaXNzaW9uLnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLnZhbHVlLCBlbWlzc2lvbi52YWx1ZS50ZXJtWydAaWQnXSkgfCBwcmVjaXNpb246MyB8IGRlZmF1bHQ6Jy0nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZSBjbGFzcz1cIm1sLTFcIlxuICAgICAgICAgICAgICAgICAgICBbbm9kZV09XCJlbWlzc2lvbi52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS5ub2Rlc1swXVwiXG4gICAgICAgICAgICAgICAgICAgIGtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGVcIiBbc2hvd0RlbGV0ZWRdPVwidHJ1ZVwiPjwvaGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2U+XG4gIDwvZGl2PlxuXG4gIDxoZS1jeWNsZXMtZW1pc3Npb25zLWNoYXJ0ICpuZ0lmPVwiY3ljbGVzLmxlbmd0aCA+IDFcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy5jaGFydFwiXG4gICAgW2N5Y2xlc109XCJjeWNsZXNcIiBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICA+PC9oZS1jeWNsZXMtZW1pc3Npb25zLWNoYXJ0PlxuXG4gIDxoZS1jeWNsZXMtZW1pc3Npb25zLWxvZ3MgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9ncyAmJiAhaXNPcmlnaW5hbFwiXG4gICAgW2N5Y2xlXT1cImN5Y2xlc1swXVwiXG4gICAgW29yaWdpbmFsVmFsdWVzXT1cIm9yaWdpbmFsVmFsdWVzWzBdPy5lbWlzc2lvbnNcIlxuICAgIFtyZWNhbGN1bGF0ZWRWYWx1ZXNdPVwiY3ljbGVzWzBdPy5lbWlzc2lvbnNcIlxuICA+PC9oZS1jeWNsZXMtZW1pc3Npb25zLWxvZ3M+XG48L25nLWNvbnRhaW5lcj5cblxuPGhlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtICpuZ0lmPVwic2hvd0Rvd25sb2FkXCJcbiAgW25vZGVzXT1cImN5Y2xlc1wiIGZpbGVuYW1lPVwiY3ljbGUtZW1pc3Npb25zLmNzdlwiIFtpc1VwbG9hZF09XCJmYWxzZVwiXG4gIFtoZWFkZXJLZXlzXT1cIlsnY3ljbGUuaWQnLCAnY3ljbGUuQGlkJywgJ2N5Y2xlLmVtaXNzaW9ucy4nXVwiXG4gIChjbG9zZWQpPVwic2hvd0Rvd25sb2FkID0gZmFsc2VcIlxuPjwvaGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlUYWJsZT5cbiAgPGRpdiBjbGFzcz1cInBhbmVsLWJsb2NrXCI+XG4gICAgPHNwYW4+Tm8gZGF0YTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VmFsdWU+XG4gIDxzcGFuPi08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RldGFpbHMgbGV0LW5vZGU9XCJjeWNsZVwiIGxldC1kYXRhPVwiZGF0YVwiIGxldC1rZXk9XCJrZXlcIj5cbiAgPHA+PGI+e3tub2RlLm5hbWV9fTwvYj48L3A+XG4gIDxoZS1ub2RlLXZhbHVlLWRldGFpbHNcbiAgICBbZGF0YV09XCJkYXRhXCIgW25vZGVUeXBlXT1cIm5vZGVbJ0B0eXBlJ11cIiBbZGF0YUtleV09XCJrZXlcIlxuICA+PC9oZS1ub2RlLXZhbHVlLWRldGFpbHM+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,12 +1,13 @@
1
1
  import { Component, Input, ViewChild } from '@angular/core';
2
2
  import { Chart } from 'chart.js';
3
- import { groupNodesByTerm, itemColor, propertyValue } from '../../common/utils';
3
+ import { groupNodesByTerm, itemColor, propertyValue, defaultLabel } from '../../common/utils';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/forms";
6
6
  import * as i2 from "@angular/common";
7
+ const isSelected = (selected, v) => selected.length === 0 || selected.includes(v['@id']);
7
8
  const cycleValue = (cycle, values) => { var _a; return (((_a = values[cycle['@id']]) === null || _a === void 0 ? void 0 : _a.nodes[0]) || { value: [0] }).value; };
8
- const cycleName = (cycle, index) => `${index + 1}. ${cycle.name}`;
9
- const cycleDataset = (values, termId) => (cycle, index) => {
9
+ const cycleName = (cycle, index) => `${index + 1}. ${defaultLabel(cycle)}`;
10
+ const cycleDataset = (values, termId, cycle, index) => {
10
11
  const label = cycleName(cycle, index);
11
12
  const color = itemColor(index);
12
13
  const data = [propertyValue(cycleValue(cycle, values), termId)];
@@ -21,6 +22,7 @@ const cycleDataset = (values, termId) => (cycle, index) => {
21
22
  export class CyclesEmissionsChartComponent {
22
23
  constructor() {
23
24
  this.cycles = [];
25
+ this.selected = [];
24
26
  this.emissionPerCycle = {};
25
27
  this.terms = [];
26
28
  }
@@ -31,11 +33,15 @@ export class CyclesEmissionsChartComponent {
31
33
  if ('cycles' in changes && !changes.cycles.firstChange) {
32
34
  return this.init();
33
35
  }
36
+ if ('selected' in changes && !changes.selected.firstChange) {
37
+ return this.init();
38
+ }
34
39
  }
35
40
  init() {
36
- this.emissionPerCycle = groupNodesByTerm(this.cycles, 'emissions');
41
+ const cycles = this.cycles.filter(v => isSelected(this.selected, v));
42
+ this.emissionPerCycle = groupNodesByTerm(cycles, 'emissions');
37
43
  this.terms = Object.values(this.emissionPerCycle)
38
- .filter(({ values }) => Object.values(values).some(({ nodes: [{ value }] }) => propertyValue(value) > 0))
44
+ .filter(({ values }) => Object.values(values).some(({ nodes: [{ value }] }) => propertyValue(value) >= 0))
39
45
  .map(({ term }) => term);
40
46
  this.selectedTerm = this.terms.includes(this.selectedTerm) ? this.selectedTerm : this.terms[0];
41
47
  return this.selectedTerm ? this.updateChart() : null;
@@ -45,7 +51,9 @@ export class CyclesEmissionsChartComponent {
45
51
  const labels = [(_b = (_a = this.selectedTerm) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : ''];
46
52
  const termId = this.selectedTerm['@id'];
47
53
  const { values } = this.emissionPerCycle[termId];
48
- const datasets = this.cycles.map(cycleDataset(values, termId));
54
+ const datasets = this.cycles
55
+ .map((cycle, index) => isSelected(this.selected, cycle) ? cycleDataset(values, termId, cycle, index) : null)
56
+ .filter(Boolean);
49
57
  if (this.chart) {
50
58
  this.chart.destroy();
51
59
  }
@@ -77,7 +85,7 @@ export class CyclesEmissionsChartComponent {
77
85
  }
78
86
  }
79
87
  CyclesEmissionsChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CyclesEmissionsChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
- CyclesEmissionsChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesEmissionsChartComponent, selector: "he-cycles-emissions-chart", inputs: { cycles: "cycles" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"p-3\" [class.is-hidden]=\"!terms?.length\">\n <div class=\"field is-horizontal\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"selectedTerm\">\n <span>Select a column</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"control\">\n <div class=\"select is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"chart-container\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"], directives: [{ type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
88
+ CyclesEmissionsChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesEmissionsChartComponent, selector: "he-cycles-emissions-chart", inputs: { cycles: "cycles", selected: "selected" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"p-3\" [class.is-hidden]=\"!terms?.length\">\n <div class=\"field is-horizontal\">\n <div class=\"field-label is-normal\">\n <label class=\"label\" for=\"selectedTerm\">\n <span>Select a column</span>\n </label>\n </div>\n <div class=\"field-body\">\n <div class=\"control\">\n <div class=\"select is-small\">\n <select (change)=\"updateChart()\" [(ngModel)]=\"selectedTerm\" id=\"selectedTerm\">\n <option *ngFor=\"let term of terms\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"mt-1\">\n <div class=\"chart-container\">\n <canvas #chart></canvas>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:400px;position:relative}\n"], directives: [{ type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
81
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CyclesEmissionsChartComponent, decorators: [{
82
90
  type: Component,
83
91
  args: [{
@@ -90,5 +98,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
90
98
  args: ['chart']
91
99
  }], cycles: [{
92
100
  type: Input
101
+ }], selected: [{
102
+ type: Input
93
103
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWVtaXNzaW9ucy1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1lbWlzc2lvbnMtY2hhcnQvY3ljbGVzLWVtaXNzaW9ucy1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1lbWlzc2lvbnMtY2hhcnQvY3ljbGVzLWVtaXNzaW9ucy1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQXVELE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakMsT0FBTyxFQUFFLGdCQUFnQixFQUFzQyxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFFcEgsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFtQixFQUFFLE1BQXFDLEVBQUUsRUFBRSxXQUNoRixPQUFBLENBQUMsQ0FBQSxNQUFBLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsMENBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQSxFQUFBLENBQUM7QUFFM0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUV4RixNQUFNLFlBQVksR0FBRyxDQUFDLE1BQXFDLEVBQUUsTUFBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQW1CLEVBQUUsS0FBYSxFQUFFLEVBQUU7SUFDckgsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFL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QVUsRUFBRSxJQUFJO2dCQUNoQixtQkFBbUIsRUFBRSxLQUFLO2dCQUMxQixNQUFNLEVBQUU7b0JBQ04sT0FBTyxFQUFFLEtBQUs7aUJBQ2Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSxDQUFDOzRCQUNOLE9BQU8sRUFBRSxLQUFLO3lCQUNmLENBQUM7b0JBQ0YsS0FBSyxFQUFFLENBQUM7NEJBQ04sUUFBUSxFQUFFLE1BQU07NEJBQ2hCLEtBQUssRUFBRTtnQ0FDTCxHQUFHLEVBQUUsQ0FBQzs2QkFDUDt5QkFDRixDQUFDO2lCQUNIO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzsySEFqRVUsNkJBQTZCOytHQUE3Qiw2QkFBNkIsdU5DN0IxQyw4dUJBd0JBOzRGREthLDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxXQUFXLEVBQUUseUNBQXlDO29CQUN0RCxTQUFTLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQztpQkFDdkQ7OEJBR1MsUUFBUTtzQkFEZixTQUFTO3VCQUFDLE9BQU87Z0JBS1YsTUFBTTtzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVtaXNzaW9uLCBJQ3ljbGVKU09OTEQsIElUZXJtSlNPTkxELCBUZXJtIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XG5cbmltcG9ydCB7IGdyb3VwTm9kZXNCeVRlcm0sIElHcm91cGVkTm9kZXMsIElHcm91cGVkTm9kZXNWYWx1ZXMsIGl0ZW1Db2xvciwgcHJvcGVydHlWYWx1ZSB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5cbmNvbnN0IGN5Y2xlVmFsdWUgPSAoY3ljbGU6IElDeWNsZUpTT05MRCwgdmFsdWVzOiBJR3JvdXBlZE5vZGVzVmFsdWVzPEVtaXNzaW9uPikgPT5cbiAgKHZhbHVlc1tjeWNsZVsnQGlkJ11dPy5ub2Rlc1swXSB8fCB7IHZhbHVlOiBbMF0gfSkudmFsdWU7XG5cbmNvbnN0IGN5Y2xlTmFtZSA9IChjeWNsZTogSUN5Y2xlSlNPTkxELCBpbmRleDogbnVtYmVyKSA9PiBgJHtpbmRleCArIDF9LiAke2N5Y2xlLm5hbWV9YDtcblxuY29uc3QgY3ljbGVEYXRhc2V0ID0gKHZhbHVlczogSUdyb3VwZWROb2Rlc1ZhbHVlczxFbWlzc2lvbj4sIHRlcm1JZDogc3RyaW5nKSA9PiAoY3ljbGU6IElDeWNsZUpTT05MRCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICBjb25zdCBsYWJlbCA9IGN5Y2xlTmFtZShjeWNsZSwgaW5kZXgpO1xuICBjb25zdCBjb2xvciA9IGl0ZW1Db2xvcihpbmRleCk7XG4gIGNvbnN0IGRhdGEgPSBbcHJvcGVydHlWYWx1ZShjeWNsZVZhbHVlKGN5Y2xlLCB2YWx1ZXMpISwgdGVybUlkKV07XG4gIHJldHVybiB7XG4gICAgbGFiZWwsXG4gICAgYXhpczogJ3knLFxuICAgIGRhdGEsXG4gICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcixcbiAgICBib3JkZXJDb2xvcjogY29sb3JcbiAgfTtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWN5Y2xlcy1lbWlzc2lvbnMtY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3ljbGVzLWVtaXNzaW9ucy1jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N5Y2xlcy1lbWlzc2lvbnMtY2hhcnQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDeWNsZXNFbWlzc2lvbnNDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0JylcbiAgcHJpdmF0ZSBjaGFydFJlZj86IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgY2hhcnQ6IGFueTtcblxuICBASW5wdXQoKVxuICBwcml2YXRlIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcblxuICBwdWJsaWMgZW1pc3Npb25QZXJDeWNsZTogSUdyb3VwZWROb2RlczxFbWlzc2lvbj4gPSB7fTtcbiAgcHVibGljIHRlcm1zOiBJVGVybUpTT05MRFtdID0gW107XG4gIHB1YmxpYyBzZWxlY3RlZFRlcm0/OiBJVGVybUpTT05MRDtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgnY3ljbGVzJyBpbiBjaGFuZ2VzICYmICFjaGFuZ2VzLmN5Y2xlcy5maXJzdENoYW5nZSkge1xuICAgICAgcmV0dXJuIHRoaXMuaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICB0aGlzLmVtaXNzaW9uUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgRW1pc3Npb24+KHRoaXMuY3ljbGVzLCAnZW1pc3Npb25zJyk7XG4gICAgdGhpcy50ZXJtcyA9IE9iamVjdC52YWx1ZXModGhpcy5lbWlzc2lvblBlckN5Y2xlKVxuICAgICAgLmZpbHRlcigoeyB2YWx1ZXMgfSkgPT4gT2JqZWN0LnZhbHVlcyh2YWx1ZXMpLnNvbWUoKHsgbm9kZXM6IFt7IHZhbHVlIH1dIH0pID0+IHByb3BlcnR5VmFsdWUodmFsdWUhKSA+IDApKVxuICAgICAgLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm0pO1xuICAgIHRoaXMuc2VsZWN0ZWRUZXJtID0gdGhpcy50ZXJtcy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkVGVybSEpID8gdGhpcy5zZWxlY3RlZFRlcm0gOiB0aGlzLnRlcm1zWzBdO1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGVybSA/IHRoaXMudXBkYXRlQ2hhcnQoKSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ2hhcnQoKSB7XG4gICAgY29uc3QgbGFiZWxzOiBzdHJpbmdbXSA9IFt0aGlzLnNlbGVjdGVkVGVybT8ubmFtZSA/PyAnJ107XG4gICAgY29uc3QgdGVybUlkID0gdGhpcy5zZWxlY3RlZFRlcm1bJ0BpZCddO1xuICAgIGNvbnN0IHsgdmFsdWVzIH0gPSB0aGlzLmVtaXNzaW9uUGVyQ3ljbGVbdGVybUlkXTtcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuY3ljbGVzLm1hcChjeWNsZURhdGFzZXQodmFsdWVzLCB0ZXJtSWQpKTtcblxuICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCh0aGlzLmNoYXJ0UmVmPy5uYXRpdmVFbGVtZW50LCB7XG4gICAgICB0eXBlOiAnYmFyJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWxzLFxuICAgICAgICBkYXRhc2V0c1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHNjYWxlczoge1xuICAgICAgICAgIHhBeGVzOiBbe1xuICAgICAgICAgICAgZGlzcGxheTogZmFsc2VcbiAgICAgICAgICB9XSxcbiAgICAgICAgICB5QXhlczogW3tcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgICBtaW46IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiF0ZXJtcz8ubGVuZ3RoXCI+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1ob3Jpem9udGFsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkLWxhYmVsIGlzLW5vcm1hbFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWxcIiBmb3I9XCJzZWxlY3RlZFRlcm1cIj5cbiAgICAgICAgPHNwYW4+U2VsZWN0IGEgY29sdW1uPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbFwiPlxuICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJ1cGRhdGVDaGFydCgpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFRlcm1cIiBpZD1cInNlbGVjdGVkVGVybVwiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdGVybSBvZiB0ZXJtc1wiIFtuZ1ZhbHVlXT1cInRlcm1cIj57e3Rlcm0ubmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtdC0xXCI+XG4gICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lclwiPlxuICAgICAgPGNhbnZhcyAjY2hhcnQ+PC9jYW52YXM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWVtaXNzaW9ucy1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1lbWlzc2lvbnMtY2hhcnQvY3ljbGVzLWVtaXNzaW9ucy1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1lbWlzc2lvbnMtY2hhcnQvY3ljbGVzLWVtaXNzaW9ucy1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQXVELE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakMsT0FBTyxFQUNMLGdCQUFnQixFQUFzQyxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFDN0YsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUU1QixNQUFNLFVBQVUsR0FBRyxDQUFDLFFBQWtCLEVBQUUsQ0FBZSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRWpILE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBbUIsRUFBRSxNQUFxQyxFQUFFLEVBQUUsV0FDaEYsT0FBQSxDQUFDLENBQUEsTUFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLDBDQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUEsRUFBQSxDQUFDO0FBRTNELE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBbUIsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsS0FBSyxZQUFZLENBQUMs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QUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFdBQVcsRUFBRSx5Q0FBeUM7b0JBQ3RELFNBQVMsRUFBRSxDQUFDLHlDQUF5QyxDQUFDO2lCQUN2RDs4QkFHUyxRQUFRO3NCQURmLFNBQVM7dUJBQUMsT0FBTztnQkFLVixNQUFNO3NCQURiLEtBQUs7Z0JBR0UsUUFBUTtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVtaXNzaW9uLCBJQ3ljbGVKU09OTEQsIElUZXJtSlNPTkxEIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XG5cbmltcG9ydCB7XG4gIGdyb3VwTm9kZXNCeVRlcm0sIElHcm91cGVkTm9kZXMsIElHcm91cGVkTm9kZXNWYWx1ZXMsIGl0ZW1Db2xvciwgcHJvcGVydHlWYWx1ZSwgZGVmYXVsdExhYmVsXG59IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5cbmNvbnN0IGlzU2VsZWN0ZWQgPSAoc2VsZWN0ZWQ6IHN0cmluZ1tdLCB2OiBJQ3ljbGVKU09OTEQpID0+IHNlbGVjdGVkLmxlbmd0aCA9PT0gMCB8fCBzZWxlY3RlZC5pbmNsdWRlcyh2WydAaWQnXSk7XG5cbmNvbnN0IGN5Y2xlVmFsdWUgPSAoY3ljbGU6IElDeWNsZUpTT05MRCwgdmFsdWVzOiBJR3JvdXBlZE5vZGVzVmFsdWVzPEVtaXNzaW9uPikgPT5cbiAgKHZhbHVlc1tjeWNsZVsnQGlkJ11dPy5ub2Rlc1swXSB8fCB7IHZhbHVlOiBbMF0gfSkudmFsdWU7XG5cbmNvbnN0IGN5Y2xlTmFtZSA9IChjeWNsZTogSUN5Y2xlSlNPTkxELCBpbmRleDogbnVtYmVyKSA9PiBgJHtpbmRleCArIDF9LiAke2RlZmF1bHRMYWJlbChjeWNsZSl9YDtcblxuY29uc3QgY3ljbGVEYXRhc2V0ID0gKHZhbHVlczogSUdyb3VwZWROb2Rlc1ZhbHVlczxFbWlzc2lvbj4sIHRlcm1JZDogc3RyaW5nLCBjeWNsZTogSUN5Y2xlSlNPTkxELCBpbmRleDogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IGxhYmVsID0gY3ljbGVOYW1lKGN5Y2xlLCBpbmRleCk7XG4gIGNvbnN0IGNvbG9yID0gaXRlbUNvbG9yKGluZGV4KTtcbiAgY29uc3QgZGF0YSA9IFtwcm9wZXJ0eVZhbHVlKGN5Y2xlVmFsdWUoY3ljbGUsIHZhbHVlcykhLCB0ZXJtSWQpXTtcbiAgcmV0dXJuIHtcbiAgICBsYWJlbCxcbiAgICBheGlzOiAneScsXG4gICAgZGF0YSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLFxuICAgIGJvcmRlckNvbG9yOiBjb2xvclxuICB9O1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtY3ljbGVzLWVtaXNzaW9ucy1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtZW1pc3Npb25zLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3ljbGVzLWVtaXNzaW9ucy1jaGFydC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN5Y2xlc0VtaXNzaW9uc0NoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnY2hhcnQnKVxuICBwcml2YXRlIGNoYXJ0UmVmPzogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xuXG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgY3ljbGVzOiBJQ3ljbGVKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwcml2YXRlIHNlbGVjdGVkOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHB1YmxpYyBlbWlzc2lvblBlckN5Y2xlOiBJR3JvdXBlZE5vZGVzPEVtaXNzaW9uPiA9IHt9O1xuICBwdWJsaWMgdGVybXM6IElUZXJtSlNPTkxEW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkVGVybT86IElUZXJtSlNPTkxEO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbml0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCdjeWNsZXMnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXMuY3ljbGVzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIGlmICgnc2VsZWN0ZWQnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXMuc2VsZWN0ZWQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgY29uc3QgY3ljbGVzID0gdGhpcy5jeWNsZXMuZmlsdGVyKHYgPT4gaXNTZWxlY3RlZCh0aGlzLnNlbGVjdGVkLCB2KSk7XG4gICAgdGhpcy5lbWlzc2lvblBlckN5Y2xlID0gZ3JvdXBOb2Rlc0J5VGVybTxJQ3ljbGVKU09OTEQsIEVtaXNzaW9uPihjeWNsZXMsICdlbWlzc2lvbnMnKTtcbiAgICB0aGlzLnRlcm1zID0gT2JqZWN0LnZhbHVlcyh0aGlzLmVtaXNzaW9uUGVyQ3ljbGUpXG4gICAgICAuZmlsdGVyKCh7IHZhbHVlcyB9KSA9PiBPYmplY3QudmFsdWVzKHZhbHVlcykuc29tZSgoeyBub2RlczogW3sgdmFsdWUgfV0gfSkgPT4gcHJvcGVydHlWYWx1ZSh2YWx1ZSEpID49IDApKVxuICAgICAgLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm0pO1xuICAgIHRoaXMuc2VsZWN0ZWRUZXJtID0gdGhpcy50ZXJtcy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkVGVybSEpID8gdGhpcy5zZWxlY3RlZFRlcm0gOiB0aGlzLnRlcm1zWzBdO1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGVybSA/IHRoaXMudXBkYXRlQ2hhcnQoKSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ2hhcnQoKSB7XG4gICAgY29uc3QgbGFiZWxzOiBzdHJpbmdbXSA9IFt0aGlzLnNlbGVjdGVkVGVybT8ubmFtZSA/PyAnJ107XG4gICAgY29uc3QgdGVybUlkID0gdGhpcy5zZWxlY3RlZFRlcm1bJ0BpZCddO1xuICAgIGNvbnN0IHsgdmFsdWVzIH0gPSB0aGlzLmVtaXNzaW9uUGVyQ3ljbGVbdGVybUlkXTtcbiAgICBjb25zdCBkYXRhc2V0cyA9IHRoaXMuY3ljbGVzXG4gICAgICAubWFwKChjeWNsZSwgaW5kZXgpID0+IGlzU2VsZWN0ZWQodGhpcy5zZWxlY3RlZCwgY3ljbGUpID8gY3ljbGVEYXRhc2V0KHZhbHVlcywgdGVybUlkLCBjeWNsZSwgaW5kZXgpIDogbnVsbClcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBpZiAodGhpcy5jaGFydCkge1xuICAgICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQodGhpcy5jaGFydFJlZj8ubmF0aXZlRWxlbWVudCwge1xuICAgICAgdHlwZTogJ2JhcicsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGxhYmVscyxcbiAgICAgICAgZGF0YXNldHNcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBzY2FsZXM6IHtcbiAgICAgICAgICB4QXhlczogW3tcbiAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgICAgfV0sXG4gICAgICAgICAgeUF4ZXM6IFt7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnLFxuICAgICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgICAgbWluOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhdGVybXM/Lmxlbmd0aFwiPlxuICA8ZGl2IGNsYXNzPVwiZmllbGQgaXMtaG9yaXpvbnRhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1sYWJlbCBpcy1ub3JtYWxcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCIgZm9yPVwic2VsZWN0ZWRUZXJtXCI+XG4gICAgICAgIDxzcGFuPlNlbGVjdCBhIGNvbHVtbjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGxcIj5cbiAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwidXBkYXRlQ2hhcnQoKVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUZXJtXCIgaWQ9XCJzZWxlY3RlZFRlcm1cIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHRlcm0gb2YgdGVybXNcIiBbbmdWYWx1ZV09XCJ0ZXJtXCI+e3t0ZXJtLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibXQtMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cbiAgICAgIDxjYW52YXMgI2NoYXJ0PjwvY2FudmFzPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,23 +1,20 @@
1
- import { __awaiter } from "tslib";
2
1
  import { Component, Input } from '@angular/core';
3
2
  import { DataState } from '@hestia-earth/api';
4
- import { propertyValue, groupNodesByTerm, grouppedKeys, itemColor } from '../../common/utils';
5
- import { baseUrl } from '../../common/utils';
3
+ import { baseUrl, propertyValue, groupNodesByTerm, grouppedKeys, defaultLabel } from '../../common/utils';
6
4
  import * as i0 from "@angular/core";
7
5
  import * as i1 from "@fortawesome/angular-fontawesome";
8
6
  import * as i2 from "../../node/node-link/node-link.component";
9
7
  import * as i3 from "../cycles-functional-unit-measure/cycles-functional-unit-measure.component";
10
8
  import * as i4 from "../../common/blank-node-state/blank-node-state.component";
11
9
  import * as i5 from "../../common/blank-node-state-notice/blank-node-state-notice.component";
12
- import * as i6 from "../cycles-suggest-form/cycles-suggest-form.component";
13
- import * as i7 from "../cycles-practices-logs/cycles-practices-logs.component";
14
- import * as i8 from "../../node/node-csv-export-confirm/node-csv-export-confirm.component";
15
- import * as i9 from "../../node/node-value-details/node-value-details.component";
16
- import * as i10 from "@angular/common";
17
- import * as i11 from "@ng-bootstrap/ng-bootstrap";
18
- import * as i12 from "../../common/ellipsis.pipe";
19
- import * as i13 from "../../common/default.pipe";
20
- import * as i14 from "../../common/precision.pipe";
10
+ import * as i6 from "../cycles-practices-logs/cycles-practices-logs.component";
11
+ import * as i7 from "../../node/node-csv-export-confirm/node-csv-export-confirm.component";
12
+ import * as i8 from "../../node/node-value-details/node-value-details.component";
13
+ import * as i9 from "@angular/common";
14
+ import * as i10 from "@ng-bootstrap/ng-bootstrap";
15
+ import * as i11 from "../../common/ellipsis.pipe";
16
+ import * as i12 from "../../common/default.pipe";
17
+ import * as i13 from "../../common/precision.pipe";
21
18
  const orderBy = require('lodash.orderby');
22
19
  var View;
23
20
  (function (View) {
@@ -28,14 +25,13 @@ export class CyclesPracticesComponent {
28
25
  constructor() {
29
26
  this.originalValues = [];
30
27
  this.cycles = [];
31
- this.enableCompare = true;
28
+ this.selected = [];
32
29
  this.baseUrl = baseUrl();
33
30
  this.propertyValue = propertyValue;
34
- this.itemColor = itemColor;
31
+ this.defaultLabel = defaultLabel;
35
32
  this.showDownload = false;
36
33
  this.View = View;
37
34
  this.selectedView = View.table;
38
- this.selectedCycles = [];
39
35
  this.practices = [];
40
36
  }
41
37
  ngOnChanges(changes) {
@@ -55,51 +51,16 @@ export class CyclesPracticesComponent {
55
51
  update() {
56
52
  const practicesPerCycle = groupNodesByTerm(this.cycles, 'practices', this.originalValues);
57
53
  this.practices = orderBy(grouppedKeys(practicesPerCycle), ['key'], ['asc']);
58
- this.selectAllCycles();
59
54
  }
60
55
  togglePopover(popover, context) {
61
56
  return popover.isOpen() ? popover.close() : popover.open(context);
62
57
  }
63
- // Add from suggestion
64
- addCycle(cycle) {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- this.cycles = [
67
- ...this.cycles,
68
- cycle
69
- ];
70
- return this.update();
71
- });
72
- }
73
- // Cycle selection
74
- selectAllCycles() {
75
- this.selectedCycles = this.cycles.slice();
76
- }
77
- unselectAllCycles() {
78
- this.selectedCycles = [];
79
- }
80
- toggleAllCycles() {
81
- return this.selectedCycles.length ? this.selectAllCycles() : this.unselectAllCycles();
82
- }
83
- selectCycle(cycle) {
84
- this.selectedCycles = [
85
- ...this.selectedCycles,
86
- cycle
87
- ];
88
- }
89
- unselectCycle(index) {
90
- this.selectedCycles.splice(index, 1);
91
- this.selectedCycles = this.selectedCycles.slice();
92
- }
93
- toggleCycle(cycle) {
94
- const index = this.selectedCycles.indexOf(cycle);
95
- return index >= 0 ? this.unselectCycle(index) : this.selectCycle(cycle);
96
- }
97
58
  isSelected(cycle) {
98
- return this.selectedCycles.includes(cycle);
59
+ return this.selected.length === 0 || this.selected.includes(cycle['@id']);
99
60
  }
100
61
  }
101
62
  CyclesPracticesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CyclesPracticesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
102
- CyclesPracticesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesPracticesComponent, selector: "he-cycles-practices", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"practices.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\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=\"!isOriginal && cycles.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{practices.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngFor=\"let practice of practices\"\n [attr.title]=\"practice.value.term.name\"\n >\n <he-node-link [node]=\"practice.value.term\">\n <span>{{practice.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th>\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let practice of practices\"\n [attr.title]=\"practice.value.term.units\"\n >{{practice.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"cycle.name\" [style.border-left-color]=\"itemColor(i)\">\n <label *ngIf=\"enableCompare\" class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n (change)=\"toggleCycle(cycle)\"\n [checked]=\"isSelected(cycle)\"\n >\n </label>\n <he-node-link class=\"is-inline-block\" [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{cycle.name || cycle.id}}</span>\n </he-node-link>\n </td>\n <td>\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let practice of practices\">\n <span *ngIf=\"practice.value.values[cycle['@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: practice.value.values[cycle['@id']], cycle: cycle, key: 'practices' })\"\n >\n <span pointer>{{propertyValue(practice.value.values[cycle['@id']].value, practice.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"practice.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n\n <he-cycles-suggest-form *ngIf=\"enableCompare\" [cycles]=\"cycles\" (cycleAdded)=\"addCycle($event)\"></he-cycles-suggest-form>\n </div>\n\n <he-cycles-practices-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [cycle]=\"cycles[0]\"\n [originalValues]=\"originalValues[0]?.practices\"\n [recalculatedValues]=\"cycles[0]?.practices\"\n ></he-cycles-practices-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-practices.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.practices.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\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=\"cycle\" 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: ["label.checkbox{width:20px}td he-node-link{width:160px}table.data-table td:first-child{border-left-width:8px}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.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i3.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { 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", "showUnchanged"] }, { type: i6.CyclesSuggestFormComponent, selector: "he-cycles-suggest-form", inputs: ["cycles"], outputs: ["cycleAdded"] }, { type: i7.CyclesPracticesLogsComponent, selector: "he-cycles-practices-logs", inputs: ["cycle", "originalValues", "recalculatedValues"] }, { type: i8.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { type: i9.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }], pipes: { "ellipsis": i12.EllipsisPipe, "default": i13.DefaultPipe, "precision": i14.PrecisionPipe } });
63
+ CyclesPracticesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesPracticesComponent, selector: "he-cycles-practices", inputs: { originalValues: "originalValues", cycles: "cycles", selected: "selected", dataState: "dataState" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"practices.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\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=\"!isOriginal && cycles.length === 1\">\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 <div class=\"has-text-right mb-2\">\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\n <div class=\"table-container data-table-container mb-1\">\n <table class=\"table is-narrow data-table has-children-{{practices.length}}\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngFor=\"let practice of practices\"\n [attr.title]=\"practice.value.term.name\"\n >\n <he-node-link [node]=\"practice.value.term\">\n <span>{{practice.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th>\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let practice of practices\"\n [attr.title]=\"practice.value.term.units\"\n >{{practice.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr *ngIf=\"isSelected(cycle)\">\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td>\n <he-cycles-functional-unit-measure [cycle]=\"cycles[0]\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let practice of practices\">\n <span *ngIf=\"practice.value.values[cycle['@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: practice.value.values[cycle['@id']], cycle: cycle, key: 'practices' })\"\n >\n <span pointer>{{propertyValue(practice.value.values[cycle['@id']].value, practice.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"practice.value.values[cycle['@id']].nodes[0]\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showDeleted]=\"true\"></he-blank-node-state-notice>\n </div>\n\n <he-cycles-practices-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [cycle]=\"cycles[0]\"\n [originalValues]=\"originalValues[0]?.practices\"\n [recalculatedValues]=\"cycles[0]?.practices\"\n ></he-cycles-practices-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"cycle-practices.csv\" [isUpload]=\"false\"\n [headerKeys]=\"['cycle.id', 'cycle.@id', 'cycle.practices.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\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=\"cycle\" 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.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i3.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { 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", "showUnchanged"] }, { type: i6.CyclesPracticesLogsComponent, selector: "he-cycles-practices-logs", inputs: ["cycle", "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"] }], pipes: { "ellipsis": i11.EllipsisPipe, "default": i12.DefaultPipe, "precision": i13.PrecisionPipe } });
103
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CyclesPracticesComponent, decorators: [{
104
65
  type: Component,
105
66
  args: [{
@@ -111,9 +72,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
111
72
  type: Input
112
73
  }], cycles: [{
113
74
  type: Input
114
- }], dataState: [{
75
+ }], selected: [{
115
76
  type: Input
116
- }], enableCompare: [{
77
+ }], dataState: [{
117
78
  type: Input
118
79
  }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1wcmFjdGljZXMvY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1wcmFjdGljZXMvY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUk5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFnQixZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBSDdDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBSzFDLElBQUssSUFHSjtBQUhELFdBQUssSUFBSTtJQUNQLHVCQUFlLENBQUE7SUFDZixxQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhJLElBQUksS0FBSixJQUFJLFFBR1I7QUFPRCxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBT1MsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBSTVCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRXJCLFlBQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNwQixrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQUM5QixjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixpQkFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLGNBQVMsR0FBNkIsRUFBRSxDQUFDO0tBeUVqRDtJQXZFQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxXQUFXLElBQUksT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNoQztJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsTUFBYyxFQUFFLElBQWtCO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDL0MsQ0FBQztJQUVPLE1BQU07UUFDWixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUF5QixJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxhQUFhLENBQUMsT0FBWSxFQUFFLE9BQVk7UUFDN0MsT0FBTyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsc0JBQXNCO0lBRVQsUUFBUSxDQUFDLEtBQW1COztZQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHO2dCQUNaLEdBQUcsSUFBSSxDQUFDLE1BQU07Z0JBQ2QsS0FBSzthQUNOLENBQUM7WUFDRixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixDQUFDO0tBQUE7SUFFRCxrQkFBa0I7SUFFVixlQUFlO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFtQjtRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLEdBQUcsSUFBSSxDQUFDLGNBQWM7WUFDdEIsS0FBSztTQUNOLENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQW1CO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQW1CO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7c0hBMUZVLHdCQUF3QjswR0FBeEIsd0JBQXdCLHdNQ2xCckMsbzFLQThIQTs0RkQ1R2Esd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2lCQUNqRDs4QkFHUSxjQUFjO3NCQURwQixLQUFLO2dCQUdDLE1BQU07c0JBRFosS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsYUFBYTtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBQcmFjdGljZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmNvbnN0IG9yZGVyQnkgPSByZXF1aXJlKCdsb2Rhc2gub3JkZXJieScpO1xuXG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlLCBncm91cE5vZGVzQnlUZXJtLCBJR3JvdXBlZEtleXMsIGdyb3VwcGVkS2V5cywgaXRlbUNvbG9yIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGxvZ3MgPSAnbG9ncydcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtY3ljbGVzLXByYWN0aWNlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtcHJhY3RpY2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN5Y2xlc1ByYWN0aWNlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcmlnaW5hbFZhbHVlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZUNvbXBhcmUgPSB0cnVlO1xuXG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWU7XG4gIHB1YmxpYyBpdGVtQ29sb3IgPSBpdGVtQ29sb3I7XG4gIHB1YmxpYyBzaG93RG93bmxvYWQgPSBmYWxzZTtcbiAgcHVibGljIFZpZXcgPSBWaWV3O1xuICBwdWJsaWMgc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcbiAgcHVibGljIHNlbGVjdGVkQ3ljbGVzOiBJQ3ljbGVKU09OTERbXSA9IFtdO1xuXG4gIHB1YmxpYyBwcmFjdGljZXM6IElHcm91cGVkS2V5czxQcmFjdGljZT5bXSA9IFtdO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2N5Y2xlcycgaW4gY2hhbmdlcykge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIGlmICgnZGF0YVN0YXRlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJZChfaW5kZXg6IG51bWJlciwgaXRlbTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09yaWdpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLm9yaWdpbmFsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgY29uc3QgcHJhY3RpY2VzUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgUHJhY3RpY2U+KHRoaXMuY3ljbGVzLCAncHJhY3RpY2VzJywgdGhpcy5vcmlnaW5hbFZhbHVlcyk7XG4gICAgdGhpcy5wcmFjdGljZXMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhwcmFjdGljZXNQZXJDeWNsZSksIFsna2V5J10sIFsnYXNjJ10pO1xuICAgIHRoaXMuc2VsZWN0QWxsQ3ljbGVzKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyOiBhbnksIGNvbnRleHQ6IGFueSkge1xuICAgIHJldHVybiBwb3BvdmVyLmlzT3BlbigpID8gcG9wb3Zlci5jbG9zZSgpIDogcG9wb3Zlci5vcGVuKGNvbnRleHQpO1xuICB9XG5cbiAgLy8gQWRkIGZyb20gc3VnZ2VzdGlvblxuXG4gIHB1YmxpYyBhc3luYyBhZGRDeWNsZShjeWNsZTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgdGhpcy5jeWNsZXMgPSBbXG4gICAgICAuLi50aGlzLmN5Y2xlcyxcbiAgICAgIGN5Y2xlXG4gICAgXTtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIC8vIEN5Y2xlIHNlbGVjdGlvblxuXG4gIHByaXZhdGUgc2VsZWN0QWxsQ3ljbGVzKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDeWNsZXMgPSB0aGlzLmN5Y2xlcy5zbGljZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnNlbGVjdEFsbEN5Y2xlcygpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGVzID0gW107XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQWxsQ3ljbGVzKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ3ljbGVzLmxlbmd0aCA/IHRoaXMuc2VsZWN0QWxsQ3ljbGVzKCkgOiB0aGlzLnVuc2VsZWN0QWxsQ3ljbGVzKCk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEN5Y2xlKGN5Y2xlOiBJQ3ljbGVKU09OTEQpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGVzID0gW1xuICAgICAgLi4udGhpcy5zZWxlY3RlZEN5Y2xlcyxcbiAgICAgIGN5Y2xlXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zZWxlY3RDeWNsZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZEN5Y2xlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRDeWNsZXMgPSB0aGlzLnNlbGVjdGVkQ3ljbGVzLnNsaWNlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ3ljbGUoY3ljbGU6IElDeWNsZUpTT05MRCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEN5Y2xlcy5pbmRleE9mKGN5Y2xlKTtcbiAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMudW5zZWxlY3RDeWNsZShpbmRleCkgOiB0aGlzLnNlbGVjdEN5Y2xlKGN5Y2xlKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkKGN5Y2xlOiBJQ3ljbGVKU09OTEQpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEN5Y2xlcy5pbmNsdWRlcyhjeWNsZSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJwcmFjdGljZXMubGVuZ3RoOyBlbHNlIGVtcHR5VGFibGVcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtdmFyaWFibGUgaXMtMiBtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLWhpZGRlbi1tb2JpbGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGVcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJsaXN0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+VGFibGUgdmlldzwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCIhaXNPcmlnaW5hbCAmJiBjeWNsZXMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIFtjbGFzcy5pcy1hY3RpdmVdPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmxvZ3NcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy5sb2dzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5SZWNhbGN1bGF0aW9ucyBsb2dzPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicHgtMyBwYi0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCJzZWxlY3RlZFZpZXcgIT09IFZpZXcudGFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtcmlnaHQgbWItMlwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1kYXJrIGlzLW91dGxpbmVkIGlzLXNtYWxsXCIgKGNsaWNrKT1cInNob3dEb3dubG9hZCA9IHRydWVcIj5cbiAgICAgICAgPGZhLWljb24gaWNvbj1cImRvd25sb2FkXCI+PC9mYS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5Eb3dubG9hZCAoQ1NWKTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciBkYXRhLXRhYmxlLWNvbnRhaW5lciBtYi0xXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBpcy1uYXJyb3cgZGF0YS10YWJsZSBoYXMtY2hpbGRyZW4te3twcmFjdGljZXMubGVuZ3RofX1cIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IHByYWN0aWNlIG9mIHByYWN0aWNlc1wiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByYWN0aWNlLnZhbHVlLnRlcm0ubmFtZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwicHJhY3RpY2UudmFsdWUudGVybVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7cHJhY3RpY2UudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6MzB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9DeWNsZSNmdW5jdGlvbmFsVW5pdCdcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GdW5jdGlvbmFsIHVuaXQ8L2E+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBwcmFjdGljZSBvZiBwcmFjdGljZXNcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJwcmFjdGljZS52YWx1ZS50ZXJtLnVuaXRzXCJcbiAgICAgICAgICAgID57e3ByYWN0aWNlLnZhbHVlLnRlcm0udW5pdHN9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgY3ljbGUgb2YgY3ljbGVzOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndpZHRoLWF1dG9cIiBbYXR0ci50aXRsZV09XCJjeWNsZS5uYW1lXCIgW3N0eWxlLmJvcmRlci1sZWZ0LWNvbG9yXT1cIml0ZW1Db2xvcihpKVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJlbmFibGVDb21wYXJlXCIgY2xhc3M9XCJpcy1pbmxpbmUtYmxvY2sgY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUN5Y2xlKGN5Y2xlKVwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGN5Y2xlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrXCIgW25vZGVdPVwiY3ljbGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLW5vd3JhcCBoYXMtdGV4dC1lbGxpcHNpc1wiPnt7aSArIDF9fS4ge3tjeWNsZS5uYW1lIHx8IGN5Y2xlLmlkfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgPGhlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZSBbY3ljbGVdPVwiY3ljbGVzWzBdXCI+PC9oZS1jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCIgKm5nRm9yPVwibGV0IHByYWN0aWNlIG9mIHByYWN0aWNlc1wiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByYWN0aWNlLnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dOyBlbHNlIGVtcHR5VmFsdWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHJpZ2dlci1wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCIgI3A9XCJuZ2JQb3BvdmVyXCIgcGxhY2VtZW50PVwibGVmdFwiIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKHAsIHsgZGF0YTogcHJhY3RpY2UudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0sIGN5Y2xlOiBjeWNsZSwga2V5OiAncHJhY3RpY2VzJyB9KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBwb2ludGVyPnt7cHJvcGVydHlWYWx1ZShwcmFjdGljZS52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS52YWx1ZSwgcHJhY3RpY2UudmFsdWUudGVybVsnQGlkJ10pIHwgcHJlY2lzaW9uOjMgfCBkZWZhdWx0OictJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwibWwtMVwiXG4gICAgICAgICAgICAgICAgICBbbm9kZV09XCJwcmFjdGljZS52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS5ub2Rlc1swXVwiXG4gICAgICAgICAgICAgICAgICBrZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgPjwvaGUtYmxhbmstbm9kZS1zdGF0ZT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cblxuICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZSBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZVwiIFtzaG93RGVsZXRlZF09XCJ0cnVlXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZT5cblxuICAgIDxoZS1jeWNsZXMtc3VnZ2VzdC1mb3JtICpuZ0lmPVwiZW5hYmxlQ29tcGFyZVwiIFtjeWNsZXNdPVwiY3ljbGVzXCIgKGN5Y2xlQWRkZWQpPVwiYWRkQ3ljbGUoJGV2ZW50KVwiPjwvaGUtY3ljbGVzLXN1Z2dlc3QtZm9ybT5cbiAgPC9kaXY+XG5cbiAgPGhlLWN5Y2xlcy1wcmFjdGljZXMtbG9ncyAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzICYmICFpc09yaWdpbmFsXCJcbiAgICBbY3ljbGVdPVwiY3ljbGVzWzBdXCJcbiAgICBbb3JpZ2luYWxWYWx1ZXNdPVwib3JpZ2luYWxWYWx1ZXNbMF0/LnByYWN0aWNlc1wiXG4gICAgW3JlY2FsY3VsYXRlZFZhbHVlc109XCJjeWNsZXNbMF0/LnByYWN0aWNlc1wiXG4gID48L2hlLWN5Y2xlcy1wcmFjdGljZXMtbG9ncz5cbjwvbmctY29udGFpbmVyPlxuXG48aGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0gKm5nSWY9XCJzaG93RG93bmxvYWRcIlxuICBbbm9kZXNdPVwiY3ljbGVzXCIgZmlsZW5hbWU9XCJjeWNsZS1wcmFjdGljZXMuY3N2XCIgW2lzVXBsb2FkXT1cImZhbHNlXCJcbiAgW2hlYWRlcktleXNdPVwiWydjeWNsZS5pZCcsICdjeWNsZS5AaWQnLCAnY3ljbGUucHJhY3RpY2VzLiddXCJcbiAgKGNsb3NlZCk9XCJzaG93RG93bmxvYWQgPSBmYWxzZVwiXG4+PC9oZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVRhYmxlPlxuICA8ZGl2IGNsYXNzPVwicGFuZWwtYmxvY2tcIj5cbiAgICA8c3Bhbj5ObyBkYXRhPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlWYWx1ZT5cbiAgPHNwYW4+LTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlscyBsZXQtbm9kZT1cImN5Y2xlXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LWtleT1cImtleVwiPlxuICA8cD48Yj57e25vZGUubmFtZX19PC9iPjwvcD5cbiAgPGhlLW5vZGUtdmFsdWUtZGV0YWlsc1xuICAgIFtkYXRhXT1cImRhdGFcIiBbbm9kZVR5cGVdPVwibm9kZVsnQHR5cGUnXVwiIFtkYXRhS2V5XT1cImtleVwiXG4gID48L2hlLW5vZGUtdmFsdWUtZGV0YWlscz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1wcmFjdGljZXMvY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1wcmFjdGljZXMvY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFnQixZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUZ4SCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUkxQyxJQUFLLElBR0o7QUFIRCxXQUFLLElBQUk7SUFDUCx1QkFBZSxDQUFBO0lBQ2YscUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFISSxJQUFJLEtBQUosSUFBSSxRQUdSO0FBT0QsTUFBTSxPQUFPLHdCQUF3QjtJQUxyQztRQU9TLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUVwQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUU1QixhQUFRLEdBQWEsRUFBRSxDQUFDO1FBSXhCLFlBQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNwQixrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQUM5QixpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUM1QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRTFCLGNBQVMsR0FBNkIsRUFBRSxDQUFDO0tBK0JqRDtJQTdCQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxXQUFXLElBQUksT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNoQztJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsTUFBYyxFQUFFLElBQWtCO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDL0MsQ0FBQztJQUVPLE1BQU07UUFDWixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUF5QixJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUFZLEVBQUUsT0FBWTtRQUM3QyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBbUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7c0hBL0NVLHdCQUF3QjswR0FBeEIsd0JBQXdCLDhMQ2pCckMsKytKQXdIQTs0RkR2R2Esd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7b0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2lCQUNqRDs4QkFHUSxjQUFjO3NCQURwQixLQUFLO2dCQUdDLE1BQU07c0JBRFosS0FBSztnQkFHQyxRQUFRO3NCQURkLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBJQ3ljbGVKU09OTEQsIFByYWN0aWNlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuY29uc3Qgb3JkZXJCeSA9IHJlcXVpcmUoJ2xvZGFzaC5vcmRlcmJ5Jyk7XG5cbmltcG9ydCB7IGJhc2VVcmwsIHByb3BlcnR5VmFsdWUsIGdyb3VwTm9kZXNCeVRlcm0sIElHcm91cGVkS2V5cywgZ3JvdXBwZWRLZXlzLCBkZWZhdWx0TGFiZWwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGxvZ3MgPSAnbG9ncydcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtY3ljbGVzLXByYWN0aWNlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtcHJhY3RpY2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3ljbGVzLXByYWN0aWNlcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN5Y2xlc1ByYWN0aWNlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcmlnaW5hbFZhbHVlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdGVkOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YVN0YXRlPzogRGF0YVN0YXRlO1xuXG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWU7XG4gIHB1YmxpYyBkZWZhdWx0TGFiZWwgPSBkZWZhdWx0TGFiZWw7XG4gIHB1YmxpYyBzaG93RG93bmxvYWQgPSBmYWxzZTtcbiAgcHVibGljIFZpZXcgPSBWaWV3O1xuICBwdWJsaWMgc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcblxuICBwdWJsaWMgcHJhY3RpY2VzOiBJR3JvdXBlZEtleXM8UHJhY3RpY2U+W10gPSBbXTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCdjeWNsZXMnIGluIGNoYW5nZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cbiAgICBpZiAoJ2RhdGFTdGF0ZScgaW4gY2hhbmdlcykge1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SWQoX2luZGV4OiBudW1iZXIsIGl0ZW06IElDeWNsZUpTT05MRCkge1xuICAgIHJldHVybiBpdGVtWydAaWQnXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcmlnaW5hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3RhdGUgPT09IERhdGFTdGF0ZS5vcmlnaW5hbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCkge1xuICAgIGNvbnN0IHByYWN0aWNlc1BlckN5Y2xlID0gZ3JvdXBOb2Rlc0J5VGVybTxJQ3ljbGVKU09OTEQsIFByYWN0aWNlPih0aGlzLmN5Y2xlcywgJ3ByYWN0aWNlcycsIHRoaXMub3JpZ2luYWxWYWx1ZXMpO1xuICAgIHRoaXMucHJhY3RpY2VzID0gb3JkZXJCeShncm91cHBlZEtleXMocHJhY3RpY2VzUGVyQ3ljbGUpLCBbJ2tleSddLCBbJ2FzYyddKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVQb3BvdmVyKHBvcG92ZXI6IGFueSwgY29udGV4dDogYW55KSB7XG4gICAgcmV0dXJuIHBvcG92ZXIuaXNPcGVuKCkgPyBwb3BvdmVyLmNsb3NlKCkgOiBwb3BvdmVyLm9wZW4oY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxlY3RlZChjeWNsZTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQubGVuZ3RoID09PSAwIHx8IHRoaXMuc2VsZWN0ZWQuaW5jbHVkZXMoY3ljbGVbJ0BpZCddKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInByYWN0aWNlcy5sZW5ndGg7IGVsc2UgZW1wdHlUYWJsZVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy12YXJpYWJsZSBpcy0yIG0tMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtaGlkZGVuLW1vYmlsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy50YWJsZVwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImxpc3RcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5UYWJsZSB2aWV3PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cIiFpc09yaWdpbmFsICYmIGN5Y2xlcy5sZW5ndGggPT09IDFcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9nc1wiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LmxvZ3NcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2FsY3VsYXRvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlJlY2FsY3VsYXRpb25zIGxvZ3M8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJweC0zIHBiLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy50YWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJoYXMtdGV4dC1yaWdodCBtYi0yXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLWRhcmsgaXMtb3V0bGluZWQgaXMtc21hbGxcIiAoY2xpY2spPVwic2hvd0Rvd25sb2FkID0gdHJ1ZVwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRvd25sb2FkIChDU1YpPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIGRhdGEtdGFibGUtY29udGFpbmVyIG1iLTFcIj5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGlzLW5hcnJvdyBkYXRhLXRhYmxlIGhhcy1jaGlsZHJlbi17e3ByYWN0aWNlcy5sZW5ndGh9fVwiPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgcHJhY3RpY2Ugb2YgcHJhY3RpY2VzXCJcbiAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwicHJhY3RpY2UudmFsdWUudGVybS5uYW1lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJwcmFjdGljZS52YWx1ZS50ZXJtXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3twcmFjdGljZS52YWx1ZS50ZXJtLm5hbWUgfCBlbGxpcHNpczozMH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvXCI+PC90aD5cbiAgICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiYmFzZVVybCArICcvc2NoZW1hL0N5Y2xlI2Z1bmN0aW9uYWxVbml0J1wiIHRhcmdldD1cIl9ibGFua1wiPkZ1bmN0aW9uYWwgdW5pdDwvYT5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IHByYWN0aWNlIG9mIHByYWN0aWNlc1wiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByYWN0aWNlLnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgPnt7cHJhY3RpY2UudmFsdWUudGVybS51bml0c319PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY3ljbGUgb2YgY3ljbGVzOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImlzU2VsZWN0ZWQoY3ljbGUpXCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndpZHRoLWF1dG9cIiBbYXR0ci50aXRsZV09XCJkZWZhdWx0TGFiZWwoY3ljbGUpXCI+XG4gICAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJjeWNsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1ub3dyYXAgaGFzLXRleHQtZWxsaXBzaXNcIj57e2kgKyAxfX0uIHt7ZGVmYXVsdExhYmVsKGN5Y2xlKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgPGhlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZSBbY3ljbGVdPVwiY3ljbGVzWzBdXCI+PC9oZS1jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmU+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImlzLW5vd3JhcFwiICpuZ0Zvcj1cImxldCBwcmFjdGljZSBvZiBwcmFjdGljZXNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByYWN0aWNlLnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dOyBlbHNlIGVtcHR5VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmlnZ2VyLXBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiZGV0YWlsc1wiIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCIgI3A9XCJuZ2JQb3BvdmVyXCIgcGxhY2VtZW50PVwibGVmdFwiIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIocCwgeyBkYXRhOiBwcmFjdGljZS52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXSwgY3ljbGU6IGN5Y2xlLCBrZXk6ICdwcmFjdGljZXMnIH0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBwb2ludGVyPnt7cHJvcGVydHlWYWx1ZShwcmFjdGljZS52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS52YWx1ZSwgcHJhY3RpY2UudmFsdWUudGVybVsnQGlkJ10pIHwgcHJlY2lzaW9uOjMgfCBkZWZhdWx0OictJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJtbC0xXCJcbiAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwicHJhY3RpY2UudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0ubm9kZXNbMF1cIlxuICAgICAgICAgICAgICAgICAgICBrZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuXG4gICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCIgW3Nob3dEZWxldGVkXT1cInRydWVcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlPlxuICA8L2Rpdj5cblxuICA8aGUtY3ljbGVzLXByYWN0aWNlcy1sb2dzICpuZ0lmPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmxvZ3MgJiYgIWlzT3JpZ2luYWxcIlxuICAgIFtjeWNsZV09XCJjeWNsZXNbMF1cIlxuICAgIFtvcmlnaW5hbFZhbHVlc109XCJvcmlnaW5hbFZhbHVlc1swXT8ucHJhY3RpY2VzXCJcbiAgICBbcmVjYWxjdWxhdGVkVmFsdWVzXT1cImN5Y2xlc1swXT8ucHJhY3RpY2VzXCJcbiAgPjwvaGUtY3ljbGVzLXByYWN0aWNlcy1sb2dzPlxuPC9uZy1jb250YWluZXI+XG5cbjxoZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybSAqbmdJZj1cInNob3dEb3dubG9hZFwiXG4gIFtub2Rlc109XCJjeWNsZXNcIiBmaWxlbmFtZT1cImN5Y2xlLXByYWN0aWNlcy5jc3ZcIiBbaXNVcGxvYWRdPVwiZmFsc2VcIlxuICBbaGVhZGVyS2V5c109XCJbJ2N5Y2xlLmlkJywgJ2N5Y2xlLkBpZCcsICdjeWNsZS5wcmFjdGljZXMuJ11cIlxuICAoY2xvc2VkKT1cInNob3dEb3dubG9hZCA9IGZhbHNlXCJcbj48L2hlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VGFibGU+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1ibG9ja1wiPlxuICAgIDxzcGFuPk5vIGRhdGE8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVZhbHVlPlxuICA8c3Bhbj4tPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZXRhaWxzIGxldC1ub2RlPVwiY3ljbGVcIiBsZXQtZGF0YT1cImRhdGFcIiBsZXQta2V5PVwia2V5XCI+XG4gIDxwPjxiPnt7bm9kZS5uYW1lfX08L2I+PC9wPlxuICA8aGUtbm9kZS12YWx1ZS1kZXRhaWxzXG4gICAgW2RhdGFdPVwiZGF0YVwiIFtub2RlVHlwZV09XCJub2RlWydAdHlwZSddXCIgW2RhdGFLZXldPVwia2V5XCJcbiAgPjwvaGUtbm9kZS12YWx1ZS1kZXRhaWxzPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==