@hestia-earth/ui-components 0.0.20 → 0.0.23

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 (40) hide show
  1. package/bundles/hestia-earth-ui-components.umd.js +232 -463
  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/engine/engine.service.d.ts +10 -1
  12. package/esm2015/cycles/cycles-activity/cycles-activity.component.js +17 -23
  13. package/esm2015/cycles/cycles-completeness/cycles-completeness.component.js +9 -3
  14. package/esm2015/cycles/cycles-emissions/cycles-emissions.component.js +17 -56
  15. package/esm2015/cycles/cycles-emissions-chart/cycles-emissions-chart.component.js +18 -8
  16. package/esm2015/cycles/cycles-practices/cycles-practices.component.js +16 -55
  17. package/esm2015/cycles/cycles-result/cycles-result.component.js +19 -6
  18. package/esm2015/cycles/cycles.module.js +4 -8
  19. package/esm2015/cycles/index.js +1 -2
  20. package/esm2015/engine/engine.service.js +16 -2
  21. package/esm2015/files/files-error.model.js +8 -5
  22. package/esm2015/files/files-form/files-form.component.js +1 -1
  23. package/esm2015/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.js +24 -54
  24. package/esm2015/impact-assessments/impact-assessments-products/impact-assessments-products.component.js +30 -131
  25. package/esm2015/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.js +6 -2
  26. package/esm2015/node/node-csv-select-headers/node-csv-select-headers.component.js +11 -7
  27. package/esm2015/node/node-logs-models/node-logs-models.component.js +11 -3
  28. package/esm2015/sites/sites-maps/sites-maps.component.js +10 -3
  29. package/esm2015/sites/sites-measurements/sites-measurements.component.js +8 -2
  30. package/fesm2015/hestia-earth-ui-components.js +160 -357
  31. package/fesm2015/hestia-earth-ui-components.js.map +1 -1
  32. package/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.d.ts +5 -8
  33. package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +5 -30
  34. package/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.d.ts +3 -2
  35. package/node/node-csv-select-headers/node-csv-select-headers.component.d.ts +9 -3
  36. package/package.json +4 -4
  37. package/sites/sites-maps/sites-maps.component.d.ts +3 -1
  38. package/sites/sites-measurements/sites-measurements.component.d.ts +3 -1
  39. package/cycles/cycles-suggest-form/cycles-suggest-form.component.d.ts +0 -23
  40. package/esm2015/cycles/cycles-suggest-form/cycles-suggest-form.component.js +0 -83
@@ -1,10 +1,11 @@
1
1
  import { Component, Input, ViewChild } from '@angular/core';
2
2
  import { Chart } from 'chart.js';
3
- import { propertyValue, ellipsis, groupNodesByTerm, itemColor } from '../../common/utils';
3
+ import { propertyValue, ellipsis, groupNodesByTerm, itemColor, defaultLabel } from '../../common/utils';
4
4
  import * as i0 from "@angular/core";
5
5
  export class CyclesResultComponent {
6
6
  constructor() {
7
7
  this.cycles = [];
8
+ this.selected = [];
8
9
  }
9
10
  ngAfterViewInit() {
10
11
  Chart.scaleService.updateScaleDefaults('category', {
@@ -18,10 +19,20 @@ export class CyclesResultComponent {
18
19
  if ('cycles' in changes && !changes.cycles.firstChange) {
19
20
  return this.init();
20
21
  }
22
+ if ('selected' in changes && !changes.selected.firstChange) {
23
+ return this.init();
24
+ }
25
+ }
26
+ isSelected(cycle) {
27
+ return this.selected.length === 0 || this.selected.includes(cycle['@id']);
21
28
  }
22
29
  init() {
23
- const labels = this.cycles.map(({ name }, index) => `${index + 1}. ${name}`);
24
- const productsPerCycle = groupNodesByTerm(this.cycles, 'products');
30
+ const labels = this.cycles
31
+ .map((cycle, index) => ({ cycle, index }))
32
+ .filter(({ cycle }) => this.isSelected(cycle))
33
+ .map(({ cycle, index }) => `${index + 1}. ${defaultLabel(cycle)}`);
34
+ const cycles = this.cycles.filter(v => this.isSelected(v));
35
+ const productsPerCycle = groupNodesByTerm(cycles, 'products');
25
36
  const datasets = Object.values(productsPerCycle).map(({ term: { name, units, '@id': termId }, values }, index) => {
26
37
  const color = itemColor(index);
27
38
  return {
@@ -29,7 +40,7 @@ export class CyclesResultComponent {
29
40
  backgroundColor: color,
30
41
  borderColor: color,
31
42
  barPercentage: 0.5,
32
- data: this.cycles.map(({ '@id': id }) => values[id] ? propertyValue(values[id].value, termId) : 0)
43
+ data: cycles.map(({ '@id': id }) => values[id] ? propertyValue(values[id].value, termId) : 0)
33
44
  };
34
45
  });
35
46
  this.updateChart(datasets, labels);
@@ -75,7 +86,7 @@ export class CyclesResultComponent {
75
86
  }
76
87
  }
77
88
  CyclesResultComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CyclesResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
78
- CyclesResultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesResultComponent, selector: "he-cycles-result", inputs: { cycles: "cycles" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chart-container\">\n <canvas #chart>{{chart}}</canvas>\n</div>\n", styles: [":host{display:block}.chart-container{height:100%;min-height:300px;position:relative}\n"] });
89
+ CyclesResultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: CyclesResultComponent, selector: "he-cycles-result", inputs: { cycles: "cycles", selected: "selected" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chart-container\">\n <canvas #chart>{{chart}}</canvas>\n</div>\n", styles: [":host{display:block}.chart-container{height:100%;min-height:300px;position:relative}\n"] });
79
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CyclesResultComponent, decorators: [{
80
91
  type: Component,
81
92
  args: [{
@@ -88,5 +99,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
88
99
  args: ['chart']
89
100
  }], cycles: [{
90
101
  type: Input
102
+ }], selected: [{
103
+ type: Input
91
104
  }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLXJlc3VsdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1yZXN1bHQvY3ljbGVzLXJlc3VsdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1yZXN1bHQvY3ljbGVzLXJlc3VsdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUIsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQU8xRixNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBVVUsV0FBTSxHQUFtQixFQUFFLENBQUM7S0F1RXJDO0lBckVDLGVBQWU7UUFDYixLQUFLLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtZQUNqRCxLQUFLLEVBQUU7Z0JBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQzFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLFFBQVEsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUN0RCxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFTyxJQUFJO1FBQ1YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFF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VixNQUFNO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBQcm9kdWN0IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XG5cbmltcG9ydCB7IHByb3BlcnR5VmFsdWUsIGVsbGlwc2lzLCBncm91cE5vZGVzQnlUZXJtLCBpdGVtQ29sb3IgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1jeWNsZXMtcmVzdWx0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N5Y2xlcy1yZXN1bHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jeWNsZXMtcmVzdWx0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3ljbGVzUmVzdWx0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnY2hhcnQnKVxuICBwcml2YXRlIGNoYXJ0UmVmPzogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xuICBASW5wdXQoKVxuICBwcml2YXRlIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgQ2hhcnQuc2NhbGVTZXJ2aWNlLnVwZGF0ZVNjYWxlRGVmYXVsdHMoJ2NhdGVnb3J5Jywge1xuICAgICAgdGlja3M6IHtcbiAgICAgICAgY2FsbGJhY2s6IHRpY2sgPT4gZWxsaXBzaXMoYCR7dGlja31gLCAyNSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5pbml0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCdjeWNsZXMnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXMuY3ljbGVzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbml0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMuY3ljbGVzLm1hcCgoeyBuYW1lIH0sIGluZGV4KSA9PiBgJHtpbmRleCArIDF9LiAke25hbWV9YCk7XG4gICAgY29uc3QgcHJvZHVjdHNQZXJDeWNsZSA9IGdyb3VwTm9kZXNCeVRlcm08SUN5Y2xlSlNPTkxELCBQcm9kdWN0Pih0aGlzLmN5Y2xlcywgJ3Byb2R1Y3RzJyk7XG4gICAgY29uc3QgZGF0YXNldHMgPSBPYmplY3QudmFsdWVzKHByb2R1Y3RzUGVyQ3ljbGUpLm1hcCgoeyB0ZXJtOiB7IG5hbWUsIHVuaXRzLCAnQGlkJzogdGVybUlkIH0sIHZhbHVlcyB9LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29sb3IgPSBpdGVtQ29sb3IoaW5kZXgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IGAke25hbWV9JHt1bml0cyA/IGAgKGluICR7dW5pdHN9KWAgOiAnJ31gLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLFxuICAgICAgICBib3JkZXJDb2xvcjogY29sb3IsXG4gICAgICAgIGJhclBlcmNlbnRhZ2U6IDAuNSxcbiAgICAgICAgZGF0YTogdGhpcy5jeWNsZXMubWFwKCh7ICdAaWQnOiBpZCB9KSA9PiB2YWx1ZXNbaWRdID8gcHJvcGVydHlWYWx1ZSh2YWx1ZXNbaWRdLnZhbHVlLCB0ZXJtSWQpIDogMClcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVDaGFydChkYXRhc2V0cyBhcyBhbnksIGxhYmVscyBhcyBhbnkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDaGFydChkYXRhc2V0cyA9IFtdLCBsYWJlbHMgPSBbXSkge1xuICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICB0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCh0aGlzLmNoYXJ0UmVmPy5uYXRpdmVFbGVtZW50LCB7XG4gICAgICB0eXBlOiAnaG9yaXpvbnRhbEJhcicsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGxhYmVscyxcbiAgICAgICAgZGF0YXNldHNcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgICAgY2FsbGJhY2tzOiB7XG4gICAgICAgICAgICB0aXRsZTogKHRvb2x0aXBJdGVtcywgZGF0YSkgPT4gZGF0YS5sYWJlbHMhW3Rvb2x0aXBJdGVtc1swXS5pbmRleCFdIGFzIGFueVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc2NhbGVzOiB7XG4gICAgICAgICAgeEF4ZXM6IFt7XG4gICAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgICBtaW46IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XSxcbiAgICAgICAgICB5QXhlczogW3tcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnbGVmdCcsXG4gICAgICAgICAgICBzY2FsZUxhYmVsOiB7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiAnQ3ljbGUnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+XG4gIDxjYW52YXMgI2NoYXJ0Pnt7Y2hhcnR9fTwvY2FudmFzPlxuPC9kaXY+XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLXJlc3VsdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1yZXN1bHQvY3ljbGVzLXJlc3VsdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1yZXN1bHQvY3ljbGVzLXJlc3VsdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUIsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFPeEcsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQVVVLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBRTVCLGFBQVEsR0FBYSxFQUFFLENBQUM7S0FrRmpDO0lBaEZDLGVBQWU7UUFDYixLQUFLLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtZQUNqRCxLQUFLLEVBQUU7Z0JBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQzFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLFFBQVEsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUN0RCxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQjtRQUNELElBQUksVUFBVSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FB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UyxFQUFFO3dCQUNULEtBQUssRUFBRSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQU0sQ0FBUTtxQkFDM0U7aUJBQ0Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSxDQUFDOzRCQUNOLEtBQUssRUFBRTtnQ0FDTCxHQUFHLEVBQUUsQ0FBQzs2QkFDUDt5QkFDRixDQUFDO29CQUNGLEtBQUssRUFBRSxDQUFDOzRCQUNOLFFBQVEsRUFBRSxNQUFNOzRCQUNoQixVQUFVLEVBQUU7Z0NBQ1YsT0FBTyxFQUFFLElBQUk7Z0NBQ2IsV0FBVyxFQUFFLE9BQU87NkJBQ3JCO3lCQUNGLENBQUM7aUJBQ0g7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O21IQXhGVSxxQkFBcUI7dUdBQXJCLHFCQUFxQixvT0NYbEMsZ0ZBR0E7NEZEUWEscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO2lCQUM5Qzs4QkFHUyxRQUFRO3NCQURmLFNBQVM7dUJBQUMsT0FBTztnQkFJVixNQUFNO3NCQURiLEtBQUs7Z0JBR0UsUUFBUTtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDeWNsZUpTT05MRCwgUHJvZHVjdCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IENoYXJ0IH0gZnJvbSAnY2hhcnQuanMnO1xuXG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlLCBlbGxpcHNpcywgZ3JvdXBOb2Rlc0J5VGVybSwgaXRlbUNvbG9yLCBkZWZhdWx0TGFiZWwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1jeWNsZXMtcmVzdWx0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N5Y2xlcy1yZXN1bHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jeWNsZXMtcmVzdWx0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3ljbGVzUmVzdWx0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnY2hhcnQnKVxuICBwcml2YXRlIGNoYXJ0UmVmPzogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjaGFydDogYW55O1xuICBASW5wdXQoKVxuICBwcml2YXRlIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBzZWxlY3RlZDogc3RyaW5nW10gPSBbXTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgQ2hhcnQuc2NhbGVTZXJ2aWNlLnVwZGF0ZVNjYWxlRGVmYXVsdHMoJ2NhdGVnb3J5Jywge1xuICAgICAgdGlja3M6IHtcbiAgICAgICAgY2FsbGJhY2s6IHRpY2sgPT4gZWxsaXBzaXMoYCR7dGlja31gLCAyNSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5pbml0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCdjeWNsZXMnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXMuY3ljbGVzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbml0KCk7XG4gICAgfVxuICAgIGlmICgnc2VsZWN0ZWQnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXMuc2VsZWN0ZWQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzU2VsZWN0ZWQoY3ljbGU6IElDeWNsZUpTT05MRCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkLmxlbmd0aCA9PT0gMCB8fCB0aGlzLnNlbGVjdGVkLmluY2x1ZGVzKGN5Y2xlWydAaWQnXSk7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgY29uc3QgbGFiZWxzID0gdGhpcy5jeWNsZXNcbiAgICAgIC5tYXAoKGN5Y2xlLCBpbmRleCkgPT4gKHsgY3ljbGUsIGluZGV4IH0pKVxuICAgICAgLmZpbHRlcigoeyBjeWNsZSB9KSA9PiB0aGlzLmlzU2VsZWN0ZWQoY3ljbGUpKVxuICAgICAgLm1hcCgoeyBjeWNsZSwgaW5kZXggfSkgPT4gYCR7aW5kZXggKyAxfS4gJHtkZWZhdWx0TGFiZWwoY3ljbGUpfWApO1xuICAgIGNvbnN0IGN5Y2xlcyA9IHRoaXMuY3ljbGVzLmZpbHRlcih2ID0+IHRoaXMuaXNTZWxlY3RlZCh2KSk7XG4gICAgY29uc3QgcHJvZHVjdHNQZXJDeWNsZSA9IGdyb3VwTm9kZXNCeVRlcm08SUN5Y2xlSlNPTkxELCBQcm9kdWN0PihjeWNsZXMsICdwcm9kdWN0cycpO1xuICAgIGNvbnN0IGRhdGFzZXRzID0gT2JqZWN0LnZhbHVlcyhwcm9kdWN0c1BlckN5Y2xlKS5tYXAoKHsgdGVybTogeyBuYW1lLCB1bml0cywgJ0BpZCc6IHRlcm1JZCB9LCB2YWx1ZXMgfSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGNvbG9yID0gaXRlbUNvbG9yKGluZGV4KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsOiBgJHtuYW1lfSR7dW5pdHMgPyBgIChpbiAke3VuaXRzfSlgIDogJyd9YCxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcixcbiAgICAgICAgYm9yZGVyQ29sb3I6IGNvbG9yLFxuICAgICAgICBiYXJQZXJjZW50YWdlOiAwLjUsXG4gICAgICAgIGRhdGE6IGN5Y2xlcy5tYXAoKHsgJ0BpZCc6IGlkIH0pID0+IHZhbHVlc1tpZF0gPyBwcm9wZXJ0eVZhbHVlKHZhbHVlc1tpZF0udmFsdWUsIHRlcm1JZCkgOiAwKVxuICAgICAgfTtcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KGRhdGFzZXRzIGFzIGFueSwgbGFiZWxzIGFzIGFueSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNoYXJ0KGRhdGFzZXRzID0gW10sIGxhYmVscyA9IFtdKSB7XG4gICAgaWYgKHRoaXMuY2hhcnQpIHtcbiAgICAgIHRoaXMuY2hhcnQuZGVzdHJveSgpO1xuICAgIH1cbiAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KHRoaXMuY2hhcnRSZWY/Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIHR5cGU6ICdob3Jpem9udGFsQmFyJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGFiZWxzLFxuICAgICAgICBkYXRhc2V0c1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgIGRpc3BsYXk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbHRpcHM6IHtcbiAgICAgICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgICAgIHRpdGxlOiAodG9vbHRpcEl0ZW1zLCBkYXRhKSA9PiBkYXRhLmxhYmVscyFbdG9vbHRpcEl0ZW1zWzBdLmluZGV4IV0gYXMgYW55XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzY2FsZXM6IHtcbiAgICAgICAgICB4QXhlczogW3tcbiAgICAgICAgICAgIHRpY2tzOiB7XG4gICAgICAgICAgICAgIG1pbjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1dLFxuICAgICAgICAgIHlBeGVzOiBbe1xuICAgICAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcbiAgICAgICAgICAgIHNjYWxlTGFiZWw6IHtcbiAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6ICdDeWNsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cbiAgPGNhbnZhcyAjY2hhcnQ+e3tjaGFydH19PC9jYW52YXM+XG48L2Rpdj5cbiJdfQ==
@@ -13,7 +13,6 @@ import { CyclesFunctionalUnitMeasureComponent } from './cycles-functional-unit-m
13
13
  import { CyclesPracticesComponent } from './cycles-practices/cycles-practices.component';
14
14
  import { CyclesPracticesLogsComponent } from './cycles-practices-logs/cycles-practices-logs.component';
15
15
  import { CyclesResultComponent } from './cycles-result/cycles-result.component';
16
- import { CyclesSuggestFormComponent } from './cycles-suggest-form/cycles-suggest-form.component';
17
16
  import * as i0 from "@angular/core";
18
17
  const components = [
19
18
  CyclesActivityComponent,
@@ -25,8 +24,7 @@ const components = [
25
24
  CyclesFunctionalUnitMeasureComponent,
26
25
  CyclesPracticesComponent,
27
26
  CyclesPracticesLogsComponent,
28
- CyclesResultComponent,
29
- CyclesSuggestFormComponent
27
+ CyclesResultComponent
30
28
  ];
31
29
  export class HeCyclesModule {
32
30
  }
@@ -40,8 +38,7 @@ HeCyclesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
40
38
  CyclesFunctionalUnitMeasureComponent,
41
39
  CyclesPracticesComponent,
42
40
  CyclesPracticesLogsComponent,
43
- CyclesResultComponent,
44
- CyclesSuggestFormComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule,
41
+ CyclesResultComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule,
45
42
  HeCommonModule,
46
43
  HeNodeModule], exports: [CyclesActivityComponent,
47
44
  CyclesActivityLogsComponent,
@@ -52,8 +49,7 @@ HeCyclesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
52
49
  CyclesFunctionalUnitMeasureComponent,
53
50
  CyclesPracticesComponent,
54
51
  CyclesPracticesLogsComponent,
55
- CyclesResultComponent,
56
- CyclesSuggestFormComponent] });
52
+ CyclesResultComponent] });
57
53
  HeCyclesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeCyclesModule, imports: [[
58
54
  CommonModule, FormsModule, ReactiveFormsModule,
59
55
  HeCommonModule,
@@ -71,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
71
67
  ]
72
68
  }]
