@hestia-earth/ui-components 0.9.6 → 0.9.8

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 (44) hide show
  1. package/common/apply-pure.pipe.d.ts +12 -0
  2. package/common/common.light.module.d.ts +16 -15
  3. package/common/index.d.ts +1 -0
  4. package/common/maps-utils.d.ts +2 -2
  5. package/common/popover/popover.component.d.ts +1 -1
  6. package/common/popover-confirm/popover-confirm.component.d.ts +1 -0
  7. package/engine/engine.service.d.ts +6 -2
  8. package/esm2020/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.mjs +3 -3
  9. package/esm2020/common/apply-pure.pipe.mjs +23 -0
  10. package/esm2020/common/common.light.module.mjs +5 -1
  11. package/esm2020/common/data-table/data-table.component.mjs +2 -2
  12. package/esm2020/common/index.mjs +2 -1
  13. package/esm2020/common/maps-drawing-confirm/maps-drawing-confirm.component.mjs +3 -3
  14. package/esm2020/common/maps-utils.mjs +3 -3
  15. package/esm2020/common/popover/popover.component.mjs +3 -3
  16. package/esm2020/common/popover-confirm/popover-confirm.component.mjs +4 -1
  17. package/esm2020/cycles/cycles-activity/cycles-activity.component.mjs +3 -3
  18. package/esm2020/cycles/cycles-completeness/cycles-completeness.component.mjs +3 -3
  19. package/esm2020/cycles/cycles-emissions/cycles-emissions.component.mjs +3 -3
  20. package/esm2020/cycles/cycles-emissions-chart/cycles-emissions-chart.component.mjs +3 -3
  21. package/esm2020/cycles/cycles-practices/cycles-practices.component.mjs +3 -3
  22. package/esm2020/engine/engine-orchestrator-edit/engine-orchestrator-edit.component.mjs +3 -3
  23. package/esm2020/engine/engine.service.mjs +22 -8
  24. package/esm2020/files/files-form/files-form.component.mjs +9 -8
  25. package/esm2020/fontawesome/fontawesome.module.mjs +3 -3
  26. package/esm2020/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.mjs +3 -3
  27. package/esm2020/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.mjs +3 -3
  28. package/esm2020/impact-assessments/impact-assessments-indicators-chart/impact-assessments-indicators-chart.component.mjs +3 -3
  29. package/esm2020/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +3 -3
  30. package/esm2020/node/node-csv-export-confirm/node-csv-export-confirm.component.mjs +6 -4
  31. package/esm2020/node/node-csv-select-headers/node-csv-select-headers.component.mjs +3 -3
  32. package/esm2020/node/node-logs-file/node-logs-file.component.mjs +3 -3
  33. package/esm2020/node/node-logs-models/node-logs-models.component.mjs +3 -3
  34. package/esm2020/node/node-missing-lookup-factors/node-missing-lookup-factors.component.mjs +3 -3
  35. package/esm2020/node/node.service.mjs +1 -10
  36. package/esm2020/sites/sites-measurements/sites-measurements.component.mjs +3 -3
  37. package/fesm2015/hestia-earth-ui-components.mjs +138 -106
  38. package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
  39. package/fesm2020/hestia-earth-ui-components.mjs +137 -105
  40. package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
  41. package/files/files-form/files-form.component.d.ts +3 -3
  42. package/node/node.service.d.ts +0 -12
  43. package/package.json +2 -2
  44. package/styles.scss +106 -17
@@ -10,8 +10,8 @@ export const locationQuery = (bounds, searchField = 'location') => {
10
10
  }
11
11
  };
12
12
  };
