@hestia-earth/ui-components 0.24.3 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/cycles/cycles-nodes/cycles-nodes.component.d.ts +1 -0
  2. package/esm2022/cycles/cycles-nodes/cycles-nodes.component.mjs +8 -6
  3. package/esm2022/files/files-error-summary.model.mjs +1 -1
  4. package/esm2022/files/files-error.model.mjs +5 -3
  5. package/esm2022/files/files-form/files-form.component.mjs +1 -1
  6. package/esm2022/files/files-form.model.mjs +1 -1
  7. package/esm2022/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.mjs +141 -122
  8. package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +38 -13
  9. package/esm2022/node/node-logs-models/node-logs-models.component.mjs +8 -4
  10. package/esm2022/node/node-value-details/node-value-details.component.mjs +2 -1
  11. package/esm2022/schema/index.mjs +2 -1
  12. package/esm2022/schema/schema-validation.model.mjs +2 -0
  13. package/esm2022/sites/index.mjs +2 -2
  14. package/esm2022/sites/sites-nodes/sites-nodes.component.mjs +129 -0
  15. package/esm2022/sites/sites.module.mjs +4 -4
  16. package/fesm2022/hestia-earth-ui-components.mjs +1500 -1422
  17. package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
  18. package/files/files-error-summary.model.d.ts +2 -1
  19. package/files/files-error.model.d.ts +2 -20
  20. package/files/files-form.model.d.ts +1 -1
  21. package/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.d.ts +35 -17
  22. package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +16 -6
  23. package/node/node-logs-models/node-logs-models.component.d.ts +3 -0
  24. package/package.json +1 -1
  25. package/schema/index.d.ts +1 -0
  26. package/schema/schema-validation.model.d.ts +30 -0
  27. package/sites/index.d.ts +1 -1
  28. package/sites/{sites-measurements/sites-measurements.component.d.ts → sites-nodes/sites-nodes.component.d.ts} +24 -11
  29. package/sites/sites.module.d.ts +2 -2
  30. package/esm2022/sites/sites-measurements/sites-measurements.component.mjs +0 -101
@@ -160,6 +160,7 @@ export declare class CyclesNodesComponent {
160
160
  }>;
161
161
  private isOriginal;
162
162
  private originalValues;
163
+ private hasRecalculatedNodes;
163
164
  protected showSwitchToRecalculated: import("@angular/core").Signal<boolean>;
164
165
  protected timelineValues: import("@angular/core").Signal<blankNode[]>;
165
166
  private enableTimeline;
@@ -54,7 +54,6 @@ const nodeKeyViews = {
54
54
  [BlankNodesKey.products]: [View.table, View.chart, View.logs],
55
55
  [BlankNodesKey.practices]: [View.table, View.timeline, View.logs]
56
56
  };
57
- // enable
58
57
  const nodeKeyFilterTermTypes = {
59
58
  [BlankNodesKey.emissions]: [TermTermType.emission]
60
59
  };