73
69
  }] });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jeWNsZXMvY3ljbGVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7QUFFakcsTUFBTSxVQUFVLEdBQUc7SUFDakIsdUJBQXVCO0lBQ3ZCLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0Isd0JBQXdCO0lBQ3hCLDZCQUE2QjtJQUM3Qiw0QkFBNEI7SUFDNUIsb0NBQW9DO0lBQ3BDLHdCQUF3QjtJQUN4Qiw0QkFBNEI7SUFDNUIscUJBQXFCO0lBQ3JCLDBCQUEwQjtDQUMzQixDQUFDO0FBV0YsTUFBTSxPQUFPLGNBQWM7OzRHQUFkLGNBQWM7NkdBQWQsY0FBYyxpQkF0QnpCLHVCQUF1QjtRQUN2QiwyQkFBMkI7UUFDM0IsMkJBQTJCO1FBQzNCLHdCQUF3QjtRQUN4Qiw2QkFBNkI7UUFDN0IsNEJBQTRCO1FBQzVCLG9DQUFvQztRQUNwQyx3QkFBd0I7UUFDeEIsNEJBQTRCO1FBQzVCLHFCQUFxQjtRQUNyQiwwQkFBMEIsYUFPeEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUI7UUFDOUMsY0FBYztRQUNkLFlBQVksYUFuQmQsdUJBQXVCO1FBQ3ZCLDJCQUEyQjtRQUMzQiwyQkFBMkI7UUFDM0Isd0JBQXdCO1FBQ3hCLDZCQUE2QjtRQUM3Qiw0QkFBNEI7UUFDNUIsb0NBQW9DO1FBQ3BDLHdCQUF3QjtRQUN4Qiw0QkFBNEI7UUFDNUIscUJBQXFCO1FBQ3JCLDBCQUEwQjs2R0FZZixjQUFjLFlBTmhCO1lBQ1AsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUI7WUFDOUMsY0FBYztZQUNkLFlBQVk7U0FDYjs0RkFFVSxjQUFjO2tCQVQxQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxVQUFVO29CQUN4QixPQUFPLEVBQUUsVUFBVTtvQkFDbkIsT0FBTyxFQUFFO3dCQUNQLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CO3dCQUM5QyxjQUFjO3dCQUNkLFlBQVk7cUJBQ2I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBIZUNvbW1vbk1vZHVsZSB9IGZyb20gJy4uL2NvbW1vbi9jb21tb24ubW9kdWxlJztcbmltcG9ydCB7IEhlTm9kZU1vZHVsZSB9IGZyb20gJy4uL25vZGUvbm9kZS5tb2R1bGUnO1xuXG5pbXBvcnQgeyBDeWNsZXNBY3Rpdml0eUNvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLWFjdGl2aXR5L2N5Y2xlcy1hY3Rpdml0eS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3ljbGVzQWN0aXZpdHlMb2dzQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtYWN0aXZpdHktbG9ncy9jeWNsZXMtYWN0aXZpdHktbG9ncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3ljbGVzQ29tcGxldGVuZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtY29tcGxldGVuZXNzL2N5Y2xlcy1jb21wbGV0ZW5lc3MuY29tcG9uZW50JztcbmltcG9ydCB7IEN5Y2xlc0VtaXNzaW9uc0NoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtZW1pc3Npb25zLWNoYXJ0L2N5Y2xlcy1lbWlzc2lvbnMtY2hhcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEN5Y2xlc0VtaXNzaW9uc0xvZ3NDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1lbWlzc2lvbnMtbG9ncy9jeWNsZXMtZW1pc3Npb25zLWxvZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IEN5Y2xlc0VtaXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLWVtaXNzaW9ucy9jeWNsZXMtZW1pc3Npb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDeWNsZXNGdW5jdGlvbmFsVW5pdE1lYXN1cmVDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZS9jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmUuY29tcG9uZW50JztcbmltcG9ydCB7IEN5Y2xlc1ByYWN0aWNlc0NvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLXByYWN0aWNlcy9jeWNsZXMtcHJhY3RpY2VzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDeWNsZXNQcmFjdGljZXNMb2dzQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtcHJhY3RpY2VzLWxvZ3MvY3ljbGVzLXByYWN0aWNlcy1sb2dzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDeWNsZXNSZXN1bHRDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1yZXN1bHQvY3ljbGVzLXJlc3VsdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3ljbGVzU3VnZ2VzdEZvcm1Db21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1zdWdnZXN0LWZvcm0vY3ljbGVzLXN1Z2dlc3QtZm9ybS5jb21wb25lbnQnO1xuXG5jb25zdCBjb21wb25lbnRzID0gW1xuICBDeWNsZXNBY3Rpdml0eUNvbXBvbmVudCxcbiAgQ3ljbGVzQWN0aXZpdHlMb2dzQ29tcG9uZW50LFxuICBDeWNsZXNDb21wbGV0ZW5lc3NDb21wb25lbnQsXG4gIEN5Y2xlc0VtaXNzaW9uc0NvbXBvbmVudCxcbiAgQ3ljbGVzRW1pc3Npb25zQ2hhcnRDb21wb25lbnQsXG4gIEN5Y2xlc0VtaXNzaW9uc0xvZ3NDb21wb25lbnQsXG4gIEN5Y2xlc0Z1bmN0aW9uYWxVbml0TWVhc3VyZUNvbXBvbmVudCxcbiAgQ3ljbGVzUHJhY3RpY2VzQ29tcG9uZW50LFxuICBDeWNsZXNQcmFjdGljZXNMb2dzQ29tcG9uZW50LFxuICBDeWNsZXNSZXN1bHRDb21wb25lbnQsXG4gIEN5Y2xlc1N1Z2dlc3RGb3JtQ29tcG9uZW50XG5dO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IGNvbXBvbmVudHMsXG4gIGV4cG9ydHM6IGNvbXBvbmVudHMsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEhlQ29tbW9uTW9kdWxlLFxuICAgIEhlTm9kZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEhlQ3ljbGVzTW9kdWxlIHsgfVxuIl19
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jeWNsZXMvY3ljbGVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFFaEYsTUFBTSxVQUFVLEdBQUc7SUFDakIsdUJBQXVCO0lBQ3ZCLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0Isd0JBQXdCO0lBQ3hCLDZCQUE2QjtJQUM3Qiw0QkFBNEI7SUFDNUIsb0NBQW9DO0lBQ3BDLHdCQUF3QjtJQUN4Qiw0QkFBNEI7SUFDNUIscUJBQXFCO0NBQ3RCLENBQUM7QUFXRixNQUFNLE9BQU8sY0FBYzs7NEdBQWQsY0FBYzs2R0FBZCxjQUFjLGlCQXJCekIsdUJBQXVCO1FBQ3ZCLDJCQUEyQjtRQUMzQiwyQkFBMkI7UUFDM0Isd0JBQXdCO1FBQ3hCLDZCQUE2QjtRQUM3Qiw0QkFBNEI7UUFDNUIsb0NBQW9DO1FBQ3BDLHdCQUF3QjtRQUN4Qiw0QkFBNEI7UUFDNUIscUJBQXFCLGFBT25CLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CO1FBQzlDLGNBQWM7UUFDZCxZQUFZLGFBbEJkLHVCQUF1QjtRQUN2QiwyQkFBMkI7UUFDM0IsMkJBQTJCO1FBQzNCLHdCQUF3QjtRQUN4Qiw2QkFBNkI7UUFDN0IsNEJBQTRCO1FBQzVCLG9DQUFvQztRQUNwQyx3QkFBd0I7UUFDeEIsNEJBQTRCO1FBQzVCLHFCQUFxQjs2R0FZVixjQUFjLFlBTmhCO1lBQ1AsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUI7WUFDOUMsY0FBYztZQUNkLFlBQVk7U0FDYjs0RkFFVSxjQUFjO2tCQVQxQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxVQUFVO29CQUN4QixPQUFPLEVBQUUsVUFBVTtvQkFDbkIsT0FBTyxFQUFFO3dCQUNQLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CO3dCQUM5QyxjQUFjO3dCQUNkLFlBQVk7cUJBQ2I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBIZUNvbW1vbk1vZHVsZSB9IGZyb20gJy4uL2NvbW1vbi9jb21tb24ubW9kdWxlJztcbmltcG9ydCB7IEhlTm9kZU1vZHVsZSB9IGZyb20gJy4uL25vZGUvbm9kZS5tb2R1bGUnO1xuXG5pbXBvcnQgeyBDeWNsZXNBY3Rpdml0eUNvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLWFjdGl2aXR5L2N5Y2xlcy1hY3Rpdml0eS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3ljbGVzQWN0aXZpdHlMb2dzQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtYWN0aXZpdHktbG9ncy9jeWNsZXMtYWN0aXZpdHktbG9ncy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3ljbGVzQ29tcGxldGVuZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtY29tcGxldGVuZXNzL2N5Y2xlcy1jb21wbGV0ZW5lc3MuY29tcG9uZW50JztcbmltcG9ydCB7IEN5Y2xlc0VtaXNzaW9uc0NoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtZW1pc3Npb25zLWNoYXJ0L2N5Y2xlcy1lbWlzc2lvbnMtY2hhcnQuY29tcG9uZW50JztcbmltcG9ydCB7IEN5Y2xlc0VtaXNzaW9uc0xvZ3NDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1lbWlzc2lvbnMtbG9ncy9jeWNsZXMtZW1pc3Npb25zLWxvZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IEN5Y2xlc0VtaXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLWVtaXNzaW9ucy9jeWNsZXMtZW1pc3Npb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDeWNsZXNGdW5jdGlvbmFsVW5pdE1lYXN1cmVDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZS9jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmUuY29tcG9uZW50JztcbmltcG9ydCB7IEN5Y2xlc1ByYWN0aWNlc0NvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLXByYWN0aWNlcy9jeWNsZXMtcHJhY3RpY2VzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDeWNsZXNQcmFjdGljZXNMb2dzQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtcHJhY3RpY2VzLWxvZ3MvY3ljbGVzLXByYWN0aWNlcy1sb2dzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDeWNsZXNSZXN1bHRDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1yZXN1bHQvY3ljbGVzLXJlc3VsdC5jb21wb25lbnQnO1xuXG5jb25zdCBjb21wb25lbnRzID0gW1xuICBDeWNsZXNBY3Rpdml0eUNvbXBvbmVudCxcbiAgQ3ljbGVzQWN0aXZpdHlMb2dzQ29tcG9uZW50LFxuICBDeWNsZXNDb21wbGV0ZW5lc3NDb21wb25lbnQsXG4gIEN5Y2xlc0VtaXNzaW9uc0NvbXBvbmVudCxcbiAgQ3ljbGVzRW1pc3Npb25zQ2hhcnRDb21wb25lbnQsXG4gIEN5Y2xlc0VtaXNzaW9uc0xvZ3NDb21wb25lbnQsXG4gIEN5Y2xlc0Z1bmN0aW9uYWxVbml0TWVhc3VyZUNvbXBvbmVudCxcbiAgQ3ljbGVzUHJhY3RpY2VzQ29tcG9uZW50LFxuICBDeWNsZXNQcmFjdGljZXNMb2dzQ29tcG9uZW50LFxuICBDeWNsZXNSZXN1bHRDb21wb25lbnRcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogY29tcG9uZW50cyxcbiAgZXhwb3J0czogY29tcG9uZW50cyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgSGVDb21tb25Nb2R1bGUsXG4gICAgSGVOb2RlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSGVDeWNsZXNNb2R1bGUgeyB9XG4iXX0=
@@ -10,5 +10,4 @@ export { CyclesFunctionalUnitMeasureComponent } from './cycles-functional-unit-m
10
10
  export { CyclesPracticesComponent } from './cycles-practices/cycles-practices.component';
11
11
  export { CyclesPracticesLogsComponent } from './cycles-practices-logs/cycles-practices-logs.component';
12
12
  export { CyclesResultComponent } from './cycles-result/cycles-result.component';
13
- export { CyclesSuggestFormComponent } from './cycles-suggest-form/cycles-suggest-form.component';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3ljbGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUVoQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3ljbGVzLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vY3ljbGVzLm1vZHVsZSc7XG5cbmV4cG9ydCB7IEN5Y2xlc0FjdGl2aXR5Q29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtYWN0aXZpdHkvY3ljbGVzLWFjdGl2aXR5LmNvbXBvbmVudCc7XG5leHBvcnQgeyBDeWNsZXNBY3Rpdml0eUxvZ3NDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1hY3Rpdml0eS1sb2dzL2N5Y2xlcy1hY3Rpdml0eS1sb2dzLmNvbXBvbmVudCc7XG5leHBvcnQgeyBDeWNsZXNDb21wbGV0ZW5lc3NDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1jb21wbGV0ZW5lc3MvY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ3ljbGVzRW1pc3Npb25zQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1lbWlzc2lvbnMtY2hhcnQvY3ljbGVzLWVtaXNzaW9ucy1jaGFydC5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ3ljbGVzRW1pc3Npb25zTG9nc0NvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLWVtaXNzaW9ucy1sb2dzL2N5Y2xlcy1lbWlzc2lvbnMtbG9ncy5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ3ljbGVzRW1pc3Npb25zQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtZW1pc3Npb25zL2N5Y2xlcy1lbWlzc2lvbnMuY29tcG9uZW50JztcbmV4cG9ydCB7IEN5Y2xlc0Z1bmN0aW9uYWxVbml0TWVhc3VyZUNvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLWZ1bmN0aW9uYWwtdW5pdC1tZWFzdXJlL2N5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ3ljbGVzUHJhY3RpY2VzQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtcHJhY3RpY2VzL2N5Y2xlcy1wcmFjdGljZXMuY29tcG9uZW50JztcbmV4cG9ydCB7IEN5Y2xlc1ByYWN0aWNlc0xvZ3NDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1wcmFjdGljZXMtbG9ncy9jeWNsZXMtcHJhY3RpY2VzLWxvZ3MuY29tcG9uZW50JztcbmV4cG9ydCB7IEN5Y2xlc1Jlc3VsdENvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLXJlc3VsdC9jeWNsZXMtcmVzdWx0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBDeWNsZXNTdWdnZXN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLXN1Z2dlc3QtZm9ybS9jeWNsZXMtc3VnZ2VzdC1mb3JtLmNvbXBvbmVudCc7XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3ljbGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUVoQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3ljbGVzLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vY3ljbGVzLm1vZHVsZSc7XG5cbmV4cG9ydCB7IEN5Y2xlc0FjdGl2aXR5Q29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtYWN0aXZpdHkvY3ljbGVzLWFjdGl2aXR5LmNvbXBvbmVudCc7XG5leHBvcnQgeyBDeWNsZXNBY3Rpdml0eUxvZ3NDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1hY3Rpdml0eS1sb2dzL2N5Y2xlcy1hY3Rpdml0eS1sb2dzLmNvbXBvbmVudCc7XG5leHBvcnQgeyBDeWNsZXNDb21wbGV0ZW5lc3NDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1jb21wbGV0ZW5lc3MvY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ3ljbGVzRW1pc3Npb25zQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1lbWlzc2lvbnMtY2hhcnQvY3ljbGVzLWVtaXNzaW9ucy1jaGFydC5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ3ljbGVzRW1pc3Npb25zTG9nc0NvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLWVtaXNzaW9ucy1sb2dzL2N5Y2xlcy1lbWlzc2lvbnMtbG9ncy5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ3ljbGVzRW1pc3Npb25zQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtZW1pc3Npb25zL2N5Y2xlcy1lbWlzc2lvbnMuY29tcG9uZW50JztcbmV4cG9ydCB7IEN5Y2xlc0Z1bmN0aW9uYWxVbml0TWVhc3VyZUNvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLWZ1bmN0aW9uYWwtdW5pdC1tZWFzdXJlL2N5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ3ljbGVzUHJhY3RpY2VzQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtcHJhY3RpY2VzL2N5Y2xlcy1wcmFjdGljZXMuY29tcG9uZW50JztcbmV4cG9ydCB7IEN5Y2xlc1ByYWN0aWNlc0xvZ3NDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1wcmFjdGljZXMtbG9ncy9jeWNsZXMtcHJhY3RpY2VzLWxvZ3MuY29tcG9uZW50JztcbmV4cG9ydCB7IEN5Y2xlc1Jlc3VsdENvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLXJlc3VsdC9jeWNsZXMtcmVzdWx0LmNvbXBvbmVudCc7XG4iXX0=
@@ -8,7 +8,21 @@ import * as i1 from "@angular/common/http";
8
8
  export const HE_ORCHESTRATOR_BASE_URL = new InjectionToken('HE_ORCHESTRATOR_BASE_URL');
9
9
  const gitUrl = () => `${gitHome}/hestia-engine-models/-/blob/${gitBranch()}`;
10
10
  const rawUrl = () => `${gitRawBaseUrl}/hestia-engine-models/-/raw/${gitBranch()}`;