13
- export const fillColor = '#00F';
14
- export const strokeColor = '#00A';
13
+ export const fillColor = '#193957';
14
+ export const strokeColor = '#0C1B29';
15
15
  export const fillStyle = {
16
16
  fillColor,
17
17
  fillOpacity: 0.6
@@ -110,4 +110,4 @@ export const polygonBounds = (polygon) => {
110
110
  : [];
111
111
  return paths.reduce((prev, curr) => prev.extend(curr), new google.maps.LatLngBounds());
112
112
  };
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbWFwcy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQVcsR0FBRyxVQUFVLEVBQUUsRUFBRTtJQUMxRixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLE9BQU87UUFDTCxnQkFBZ0IsRUFBRTtZQUNoQixDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNiLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDeEQsWUFBWSxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFO2FBQzdEO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUNoQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixTQUFTO0lBQ1QsV0FBVyxFQUFFLEdBQUc7Q0FDakIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixXQUFXO0lBQ1gsYUFBYSxFQUFFLEdBQUc7SUFDbEIsWUFBWSxFQUFFLENBQUM7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyx3RkFBd0YsQ0FBQztBQUd2SCxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7SUFDbkQsTUFB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Q0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDekYsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGxvY2F0aW9uUXVlcnkgPSAoYm91bmRzOiBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMsIHNlYXJjaEZpZWxkID0gJ2xvY2F0aW9uJykgPT4ge1xuICBjb25zdCB0b3BSaWdodCA9IGJvdW5kcy5nZXROb3J0aEVhc3QoKTtcbiAgY29uc3QgYm90dG9tTGVmdCA9IGJvdW5kcy5nZXRTb3V0aFdlc3QoKTtcbiAgcmV0dXJuIHtcbiAgICBnZW9fYm91bmRpbmdfYm94OiB7XG4gICAgICBbc2VhcmNoRmllbGRdOiB7XG4gICAgICAgIHRvcF9sZWZ0OiB7IGxhdDogdG9wUmlnaHQubGF0KCksIGxvbjogYm90dG9tTGVmdC5sbmcoKSB9LFxuICAgICAgICBib3R0b21fcmlnaHQ6IHsgbGF0OiBib3R0b21MZWZ0LmxhdCgpLCBsb246IHRvcFJpZ2h0LmxuZygpIH0sXG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbGxDb2xvciA9ICcjMDBGJztcbmV4cG9ydCBjb25zdCBzdHJva2VDb2xvciA9ICcjMDBBJztcblxuZXhwb3J0IGNvbnN0IGZpbGxTdHlsZSA9IHtcbiAgZmlsbENvbG9yLFxuICBmaWxsT3BhY2l0eTogMC42XG59O1xuXG5leHBvcnQgY29uc3Qgc3Ryb2tlU3R5bGUgPSB7XG4gIHN0cm9rZUNvbG9yLFxuICBzdHJva2VPcGFjaXR5OiAwLjYsXG4gIHN0cm9rZVdlaWdodDogMVxufTtcblxuZXhwb3J0IGNvbnN0IGNsdXN0ZXJlckltYWdlID0gJ2h0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L2V4YW1wbGVzL21hcmtlcmNsdXN0ZXJlci9tJztcblxuXG5jb25zdCBnZXRDb29yZGluYXRlc0ZvclBlcmNlbnQgPSAocGVyY2VudDogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IHggPSBNYXRoLmNvcygyICogTWF0aC5QSSAqIHBlcmNlbnQpO1xuICBjb25zdCB5ID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgKiBwZXJjZW50KTtcbiAgcmV0dXJuIFt4LCB5XTtcbn07XG5cbmludGVyZmFjZSBJTWFya2VyUGllQ29uZmlnIHtcbiAgcGVyY2VudDogbnVtYmVyO1xuICBjb2xvcjogc3RyaW5nO1xufVxuXG5jb25zdCBwaWVVcmwgPSAoY29uZmlnczogSU1hcmtlclBpZUNvbmZpZ1tdLCBzaXplOiBudW1iZXIpID0+IHtcbiAgbGV0IGN1bXVsYXRpdmVQZXJjZW50ID0gMDtcblxuICByZXR1cm4gJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KGBcbiAgICA8c3ZnIHdpZHRoPVwiJHtzaXplfVwiIGhlaWdodD1cIiR7c2l6ZX1cIiB2aWV3Qm94PVwiLTEgLTEgMiAyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiR7XG4gICAgY29uZmlncy5tYXAoKHsgcGVyY2VudCwgY29sb3IgfSkgPT4ge1xuICAgICAgY29uc3QgW3N0YXJ0WCwgc3RhcnRZXSA9IGdldENvb3JkaW5hdGVzRm9yUGVyY2VudChjdW11bGF0aXZlUGVyY2VudCk7XG4gICAgICBjdW11bGF0aXZlUGVyY2VudCArPSBwZXJjZW50O1xuICAgICAgY29uc3QgW2VuZFgsIGVuZFldID0gZ2V0Q29vcmRpbmF0ZXNGb3JQZXJjZW50KGN1bXVsYXRpdmVQZXJjZW50KTtcbiAgICAgIGNvbnN0IGxhcmdlQXJjRmxhZyA9IHBlcmNlbnQgPiAuNSA/IDEgOiAwO1xuICAgICAgY29uc3QgcGF0aERhdGEgPSBbXG4gICAgICAgIGBNICR7c3RhcnRYfSAke3N0YXJ0WX1gLCAvLyBNb3ZlXG4gICAgICAgIGBBIDEgMSAwICR7bGFyZ2VBcmNGbGFnfSAxICR7ZW5kWH0gJHtlbmRZfWAsIC8vIEFyY1xuICAgICAgICBgTCAwIDBgLCAvLyBMaW5lXG4gICAgICBdLmpvaW4oJyAnKTtcbiAgICAgIHJldHVybiBgPHBhdGggZmlsbD1cIiR7Y29sb3J9XCIgZD1cIiR7cGF0aERhdGF9XCI+PC9wYXRoPmA7XG4gICAgfSkuam9pbignJyl9PC9zdmc+XG4gIGAudHJpbSgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJQaWUgPSAoY29uZmlnczogSU1hcmtlclBpZUNvbmZpZ1tdLCBzaXplID0gNykgPT4gKHtcbiAgYW5jaG9yOiBuZXcgZ29vZ2xlLm1hcHMuUG9pbnQoc2l6ZSAvIDIsIHNpemUgLyAyKSxcbiAgdXJsOiBwaWVVcmwoY29uZmlncywgc2l6ZSksXG4gIGxhYmVsT3JpZ2luOiBuZXcgZ29vZ2xlLm1hcHMuUG9pbnQoMCwgLTIpXG59KTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckljb24gPSAoc2NhbGUgPSA3KTogZ29vZ2xlLm1hcHMuU3ltYm9sID0+ICh7XG4gIHBhdGg6IGdvb2dsZS5tYXBzLlN5bWJvbFBhdGguQ0lSQ0xFLFxuICAuLi5maWxsU3R5bGUsXG4gIC4uLnN0cm9rZVN0eWxlLFxuICBzY2FsZSxcbiAgbGFiZWxPcmlnaW46IG5ldyBnb29nbGUubWFwcy5Qb2ludCgwLCAtMilcbn0pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTWFya2VyID0gKFxuICBwb3NpdGlvbj86IGdvb2dsZS5tYXBzLkxhdExuZyB8IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWwsIHRleHQgPSAnJywgY29sb3IgPSBmaWxsQ29sb3IsIHNjYWxlPzogbnVtYmVyXG4pID0+IChcbiAgcG9zaXRpb24gJiYgcG9zaXRpb24ubGF0ICYmIHBvc2l0aW9uLmxuZyA/IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xuICAgIHBvc2l0aW9uLFxuICAgIGxhYmVsOiB7IGNvbG9yLCB0ZXh0IH0sXG4gICAgaWNvbjogbWFya2VySWNvbihzY2FsZSlcbiAgfSkgOiB1bmRlZmluZWRcbikgYXMgZ29vZ2xlLm1hcHMuTWFya2VyO1xuXG5pbnRlcmZhY2UgSVBvbHlnb24ge1xuICB0eXBlOiAnUG9seWdvbic7XG4gIGNvb3JkaW5hdGVzOiBudW1iZXJbXVtdW107XG59XG5cbmludGVyZmFjZSBJTXVsdGlQb2x5Z29uIHtcbiAgdHlwZTogJ011bHRpUG9seWdvbic7XG4gIGNvb3JkaW5hdGVzOiBudW1iZXJbXVtdW107XG59XG5cbnR5cGUgZ2VvbWV0cnkgPSBJUG9seWdvbiB8IElNdWx0aVBvbHlnb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZlYXR1cmUge1xuICB0eXBlOiAnRmVhdHVyZSc7XG4gIHByb3BlcnRpZXM6IGFueTtcbiAgZ2VvbWV0cnk6IGdlb21ldHJ5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGZWF0dXJlQ29sbGVjdGlvbiB7XG4gIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbic7XG4gIGZlYXR1cmVzOiBJRmVhdHVyZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHZW9tZXRyeUNvbGxlY3Rpb24ge1xuICB0eXBlOiAnR2VvbWV0cnlDb2xsZWN0aW9uJztcbiAgZ2VvbWV0cmllczogZ2VvbWV0cnlbXTtcbn1cblxudHlwZSBmZWF0dXJlID0gSUZlYXR1cmUgfCBJRmVhdHVyZUNvbGxlY3Rpb24gfCBJR2VvbWV0cnlDb2xsZWN0aW9uIHwgSVBvbHlnb24gfCBJTXVsdGlQb2x5Z29uO1xuXG5jb25zdCBmZWF0dXJlOiBJRmVhdHVyZSA9IE9iamVjdC5mcmVlemUoe1xuICB0eXBlOiAnRmVhdHVyZScsXG4gIHByb3BlcnRpZXM6IHt9LFxuICBnZW9tZXRyeTogKHtcbiAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgY29vcmRpbmF0ZXM6IFtdXG4gIH0gYXMgZ2VvbWV0cnkpXG59KTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRGZWF0dXJlID0gKCk6IElGZWF0dXJlID0+ICh7IC4uLmZlYXR1cmUgfSk7XG5cbmV4cG9ydCBjb25zdCBwb2ludFRvQ29vcmRpbmF0ZXMgPSAocG9pbnQ6IGdvb2dsZS5tYXBzLkxhdExuZykgPT4gW3BvaW50LmxuZygpLCBwb2ludC5sYXQoKV07XG5cbmV4cG9ydCBjb25zdCBjb29yZGluYXRlc1RvUG9pbnQgPSAodmFsdWVzOiAobnVtYmVyIHwgbnVtYmVyW10pW10pID0+XG4gIEFycmF5LmlzQXJyYXkodmFsdWVzWzBdKVxuICAgID8gdmFsdWVzLm1hcCgodjogYW55KSA9PiBjb29yZGluYXRlc1RvUG9pbnQodikpXG4gICAgOiAodmFsdWVzIGFzIG51bWJlcltdKS5zb21lKGlzTmFOKVxuICAgID8gbnVsbFxuICAgIDogbmV3IGdvb2dsZS5tYXBzLkxhdExuZygodmFsdWVzIGFzIG51bWJlcltdKVsxXSwgKHZhbHVlcyBhcyBudW1iZXJbXSlbMF0pO1xuXG5leHBvcnQgY29uc3QgcG9seWdvblRvQ29vcmRpbmF0ZXMgPSAocG9seWdvbjogZ29vZ2xlLm1hcHMuUG9seWdvbikgPT4gcG9seWdvbi5nZXRQYXRocygpLmdldEFycmF5KCkubWFwKHBhdGggPT4ge1xuICBjb25zdCBwb2ludHMgPSBwYXRoLmdldEFycmF5KCk7XG4gIHJldHVybiBbXG4gICAgLi4ucG9pbnRzLm1hcChwb2ludFRvQ29vcmRpbmF0ZXMpLFxuICAgIHBvaW50VG9Db29yZGluYXRlcyhwb2ludHNbMF0pXG4gIF07XG59KVswXTtcblxuY29uc3QgY29vcmRpbmF0ZXNUb1BvbHlnb24gPSAoY29vcmRpbmF0ZXM6IG51bWJlcltdW10pID0+IG5ldyBnb29nbGUubWFwcy5Qb2x5Z29uKHtcbiAgcGF0aHM6IGNvb3JkaW5hdGVzLm1hcChjb29yZGluYXRlc1RvUG9pbnQpLmZpbHRlcihCb29sZWFuKSxcbiAgLi4uc3Ryb2tlU3R5bGVcbn0pO1xuXG5jb25zdCBnZXRDb29yZGluYXRlcyA9IChmZWF0OiBmZWF0dXJlKSA9PlxuICBmZWF0LnR5cGUgPT09ICdQb2x5Z29uJyB8fCBmZWF0LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nXG4gID8gZmVhdC5jb29yZGluYXRlc1xuICA6IGZlYXQudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gID8gZmVhdC5nZW9tZXRyeT8uY29vcmRpbmF0ZXNcbiAgOiBbXTtcblxuZXhwb3J0IGNvbnN0IGFkZFBvbHlnb25Ub0ZlYXR1cmUgPSAoZmVhdDogZmVhdHVyZSwgcG9seWdvbjogZ29vZ2xlLm1hcHMuUG9seWdvbikgPT5cbiAgZmVhdC50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nXG4gID8gZmVhdC5mZWF0dXJlcy5wdXNoKGFkZFBvbHlnb25Ub0ZlYXR1cmUoZGVmYXVsdEZlYXR1cmUoKSwgcG9seWdvbikpXG4gIDogZmVhdC50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICA/IGZlYXQuZ2VvbWV0cmllcy5tYXAoZ2VvbWV0cnkgPT4gKGdlb21ldHJ5Py5jb29yZGluYXRlcyB8fCBbXSkucHVzaChwb2x5Z29uVG9Db29yZGluYXRlcyhwb2x5Z29uKSkpXG4gIDogKGdldENvb3JkaW5hdGVzKGZlYXQpIHx8IFtdKS5wdXNoKHBvbHlnb25Ub0Nvb3JkaW5hdGVzKHBvbHlnb24pKVxuICA7XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uc0Zyb21GZWF0dXJlID0gKGZlYXQ6IGZlYXR1cmUpOiBnb29nbGUubWFwcy5Qb2x5Z29uW10gPT5cbiAgZmVhdC50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nXG4gID8gZmVhdC5mZWF0dXJlcy5mbGF0TWFwKHBvbHlnb25zRnJvbUZlYXR1cmUpXG4gIDogZmVhdC50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICA/IGZlYXQuZ2VvbWV0cmllcy5mbGF0TWFwKGdlb21ldHJ5ID0+IChnZW9tZXRyeS5jb29yZGluYXRlcyB8fCBbXSkubWFwKGNvb3JkaW5hdGVzVG9Qb2x5Z29uKSlcbiAgOiAoZ2V0Q29vcmRpbmF0ZXMoZmVhdCkgfHwgW10pLm1hcChjb29yZGluYXRlc1RvUG9seWdvbilcbiAgO1xuXG5leHBvcnQgY29uc3QgcG9seWdvbkJvdW5kcyA9IChwb2x5Z29uPzogZ29vZ2xlLm1hcHMuUG9seWdvbiB8IGdvb2dsZS5tYXBzLlBvbHlnb25bXSkgPT4ge1xuICBjb25zdCBwYXRocyA9IHBvbHlnb25cbiAgICA/IEFycmF5LmlzQXJyYXkocG9seWdvbilcbiAgICAgID8gcG9seWdvbi5mbGF0TWFwKHAgPT4gcC5nZXRQYXRoKCk/LmdldEFycmF5KCkgfHwgW10pXG4gICAgICA6IHBvbHlnb24uZ2V0UGF0aCgpPy5nZXRBcnJheSgpIHx8IFtdXG4gICAgOiBbXTtcbiAgcmV0dXJuIHBhdGhzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldi5leHRlbmQoY3VyciksIG5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMoKSk7XG59O1xuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbWFwcy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQVcsR0FBRyxVQUFVLEVBQUUsRUFBRTtJQUMxRixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLE9BQU87UUFDTCxnQkFBZ0IsRUFBRTtZQUNoQixDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNiLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDeEQsWUFBWSxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFO2FBQzdEO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixTQUFTO0lBQ1QsV0FBVyxFQUFFLEdBQUc7Q0FDakIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixXQUFXO0lBQ1gsYUFBYSxFQUFFLEdBQUc7SUFDbEIsWUFBWSxFQUFFLENBQUM7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyx3RkFBd0YsQ0FBQztBQUd2SCxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7SUFDbkQsTUFB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Q0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDekYsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGxvY2F0aW9uUXVlcnkgPSAoYm91bmRzOiBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMsIHNlYXJjaEZpZWxkID0gJ2xvY2F0aW9uJykgPT4ge1xuICBjb25zdCB0b3BSaWdodCA9IGJvdW5kcy5nZXROb3J0aEVhc3QoKTtcbiAgY29uc3QgYm90dG9tTGVmdCA9IGJvdW5kcy5nZXRTb3V0aFdlc3QoKTtcbiAgcmV0dXJuIHtcbiAgICBnZW9fYm91bmRpbmdfYm94OiB7XG4gICAgICBbc2VhcmNoRmllbGRdOiB7XG4gICAgICAgIHRvcF9sZWZ0OiB7IGxhdDogdG9wUmlnaHQubGF0KCksIGxvbjogYm90dG9tTGVmdC5sbmcoKSB9LFxuICAgICAgICBib3R0b21fcmlnaHQ6IHsgbGF0OiBib3R0b21MZWZ0LmxhdCgpLCBsb246IHRvcFJpZ2h0LmxuZygpIH0sXG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbGxDb2xvciA9ICcjMTkzOTU3JztcbmV4cG9ydCBjb25zdCBzdHJva2VDb2xvciA9ICcjMEMxQjI5JztcblxuZXhwb3J0IGNvbnN0IGZpbGxTdHlsZSA9IHtcbiAgZmlsbENvbG9yLFxuICBmaWxsT3BhY2l0eTogMC42XG59O1xuXG5leHBvcnQgY29uc3Qgc3Ryb2tlU3R5bGUgPSB7XG4gIHN0cm9rZUNvbG9yLFxuICBzdHJva2VPcGFjaXR5OiAwLjYsXG4gIHN0cm9rZVdlaWdodDogMVxufTtcblxuZXhwb3J0IGNvbnN0IGNsdXN0ZXJlckltYWdlID0gJ2h0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L2V4YW1wbGVzL21hcmtlcmNsdXN0ZXJlci9tJztcblxuXG5jb25zdCBnZXRDb29yZGluYXRlc0ZvclBlcmNlbnQgPSAocGVyY2VudDogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IHggPSBNYXRoLmNvcygyICogTWF0aC5QSSAqIHBlcmNlbnQpO1xuICBjb25zdCB5ID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgKiBwZXJjZW50KTtcbiAgcmV0dXJuIFt4LCB5XTtcbn07XG5cbmludGVyZmFjZSBJTWFya2VyUGllQ29uZmlnIHtcbiAgcGVyY2VudDogbnVtYmVyO1xuICBjb2xvcjogc3RyaW5nO1xufVxuXG5jb25zdCBwaWVVcmwgPSAoY29uZmlnczogSU1hcmtlclBpZUNvbmZpZ1tdLCBzaXplOiBudW1iZXIpID0+IHtcbiAgbGV0IGN1bXVsYXRpdmVQZXJjZW50ID0gMDtcblxuICByZXR1cm4gJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGYtOCwnICsgZW5jb2RlVVJJQ29tcG9uZW50KGBcbiAgICA8c3ZnIHdpZHRoPVwiJHtzaXplfVwiIGhlaWdodD1cIiR7c2l6ZX1cIiB2aWV3Qm94PVwiLTEgLTEgMiAyXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiR7XG4gICAgY29uZmlncy5tYXAoKHsgcGVyY2VudCwgY29sb3IgfSkgPT4ge1xuICAgICAgY29uc3QgW3N0YXJ0WCwgc3RhcnRZXSA9IGdldENvb3JkaW5hdGVzRm9yUGVyY2VudChjdW11bGF0aXZlUGVyY2VudCk7XG4gICAgICBjdW11bGF0aXZlUGVyY2VudCArPSBwZXJjZW50O1xuICAgICAgY29uc3QgW2VuZFgsIGVuZFldID0gZ2V0Q29vcmRpbmF0ZXNGb3JQZXJjZW50KGN1bXVsYXRpdmVQZXJjZW50KTtcbiAgICAgIGNvbnN0IGxhcmdlQXJjRmxhZyA9IHBlcmNlbnQgPiAuNSA/IDEgOiAwO1xuICAgICAgY29uc3QgcGF0aERhdGEgPSBbXG4gICAgICAgIGBNICR7c3RhcnRYfSAke3N0YXJ0WX1gLCAvLyBNb3ZlXG4gICAgICAgIGBBIDEgMSAwICR7bGFyZ2VBcmNGbGFnfSAxICR7ZW5kWH0gJHtlbmRZfWAsIC8vIEFyY1xuICAgICAgICBgTCAwIDBgLCAvLyBMaW5lXG4gICAgICBdLmpvaW4oJyAnKTtcbiAgICAgIHJldHVybiBgPHBhdGggZmlsbD1cIiR7Y29sb3J9XCIgZD1cIiR7cGF0aERhdGF9XCI+PC9wYXRoPmA7XG4gICAgfSkuam9pbignJyl9PC9zdmc+XG4gIGAudHJpbSgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJQaWUgPSAoY29uZmlnczogSU1hcmtlclBpZUNvbmZpZ1tdLCBzaXplID0gNykgPT4gKHtcbiAgYW5jaG9yOiBuZXcgZ29vZ2xlLm1hcHMuUG9pbnQoc2l6ZSAvIDIsIHNpemUgLyAyKSxcbiAgdXJsOiBwaWVVcmwoY29uZmlncywgc2l6ZSksXG4gIGxhYmVsT3JpZ2luOiBuZXcgZ29vZ2xlLm1hcHMuUG9pbnQoMCwgLTIpXG59KTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckljb24gPSAoc2NhbGUgPSA3KTogZ29vZ2xlLm1hcHMuU3ltYm9sID0+ICh7XG4gIHBhdGg6IGdvb2dsZS5tYXBzLlN5bWJvbFBhdGguQ0lSQ0xFLFxuICAuLi5maWxsU3R5bGUsXG4gIC4uLnN0cm9rZVN0eWxlLFxuICBzY2FsZSxcbiAgbGFiZWxPcmlnaW46IG5ldyBnb29nbGUubWFwcy5Qb2ludCgwLCAtMilcbn0pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTWFya2VyID0gKFxuICBwb3NpdGlvbj86IGdvb2dsZS5tYXBzLkxhdExuZyB8IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWwsIHRleHQgPSAnJywgY29sb3IgPSBmaWxsQ29sb3IsIHNjYWxlPzogbnVtYmVyXG4pID0+IChcbiAgcG9zaXRpb24gJiYgcG9zaXRpb24ubGF0ICYmIHBvc2l0aW9uLmxuZyA/IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xuICAgIHBvc2l0aW9uLFxuICAgIGxhYmVsOiB7IGNvbG9yLCB0ZXh0IH0sXG4gICAgaWNvbjogbWFya2VySWNvbihzY2FsZSlcbiAgfSkgOiB1bmRlZmluZWRcbikgYXMgZ29vZ2xlLm1hcHMuTWFya2VyO1xuXG5pbnRlcmZhY2UgSVBvbHlnb24ge1xuICB0eXBlOiAnUG9seWdvbic7XG4gIGNvb3JkaW5hdGVzOiBudW1iZXJbXVtdW107XG59XG5cbmludGVyZmFjZSBJTXVsdGlQb2x5Z29uIHtcbiAgdHlwZTogJ011bHRpUG9seWdvbic7XG4gIGNvb3JkaW5hdGVzOiBudW1iZXJbXVtdW107XG59XG5cbnR5cGUgZ2VvbWV0cnkgPSBJUG9seWdvbiB8IElNdWx0aVBvbHlnb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZlYXR1cmUge1xuICB0eXBlOiAnRmVhdHVyZSc7XG4gIHByb3BlcnRpZXM6IGFueTtcbiAgZ2VvbWV0cnk6IGdlb21ldHJ5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGZWF0dXJlQ29sbGVjdGlvbiB7XG4gIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbic7XG4gIGZlYXR1cmVzOiBJRmVhdHVyZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHZW9tZXRyeUNvbGxlY3Rpb24ge1xuICB0eXBlOiAnR2VvbWV0cnlDb2xsZWN0aW9uJztcbiAgZ2VvbWV0cmllczogZ2VvbWV0cnlbXTtcbn1cblxudHlwZSBmZWF0dXJlID0gSUZlYXR1cmUgfCBJRmVhdHVyZUNvbGxlY3Rpb24gfCBJR2VvbWV0cnlDb2xsZWN0aW9uIHwgSVBvbHlnb24gfCBJTXVsdGlQb2x5Z29uO1xuXG5jb25zdCBmZWF0dXJlOiBJRmVhdHVyZSA9IE9iamVjdC5mcmVlemUoe1xuICB0eXBlOiAnRmVhdHVyZScsXG4gIHByb3BlcnRpZXM6IHt9LFxuICBnZW9tZXRyeTogKHtcbiAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgY29vcmRpbmF0ZXM6IFtdXG4gIH0gYXMgZ2VvbWV0cnkpXG59KTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRGZWF0dXJlID0gKCk6IElGZWF0dXJlID0+ICh7IC4uLmZlYXR1cmUgfSk7XG5cbmV4cG9ydCBjb25zdCBwb2ludFRvQ29vcmRpbmF0ZXMgPSAocG9pbnQ6IGdvb2dsZS5tYXBzLkxhdExuZykgPT4gW3BvaW50LmxuZygpLCBwb2ludC5sYXQoKV07XG5cbmV4cG9ydCBjb25zdCBjb29yZGluYXRlc1RvUG9pbnQgPSAodmFsdWVzOiAobnVtYmVyIHwgbnVtYmVyW10pW10pID0+XG4gIEFycmF5LmlzQXJyYXkodmFsdWVzWzBdKVxuICAgID8gdmFsdWVzLm1hcCgodjogYW55KSA9PiBjb29yZGluYXRlc1RvUG9pbnQodikpXG4gICAgOiAodmFsdWVzIGFzIG51bWJlcltdKS5zb21lKGlzTmFOKVxuICAgID8gbnVsbFxuICAgIDogbmV3IGdvb2dsZS5tYXBzLkxhdExuZygodmFsdWVzIGFzIG51bWJlcltdKVsxXSwgKHZhbHVlcyBhcyBudW1iZXJbXSlbMF0pO1xuXG5leHBvcnQgY29uc3QgcG9seWdvblRvQ29vcmRpbmF0ZXMgPSAocG9seWdvbjogZ29vZ2xlLm1hcHMuUG9seWdvbikgPT4gcG9seWdvbi5nZXRQYXRocygpLmdldEFycmF5KCkubWFwKHBhdGggPT4ge1xuICBjb25zdCBwb2ludHMgPSBwYXRoLmdldEFycmF5KCk7XG4gIHJldHVybiBbXG4gICAgLi4ucG9pbnRzLm1hcChwb2ludFRvQ29vcmRpbmF0ZXMpLFxuICAgIHBvaW50VG9Db29yZGluYXRlcyhwb2ludHNbMF0pXG4gIF07XG59KVswXTtcblxuY29uc3QgY29vcmRpbmF0ZXNUb1BvbHlnb24gPSAoY29vcmRpbmF0ZXM6IG51bWJlcltdW10pID0+IG5ldyBnb29nbGUubWFwcy5Qb2x5Z29uKHtcbiAgcGF0aHM6IGNvb3JkaW5hdGVzLm1hcChjb29yZGluYXRlc1RvUG9pbnQpLmZpbHRlcihCb29sZWFuKSxcbiAgLi4uc3Ryb2tlU3R5bGVcbn0pO1xuXG5jb25zdCBnZXRDb29yZGluYXRlcyA9IChmZWF0OiBmZWF0dXJlKSA9PlxuICBmZWF0LnR5cGUgPT09ICdQb2x5Z29uJyB8fCBmZWF0LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nXG4gID8gZmVhdC5jb29yZGluYXRlc1xuICA6IGZlYXQudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gID8gZmVhdC5nZW9tZXRyeT8uY29vcmRpbmF0ZXNcbiAgOiBbXTtcblxuZXhwb3J0IGNvbnN0IGFkZFBvbHlnb25Ub0ZlYXR1cmUgPSAoZmVhdDogZmVhdHVyZSwgcG9seWdvbjogZ29vZ2xlLm1hcHMuUG9seWdvbikgPT5cbiAgZmVhdC50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nXG4gID8gZmVhdC5mZWF0dXJlcy5wdXNoKGFkZFBvbHlnb25Ub0ZlYXR1cmUoZGVmYXVsdEZlYXR1cmUoKSwgcG9seWdvbikpXG4gIDogZmVhdC50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICA/IGZlYXQuZ2VvbWV0cmllcy5tYXAoZ2VvbWV0cnkgPT4gKGdlb21ldHJ5Py5jb29yZGluYXRlcyB8fCBbXSkucHVzaChwb2x5Z29uVG9Db29yZGluYXRlcyhwb2x5Z29uKSkpXG4gIDogKGdldENvb3JkaW5hdGVzKGZlYXQpIHx8IFtdKS5wdXNoKHBvbHlnb25Ub0Nvb3JkaW5hdGVzKHBvbHlnb24pKVxuICA7XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uc0Zyb21GZWF0dXJlID0gKGZlYXQ6IGZlYXR1cmUpOiBnb29nbGUubWFwcy5Qb2x5Z29uW10gPT5cbiAgZmVhdC50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nXG4gID8gZmVhdC5mZWF0dXJlcy5mbGF0TWFwKHBvbHlnb25zRnJvbUZlYXR1cmUpXG4gIDogZmVhdC50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICA/IGZlYXQuZ2VvbWV0cmllcy5mbGF0TWFwKGdlb21ldHJ5ID0+IChnZW9tZXRyeS5jb29yZGluYXRlcyB8fCBbXSkubWFwKGNvb3JkaW5hdGVzVG9Qb2x5Z29uKSlcbiAgOiAoZ2V0Q29vcmRpbmF0ZXMoZmVhdCkgfHwgW10pLm1hcChjb29yZGluYXRlc1RvUG9seWdvbilcbiAgO1xuXG5leHBvcnQgY29uc3QgcG9seWdvbkJvdW5kcyA9IChwb2x5Z29uPzogZ29vZ2xlLm1hcHMuUG9seWdvbiB8IGdvb2dsZS5tYXBzLlBvbHlnb25bXSkgPT4ge1xuICBjb25zdCBwYXRocyA9IHBvbHlnb25cbiAgICA/IEFycmF5LmlzQXJyYXkocG9seWdvbilcbiAgICAgID8gcG9seWdvbi5mbGF0TWFwKHAgPT4gcC5nZXRQYXRoKCk/LmdldEFycmF5KCkgfHwgW10pXG4gICAgICA6IHBvbHlnb24uZ2V0UGF0aCgpPy5nZXRBcnJheSgpIHx8IFtdXG4gICAgOiBbXTtcbiAgcmV0dXJuIHBhdGhzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldi5leHRlbmQoY3VyciksIG5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMoKSk7XG59O1xuIl19
@@ -14,10 +14,10 @@ export class PopoverComponent {
14
14
  }
15
15
  }