@@ -105,7 +104,7 @@ export class CyclesNodesComponent {
105
104
  this.viewIcon = viewIcon;
106
105
  this.showView = computed(() => ({
107
106
  [View.chart]: this.selectedNodeKey() === BlankNodesKey.emissions ? this.cycles().length > 1 : true,
108
- [View.logs]: !this.isOriginal(),
107
+ [View.logs]: !this.isOriginal() && this.hasRecalculatedNodes(),
109
108
  [View.table]: true,
110
109
  [View.timeline]: this.enableTimeline()
111
110
  }));
@@ -138,7 +137,8 @@ export class CyclesNodesComponent {
138
137
  : null);
139
138
  this.isOriginal = computed(() => this._dataState() === DataState.original);
140
139
  this.originalValues = computed(() => (this.isOriginal() ? null : this.originalCycles()) || []);
141
- this.showSwitchToRecalculated = computed(() => this.isOriginal() && this.cycles().some(cycle => !cycle.aggregated));
140
+ this.hasRecalculatedNodes = computed(() => this.cycles().some(cycle => !cycle.aggregated));
141
+ this.showSwitchToRecalculated = computed(() => this.isOriginal() && this.hasRecalculatedNodes());
142
142
  this.timelineValues = computed(() => filterValuesTimeline(this.selectedCycle()?.[this.selectedNodeKey()] || []));
143
143
  this.enableTimeline = computed(() => this.timelineValues().length > 0);
144
144
  this.isNodeKeyAllowed = computed(() => nodeKeyViews[this.firstNodeKey()].includes(this.selectedView()));
@@ -155,10 +155,12 @@ export class CyclesNodesComponent {
155
155
  this.filterTerm = signal('');
156
156
  this.csvFilename = computed(() => `${this._nodeKeys().join('-')}.csv`);
157
157
  effect(() => {
158
- // make sure logs does not remain displayed when switching back to original view
159
- if (this.isOriginal() && this.selectedView() === View.logs) {
158
+ // make sure logs does not remain displayed
159
+ if ((this.isOriginal() && this.selectedView() === View.logs) || !this.views().includes(this.selectedView())) {
160
160
  this.selectedView.set(View.table);
161
161
  }
162
+ }, { allowSignalWrites: true });
163
+ effect(() => {
162
164
  if (!this.selectedNodeKey() || !this._nodeKeys().includes(this.selectedNodeKey())) {
163
165
  this.selectedNodeKey.set(this.firstNodeKey());
164
166
  this.selectedView.set(View.table);
@@ -208,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.8", ngImpor
208
210
  }], nodeKeyGroup: [{
209
211
  type: Input
210
212
  }] } });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLW5vZGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jeWNsZXMvY3ljbGVzLW5vZGVzL2N5Y2xlcy1ub2Rlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1ub2Rlcy9jeWNsZXMtbm9kZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBSUwsUUFBUSxFQUlSLFlBQVksRUFJYixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGFBQWEsRUFBYSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUzRCxJQUFLLElBS0o7QUFMRCxXQUFLLElBQUk7SUFDUCw0QkFBb0IsQ0FBQTtJQUNwQiw0QkFBb0IsQ0FBQTtJQUNwQix3Q0FBZ0MsQ0FB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S0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVTLGFBQWEsQ0FBQyxPQUFZLEVBQUUsT0FBWTtRQUNoRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxZQUFZLENBQUMsSUFBWTtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRVMsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDOzhHQXRNVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwrSUN0SGpDLDh6VUFxUEE7OzJGRC9IYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07eUdBSzNDLFNBQVM7c0JBRFosS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUs7Z0JBUUYsWUFBWTtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQge1xuICBJQ3ljbGVKU09OTEQsXG4gIElucHV0IGFzIEhlc3RpYUlucHV0LFxuICBQcm9kdWN0LFxuICBOb2RlVHlwZSxcbiAgQW5pbWFsLFxuICBFbWlzc2lvbixcbiAgUHJhY3RpY2UsXG4gIFRlcm1UZXJtVHlwZSxcbiAgRW1pc3Npb25NZXRob2RUaWVyLFxuICBUZXJtLFxuICBUcmFuc2Zvcm1hdGlvblxufSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscy9kaXN0L3Rlcm0nO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5cbmltcG9ydCB7IEJsYW5rTm9kZXNLZXksIGJsYW5rTm9kZSwgZmlsdGVyQmxhbmtOb2RlLCBtZXRob2RUaWVyT3JkZXIgfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5pbXBvcnQgeyBsb2dzS2V5IH0gZnJvbSAnLi4vY3ljbGVzLm1vZGVsJztcbmltcG9ydCB7IEhlTm9kZVN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdyb3VwTm9kZXNCeVRlcm0sIElHcm91cGVkS2V5cywgZ3JvdXBwZWRLZXlzIH0gZnJvbSAnLi4vLi4vY29tbW9uL25vZGUtdXRpbHMnO1xuaW1wb3J0IHsgYmFzZVVybCwgZGVmYXVsdExhYmVsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuZW51bSBWaWV3IHtcbiAgdGFibGUgPSAnVGFibGUgdmlldycsXG4gIGNoYXJ0ID0gJ0NoYXJ0IHZpZXcnLFxuICB0aW1lbGluZSA9ICdPcGVyYXRpb25zIFRpbWVsaW5lJyxcbiAgbG9ncyA9ICdSZWNhbGN1bGF0aW9ucyBsb2dzJ1xufVxuXG5jb25zdCB0aW1lbGluZVRlcm1UeXBlID0gW1Rlcm1UZXJtVHlwZS5vcGVyYXRpb25dO1xuXG5pbnRlcmZhY2UgSUN5Y2xlQ29uZmlnIHtcbiAgbm9kZUtleTogQmxhbmtOb2Rlc0tleTtcbn1cblxuaW50ZXJmYWNlIElDeWNsZUNvbmZpZ0FuaW1hbCBleHRlbmRzIElDeWNsZUNvbmZpZyB7XG4gIG5vZGVLZXk6IEJsYW5rTm9kZXNLZXkuYW5pbWFscztcbn1cblxuaW50ZXJmYWNlIElDeWNsZUNvbmZpZ0VtaXNzaW9uIGV4dGVuZHMgSUN5Y2xlQ29uZmlnIHtcbiAgbm9kZUtleTogQmxhbmtOb2Rlc0tleS5lbWlzc2lvbnM7XG59XG5cbmludGVyZmFjZSBJQ3ljbGVDb25maWdJbnB1dCBleHRlbmRzIElDeWNsZUNvbmZpZyB7XG4gIG5vZGVLZXk6IEJsYW5rTm9kZXNLZXkuaW5wdXRzO1xufVxuXG5pbnRlcmZhY2UgSUN5Y2xlQ29uZmlnUHJhY3RpY2UgZXh0ZW5kcyBJQ3ljbGVDb25maWcge1xuICBub2RlS2V5OiBCbGFua05vZGVzS2V5LnByYWN0aWNlcztcbn1cblxuY29uc3Qgdmlld0ljb246IHtcbiAgW3ZpZXcgaW4gVmlld106IHN0cmluZztcbn0gPSB7XG4gIFtWaWV3LmNoYXJ0XTogJ2NoYXJ0LWJhcicsXG4gIFtWaWV3LmxvZ3NdOiAnY2FsY3VsYXRvcicsXG4gIFtWaWV3LnRhYmxlXTogJ2xpc3QnLFxuICBbVmlldy50aW1lbGluZV06ICdsaXN0LWFsdCdcbn07XG5cbmNvbnN0IG5vZGVLZXlWaWV3czoge1xuICBbdHlwZSBpbiBCbGFua05vZGVzS2V5XT86IFZpZXdbXTtcbn0gPSB7XG4gIFtCbGFua05vZGVzS2V5LmFuaW1hbHNdOiBbVmlldy50YWJsZV0sXG4gIFtCbGFua05vZGVzS2V5LmVtaXNzaW9uc106IFtWaWV3LnRhYmxlLCBWaWV3LmNoYXJ0LCBWaWV3LmxvZ3NdLFxuICBbQmxhbmtOb2Rlc0tleS5pbnB1dHNdOiBbVmlldy50YWJsZSwgVmlldy5jaGFydCwgVmlldy5sb2dzXSxcbiAgW0JsYW5rTm9kZXNLZXkucHJvZHVjdHNdOiBbVmlldy50YWJsZSwgVmlldy5jaGFydCwgVmlldy5sb2dzXSxcbiAgW0JsYW5rTm9kZXNLZXkucHJhY3RpY2VzXTogW1ZpZXcudGFibGUsIFZpZXcudGltZWxpbmUsIFZpZXcubG9nc11cbn07XG5cbi8vIGVuYWJsZVxuY29uc3Qgbm9kZUtleUZpbHRlclRlcm1UeXBlczoge1xuICBbdHlwZSBpbiBCbGFua05vZGVzS2V5XT86IFRlcm1UZXJtVHlwZVtdO1xufSA9IHtcbiAgW0JsYW5rTm9kZXNLZXkuZW1pc3Npb25zXTogW1Rlcm1UZXJtVHlwZS5lbWlzc2lvbl1cbn07XG5cbmNvbnN0IGZpbHRlclZhbHVlc1RpbWVsaW5lID0gKHZhbHVlczogYmxhbmtOb2RlW10pID0+IHZhbHVlcy5maWx0ZXIocCA9PiB0aW1lbGluZVRlcm1UeXBlLmluY2x1ZGVzKHAudGVybT8udGVybVR5cGUpKTtcblxudHlwZSBncm91cGVkRW1pc3Npb25zID0ge1xuICBbbWV0aG9kVGllciBpbiBFbWlzc2lvbk1ldGhvZFRpZXJdOiBJR3JvdXBlZEtleXM8RW1pc3Npb24+W107XG59O1xuXG5leHBvcnQgZW51bSBDeWNsZU5vZGVzS2V5R3JvdXAge1xuICBhbmltYWxzID0gJ2FuaW1hbHMnLFxuICB0cmFuc2Zvcm1hdGlvbnMgPSAndHJhbnNmb3JtYXRpb25zJ1xufVxuXG50eXBlIGdyb3VwZWROb2RlID0gQW5pbWFsIHwgVHJhbnNmb3JtYXRpb247XG5cbmNvbnN0IGN5Y2xlR3JvdXBOb2RlID1cbiAgKGN5Y2xlPzogSUN5Y2xlSlNPTkxEKSA9PlxuICAobm9kZT86IGdyb3VwZWROb2RlKTogZ3JvdXBlZE5vZGUgJiB7IG5hbWU6IHN0cmluZzsgJ0BpZCc6IHN0cmluZyB9ID0+ICh7XG4gICAgLi4ubm9kZSxcbiAgICBuYW1lOiBjeWNsZT8ubmFtZSxcbiAgICAnQGlkJzogY3ljbGU/LlsnQGlkJ10gLy8gc2V0IEBpZCBzbyB3ZSBjYW4gZmV0Y2ggdGhlIGxvZ3MgZnJvbSB0aGUgQ3ljbGVcbiAgfSk7XG5cbmNvbnN0IGN5Y2xlR3JvdXBOb2RlcyA9IChncm91cEtleTogQ3ljbGVOb2Rlc0tleUdyb3VwLCBjeWNsZT86IElDeWNsZUpTT05MRCk6IGdyb3VwZWROb2RlW10gPT5cbiAgKGN5Y2xlPy5bZ3JvdXBLZXldIHx8IFtdKS5tYXAoY3ljbGVHcm91cE5vZGUoY3ljbGUpKTtcblxuY29uc3QgZmlsdGVyR3JvdXBOb2Rlc0J5VGVybSA9IChncm91cEtleTogQ3ljbGVOb2Rlc0tleUdyb3VwLCBjeWNsZXM6IElDeWNsZUpTT05MRFtdLCB0ZXJtPzogVGVybSk6IGdyb3VwZWROb2RlW10gPT5cbiAgY3ljbGVzLm1hcChjeWNsZSA9PlxuICAgIGN5Y2xlR3JvdXBOb2RlKGN5Y2xlKShcbiAgICAgICgoY3ljbGU/Lltncm91cEtleV0gYXMgZ3JvdXBlZE5vZGVbXSkgfHwgW10pLmZpbHRlcihCb29sZWFuKS5maW5kKG5vZGUgPT4gbm9kZS50ZXJtPy5uYW1lID09PSB0ZXJtPy5uYW1lKVxuICAgIClcbiAgKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtY3ljbGVzLW5vZGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N5Y2xlcy1ub2Rlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N5Y2xlcy1ub2Rlcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDeWNsZXNOb2Rlc0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBfZGF0YVN0YXRlID0gc2lnbmFsKERhdGFTdGF0ZS5vcmlnaW5hbCk7XG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhU3RhdGUodmFsdWU6IERhdGFTdGF0ZSkge1xuICAgIHRoaXMuX2RhdGFTdGF0ZS5zZXQodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIEJsYW5rTm9kZXNLZXkgPSBCbGFua05vZGVzS2V5O1xuICBwcm90ZWN0ZWQgZmlyc3ROb2RlS2V5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fbm9kZUtleXMoKT8uWzBdKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkTm9kZUtleSA9IHNpZ25hbCh1bmRlZmluZWQgYXMgQmxhbmtOb2Rlc0tleSk7XG5cbiAgcHJvdGVjdGVkIF9ub2RlS2V5cyA9IHNpZ25hbChbXSBhcyBCbGFua05vZGVzS2V5W10pO1xuICBASW5wdXQoKVxuICBzZXQgbm9kZUtleXModmFsdWU6IEJsYW5rTm9kZXNLZXlbXSkge1xuICAgIHRoaXMuX25vZGVLZXlzLnNldCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRHcm91cFRlcm0gPSBzaWduYWwodW5kZWZpbmVkIGFzIFRlcm0pO1xuICBwcm90ZWN0ZWQgX25vZGVLZXlHcm91cCA9IHNpZ25hbCh1bmRlZmluZWQgYXMgQ3ljbGVOb2Rlc0tleUdyb3VwKTtcbiAgQElucHV0KClcbiAgc2V0IG5vZGVLZXlHcm91cCh2YWx1ZTogQ3ljbGVOb2Rlc0tleUdyb3VwKSB7XG4gICAgdGhpcy5fbm9kZUtleUdyb3VwLnNldCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYmFzZVVybCA9IGJhc2VVcmwoKTtcbiAgcHJvdGVjdGVkIHByb3BlcnR5VmFsdWUgPSBwcm9wZXJ0eVZhbHVlO1xuICBwcm90ZWN0ZWQgZGVmYXVsdExhYmVsID0gZGVmYXVsdExhYmVsO1xuICBwcm90ZWN0ZWQgc2hvd0Rvd25sb2FkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGhlYWRlcktleXMgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAgJ2N5Y2xlLmlkJyxcbiAgICAnY3ljbGUuQGlkJyxcbiAgICAndHJhbnNmb3JtYXRpb24uaWQnLFxuICAgICd0cmFuc2Zvcm1hdGlvbi5AaWQnLFxuICAgIC4uLnRoaXMuX25vZGVLZXlzKCkuZmxhdE1hcChrZXkgPT4gW2BjeWNsZS4ke2tleX0uYCwgYHRyYW5zZm9ybWF0aW9uLiR7a2V5fS5gXSlcbiAgXSk7XG5cbiAgcHJvdGVjdGVkIFZpZXcgPSBWaWV3O1xuICBwcm90ZWN0ZWQgdmlld0ljb24gPSB2aWV3SWNvbjtcbiAgcHJpdmF0ZSBzaG93VmlldyA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICAoe1xuICAgICAgICBbVmlldy5jaGFydF06IHRoaXMuc2VsZWN0ZWROb2RlS2V5KCkgPT09IEJsYW5rTm9kZXNLZXkuZW1pc3Npb25zID8gdGhpcy5jeWNsZXMoKS5sZW5ndGggPiAxIDogdHJ1ZSxcbiAgICAgICAgW1ZpZXcubG9nc106ICF0aGlzLmlzT3JpZ2luYWwoKSxcbiAgICAgICAgW1ZpZXcudGFibGVdOiB0cnVlLFxuICAgICAgICBbVmlldy50aW1lbGluZV06IHRoaXMuZW5hYmxlVGltZWxpbmUoKVxuICAgICAgfSkgYXMgeyBbdmlldyBpbiBWaWV3XTogYm9vbGVhbiB9XG4gICk7XG4gIHByb3RlY3RlZCB2aWV3cyA9IGNvbXB1dGVkKCgpID0+IG5vZGVLZXlWaWV3c1t0aGlzLnNlbGVjdGVkTm9kZUtleSgpXT8uZmlsdGVyKHZpZXcgPT4gdGhpcy5zaG93VmlldygpW3ZpZXddKSA/PyBbXSk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZFZpZXcgPSBzaWduYWwoVmlldy50YWJsZSk7XG5cbiAgcHJpdmF0ZSBfYWxsTm9kZXMgPSB0b1NpZ25hbCh0aGlzLm5vZGVTdG9yZVNlcnZpY2UuZmluZCQ8SUN5Y2xlSlNPTkxEPihOb2RlVHlwZS5DeWNsZSkpO1xuICBwcml2YXRlIG9yaWdpbmFsTm9kZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9hbGxOb2RlcygpPy5tYXAoZGF0YSA9PiBkYXRhW0RhdGFTdGF0ZS5vcmlnaW5hbF0pIHx8IFtdKTtcbiAgcHJpdmF0ZSBjdXJyZW50Tm9kZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9hbGxOb2RlcygpPy5tYXAoZGF0YSA9PiBkYXRhW3RoaXMuX2RhdGFTdGF0ZSgpXSkgfHwgW10pO1xuXG4gIC8vIGNhbiBiZSBDeWNsZSBvciBUcmFuc2Zvcm1hdGlvblxuICBwcm90ZWN0ZWQgb3JpZ2luYWxDeWNsZXMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuX25vZGVLZXlHcm91cCgpXG4gICAgICA/IGZpbHRlckdyb3VwTm9kZXNCeVRlcm0odGhpcy5fbm9kZUtleUdyb3VwKCksIHRoaXMub3JpZ2luYWxOb2RlcygpLCB0aGlzLnNlbGVjdGVkR3JvdXBUZXJtKCkpXG4gICAgICA6IHRoaXMub3JpZ2luYWxOb2RlcygpXG4gICk7XG4gIHByb3RlY3RlZCBjeWNsZXMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuX25vZGVLZXlHcm91cCgpXG4gICAgICA/IGZpbHRlckdyb3VwTm9kZXNCeVRlcm0odGhpcy5fbm9kZUtleUdyb3VwKCksIHRoaXMuY3VycmVudE5vZGVzKCksIHRoaXMuc2VsZWN0ZWRHcm91cFRlcm0oKSlcbiAgICAgIDogdGhpcy5jdXJyZW50Tm9kZXMoKVxuICApO1xuXG4gIHByaXZhdGUgc2VsZWN0ZWRJbmRleCA9IHNpZ25hbCgwKTtcbiAgcHJpdmF0ZSBvZ2lyaW5hbFNlbGVjdGVkQ3ljbGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9yaWdpbmFsQ3ljbGVzKCk/Llt0aGlzLnNlbGVjdGVkSW5kZXgoKV0pO1xuICBwcml2YXRlIHNlbGVjdGVkQ3ljbGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmN5Y2xlcygpPy5bdGhpcy5zZWxlY3RlZEluZGV4KCldKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkTG9nc0tleSA9IGNvbXB1dGVkKCgpID0+IGxvZ3NLZXkodGhpcy5zZWxlY3RlZEN5Y2xlKCkpKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkT3JpZ2luYWxWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9naXJpbmFsU2VsZWN0ZWRDeWNsZSgpPy5bdGhpcy5zZWxlY3RlZE5vZGVLZXkoKV0gfHwgW10pO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRSZWNhbGN1bGF0ZWRWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkQ3ljbGUoKT8uW3RoaXMuc2VsZWN0ZWROb2RlS2V5KCldIHx8IFtdKTtcbiAgLy8gVE9ETzogaGFuZGxlIHRyYW5zZm9ybWF0aW9uIGFuZCBub24taW5kZXhlZCBub2RlcyBvbiBDRVxuICBwcm90ZWN0ZWQgc2VsZWN0ZWROb2RlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnNlbGVjdGVkQ3ljbGUoKVxuICAgICAgPyB7XG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZEN5Y2xlKCksXG4gICAgICAgICAgJ0B0eXBlJzogTm9kZVR5cGUuQ3ljbGUsXG4gICAgICAgICAgdHlwZTogTm9kZVR5cGUuQ3ljbGUsXG4gICAgICAgICAgZGF0YVN0YXRlOiBEYXRhU3RhdGUucmVjYWxjdWxhdGVkXG4gICAgICAgIH1cbiAgICAgIDogbnVsbFxuICApO1xuXG4gIHByaXZhdGUgaXNPcmlnaW5hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2RhdGFTdGF0ZSgpID09PSBEYXRhU3RhdGUub3JpZ2luYWwpO1xuICBwcml2YXRlIG9yaWdpbmFsVmFsdWVzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuaXNPcmlnaW5hbCgpID8gbnVsbCA6IHRoaXMub3JpZ2luYWxDeWNsZXMoKSkgfHwgW10pO1xuXG4gIHByb3RlY3RlZCBzaG93U3dpdGNoVG9SZWNhbGN1bGF0ZWQgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmlzT3JpZ2luYWwoKSAmJiB0aGlzLmN5Y2xlcygpLnNvbWUoY3ljbGUgPT4gIWN5Y2xlLmFnZ3JlZ2F0ZWQpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHRpbWVsaW5lVmFsdWVzID0gY29tcHV0ZWQoKCkgPT4gZmlsdGVyVmFsdWVzVGltZWxpbmUodGhpcy5zZWxlY3RlZEN5Y2xlKCk/Llt0aGlzLnNlbGVjdGVkTm9kZUtleSgpXSB8fCBbXSkpO1xuICBwcml2YXRlIGVuYWJsZVRpbWVsaW5lID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50aW1lbGluZVZhbHVlcygpLmxlbmd0aCA+IDApO1xuXG4gIHByb3RlY3RlZCBpc05vZGVLZXlBbGxvd2VkID0gY29tcHV0ZWQoKCkgPT4gbm9kZUtleVZpZXdzW3RoaXMuZmlyc3ROb2RlS2V5KCldLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRWaWV3KCkpKTtcblxuICBwcml2YXRlIGdyb3VwZWROb2RlcyA9IGNvbXB1dGVkKCgpID0+IGN5Y2xlR3JvdXBOb2Rlcyh0aGlzLl9ub2RlS2V5R3JvdXAoKSwgdGhpcy5vcmlnaW5hbE5vZGVzKCk/LlswXSkpO1xuICBwcm90ZWN0ZWQgZ3JvdXBOb2RlVGVybXMgPSBjb21wdXRlZCgoKSA9PiB1bmlxdWUodGhpcy5ncm91cGVkTm9kZXMoKS5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtKSkpO1xuICBwcm90ZWN0ZWQgaXNHcm91cE5vZGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9ub2RlS2V5R3JvdXAoKSAmJiB0aGlzLmdyb3VwZWROb2RlcygpPy5sZW5ndGggPiAwKTtcblxuICBwcm90ZWN0ZWQgaXNFbWlzc2lvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWROb2RlS2V5KCkgPT09IEJsYW5rTm9kZXNLZXkuZW1pc3Npb25zKTtcblxuICBwcm90ZWN0ZWQgZGF0YSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5pc0VtaXNzaW9uKClcbiAgICAgID8gdGhpcy5ncm91cEVtaXNzaW9ucygpXG4gICAgICA6IE9iamVjdC5mcm9tRW50cmllcyh0aGlzLl9ub2RlS2V5cygpLm1hcChub2RlS2V5ID0+IFtub2RlS2V5LCB0aGlzLmdyb3VwTm9kZXNCeUtleSh7IG5vZGVLZXkgfSldKSlcbiAgKTtcbiAgcHJvdGVjdGVkIGRhdGFLZXlzID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LmtleXModGhpcy5kYXRhKCkpKTtcblxuICBwcm90ZWN0ZWQgaGFzRGF0YSA9IGNvbXB1dGVkKCgpID0+IE9iamVjdC52YWx1ZXModGhpcy5kYXRhKCkpLmZsYXQoKS5sZW5ndGggPiAwKTtcblxuICBwcm90ZWN0ZWQgZmlsdGVyVGVybVR5cGVzID0gY29tcHV0ZWQoKCkgPT4gbm9kZUtleUZpbHRlclRlcm1UeXBlc1t0aGlzLnNlbGVjdGVkTm9kZUtleSgpXSk7XG4gIHByb3RlY3RlZCBmaWx0ZXJUZXJtID0gc2lnbmFsKCcnKTtcblxuICBwcm90ZWN0ZWQgY3N2RmlsZW5hbWUgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLl9ub2RlS2V5cygpLmpvaW4oJy0nKX0uY3N2YCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlU3RvcmVTZXJ2aWNlOiBIZU5vZGVTdG9yZVNlcnZpY2UpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSBsb2dzIGRvZXMgbm90IHJlbWFpbiBkaXNwbGF5ZWQgd2hlbiBzd2l0Y2hpbmcgYmFjayB0byBvcmlnaW5hbCB2aWV3XG4gICAgICAgIGlmICh0aGlzLmlzT3JpZ2luYWwoKSAmJiB0aGlzLnNlbGVjdGVkVmlldygpID09PSBWaWV3LmxvZ3MpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmlldy5zZXQoVmlldy50YWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkTm9kZUtleSgpIHx8ICF0aGlzLl9ub2RlS2V5cygpLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWROb2RlS2V5KCkpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVLZXkuc2V0KHRoaXMuZmlyc3ROb2RlS2V5KCkpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3LnNldChWaWV3LnRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEdyb3VwVGVybSgpIHx8ICF0aGlzLmdyb3VwTm9kZVRlcm1zKCkuaW5jbHVkZXModGhpcy5zZWxlY3RlZEdyb3VwVGVybSgpKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cFRlcm0uc2V0KHRoaXMuZ3JvdXBOb2RlVGVybXMoKVswXSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBncm91cE5vZGVzQnlLZXk8XG4gICAgVCBleHRlbmRzIElDeWNsZUNvbmZpZyxcbiAgICBSID0gVCBleHRlbmRzIElDeWNsZUNvbmZpZ0FuaW1hbFxuICAgICAgPyBBbmltYWxcbiAgICAgIDogVCBleHRlbmRzIElDeWNsZUNvbmZpZ0VtaXNzaW9uXG4gICAgICA/IEVtaXNzaW9uXG4gICAgICA6IFQgZXh0ZW5kcyBJQ3ljbGVDb25maWdJbnB1dFxuICAgICAgPyBIZXN0aWFJbnB1dFxuICAgICAgOiBUIGV4dGVuZHMgSUN5Y2xlQ29uZmlnUHJhY3RpY2VcbiAgICAgID8gUHJhY3RpY2VcbiAgICAgIDogUHJvZHVjdFxuICA+KHsgbm9kZUtleSB9OiBUKTogSUdyb3VwZWRLZXlzPFI+W10ge1xuICAgIGNvbnN0IG5vZGVzUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCB8IGdyb3VwZWROb2RlLCBSPihcbiAgICAgIHRoaXMuY3ljbGVzKCksXG4gICAgICBub2RlS2V5LFxuICAgICAgdGhpcy5vcmlnaW5hbFZhbHVlcygpLFxuICAgICAgZmlsdGVyQmxhbmtOb2RlKHRoaXMuZmlsdGVyVGVybSgpKVxuICAgICk7XG4gICAgcmV0dXJuIG9yZGVyQnkoZ3JvdXBwZWRLZXlzKG5vZGVzUGVyQ3ljbGUpLCBbJ2tleSddLCBbJ2FzYyddKTtcbiAgfVxuXG4gIHByaXZhdGUgZ3JvdXBFbWlzc2lvbnMoKSB7XG4gICAgY29uc3QgZW1pc3Npb25zUGVyQ3ljbGUgPSBncm91cE5vZGVzQnlUZXJtPElDeWNsZUpTT05MRCB8IGdyb3VwZWROb2RlLCBFbWlzc2lvbj4oXG4gICAgICB0aGlzLmN5Y2xlcygpLFxuICAgICAgQmxhbmtOb2Rlc0tleS5lbWlzc2lvbnMsXG4gICAgICB0aGlzLm9yaWdpbmFsVmFsdWVzKCksXG4gICAgICBmaWx0ZXJCbGFua05vZGUodGhpcy5maWx0ZXJUZXJtKCkpXG4gICAgKTtcbiAgICBjb25zdCB2YWx1ZXM6IElHcm91cGVkS2V5czxFbWlzc2lvbj5bXSA9IG9yZGVyQnkoZ3JvdXBwZWRLZXlzKGVtaXNzaW9uc1BlckN5Y2xlKSwgWydrZXknXSwgWydhc2MnXSk7XG4gICAgY29uc3QgbWV0aG9kVGllcnMgPSBvcmRlckJ5KFxuICAgICAgdW5pcXVlKHZhbHVlcy5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUubWV0aG9kVGllcikpLm1hcChtZXRob2RUaWVyID0+ICh7XG4gICAgICAgIG1ldGhvZFRpZXIsXG4gICAgICAgIG1ldGhvZFRpZXJPcmRlcjogbWV0aG9kVGllck9yZGVyKG1ldGhvZFRpZXIpXG4gICAgICB9KSksXG4gICAgICBbJ21ldGhvZFRpZXJPcmRlciddLFxuICAgICAgWydhc2MnXVxuICAgICk7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIG1ldGhvZFRpZXJzLm1hcCgoeyBtZXRob2RUaWVyIH0pID0+IFttZXRob2RUaWVyLCB2YWx1ZXMuZmlsdGVyKCh7IHZhbHVlIH0pID0+IHZhbHVlLm1ldGhvZFRpZXIgPT09IG1ldGhvZFRpZXIpXSlcbiAgICApIGFzIGdyb3VwZWRFbWlzc2lvbnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBJQ3ljbGVKU09OTEQpIHtcbiAgICByZXR1cm4gaXRlbVsnQGlkJ107XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlUG9wb3Zlcihwb3BvdmVyOiBhbnksIGNvbnRleHQ6IGFueSkge1xuICAgIHJldHVybiBwb3BvdmVyLmlzT3BlbigpID8gcG9wb3Zlci5jbG9zZSgpIDogcG9wb3Zlci5vcGVuKGNvbnRleHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpbHRlckJ5VGVybSh0ZXJtOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlclRlcm0uc2V0KHRlcm0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdEluZGV4KHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoK3ZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhYnMgaXMtbWItMVwiICpuZ0lmPVwiaXNHcm91cE5vZGUoKVwiPlxuICA8dWw+XG4gICAgPGxpICpuZ0Zvcj1cImxldCB0ZXJtIG9mIGdyb3VwTm9kZVRlcm1zKClcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkR3JvdXBUZXJtKCkgPT09IHRlcm1cIj5cbiAgICAgIDxhIChjbGljayk9XCJzZWxlY3RlZEdyb3VwVGVybS5zZXQodGVybSlcIj57eyB0ZXJtLm5hbWUgfX08L2E+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy12YXJpYWJsZSBpcy1hbGlnbi1pdGVtcy1jZW50ZXIgaXMtMiBpcy1tLTBcIiAqbmdJZj1cImhhc0RhdGEoKVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVmlldygpID09PSBWaWV3LnRhYmxlXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLWdob3N0XCJcbiAgICAgICAgKGNsaWNrKT1cInNob3dEb3dubG9hZCA9IHRydWVcIlxuICAgICAgICBuZ2JUb29sdGlwPVwiRG93bmxvYWQgYXMgQ1NWXCJcbiAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCI+XG4gICAgICAgIDxmYS1pY29uIGljb249XCJkb3dubG9hZFwiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIiAqbmdJZj1cInNlbGVjdGVkVmlldygpID09PSBWaWV3LnRhYmxlXCI+XG4gICAgPGhlLXNlYXJjaC1leHRlbmRcbiAgICAgIGNsYXNzPVwiaXMtc2Vjb25kYXJ5IGlzLXNtYWxsXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIHRlcm1zIGJ5IG5hbWVcIlxuICAgICAgKHNlYXJjaCk9XCJmaWx0ZXJCeVRlcm0oJGV2ZW50KVwiPjwvaGUtc2VhcmNoLWV4dGVuZD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCIgKm5nSWY9XCJ2aWV3cygpPy5sZW5ndGggPiAxXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nRm9yPVwibGV0IHZpZXcgb2Ygdmlld3MoKVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkVmlldygpID09PSB2aWV3XCIgKGNsaWNrKT1cInNlbGVjdGVkVmlldy5zZXQodmlldylcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cInZpZXdJY29uW3ZpZXddXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLWhpZGRlbi1tb2JpbGVcIj57eyB2aWV3IH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNOb2RlS2V5QWxsb3dlZCgpXCI+XG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInNlbGVjdGVkVmlldygpXCI+XG4gICAgPGRpdiBjbGFzcz1cImlzLXB4LTMgaXMtcGItM1wiICpuZ1N3aXRjaENhc2U9XCJWaWV3LnRhYmxlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzRGF0YSgpOyBlbHNlIGVtcHR5VGFibGVcIj5cbiAgICAgICAgPGhlLWRhdGEtdGFibGUgY2xhc3M9XCJtYi0xIGlzLXNtYWxsXCIgW3NtYWxsXT1cInRydWVcIiBtYXhIZWlnaHQ9XCIzMjBcIj5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBpcy1mdWxsd2lkdGggaXMtbmFycm93IGlzLXN0cmlwZWRcIj5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiaGFzLXRleHQtd2VpZ2h0LWJvbGRcIiAqbmdJZj1cImRhdGFLZXlzKCkubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj48L3RoPlxuICAgICAgICAgICAgICAgIDx0aCBbY2xhc3MuaXMtaGlkZGVuXT1cImlzR3JvdXBOb2RlKClcIj48L3RoPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YUtleSBvZiBkYXRhS2V5cygpOyBsZXQgZGF0YUtleUxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YSgpW2RhdGFLZXldPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoIFthdHRyLmNvbHNwYW5dPVwiZGF0YSgpW2RhdGFLZXldLmxlbmd0aFwiIFtjbGFzcy5oYXMtYm9yZGVyLXJpZ2h0XT1cIiFkYXRhS2V5TGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRhdGFLZXkgfCBrZXlUb0xhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiaGFzLXRleHQtd2VpZ2h0LXNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0byBoYXMtYm9yZGVyLXJpZ2h0XCI+PC90aD5cbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCIgW2NsYXNzLmlzLWhpZGRlbl09XCJpc0dyb3VwTm9kZSgpXCI+PC90aD5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGFLZXkgb2YgZGF0YUtleXMoKTsgbGV0IGRhdGFLZXlMYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBub2RlIG9mIGRhdGEoKVtkYXRhS2V5XTsgbGV0IG5vZGVMYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIm5vZGUudmFsdWUudGVybS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwiZGF0YUtleXMoKS5sZW5ndGggPiAxICYmICFkYXRhS2V5TGFzdCAmJiBub2RlTGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cIm5vZGUudmFsdWUudGVybVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwibm9kZS52YWx1ZS50ZXJtLm5hbWUgfCBlbGxpcHNpczogMzAgfCBjb21wb3VuZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJpcy1pdGFsaWMgaGFzLXRleHQtd2VpZ2h0LXNlbWlib2xkXCI+XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0byBoYXMtYm9yZGVyLXJpZ2h0XCI+PC90aD5cbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCIgW2NsYXNzLmlzLWhpZGRlbl09XCJpc0dyb3VwTm9kZSgpXCI+XG4gICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJiYXNlVXJsICsgJy9zY2hlbWEvQ3ljbGUjZnVuY3Rpb25hbFVuaXQnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+RnVuY3Rpb25hbCB1bml0PC9hPlxuICAgICAgICAgICAgICAgIDwvdGg+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhS2V5IG9mIGRhdGFLZXlzKCk7IGxldCBkYXRhS2V5TGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbm9kZSBvZiBkYXRhKClbZGF0YUtleV07IGxldCBub2RlTGFzdCA9IGxhc3RcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJub2RlLnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJkYXRhS2V5cygpLmxlbmd0aCA+IDEgJiYgIWRhdGFLZXlMYXN0ICYmIG5vZGVMYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwibm9kZS52YWx1ZS50ZXJtLnVuaXRzIHwgY29tcG91bmRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxoZS10ZXJtcy11bml0cy1kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrIGlzLW1sLTJcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0ZXJtXT1cIm5vZGUudmFsdWUudGVybVwiPjwvaGUtdGVybXMtdW5pdHMtZGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY3ljbGUgb2YgY3ljbGVzKCk7IHRyYWNrQnk6IHRyYWNrQnlJZDsgbGV0IGN5Y2xlSW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndpZHRoLWF1dG8gaGFzLWJvcmRlci1yaWdodFwiIFthdHRyLnRpdGxlXT1cImRlZmF1bHRMYWJlbChjeWNsZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJjeWNsZS50ZXJtIHx8IGN5Y2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY3ljbGVJbmRleCArIDEgfX0uIHt7IGRlZmF1bHRMYWJlbChjeWNsZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIiBbY2xhc3MuaXMtaGlkZGVuXT1cImlzR3JvdXBOb2RlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGhlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZSBbY3ljbGVdPVwiY3ljbGVzKClbMF1cIj48L2hlLWN5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZT5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGFLZXkgb2YgZGF0YUtleXMoKTsgbGV0IGRhdGFLZXlMYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlzLW5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2YgZGF0YSgpW2RhdGFLZXldOyBsZXQgbm9kZUxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJkYXRhS2V5cygpLmxlbmd0aCA+IDEgJiYgIWRhdGFLZXlMYXN0ICYmIG5vZGVMYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm9kZS52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXTsgZWxzZSBlbXB0eVZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJpZ2dlci1wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImRldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiaXMtbmFycm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNwPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVQb3BvdmVyKHAsIHsgZGF0YTogbm9kZS52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXSwgY3ljbGU6IGN5Y2xlLCBrZXk6IGRhdGFLZXkgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcG9pbnRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVZhbHVlKG5vZGUudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0udmFsdWUsIG5vZGUudmFsdWUudGVybVsnQGlkJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHByZWNpc2lvbjogM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZWZhdWx0OiAnLSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZS1ibGFuay1ub2RlLXN0YXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU3RhdGVdPVwiX2RhdGFTdGF0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwibm9kZS52YWx1ZS52YWx1ZXNbY3ljbGVbJ0BpZCddXS5ub2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PVwidmFsdWVcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvaGUtZGF0YS10YWJsZT5cblxuICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UgW2RhdGFTdGF0ZV09XCJfZGF0YVN0YXRlKClcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJWaWV3LmNoYXJ0XCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaXJzdE5vZGVLZXkoKVwiPlxuICAgICAgICA8aGUtY3ljbGVzLXJlc3VsdCAqbmdTd2l0Y2hDYXNlPVwiQmxhbmtOb2Rlc0tleS5pbnB1dHNcIiBbY3ljbGVzXT1cImN5Y2xlcygpXCI+PC9oZS1jeWNsZXMtcmVzdWx0PlxuICAgICAgICA8aGUtY3ljbGVzLWVtaXNzaW9ucy1jaGFydFxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJCbGFua05vZGVzS2V5LmVtaXNzaW9uc1wiXG4gICAgICAgICAgW2N5Y2xlc109XCJjeWNsZXMoKVwiPjwvaGUtY3ljbGVzLWVtaXNzaW9ucy1jaGFydD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlldy50aW1lbGluZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdEN5Y2xlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpcy1weC0zIGlzLXBiLTNcIj5cbiAgICAgICAgPGhlLWN5Y2xlcy1ub2Rlcy10aW1lbGluZVxuICAgICAgICAgIFtyZWNhbGN1bGF0ZWRWYWx1ZXNdPVwidGltZWxpbmVWYWx1ZXMoKVwiXG4gICAgICAgICAgW2RhdGFTdGF0ZV09XCJfZGF0YVN0YXRlKClcIj48L2hlLWN5Y2xlcy1ub2Rlcy10aW1lbGluZT5cblxuICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UgW2RhdGFTdGF0ZV09XCJfZGF0YVN0YXRlKClcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJWaWV3LmxvZ3NcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RDeWNsZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidGFicyBpcy1tYi0yXCIgKm5nSWY9XCJfbm9kZUtleXMoKS5sZW5ndGggPiAxXCI+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IG5vZGVLZXkgb2YgX25vZGVLZXlzKClcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkTm9kZUtleSgpID09PSBub2RlS2V5XCI+XG4gICAgICAgICAgICA8YSAoY2xpY2spPVwic2VsZWN0ZWROb2RlS2V5LnNldChub2RlS2V5KVwiPnt7IG5vZGVLZXkgfCBrZXlUb0xhYmVsIH19PC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGhlLW5vZGUtbG9ncy1tb2RlbHNcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RlZE5vZGUoKVwiXG4gICAgICAgIFtub2RlXT1cInNlbGVjdGVkTm9kZSgpXCJcbiAgICAgICAgW25vZGVLZXldPVwic2VsZWN0ZWROb2RlS2V5KClcIlxuICAgICAgICBbbG9nc0tleV09XCJzZWxlY3RlZExvZ3NLZXkoKVwiXG4gICAgICAgIFtvcmlnaW5hbFZhbHVlc109XCJzZWxlY3RlZE9yaWdpbmFsVmFsdWVzKClcIlxuICAgICAgICBbcmVjYWxjdWxhdGVkVmFsdWVzXT1cInNlbGVjdGVkUmVjYWxjdWxhdGVkVmFsdWVzKClcIlxuICAgICAgICBbZmlsdGVyVGVybVR5cGVzXT1cImZpbHRlclRlcm1UeXBlcygpXCI+PC9oZS1ub2RlLWxvZ3MtbW9kZWxzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48aGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm1cbiAgKm5nSWY9XCJzaG93RG93bmxvYWRcIlxuICBbbm9kZXNdPVwiY3ljbGVzKClcIlxuICBbZmlsZW5hbWVdPVwiY3N2RmlsZW5hbWUoKVwiXG4gIFtpc1VwbG9hZF09XCJmYWxzZVwiXG4gIFtoZWFkZXJLZXlzXT1cImhlYWRlcktleXMoKVwiXG4gIChjbG9zZWQpPVwic2hvd0Rvd25sb2FkID0gZmFsc2VcIj48L2hlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VGFibGU+XG4gIDxkaXYgY2xhc3M9XCJpcy1wdC0zIGhhcy10ZXh0LWNlbnRlcmVkXCI+XG4gICAgPHNwYW4+Tm8gZGF0YSBhdmFpbGFibGU8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJpcy1wbC0xXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhZmlsdGVyVGVybSgpXCI+bWF0Y2hpbmcgeW91ciBzZWFyY2ggY3JpdGVyaWE8L3NwYW4+XG4gICAgPHNwYW4+Ljwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cInNob3dTd2l0Y2hUb1JlY2FsY3VsYXRlZCgpXCI+XG4gICAgICBTd2l0Y2ggdG9cbiAgICAgIDxjb2RlPnJlY2FsY3VsYXRlZDwvY29kZT5cbiAgICAgIHZlcnNpb24uXG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlWYWx1ZT5cbiAgPHNwYW4+LTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlscyBsZXQtbm9kZT1cImN5Y2xlXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LWtleT1cImtleVwiPlxuICA8cD5cbiAgICA8Yj57eyBkZWZhdWx0TGFiZWwobm9kZSkgfX08L2I+XG4gIDwvcD5cbiAgPGhlLW5vZGUtdmFsdWUtZGV0YWlsc1xuICAgIFtkYXRhXT1cImRhdGFcIlxuICAgIFtkYXRhU3RhdGVdPVwiX2RhdGFTdGF0ZSgpXCJcbiAgICBbbm9kZVR5cGVdPVwibm9kZVsnQHR5cGUnXVwiXG4gICAgW2RhdGFLZXldPVwia2V5XCI+PC9oZS1ub2RlLXZhbHVlLWRldGFpbHM+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlbGVjdEN5Y2xlPlxuICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBpcy1weS0yIGlzLXB4LTNcIiAqbmdJZj1cImN5Y2xlcygpLmxlbmd0aCA+IDFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljIGlzLXNlY29uZGFyeVwiPlNlbGVjdCBhIEN5Y2xlPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInNlbGVjdEluZGV4KCRldmVudClcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBjeWNsZXMoKTsgbGV0IGN5Y2xlSW5kZXggPSBpbmRleFwiIFt2YWx1ZV09XCJjeWNsZUluZGV4XCI+XG4gICAgICAgICAgICB7eyBjeWNsZUluZGV4ICsgMSB9fS4ge3sgZGVmYXVsdExhYmVsKHZhbHVlKSB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ljbGVzLW5vZGVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jeWNsZXMvY3ljbGVzLW5vZGVzL2N5Y2xlcy1ub2Rlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY3ljbGVzL2N5Y2xlcy1ub2Rlcy9jeWNsZXMtbm9kZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBSUwsUUFBUSxFQUlSLFlBQVksRUFJYixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGFBQWEsRUFBYSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUzRCxJQUFLLElBS0o7QUFMRCxXQUFLLElBQUk7SUFDUCw0QkFBb0IsQ0FBQTtJQUNwQiw0QkFBb0IsQ0FBQTtJQUNwQix3Q0FBZ0MsQ0FB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QUFXLENBQ3ZCLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQzdGLENBQUM7SUFDeEIsQ0FBQztJQUVTLFNBQVMsQ0FBQyxNQUFjLEVBQUUsSUFBa0I7UUFDcEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVTLGFBQWEsQ0FBQyxPQUFZLEVBQUUsT0FBWTtRQUNoRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxZQUFZLENBQUMsSUFBWTtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRVMsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDOzhHQTNNVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwrSUNySGpDLDh6VUFxUEE7OzJGRGhJYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07eUdBSzNDLFNBQVM7c0JBRFosS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUs7Z0JBUUYsWUFBWTtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQge1xuICBJQ3ljbGVKU09OTEQsXG4gIElucHV0IGFzIEhlc3RpYUlucHV0LFxuICBQcm9kdWN0LFxuICBOb2RlVHlwZSxcbiAgQW5pbWFsLFxuICBFbWlzc2lvbixcbiAgUHJhY3RpY2UsXG4gIFRlcm1UZXJtVHlwZSxcbiAgRW1pc3Npb25NZXRob2RUaWVyLFxuICBUZXJtLFxuICBUcmFuc2Zvcm1hdGlvblxufSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscy9kaXN0L3Rlcm0nO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5cbmltcG9ydCB7IEJsYW5rTm9kZXNLZXksIGJsYW5rTm9kZSwgZmlsdGVyQmxhbmtOb2RlLCBtZXRob2RUaWVyT3JkZXIgfSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5pbXBvcnQgeyBsb2dzS2V5IH0gZnJvbSAnLi4vY3ljbGVzLm1vZGVsJztcbmltcG9ydCB7IEhlTm9kZVN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdyb3VwTm9kZXNCeVRlcm0sIElHcm91cGVkS2V5cywgZ3JvdXBwZWRLZXlzIH0gZnJvbSAnLi4vLi4vY29tbW9uL25vZGUtdXRpbHMnO1xuaW1wb3J0IHsgYmFzZVVybCwgZGVmYXVsdExhYmVsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuZW51bSBWaWV3IHtcbiAgdGFibGUgPSAnVGFibGUgdmlldycsXG4gIGNoYXJ0ID0gJ0NoYXJ0IHZpZXcnLFxuICB0aW1lbGluZSA9ICdPcGVyYXRpb25zIFRpbWVsaW5lJyxcbiAgbG9ncyA9ICdSZWNhbGN1bGF0aW9ucyBsb2dzJ1xufVxuXG5jb25zdCB0aW1lbGluZVRlcm1UeXBlID0gW1Rlcm1UZXJtVHlwZS5vcGVyYXRpb25dO1xuXG5pbnRlcmZhY2UgSUN5Y2xlQ29uZmlnIHtcbiAgbm9kZUtleTogQmxhbmtOb2Rlc0tleTtcbn1cblxuaW50ZXJmYWNlIElDeWNsZUNvbmZpZ0FuaW1hbCBleHRlbmRzIElDeWNsZUNvbmZpZyB7XG4gIG5vZGVLZXk6IEJsYW5rTm9kZXNLZXkuYW5pbWFscztcbn1cblxuaW50ZXJmYWNlIElDeWNsZUNvbmZpZ0VtaXNzaW9uIGV4dGVuZHMgSUN5Y2xlQ29uZmlnIHtcbiAgbm9kZUtleTogQmxhbmtOb2Rlc0tleS5lbWlzc2lvbnM7XG59XG5cbmludGVyZmFjZSBJQ3ljbGVDb25maWdJbnB1dCBleHRlbmRzIElDeWNsZUNvbmZpZyB7XG4gIG5vZGVLZXk6IEJsYW5rTm9kZXNLZXkuaW5wdXRzO1xufVxuXG5pbnRlcmZhY2UgSUN5Y2xlQ29uZmlnUHJhY3RpY2UgZXh0ZW5kcyBJQ3ljbGVDb25maWcge1xuICBub2RlS2V5OiBCbGFua05vZGVzS2V5LnByYWN0aWNlcztcbn1cblxuY29uc3Qgdmlld0ljb246IHtcbiAgW3ZpZXcgaW4gVmlld106IHN0cmluZztcbn0gPSB7XG4gIFtWaWV3LmNoYXJ0XTogJ2NoYXJ0LWJhcicsXG4gIFtWaWV3LmxvZ3NdOiAnY2FsY3VsYXRvcicsXG4gIFtWaWV3LnRhYmxlXTogJ2xpc3QnLFxuICBbVmlldy50aW1lbGluZV06ICdsaXN0LWFsdCdcbn07XG5cbmNvbnN0IG5vZGVLZXlWaWV3czoge1xuICBbdHlwZSBpbiBCbGFua05vZGVzS2V5XT86IFZpZXdbXTtcbn0gPSB7XG4gIFtCbGFua05vZGVzS2V5LmFuaW1hbHNdOiBbVmlldy50YWJsZV0sXG4gIFtCbGFua05vZGVzS2V5LmVtaXNzaW9uc106IFtWaWV3LnRhYmxlLCBWaWV3LmNoYXJ0LCBWaWV3LmxvZ3NdLFxuICBbQmxhbmtOb2Rlc0tleS5pbnB1dHNdOiBbVmlldy50YWJsZSwgVmlldy5jaGFydCwgVmlldy5sb2dzXSxcbiAgW0JsYW5rTm9kZXNLZXkucHJvZHVjdHNdOiBbVmlldy50YWJsZSwgVmlldy5jaGFydCwgVmlldy5sb2dzXSxcbiAgW0JsYW5rTm9kZXNLZXkucHJhY3RpY2VzXTogW1ZpZXcudGFibGUsIFZpZXcudGltZWxpbmUsIFZpZXcubG9nc11cbn07XG5cbmNvbnN0IG5vZGVLZXlGaWx0ZXJUZXJtVHlwZXM6IHtcbiAgW3R5cGUgaW4gQmxhbmtOb2Rlc0tleV0/OiBUZXJtVGVybVR5cGVbXTtcbn0gPSB7XG4gIFtCbGFua05vZGVzS2V5LmVtaXNzaW9uc106IFtUZXJtVGVybVR5cGUuZW1pc3Npb25dXG59O1xuXG5jb25zdCBmaWx0ZXJWYWx1ZXNUaW1lbGluZSA9ICh2YWx1ZXM6IGJsYW5rTm9kZVtdKSA9PiB2YWx1ZXMuZmlsdGVyKHAgPT4gdGltZWxpbmVUZXJtVHlwZS5pbmNsdWRlcyhwLnRlcm0/LnRlcm1UeXBlKSk7XG5cbnR5cGUgZ3JvdXBlZEVtaXNzaW9ucyA9IHtcbiAgW21ldGhvZFRpZXIgaW4gRW1pc3Npb25NZXRob2RUaWVyXTogSUdyb3VwZWRLZXlzPEVtaXNzaW9uPltdO1xufTtcblxuZXhwb3J0IGVudW0gQ3ljbGVOb2Rlc0tleUdyb3VwIHtcbiAgYW5pbWFscyA9ICdhbmltYWxzJyxcbiAgdHJhbnNmb3JtYXRpb25zID0gJ3RyYW5zZm9ybWF0aW9ucydcbn1cblxudHlwZSBncm91cGVkTm9kZSA9IEFuaW1hbCB8IFRyYW5zZm9ybWF0aW9uO1xuXG5jb25zdCBjeWNsZUdyb3VwTm9kZSA9XG4gIChjeWNsZT86IElDeWNsZUpTT05MRCkgPT5cbiAgKG5vZGU/OiBncm91cGVkTm9kZSk6IGdyb3VwZWROb2RlICYgeyBuYW1lOiBzdHJpbmc7ICdAaWQnOiBzdHJpbmcgfSA9PiAoe1xuICAgIC4uLm5vZGUsXG4gICAgbmFtZTogY3ljbGU/Lm5hbWUsXG4gICAgJ0BpZCc6IGN5Y2xlPy5bJ0BpZCddIC8vIHNldCBAaWQgc28gd2UgY2FuIGZldGNoIHRoZSBsb2dzIGZyb20gdGhlIEN5Y2xlXG4gIH0pO1xuXG5jb25zdCBjeWNsZUdyb3VwTm9kZXMgPSAoZ3JvdXBLZXk6IEN5Y2xlTm9kZXNLZXlHcm91cCwgY3ljbGU/OiBJQ3ljbGVKU09OTEQpOiBncm91cGVkTm9kZVtdID0+XG4gIChjeWNsZT8uW2dyb3VwS2V5XSB8fCBbXSkubWFwKGN5Y2xlR3JvdXBOb2RlKGN5Y2xlKSk7XG5cbmNvbnN0IGZpbHRlckdyb3VwTm9kZXNCeVRlcm0gPSAoZ3JvdXBLZXk6IEN5Y2xlTm9kZXNLZXlHcm91cCwgY3ljbGVzOiBJQ3ljbGVKU09OTERbXSwgdGVybT86IFRlcm0pOiBncm91cGVkTm9kZVtdID0+XG4gIGN5Y2xlcy5tYXAoY3ljbGUgPT5cbiAgICBjeWNsZUdyb3VwTm9kZShjeWNsZSkoXG4gICAgICAoKGN5Y2xlPy5bZ3JvdXBLZXldIGFzIGdyb3VwZWROb2RlW10pIHx8IFtdKS5maWx0ZXIoQm9vbGVhbikuZmluZChub2RlID0+IG5vZGUudGVybT8ubmFtZSA9PT0gdGVybT8ubmFtZSlcbiAgICApXG4gICk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWN5Y2xlcy1ub2RlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jeWNsZXMtbm9kZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jeWNsZXMtbm9kZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ3ljbGVzTm9kZXNDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgX2RhdGFTdGF0ZSA9IHNpZ25hbChEYXRhU3RhdGUub3JpZ2luYWwpO1xuICBASW5wdXQoKVxuICBzZXQgZGF0YVN0YXRlKHZhbHVlOiBEYXRhU3RhdGUpIHtcbiAgICB0aGlzLl9kYXRhU3RhdGUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBCbGFua05vZGVzS2V5ID0gQmxhbmtOb2Rlc0tleTtcbiAgcHJvdGVjdGVkIGZpcnN0Tm9kZUtleSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX25vZGVLZXlzKCk/LlswXSk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZE5vZGVLZXkgPSBzaWduYWwodW5kZWZpbmVkIGFzIEJsYW5rTm9kZXNLZXkpO1xuXG4gIHByb3RlY3RlZCBfbm9kZUtleXMgPSBzaWduYWwoW10gYXMgQmxhbmtOb2Rlc0tleVtdKTtcbiAgQElucHV0KClcbiAgc2V0IG5vZGVLZXlzKHZhbHVlOiBCbGFua05vZGVzS2V5W10pIHtcbiAgICB0aGlzLl9ub2RlS2V5cy5zZXQodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkR3JvdXBUZXJtID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcbiAgcHJvdGVjdGVkIF9ub2RlS2V5R3JvdXAgPSBzaWduYWwodW5kZWZpbmVkIGFzIEN5Y2xlTm9kZXNLZXlHcm91cCk7XG4gIEBJbnB1dCgpXG4gIHNldCBub2RlS2V5R3JvdXAodmFsdWU6IEN5Y2xlTm9kZXNLZXlHcm91cCkge1xuICAgIHRoaXMuX25vZGVLZXlHcm91cC5zZXQodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJhc2VVcmwgPSBiYXNlVXJsKCk7XG4gIHByb3RlY3RlZCBwcm9wZXJ0eVZhbHVlID0gcHJvcGVydHlWYWx1ZTtcbiAgcHJvdGVjdGVkIGRlZmF1bHRMYWJlbCA9IGRlZmF1bHRMYWJlbDtcbiAgcHJvdGVjdGVkIHNob3dEb3dubG9hZCA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBoZWFkZXJLZXlzID0gY29tcHV0ZWQoKCkgPT4gW1xuICAgICdjeWNsZS5pZCcsXG4gICAgJ2N5Y2xlLkBpZCcsXG4gICAgJ3RyYW5zZm9ybWF0aW9uLmlkJyxcbiAgICAndHJhbnNmb3JtYXRpb24uQGlkJyxcbiAgICAuLi50aGlzLl9ub2RlS2V5cygpLmZsYXRNYXAoa2V5ID0+IFtgY3ljbGUuJHtrZXl9LmAsIGB0cmFuc2Zvcm1hdGlvbi4ke2tleX0uYF0pXG4gIF0pO1xuXG4gIHByb3RlY3RlZCBWaWV3ID0gVmlldztcbiAgcHJvdGVjdGVkIHZpZXdJY29uID0gdmlld0ljb247XG4gIHByaXZhdGUgc2hvd1ZpZXcgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHtcbiAgICAgICAgW1ZpZXcuY2hhcnRdOiB0aGlzLnNlbGVjdGVkTm9kZUtleSgpID09PSBCbGFua05vZGVzS2V5LmVtaXNzaW9ucyA/IHRoaXMuY3ljbGVzKCkubGVuZ3RoID4gMSA6IHRydWUsXG4gICAgICAgIFtWaWV3LmxvZ3NdOiAhdGhpcy5pc09yaWdpbmFsKCkgJiYgdGhpcy5oYXNSZWNhbGN1bGF0ZWROb2RlcygpLFxuICAgICAgICBbVmlldy50YWJsZV06IHRydWUsXG4gICAgICAgIFtWaWV3LnRpbWVsaW5lXTogdGhpcy5lbmFibGVUaW1lbGluZSgpXG4gICAgICB9KSBhcyB7IFt2aWV3IGluIFZpZXddOiBib29sZWFuIH1cbiAgKTtcbiAgcHJvdGVjdGVkIHZpZXdzID0gY29tcHV0ZWQoKCkgPT4gbm9kZUtleVZpZXdzW3RoaXMuc2VsZWN0ZWROb2RlS2V5KCldPy5maWx0ZXIodmlldyA9PiB0aGlzLnNob3dWaWV3KClbdmlld10pID8/IFtdKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkVmlldyA9IHNpZ25hbChWaWV3LnRhYmxlKTtcblxuICBwcml2YXRlIF9hbGxOb2RlcyA9IHRvU2lnbmFsKHRoaXMubm9kZVN0b3JlU2VydmljZS5maW5kJDxJQ3ljbGVKU09OTEQ+KE5vZGVUeXBlLkN5Y2xlKSk7XG4gIHByaXZhdGUgb3JpZ2luYWxOb2RlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2FsbE5vZGVzKCk/Lm1hcChkYXRhID0+IGRhdGFbRGF0YVN0YXRlLm9yaWdpbmFsXSkgfHwgW10pO1xuICBwcml2YXRlIGN1cnJlbnROb2RlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2FsbE5vZGVzKCk/Lm1hcChkYXRhID0+IGRhdGFbdGhpcy5fZGF0YVN0YXRlKCldKSB8fCBbXSk7XG5cbiAgLy8gY2FuIGJlIEN5Y2xlIG9yIFRyYW5zZm9ybWF0aW9uXG4gIHByb3RlY3RlZCBvcmlnaW5hbEN5Y2xlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5fbm9kZUtleUdyb3VwKClcbiAgICAgID8gZmlsdGVyR3JvdXBOb2Rlc0J5VGVybSh0aGlzLl9ub2RlS2V5R3JvdXAoKSwgdGhpcy5vcmlnaW5hbE5vZGVzKCksIHRoaXMuc2VsZWN0ZWRHcm91cFRlcm0oKSlcbiAgICAgIDogdGhpcy5vcmlnaW5hbE5vZGVzKClcbiAgKTtcbiAgcHJvdGVjdGVkIGN5Y2xlcyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5fbm9kZUtleUdyb3VwKClcbiAgICAgID8gZmlsdGVyR3JvdXBOb2Rlc0J5VGVybSh0aGlzLl9ub2RlS2V5R3JvdXAoKSwgdGhpcy5jdXJyZW50Tm9kZXMoKSwgdGhpcy5zZWxlY3RlZEdyb3VwVGVybSgpKVxuICAgICAgOiB0aGlzLmN1cnJlbnROb2RlcygpXG4gICk7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZEluZGV4ID0gc2lnbmFsKDApO1xuICBwcml2YXRlIG9naXJpbmFsU2VsZWN0ZWRDeWNsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3JpZ2luYWxDeWNsZXMoKT8uW3RoaXMuc2VsZWN0ZWRJbmRleCgpXSk7XG4gIHByaXZhdGUgc2VsZWN0ZWRDeWNsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3ljbGVzKCk/Llt0aGlzLnNlbGVjdGVkSW5kZXgoKV0pO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRMb2dzS2V5ID0gY29tcHV0ZWQoKCkgPT4gbG9nc0tleSh0aGlzLnNlbGVjdGVkQ3ljbGUoKSkpO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRPcmlnaW5hbFZhbHVlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub2dpcmluYWxTZWxlY3RlZEN5Y2xlKCk/Llt0aGlzLnNlbGVjdGVkTm9kZUtleSgpXSB8fCBbXSk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZFJlY2FsY3VsYXRlZFZhbHVlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRDeWNsZSgpPy5bdGhpcy5zZWxlY3RlZE5vZGVLZXkoKV0gfHwgW10pO1xuICAvLyBUT0RPOiBoYW5kbGUgdHJhbnNmb3JtYXRpb24gYW5kIG5vbi1pbmRleGVkIG5vZGVzIG9uIENFXG4gIHByb3RlY3RlZCBzZWxlY3RlZE5vZGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuc2VsZWN0ZWRDeWNsZSgpXG4gICAgICA/IHtcbiAgICAgICAgICAuLi50aGlzLnNlbGVjdGVkQ3ljbGUoKSxcbiAgICAgICAgICAnQHR5cGUnOiBOb2RlVHlwZS5DeWNsZSxcbiAgICAgICAgICB0eXBlOiBOb2RlVHlwZS5DeWNsZSxcbiAgICAgICAgICBkYXRhU3RhdGU6IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRcbiAgICAgICAgfVxuICAgICAgOiBudWxsXG4gICk7XG5cbiAgcHJpdmF0ZSBpc09yaWdpbmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZGF0YVN0YXRlKCkgPT09IERhdGFTdGF0ZS5vcmlnaW5hbCk7XG4gIHByaXZhdGUgb3JpZ2luYWxWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pc09yaWdpbmFsKCkgPyBudWxsIDogdGhpcy5vcmlnaW5hbEN5Y2xlcygpKSB8fCBbXSk7XG5cbiAgcHJpdmF0ZSBoYXNSZWNhbGN1bGF0ZWROb2RlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3ljbGVzKCkuc29tZShjeWNsZSA9PiAhY3ljbGUuYWdncmVnYXRlZCkpO1xuICBwcm90ZWN0ZWQgc2hvd1N3aXRjaFRvUmVjYWxjdWxhdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pc09yaWdpbmFsKCkgJiYgdGhpcy5oYXNSZWNhbGN1bGF0ZWROb2RlcygpKTtcblxuICBwcm90ZWN0ZWQgdGltZWxpbmVWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PiBmaWx0ZXJWYWx1ZXNUaW1lbGluZSh0aGlzLnNlbGVjdGVkQ3ljbGUoKT8uW3RoaXMuc2VsZWN0ZWROb2RlS2V5KCldIHx8IFtdKSk7XG4gIHByaXZhdGUgZW5hYmxlVGltZWxpbmUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRpbWVsaW5lVmFsdWVzKCkubGVuZ3RoID4gMCk7XG5cbiAgcHJvdGVjdGVkIGlzTm9kZUtleUFsbG93ZWQgPSBjb21wdXRlZCgoKSA9PiBub2RlS2V5Vmlld3NbdGhpcy5maXJzdE5vZGVLZXkoKV0uaW5jbHVkZXModGhpcy5zZWxlY3RlZFZpZXcoKSkpO1xuXG4gIHByaXZhdGUgZ3JvdXBlZE5vZGVzID0gY29tcHV0ZWQoKCkgPT4gY3ljbGVHcm91cE5vZGVzKHRoaXMuX25vZGVLZXlHcm91cCgpLCB0aGlzLm9yaWdpbmFsTm9kZXMoKT8uWzBdKSk7XG4gIHByb3RlY3RlZCBncm91cE5vZGVUZXJtcyA9IGNvbXB1dGVkKCgpID0+IHVuaXF1ZSh0aGlzLmdyb3VwZWROb2RlcygpLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm0pKSk7XG4gIHByb3RlY3RlZCBpc0dyb3VwTm9kZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX25vZGVLZXlHcm91cCgpICYmIHRoaXMuZ3JvdXBlZE5vZGVzKCk/Lmxlbmd0aCA+IDApO1xuXG4gIHByb3RlY3RlZCBpc0VtaXNzaW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZE5vZGVLZXkoKSA9PT0gQmxhbmtOb2Rlc0tleS5lbWlzc2lvbnMpO1xuXG4gIHByb3RlY3RlZCBkYXRhID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzRW1pc3Npb24oKVxuICAgICAgPyB0aGlzLmdyb3VwRW1pc3Npb25zKClcbiAgICAgIDogT2JqZWN0LmZyb21FbnRyaWVzKHRoaXMuX25vZGVLZXlzKCkubWFwKG5vZGVLZXkgPT4gW25vZGVLZXksIHRoaXMuZ3JvdXBOb2Rlc0J5S2V5KHsgbm9kZUtleSB9KV0pKVxuICApO1xuICBwcm90ZWN0ZWQgZGF0YUtleXMgPSBjb21wdXRlZCgoKSA9PiBPYmplY3Qua2V5cyh0aGlzLmRhdGEoKSkpO1xuXG4gIHByb3RlY3RlZCBoYXNEYXRhID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEoKSkuZmxhdCgpLmxlbmd0aCA+IDApO1xuXG4gIHByb3RlY3RlZCBmaWx0ZXJUZXJtVHlwZXMgPSBjb21wdXRlZCgoKSA9PiBub2RlS2V5RmlsdGVyVGVybVR5cGVzW3RoaXMuc2VsZWN0ZWROb2RlS2V5KCldKTtcbiAgcHJvdGVjdGVkIGZpbHRlclRlcm0gPSBzaWduYWwoJycpO1xuXG4gIHByb3RlY3RlZCBjc3ZGaWxlbmFtZSA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMuX25vZGVLZXlzKCkuam9pbignLScpfS5jc3ZgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vZGVTdG9yZVNlcnZpY2U6IEhlTm9kZVN0b3JlU2VydmljZSkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gbWFrZSBzdXJlIGxvZ3MgZG9lcyBub3QgcmVtYWluIGRpc3BsYXllZFxuICAgICAgICBpZiAoKHRoaXMuaXNPcmlnaW5hbCgpICYmIHRoaXMuc2VsZWN0ZWRWaWV3KCkgPT09IFZpZXcubG9ncykgfHwgIXRoaXMudmlld3MoKS5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkVmlldygpKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3LnNldChWaWV3LnRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZE5vZGVLZXkoKSB8fCAhdGhpcy5fbm9kZUtleXMoKS5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkTm9kZUtleSgpKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlS2V5LnNldCh0aGlzLmZpcnN0Tm9kZUtleSgpKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmlldy5zZXQoVmlldy50YWJsZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRHcm91cFRlcm0oKSB8fCAhdGhpcy5ncm91cE5vZGVUZXJtcygpLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRHcm91cFRlcm0oKSkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBUZXJtLnNldCh0aGlzLmdyb3VwTm9kZVRlcm1zKClbMF0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ3JvdXBOb2Rlc0J5S2V5PFxuICAgIFQgZXh0ZW5kcyBJQ3ljbGVDb25maWcsXG4gICAgUiA9IFQgZXh0ZW5kcyBJQ3ljbGVDb25maWdBbmltYWxcbiAgICAgID8gQW5pbWFsXG4gICAgICA6IFQgZXh0ZW5kcyBJQ3ljbGVDb25maWdFbWlzc2lvblxuICAgICAgPyBFbWlzc2lvblxuICAgICAgOiBUIGV4dGVuZHMgSUN5Y2xlQ29uZmlnSW5wdXRcbiAgICAgID8gSGVzdGlhSW5wdXRcbiAgICAgIDogVCBleHRlbmRzIElDeWNsZUNvbmZpZ1ByYWN0aWNlXG4gICAgICA/IFByYWN0aWNlXG4gICAgICA6IFByb2R1Y3RcbiAgPih7IG5vZGVLZXkgfTogVCk6IElHcm91cGVkS2V5czxSPltdIHtcbiAgICBjb25zdCBub2Rlc1BlckN5Y2xlID0gZ3JvdXBOb2Rlc0J5VGVybTxJQ3ljbGVKU09OTEQgfCBncm91cGVkTm9kZSwgUj4oXG4gICAgICB0aGlzLmN5Y2xlcygpLFxuICAgICAgbm9kZUtleSxcbiAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZXMoKSxcbiAgICAgIGZpbHRlckJsYW5rTm9kZSh0aGlzLmZpbHRlclRlcm0oKSlcbiAgICApO1xuICAgIHJldHVybiBvcmRlckJ5KGdyb3VwcGVkS2V5cyhub2Rlc1BlckN5Y2xlKSwgWydrZXknXSwgWydhc2MnXSk7XG4gIH1cblxuICBwcml2YXRlIGdyb3VwRW1pc3Npb25zKCkge1xuICAgIGNvbnN0IGVtaXNzaW9uc1BlckN5Y2xlID0gZ3JvdXBOb2Rlc0J5VGVybTxJQ3ljbGVKU09OTEQgfCBncm91cGVkTm9kZSwgRW1pc3Npb24+KFxuICAgICAgdGhpcy5jeWNsZXMoKSxcbiAgICAgIEJsYW5rTm9kZXNLZXkuZW1pc3Npb25zLFxuICAgICAgdGhpcy5vcmlnaW5hbFZhbHVlcygpLFxuICAgICAgZmlsdGVyQmxhbmtOb2RlKHRoaXMuZmlsdGVyVGVybSgpKVxuICAgICk7XG4gICAgY29uc3QgdmFsdWVzOiBJR3JvdXBlZEtleXM8RW1pc3Npb24+W10gPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhlbWlzc2lvbnNQZXJDeWNsZSksIFsna2V5J10sIFsnYXNjJ10pO1xuICAgIGNvbnN0IG1ldGhvZFRpZXJzID0gb3JkZXJCeShcbiAgICAgIHVuaXF1ZSh2YWx1ZXMubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlLm1ldGhvZFRpZXIpKS5tYXAobWV0aG9kVGllciA9PiAoe1xuICAgICAgICBtZXRob2RUaWVyLFxuICAgICAgICBtZXRob2RUaWVyT3JkZXI6IG1ldGhvZFRpZXJPcmRlcihtZXRob2RUaWVyKVxuICAgICAgfSkpLFxuICAgICAgWydtZXRob2RUaWVyT3JkZXInXSxcbiAgICAgIFsnYXNjJ11cbiAgICApO1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBtZXRob2RUaWVycy5tYXAoKHsgbWV0aG9kVGllciB9KSA9PiBbbWV0aG9kVGllciwgdmFsdWVzLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB2YWx1ZS5tZXRob2RUaWVyID09PSBtZXRob2RUaWVyKV0pXG4gICAgKSBhcyBncm91cGVkRW1pc3Npb25zO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrQnlJZChfaW5kZXg6IG51bWJlciwgaXRlbTogSUN5Y2xlSlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVBvcG92ZXIocG9wb3ZlcjogYW55LCBjb250ZXh0OiBhbnkpIHtcbiAgICByZXR1cm4gcG9wb3Zlci5pc09wZW4oKSA/IHBvcG92ZXIuY2xvc2UoKSA6IHBvcG92ZXIub3Blbihjb250ZXh0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaWx0ZXJCeVRlcm0odGVybTogc3RyaW5nKSB7XG4gICAgdGhpcy5maWx0ZXJUZXJtLnNldCh0ZXJtKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RJbmRleCh7IHRhcmdldDogeyB2YWx1ZSB9IH0pIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KCt2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJzIGlzLW1iLTFcIiAqbmdJZj1cImlzR3JvdXBOb2RlKClcIj5cbiAgPHVsPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgdGVybSBvZiBncm91cE5vZGVUZXJtcygpXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZEdyb3VwVGVybSgpID09PSB0ZXJtXCI+XG4gICAgICA8YSAoY2xpY2spPVwic2VsZWN0ZWRHcm91cFRlcm0uc2V0KHRlcm0pXCI+e3sgdGVybS5uYW1lIH19PC9hPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtdmFyaWFibGUgaXMtYWxpZ24taXRlbXMtY2VudGVyIGlzLTIgaXMtbS0wXCIgKm5nSWY9XCJoYXNEYXRhKClcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFZpZXcoKSA9PT0gVmlldy50YWJsZVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1naG9zdFwiXG4gICAgICAgIChjbGljayk9XCJzaG93RG93bmxvYWQgPSB0cnVlXCJcbiAgICAgICAgbmdiVG9vbHRpcD1cIkRvd25sb2FkIGFzIENTVlwiXG4gICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIiBzaXplPVwibGdcIj48L2ZhLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCIgKm5nSWY9XCJzZWxlY3RlZFZpZXcoKSA9PT0gVmlldy50YWJsZVwiPlxuICAgIDxoZS1zZWFyY2gtZXh0ZW5kXG4gICAgICBjbGFzcz1cImlzLXNlY29uZGFyeSBpcy1zbWFsbFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlciB0ZXJtcyBieSBuYW1lXCJcbiAgICAgIChzZWFyY2gpPVwiZmlsdGVyQnlUZXJtKCRldmVudClcIj48L2hlLXNlYXJjaC1leHRlbmQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiICpuZ0lmPVwidmlld3MoKT8ubGVuZ3RoID4gMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0Zvcj1cImxldCB2aWV3IG9mIHZpZXdzKClcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIFtjbGFzcy5pcy1zZWxlY3RlZF09XCJzZWxlY3RlZFZpZXcoKSA9PT0gdmlld1wiIChjbGljayk9XCJzZWxlY3RlZFZpZXcuc2V0KHZpZXcpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJ2aWV3SWNvblt2aWV3XVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1oaWRkZW4tbW9iaWxlXCI+e3sgdmlldyB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTm9kZUtleUFsbG93ZWQoKVwiPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzZWxlY3RlZFZpZXcoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJpcy1weC0zIGlzLXBiLTNcIiAqbmdTd2l0Y2hDYXNlPVwiVmlldy50YWJsZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0RhdGEoKTsgZWxzZSBlbXB0eVRhYmxlXCI+XG4gICAgICAgIDxoZS1kYXRhLXRhYmxlIGNsYXNzPVwibWItMSBpcy1zbWFsbFwiIFtzbWFsbF09XCJ0cnVlXCIgbWF4SGVpZ2h0PVwiMzIwXCI+XG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtZnVsbHdpZHRoIGlzLW5hcnJvdyBpcy1zdHJpcGVkXCI+XG4gICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cImhhcy10ZXh0LXdlaWdodC1ib2xkXCIgKm5nSWY9XCJkYXRhS2V5cygpLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvXCI+PC90aD5cbiAgICAgICAgICAgICAgICA8dGggW2NsYXNzLmlzLWhpZGRlbl09XCJpc0dyb3VwTm9kZSgpXCI+PC90aD5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGFLZXkgb2YgZGF0YUtleXMoKTsgbGV0IGRhdGFLZXlMYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEoKVtkYXRhS2V5XT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBbYXR0ci5jb2xzcGFuXT1cImRhdGEoKVtkYXRhS2V5XS5sZW5ndGhcIiBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCIhZGF0YUtleUxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBkYXRhS2V5IHwga2V5VG9MYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cImhhcy10ZXh0LXdlaWdodC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG8gaGFzLWJvcmRlci1yaWdodFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiaGFzLWJvcmRlci1yaWdodFwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiaXNHcm91cE5vZGUoKVwiPjwvdGg+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhS2V5IG9mIGRhdGFLZXlzKCk7IGxldCBkYXRhS2V5TGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbm9kZSBvZiBkYXRhKClbZGF0YUtleV07IGxldCBub2RlTGFzdCA9IGxhc3RcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJub2RlLnZhbHVlLnRlcm0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtYm9yZGVyLXJpZ2h0XT1cImRhdGFLZXlzKCkubGVuZ3RoID4gMSAmJiAhZGF0YUtleUxhc3QgJiYgbm9kZUxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJub2RlLnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cIm5vZGUudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6IDMwIHwgY29tcG91bmRcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiaXMtaXRhbGljIGhhcy10ZXh0LXdlaWdodC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG8gaGFzLWJvcmRlci1yaWdodFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiaGFzLWJvcmRlci1yaWdodFwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiaXNHcm91cE5vZGUoKVwiPlxuICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiYmFzZVVybCArICcvc2NoZW1hL0N5Y2xlI2Z1bmN0aW9uYWxVbml0J1wiIHRhcmdldD1cIl9ibGFua1wiPkZ1bmN0aW9uYWwgdW5pdDwvYT5cbiAgICAgICAgICAgICAgICA8L3RoPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF0YUtleSBvZiBkYXRhS2V5cygpOyBsZXQgZGF0YUtleUxhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2YgZGF0YSgpW2RhdGFLZXldOyBsZXQgbm9kZUxhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwibm9kZS52YWx1ZS50ZXJtLnVuaXRzXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwiZGF0YUtleXMoKS5sZW5ndGggPiAxICYmICFkYXRhS2V5TGFzdCAmJiBub2RlTGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cIm5vZGUudmFsdWUudGVybS51bml0cyB8IGNvbXBvdW5kXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aGUtdGVybXMtdW5pdHMtZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlzLWlubGluZS1ibG9jayBpcy1tbC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdGVybV09XCJub2RlLnZhbHVlLnRlcm1cIj48L2hlLXRlcm1zLXVuaXRzLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGN5Y2xlIG9mIGN5Y2xlcygpOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBjeWNsZUluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aWR0aC1hdXRvIGhhcy1ib3JkZXItcmlnaHRcIiBbYXR0ci50aXRsZV09XCJkZWZhdWx0TGFiZWwoY3ljbGUpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwiY3ljbGUudGVybSB8fCBjeWNsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGN5Y2xlSW5kZXggKyAxIH19LiB7eyBkZWZhdWx0TGFiZWwoY3ljbGUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCIgW2NsYXNzLmlzLWhpZGRlbl09XCJpc0dyb3VwTm9kZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoZS1jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmUgW2N5Y2xlXT1cImN5Y2xlcygpWzBdXCI+PC9oZS1jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmU+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkYXRhS2V5IG9mIGRhdGFLZXlzKCk7IGxldCBkYXRhS2V5TGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpcy1ub3dyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBub2RlIG9mIGRhdGEoKVtkYXRhS2V5XTsgbGV0IG5vZGVMYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwiZGF0YUtleXMoKS5sZW5ndGggPiAxICYmICFkYXRhS2V5TGFzdCAmJiBub2RlTGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm5vZGUudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV07IGVsc2UgZW1wdHlWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyaWdnZXItcG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXJDbGFzcz1cImlzLW5hcnJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjcD1cIm5nYlBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlUG9wb3ZlcihwLCB7IGRhdGE6IG5vZGUudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0sIGN5Y2xlOiBjeWNsZSwga2V5OiBkYXRhS2V5IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlWYWx1ZShub2RlLnZhbHVlLnZhbHVlc1tjeWNsZVsnQGlkJ11dLnZhbHVlLCBub2RlLnZhbHVlLnRlcm1bJ0BpZCddKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwcmVjaXNpb246IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVmYXVsdDogJy0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVN0YXRlXT1cIl9kYXRhU3RhdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlXT1cIm5vZGUudmFsdWUudmFsdWVzW2N5Y2xlWydAaWQnXV0ubm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cInZhbHVlXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2hlLWRhdGEtdGFibGU+XG5cbiAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiX2RhdGFTdGF0ZSgpXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlldy5jaGFydFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmlyc3ROb2RlS2V5KClcIj5cbiAgICAgICAgPGhlLWN5Y2xlcy1yZXN1bHQgKm5nU3dpdGNoQ2FzZT1cIkJsYW5rTm9kZXNLZXkuaW5wdXRzXCIgW2N5Y2xlc109XCJjeWNsZXMoKVwiPjwvaGUtY3ljbGVzLXJlc3VsdD5cbiAgICAgICAgPGhlLWN5Y2xlcy1lbWlzc2lvbnMtY2hhcnRcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiQmxhbmtOb2Rlc0tleS5lbWlzc2lvbnNcIlxuICAgICAgICAgIFtjeWNsZXNdPVwiY3ljbGVzKClcIj48L2hlLWN5Y2xlcy1lbWlzc2lvbnMtY2hhcnQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlZpZXcudGltZWxpbmVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RDeWNsZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiaXMtcHgtMyBpcy1wYi0zXCI+XG4gICAgICAgIDxoZS1jeWNsZXMtbm9kZXMtdGltZWxpbmVcbiAgICAgICAgICBbcmVjYWxjdWxhdGVkVmFsdWVzXT1cInRpbWVsaW5lVmFsdWVzKClcIlxuICAgICAgICAgIFtkYXRhU3RhdGVdPVwiX2RhdGFTdGF0ZSgpXCI+PC9oZS1jeWNsZXMtbm9kZXMtdGltZWxpbmU+XG5cbiAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiX2RhdGFTdGF0ZSgpXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiVmlldy5sb2dzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VsZWN0Q3ljbGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiBjbGFzcz1cInRhYnMgaXMtbWItMlwiICpuZ0lmPVwiX25vZGVLZXlzKCkubGVuZ3RoID4gMVwiPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBub2RlS2V5IG9mIF9ub2RlS2V5cygpXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZE5vZGVLZXkoKSA9PT0gbm9kZUtleVwiPlxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNlbGVjdGVkTm9kZUtleS5zZXQobm9kZUtleSlcIj57eyBub2RlS2V5IHwga2V5VG9MYWJlbCB9fTwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxoZS1ub2RlLWxvZ3MtbW9kZWxzXG4gICAgICAgICpuZ0lmPVwic2VsZWN0ZWROb2RlKClcIlxuICAgICAgICBbbm9kZV09XCJzZWxlY3RlZE5vZGUoKVwiXG4gICAgICAgIFtub2RlS2V5XT1cInNlbGVjdGVkTm9kZUtleSgpXCJcbiAgICAgICAgW2xvZ3NLZXldPVwic2VsZWN0ZWRMb2dzS2V5KClcIlxuICAgICAgICBbb3JpZ2luYWxWYWx1ZXNdPVwic2VsZWN0ZWRPcmlnaW5hbFZhbHVlcygpXCJcbiAgICAgICAgW3JlY2FsY3VsYXRlZFZhbHVlc109XCJzZWxlY3RlZFJlY2FsY3VsYXRlZFZhbHVlcygpXCJcbiAgICAgICAgW2ZpbHRlclRlcm1UeXBlc109XCJmaWx0ZXJUZXJtVHlwZXMoKVwiPjwvaGUtbm9kZS1sb2dzLW1vZGVscz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPGhlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtXG4gICpuZ0lmPVwic2hvd0Rvd25sb2FkXCJcbiAgW25vZGVzXT1cImN5Y2xlcygpXCJcbiAgW2ZpbGVuYW1lXT1cImNzdkZpbGVuYW1lKClcIlxuICBbaXNVcGxvYWRdPVwiZmFsc2VcIlxuICBbaGVhZGVyS2V5c109XCJoZWFkZXJLZXlzKClcIlxuICAoY2xvc2VkKT1cInNob3dEb3dubG9hZCA9IGZhbHNlXCI+PC9oZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVRhYmxlPlxuICA8ZGl2IGNsYXNzPVwiaXMtcHQtMyBoYXMtdGV4dC1jZW50ZXJlZFwiPlxuICAgIDxzcGFuPk5vIGRhdGEgYXZhaWxhYmxlPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiaXMtcGwtMVwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIWZpbHRlclRlcm0oKVwiPm1hdGNoaW5nIHlvdXIgc2VhcmNoIGNyaXRlcmlhPC9zcGFuPlxuICAgIDxzcGFuPi48L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJzaG93U3dpdGNoVG9SZWNhbGN1bGF0ZWQoKVwiPlxuICAgICAgU3dpdGNoIHRvXG4gICAgICA8Y29kZT5yZWNhbGN1bGF0ZWQ8L2NvZGU+XG4gICAgICB2ZXJzaW9uLlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VmFsdWU+XG4gIDxzcGFuPi08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RldGFpbHMgbGV0LW5vZGU9XCJjeWNsZVwiIGxldC1kYXRhPVwiZGF0YVwiIGxldC1rZXk9XCJrZXlcIj5cbiAgPHA+XG4gICAgPGI+e3sgZGVmYXVsdExhYmVsKG5vZGUpIH19PC9iPlxuICA8L3A+XG4gIDxoZS1ub2RlLXZhbHVlLWRldGFpbHNcbiAgICBbZGF0YV09XCJkYXRhXCJcbiAgICBbZGF0YVN0YXRlXT1cIl9kYXRhU3RhdGUoKVwiXG4gICAgW25vZGVUeXBlXT1cIm5vZGVbJ0B0eXBlJ11cIlxuICAgIFtkYXRhS2V5XT1cImtleVwiPjwvaGUtbm9kZS12YWx1ZS1kZXRhaWxzPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWxlY3RDeWNsZT5cbiAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnMgaXMtcHktMiBpcy1weC0zXCIgKm5nSWY9XCJjeWNsZXMoKS5sZW5ndGggPiAxXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpYyBpcy1zZWNvbmRhcnlcIj5TZWxlY3QgYSBDeWNsZTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbCBpcy1mdWxsd2lkdGggaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RJbmRleCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgY3ljbGVzKCk7IGxldCBjeWNsZUluZGV4ID0gaW5kZXhcIiBbdmFsdWVdPVwiY3ljbGVJbmRleFwiPlxuICAgICAgICAgICAge3sgY3ljbGVJbmRleCArIDEgfX0uIHt7IGRlZmF1bHRMYWJlbCh2YWx1ZSkgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -48,4 +48,4 @@ export const buildSummary = (nodes = [], errors = [], summaryData = []) => from(
48
48
  count: summaries.length,
49
49
  showErrors: summaryShowErrors(summaryData, { level: level, path, message })
50
50
  })))), filter(({ formattedMessage }) => !!formattedMessage))), toArray(), map(values => values.sort(({ level }) => (level === 'error' ? -1 : 1))));
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3Itc3VtbWFyeS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1lcnJvci1zdW1tYXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDO0FBQzdCLE9BQU8sRUFBc0IsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLE9BQU8sRUFJTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGFBQWEsRUFDZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBMkJqRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQTRCLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDN0QsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sUUFBUSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDcEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxZ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Q0QsTUFBTSxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FDckQsQ0FDRixFQUNELE9BQU8sRUFBRSxFQUNULEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHJlZHVjZSwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC5zZXQnO1xuaW1wb3J0IHsgSlNPTiBhcyBIZXN0aWFKc29uLCBTY2hlbWFUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5cbmltcG9ydCB7XG4gIElWYWxpZGF0aW9uRXJyb3IsXG4gIElWYWxpZGF0aW9uRXJyb3JXaXRoSW5kZXgsXG4gIHZhbGlkYXRpb25FcnJvckxldmVsLFxuICBmaWx0ZXJFcnJvcixcbiAgZm9ybWF0RXJyb3IsXG4gIGRhdGFQYXRoTGFiZWxcbn0gZnJvbSAnLi9maWxlcy1lcnJvci5tb2RlbCc7XG5pbXBvcnQgeyBkYXRhUGF0aFRvS2V5IH0gZnJvbSAnLi9maWxlcy1mb3JtLm1vZGVsJztcbmltcG9ydCB7IGNvZGUsIG5vZGVMaW5rIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuaW50ZXJmYWNlIElTdW1tYXJ5RXJyb3Ige1xuICBub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+O1xuICBlcnJvcjogSVZhbGlkYXRpb25FcnJvcjtcbiAgdGVybT86IGFueTtcbn1cblxuaW50ZXJmYWNlIElTdW1tYXJ5R3JvdXBlZCB7XG4gIFttZXNzYWdlOiBzdHJpbmddOiB7XG4gICAgW2xldmVsOiBzdHJpbmddOiB7XG4gICAgICBbbGFiZWw6IHN0cmluZ106IElTdW1tYXJ5RXJyb3JbXTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdW1tYXJ5IHtcbiAgbGV2ZWw6IHZhbGlkYXRpb25FcnJvckxldmVsO1xuICBwYXRoOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZm9ybWF0dGVkTWVzc2FnZTogc3RyaW5nO1xuICBjb3VudDogbnVtYmVyO1xuICBzaG93RXJyb3JzOiBib29sZWFuO1xuICBlcnJvcnM6IElTdW1tYXJ5RXJyb3JbXTtcbiAgdGVybXM/OiBzdHJpbmc7XG59XG5cbmNvbnN0IG5vZGVUZXJtID0gKG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHRlcm1UeXBlID0gZ2V0KG5vZGUsIGAke2tleX0udHlwZWAsIGdldChub2RlLCBgJHtrZXl9LkB0eXBlYCwgbnVsbCkpO1xuICByZXR1cm4gdGVybVR5cGUgPT09IFNjaGVtYVR5cGUuVGVybSA/IGdldChub2RlLCBrZXksIG51bGwpIDogbnVsbDtcbn07XG5cbmNvbnN0IGZpbmROb2RlVGVybSA9IChub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCB7IGRhdGFQYXRoIH06IElWYWxpZGF0aW9uRXJyb3IpID0+XG4gIG5vZGVUZXJtKG5vZGUsIGRhdGFQYXRoVG9LZXkoZGF0YVBhdGgpKSB8fFxuICBub2RlVGVybShub2RlLCBgJHtkYXRhUGF0aFRvS2V5KGRhdGFQYXRoKX0udGVybWApIHx8XG4gIG5vZGVUZXJtKG5vZGUsIGRhdGFQYXRoVG9LZXkoZGF0YVBhdGgsIHRydWUpKSB8fFxuICBub2RlVGVybShub2RlLCBgJHtkYXRhUGF0aFRvS2V5KGRhdGFQYXRoLCB0cnVlKX0udGVybWApO1xuXG5jb25zdCB1bmlxdWVUZXJtcyA9IChlcnJvcnM6IElTdW1tYXJ5RXJyb3JbXSkgPT5cbiAgdW5pcXVlKFxuICAgIGVycm9yc1xuICAgICAgLm1hcCgoeyB0ZXJtIH0pID0+ICh0ZXJtID8gbm9kZUxpbmsodGVybSkgfHwgY29kZSh0ZXJtLm5hbWUgfHwgdGVybVsnQGlkJ10gfHwgdGVybS5pZCkgOiBudWxsKSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgKTtcblxuY29uc3Qgc3VtbWFyeVNob3dFcnJvcnMgPSAoc3VtbWFyeURhdGE6IElTdW1tYXJ5W10sIHsgcGF0aCwgbGV2ZWwsIG1lc3NhZ2UgfTogUGFydGlhbDxJU3VtbWFyeT4pID0+XG4gIHN1bW1hcnlEYXRhLmZpbmQoc3VtbWFyeSA9PiBzdW1tYXJ5LnBhdGggPT09IHBhdGggJiYgc3VtbWFyeS5sZXZlbCA9PT0gbGV2ZWwgJiYgc3VtbWFyeS5tZXNzYWdlID09PSBtZXNzYWdlKVxuICAgID8uc2hvd0Vycm9ycyB8fCB0cnVlO1xuXG4vKipcbiAqIEJ1aWxkIHRoZSBzdW1tYXJ5IG9iamVjdHMuXG4gKlxuICogQHBhcmFtIG5vZGVzIFRoZSBsaXN0IG9mIG5vZGVzLlxuICogQHBhcmFtIGVycm9ycyBUaGUgbGlzdCBvZiBlcnJvcnMgcGVyIG5vZGUuXG4gKiBAcGFyYW0gc3VtbWFyeURhdGEgVGhlIHByZXZpb3VzbHkgY29tcHV0ZWQgc3VtbWFyeSBvYmplY3RzLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkU3VtbWFyeSA9IChcbiAgbm9kZXM6IEhlc3RpYUpzb248U2NoZW1hVHlwZT5bXSA9IFtdLFxuICBlcnJvcnM6IChJVmFsaWRhdGlvbkVycm9yW10gfCBJVmFsaWRhdGlvbkVycm9yV2l0aEluZGV4KVtdID0gW10sXG4gIHN1bW1hcnlEYXRhOiBJU3VtbWFyeVtdID0gW11cbikgPT5cbiAgZnJvbShlcnJvcnMpLnBpcGUoXG4gICAgbWVyZ2VNYXAoZXJyb3IgPT4gKCdlcnJvcicgaW4gZXJyb3IgPyAoZXJyb3IgYXMgSVZhbGlkYXRpb25FcnJvcldpdGhJbmRleCkuZXJyb3IgOiBlcnJvcikpLFxuICAgIGZpbHRlcihmaWx0ZXJFcnJvciksXG4gICAgcmVkdWNlKChwcmV2LCBlcnJvcikgPT4ge1xuICAgICAgY29uc3QgeyBsZXZlbCwgbWVzc2FnZSB9ID0gZXJyb3I7XG4gICAgICBjb25zdCBub2RlID0gZ2V0KG5vZGVzLCBlcnJvci5ub2RlSW5kZXgsIG51bGwpO1xuICAgICAgY29uc3QgbGFiZWwgPSBkYXRhUGF0aExhYmVsKGVycm9yLmRhdGFQYXRoKSB8fCBub2RlPy50eXBlIHx8ICcnO1xuICAgICAgY29uc3QgdGVybSA9IGVycm9yLnBhcmFtcz8udGVybSB8fCBmaW5kTm9kZVRlcm0obm9kZSwgZXJyb3IpO1xuICAgICAgcHJldlttZXNzYWdlXSA9IHByZXZbbWVzc2FnZV0gfHwge307XG4gICAgICBjb25zdCBrZXkgPSBbbGV2ZWwsIGxhYmVsXS5qb2luKCcuJyk7XG4gICAgICBzZXQocHJldlttZXNzYWdlXSwga2V5LCBnZXQocHJldlttZXNzYWdlXSwga2V5LCBbXSkpO1xuICAgICAgcHJldlttZXNzYWdlXVtsZXZlbF1bbGFiZWxdLnB1c2goeyBub2RlLCBlcnJvciwgdGVybSB9KTtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9IGFzIElTdW1tYXJ5R3JvdXBlZCksXG4gICAgbWVyZ2VNYXAoZGF0YSA9PlxuICAgICAgZnJvbShPYmplY3Qua2V5cyhkYXRhKSkucGlwZShcbiAgICAgICAgZmlsdGVyKG1lc3NhZ2UgPT4gISFtZXNzYWdlKSxcbiAgICAgICAgbWVyZ2VNYXAobWVzc2FnZSA9PlxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGFbbWVzc2FnZV0pLmZsYXRNYXAoKFtsZXZlbCwgcGF0aHNdKSA9PlxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocGF0aHMpLm1hcChcbiAgICAgICAgICAgICAgKFtwYXRoLCBzdW1tYXJpZXNdKSA9PlxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTWVzc2FnZTogZm9ybWF0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIHN1bW1hcmllc1swXS5lcnJvcixcbiAgICAgICAgICAgICAgICAgICAgc3VtbWFyaWVzLm1hcCgoeyBlcnJvciB9KSA9PiBlcnJvcilcbiAgICAgICAgICAgICAgICAgICk/Lm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICB0ZXJtczogdW5pcXVlVGVybXMoc3VtbWFyaWVzKS5qb2luKCcgOyAnKSxcbiAgICAgICAgICAgICAgICAgIGVycm9yczogc3VtbWFyaWVzLFxuICAgICAgICAgICAgICAgICAgY291bnQ6IHN1bW1hcmllcy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICBzaG93RXJyb3JzOiBzdW1tYXJ5U2hvd0Vycm9ycyhzdW1tYXJ5RGF0YSwgeyBsZXZlbDogbGV2ZWwgYXMgdmFsaWRhdGlvbkVycm9yTGV2ZWwsIHBhdGgsIG1lc3NhZ2UgfSlcbiAgICAgICAgICAgICAgICB9KSBhcyBJU3VtbWFyeVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgZmlsdGVyKCh7IGZvcm1hdHRlZE1lc3NhZ2UgfSkgPT4gISFmb3JtYXR0ZWRNZXNzYWdlKVxuICAgICAgKVxuICAgICksXG4gICAgdG9BcnJheSgpLFxuICAgIG1hcCh2YWx1ZXMgPT4gdmFsdWVzLnNvcnQoKHsgbGV2ZWwgfSkgPT4gKGxldmVsID09PSAnZXJyb3InID8gLTEgOiAxKSkpXG4gICk7XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3Itc3VtbWFyeS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1lcnJvci1zdW1tYXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDO0FBQzdCLE9BQU8sRUFBc0IsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzdDLE9BQU8sRUFBNkIsV0FBVyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQTJCakQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUE0QixFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQzdELE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxHQUFHLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxPQUFPLFFBQVEsS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3BFLENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBNEIsRUFBRSxFQUFFLFFBQVEsRUFBb0IsRUFBRSxFQUFFLENBQ3BGLFFBQVEsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNqRCxRQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0MsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRTFELE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBdUIsRUFBRSxFQUFFLENBQzlDLE1BQU0sQ0FDSixNQUFNO0tBQ0gsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5RixNQUFNLENBQUMsT0FBTyxDQUFDLENBQ25CLENBQUM7QUFFSixNQUFNLGlCQUFpQixHQUFHLENBQUMsV0FBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFxQixFQUFFLEVBQUUsQ0FDakcsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDO0lBQzFHLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQztBQUV6Qjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQzFCLFFBQWtDLEVBQUUsRUFDcEMsU0FBNkQsRUFBRSxFQUMvRCxjQUEwQixFQUFFLEVBQzVCLEVBQUUsQ0FDRixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUNmLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUUsS0FBbUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzFGLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFDbkIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQ3JCLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2hFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsRUFBRSxFQUFxQixDQUFDLEVBQ3pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQzVCLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUNqQixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FDdkQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQ3ZCLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUNwQixDQUFDO0lBQ0MsS0FBSztJQUNMLElBQUk7SUFDSixPQUFPO0lBQ1AsZ0JBQWdCLEVBQUUsV0FBVyxDQUMzQixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUNsQixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQ3BDLEVBQUUsT0FBTztJQUNWLEtBQUssRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN6QyxNQUFNLEVBQUUsU0FBUztJQUNqQixLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDdkIsVUFBVSxFQUFFLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUE2QixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztDQUNwRyxDQUFhLENBQ2pCLENBQ0YsQ0FDRixFQUNELE1BQU0sQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQ3JELENBQ0YsRUFDRCxPQUFPLEVBQUUsRUFDVCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCByZWR1Y2UsIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2guc2V0JztcbmltcG9ydCB7IEpTT04gYXMgSGVzdGlhSnNvbiwgU2NoZW1hVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuXG5pbXBvcnQgeyBJVmFsaWRhdGlvbkVycm9yLCB2YWxpZGF0aW9uRXJyb3JMZXZlbCB9IGZyb20gJy4uL3NjaGVtYS9zY2hlbWEtdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBJVmFsaWRhdGlvbkVycm9yV2l0aEluZGV4LCBmaWx0ZXJFcnJvciwgZm9ybWF0RXJyb3IsIGRhdGFQYXRoTGFiZWwgfSBmcm9tICcuL2ZpbGVzLWVycm9yLm1vZGVsJztcbmltcG9ydCB7IGRhdGFQYXRoVG9LZXkgfSBmcm9tICcuL2ZpbGVzLWZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgY29kZSwgbm9kZUxpbmsgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuXG5pbnRlcmZhY2UgSVN1bW1hcnlFcnJvciB7XG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT47XG4gIGVycm9yOiBJVmFsaWRhdGlvbkVycm9yO1xuICB0ZXJtPzogYW55O1xufVxuXG5pbnRlcmZhY2UgSVN1bW1hcnlHcm91cGVkIHtcbiAgW21lc3NhZ2U6IHN0cmluZ106IHtcbiAgICBbbGV2ZWw6IHN0cmluZ106IHtcbiAgICAgIFtsYWJlbDogc3RyaW5nXTogSVN1bW1hcnlFcnJvcltdO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1bW1hcnkge1xuICBsZXZlbDogdmFsaWRhdGlvbkVycm9yTGV2ZWw7XG4gIHBhdGg6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBmb3JtYXR0ZWRNZXNzYWdlOiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIHNob3dFcnJvcnM6IGJvb2xlYW47XG4gIGVycm9yczogSVN1bW1hcnlFcnJvcltdO1xuICB0ZXJtcz86IHN0cmluZztcbn1cblxuY29uc3Qgbm9kZVRlcm0gPSAobm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwga2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdGVybVR5cGUgPSBnZXQobm9kZSwgYCR7a2V5fS50eXBlYCwgZ2V0KG5vZGUsIGAke2tleX0uQHR5cGVgLCBudWxsKSk7XG4gIHJldHVybiB0ZXJtVHlwZSA9PT0gU2NoZW1hVHlwZS5UZXJtID8gZ2V0KG5vZGUsIGtleSwgbnVsbCkgOiBudWxsO1xufTtcblxuY29uc3QgZmluZE5vZGVUZXJtID0gKG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIHsgZGF0YVBhdGggfTogSVZhbGlkYXRpb25FcnJvcikgPT5cbiAgbm9kZVRlcm0obm9kZSwgZGF0YVBhdGhUb0tleShkYXRhUGF0aCkpIHx8XG4gIG5vZGVUZXJtKG5vZGUsIGAke2RhdGFQYXRoVG9LZXkoZGF0YVBhdGgpfS50ZXJtYCkgfHxcbiAgbm9kZVRlcm0obm9kZSwgZGF0YVBhdGhUb0tleShkYXRhUGF0aCwgdHJ1ZSkpIHx8XG4gIG5vZGVUZXJtKG5vZGUsIGAke2RhdGFQYXRoVG9LZXkoZGF0YVBhdGgsIHRydWUpfS50ZXJtYCk7XG5cbmNvbnN0IHVuaXF1ZVRlcm1zID0gKGVycm9yczogSVN1bW1hcnlFcnJvcltdKSA9PlxuICB1bmlxdWUoXG4gICAgZXJyb3JzXG4gICAgICAubWFwKCh7IHRlcm0gfSkgPT4gKHRlcm0gPyBub2RlTGluayh0ZXJtKSB8fCBjb2RlKHRlcm0ubmFtZSB8fCB0ZXJtWydAaWQnXSB8fCB0ZXJtLmlkKSA6IG51bGwpKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICApO1xuXG5jb25zdCBzdW1tYXJ5U2hvd0Vycm9ycyA9IChzdW1tYXJ5RGF0YTogSVN1bW1hcnlbXSwgeyBwYXRoLCBsZXZlbCwgbWVzc2FnZSB9OiBQYXJ0aWFsPElTdW1tYXJ5PikgPT5cbiAgc3VtbWFyeURhdGEuZmluZChzdW1tYXJ5ID0+IHN1bW1hcnkucGF0aCA9PT0gcGF0aCAmJiBzdW1tYXJ5LmxldmVsID09PSBsZXZlbCAmJiBzdW1tYXJ5Lm1lc3NhZ2UgPT09IG1lc3NhZ2UpXG4gICAgPy5zaG93RXJyb3JzIHx8IHRydWU7XG5cbi8qKlxuICogQnVpbGQgdGhlIHN1bW1hcnkgb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gbm9kZXMgVGhlIGxpc3Qgb2Ygbm9kZXMuXG4gKiBAcGFyYW0gZXJyb3JzIFRoZSBsaXN0IG9mIGVycm9ycyBwZXIgbm9kZS5cbiAqIEBwYXJhbSBzdW1tYXJ5RGF0YSBUaGUgcHJldmlvdXNseSBjb21wdXRlZCBzdW1tYXJ5IG9iamVjdHMuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgYnVpbGRTdW1tYXJ5ID0gKFxuICBub2RlczogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPltdID0gW10sXG4gIGVycm9yczogKElWYWxpZGF0aW9uRXJyb3JbXSB8IElWYWxpZGF0aW9uRXJyb3JXaXRoSW5kZXgpW10gPSBbXSxcbiAgc3VtbWFyeURhdGE6IElTdW1tYXJ5W10gPSBbXVxuKSA9PlxuICBmcm9tKGVycm9ycykucGlwZShcbiAgICBtZXJnZU1hcChlcnJvciA9PiAoJ2Vycm9yJyBpbiBlcnJvciA/IChlcnJvciBhcyBJVmFsaWRhdGlvbkVycm9yV2l0aEluZGV4KS5lcnJvciA6IGVycm9yKSksXG4gICAgZmlsdGVyKGZpbHRlckVycm9yKSxcbiAgICByZWR1Y2UoKHByZXYsIGVycm9yKSA9PiB7XG4gICAgICBjb25zdCB7IGxldmVsLCBtZXNzYWdlIH0gPSBlcnJvcjtcbiAgICAgIGNvbnN0IG5vZGUgPSBnZXQobm9kZXMsIGVycm9yLm5vZGVJbmRleCwgbnVsbCk7XG4gICAgICBjb25zdCBsYWJlbCA9IGRhdGFQYXRoTGFiZWwoZXJyb3IuZGF0YVBhdGgpIHx8IG5vZGU/LnR5cGUgfHwgJyc7XG4gICAgICBjb25zdCB0ZXJtID0gZXJyb3IucGFyYW1zPy50ZXJtIHx8IGZpbmROb2RlVGVybShub2RlLCBlcnJvcik7XG4gICAgICBwcmV2W21lc3NhZ2VdID0gcHJldlttZXNzYWdlXSB8fCB7fTtcbiAgICAgIGNvbnN0IGtleSA9IFtsZXZlbCwgbGFiZWxdLmpvaW4oJy4nKTtcbiAgICAgIHNldChwcmV2W21lc3NhZ2VdLCBrZXksIGdldChwcmV2W21lc3NhZ2VdLCBrZXksIFtdKSk7XG4gICAgICBwcmV2W21lc3NhZ2VdW2xldmVsXVtsYWJlbF0ucHVzaCh7IG5vZGUsIGVycm9yLCB0ZXJtIH0pO1xuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwge30gYXMgSVN1bW1hcnlHcm91cGVkKSxcbiAgICBtZXJnZU1hcChkYXRhID0+XG4gICAgICBmcm9tKE9iamVjdC5rZXlzKGRhdGEpKS5waXBlKFxuICAgICAgICBmaWx0ZXIobWVzc2FnZSA9PiAhIW1lc3NhZ2UpLFxuICAgICAgICBtZXJnZU1hcChtZXNzYWdlID0+XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YVttZXNzYWdlXSkuZmxhdE1hcCgoW2xldmVsLCBwYXRoc10pID0+XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwYXRocykubWFwKFxuICAgICAgICAgICAgICAoW3BhdGgsIHN1bW1hcmllc10pID0+XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRNZXNzYWdlOiBmb3JtYXRFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgc3VtbWFyaWVzWzBdLmVycm9yLFxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJpZXMubWFwKCh7IGVycm9yIH0pID0+IGVycm9yKVxuICAgICAgICAgICAgICAgICAgKT8ubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgIHRlcm1zOiB1bmlxdWVUZXJtcyhzdW1tYXJpZXMpLmpvaW4oJyA7ICcpLFxuICAgICAgICAgICAgICAgICAgZXJyb3JzOiBzdW1tYXJpZXMsXG4gICAgICAgICAgICAgICAgICBjb3VudDogc3VtbWFyaWVzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgIHNob3dFcnJvcnM6IHN1bW1hcnlTaG93RXJyb3JzKHN1bW1hcnlEYXRhLCB7IGxldmVsOiBsZXZlbCBhcyB2YWxpZGF0aW9uRXJyb3JMZXZlbCwgcGF0aCwgbWVzc2FnZSB9KVxuICAgICAgICAgICAgICAgIH0pIGFzIElTdW1tYXJ5XG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBmaWx0ZXIoKHsgZm9ybWF0dGVkTWVzc2FnZSB9KSA9PiAhIWZvcm1hdHRlZE1lc3NhZ2UpXG4gICAgICApXG4gICAgKSxcbiAgICB0b0FycmF5KCksXG4gICAgbWFwKHZhbHVlcyA9PiB2YWx1ZXMuc29ydCgoeyBsZXZlbCB9KSA9PiAobGV2ZWwgPT09ICdlcnJvcicgPyAtMSA6IDEpKSlcbiAgKTtcbiJdfQ==