11
- export const findConfigModels = ({ models }, modelId, modelKey) => models.flat().filter(({ value, key }) => modelId.startsWith(value) && (!modelKey || key === modelKey));
11
+ const findModels = (models, termId) => models.filter(({ term }) => term === termId);
12
+ /**
13
+ * Find models from the orchestrator configuration.
14
+ *
15
+ * @param config The orchestrator configuration content.
16
+ * @param termId The `@id` of the Term.
17
+ * @param model The `@id` of the model.
18
+ * @param models Optional - list of models from `model-links.json` to default when orchestrator does not contain config.
19
+ * @returns List of models from orchestrator or models if set.
20
+ */
21
+ export const findConfigModels = (config, termId, model, models = []) => {
22
+ const configModels = config.models.flat()
23
+ .filter(({ value, key }) => termId === value && (!model || key === model));
24
+ return configModels.length ? configModels : findModels(models, termId);
25
+ };
12
26
  export const pathToApiDocsPath = (model, term) => [
13
27
  baseUrl(),
14
28
  'docs',
@@ -73,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
73
87
  type: Inject,
74
88
  args: [HE_ORCHESTRATOR_BASE_URL]
75
89
  }] }, { type: i1.HttpClient }]; } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRXpGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFTLDBCQUEwQixDQUFDLENBQUM7QUFFL0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLGdDQUFnQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0FBQzdFLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsYUFBYSwrQkFBK0IsU0FBUyxFQUFFLEVBQUUsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUF1QixFQUFFLE9BQWUsRUFBRSxRQUFnQixFQUFFLEVBQUUsQ0FDckcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFFekcsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFh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LENBQUMsQ0FBQyxDQUFDLENBQ2pHLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQXNCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBc0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxPQUFPLEVBQUU7WUFDckYsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtTQUMxQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7NkdBeERVLGVBQWUsa0JBTWhCLHdCQUF3QjtpSEFOdkIsZUFBZSxjQUZkLE1BQU07NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9JLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG9mLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOb2RlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcblxuaW1wb3J0IHsgYmFzZVVybCwgdG9EYXNoQ2FzZSwgZ2l0SG9tZSwgZ2l0UmF3QmFzZVVybCwgZ2l0QnJhbmNoIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IEhFX09SQ0hFU1RSQVRPUl9CQVNFX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdIRV9PUkNIRVNUUkFUT1JfQkFTRV9VUkwnKTtcblxuY29uc3QgZ2l0VXJsID0gKCkgPT4gYCR7Z2l0SG9tZX0vaGVzdGlhLWVuZ2luZS1tb2RlbHMvLS9ibG9iLyR7Z2l0QnJhbmNoKCl9YDtcbmNvbnN0IHJhd1VybCA9ICgpID0+IGAke2dpdFJhd0Jhc2VVcmx9L2hlc3RpYS1lbmdpbmUtbW9kZWxzLy0vcmF3LyR7Z2l0QnJhbmNoKCl9YDtcblxuZXhwb3J0IGNvbnN0IGZpbmRDb25maWdNb2RlbHMgPSAoeyBtb2RlbHMgfTogSU9yY2hlc3RyYXRvckNvbmZpZywgbW9kZWxJZDogc3RyaW5nLCBtb2RlbEtleTogc3RyaW5nKSA9PlxuICBtb2RlbHMuZmxhdCgpLmZpbHRlcigoeyB2YWx1ZSwga2V5IH0pID0+IG1vZGVsSWQuc3RhcnRzV2l0aCh2YWx1ZSkgJiYgKCFtb2RlbEtleSB8fCBrZXkgPT09IG1vZGVsS2V5KSk7XG5cbmV4cG9ydCBjb25zdCBwYXRoVG9BcGlEb2NzUGF0aCA9IChtb2RlbDogc3RyaW5nLCB0ZXJtPzogc3RyaW5nKSA9PlxuICBbXG4gICAgYmFzZVVybCgpLFxuICAgICdkb2NzJyxcbiAgICBbXG4gICAgICAnI2hlc3RpYS1jYWxjdWxhdGlvbi1tb2RlbHMnLFxuICAgICAgdG9EYXNoQ2FzZShtb2RlbCksXG4gICAgICB0b0Rhc2hDYXNlKHRlcm0pXG4gICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignLScpXG4gIF0uam9pbignLycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIElNb2RlbCB7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiAoY29kZSkgb2YgdGhlIG1vZGVsLlxuICAgKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwuXG4gICAqL1xuICBkb2NQYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBBUEkgRG9jdW1lbnRhdGlvbi5cbiAgICovXG4gIGFwaURvY3NQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG1vZGVsIHVzZWQgYXMgYG1ldGhvZE1vZGVsYC5cbiAgICovXG4gIG1vZGVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdGVybSB0aGUgbW9kZWwgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICAgKi9cbiAgdGVybT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEga2V5IGluIHRoZSBtb2RlbCBpZiB0ZXJtIGRvZXMgbm90IGV4aXN0LlxuICAgKi9cbiAgbW9kZWxLZXk/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJTW9kZWxMaW5rcyB7XG4gIGxpbmtzOiBJTW9kZWxbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcge1xuICBrZXk6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJT3JjaGVzdHJhdG9yQ29uZmlnIHtcbiAgbW9kZWxzOiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWdbXTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGVFbmdpbmVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtb2RlbHNMb2FkaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgbW9kZWxzTG9hZGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX21vZGVscyA9IG5ldyBSZXBsYXlTdWJqZWN0PElNb2RlbFtdPigxKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEhFX09SQ0hFU1RSQVRPUl9CQVNFX1VSTCkgcHJpdmF0ZSBfb3JjaGVzdHJhdG9yQmFzZVVybDogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50XG4gICkge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuICAgIGF3YWl0IHRoaXMubG9hZE1vZGVscygpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9kZWxzKCkge1xuICAgIHRoaXMubW9kZWxzTG9hZGluZyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SU1vZGVsTGlua3M+KGAke3Jhd1VybCgpfS9tb2RlbC1saW5rcy5qc29uYCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoeyBsaW5rczogW10gfSBhcyBJTW9kZWxMaW5rcykpLFxuICAgICAgbWFwKCh7IGxpbmtzIH0pID0+IHtcbiAgICAgICAgdGhpcy5fbW9kZWxzLm5leHQobGlua3MubWFwKCh7IHBhdGgsIGRvY1BhdGgsIC4uLmxpbmsgfSkgPT4gKHtcbiAgICAgICAgICAuLi5saW5rLFxuICAgICAgICAgIHBhdGg6IGAke2dpdFVybCgpfS8ke3BhdGh9YCxcbiAgICAgICAgICBkb2NQYXRoOiBgJHtnaXRVcmwoKX0vJHtkb2NQYXRofWAsXG4gICAgICAgICAgYXBpRG9jc1BhdGg6IHBhdGhUb0FwaURvY3NQYXRoKGxpbmsubW9kZWwsIGxpbmsudGVybSB8fCBsaW5rLm1vZGVsS2V5KVxuICAgICAgICB9KSkpO1xuICAgICAgICB0aGlzLm1vZGVsc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tb2RlbHNMb2FkZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gbGlua3M7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGVscyQoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxzTG9hZGluZyB8fCB0aGlzLm1vZGVsc0xvYWRlZCA/IHRoaXMuX21vZGVscy5hc09ic2VydmFibGUoKSA6IHRoaXMubG9hZE1vZGVscygpO1xuICB9XG5cbiAgcHVibGljIG1vZGVscygpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbHMkLnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgbW9kZWwkKG1vZGVsOiBQYXJ0aWFsPElNb2RlbD4pIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbHMkLnBpcGUoXG4gICAgICBtYXAobW9kZWxzID0+IG1vZGVscy5maW5kKG0gPT4gT2JqZWN0LmVudHJpZXMobW9kZWwpLmV2ZXJ5KChba2V5LCB2YWx1ZV0pID0+IHZhbHVlID09PSBtW2tleV0pKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG1vZGVsKG1vZGVsOiBQYXJ0aWFsPElNb2RlbD4pIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbCQobW9kZWwpLnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgb2NoZXN0cmF0b3JDb25maWcodHlwZTogTm9kZVR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJT3JjaGVzdHJhdG9yQ29uZmlnPihgJHt0aGlzLl9vcmNoZXN0cmF0b3JCYXNlVXJsfS8ke3R5cGV9Lmpzb25gLCB7XG4gICAgICBwYXJhbXM6IHsgaW5saW5lOiBmYWxzZSB9XG4gICAgfSkudG9Qcm9taXNlKCk7XG4gIH1cbn1cbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRXpGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFTLDBCQUEwQixDQUFDLENBQUM7QUFFL0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLGdDQUFnQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0FBQzdFLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsYUFBYSwrQkFBK0IsU0FBUyxFQUFFLEVBQUUsQ0FBQztBQUVsRixNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQWdCLEVBQUUsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO0FBRXRHOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsTUFBMkIsRUFBRSxNQUFjLEVBQUUsS0FBYSxFQUFFLFNBQW1CLEVBQUUsRUFDakYsRUFBRTtJQUNGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1NB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QUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTSxNQUFNLENBQUMsS0FBc0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pHLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQXNCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBc0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxPQUFPLEVBQUU7WUFDckYsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtTQUMxQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7NkdBeERVLGVBQWUsa0JBTWhCLHdCQUF3QjtpSEFOdkIsZUFBZSxjQUZkLE1BQU07NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9JLE1BQU07MkJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG9mLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOb2RlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcblxuaW1wb3J0IHsgYmFzZVVybCwgdG9EYXNoQ2FzZSwgZ2l0SG9tZSwgZ2l0UmF3QmFzZVVybCwgZ2l0QnJhbmNoIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IEhFX09SQ0hFU1RSQVRPUl9CQVNFX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdIRV9PUkNIRVNUUkFUT1JfQkFTRV9VUkwnKTtcblxuY29uc3QgZ2l0VXJsID0gKCkgPT4gYCR7Z2l0SG9tZX0vaGVzdGlhLWVuZ2luZS1tb2RlbHMvLS9ibG9iLyR7Z2l0QnJhbmNoKCl9YDtcbmNvbnN0IHJhd1VybCA9ICgpID0+IGAke2dpdFJhd0Jhc2VVcmx9L2hlc3RpYS1lbmdpbmUtbW9kZWxzLy0vcmF3LyR7Z2l0QnJhbmNoKCl9YDtcblxuY29uc3QgZmluZE1vZGVscyA9IChtb2RlbHM6IElNb2RlbFtdLCB0ZXJtSWQ6IHN0cmluZykgPT4gbW9kZWxzLmZpbHRlcigoeyB0ZXJtIH0pID0+IHRlcm0gPT09IHRlcm1JZCk7XG5cbi8qKlxuICogRmluZCBtb2RlbHMgZnJvbSB0aGUgb3JjaGVzdHJhdG9yIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHBhcmFtIGNvbmZpZyBUaGUgb3JjaGVzdHJhdG9yIGNvbmZpZ3VyYXRpb24gY29udGVudC5cbiAqIEBwYXJhbSB0ZXJtSWQgVGhlIGBAaWRgIG9mIHRoZSBUZXJtLlxuICogQHBhcmFtIG1vZGVsIFRoZSBgQGlkYCBvZiB0aGUgbW9kZWwuXG4gKiBAcGFyYW0gbW9kZWxzIE9wdGlvbmFsIC0gbGlzdCBvZiBtb2RlbHMgZnJvbSBgbW9kZWwtbGlua3MuanNvbmAgdG8gZGVmYXVsdCB3aGVuIG9yY2hlc3RyYXRvciBkb2VzIG5vdCBjb250YWluIGNvbmZpZy5cbiAqIEByZXR1cm5zIExpc3Qgb2YgbW9kZWxzIGZyb20gb3JjaGVzdHJhdG9yIG9yIG1vZGVscyBpZiBzZXQuXG4gKi9cbmV4cG9ydCBjb25zdCBmaW5kQ29uZmlnTW9kZWxzID0gKFxuICBjb25maWc6IElPcmNoZXN0cmF0b3JDb25maWcsIHRlcm1JZDogc3RyaW5nLCBtb2RlbDogc3RyaW5nLCBtb2RlbHM6IElNb2RlbFtdID0gW11cbikgPT4ge1xuICBjb25zdCBjb25maWdNb2RlbHMgPSBjb25maWcubW9kZWxzLmZsYXQoKVxuICAgIC5maWx0ZXIoKHsgdmFsdWUsIGtleSB9KSA9PiB0ZXJtSWQgPT09IHZhbHVlICYmICghbW9kZWwgfHwga2V5ID09PSBtb2RlbCkpO1xuICByZXR1cm4gY29uZmlnTW9kZWxzLmxlbmd0aCA/IGNvbmZpZ01vZGVscyA6IGZpbmRNb2RlbHMobW9kZWxzLCB0ZXJtSWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhdGhUb0FwaURvY3NQYXRoID0gKG1vZGVsOiBzdHJpbmcsIHRlcm0/OiBzdHJpbmcpID0+XG4gIFtcbiAgICBiYXNlVXJsKCksXG4gICAgJ2RvY3MnLFxuICAgIFtcbiAgICAgICcjaGVzdGlhLWNhbGN1bGF0aW9uLW1vZGVscycsXG4gICAgICB0b0Rhc2hDYXNlKG1vZGVsKSxcbiAgICAgIHRvRGFzaENhc2UodGVybSlcbiAgICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCctJylcbiAgXS5qb2luKCcvJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1vZGVsIHtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGltcGxlbWVudGF0aW9uIChjb2RlKSBvZiB0aGUgbW9kZWwuXG4gICAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBtb2RlbC5cbiAgICovXG4gIGRvY1BhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIEFQSSBEb2N1bWVudGF0aW9uLlxuICAgKi9cbiAgYXBpRG9jc1BhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbW9kZWwgdXNlZCBhcyBgbWV0aG9kTW9kZWxgLlxuICAgKi9cbiAgbW9kZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0ZXJtIHRoZSBtb2RlbCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gICAqL1xuICB0ZXJtPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBrZXkgaW4gdGhlIG1vZGVsIGlmIHRlcm0gZG9lcyBub3QgZXhpc3QuXG4gICAqL1xuICBtb2RlbEtleT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNb2RlbExpbmtzIHtcbiAgbGlua3M6IElNb2RlbFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZyB7XG4gIGtleTogc3RyaW5nO1xuICBtb2RlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElPcmNoZXN0cmF0b3JDb25maWcge1xuICBtb2RlbHM6IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZ1tdO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIZUVuZ2luZVNlcnZpY2Uge1xuICBwcml2YXRlIG1vZGVsc0xvYWRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtb2RlbHNMb2FkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbW9kZWxzID0gbmV3IFJlcGxheVN1YmplY3Q8SU1vZGVsW10+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoSEVfT1JDSEVTVFJBVE9SX0JBU0VfVVJMKSBwcml2YXRlIF9vcmNoZXN0cmF0b3JCYXNlVXJsOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnRcbiAgKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkTW9kZWxzKCkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRNb2RlbHMoKSB7XG4gICAgdGhpcy5tb2RlbHNMb2FkaW5nID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJTW9kZWxMaW5rcz4oYCR7cmF3VXJsKCl9L21vZGVsLWxpbmtzLmpzb25gKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih7IGxpbmtzOiBbXSB9IGFzIElNb2RlbExpbmtzKSksXG4gICAgICBtYXAoKHsgbGlua3MgfSkgPT4ge1xuICAgICAgICB0aGlzLl9tb2RlbHMubmV4dChsaW5rcy5tYXAoKHsgcGF0aCwgZG9jUGF0aCwgLi4ubGluayB9KSA9PiAoe1xuICAgICAgICAgIC4uLmxpbmssXG4gICAgICAgICAgcGF0aDogYCR7Z2l0VXJsKCl9LyR7cGF0aH1gLFxuICAgICAgICAgIGRvY1BhdGg6IGAke2dpdFVybCgpfS8ke2RvY1BhdGh9YCxcbiAgICAgICAgICBhcGlEb2NzUGF0aDogcGF0aFRvQXBpRG9jc1BhdGgobGluay5tb2RlbCwgbGluay50ZXJtIHx8IGxpbmsubW9kZWxLZXkpXG4gICAgICAgIH0pKSk7XG4gICAgICAgIHRoaXMubW9kZWxzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1vZGVsc0xvYWRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBsaW5rcztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kZWxzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbHNMb2FkaW5nIHx8IHRoaXMubW9kZWxzTG9hZGVkID8gdGhpcy5fbW9kZWxzLmFzT2JzZXJ2YWJsZSgpIDogdGhpcy5sb2FkTW9kZWxzKCk7XG4gIH1cblxuICBwdWJsaWMgbW9kZWxzKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGVscyQucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbCQobW9kZWw6IFBhcnRpYWw8SU1vZGVsPikge1xuICAgIHJldHVybiB0aGlzLm1vZGVscyQucGlwZShcbiAgICAgIG1hcChtb2RlbHMgPT4gbW9kZWxzLmZpbmQobSA9PiBPYmplY3QuZW50cmllcyhtb2RlbCkuZXZlcnkoKFtrZXksIHZhbHVlXSkgPT4gdmFsdWUgPT09IG1ba2V5XSkpKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbW9kZWwobW9kZWw6IFBhcnRpYWw8SU1vZGVsPikge1xuICAgIHJldHVybiB0aGlzLm1vZGVsJChtb2RlbCkucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBvY2hlc3RyYXRvckNvbmZpZyh0eXBlOiBOb2RlVHlwZSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PElPcmNoZXN0cmF0b3JDb25maWc+KGAke3RoaXMuX29yY2hlc3RyYXRvckJhc2VVcmx9LyR7dHlwZX0uanNvbmAsIHtcbiAgICAgIHBhcmFtczogeyBpbmxpbmU6IGZhbHNlIH1cbiAgICB9KS50b1Byb21pc2UoKTtcbiAgfVxufVxuIl19
@@ -82,7 +82,7 @@ const customErrorMessage = {
82
82
  `The ${paths[0].path} are invalid`;
83
83
  },
84
84
  'may be between 0 and 100': () => 'percentages should be between 0 and 100, not 0 and 1. This may be an error.',
85
- 'may not all be set to false': () => `You may have forgotten to fill in the data completeness assessment.
85
+ 'may not all be set to false': () => `Every value in the data completeness assessment is ${code('false')}. You may have forgotten to fill it in.
86
86
  For information on how to fill it in, please see the ${schemaLink('Cycle#dataCompleteness', 'schema')}.`,
87
87
  'may not be empty': () => 'if this value signifies no data, Hestia only accepts "-" or empty for no data',
88
88
  'may not be 0': ({ dataPath }, errorCount) => {
@@ -126,8 +126,8 @@ const customErrorMessage = {
126
126
  or use Transformations within a Cycle and link those together.`,
127
127
  'every item in the list should be unique': ({ params }) => `This Blank Node is duplicated. Every Blank Node should be unique.
128
128
  Uniqueness is determined by the following fields: ${((params === null || params === void 0 ? void 0 : params.keys) || []).map(code).join(', ')}`,