16
16
  PopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: PopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
- PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: PopoverComponent, selector: "he-popover", inputs: { message: "message", content: "content", data: "data", position: "position" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"is-inline-block popover is-popover-{{position}}\" [class.is-popover-active]=\"active\">\n <ng-content></ng-content>\n\n <div class=\"popover-content\">\n\n <ng-template\n [ngTemplateOutlet]=\"content || ct\"\n [ngTemplateOutletContext]=\"{message: message, data: data}\"\n ></ng-template>\n\n <footer>\n <ng-content select=\"[actions]\"></ng-content>\n <button class=\"button is-small\" (click)=\"$event.stopPropagation(); active = false\">\n <span>Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #ct>\n <p class=\"mb-2 is-pre-wrap\" [innerHtml]=\"message\"></p>\n</ng-template>\n", styles: [":host{cursor:pointer;display:block}.popover{position:relative;display:inline-block}.popover .popover-content{z-index:99999;position:absolute;display:none;font-size:.75rem;padding:.4rem .8rem;color:#4a4a4a;background-color:#fff;border-radius:4px;box-shadow:0 2px 3px #0a0a0a1a,0 0 0 1px #0a0a0a1a;width:max-content;max-width:24rem}.popover .popover-content:before{position:absolute;content:\"\";border-style:solid;pointer-events:none;height:0;width:0;top:100%;left:50%;border-color:transparent;border-bottom-color:#fff;border-left-color:#fff;border-width:.4rem;margin-left:-.4rem;margin-top:-.4rem;transform-origin:center;box-shadow:-1px 1px 2px #0a0a0a33}.popover .popover-content{inset:auto auto 100% 50%!important;transform:translate(-50%,-.7rem)!important}.popover .popover-content:before{inset:100% auto auto 50%!important;transform:rotate(-45deg)}.popover.is-popover-right .popover-content{inset:auto auto 50% 100%!important;transform:translate(.7rem,50%)!important}.popover.is-popover-right .popover-content:before{inset:50% auto auto 0!important;transform:rotate(45deg)}.popover.is-popover-bottom .popover-content{inset:100% auto auto 50%!important;transform:translate(-50%,.7rem)!important}.popover.is-popover-bottom .popover-content:before{inset:0 auto auto 50%!important;transform:rotate(135deg)}.popover.is-popover-left .popover-content{inset:auto 100% 50% auto!important;transform:translate(-.7rem,50%)!important}.popover.is-popover-left .popover-content:before{inset:50% auto auto 100%!important;transform:rotate(-135deg)}.popover.is-popover-active .popover-content,.popover.is-popover-hover:hover .popover-content,.popover .popover-trigger:focus~.popover-content{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
17
+ PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: PopoverComponent, selector: "he-popover", inputs: { message: "message", content: "content", data: "data", position: "position" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"is-inline-block is-relative popover is-popover-{{position}}\" [class.is-popover-active]=\"active\">\n <ng-content></ng-content>\n\n <div class=\"popover-content\">\n\n <ng-template\n [ngTemplateOutlet]=\"content || ct\"\n [ngTemplateOutletContext]=\"{message: message, data: data}\"\n ></ng-template>\n\n <footer>\n <ng-content select=\"[actions]\"></ng-content>\n <button class=\"button is-small is-info\" (click)=\"$event.stopPropagation(); active = false\">\n <span i18n=\"@@close\">Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #ct>\n <p class=\"mb-2 is-pre-wrap\" [innerHtml]=\"message\"></p>\n</ng-template>\n", styles: [":host{cursor:pointer;display:block}.popover .popover-content{z-index:99999;position:absolute;display:none;font-size:.8rem;padding:.4rem .8rem;color:#fff;background-color:#193957;border-radius:6px;box-shadow:8px 8px 12px #0000001a;width:max-content;max-width:24rem}.popover .popover-content:before{position:absolute;content:\"\";border-style:solid;pointer-events:none;height:0;width:0;top:100%;left:50%;border-color:transparent;border-bottom-color:#193957;border-left-color:#193957;border-width:.4rem;margin-left:-.4rem;margin-top:-.4rem;transform-origin:center}.popover .popover-content{inset:auto auto 100% 50%!important;transform:translate(-50%,-.7rem)!important}.popover .popover-content:before{inset:100% auto auto 50%!important;transform:rotate(-45deg)}.popover.is-popover-right .popover-content{inset:auto auto 50% 100%!important;transform:translate(.7rem,50%)!important}.popover.is-popover-right .popover-content:before{inset:50% auto auto 0!important;transform:rotate(45deg)}.popover.is-popover-bottom .popover-content{inset:100% auto auto 50%!important;transform:translate(-50%,.7rem)!important}.popover.is-popover-bottom .popover-content:before{inset:0 auto auto 50%!important;transform:rotate(135deg)}.popover.is-popover-left .popover-content{inset:auto 100% 50% auto!important;transform:translate(-.7rem,50%)!important}.popover.is-popover-left .popover-content:before{inset:50% auto auto 100%!important;transform:rotate(-135deg)}.popover.is-popover-active .popover-content,.popover.is-popover-hover:hover .popover-content,.popover .popover-trigger:focus~.popover-content{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: PopoverComponent, decorators: [{
19
19
  type: Component,
20
- args: [{ selector: 'he-popover', template: "<div class=\"is-inline-block popover is-popover-{{position}}\" [class.is-popover-active]=\"active\">\n <ng-content></ng-content>\n\n <div class=\"popover-content\">\n\n <ng-template\n [ngTemplateOutlet]=\"content || ct\"\n [ngTemplateOutletContext]=\"{message: message, data: data}\"\n ></ng-template>\n\n <footer>\n <ng-content select=\"[actions]\"></ng-content>\n <button class=\"button is-small\" (click)=\"$event.stopPropagation(); active = false\">\n <span>Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #ct>\n <p class=\"mb-2 is-pre-wrap\" [innerHtml]=\"message\"></p>\n</ng-template>\n", styles: [":host{cursor:pointer;display:block}.popover{position:relative;display:inline-block}.popover .popover-content{z-index:99999;position:absolute;display:none;font-size:.75rem;padding:.4rem .8rem;color:#4a4a4a;background-color:#fff;border-radius:4px;box-shadow:0 2px 3px #0a0a0a1a,0 0 0 1px #0a0a0a1a;width:max-content;max-width:24rem}.popover .popover-content:before{position:absolute;content:\"\";border-style:solid;pointer-events:none;height:0;width:0;top:100%;left:50%;border-color:transparent;border-bottom-color:#fff;border-left-color:#fff;border-width:.4rem;margin-left:-.4rem;margin-top:-.4rem;transform-origin:center;box-shadow:-1px 1px 2px #0a0a0a33}.popover .popover-content{inset:auto auto 100% 50%!important;transform:translate(-50%,-.7rem)!important}.popover .popover-content:before{inset:100% auto auto 50%!important;transform:rotate(-45deg)}.popover.is-popover-right .popover-content{inset:auto auto 50% 100%!important;transform:translate(.7rem,50%)!important}.popover.is-popover-right .popover-content:before{inset:50% auto auto 0!important;transform:rotate(45deg)}.popover.is-popover-bottom .popover-content{inset:100% auto auto 50%!important;transform:translate(-50%,.7rem)!important}.popover.is-popover-bottom .popover-content:before{inset:0 auto auto 50%!important;transform:rotate(135deg)}.popover.is-popover-left .popover-content{inset:auto 100% 50% auto!important;transform:translate(-.7rem,50%)!important}.popover.is-popover-left .popover-content:before{inset:50% auto auto 100%!important;transform:rotate(-135deg)}.popover.is-popover-active .popover-content,.popover.is-popover-hover:hover .popover-content,.popover .popover-trigger:focus~.popover-content{display:block}\n"] }]
20
+ args: [{ selector: 'he-popover', template: "<div class=\"is-inline-block is-relative popover is-popover-{{position}}\" [class.is-popover-active]=\"active\">\n <ng-content></ng-content>\n\n <div class=\"popover-content\">\n\n <ng-template\n [ngTemplateOutlet]=\"content || ct\"\n [ngTemplateOutletContext]=\"{message: message, data: data}\"\n ></ng-template>\n\n <footer>\n <ng-content select=\"[actions]\"></ng-content>\n <button class=\"button is-small is-info\" (click)=\"$event.stopPropagation(); active = false\">\n <span i18n=\"@@close\">Close</span>\n </button>\n </footer>\n </div>\n</div>\n\n<ng-template #ct>\n <p class=\"mb-2 is-pre-wrap\" [innerHtml]=\"message\"></p>\n</ng-template>\n", styles: [":host{cursor:pointer;display:block}.popover .popover-content{z-index:99999;position:absolute;display:none;font-size:.8rem;padding:.4rem .8rem;color:#fff;background-color:#193957;border-radius:6px;box-shadow:8px 8px 12px #0000001a;width:max-content;max-width:24rem}.popover .popover-content:before{position:absolute;content:\"\";border-style:solid;pointer-events:none;height:0;width:0;top:100%;left:50%;border-color:transparent;border-bottom-color:#193957;border-left-color:#193957;border-width:.4rem;margin-left:-.4rem;margin-top:-.4rem;transform-origin:center}.popover .popover-content{inset:auto auto 100% 50%!important;transform:translate(-50%,-.7rem)!important}.popover .popover-content:before{inset:100% auto auto 50%!important;transform:rotate(-45deg)}.popover.is-popover-right .popover-content{inset:auto auto 50% 100%!important;transform:translate(.7rem,50%)!important}.popover.is-popover-right .popover-content:before{inset:50% auto auto 0!important;transform:rotate(45deg)}.popover.is-popover-bottom .popover-content{inset:100% auto auto 50%!important;transform:translate(-50%,.7rem)!important}.popover.is-popover-bottom .popover-content:before{inset:0 auto auto 50%!important;transform:rotate(135deg)}.popover.is-popover-left .popover-content{inset:auto 100% 50% auto!important;transform:translate(-.7rem,50%)!important}.popover.is-popover-left .popover-content:before{inset:50% auto auto 100%!important;transform:rotate(-135deg)}.popover.is-popover-active .popover-content,.popover.is-popover-hover:hover .popover-content,.popover .popover-trigger:focus~.popover-content{display:block}\n"] }]
21
21
  }], propDecorators: { message: [{
22
22
  type: Input
23
23
  }], content: [{
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
30
30
  type: HostListener,
31
31
  args: ['click', ['$event']]
32
32
  }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWUsTUFBTSxlQUFlLENBQUM7OztBQVk1RSxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBT1MsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUliLFNBQUksR0FBUSxFQUFFLENBQUM7UUFFZixhQUFRLEdBQWtDLE1BQU0sQ0FBQztRQVFqRCxXQUFNLEdBQUcsS0FBSyxDQUFDO0tBQ3ZCO0lBTkMsT0FBTyxDQUFDLE1BQU07UUFDWixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQzs7NkdBZFUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsK0xDWjdCLHlwQkFzQkE7MkZEVmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLFlBQVk7OEJBTWYsT0FBTztzQkFEYixLQUFLO2dCQUdDLE9BQU87c0JBRGIsS0FBSztnQkFHQyxJQUFJO3NCQURWLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudENvbnRleHQge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtcG9wb3ZlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcG9wb3Zlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWVzc2FnZSA9ICcnO1xuICBASW5wdXQoKVxuICBwdWJsaWMgY29udGVudD86IFRlbXBsYXRlUmVmPENvbnRlbnRDb250ZXh0PjtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKVxuICBwdWJsaWMgcG9zaXRpb246ICd0b3AnfCdyaWdodCd8J2JvdHRvbSd8J2xlZnQnID0gJ2xlZnQnO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGljaygkZXZlbnQpIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZSA9IGZhbHNlO1xufVxuIiwiPGRpdiBjbGFzcz1cImlzLWlubGluZS1ibG9jayBwb3BvdmVyIGlzLXBvcG92ZXIte3twb3NpdGlvbn19XCIgW2NsYXNzLmlzLXBvcG92ZXItYWN0aXZlXT1cImFjdGl2ZVwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgPGRpdiBjbGFzcz1cInBvcG92ZXItY29udGVudFwiPlxuXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50IHx8IGN0XCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bWVzc2FnZTogbWVzc2FnZSwgZGF0YTogZGF0YX1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuXG4gICAgPGZvb3Rlcj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthY3Rpb25zXVwiPjwvbmctY29udGVudD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBhY3RpdmUgPSBmYWxzZVwiPlxuICAgICAgICA8c3Bhbj5DbG9zZTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZm9vdGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2N0PlxuICA8cCBjbGFzcz1cIm1iLTIgaXMtcHJlLXdyYXBcIiBbaW5uZXJIdG1sXT1cIm1lc3NhZ2VcIj48L3A+XG48L25nLXRlbXBsYXRlPlxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWUsTUFBTSxlQUFlLENBQUM7OztBQVk1RSxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBT1MsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUliLFNBQUksR0FBUSxFQUFFLENBQUM7UUFFZixhQUFRLEdBQWtDLE1BQU0sQ0FBQztRQVFqRCxXQUFNLEdBQUcsS0FBSyxDQUFDO0tBQ3ZCO0lBTlcsT0FBTyxDQUFDLE1BQU07UUFDdEIsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7OzZHQWRVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLCtMQ1o3Qiw4ckJBc0JBOzJGRFZhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxZQUFZOzhCQU1mLE9BQU87c0JBRGIsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7Z0JBR0MsSUFBSTtzQkFEVixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSztnQkFJSSxPQUFPO3NCQURoQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50Q29udGV4dCB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZGF0YTogYW55O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1wb3BvdmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wb3BvdmVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXNzYWdlID0gJyc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb250ZW50PzogVGVtcGxhdGVSZWY8Q29udGVudENvbnRleHQ+O1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0YTogYW55ID0ge307XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb3NpdGlvbjogJ3RvcCd8J3JpZ2h0J3wnYm90dG9tJ3wnbGVmdCcgPSAnbGVmdCc7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25DbGljaygkZXZlbnQpIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZSA9IGZhbHNlO1xufVxuIiwiPGRpdiBjbGFzcz1cImlzLWlubGluZS1ibG9jayBpcy1yZWxhdGl2ZSBwb3BvdmVyIGlzLXBvcG92ZXIte3twb3NpdGlvbn19XCIgW2NsYXNzLmlzLXBvcG92ZXItYWN0aXZlXT1cImFjdGl2ZVwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgPGRpdiBjbGFzcz1cInBvcG92ZXItY29udGVudFwiPlxuXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50IHx8IGN0XCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7bWVzc2FnZTogbWVzc2FnZSwgZGF0YTogZGF0YX1cIlxuICAgID48L25nLXRlbXBsYXRlPlxuXG4gICAgPGZvb3Rlcj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthY3Rpb25zXVwiPjwvbmctY29udGVudD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtaW5mb1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGFjdGl2ZSA9IGZhbHNlXCI+XG4gICAgICAgIDxzcGFuIGkxOG49XCJAQGNsb3NlXCI+Q2xvc2U8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjdD5cbiAgPHAgY2xhc3M9XCJtYi0yIGlzLXByZS13cmFwXCIgW2lubmVySHRtbF09XCJtZXNzYWdlXCI+PC9wPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -11,6 +11,9 @@ export class PopoverConfirmComponent {
11
11
  this.confirmed.next(this.data);
12
12
  this.popover.active = false;
13
13
  }
14
+ get active() {
15
+ return this.popover?.active;
16
+ }
14
17
  }
15
18
  PopoverConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: PopoverConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
19
  PopoverConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: PopoverConfirmComponent, selector: "he-popover-confirm", inputs: { message: "message", content: "content", position: "position", popoverClass: "popoverClass" }, outputs: { confirmed: "confirmed" }, viewQueries: [{ propertyName: "popover", first: true, predicate: PopoverComponent, descendants: true }], ngImport: i0, template: "<he-popover [message]=\"message\" [content]=\"content\" [data]=\"data\" [position]=\"position\" [class]=\"popoverClass\">\n <ng-content></ng-content>\n\n <ng-container actions>\n <button class=\"button is-small is-primary mr-2\" (click)=\"$event.stopPropagation(); confirm()\">\n <span>Confirm</span>\n </button>\n </ng-container>\n</he-popover>\n", styles: ["he-popover{height:100%;width:100%}\n"], dependencies: [{ kind: "component", type: i1.PopoverComponent, selector: "he-popover", inputs: ["message", "content", "data", "position"] }] });
@@ -31,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
31
34
  }], confirmed: [{
32
35
  type: Output
33
36
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1jb25maXJtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vcG9wb3Zlci1jb25maXJtL3BvcG92ZXItY29uZmlybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3BvcG92ZXItY29uZmlybS9wb3BvdmVyLWNvbmZpcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFPaEYsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQW1CUyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVwQyxTQUFJLEdBQVEsRUFBRSxDQUFDO0tBTXZCO0lBSlEsT0FBTztRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQzs7b0hBckJVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGdQQUN2QixnQkFBZ0IsZ0RDVjdCLDJXQVNBOzJGREFhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxvQkFBb0I7OEJBTXRCLE9BQU87c0JBRGQsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSXBCLE9BQU87c0JBRGIsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udGVudENvbnRleHQsIFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuLi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtcG9wb3Zlci1jb25maXJtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXItY29uZmlybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXItY29uZmlybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJDb25maXJtQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChQb3BvdmVyQ29tcG9uZW50KVxuICBwcml2YXRlIHBvcG92ZXI/OiBQb3BvdmVyQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgY29udGVudD86IFRlbXBsYXRlUmVmPENvbnRlbnRDb250ZXh0PjtcbiAgQElucHV0KClcbiAgcHVibGljIHBvc2l0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgcG9wb3ZlckNsYXNzPzogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY29uZmlybWVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHVibGljIGRhdGE6IGFueSA9IHt9O1xuXG4gIHB1YmxpYyBjb25maXJtKCkge1xuICAgIHRoaXMuY29uZmlybWVkLm5leHQodGhpcy5kYXRhKTtcbiAgICB0aGlzLnBvcG92ZXIhLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59XG4iLCI8aGUtcG9wb3ZlciBbbWVzc2FnZV09XCJtZXNzYWdlXCIgW2NvbnRlbnRdPVwiY29udGVudFwiIFtkYXRhXT1cImRhdGFcIiBbcG9zaXRpb25dPVwicG9zaXRpb25cIiBbY2xhc3NdPVwicG9wb3ZlckNsYXNzXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICA8bmctY29udGFpbmVyIGFjdGlvbnM+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1wcmltYXJ5IG1yLTJcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBjb25maXJtKClcIj5cbiAgICAgIDxzcGFuPkNvbmZpcm08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9oZS1wb3BvdmVyPlxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1jb25maXJtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vcG9wb3Zlci1jb25maXJtL3BvcG92ZXItY29uZmlybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL3BvcG92ZXItY29uZmlybS9wb3BvdmVyLWNvbmZpcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFPaEYsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQW1CUyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVwQyxTQUFJLEdBQVEsRUFBRSxDQUFDO0tBVXZCO0lBUlEsT0FBTztRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBUSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDOUIsQ0FBQzs7b0hBekJVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLGdQQUN2QixnQkFBZ0IsZ0RDVjdCLDJXQVNBOzJGREFhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxvQkFBb0I7OEJBTXRCLE9BQU87c0JBRGQsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSXBCLE9BQU87c0JBRGIsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBUZW1wbGF0ZVJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udGVudENvbnRleHQsIFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuLi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtcG9wb3Zlci1jb25maXJtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXItY29uZmlybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXItY29uZmlybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJDb25maXJtQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChQb3BvdmVyQ29tcG9uZW50KVxuICBwcml2YXRlIHBvcG92ZXI/OiBQb3BvdmVyQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgY29udGVudD86IFRlbXBsYXRlUmVmPENvbnRlbnRDb250ZXh0PjtcbiAgQElucHV0KClcbiAgcHVibGljIHBvc2l0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgcG9wb3ZlckNsYXNzPzogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY29uZmlybWVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHVibGljIGRhdGE6IGFueSA9IHt9O1xuXG4gIHB1YmxpYyBjb25maXJtKCkge1xuICAgIHRoaXMuY29uZmlybWVkLm5leHQodGhpcy5kYXRhKTtcbiAgICB0aGlzLnBvcG92ZXIhLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9wb3Zlcj8uYWN0aXZlO1xuICB9XG59XG4iLCI8aGUtcG9wb3ZlciBbbWVzc2FnZV09XCJtZXNzYWdlXCIgW2NvbnRlbnRdPVwiY29udGVudFwiIFtkYXRhXT1cImRhdGFcIiBbcG9zaXRpb25dPVwicG9zaXRpb25cIiBbY2xhc3NdPVwicG9wb3ZlckNsYXNzXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICA8bmctY29udGFpbmVyIGFjdGlvbnM+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1wcmltYXJ5IG1yLTJcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBjb25maXJtKClcIj5cbiAgICAgIDxzcGFuPkNvbmZpcm08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9oZS1wb3BvdmVyPlxuIl19
@@ -83,10 +83,10 @@ export class CyclesActivityComponent {
83
83
  }
84
84
  }
85
85
  CyclesActivityComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesActivityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
86
- CyclesActivityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesActivityComponent, selector: "he-cycles-activity", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep is-hidden-mobile\"></div>\n </ng-container>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngIf=\"inputs.length\" [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\" [attr.colspan]=\"products.length\">Products</th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state"] }, { kind: "component", type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i7.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i8.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { kind: "component", type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { kind: "component", type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { kind: "component", type: i11.CyclesActivityLogsComponent, selector: "he-cycles-activity-logs", inputs: ["cycle", "original", "recalculated"] }, { kind: "component", type: i12.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { kind: "component", type: i13.CyclesResultComponent, selector: "he-cycles-result", inputs: ["cycles"] }, { kind: "pipe", type: i14.CompoundPipe, name: "compound" }, { kind: "pipe", type: i15.DefaultPipe, name: "default" }, { kind: "pipe", type: i16.EllipsisPipe, name: "ellipsis" }, { kind: "pipe", type: i17.PrecisionPipe, name: "precision" }] });
86
+ CyclesActivityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesActivityComponent, selector: "he-cycles-activity", inputs: { originalValues: "originalValues", cycles: "cycles", dataState: "dataState", enableCompare: "enableCompare" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngIf=\"inputs.length\"\n [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\"\n [attr.colspan]=\"products.length\"\n >Products</th>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i5.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state"] }, { kind: "component", type: i6.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i7.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i8.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { kind: "component", type: i9.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { kind: "component", type: i10.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { kind: "component", type: i11.CyclesActivityLogsComponent, selector: "he-cycles-activity-logs", inputs: ["cycle", "original", "recalculated"] }, { kind: "component", type: i12.CyclesFunctionalUnitMeasureComponent, selector: "he-cycles-functional-unit-measure", inputs: ["cycle"] }, { kind: "component", type: i13.CyclesResultComponent, selector: "he-cycles-result", inputs: ["cycles"] }, { kind: "pipe", type: i14.CompoundPipe, name: "compound" }, { kind: "pipe", type: i15.DefaultPipe, name: "default" }, { kind: "pipe", type: i16.EllipsisPipe, name: "ellipsis" }, { kind: "pipe", type: i17.PrecisionPipe, name: "precision" }] });
87
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesActivityComponent, decorators: [{
88
88
  type: Component,
89
- args: [{ selector: 'he-cycles-activity', template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <div class=\"column is-narrow\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n <div class=\"column is-narrow col-sep is-hidden-mobile\"></div>\n </ng-container>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngIf=\"inputs.length\" [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\" [attr.colspan]=\"products.length\">Products</th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"] }]
89
+ args: [{ selector: 'he-cycles-activity', template: "<div class=\"columns is-variable is-align-items-center is-2 m-0\">\n <div class=\"column\">\n <ng-container *ngIf=\"selectedView === View.table && (inputs.length || products.length)\">\n <button class=\"button is-ghost\" (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\" placement=\"bottom\"\n >\n <fa-icon icon=\"download\"></fa-icon>\n </button>\n </ng-container>\n </div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal\">\n <button class=\"button is-small\" [class.is-selected]=\"selectedView === View.logs\" (click)=\"selectedView = View.logs\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <ng-container *ngIf=\"inputs.length || products.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th></th>\n <th *ngIf=\"inputs.length\"\n [attr.colspan]=\"inputs.length\"\n [class.has-border-right]=\"products.length\"\n >Inputs</th>\n <th *ngIf=\"products.length\"\n [attr.colspan]=\"products.length\"\n >Products</th>\n </tr>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.name\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <he-node-link [node]=\"input.value.term\">\n <span [innerHtml]=\"input.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.name\"\n >\n <he-node-link [node]=\"product.value.term\">\n <span [innerHtml]=\"product.value.term.name | ellipsis:30 | compound\"></span>\n </he-node-link>\n </th>\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/Cycle#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th *ngFor=\"let input of inputs; let pl = last\"\n [attr.title]=\"input.value.term.units\"\n [class.has-border-right]=\"products.length && pl\"\n [innerHtml]=\"input.value.term.units | compound\"\n ></th>\n <th *ngFor=\"let product of products; let pl = last\"\n [attr.title]=\"product.value.term.units\"\n [innerHtml]=\"product.value.term.units | compound\"\n ></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle.term || cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\">\n <he-cycles-functional-unit-measure [cycle]=\"cycle\"></he-cycles-functional-unit-measure>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let input of inputs; let pl = last\"\n [class.has-border-right]=\"products.length && pl\"\n >\n <span *ngIf=\"input.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: input.value.values[cycle['@id']], cycle: cycle, key: 'inputs' })\"\n >\n <span pointer>{{propertyValue(input.value.values[cycle['@id']].value, input.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"input.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n <td class=\"is-nowrap\"\n *ngFor=\"let product of products; let pl = last\"\n >\n <span *ngIf=\"product.value.values[cycle['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: product.value.values[cycle['@id']], cycle: cycle, key: 'products' })\"\n >\n <span pointer>{{propertyValue(product.value.values[cycle['@id']].value, product.value.term['@id']) | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"product.value.values[cycle['@id']].node\"\n key=\"value\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n </ng-container>\n</div>\n\n<he-cycles-result *ngIf=\"selectedView === View.chart\"\n [cycles]=\"cycles\"\n></he-cycles-result>\n\n<ng-container *ngIf=\"selectedView === View.logs && !isOriginal\">\n <div class=\"field has-addons pt-2 px-3\" *ngIf=\"cycles.length > 1\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a Cycle</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n <option *ngFor=\"let value of cycles; let i = index\" [value]=\"i\">{{i + 1}}. {{defaultLabel(value)}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <he-cycles-activity-logs *ngIf=\"selectedIndex >= 0\"\n [cycle]=\"cycles[selectedIndex]\"\n [original]=\"originalValues[selectedIndex]\"\n [recalculated]=\"cycles[selectedIndex]\"\n ></he-cycles-activity-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"cycles\" filename=\"inputs-products.csv\" [isUpload]=\"false\"\n [headerKeys]=\"headerKeys\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"has-text-centered\">\n <span>No activity data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"cycle\" let-data=\"data\" let-key=\"key\">\n <p><b>{{defaultLabel(node)}}</b></p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}\n"] }]
90
90
  }], propDecorators: { originalValues: [{
91
91
  type: Input
92
92
  }], cycles: [{
@@ -96,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
96
96
  }], enableCompare: [{
97
97
  type: Input
98
98
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWFjdGl2aXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jeWNsZXMvY3ljbGVzLWFjdGl2aXR5L2N5Y2xlcy1hY3Rpdml0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1hY3Rpdml0eS9jeWNsZXMtYWN0aXZpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTNELElBQUssSUFJSjtBQUpELFdBQUssSUFBSTtJQUNQLHVCQUFlLENBQUE7SUFDZix1QkFBZSxDQUFBO0lBQ2YscUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKSSxJQUFJLEtBQUosSUFBSSxRQUlSO0FBRUQsTUFBTSxVQUFVLEdBQUc7SUFDakIsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsaUJBQWlCO0lBQzNELG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQjtDQUNoRyxDQUFDO0FBT0YsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQU9TLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUVwQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUk1QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixZQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFDOUIsaUJBQVksR0FBRyxZQUFZLENBQUM7UUFDNUIsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQUN4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLFdBQU0sR0FBZ0MsRUFBRSxDQUFDO1FBQ3pDLGFBQVEsR0FBNEIsRUFBRSxDQUFDO0tBMEMvQztJQXhDQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdEI7UUFDRCxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFjLEVBQUUsSUFBa0I7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUMvQyxDQUFDO0lBRU8sTUFBTTtRQUNaLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUE0QixJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQXdCLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQVksRUFBRSxPQUFZO1FBQzdDLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELHFCQUFxQjtJQUViLG1CQUFtQixDQUFDLEtBQWE7UUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4Qiw4QkFBOEI7UUFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7O29IQTdEVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix1TUN6QnBDLG00UUE4TEE7MkZEckthLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxvQkFBb0I7OEJBTXZCLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsTUFBTTtzQkFEWixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxhQUFhO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBJQ3ljbGVKU09OTEQsIElucHV0IGFzIEhlc3RpYUlucHV0LCBQcm9kdWN0IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuaW1wb3J0IHsgcHJvcGVydHlWYWx1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMvZGlzdC90ZXJtJztcblxuaW1wb3J0IHsgZ3JvdXBOb2Rlc0J5VGVybSwgSUdyb3VwZWRLZXlzLCBncm91cHBlZEtleXMgfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5pbXBvcnQgeyBiYXNlVXJsLCBkZWZhdWx0TGFiZWwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGNoYXJ0ID0gJ2NoYXJ0JyxcbiAgbG9ncyA9ICdsb2dzJ1xufVxuXG5jb25zdCBoZWFkZXJLZXlzID0gW1xuICAnY3ljbGUuaWQnLCAnY3ljbGUuQGlkJywgJ2N5Y2xlLmlucHV0cy4nLCAnY3ljbGUucHJvZHVjdHMuJyxcbiAgJ3RyYW5zZm9ybWF0aW9uLmlkJywgJ3RyYW5zZm9ybWF0aW9uLkBpZCcsICd0cmFuc2Zvcm1hdGlvbi5pbnB1dHMuJywgJ3RyYW5zZm9ybWF0aW9uLnByb2R1Y3RzLidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWN5Y2xlcy1hY3Rpdml0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtYWN0aXZpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jeWNsZXMtYWN0aXZpdHkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDeWNsZXNBY3Rpdml0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcmlnaW5hbFZhbHVlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZUNvbXBhcmUgPSB0cnVlO1xuXG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWU7XG4gIHB1YmxpYyBkZWZhdWx0TGFiZWwgPSBkZWZhdWx0TGFiZWw7XG4gIHB1YmxpYyBoZWFkZXJLZXlzID0gaGVhZGVyS2V5cztcbiAgcHVibGljIHNob3dEb3dubG9hZCA9IGZhbHNlO1xuICBwdWJsaWMgVmlldyA9IFZpZXc7XG4gIHB1YmxpYyBzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlO1xuICBwdWJsaWMgc2VsZWN0ZWRJbmRleCA9IDA7XG5cbiAgcHVibGljIGlucHV0czogSUdyb3VwZWRLZXlzPEhlc3RpYUlucHV0PltdID0gW107XG4gIHB1YmxpYyBwcm9kdWN0czogSUdyb3VwZWRLZXlzPFByb2R1Y3Q+W10gPSBbXTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCdjeWNsZXMnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRJbmRleCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIGlmICgnZGF0YVN0YXRlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJZChfaW5kZXg6IG51bWJlciwgaXRlbTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09yaWdpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLm9yaWdpbmFsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgY29uc3QgaW5wdXRzUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgSGVzdGlhSW5wdXQ+KHRoaXMuY3ljbGVzLCAnaW5wdXRzJywgdGhpcy5vcmlnaW5hbFZhbHVlcyk7XG4gICAgdGhpcy5pbnB1dHMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhpbnB1dHNQZXJDeWNsZSksIFsna2V5J10sIFsnYXNjJ10pO1xuICAgIGNvbnN0IHByb2R1Y3RzUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgUHJvZHVjdD4odGhpcy5jeWNsZXMsICdwcm9kdWN0cycsIHRoaXMub3JpZ2luYWxWYWx1ZXMpO1xuICAgIHRoaXMucHJvZHVjdHMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhwcm9kdWN0c1BlckN5Y2xlKSwgWydrZXknXSwgWydhc2MnXSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyOiBhbnksIGNvbnRleHQ6IGFueSkge1xuICAgIHJldHVybiBwb3BvdmVyLmlzT3BlbigpID8gcG9wb3Zlci5jbG9zZSgpIDogcG9wb3Zlci5vcGVuKGNvbnRleHQpO1xuICB9XG5cbiAgLy8gUmVjYWxjdWxhdGlvbiBsb2dzXG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZEluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAtMTtcbiAgICAvLyBmb3JjZSBhIHJlZnJlc2ggb2YgdGhlIGxvZ3NcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleCkpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEluZGV4KHsgdGFyZ2V0OiB7IHZhbHVlIH19KSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlU2VsZWN0ZWRJbmRleCgrdmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy12YXJpYWJsZSBpcy1hbGlnbi1pdGVtcy1jZW50ZXIgaXMtMiBtLTBcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1oaWRkZW4tbW9iaWxlXCI+PC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGUgJiYgKGlucHV0cy5sZW5ndGggfHwgcHJvZHVjdHMubGVuZ3RoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLWRhcmsgaXMtb3V0bGluZWQgaXMtc21hbGxcIiAoY2xpY2spPVwic2hvd0Rvd25sb2FkID0gdHJ1ZVwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRvd25sb2FkIChDU1YpPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgY29sLXNlcCBpcy1oaWRkZW4tbW9iaWxlXCI+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGVcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImxpc3RcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPlRhYmxlIHZpZXc8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcuY2hhcnRcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy5jaGFydFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNoYXJ0LWJhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+Q2hhcnQgdmlldzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCIhaXNPcmlnaW5hbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9nc1wiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LmxvZ3NcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJjYWxjdWxhdG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj5SZWNhbGN1bGF0aW9ucyBsb2dzPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicHgtMyBwYi0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCJzZWxlY3RlZFZpZXcgIT09IFZpZXcudGFibGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0cy5sZW5ndGggfHwgcHJvZHVjdHMubGVuZ3RoOyBlbHNlIGVtcHR5VGFibGVcIj5cbiAgICA8aGUtZGF0YS10YWJsZSBjbGFzcz1cIm1iLTEgaXMtc21hbGxcIiBbc21hbGxdPVwidHJ1ZVwiIFtuYlJvd3NdPVwiY3ljbGVzLmxlbmd0aFwiIG1heEhlaWdodD1cIjMyMFwiPlxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtbmFycm93IGlzLXN0cmlwZWRcIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiaGFzLWJvcmRlci1yaWdodFwiPjwvdGg+XG4gICAgICAgICAgICA8dGggKm5nSWY9XCJpbnB1dHMubGVuZ3RoXCIgW2F0dHIuY29sc3Bhbl09XCJpbnB1dHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwicHJvZHVjdHMubGVuZ3RoXCJcbiAgICAgICAgICAgID5JbnB1dHM8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0lmPVwicHJvZHVjdHMubGVuZ3RoXCIgW2F0dHIuY29sc3Bhbl09XCJwcm9kdWN0cy5sZW5ndGhcIj5Qcm9kdWN0czwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvXCI+PC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBpbnB1dCBvZiBpbnB1dHM7IGxldCBwbCA9IGxhc3RcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpbnB1dC52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJwcm9kdWN0cy5sZW5ndGggJiYgcGxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImlucHV0LnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImlucHV0LnZhbHVlLnRlcm0ubmFtZSB8IGVsbGlwc2lzOjMwIHwgY29tcG91bmRcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcm9kdWN0czsgbGV0IHBsID0gbGFzdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByb2R1Y3QudmFsdWUudGVybS5uYW1lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJwcm9kdWN0LnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInByb2R1Y3QudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6MzAgfCBjb21wb3VuZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9DeWNsZSNmdW5jdGlvbmFsVW5pdCdcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GdW5jdGlvbmFsIHVuaXQ8L2E+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBpbnB1dCBvZiBpbnB1dHM7IGxldCBwbCA9IGxhc3RcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpbnB1dC52YWx1ZS50ZXJtLnVuaXRzXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwicHJvZHVjdHMubGVuZ3RoICYmIHBsXCJcbiAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJpbnB1dC52YWx1ZS50ZXJtLnVuaXRzIHwgY29tcG91bmRcIlxuICAgICAgICAgICAgPjwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgcHJvZHVjdHM7IGxldCBwbCA9IGxhc3RcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJwcm9kdWN0LnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cInByb2R1Y3QudmFsdWUudGVybS51bml0cyB8IGNvbXBvdW5kXCJcbiAgICAgICAgICAgID48L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjeWNsZSBvZiBjeWNsZXM7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aWR0aC1hdXRvXCIgW2F0dHIudGl0bGVdPVwiZGVmYXVsdExhYmVsKGN5Y2xlKVwiPlxuICAgICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwiY3ljbGUudGVybSB8fCBjeWNsZVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1ub3dyYXAgaGFzLXRleHQtZWxsaXBzaXNcIj57e2kgKyAxfX0uIHt7ZGVmYXVsdExhYmVsKGN5Y2xlKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPGhlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZSBbY3ljbGVdPVwiY3ljbGVcIj48L2hlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZT5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaW5wdXQgb2YgaW5wdXRzOyBsZXQgcGwgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJwcm9kdWN0cy5sZW5ndGggJiYgcGxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpbnB1dC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXTsgZWxzZSBlbXB0eVZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJpZ2dlci1wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImRldGFpbHNcIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiICNwPVwibmdiUG9wb3ZlclwiIHBsYWNlbWVudD1cImxlZnRcIiBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKHAsIHsgZGF0YTogaW5wdXQudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0sIGN5Y2xlOiBjeWNsZSwga2V5OiAnaW5wdXRzJyB9KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gcG9pbnRlcj57e3Byb3BlcnR5VmFsdWUoaW5wdXQudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0udmFsdWUsIGlucHV0LnZhbHVlLnRlcm1bJ0BpZCddKSB8IHByZWNpc2lvbjozIHwgZGVmYXVsdDonLSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwibWwtMVwiIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwiaW5wdXQudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0ubm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIGtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJpcy1ub3dyYXBcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIHByb2R1Y3RzOyBsZXQgcGwgPSBsYXN0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXTsgZWxzZSBlbXB0eVZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJpZ2dlci1wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImRldGFpbHNcIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiICNwPVwibmdiUG9wb3ZlclwiIHBsYWNlbWVudD1cImxlZnRcIiBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKHAsIHsgZGF0YTogcHJvZHVjdC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXSwgY3ljbGU6IGN5Y2xlLCBrZXk6ICdwcm9kdWN0cycgfSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+e3twcm9wZXJ0eVZhbHVlKHByb2R1Y3QudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0udmFsdWUsIHByb2R1Y3QudmFsdWUudGVybVsnQGlkJ10pIHwgcHJlY2lzaW9uOjMgfCBkZWZhdWx0OictJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJtbC0xXCIgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbm9kZV09XCJwcm9kdWN0LnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLm5vZGVcIlxuICAgICAgICAgICAgICAgICAgICBrZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvaGUtZGF0YS10YWJsZT5cblxuICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZSBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZVwiPjwvaGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2U+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxoZS1jeWNsZXMtcmVzdWx0ICpuZ0lmPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmNoYXJ0XCJcbiAgW2N5Y2xlc109XCJjeWNsZXNcIlxuPjwvaGUtY3ljbGVzLXJlc3VsdD5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzICYmICFpc09yaWdpbmFsXCI+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIHB0LTIgcHgtM1wiICpuZ0lmPVwiY3ljbGVzLmxlbmd0aCA+IDFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljXCI+U2VsZWN0IGEgQ3ljbGU8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGwgaXMtZnVsbHdpZHRoXCI+XG4gICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RJbmRleCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgY3ljbGVzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cImlcIj57e2kgKyAxfX0uIHt7ZGVmYXVsdExhYmVsKHZhbHVlKX19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxoZS1jeWNsZXMtYWN0aXZpdHktbG9ncyAqbmdJZj1cInNlbGVjdGVkSW5kZXggPj0gMFwiXG4gICAgW2N5Y2xlXT1cImN5Y2xlc1tzZWxlY3RlZEluZGV4XVwiXG4gICAgW29yaWdpbmFsXT1cIm9yaWdpbmFsVmFsdWVzW3NlbGVjdGVkSW5kZXhdXCJcbiAgICBbcmVjYWxjdWxhdGVkXT1cImN5Y2xlc1tzZWxlY3RlZEluZGV4XVwiXG4gID48L2hlLWN5Y2xlcy1hY3Rpdml0eS1sb2dzPlxuPC9uZy1jb250YWluZXI+XG5cbjxoZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybSAqbmdJZj1cInNob3dEb3dubG9hZFwiXG4gIFtub2Rlc109XCJjeWNsZXNcIiBmaWxlbmFtZT1cImlucHV0cy1wcm9kdWN0cy5jc3ZcIiBbaXNVcGxvYWRdPVwiZmFsc2VcIlxuICBbaGVhZGVyS2V5c109XCJoZWFkZXJLZXlzXCJcbiAgKGNsb3NlZCk9XCJzaG93RG93bmxvYWQgPSBmYWxzZVwiXG4+PC9oZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVRhYmxlPlxuICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5cbiAgICA8c3Bhbj5ObyBhY3Rpdml0eSBkYXRhPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlWYWx1ZT5cbiAgPHNwYW4+LTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlscyBsZXQtbm9kZT1cImN5Y2xlXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LWtleT1cImtleVwiPlxuICA8cD48Yj57e2RlZmF1bHRMYWJlbChub2RlKX19PC9iPjwvcD5cbiAgPGhlLW5vZGUtdmFsdWUtZGV0YWlsc1xuICAgIFtkYXRhXT1cImRhdGFcIiBbbm9kZVR5cGVdPVwibm9kZVsnQHR5cGUnXVwiIFtkYXRhS2V5XT1cImtleVwiXG4gID48L2hlLW5vZGUtdmFsdWUtZGV0YWlscz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWFjdGl2aXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jeWNsZXMvY3ljbGVzLWFjdGl2aXR5L2N5Y2xlcy1hY3Rpdml0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1hY3Rpdml0eS9jeWNsZXMtYWN0aXZpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFnQixZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTNELElBQUssSUFJSjtBQUpELFdBQUssSUFBSTtJQUNQLHVCQUFlLENBQUE7SUFDZix1QkFBZSxDQUFBO0lBQ2YscUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKSSxJQUFJLEtBQUosSUFBSSxRQUlSO0FBRUQsTUFBTSxVQUFVLEdBQUc7SUFDakIsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsaUJBQWlCO0lBQzNELG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQjtDQUNoRyxDQUFDO0FBT0YsTUFBTSxPQUFPLHVCQUF1QjtJQUxwQztRQU9TLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUVwQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUk1QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixZQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDcEIsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFDOUIsaUJBQVksR0FBRyxZQUFZLENBQUM7UUFDNUIsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQUN4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLFdBQU0sR0FBZ0MsRUFBRSxDQUFDO1FBQ3pDLGFBQVEsR0FBNEIsRUFBRSxDQUFDO0tBMEMvQztJQXhDQyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdEI7UUFDRCxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFjLEVBQUUsSUFBa0I7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUMvQyxDQUFDO0lBRU8sTUFBTTtRQUNaLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUE0QixJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQXdCLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQVksRUFBRSxPQUFZO1FBQzdDLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELHFCQUFxQjtJQUViLG1CQUFtQixDQUFDLEtBQWE7UUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4Qiw4QkFBOEI7UUFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7O29IQTdEVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qix1TUN6QnBDLGcrUUFnTUE7MkZEdkthLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxvQkFBb0I7OEJBTXZCLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsTUFBTTtzQkFEWixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxhQUFhO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBJQ3ljbGVKU09OTEQsIElucHV0IGFzIEhlc3RpYUlucHV0LCBQcm9kdWN0IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuaW1wb3J0IHsgcHJvcGVydHlWYWx1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMvZGlzdC90ZXJtJztcblxuaW1wb3J0IHsgZ3JvdXBOb2Rlc0J5VGVybSwgSUdyb3VwZWRLZXlzLCBncm91cHBlZEtleXMgfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5pbXBvcnQgeyBiYXNlVXJsLCBkZWZhdWx0TGFiZWwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGNoYXJ0ID0gJ2NoYXJ0JyxcbiAgbG9ncyA9ICdsb2dzJ1xufVxuXG5jb25zdCBoZWFkZXJLZXlzID0gW1xuICAnY3ljbGUuaWQnLCAnY3ljbGUuQGlkJywgJ2N5Y2xlLmlucHV0cy4nLCAnY3ljbGUucHJvZHVjdHMuJyxcbiAgJ3RyYW5zZm9ybWF0aW9uLmlkJywgJ3RyYW5zZm9ybWF0aW9uLkBpZCcsICd0cmFuc2Zvcm1hdGlvbi5pbnB1dHMuJywgJ3RyYW5zZm9ybWF0aW9uLnByb2R1Y3RzLidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWN5Y2xlcy1hY3Rpdml0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtYWN0aXZpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jeWNsZXMtYWN0aXZpdHkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDeWNsZXNBY3Rpdml0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcmlnaW5hbFZhbHVlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZUNvbXBhcmUgPSB0cnVlO1xuXG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWU7XG4gIHB1YmxpYyBkZWZhdWx0TGFiZWwgPSBkZWZhdWx0TGFiZWw7XG4gIHB1YmxpYyBoZWFkZXJLZXlzID0gaGVhZGVyS2V5cztcbiAgcHVibGljIHNob3dEb3dubG9hZCA9IGZhbHNlO1xuICBwdWJsaWMgVmlldyA9IFZpZXc7XG4gIHB1YmxpYyBzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlO1xuICBwdWJsaWMgc2VsZWN0ZWRJbmRleCA9IDA7XG5cbiAgcHVibGljIGlucHV0czogSUdyb3VwZWRLZXlzPEhlc3RpYUlucHV0PltdID0gW107XG4gIHB1YmxpYyBwcm9kdWN0czogSUdyb3VwZWRLZXlzPFByb2R1Y3Q+W10gPSBbXTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCdjeWNsZXMnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRJbmRleCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIGlmICgnZGF0YVN0YXRlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJZChfaW5kZXg6IG51bWJlciwgaXRlbTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09yaWdpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLm9yaWdpbmFsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgY29uc3QgaW5wdXRzUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgSGVzdGlhSW5wdXQ+KHRoaXMuY3ljbGVzLCAnaW5wdXRzJywgdGhpcy5vcmlnaW5hbFZhbHVlcyk7XG4gICAgdGhpcy5pbnB1dHMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhpbnB1dHNQZXJDeWNsZSksIFsna2V5J10sIFsnYXNjJ10pO1xuICAgIGNvbnN0IHByb2R1Y3RzUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCwgUHJvZHVjdD4odGhpcy5jeWNsZXMsICdwcm9kdWN0cycsIHRoaXMub3JpZ2luYWxWYWx1ZXMpO1xuICAgIHRoaXMucHJvZHVjdHMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhwcm9kdWN0c1BlckN5Y2xlKSwgWydrZXknXSwgWydhc2MnXSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyOiBhbnksIGNvbnRleHQ6IGFueSkge1xuICAgIHJldHVybiBwb3BvdmVyLmlzT3BlbigpID8gcG9wb3Zlci5jbG9zZSgpIDogcG9wb3Zlci5vcGVuKGNvbnRleHQpO1xuICB9XG5cbiAgLy8gUmVjYWxjdWxhdGlvbiBsb2dzXG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZEluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAtMTtcbiAgICAvLyBmb3JjZSBhIHJlZnJlc2ggb2YgdGhlIGxvZ3NcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleCkpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEluZGV4KHsgdGFyZ2V0OiB7IHZhbHVlIH19KSB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlU2VsZWN0ZWRJbmRleCgrdmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy12YXJpYWJsZSBpcy1hbGlnbi1pdGVtcy1jZW50ZXIgaXMtMiBtLTBcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGUgJiYgKGlucHV0cy5sZW5ndGggfHwgcHJvZHVjdHMubGVuZ3RoKVwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdFwiIChjbGljayk9XCJzaG93RG93bmxvYWQgPSB0cnVlXCJcbiAgICAgICAgbmdiVG9vbHRpcD1cIkRvd25sb2FkIGFzIENTVlwiIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICA+XG4gICAgICAgIDxmYS1pY29uIGljb249XCJkb3dubG9hZFwiPjwvZmEtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGVcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImxpc3RcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPlRhYmxlIHZpZXc8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5jaGFydFwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LmNoYXJ0XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2hhcnQtYmFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj5DaGFydCB2aWV3PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cIiFpc09yaWdpbmFsXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmxvZ3NcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy5sb2dzXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2FsY3VsYXRvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+UmVjYWxjdWxhdGlvbnMgbG9nczwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInB4LTMgcGItM1wiIFtjbGFzcy5pcy1oaWRkZW5dPVwic2VsZWN0ZWRWaWV3ICE9PSBWaWV3LnRhYmxlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dHMubGVuZ3RoIHx8IHByb2R1Y3RzLmxlbmd0aDsgZWxzZSBlbXB0eVRhYmxlXCI+XG4gICAgPGhlLWRhdGEtdGFibGUgY2xhc3M9XCJtYi0xIGlzLXNtYWxsXCIgW3NtYWxsXT1cInRydWVcIiBbbmJSb3dzXT1cImN5Y2xlcy5sZW5ndGhcIiBtYXhIZWlnaHQ9XCIzMjBcIj5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGlzLWZ1bGx3aWR0aCBpcy1uYXJyb3cgaXMtc3RyaXBlZFwiPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyIGNsYXNzPVwiaGFzLXRleHQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICA8dGggKm5nSWY9XCJpbnB1dHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJpbnB1dHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwicHJvZHVjdHMubGVuZ3RoXCJcbiAgICAgICAgICAgID5JbnB1dHM8L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0lmPVwicHJvZHVjdHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJwcm9kdWN0cy5sZW5ndGhcIlxuICAgICAgICAgICAgPlByb2R1Y3RzPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0ciBjbGFzcz1cImhhcy10ZXh0LXdlaWdodC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0byBoYXMtYm9yZGVyLXJpZ2h0XCI+PC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBpbnB1dCBvZiBpbnB1dHM7IGxldCBwbCA9IGxhc3RcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpbnB1dC52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJwcm9kdWN0cy5sZW5ndGggJiYgcGxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImlucHV0LnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cImlucHV0LnZhbHVlLnRlcm0ubmFtZSB8IGVsbGlwc2lzOjMwIHwgY29tcG91bmRcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcm9kdWN0czsgbGV0IHBsID0gbGFzdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByb2R1Y3QudmFsdWUudGVybS5uYW1lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJwcm9kdWN0LnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInByb2R1Y3QudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6MzAgfCBjb21wb3VuZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwiaXMtaXRhbGljIGhhcy10ZXh0LXdlaWdodC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0byBoYXMtYm9yZGVyLXJpZ2h0XCI+PC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj5cbiAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiYmFzZVVybCArICcvc2NoZW1hL0N5Y2xlI2Z1bmN0aW9uYWxVbml0J1wiIHRhcmdldD1cIl9ibGFua1wiPkZ1bmN0aW9uYWwgdW5pdDwvYT5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGlucHV0IG9mIGlucHV0czsgbGV0IHBsID0gbGFzdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImlucHV0LnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJwcm9kdWN0cy5sZW5ndGggJiYgcGxcIlxuICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cImlucHV0LnZhbHVlLnRlcm0udW5pdHMgfCBjb21wb3VuZFwiXG4gICAgICAgICAgICA+PC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcm9kdWN0czsgbGV0IHBsID0gbGFzdFwiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByb2R1Y3QudmFsdWUudGVybS51bml0c1wiXG4gICAgICAgICAgICAgIFtpbm5lckh0bWxdPVwicHJvZHVjdC52YWx1ZS50ZXJtLnVuaXRzIHwgY29tcG91bmRcIlxuICAgICAgICAgICAgPjwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGN5Y2xlIG9mIGN5Y2xlczsgdHJhY2tCeTogdHJhY2tCeUlkOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndpZHRoLWF1dG8gaGFzLWJvcmRlci1yaWdodFwiIFthdHRyLnRpdGxlXT1cImRlZmF1bHRMYWJlbChjeWNsZSlcIj5cbiAgICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImN5Y2xlLnRlcm0gfHwgY3ljbGVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtbm93cmFwIGhhcy10ZXh0LWVsbGlwc2lzXCI+e3tpICsgMX19LiB7e2RlZmF1bHRMYWJlbChjeWNsZSl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaGFzLWJvcmRlci1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxoZS1jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmUgW2N5Y2xlXT1cImN5Y2xlXCI+PC9oZS1jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmU+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImlzLW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlucHV0IG9mIGlucHV0czsgbGV0IHBsID0gbGFzdFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwicHJvZHVjdHMubGVuZ3RoICYmIHBsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5wdXQudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV07IGVsc2UgZW1wdHlWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRyaWdnZXItcG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIiAjcD1cIm5nYlBvcG92ZXJcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUG9wb3ZlcihwLCB7IGRhdGE6IGlucHV0LnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLCBjeWNsZTogY3ljbGUsIGtleTogJ2lucHV0cycgfSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+e3twcm9wZXJ0eVZhbHVlKGlucHV0LnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLnZhbHVlLCBpbnB1dC52YWx1ZS50ZXJtWydAaWQnXSkgfCBwcmVjaXNpb246MyB8IGRlZmF1bHQ6Jy0nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZSBjbGFzcz1cIm1sLTFcIiBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtub2RlXT1cImlucHV0LnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLm5vZGVcIlxuICAgICAgICAgICAgICAgICAgICBrZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBwcm9kdWN0czsgbGV0IHBsID0gbGFzdFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByb2R1Y3QudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV07IGVsc2UgZW1wdHlWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRyaWdnZXItcG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIiAjcD1cIm5nYlBvcG92ZXJcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUG9wb3ZlcihwLCB7IGRhdGE6IHByb2R1Y3QudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0sIGN5Y2xlOiBjeWNsZSwga2V5OiAncHJvZHVjdHMnIH0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBwb2ludGVyPnt7cHJvcGVydHlWYWx1ZShwcm9kdWN0LnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLnZhbHVlLCBwcm9kdWN0LnZhbHVlLnRlcm1bJ0BpZCddKSB8IHByZWNpc2lvbjozIHwgZGVmYXVsdDonLSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwibWwtMVwiIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwicHJvZHVjdC52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS5ub2RlXCJcbiAgICAgICAgICAgICAgICAgICAga2V5PVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgPjwvaGUtYmxhbmstbm9kZS1zdGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2hlLWRhdGEtdGFibGU+XG5cbiAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGVcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48aGUtY3ljbGVzLXJlc3VsdCAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5jaGFydFwiXG4gIFtjeWNsZXNdPVwiY3ljbGVzXCJcbj48L2hlLWN5Y2xlcy1yZXN1bHQ+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcubG9ncyAmJiAhaXNPcmlnaW5hbFwiPlxuICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBwdC0yIHB4LTNcIiAqbmdJZj1cImN5Y2xlcy5sZW5ndGggPiAxXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpYyBpcy1zZWNvbmRhcnlcIj5TZWxlY3QgYSBDeWNsZTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbCBpcy1mdWxsd2lkdGggaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RJbmRleCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgY3ljbGVzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cImlcIj57e2kgKyAxfX0uIHt7ZGVmYXVsdExhYmVsKHZhbHVlKX19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxoZS1jeWNsZXMtYWN0aXZpdHktbG9ncyAqbmdJZj1cInNlbGVjdGVkSW5kZXggPj0gMFwiXG4gICAgW2N5Y2xlXT1cImN5Y2xlc1tzZWxlY3RlZEluZGV4XVwiXG4gICAgW29yaWdpbmFsXT1cIm9yaWdpbmFsVmFsdWVzW3NlbGVjdGVkSW5kZXhdXCJcbiAgICBbcmVjYWxjdWxhdGVkXT1cImN5Y2xlc1tzZWxlY3RlZEluZGV4XVwiXG4gID48L2hlLWN5Y2xlcy1hY3Rpdml0eS1sb2dzPlxuPC9uZy1jb250YWluZXI+XG5cbjxoZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybSAqbmdJZj1cInNob3dEb3dubG9hZFwiXG4gIFtub2Rlc109XCJjeWNsZXNcIiBmaWxlbmFtZT1cImlucHV0cy1wcm9kdWN0cy5jc3ZcIiBbaXNVcGxvYWRdPVwiZmFsc2VcIlxuICBbaGVhZGVyS2V5c109XCJoZWFkZXJLZXlzXCJcbiAgKGNsb3NlZCk9XCJzaG93RG93bmxvYWQgPSBmYWxzZVwiXG4+PC9oZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVRhYmxlPlxuICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5cbiAgICA8c3Bhbj5ObyBhY3Rpdml0eSBkYXRhPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlWYWx1ZT5cbiAgPHNwYW4+LTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlscyBsZXQtbm9kZT1cImN5Y2xlXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LWtleT1cImtleVwiPlxuICA8cD48Yj57e2RlZmF1bHRMYWJlbChub2RlKX19PC9iPjwvcD5cbiAgPGhlLW5vZGUtdmFsdWUtZGV0YWlsc1xuICAgIFtkYXRhXT1cImRhdGFcIiBbbm9kZVR5cGVdPVwibm9kZVsnQHR5cGUnXVwiIFtkYXRhS2V5XT1cImtleVwiXG4gID48L2hlLW5vZGUtdmFsdWUtZGV0YWlscz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -27,13 +27,13 @@ export class CyclesCompletenessComponent {
27
27
  }
28
28
  }
29
29
  CyclesCompletenessComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesCompletenessComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- CyclesCompletenessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesCompletenessComponent, selector: "he-cycles-completeness", inputs: { cycles: "cycles", dataState: "dataState" }, ngImport: i0, template: "<div class=\"p-3\" *ngIf=\"cycles.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let completeness of completenessKeys\"\n [attr.title]=\"completeness\"\n ><a [href]=\"baseUrl + '/schema/Completeness#' + completeness\" target=\"_blank\">{{keyToLabel(completeness)}}</a></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let completeness of completenessKeys\">\n <span>{{cycle.dataCompleteness[completeness] ? 'Complete' : 'Incomplete'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"cycle.dataCompleteness\"\n [key]=\"completeness\"\n ></he-blank-node-state>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showAggregated]=\"false\"></he-blank-node-state-notice>\n</div>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state"] }, { kind: "component", type: i3.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i4.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i5.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
30
+ CyclesCompletenessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CyclesCompletenessComponent, selector: "he-cycles-completeness", inputs: { cycles: "cycles", dataState: "dataState" }, ngImport: i0, template: "<div class=\"p-3\" *ngIf=\"cycles.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th *ngFor=\"let completeness of completenessKeys\"\n [attr.title]=\"completeness\"\n ><a [href]=\"baseUrl + '/schema/Completeness#' + completeness\" target=\"_blank\">{{keyToLabel(completeness)}}</a></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let completeness of completenessKeys\">\n <span>{{cycle.dataCompleteness[completeness] ? 'Complete' : 'Incomplete'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"cycle.dataCompleteness\"\n [key]=\"completeness\"\n ></he-blank-node-state>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showAggregated]=\"false\"></he-blank-node-state-notice>\n</div>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["dataState", "nodeType", "dataKey", "key", "node", "state"] }, { kind: "component", type: i3.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showAggregated", "showDeleted"] }, { kind: "component", type: i4.DataTableComponent, selector: "he-data-table", inputs: ["minHeight", "maxHeight", "nbRows", "small", "height", "width"] }, { kind: "component", type: i5.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
31
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CyclesCompletenessComponent, decorators: [{
32
32
  type: Component,
33
- args: [{ selector: 'he-cycles-completeness', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"p-3\" *ngIf=\"cycles.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr>\n <th class=\"width-auto\"></th>\n <th *ngFor=\"let completeness of completenessKeys\"\n [attr.title]=\"completeness\"\n ><a [href]=\"baseUrl + '/schema/Completeness#' + completeness\" target=\"_blank\">{{keyToLabel(completeness)}}</a></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let completeness of completenessKeys\">\n <span>{{cycle.dataCompleteness[completeness] ? 'Complete' : 'Incomplete'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"cycle.dataCompleteness\"\n [key]=\"completeness\"\n ></he-blank-node-state>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showAggregated]=\"false\"></he-blank-node-state-notice>\n</div>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n</ng-template>\n" }]
33
+ args: [{ selector: 'he-cycles-completeness', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"p-3\" *ngIf=\"cycles.length; else emptyTable\">\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" [nbRows]=\"cycles.length\" maxHeight=\"320\">\n <table class=\"table is-narrow is-striped\">\n <thead>\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th *ngFor=\"let completeness of completenessKeys\"\n [attr.title]=\"completeness\"\n ><a [href]=\"baseUrl + '/schema/Completeness#' + completeness\" target=\"_blank\">{{keyToLabel(completeness)}}</a></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let cycle of cycles; trackBy: trackById; let i = index\">\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"defaultLabel(cycle)\">\n <he-node-link [node]=\"cycle\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{defaultLabel(cycle)}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let completeness of completenessKeys\">\n <span>{{cycle.dataCompleteness[completeness] ? 'Complete' : 'Incomplete'}}</span>\n <he-blank-node-state class=\"ml-1\" [dataState]=\"dataState\"\n [node]=\"cycle.dataCompleteness\"\n [key]=\"completeness\"\n ></he-blank-node-state>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </he-data-table>\n\n <he-blank-node-state-notice [dataState]=\"dataState\" [showAggregated]=\"false\"></he-blank-node-state-notice>\n</div>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No completeness data</span>\n </div>\n</ng-template>\n" }]
34
34
  }], propDecorators: { cycles: [{
35
35
  type: Input
36
36
  }], dataState: [{
37
37
  type: Input
38
38
  }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1jb21wbGV0ZW5lc3MvY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1jb21wbGV0ZW5lc3MvY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7OztBQUU3QyxNQUFNLFVBQVUsR0FBRztJQUNqQixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGdCQUFnQjtDQUN0RSxDQUFDO0FBUUYsTUFBTSxPQUFPLDJCQUEyQjtJQU54QztRQVFTLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBSTVCLFlBQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNwQixpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUM1QixlQUFVLEdBQUcsVUFBVSxDQUFDO0tBVWhDO0lBUlEsU0FBUyxDQUFDLE1BQWMsRUFBRSxJQUFrQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwRyxDQUFDOzt3SEFqQlUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsb0hDbEJ4Qyx5cURBd0NBOzJGRHRCYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUl4QyxNQUFNO3NCQURaLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElDeWNsZUpTT05MRCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGtleVRvTGFiZWwgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgZGVmYXVsdExhYmVsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5jb25zdCBpZ25vcmVLZXlzID0gW1xuICAnQHR5cGUnLCAndHlwZScsICdhZGRlZCcsICd1cGRhdGVkJywgJ2FkZGVkVmVyc2lvbicsICd1cGRhdGVkVmVyc2lvbidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWN5Y2xlcy1jb21wbGV0ZW5lc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N5Y2xlcy1jb21wbGV0ZW5lc3MuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ3ljbGVzQ29tcGxldGVuZXNzQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgcHVibGljIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcblxuICBwdWJsaWMgYmFzZVVybCA9IGJhc2VVcmwoKTtcbiAgcHVibGljIGRlZmF1bHRMYWJlbCA9IGRlZmF1bHRMYWJlbDtcbiAgcHVibGljIGtleVRvTGFiZWwgPSBrZXlUb0xhYmVsO1xuXG4gIHB1YmxpYyB0cmFja0J5SWQoX2luZGV4OiBudW1iZXIsIGl0ZW06IElDeWNsZUpTT05MRCkge1xuICAgIHJldHVybiBpdGVtWydAaWQnXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29tcGxldGVuZXNzS2V5cygpIHtcbiAgICBjb25zdCBbY3ljbGVdID0gdGhpcy5jeWNsZXM7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGN5Y2xlPy5kYXRhQ29tcGxldGVuZXNzIHx8IHt9KS5maWx0ZXIoa2V5ID0+ICFpZ25vcmVLZXlzLmluY2x1ZGVzKGtleSkpLnNvcnQoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInAtM1wiICpuZ0lmPVwiY3ljbGVzLmxlbmd0aDsgZWxzZSBlbXB0eVRhYmxlXCI+XG4gIDxoZS1kYXRhLXRhYmxlIGNsYXNzPVwibWItMSBpcy1zbWFsbFwiIFtzbWFsbF09XCJ0cnVlXCIgW25iUm93c109XCJjeWNsZXMubGVuZ3RoXCIgbWF4SGVpZ2h0PVwiMzIwXCI+XG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtbmFycm93IGlzLXN0cmlwZWRcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29tcGxldGVuZXNzIG9mIGNvbXBsZXRlbmVzc0tleXNcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiY29tcGxldGVuZXNzXCJcbiAgICAgICAgICA+PGEgW2hyZWZdPVwiYmFzZVVybCArICcvc2NoZW1hL0NvbXBsZXRlbmVzcyMnICsgY29tcGxldGVuZXNzXCIgdGFyZ2V0PVwiX2JsYW5rXCI+e3trZXlUb0xhYmVsKGNvbXBsZXRlbmVzcyl9fTwvYT48L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY3ljbGUgb2YgY3ljbGVzOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aWR0aC1hdXRvXCIgW2F0dHIudGl0bGVdPVwiZGVmYXVsdExhYmVsKGN5Y2xlKVwiPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImN5Y2xlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1ub3dyYXAgaGFzLXRleHQtZWxsaXBzaXNcIj57e2kgKyAxfX0uIHt7ZGVmYXVsdExhYmVsKGN5Y2xlKX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJpcy1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgY29tcGxldGVuZXNzIG9mIGNvbXBsZXRlbmVzc0tleXNcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3tjeWNsZS5kYXRhQ29tcGxldGVuZXNzW2NvbXBsZXRlbmVzc10gPyAnQ29tcGxldGUnIDogJ0luY29tcGxldGUnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwibWwtMVwiIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCJcbiAgICAgICAgICAgICAgICBbbm9kZV09XCJjeWNsZS5kYXRhQ29tcGxldGVuZXNzXCJcbiAgICAgICAgICAgICAgICBba2V5XT1cImNvbXBsZXRlbmVzc1wiXG4gICAgICAgICAgICAgID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L2hlLWRhdGEtdGFibGU+XG5cbiAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCIgW3Nob3dBZ2dyZWdhdGVkXT1cImZhbHNlXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VGFibGU+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1ibG9ja1wiPlxuICAgIDxzcGFuPk5vIGNvbXBsZXRlbmVzcyBkYXRhPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1jb21wbGV0ZW5lc3MvY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1jb21wbGV0ZW5lc3MvY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7OztBQUU3QyxNQUFNLFVBQVUsR0FBRztJQUNqQixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGdCQUFnQjtDQUN0RSxDQUFDO0FBUUYsTUFBTSxPQUFPLDJCQUEyQjtJQU54QztRQVFTLFdBQU0sR0FBbUIsRUFBRSxDQUFDO1FBSTVCLFlBQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNwQixpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUM1QixlQUFVLEdBQUcsVUFBVSxDQUFDO0tBVWhDO0lBUlEsU0FBUyxDQUFDLE1BQWMsRUFBRSxJQUFrQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDNUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwRyxDQUFDOzt3SEFqQlUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsb0hDbEJ4Qyw4dURBd0NBOzJGRHRCYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUl4QyxNQUFNO3NCQURaLEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElDeWNsZUpTT05MRCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGtleVRvTGFiZWwgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgZGVmYXVsdExhYmVsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGJhc2VVcmwgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5jb25zdCBpZ25vcmVLZXlzID0gW1xuICAnQHR5cGUnLCAndHlwZScsICdhZGRlZCcsICd1cGRhdGVkJywgJ2FkZGVkVmVyc2lvbicsICd1cGRhdGVkVmVyc2lvbidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWN5Y2xlcy1jb21wbGV0ZW5lc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3ljbGVzLWNvbXBsZXRlbmVzcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N5Y2xlcy1jb21wbGV0ZW5lc3MuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ3ljbGVzQ29tcGxldGVuZXNzQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgcHVibGljIGN5Y2xlczogSUN5Y2xlSlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcblxuICBwdWJsaWMgYmFzZVVybCA9IGJhc2VVcmwoKTtcbiAgcHVibGljIGRlZmF1bHRMYWJlbCA9IGRlZmF1bHRMYWJlbDtcbiAgcHVibGljIGtleVRvTGFiZWwgPSBrZXlUb0xhYmVsO1xuXG4gIHB1YmxpYyB0cmFja0J5SWQoX2luZGV4OiBudW1iZXIsIGl0ZW06IElDeWNsZUpTT05MRCkge1xuICAgIHJldHVybiBpdGVtWydAaWQnXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29tcGxldGVuZXNzS2V5cygpIHtcbiAgICBjb25zdCBbY3ljbGVdID0gdGhpcy5jeWNsZXM7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGN5Y2xlPy5kYXRhQ29tcGxldGVuZXNzIHx8IHt9KS5maWx0ZXIoa2V5ID0+ICFpZ25vcmVLZXlzLmluY2x1ZGVzKGtleSkpLnNvcnQoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInAtM1wiICpuZ0lmPVwiY3ljbGVzLmxlbmd0aDsgZWxzZSBlbXB0eVRhYmxlXCI+XG4gIDxoZS1kYXRhLXRhYmxlIGNsYXNzPVwibWItMSBpcy1zbWFsbFwiIFtzbWFsbF09XCJ0cnVlXCIgW25iUm93c109XCJjeWNsZXMubGVuZ3RoXCIgbWF4SGVpZ2h0PVwiMzIwXCI+XG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtbmFycm93IGlzLXN0cmlwZWRcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyIGNsYXNzPVwiaGFzLXRleHQtd2VpZ2h0LXNlbWlib2xkXCI+XG4gICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0byBoYXMtYm9yZGVyLXJpZ2h0XCI+PC90aD5cbiAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbXBsZXRlbmVzcyBvZiBjb21wbGV0ZW5lc3NLZXlzXCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImNvbXBsZXRlbmVzc1wiXG4gICAgICAgICAgPjxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9Db21wbGV0ZW5lc3MjJyArIGNvbXBsZXRlbmVzc1wiIHRhcmdldD1cIl9ibGFua1wiPnt7a2V5VG9MYWJlbChjb21wbGV0ZW5lc3MpfX08L2E+PC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGN5Y2xlIG9mIGN5Y2xlczsgdHJhY2tCeTogdHJhY2tCeUlkOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwid2lkdGgtYXV0byBoYXMtYm9yZGVyLXJpZ2h0XCIgW2F0dHIudGl0bGVdPVwiZGVmYXVsdExhYmVsKGN5Y2xlKVwiPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImN5Y2xlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1ub3dyYXAgaGFzLXRleHQtZWxsaXBzaXNcIj57e2kgKyAxfX0uIHt7ZGVmYXVsdExhYmVsKGN5Y2xlKX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJpcy1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgY29tcGxldGVuZXNzIG9mIGNvbXBsZXRlbmVzc0tleXNcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3tjeWNsZS5kYXRhQ29tcGxldGVuZXNzW2NvbXBsZXRlbmVzc10gPyAnQ29tcGxldGUnIDogJ0luY29tcGxldGUnfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlIGNsYXNzPVwibWwtMVwiIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCJcbiAgICAgICAgICAgICAgICBbbm9kZV09XCJjeWNsZS5kYXRhQ29tcGxldGVuZXNzXCJcbiAgICAgICAgICAgICAgICBba2V5XT1cImNvbXBsZXRlbmVzc1wiXG4gICAgICAgICAgICAgID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L2hlLWRhdGEtdGFibGU+XG5cbiAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCIgW3Nob3dBZ2dyZWdhdGVkXT1cImZhbHNlXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VGFibGU+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1ibG9ja1wiPlxuICAgIDxzcGFuPk5vIGNvbXBsZXRlbmVzcyBkYXRhPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=