129
- 'must contain as many items as values': ({ params, dataPath }) => `The number of ${dataPath.split('.').pop()} must match the number of values.
130
- Currently there are ${params === null || params === void 0 ? void 0 : params.current} dates but ${params === null || params === void 0 ? void 0 : params.expected} values.`,
129
+ 'must contain as many items as values': ({ params, dataPath }) => `The number of ${code(dataPath.split('.').pop())} must match the number of ${code('value')}.
130
+ Currently there are ${params === null || params === void 0 ? void 0 : params.current} ${code(dataPath.split('.').pop())} but ${params === null || params === void 0 ? void 0 : params.expected} ${code('value')}.`,
131
131
  'is too generic': ({ params }) => {
132
132
  var _a, _b, _c, _d, _e;
133
133
  return `You have the following Product ${code((_a = params === null || params === void 0 ? void 0 : params.product) === null || _a === void 0 ? void 0 : _a.name)} however,
@@ -164,7 +164,10 @@ const customErrorMessage = {
164
164
  // deprecated, remove when message is not being used anymore
165
165
  'must be 0 for product value 0': ({ dataPath, params }, errorCount) => `If the amount produced is zero, the ${code(dataPath === null || dataPath === void 0 ? void 0 : dataPath.split('.').pop())} of ${errorCount === 1 ? code(params === null || params === void 0 ? void 0 : params.term.name) : 'that product'} must also be zero.`,
166
166
  'economicValueShare must be 0 for product value 0': ({ params }, errorCount) => `If the amount produced is zero, the economicValueShare of ${errorCount === 1 ? code(params === null || params === void 0 ? void 0 : params.term.name) : 'that product'} must also be zero.`,
167
- 'revenue must be 0 for product value 0': ({ params }, errorCount) => `If the amount produced is zero, the revenue of ${errorCount === 1 ? code(params === null || params === void 0 ? void 0 : params.term.name) : 'that product'} must also be zero.`
167
+ 'revenue must be 0 for product value 0': ({ params }, errorCount) => `If the amount produced is zero, the revenue of ${errorCount === 1 ? code(params === null || params === void 0 ? void 0 : params.term.name) : 'that product'} must also be zero.`,
168
+ 'should add a source': ({ params }) => `We recommend adding a Source to all data items.
169
+ This can be done by adding the ${code(params === null || params === void 0 ? void 0 : params.current)} field.
170
+ Sources can also be specified for each data item (i.e., each Input, Emission, Product, Practice, Measurement, or Infrastructure).`
168
171
  };
169
172
  export const formatCustomErrorMessage = (message, error, errorCount = 1) => {
170
173
  const formattedMessage = message && message in customErrorMessage ?
@@ -182,4 +185,4 @@ export const filterError = (error) => [
182
185
  isFailingKeywordError
183
186
  ].every(func => !func(error));
184
187
  export const missingNodeErrors = (errors) => errors.filter(({ keyword, params }) => keyword === 'required' && ((params === null || params === void 0 ? void 0 : params.missingProperty) === '@type' || (params === null || params === void 0 ? void 0 : params.missingProperty) === '@id'));
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUEwQnRELE1BQU0sZUFBZSxHQUFHLHlDQUF5QyxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUM3QyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RixDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksSUFBSSxxQkFBcUIsSUFB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R0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLGdCQUFnQixJQUFJLE1BQU0sQ0FBQztBQUV2RyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUF1QixFQUFFLEVBQUUsQ0FBQztJQUN0RCxxQkFBcUI7Q0FDdEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsTUFBMEIsRUFBRSxFQUFFLENBQzlELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQ3BDLE9BQU8sS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxlQUFlLE1BQUssT0FBTyxJQUFJLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGVBQWUsTUFBSyxLQUFLLENBQUMsQ0FDckcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIHBsdXJhbGl6ZSBmcm9tICdwbHVyYWxpemUnO1xuaW1wb3J0IHsgU2NoZW1hVHlwZSwgU2l0ZVNpdGVUeXBlLCBUZXJtLCBUZXJtVGVybVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyB0b1ByZWNpc2lvbiB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuXG5pbXBvcnQgeyB0ZXJtVHlwZUxhYmVsIH0gZnJvbSAnLi4vdGVybXMvdGVybXMubW9kZWwnO1xuaW1wb3J0IHsgcGF0aFRvQXBpRG9jc1BhdGggfSBmcm9tICcuLi9lbmdpbmUvZW5naW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgYmFzZVVybCwga2V5VG9MYWJlbCB9IGZyb20gJy4uL2NvbW1vbi91dGlscyc7XG5cbi8vIFRPRE86IGFkZCBtb3JlIHZhbGlkYXRpb24ga2V5d29yZCBhbmQgcGFyYW1zXG5leHBvcnQgdHlwZSB2YWxpZGF0aW9uRXJyb3JMZXZlbCA9ICdlcnJvcicgfCAnd2FybmluZyc7XG5leHBvcnQgdHlwZSB2YWxpZGF0aW9uRXJyb3JQYXJhbSA9ICdtaXNzaW5nUHJvcGVydHknIHwgJ3R5cGUnIHwgJ3Rlcm0nIHwgJ21vZGVsJyB8ICdwcm9kdWN0JyB8ICdyYW5nZScgfFxuICAnYWxsb3dlZFZhbHVlcycgfCAnYWRkaXRpb25hbFByb3BlcnR5JyB8ICdleHBlY3RlZCcgfCAnZGVmYXVsdCcgfCAnY3VycmVudCcgfCAncGVyY2VudGFnZScgfCAna2V5cycgfCAndGhyZXNob2xkJztcbmV4cG9ydCB0eXBlIHZhbGlkYXRpb25FcnJvcktleXdvcmQgPSAncmVxdWlyZWQnIHwgJ3R5cGUnIHwgJ2lmJyB8ICd0aGVuJztcblxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdGlvbkVycm9yIHtcbiAgaW5kZXg/OiBudW1iZXI7XG4gIG5vZGVJbmRleD86IG51bWJlcjtcbiAgbGV2ZWw/OiB2YWxpZGF0aW9uRXJyb3JMZXZlbDtcbiAgZGF0YVBhdGg/OiBzdHJpbmc7XG4gIHNjaGVtYVBhdGg/OiBzdHJpbmc7XG4gIGtleXdvcmQ/OiB2YWxpZGF0aW9uRXJyb3JLZXl3b3JkO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBhcmFtcz86IHsgW2tleSBpbiB2YWxpZGF0aW9uRXJyb3JQYXJhbV0/OiBhbnkgfTtcbiAgbWFwRXJyb3I/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElWYWxpZGF0aW9uRXJyb3JXaXRoSW5kZXgge1xuICBlcnJvcjogSVZhbGlkYXRpb25FcnJvcltdO1xuICBpbmRleDogbnVtYmVyO1xuICBjaGFuZ2VkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgbWFwRXJyb3JNZXNzYWdlID0gJ2RvZXMgbm90IGNvbnRhaW4gbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZURhdGFQYXRoID0gKGRhdGFQYXRoID0gJycpID0+IHtcbiAgY29uc3QgW18sIC4uLnBhdGhzXSA9IGRhdGFQYXRoLnNwbGl0KCcuJyk7XG4gIHJldHVybiBwYXRocy5tYXAocGF0aCA9PiAoeyBwYXRoLCBsYWJlbDoga2V5VG9MYWJlbChwYXRoLnJlcGxhY2UoL1xcW1xcZCtcXF0vZywgJycpKSB9KSk7XG59O1xuXG5jb25zdCBjb250YWN0VXNFbWFpbCA9ICdjb21tdW5pdHlAaGVzdGlhLmVhcnRoJztcbmNvbnN0IGV4dGVybmFsTGluayA9IChocmVmOiBzdHJpbmcsIHRleHQ6IHN0cmluZykgPT4gYDxhIGhyZWY9XCIke2hyZWZ9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+JHt0ZXh0fTwvYT5gO1xuY29uc3QgZ2xvc3NhcnlMaW5rID0gKHRleHQ6IHN0cmluZykgPT5cbiAgZXh0ZXJuYWxMaW5rKGAke2Jhc2VVcmwoKX0vZ2xvc3NhcnlgLCB0ZXh0KTtcbmNvbnN0IGdsb3NzYXJ5VHlwZUxpbmsgPSAodHlwZTogVGVybVRlcm1UeXBlKSA9PlxuICBleHRlcm5hbExpbmsoYCR7YmFzZVVybCgpfS9nbG9zc2FyeT90ZXJtVHlwZT0ke3R5cGV9YCwgdGVybVR5cGVMYWJlbCh0eXBlKSk7XG5jb25zdCB0ZXJtTGluayA9ICh7IGlkLCBuYW1lIH06IFBhcnRpYWw8VGVybT4pID0+XG4gIGV4dGVybmFsTGluayhgJHtiYXNlVXJsKCl9L3Rlcm0vJHtpZH1gLCBuYW1lISk7XG5leHBvcnQgY29uc3Qgbm9kZUxpbmsgPSAoeyAnQHR5cGUnOiB0eXBlLCAnQGlkJzogaWQsIG5hbWUgfSkgPT5cbiAgdHlwZSAmJiBpZCA/IGA8YSBocmVmPVwiLyR7dHlwZS50b0xvd2VyQ2FzZSgpfS8ke2lkfVwiIHRhcmdldD1cIl9ibGFua1wiPiR7bmFtZSB8fCBpZH08L2E+YCA6IG51bGw7XG5jb25zdCBzY2hlbWFMaW5rID0gKHR5cGU6IHN0cmluZywgdGl0bGUgPSB0eXBlKSA9PiBgPGEgaHJlZj1cIiR7YmFzZVVybCgpfS9zY2hlbWEvJHt0eXBlfVwiIHRhcmdldD1cIl9ibGFua1wiPiR7dGl0bGV9PC9hPmA7XG5leHBvcnQgY29uc3QgY29kZSA9ICh0ZXh0OiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKSA9PiBgPGNvZGU+JHt0ZXh0fTwvY29kZT5gO1xuY29uc3QgZGF0ZUZvcm1hdE1lc3NhZ2UgPVxuICBgc2hvdWxkIGZvbGxvdyB0aGUgSVNPIDg2MDEgZGF0ZSBmb3JtYXQsIGUuZy4gJHtjb2RlKDIwMDApfSwgb3IgJHtjb2RlKCcyMDAwLTEyJyl9LCBvciAke2NvZGUoJzIwMDAtMTItMzAnKX1gO1xuY29uc3QgY29udGFjdFVzID0gKHRleHQgPSAnY29udGFjdCB1cycpID0+IGA8YSBocmVmPVwibWFpbHRvOiR7Y29udGFjdFVzRW1haWx9XCI+JHt0ZXh0fTwvYT5gO1xuY29uc3QgbW9kZWxMaW5rID0gKHRlcm06IFRlcm0sIG1vZGVsOiBUZXJtKSA9PiBgXG4gIDxhIGhyZWY9XCIke3BhdGhUb0FwaURvY3NQYXRoKG1vZGVsWydAaWQnXSwgdGVybVsnQGlkJ10pfVwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgIDxzcGFuIGNsYXNzPVwicHItMVwiPiR7bW9kZWwubmFtZX08L3NwYW4+XG4gICAgPHNwYW4+KFZpZXcgRG9jcyk8L3NwYW4+XG4gIDwvYT5cbmA7XG5jb25zdCB0aHJlc2hvbGQgPSAodmFsdWU6IG51bWJlcikgPT4gY29kZShgJHt2YWx1ZSAqIDEwMH0lYCk7XG5cbmNvbnN0IG5vVGlsbGFnZTogUGFydGlhbDxUZXJtPiA9IHtpZDogJ25vVGlsbGFnZScsIG5hbWU6ICdObyB0aWxsYWdlJ307XG5cbmV4cG9ydCBjb25zdCBtaXNzaW5nTm9kZUVycm9yTWVzc2FnZSA9ICh7ICdAdHlwZSc6IF90LCB0eXBlLCBuYW1lIH06IGFueSkgPT5cbiAgKF90IHx8IHR5cGUpID09PSAnVGVybScgP1xuICAgIGAke25hbWUgPyBgVGhlIHRlcm0gXCIke25hbWV9XCJgIDogJ1RoaXMgdGVybSd9IGRvZXNuJ3QgbWF0Y2ggYSB0ZXJtIGluIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3Nhcnkgb2YgVGVybXMnKX0uXG4gIFBsZWFzZSBjaGVjayB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5Jyl9IGZvciB0aGUgY29ycmVjdCAke2NvZGUoJ0BpZCcpfSBvciAke2NvZGUoJ25hbWUnKX0gYW5kIHNwZWxsaW5nLmBcbiAgICA6IGBUaGlzICR7c2NoZW1hTGluayhfdCB8fCB0eXBlKX0gZG9lcyBub3QgZXhpc3QgaW4gSGVzdGlhLiBJZiB5b3UgYXJlIHRyeWluZyB0byBsaW5rIHRvIGFuIGV4aXN0aW5nXG4gICR7c2NoZW1hTGluayhfdCB8fCB0eXBlKX0gaW4gSGVzdGlhLCBwbGVhc2UgY2hlY2sgdGhlICR7Y29kZSgnbmFtZScpfSBvciAke2NvZGUoJ0BpZCcpfSBpcyBjb3JyZWN0LlxuICBJZiB5b3UgYXJlIHRyeWluZyB0byBjcmVhdGUgYSBuZXcgJHtzY2hlbWFMaW5rKF90IHx8IHR5cGUpfSwgcGxlYXNlIGlkZW50aWZ5IGl0IHdpdGggYW4gJHtjb2RlKCdpZCcpfSBmaWVsZC5gO1xuXG4vLyBzZXQgbWVzc2FnZSBhcyBlbXB0eSB0byBub3QgZGlzcGxheSBpdFxuY29uc3QgY3VzdG9tRXJyb3JNZXNzYWdlOiB7XG4gIFtrZXk6IHN0cmluZ106IChlcnJvcjogSVZhbGlkYXRpb25FcnJvciwgZXJyb3JDb3VudDogbnVtYmVyKSA9PiBzdHJpbmc7XG59ID0ge1xuICAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFwnQGlkXFwnJzogKCkgPT4gJ2RvZXMgbm90IGV4aXN0IGluIEhlc3RpYS4nLFxuICAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFwnQHR5cGVcXCcnOiAoKSA9PiAnJyxcbiAgJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcJ2lkXFwnJzogKCkgPT4gJ2RvZXMgbm90IGV4aXN0IGluIEhlc3RpYS4nLFxuICAnc2hvdWxkIG1hdGNoIGV4YWN0bHkgb25lIHNjaGVtYSBpbiBvbmVPZic6ICgpID0+ICcnLFxuICAnc2hvdWxkIG1hdGNoIHNvbWUgc2NoZW1hIGluIGFueU9mJzogKCkgPT4gJycsXG4gICdzaG91bGQgTk9UIGhhdmUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICBgVGhlIGZvbGxvd2luZyBmaWVsZCBkb2VzIG5vdCBleGlzdDogJHtwYXJhbXM/LmFkZGl0aW9uYWxQcm9wZXJ0eX1gIDpcbiAgICAgIGBzaG91bGQgbm90IGhhdmUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzYCxcbiAgJ3Nob3VsZCBtYXRjaCBwYXR0ZXJuIFwiXlxcXFxkezEzfSRcIic6ICgpID0+IGBzaG91bGQgYmUgY29tcG9zZWQgb2YgMTMgbnVtYmVyc2AsXG4gICdzaG91bGQgbWF0Y2ggcGF0dGVybiBcIl5bMC05XXs0fSgtWzAtOV17Mn0pPygtWzAtOV17Mn0pPyRcIic6ICgpID0+IGRhdGVGb3JtYXRNZXNzYWdlLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeKFswLTldezR9fC0pKC1bMC05XXsyfSk/KC1bMC05XXsyfSk/JFwiJzogKCkgPT4gZGF0ZUZvcm1hdE1lc3NhZ2UsXG4gICdzaG91bGQgbWF0Y2ggcGF0dGVybiBcIl4oWzAtOV17NH18LSkoLVswLTldezJ9KT8oLVswLTldezJ9KT8oW1RdWzAtMl1bMC05XVxcOlswLTVdWzAtOV1cXDpbMC01XVswLTldKChcXCt8XFwtKVswLTFdWzAtOV06WzAtNV1bMC05XSk/KT8kXCInOiAoKSA9PiBkYXRlRm9ybWF0TWVzc2FnZSxcbiAgJ211c3QgYmUgd2l0aGluIHRoZSBjb3VudHJ5JzogKCkgPT4gYFRoZSBjb3VudHJ5IHByb3ZpZGVkIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlZ2lvbiBwcm92aWRlZC4gUGxlYXNlIGNoZWNrXG4gIHRoZSBjb3VudHJ5IGZvciBlcnJvcnMgb3IgdGhlIHJlZ2lvbiBmb3IgZXJyb3JzLCBhbmQgcmVmZXJlbmNlIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3Nhcnkgb2YgVGVybXMnKX0uYCxcbiAgW21hcEVycm9yTWVzc2FnZV06ICh7IGRhdGFQYXRoIH0pID0+XG4gICAgZGF0YVBhdGggPT09ICcucmVnaW9uJyA/IGBUaGUgcmVnaW9uIHByb3ZpZGVkIGRvZXMgbm90IGNvbnRhaW4gdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgcHJvdmlkZWQuIFBsZWFzZSBjaGVjayB0aGVcbiAgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBmb3IgZXJyb3JzIG9yIHRoZSByZWdpb24gZm9yIGVycm9yLCBhbmQgcmVmZXJlbmNlIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3Nhcnkgb2YgVGVybXMnKX0uYCA6XG4gICAgYFRoZSBjb3VudHJ5IHByb3ZpZGVkIGRvZXMgbm90IGNvbnRhaW4gdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgcHJvdmlkZWQuIFBsZWFzZSBjaGVjayB0aGUgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZVxuICBmb3IgZXJyb3JzIG9yIHRoZSBjb3VudHJ5IGZvciBlcnJvcnMsIGFuZCByZWZlcmVuY2UgdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeSBvZiBUZXJtcycpfS5gLFxuICAnc3VtIG5vdCBlcXVhbCB0byAxMDAlIGZvciBzYW5kQ29udGVudCwgc2lsdENvbnRlbnQsIGNsYXlDb250ZW50JzpcbiAgICAoKSA9PiBgVGhlIHN1bSBvZiBTYW5kLCBTaWx0LCBhbmQgQ2xheSBjb250ZW50IHNob3VsZCBlcXVhbCAxMDAlIGZvciBlYWNoIHNvaWwgZGVwdGggaW50ZXJ2YWwuYCxcbiAgJ2lzIG91dHNpZGUgdGhlIGFsbG93ZWQgcmFuZ2UnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBlcnJvckNvdW50ID09PSAxID9cbiAgICAgIChcbiAgICAgICAgcGFyYW1zPy50ZXJtID9cbiAgICAgICAgICBgZm9yIHRoaXMgbWVhc3VyZW1lbnQsXG4gICAgICAgICAgdGhlIG1heGltdW0gJHtjb2RlKHBhcmFtcz8udGVybVsnQGlkJ10gfHwgcGFyYW1zPy50ZXJtLm5hbWUpfSBpcyAke3BhcmFtcz8ucmFuZ2U/Lm1heH0gYW5kIHRoZSBtaW5pbXVtIGlzICR7cGFyYW1zPy5yYW5nZT8ubWlufWAgOlxuICAgICAgICAgIGBkb2VzIG5vdCBtYXRjaCB0aGUgcG9zc2libGUgcmFuZ2VzIG9mIHNhbmQsIHNpbHQgYW5kIGNsYXkgY29udGVudC5cbiAgICAgICAgICBQbGVhc2UgY2hlY2sgdGhlIG1lYXN1cmVtZW50LCBpdHMgZGVwdGggaW50ZXJ2YWxzLCBhbmQgdGhlIGRhdGVzIG9mIHRoZSBtZWFzdXJlbWVudC5gXG4gICAgICApIDpcbiAgICAgIGBFYWNoIHNvaWwgdGV4dHVyZSBoYXMgYSBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlIGZvciBzYW5kLCBzaWx0LCBhbmQgY2xheSBjb250ZW50LlxuICAgICAgQXQgbGVhc3Qgb25lIG1lYXN1cmVtZW50IG9mIHNhbmQsIHNpbHQsIG9yIGNsYXkgY29udGVudCBkb2VzIG5vdCBtYXRjaCB0aGUgcG9zc2libGUgcmFuZ2UgZm9yIHRoZSBzcGVjaWZpZWQgc29pbCB0ZXh0dXJlLlxuICAgICAgUGxlYXNlIGNoZWNrIHlvdXIgbWVhc3VyZW1lbnRzLCB0aGVpciBkZXB0aCBpbnRlcnZhbHMsIGFuZCB0aGUgZGF0ZXMgb2YgdGhlIG1lYXN1cmVtZW50cy5gLFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIG9uZSBvZiB0aGUgYWxsb3dlZCB2YWx1ZXMnOlxuICAgICh7IHBhcmFtcyB9KSA9PiBgbXVzdCBoYXZlIG9uZSBvZiB0aGVzZSB2YWx1ZXM6ICR7cGFyYW1zPy5hbGxvd2VkVmFsdWVzLmpvaW4oJywgJyl9YCxcbiAgJ2lzIG5vdCBhbGxvd2VkIGZvciB0aGlzIGNoYXJhY3RlcmlzZWRJbmRpY2F0b3InOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgJHtlcnJvckNvdW50ID09PSAxID9cbiAgICAgIGAke1xuICAgICAgICBwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubGVuZ3RoID9cbiAgICAgICAgICBgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIG9uZSBvZiB0aGVzZSBtZXRob2RzOiAke3BhcmFtcz8uYWxsb3dlZFZhbHVlcy5qb2luKCcsICcpfWAgOlxuICAgICAgICAgIGBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhbnkgbWV0aG9kIGFsbG93ZWQuIFBsZWFzZSAke2NvbnRhY3RVcygpfSB0byBjaGFuZ2UgdGhpcy5gXG4gICAgICB9LmAgOlxuICAgICAgYFNvbWUgVGVybXMgYXJlIG5vdCBhbGxvd2VkIHdpdGggdGhlIG1ldGhvZCB5b3Ugc2VsZWN0ZWQuYH1cbiAgICBZb3UgY2FuIGZpbmQgdGhlIGxpc3Qgb2YgYWxsb3dlZCBtZXRob2RzIGZvciBlYWNoIFRlcm0gYnkgY2xpY2tpbmcgb24gdGhlbS5gLFxuICAnc2hvdWxkIGNvbnRhaW4gYSB2YWxpZCBpdGVtJzogKHsgZGF0YVBhdGggfSkgPT4ge1xuICAgIGNvbnN0IHBhdGhzID0gcGFyc2VEYXRhUGF0aChkYXRhUGF0aCEpO1xuICAgIHJldHVybiBwYXRocy5sZW5ndGggPj0gMiA/XG4gICAgICBgVGhlICR7cGF0aHNbcGF0aHMubGVuZ3RoIC0gMV0ucGF0aH0gcmVsYXRlZCB0byB0aGlzICR7cGx1cmFsaXplKHBhdGhzW3BhdGhzLmxlbmd0aCAtIDJdLmxhYmVsLCAxKX0gYXJlIGludmFsaWRgIDpcbiAgICAgIGBUaGUgJHtwYXRoc1swXS5wYXRofSBhcmUgaW52YWxpZGA7XG4gIH0sXG4gICdtYXkgYmUgYmV0d2VlbiAwIGFuZCAxMDAnOiAoKSA9PiAncGVyY2VudGFnZXMgc2hvdWxkIGJlIGJldHdlZW4gMCBhbmQgMTAwLCBub3QgMCBhbmQgMS4gVGhpcyBtYXkgYmUgYW4gZXJyb3IuJyxcbiAgJ21heSBub3QgYWxsIGJlIHNldCB0byBmYWxzZSc6ICgpID0+XG4gICAgYFlvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZmlsbCBpbiB0aGUgZGF0YSBjb21wbGV0ZW5lc3MgYXNzZXNzbWVudC5cbiAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBmaWxsIGl0IGluLCBwbGVhc2Ugc2VlIHRoZSAke3NjaGVtYUxpbmsoJ0N5Y2xlI2RhdGFDb21wbGV0ZW5lc3MnLCAnc2NoZW1hJyl9LmAsXG4gICdtYXkgbm90IGJlIGVtcHR5JzogKCkgPT4gJ2lmIHRoaXMgdmFsdWUgc2lnbmlmaWVzIG5vIGRhdGEsIEhlc3RpYSBvbmx5IGFjY2VwdHMgXCItXCIgb3IgZW1wdHkgZm9yIG5vIGRhdGEnLFxuICAnbWF5IG5vdCBiZSAwJzogKHsgZGF0YVBhdGggfSwgZXJyb3JDb3VudCkgPT4ge1xuICAgIGNvbnN0IHBhdGhzID0gcGFyc2VEYXRhUGF0aChkYXRhUGF0aCEpO1xuICAgIHJldHVybiBgYWRkaW5nIGEgdmFsdWUgJHtlcnJvckNvdW50ID09PSAxID8gYCB0byBldmVyeSAke3BhdGhzWzBdLmxhYmVsfSBgIDogJyAnfSBpcyBoaWdobHkgcmVjb21tZW5kZWRcbiAgICAgIGFzIHdpdGhvdXQgdGhpcyBpdCBpcyBub3QgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBJbXBhY3QgQXNzZXNzbWVudC5cbiAgICAgIElmIHRoZSBhbW91bnQgcHJvZHVjZWQgaXMgemVybywgd2UgcmVjb21tZW5kIHNldHRpbmcgdmFsdWUgdG8gMC5gO1xuICB9LFxuICAndGhlIHN1bSBvZiBhYm92ZSBncm91bmQgY3JvcCByZXNpZHVlIGFuZCBiZWxvdyBncm91bmQgY3JvcCByZXNpZHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8nOiAoKSA9PlxuICAgIGBGb3Igc2l0ZXMgb2YgdHlwZSAke2NvZGUoU2l0ZVNpdGVUeXBlLmNyb3BsYW5kKX0gb3IgJHtjb2RlKFNpdGVTaXRlVHlwZVsncGVybWFuZW50IHBhc3R1cmUnXSl9LFxuICAgIGlmIGRhdGEgY29tcGxldGVuZXNzIGlzIG1hcmtlZCB0cnVlIGZvciBjcm9wIHJlc2lkdWUsXG4gICAgdGhlIHN1bSBvZiB0aGUgQWJvdmUgZ3JvdW5kIGNyb3AgcmVzaWR1ZSB0ZXJtcyBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHplcm8sXG4gICAgYW5kIEJlbG93IGdyb3VuZCBjcm9wIHJlc2lkdWUgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLmAsXG4gICdsb25nRmFsbG93UGVyaW9kIG11c3QgYmUgbG93ZXIgdGhhbiA1IHllYXJzJzogKCkgPT5cbiAgICBgWW91ciBsb25nRmFsbG93UGVyaW9kIGlzIGdyZWF0ZXIgdGhhbiBmaXZlIHllYXJzLlxuICAgIEZhbGxvdyBpcyBkZWZpbmVkIGJ5IEZBT1NUQVQgYXMgbGFuZCBsZWZ0IHVuY3VsdGl2YXRlZCBmb3IgYmV0d2VlbiAxIGFuZCA1IHllYXJzLFxuICAgIGFuZCB0aGlzIGRlZmluaXRpb24gaXMgdXNlZCBmb3IgSGVzdGlhIGFsc28uYCxcbiAgJ3Nob3VsZCBiZSB3aXRoaW4gcGVyY2VudGFnZSBvZiBkZWZhdWx0IHZhbHVlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICBgaXMgwrEke3RocmVzaG9sZChwYXJhbXM/LnRocmVzaG9sZCl9IGRpZmZlcmVudCB0byBvdXIgZGVmYXVsdCB2YWx1ZSB3aGljaCBpcyAke3BhcmFtcz8uZGVmYXVsdH0uXG4gICAgICBQbGVhc2UgY2hlY2sgeW91ciB1cGxvYWRlZCBkYXRhIGFzIHRoaXMgbWF5IGJlIGFuIGVycm9yLmAgOlxuICAgICAgYGlzIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50IHRoYW4gb3VyIGRlZmF1bHQgdmFsdWUuIFBsZWFzZSBjaGVjayB5b3VyIHVwbG9hZGVkIGRhdGEgYXMgdGhpcyBtYXkgYmUgYW4gZXJyb3IuYCxcbiAgJ3RoZSB2YWx1ZSBwcm92aWRlZCBpcyBub3QgY29uc2lzdGVudCB3aXRoIHRoZSBtb2RlbCByZXN1bHQnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgVGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IgJHtjb2RlKHBhcmFtcz8udGVybS5uYW1lKX1cbiAgICAke3BhcmFtcz8ubW9kZWw/Lm5hbWUgPyBgdXNpbmcgJHttb2RlbExpbmsocGFyYW1zPy50ZXJtLCBwYXJhbXM/Lm1vZGVsKX0gYCA6ICcnfVxuICAgIGZyb20gdGhlIGRhdGEgcHJvdmlkZWQgaW4gdGhlIHVwbG9hZCBpcyAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICAgIGAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5leHBlY3RlZCwgMykpfSwgYnV0IHRoZSB2YWx1ZSBpbiB0aGUgdXBsb2FkIGlzICR7Y29kZSh0b1ByZWNpc2lvbihwYXJhbXM/LmN1cnJlbnQsIDMpKX0uXG4gICAgICAgICR7cGFyYW1zPy50aHJlc2hvbGQgPyBgT3VyIHRocmVzaG9sZCBpcyDCsSR7dGhyZXNob2xkKHBhcmFtcz8udGhyZXNob2xkKX0uYCA6ICcnfVxuICAgICAgICBQbGVhc2UgZWl0aGVyOlxuICAgICAgICAxKSBjaGVjayB0aGUgJHtwYXJhbXM/LnRlcm0udGVybVR5cGV9IHZhbHVlIHlvdSBwcm92aWRlZDtcbiAgICAgICAgMikgY2hlY2sgdGhlIGRhdGEgeW91IHByb3ZpZGVkIHdoaWNoIGlzIHRoZSBpbnB1dCBpbnRvIHRoaXMgbW9kZWw7XG4gICAgICAgIDMpIGNhcmVmdWxseSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgaWYgd2UgdXNlZCBhIGRlZmF1bHQgcHJvcGVydHkgYXMgcGFydCBvZiB0aGUgY2FsY3VsYXRpb25zLmAgOlxuICAgICAgICBgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0LmBcbiAgICB9YCxcbiAgJ3RoZSBtZWFzdXJlbWVudCBwcm92aWRlZCBtaWdodCBiZSBpbiBlcnJvcic6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBUaGUgZXhwZWN0ZWQgdmFsdWUgZm9yICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9IGZyb20gdGhlIGRhdGEgcHJvdmlkZWQgaW4gdGhlIHVwbG9hZCBpcyAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICAgIGAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5leHBlY3RlZCwgMykpfSwgYnV0IHRoZSB2YWx1ZSBpbiB0aGUgdXBsb2FkIGlzICR7Y29kZSh0b1ByZWNpc2lvbihwYXJhbXM/LmN1cnJlbnQsIDMpKX0uXG4gICAgICAgICR7cGFyYW1zPy50aHJlc2hvbGQgPyBgT3VyIHRocmVzaG9sZCBpcyDCsSR7dGhyZXNob2xkKHBhcmFtcz8udGhyZXNob2xkKX0uYCA6ICcnfWAgOlxuICAgICAgICBgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0LmBcbiAgICB9YCxcbiAgJ211c3QgYmUgZXF1YWwgdG8gcHJldmlvdXMgcHJvZHVjdCBtdWx0aXBsaWVkIGJ5IHRoZSBzaGFyZSc6ICgpID0+XG4gICAgYFByb2R1Y3RzIGZyb20gYSB0cmFuc2Zvcm1hdGlvbiB3aGljaCBhcmUgYW4gSW5wdXQgaW4gdG8gdGhlIG5leHQgdHJhbnNmb3JtYXRpb24gbXVzdCBmb2xsb3cgdGhlIGZvbGxvd2luZyBydWxlOlxuICAgICR7Y29kZSgncHJldmlvdXMucHJvZHVjdC52YWx1ZSAqIGN1cnJlbnQucHJldmlvdXNUcmFuc2Zvcm1hdGlvblNoYXJlIC8gMTAwID09IGN1cnJlbnQuaW5wdXQudmFsdWUnKX1gLFxuICAnbXVzdCBoYXZlIG9ubHkgb25lIGVudHJ5IHdpdGggdGhlIHNhbWUgdGVybS50ZXJtVHlwZSA9IGV4Y3JldGFNYW5hZ2VtZW50JzogKCkgPT5cbiAgICBgVGhlcmUgY2FuIG9ubHkgYmUgb25lIFByYWN0aWNlIG9mIHR5cGUgZXhjcmV0YU1hbmFnZW1lbnQgaW4gYSBDeWNsZS5cbiAgICBUbyByZXByZXNlbnQgbXVsdGlwbGUgZXhjcmV0YSBtYW5hZ2VtZW50IHN5c3RlbXMgZWl0aGVyIHVzZSBtdWx0aXBsZSBDeWNsZXMgYW5kIGxpbmsgdGhlbSB0b2dldGhlcixcbiAgICBvciB1c2UgVHJhbnNmb3JtYXRpb25zIHdpdGhpbiBhIEN5Y2xlIGFuZCBsaW5rIHRob3NlIHRvZ2V0aGVyLmAsXG4gICdldmVyeSBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBiZSB1bmlxdWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhpcyBCbGFuayBOb2RlIGlzIGR1cGxpY2F0ZWQuIEV2ZXJ5IEJsYW5rIE5vZGUgc2hvdWxkIGJlIHVuaXF1ZS5cbiAgICBVbmlxdWVuZXNzIGlzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBmaWVsZHM6ICR7XG4gICAgICAocGFyYW1zPy5rZXlzIHx8IFtdKS5tYXAoY29kZSkuam9pbignLCAnKVxuICAgIH1gLFxuICAnbXVzdCBjb250YWluIGFzIG1hbnkgaXRlbXMgYXMgdmFsdWVzJzogKHsgcGFyYW1zLCBkYXRhUGF0aCB9KSA9PlxuICAgIGBUaGUgbnVtYmVyIG9mICR7ZGF0YVBhdGguc3BsaXQoJy4nKS5wb3AoKX0gbXVzdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHZhbHVlcy5cbiAgICBDdXJyZW50bHkgdGhlcmUgYXJlICR7cGFyYW1zPy5jdXJyZW50fSBkYXRlcyBidXQgJHtwYXJhbXM/LmV4cGVjdGVkfSB2YWx1ZXMuYCxcbiAgJ2lzIHRvbyBnZW5lcmljJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFlvdSBoYXZlIHRoZSBmb2xsb3dpbmcgUHJvZHVjdCAke2NvZGUocGFyYW1zPy5wcm9kdWN0Py5uYW1lKX0gaG93ZXZlcixcbiAgICB5b3UgaGF2ZSB1c2VkIGEgZ2VuZXJpYyAke2dsb3NzYXJ5VHlwZUxpbmsocGFyYW1zPy50ZXJtPy50ZXJtVHlwZSl9IHRlcm0gJHtjb2RlKHBhcmFtcz8udGVybT8ubmFtZSl9LlxuICAgIFVzZSBhIG1vcmUgc3BlY2lmaWMgdGVybSBmb3IgdGhlICR7XG4gICAgICBnbG9zc2FyeVR5cGVMaW5rKHBhcmFtcz8udGVybT8udGVybVR5cGUpXG4gICAgfSB3aGljaCByZWZsZWN0cyB0aGUgc3BlY2lmaWMgJHtcbiAgICAgIGdsb3NzYXJ5VHlwZUxpbmsocGFyYW1zPy5wcm9kdWN0Py50ZXJtVHlwZSlcbiAgICB9LmAsXG4gICdpcyBtaXNzaW5nIHJlcXVpcmVkIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24nOiAoKSA9PlxuICAgIGBUaGUgYXV0b21hdGljIGJpYmxpb2dyYXBoeSBzZWFyY2ggZmFpbGVkIGZvciB0aGlzIEJpYmxpb2dyYXBoeS4gRWl0aGVyOlxuICAgIDEpIG1hbnVhbGx5IGZpbGwtaW4gdGhlIDxiPnJlcXVpcmVkPC9iPiBiaWJsaW9ncmFwaGljIGluZm9ybWF0aW9uIGFzIHBlclxuICAgICR7c2NoZW1hTGluayhTY2hlbWFUeXBlLkJpYmxpb2dyYXBoeSwgJ291ciBzY2hlbWEnKX0uXG4gICAgMikgcHJvdmlkZSB0aGUgJHtjb2RlKCdkb2N1bWVudERPSScpfSBhcyB3ZWxsIGFzIHRoZSAke2NvZGUoJ3RpdGxlJyl9XG4gICAgMykgY2hlY2sgdGhlICR7Y29kZSgnZG9jdW1lbnRET0knKX0gYW5kICR7Y29kZSgndGl0bGUnKX0gZm9yIHR5cG9zIGFnYWluc3QgdGhlXG4gICAgJHtleHRlcm5hbExpbmsoJ2h0dHBzOi8vd3d3Lm1lbmRlbGV5LmNvbScsICdNZW5kZWxleSBjYXRhbG9ndWUnKX1gLFxuICAnc2hvdWxkIGJlIGxvd2VyIHRoYW4gbWF4IHNpemUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhlIGJvdW5kYXJ5IG9yIHJlZ2lvbiBpcyA+JHtwYXJhbXM/LmV4cGVjdGVkfWttMiBhbmQgaXMgdG9vIGxhcmdlIHRvIHJlbGlhYmx5IGdhcCBmaWxsIE1lYXN1cmVtZW50cy5gLFxuICAnYW4gZXhjcmV0YSBpbnB1dCBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIGFuIGV4Y3JldGFNYW5hZ2VtZW50IHByYWN0aWNlJzogKHsgZGF0YVBhdGggfSkgPT4ge1xuICAgIGNvbnN0IHBhdGhzID0gcGFyc2VEYXRhUGF0aChkYXRhUGF0aCEpO1xuICAgIHJldHVybiBgRXhjcmV0YSBtYW5hZ2VtZW50IGlzIHRoZSBjb252ZXJzaW9uIG9mIGV4Y3JldGEgdG8gYW5vdGhlciB0eXBlIG9mIGV4Y3JldGEuXG4gICAgICBZb3UgaGF2ZSBhZGRlZCBhbiBleGNyZXRhTWFuYWdlbWVudCBQcmFjdGljZSB0byB0aGlzICR7cGF0aHNbMF0ubGFiZWx9IGJ1dCB0aGVyZSBpcyBubyBleGNyZXRhIElucHV0LlxuICAgICAgVG8gcmVwcmVzZW50IGV4Y3JldGEgbWFuYWdlbWVudCwgdXNlIGEgJHtwYXRoc1swXS5sYWJlbH0gd2l0aCBleGNyZXRhIGFzIGFuIElucHV0IGFuZCBleGNyZXRhTWFuYWdlbWVudCBhcyBhIFByYWN0aWNlLmA7XG4gIH0sXG4gICdvbmx5IDEgcHJpbWFyeSBwcm9kdWN0IGFsbG93ZWQnOiAoKSA9PiAnVGhlcmUgY2FuIG9ubHkgYmUgb25lIHByaW1hcnkgcHJvZHVjdCBpbiBlYWNoIEN5Y2xlLicsXG4gICdpcyBub3QgYWxsb3dlZCBpbiBjb21iaW5hdGlvbiB3aXRoIG5vVGlsbGFnZSc6ICgpID0+XG4gICAgYFRoaXMgb3BlcmF0aW9uIGludm9sdmVzIHRpbGxhZ2UsIHlldCB5b3UgaGF2ZSBzcGVjaWZpZWQgdGhlIFByYWN0aWNlICR7dGVybUxpbmsobm9UaWxsYWdlKX0uXG4gICAgRWl0aGVyIGNoYW5nZSB0aGlzIG9wZXJhdGlvbiBvciB0aGUgUHJhY3RpY2UuYCxcbiAgJ3Nob3VsZCBjb250YWluIGEgdGlsbGFnZSBwcmFjdGljZSc6ICgpID0+XG4gICAgYFdlIHJlY29tbWVuZCBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIHRpbGxhZ2UgdXNlZCBmb3IgdGhpcyBDeWNsZS5cbiAgICBQbGVhc2Ugc2VlIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBnbG9zc2FyeS5gLFxuICAnbXVzdCBzZXQgdmFsdWUgZm9yIGV2ZXJ5IHRpbGxhZ2UgcHJhY3RpY2UnOiAoKSA9PlxuICAgIGBFaXRoZXIgc3BlY2lmeSBhIHNpbmdsZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBwcmFjdGljZSBvciBhZGQgYSB2YWx1ZSB0byBhbGwgcHJhY3RpY2VzLmAsXG4gICdzdW0gbm90IGVxdWFsIHRvIDEwMCUgZm9yIHRpbGxhZ2UgcHJhY3RpY2VzJzogKCkgPT5cbiAgICBgVGhlIHN1bSBvZiAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBwcmFjdGljZXMgbXVzdCBlcXVhbCAxMDAlLmAsXG4gICdjYW4gb25seSBoYXZlIDEgdGlsbGFnZSBwcmFjdGljZSB3aXRob3V0IGEgdmFsdWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgSXQgaXMgbm90IHBvc3NpYmxlIGZvciBhIEN5Y2xlIHRvIGhhdmUgdGhlIGZvbGxvd2luZyB0aWxsYWdlIFByYWN0aWNlczpcbiAgICAkeyhwYXJhbXM/LmN1cnJlbnQgPz8gW10pLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oJyBhbmQgJyl9IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgSWYgbXVsdGlwbGUgdGlsbGFnZSBwcmFjdGljZXMgZGlkIG9jY3VyLCBwbGVhc2Ugc3BlY2lmeSB0aGUgcGVyY2VudGFnZSBvZiBhcmVhIHRoZXkgb2NjdXJyZWQgb24uYCxcbiAgJ2NhbiBub3QgYmUgbGlua2VkIHRvIHRoZSBzYW1lIEN5Y2xlJzogKCkgPT4gJ1lvdSBjYW4gbm90IGxpbmsgYW4gSW5wdXQgdG8gdGhlIEltcGFjdCBBc3Nlc3NtZW50IG9mIHRoZSBzYW1lIEN5Y2xlLicsXG4gIC8vIGRlcHJlY2F0ZWQsIHJlbW92ZSB3aGVuIG1lc3NhZ2UgaXMgbm90IGJlaW5nIHVzZWQgYW55bW9yZVxuICAnbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBkYXRhUGF0aCwgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYElmIHRoZSBhbW91bnQgcHJvZHVjZWQgaXMgemVybywgdGhlICR7Y29kZShkYXRhUGF0aD8uc3BsaXQoJy4nKS5wb3AoKSEpfSBvZiAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/IGNvZGUocGFyYW1zPy50ZXJtLm5hbWUpIDogJ3RoYXQgcHJvZHVjdCdcbiAgICB9IG11c3QgYWxzbyBiZSB6ZXJvLmAsXG4gICdlY29ub21pY1ZhbHVlU2hhcmUgbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgSWYgdGhlIGFtb3VudCBwcm9kdWNlZCBpcyB6ZXJvLCB0aGUgZWNvbm9taWNWYWx1ZVNoYXJlIG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ3JldmVudWUgbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgSWYgdGhlIGFtb3VudCBwcm9kdWNlZCBpcyB6ZXJvLCB0aGUgcmV2ZW51ZSBvZiAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/IGNvZGUocGFyYW1zPy50ZXJtLm5hbWUpIDogJ3RoYXQgcHJvZHVjdCdcbiAgICB9IG11c3QgYWxzbyBiZSB6ZXJvLmBcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UgPSAobWVzc2FnZT86IHN0cmluZywgZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yLCBlcnJvckNvdW50ID0gMSkgPT4ge1xuICBjb25zdCBmb3JtYXR0ZWRNZXNzYWdlID0gbWVzc2FnZSAmJiBtZXNzYWdlIGluIGN1c3RvbUVycm9yTWVzc2FnZSA/XG4gICAgY3VzdG9tRXJyb3JNZXNzYWdlW21lc3NhZ2VdKGVycm9yISwgZXJyb3JDb3VudCkgOlxuICAgIG1lc3NhZ2U7XG4gIHJldHVybiBmb3JtYXR0ZWRNZXNzYWdlID8gYDxwIGNsYXNzPVwiaXMtbm9ybWFsXCI+JHtmb3JtYXR0ZWRNZXNzYWdlfTwvcD5gIDogJyc7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0RXJyb3IgPSAoZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yLCBlcnJvckNvdW50ID0gMSk6IElWYWxpZGF0aW9uRXJyb3IgfCB1bmRlZmluZWQgPT4gZXJyb3IgPyAoe1xuICBsZXZlbDogJ2Vycm9yJyxcbiAgLi4uZXJyb3IsXG4gIG1hcEVycm9yOiBlcnJvci5tZXNzYWdlID09PSBtYXBFcnJvck1lc3NhZ2UsXG4gIG1lc3NhZ2U6IGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZShlcnJvci5tZXNzYWdlLCBlcnJvciwgZXJyb3JDb3VudClcbn0pIDogdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3QgZXJyb3JIYXNFcnJvciA9IChlcnJvcj86IElWYWxpZGF0aW9uRXJyb3IpID0+IGVycm9yICYmIChlcnJvci5sZXZlbCA9PT0gJ2Vycm9yJyB8fCAhZXJyb3IubGV2ZWwpO1xuXG5leHBvcnQgY29uc3QgZXJyb3JIYXNXYXJuaW5nID0gKGVycm9yPzogSVZhbGlkYXRpb25FcnJvcikgPT4gZXJyb3IgJiYgZXJyb3IubGV2ZWwgPT09ICd3YXJuaW5nJztcblxuZXhwb3J0IGNvbnN0IGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IgPSAoeyBwYXJhbXMgfTogSVZhbGlkYXRpb25FcnJvcikgPT4gISFwYXJhbXMgJiYgJ21pc3NpbmdQcm9wZXJ0eScgaW4gcGFyYW1zO1xuXG5leHBvcnQgY29uc3QgaXNNaXNzaW5nT25lT2ZFcnJvciA9ICh7IGtleXdvcmQsIHNjaGVtYVBhdGggfTogSVZhbGlkYXRpb25FcnJvcikgPT5cbiAga2V5d29yZCA9PT0gJ3JlcXVpcmVkJyAmJiAoc2NoZW1hUGF0aCB8fCAnJykuaW5jbHVkZXMoJ29uZU9mJyk7XG5cbmNvbnN0IGlzRmFpbGluZ0tleXdvcmRFcnJvciA9ICh7IHBhcmFtcyB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PiAhIXBhcmFtcyAmJiAnZmFpbGluZ0tleXdvcmQnIGluIHBhcmFtcztcblxuZXhwb3J0IGNvbnN0IGZpbHRlckVycm9yID0gKGVycm9yOiBJVmFsaWRhdGlvbkVycm9yKSA9PiBbXG4gIGlzRmFpbGluZ0tleXdvcmRFcnJvclxuXS5ldmVyeShmdW5jID0+ICFmdW5jKGVycm9yKSk7XG5cbmV4cG9ydCBjb25zdCBtaXNzaW5nTm9kZUVycm9ycyA9IChlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSkgPT5cbiAgZXJyb3JzLmZpbHRlcigoeyBrZXl3b3JkLCBwYXJhbXMgfSkgPT5cbiAgICBrZXl3b3JkID09PSAncmVxdWlyZWQnICYmIChwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0B0eXBlJyB8fCBwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0BpZCcpXG4gICk7XG4iXX0=
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUEwQnRELE1BQU0sZUFBZSxHQUFHLHlDQUF5QyxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUM3QyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RixDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksSUFBSSxxQkFBcUIsSUFB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QUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLGlCQUFpQixJQUFJLE1BQU0sQ0FBQztBQUVoSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBb0IsRUFBRSxFQUFFLENBQy9FLE9BQU8sS0FBSyxVQUFVLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRWpFLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxnQkFBZ0IsSUFBSSxNQUFNLENBQUM7QUFFdkcsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQUM7SUFDdEQscUJBQXFCO0NBQ3RCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUU5QixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQTBCLEVBQUUsRUFBRSxDQUM5RCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUNwQyxPQUFPLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsZUFBZSxNQUFLLE9BQU8sSUFBSSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxlQUFlLE1BQUssS0FBSyxDQUFDLENBQ3JHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgKiBhcyBwbHVyYWxpemUgZnJvbSAncGx1cmFsaXplJztcbmltcG9ydCB7IFNjaGVtYVR5cGUsIFNpdGVTaXRlVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24gfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgdGVybVR5cGVMYWJlbCB9IGZyb20gJy4uL3Rlcm1zL3Rlcm1zLm1vZGVsJztcbmltcG9ydCB7IHBhdGhUb0FwaURvY3NQYXRoIH0gZnJvbSAnLi4vZW5naW5lL2VuZ2luZS5zZXJ2aWNlJztcbmltcG9ydCB7IGJhc2VVcmwsIGtleVRvTGFiZWwgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuXG4vLyBUT0RPOiBhZGQgbW9yZSB2YWxpZGF0aW9uIGtleXdvcmQgYW5kIHBhcmFtc1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yTGV2ZWwgPSAnZXJyb3InIHwgJ3dhcm5pbmcnO1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yUGFyYW0gPSAnbWlzc2luZ1Byb3BlcnR5JyB8ICd0eXBlJyB8ICd0ZXJtJyB8ICdtb2RlbCcgfCAncHJvZHVjdCcgfCAncmFuZ2UnIHxcbiAgJ2FsbG93ZWRWYWx1ZXMnIHwgJ2FkZGl0aW9uYWxQcm9wZXJ0eScgfCAnZXhwZWN0ZWQnIHwgJ2RlZmF1bHQnIHwgJ2N1cnJlbnQnIHwgJ3BlcmNlbnRhZ2UnIHwgJ2tleXMnIHwgJ3RocmVzaG9sZCc7XG5leHBvcnQgdHlwZSB2YWxpZGF0aW9uRXJyb3JLZXl3b3JkID0gJ3JlcXVpcmVkJyB8ICd0eXBlJyB8ICdpZicgfCAndGhlbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRpb25FcnJvciB7XG4gIGluZGV4PzogbnVtYmVyO1xuICBub2RlSW5kZXg/OiBudW1iZXI7XG4gIGxldmVsPzogdmFsaWRhdGlvbkVycm9yTGV2ZWw7XG4gIGRhdGFQYXRoPzogc3RyaW5nO1xuICBzY2hlbWFQYXRoPzogc3RyaW5nO1xuICBrZXl3b3JkPzogdmFsaWRhdGlvbkVycm9yS2V5d29yZDtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwYXJhbXM/OiB7IFtrZXkgaW4gdmFsaWRhdGlvbkVycm9yUGFyYW1dPzogYW55IH07XG4gIG1hcEVycm9yPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdGlvbkVycm9yV2l0aEluZGV4IHtcbiAgZXJyb3I6IElWYWxpZGF0aW9uRXJyb3JbXTtcbiAgaW5kZXg6IG51bWJlcjtcbiAgY2hhbmdlZD86IGJvb2xlYW47XG59XG5cbmNvbnN0IG1hcEVycm9yTWVzc2FnZSA9ICdkb2VzIG5vdCBjb250YWluIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUnO1xuXG5leHBvcnQgY29uc3QgcGFyc2VEYXRhUGF0aCA9IChkYXRhUGF0aCA9ICcnKSA9PiB7XG4gIGNvbnN0IFtfLCAuLi5wYXRoc10gPSBkYXRhUGF0aC5zcGxpdCgnLicpO1xuICByZXR1cm4gcGF0aHMubWFwKHBhdGggPT4gKHsgcGF0aCwgbGFiZWw6IGtleVRvTGFiZWwocGF0aC5yZXBsYWNlKC9cXFtcXGQrXFxdL2csICcnKSkgfSkpO1xufTtcblxuY29uc3QgY29udGFjdFVzRW1haWwgPSAnY29tbXVuaXR5QGhlc3RpYS5lYXJ0aCc7XG5jb25zdCBleHRlcm5hbExpbmsgPSAoaHJlZjogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpID0+IGA8YSBocmVmPVwiJHtocmVmfVwiIHRhcmdldD1cIl9ibGFua1wiPiR7dGV4dH08L2E+YDtcbmNvbnN0IGdsb3NzYXJ5TGluayA9ICh0ZXh0OiBzdHJpbmcpID0+XG4gIGV4dGVybmFsTGluayhgJHtiYXNlVXJsKCl9L2dsb3NzYXJ5YCwgdGV4dCk7XG5jb25zdCBnbG9zc2FyeVR5cGVMaW5rID0gKHR5cGU6IFRlcm1UZXJtVHlwZSkgPT5cbiAgZXh0ZXJuYWxMaW5rKGAke2Jhc2VVcmwoKX0vZ2xvc3Nhcnk/dGVybVR5cGU9JHt0eXBlfWAsIHRlcm1UeXBlTGFiZWwodHlwZSkpO1xuY29uc3QgdGVybUxpbmsgPSAoeyBpZCwgbmFtZSB9OiBQYXJ0aWFsPFRlcm0+KSA9PlxuICBleHRlcm5hbExpbmsoYCR7YmFzZVVybCgpfS90ZXJtLyR7aWR9YCwgbmFtZSEpO1xuZXhwb3J0IGNvbnN0IG5vZGVMaW5rID0gKHsgJ0B0eXBlJzogdHlwZSwgJ0BpZCc6IGlkLCBuYW1lIH0pID0+XG4gIHR5cGUgJiYgaWQgPyBgPGEgaHJlZj1cIi8ke3R5cGUudG9Mb3dlckNhc2UoKX0vJHtpZH1cIiB0YXJnZXQ9XCJfYmxhbmtcIj4ke25hbWUgfHwgaWR9PC9hPmAgOiBudWxsO1xuY29uc3Qgc2NoZW1hTGluayA9ICh0eXBlOiBzdHJpbmcsIHRpdGxlID0gdHlwZSkgPT4gYDxhIGhyZWY9XCIke2Jhc2VVcmwoKX0vc2NoZW1hLyR7dHlwZX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj4ke3RpdGxlfTwvYT5gO1xuZXhwb3J0IGNvbnN0IGNvZGUgPSAodGV4dDogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbikgPT4gYDxjb2RlPiR7dGV4dH08L2NvZGU+YDtcbmNvbnN0IGRhdGVGb3JtYXRNZXNzYWdlID1cbiAgYHNob3VsZCBmb2xsb3cgdGhlIElTTyA4NjAxIGRhdGUgZm9ybWF0LCBlLmcuICR7Y29kZSgyMDAwKX0sIG9yICR7Y29kZSgnMjAwMC0xMicpfSwgb3IgJHtjb2RlKCcyMDAwLTEyLTMwJyl9YDtcbmNvbnN0IGNvbnRhY3RVcyA9ICh0ZXh0ID0gJ2NvbnRhY3QgdXMnKSA9PiBgPGEgaHJlZj1cIm1haWx0bzoke2NvbnRhY3RVc0VtYWlsfVwiPiR7dGV4dH08L2E+YDtcbmNvbnN0IG1vZGVsTGluayA9ICh0ZXJtOiBUZXJtLCBtb2RlbDogVGVybSkgPT4gYFxuICA8YSBocmVmPVwiJHtwYXRoVG9BcGlEb2NzUGF0aChtb2RlbFsnQGlkJ10sIHRlcm1bJ0BpZCddKX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICA8c3BhbiBjbGFzcz1cInByLTFcIj4ke21vZGVsLm5hbWV9PC9zcGFuPlxuICAgIDxzcGFuPihWaWV3IERvY3MpPC9zcGFuPlxuICA8L2E+XG5gO1xuY29uc3QgdGhyZXNob2xkID0gKHZhbHVlOiBudW1iZXIpID0+IGNvZGUoYCR7dmFsdWUgKiAxMDB9JWApO1xuXG5jb25zdCBub1RpbGxhZ2U6IFBhcnRpYWw8VGVybT4gPSB7aWQ6ICdub1RpbGxhZ2UnLCBuYW1lOiAnTm8gdGlsbGFnZSd9O1xuXG5leHBvcnQgY29uc3QgbWlzc2luZ05vZGVFcnJvck1lc3NhZ2UgPSAoeyAnQHR5cGUnOiBfdCwgdHlwZSwgbmFtZSB9OiBhbnkpID0+XG4gIChfdCB8fCB0eXBlKSA9PT0gJ1Rlcm0nID9cbiAgICBgJHtuYW1lID8gYFRoZSB0ZXJtIFwiJHtuYW1lfVwiYCA6ICdUaGlzIHRlcm0nfSBkb2Vzbid0IG1hdGNoIGEgdGVybSBpbiB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5IG9mIFRlcm1zJyl9LlxuICBQbGVhc2UgY2hlY2sgdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeScpfSBmb3IgdGhlIGNvcnJlY3QgJHtjb2RlKCdAaWQnKX0gb3IgJHtjb2RlKCduYW1lJyl9IGFuZCBzcGVsbGluZy5gXG4gICAgOiBgVGhpcyAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9IGRvZXMgbm90IGV4aXN0IGluIEhlc3RpYS4gSWYgeW91IGFyZSB0cnlpbmcgdG8gbGluayB0byBhbiBleGlzdGluZ1xuICAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9IGluIEhlc3RpYSwgcGxlYXNlIGNoZWNrIHRoZSAke2NvZGUoJ25hbWUnKX0gb3IgJHtjb2RlKCdAaWQnKX0gaXMgY29ycmVjdC5cbiAgSWYgeW91IGFyZSB0cnlpbmcgdG8gY3JlYXRlIGEgbmV3ICR7c2NoZW1hTGluayhfdCB8fCB0eXBlKX0sIHBsZWFzZSBpZGVudGlmeSBpdCB3aXRoIGFuICR7Y29kZSgnaWQnKX0gZmllbGQuYDtcblxuLy8gc2V0IG1lc3NhZ2UgYXMgZW1wdHkgdG8gbm90IGRpc3BsYXkgaXRcbmNvbnN0IGN1c3RvbUVycm9yTWVzc2FnZToge1xuICBba2V5OiBzdHJpbmddOiAoZXJyb3I6IElWYWxpZGF0aW9uRXJyb3IsIGVycm9yQ291bnQ6IG51bWJlcikgPT4gc3RyaW5nO1xufSA9IHtcbiAgJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcJ0BpZFxcJyc6ICgpID0+ICdkb2VzIG5vdCBleGlzdCBpbiBIZXN0aWEuJyxcbiAgJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcJ0B0eXBlXFwnJzogKCkgPT4gJycsXG4gICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXCdpZFxcJyc6ICgpID0+ICdkb2VzIG5vdCBleGlzdCBpbiBIZXN0aWEuJyxcbiAgJ3Nob3VsZCBtYXRjaCBleGFjdGx5IG9uZSBzY2hlbWEgaW4gb25lT2YnOiAoKSA9PiAnJyxcbiAgJ3Nob3VsZCBtYXRjaCBzb21lIHNjaGVtYSBpbiBhbnlPZic6ICgpID0+ICcnLFxuICAnc2hvdWxkIE5PVCBoYXZlIGFkZGl0aW9uYWwgcHJvcGVydGllcyc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgYFRoZSBmb2xsb3dpbmcgZmllbGQgZG9lcyBub3QgZXhpc3Q6ICR7cGFyYW1zPy5hZGRpdGlvbmFsUHJvcGVydHl9YCA6XG4gICAgICBgc2hvdWxkIG5vdCBoYXZlIGFkZGl0aW9uYWwgcHJvcGVydGllc2AsXG4gICdzaG91bGQgbWF0Y2ggcGF0dGVybiBcIl5cXFxcZHsxM30kXCInOiAoKSA9PiBgc2hvdWxkIGJlIGNvbXBvc2VkIG9mIDEzIG51bWJlcnNgLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeWzAtOV17NH0oLVswLTldezJ9KT8oLVswLTldezJ9KT8kXCInOiAoKSA9PiBkYXRlRm9ybWF0TWVzc2FnZSxcbiAgJ3Nob3VsZCBtYXRjaCBwYXR0ZXJuIFwiXihbMC05XXs0fXwtKSgtWzAtOV17Mn0pPygtWzAtOV17Mn0pPyRcIic6ICgpID0+IGRhdGVGb3JtYXRNZXNzYWdlLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeKFswLTldezR9fC0pKC1bMC05XXsyfSk/KC1bMC05XXsyfSk/KFtUXVswLTJdWzAtOV1cXDpbMC01XVswLTldXFw6WzAtNV1bMC05XSgoXFwrfFxcLSlbMC0xXVswLTldOlswLTVdWzAtOV0pPyk/JFwiJzogKCkgPT4gZGF0ZUZvcm1hdE1lc3NhZ2UsXG4gICdtdXN0IGJlIHdpdGhpbiB0aGUgY291bnRyeSc6ICgpID0+IGBUaGUgY291bnRyeSBwcm92aWRlZCBkb2VzIG5vdCBjb250YWluIHRoZSByZWdpb24gcHJvdmlkZWQuIFBsZWFzZSBjaGVja1xuICB0aGUgY291bnRyeSBmb3IgZXJyb3JzIG9yIHRoZSByZWdpb24gZm9yIGVycm9ycywgYW5kIHJlZmVyZW5jZSB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5IG9mIFRlcm1zJyl9LmAsXG4gIFttYXBFcnJvck1lc3NhZ2VdOiAoeyBkYXRhUGF0aCB9KSA9PlxuICAgIGRhdGFQYXRoID09PSAnLnJlZ2lvbicgPyBgVGhlIHJlZ2lvbiBwcm92aWRlZCBkb2VzIG5vdCBjb250YWluIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgdGhlXG4gIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgZm9yIGVycm9ycyBvciB0aGUgcmVnaW9uIGZvciBlcnJvciwgYW5kIHJlZmVyZW5jZSB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5IG9mIFRlcm1zJyl9LmAgOlxuICAgIGBUaGUgY291bnRyeSBwcm92aWRlZCBkb2VzIG5vdCBjb250YWluIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGVcbiAgZm9yIGVycm9ycyBvciB0aGUgY291bnRyeSBmb3IgZXJyb3JzLCBhbmQgcmVmZXJlbmNlIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3Nhcnkgb2YgVGVybXMnKX0uYCxcbiAgJ3N1bSBub3QgZXF1YWwgdG8gMTAwJSBmb3Igc2FuZENvbnRlbnQsIHNpbHRDb250ZW50LCBjbGF5Q29udGVudCc6XG4gICAgKCkgPT4gYFRoZSBzdW0gb2YgU2FuZCwgU2lsdCwgYW5kIENsYXkgY29udGVudCBzaG91bGQgZXF1YWwgMTAwJSBmb3IgZWFjaCBzb2lsIGRlcHRoIGludGVydmFsLmAsXG4gICdpcyBvdXRzaWRlIHRoZSBhbGxvd2VkIHJhbmdlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICAoXG4gICAgICAgIHBhcmFtcz8udGVybSA/XG4gICAgICAgICAgYGZvciB0aGlzIG1lYXN1cmVtZW50LFxuICAgICAgICAgIHRoZSBtYXhpbXVtICR7Y29kZShwYXJhbXM/LnRlcm1bJ0BpZCddIHx8IHBhcmFtcz8udGVybS5uYW1lKX0gaXMgJHtwYXJhbXM/LnJhbmdlPy5tYXh9IGFuZCB0aGUgbWluaW11bSBpcyAke3BhcmFtcz8ucmFuZ2U/Lm1pbn1gIDpcbiAgICAgICAgICBgZG9lcyBub3QgbWF0Y2ggdGhlIHBvc3NpYmxlIHJhbmdlcyBvZiBzYW5kLCBzaWx0IGFuZCBjbGF5IGNvbnRlbnQuXG4gICAgICAgICAgUGxlYXNlIGNoZWNrIHRoZSBtZWFzdXJlbWVudCwgaXRzIGRlcHRoIGludGVydmFscywgYW5kIHRoZSBkYXRlcyBvZiB0aGUgbWVhc3VyZW1lbnQuYFxuICAgICAgKSA6XG4gICAgICBgRWFjaCBzb2lsIHRleHR1cmUgaGFzIGEgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZSBmb3Igc2FuZCwgc2lsdCwgYW5kIGNsYXkgY29udGVudC5cbiAgICAgIEF0IGxlYXN0IG9uZSBtZWFzdXJlbWVudCBvZiBzYW5kLCBzaWx0LCBvciBjbGF5IGNvbnRlbnQgZG9lcyBub3QgbWF0Y2ggdGhlIHBvc3NpYmxlIHJhbmdlIGZvciB0aGUgc3BlY2lmaWVkIHNvaWwgdGV4dHVyZS5cbiAgICAgIFBsZWFzZSBjaGVjayB5b3VyIG1lYXN1cmVtZW50cywgdGhlaXIgZGVwdGggaW50ZXJ2YWxzLCBhbmQgdGhlIGRhdGVzIG9mIHRoZSBtZWFzdXJlbWVudHMuYCxcbiAgJ3Nob3VsZCBiZSBlcXVhbCB0byBvbmUgb2YgdGhlIGFsbG93ZWQgdmFsdWVzJzpcbiAgICAoeyBwYXJhbXMgfSkgPT4gYG11c3QgaGF2ZSBvbmUgb2YgdGhlc2UgdmFsdWVzOiAke3BhcmFtcz8uYWxsb3dlZFZhbHVlcy5qb2luKCcsICcpfWAsXG4gICdpcyBub3QgYWxsb3dlZCBmb3IgdGhpcyBjaGFyYWN0ZXJpc2VkSW5kaWNhdG9yJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7ZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICBgJHtcbiAgICAgICAgcGFyYW1zPy5hbGxvd2VkVmFsdWVzLmxlbmd0aCA/XG4gICAgICAgICAgYGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBvbmUgb2YgdGhlc2UgbWV0aG9kczogJHtwYXJhbXM/LmFsbG93ZWRWYWx1ZXMuam9pbignLCAnKX1gIDpcbiAgICAgICAgICBgZG9lcyBub3QgY3VycmVudGx5IGhhdmUgYW55IG1ldGhvZCBhbGxvd2VkLiBQbGVhc2UgJHtjb250YWN0VXMoKX0gdG8gY2hhbmdlIHRoaXMuYFxuICAgICAgfS5gIDpcbiAgICAgIGBTb21lIFRlcm1zIGFyZSBub3QgYWxsb3dlZCB3aXRoIHRoZSBtZXRob2QgeW91IHNlbGVjdGVkLmB9XG4gICAgWW91IGNhbiBmaW5kIHRoZSBsaXN0IG9mIGFsbG93ZWQgbWV0aG9kcyBmb3IgZWFjaCBUZXJtIGJ5IGNsaWNraW5nIG9uIHRoZW0uYCxcbiAgJ3Nob3VsZCBjb250YWluIGEgdmFsaWQgaXRlbSc6ICh7IGRhdGFQYXRoIH0pID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gcGF0aHMubGVuZ3RoID49IDIgP1xuICAgICAgYFRoZSAke3BhdGhzW3BhdGhzLmxlbmd0aCAtIDFdLnBhdGh9IHJlbGF0ZWQgdG8gdGhpcyAke3BsdXJhbGl6ZShwYXRoc1twYXRocy5sZW5ndGggLSAyXS5sYWJlbCwgMSl9IGFyZSBpbnZhbGlkYCA6XG4gICAgICBgVGhlICR7cGF0aHNbMF0ucGF0aH0gYXJlIGludmFsaWRgO1xuICB9LFxuICAnbWF5IGJlIGJldHdlZW4gMCBhbmQgMTAwJzogKCkgPT4gJ3BlcmNlbnRhZ2VzIHNob3VsZCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCwgbm90IDAgYW5kIDEuIFRoaXMgbWF5IGJlIGFuIGVycm9yLicsXG4gICdtYXkgbm90IGFsbCBiZSBzZXQgdG8gZmFsc2UnOiAoKSA9PlxuICAgIGBFdmVyeSB2YWx1ZSBpbiB0aGUgZGF0YSBjb21wbGV0ZW5lc3MgYXNzZXNzbWVudCBpcyAke2NvZGUoJ2ZhbHNlJyl9LiBZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGZpbGwgaXQgaW4uXG4gIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZmlsbCBpdCBpbiwgcGxlYXNlIHNlZSB0aGUgJHtzY2hlbWFMaW5rKCdDeWNsZSNkYXRhQ29tcGxldGVuZXNzJywgJ3NjaGVtYScpfS5gLFxuICAnbWF5IG5vdCBiZSBlbXB0eSc6ICgpID0+ICdpZiB0aGlzIHZhbHVlIHNpZ25pZmllcyBubyBkYXRhLCBIZXN0aWEgb25seSBhY2NlcHRzIFwiLVwiIG9yIGVtcHR5IGZvciBubyBkYXRhJyxcbiAgJ21heSBub3QgYmUgMCc6ICh7IGRhdGFQYXRoIH0sIGVycm9yQ291bnQpID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gYGFkZGluZyBhIHZhbHVlICR7ZXJyb3JDb3VudCA9PT0gMSA/IGAgdG8gZXZlcnkgJHtwYXRoc1swXS5sYWJlbH0gYCA6ICcgJ30gaXMgaGlnaGx5IHJlY29tbWVuZGVkXG4gICAgICBhcyB3aXRob3V0IHRoaXMgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgSW1wYWN0IEFzc2Vzc21lbnQuXG4gICAgICBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHdlIHJlY29tbWVuZCBzZXR0aW5nIHZhbHVlIHRvIDAuYDtcbiAgfSxcbiAgJ3RoZSBzdW0gb2YgYWJvdmUgZ3JvdW5kIGNyb3AgcmVzaWR1ZSBhbmQgYmVsb3cgZ3JvdW5kIGNyb3AgcmVzaWR1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvJzogKCkgPT5cbiAgICBgRm9yIHNpdGVzIG9mIHR5cGUgJHtjb2RlKFNpdGVTaXRlVHlwZS5jcm9wbGFuZCl9IG9yICR7Y29kZShTaXRlU2l0ZVR5cGVbJ3Blcm1hbmVudCBwYXN0dXJlJ10pfSxcbiAgICBpZiBkYXRhIGNvbXBsZXRlbmVzcyBpcyBtYXJrZWQgdHJ1ZSBmb3IgY3JvcCByZXNpZHVlLFxuICAgIHRoZSBzdW0gb2YgdGhlIEFib3ZlIGdyb3VuZCBjcm9wIHJlc2lkdWUgdGVybXMgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLFxuICAgIGFuZCBCZWxvdyBncm91bmQgY3JvcCByZXNpZHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gemVyby5gLFxuICAnbG9uZ0ZhbGxvd1BlcmlvZCBtdXN0IGJlIGxvd2VyIHRoYW4gNSB5ZWFycyc6ICgpID0+XG4gICAgYFlvdXIgbG9uZ0ZhbGxvd1BlcmlvZCBpcyBncmVhdGVyIHRoYW4gZml2ZSB5ZWFycy5cbiAgICBGYWxsb3cgaXMgZGVmaW5lZCBieSBGQU9TVEFUIGFzIGxhbmQgbGVmdCB1bmN1bHRpdmF0ZWQgZm9yIGJldHdlZW4gMSBhbmQgNSB5ZWFycyxcbiAgICBhbmQgdGhpcyBkZWZpbml0aW9uIGlzIHVzZWQgZm9yIEhlc3RpYSBhbHNvLmAsXG4gICdzaG91bGQgYmUgd2l0aGluIHBlcmNlbnRhZ2Ugb2YgZGVmYXVsdCB2YWx1ZSc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgYGlzIMKxJHt0aHJlc2hvbGQocGFyYW1zPy50aHJlc2hvbGQpfSBkaWZmZXJlbnQgdG8gb3VyIGRlZmF1bHQgdmFsdWUgd2hpY2ggaXMgJHtwYXJhbXM/LmRlZmF1bHR9LlxuICAgICAgUGxlYXNlIGNoZWNrIHlvdXIgdXBsb2FkZWQgZGF0YSBhcyB0aGlzIG1heSBiZSBhbiBlcnJvci5gIDpcbiAgICAgIGBpcyBzdWJzdGFudGlhbGx5IGRpZmZlcmVudCB0aGFuIG91ciBkZWZhdWx0IHZhbHVlLiBQbGVhc2UgY2hlY2sgeW91ciB1cGxvYWRlZCBkYXRhIGFzIHRoaXMgbWF5IGJlIGFuIGVycm9yLmAsXG4gICd0aGUgdmFsdWUgcHJvdmlkZWQgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0JzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYFRoZSBleHBlY3RlZCByZXN1bHQgZm9yICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9XG4gICAgJHtwYXJhbXM/Lm1vZGVsPy5uYW1lID8gYHVzaW5nICR7bW9kZWxMaW5rKHBhcmFtcz8udGVybSwgcGFyYW1zPy5tb2RlbCl9IGAgOiAnJ31cbiAgICBmcm9tIHRoZSBkYXRhIHByb3ZpZGVkIGluIHRoZSB1cGxvYWQgaXMgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgICBgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uZXhwZWN0ZWQsIDMpKX0sIGJ1dCB0aGUgdmFsdWUgaW4gdGhlIHVwbG9hZCBpcyAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5jdXJyZW50LCAzKSl9LlxuICAgICAgICAke3BhcmFtcz8udGhyZXNob2xkID8gYE91ciB0aHJlc2hvbGQgaXMgwrEke3RocmVzaG9sZChwYXJhbXM/LnRocmVzaG9sZCl9LmAgOiAnJ31cbiAgICAgICAgUGxlYXNlIGVpdGhlcjpcbiAgICAgICAgMSkgY2hlY2sgdGhlICR7cGFyYW1zPy50ZXJtLnRlcm1UeXBlfSB2YWx1ZSB5b3UgcHJvdmlkZWQ7XG4gICAgICAgIDIpIGNoZWNrIHRoZSBkYXRhIHlvdSBwcm92aWRlZCB3aGljaCBpcyB0aGUgaW5wdXQgaW50byB0aGlzIG1vZGVsO1xuICAgICAgICAzKSBjYXJlZnVsbHkgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiB0byB1bmRlcnN0YW5kIGlmIHdlIHVzZWQgYSBkZWZhdWx0IHByb3BlcnR5IGFzIHBhcnQgb2YgdGhlIGNhbGN1bGF0aW9ucy5gIDpcbiAgICAgICAgYG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIG1vZGVsIHJlc3VsdC5gXG4gICAgfWAsXG4gICd0aGUgbWVhc3VyZW1lbnQgcHJvdmlkZWQgbWlnaHQgYmUgaW4gZXJyb3InOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgVGhlIGV4cGVjdGVkIHZhbHVlIGZvciAke2NvZGUocGFyYW1zPy50ZXJtLm5hbWUpfSBmcm9tIHRoZSBkYXRhIHByb3ZpZGVkIGluIHRoZSB1cGxvYWQgaXMgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgICBgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uZXhwZWN0ZWQsIDMpKX0sIGJ1dCB0aGUgdmFsdWUgaW4gdGhlIHVwbG9hZCBpcyAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5jdXJyZW50LCAzKSl9LlxuICAgICAgICAke3BhcmFtcz8udGhyZXNob2xkID8gYE91ciB0aHJlc2hvbGQgaXMgwrEke3RocmVzaG9sZChwYXJhbXM/LnRocmVzaG9sZCl9LmAgOiAnJ31gIDpcbiAgICAgICAgYG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIG1vZGVsIHJlc3VsdC5gXG4gICAgfWAsXG4gICdtdXN0IGJlIGVxdWFsIHRvIHByZXZpb3VzIHByb2R1Y3QgbXVsdGlwbGllZCBieSB0aGUgc2hhcmUnOiAoKSA9PlxuICAgIGBQcm9kdWN0cyBmcm9tIGEgdHJhbnNmb3JtYXRpb24gd2hpY2ggYXJlIGFuIElucHV0IGluIHRvIHRoZSBuZXh0IHRyYW5zZm9ybWF0aW9uIG11c3QgZm9sbG93IHRoZSBmb2xsb3dpbmcgcnVsZTpcbiAgICAke2NvZGUoJ3ByZXZpb3VzLnByb2R1Y3QudmFsdWUgKiBjdXJyZW50LnByZXZpb3VzVHJhbnNmb3JtYXRpb25TaGFyZSAvIDEwMCA9PSBjdXJyZW50LmlucHV0LnZhbHVlJyl9YCxcbiAgJ211c3QgaGF2ZSBvbmx5IG9uZSBlbnRyeSB3aXRoIHRoZSBzYW1lIHRlcm0udGVybVR5cGUgPSBleGNyZXRhTWFuYWdlbWVudCc6ICgpID0+XG4gICAgYFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBQcmFjdGljZSBvZiB0eXBlIGV4Y3JldGFNYW5hZ2VtZW50IGluIGEgQ3ljbGUuXG4gICAgVG8gcmVwcmVzZW50IG11bHRpcGxlIGV4Y3JldGEgbWFuYWdlbWVudCBzeXN0ZW1zIGVpdGhlciB1c2UgbXVsdGlwbGUgQ3ljbGVzIGFuZCBsaW5rIHRoZW0gdG9nZXRoZXIsXG4gICAgb3IgdXNlIFRyYW5zZm9ybWF0aW9ucyB3aXRoaW4gYSBDeWNsZSBhbmQgbGluayB0aG9zZSB0b2dldGhlci5gLFxuICAnZXZlcnkgaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgYmUgdW5pcXVlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoaXMgQmxhbmsgTm9kZSBpcyBkdXBsaWNhdGVkLiBFdmVyeSBCbGFuayBOb2RlIHNob3VsZCBiZSB1bmlxdWUuXG4gICAgVW5pcXVlbmVzcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgZmllbGRzOiAke1xuICAgICAgKHBhcmFtcz8ua2V5cyB8fCBbXSkubWFwKGNvZGUpLmpvaW4oJywgJylcbiAgICB9YCxcbiAgJ211c3QgY29udGFpbiBhcyBtYW55IGl0ZW1zIGFzIHZhbHVlcyc6ICh7IHBhcmFtcywgZGF0YVBhdGggfSkgPT5cbiAgICBgVGhlIG51bWJlciBvZiAke2NvZGUoZGF0YVBhdGguc3BsaXQoJy4nKS5wb3AoKSl9IG11c3QgbWF0Y2ggdGhlIG51bWJlciBvZiAke2NvZGUoJ3ZhbHVlJyl9LlxuICAgIEN1cnJlbnRseSB0aGVyZSBhcmUgJHtwYXJhbXM/LmN1cnJlbnR9ICR7Y29kZShkYXRhUGF0aC5zcGxpdCgnLicpLnBvcCgpKX0gYnV0ICR7cGFyYW1zPy5leHBlY3RlZH0gJHtjb2RlKCd2YWx1ZScpfS5gLFxuICAnaXMgdG9vIGdlbmVyaWMnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgWW91IGhhdmUgdGhlIGZvbGxvd2luZyBQcm9kdWN0ICR7Y29kZShwYXJhbXM/LnByb2R1Y3Q/Lm5hbWUpfSBob3dldmVyLFxuICAgIHlvdSBoYXZlIHVzZWQgYSBnZW5lcmljICR7Z2xvc3NhcnlUeXBlTGluayhwYXJhbXM/LnRlcm0/LnRlcm1UeXBlKX0gdGVybSAke2NvZGUocGFyYW1zPy50ZXJtPy5uYW1lKX0uXG4gICAgVXNlIGEgbW9yZSBzcGVjaWZpYyB0ZXJtIGZvciB0aGUgJHtcbiAgICAgIGdsb3NzYXJ5VHlwZUxpbmsocGFyYW1zPy50ZXJtPy50ZXJtVHlwZSlcbiAgICB9IHdoaWNoIHJlZmxlY3RzIHRoZSBzcGVjaWZpYyAke1xuICAgICAgZ2xvc3NhcnlUeXBlTGluayhwYXJhbXM/LnByb2R1Y3Q/LnRlcm1UeXBlKVxuICAgIH0uYCxcbiAgJ2lzIG1pc3NpbmcgcmVxdWlyZWQgYmlibGlvZ3JhcGhpYyBpbmZvcm1hdGlvbic6ICgpID0+XG4gICAgYFRoZSBhdXRvbWF0aWMgYmlibGlvZ3JhcGh5IHNlYXJjaCBmYWlsZWQgZm9yIHRoaXMgQmlibGlvZ3JhcGh5LiBFaXRoZXI6XG4gICAgMSkgbWFudWFsbHkgZmlsbC1pbiB0aGUgPGI+cmVxdWlyZWQ8L2I+IGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24gYXMgcGVyXG4gICAgJHtzY2hlbWFMaW5rKFNjaGVtYVR5cGUuQmlibGlvZ3JhcGh5LCAnb3VyIHNjaGVtYScpfS5cbiAgICAyKSBwcm92aWRlIHRoZSAke2NvZGUoJ2RvY3VtZW50RE9JJyl9IGFzIHdlbGwgYXMgdGhlICR7Y29kZSgndGl0bGUnKX1cbiAgICAzKSBjaGVjayB0aGUgJHtjb2RlKCdkb2N1bWVudERPSScpfSBhbmQgJHtjb2RlKCd0aXRsZScpfSBmb3IgdHlwb3MgYWdhaW5zdCB0aGVcbiAgICAke2V4dGVybmFsTGluaygnaHR0cHM6Ly93d3cubWVuZGVsZXkuY29tJywgJ01lbmRlbGV5IGNhdGFsb2d1ZScpfWAsXG4gICdzaG91bGQgYmUgbG93ZXIgdGhhbiBtYXggc2l6ZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBUaGUgYm91bmRhcnkgb3IgcmVnaW9uIGlzID4ke3BhcmFtcz8uZXhwZWN0ZWR9a20yIGFuZCBpcyB0b28gbGFyZ2UgdG8gcmVsaWFibHkgZ2FwIGZpbGwgTWVhc3VyZW1lbnRzLmAsXG4gICdhbiBleGNyZXRhIGlucHV0IGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgYW4gZXhjcmV0YU1hbmFnZW1lbnQgcHJhY3RpY2UnOiAoeyBkYXRhUGF0aCB9KSA9PiB7XG4gICAgY29uc3QgcGF0aHMgPSBwYXJzZURhdGFQYXRoKGRhdGFQYXRoISk7XG4gICAgcmV0dXJuIGBFeGNyZXRhIG1hbmFnZW1lbnQgaXMgdGhlIGNvbnZlcnNpb24gb2YgZXhjcmV0YSB0byBhbm90aGVyIHR5cGUgb2YgZXhjcmV0YS5cbiAgICAgIFlvdSBoYXZlIGFkZGVkIGFuIGV4Y3JldGFNYW5hZ2VtZW50IFByYWN0aWNlIHRvIHRoaXMgJHtwYXRoc1swXS5sYWJlbH0gYnV0IHRoZXJlIGlzIG5vIGV4Y3JldGEgSW5wdXQuXG4gICAgICBUbyByZXByZXNlbnQgZXhjcmV0YSBtYW5hZ2VtZW50LCB1c2UgYSAke3BhdGhzWzBdLmxhYmVsfSB3aXRoIGV4Y3JldGEgYXMgYW4gSW5wdXQgYW5kIGV4Y3JldGFNYW5hZ2VtZW50IGFzIGEgUHJhY3RpY2UuYDtcbiAgfSxcbiAgJ29ubHkgMSBwcmltYXJ5IHByb2R1Y3QgYWxsb3dlZCc6ICgpID0+ICdUaGVyZSBjYW4gb25seSBiZSBvbmUgcHJpbWFyeSBwcm9kdWN0IGluIGVhY2ggQ3ljbGUuJyxcbiAgJ2lzIG5vdCBhbGxvd2VkIGluIGNvbWJpbmF0aW9uIHdpdGggbm9UaWxsYWdlJzogKCkgPT5cbiAgICBgVGhpcyBvcGVyYXRpb24gaW52b2x2ZXMgdGlsbGFnZSwgeWV0IHlvdSBoYXZlIHNwZWNpZmllZCB0aGUgUHJhY3RpY2UgJHt0ZXJtTGluayhub1RpbGxhZ2UpfS5cbiAgICBFaXRoZXIgY2hhbmdlIHRoaXMgb3BlcmF0aW9uIG9yIHRoZSBQcmFjdGljZS5gLFxuICAnc2hvdWxkIGNvbnRhaW4gYSB0aWxsYWdlIHByYWN0aWNlJzogKCkgPT5cbiAgICBgV2UgcmVjb21tZW5kIHNwZWNpZnlpbmcgdGhlIHR5cGUgb2YgdGlsbGFnZSB1c2VkIGZvciB0aGlzIEN5Y2xlLlxuICAgIFBsZWFzZSBzZWUgdGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUudGlsbGFnZSl9IGdsb3NzYXJ5LmAsXG4gICdtdXN0IHNldCB2YWx1ZSBmb3IgZXZlcnkgdGlsbGFnZSBwcmFjdGljZSc6ICgpID0+XG4gICAgYEVpdGhlciBzcGVjaWZ5IGEgc2luZ2xlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUudGlsbGFnZSl9IHByYWN0aWNlIG9yIGFkZCBhIHZhbHVlIHRvIGFsbCBwcmFjdGljZXMuYCxcbiAgJ3N1bSBub3QgZXF1YWwgdG8gMTAwJSBmb3IgdGlsbGFnZSBwcmFjdGljZXMnOiAoKSA9PlxuICAgIGBUaGUgc3VtIG9mICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUudGlsbGFnZSl9IHByYWN0aWNlcyBtdXN0IGVxdWFsIDEwMCUuYCxcbiAgJ2NhbiBvbmx5IGhhdmUgMSB0aWxsYWdlIHByYWN0aWNlIHdpdGhvdXQgYSB2YWx1ZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBJdCBpcyBub3QgcG9zc2libGUgZm9yIGEgQ3ljbGUgdG8gaGF2ZSB0aGUgZm9sbG93aW5nIHRpbGxhZ2UgUHJhY3RpY2VzOlxuICAgICR7KHBhcmFtcz8uY3VycmVudCA/PyBbXSkubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkuam9pbignIGFuZCAnKX0gYXQgdGhlIHNhbWUgdGltZS5cbiAgICBJZiBtdWx0aXBsZSB0aWxsYWdlIHByYWN0aWNlcyBkaWQgb2NjdXIsIHBsZWFzZSBzcGVjaWZ5IHRoZSBwZXJjZW50YWdlIG9mIGFyZWEgdGhleSBvY2N1cnJlZCBvbi5gLFxuICAnY2FuIG5vdCBiZSBsaW5rZWQgdG8gdGhlIHNhbWUgQ3ljbGUnOiAoKSA9PiAnWW91IGNhbiBub3QgbGluayBhbiBJbnB1dCB0byB0aGUgSW1wYWN0IEFzc2Vzc21lbnQgb2YgdGhlIHNhbWUgQ3ljbGUuJyxcbiAgLy8gZGVwcmVjYXRlZCwgcmVtb3ZlIHdoZW4gbWVzc2FnZSBpcyBub3QgYmVpbmcgdXNlZCBhbnltb3JlXG4gICdtdXN0IGJlIDAgZm9yIHByb2R1Y3QgdmFsdWUgMCc6ICh7IGRhdGFQYXRoLCBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgSWYgdGhlIGFtb3VudCBwcm9kdWNlZCBpcyB6ZXJvLCB0aGUgJHtjb2RlKGRhdGFQYXRoPy5zcGxpdCgnLicpLnBvcCgpISl9IG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ2Vjb25vbWljVmFsdWVTaGFyZSBtdXN0IGJlIDAgZm9yIHByb2R1Y3QgdmFsdWUgMCc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHRoZSBlY29ub21pY1ZhbHVlU2hhcmUgb2YgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgPyBjb2RlKHBhcmFtcz8udGVybS5uYW1lKSA6ICd0aGF0IHByb2R1Y3QnXG4gICAgfSBtdXN0IGFsc28gYmUgemVyby5gLFxuICAncmV2ZW51ZSBtdXN0IGJlIDAgZm9yIHByb2R1Y3QgdmFsdWUgMCc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHRoZSByZXZlbnVlIG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ3Nob3VsZCBhZGQgYSBzb3VyY2UnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgV2UgcmVjb21tZW5kIGFkZGluZyBhIFNvdXJjZSB0byBhbGwgZGF0YSBpdGVtcy5cbiAgICBUaGlzIGNhbiBiZSBkb25lIGJ5IGFkZGluZyB0aGUgJHtjb2RlKHBhcmFtcz8uY3VycmVudCl9IGZpZWxkLlxuICAgIFNvdXJjZXMgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGZvciBlYWNoIGRhdGEgaXRlbSAoaS5lLiwgZWFjaCBJbnB1dCwgRW1pc3Npb24sIFByb2R1Y3QsIFByYWN0aWNlLCBNZWFzdXJlbWVudCwgb3IgSW5mcmFzdHJ1Y3R1cmUpLmBcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UgPSAobWVzc2FnZT86IHN0cmluZywgZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yLCBlcnJvckNvdW50ID0gMSkgPT4ge1xuICBjb25zdCBmb3JtYXR0ZWRNZXNzYWdlID0gbWVzc2FnZSAmJiBtZXNzYWdlIGluIGN1c3RvbUVycm9yTWVzc2FnZSA/XG4gICAgY3VzdG9tRXJyb3JNZXNzYWdlW21lc3NhZ2VdKGVycm9yISwgZXJyb3JDb3VudCkgOlxuICAgIG1lc3NhZ2U7XG4gIHJldHVybiBmb3JtYXR0ZWRNZXNzYWdlID8gYDxwIGNsYXNzPVwiaXMtbm9ybWFsXCI+JHtmb3JtYXR0ZWRNZXNzYWdlfTwvcD5gIDogJyc7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0RXJyb3IgPSAoZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yLCBlcnJvckNvdW50ID0gMSk6IElWYWxpZGF0aW9uRXJyb3IgfCB1bmRlZmluZWQgPT4gZXJyb3IgPyAoe1xuICBsZXZlbDogJ2Vycm9yJyxcbiAgLi4uZXJyb3IsXG4gIG1hcEVycm9yOiBlcnJvci5tZXNzYWdlID09PSBtYXBFcnJvck1lc3NhZ2UsXG4gIG1lc3NhZ2U6IGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZShlcnJvci5tZXNzYWdlLCBlcnJvciwgZXJyb3JDb3VudClcbn0pIDogdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3QgZXJyb3JIYXNFcnJvciA9IChlcnJvcj86IElWYWxpZGF0aW9uRXJyb3IpID0+IGVycm9yICYmIChlcnJvci5sZXZlbCA9PT0gJ2Vycm9yJyB8fCAhZXJyb3IubGV2ZWwpO1xuXG5leHBvcnQgY29uc3QgZXJyb3JIYXNXYXJuaW5nID0gKGVycm9yPzogSVZhbGlkYXRpb25FcnJvcikgPT4gZXJyb3IgJiYgZXJyb3IubGV2ZWwgPT09ICd3YXJuaW5nJztcblxuZXhwb3J0IGNvbnN0IGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IgPSAoeyBwYXJhbXMgfTogSVZhbGlkYXRpb25FcnJvcikgPT4gISFwYXJhbXMgJiYgJ21pc3NpbmdQcm9wZXJ0eScgaW4gcGFyYW1zO1xuXG5leHBvcnQgY29uc3QgaXNNaXNzaW5nT25lT2ZFcnJvciA9ICh7IGtleXdvcmQsIHNjaGVtYVBhdGggfTogSVZhbGlkYXRpb25FcnJvcikgPT5cbiAga2V5d29yZCA9PT0gJ3JlcXVpcmVkJyAmJiAoc2NoZW1hUGF0aCB8fCAnJykuaW5jbHVkZXMoJ29uZU9mJyk7XG5cbmNvbnN0IGlzRmFpbGluZ0tleXdvcmRFcnJvciA9ICh7IHBhcmFtcyB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PiAhIXBhcmFtcyAmJiAnZmFpbGluZ0tleXdvcmQnIGluIHBhcmFtcztcblxuZXhwb3J0IGNvbnN0IGZpbHRlckVycm9yID0gKGVycm9yOiBJVmFsaWRhdGlvbkVycm9yKSA9PiBbXG4gIGlzRmFpbGluZ0tleXdvcmRFcnJvclxuXS5ldmVyeShmdW5jID0+ICFmdW5jKGVycm9yKSk7XG5cbmV4cG9ydCBjb25zdCBtaXNzaW5nTm9kZUVycm9ycyA9IChlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSkgPT5cbiAgZXJyb3JzLmZpbHRlcigoeyBrZXl3b3JkLCBwYXJhbXMgfSkgPT5cbiAgICBrZXl3b3JkID09PSAncmVxdWlyZWQnICYmIChwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0B0eXBlJyB8fCBwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0BpZCcpXG4gICk7XG4iXX0=