@firestitch/report 18.8.0 → 18.9.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 (52) hide show
  1. package/app/reports/components/component-text/component-text.component.d.ts +47 -2
  2. package/app/reports/components/component-text/value-embed.plugin.d.ts +67 -0
  3. package/app/reports/components/report-canvas/report-canvas.component.d.ts +34 -9
  4. package/app/reports/components/report-component/report-component.component.d.ts +10 -1
  5. package/app/reports/data/report.data.d.ts +2 -1
  6. package/app/reports/dialogs/component-settings/component-settings.component.d.ts +8 -0
  7. package/app/reports/enums/report-value-formula.enum.d.ts +6 -0
  8. package/app/reports/export/report-export-collector.service.d.ts +24 -0
  9. package/app/reports/export/report-export.service.d.ts +3 -1
  10. package/app/reports/export/report-pdf.service.d.ts +18 -2
  11. package/app/reports/export/report-pptx.service.d.ts +15 -2
  12. package/app/reports/export/report-text-layout.service.d.ts +35 -0
  13. package/app/reports/format.d.ts +5 -1
  14. package/app/reports/interfaces/report.interface.d.ts +22 -3
  15. package/app/reports/layout.d.ts +2 -0
  16. package/app/reports/services/report-filter-state.service.d.ts +1 -1
  17. package/app/reports/text.d.ts +50 -0
  18. package/app/reports/theme/palette.d.ts +2 -0
  19. package/app/reports/values.d.ts +17 -0
  20. package/esm2022/app/reports/components/component-text/component-text.component.mjs +213 -16
  21. package/esm2022/app/reports/components/component-text/value-embed.plugin.mjs +484 -0
  22. package/esm2022/app/reports/components/report-canvas/report-canvas.component.mjs +260 -34
  23. package/esm2022/app/reports/components/report-component/report-component.component.mjs +65 -19
  24. package/esm2022/app/reports/data/report.data.mjs +19 -1
  25. package/esm2022/app/reports/dialogs/component-settings/component-settings.component.mjs +134 -23
  26. package/esm2022/app/reports/enums/report-value-formula.enum.mjs +14 -0
  27. package/esm2022/app/reports/export/report-export-collector.service.mjs +170 -44
  28. package/esm2022/app/reports/export/report-export.service.mjs +57 -19
  29. package/esm2022/app/reports/export/report-pdf.service.mjs +339 -96
  30. package/esm2022/app/reports/export/report-pptx.service.mjs +316 -88
  31. package/esm2022/app/reports/export/report-text-layout.service.mjs +241 -0
  32. package/esm2022/app/reports/format.mjs +41 -10
  33. package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
  34. package/esm2022/app/reports/kpi-card.mjs +19 -6
  35. package/esm2022/app/reports/layout.mjs +11 -1
  36. package/esm2022/app/reports/option-builder.mjs +18 -5
  37. package/esm2022/app/reports/output-notes.mjs +57 -11
  38. package/esm2022/app/reports/services/report-filter-state.service.mjs +19 -10
  39. package/esm2022/app/reports/text.mjs +293 -85
  40. package/esm2022/app/reports/theme/palette.mjs +7 -2
  41. package/esm2022/app/reports/values.mjs +183 -0
  42. package/esm2022/app/reports/views/report/fs-ai-report.component.mjs +4 -1
  43. package/esm2022/app/reports/views/report/report.component.mjs +4 -1
  44. package/esm2022/public_api.mjs +2 -1
  45. package/fesm2022/{firestitch-report-echarts-qCBE3LqM.mjs → firestitch-report-echarts-DBMOHmBF.mjs} +2 -2
  46. package/fesm2022/{firestitch-report-echarts-qCBE3LqM.mjs.map → firestitch-report-echarts-DBMOHmBF.mjs.map} +1 -1
  47. package/fesm2022/{firestitch-report-firestitch-report-DbsWbE-j.mjs → firestitch-report-firestitch-report-CqbXT1gh.mjs} +3492 -1028
  48. package/fesm2022/firestitch-report-firestitch-report-CqbXT1gh.mjs.map +1 -0
  49. package/fesm2022/firestitch-report.mjs +1 -1
  50. package/package.json +1 -1
  51. package/public_api.d.ts +1 -0
  52. package/fesm2022/firestitch-report-firestitch-report-DbsWbE-j.mjs.map +0 -1
@@ -27,4 +27,4 @@ export var ReportState;
27
27
  ReportState["Active"] = "active";
28
28
  ReportState["Deleted"] = "deleted";
29
29
  })(ReportState || (ReportState = {}));
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQWlQbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUFrckJGLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBdUJELGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBhc3NlbWJsZWQgcmVwb3J0IHN0cnVjdHVyZSByZXR1cm5lZCBieSBHRVQgL2FwaS9yZXBvcnRzLzppZCDigJQgY29tcG9zZWRcbi8vIHNlcnZlci1zaWRlIGZyb20gdGhlIG5vcm1hbGl6ZWQgdGFibGVzIChyZXBvcnRzIOKGkiByZXBvcnRfcGFnZXMg4oaSXG4vLyByZXBvcnRfY29tcG9uZW50cyArIHJlcG9ydF9maWx0ZXJzLCBwbHVzIHJlcG9ydF9maWx0ZXJfZ3JvdXBzKS4gQWxsIGtleXMgYXJlXG4vLyBjYW1lbENhc2U7IGNvbXBvbmVudCBgY29uZmlnYCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRoZSByZW5kZXJlciBtYXBzIHRvXG4vLyBFQ2hhcnRzIG9wdGlvbnMgLyBGc0xpc3QgY29uZmlnLlxuXG5pbXBvcnQgeyBSZXBvcnRDaGFuZ2VQb2xhcml0eSB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1jaGFuZ2UtcG9sYXJpdHkuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydENvbG9yIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRhTGFiZWxzIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWRhdGEtbGFiZWxzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRlTGFiZWwgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0ZS1sYWJlbC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0TGluZVN0eWxlIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWxpbmUtc3R5bGUuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydE1hcmtTdGF0IH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LW1hcmstc3RhdC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydExpc3RDb2x1bW5Gb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbGlzdC1jb2x1bW4tZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0TnVtYmVyVW5pdHMgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbnVtYmVyLXVuaXRzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybWF0LmVudW0nO1xuXG4vLyBBIEJDUCA0NyBsYW5ndWFnZSB0YWcgbmFtaW5nIGhvdyBudW1iZXJzIGFuZCBkYXRlcyBhcmUgd3JpdHRlbiwgZS5nLiAnZnItQ0EnLlxuLy8gVGhlIHNldCBpcyBvcGVuICh0aGUgc2VydmVyJ3MgcHJvdmlkZXIgZGVjaWRlcyB3aGljaCBpdCBvZmZlcnMpLCBzbyB0aGlzIGlzIGFcbi8vIG5hbWVkIGFsaWFzIHJhdGhlciB0aGFuIGEgdW5pb24uXG5leHBvcnQgdHlwZSBSZXBvcnRMb2NhbGVUYWcgPSBzdHJpbmc7XG5cbi8vIEFuIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUsIGUuZy4gJ0NBRCcuIE9wZW4gZm9yIHRoZSBzYW1lIHJlYXNvbi5cbmV4cG9ydCB0eXBlIFJlcG9ydEN1cnJlbmN5Q29kZSA9IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnQge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIC8vIFRoZSByZXBvcnQncyBvd24gc3RvcmVkIElBTkEgem9uZSAoZS5nLiBBbWVyaWNhL05ld19Zb3JrKS4gbnVsbCA9IHRoZVxuICAvLyByZXBvcnQgZm9sbG93cyB0aGUgYXBwbGljYXRpb24ncyBkZWZhdWx0IHJlcG9ydGluZyB6b25lLlxuICB0aW1lem9uZTogc3RyaW5nIHwgbnVsbDtcbiAgLy8gVGhlIHpvbmUgZXZlcnkgZGF0ZSBmaWx0ZXIsIHRpbWUgYnVja2V0IGFuZCBkYXRlIGNlbGwgb2YgdGhpcyByZXBvcnQgdXNlcy5cbiAgLy8gUmVzb2x2ZWQgc2VydmVyLXNpZGU7IHRoZSBzYW1lIGZvciBldmVyeSB2aWV3ZXIsIGV4cG9ydCBhbmQgdGhlIGFzc2lzdGFudC5cbiAgLy8gT3B0aW9uYWwgb25seSBiZWNhdXNlIG9sZGVyIHNlcnZlcnMgb21pdCBpdDsgcmVzb2x2ZVJlcG9ydFRpbWV6b25lKCkgdGhlblxuICAvLyBmYWxscyBiYWNrIHRvIHRoZSByZXBvcnQncyBvd24gYHRpbWV6b25lYCwgdGhlbiB0aGUgYnJvd3NlcidzIHpvbmUuIFJlc29sdmVcbiAgLy8gdGhlIHpvbmUgZm9yIHJlbmRlcmluZyB0aHJvdWdoIHJlc29sdmVSZXBvcnRUaW1lem9uZSgpIChmb3JtYXQudHMpOyByZWFkIHRoZVxuICAvLyBmaWVsZCBkaXJlY3RseSBvbmx5IHRvIGNoZWNrIHdoZXRoZXIgdGhlIHNlcnZlciBzZW50IGl0LlxuICBlZmZlY3RpdmVUaW1lem9uZT86IHN0cmluZztcbiAgLy8gVGhlIHJlcG9ydCdzIG93biBzdG9yZWQgbG9jYWxlLiBudWxsID0gdGhlIHJlcG9ydCBmb2xsb3dzIHRoZSBkZWZhdWx0LlxuICBsb2NhbGU/OiBSZXBvcnRMb2NhbGVUYWcgfCBudWxsO1xuICAvLyBUaGUgbG9jYWxlIGV2ZXJ5IG51bWJlciBhbmQgZGF0ZSBvZiB0aGlzIHJlcG9ydCBpcyB3cml0dGVuIGluLCByZXNvbHZlZFxuICAvLyBzZXJ2ZXItc2lkZSAodGhlIHJlcG9ydCdzIG93biwgZWxzZSB0aGUgYXBwbGljYXRpb24ncyBkZWZhdWx0LCBlbHNlXG4gIC8vIGVuLVVTKS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMsIHdob3NlIHJlcG9ydHMgdGhlbiByZWFkIGVuLVVTLiBSZXNvbHZlIGl0XG4gIC8vIGZvciByZW5kZXJpbmcgdGhyb3VnaCByZXNvbHZlRm9ybWF0Q29udGV4dCgpIChmb3JtYXQudHMpLCBuZXZlciBkaXJlY3RseS5cbiAgZWZmZWN0aXZlTG9jYWxlPzogUmVwb3J0TG9jYWxlVGFnO1xuICAvLyBUaGUgcmVwb3J0J3Mgb3duIHN0b3JlZCBjdXJyZW5jeS4gbnVsbCA9IHRoZSByZXBvcnQgZm9sbG93cyB0aGUgZGVmYXVsdC5cbiAgY3VycmVuY3k/OiBSZXBvcnRDdXJyZW5jeUNvZGUgfCBudWxsO1xuICAvLyBUaGUgY3VycmVuY3kgbW9uZXkgYW1vdW50cyBhcmUgbGFiZWxlZCBpbiwgcmVzb2x2ZWQgbGlrZSBlZmZlY3RpdmVMb2NhbGVcbiAgLy8gKGZhbGxpbmcgYmFjayB0byB0aGUgbG9jYWxlJ3Mgb3duIGN1cnJlbmN5LCB0aGVuIFVTRCkuIEEgbGFiZWwgb25seTpcbiAgLy8gYW1vdW50cyBhcmUgbmV2ZXIgY29udmVydGVkLlxuICBlZmZlY3RpdmVDdXJyZW5jeT86IFJlcG9ydEN1cnJlbmN5Q29kZTtcbiAgLy8gSG93IHRoZSBzZXJ2ZXIgc2VuZHMgYSBwZXJjZW50IG1lYXN1cmU6ICdyYXRpbycgPSBhIDAtMSByYXRpbyAoMC4zODUgcmVhZHNcbiAgLy8gMzguNSUpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hvc2UgcGVyY2VudCB2YWx1ZXMgYXJlIGFscmVhZHkgeDEwMFxuICAvLyAoMzguNSByZWFkcyAzOC41JSkuXG4gIHBlcmNlbnRGb3JtYXQ/OiAncmF0aW8nO1xuICAvLyBSZXBvcnQtbGV2ZWwgY29uZmlnOiB0eXBvZ3JhcGhpYyBzdHlsZXMsIGV0Yy4gKGNhbWVsQ2FzZSBKU09OIGNvbHVtbikuXG4gIGNvbmZpZzogUmVwb3J0Q29uZmlnO1xuICAvLyBUaGUgcGFnZSBpbiBJTkNIRVMgKHRoZSByZXBvcnQncyBuYXRpdmUgdW5pdCDigJQgUERGcyBhbmQgUG93ZXJQb2ludCBhcmVcbiAgLy8gaW5jaC1iYXNlZCwgc28gZXhwb3J0cyBhcmUgZGltZW5zaW9uYWxseSBleGFjdCkuIE9yaWVudGF0aW9uIGlzIG5vdCBhIGZpZWxkXG4gIC8vIG9mIGl0cyBvd246IGEgcGFnZSB3aWRlciB0aGFuIGl0IGlzIHRhbGwgSVMgbGFuZHNjYXBlLlxuICBwYWdlV2lkdGg6IG51bWJlcjtcbiAgcGFnZUhlaWdodDogbnVtYmVyO1xuICBwYWdlczogUmVwb3J0UGFnZVtdO1xuICAvLyBUaGUgaGVhZGVyIGFuZCBmb290ZXI6IHRoZSByZXBvcnQncyBtYXN0ZXIgcGFnZSwgd2hvc2UgY29tcG9uZW50cyBkcmF3XG4gIC8vIHVuZGVyIGV2ZXJ5IHBhZ2UgdGhhdCBkb2VzIG5vdCBoaWRlIHRoZW0gKFBvd2VyUG9pbnQncyBzbGlkZSBtYXN0ZXIpLiBOdWxsXG4gIC8vIHVudGlsIGFueXRoaW5nIGhhcyBiZWVuIHBsYWNlZCBpbiB0aGVtLlxuICBtYXN0ZXI6IFJlcG9ydE1hc3RlciB8IG51bGw7XG4gIGZpbHRlckdyb3VwczogUmVwb3J0RmlsdGVyR3JvdXBbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRNYXN0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gSG93IHRoZSBvcGVuIHJlcG9ydCB3cml0ZXMgaXRzIG51bWJlcnMgYW5kIGRhdGVzLCByZXNvbHZlZCBvbmNlIHBlciByZXBvcnRcbi8vIChyZXNvbHZlRm9ybWF0Q29udGV4dCkgYW5kIHJlYWQgYnkgdGhlIHZpZXdlciwgdGhlIFBERiBhbmQgUG93ZXJQb2ludCBhbGlrZS5cbi8vIE5ldmVyIHRoZSBicm93c2VyJ3MgbG9jYWxlLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGb3JtYXRDb250ZXh0IHtcbiAgbG9jYWxlOiBSZXBvcnRMb2NhbGVUYWc7XG4gIGN1cnJlbmN5OiBSZXBvcnRDdXJyZW5jeUNvZGU7XG4gIC8vIFdoZXRoZXIgYSBwZXJjZW50IG1lYXN1cmUgYXJyaXZlcyBhcyBhIDAtMSByYXRpbyAodGhlIHJlcG9ydCdzXG4gIC8vIHBlcmNlbnRGb3JtYXQpLiBBbiBvbGRlciBzZXJ2ZXIgc2VuZHMgaXQgYWxyZWFkeSB4MTAwLlxuICByYXRpb1BlcmNlbnQ6IGJvb2xlYW47XG59XG5cbi8vIE9uZSBsb2NhbGUgdGhlIHNlcnZlciBvZmZlcnMsIHdpdGggdGhlIGN1cnJlbmN5IGEgcmVwb3J0IGluIGl0IHVzZXMgd2hlbiBpdFxuLy8gbmFtZXMgbm9uZSBvZiBpdHMgb3duLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMb2NhbGVPcHRpb24ge1xuICBsb2NhbGU6IFJlcG9ydExvY2FsZVRhZztcbiAgZGVmYXVsdEN1cnJlbmN5OiBSZXBvcnRDdXJyZW5jeUNvZGU7XG59XG5cbi8vIEdFVCByZXBvcnRzL2xvY2FsZXM6IHdoYXQgdGhlIHJlcG9ydCBzZXR0aW5ncycgTG9jYWxlIGFuZCBDdXJyZW5jeSBzZWxlY3RzXG4vLyBvZmZlci5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TG9jYWxlcyB7XG4gIGRlZmF1bHRMb2NhbGU6IFJlcG9ydExvY2FsZVRhZztcbiAgb3B0aW9uczogUmVwb3J0TG9jYWxlT3B0aW9uW107XG4gIGN1cnJlbmNpZXM6IFJlcG9ydEN1cnJlbmN5Q29kZVtdO1xufVxuXG4vLyBUaGUgZGVwdGggb2YgdGhlIGhlYWRlciBiYW5kICh0b3Agb2YgZXZlcnkgcGFnZSkgYW5kIHRoZSBmb290ZXIgYmFuZCAoYm90dG9tXG4vLyBvZiBldmVyeSBwYWdlKSwgaW4gSU5DSEVTLiBUaGUgYmFuZHMgaG9sZCBubyBjb250ZW50IG9mIHRoZWlyIG93biDigJQgdGhlXG4vLyBtYXN0ZXIncyBjb21wb25lbnRzIHNpdCBpbiB0aGVtIOKAlCB0aGV5IGFyZSB0aGUgcmVzZXJ2ZWQgbWFyZ2lucyB0aGUgZWRpdG9yXG4vLyBkcmF3cyBhcyBndWlkZXMgYW5kIHNuYXBzIHRvLiBBbHdheXMgYXJyaXZlcyByZXNvbHZlZCAoMCA9IG5vIGJhbmQpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRIZWFkZXJGb290ZXIge1xuICBoZWFkZXJIZWlnaHQ6IG51bWJlcjtcbiAgZm9vdGVySGVpZ2h0OiBudW1iZXI7XG59XG5cbi8vIFJlcG9ydC1sZXZlbCBzdHlsaW5nLiBTaXplcyBhcmUgaW4gUE9JTlRTICgxLzcyXCIpIOKAlCB0aGUgcmVwb3J0J3MgdHlwb2dyYXBoeVxuLy8gbWFwcyAxOjEgdG8gUERGICg3MnB0L2luKSBhbmQgUG93ZXJQb2ludCAocG9pbnQgZm9udCBzaXplcyksIHNvIGEgcG9pbnRcbi8vIHZhbHVlIGlzIGRpbWVuc2lvbmFsbHkgZXhhY3Qgb24gc2NyZWVuIGFuZCBpbiBldmVyeSBleHBvcnQuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENvbmZpZyB7XG4gIHN0eWxlcz86IFJlcG9ydFN0eWxlcztcbiAgLy8gVGhlIHJlcG9ydCdzIGdyb3VwLWJ5IGNvbnRyb2wuIE9wdGlvbmFsIG9uIHRoZSB0eXBlIGJlY2F1c2UgYSBSZXBvcnRDb25maWdcbiAgLy8gbGl0ZXJhbCBuZWVkIG5vdCBjYXJyeSBpdDsgdGhlIEFQSSBhbHdheXMgc2VuZHMgaXQsIHJlc29sdmVkLlxuICBncm91cEJ5PzogUmVwb3J0R3JvdXBCeTtcbiAgLy8gUmVzb2x2ZWQgYnkgdGhlIEFQSSBsaWtlIGdyb3VwQnkuXG4gIGhlYWRlckZvb3Rlcj86IFJlcG9ydEhlYWRlckZvb3Rlcjtcbn1cblxuLy8gVGhlIHJlcG9ydCdzIGdyb3VwLWJ5IGNvbnRyb2wg4oCUIHRoZSBvbmUgc3dpdGNoIHRoYXQgcmUtYnVja2V0cyBldmVyeVxuLy8gdGltZS1zZXJpZXMgY2hhcnQgb24gdGhlIHJlcG9ydCBiZXR3ZWVuIGRheSwgd2VlaywgbW9udGgsIHF1YXJ0ZXIgYW5kIHllYXIuXG4vL1xuLy8gSXQgaXMgTk9UIGEgZmlsdGVyOiBhIGZpbHRlciBuYXJyb3dzIHdoaWNoIHJvd3MgYXJlIGNvdW50ZWQsIHRoaXMgY2hhbmdlcyBob3dcbi8vIHRoZSBzdXJ2aXZpbmcgcm93cyBhcmUgYnVja2V0ZWQuIEl0IHNoYXJlcyB0aGUgcmVwb3J0J3MgZmlsdGVyIGJhciBiZWNhdXNlXG4vLyB0aGF0IGlzIHRoZSBvbmUgcm93IG9mIGNvbnRyb2xzIGEgdmlld2VyIHJlYWRzIGEgcmVwb3J0IHRocm91Z2gg4oCUIHRoZVxuLy8gc2VwYXJhdGlvbiB0aGF0IG1hdHRlcnMgaXMgaW4gdGhlIG1vZGVsLCBub3QgaW4gd2hlcmUgdGhlIGNvbnRyb2wgaXMgcGFpbnRlZC5cbi8vXG4vLyBBbHdheXMgYXJyaXZlcyBSRVNPTFZFRCAodGhlIGJhY2tlbmQgZmlsbHMgYW4gYWJzZW50IG9yIHBhcnRpYWwgc3RvcmVkIGJsb2NrXG4vLyBpbiBmcm9tIGl0cyBvd24gZGVmYXVsdHMpLCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvIGRlZmF1bHQgaGVyZSDigJQgcmVuZGVyIHdoYXRcbi8vIHlvdSBhcmUgZ2l2ZW4uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEdyb3VwQnkge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBsYWJlbDogc3RyaW5nO1xuICBncmFudWxhcml0aWVzOiBDaGFydEdyYW51bGFyaXR5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U3R5bGVzIHtcbiAgaGVhZGluZz86IHsgc2l6ZT86IG51bWJlciB9O1xufVxuXG4vLyBDb250ZW50IHBhZGRpbmcgYXJvdW5kIGEgY29tcG9uZW50J3MgYm9keSwgaW4gSU5DSEVTICh0aGUgZ2VvbWV0cnkgdW5pdCkuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFBhZGRpbmcge1xuICB0b3A/OiBudW1iZXI7XG4gIHJpZ2h0PzogbnVtYmVyO1xuICBib3R0b20/OiBudW1iZXI7XG4gIGxlZnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0UGFnZSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZyB8IG51bGw7XG4gIG9yZGVyOiBudW1iZXI7XG4gIC8vIFRoZSBwYWdlIG9wdHMgb3V0IG9mIHRoZSByZXBvcnQncyBoZWFkZXIgYW5kIGZvb3RlciAoYSB0aXRsZSBwYWdlKS5cbiAgbWFzdGVySGlkZGVuOiBib29sZWFuO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gJ3RleHQnIGlzIGF1dGhvcmVkIHJpY2ggdGV4dCB3aXRoIG5vIHF1ZXJ5IGJlaGluZCBpdCDigJQgaXQgbmV2ZXIgZmV0Y2hlcyBkYXRhLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q29tcG9uZW50VHlwZSA9ICdjaGFydCcgfCAnbGlzdCcgfCAna3BpJyB8ICd0ZXh0JztcblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb21wb25lbnQge1xuICBpZDogbnVtYmVyO1xuICB0eXBlOiBSZXBvcnRDb21wb25lbnRUeXBlO1xuICB0aXRsZTogc3RyaW5nIHwgbnVsbDtcbiAgLy8gR2VvbWV0cnkgaW4gSU5DSEVTOiBhYnNvbHV0ZSBwb3NpdGlvbiBvbiB0aGUgcGFnZSBjYW52YXMuXG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB3OiBudW1iZXI7XG4gIGg6IG51bWJlcjtcbiAgLy8gSGVpZ2h0IG1vZGUsIERFUklWRUQgZnJvbSB0eXBlIHNlcnZlci1zaWRlIChub3Qgc3RvcmVkLCByZWFkLW9ubHkpOiBsaXN0c1xuICAvLyBhbmQgS1BJIHRpbGVzIGFyZSBhdXRvICh0aGUgYm94IHNpemVzIHRvIGl0cyBjb250ZW50LCBgaGAgaWdub3JlZCk7IGNoYXJ0c1xuICAvLyBhcmUgYWx3YXlzIGZpeGVkICh1c2UgYGhgKSBzbyB0aGV5IGZpdCB0aGUgYm94IGFuZCBuZXZlciBvdmVyZmxvdy5cbiAgYXV0b0hlaWdodDogYm9vbGVhbjtcbiAgLy8gVGhlIHN0b3JlZCBTUUwgb2YgYSBsZWdhY3kgc3FsLW1vZGUgY29tcG9uZW50LiBOVUxMIGZvciBhIGRlcml2ZWQgb25lLFxuICAvLyB3aG9zZSBzdGF0ZW1lbnQgZG9lcyBub3QgZXhpc3QgdW50aWwgaXRzIGRvY3VtZW50IGlzIGNvbXBpbGVkIOKAlCB0aGUgU1FMIHRhYlxuICAvLyBmZXRjaGVzIHRoYXQgc2VwYXJhdGVseSAoc2VlIFJlcG9ydENvbXBvbmVudFNxbCkuXG4gIHNxbDogc3RyaW5nIHwgbnVsbDtcbiAgY29uZmlnOiBDaGFydENvbmZpZyAmIExpc3RDb25maWcgJiBLcGlDb25maWcgJiBUZXh0Q29uZmlnICYgQ29tcG9uZW50TGF5b3V0Q29uZmlnICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xufVxuXG4vLyBXaGF0IHRoZSBTUUwgdGFiIGZldGNoZXM6IHRoZSBzdGF0ZW1lbnQgYSBjb21wb25lbnQgcnVucy5cbi8vXG4vLyBGb3IgYSBkZXJpdmVkIGNvbXBvbmVudCBgYmFzZWxpbmVgIGlzIHRydWUgYW5kIGBzcWxgIGlzIHdoYXQgaXRzIGRvY3VtZW50XG4vLyBjb21waWxlcyB0byB3aXRoIE5PIHZpZXdlciBzdGF0ZSDigJQgbm8gZmlsdGVycywgdGhlIGF1dGhvcmVkIGdyYWluLiBUaGVcbi8vIG51bWJlcnMgb24gc2NyZWVuIGNvbWUgZnJvbSB0aGF0IHN0YXRlbWVudCBwbHVzIHdoYXRldmVyIHRoZSB2aWV3ZXIgcGlja2VkLFxuLy8gc28gdGhlIHR3byBjYW4gbGVnaXRpbWF0ZWx5IGRpZmZlciBhbmQgdGhlIHRhYiBzYXlzIHNvIHJhdGhlciB0aGFuIGltcGx5aW5nXG4vLyB0aGV5IG1hdGNoLlxuLy9cbi8vIGB0aW1lem9uZWAgaXMgdGhlIElBTkEgem9uZSB0aGUgc3RhdGVtZW50IHdhcyBjb21waWxlZCBpbjogdGhlIHJlcG9ydCdzXG4vLyBlZmZlY3RpdmUgem9uZS4gT3B0aW9uYWwgYmVjYXVzZSBvbGRlciBzZXJ2ZXJzIG9taXQgaXQ7IHRoZXkgY29tcGlsZWQgaW4gVVRDLlxuLy9cbi8vIGBlcnJvcmAgaXMgbm90IGEgZmFpbHVyZSBvZiB0aGUgcmVxdWVzdDogYSBkb2N1bWVudCB0aGF0IG5vIGxvbmdlciBjb21waWxlc1xuLy8gaXMgcHJlY2lzZWx5IHdoYXQgc29tZW9uZSBvcGVucyB0aGlzIHRhYiB0byBkaXNjb3Zlciwgc28gaXQgYXJyaXZlcyBhcyBhXG4vLyBtZXNzYWdlIHRvIHJlbmRlciB3aXRoIGBlcnJvclR5cGVgIG5hbWluZyB3aGljaCBraW5kICgnc3RhbGUtcXVlcnknIG9yXG4vLyAnc2Vuc2l0aXZlLWNvbHVtbicpLCBhbmQgYHNxbGAgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50U3FsIHtcbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBvcmlnaW46ICdzcWwnIHwgJ2RicScgfCAnZGVyaXZlZCc7XG4gIGJhc2VsaW5lOiBib29sZWFuO1xuICB0aW1lem9uZT86IHN0cmluZztcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIGVycm9yVHlwZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSB0ZXh0IGJsb2NrJ3MgY29udGVudDogYW4gaHRtbCBmcmFnbWVudCB0aGUgc2VydmVyIGhhcyBhbHJlYWR5IHJlYnVpbHQgZnJvbVxuLy8gYW4gYWxsb3dsaXN0LCB3aGljaCBtYXkgY2Fycnkge3twYWdlLm51bWJlcn19LCB7e3BhZ2UubmFtZX19IGFuZFxuLy8ge3tyZXBvcnQubmFtZX19IHRva2VucyAoc2VlIHRleHQudHMpLlxuZXhwb3J0IGludGVyZmFjZSBUZXh0Q29uZmlnIHtcbiAgaHRtbD86IHN0cmluZztcbn1cblxuLy8gQ3Jvc3MtdHlwZSBsYXlvdXQvc3R5bGUga2V5cyBjYXJyaWVkIGluIGEgY29tcG9uZW50J3MgY29uZmlnIChhbG9uZ3NpZGUgdGhlXG4vLyB0eXBlLXNwZWNpZmljIGNoYXJ0L2xpc3Qva3BpIGtleXMpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRMYXlvdXRDb25maWcge1xuICBwYWRkaW5nPzogQ29tcG9uZW50UGFkZGluZztcbn1cblxuLy8gVGhlIHByZXNlbnRhdGlvbiBzZXR0aW5ncyBhIGNvbXBvbmVudCdzIHNldHRpbmdzIGRpYWxvZyBlZGl0cy4gVGl0bGUgYW5kXG4vLyBwYWRkaW5nIGFyZSBub3QgcGFydCBvZiB3aGF0IHRoZSBjb21wb25lbnQgcXVlcmllcywgc28gYSBjaGFuZ2UgdG8gdGhlbVxuLy8gcmVwYWludHMgd2l0aG91dCByZS1ydW5uaW5nIGFueXRoaW5nLiBBIGRlcml2ZWQgS1BJJ3MgY2FyZCBrZXlzIGFyZSBzZW50XG4vLyB0b286IHRoZSBzZXJ2ZXIgY29tcHV0ZXMgdGhlIHRhcmdldCdzIHByb2dyZXNzIGFuZCB0aGUgc3BhcmtsaW5lJ3MgcG9pbnRzXG4vLyB3aXRoIHRoZSBkYXRhLCBzbyBhIGNoYW5nZSB0byB0aGVtIHJlbG9hZHMgaXQuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFNldHRpbmdzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgcGFkZGluZzogQ29tcG9uZW50UGFkZGluZztcbiAga3BpPzogS3BpQ2FyZFNldHRpbmdzO1xufVxuXG4vLyBBIEtQSSdzIGNhcmQga2V5cy4gVGhlIGRpYWxvZyBzZW5kcyB0aGVtIChudWxsIHJlbW92ZXMgYSBrZXksIGluY3JlYXNlSXNcbi8vIG51bGwgcmVhZHMgZ29vZCksIGFuZCBDb21wb25lbnRTZXR0aW5ncy5rcGkgY2FycmllcyB0aGVtIGFzIHRoZSBzZXJ2ZXJcbi8vIHNhdmVkIHRoZW0sIHJlYWQgYmFjayBmcm9tIHRoZSBjb25maWcgaXQgcmV0dXJucy5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ2FyZFNldHRpbmdzIHtcbiAgaW5jcmVhc2VJczogUmVwb3J0Q2hhbmdlUG9sYXJpdHkgfCBudWxsO1xuICB0YXJnZXQ6IEtwaVRhcmdldENvbmZpZyB8IG51bGw7XG4gIHNwYXJrbGluZTogS3BpU3BhcmtsaW5lQ29uZmlnIHwgbnVsbDtcbn1cblxuLy8gV2hlcmUgYSBjaGFydCdzIGxlZ2VuZCBzaXRzIHJlbGF0aXZlIHRvIHRoZSBwbG90LCBvciAnaGlkZGVuJyB0byBkcm9wIGl0LlxuZXhwb3J0IHR5cGUgTGVnZW5kUG9zaXRpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdoaWRkZW4nO1xuXG5leHBvcnQgdHlwZSBDaGFydEdyYW51bGFyaXR5ID0gJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInO1xuXG4vLyBIb3cgZWFjaCBncmFudWxhcml0eSByZWFkcyBpbiB0aGUgZ3JvdXAtYnkgY29udHJvbCBhbmQgb24gYW4gZXhwb3J0IGNvdmVyXG4vLyBzaGVldC4gV0hJQ0ggb2YgdGhlbSBhIGdpdmVuIHJlcG9ydCBvZmZlcnMgY29tZXMgZnJvbSBpdHMgUmVwb3J0R3JvdXBCeTtcbi8vIHRoaXMgaXMgb25seSB0aGUgbmFtaW5nLiAneWVhcicgcmVhZHMgYXMgXCJBbm51YWxseVwiLlxuZXhwb3J0IGNvbnN0IEdSQU5VTEFSSVRZX09QVElPTlM6IHsgdmFsdWU6IENoYXJ0R3JhbnVsYXJpdHk7IG5hbWU6IHN0cmluZyB9W10gPSBbXG4gIHsgdmFsdWU6ICdkYXknLCBuYW1lOiAnRGF5JyB9LFxuICB7IHZhbHVlOiAnd2VlaycsIG5hbWU6ICdXZWVrJyB9LFxuICB7IHZhbHVlOiAnbW9udGgnLCBuYW1lOiAnTW9udGgnIH0sXG4gIHsgdmFsdWU6ICdxdWFydGVyJywgbmFtZTogJ1F1YXJ0ZXInIH0sXG4gIHsgdmFsdWU6ICd5ZWFyJywgbmFtZTogJ0FubnVhbGx5JyB9LFxuXTtcblxuLy8gVGhlIGNoYXJ0IHR5cGVzIHRoYXQgcGxvdCBzZXJpZXMgYWdhaW5zdCBhIGNhdGVnb3J5IGFuZCBhIHZhbHVlIGF4aXMsIGFuZCBzb1xuLy8gdGhlIHR5cGVzIGEgbWVhc3VyZSdzIG93biBzZXJpZXMgY2FuIGJlIGRyYXduIGFzLiBBIHdhdGVyZmFsbCBoYXMgdGhlIHNhbWVcbi8vIGF4ZXMgYnV0IGlzIG5vdCBvbmUgb2YgdGhlbTogaXQgZHJhd3MgaXRzIG9uZSBtZWFzdXJlIGFzIGZsb2F0aW5nIHN0ZXBzLlxuZXhwb3J0IHR5cGUgQXhpc0NoYXJ0VHlwZSA9ICdiYXInIHwgJ2xpbmUnIHwgJ2FyZWEnO1xuXG4vLyBXaGF0IG9uZSBiYXIgb2YgYSB3YXRlcmZhbGwgZG9lcyB0byB0aGUgcnVubmluZyB0b3RhbCDigJQgZWFjaCBpcyBkcmF3biBpbiBpdHNcbi8vIG93biBjb2xvci4gVGhlIGNsb3NpbmcgdG90YWwgaXMgdGhlIGxhc3QgYmFyLCBzdGFuZGluZyBvbiB6ZXJvLlxuZXhwb3J0IHR5cGUgV2F0ZXJmYWxsU3RlcEtpbmQgPSAncmlzZScgfCAnZmFsbCcgfCAndG90YWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0Q29uZmlnIHtcbiAgLy8gQSB3YXRlcmZhbGwgdGFrZXMgT05FIG1lYXN1cmUgd2hvc2UgdmFsdWUgcGVyIGNhdGVnb3J5IGlzIGhvdyBmYXIgdGhlXG4gIC8vIHJ1bm5pbmcgdG90YWwgbW92ZXMgdGhlcmU6IGVhY2ggYmFyIHN0YXJ0cyB3aGVyZSB0aGUgb25lIGJlZm9yZSBpdCBlbmRlZCxcbiAgLy8gYW5kIGEgY2xvc2luZyBUb3RhbCBiYXIgc2hvd3MgdGhlIHN1bS5cbiAgY2hhcnRUeXBlPzogQXhpc0NoYXJ0VHlwZSB8ICd3YXRlcmZhbGwnIHwgJ3BpZScgfCAnZG9udXQnO1xuICAvLyBGb3Iga2luZCAndGltZScsIHRoZSBzZXJ2ZXIgYnVja2V0cyB0aGUgcmF3IGRhdGV0aW1lIGNvbHVtbiB0byBgZ3JhbnVsYXJpdHlgXG4gIC8vIGluIHRoZSByZXBvcnQncyB0aW1lem9uZSAodGhlIFNRTCBleHBvc2VzIHRoZSByYXcgY29sdW1uLCB1bmJ1Y2tldGVkKS5cbiAgLy8gZGF0ZUxhYmVsIHdyaXRlcyBhIHRpbWUgYXhpcydzIHBlcmlvZCBsYWJlbHMgc2hvcnQgKCdNYXknLCB0aGUgZGVmYXVsdCksXG4gIC8vIGxvbmcgKCdNYXkgMjAyNicpIG9yIG51bWVyaWMgKCcyMDI2LTA1Jyk7IGEgY2F0ZWdvcnkgYXhpcyBpZ25vcmVzIGl0LlxuICB4QXhpcz86IHtcbiAgICBjb2x1bW46IHN0cmluZztcbiAgICBraW5kPzogJ2NhdGVnb3J5JyB8ICd0aW1lJztcbiAgICBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHk7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgZGF0ZUxhYmVsPzogUmVwb3J0Q2hhcnREYXRlTGFiZWw7XG4gIH07XG4gIG1lYXN1cmVzPzogQ2hhcnRNZWFzdXJlW107XG4gIC8vIEVhY2ggdmFsdWUgb2YgdGhpcyBjb2x1bW4gYmVjb21lcyBpdHMgb3duIHNlcmllcy4gSXQgY2FycmllcyBubyBsYWJlbDogdGhlXG4gIC8vIGxlZ2VuZCBuYW1lcyB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMuXG4gIHNwbGl0Qnk/OiB7IGNvbHVtbjogc3RyaW5nIH07XG4gIC8vIFNpbmdsZS1kaW1lbnNpb24gYmFyIGNoYXJ0cyBvbmx5OiBjb2xvciBlYWNoIGJhciBieSBpdHMgb3duIGNhdGVnb3J5IGFuZFxuICAvLyBzaG93IGEgbGVnZW5kLCBXSVRIT1VUIHNwbGl0dGluZyBpbnRvIG11bHRpcGxlIHNlcmllcyAod2hpY2ggc2xpdmVycyB0aGVcbiAgLy8gYmFycykuIHYxIGV4cGVjdHMgY29sb3JCeS5jb2x1bW4gPT09IHhBeGlzLmNvbHVtbi4gSWdub3JlZCB3aGVuIHNwbGl0QnkgaXNcbiAgLy8gc2V0IG9yIHRoZSBjaGFydCBpc24ndCBhIGJhciBjaGFydC5cbiAgY29sb3JCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIG9yaWVudGF0aW9uPzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgc3RhY2tlZD86IGJvb2xlYW47XG4gIC8vIFN0YWNrcyB0aGUgcHJpbWFyeSBheGlzJ3MgYmFyIGFuZCBhcmVhIHNlcmllcyBhcyBzaGFyZXMgb2YgZWFjaFxuICAvLyBjYXRlZ29yeSdzIHRvdGFsLCBzbyBldmVyeSBzdGFjayByZWFjaGVzIDEwMCUuIFRoZSB2aWV3ZXIgY29tcHV0ZXMgdGhlXG4gIC8vIHNoYXJlcyBmcm9tIHRoZSByb3dzIGl0IHJlY2VpdmVzLCBhZnRlciB0aGUgZmlsdGVycyByYW47IHRoZSByb3dzIGFuZCB0aGVcbiAgLy8gQ1NWIGtlZXAgdGhlIHJhdyB2YWx1ZXMuIFRoZSB2YWx1ZSBheGlzIHRoZW4gYWx3YXlzIHJ1bnMgMCB0byAxMDAlIChmcm9tXG4gIC8vIC0xMDAlIHdoZW4gYSBzaGFyZSBpcyBuZWdhdGl2ZSkuXG4gIHBlcmNlbnRTdGFja2VkPzogYm9vbGVhbjtcbiAgLy8gVmFsdWVzIHByaW50ZWQgYmVzaWRlIHRoZSBwb2ludHMgb2YgYSBiYXIsIGxpbmUgb3IgYXJlYSBzZXJpZXM6IGV2ZXJ5XG4gIC8vIHBvaW50IChhbGwpLCBlYWNoIHNlcmllcycgbGF0ZXN0IHBvaW50IChsYXN0KSwgb3IgZXZlcnkgcG9pbnQgd2hvc2UgbGFiZWxcbiAgLy8gZml0cyB3aXRob3V0IG92ZXJsYXBwaW5nIGFub3RoZXIgKGF1dG8pLiBPbWl0dGVkIG9yIG5vbmUsIG5vIGxhYmVscy4gQVxuICAvLyBwaWUsIGEgZG9udXQgYW5kIGEgd2F0ZXJmYWxsIG5ldmVyIHByaW50IHRoZW0uXG4gIGRhdGFMYWJlbHM/OiBSZXBvcnRDaGFydERhdGFMYWJlbHM7XG4gIC8vIFRoZSBwcmltYXJ5IHZhbHVlIGF4aXMncyB0aXRsZSBhbmQgcmFuZ2UuIEV2ZXJ5IHNlcmllcyBpcyBwbG90dGVkIGFnYWluc3RcbiAgLy8gaXQgdW5sZXNzIGl0cyBtZWFzdXJlIGlzIHNlY29uZGFyeS5cbiAgdmFsdWVBeGlzPzogQ2hhcnRWYWx1ZUF4aXM7XG4gIC8vIFRoZSBzZWNvbmQgdmFsdWUgYXhpcywgb24gdGhlIHJpZ2h0LCB0aGF0IHNlY29uZGFyeSBtZWFzdXJlcyBwbG90IGFnYWluc3QuXG4gIHNlY29uZGFyeUF4aXM/OiBDaGFydFZhbHVlQXhpcztcbiAgLy8gTGFiZWxlZCBsaW5lcyBhY3Jvc3MgdGhlIHBsb3QgYXQgYSBjb25zdGFudCB2YWx1ZSwgb3IgYmFuZHMgYmV0d2VlbiB0d29cbiAgLy8gdmFsdWVzLCBhdCBtb3N0IDUuIFZlcnRpY2FsIGF4aXMgY2hhcnRzIGFuZCB3YXRlcmZhbGxzIG9ubHkuXG4gIHJlZmVyZW5jZXM/OiBDaGFydFJlZmVyZW5jZVtdO1xuICBsZWdlbmQ/OiBMZWdlbmRQb3NpdGlvbjtcbiAgc29ydD86IFJlcG9ydFNvcnQ7XG4gIGxpbWl0PzogbnVtYmVyO1xufVxuXG4vLyBBIHZhbHVlIGF4aXMncyB0aXRsZSBhbmQgcmFuZ2UuIEVhY2ggYm91bmQgbGVmdCBvdXQgaXMgcGlja2VkIGZyb20gdGhlIGRhdGEsXG4vLyBhbmQgdGhlIHRpY2sgc3RlcCB3aXRob3V0IGFuIGludGVydmFsLiBJdHMgdGlja3MgdGFrZSB0aGUgbnVtYmVyIGZvcm1hdCBvZlxuLy8gdGhlIG1lYXN1cmVzIHBsb3R0ZWQgYWdhaW5zdCBpdC5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRWYWx1ZUF4aXMge1xuICBsYWJlbD86IHN0cmluZztcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIGludGVydmFsPzogbnVtYmVyO1xufVxuXG4vLyBBIHJlZmVyZW5jZSBkcmF3biBhY3Jvc3MgYSBjaGFydCdzIHBsb3Q6IGEgbGluZSBhdCBgdmFsdWVgLCBvciB3aXRoIGB0b2AgYVxuLy8gYmFuZCBiZXR3ZWVuIHRoZSB0d28sIGxhYmVsZWQgd2l0aCBgbGFiZWxgLiBUaGUgdmFsdWUgaXMgb25lIHRoZSB1c2VyIG9yXG4vLyB0aGUgbW9kZWwgc3RhdGVzLCBuZXZlciBvbmUgcmVhZCBvZmYgdGhlIGRhdGEuIHNlY29uZGFyeSBwbG90cyBpdCBhZ2FpbnN0XG4vLyB0aGUgc2Vjb25kIHZhbHVlIGF4aXMsIHdoZW4gdGhlIGNoYXJ0IGhhcyBvbmUuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0UmVmZXJlbmNlIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgdG8/OiBudW1iZXI7XG4gIHNlY29uZGFyeT86IGJvb2xlYW47XG59XG5cbi8vIEhvdyBvbmUgbnVtZXJpYyBzbG90IGlzIHNob3duOiBhIGNoYXJ0IG1lYXN1cmUsIGEgS1BJIG1lYXN1cmUsIGEgbGlzdCBjb2x1bW5cbi8vIG9yIGEgY3Jvc3MtdGFiJ3MgY2VsbHMuIFRoZSBkYXRhIHN0YXlzIHJhdyAoaXQgc29ydHMgYW5kIGV4cG9ydHMgYXMgYVxuLy8gbnVtYmVyKTsgb25seSB0aGUgcmVuZGVyZXJzIGZvcm1hdCBpdCwgdGhlIHNhbWUgd2F5IG9uIHNjcmVlbiwgaW4gdGhlIFBERlxuLy8gYW5kIGluIFBvd2VyUG9pbnQgKGZvcm1hdC50cykuIEFsbCB0aHJlZSBrZXlzIGFyZSBvcHRpb25hbCwgYW5kIHByZWNpc2lvbiBvclxuLy8gdW5pdHMgd2l0aG91dCBhIGZvcm1hdCBtZWFuIG51bWJlci5cbi8vXG4vLyBGb3JtYXR0aW5nIGlzIG9wdC1pbjogYSBsaXN0IGNvbHVtbiBvciBjcm9zcy10YWIgY2VsbCB3aXRob3V0IHRoZXNlIGtleXNcbi8vIHByaW50cyBpdHMgdmFsdWUgYXMgaXQgY2FtZSwgYW5kIGEgY2hhcnQgd2l0aG91dCB0aGVtIGtlZXBzIGl0cyBwbGFpblxuLy8gbG9jYWxlLWdyb3VwZWQgYXhpcyBhbmQgdG9vbHRpcHMuIEEgS1BJIHdpdGhvdXQgdGhlbSBwcmludHMgYSBwbGFpbiBudW1iZXIuXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlckZvcm1hdFNwZWMge1xuICAvLyBwZXJjZW50IHRha2VzIGEgMC0xIHJhdGlvICgwLjMgcmVhZHMgMzAlKSB3aGVuIHRoZSByZXBvcnQncyBwZXJjZW50Rm9ybWF0XG4gIC8vIGlzICdyYXRpbyc7IGFuIG9sZGVyIHNlcnZlciBsZWF2ZXMgaXQgb3V0IGFuZCBzZW5kcyB4MTAwLiBjdXJyZW5jeSBsYWJlbHNcbiAgLy8gdGhlIGFtb3VudCBpbiB0aGUgcmVwb3J0J3MgY3VycmVuY3ksIHdyaXR0ZW4gaW4gaXRzIGxvY2FsZS5cbiAgZm9ybWF0PzogUmVwb3J0VmFsdWVGb3JtYXQgfCBSZXBvcnRMaXN0Q29sdW1uRm9ybWF0O1xuICAvLyBIb3cgbWFueSBkZWNpbWFsIHBsYWNlcyB0aGUgdmFsdWUgaXMgc2hvd24gdG8gKDAtNikuIEZpeGVkIHJhdGhlciB0aGFuXG4gIC8vIG1heGltdW06IGEgY29sdW1uIG9mIHJhdGVzIGlzIHVucmVhZGFibGUgd2hlbiBlYWNoIG9uZSBzaG93cyBhIGRpZmZlcmVudFxuICAvLyBudW1iZXIgb2YgZGVjaW1hbHMuIEZvciBwZXJjZW50IGl0IGNvdW50cyB0aGUgZGVjaW1hbHMgb2YgdGhlIHBlcmNlbnRhZ2VcbiAgLy8gKHByZWNpc2lvbiAxIHNob3dzIDAuMyBhcyAzMC4wJSkuIE9taXR0ZWQgbGVhdmVzIHRoZSBmb3JtYXQncyBvd24gZGVmYXVsdDpcbiAgLy8gYXQgbW9zdCBvbmUgZGVjaW1hbCBmb3IgcGVyY2VudCAoYW5kIGZvciBhbiBhYmJyZXZpYXRlZCAxLjJLKSwgd2hvbGUgdW5pdHNcbiAgLy8gZm9yIGN1cnJlbmN5LCB0aGUgbG9jYWxlJ3MgZGVmYXVsdCBmb3IgYSBudW1iZXIuXG4gIC8vXG4gIC8vIEl0IGNhbm5vdCBiZSBhcHBsaWVkIGluIHRoZSBTUUw6IHRoZSB2YWx1ZSBpcyBhZ2dyZWdhdGVkIGFmdGVyIHRoZSByZXBvcnQnc1xuICAvLyBmaWx0ZXJzIHJ1biwgc28gcHJlLXJvdW5kaW5nIHdvdWxkIGJyZWFrIGxpdmUgcmUtZmlsdGVyaW5nLlxuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIC8vIEFiYnJldmlhdGVzIHRvIHRob3VzYW5kcyAoMS4ySykgb3IgbWlsbGlvbnMgKDMuNE0pLCBvciBwaWNrcyBieSBzaXplLlxuICB1bml0cz86IFJlcG9ydE51bWJlclVuaXRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0TWVhc3VyZSBleHRlbmRzIE51bWJlckZvcm1hdFNwZWMge1xuICBjb2x1bW46IHN0cmluZztcbiAgYWdncmVnYXRpb24/OiAnc3VtJyB8ICdjb3VudCcgfCAnYXZnJyB8ICdtaW4nIHwgJ21heCc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBEcmF3cyB0aGlzIG1lYXN1cmUncyBzZXJpZXMgYXMgYSBkaWZmZXJlbnQgdHlwZSBmcm9tIHRoZSBjaGFydCdzIG93blxuICAvLyBjaGFydFR5cGUg4oCUIGNvdW50cyBhcyBiYXJzIHdpdGggYSByYXRlIGFzIGEgbGluZSBvdmVyIHRoZW0gaXMgYSBjb21ib1xuICAvLyBjaGFydC4gT21pdHRlZCwgdGhlIHNlcmllcyB0YWtlcyB0aGUgY2hhcnQncyB0eXBlLiBBeGlzIGNoYXJ0cyBvbmx5IChhIHBpZVxuICAvLyBpZ25vcmVzIGl0KS5cbiAgdHlwZT86IEF4aXNDaGFydFR5cGU7XG4gIC8vIEEgY2hhcnQgbWVhc3VyZSdzIGZvcm1hdCBzaG93cyBvbiBpdHMgdG9vbHRpcHMsIGFuZCBvbiB0aGUgdmFsdWUgYXhpc1xuICAvLyB3aGVuIGV2ZXJ5IG1lYXN1cmUgc2hhcmluZyB0aGUgYXhpcyBhZ3JlZXMgb24gaXQuIEEgS1BJJ3MgbWVhc3VyZSBmb3JtYXRzXG4gIC8vIGl0cyBvbmUgdmFsdWUuXG4gIGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0O1xuICAvLyBQbG90cyB0aGlzIG1lYXN1cmUgYWdhaW5zdCB0aGUgc2Vjb25kIHZhbHVlIGF4aXMsIG9uIHRoZSByaWdodCwgZm9yIGFcbiAgLy8gcXVhbnRpdHkgb24gYW5vdGhlciBzY2FsZS4gT21pdHRlZCBvciBmYWxzZSwgaXQgc2hhcmVzIHRoZSBwcmltYXJ5IGF4aXMuXG4gIC8vIEEgdmVydGljYWwgYXhpcyBjaGFydCBvbmx5LCB3aXRoIGF0IGxlYXN0IG9uZSBtZWFzdXJlIGxlZnQgb24gdGhlIHByaW1hcnlcbiAgLy8gYXhpcy5cbiAgc2Vjb25kYXJ5PzogYm9vbGVhbjtcbiAgLy8gVGhlIHBhbGV0dGUgY29sb3IgdGhpcyBtZWFzdXJlJ3Mgc2VyaWVzIGlzIGRyYXduIGluLiBPbWl0dGVkLCB0aGUgc2VyaWVzXG4gIC8vIHRha2VzIHRoZSBwYWxldHRlIGNvbG9yIG9mIGl0cyBwb3NpdGlvbi4gQSBjb2xvciBvbiB0aGUgZmlyc3QgbWVhc3VyZVxuICAvLyB0dXJucyBvZmYgYSBjYXRlZ29yeSBiYXIgY2hhcnQncyBkZWZhdWx0IGNvbG9yIHBlciBiYXIgKGlzQ29sb3JCeSkuXG4gIGNvbG9yPzogUmVwb3J0Q2hhcnRDb2xvcjtcbiAgLy8gSG93IGEgbGluZSBzZXJpZXMnIGxpbmUgaXMgZHJhd24uIE9taXR0ZWQsIHNvbGlkLlxuICBsaW5lPzogUmVwb3J0Q2hhcnRMaW5lU3R5bGU7XG4gIC8vIFdoZXRoZXIgYSBsaW5lIG9yIGFyZWEgc2VyaWVzIGRyYXdzIGEgZG90IG9uIGVhY2ggcG9pbnQuIE9taXR0ZWQsIHRydWUuXG4gIG1hcmtlcnM/OiBib29sZWFuO1xuICAvLyBBIGxpbmUgYWNyb3NzIHRoZSBwbG90IGF0IHRoaXMgc2VyaWVzJyBhdmVyYWdlLCBtZWRpYW4sIGxvd2VzdCBvciBoaWdoZXN0XG4gIC8vIHZhbHVlIG92ZXIgdGhlIHBvaW50cyBvbiBzY3JlZW4uIFZlcnRpY2FsIGF4aXMgY2hhcnRzIG9ubHkuXG4gIG1hcmtMaW5lPzogUmVwb3J0Q2hhcnRNYXJrU3RhdDtcbn1cblxuLy8gT25lIGF1dGhvcmVkIGNvbHVtbiBvZiBhIHBsYWluIGxpc3QuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb2x1bW4gZXh0ZW5kcyBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBkYXRlIGtlZXBzIHRoZSBjb2x1bW4gYSBSQVcgdGltZXN0YW1wLCBzbyB0aGUgcmVwb3J0IHRpbWV6b25lIGFuZCBpdHNcbiAgLy8gZGF0ZVJhbmdlIGZpbHRlcnMga2VlcCB3b3JraW5nLCBhbmQgdGhlIHZpZXdlciByZW5kZXJzIGl0IGFzIGEgZGF5IGluIHRoZVxuICAvLyByZXBvcnQncyB6b25lIGFuZCBsb2NhbGUuIG51bWJlciwgcGVyY2VudCBhbmQgY3VycmVuY3kgZm9ybWF0IHRoZSB2YWx1ZSBhc1xuICAvLyBhIEtQSSBtZWFzdXJlIGRvZXMuIFdpdGhvdXQgYSBmb3JtYXQgdGhlIHZhbHVlIHByaW50cyBhcyBpdCBjYW1lLlxuICBmb3JtYXQ/OiBSZXBvcnRMaXN0Q29sdW1uRm9ybWF0O1xuICAvLyBBIGNvbHVtbiB0aGUgU1FMIGFscmVhZHkgZm9ybWF0dGVkIGlzIHRleHQsIHNvIGl0IG5hbWVzIGBzb3J0Q29sdW1uYDogdGhlXG4gIC8vIHJhdyBudW1lcmljIGFsaWFzIHRoZSBxdWVyeSBhbHNvIG91dHB1dHMsIHdoaWNoIHRoZSBzZXJ2ZXIgb3JkZXJzIGJ5XG4gIC8vIGluc3RlYWQuXG4gIHNvcnRDb2x1bW4/OiBzdHJpbmc7XG4gIC8vIGZhbHNlIGtlZXBzIHRoZSBjZWxsIG9uIG9uZSBsaW5lLiBPbWl0dGVkLCBhIGxvbmcgdmFsdWUgd3JhcHMuXG4gIHdyYXA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb25maWcge1xuICBjb2x1bW5zPzogTGlzdENvbHVtbltdO1xuICAvLyBBIGNyb3NzLXRhYjogYHJvd0J5YCBzdGF5cyBkb3duIHRoZSBzaWRlIGFuZCBldmVyeSB2YWx1ZSBvZiBgcGl2b3RCeWBcbiAgLy8gYmVjb21lcyBhIGNvbHVtbi4gVGhlIHR3byBhcmUgc2V0IHRvZ2V0aGVyLCBgY29sdW1uc2AgaXMgb21pdHRlZCAodGhlXG4gIC8vIGJhY2tlbmQgcmVqZWN0cyBhdXRob3JpbmcgYm90aCksIGFuZCB0aGUgY29sdW1uIHNldCBhcnJpdmVzIHdpdGggdGhlIHJvd3NcbiAgLy8gaW4gQ29tcG9uZW50RGF0YS5jb2x1bW5zIGJlY2F1c2Ugb25seSB0aGUgcmVzdWx0IGtub3dzIHRoZSBwaXZvdCB2YWx1ZXMuXG4gIC8vIHJvd0J5LmxhYmVsIGhlYWRzIHRoZSBzaWRlIGNvbHVtbiBvbiBzY3JlZW4gYW5kIGluIGV2ZXJ5IGV4cG9ydCwgYW5kXG4gIC8vIGRlZmF1bHRzIHRvIHRoZSBjb2x1bW4gbmFtZS4gcGl2b3RCeSBjYXJyaWVzIG5vIGxhYmVsOiBpdHMgdmFsdWVzIGFyZSB0aGVcbiAgLy8gaGVhZGluZ3MuXG4gIHJvd0J5PzogeyBjb2x1bW46IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfTtcbiAgcGl2b3RCeT86IHsgY29sdW1uOiBzdHJpbmcgfTtcbiAgLy8gVGhlIGF1dGhvcmVkIG9yZGVyLCBtb3N0IGltcG9ydGFudCBmaXJzdC4gQSBsaXN0IHNhdmVkIGJlZm9yZSBtdWx0aS1rZXlcbiAgLy8gc29ydGluZyBzdG9yZXMgb25lIG9iamVjdCwgc28gcmVhZCBpdCB0aHJvdWdoIGxpc3RTb3J0VGVybXMoKSBvbmx5LlxuICBzb3J0PzogUmVwb3J0U29ydCB8IFJlcG9ydFNvcnRbXTtcbiAgLy8gSG93IG1hbnkgbGVhZGluZyBjb2x1bW5zIHN0YXkgaW4gdmlldyB3aGlsZSB0aGUgbGlzdCBzY3JvbGxzIHNpZGV3YXlzXG4gIC8vICgwLTMpLiBVbnNldCwgYSBjcm9zcy10YWIgcGlucyBpdHMgcm93LWtleSBjb2x1bW4gYW5kIGEgcGxhaW4gbGlzdCBub25lLlxuICBwaW5uZWRDb2x1bW5zPzogbnVtYmVyIHwgbnVsbDtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIC8vIHRydWUgYWRkcyBhIHRvdGFscyByb3cgdW5kZXIgdGhlIGxpc3Q6IHRoZSBzZXJ2ZXIgcnVucyB0aGUgbWVhc3VyZXMgYWdhaW5cbiAgLy8gb3ZlciBldmVyeSByb3cgdGhlIGZpbHRlcnMga2VlcCwgd2l0aG91dCBncm91cGluZywgYW5kIGEgY3Jvc3MtdGFiIHRvdGFsc1xuICAvLyBlYWNoIGNvbHVtbi5cbiAgdG90YWxzPzogYm9vbGVhbjtcbiAgLy8gQSBjcm9zcy10YWIgb25seTogaG93IGV2ZXJ5IGNlbGwgb2YgdGhlIGdyaWQgaXMgZm9ybWF0dGVkLCB3aXRoIGEgS1BJXG4gIC8vIG1lYXN1cmUncyBrZXlzLiBUaGUgcm93IGtleSBjb2x1bW4gc3RheXMgYXMgaXQgY2FtZS5cbiAgY2VsbEZvcm1hdD86IE51bWJlckZvcm1hdFNwZWMgJiB7IGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ29uZmlnIHtcbiAgbWVhc3VyZT86IENoYXJ0TWVhc3VyZTtcbiAgLy8gV2hldGhlciBhIHJpc2UgaW4gdGhlIHZhbHVlIGlzIGdvb2QgbmV3cywgYmFkIG5ld3Mgb3IgbmVpdGhlcjogaXQgcGlja3NcbiAgLy8gdGhlIGRlbHRhJ3MgY29sb3IgYW5kIGRlY2lkZXMgd2hlbiBhIHRhcmdldCBpcyBtZXQgKGdvb2Q6IGF0IG9yIGFib3ZlIGl0O1xuICAvLyBiYWQ6IGF0IG9yIGJlbG93IGl0OyBuZXV0cmFsOiBuZXZlciBqdWRnZWQpLiBPbWl0dGVkIG9yIG51bGwgcmVhZHMgZ29vZC5cbiAgaW5jcmVhc2VJcz86IFJlcG9ydENoYW5nZVBvbGFyaXR5IHwgbnVsbDtcbiAgLy8gQSBudW1iZXIgdGhlIHVzZXIgZ2F2ZSBmb3IgdGhlIHZhbHVlIHRvIHJlYWNoLCBuZXZlciBvbmUgcmVhZCBvZmYgdGhlXG4gIC8vIGRhdGEuIFRoZSBzZXJ2ZXIgc2VuZHMgdGhlIHByb2dyZXNzIHRvd2FyZCBpdCB3aXRoIHRoZSBkYXRhLlxuICB0YXJnZXQ/OiBLcGlUYXJnZXRDb25maWcgfCBudWxsO1xuICAvLyBBIHNtYWxsIHRyZW5kIGxpbmUgb2YgdGhlIHZhbHVlIG92ZXIgaXRzIGxhc3QgcGVyaW9kcywgZHJhd24gdW5kZXIgaXQuXG4gIHNwYXJrbGluZT86IEtwaVNwYXJrbGluZUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIEEgS1BJJ3MgdGFyZ2V0OiB0aGUgdmFsdWUsIGFuZCBhbiBvcHRpb25hbCBjYXB0aW9uIGZvciBpdCAoJ0dvYWwnKS5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpVGFyZ2V0Q29uZmlnIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHNwYXJrbGluZTogaG93IHdpZGUgZWFjaCBwb2ludCdzIHBlcmlvZCBpcyAobnVsbCByZWFkcyBtb250aCkgYW5kXG4vLyBob3cgbWFueSBwZXJpb2RzIGl0IGRyYXdzLCAyIHRvIDYwIChudWxsIHJlYWRzIDEyKS5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpU3BhcmtsaW5lQ29uZmlnIHtcbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgcGVyaW9kcz86IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U29ydCB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IHR5cGUgUmVwb3J0RmlsdGVyVHlwZSA9ICdkYXRlUmFuZ2UnIHwgJ3NlbGVjdCcgfCAna2V5d29yZCc7XG5cbi8vIFdoZXJlIGEgZmlsdGVyIGdyb3VwJ3MgY29udHJvbCBpcyBleHBvc2VkLiBBIGdyb3VwIGNhbiBiZSBzaG93biBvbiBpdHNcbi8vIGNvbXBvbmVudHMsIGluIHRoZSByZXBvcnQgYmFyLCBvciBCT1RIIGF0IG9uY2UgKHRoZSB0d28gYXJlIGluZGVwZW5kZW50XG4vLyB0b2dnbGVzIGluIHRoZSBVSSk7IGEgY29sdW1uIHdpdGggbmVpdGhlciBleHBvc2VkIHNpbXBseSBoYXMgbm8gZmlsdGVyLlxuZXhwb3J0IHR5cGUgUmVwb3J0RmlsdGVyTGV2ZWwgPSAnY29tcG9uZW50JyB8ICdyZXBvcnQnIHwgJ2JvdGgnO1xuXG4vLyBPbmUgZmlsdGVyYWJsZSBvdXRwdXQgY29sdW1uIG9mIGEgY29tcG9uZW50J3MgU1FMLCB3aXRoIHRoZSBmaWx0ZXIgaW50ZXJmYWNlXG4vLyBJTkZFUlJFRCBmcm9tIGl0cyBkYXRhICh0aGUgaHVtYW4gbmV2ZXIgcGlja3MgdGhlIGludGVyZmFjZSDigJQgaXQgZm9sbG93cyB0aGVcbi8vIGNvbHVtbidzIHR5cGUpLiBEcml2ZXMgdGhlIEZpbHRlcnMgdGFiIGxpc3RpbmcuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlcmFibGVDb2x1bW4ge1xuICBjb2x1bW46IHN0cmluZztcbiAgdHlwZTogUmVwb3J0RmlsdGVyVHlwZTtcbn1cblxuLy8gR3JvdW5kIHRydXRoOiBvbmUgZmlsdGVyYWJsZSBvdXRwdXQgY29sdW1uIE9OIG9uZSBjb21wb25lbnQncyBTUUwuIEFsd2F5cyBhXG4vLyBtZW1iZXIgb2YgYSBmaWx0ZXIgZ3JvdXAg4oCUIHRoZSB1bml0IHRoYXQgbGlua3MgZXF1aXZhbGVudCBmaWx0ZXJzIGFjcm9zc1xuLy8gY29tcG9uZW50cyBhbmQgZGVjaWRlcyB3aGVyZSB0aGUgY29udHJvbCByZW5kZXJzIChjb21wb25lbnQgdnMgcmVwb3J0IGJhcikuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlciB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbXBvbmVudElkOiBudW1iZXI7XG4gIGZpbHRlckdyb3VwSWQ6IG51bWJlcjtcbiAgZmlsdGVyQ29sdW1uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBoYXNPcHRpb25zOiBib29sZWFuO1xuICBjb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vLyBPbmUgY2hvaWNlIGluIGEgc2VsZWN0IGZpbHRlcidzIG9wdGlvbiBsaXN0LiBUaGUgdmFsdWUgaXMgd2hhdCB0aGUgZmlsdGVyXG4vLyBtYXRjaGVzIG9uIGFuZCBnZXRzIHN0b3JlZCBpbiBhIHNhdmVkIGRlZmF1bHQg4oCUIGZvciBhbiBlbnRpdHkgdGhhdCBpcyBpdHNcbi8vIHN0YWJsZSBpZCwgbmV2ZXIgaXRzIG5hbWUsIHNvIHJlbmFtaW5nIHRoZSBlbnRpdHkgbW92ZXMgdGhlIGxhYmVsIHdpdGhvdXRcbi8vIGJyZWFraW5nIHRoZSBkZWZhdWx0LiBUaGUgbGFiZWwgaXMgb25seSBldmVyIHdoYXQgdGhlIHZpZXdlciByZWFkcy5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyT3B0aW9uIHtcbiAgdmFsdWU6IHVua25vd247XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyR3JvdXAge1xuICBpZDogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgdHlwZTogUmVwb3J0RmlsdGVyVHlwZTtcbiAgbGV2ZWw6IFJlcG9ydEZpbHRlckxldmVsO1xuICBvcmRlcjogbnVtYmVyO1xuICBjb25maWc6IHsgZGVmYXVsdD86IEZpbHRlckdyb3VwRGVmYXVsdCB9ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xufVxuXG4vLyBBIGZpbHRlciBncm91cCdzIGF1dGhvcmVkIGRlZmF1bHQg4oCUIHRoZSB2YWx1ZSB0aGF0IHNlZWRzIHRoZSByZXBvcnQgYmFyIG9uXG4vLyBldmVyeSBvcGVuLiBTaGFwZSBmb2xsb3dzIHRoZSBncm91cCdzIHR5cGU6IGRhdGVSYW5nZSB1c2VzIHN0YXJ0L2VuZCAoYSBmaXhlZFxuLy8gY2FsZW5kYXItZGF5IHJhbmdlKSBvciBhIHJlbGF0aXZlIHByZXNldDsgc2VsZWN0IHVzZXMgdmFsdWVzOyBrZXl3b3JkIHVzZXNcbi8vIHZhbHVlLlxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cERlZmF1bHQge1xuICAvLyBkYXRlUmFuZ2UgcmVsYXRpdmUgcHJlc2V0LCByZXNvbHZlZCBvbiBldmVyeSBvcGVuIGFnYWluc3QgdG9kYXkgaW4gdGhlXG4gIC8vIHJlcG9ydCdzIGVmZmVjdGl2ZSB6b25lIChSZXBvcnQuZWZmZWN0aXZlVGltZXpvbmUpLiBPbmUgb2Y6IHRoaXNXZWVrLFxuICAvLyBsYXN0V2VlaywgbGFzdDdEYXlzLCBsYXN0MzBEYXlzLCBsYXN0M01vbnRocywgbGFzdDZNb250aHMsIGxhc3QxMk1vbnRocyxcbiAgLy8gdGhpc01vbnRoLCB0aGlzUXVhcnRlciwgdGhpc1llYXIveWVhclRvRGF0ZS4gV2Vla3MgcnVuIE1vbmRheSB0byBTdW5kYXksXG4gIC8vIHRoZSBzYW1lIHdlZWtzIHRoZSBzZXJ2ZXIncyB3ZWVrbHkgdGltZSBidWNrZXRzIHVzZS5cbiAgcmVsYXRpdmU/OiBzdHJpbmc7XG4gIHN0YXJ0Pzogc3RyaW5nOyAvLyBkYXRlUmFuZ2UgZml4ZWQgc3RhcnQgKHl5eXktTU0tZGQpXG4gIGVuZD86IHN0cmluZzsgLy8gZGF0ZVJhbmdlIGZpeGVkIGVuZCAoeXl5eS1NTS1kZClcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3QgZGVmYXVsdCBwaWNrZWQgdmFsdWVzXG4gIHZhbHVlPzogc3RyaW5nOyAvLyBrZXl3b3JkIGRlZmF1bHQgdGV4dFxufVxuXG4vLyBUaGUgc2Vzc2lvbiB2YWx1ZSBvZiBhIGZpbHRlciBncm91cDogc2hhcGUgZGVwZW5kcyBvbiB0aGUgZ3JvdXAncyB0eXBlLiBOb3Rcbi8vIHN0b3JlZCBvbiB0aGUgc2VydmVyOyB0aGUgdmlld2VyJ3MgVVJMIGNhcnJpZXMgdGhlIHZhbHVlcyB0aGF0IGRpZmZlciBmcm9tXG4vLyB0aGUgZGVmYXVsdHMgKHJlcG9ydC11cmwtc3RhdGUudHMpLlxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cFZhbHVlIHtcbiAgc3RhcnQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDsgLy8gZGF0ZVJhbmdlXG4gIGVuZD86IERhdGUgfCBzdHJpbmcgfCBudWxsOyAvLyBkYXRlUmFuZ2VcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3RcbiAgdmFsdWU/OiBzdHJpbmc7IC8vIGtleXdvcmRcbiAgLy8gZGF0ZVJhbmdlIG9ubHk6IHRoZSByZWxhdGl2ZSBwcmVzZXQgbmFtZSB0aGVzZSBkYXRlcyB3ZXJlIHJlc29sdmVkIGZyb21cbiAgLy8gKGEgRmlsdGVyR3JvdXBEZWZhdWx0LnJlbGF0aXZlIG5hbWUpLiBTZXQgb25seSB3aGVuIHRoZSB2YWx1ZSB3YXMgc2VlZGVkXG4gIC8vIGZyb20gdGhlIGdyb3VwJ3MgcmVsYXRpdmUgZGVmYXVsdCBvciByZWFkIGZyb20gYSBwcmVzZXQgbmFtZSBpbiB0aGUgVVJMLFxuICAvLyBzbyB0aGUgVVJMIGtlZXBzIHRoZSByYW5nZSByb2xsaW5nICgnbGFzdDMwRGF5cycpIGluc3RlYWQgb2YgZnJlZXppbmcgdHdvXG4gIC8vIGRhdGVzLCBhbmQgdGhlIGRhdGEgcmVxdWVzdCBuYW1lcyB0aGUgcGVyaW9kIGl0IGNvdmVycyAoc2VlXG4gIC8vIFJlc29sdmVkRmlsdGVyVmFsdWUucHJlc2V0KS4gQW55IGRhdGUgcGlja2VkIGJ5IHRoZSB2aWV3ZXIsIGEgcGlja2VyXG4gIC8vIHNob3J0Y3V0IGluY2x1ZGVkLCBpcyBzdG9yZWQgd2l0aG91dCBpdC5cbiAgcHJlc2V0Pzogc3RyaW5nO1xufVxuXG4vLyBBIHJlbGF0aXZlIGRhdGUgcmFuZ2UgdGhlIHNlcnZlciByZXNvbHZlcyBhZ2FpbnN0IHRvZGF5IGluIHRoZSByZXBvcnQnc1xuLy8gem9uZTogdGhlIG5hbWVzIGEgRmlsdGVyR3JvdXBEZWZhdWx0LnJlbGF0aXZlIGFuZCBhIHRpbWVmcmFtZSdzIHJhbmdlIHRha2UuXG4vLyBNaXJyb3JzIHRoZSBzZXJ2ZXIncyBSZXBvcnRSZWxhdGl2ZVJhbmdlRW51bSB2YWx1ZSBmb3IgdmFsdWVcbi8vIChSZXBvcnRSZWxhdGl2ZVJhbmdlRW51bVRlc3QgcGlucyB0aGUgZGF5cyBlYWNoIG9uZSBjb3ZlcnMpLlxuZXhwb3J0IHR5cGUgUmVwb3J0UmVsYXRpdmVSYW5nZSA9XG4gIHwgJ3RoaXNXZWVrJ1xuICB8ICdsYXN0V2VlaydcbiAgfCAnbGFzdDdEYXlzJ1xuICB8ICdsYXN0MzBEYXlzJ1xuICB8ICdsYXN0M01vbnRocydcbiAgfCAnbGFzdDZNb250aHMnXG4gIHwgJ2xhc3QxMk1vbnRocydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzUXVhcnRlcidcbiAgfCAndGhpc1llYXInXG4gIHwgJ3llYXJUb0RhdGUnO1xuXG4vLyBUaGUgdmlld2VyLXN0YXRlIHF1ZXJ5IHBhcmFtcyBvZiBhIHJlcG9ydCBVUkwsIGFzIHJhdyBzdHJpbmdzLCBiZWZvcmUgdGhleVxuLy8gYXJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgcmVwb3J0IChyZXBvcnQtdXJsLXN0YXRlLnRzIHJlYWRSZXBvcnRVcmxQYXJhbXMpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRVcmxQYXJhbXMge1xuICAvLyBnPGdyb3VwSWQ+IC0+IHRoZSBlbmNvZGVkIGdyb3VwIHZhbHVlICgnJyA9IHRoZSB2aWV3ZXIgY2xlYXJlZCBpdCkuXG4gIGdyb3VwczogTWFwPG51bWJlciwgc3RyaW5nPjtcbiAgLy8gczxjb21wb25lbnRJZD4gLT4gdGhlIGVuY29kZWQgbGlzdCBzb3J0ICgnLWNvbHVtbicgPSBkZXNjZW5kaW5nKS5cbiAgbGlzdFNvcnRzOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICAvLyBxPGNvbXBvbmVudElkPiAtPiBhIGxpc3QncyBzZWFyY2ggYm94IHRleHQsIGFzIHR5cGVkLlxuICBsaXN0U2VhcmNoZXM6IE1hcDxudW1iZXIsIHN0cmluZz47XG4gIC8vIGg8Y29tcG9uZW50SWQ+IC0+IHRoZSBjb2x1bW5zIGEgdmlld2VyIGhpZCBvbiBhIGxpc3QsIHN0aWxsIGVuY29kZWRcbiAgLy8gKGRlY29kZUNvbHVtbkxpc3QpLlxuICBsaXN0SGlkZGVuOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICAvLyBUaGUgZ3JvdXAtYnkgZ3JhaW4sIG9yIG51bGwgd2hlbiB0aGUgVVJMIGhhcyBub25lLlxuICBncm91cEJ5OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBUaGUgdmlld2VyIHN0YXRlIHRoZSBVUkwgc2hvdWxkIGNhcnJ5OiBvbmx5IHdoYXQgZGlmZmVycyBmcm9tIHRoZSByZXBvcnQnc1xuLy8gYXV0aG9yZWQgZGVmYXVsdHMgKFJlcG9ydEZpbHRlclN0YXRlU2VydmljZS51cmxTbmFwc2hvdCkuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFVybFNuYXBzaG90IHtcbiAgLy8gQSBncm91cCdzIHZhbHVlLCBvciBudWxsIHdoZW4gdGhlIHZpZXdlciBjbGVhcmVkIGEgZ3JvdXAgdGhhdCBoYXMgYSBkZWZhdWx0LlxuICBncm91cHM6IE1hcDxudW1iZXIsIEZpbHRlckdyb3VwVmFsdWUgfCBudWxsPjtcbiAgLy8gQSBsaXN0J3Mgc29ydCwgYnkgY29tcG9uZW50IGlkLCB3aGVuIGl0IGRpZmZlcnMgZnJvbSB0aGUgYXV0aG9yZWQgc29ydCdzXG4gIC8vIGZpcnN0IHRlcm0uXG4gIGxpc3RTb3J0czogTWFwPG51bWJlciwgUmVwb3J0U29ydD47XG4gIC8vIEEgbGlzdCdzIHNlYXJjaCBib3ggdGV4dCwgYnkgY29tcG9uZW50IGlkLiBBIGxpc3Qgd2l0aCBhbiBlbXB0eSBib3ggaXNcbiAgLy8gbGVmdCBvdXQuXG4gIGxpc3RTZWFyY2hlczogTWFwPG51bWJlciwgc3RyaW5nPjtcbiAgLy8gVGhlIGNvbmZpZyBjb2x1bW4gbmFtZXMgYSB2aWV3ZXIgaGlkIG9uIGEgcGxhaW4gbGlzdCwgYnkgY29tcG9uZW50IGlkLiBBXG4gIC8vIGxpc3Qgc2hvd2luZyBldmVyeSBjb2x1bW4gaXMgbGVmdCBvdXQuXG4gIGxpc3RIaWRkZW46IE1hcDxudW1iZXIsIHN0cmluZ1tdPjtcbiAgZnJlcXVlbmN5OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbn1cblxuLy8gT25lIHJlc29sdmVkIGZpbHRlciBzZW50IHdpdGggYSBjb21wb25lbnQncyBkYXRhIHJlcXVlc3QuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkRmlsdGVyVmFsdWUge1xuICBmaWx0ZXJJZDogbnVtYmVyO1xuICBzdGFydD86IHN0cmluZztcbiAgZW5kPzogc3RyaW5nO1xuICB2YWx1ZXM/OiB1bmtub3duW107XG4gIHZhbHVlPzogc3RyaW5nO1xuICAvLyBkYXRlUmFuZ2Ugb25seTogdGhlIHJlbGF0aXZlIHJhbmdlIHN0YXJ0IGFuZCBlbmQgc3RpbGwgYXJlLCBzZW50IG9ubHlcbiAgLy8gd2hpbGUgdGhleSBhcmUgZXhhY3RseSB0aGF0IHJhbmdlIHJlc29sdmVkIHRvZGF5IGluIHRoZSByZXBvcnQncyB6b25lLiBJdFxuICAvLyB0ZWxscyB0aGUgc2VydmVyIHdoaWNoIHBlcmlvZCB0aGUgZGF5cyBjb3ZlciAob24gdGhlIGZpcnN0IGRheXMgb2YgYVxuICAvLyBxdWFydGVyLCB0aGlzTW9udGggYW5kIHRoaXNRdWFydGVyIGFyZSB0aGUgc2FtZSBkYXlzKSwgc28gYSBjb21wYXJpc29uXG4gIC8vIHNoaWZ0cyBieSB0aGUgcmlnaHQgdW5pdC4gc3RhcnQgYW5kIGVuZCBzdGF5IHRoZSB3aW5kb3c7IGEgc2VydmVyIHRoYXRcbiAgLy8gZG9lcyBub3Qga25vdyB0aGUga2V5IGlnbm9yZXMgaXQuXG4gIHByZXNldD86IFJlcG9ydFJlbGF0aXZlUmFuZ2U7XG59XG5cbi8vIFBlci1jb21wb25lbnQgaW50ZXJhY3Rpb24gc3RhdGUgc2VudCB3aXRoIHRoZSBkYXRhIHJlcXVlc3Q6IGxpc3RzIHNlbmRcbi8vIHNvcnQvcGFnaW5nIGFuZCB0aGUgdGV4dCBpbiB0aGVpciBzZWFyY2ggYm94OyB0aW1lLXNlcmllcyBjaGFydHMgc2VuZCB0aGVcbi8vIGdyYWluIHBpY2tlZCBvbiB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBhdXRob3JlZFxuLy8gZ3JhbnVsYXJpdHkgZm9yIHRoYXQgcmVxdWVzdCBvbmx5LiBUaGUgd2lyZSBrZXkgc3RheXMgYGZyZXF1ZW5jeWAg4oCUIGl0IGlzIHRoZVxuLy8gYnVja2V0aW5nIGZyZXF1ZW5jeSB0aGUgc2VydmVyIGFwcGxpZXMuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGFTdGF0ZSB7XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBwYWdlPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgZnJlcXVlbmN5PzogQ2hhcnRHcmFudWxhcml0eTtcbiAgLy8gQSBsaXN0J3Mgc2VhcmNoIGJveCB0ZXh0LiBUaGUgc2VydmVyIHRyaW1zIGl0LCBjdXRzIGl0IHRvIGl0cyBvd24gbWF4aW11bVxuICAvLyBsZW5ndGggYW5kIG1hdGNoZXMgaXQgYWdhaW5zdCBldmVyeSB0ZXh0IGNvbHVtbiB0aGUgbGlzdCBzaG93cy5cbiAgc2VhcmNoPzogc3RyaW5nO1xuICAvLyBUaGUgY29uZmlnIGNvbHVtbiBuYW1lcyBhIHZpZXdlciBoaWQgb24gYSBwbGFpbiBsaXN0LiBTZW50IHdpdGggYSBDU1ZcbiAgLy8gZXhwb3J0IG9ubHkgKHRoZSBzY3JlZW4gaGlkZXMgdGhlbSBpdHNlbGYpOiB0aGUgZmlsZSBsZWF2ZXMgdGhlbSBvdXQuIFRoZVxuICAvLyBzZXJ2ZXIgaWdub3JlcyBpdCBvbiBhIGNyb3NzLXRhYiwgYW5kIHdoZW4gaXQgd291bGQgaGlkZSBldmVyeSBjb2x1bW4uXG4gIGhpZGRlbkNvbHVtbnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhIHtcbiAgY29sdW1uczogc3RyaW5nW107XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHBhZ2luZz86IHsgdG90YWw6IG51bWJlcjsgcGFnZTogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH07XG4gIHRydW5jYXRlZDogYm9vbGVhbjtcbiAgLy8gVGhlIGVmZmVjdGl2ZSB0aW1lIGJ1Y2tldCB0aGUgcm93cyB3ZXJlIGdyb3VwZWQgaW50byAoYWZ0ZXIgYW55IGdyb3VwLWJ5XG4gIC8vIG92ZXJyaWRlKSwgb3IgbnVsbCBmb3IgYSBub24tdGltZSBheGlzLiBEcml2ZXMgdGhlIGNvbXBhY3QgeC1heGlzIGxhYmVscy5cbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgLy8gUGFnZSAxIG9mIGEgc2VhcmNoZWQgbGlzdCB3aG9zZSBzZWFyY2ggY291bGQgbm90IGFwcGx5ICh0aGUgbGlzdCBoYXMgbm9cbiAgLy8gdGV4dCBjb2x1bW4gdG8gc2VhcmNoKTogd2h5IHRoZSByb3dzIGFyZSBub3QgbmFycm93ZWQuIEFic2VudCBvdGhlcndpc2UuXG4gIHNlYXJjaE5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBQYWdlIDEgb2YgYSBsaXN0IHdpdGggY29uZmlnLnRvdGFscyBvbjogaXRzIHRvdGFscyByb3csIGFzIHJhdyB2YWx1ZXNcbiAgLy8ga2V5ZWQgbGlrZSB0aGUgY29sdW1ucyAoYSBwbGFpbiBsaXN0J3MgbWVhc3VyZSBhbGlhc2VzOyBhIGNyb3NzLXRhYidzXG4gIC8vIHBpdm90IGNlbGwgY29sdW1ucywgdGhlIHJvdy1rZXkgY29sdW1uIGFic2VudCksIG9yIG51bGwgd2l0aCB0b3RhbHNOb3RlXG4gIC8vIHNheWluZyB3aHkgdGhlcmUgaXMgbm9uZS4gQWJzZW50IG9uIGV2ZXJ5IG90aGVyIHBhZ2UgYW5kIGxpc3QuXG4gIHRvdGFscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgdG90YWxzTm90ZT86IHN0cmluZyB8IG51bGw7XG4gIC8vIFRoZSB3aW5kb3cgb2YgZGF5cyB0aGUgY29tcG9uZW50IHJlYWRzLCB3aGVuIGl0cyBxdWVyeSBoYXMgYSB0aW1lZnJhbWUuXG4gIC8vIEFic2VudCBvdGhlcndpc2UsIGFuZCBmcm9tIG9sZGVyIHNlcnZlcnMuXG4gIHRpbWVmcmFtZT86IENvbXBvbmVudFRpbWVmcmFtZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW50IGFuZCBwcmlvciB3aW5kb3dzIG9mIGEgY29tcG9uZW50IHdob3NlIG1lYXN1cmVzIGNvbXBhcmVcbiAgLy8gYWdhaW5zdCBhbiBlYXJsaWVyIHBlcmlvZC4gQWJzZW50IHdoZW4gbm8gbWVhc3VyZSBjb21wYXJlcy4gU2VudCBvbiBldmVyeVxuICAvLyBsaXN0IHBhZ2UgYW5kIG9uIGNoYXJ0IGFuZCBLUEkgZGF0YS5cbiAgY29tcGFyaXNvbj86IENvbXBvbmVudENvbXBhcmlzb24gfCBudWxsO1xuICAvLyBXaGF0IGVhY2ggY29tcGFyZWQsIHdpbmRvd2VkLCByYW5rZWQgb3Igc2hhcmVkIG91dHB1dCBjb2x1bW4gaXMsIGJ5IGFsaWFzLlxuICAvLyBQbGFpbiBtZWFzdXJlIGNvbHVtbnMgYXJlIGxlZnQgb3V0LlxuICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgT3V0cHV0TWV0YT47XG4gIC8vIEEgY3Jvc3MtdGFiIG9ubHk6IHRoZSBtZWFzdXJlIGFsaWFzIGVhY2ggcGl2b3QgY2VsbCBjb2x1bW4gaG9sZHMsIHNvIGFcbiAgLy8gY2VsbCB0YWtlcyBpdHMgbWVhc3VyZSdzIG91dHB1dCBtZWFuaW5nLiBOZXZlciBzZW50IGZvciBhIHNxbC1tb2RlIGxpc3QuXG4gIGNlbGxNZWFzdXJlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIEhvdyBlYWNoIHdpbmRvd2VkIG91dHB1dCBjb2x1bW4gKHJ1bm5pbmcsIHRvLWRhdGUgb3Igcm9sbGluZykgd2FzXG4gIC8vIGNvbXB1dGVkLCBieSBhbGlhcy5cbiAgd2luZG93cz86IFJlY29yZDxzdHJpbmcsIFdpbmRvd01ldGE+O1xuICAvLyBBIEtQSSB3aXRoIGEgY29tcGFyaXNvbiwgYSB0YXJnZXQgb3IgYSBzcGFya2xpbmU6IGV2ZXJ5IG51bWJlciB0aGUgY2FyZFxuICAvLyBzaG93cyBiZXNpZGUgaXRzIHZhbHVlLCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuXG4gIGtwaT86IENvbXBvbmVudEtwaSB8IG51bGw7XG4gIC8vIFRoZSB0aW1lLWF4aXMgdmFsdWUgb2YgdGhlIGJ1Y2tldCBjb250YWluaW5nIHRvZGF5LCB3cml0dGVuIGFzIHRoZSByb3dzXG4gIC8vIHdyaXRlIGl0LCB3aGVuIHRoYXQgYnVja2V0IGlzIG5vdCBmaW5pc2hlZCB5ZXQ7IG51bGwgb3RoZXJ3aXNlLiBBIGNoYXJ0XG4gIC8vIG1hcmtzIGl0IGFzIHBhcnRpYWwuXG4gIHBhcnRpYWxQZXJpb2Q/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBXaGVyZSBhIGNvbXBvbmVudCdzIHRpbWVmcmFtZSB3aW5kb3cgY2FtZSBmcm9tOiBhIHZpZXdlciBkYXRlUmFuZ2UgYm91bmQgdG9cbi8vIHRoZSB0aW1lZnJhbWUgY29sdW1uICh3aGljaCByZXBsYWNlcyB0aGUgYXV0aG9yZWQgcmFuZ2UsIG5ldmVyIG5hcnJvd3Ncbi8vIGl0KSwgdGhlIGF1dGhvcmVkIHJlbGF0aXZlIHJhbmdlLCB0aGUgYXV0aG9yZWQgZml4ZWQgZGF5cywgb3Igbm90aGluZyAoYW5cbi8vIG9wZW4gd2luZG93KS5cbmV4cG9ydCB0eXBlIFRpbWVmcmFtZVNvdXJjZSA9ICdmaWx0ZXInIHwgJ3JhbmdlJyB8ICdmaXhlZCcgfCAnbm9uZSc7XG5cbi8vIFRoZSB3aW5kb3cgYSBjb21wb25lbnQncyB0aW1lZnJhbWUgcmVzb2x2ZWQgdG8uIHN0YXJ0IGFuZCBlbmQgYXJlXG4vLyBpbmNsdXNpdmUgJ3l5eXktTU0tZGQnIGRheXMgaW4gdGhlIHJlcG9ydCdzIHpvbmUsIHdyaXR0ZW4gd2l0aG91dCBhIHpvbmUuXG4vLyB0aHJvdWdoIGlzIHRoZSBVVEMgJ3l5eXktTU0tZGQgSEg6bW06c3MnIGluc3RhbnQgYSB3aW5kb3cgb24gYSBkYXRldGltZVxuLy8gY29sdW1uIGlzIGN1dCBhdCB3aGVuIGl0IGVuZHMgdG9kYXk7IGl0IHJlYWRzIGFzIGEgdGltZSBpbiB0aGUgcmVwb3J0IHpvbmUuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFRpbWVmcmFtZSB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBzdGFydDogc3RyaW5nIHwgbnVsbDtcbiAgZW5kOiBzdHJpbmcgfCBudWxsO1xuICB0aHJvdWdoOiBzdHJpbmcgfCBudWxsO1xuICByYW5nZTogUmVwb3J0UmVsYXRpdmVSYW5nZSB8IG51bGw7XG4gIHNvdXJjZTogVGltZWZyYW1lU291cmNlO1xufVxuXG4vLyBIb3cgYSBjb21wYXJpc29uIGlzIGxhaWQgb3V0OiBvbmUgdmFsdWUgcGVyIHdpbmRvdyAocmFuZ2UpLCBhIHByaW9yIHNlcmllc1xuLy8gYmVzaWRlIGEgdGltZSBheGlzIChzZXJpZXMpLCBvciBlYWNoIHBlcmlvZCdzIHZhbHVlIGFzIGF0IHRoZSBlbmQgb2YgdGhlXG4vLyBwZXJpb2QgYmVmb3JlIChhc19vZikuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uTW9kZSA9ICdyYW5nZScgfCAnc2VyaWVzJyB8ICdhc19vZic7XG5cbi8vIHRvX2RhdGUgY29tcGFyZXMgbGlrZSB3aXRoIGxpa2UgKHRoZSBmaXJzdCAyIGRheXMgb2YgYSBtb250aCBhZ2FpbnN0IHRoZVxuLy8gZmlyc3QgMiBkYXlzIG9mIHRoZSBvbmUgYmVmb3JlKTsgZnVsbCBjb21wYXJlcyB3aG9sZSBwZXJpb2RzLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbkFsaWduID0gJ3RvX2RhdGUnIHwgJ2Z1bGwnO1xuXG4vLyBXaGF0IGEgbWVhc3VyZSBpcyBjb21wYXJlZCBhZ2FpbnN0LiBNaXJyb3JzIHRoZSBzZXJ2ZXInc1xuLy8gQ29tcGFyaXNvbkFnYWluc3RFbnVtIHZhbHVlIGZvciB2YWx1ZS5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25BZ2FpbnN0ID1cbiAgfCAncHJldmlvdXNfcGVyaW9kJ1xuICB8ICdwcmV2aW91c193ZWVrJ1xuICB8ICdwcmV2aW91c19tb250aCdcbiAgfCAncHJldmlvdXNfcXVhcnRlcidcbiAgfCAncHJldmlvdXNfeWVhcidcbiAgfCAncmFuZ2UnO1xuXG4vLyBXaHkgYSBjb21wYXJpc29uIHJlYWRzIGFzIGl0IGRvZXMuIFRoZSBzZXJ2ZXIgc2VuZHMgY29kZXMsIG5ldmVyXG4vLyBzZW50ZW5jZXM7IHRoZSB2aWV3ZXIgd29yZHMgdGhlbS5cbi8vIC0gbm9fd2luZG93OiBubyBkYXRlIHJhbmdlIHRvIGNvbXBhcmUgeWV0O1xuLy8gLSB1bml0X2luZmVycmVkOiB0aGUgcGVyaW9kIHVuaXQgd2FzIGluZmVycmVkIGZyb20gdGhlIGRheXMsIG5vdCBuYW1lZDtcbi8vIC0gd2luZG93X2luX2Z1dHVyZTogdGhlIHdpbmRvdyBzdGFydHMgYWZ0ZXIgdG9kYXk7XG4vLyAtIG90aGVyX2RhdGVfZmlsdGVyOiBhIGRhdGUgZmlsdGVyIG9uIGFub3RoZXIgY29sdW1uIGFsc28gYXBwbGllcztcbi8vIC0gZ3JhaW5fZm9sbG93ZWQ6IHRoZSBwcmlvciBmb2xsb3dzIHRoZSBncm91cC1ieSBncmFpbiBwaWNrZWQgb24gdGhlIHJlcG9ydC5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25Ob3RlQ29kZSA9XG4gIHwgJ25vX3dpbmRvdydcbiAgfCAndW5pdF9pbmZlcnJlZCdcbiAgfCAnd2luZG93X2luX2Z1dHVyZSdcbiAgfCAnb3RoZXJfZGF0ZV9maWx0ZXInXG4gIHwgJ2dyYWluX2ZvbGxvd2VkJztcblxuLy8gT25lIGNvbXBhcmlzb24gd2luZG93OiBpbmNsdXNpdmUgJ3l5eXktTU0tZGQnIGRheXMgaW4gdGhlIHJlcG9ydCdzIHpvbmUsXG4vLyBhbmQgdGhlIFVUQyBpbnN0YW50IGl0IGlzIGN1dCBhdCB3aGVuIGl0IGVuZHMgdG9kYXkgb24gYSBkYXRldGltZSBjb2x1bW4uXG4vLyBJbiBzZXJpZXMgbW9kZSBpdCBpcyB0aGUgc3BhbiB0aGUgY2hhcnQgc2hvd3MuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25XaW5kb3cge1xuICBzdGFydDogc3RyaW5nO1xuICBlbmQ6IHN0cmluZztcbiAgdGhyb3VnaDogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gSG93IGZhciBiYWNrIG9uZSBwcmlvciBsYW5lIHNpdHMuIEEgY3VzdG9tIHJhbmdlIGhhcyBubyB1bml0IG9yIGNvdW50OyBhXG4vLyBzaGlmdCBieSB0aGUgd2luZG93J3MgbGVuZ3RoIGlzIHVuaXQgZGF5IHdpdGggdGhlIGxlbmd0aCBhcyB0aGUgY291bnQ7IGFcbi8vIHByZXZpb3VzIHllYXIgaXMgMzY0IGRheXMgb24gYSBkYXkgYXhpcyBhbmQgNTIgd2Vla3Mgb24gYSB3ZWVrIGF4aXMuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25PZmZzZXQge1xuICBhZ2FpbnN0OiBDb21wYXJpc29uQWdhaW5zdDtcbiAgdW5pdDogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGNvdW50OiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBBIGNvbXBvbmVudCdzIGNvbXBhcmlzb246IHRoZSB6b25lIGl0cyBkYXlzIGFyZSBpbiwgdGhlIGN1cnJlbnQgd2luZG93XG4vLyAobnVsbCB3aGVuIHRoZXJlIGlzIG5vIHdpbmRvdyB0byBjb21wYXJlIHlldCkgYW5kIHVwIHRvIDIgcHJpb3IgbGFuZXM6XG4vLyBwcmlvcnNbaV0gYW5kIG9mZnNldHNbaV0gZGVzY3JpYmUgbGFuZSBpICsgMS4gZmxvb3IgaXMgdGhlICd5eXl5LU1NLWRkJyBkYXlcbi8vIG9mIHRoZSBmaXJzdCByb3cgdGhlIHF1ZXJ5J3Mgb3duIGNvbmRpdGlvbnMga2VlcCAodmlld2VyIGZpbHRlcnMgYXNpZGUpOlxuLy8gYSBwcmlvciB3aW5kb3cgd2hvbGx5IGJlZm9yZSBpdCBoYXMgbm8gZGF0YSByYXRoZXIgdGhhbiBhIHplcm8uXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudENvbXBhcmlzb24ge1xuICBtb2RlOiBDb21wYXJpc29uTW9kZTtcbiAgdGltZXpvbmU6IHN0cmluZztcbiAgYWxpZ246IENvbXBhcmlzb25BbGlnbjtcbiAgY3VycmVudDogQ29tcGFyaXNvbldpbmRvdyB8IG51bGw7XG4gIHByaW9yczogQ29tcGFyaXNvbldpbmRvd1tdO1xuICBvZmZzZXRzOiBDb21wYXJpc29uT2Zmc2V0W107XG4gIGZsb29yOiBzdHJpbmcgfCBudWxsO1xuICBub3RlczogQ29tcGFyaXNvbk5vdGVDb2RlW107XG59XG5cbi8vIFdoYXQgYW4gb3V0cHV0IGNvbHVtbiBob2xkczogYSBtZWFzdXJlJ3MgdmFsdWUsIGl0cyByYW5rIG9yIGl0cyBzaGFyZS5cbmV4cG9ydCB0eXBlIE91dHB1dEtpbmQgPSAndmFsdWUnIHwgJ3JhbmsnIHwgJ3NoYXJlJztcblxuLy8gV2hpY2ggc2lkZSBvZiBhIGNvbXBhcmlzb24gYW4gb3V0cHV0IGNvbHVtbiBpczogdGhlIGN1cnJlbnQgdmFsdWUsIHRoZVxuLy8gcHJpb3Igb25lLCB0aGVpciBkaWZmZXJlbmNlLCBvciB0aGUgZGlmZmVyZW5jZSBhcyBhIDAtMSBmcmFjdGlvbiBvZiB0aGVcbi8vIHByaW9yLiBudWxsIGZvciBhbiBvdXRwdXQgdGhhdCBpcyBub3QgY29tcGFyZWQuXG5leHBvcnQgdHlwZSBPdXRwdXRSb2xlID0gJ2N1cnJlbnQnIHwgJ3ByaW9yJyB8ICdjaGFuZ2UnIHwgJ3BlcmNlbnRfY2hhbmdlJztcblxuLy8gSG93IHRpZWQgdmFsdWVzIHJhbms6IDEsIDEsIDMgKGNvbXBldGl0aW9uKSBvciAxLCAxLCAyIChkZW5zZSkuXG5leHBvcnQgdHlwZSBPdXRwdXRSYW5rTWV0aG9kID0gJ2NvbXBldGl0aW9uJyB8ICdkZW5zZSc7XG5cbi8vIEEgcmFuayBvdXRwdXQ6IGhvdyB0aWVzIHJhbmssIHdoaWNoIGVuZCByYW5rcyAxIChkZXNjOiB0aGUgbGFyZ2VzdCksIGFuZFxuLy8gdGhlIGRpbWVuc2lvbiBvdXRwdXRzIGl0IHJlc3RhcnRzIHdpdGhpbiAobm9uZTogdGhlIHdob2xlIHJlc3VsdCkuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFJhbmsge1xuICBtZXRob2Q6IE91dHB1dFJhbmtNZXRob2Q7XG4gIGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYyc7XG4gIHdpdGhpbjogc3RyaW5nW107XG59XG5cbi8vIEEgc2hhcmUgb3V0cHV0OiB0aGUgZGltZW5zaW9uIG91dHB1dHMgd2hvc2UgdG90YWwgaXQgaXMgYSBzaGFyZSBvZiAobm9uZTpcbi8vIHRoZSB3aG9sZSByZXN1bHQpLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRTaGFyZSB7XG4gIHdpdGhpbjogc3RyaW5nW107XG59XG5cbi8vIFRoZSBtZWFuaW5nIG9mIG9uZSBjb21wYXJlZCwgd2luZG93ZWQsIHJhbmtlZCBvciBzaGFyZWQgb3V0cHV0IGNvbHVtbi5cbi8vIG1lYXN1cmUgaXMgdGhlIHNvdXJjZSBtZWFzdXJlJ3MgYWxpYXMsIHdob3NlIGZvcm1hdCB0aGUgY29sdW1uIGluaGVyaXRzO1xuLy8gb2Zmc2V0IGlzIHRoZSBwcmlvciBsYW5lIGEgcHJpb3IsIGNoYW5nZSBvciBwZXJjZW50IGNoYW5nZSBiZWxvbmdzIHRvIChpdHNcbi8vIHdpbmRvdyBpcyBjb21wYXJpc29uLnByaW9yc1tvZmZzZXQgLSAxXSkuIFVubGVzcyB0aGUgY29uZmlnIGZvcm1hdHMgaXQsIGFcbi8vIHNoYXJlIHByaW50cyBhcyBhIHBlcmNlbnQgdG8gMSBkZWNpbWFsIGFuZCBhIHJhbmsgYXMgYSB3aG9sZSBudW1iZXIuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dE1ldGEge1xuICBtZWFzdXJlOiBzdHJpbmc7XG4gIGtpbmQ6IE91dHB1dEtpbmQ7XG4gIHJvbGU6IE91dHB1dFJvbGUgfCBudWxsO1xuICBvZmZzZXQ6IG51bWJlciB8IG51bGw7XG4gIHdpbmRvdzogYm9vbGVhbjtcbiAgcmFuazogT3V0cHV0UmFuayB8IG51bGw7XG4gIHNoYXJlOiBPdXRwdXRTaGFyZSB8IG51bGw7XG59XG5cbi8vIEEgd2luZG93IG92ZXIgdGhlIHJvd3M6IGEgcnVubmluZyB0b3RhbCwgYSB0b3RhbCB0byBkYXRlIHdpdGhpbiBlYWNoXG4vLyBwZXJpb2QgKG1vbnRoIHRvIGRhdGUpLCBvciBhIHJvbGxpbmcgc3BhbiBvZiBwZXJpb2RzLlxuZXhwb3J0IHR5cGUgV2luZG93S2luZCA9ICdydW5uaW5nJyB8ICd0b19kYXRlJyB8ICdyb2xsaW5nJztcblxuLy8gV2h5IGEgd2luZG93IHJlYWRzIGFzIGl0IGRvZXMuIENvZGVzIG9ubHk7IHRoZSB2aWV3ZXIgd29yZHMgdGhlbS5cbmV4cG9ydCB0eXBlIFdpbmRvd05vdGVDb2RlID1cbiAgfCAnc25hcHBlZF9zdGFydCdcbiAgfCAnc3Bhbl9jb252ZXJ0ZWQnXG4gIHwgJ2dyYWluX3Rvb19jb2Fyc2UnXG4gIHwgJ2VxdWFsX2dyYWluX3BsYWluJ1xuICB8ICdvd25fZmlsdGVyX2NhcHNfbGVhZF9pbidcbiAgfCAnd2Vla19ieV9tb25kYXknXG4gIHwgJ2luY29tcGxldGVfaGVhZCc7XG5cbi8vIEhvdyBvbmUgd2luZG93ZWQgb3V0cHV0IGNvbHVtbiB3YXMgY29tcHV0ZWQuIHBlcmlvZHMgYW5kIHVuaXQgc2l6ZSBhXG4vLyByb2xsaW5nIHdpbmRvdyAoZHJhd25QZXJpb2RzIGlzIHRoYXQgc3BhbiBjb3VudGVkIGluIHRoZSBncmFpbiB0aGUgcm93c1xuLy8gYXJlIGRyYXduIGF0KTsgcmVzZXRFdmVyeSByZXN0YXJ0cyBhIHRvLWRhdGUgd2luZG93OyBhdmVyYWdlIG1ha2VzIHRoZVxuLy8gd2luZG93IGFuIGF2ZXJhZ2UgcmF0aGVyIHRoYW4gYSB0b3RhbDsgZnJvbUJlZ2lubmluZ1xuLy8gcnVucyBhIHRvdGFsIGZyb20gdGhlIGZpcnN0IHJvdyBldmVyIHJhdGhlciB0aGFuIGZyb20gdGhlIGZpcnN0IHJvdyBzaG93bi5cbi8vIHN0YXJ0LCBlbmQgYW5kIGxlYWRJbiBhcmUgJ3l5eXktTU0tZGQnIHJlcG9ydC16b25lIGRheXM6IHRoZSByb3dzIHNob3duLFxuLy8gYW5kIHRoZSBlYXJsaWVyIGRheSB0aGUgd2luZG93IHJlYWRzIGZyb20gc28gaXRzIGZpcnN0IHJvd3MgYXJlIHdob2xlLlxuLy8gZGVzY3JpcHRpb24gaXMgdGhlIHNlcnZlcidzIEVuZ2xpc2ggZm9yIHRoZSBhZ2VudCBhbmQgdGhlIGV4cG9ydHM7IHRoZVxuLy8gdmlld2VyIGNvbXBvc2VzIGl0cyBvd24gd29yZHMgZnJvbSB0aGUgZmllbGRzLlxuZXhwb3J0IGludGVyZmFjZSBXaW5kb3dNZXRhIHtcbiAga2luZDogV2luZG93S2luZDtcbiAgcGVyaW9kczogbnVtYmVyIHwgbnVsbDtcbiAgdW5pdDogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGRyYXduUGVyaW9kczogbnVtYmVyIHwgbnVsbDtcbiAgcmVzZXRFdmVyeTogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGF2ZXJhZ2U6IGJvb2xlYW47XG4gIGZyb21CZWdpbm5pbmc6IGJvb2xlYW47XG4gIGRhdGVDb2x1bW46IHN0cmluZyB8IG51bGw7XG4gIHN0YXJ0OiBzdHJpbmcgfCBudWxsO1xuICBlbmQ6IHN0cmluZyB8IG51bGw7XG4gIGxlYWRJbjogc3RyaW5nIHwgbnVsbDtcbiAgbm90ZXM6IFdpbmRvd05vdGVDb2RlW107XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8vIFdoaWNoIGRlbHRhIGEgS1BJIGNhcmQgc2hvd3M6IHRoZSBkaWZmZXJlbmNlLCBvciB0aGUgcGVyY2VudCBjaGFuZ2UuXG5leHBvcnQgdHlwZSBLcGlEZWx0YVNob3cgPSAnY2hhbmdlJyB8ICdwZXJjZW50X2NoYW5nZSc7XG5cbi8vIFdoeSBhIEtQSSdzIGRlbHRhIHJlYWRzIGFzIGl0IGRvZXM6XG4vLyAtIG5vX3ByaW9yX2RhdGE6IHRoZSBwcmlvciB3aW5kb3cgaGFzIG5vIHZhbHVlO1xuLy8gLSB1cF9mcm9tX3plcm86IHRoZSBwcmlvciB3YXMgMCwgc28gdGhlcmUgaXMgbm8gcGVyY2VudCBjaGFuZ2U7XG4vLyAtIG5vX2NoYW5nZTogYm90aCBhcmUgMDtcbi8vIC0gbm9fZGF0YV9laXRoZXI6IG5laXRoZXIgd2luZG93IGhhcyBhIHZhbHVlO1xuLy8gLSBzaWduX2NoYW5nZTogdGhlIHZhbHVlIGNyb3NzZWQgemVybywgc28gdGhlcmUgaXMgbm8gcGVyY2VudCBjaGFuZ2UuXG5leHBvcnQgdHlwZSBLcGlOb3RlQ29kZSA9XG4gIHwgJ25vX3ByaW9yX2RhdGEnXG4gIHwgJ3VwX2Zyb21femVybydcbiAgfCAnbm9fY2hhbmdlJ1xuICB8ICdub19kYXRhX2VpdGhlcidcbiAgfCAnc2lnbl9jaGFuZ2UnO1xuXG4vLyBBIEtQSSdzIHByb2dyZXNzIHRvd2FyZCBpdHMgY29uZmlndXJlZCB0YXJnZXQuIHByb2dyZXNzIGlzIHZhbHVlIC8gdGFyZ2V0XG4vLyAobnVsbCB3aGVuIHRoZSB0YXJnZXQgaXMgMCk7IG1ldCBmb2xsb3dzIHRoZSBjb25maWcncyBpbmNyZWFzZUlzIChudWxsXG4vLyB3aGVuIGl0IGlzIG5ldXRyYWwpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGlUYXJnZXQge1xuICB2YWx1ZTogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgcHJvZ3Jlc3M6IG51bWJlciB8IG51bGw7XG4gIG1ldDogYm9vbGVhbiB8IG51bGw7XG59XG5cbi8vIE9uZSBzcGFya2xpbmUgcG9pbnQ6IHRoZSBwZXJpb2QsIHdyaXR0ZW4gYXMgYSB0aW1lLWF4aXMgdmFsdWUsIGFuZCB0aGVcbi8vIHZhbHVlIGluIGl0IChudWxsIHdoZW4gYSBub24tYWRkaXRpdmUgbWVhc3VyZSBoYXMgbm8gcm93cyB0aGVyZSkuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaVNwYXJrbGluZVBvaW50IHtcbiAgcGVyaW9kOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHNwYXJrbGluZSBwb2ludHMsIG9sZGVzdCBmaXJzdC4gcGFydGlhbCBzYXlzIHRoZSBsYXN0IHBlcmlvZCBpc1xuLy8gbm90IGZpbmlzaGVkIHlldC5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpU3BhcmtsaW5lIHtcbiAgZ3JhbnVsYXJpdHk6IENoYXJ0R3JhbnVsYXJpdHk7XG4gIHBhcnRpYWw6IGJvb2xlYW47XG4gIHBvaW50czogQ29tcG9uZW50S3BpU3BhcmtsaW5lUG9pbnRbXTtcbn1cblxuLy8gRXZlcnkgbnVtYmVyIGEgS1BJIGNhcmQgc2hvd3MgYmVzaWRlIGl0cyB2YWx1ZS4gc2hvdyBuYW1lcyB0aGUgZGVsdGEgdG9cbi8vIHByaW50LCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuIFdoZW4gdmFsdWUgaXMgbnVsbCB0aGUgY2FyZCBzaG93cyBhIGRhc2ggYW5kXG4vLyBubyBjb21wYXJpc29uLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGkge1xuICB2YWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3I6IG51bWJlciB8IG51bGw7XG4gIGNoYW5nZTogbnVtYmVyIHwgbnVsbDtcbiAgcGVyY2VudENoYW5nZTogbnVtYmVyIHwgbnVsbDtcbiAgc2hvdzogS3BpRGVsdGFTaG93O1xuICBub3RlOiBLcGlOb3RlQ29kZSB8IG51bGw7XG4gIHRhcmdldDogQ29tcG9uZW50S3BpVGFyZ2V0IHwgbnVsbDtcbiAgc3BhcmtsaW5lOiBDb21wb25lbnRLcGlTcGFya2xpbmUgfCBudWxsO1xufVxuXG4vLyBBIGNvbXBvbmVudCdzIENTViBleHBvcnQ6IHRoZSBwcmVzaWduZWQgZG93bmxvYWQgVVJMLCBwbHVzIG9uZSBzZW50ZW5jZSBwZXJcbi8vIHdheSB0aGUgZmlsZSBmYWxscyBzaG9ydCBvZiB0aGUgZnVsbCByZXN1bHQgKGN1dCBhdCB0aGUgZXhwb3J0IGNlaWxpbmcsIG9yXG4vLyBjdXQgYXMgdGhlIGNoYXJ0IGl0c2VsZiBpcykuIEVtcHR5IHdoZW4gdGhlIGZpbGUgaXMgY29tcGxldGUuIE9wdGlvbmFsXG4vLyBiZWNhdXNlIGEgc2VydmVyIG9uIGFuIG9sZGVyIGZyYW1ld29yayBhbnN3ZXJzIHdpdGggdGhlIHVybCBhbG9uZS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RXhwb3J0UmVzcG9uc2Uge1xuICB1cmw6IHN0cmluZztcbiAgbm90ZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMaXN0SXRlbSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgbW9kaWZ5RGF0ZTogc3RyaW5nO1xuICBzdGF0ZT86IFJlcG9ydFN0YXRlO1xuICAvLyBUaGUgZm9sZGVyIHRoZSByZXBvcnQgaXMgZmlsZWQgdW5kZXIuIG51bGwgaXMgYSByZWFsLCBjb21tb24gdmFsdWUg4oCUIHRoZVxuICAvLyByZXBvcnQgc2l0cyBhdCB0aGUgcm9vdCBvZiB0aGUgbGlzdGluZyB0cmVlIGFsb25nc2lkZSB0aGUgZm9sZGVycy5cbiAgLy9cbiAgLy8gT3B0aW9uYWwgbGlrZSBgc3RhdGVgIGJlc2lkZSBpdDogdGhlIGJhY2tlbmQgYWx3YXlzIHNlbmRzIGl0LCBidXQgbWFraW5nIGl0XG4gIC8vIHJlcXVpcmVkIGlzIGEgYnJlYWtpbmcgdHlwZSBjaGFuZ2UgZm9yIGV2ZXJ5IGNvbnN1bWVyIGhvbGRpbmcgYVxuICAvLyBSZXBvcnRMaXN0SXRlbSBsaXRlcmFsIChmaXh0dXJlcywgbW9ja3MpIGFuZCBidXlzIG5vdGhpbmcg4oCUIHRoZSBsaXN0aW5nXG4gIC8vIHJlYWRzIGl0IGFzIGA/PyBudWxsYCBlaXRoZXIgd2F5LlxuICByZXBvcnRGb2xkZXJJZD86IG51bWJlciB8IG51bGw7XG59XG5cbi8vIE9uZSBmb2xkZXIgaW4gdGhlIGxpc3RpbmcgdHJlZSDigJQgYW4gYXVkaWVuY2UgYnVja2V0IChcIk1hbmFnZW1lbnRcIixcbi8vIFwiT3BlcmF0aW9uc1wiKSByZXBvcnRzIGFyZSBmaWxlZCBpbnRvLiBGb2xkZXJzIG5lc3QgdmlhIHBhcmVudFJlcG9ydEZvbGRlcklkO1xuLy8gcmVwb3J0cyBuZXZlciBkbywgc28gdGhlIHRyZWUncyBvbmx5IGJyYW5jaCBub2RlcyBhcmUgZm9sZGVycy5cbi8vXG4vLyBgc3RhdGVgIGlzIHRoZSBmb2xkZXIncyBPV04gc3RhdGUuIERlbGV0aW5nIGEgZm9sZGVyIHdyaXRlcyBvbmx5IHRoYXQsIGFuZFxuLy8gZXZlcnl0aGluZyBiZWxvdyBpdCBjb3VudHMgYXMgZGVsZXRlZCBieSBwb3NpdGlvbiDigJQgc2VlIFJlcG9ydE5vZGUuZGVsZXRlZC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Rm9sZGVyIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJlbnRSZXBvcnRGb2xkZXJJZDogbnVtYmVyIHwgbnVsbDtcbiAgc3RhdGU/OiBSZXBvcnRTdGF0ZTtcbn1cblxuLy8gR0VUIC9hcGkvcmVwb3J0cyByZXR1cm5zIGJvdGggaGFsdmVzIGZsYXQ7IHRoZSBsaXN0aW5nIG5lc3RzIHRoZW0gaXRzZWxmLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRUcmVlIHtcbiAgcmVwb3J0czogUmVwb3J0TGlzdEl0ZW1bXTtcbiAgZm9sZGVyczogUmVwb3J0Rm9sZGVyW107XG59XG5cbmV4cG9ydCBlbnVtIFJlcG9ydE5vZGVUeXBlIHtcbiAgRm9sZGVyID0gJ2ZvbGRlcicsXG4gIFJlcG9ydCA9ICdyZXBvcnQnLFxufVxuXG4vLyBPbmUgbm9kZSBhcyBmcy10cmVlIHNlZXMgaXQuIEZvbGRlcnMgYW5kIHJlcG9ydHMgc2hhcmUgb25lIGlkIHNwYWNlIGluIHRoZVxuLy8gdmlldywgc28gdGhlIGlkcyBhcmUgcHJlZml4ZWQgKCdmOjEyJyAvICdyOjM0Jykg4oCUIGBpZGAgaXMgdGhlIG9yaWdpbmFsLFxuLy8gcGVyLXRhYmxlIGlkIHRoYXQgdGhlIEFQSSBlbmRwb2ludHMgdGFrZS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Tm9kZSB7XG4gIGtleTogc3RyaW5nO1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFJlcG9ydE5vZGVUeXBlO1xuICAvLyBPbmx5IGV2ZXIgcG9wdWxhdGVkIG9uIGEgZm9sZGVyOyBhIHJlcG9ydCBpcyBhbHdheXMgYSBsZWFmLlxuICBjaGlsZHJlbjogUmVwb3J0Tm9kZVtdO1xuICAvLyBQcmVzZW50IG9uIHJlcG9ydCBub2RlcyBvbmx5LlxuICByZXBvcnQ/OiBSZXBvcnRMaXN0SXRlbTtcbiAgLy8gVGhlIG5vZGUncyBvd24gcm93IGlzIGRlbGV0ZWQuIFdoYXQgZWFybnMgdGhlIFwiRGVsZXRlZFwiIGNoaXAg4oCUIHRoaXMgaXNcbiAgLy8gd2hhdCBzb21lYm9keSBhY3R1YWxseSBkZWxldGVkLlxuICBzdGF0ZURlbGV0ZWQ6IGJvb2xlYW47XG4gIC8vIERlbGV0ZWQgaXRzZWxmIE9SIGFueXdoZXJlIGJlbG93IGEgZGVsZXRlZCBmb2xkZXIuIE9ubHkgZXZlciB0cnVlIGluIFNob3dcbiAgLy8gRGVsZXRlZCBtb2RlICh0aGUgZGVmYXVsdCBsaXN0aW5nIG5ldmVyIHJldHVybnMgc3VjaCBhIG5vZGUpLCBhbmQgaXQgaXMgd2hhdFxuICAvLyBzd2FwcyB0aGUgcm93J3MgYWN0aW9ucyBmb3IgUmVzdG9yZS5cbiAgZGVsZXRlZDogYm9vbGVhbjtcbn1cblxuLy8gUmVwb3J0cyBhbmQgZm9sZGVycyBhcmUgYm90aCBzb2Z0LWRlbGV0YWJsZS4gQSBkZWxldGVkIHJlcG9ydCBrZWVwcyBpdHMgcGFnZXNcbi8vIGFuZCBjb21wb25lbnRzOyBhIGRlbGV0ZWQgZm9sZGVyIGtlZXBzIGV2ZXJ5dGhpbmcgZmlsZWQgdW5kZXIgaXQsIHdoaWNoIGxlYXZlc1xuLy8gdGhlIGxpc3Rpbmcgd2l0aCBpdCBhbmQgY29tZXMgYmFjayB3aXRoIGl0LiBcIlNob3cgRGVsZXRlZFwiIHNob3dzIHRoZSB3aG9sZVxuLy8gdHJlZSwgbGl2ZSBhbmQgZGVsZXRlZCB0b2dldGhlciwgc28gYW55IG9mIGl0IGNhbiBiZSByZXN0b3JlZCBpbiBwbGFjZS5cbmV4cG9ydCBlbnVtIFJlcG9ydFN0YXRlIHtcbiAgQWN0aXZlID0gJ2FjdGl2ZScsXG4gIERlbGV0ZWQgPSAnZGVsZXRlZCcsXG59XG5cbi8vIFRoZSBjaGF0IHR1cm4gZmxhZ3MgdGhpcyBjb250ZXh0J3MgYmFja2VuZCBhZGRzIChSZXBvcnRzXFxBaVZpZXcpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDaGF0UmVzcG9uc2Uge1xuICByZXBvcnRDaGFuZ2VkPzogYm9vbGVhbjtcbiAgcmVwb3J0UmVuYW1lZD86IGJvb2xlYW47XG59XG5cbi8vIE9uZSB2ZXJzaW9uIG9mIHRoZSBnbG9iYWwgQUkga25vd2xlZGdlIGRvY3VtZW50IOKAlCB0aGUgb3BlcmF0b3ItYXV0aG9yZWRcbi8vIG1hcmtkb3duIGFwcGVuZGVkIHRvIHRoZSByZXBvcnQgYWdlbnQncyBzeXN0ZW0gaW5zdHJ1Y3Rpb25zIG9uIGV2ZXJ5IHR1cm4uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEluc3RydWN0aW9uIHtcbiAgaWQ6IG51bWJlcjtcbiAgY29udGVudDogc3RyaW5nO1xuICBjdXJyZW50OiBib29sZWFuO1xuICBjcmVhdGVEYXRlOiBEYXRlO1xuICBtb2RpZnlEYXRlOiBEYXRlO1xuICBhY2NvdW50SWQ6IG51bWJlciB8IG51bGw7XG4gIGFjY291bnROYW1lOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBHRVQvUFVUIGluc3RydWN0aW9ucyBwYXlsb2FkOiB0aGUgY3VycmVudCB2ZXJzaW9uIChudWxsIHVudGlsIG9uZSBpc1xuLy8gYXV0aG9yZWQpIHBsdXMgdGhlIGZ1bGwgaGlzdG9yeSwgbmV3ZXN0IGZpcnN0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRJbnN0cnVjdGlvbnMge1xuICBpbnN0cnVjdGlvbnM6IFJlcG9ydEluc3RydWN0aW9uIHwgbnVsbDtcbiAgdmVyc2lvbnM6IFJlcG9ydEluc3RydWN0aW9uW107XG59XG5cbi8vIFRoZSBsYXRlc3Qgc2VtYW50aWMtZGF0YWJhc2UgYnVpbGQgKGFuIGZmX3Byb2Nlc3NlcyByb3cpIOKAlCBlbm91Z2ggZm9yIHRoZVxuLy8gc2V0dGluZ3MgZGlhbG9nIHRvIHNheSB3aGF0IHN0YXRlIHRoZSBidWlsZCBpcyBpbiBhbmQgd2hlbiBpdCBsYXN0IHJhbi5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZCB7XG4gIGlkOiBudW1iZXI7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIHBlcmNlbnQ6IG51bWJlciB8IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICBjcmVhdGVEYXRlOiBEYXRlO1xuICBzdGFydERhdGU6IERhdGU7XG4gIGVuZERhdGU6IERhdGU7XG59XG5cbi8vIEEgYnVpbGQgc3RhZ2UncyBzdGF0ZSBvbiB0aGUgZW50aXR5IHNjb3JlYm9hcmQ6ICdkb25lJyA9IGJ1aWx0LCAnbWlzc2luZycgPVxuLy8gc3RpbGwgbmVlZHMgYnVpbGRpbmcgKGEgbWlzc2luZyBzdGFnZSBpcyB1bmJ1aWx0IGNvbnRlbnQsIG5ldmVyIGFuIGVycm9yKS5cbmV4cG9ydCB0eXBlIFNlbWFudGljQnVpbGRTdGFnZSA9ICdkb25lJyB8ICdtaXNzaW5nJztcblxuLy8gT25lIGVudW0gY29sdW1uIG9mIGFuIGVudGl0eSwgd2l0aCB0aGUgYWxsb3dlZCB2YWx1ZXMgdGhlIGJ1aWxkIGlubGluZWQuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRFbnVtIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbi8vIE9uZSBlbnRpdHkgcm93IG9mIHRoZSBzY29yZWJvYXJkIChhbiBlbnRpdHkgPSBhIHRhYmxlICsgYSBtb2RlbCArIGFcbi8vIGhhbmRsZXIpOiBpdHMgdGFibGUvc2hhcGUgY291bnRzLCBpbmxpbmVkIGVudW0gdmFsdWVzLCBjb21wdXRlZCBmaWVsZHMsIGhvd1xuLy8gbWFueSBjb2RlIGZ1bmN0aW9ucyB3ZXJlIGNhY2hlZCAoc3BsaXQgbW9kZWwgdnMgaGFuZGxlciksIGFuZCB0aGUgcGVyLXN0YWdlXG4vLyBidWlsdC9taXNzaW5nIHN0YXRlLlxuLy9cbi8vIGBtb2RlbGAvYGhhbmRsZXJgIGFyZSB0aGUgY2xhc3NlcyB0aGUgZnVuY3Rpb25zIHdlcmUgcmVhZCBmcm9tIOKAlCB3aGF0IGFcbi8vIHJlYWRlciByZWNvZ25pemVzIHRoZSByb3cgYnksIHdoZXJlIGBrZXlgIGlzIHdoYXQgdGhlIHJlcG9ydCBBSSBhZGRyZXNzZXMgaXRcbi8vIGJ5IGluIGRlc2NyaWJlX2VudGl0eSAvIGNvbXBpbGVfcXVlcnkuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRFbnRpdHkge1xuICBrZXk6IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIGhhbmRsZXI6IHN0cmluZyB8IG51bGw7XG4gIGNvbHVtbnM6IG51bWJlcjtcbiAgcmVsYXRpb25zaGlwczogbnVtYmVyO1xuICBlbnVtczogU2VtYW50aWNCdWlsZEVudW1bXTtcbiAgY29tcHV0ZWRGaWVsZHM6IHN0cmluZ1tdO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIG1vZGVsRnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBoYW5kbGVyRnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBzdGFnZXM6IFJlY29yZDxzdHJpbmcsIFNlbWFudGljQnVpbGRTdGFnZT47XG59XG5cbi8vIE9uZSBzdGFuZGFsb25lIGNvZGUgY2xhc3MgdGhlIGJ1aWxkIHJlYWQ6IGRvbWFpbiBsb2dpYyB3aXRoIG5vIHRhYmxlIG9mIGl0c1xuLy8gb3duIChhIHN1bW1hcnkgbW9kZWwsIGEgY2FsY3VsYXRpb24gc2VydmljZSkuIFRoZSByZXBvcnQgQUkgcmVhZHMgaXRzIGNvZGVcbi8vIGV4YWN0bHkgbGlrZSBhbiBlbnRpdHkncywgYnV0IGl0IGNhbiBuZXZlciBiZSBxdWVyaWVkIOKAlCB0aGVyZSBpcyBub3RoaW5nIHRvXG4vLyBzZWxlY3QgZnJvbSDigJQgc28gaXQgY2FycmllcyBubyB0YWJsZSwgY29sdW1ucyBvciByZWxhdGlvbnNoaXBzLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkQ2xhc3Mge1xuICBrZXk6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuLy8gV2hhdCB0aGUgYnVpbGQgZGVjaWRlZCBhIHBoeXNpY2FsIHRhYmxlIGlzLiBFbnRpdHkgYW5kIGp1bmN0aW9uIGFyZSBib3RoXG4vLyByZWFjaGFibGUgYnkgdGhlIHJlcG9ydCBBSSDigJQgYW4gZW50aXR5IGRpcmVjdGx5LCBhIGp1bmN0aW9uIHRocm91Z2ggdGhlXG4vLyBtYW55LXRvLW1hbnkgaXQgYnJpZGdlcy4gRXhjbHVkZWQgaXMgbm90IHJlYWNoYWJsZSBhdCBhbGwuXG5leHBvcnQgdHlwZSBTZW1hbnRpY1RhYmxlQ2xhc3NpZmljYXRpb24gPSAnZW50aXR5JyB8ICdqdW5jdGlvbicgfCAnZXhjbHVkZWQnO1xuXG4vLyBPbmUgcGh5c2ljYWwgdGFibGUgYXMgdGhlIGJ1aWxkIGNsYXNzaWZpZWQgaXQuIGByZWFzb25gIGFuc3dlcnMgYSBzaW5nbGVcbi8vIHF1ZXN0aW9uIOKAlCB3aHkgY2FuJ3QgdGhlIHJlcG9ydCBBSSBzZWUgdGhpcyB0YWJsZT8g4oCUIGFuZCBpcyBudWxsIHdoZW4gaXQgY2FuLlxuLy8gQSBqdW5jdGlvbiB3aXRoIGEgcmVhc29uIGJyaWRnZWQgbm90aGluZywgc28gaXQgaXMganVzdCBhcyBpbnZpc2libGUgYXMgYW5cbi8vIGV4Y2x1ZGVkIHRhYmxlLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkVGFibGUge1xuICB0YWJsZTogc3RyaW5nO1xuICBjbGFzc2lmaWNhdGlvbjogU2VtYW50aWNUYWJsZUNsYXNzaWZpY2F0aW9uO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgcmVhc29uOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBUaGUgYnVpbGQgc2NvcmVib2FyZCBzaGlwcGVkIGFsb25nc2lkZSB0aGUgYnVpbGQgc3RhdHVzOiB0aGUgc3VtbWFyeSBjb3VudHMsXG4vLyB0aGUgZnVsbCBicmVha2Rvd24gdGhlIHNldHRpbmdzIGRpYWxvZyBkcmlsbHMgaW50byDigJQgQk9USCBraW5kcyBvZiB1bml0IHRoZVxuLy8gYnVpbGQgY2FjaGVzLCB0YWJsZS1iYWNrZWQgZW50aXRpZXMgYW5kIHN0YW5kYWxvbmUgY29kZSBjbGFzc2VzIOKAlCBhbmQgdGhlXG4vLyBjYXRhbG9nIG9mIGV2ZXJ5IHRhYmxlIHRoZSBidWlsZCBzYXcsIHNvIHRoZSB0YWIgY2FuIHNob3cgd2hhdCB0aGUgcmVwb3J0IEFJXG4vLyBjYW4ndCBzZWUsIG5vdCBqdXN0IHdoYXQgaXQgY2FuLlxuLy9cbi8vIGBmdW5jdGlvbkNvdW50YCBzcGFucyBlbnRpdGllcyBhbmQgY2xhc3NlcyBhbGlrZTogaXQgaXMgdGhlIHNhbWUgdG90YWwgdGhlXG4vLyBidWlsZCBpdHNlbGYgcmVwb3J0cyB3aGVuIGl0IGZpbmlzaGVzLlxuLy9cbi8vIGB0YWJsZXNgIGlzIGVtcHR5IGZvciBhbiBhcnRpZmFjdCBidWlsdCBiZWZvcmUgdGhlIGNhdGFsb2cgZXhpc3RlZC4gUmVhZCB0aGF0XG4vLyBhcyBcIm5vIGNhdGFsb2dcIiwgbmV2ZXIgYXMgXCJub3RoaW5nIHdhcyBleGNsdWRlZFwiLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRGV0YWlsIHtcbiAgLy8gV2hldGhlciB0aGUgYXJ0aWZhY3Qgd2FzIHByb2R1Y2VkIGJ5IGEgYnVpbGQgdGhhdCByYW4gdG8gdGhlIGVuZC4gUmVhZCBpdFxuICAvLyBiZXNpZGUgYGdlbmVyYXRlZEF0YCwgbmV2ZXIgaW5zdGVhZCBvZiBpdDogdGhlIHN0cnVjdHVyYWwgYXJ0aWZhY3QgaXNcbiAgLy8gcHVibGlzaGVkIEJFRk9SRSB0aGUgQUkgZnVuY3Rpb24gcGFzcywgc28gYSBidWlsZCB3aG9zZSBBSSBwYXNzIGZhaWxlZCBzdGlsbFxuICAvLyBjYXJyaWVzIGEgZGF0ZSBhbmQgYSBmdWxsIHNldCBvZiBjb3VudHMuIFRoZSBkYXRlIHNheXMgc29tZXRoaW5nIHdhc1xuICAvLyB3cml0dGVuOyBvbmx5IHRoaXMgc2F5cyB0aGUgYnVpbGQgZmluaXNoZWQgd3JpdGluZyBpdC5cbiAgY29tcGxldGU6IGJvb2xlYW47XG4gIGdlbmVyYXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgZW50aXR5Q291bnQ6IG51bWJlcjtcbiAgY2xhc3NDb3VudDogbnVtYmVyO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGVudGl0aWVzOiBTZW1hbnRpY0J1aWxkRW50aXR5W107XG4gIGNsYXNzZXM6IFNlbWFudGljQnVpbGRDbGFzc1tdO1xuICB0YWJsZUNvdW50OiBudW1iZXI7XG4gIGp1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgdW5saW5rZWRKdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGV4Y2x1ZGVkQ291bnQ6IG51bWJlcjtcbiAgdGFibGVzOiBTZW1hbnRpY0J1aWxkVGFibGVbXTtcbn1cblxuLy8gV2hpY2ggY2xhc3MgYSBjYWNoZWQgZnVuY3Rpb24gd2FzIHJlYWQgZnJvbS4gQW4gZW50aXR5J3MgY2FjaGUgc3BsaXRzIGludG9cbi8vICdtb2RlbCcgYW5kICdoYW5kbGVyJzsgYSBzdGFuZGFsb25lIGNvZGUgY2xhc3MgaGFzIG9uZSBncm91cCwgJ2NsYXNzJy5cbmV4cG9ydCB0eXBlIFNlbWFudGljRnVuY3Rpb25Tb3VyY2UgPSAnbW9kZWwnIHwgJ2hhbmRsZXInIHwgJ2NsYXNzJztcblxuLy8gT25lIEFJLWNsYXNzaWZpZWQgY29kZSBmdW5jdGlvbiBmcm9tIGEgbW9kZWwsIGhhbmRsZXIgb3Igc3RhbmRhbG9uZSBjbGFzczpcbi8vIHdoYXQga2luZCBvZiBsb2dpYyBpdCBpcywgd2hhdCBpdCBkb2VzLCBhbmQgd2hhdCBpdCBwcm9kdWNlcyDigJQgdGhlIGJ1aWxkJ3Ncbi8vIGNhY2hlZCBcIndoYXQgdGhlIGNvZGUgZG9lc1wiIGtub3dsZWRnZSBzaG93biBpbiB0aGUgZnVuY3Rpb25zIGRpYWxvZy5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNFbnRpdHlGdW5jdGlvbiB7XG4gIGNsYXNzOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBzdW1tYXJ5OiBzdHJpbmc7XG4gIHByb2R1Y2VzOiBzdHJpbmc7XG4gIHNvdXJjZTogU2VtYW50aWNGdW5jdGlvblNvdXJjZTtcbn1cblxuLy8gT25lIGVudGl0eSdzIGNhY2hlZCBjb2RlLWZ1bmN0aW9uIGtub3dsZWRnZSwgZmV0Y2hlZCB3aGVuIGEgZnVuY3Rpb25zIGRpYWxvZ1xuLy8gb3BlbnMgKHRoZSBmdWxsIHNldCBhY3Jvc3MgYWxsIGVudGl0aWVzIGlzIHRvbyBiaWcgdG8gc2hpcCB3aXRoIHRoZVxuLy8gc2NvcmVib2FyZCkuIE9uZSBwYXlsb2FkIHNlcnZlcyBib3RoIGRpYWxvZ3Mg4oCUIGNvbnN1bWVycyBmaWx0ZXIgYnkgc291cmNlLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0VudGl0eUZ1bmN0aW9ucyB7XG4gIGVudGl0eTogc3RyaW5nO1xuICBnZW5lcmF0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIG1vZGVsQ2xhc3M6IHN0cmluZyB8IG51bGw7XG4gIGhhbmRsZXJDbGFzczogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb25zOiBTZW1hbnRpY0VudGl0eUZ1bmN0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZFN0YXR1cyB7XG4gIGJ1aWxkOiBTZW1hbnRpY0J1aWxkIHwgbnVsbDtcbiAgZGV0YWlsOiBTZW1hbnRpY0J1aWxkRGV0YWlsO1xufVxuXG4vLyBUaGUgcmVwb3J0IG1vZHVsZSdzIEdlbmVyYWwgc2V0dGluZ3MgKGEgc21hbGwgZ2xvYmFsIGtleS92YWx1ZSBzdG9yZSwgdGhlXG4vLyByZXBvcnRpbmcgY291bnRlcnBhcnQgb2YgdGhlIGFwcC13aWRlIHNldHRpbmdzKS4gRWFjaCB2YWx1ZSBzaGlwcyB3aXRoIHRoZVxuLy8gc2FmZSBiYW5kIGl0cyBlZGl0b3IgZmllbGQgaXMgYm91bmRlZCB0by5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U2V0dGluZ3Mge1xuICAvLyBIb3cgbWFueSBzdW1tYXJ5IGNhbGxzIHRoZSBzZW1hbnRpYyBidWlsZCBydW5zIGF0IG9uY2UuXG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeTogbnVtYmVyO1xuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3lNaW46IG51bWJlcjtcbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5TWF4OiBudW1iZXI7XG59XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQWlTbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUF5ckJGLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBdUJELGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBhc3NlbWJsZWQgcmVwb3J0IHN0cnVjdHVyZSByZXR1cm5lZCBieSBHRVQgL2FwaS9yZXBvcnRzLzppZCDigJQgY29tcG9zZWRcbi8vIHNlcnZlci1zaWRlIGZyb20gdGhlIG5vcm1hbGl6ZWQgdGFibGVzIChyZXBvcnRzIOKGkiByZXBvcnRfcGFnZXMg4oaSXG4vLyByZXBvcnRfY29tcG9uZW50cyArIHJlcG9ydF9maWx0ZXJzLCBwbHVzIHJlcG9ydF9maWx0ZXJfZ3JvdXBzKS4gQWxsIGtleXMgYXJlXG4vLyBjYW1lbENhc2U7IGNvbXBvbmVudCBgY29uZmlnYCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRoZSByZW5kZXJlciBtYXBzIHRvXG4vLyBFQ2hhcnRzIG9wdGlvbnMgLyBGc0xpc3QgY29uZmlnLlxuXG5pbXBvcnQgeyBSZXBvcnRDaGFuZ2VQb2xhcml0eSB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1jaGFuZ2UtcG9sYXJpdHkuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydENvbG9yIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRhTGFiZWxzIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWRhdGEtbGFiZWxzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRlTGFiZWwgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0ZS1sYWJlbC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0TGluZVN0eWxlIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWxpbmUtc3R5bGUuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydE1hcmtTdGF0IH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LW1hcmstc3RhdC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydExpc3RDb2x1bW5Gb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbGlzdC1jb2x1bW4tZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0TnVtYmVyVW5pdHMgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbnVtYmVyLXVuaXRzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtdWxhIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LXZhbHVlLWZvcm11bGEuZW51bSc7XG5cbi8vIEEgQkNQIDQ3IGxhbmd1YWdlIHRhZyBuYW1pbmcgaG93IG51bWJlcnMgYW5kIGRhdGVzIGFyZSB3cml0dGVuLCBlLmcuICdmci1DQScuXG4vLyBUaGUgc2V0IGlzIG9wZW4gKHRoZSBzZXJ2ZXIncyBwcm92aWRlciBkZWNpZGVzIHdoaWNoIGl0IG9mZmVycyksIHNvIHRoaXMgaXMgYVxuLy8gbmFtZWQgYWxpYXMgcmF0aGVyIHRoYW4gYSB1bmlvbi5cbmV4cG9ydCB0eXBlIFJlcG9ydExvY2FsZVRhZyA9IHN0cmluZztcblxuLy8gQW4gSVNPIDQyMTcgY3VycmVuY3kgY29kZSwgZS5nLiAnQ0FEJy4gT3BlbiBmb3IgdGhlIHNhbWUgcmVhc29uLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q3VycmVuY3lDb2RlID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydCB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgLy8gVGhlIHJlcG9ydCdzIG93biBzdG9yZWQgSUFOQSB6b25lIChlLmcuIEFtZXJpY2EvTmV3X1lvcmspLiBudWxsID0gdGhlXG4gIC8vIHJlcG9ydCBmb2xsb3dzIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQgcmVwb3J0aW5nIHpvbmUuXG4gIHRpbWV6b25lOiBzdHJpbmcgfCBudWxsO1xuICAvLyBUaGUgem9uZSBldmVyeSBkYXRlIGZpbHRlciwgdGltZSBidWNrZXQgYW5kIGRhdGUgY2VsbCBvZiB0aGlzIHJlcG9ydCB1c2VzLlxuICAvLyBSZXNvbHZlZCBzZXJ2ZXItc2lkZTsgdGhlIHNhbWUgZm9yIGV2ZXJ5IHZpZXdlciwgZXhwb3J0IGFuZCB0aGUgYXNzaXN0YW50LlxuICAvLyBPcHRpb25hbCBvbmx5IGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0OyByZXNvbHZlUmVwb3J0VGltZXpvbmUoKSB0aGVuXG4gIC8vIGZhbGxzIGJhY2sgdG8gdGhlIHJlcG9ydCdzIG93biBgdGltZXpvbmVgLCB0aGVuIHRoZSBicm93c2VyJ3Mgem9uZS4gUmVzb2x2ZVxuICAvLyB0aGUgem9uZSBmb3IgcmVuZGVyaW5nIHRocm91Z2ggcmVzb2x2ZVJlcG9ydFRpbWV6b25lKCkgKGZvcm1hdC50cyk7IHJlYWQgdGhlXG4gIC8vIGZpZWxkIGRpcmVjdGx5IG9ubHkgdG8gY2hlY2sgd2hldGhlciB0aGUgc2VydmVyIHNlbnQgaXQuXG4gIGVmZmVjdGl2ZVRpbWV6b25lPzogc3RyaW5nO1xuICAvLyBUaGUgcmVwb3J0J3Mgb3duIHN0b3JlZCBsb2NhbGUuIG51bGwgPSB0aGUgcmVwb3J0IGZvbGxvd3MgdGhlIGRlZmF1bHQuXG4gIGxvY2FsZT86IFJlcG9ydExvY2FsZVRhZyB8IG51bGw7XG4gIC8vIFRoZSBsb2NhbGUgZXZlcnkgbnVtYmVyIGFuZCBkYXRlIG9mIHRoaXMgcmVwb3J0IGlzIHdyaXR0ZW4gaW4sIHJlc29sdmVkXG4gIC8vIHNlcnZlci1zaWRlICh0aGUgcmVwb3J0J3Mgb3duLCBlbHNlIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQsIGVsc2VcbiAgLy8gZW4tVVMpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hvc2UgcmVwb3J0cyB0aGVuIHJlYWQgZW4tVVMuIFJlc29sdmUgaXRcbiAgLy8gZm9yIHJlbmRlcmluZyB0aHJvdWdoIHJlc29sdmVGb3JtYXRDb250ZXh0KCkgKGZvcm1hdC50cyksIG5ldmVyIGRpcmVjdGx5LlxuICBlZmZlY3RpdmVMb2NhbGU/OiBSZXBvcnRMb2NhbGVUYWc7XG4gIC8vIFRoZSByZXBvcnQncyBvd24gc3RvcmVkIGN1cnJlbmN5LiBudWxsID0gdGhlIHJlcG9ydCBmb2xsb3dzIHRoZSBkZWZhdWx0LlxuICBjdXJyZW5jeT86IFJlcG9ydEN1cnJlbmN5Q29kZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW5jeSBtb25leSBhbW91bnRzIGFyZSBsYWJlbGVkIGluLCByZXNvbHZlZCBsaWtlIGVmZmVjdGl2ZUxvY2FsZVxuICAvLyAoZmFsbGluZyBiYWNrIHRvIHRoZSBsb2NhbGUncyBvd24gY3VycmVuY3ksIHRoZW4gVVNEKS4gQSBsYWJlbCBvbmx5OlxuICAvLyBhbW91bnRzIGFyZSBuZXZlciBjb252ZXJ0ZWQuXG4gIGVmZmVjdGl2ZUN1cnJlbmN5PzogUmVwb3J0Q3VycmVuY3lDb2RlO1xuICAvLyBIb3cgdGhlIHNlcnZlciBzZW5kcyBhIHBlcmNlbnQgbWVhc3VyZTogJ3JhdGlvJyA9IGEgMC0xIHJhdGlvICgwLjM4NSByZWFkc1xuICAvLyAzOC41JSkuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLCB3aG9zZSBwZXJjZW50IHZhbHVlcyBhcmUgYWxyZWFkeSB4MTAwXG4gIC8vICgzOC41IHJlYWRzIDM4LjUlKS5cbiAgcGVyY2VudEZvcm1hdD86ICdyYXRpbyc7XG4gIC8vIFJlcG9ydC1sZXZlbCBjb25maWc6IHR5cG9ncmFwaGljIHN0eWxlcywgZXRjLiAoY2FtZWxDYXNlIEpTT04gY29sdW1uKS5cbiAgY29uZmlnOiBSZXBvcnRDb25maWc7XG4gIC8vIFRoZSBwYWdlIGluIElOQ0hFUyAodGhlIHJlcG9ydCdzIG5hdGl2ZSB1bml0IOKAlCBQREZzIGFuZCBQb3dlclBvaW50IGFyZVxuICAvLyBpbmNoLWJhc2VkLCBzbyBleHBvcnRzIGFyZSBkaW1lbnNpb25hbGx5IGV4YWN0KS4gT3JpZW50YXRpb24gaXMgbm90IGEgZmllbGRcbiAgLy8gb2YgaXRzIG93bjogYSBwYWdlIHdpZGVyIHRoYW4gaXQgaXMgdGFsbCBJUyBsYW5kc2NhcGUuXG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xuICBwYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHBhZ2VzOiBSZXBvcnRQYWdlW107XG4gIC8vIFRoZSBoZWFkZXIgYW5kIGZvb3RlcjogdGhlIHJlcG9ydCdzIG1hc3RlciBwYWdlLCB3aG9zZSBjb21wb25lbnRzIGRyYXdcbiAgLy8gdW5kZXIgZXZlcnkgcGFnZSB0aGF0IGRvZXMgbm90IGhpZGUgdGhlbSAoUG93ZXJQb2ludCdzIHNsaWRlIG1hc3RlcikuIE51bGxcbiAgLy8gdW50aWwgYW55dGhpbmcgaGFzIGJlZW4gcGxhY2VkIGluIHRoZW0uXG4gIG1hc3RlcjogUmVwb3J0TWFzdGVyIHwgbnVsbDtcbiAgZmlsdGVyR3JvdXBzOiBSZXBvcnRGaWx0ZXJHcm91cFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydE1hc3RlciB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbXBvbmVudHM6IFJlcG9ydENvbXBvbmVudFtdO1xuICAvLyBUaGUgdmFsdWVzIHRoZSBoZWFkZXIgYW5kIGZvb3RlciB0ZXh0IHNob3dzLCBhcyBSZXBvcnRQYWdlLnZhbHVlcy5cbiAgdmFsdWVzPzogUmVwb3J0Q29tcG9uZW50W107XG59XG5cbi8vIEhvdyB0aGUgb3BlbiByZXBvcnQgd3JpdGVzIGl0cyBudW1iZXJzIGFuZCBkYXRlcywgcmVzb2x2ZWQgb25jZSBwZXIgcmVwb3J0XG4vLyAocmVzb2x2ZUZvcm1hdENvbnRleHQpIGFuZCByZWFkIGJ5IHRoZSB2aWV3ZXIsIHRoZSBQREYgYW5kIFBvd2VyUG9pbnQgYWxpa2UuXG4vLyBOZXZlciB0aGUgYnJvd3NlcidzIGxvY2FsZS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Rm9ybWF0Q29udGV4dCB7XG4gIGxvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBjdXJyZW5jeTogUmVwb3J0Q3VycmVuY3lDb2RlO1xuICAvLyBXaGV0aGVyIGEgcGVyY2VudCBtZWFzdXJlIGFycml2ZXMgYXMgYSAwLTEgcmF0aW8gKHRoZSByZXBvcnQnc1xuICAvLyBwZXJjZW50Rm9ybWF0KS4gQW4gb2xkZXIgc2VydmVyIHNlbmRzIGl0IGFscmVhZHkgeDEwMC5cbiAgcmF0aW9QZXJjZW50OiBib29sZWFuO1xufVxuXG4vLyBPbmUgbG9jYWxlIHRoZSBzZXJ2ZXIgb2ZmZXJzLCB3aXRoIHRoZSBjdXJyZW5jeSBhIHJlcG9ydCBpbiBpdCB1c2VzIHdoZW4gaXRcbi8vIG5hbWVzIG5vbmUgb2YgaXRzIG93bi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TG9jYWxlT3B0aW9uIHtcbiAgbG9jYWxlOiBSZXBvcnRMb2NhbGVUYWc7XG4gIGRlZmF1bHRDdXJyZW5jeTogUmVwb3J0Q3VycmVuY3lDb2RlO1xufVxuXG4vLyBHRVQgcmVwb3J0cy9sb2NhbGVzOiB3aGF0IHRoZSByZXBvcnQgc2V0dGluZ3MnIExvY2FsZSBhbmQgQ3VycmVuY3kgc2VsZWN0c1xuLy8gb2ZmZXIuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydExvY2FsZXMge1xuICBkZWZhdWx0TG9jYWxlOiBSZXBvcnRMb2NhbGVUYWc7XG4gIG9wdGlvbnM6IFJlcG9ydExvY2FsZU9wdGlvbltdO1xuICBjdXJyZW5jaWVzOiBSZXBvcnRDdXJyZW5jeUNvZGVbXTtcbn1cblxuLy8gVGhlIGRlcHRoIG9mIHRoZSBoZWFkZXIgYmFuZCAodG9wIG9mIGV2ZXJ5IHBhZ2UpIGFuZCB0aGUgZm9vdGVyIGJhbmQgKGJvdHRvbVxuLy8gb2YgZXZlcnkgcGFnZSksIGluIElOQ0hFUy4gVGhlIGJhbmRzIGhvbGQgbm8gY29udGVudCBvZiB0aGVpciBvd24g4oCUIHRoZVxuLy8gbWFzdGVyJ3MgY29tcG9uZW50cyBzaXQgaW4gdGhlbSDigJQgdGhleSBhcmUgdGhlIHJlc2VydmVkIG1hcmdpbnMgdGhlIGVkaXRvclxuLy8gZHJhd3MgYXMgZ3VpZGVzIGFuZCBzbmFwcyB0by4gQWx3YXlzIGFycml2ZXMgcmVzb2x2ZWQgKDAgPSBubyBiYW5kKS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SGVhZGVyRm9vdGVyIHtcbiAgaGVhZGVySGVpZ2h0OiBudW1iZXI7XG4gIGZvb3RlckhlaWdodDogbnVtYmVyO1xufVxuXG4vLyBSZXBvcnQtbGV2ZWwgc3R5bGluZy4gU2l6ZXMgYXJlIGluIFBPSU5UUyAoMS83MlwiKSDigJQgdGhlIHJlcG9ydCdzIHR5cG9ncmFwaHlcbi8vIG1hcHMgMToxIHRvIFBERiAoNzJwdC9pbikgYW5kIFBvd2VyUG9pbnQgKHBvaW50IGZvbnQgc2l6ZXMpLCBzbyBhIHBvaW50XG4vLyB2YWx1ZSBpcyBkaW1lbnNpb25hbGx5IGV4YWN0IG9uIHNjcmVlbiBhbmQgaW4gZXZlcnkgZXhwb3J0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb25maWcge1xuICBzdHlsZXM/OiBSZXBvcnRTdHlsZXM7XG4gIC8vIFRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sLiBPcHRpb25hbCBvbiB0aGUgdHlwZSBiZWNhdXNlIGEgUmVwb3J0Q29uZmlnXG4gIC8vIGxpdGVyYWwgbmVlZCBub3QgY2FycnkgaXQ7IHRoZSBBUEkgYWx3YXlzIHNlbmRzIGl0LCByZXNvbHZlZC5cbiAgZ3JvdXBCeT86IFJlcG9ydEdyb3VwQnk7XG4gIC8vIFJlc29sdmVkIGJ5IHRoZSBBUEkgbGlrZSBncm91cEJ5LlxuICBoZWFkZXJGb290ZXI/OiBSZXBvcnRIZWFkZXJGb290ZXI7XG59XG5cbi8vIFRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sIOKAlCB0aGUgb25lIHN3aXRjaCB0aGF0IHJlLWJ1Y2tldHMgZXZlcnlcbi8vIHRpbWUtc2VyaWVzIGNoYXJ0IG9uIHRoZSByZXBvcnQgYmV0d2VlbiBkYXksIHdlZWssIG1vbnRoLCBxdWFydGVyIGFuZCB5ZWFyLlxuLy9cbi8vIEl0IGlzIE5PVCBhIGZpbHRlcjogYSBmaWx0ZXIgbmFycm93cyB3aGljaCByb3dzIGFyZSBjb3VudGVkLCB0aGlzIGNoYW5nZXMgaG93XG4vLyB0aGUgc3Vydml2aW5nIHJvd3MgYXJlIGJ1Y2tldGVkLiBJdCBzaGFyZXMgdGhlIHJlcG9ydCdzIGZpbHRlciBiYXIgYmVjYXVzZVxuLy8gdGhhdCBpcyB0aGUgb25lIHJvdyBvZiBjb250cm9scyBhIHZpZXdlciByZWFkcyBhIHJlcG9ydCB0aHJvdWdoIOKAlCB0aGVcbi8vIHNlcGFyYXRpb24gdGhhdCBtYXR0ZXJzIGlzIGluIHRoZSBtb2RlbCwgbm90IGluIHdoZXJlIHRoZSBjb250cm9sIGlzIHBhaW50ZWQuXG4vL1xuLy8gQWx3YXlzIGFycml2ZXMgUkVTT0xWRUQgKHRoZSBiYWNrZW5kIGZpbGxzIGFuIGFic2VudCBvciBwYXJ0aWFsIHN0b3JlZCBibG9ja1xuLy8gaW4gZnJvbSBpdHMgb3duIGRlZmF1bHRzKSwgc28gdGhlcmUgaXMgbm90aGluZyB0byBkZWZhdWx0IGhlcmUg4oCUIHJlbmRlciB3aGF0XG4vLyB5b3UgYXJlIGdpdmVuLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRHcm91cEJ5IHtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgbGFiZWw6IHN0cmluZztcbiAgZ3JhbnVsYXJpdGllczogQ2hhcnRHcmFudWxhcml0eVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFN0eWxlcyB7XG4gIGhlYWRpbmc/OiB7IHNpemU/OiBudW1iZXIgfTtcbn1cblxuLy8gQ29udGVudCBwYWRkaW5nIGFyb3VuZCBhIGNvbXBvbmVudCdzIGJvZHksIGluIElOQ0hFUyAodGhlIGdlb21ldHJ5IHVuaXQpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRQYWRkaW5nIHtcbiAgdG9wPzogbnVtYmVyO1xuICByaWdodD86IG51bWJlcjtcbiAgYm90dG9tPzogbnVtYmVyO1xuICBsZWZ0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFBhZ2Uge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmcgfCBudWxsO1xuICBvcmRlcjogbnVtYmVyO1xuICAvLyBUaGUgcGFnZSBvcHRzIG91dCBvZiB0aGUgcmVwb3J0J3MgaGVhZGVyIGFuZCBmb290ZXIgKGEgdGl0bGUgcGFnZSkuXG4gIG1hc3RlckhpZGRlbjogYm9vbGVhbjtcbiAgY29tcG9uZW50czogUmVwb3J0Q29tcG9uZW50W107XG4gIC8vIEV2ZXJ5IGFjdGl2ZSB2YWx1ZSBvZiB0aGUgcGFnZSwgaW4gaWQgb3JkZXI6IHRob3NlIGl0cyB0ZXh0IHNob3dzIGFuZFxuICAvLyB0aG9zZSBubyB0ZXh0IHNob3dzIGFueSBtb3JlIChrZXB0IHVudGlsIGEgdGV4dCwgdmFsdWUgb3IgcGFnZSBkZWxldGUsIHNvXG4gIC8vIGEgY2hpcCBwYXN0ZWQgYmFjayBzdGlsbCBuYW1lcyBvbmUpLiBOZXZlciBkcmF3biwgYW5kIG5ldmVyIGluXG4gIC8vIGBjb21wb25lbnRzYC4gT3B0aW9uYWwgYmVjYXVzZSBvbGRlciBzZXJ2ZXJzIG9taXQgaXQuXG4gIHZhbHVlcz86IFJlcG9ydENvbXBvbmVudFtdO1xufVxuXG4vLyAndGV4dCcgaXMgYXV0aG9yZWQgcmljaCB0ZXh0IHdpdGggbm8gcXVlcnkgYmVoaW5kIGl0IOKAlCBpdCBuZXZlciBmZXRjaGVzIGRhdGEuXG4vLyAndmFsdWUnIGlzIG9uZSBudW1iZXIgc2hvd24gaW5zaWRlIGEgdGV4dCBibG9jaydzIHdvcmRzICh7e3ZhbHVlLmtleX19KTsgaXRcbi8vIGhhcyBhIHF1ZXJ5IGJ1dCBubyBwbGFjZSBvZiBpdHMgb3duIG9uIHRoZSBwYWdlLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q29tcG9uZW50VHlwZSA9ICdjaGFydCcgfCAnbGlzdCcgfCAna3BpJyB8ICd0ZXh0JyB8ICd2YWx1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50IHtcbiAgaWQ6IG51bWJlcjtcbiAgdHlwZTogUmVwb3J0Q29tcG9uZW50VHlwZTtcbiAgdGl0bGU6IHN0cmluZyB8IG51bGw7XG4gIC8vIEdlb21ldHJ5IGluIElOQ0hFUzogYWJzb2x1dGUgcG9zaXRpb24gb24gdGhlIHBhZ2UgY2FudmFzLlxuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgdzogbnVtYmVyO1xuICBoOiBudW1iZXI7XG4gIC8vIEhlaWdodCBtb2RlLCBERVJJVkVEIGZyb20gdHlwZSBzZXJ2ZXItc2lkZSAobm90IHN0b3JlZCwgcmVhZC1vbmx5KTogbGlzdHNcbiAgLy8gYW5kIEtQSSB0aWxlcyBhcmUgYXV0byAodGhlIGJveCBzaXplcyB0byBpdHMgY29udGVudCwgYGhgIGlnbm9yZWQpOyBjaGFydHNcbiAgLy8gYXJlIGFsd2F5cyBmaXhlZCAodXNlIGBoYCkgc28gdGhleSBmaXQgdGhlIGJveCBhbmQgbmV2ZXIgb3ZlcmZsb3cuXG4gIGF1dG9IZWlnaHQ6IGJvb2xlYW47XG4gIC8vIFRoZSBzdG9yZWQgU1FMIG9mIGEgbGVnYWN5IHNxbC1tb2RlIGNvbXBvbmVudC4gTlVMTCBmb3IgYSBkZXJpdmVkIG9uZSxcbiAgLy8gd2hvc2Ugc3RhdGVtZW50IGRvZXMgbm90IGV4aXN0IHVudGlsIGl0cyBkb2N1bWVudCBpcyBjb21waWxlZCDigJQgdGhlIFNRTCB0YWJcbiAgLy8gZmV0Y2hlcyB0aGF0IHNlcGFyYXRlbHkgKHNlZSBSZXBvcnRDb21wb25lbnRTcWwpLlxuICBzcWw6IHN0cmluZyB8IG51bGw7XG4gIGNvbmZpZzogQ2hhcnRDb25maWcgJiBMaXN0Q29uZmlnICYgS3BpQ29uZmlnICYgVGV4dENvbmZpZyAmIFZhbHVlQ29uZmlnICYgQ29tcG9uZW50TGF5b3V0Q29uZmlnXG4gICAgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZmlsdGVyczogUmVwb3J0RmlsdGVyW107XG59XG5cbi8vIFdoYXQgdGhlIFNRTCB0YWIgZmV0Y2hlczogdGhlIHN0YXRlbWVudCBhIGNvbXBvbmVudCBydW5zLlxuLy9cbi8vIEZvciBhIGRlcml2ZWQgY29tcG9uZW50IGBiYXNlbGluZWAgaXMgdHJ1ZSBhbmQgYHNxbGAgaXMgd2hhdCBpdHMgZG9jdW1lbnRcbi8vIGNvbXBpbGVzIHRvIHdpdGggTk8gdmlld2VyIHN0YXRlIOKAlCBubyBmaWx0ZXJzLCB0aGUgYXV0aG9yZWQgZ3JhaW4uIFRoZVxuLy8gbnVtYmVycyBvbiBzY3JlZW4gY29tZSBmcm9tIHRoYXQgc3RhdGVtZW50IHBsdXMgd2hhdGV2ZXIgdGhlIHZpZXdlciBwaWNrZWQsXG4vLyBzbyB0aGUgdHdvIGNhbiBsZWdpdGltYXRlbHkgZGlmZmVyIGFuZCB0aGUgdGFiIHNheXMgc28gcmF0aGVyIHRoYW4gaW1wbHlpbmdcbi8vIHRoZXkgbWF0Y2guXG4vL1xuLy8gYHRpbWV6b25lYCBpcyB0aGUgSUFOQSB6b25lIHRoZSBzdGF0ZW1lbnQgd2FzIGNvbXBpbGVkIGluOiB0aGUgcmVwb3J0J3Ncbi8vIGVmZmVjdGl2ZSB6b25lLiBPcHRpb25hbCBiZWNhdXNlIG9sZGVyIHNlcnZlcnMgb21pdCBpdDsgdGhleSBjb21waWxlZCBpbiBVVEMuXG4vL1xuLy8gYGVycm9yYCBpcyBub3QgYSBmYWlsdXJlIG9mIHRoZSByZXF1ZXN0OiBhIGRvY3VtZW50IHRoYXQgbm8gbG9uZ2VyIGNvbXBpbGVzXG4vLyBpcyBwcmVjaXNlbHkgd2hhdCBzb21lb25lIG9wZW5zIHRoaXMgdGFiIHRvIGRpc2NvdmVyLCBzbyBpdCBhcnJpdmVzIGFzIGFcbi8vIG1lc3NhZ2UgdG8gcmVuZGVyIHdpdGggYGVycm9yVHlwZWAgbmFtaW5nIHdoaWNoIGtpbmQgKCdzdGFsZS1xdWVyeScgb3Jcbi8vICdzZW5zaXRpdmUtY29sdW1uJyksIGFuZCBgc3FsYCBudWxsLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb21wb25lbnRTcWwge1xuICBzcWw6IHN0cmluZyB8IG51bGw7XG4gIG9yaWdpbjogJ3NxbCcgfCAnZGJxJyB8ICdkZXJpdmVkJztcbiAgYmFzZWxpbmU6IGJvb2xlYW47XG4gIHRpbWV6b25lPzogc3RyaW5nO1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3JUeXBlOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIHRleHQgYmxvY2sncyBjb250ZW50OiBhbiBodG1sIGZyYWdtZW50IHRoZSBzZXJ2ZXIgaGFzIGFscmVhZHkgcmVidWlsdCBmcm9tXG4vLyBhbiBhbGxvd2xpc3QsIHdoaWNoIG1heSBjYXJyeSB7e3BhZ2UubnVtYmVyfX0sIHt7cGFnZS5uYW1lfX0gYW5kXG4vLyB7e3JlcG9ydC5uYW1lfX0gdG9rZW5zIChzZWUgdGV4dC50cykuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDb25maWcge1xuICBodG1sPzogc3RyaW5nO1xufVxuXG4vLyBBIHZhbHVlJ3Mga2V5OiB3aGF0IGl0cyB0b2tlbiBpbiBhIHRleHQgYmxvY2sncyBodG1sIG5hbWVzLCB1bmlxdWUgd2l0aGluXG4vLyB0aGUgcGFnZS4gSXRzIG51bWJlciBpcyBmb3JtYXR0ZWQgYnkgY29uZmlnLm1lYXN1cmUgKEtwaUNvbmZpZyksIGFzIG9uIGEgS1BJLlxuLy8gQSBmb3JtdWxhIHZhbHVlIGhhcyBubyBxdWVyeTogYGZvcm11bGFgIG5hbWVzIHdoYXQgaXQgd29ya3Mgb3V0IG9mIHRoZVxuLy8gcGFnZSdzIHF1ZXJ5IHZhbHVlcywgYW5kIGl0cyBtZWFzdXJlIGhvbGRzIG9ubHkgdGhlIGZvcm1hdCBrZXlzIGl0cyBhdXRob3Jcbi8vIGdhdmUgKGZvcm1hdCwgcHJlY2lzaW9uLCB1bml0cykuXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlQ29uZmlnIHtcbiAga2V5Pzogc3RyaW5nO1xuICBmb3JtdWxhPzogVmFsdWVGb3JtdWxhQ29uZmlnIHwgbnVsbDtcbn1cblxuLy8gQSBmb3JtdWxhIHZhbHVlJ3Mgb3BlcmF0aW9uIGFuZCBvcGVyYW5kczogYG9mYCBuYW1lcyBxdWVyeSB2YWx1ZXMgb24gdGhlXG4vLyBzYW1lIHBhZ2UgKHRoZSBtYXN0ZXIgZm9yIGEgaGVhZGVyIG9yIGZvb3RlcikgYnkga2V5LCAyIG9mIHRoZW0sIG9yIDIgdG8gMTBcbi8vIGZvciBhIHN1bS4gYHNpZ25lZGAgYWJzZW50IHJlYWRzIHRydWUgZm9yIGEgY2hhbmdlIGFuZCBhIHBlcmNlbnQgY2hhbmdlLFxuLy8gZmFsc2UgZm9yIGEgcmF0aW8gYW5kIGEgc3VtLlxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUZvcm11bGFDb25maWcge1xuICBvcDogUmVwb3J0VmFsdWVGb3JtdWxhO1xuICBvZjogc3RyaW5nW107XG4gIHNpZ25lZD86IGJvb2xlYW4gfCBudWxsO1xufVxuXG4vLyBPbmUgcm93IG9mIFBPU1QgcGFnZXMvOmlkL3ZhbHVlczogYSB2YWx1ZSdzIG51bWJlciBmb3IgdGhlIGZpbHRlcnMgc2VudC5cbi8vIFRoZXJlIGlzIG9uZSByb3cgcGVyIHZhbHVlIHRoZSBsYXllciByZWFkcywgaW4gaWQgb3JkZXI6IG9uZSBzb21lIHRleHQgb25cbi8vIHRoYXQgcGFnZSBzaG93cywgb3IgYW4gb3BlcmFuZCBvZiBhIGZvcm11bGEgc29tZSB0ZXh0IHNob3dzLiBgdmFsdWVgIGlzXG4vLyByYXcsIGFzIHRoZSBxdWVyeSByZXR1cm5lZCBpdCBvciB0aGUgc2VydmVyIHdvcmtlZCBpdCBvdXQgKG51bGwgd2hlbiB0aGVyZVxuLy8gaXMgbm8gcm93IG9yIHRoZSByZXN1bHQgaXMgbnVsbCk7IGZvcm1hdHRpbmcgaXMgdGhlIHZpZXdlcidzLCB0aHJvdWdoIHRoZVxuLy8gdmFsdWUncyBtZWFzdXJlLiBgZXJyb3JgIGlzIHRoYXQgdmFsdWUncyBvd24gZmFpbHVyZSwgYW5kIHRoZSBwYWdlJ3Mgb3RoZXJcbi8vIHZhbHVlcyBhcmUgcmVhZCByZWdhcmRsZXNzLlxuLy8gYHJvbGVgIGlzIHRoZSBjb21wYXJpc29uIHJvbGUgdGhlIG51bWJlciBwbGF5czogYSBxdWVyeSB2YWx1ZSdzIGNvbXBhcmlzb25cbi8vIG91dHB1dCdzLCBjaGFuZ2Ugb3IgcGVyY2VudF9jaGFuZ2UgZm9yIHRob3NlIGZvcm11bGFzLCBlbHNlIG51bGwuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFBhZ2VWYWx1ZSB7XG4gIGlkOiBudW1iZXI7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIHJvbGU/OiBPdXRwdXRSb2xlIHwgbnVsbDtcbn1cblxuLy8gQ3Jvc3MtdHlwZSBsYXlvdXQvc3R5bGUga2V5cyBjYXJyaWVkIGluIGEgY29tcG9uZW50J3MgY29uZmlnIChhbG9uZ3NpZGUgdGhlXG4vLyB0eXBlLXNwZWNpZmljIGNoYXJ0L2xpc3Qva3BpIGtleXMpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRMYXlvdXRDb25maWcge1xuICBwYWRkaW5nPzogQ29tcG9uZW50UGFkZGluZztcbn1cblxuLy8gVGhlIHByZXNlbnRhdGlvbiBzZXR0aW5ncyBhIGNvbXBvbmVudCdzIHNldHRpbmdzIGRpYWxvZyBlZGl0cy4gVGl0bGUgYW5kXG4vLyBwYWRkaW5nIGFyZSBub3QgcGFydCBvZiB3aGF0IHRoZSBjb21wb25lbnQgcXVlcmllcywgc28gYSBjaGFuZ2UgdG8gdGhlbVxuLy8gcmVwYWludHMgd2l0aG91dCByZS1ydW5uaW5nIGFueXRoaW5nLiBBIGRlcml2ZWQgS1BJJ3MgY2FyZCBrZXlzIGFyZSBzZW50XG4vLyB0b286IHRoZSBzZXJ2ZXIgY29tcHV0ZXMgdGhlIHRhcmdldCdzIHByb2dyZXNzIGFuZCB0aGUgc3BhcmtsaW5lJ3MgcG9pbnRzXG4vLyB3aXRoIHRoZSBkYXRhLCBzbyBhIGNoYW5nZSB0byB0aGVtIHJlbG9hZHMgaXQuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFNldHRpbmdzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgcGFkZGluZzogQ29tcG9uZW50UGFkZGluZztcbiAga3BpPzogS3BpQ2FyZFNldHRpbmdzO1xufVxuXG4vLyBBIEtQSSdzIGNhcmQga2V5cy4gVGhlIGRpYWxvZyBzZW5kcyB0aGVtIChudWxsIHJlbW92ZXMgYSBrZXksIGluY3JlYXNlSXNcbi8vIG51bGwgcmVhZHMgZ29vZCksIGFuZCBDb21wb25lbnRTZXR0aW5ncy5rcGkgY2FycmllcyB0aGVtIGFzIHRoZSBzZXJ2ZXJcbi8vIHNhdmVkIHRoZW0sIHJlYWQgYmFjayBmcm9tIHRoZSBjb25maWcgaXQgcmV0dXJucy5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ2FyZFNldHRpbmdzIHtcbiAgaW5jcmVhc2VJczogUmVwb3J0Q2hhbmdlUG9sYXJpdHkgfCBudWxsO1xuICB0YXJnZXQ6IEtwaVRhcmdldENvbmZpZyB8IG51bGw7XG4gIHNwYXJrbGluZTogS3BpU3BhcmtsaW5lQ29uZmlnIHwgbnVsbDtcbn1cblxuLy8gV2hlcmUgYSBjaGFydCdzIGxlZ2VuZCBzaXRzIHJlbGF0aXZlIHRvIHRoZSBwbG90LCBvciAnaGlkZGVuJyB0byBkcm9wIGl0LlxuZXhwb3J0IHR5cGUgTGVnZW5kUG9zaXRpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdoaWRkZW4nO1xuXG5leHBvcnQgdHlwZSBDaGFydEdyYW51bGFyaXR5ID0gJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInO1xuXG4vLyBIb3cgZWFjaCBncmFudWxhcml0eSByZWFkcyBpbiB0aGUgZ3JvdXAtYnkgY29udHJvbCBhbmQgb24gYW4gZXhwb3J0IGNvdmVyXG4vLyBzaGVldC4gV0hJQ0ggb2YgdGhlbSBhIGdpdmVuIHJlcG9ydCBvZmZlcnMgY29tZXMgZnJvbSBpdHMgUmVwb3J0R3JvdXBCeTtcbi8vIHRoaXMgaXMgb25seSB0aGUgbmFtaW5nLiAneWVhcicgcmVhZHMgYXMgXCJBbm51YWxseVwiLlxuZXhwb3J0IGNvbnN0IEdSQU5VTEFSSVRZX09QVElPTlM6IHsgdmFsdWU6IENoYXJ0R3JhbnVsYXJpdHk7IG5hbWU6IHN0cmluZyB9W10gPSBbXG4gIHsgdmFsdWU6ICdkYXknLCBuYW1lOiAnRGF5JyB9LFxuICB7IHZhbHVlOiAnd2VlaycsIG5hbWU6ICdXZWVrJyB9LFxuICB7IHZhbHVlOiAnbW9udGgnLCBuYW1lOiAnTW9udGgnIH0sXG4gIHsgdmFsdWU6ICdxdWFydGVyJywgbmFtZTogJ1F1YXJ0ZXInIH0sXG4gIHsgdmFsdWU6ICd5ZWFyJywgbmFtZTogJ0FubnVhbGx5JyB9LFxuXTtcblxuLy8gVGhlIGNoYXJ0IHR5cGVzIHRoYXQgcGxvdCBzZXJpZXMgYWdhaW5zdCBhIGNhdGVnb3J5IGFuZCBhIHZhbHVlIGF4aXMsIGFuZCBzb1xuLy8gdGhlIHR5cGVzIGEgbWVhc3VyZSdzIG93biBzZXJpZXMgY2FuIGJlIGRyYXduIGFzLiBBIHdhdGVyZmFsbCBoYXMgdGhlIHNhbWVcbi8vIGF4ZXMgYnV0IGlzIG5vdCBvbmUgb2YgdGhlbTogaXQgZHJhd3MgaXRzIG9uZSBtZWFzdXJlIGFzIGZsb2F0aW5nIHN0ZXBzLlxuZXhwb3J0IHR5cGUgQXhpc0NoYXJ0VHlwZSA9ICdiYXInIHwgJ2xpbmUnIHwgJ2FyZWEnO1xuXG4vLyBXaGF0IG9uZSBiYXIgb2YgYSB3YXRlcmZhbGwgZG9lcyB0byB0aGUgcnVubmluZyB0b3RhbCDigJQgZWFjaCBpcyBkcmF3biBpbiBpdHNcbi8vIG93biBjb2xvci4gVGhlIGNsb3NpbmcgdG90YWwgaXMgdGhlIGxhc3QgYmFyLCBzdGFuZGluZyBvbiB6ZXJvLlxuZXhwb3J0IHR5cGUgV2F0ZXJmYWxsU3RlcEtpbmQgPSAncmlzZScgfCAnZmFsbCcgfCAndG90YWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0Q29uZmlnIHtcbiAgLy8gQSB3YXRlcmZhbGwgdGFrZXMgT05FIG1lYXN1cmUgd2hvc2UgdmFsdWUgcGVyIGNhdGVnb3J5IGlzIGhvdyBmYXIgdGhlXG4gIC8vIHJ1bm5pbmcgdG90YWwgbW92ZXMgdGhlcmU6IGVhY2ggYmFyIHN0YXJ0cyB3aGVyZSB0aGUgb25lIGJlZm9yZSBpdCBlbmRlZCxcbiAgLy8gYW5kIGEgY2xvc2luZyBUb3RhbCBiYXIgc2hvd3MgdGhlIHN1bS5cbiAgY2hhcnRUeXBlPzogQXhpc0NoYXJ0VHlwZSB8ICd3YXRlcmZhbGwnIHwgJ3BpZScgfCAnZG9udXQnO1xuICAvLyBGb3Iga2luZCAndGltZScsIHRoZSBzZXJ2ZXIgYnVja2V0cyB0aGUgcmF3IGRhdGV0aW1lIGNvbHVtbiB0byBgZ3JhbnVsYXJpdHlgXG4gIC8vIGluIHRoZSByZXBvcnQncyB0aW1lem9uZSAodGhlIFNRTCBleHBvc2VzIHRoZSByYXcgY29sdW1uLCB1bmJ1Y2tldGVkKS5cbiAgLy8gZGF0ZUxhYmVsIHdyaXRlcyBhIHRpbWUgYXhpcydzIHBlcmlvZCBsYWJlbHMgc2hvcnQgKCdNYXknLCB0aGUgZGVmYXVsdCksXG4gIC8vIGxvbmcgKCdNYXkgMjAyNicpIG9yIG51bWVyaWMgKCcyMDI2LTA1Jyk7IGEgY2F0ZWdvcnkgYXhpcyBpZ25vcmVzIGl0LlxuICB4QXhpcz86IHtcbiAgICBjb2x1bW46IHN0cmluZztcbiAgICBraW5kPzogJ2NhdGVnb3J5JyB8ICd0aW1lJztcbiAgICBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHk7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgZGF0ZUxhYmVsPzogUmVwb3J0Q2hhcnREYXRlTGFiZWw7XG4gIH07XG4gIG1lYXN1cmVzPzogQ2hhcnRNZWFzdXJlW107XG4gIC8vIEVhY2ggdmFsdWUgb2YgdGhpcyBjb2x1bW4gYmVjb21lcyBpdHMgb3duIHNlcmllcy4gSXQgY2FycmllcyBubyBsYWJlbDogdGhlXG4gIC8vIGxlZ2VuZCBuYW1lcyB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMuXG4gIHNwbGl0Qnk/OiB7IGNvbHVtbjogc3RyaW5nIH07XG4gIC8vIFNpbmdsZS1kaW1lbnNpb24gYmFyIGNoYXJ0cyBvbmx5OiBjb2xvciBlYWNoIGJhciBieSBpdHMgb3duIGNhdGVnb3J5IGFuZFxuICAvLyBzaG93IGEgbGVnZW5kLCBXSVRIT1VUIHNwbGl0dGluZyBpbnRvIG11bHRpcGxlIHNlcmllcyAod2hpY2ggc2xpdmVycyB0aGVcbiAgLy8gYmFycykuIHYxIGV4cGVjdHMgY29sb3JCeS5jb2x1bW4gPT09IHhBeGlzLmNvbHVtbi4gSWdub3JlZCB3aGVuIHNwbGl0QnkgaXNcbiAgLy8gc2V0IG9yIHRoZSBjaGFydCBpc24ndCBhIGJhciBjaGFydC5cbiAgY29sb3JCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIG9yaWVudGF0aW9uPzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgc3RhY2tlZD86IGJvb2xlYW47XG4gIC8vIFN0YWNrcyB0aGUgcHJpbWFyeSBheGlzJ3MgYmFyIGFuZCBhcmVhIHNlcmllcyBhcyBzaGFyZXMgb2YgZWFjaFxuICAvLyBjYXRlZ29yeSdzIHRvdGFsLCBzbyBldmVyeSBzdGFjayByZWFjaGVzIDEwMCUuIFRoZSB2aWV3ZXIgY29tcHV0ZXMgdGhlXG4gIC8vIHNoYXJlcyBmcm9tIHRoZSByb3dzIGl0IHJlY2VpdmVzLCBhZnRlciB0aGUgZmlsdGVycyByYW47IHRoZSByb3dzIGFuZCB0aGVcbiAgLy8gQ1NWIGtlZXAgdGhlIHJhdyB2YWx1ZXMuIFRoZSB2YWx1ZSBheGlzIHRoZW4gYWx3YXlzIHJ1bnMgMCB0byAxMDAlIChmcm9tXG4gIC8vIC0xMDAlIHdoZW4gYSBzaGFyZSBpcyBuZWdhdGl2ZSkuXG4gIHBlcmNlbnRTdGFja2VkPzogYm9vbGVhbjtcbiAgLy8gVmFsdWVzIHByaW50ZWQgYmVzaWRlIHRoZSBwb2ludHMgb2YgYSBiYXIsIGxpbmUgb3IgYXJlYSBzZXJpZXM6IGV2ZXJ5XG4gIC8vIHBvaW50IChhbGwpLCBlYWNoIHNlcmllcycgbGF0ZXN0IHBvaW50IChsYXN0KSwgb3IgZXZlcnkgcG9pbnQgd2hvc2UgbGFiZWxcbiAgLy8gZml0cyB3aXRob3V0IG92ZXJsYXBwaW5nIGFub3RoZXIgKGF1dG8pLiBPbWl0dGVkIG9yIG5vbmUsIG5vIGxhYmVscy4gQVxuICAvLyBwaWUsIGEgZG9udXQgYW5kIGEgd2F0ZXJmYWxsIG5ldmVyIHByaW50IHRoZW0uXG4gIGRhdGFMYWJlbHM/OiBSZXBvcnRDaGFydERhdGFMYWJlbHM7XG4gIC8vIFRoZSBwcmltYXJ5IHZhbHVlIGF4aXMncyB0aXRsZSBhbmQgcmFuZ2UuIEV2ZXJ5IHNlcmllcyBpcyBwbG90dGVkIGFnYWluc3RcbiAgLy8gaXQgdW5sZXNzIGl0cyBtZWFzdXJlIGlzIHNlY29uZGFyeS5cbiAgdmFsdWVBeGlzPzogQ2hhcnRWYWx1ZUF4aXM7XG4gIC8vIFRoZSBzZWNvbmQgdmFsdWUgYXhpcywgb24gdGhlIHJpZ2h0LCB0aGF0IHNlY29uZGFyeSBtZWFzdXJlcyBwbG90IGFnYWluc3QuXG4gIHNlY29uZGFyeUF4aXM/OiBDaGFydFZhbHVlQXhpcztcbiAgLy8gTGFiZWxlZCBsaW5lcyBhY3Jvc3MgdGhlIHBsb3QgYXQgYSBjb25zdGFudCB2YWx1ZSwgb3IgYmFuZHMgYmV0d2VlbiB0d29cbiAgLy8gdmFsdWVzLCBhdCBtb3N0IDUuIFZlcnRpY2FsIGF4aXMgY2hhcnRzIGFuZCB3YXRlcmZhbGxzIG9ubHkuXG4gIHJlZmVyZW5jZXM/OiBDaGFydFJlZmVyZW5jZVtdO1xuICBsZWdlbmQ/OiBMZWdlbmRQb3NpdGlvbjtcbiAgc29ydD86IFJlcG9ydFNvcnQ7XG4gIGxpbWl0PzogbnVtYmVyO1xufVxuXG4vLyBBIHZhbHVlIGF4aXMncyB0aXRsZSBhbmQgcmFuZ2UuIEVhY2ggYm91bmQgbGVmdCBvdXQgaXMgcGlja2VkIGZyb20gdGhlIGRhdGEsXG4vLyBhbmQgdGhlIHRpY2sgc3RlcCB3aXRob3V0IGFuIGludGVydmFsLiBJdHMgdGlja3MgdGFrZSB0aGUgbnVtYmVyIGZvcm1hdCBvZlxuLy8gdGhlIG1lYXN1cmVzIHBsb3R0ZWQgYWdhaW5zdCBpdC5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRWYWx1ZUF4aXMge1xuICBsYWJlbD86IHN0cmluZztcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIGludGVydmFsPzogbnVtYmVyO1xufVxuXG4vLyBBIHJlZmVyZW5jZSBkcmF3biBhY3Jvc3MgYSBjaGFydCdzIHBsb3Q6IGEgbGluZSBhdCBgdmFsdWVgLCBvciB3aXRoIGB0b2AgYVxuLy8gYmFuZCBiZXR3ZWVuIHRoZSB0d28sIGxhYmVsZWQgd2l0aCBgbGFiZWxgLiBUaGUgdmFsdWUgaXMgb25lIHRoZSB1c2VyIG9yXG4vLyB0aGUgbW9kZWwgc3RhdGVzLCBuZXZlciBvbmUgcmVhZCBvZmYgdGhlIGRhdGEuIHNlY29uZGFyeSBwbG90cyBpdCBhZ2FpbnN0XG4vLyB0aGUgc2Vjb25kIHZhbHVlIGF4aXMsIHdoZW4gdGhlIGNoYXJ0IGhhcyBvbmUuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0UmVmZXJlbmNlIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgdG8/OiBudW1iZXI7XG4gIHNlY29uZGFyeT86IGJvb2xlYW47XG59XG5cbi8vIEhvdyBvbmUgbnVtZXJpYyBzbG90IGlzIHNob3duOiBhIGNoYXJ0IG1lYXN1cmUsIGEgS1BJIG1lYXN1cmUsIGEgbGlzdCBjb2x1bW5cbi8vIG9yIGEgY3Jvc3MtdGFiJ3MgY2VsbHMuIFRoZSBkYXRhIHN0YXlzIHJhdyAoaXQgc29ydHMgYW5kIGV4cG9ydHMgYXMgYVxuLy8gbnVtYmVyKTsgb25seSB0aGUgcmVuZGVyZXJzIGZvcm1hdCBpdCwgdGhlIHNhbWUgd2F5IG9uIHNjcmVlbiwgaW4gdGhlIFBERlxuLy8gYW5kIGluIFBvd2VyUG9pbnQgKGZvcm1hdC50cykuIEFsbCB0aHJlZSBrZXlzIGFyZSBvcHRpb25hbCwgYW5kIHByZWNpc2lvbiBvclxuLy8gdW5pdHMgd2l0aG91dCBhIGZvcm1hdCBtZWFuIG51bWJlci5cbi8vXG4vLyBGb3JtYXR0aW5nIGlzIG9wdC1pbjogYSBsaXN0IGNvbHVtbiBvciBjcm9zcy10YWIgY2VsbCB3aXRob3V0IHRoZXNlIGtleXNcbi8vIHByaW50cyBpdHMgdmFsdWUgYXMgaXQgY2FtZSwgYW5kIGEgY2hhcnQgd2l0aG91dCB0aGVtIGtlZXBzIGl0cyBwbGFpblxuLy8gbG9jYWxlLWdyb3VwZWQgYXhpcyBhbmQgdG9vbHRpcHMuIEEgS1BJIHdpdGhvdXQgdGhlbSBwcmludHMgYSBwbGFpbiBudW1iZXIuXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlckZvcm1hdFNwZWMge1xuICAvLyBwZXJjZW50IHRha2VzIGEgMC0xIHJhdGlvICgwLjMgcmVhZHMgMzAlKSB3aGVuIHRoZSByZXBvcnQncyBwZXJjZW50Rm9ybWF0XG4gIC8vIGlzICdyYXRpbyc7IGFuIG9sZGVyIHNlcnZlciBsZWF2ZXMgaXQgb3V0IGFuZCBzZW5kcyB4MTAwLiBjdXJyZW5jeSBsYWJlbHNcbiAgLy8gdGhlIGFtb3VudCBpbiB0aGUgcmVwb3J0J3MgY3VycmVuY3ksIHdyaXR0ZW4gaW4gaXRzIGxvY2FsZS5cbiAgZm9ybWF0PzogUmVwb3J0VmFsdWVGb3JtYXQgfCBSZXBvcnRMaXN0Q29sdW1uRm9ybWF0O1xuICAvLyBIb3cgbWFueSBkZWNpbWFsIHBsYWNlcyB0aGUgdmFsdWUgaXMgc2hvd24gdG8gKDAtNikuIEZpeGVkIHJhdGhlciB0aGFuXG4gIC8vIG1heGltdW06IGEgY29sdW1uIG9mIHJhdGVzIGlzIHVucmVhZGFibGUgd2hlbiBlYWNoIG9uZSBzaG93cyBhIGRpZmZlcmVudFxuICAvLyBudW1iZXIgb2YgZGVjaW1hbHMuIEZvciBwZXJjZW50IGl0IGNvdW50cyB0aGUgZGVjaW1hbHMgb2YgdGhlIHBlcmNlbnRhZ2VcbiAgLy8gKHByZWNpc2lvbiAxIHNob3dzIDAuMyBhcyAzMC4wJSkuIE9taXR0ZWQgbGVhdmVzIHRoZSBmb3JtYXQncyBvd24gZGVmYXVsdDpcbiAgLy8gYXQgbW9zdCBvbmUgZGVjaW1hbCBmb3IgcGVyY2VudCAoYW5kIGZvciBhbiBhYmJyZXZpYXRlZCAxLjJLKSwgd2hvbGUgdW5pdHNcbiAgLy8gZm9yIGN1cnJlbmN5LCB0aGUgbG9jYWxlJ3MgZGVmYXVsdCBmb3IgYSBudW1iZXIuXG4gIC8vXG4gIC8vIEl0IGNhbm5vdCBiZSBhcHBsaWVkIGluIHRoZSBTUUw6IHRoZSB2YWx1ZSBpcyBhZ2dyZWdhdGVkIGFmdGVyIHRoZSByZXBvcnQnc1xuICAvLyBmaWx0ZXJzIHJ1biwgc28gcHJlLXJvdW5kaW5nIHdvdWxkIGJyZWFrIGxpdmUgcmUtZmlsdGVyaW5nLlxuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIC8vIEFiYnJldmlhdGVzIHRvIHRob3VzYW5kcyAoMS4ySykgb3IgbWlsbGlvbnMgKDMuNE0pLCBvciBwaWNrcyBieSBzaXplLlxuICB1bml0cz86IFJlcG9ydE51bWJlclVuaXRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0TWVhc3VyZSBleHRlbmRzIE51bWJlckZvcm1hdFNwZWMge1xuICBjb2x1bW46IHN0cmluZztcbiAgYWdncmVnYXRpb24/OiAnc3VtJyB8ICdjb3VudCcgfCAnYXZnJyB8ICdtaW4nIHwgJ21heCc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBEcmF3cyB0aGlzIG1lYXN1cmUncyBzZXJpZXMgYXMgYSBkaWZmZXJlbnQgdHlwZSBmcm9tIHRoZSBjaGFydCdzIG93blxuICAvLyBjaGFydFR5cGUg4oCUIGNvdW50cyBhcyBiYXJzIHdpdGggYSByYXRlIGFzIGEgbGluZSBvdmVyIHRoZW0gaXMgYSBjb21ib1xuICAvLyBjaGFydC4gT21pdHRlZCwgdGhlIHNlcmllcyB0YWtlcyB0aGUgY2hhcnQncyB0eXBlLiBBeGlzIGNoYXJ0cyBvbmx5IChhIHBpZVxuICAvLyBpZ25vcmVzIGl0KS5cbiAgdHlwZT86IEF4aXNDaGFydFR5cGU7XG4gIC8vIEEgY2hhcnQgbWVhc3VyZSdzIGZvcm1hdCBzaG93cyBvbiBpdHMgdG9vbHRpcHMsIGFuZCBvbiB0aGUgdmFsdWUgYXhpc1xuICAvLyB3aGVuIGV2ZXJ5IG1lYXN1cmUgc2hhcmluZyB0aGUgYXhpcyBhZ3JlZXMgb24gaXQuIEEgS1BJJ3MgbWVhc3VyZSBmb3JtYXRzXG4gIC8vIGl0cyBvbmUgdmFsdWUuXG4gIGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0O1xuICAvLyBQbG90cyB0aGlzIG1lYXN1cmUgYWdhaW5zdCB0aGUgc2Vjb25kIHZhbHVlIGF4aXMsIG9uIHRoZSByaWdodCwgZm9yIGFcbiAgLy8gcXVhbnRpdHkgb24gYW5vdGhlciBzY2FsZS4gT21pdHRlZCBvciBmYWxzZSwgaXQgc2hhcmVzIHRoZSBwcmltYXJ5IGF4aXMuXG4gIC8vIEEgdmVydGljYWwgYXhpcyBjaGFydCBvbmx5LCB3aXRoIGF0IGxlYXN0IG9uZSBtZWFzdXJlIGxlZnQgb24gdGhlIHByaW1hcnlcbiAgLy8gYXhpcy5cbiAgc2Vjb25kYXJ5PzogYm9vbGVhbjtcbiAgLy8gVGhlIHBhbGV0dGUgY29sb3IgdGhpcyBtZWFzdXJlJ3Mgc2VyaWVzIGlzIGRyYXduIGluLiBPbWl0dGVkLCB0aGUgc2VyaWVzXG4gIC8vIHRha2VzIHRoZSBwYWxldHRlIGNvbG9yIG9mIGl0cyBwb3NpdGlvbi4gQSBjb2xvciBvbiB0aGUgZmlyc3QgbWVhc3VyZVxuICAvLyB0dXJucyBvZmYgYSBjYXRlZ29yeSBiYXIgY2hhcnQncyBkZWZhdWx0IGNvbG9yIHBlciBiYXIgKGlzQ29sb3JCeSkuXG4gIGNvbG9yPzogUmVwb3J0Q2hhcnRDb2xvcjtcbiAgLy8gSG93IGEgbGluZSBzZXJpZXMnIGxpbmUgaXMgZHJhd24uIE9taXR0ZWQsIHNvbGlkLlxuICBsaW5lPzogUmVwb3J0Q2hhcnRMaW5lU3R5bGU7XG4gIC8vIFdoZXRoZXIgYSBsaW5lIG9yIGFyZWEgc2VyaWVzIGRyYXdzIGEgZG90IG9uIGVhY2ggcG9pbnQuIE9taXR0ZWQsIHRydWUuXG4gIG1hcmtlcnM/OiBib29sZWFuO1xuICAvLyBBIGxpbmUgYWNyb3NzIHRoZSBwbG90IGF0IHRoaXMgc2VyaWVzJyBhdmVyYWdlLCBtZWRpYW4sIGxvd2VzdCBvciBoaWdoZXN0XG4gIC8vIHZhbHVlIG92ZXIgdGhlIHBvaW50cyBvbiBzY3JlZW4uIFZlcnRpY2FsIGF4aXMgY2hhcnRzIG9ubHkuXG4gIG1hcmtMaW5lPzogUmVwb3J0Q2hhcnRNYXJrU3RhdDtcbn1cblxuLy8gT25lIGF1dGhvcmVkIGNvbHVtbiBvZiBhIHBsYWluIGxpc3QuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb2x1bW4gZXh0ZW5kcyBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBkYXRlIGtlZXBzIHRoZSBjb2x1bW4gYSBSQVcgdGltZXN0YW1wLCBzbyB0aGUgcmVwb3J0IHRpbWV6b25lIGFuZCBpdHNcbiAgLy8gZGF0ZVJhbmdlIGZpbHRlcnMga2VlcCB3b3JraW5nLCBhbmQgdGhlIHZpZXdlciByZW5kZXJzIGl0IGFzIGEgZGF5IGluIHRoZVxuICAvLyByZXBvcnQncyB6b25lIGFuZCBsb2NhbGUuIG51bWJlciwgcGVyY2VudCBhbmQgY3VycmVuY3kgZm9ybWF0IHRoZSB2YWx1ZSBhc1xuICAvLyBhIEtQSSBtZWFzdXJlIGRvZXMuIFdpdGhvdXQgYSBmb3JtYXQgdGhlIHZhbHVlIHByaW50cyBhcyBpdCBjYW1lLlxuICBmb3JtYXQ/OiBSZXBvcnRMaXN0Q29sdW1uRm9ybWF0O1xuICAvLyBBIGNvbHVtbiB0aGUgU1FMIGFscmVhZHkgZm9ybWF0dGVkIGlzIHRleHQsIHNvIGl0IG5hbWVzIGBzb3J0Q29sdW1uYDogdGhlXG4gIC8vIHJhdyBudW1lcmljIGFsaWFzIHRoZSBxdWVyeSBhbHNvIG91dHB1dHMsIHdoaWNoIHRoZSBzZXJ2ZXIgb3JkZXJzIGJ5XG4gIC8vIGluc3RlYWQuXG4gIHNvcnRDb2x1bW4/OiBzdHJpbmc7XG4gIC8vIGZhbHNlIGtlZXBzIHRoZSBjZWxsIG9uIG9uZSBsaW5lLiBPbWl0dGVkLCBhIGxvbmcgdmFsdWUgd3JhcHMuXG4gIHdyYXA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb25maWcge1xuICBjb2x1bW5zPzogTGlzdENvbHVtbltdO1xuICAvLyBBIGNyb3NzLXRhYjogYHJvd0J5YCBzdGF5cyBkb3duIHRoZSBzaWRlIGFuZCBldmVyeSB2YWx1ZSBvZiBgcGl2b3RCeWBcbiAgLy8gYmVjb21lcyBhIGNvbHVtbi4gVGhlIHR3byBhcmUgc2V0IHRvZ2V0aGVyLCBgY29sdW1uc2AgaXMgb21pdHRlZCAodGhlXG4gIC8vIGJhY2tlbmQgcmVqZWN0cyBhdXRob3JpbmcgYm90aCksIGFuZCB0aGUgY29sdW1uIHNldCBhcnJpdmVzIHdpdGggdGhlIHJvd3NcbiAgLy8gaW4gQ29tcG9uZW50RGF0YS5jb2x1bW5zIGJlY2F1c2Ugb25seSB0aGUgcmVzdWx0IGtub3dzIHRoZSBwaXZvdCB2YWx1ZXMuXG4gIC8vIHJvd0J5LmxhYmVsIGhlYWRzIHRoZSBzaWRlIGNvbHVtbiBvbiBzY3JlZW4gYW5kIGluIGV2ZXJ5IGV4cG9ydCwgYW5kXG4gIC8vIGRlZmF1bHRzIHRvIHRoZSBjb2x1bW4gbmFtZS4gcGl2b3RCeSBjYXJyaWVzIG5vIGxhYmVsOiBpdHMgdmFsdWVzIGFyZSB0aGVcbiAgLy8gaGVhZGluZ3MuXG4gIHJvd0J5PzogeyBjb2x1bW46IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfTtcbiAgcGl2b3RCeT86IHsgY29sdW1uOiBzdHJpbmcgfTtcbiAgLy8gVGhlIGF1dGhvcmVkIG9yZGVyLCBtb3N0IGltcG9ydGFudCBmaXJzdC4gQSBsaXN0IHNhdmVkIGJlZm9yZSBtdWx0aS1rZXlcbiAgLy8gc29ydGluZyBzdG9yZXMgb25lIG9iamVjdCwgc28gcmVhZCBpdCB0aHJvdWdoIGxpc3RTb3J0VGVybXMoKSBvbmx5LlxuICBzb3J0PzogUmVwb3J0U29ydCB8IFJlcG9ydFNvcnRbXTtcbiAgLy8gSG93IG1hbnkgbGVhZGluZyBjb2x1bW5zIHN0YXkgaW4gdmlldyB3aGlsZSB0aGUgbGlzdCBzY3JvbGxzIHNpZGV3YXlzXG4gIC8vICgwLTMpLiBVbnNldCwgYSBjcm9zcy10YWIgcGlucyBpdHMgcm93LWtleSBjb2x1bW4gYW5kIGEgcGxhaW4gbGlzdCBub25lLlxuICBwaW5uZWRDb2x1bW5zPzogbnVtYmVyIHwgbnVsbDtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIC8vIHRydWUgYWRkcyBhIHRvdGFscyByb3cgdW5kZXIgdGhlIGxpc3Q6IHRoZSBzZXJ2ZXIgcnVucyB0aGUgbWVhc3VyZXMgYWdhaW5cbiAgLy8gb3ZlciBldmVyeSByb3cgdGhlIGZpbHRlcnMga2VlcCwgd2l0aG91dCBncm91cGluZywgYW5kIGEgY3Jvc3MtdGFiIHRvdGFsc1xuICAvLyBlYWNoIGNvbHVtbi5cbiAgdG90YWxzPzogYm9vbGVhbjtcbiAgLy8gQSBjcm9zcy10YWIgb25seTogaG93IGV2ZXJ5IGNlbGwgb2YgdGhlIGdyaWQgaXMgZm9ybWF0dGVkLCB3aXRoIGEgS1BJXG4gIC8vIG1lYXN1cmUncyBrZXlzLiBUaGUgcm93IGtleSBjb2x1bW4gc3RheXMgYXMgaXQgY2FtZS5cbiAgY2VsbEZvcm1hdD86IE51bWJlckZvcm1hdFNwZWMgJiB7IGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ29uZmlnIHtcbiAgbWVhc3VyZT86IENoYXJ0TWVhc3VyZTtcbiAgLy8gV2hldGhlciBhIHJpc2UgaW4gdGhlIHZhbHVlIGlzIGdvb2QgbmV3cywgYmFkIG5ld3Mgb3IgbmVpdGhlcjogaXQgcGlja3NcbiAgLy8gdGhlIGRlbHRhJ3MgY29sb3IgYW5kIGRlY2lkZXMgd2hlbiBhIHRhcmdldCBpcyBtZXQgKGdvb2Q6IGF0IG9yIGFib3ZlIGl0O1xuICAvLyBiYWQ6IGF0IG9yIGJlbG93IGl0OyBuZXV0cmFsOiBuZXZlciBqdWRnZWQpLiBPbWl0dGVkIG9yIG51bGwgcmVhZHMgZ29vZC5cbiAgaW5jcmVhc2VJcz86IFJlcG9ydENoYW5nZVBvbGFyaXR5IHwgbnVsbDtcbiAgLy8gQSBudW1iZXIgdGhlIHVzZXIgZ2F2ZSBmb3IgdGhlIHZhbHVlIHRvIHJlYWNoLCBuZXZlciBvbmUgcmVhZCBvZmYgdGhlXG4gIC8vIGRhdGEuIFRoZSBzZXJ2ZXIgc2VuZHMgdGhlIHByb2dyZXNzIHRvd2FyZCBpdCB3aXRoIHRoZSBkYXRhLlxuICB0YXJnZXQ/OiBLcGlUYXJnZXRDb25maWcgfCBudWxsO1xuICAvLyBBIHNtYWxsIHRyZW5kIGxpbmUgb2YgdGhlIHZhbHVlIG92ZXIgaXRzIGxhc3QgcGVyaW9kcywgZHJhd24gdW5kZXIgaXQuXG4gIHNwYXJrbGluZT86IEtwaVNwYXJrbGluZUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIEEgS1BJJ3MgdGFyZ2V0OiB0aGUgdmFsdWUsIGFuZCBhbiBvcHRpb25hbCBjYXB0aW9uIGZvciBpdCAoJ0dvYWwnKS5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpVGFyZ2V0Q29uZmlnIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHNwYXJrbGluZTogaG93IHdpZGUgZWFjaCBwb2ludCdzIHBlcmlvZCBpcyAobnVsbCByZWFkcyBtb250aCkgYW5kXG4vLyBob3cgbWFueSBwZXJpb2RzIGl0IGRyYXdzLCAyIHRvIDYwIChudWxsIHJlYWRzIDEyKS5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpU3BhcmtsaW5lQ29uZmlnIHtcbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgcGVyaW9kcz86IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U29ydCB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IHR5cGUgUmVwb3J0RmlsdGVyVHlwZSA9ICdkYXRlUmFuZ2UnIHwgJ3NlbGVjdCcgfCAna2V5d29yZCc7XG5cbi8vIFdoZXJlIGEgZmlsdGVyIGdyb3VwJ3MgY29udHJvbCBpcyBleHBvc2VkLiBBIGdyb3VwIGNhbiBiZSBzaG93biBvbiBpdHNcbi8vIGNvbXBvbmVudHMsIGluIHRoZSByZXBvcnQgYmFyLCBvciBCT1RIIGF0IG9uY2UgKHRoZSB0d28gYXJlIGluZGVwZW5kZW50XG4vLyB0b2dnbGVzIGluIHRoZSBVSSk7IGEgY29sdW1uIHdpdGggbmVpdGhlciBleHBvc2VkIHNpbXBseSBoYXMgbm8gZmlsdGVyLlxuZXhwb3J0IHR5cGUgUmVwb3J0RmlsdGVyTGV2ZWwgPSAnY29tcG9uZW50JyB8ICdyZXBvcnQnIHwgJ2JvdGgnO1xuXG4vLyBPbmUgZmlsdGVyYWJsZSBvdXRwdXQgY29sdW1uIG9mIGEgY29tcG9uZW50J3MgU1FMLCB3aXRoIHRoZSBmaWx0ZXIgaW50ZXJmYWNlXG4vLyBJTkZFUlJFRCBmcm9tIGl0cyBkYXRhICh0aGUgaHVtYW4gbmV2ZXIgcGlja3MgdGhlIGludGVyZmFjZSDigJQgaXQgZm9sbG93cyB0aGVcbi8vIGNvbHVtbidzIHR5cGUpLiBEcml2ZXMgdGhlIEZpbHRlcnMgdGFiIGxpc3RpbmcuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlcmFibGVDb2x1bW4ge1xuICBjb2x1bW46IHN0cmluZztcbiAgdHlwZTogUmVwb3J0RmlsdGVyVHlwZTtcbn1cblxuLy8gR3JvdW5kIHRydXRoOiBvbmUgZmlsdGVyYWJsZSBvdXRwdXQgY29sdW1uIE9OIG9uZSBjb21wb25lbnQncyBTUUwuIEFsd2F5cyBhXG4vLyBtZW1iZXIgb2YgYSBmaWx0ZXIgZ3JvdXAg4oCUIHRoZSB1bml0IHRoYXQgbGlua3MgZXF1aXZhbGVudCBmaWx0ZXJzIGFjcm9zc1xuLy8gY29tcG9uZW50cyBhbmQgZGVjaWRlcyB3aGVyZSB0aGUgY29udHJvbCByZW5kZXJzIChjb21wb25lbnQgdnMgcmVwb3J0IGJhcikuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlciB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbXBvbmVudElkOiBudW1iZXI7XG4gIGZpbHRlckdyb3VwSWQ6IG51bWJlcjtcbiAgZmlsdGVyQ29sdW1uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBoYXNPcHRpb25zOiBib29sZWFuO1xuICBjb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vLyBPbmUgY2hvaWNlIGluIGEgc2VsZWN0IGZpbHRlcidzIG9wdGlvbiBsaXN0LiBUaGUgdmFsdWUgaXMgd2hhdCB0aGUgZmlsdGVyXG4vLyBtYXRjaGVzIG9uIGFuZCBnZXRzIHN0b3JlZCBpbiBhIHNhdmVkIGRlZmF1bHQg4oCUIGZvciBhbiBlbnRpdHkgdGhhdCBpcyBpdHNcbi8vIHN0YWJsZSBpZCwgbmV2ZXIgaXRzIG5hbWUsIHNvIHJlbmFtaW5nIHRoZSBlbnRpdHkgbW92ZXMgdGhlIGxhYmVsIHdpdGhvdXRcbi8vIGJyZWFraW5nIHRoZSBkZWZhdWx0LiBUaGUgbGFiZWwgaXMgb25seSBldmVyIHdoYXQgdGhlIHZpZXdlciByZWFkcy5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyT3B0aW9uIHtcbiAgdmFsdWU6IHVua25vd247XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyR3JvdXAge1xuICBpZDogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgdHlwZTogUmVwb3J0RmlsdGVyVHlwZTtcbiAgbGV2ZWw6IFJlcG9ydEZpbHRlckxldmVsO1xuICBvcmRlcjogbnVtYmVyO1xuICBjb25maWc6IHsgZGVmYXVsdD86IEZpbHRlckdyb3VwRGVmYXVsdCB9ICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xufVxuXG4vLyBBIGZpbHRlciBncm91cCdzIGF1dGhvcmVkIGRlZmF1bHQg4oCUIHRoZSB2YWx1ZSB0aGF0IHNlZWRzIHRoZSByZXBvcnQgYmFyIG9uXG4vLyBldmVyeSBvcGVuLiBTaGFwZSBmb2xsb3dzIHRoZSBncm91cCdzIHR5cGU6IGRhdGVSYW5nZSB1c2VzIHN0YXJ0L2VuZCAoYSBmaXhlZFxuLy8gY2FsZW5kYXItZGF5IHJhbmdlKSBvciBhIHJlbGF0aXZlIHByZXNldDsgc2VsZWN0IHVzZXMgdmFsdWVzOyBrZXl3b3JkIHVzZXNcbi8vIHZhbHVlLlxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cERlZmF1bHQge1xuICAvLyBkYXRlUmFuZ2UgcmVsYXRpdmUgcHJlc2V0LCByZXNvbHZlZCBvbiBldmVyeSBvcGVuIGFnYWluc3QgdG9kYXkgaW4gdGhlXG4gIC8vIHJlcG9ydCdzIGVmZmVjdGl2ZSB6b25lIChSZXBvcnQuZWZmZWN0aXZlVGltZXpvbmUpLiBPbmUgb2Y6IHRoaXNXZWVrLFxuICAvLyBsYXN0V2VlaywgbGFzdDdEYXlzLCBsYXN0MzBEYXlzLCBsYXN0M01vbnRocywgbGFzdDZNb250aHMsIGxhc3QxMk1vbnRocyxcbiAgLy8gdGhpc01vbnRoLCB0aGlzUXVhcnRlciwgdGhpc1llYXIveWVhclRvRGF0ZS4gV2Vla3MgcnVuIE1vbmRheSB0byBTdW5kYXksXG4gIC8vIHRoZSBzYW1lIHdlZWtzIHRoZSBzZXJ2ZXIncyB3ZWVrbHkgdGltZSBidWNrZXRzIHVzZS5cbiAgcmVsYXRpdmU/OiBzdHJpbmc7XG4gIHN0YXJ0Pzogc3RyaW5nOyAvLyBkYXRlUmFuZ2UgZml4ZWQgc3RhcnQgKHl5eXktTU0tZGQpXG4gIGVuZD86IHN0cmluZzsgLy8gZGF0ZVJhbmdlIGZpeGVkIGVuZCAoeXl5eS1NTS1kZClcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3QgZGVmYXVsdCBwaWNrZWQgdmFsdWVzXG4gIHZhbHVlPzogc3RyaW5nOyAvLyBrZXl3b3JkIGRlZmF1bHQgdGV4dFxufVxuXG4vLyBUaGUgc2Vzc2lvbiB2YWx1ZSBvZiBhIGZpbHRlciBncm91cDogc2hhcGUgZGVwZW5kcyBvbiB0aGUgZ3JvdXAncyB0eXBlLiBOb3Rcbi8vIHN0b3JlZCBvbiB0aGUgc2VydmVyOyB0aGUgdmlld2VyJ3MgVVJMIGNhcnJpZXMgdGhlIHZhbHVlcyB0aGF0IGRpZmZlciBmcm9tXG4vLyB0aGUgZGVmYXVsdHMgKHJlcG9ydC11cmwtc3RhdGUudHMpLlxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cFZhbHVlIHtcbiAgc3RhcnQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDsgLy8gZGF0ZVJhbmdlXG4gIGVuZD86IERhdGUgfCBzdHJpbmcgfCBudWxsOyAvLyBkYXRlUmFuZ2VcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3RcbiAgdmFsdWU/OiBzdHJpbmc7IC8vIGtleXdvcmRcbiAgLy8gZGF0ZVJhbmdlIG9ubHk6IHRoZSByZWxhdGl2ZSBwcmVzZXQgbmFtZSB0aGVzZSBkYXRlcyB3ZXJlIHJlc29sdmVkIGZyb21cbiAgLy8gKGEgRmlsdGVyR3JvdXBEZWZhdWx0LnJlbGF0aXZlIG5hbWUpLiBTZXQgb25seSB3aGVuIHRoZSB2YWx1ZSB3YXMgc2VlZGVkXG4gIC8vIGZyb20gdGhlIGdyb3VwJ3MgcmVsYXRpdmUgZGVmYXVsdCBvciByZWFkIGZyb20gYSBwcmVzZXQgbmFtZSBpbiB0aGUgVVJMLFxuICAvLyBzbyB0aGUgVVJMIGtlZXBzIHRoZSByYW5nZSByb2xsaW5nICgnbGFzdDMwRGF5cycpIGluc3RlYWQgb2YgZnJlZXppbmcgdHdvXG4gIC8vIGRhdGVzLCBhbmQgdGhlIGRhdGEgcmVxdWVzdCBuYW1lcyB0aGUgcGVyaW9kIGl0IGNvdmVycyAoc2VlXG4gIC8vIFJlc29sdmVkRmlsdGVyVmFsdWUucHJlc2V0KS4gQW55IGRhdGUgcGlja2VkIGJ5IHRoZSB2aWV3ZXIsIGEgcGlja2VyXG4gIC8vIHNob3J0Y3V0IGluY2x1ZGVkLCBpcyBzdG9yZWQgd2l0aG91dCBpdC5cbiAgcHJlc2V0Pzogc3RyaW5nO1xufVxuXG4vLyBBIHJlbGF0aXZlIGRhdGUgcmFuZ2UgdGhlIHNlcnZlciByZXNvbHZlcyBhZ2FpbnN0IHRvZGF5IGluIHRoZSByZXBvcnQnc1xuLy8gem9uZTogdGhlIG5hbWVzIGEgRmlsdGVyR3JvdXBEZWZhdWx0LnJlbGF0aXZlIGFuZCBhIHRpbWVmcmFtZSdzIHJhbmdlIHRha2UuXG4vLyBNaXJyb3JzIHRoZSBzZXJ2ZXIncyBSZXBvcnRSZWxhdGl2ZVJhbmdlRW51bSB2YWx1ZSBmb3IgdmFsdWVcbi8vIChSZXBvcnRSZWxhdGl2ZVJhbmdlRW51bVRlc3QgcGlucyB0aGUgZGF5cyBlYWNoIG9uZSBjb3ZlcnMpLlxuZXhwb3J0IHR5cGUgUmVwb3J0UmVsYXRpdmVSYW5nZSA9XG4gIHwgJ3RoaXNXZWVrJ1xuICB8ICdsYXN0V2VlaydcbiAgfCAnbGFzdDdEYXlzJ1xuICB8ICdsYXN0MzBEYXlzJ1xuICB8ICdsYXN0M01vbnRocydcbiAgfCAnbGFzdDZNb250aHMnXG4gIHwgJ2xhc3QxMk1vbnRocydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzUXVhcnRlcidcbiAgfCAndGhpc1llYXInXG4gIHwgJ3llYXJUb0RhdGUnO1xuXG4vLyBUaGUgdmlld2VyLXN0YXRlIHF1ZXJ5IHBhcmFtcyBvZiBhIHJlcG9ydCBVUkwsIGFzIHJhdyBzdHJpbmdzLCBiZWZvcmUgdGhleVxuLy8gYXJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgcmVwb3J0IChyZXBvcnQtdXJsLXN0YXRlLnRzIHJlYWRSZXBvcnRVcmxQYXJhbXMpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRVcmxQYXJhbXMge1xuICAvLyBnPGdyb3VwSWQ+IC0+IHRoZSBlbmNvZGVkIGdyb3VwIHZhbHVlICgnJyA9IHRoZSB2aWV3ZXIgY2xlYXJlZCBpdCkuXG4gIGdyb3VwczogTWFwPG51bWJlciwgc3RyaW5nPjtcbiAgLy8gczxjb21wb25lbnRJZD4gLT4gdGhlIGVuY29kZWQgbGlzdCBzb3J0ICgnLWNvbHVtbicgPSBkZXNjZW5kaW5nKS5cbiAgbGlzdFNvcnRzOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICAvLyBxPGNvbXBvbmVudElkPiAtPiBhIGxpc3QncyBzZWFyY2ggYm94IHRleHQsIGFzIHR5cGVkLlxuICBsaXN0U2VhcmNoZXM6IE1hcDxudW1iZXIsIHN0cmluZz47XG4gIC8vIGg8Y29tcG9uZW50SWQ+IC0+IHRoZSBjb2x1bW5zIGEgdmlld2VyIGhpZCBvbiBhIGxpc3QsIHN0aWxsIGVuY29kZWRcbiAgLy8gKGRlY29kZUNvbHVtbkxpc3QpLlxuICBsaXN0SGlkZGVuOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICAvLyBUaGUgZ3JvdXAtYnkgZ3JhaW4sIG9yIG51bGwgd2hlbiB0aGUgVVJMIGhhcyBub25lLlxuICBncm91cEJ5OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBUaGUgdmlld2VyIHN0YXRlIHRoZSBVUkwgc2hvdWxkIGNhcnJ5OiBvbmx5IHdoYXQgZGlmZmVycyBmcm9tIHRoZSByZXBvcnQnc1xuLy8gYXV0aG9yZWQgZGVmYXVsdHMgKFJlcG9ydEZpbHRlclN0YXRlU2VydmljZS51cmxTbmFwc2hvdCkuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFVybFNuYXBzaG90IHtcbiAgLy8gQSBncm91cCdzIHZhbHVlLCBvciBudWxsIHdoZW4gdGhlIHZpZXdlciBjbGVhcmVkIGEgZ3JvdXAgdGhhdCBoYXMgYSBkZWZhdWx0LlxuICBncm91cHM6IE1hcDxudW1iZXIsIEZpbHRlckdyb3VwVmFsdWUgfCBudWxsPjtcbiAgLy8gQSBsaXN0J3Mgc29ydCwgYnkgY29tcG9uZW50IGlkLCB3aGVuIGl0IGRpZmZlcnMgZnJvbSB0aGUgYXV0aG9yZWQgc29ydCdzXG4gIC8vIGZpcnN0IHRlcm0uXG4gIGxpc3RTb3J0czogTWFwPG51bWJlciwgUmVwb3J0U29ydD47XG4gIC8vIEEgbGlzdCdzIHNlYXJjaCBib3ggdGV4dCwgYnkgY29tcG9uZW50IGlkLiBBIGxpc3Qgd2l0aCBhbiBlbXB0eSBib3ggaXNcbiAgLy8gbGVmdCBvdXQuXG4gIGxpc3RTZWFyY2hlczogTWFwPG51bWJlciwgc3RyaW5nPjtcbiAgLy8gVGhlIGNvbmZpZyBjb2x1bW4gbmFtZXMgYSB2aWV3ZXIgaGlkIG9uIGEgcGxhaW4gbGlzdCwgYnkgY29tcG9uZW50IGlkLiBBXG4gIC8vIGxpc3Qgc2hvd2luZyBldmVyeSBjb2x1bW4gaXMgbGVmdCBvdXQuXG4gIGxpc3RIaWRkZW46IE1hcDxudW1iZXIsIHN0cmluZ1tdPjtcbiAgZnJlcXVlbmN5OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbn1cblxuLy8gT25lIHJlc29sdmVkIGZpbHRlciBzZW50IHdpdGggYSBjb21wb25lbnQncyBkYXRhIHJlcXVlc3QuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVkRmlsdGVyVmFsdWUge1xuICBmaWx0ZXJJZDogbnVtYmVyO1xuICBzdGFydD86IHN0cmluZztcbiAgZW5kPzogc3RyaW5nO1xuICB2YWx1ZXM/OiB1bmtub3duW107XG4gIHZhbHVlPzogc3RyaW5nO1xuICAvLyBkYXRlUmFuZ2Ugb25seTogdGhlIHJlbGF0aXZlIHJhbmdlIHN0YXJ0IGFuZCBlbmQgc3RpbGwgYXJlLCBzZW50IG9ubHlcbiAgLy8gd2hpbGUgdGhleSBhcmUgZXhhY3RseSB0aGF0IHJhbmdlIHJlc29sdmVkIHRvZGF5IGluIHRoZSByZXBvcnQncyB6b25lLiBJdFxuICAvLyB0ZWxscyB0aGUgc2VydmVyIHdoaWNoIHBlcmlvZCB0aGUgZGF5cyBjb3ZlciAob24gdGhlIGZpcnN0IGRheXMgb2YgYVxuICAvLyBxdWFydGVyLCB0aGlzTW9udGggYW5kIHRoaXNRdWFydGVyIGFyZSB0aGUgc2FtZSBkYXlzKSwgc28gYSBjb21wYXJpc29uXG4gIC8vIHNoaWZ0cyBieSB0aGUgcmlnaHQgdW5pdC4gc3RhcnQgYW5kIGVuZCBzdGF5IHRoZSB3aW5kb3c7IGEgc2VydmVyIHRoYXRcbiAgLy8gZG9lcyBub3Qga25vdyB0aGUga2V5IGlnbm9yZXMgaXQuXG4gIHByZXNldD86IFJlcG9ydFJlbGF0aXZlUmFuZ2U7XG59XG5cbi8vIFBlci1jb21wb25lbnQgaW50ZXJhY3Rpb24gc3RhdGUgc2VudCB3aXRoIHRoZSBkYXRhIHJlcXVlc3Q6IGxpc3RzIHNlbmRcbi8vIHNvcnQvcGFnaW5nIGFuZCB0aGUgdGV4dCBpbiB0aGVpciBzZWFyY2ggYm94OyB0aW1lLXNlcmllcyBjaGFydHMgc2VuZCB0aGVcbi8vIGdyYWluIHBpY2tlZCBvbiB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBhdXRob3JlZFxuLy8gZ3JhbnVsYXJpdHkgZm9yIHRoYXQgcmVxdWVzdCBvbmx5LiBUaGUgd2lyZSBrZXkgc3RheXMgYGZyZXF1ZW5jeWAg4oCUIGl0IGlzIHRoZVxuLy8gYnVja2V0aW5nIGZyZXF1ZW5jeSB0aGUgc2VydmVyIGFwcGxpZXMuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGFTdGF0ZSB7XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBwYWdlPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgZnJlcXVlbmN5PzogQ2hhcnRHcmFudWxhcml0eTtcbiAgLy8gQSBsaXN0J3Mgc2VhcmNoIGJveCB0ZXh0LiBUaGUgc2VydmVyIHRyaW1zIGl0LCBjdXRzIGl0IHRvIGl0cyBvd24gbWF4aW11bVxuICAvLyBsZW5ndGggYW5kIG1hdGNoZXMgaXQgYWdhaW5zdCBldmVyeSB0ZXh0IGNvbHVtbiB0aGUgbGlzdCBzaG93cy5cbiAgc2VhcmNoPzogc3RyaW5nO1xuICAvLyBUaGUgY29uZmlnIGNvbHVtbiBuYW1lcyBhIHZpZXdlciBoaWQgb24gYSBwbGFpbiBsaXN0LiBTZW50IHdpdGggYSBDU1ZcbiAgLy8gZXhwb3J0IG9ubHkgKHRoZSBzY3JlZW4gaGlkZXMgdGhlbSBpdHNlbGYpOiB0aGUgZmlsZSBsZWF2ZXMgdGhlbSBvdXQuIFRoZVxuICAvLyBzZXJ2ZXIgaWdub3JlcyBpdCBvbiBhIGNyb3NzLXRhYiwgYW5kIHdoZW4gaXQgd291bGQgaGlkZSBldmVyeSBjb2x1bW4uXG4gIGhpZGRlbkNvbHVtbnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhIHtcbiAgY29sdW1uczogc3RyaW5nW107XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHBhZ2luZz86IHsgdG90YWw6IG51bWJlcjsgcGFnZTogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH07XG4gIHRydW5jYXRlZDogYm9vbGVhbjtcbiAgLy8gVGhlIGVmZmVjdGl2ZSB0aW1lIGJ1Y2tldCB0aGUgcm93cyB3ZXJlIGdyb3VwZWQgaW50byAoYWZ0ZXIgYW55IGdyb3VwLWJ5XG4gIC8vIG92ZXJyaWRlKSwgb3IgbnVsbCBmb3IgYSBub24tdGltZSBheGlzLiBEcml2ZXMgdGhlIGNvbXBhY3QgeC1heGlzIGxhYmVscy5cbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgLy8gUGFnZSAxIG9mIGEgc2VhcmNoZWQgbGlzdCB3aG9zZSBzZWFyY2ggY291bGQgbm90IGFwcGx5ICh0aGUgbGlzdCBoYXMgbm9cbiAgLy8gdGV4dCBjb2x1bW4gdG8gc2VhcmNoKTogd2h5IHRoZSByb3dzIGFyZSBub3QgbmFycm93ZWQuIEFic2VudCBvdGhlcndpc2UuXG4gIHNlYXJjaE5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBQYWdlIDEgb2YgYSBsaXN0IHdpdGggY29uZmlnLnRvdGFscyBvbjogaXRzIHRvdGFscyByb3csIGFzIHJhdyB2YWx1ZXNcbiAgLy8ga2V5ZWQgbGlrZSB0aGUgY29sdW1ucyAoYSBwbGFpbiBsaXN0J3MgbWVhc3VyZSBhbGlhc2VzOyBhIGNyb3NzLXRhYidzXG4gIC8vIHBpdm90IGNlbGwgY29sdW1ucywgdGhlIHJvdy1rZXkgY29sdW1uIGFic2VudCksIG9yIG51bGwgd2l0aCB0b3RhbHNOb3RlXG4gIC8vIHNheWluZyB3aHkgdGhlcmUgaXMgbm9uZS4gQWJzZW50IG9uIGV2ZXJ5IG90aGVyIHBhZ2UgYW5kIGxpc3QuXG4gIHRvdGFscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgdG90YWxzTm90ZT86IHN0cmluZyB8IG51bGw7XG4gIC8vIFRoZSB3aW5kb3cgb2YgZGF5cyB0aGUgY29tcG9uZW50IHJlYWRzLCB3aGVuIGl0cyBxdWVyeSBoYXMgYSB0aW1lZnJhbWUuXG4gIC8vIEFic2VudCBvdGhlcndpc2UsIGFuZCBmcm9tIG9sZGVyIHNlcnZlcnMuXG4gIHRpbWVmcmFtZT86IENvbXBvbmVudFRpbWVmcmFtZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW50IGFuZCBwcmlvciB3aW5kb3dzIG9mIGEgY29tcG9uZW50IHdob3NlIG1lYXN1cmVzIGNvbXBhcmVcbiAgLy8gYWdhaW5zdCBhbiBlYXJsaWVyIHBlcmlvZC4gQWJzZW50IHdoZW4gbm8gbWVhc3VyZSBjb21wYXJlcy4gU2VudCBvbiBldmVyeVxuICAvLyBsaXN0IHBhZ2UgYW5kIG9uIGNoYXJ0IGFuZCBLUEkgZGF0YS5cbiAgY29tcGFyaXNvbj86IENvbXBvbmVudENvbXBhcmlzb24gfCBudWxsO1xuICAvLyBXaGF0IGVhY2ggY29tcGFyZWQsIHdpbmRvd2VkLCByYW5rZWQgb3Igc2hhcmVkIG91dHB1dCBjb2x1bW4gaXMsIGJ5IGFsaWFzLlxuICAvLyBQbGFpbiBtZWFzdXJlIGNvbHVtbnMgYXJlIGxlZnQgb3V0LlxuICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgT3V0cHV0TWV0YT47XG4gIC8vIEEgY3Jvc3MtdGFiIG9ubHk6IHRoZSBtZWFzdXJlIGFsaWFzIGVhY2ggcGl2b3QgY2VsbCBjb2x1bW4gaG9sZHMsIHNvIGFcbiAgLy8gY2VsbCB0YWtlcyBpdHMgbWVhc3VyZSdzIG91dHB1dCBtZWFuaW5nLiBOZXZlciBzZW50IGZvciBhIHNxbC1tb2RlIGxpc3QuXG4gIGNlbGxNZWFzdXJlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIEhvdyBlYWNoIHdpbmRvd2VkIG91dHB1dCBjb2x1bW4gKHJ1bm5pbmcsIHRvLWRhdGUgb3Igcm9sbGluZykgd2FzXG4gIC8vIGNvbXB1dGVkLCBieSBhbGlhcy5cbiAgd2luZG93cz86IFJlY29yZDxzdHJpbmcsIFdpbmRvd01ldGE+O1xuICAvLyBBIEtQSSB3aXRoIGEgY29tcGFyaXNvbiwgYSB0YXJnZXQgb3IgYSBzcGFya2xpbmU6IGV2ZXJ5IG51bWJlciB0aGUgY2FyZFxuICAvLyBzaG93cyBiZXNpZGUgaXRzIHZhbHVlLCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuXG4gIGtwaT86IENvbXBvbmVudEtwaSB8IG51bGw7XG4gIC8vIFRoZSB0aW1lLWF4aXMgdmFsdWUgb2YgdGhlIGJ1Y2tldCBjb250YWluaW5nIHRvZGF5LCB3cml0dGVuIGFzIHRoZSByb3dzXG4gIC8vIHdyaXRlIGl0LCB3aGVuIHRoYXQgYnVja2V0IGlzIG5vdCBmaW5pc2hlZCB5ZXQ7IG51bGwgb3RoZXJ3aXNlLiBBIGNoYXJ0XG4gIC8vIG1hcmtzIGl0IGFzIHBhcnRpYWwuXG4gIHBhcnRpYWxQZXJpb2Q/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBXaGVyZSBhIGNvbXBvbmVudCdzIHRpbWVmcmFtZSB3aW5kb3cgY2FtZSBmcm9tOiBhIHZpZXdlciBkYXRlUmFuZ2UgYm91bmQgdG9cbi8vIHRoZSB0aW1lZnJhbWUgY29sdW1uICh3aGljaCByZXBsYWNlcyB0aGUgYXV0aG9yZWQgcmFuZ2UsIG5ldmVyIG5hcnJvd3Ncbi8vIGl0KSwgdGhlIGF1dGhvcmVkIHJlbGF0aXZlIHJhbmdlLCB0aGUgYXV0aG9yZWQgZml4ZWQgZGF5cywgb3Igbm90aGluZyAoYW5cbi8vIG9wZW4gd2luZG93KS5cbmV4cG9ydCB0eXBlIFRpbWVmcmFtZVNvdXJjZSA9ICdmaWx0ZXInIHwgJ3JhbmdlJyB8ICdmaXhlZCcgfCAnbm9uZSc7XG5cbi8vIFRoZSB3aW5kb3cgYSBjb21wb25lbnQncyB0aW1lZnJhbWUgcmVzb2x2ZWQgdG8uIHN0YXJ0IGFuZCBlbmQgYXJlXG4vLyBpbmNsdXNpdmUgJ3l5eXktTU0tZGQnIGRheXMgaW4gdGhlIHJlcG9ydCdzIHpvbmUsIHdyaXR0ZW4gd2l0aG91dCBhIHpvbmUuXG4vLyB0aHJvdWdoIGlzIHRoZSBVVEMgJ3l5eXktTU0tZGQgSEg6bW06c3MnIGluc3RhbnQgYSB3aW5kb3cgb24gYSBkYXRldGltZVxuLy8gY29sdW1uIGlzIGN1dCBhdDsgaXQgcmVhZHMgYXMgYSB0aW1lIGluIHRoZSByZXBvcnQgem9uZS4gSXQgaXMgc2V0IG9ubHkgd2hlblxuLy8gYSBjb21wYXJpc29uIGN1dHMgYSB3aW5kb3cgdGhhdCBlbmRzIHRvZGF5OiBhIHRpbWVmcmFtZSBvbiBpdHMgb3duIHJlYWRzXG4vLyB3aG9sZSBkYXlzLCBzbyBhIHdpbmRvdyBlbmRpbmcgdG9kYXkgd2l0aG91dCBhIGNvbXBhcmlzb24gc2VuZHMgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50VGltZWZyYW1lIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHN0YXJ0OiBzdHJpbmcgfCBudWxsO1xuICBlbmQ6IHN0cmluZyB8IG51bGw7XG4gIHRocm91Z2g6IHN0cmluZyB8IG51bGw7XG4gIHJhbmdlOiBSZXBvcnRSZWxhdGl2ZVJhbmdlIHwgbnVsbDtcbiAgc291cmNlOiBUaW1lZnJhbWVTb3VyY2U7XG59XG5cbi8vIEhvdyBhIGNvbXBhcmlzb24gaXMgbGFpZCBvdXQ6IG9uZSB2YWx1ZSBwZXIgd2luZG93IChyYW5nZSksIGEgcHJpb3Igc2VyaWVzXG4vLyBiZXNpZGUgYSB0aW1lIGF4aXMgKHNlcmllcyksIG9yIGVhY2ggcGVyaW9kJ3MgdmFsdWUgcmVhZCBhdCBpdHMgZW5kLCBzZXRcbi8vIGFnYWluc3QgdGhlIHZhbHVlIGF0IHRoZSBlbmQgb2YgYW4gZWFybGllciBwZXJpb2QgKHBlcmlvZF9lbmQpLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbk1vZGUgPSAncmFuZ2UnIHwgJ3NlcmllcycgfCAncGVyaW9kX2VuZCc7XG5cbi8vIHRvX2RhdGUgY29tcGFyZXMgbGlrZSB3aXRoIGxpa2UgKHRoZSBmaXJzdCAyIGRheXMgb2YgYSBtb250aCBhZ2FpbnN0IHRoZVxuLy8gZmlyc3QgMiBkYXlzIG9mIHRoZSBvbmUgYmVmb3JlKTsgZnVsbCBjb21wYXJlcyB3aG9sZSBwZXJpb2RzLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbkFsaWduID0gJ3RvX2RhdGUnIHwgJ2Z1bGwnO1xuXG4vLyBXaGF0IGEgbWVhc3VyZSBpcyBjb21wYXJlZCBhZ2FpbnN0LiBNaXJyb3JzIHRoZSBzZXJ2ZXInc1xuLy8gQ29tcGFyaXNvbkFnYWluc3RFbnVtIHZhbHVlIGZvciB2YWx1ZS5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25BZ2FpbnN0ID1cbiAgfCAncHJldmlvdXNfcGVyaW9kJ1xuICB8ICdwcmV2aW91c193ZWVrJ1xuICB8ICdwcmV2aW91c19tb250aCdcbiAgfCAncHJldmlvdXNfcXVhcnRlcidcbiAgfCAncHJldmlvdXNfeWVhcidcbiAgfCAncmFuZ2UnO1xuXG4vLyBXaHkgYSBjb21wYXJpc29uIHJlYWRzIGFzIGl0IGRvZXMuIFRoZSBzZXJ2ZXIgc2VuZHMgY29kZXMsIG5ldmVyXG4vLyBzZW50ZW5jZXM7IHRoZSB2aWV3ZXIgd29yZHMgdGhlbS5cbi8vIC0gbm9fd2luZG93OiBubyBkYXRlIHJhbmdlIHRvIGNvbXBhcmUgeWV0O1xuLy8gLSB1bml0X2luZmVycmVkOiB0aGUgcGVyaW9kIHVuaXQgd2FzIGluZmVycmVkIGZyb20gdGhlIGRheXMsIG5vdCBuYW1lZDtcbi8vIC0gd2luZG93X2luX2Z1dHVyZTogdGhlIHdpbmRvdyBzdGFydHMgYWZ0ZXIgdG9kYXk7XG4vLyAtIG90aGVyX2RhdGVfZmlsdGVyOiBhIGRhdGUgZmlsdGVyIG9uIGFub3RoZXIgY29sdW1uIGFsc28gYXBwbGllcztcbi8vIC0gZ3JhaW5fZm9sbG93ZWQ6IHRoZSBwcmlvciBmb2xsb3dzIHRoZSBncm91cC1ieSBncmFpbiBwaWNrZWQgb24gdGhlIHJlcG9ydC5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25Ob3RlQ29kZSA9XG4gIHwgJ25vX3dpbmRvdydcbiAgfCAndW5pdF9pbmZlcnJlZCdcbiAgfCAnd2luZG93X2luX2Z1dHVyZSdcbiAgfCAnb3RoZXJfZGF0ZV9maWx0ZXInXG4gIHwgJ2dyYWluX2ZvbGxvd2VkJztcblxuLy8gT25lIGNvbXBhcmlzb24gd2luZG93OiBpbmNsdXNpdmUgJ3l5eXktTU0tZGQnIGRheXMgaW4gdGhlIHJlcG9ydCdzIHpvbmUsXG4vLyBhbmQgdGhlIFVUQyBpbnN0YW50IGl0IGlzIGN1dCBhdCB3aGVuIGl0IGVuZHMgdG9kYXkgb24gYSBkYXRldGltZSBjb2x1bW4uXG4vLyBJbiBzZXJpZXMgbW9kZSBpdCBpcyB0aGUgc3BhbiB0aGUgY2hhcnQgc2hvd3MuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25XaW5kb3cge1xuICBzdGFydDogc3RyaW5nO1xuICBlbmQ6IHN0cmluZztcbiAgdGhyb3VnaDogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gSG93IGZhciBiYWNrIG9uZSBwcmlvciBsYW5lIHNpdHMuIEEgY3VzdG9tIHJhbmdlIGhhcyBubyB1bml0IG9yIGNvdW50LCBhbmRcbi8vIG5laXRoZXIgZG9lcyBwcmV2aW91c19wZXJpb2Qgd2hlbiB0aGVyZSBpcyBubyBjdXJyZW50IHdpbmRvdyB0byBtZWFzdXJlXG4vLyAobm9fd2luZG93LCB3aW5kb3dfaW5fZnV0dXJlKTsgYSBzaGlmdCBieSB0aGUgd2luZG93J3MgbGVuZ3RoIGlzIHVuaXQgZGF5XG4vLyB3aXRoIHRoZSBsZW5ndGggYXMgdGhlIGNvdW50OyBhIHByZXZpb3VzIHllYXIgaXMgMzY0IGRheXMgb24gYSBkYXkgYXhpcyBhbmRcbi8vIDUyIHdlZWtzIG9uIGEgd2VlayBheGlzLlxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uT2Zmc2V0IHtcbiAgYWdhaW5zdDogQ29tcGFyaXNvbkFnYWluc3Q7XG4gIHVuaXQ6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBjb3VudDogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gQSBjb21wb25lbnQncyBjb21wYXJpc29uOiB0aGUgem9uZSBpdHMgZGF5cyBhcmUgaW4sIHRoZSBjdXJyZW50IHdpbmRvd1xuLy8gKG51bGwgd2hlbiB0aGVyZSBpcyBubyB3aW5kb3cgdG8gY29tcGFyZSB5ZXQsIG9yIHdoZW4gYSB0aW1lIGF4aXMgcnVuc1xuLy8gb3ZlciBhbGwgdGhlIGRhdGEsIHdoaWNoIGhhcyBubyBmaXJzdCBkYXkgdG8gbmFtZSkgYW5kIHVwIHRvIDIgcHJpb3Jcbi8vIGxhbmVzOiBvZmZzZXRzW2ldIGRlc2NyaWJlcyBsYW5lIGkgKyAxLCBhbmQgcHJpb3JzW2ldIGl0cyB3aW5kb3cuIFdpdGggbm9cbi8vIGN1cnJlbnQgd2luZG93IHByaW9ycyBpcyBlbXB0eSwgd2hpbGUgb2Zmc2V0cyBzdGlsbCBuYW1lcyBldmVyeSBsYW5lLlxuLy8gZmxvb3IgaXMgdGhlICd5eXl5LU1NLWRkJyBkYXkgb2YgdGhlIGZpcnN0IHJvdyB0aGUgcXVlcnkncyBvd24gY29uZGl0aW9uc1xuLy8ga2VlcCAodmlld2VyIGZpbHRlcnMgYXNpZGUpOiBhIHByaW9yIHdpbmRvdyB3aG9sbHkgYmVmb3JlIGl0IGhhcyBubyBkYXRhXG4vLyByYXRoZXIgdGhhbiBhIHplcm8uXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudENvbXBhcmlzb24ge1xuICBtb2RlOiBDb21wYXJpc29uTW9kZTtcbiAgdGltZXpvbmU6IHN0cmluZztcbiAgYWxpZ246IENvbXBhcmlzb25BbGlnbjtcbiAgY3VycmVudDogQ29tcGFyaXNvbldpbmRvdyB8IG51bGw7XG4gIHByaW9yczogQ29tcGFyaXNvbldpbmRvd1tdO1xuICBvZmZzZXRzOiBDb21wYXJpc29uT2Zmc2V0W107XG4gIGZsb29yOiBzdHJpbmcgfCBudWxsO1xuICBub3RlczogQ29tcGFyaXNvbk5vdGVDb2RlW107XG59XG5cbi8vIFdoYXQgYW4gb3V0cHV0IGNvbHVtbiBob2xkczogYSBtZWFzdXJlJ3MgdmFsdWUsIGl0cyByYW5rIG9yIGl0cyBzaGFyZS5cbmV4cG9ydCB0eXBlIE91dHB1dEtpbmQgPSAndmFsdWUnIHwgJ3JhbmsnIHwgJ3NoYXJlJztcblxuLy8gV2hpY2ggc2lkZSBvZiBhIGNvbXBhcmlzb24gYW4gb3V0cHV0IGNvbHVtbiBpczogdGhlIGN1cnJlbnQgdmFsdWUsIHRoZVxuLy8gcHJpb3Igb25lLCB0aGVpciBkaWZmZXJlbmNlLCBvciB0aGUgZGlmZmVyZW5jZSBhcyBhIDAtMSBmcmFjdGlvbiBvZiB0aGVcbi8vIHByaW9yLiBudWxsIGZvciBhbiBvdXRwdXQgdGhhdCBpcyBub3QgY29tcGFyZWQuXG5leHBvcnQgdHlwZSBPdXRwdXRSb2xlID0gJ2N1cnJlbnQnIHwgJ3ByaW9yJyB8ICdjaGFuZ2UnIHwgJ3BlcmNlbnRfY2hhbmdlJztcblxuLy8gSG93IHRpZWQgdmFsdWVzIHJhbms6IDEsIDEsIDMgKGNvbXBldGl0aW9uKSBvciAxLCAxLCAyIChkZW5zZSkuXG5leHBvcnQgdHlwZSBPdXRwdXRSYW5rTWV0aG9kID0gJ2NvbXBldGl0aW9uJyB8ICdkZW5zZSc7XG5cbi8vIEEgcmFuayBvdXRwdXQ6IGhvdyB0aWVzIHJhbmssIHdoaWNoIGVuZCByYW5rcyAxIChkZXNjOiB0aGUgbGFyZ2VzdCksIGFuZFxuLy8gdGhlIGRpbWVuc2lvbiBvdXRwdXRzIGl0IHJlc3RhcnRzIHdpdGhpbiAobm9uZTogdGhlIHdob2xlIHJlc3VsdCkuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFJhbmsge1xuICBtZXRob2Q6IE91dHB1dFJhbmtNZXRob2Q7XG4gIGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYyc7XG4gIHdpdGhpbjogc3RyaW5nW107XG59XG5cbi8vIEEgc2hhcmUgb3V0cHV0OiB0aGUgZGltZW5zaW9uIG91dHB1dHMgd2hvc2UgdG90YWwgaXQgaXMgYSBzaGFyZSBvZiAobm9uZTpcbi8vIHRoZSB3aG9sZSByZXN1bHQpLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRTaGFyZSB7XG4gIHdpdGhpbjogc3RyaW5nW107XG59XG5cbi8vIFRoZSBtZWFuaW5nIG9mIG9uZSBjb21wYXJlZCwgd2luZG93ZWQsIHJhbmtlZCBvciBzaGFyZWQgb3V0cHV0IGNvbHVtbi5cbi8vIG1lYXN1cmUgaXMgdGhlIHNvdXJjZSBtZWFzdXJlJ3MgYWxpYXMsIHdob3NlIGZvcm1hdCB0aGUgY29sdW1uIGluaGVyaXRzO1xuLy8gb2Zmc2V0IGlzIHRoZSBwcmlvciBsYW5lIGEgcHJpb3IsIGNoYW5nZSBvciBwZXJjZW50IGNoYW5nZSBiZWxvbmdzIHRvIChpdHNcbi8vIHdpbmRvdyBpcyBjb21wYXJpc29uLnByaW9yc1tvZmZzZXQgLSAxXSkuIFVubGVzcyB0aGUgY29uZmlnIGZvcm1hdHMgaXQsIGFcbi8vIHNoYXJlIHByaW50cyBhcyBhIHBlcmNlbnQgdG8gMSBkZWNpbWFsIGFuZCBhIHJhbmsgYXMgYSB3aG9sZSBudW1iZXIuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dE1ldGEge1xuICBtZWFzdXJlOiBzdHJpbmc7XG4gIGtpbmQ6IE91dHB1dEtpbmQ7XG4gIHJvbGU6IE91dHB1dFJvbGUgfCBudWxsO1xuICBvZmZzZXQ6IG51bWJlciB8IG51bGw7XG4gIHdpbmRvdzogYm9vbGVhbjtcbiAgcmFuazogT3V0cHV0UmFuayB8IG51bGw7XG4gIHNoYXJlOiBPdXRwdXRTaGFyZSB8IG51bGw7XG59XG5cbi8vIEEgd2luZG93IG92ZXIgdGhlIHJvd3M6IGEgcnVubmluZyB0b3RhbCwgYSB0b3RhbCB0byBkYXRlIHdpdGhpbiBlYWNoXG4vLyBwZXJpb2QgKG1vbnRoIHRvIGRhdGUpLCBvciBhIHJvbGxpbmcgc3BhbiBvZiBwZXJpb2RzLlxuZXhwb3J0IHR5cGUgV2luZG93S2luZCA9ICdydW5uaW5nJyB8ICd0b19kYXRlJyB8ICdyb2xsaW5nJztcblxuLy8gV2h5IGEgd2luZG93IHJlYWRzIGFzIGl0IGRvZXMuIENvZGVzIG9ubHk7IHRoZSB2aWV3ZXIgd29yZHMgdGhlbS5cbmV4cG9ydCB0eXBlIFdpbmRvd05vdGVDb2RlID1cbiAgfCAnc25hcHBlZF9zdGFydCdcbiAgfCAnc3Bhbl9jb252ZXJ0ZWQnXG4gIHwgJ2dyYWluX3Rvb19jb2Fyc2UnXG4gIHwgJ2VxdWFsX2dyYWluX3BsYWluJ1xuICB8ICdvd25fZmlsdGVyX2NhcHNfbGVhZF9pbidcbiAgfCAnd2Vla19ieV9tb25kYXknXG4gIHwgJ2luY29tcGxldGVfaGVhZCc7XG5cbi8vIEhvdyBvbmUgd2luZG93ZWQgb3V0cHV0IGNvbHVtbiB3YXMgY29tcHV0ZWQuIHBlcmlvZHMgYW5kIHVuaXQgc2l6ZSBhXG4vLyByb2xsaW5nIHdpbmRvdyAoZHJhd25QZXJpb2RzIGlzIHRoYXQgc3BhbiBjb3VudGVkIGluIHRoZSBncmFpbiB0aGUgcm93c1xuLy8gYXJlIGRyYXduIGF0KTsgcmVzZXRFdmVyeSByZXN0YXJ0cyBhIHRvLWRhdGUgd2luZG93OyBhdmVyYWdlIG1ha2VzIHRoZVxuLy8gd2luZG93IGFuIGF2ZXJhZ2UgcmF0aGVyIHRoYW4gYSB0b3RhbDsgZnJvbUJlZ2lubmluZ1xuLy8gcnVucyBhIHRvdGFsIGZyb20gdGhlIGZpcnN0IHJvdyBldmVyIHJhdGhlciB0aGFuIGZyb20gdGhlIGZpcnN0IHJvdyBzaG93bi5cbi8vIHN0YXJ0LCBlbmQgYW5kIGxlYWRJbiBhcmUgJ3l5eXktTU0tZGQnIHJlcG9ydC16b25lIGRheXM6IHRoZSByb3dzIHNob3duLFxuLy8gYW5kIHRoZSBlYXJsaWVyIGRheSB0aGUgd2luZG93IHJlYWRzIGZyb20gc28gaXRzIGZpcnN0IHJvd3MgYXJlIHdob2xlLlxuLy8gZGVzY3JpcHRpb24gaXMgdGhlIHNlcnZlcidzIEVuZ2xpc2ggZm9yIHRoZSBhZ2VudCBhbmQgdGhlIGV4cG9ydHM7IHRoZVxuLy8gdmlld2VyIGNvbXBvc2VzIGl0cyBvd24gd29yZHMgZnJvbSB0aGUgZmllbGRzLlxuZXhwb3J0IGludGVyZmFjZSBXaW5kb3dNZXRhIHtcbiAga2luZDogV2luZG93S2luZDtcbiAgcGVyaW9kczogbnVtYmVyIHwgbnVsbDtcbiAgdW5pdDogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGRyYXduUGVyaW9kczogbnVtYmVyIHwgbnVsbDtcbiAgcmVzZXRFdmVyeTogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGF2ZXJhZ2U6IGJvb2xlYW47XG4gIGZyb21CZWdpbm5pbmc6IGJvb2xlYW47XG4gIGRhdGVDb2x1bW46IHN0cmluZyB8IG51bGw7XG4gIHN0YXJ0OiBzdHJpbmcgfCBudWxsO1xuICBlbmQ6IHN0cmluZyB8IG51bGw7XG4gIGxlYWRJbjogc3RyaW5nIHwgbnVsbDtcbiAgbm90ZXM6IFdpbmRvd05vdGVDb2RlW107XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8vIFdoaWNoIGRlbHRhIGEgS1BJIGNhcmQgc2hvd3M6IHRoZSBkaWZmZXJlbmNlLCBvciB0aGUgcGVyY2VudCBjaGFuZ2UuXG5leHBvcnQgdHlwZSBLcGlEZWx0YVNob3cgPSAnY2hhbmdlJyB8ICdwZXJjZW50X2NoYW5nZSc7XG5cbi8vIFdoeSBhIEtQSSdzIGRlbHRhIHJlYWRzIGFzIGl0IGRvZXM6XG4vLyAtIG5vX3ByaW9yX2RhdGE6IHRoZSBwcmlvciB3aW5kb3cgaGFzIG5vIHZhbHVlO1xuLy8gLSB1cF9mcm9tX3plcm86IHRoZSBwcmlvciB3YXMgMCwgc28gdGhlcmUgaXMgbm8gcGVyY2VudCBjaGFuZ2U7XG4vLyAtIG5vX2NoYW5nZTogYm90aCBhcmUgMDtcbi8vIC0gbm9fZGF0YV9laXRoZXI6IG5laXRoZXIgd2luZG93IGhhcyBhIHZhbHVlO1xuLy8gLSBzaWduX2NoYW5nZTogdGhlIHZhbHVlIGNyb3NzZWQgemVybywgc28gdGhlcmUgaXMgbm8gcGVyY2VudCBjaGFuZ2UuXG5leHBvcnQgdHlwZSBLcGlOb3RlQ29kZSA9XG4gIHwgJ25vX3ByaW9yX2RhdGEnXG4gIHwgJ3VwX2Zyb21femVybydcbiAgfCAnbm9fY2hhbmdlJ1xuICB8ICdub19kYXRhX2VpdGhlcidcbiAgfCAnc2lnbl9jaGFuZ2UnO1xuXG4vLyBBIEtQSSdzIHByb2dyZXNzIHRvd2FyZCBpdHMgY29uZmlndXJlZCB0YXJnZXQuIHByb2dyZXNzIGlzIHZhbHVlIC8gdGFyZ2V0XG4vLyAobnVsbCB3aGVuIHRoZSB0YXJnZXQgaXMgMCk7IG1ldCBmb2xsb3dzIHRoZSBjb25maWcncyBpbmNyZWFzZUlzIChudWxsXG4vLyB3aGVuIGl0IGlzIG5ldXRyYWwpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGlUYXJnZXQge1xuICB2YWx1ZTogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgcHJvZ3Jlc3M6IG51bWJlciB8IG51bGw7XG4gIG1ldDogYm9vbGVhbiB8IG51bGw7XG59XG5cbi8vIE9uZSBzcGFya2xpbmUgcG9pbnQ6IHRoZSBwZXJpb2QsIHdyaXR0ZW4gYXMgYSB0aW1lLWF4aXMgdmFsdWUsIGFuZCB0aGVcbi8vIHZhbHVlIGluIGl0IChudWxsIHdoZW4gYSBub24tYWRkaXRpdmUgbWVhc3VyZSBoYXMgbm8gcm93cyB0aGVyZSkuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaVNwYXJrbGluZVBvaW50IHtcbiAgcGVyaW9kOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHNwYXJrbGluZSBwb2ludHMsIG9sZGVzdCBmaXJzdC4gcGFydGlhbCBzYXlzIHRoZSBsYXN0IHBlcmlvZCBpc1xuLy8gbm90IGZpbmlzaGVkIHlldC5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpU3BhcmtsaW5lIHtcbiAgZ3JhbnVsYXJpdHk6IENoYXJ0R3JhbnVsYXJpdHk7XG4gIHBhcnRpYWw6IGJvb2xlYW47XG4gIHBvaW50czogQ29tcG9uZW50S3BpU3BhcmtsaW5lUG9pbnRbXTtcbn1cblxuLy8gRXZlcnkgbnVtYmVyIGEgS1BJIGNhcmQgc2hvd3MgYmVzaWRlIGl0cyB2YWx1ZS4gc2hvdyBuYW1lcyB0aGUgZGVsdGEgdG9cbi8vIHByaW50LCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuIFdoZW4gdmFsdWUgaXMgbnVsbCB0aGUgY2FyZCBzaG93cyBhIGRhc2ggYW5kXG4vLyBubyBjb21wYXJpc29uLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGkge1xuICB2YWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3I6IG51bWJlciB8IG51bGw7XG4gIGNoYW5nZTogbnVtYmVyIHwgbnVsbDtcbiAgcGVyY2VudENoYW5nZTogbnVtYmVyIHwgbnVsbDtcbiAgc2hvdzogS3BpRGVsdGFTaG93O1xuICBub3RlOiBLcGlOb3RlQ29kZSB8IG51bGw7XG4gIHRhcmdldDogQ29tcG9uZW50S3BpVGFyZ2V0IHwgbnVsbDtcbiAgc3BhcmtsaW5lOiBDb21wb25lbnRLcGlTcGFya2xpbmUgfCBudWxsO1xufVxuXG4vLyBBIGNvbXBvbmVudCdzIENTViBleHBvcnQ6IHRoZSBwcmVzaWduZWQgZG93bmxvYWQgVVJMLCBwbHVzIG9uZSBzZW50ZW5jZSBwZXJcbi8vIHdheSB0aGUgZmlsZSBmYWxscyBzaG9ydCBvZiB0aGUgZnVsbCByZXN1bHQgKGN1dCBhdCB0aGUgZXhwb3J0IGNlaWxpbmcsIG9yXG4vLyBjdXQgYXMgdGhlIGNoYXJ0IGl0c2VsZiBpcykuIEVtcHR5IHdoZW4gdGhlIGZpbGUgaXMgY29tcGxldGUuIE9wdGlvbmFsXG4vLyBiZWNhdXNlIGEgc2VydmVyIG9uIGFuIG9sZGVyIGZyYW1ld29yayBhbnN3ZXJzIHdpdGggdGhlIHVybCBhbG9uZS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RXhwb3J0UmVzcG9uc2Uge1xuICB1cmw6IHN0cmluZztcbiAgbm90ZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMaXN0SXRlbSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgbW9kaWZ5RGF0ZTogc3RyaW5nO1xuICBzdGF0ZT86IFJlcG9ydFN0YXRlO1xuICAvLyBUaGUgZm9sZGVyIHRoZSByZXBvcnQgaXMgZmlsZWQgdW5kZXIuIG51bGwgaXMgYSByZWFsLCBjb21tb24gdmFsdWUg4oCUIHRoZVxuICAvLyByZXBvcnQgc2l0cyBhdCB0aGUgcm9vdCBvZiB0aGUgbGlzdGluZyB0cmVlIGFsb25nc2lkZSB0aGUgZm9sZGVycy5cbiAgLy9cbiAgLy8gT3B0aW9uYWwgbGlrZSBgc3RhdGVgIGJlc2lkZSBpdDogdGhlIGJhY2tlbmQgYWx3YXlzIHNlbmRzIGl0LCBidXQgbWFraW5nIGl0XG4gIC8vIHJlcXVpcmVkIGlzIGEgYnJlYWtpbmcgdHlwZSBjaGFuZ2UgZm9yIGV2ZXJ5IGNvbnN1bWVyIGhvbGRpbmcgYVxuICAvLyBSZXBvcnRMaXN0SXRlbSBsaXRlcmFsIChmaXh0dXJlcywgbW9ja3MpIGFuZCBidXlzIG5vdGhpbmcg4oCUIHRoZSBsaXN0aW5nXG4gIC8vIHJlYWRzIGl0IGFzIGA/PyBudWxsYCBlaXRoZXIgd2F5LlxuICByZXBvcnRGb2xkZXJJZD86IG51bWJlciB8IG51bGw7XG59XG5cbi8vIE9uZSBmb2xkZXIgaW4gdGhlIGxpc3RpbmcgdHJlZSDigJQgYW4gYXVkaWVuY2UgYnVja2V0IChcIk1hbmFnZW1lbnRcIixcbi8vIFwiT3BlcmF0aW9uc1wiKSByZXBvcnRzIGFyZSBmaWxlZCBpbnRvLiBGb2xkZXJzIG5lc3QgdmlhIHBhcmVudFJlcG9ydEZvbGRlcklkO1xuLy8gcmVwb3J0cyBuZXZlciBkbywgc28gdGhlIHRyZWUncyBvbmx5IGJyYW5jaCBub2RlcyBhcmUgZm9sZGVycy5cbi8vXG4vLyBgc3RhdGVgIGlzIHRoZSBmb2xkZXIncyBPV04gc3RhdGUuIERlbGV0aW5nIGEgZm9sZGVyIHdyaXRlcyBvbmx5IHRoYXQsIGFuZFxuLy8gZXZlcnl0aGluZyBiZWxvdyBpdCBjb3VudHMgYXMgZGVsZXRlZCBieSBwb3NpdGlvbiDigJQgc2VlIFJlcG9ydE5vZGUuZGVsZXRlZC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Rm9sZGVyIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJlbnRSZXBvcnRGb2xkZXJJZDogbnVtYmVyIHwgbnVsbDtcbiAgc3RhdGU/OiBSZXBvcnRTdGF0ZTtcbn1cblxuLy8gR0VUIC9hcGkvcmVwb3J0cyByZXR1cm5zIGJvdGggaGFsdmVzIGZsYXQ7IHRoZSBsaXN0aW5nIG5lc3RzIHRoZW0gaXRzZWxmLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRUcmVlIHtcbiAgcmVwb3J0czogUmVwb3J0TGlzdEl0ZW1bXTtcbiAgZm9sZGVyczogUmVwb3J0Rm9sZGVyW107XG59XG5cbmV4cG9ydCBlbnVtIFJlcG9ydE5vZGVUeXBlIHtcbiAgRm9sZGVyID0gJ2ZvbGRlcicsXG4gIFJlcG9ydCA9ICdyZXBvcnQnLFxufVxuXG4vLyBPbmUgbm9kZSBhcyBmcy10cmVlIHNlZXMgaXQuIEZvbGRlcnMgYW5kIHJlcG9ydHMgc2hhcmUgb25lIGlkIHNwYWNlIGluIHRoZVxuLy8gdmlldywgc28gdGhlIGlkcyBhcmUgcHJlZml4ZWQgKCdmOjEyJyAvICdyOjM0Jykg4oCUIGBpZGAgaXMgdGhlIG9yaWdpbmFsLFxuLy8gcGVyLXRhYmxlIGlkIHRoYXQgdGhlIEFQSSBlbmRwb2ludHMgdGFrZS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Tm9kZSB7XG4gIGtleTogc3RyaW5nO1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFJlcG9ydE5vZGVUeXBlO1xuICAvLyBPbmx5IGV2ZXIgcG9wdWxhdGVkIG9uIGEgZm9sZGVyOyBhIHJlcG9ydCBpcyBhbHdheXMgYSBsZWFmLlxuICBjaGlsZHJlbjogUmVwb3J0Tm9kZVtdO1xuICAvLyBQcmVzZW50IG9uIHJlcG9ydCBub2RlcyBvbmx5LlxuICByZXBvcnQ/OiBSZXBvcnRMaXN0SXRlbTtcbiAgLy8gVGhlIG5vZGUncyBvd24gcm93IGlzIGRlbGV0ZWQuIFdoYXQgZWFybnMgdGhlIFwiRGVsZXRlZFwiIGNoaXAg4oCUIHRoaXMgaXNcbiAgLy8gd2hhdCBzb21lYm9keSBhY3R1YWxseSBkZWxldGVkLlxuICBzdGF0ZURlbGV0ZWQ6IGJvb2xlYW47XG4gIC8vIERlbGV0ZWQgaXRzZWxmIE9SIGFueXdoZXJlIGJlbG93IGEgZGVsZXRlZCBmb2xkZXIuIE9ubHkgZXZlciB0cnVlIGluIFNob3dcbiAgLy8gRGVsZXRlZCBtb2RlICh0aGUgZGVmYXVsdCBsaXN0aW5nIG5ldmVyIHJldHVybnMgc3VjaCBhIG5vZGUpLCBhbmQgaXQgaXMgd2hhdFxuICAvLyBzd2FwcyB0aGUgcm93J3MgYWN0aW9ucyBmb3IgUmVzdG9yZS5cbiAgZGVsZXRlZDogYm9vbGVhbjtcbn1cblxuLy8gUmVwb3J0cyBhbmQgZm9sZGVycyBhcmUgYm90aCBzb2Z0LWRlbGV0YWJsZS4gQSBkZWxldGVkIHJlcG9ydCBrZWVwcyBpdHMgcGFnZXNcbi8vIGFuZCBjb21wb25lbnRzOyBhIGRlbGV0ZWQgZm9sZGVyIGtlZXBzIGV2ZXJ5dGhpbmcgZmlsZWQgdW5kZXIgaXQsIHdoaWNoIGxlYXZlc1xuLy8gdGhlIGxpc3Rpbmcgd2l0aCBpdCBhbmQgY29tZXMgYmFjayB3aXRoIGl0LiBcIlNob3cgRGVsZXRlZFwiIHNob3dzIHRoZSB3aG9sZVxuLy8gdHJlZSwgbGl2ZSBhbmQgZGVsZXRlZCB0b2dldGhlciwgc28gYW55IG9mIGl0IGNhbiBiZSByZXN0b3JlZCBpbiBwbGFjZS5cbmV4cG9ydCBlbnVtIFJlcG9ydFN0YXRlIHtcbiAgQWN0aXZlID0gJ2FjdGl2ZScsXG4gIERlbGV0ZWQgPSAnZGVsZXRlZCcsXG59XG5cbi8vIFRoZSBjaGF0IHR1cm4gZmxhZ3MgdGhpcyBjb250ZXh0J3MgYmFja2VuZCBhZGRzIChSZXBvcnRzXFxBaVZpZXcpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDaGF0UmVzcG9uc2Uge1xuICByZXBvcnRDaGFuZ2VkPzogYm9vbGVhbjtcbiAgcmVwb3J0UmVuYW1lZD86IGJvb2xlYW47XG59XG5cbi8vIE9uZSB2ZXJzaW9uIG9mIHRoZSBnbG9iYWwgQUkga25vd2xlZGdlIGRvY3VtZW50IOKAlCB0aGUgb3BlcmF0b3ItYXV0aG9yZWRcbi8vIG1hcmtkb3duIGFwcGVuZGVkIHRvIHRoZSByZXBvcnQgYWdlbnQncyBzeXN0ZW0gaW5zdHJ1Y3Rpb25zIG9uIGV2ZXJ5IHR1cm4uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEluc3RydWN0aW9uIHtcbiAgaWQ6IG51bWJlcjtcbiAgY29udGVudDogc3RyaW5nO1xuICBjdXJyZW50OiBib29sZWFuO1xuICBjcmVhdGVEYXRlOiBEYXRlO1xuICBtb2RpZnlEYXRlOiBEYXRlO1xuICBhY2NvdW50SWQ6IG51bWJlciB8IG51bGw7XG4gIGFjY291bnROYW1lOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBHRVQvUFVUIGluc3RydWN0aW9ucyBwYXlsb2FkOiB0aGUgY3VycmVudCB2ZXJzaW9uIChudWxsIHVudGlsIG9uZSBpc1xuLy8gYXV0aG9yZWQpIHBsdXMgdGhlIGZ1bGwgaGlzdG9yeSwgbmV3ZXN0IGZpcnN0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRJbnN0cnVjdGlvbnMge1xuICBpbnN0cnVjdGlvbnM6IFJlcG9ydEluc3RydWN0aW9uIHwgbnVsbDtcbiAgdmVyc2lvbnM6IFJlcG9ydEluc3RydWN0aW9uW107XG59XG5cbi8vIFRoZSBsYXRlc3Qgc2VtYW50aWMtZGF0YWJhc2UgYnVpbGQgKGFuIGZmX3Byb2Nlc3NlcyByb3cpIOKAlCBlbm91Z2ggZm9yIHRoZVxuLy8gc2V0dGluZ3MgZGlhbG9nIHRvIHNheSB3aGF0IHN0YXRlIHRoZSBidWlsZCBpcyBpbiBhbmQgd2hlbiBpdCBsYXN0IHJhbi5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZCB7XG4gIGlkOiBudW1iZXI7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIHBlcmNlbnQ6IG51bWJlciB8IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkdXJhdGlvbjogbnVtYmVyO1xuICBjcmVhdGVEYXRlOiBEYXRlO1xuICBzdGFydERhdGU6IERhdGU7XG4gIGVuZERhdGU6IERhdGU7XG59XG5cbi8vIEEgYnVpbGQgc3RhZ2UncyBzdGF0ZSBvbiB0aGUgZW50aXR5IHNjb3JlYm9hcmQ6ICdkb25lJyA9IGJ1aWx0LCAnbWlzc2luZycgPVxuLy8gc3RpbGwgbmVlZHMgYnVpbGRpbmcgKGEgbWlzc2luZyBzdGFnZSBpcyB1bmJ1aWx0IGNvbnRlbnQsIG5ldmVyIGFuIGVycm9yKS5cbmV4cG9ydCB0eXBlIFNlbWFudGljQnVpbGRTdGFnZSA9ICdkb25lJyB8ICdtaXNzaW5nJztcblxuLy8gT25lIGVudW0gY29sdW1uIG9mIGFuIGVudGl0eSwgd2l0aCB0aGUgYWxsb3dlZCB2YWx1ZXMgdGhlIGJ1aWxkIGlubGluZWQuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRFbnVtIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbi8vIE9uZSBlbnRpdHkgcm93IG9mIHRoZSBzY29yZWJvYXJkIChhbiBlbnRpdHkgPSBhIHRhYmxlICsgYSBtb2RlbCArIGFcbi8vIGhhbmRsZXIpOiBpdHMgdGFibGUvc2hhcGUgY291bnRzLCBpbmxpbmVkIGVudW0gdmFsdWVzLCBjb21wdXRlZCBmaWVsZHMsIGhvd1xuLy8gbWFueSBjb2RlIGZ1bmN0aW9ucyB3ZXJlIGNhY2hlZCAoc3BsaXQgbW9kZWwgdnMgaGFuZGxlciksIGFuZCB0aGUgcGVyLXN0YWdlXG4vLyBidWlsdC9taXNzaW5nIHN0YXRlLlxuLy9cbi8vIGBtb2RlbGAvYGhhbmRsZXJgIGFyZSB0aGUgY2xhc3NlcyB0aGUgZnVuY3Rpb25zIHdlcmUgcmVhZCBmcm9tIOKAlCB3aGF0IGFcbi8vIHJlYWRlciByZWNvZ25pemVzIHRoZSByb3cgYnksIHdoZXJlIGBrZXlgIGlzIHdoYXQgdGhlIHJlcG9ydCBBSSBhZGRyZXNzZXMgaXRcbi8vIGJ5IGluIGRlc2NyaWJlX2VudGl0eSAvIGNvbXBpbGVfcXVlcnkuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRFbnRpdHkge1xuICBrZXk6IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIGhhbmRsZXI6IHN0cmluZyB8IG51bGw7XG4gIGNvbHVtbnM6IG51bWJlcjtcbiAgcmVsYXRpb25zaGlwczogbnVtYmVyO1xuICBlbnVtczogU2VtYW50aWNCdWlsZEVudW1bXTtcbiAgY29tcHV0ZWRGaWVsZHM6IHN0cmluZ1tdO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIG1vZGVsRnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBoYW5kbGVyRnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBzdGFnZXM6IFJlY29yZDxzdHJpbmcsIFNlbWFudGljQnVpbGRTdGFnZT47XG59XG5cbi8vIE9uZSBzdGFuZGFsb25lIGNvZGUgY2xhc3MgdGhlIGJ1aWxkIHJlYWQ6IGRvbWFpbiBsb2dpYyB3aXRoIG5vIHRhYmxlIG9mIGl0c1xuLy8gb3duIChhIHN1bW1hcnkgbW9kZWwsIGEgY2FsY3VsYXRpb24gc2VydmljZSkuIFRoZSByZXBvcnQgQUkgcmVhZHMgaXRzIGNvZGVcbi8vIGV4YWN0bHkgbGlrZSBhbiBlbnRpdHkncywgYnV0IGl0IGNhbiBuZXZlciBiZSBxdWVyaWVkIOKAlCB0aGVyZSBpcyBub3RoaW5nIHRvXG4vLyBzZWxlY3QgZnJvbSDigJQgc28gaXQgY2FycmllcyBubyB0YWJsZSwgY29sdW1ucyBvciByZWxhdGlvbnNoaXBzLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkQ2xhc3Mge1xuICBrZXk6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbn1cblxuLy8gV2hhdCB0aGUgYnVpbGQgZGVjaWRlZCBhIHBoeXNpY2FsIHRhYmxlIGlzLiBFbnRpdHkgYW5kIGp1bmN0aW9uIGFyZSBib3RoXG4vLyByZWFjaGFibGUgYnkgdGhlIHJlcG9ydCBBSSDigJQgYW4gZW50aXR5IGRpcmVjdGx5LCBhIGp1bmN0aW9uIHRocm91Z2ggdGhlXG4vLyBtYW55LXRvLW1hbnkgaXQgYnJpZGdlcy4gRXhjbHVkZWQgaXMgbm90IHJlYWNoYWJsZSBhdCBhbGwuXG5leHBvcnQgdHlwZSBTZW1hbnRpY1RhYmxlQ2xhc3NpZmljYXRpb24gPSAnZW50aXR5JyB8ICdqdW5jdGlvbicgfCAnZXhjbHVkZWQnO1xuXG4vLyBPbmUgcGh5c2ljYWwgdGFibGUgYXMgdGhlIGJ1aWxkIGNsYXNzaWZpZWQgaXQuIGByZWFzb25gIGFuc3dlcnMgYSBzaW5nbGVcbi8vIHF1ZXN0aW9uIOKAlCB3aHkgY2FuJ3QgdGhlIHJlcG9ydCBBSSBzZWUgdGhpcyB0YWJsZT8g4oCUIGFuZCBpcyBudWxsIHdoZW4gaXQgY2FuLlxuLy8gQSBqdW5jdGlvbiB3aXRoIGEgcmVhc29uIGJyaWRnZWQgbm90aGluZywgc28gaXQgaXMganVzdCBhcyBpbnZpc2libGUgYXMgYW5cbi8vIGV4Y2x1ZGVkIHRhYmxlLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkVGFibGUge1xuICB0YWJsZTogc3RyaW5nO1xuICBjbGFzc2lmaWNhdGlvbjogU2VtYW50aWNUYWJsZUNsYXNzaWZpY2F0aW9uO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgcmVhc29uOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBUaGUgYnVpbGQgc2NvcmVib2FyZCBzaGlwcGVkIGFsb25nc2lkZSB0aGUgYnVpbGQgc3RhdHVzOiB0aGUgc3VtbWFyeSBjb3VudHMsXG4vLyB0aGUgZnVsbCBicmVha2Rvd24gdGhlIHNldHRpbmdzIGRpYWxvZyBkcmlsbHMgaW50byDigJQgQk9USCBraW5kcyBvZiB1bml0IHRoZVxuLy8gYnVpbGQgY2FjaGVzLCB0YWJsZS1iYWNrZWQgZW50aXRpZXMgYW5kIHN0YW5kYWxvbmUgY29kZSBjbGFzc2VzIOKAlCBhbmQgdGhlXG4vLyBjYXRhbG9nIG9mIGV2ZXJ5IHRhYmxlIHRoZSBidWlsZCBzYXcsIHNvIHRoZSB0YWIgY2FuIHNob3cgd2hhdCB0aGUgcmVwb3J0IEFJXG4vLyBjYW4ndCBzZWUsIG5vdCBqdXN0IHdoYXQgaXQgY2FuLlxuLy9cbi8vIGBmdW5jdGlvbkNvdW50YCBzcGFucyBlbnRpdGllcyBhbmQgY2xhc3NlcyBhbGlrZTogaXQgaXMgdGhlIHNhbWUgdG90YWwgdGhlXG4vLyBidWlsZCBpdHNlbGYgcmVwb3J0cyB3aGVuIGl0IGZpbmlzaGVzLlxuLy9cbi8vIGB0YWJsZXNgIGlzIGVtcHR5IGZvciBhbiBhcnRpZmFjdCBidWlsdCBiZWZvcmUgdGhlIGNhdGFsb2cgZXhpc3RlZC4gUmVhZCB0aGF0XG4vLyBhcyBcIm5vIGNhdGFsb2dcIiwgbmV2ZXIgYXMgXCJub3RoaW5nIHdhcyBleGNsdWRlZFwiLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRGV0YWlsIHtcbiAgLy8gV2hldGhlciB0aGUgYXJ0aWZhY3Qgd2FzIHByb2R1Y2VkIGJ5IGEgYnVpbGQgdGhhdCByYW4gdG8gdGhlIGVuZC4gUmVhZCBpdFxuICAvLyBiZXNpZGUgYGdlbmVyYXRlZEF0YCwgbmV2ZXIgaW5zdGVhZCBvZiBpdDogdGhlIHN0cnVjdHVyYWwgYXJ0aWZhY3QgaXNcbiAgLy8gcHVibGlzaGVkIEJFRk9SRSB0aGUgQUkgZnVuY3Rpb24gcGFzcywgc28gYSBidWlsZCB3aG9zZSBBSSBwYXNzIGZhaWxlZCBzdGlsbFxuICAvLyBjYXJyaWVzIGEgZGF0ZSBhbmQgYSBmdWxsIHNldCBvZiBjb3VudHMuIFRoZSBkYXRlIHNheXMgc29tZXRoaW5nIHdhc1xuICAvLyB3cml0dGVuOyBvbmx5IHRoaXMgc2F5cyB0aGUgYnVpbGQgZmluaXNoZWQgd3JpdGluZyBpdC5cbiAgY29tcGxldGU6IGJvb2xlYW47XG4gIGdlbmVyYXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgZW50aXR5Q291bnQ6IG51bWJlcjtcbiAgY2xhc3NDb3VudDogbnVtYmVyO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGVudGl0aWVzOiBTZW1hbnRpY0J1aWxkRW50aXR5W107XG4gIGNsYXNzZXM6IFNlbWFudGljQnVpbGRDbGFzc1tdO1xuICB0YWJsZUNvdW50OiBudW1iZXI7XG4gIGp1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgdW5saW5rZWRKdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGV4Y2x1ZGVkQ291bnQ6IG51bWJlcjtcbiAgdGFibGVzOiBTZW1hbnRpY0J1aWxkVGFibGVbXTtcbn1cblxuLy8gV2hpY2ggY2xhc3MgYSBjYWNoZWQgZnVuY3Rpb24gd2FzIHJlYWQgZnJvbS4gQW4gZW50aXR5J3MgY2FjaGUgc3BsaXRzIGludG9cbi8vICdtb2RlbCcgYW5kICdoYW5kbGVyJzsgYSBzdGFuZGFsb25lIGNvZGUgY2xhc3MgaGFzIG9uZSBncm91cCwgJ2NsYXNzJy5cbmV4cG9ydCB0eXBlIFNlbWFudGljRnVuY3Rpb25Tb3VyY2UgPSAnbW9kZWwnIHwgJ2hhbmRsZXInIHwgJ2NsYXNzJztcblxuLy8gT25lIEFJLWNsYXNzaWZpZWQgY29kZSBmdW5jdGlvbiBmcm9tIGEgbW9kZWwsIGhhbmRsZXIgb3Igc3RhbmRhbG9uZSBjbGFzczpcbi8vIHdoYXQga2luZCBvZiBsb2dpYyBpdCBpcywgd2hhdCBpdCBkb2VzLCBhbmQgd2hhdCBpdCBwcm9kdWNlcyDigJQgdGhlIGJ1aWxkJ3Ncbi8vIGNhY2hlZCBcIndoYXQgdGhlIGNvZGUgZG9lc1wiIGtub3dsZWRnZSBzaG93biBpbiB0aGUgZnVuY3Rpb25zIGRpYWxvZy5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNFbnRpdHlGdW5jdGlvbiB7XG4gIGNsYXNzOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBzdW1tYXJ5OiBzdHJpbmc7XG4gIHByb2R1Y2VzOiBzdHJpbmc7XG4gIHNvdXJjZTogU2VtYW50aWNGdW5jdGlvblNvdXJjZTtcbn1cblxuLy8gT25lIGVudGl0eSdzIGNhY2hlZCBjb2RlLWZ1bmN0aW9uIGtub3dsZWRnZSwgZmV0Y2hlZCB3aGVuIGEgZnVuY3Rpb25zIGRpYWxvZ1xuLy8gb3BlbnMgKHRoZSBmdWxsIHNldCBhY3Jvc3MgYWxsIGVudGl0aWVzIGlzIHRvbyBiaWcgdG8gc2hpcCB3aXRoIHRoZVxuLy8gc2NvcmVib2FyZCkuIE9uZSBwYXlsb2FkIHNlcnZlcyBib3RoIGRpYWxvZ3Mg4oCUIGNvbnN1bWVycyBmaWx0ZXIgYnkgc291cmNlLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0VudGl0eUZ1bmN0aW9ucyB7XG4gIGVudGl0eTogc3RyaW5nO1xuICBnZW5lcmF0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIG1vZGVsQ2xhc3M6IHN0cmluZyB8IG51bGw7XG4gIGhhbmRsZXJDbGFzczogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb25zOiBTZW1hbnRpY0VudGl0eUZ1bmN0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZFN0YXR1cyB7XG4gIGJ1aWxkOiBTZW1hbnRpY0J1aWxkIHwgbnVsbDtcbiAgZGV0YWlsOiBTZW1hbnRpY0J1aWxkRGV0YWlsO1xufVxuXG4vLyBUaGUgcmVwb3J0IG1vZHVsZSdzIEdlbmVyYWwgc2V0dGluZ3MgKGEgc21hbGwgZ2xvYmFsIGtleS92YWx1ZSBzdG9yZSwgdGhlXG4vLyByZXBvcnRpbmcgY291bnRlcnBhcnQgb2YgdGhlIGFwcC13aWRlIHNldHRpbmdzKS4gRWFjaCB2YWx1ZSBzaGlwcyB3aXRoIHRoZVxuLy8gc2FmZSBiYW5kIGl0cyBlZGl0b3IgZmllbGQgaXMgYm91bmRlZCB0by5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U2V0dGluZ3Mge1xuICAvLyBIb3cgbWFueSBzdW1tYXJ5IGNhbGxzIHRoZSBzZW1hbnRpYyBidWlsZCBydW5zIGF0IG9uY2UuXG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeTogbnVtYmVyO1xuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3lNaW46IG51bWJlcjtcbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5TWF4OiBudW1iZXI7XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { ReportChangePolarity } from './enums/report-change-polarity.enum';
2
2
  import { ReportKpiTrend } from './enums/report-kpi-trend.enum';
3
3
  import { ReportValueFormat } from './enums/report-value-format.enum';
4
- import { formatDayWindow, formatNumber, formatOutputValue } from './format';
4
+ import { formatDayRange, formatDayWindow, formatNumber, formatOutputValue, formatReadingDay, isReadOnOneDay, } from './format';
5
5
  // A sparkline's period and length when its config names neither: monthly,
6
6
  // over 12 periods (the server's defaults).
7
7
  export const KPI_SPARKLINE_DEFAULT_GRANULARITY = 'month';
@@ -109,23 +109,36 @@ function deltaTone(trend, increaseIs) {
109
109
  return rise === (polarity === ReportChangePolarity.Good) ? ReportChangePolarity.Good : ReportChangePolarity.Bad;
110
110
  }
111
111
  // 'vs $1,139 (Aug 1 – 31, 2026)': the prior value and its window, either
112
- // alone when the other is missing.
112
+ // alone when the other is missing. A value read on one day is compared with
113
+ // the value on the prior window's last day: 'vs 20 (on Aug 31, 2026)', or
114
+ // 'vs Aug 31, 2026' with no prior value.
113
115
  function comparedText(config, data, context) {
114
116
  const comparison = data.comparison;
115
117
  const prior = comparison.priors?.[0];
116
- const days = prior ? formatDayWindow(prior, comparison.timezone, context.format.locale) : '';
117
118
  const value = data.kpi.prior === null ? '' : formatNumber(data.kpi.prior, config?.measure, context.format);
119
+ const days = prior ? priorWindowText(comparison, prior, context.format.locale, !!value) : '';
118
120
  if (value && days) {
119
121
  return `vs ${value} (${days})`;
120
122
  }
121
123
  return value || days ? `vs ${value || days}` : '';
122
124
  }
125
+ // The prior window in the compared text: its days, or the day its value is
126
+ // read on ('on Aug 31, 2026' beside the value, the bare day without one).
127
+ function priorWindowText(comparison, prior, locale, withValue) {
128
+ if (!isReadOnOneDay(comparison)) {
129
+ return formatDayWindow(prior, comparison.timezone, locale);
130
+ }
131
+ return withValue ? formatReadingDay(prior, locale) : formatDayRange(prior.end, prior.end, locale);
132
+ }
123
133
  // The days the value covers: the comparison's current window, else the
124
- // timeframe's. '' when the data has neither.
134
+ // timeframe's. A value read on one day names that day ('On Sep 15, 2026').
135
+ // '' when the data has neither.
125
136
  function windowLine(data, context) {
126
137
  const comparison = data?.comparison;
127
138
  if (comparison?.current) {
128
- return formatDayWindow(comparison.current, comparison.timezone, context.format.locale);
139
+ return isReadOnOneDay(comparison)
140
+ ? formatReadingDay(comparison.current, context.format.locale, true)
141
+ : formatDayWindow(comparison.current, comparison.timezone, context.format.locale);
129
142
  }
130
143
  return data?.timeframe ? formatDayWindow(data.timeframe, context.timezone, context.format.locale) : '';
131
144
  }
@@ -171,4 +184,4 @@ function normalizedCardSettings(settings) {
171
184
  : null,
172
185
  };
173
186
  }
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3BpLWNhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL3JlcG9ydHMva3BpLWNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBWTVFLDBFQUEwRTtBQUMxRSwyQ0FBMkM7QUFDM0MsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQXFCLE9BQU8sQ0FBQztBQUMzRSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxFQUFFLENBQUM7QUFxRWhELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUN4QixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUM7QUFDaEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekYsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBRTFCLE1BQU0sVUFBVSxXQUFXLENBQ3pCLE1BQW9DLEVBQ3BDLElBQXNDLEVBQ3RDLE9BQXVCO0lBRXZCLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxPQUFPLENBQUM7SUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUM7SUFFOUIsT0FBTztRQUNMLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FB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RCxPQUFPO1FBQ0wsVUFBVSxFQUFFLFVBQVUsS0FBSyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQ2xGLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDNUUsU0FBUyxFQUFFLFNBQVM7WUFDbEIsQ0FBQyxDQUFDO2dCQUNBLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVyxJQUFJLGlDQUFpQztnQkFDdkUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLElBQUksNkJBQTZCO2FBQzVEO1lBQ0QsQ0FBQyxDQUFDLElBQUk7S0FDVCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydENoYW5nZVBvbGFyaXR5IH0gZnJvbSAnLi9lbnVtcy9yZXBvcnQtY2hhbmdlLXBvbGFyaXR5LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0S3BpVHJlbmQgfSBmcm9tICcuL2VudW1zL3JlcG9ydC1rcGktdHJlbmQuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRWYWx1ZUZvcm1hdCB9IGZyb20gJy4vZW51bXMvcmVwb3J0LXZhbHVlLWZvcm1hdC5lbnVtJztcbmltcG9ydCB7IGZvcm1hdERheVdpbmRvdywgZm9ybWF0TnVtYmVyLCBmb3JtYXRPdXRwdXRWYWx1ZSB9IGZyb20gJy4vZm9ybWF0JztcbmltcG9ydCB7XG4gIENoYXJ0R3JhbnVsYXJpdHksXG4gIENvbXBvbmVudERhdGEsXG4gIENvbXBvbmVudEtwaSxcbiAgS3BpQ2FyZFNldHRpbmdzLFxuICBLcGlDb25maWcsXG4gIE91dHB1dE1ldGEsXG4gIFJlcG9ydEZvcm1hdENvbnRleHQsXG59IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcblxuXG4vLyBBIHNwYXJrbGluZSdzIHBlcmlvZCBhbmQgbGVuZ3RoIHdoZW4gaXRzIGNvbmZpZyBuYW1lcyBuZWl0aGVyOiBtb250aGx5LFxuLy8gb3ZlciAxMiBwZXJpb2RzICh0aGUgc2VydmVyJ3MgZGVmYXVsdHMpLlxuZXhwb3J0IGNvbnN0IEtQSV9TUEFSS0xJTkVfREVGQVVMVF9HUkFOVUxBUklUWTogQ2hhcnRHcmFudWxhcml0eSA9ICdtb250aCc7XG5leHBvcnQgY29uc3QgS1BJX1NQQVJLTElORV9ERUZBVUxUX1BFUklPRFMgPSAxMjtcblxuXG4vLyBXaGF0IGEgS1BJIGNhcmQgc2hvd3MsIGRlY2lkZWQgZnJvbSBpdHMgY29uZmlnIGFuZCBpdHMgZGF0YS4gVGhlIHNlcnZlclxuLy8gc2VuZHMgZXZlcnkgbnVtYmVyICh0aGUgdmFsdWUsIHRoZSBwcmlvciwgdGhlIGNoYW5nZSwgdGhlIHRhcmdldCdzIHByb2dyZXNzLFxuLy8gdGhlIHNwYXJrbGluZSdzIHBvaW50cykgYW5kIHRoZSBub3RlIGNvZGVzOyB0aGlzIG9ubHkgZm9ybWF0cyB0aGVtIGFuZFxuLy8gcGlja3MgdGhlIGFycm93IGFuZCB0aGUgY29sb3IuIFB1cmUsIHNvIHRoZSBleHBvcnRzIGNhbiBkcmF3IHRoZSBzYW1lIGNhcmQuXG4vL1xuLy8gV2l0aG91dCBhIGBrcGlgIGtleSAoYSBLUEkgd2l0aCBubyBjb21wYXJpc29uLCB0YXJnZXQgb3Igc3BhcmtsaW5lLCBvciBhblxuLy8gb2xkZXIgc2VydmVyKSB0aGUgY2FyZCBpcyB0aGUgdmFsdWUgYW5kIGl0cyBsYWJlbCwgYXMgaXQgYWx3YXlzIHdhcywgcGx1c1xuLy8gdGhlIHRpbWVmcmFtZSdzIGRheXMgd2hlbiB0aGUgZGF0YSBoYXMgYSB0aW1lZnJhbWUuXG5cbi8vIFRoZSByZXBvcnQgdGhlIGNhcmQgaXMgZHJhd24gZm9yOiBpdHMgbnVtYmVyIGZvcm1hdCwgYW5kIHRoZSB6b25lIGFcbi8vIHRpbWVmcmFtZSdzIGN1dCB0aW1lIHJlYWRzIGluIChhIGNvbXBhcmlzb24gbmFtZXMgaXRzIG93bikuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNhcmRDb250ZXh0IHtcbiAgZm9ybWF0OiBSZXBvcnRGb3JtYXRDb250ZXh0O1xuICB0aW1lem9uZTogc3RyaW5nO1xufVxuXG4vLyBUaGUgZGVsdGEgcm93OiB0aGUgY2hhbmdlIGFzIHNob3duLCB0aGUgYXJyb3cgaXQgcG9pbnRzIChub25lIHdoZW4gdGhlXG4vLyBzaG93biBjaGFuZ2Ugcm91bmRzIHRvIHplcm8pLCB0aGUgY29sb3IgaXQgbWVhbnMgdW5kZXIgdGhlIGNvbmZpZydzXG4vLyBpbmNyZWFzZUlzLCBhbmQgd2hhdCBpdCBpcyBjb21wYXJlZCB3aXRoICgndnMgJDEsMTM5IChBdWcgMSDigJMgMzEsIDIwMjYpJykuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNhcmREZWx0YSB7XG4gIHRleHQ6IHN0cmluZztcbiAgdHJlbmQ6IFJlcG9ydEtwaVRyZW5kO1xuICB0b25lOiBSZXBvcnRDaGFuZ2VQb2xhcml0eTtcbiAgY29tcGFyZWQ6IHN0cmluZztcbn1cblxuLy8gVGhlIHRhcmdldCBsaW5lOiBpdHMgY2FwdGlvbiBhbmQgdmFsdWUgKCdHb2FsOiAxNTAnKSwgdGhlIHByb2dyZXNzIHRoZVxuLy8gc2VydmVyIGNvbXB1dGVkICgnMzclIG9mIHRhcmdldCcsICcnIHdpdGhvdXQgb25lKSwgaG93IG11Y2ggb2YgdGhlIGJhciB0b1xuLy8gZmlsbCAoMC0xLCBudWxsIGZvciBubyBiYXIpIGFuZCB0aGUgYmFyJ3MgY29sb3IuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNhcmRUYXJnZXQge1xuICB0ZXh0OiBzdHJpbmc7XG4gIHByb2dyZXNzOiBzdHJpbmc7XG4gIGZpbGw6IG51bWJlciB8IG51bGw7XG4gIHRvbmU6IFJlcG9ydENoYW5nZVBvbGFyaXR5O1xufVxuXG4vLyBUaGUgc3BhcmtsaW5lJ3MgdmFsdWVzLCBvbGRlc3QgZmlyc3QsIGFuZCB3aGV0aGVyIHRoZSBsYXN0IHBlcmlvZCBpcyBub3Rcbi8vIGZpbmlzaGVkIHlldC5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ2FyZFNwYXJrbGluZSB7XG4gIHZhbHVlczogKG51bWJlciB8IG51bGwpW107XG4gIHBhcnRpYWw6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ2FyZFZpZXcge1xuICB2YWx1ZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBkZWx0YTogS3BpQ2FyZERlbHRhIHwgbnVsbDtcbiAgd2luZG93OiBzdHJpbmc7XG4gIHRhcmdldDogS3BpQ2FyZFRhcmdldCB8IG51bGw7XG4gIHNwYXJrbGluZTogS3BpQ2FyZFNwYXJrbGluZSB8IG51bGw7XG59XG5cbi8vIFRoZSBzcGFya2xpbmUgZHJhd24gaW4gYSAwLTEwMCBib3ggb24gYm90aCBheGVzICh5IGRvd24pOiBvbmUgcG9seWxpbmUgcGVyXG4vLyBydW4gb2YgdmFsdWVzIHdpdGhvdXQgYSBnYXAsIGEgZG90IGZvciBhIHZhbHVlIHdpdGggYW4gZW1wdHkgcGVyaW9kIG9uIGJvdGhcbi8vIHNpZGVzLCBhbmQgdGhlIGxhc3QgcG9pbnQncyBtYXJrZXIsIGhvbGxvdyB3aGVuIGl0cyBwZXJpb2QgaXMgcGFydGlhbC5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpU3BhcmtsaW5lUG9pbnQge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLcGlTcGFya2xpbmVHZW9tZXRyeSB7XG4gIGxpbmVzOiBzdHJpbmdbXTtcbiAgZG90czogS3BpU3BhcmtsaW5lUG9pbnRbXTtcbiAgbGFzdDogKEtwaVNwYXJrbGluZVBvaW50ICYgeyBob2xsb3c6IGJvb2xlYW4gfSkgfCBudWxsO1xufVxuXG5jb25zdCBFTVBUWV9WQUxVRSA9ICfigJQnO1xuY29uc3QgVEFSR0VUX0NBUFRJT04gPSAnVGFyZ2V0JztcbmNvbnN0IFBST0dSRVNTX1NQRUMgPSBPYmplY3QuZnJlZXplKHsgZm9ybWF0OiBSZXBvcnRWYWx1ZUZvcm1hdC5QZXJjZW50LCBwcmVjaXNpb246IDAgfSk7XG5jb25zdCBTUEFSS0xJTkVfQk9YID0gMTAwO1xuXG5leHBvcnQgZnVuY3Rpb24ga3BpQ2FyZFZpZXcoXG4gIGNvbmZpZzogS3BpQ29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgZGF0YTogQ29tcG9uZW50RGF0YSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGNvbnRleHQ6IEtwaUNhcmRDb250ZXh0LFxuKTogS3BpQ2FyZFZpZXcge1xuICBjb25zdCBtZWFzdXJlID0gY29uZmlnPy5tZWFzdXJlO1xuICBjb25zdCBrcGkgPSBkYXRhPy5rcGkgPz8gbnVsbDtcblxuICByZXR1cm4ge1xuICAgIHZhbHVlOiBmb3JtYXROdW1iZXIoa3BpID8ga3BpLnZhbHVlIDogcm93VmFsdWUoY29uZmlnLCBkYXRhKSwgbWVhc3VyZSwgY29udGV4dC5mb3JtYXQsIHsgZW1wdHk6IEVNUFRZX1ZBTFVFIH0pLFxuICAgIGxhYmVsOiBtZWFzdXJlPy5sYWJlbCA/PyAnJyxcbiAgICBkZWx0YToga3BpRGVsdGEoY29uZmlnLCBkYXRhLCBjb250ZXh0KSxcbiAgICB3aW5kb3c6IHdpbmRvd0xpbmUoZGF0YSwgY29udGV4dCksXG4gICAgdGFyZ2V0OiBrcGlUYXJnZXQoY29uZmlnLCBrcGksIGNvbnRleHQuZm9ybWF0KSxcbiAgICBzcGFya2xpbmU6IGtwaT8uc3BhcmtsaW5lXG4gICAgICA/IHsgdmFsdWVzOiAoa3BpLnNwYXJrbGluZS5wb2ludHMgPz8gW10pLm1hcCgocG9pbnQpID0+IHBvaW50LnZhbHVlKSwgcGFydGlhbDogISFrcGkuc3BhcmtsaW5lLnBhcnRpYWwgfVxuICAgICAgOiBudWxsLFxuICB9O1xufVxuXG4vLyBUaGUgcG9seWxpbmUgcnVucywgbG9uZSBkb3RzIGFuZCBsYXN0IG1hcmtlciBmb3IgdGhlIHZhbHVlcywgc2NhbGVkIHNvIHRoZVxuLy8gbG93ZXN0IHZhbHVlIHNpdHMgb24gdGhlIGJvdHRvbSBlZGdlIGFuZCB0aGUgaGlnaGVzdCBvbiB0aGUgdG9wIG9uZSAoYSBmbGF0XG4vLyBzZXJpZXMgcnVucyB0aHJvdWdoIHRoZSBtaWRkbGUpLlxuZXhwb3J0IGZ1bmN0aW9uIGtwaVNwYXJrbGluZUdlb21ldHJ5KHZhbHVlczogKG51bWJlciB8IG51bGwpW10sIHBhcnRpYWw6IGJvb2xlYW4pOiBLcGlTcGFya2xpbmVHZW9tZXRyeSB7XG4gIGNvbnN0IG51bWJlcnMgPSB2YWx1ZXMuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIG51bWJlciA9PiB2YWx1ZSAhPT0gbnVsbCk7XG5cbiAgaWYgKCFudW1iZXJzLmxlbmd0aCkge1xuICAgIHJldHVybiB7IGxpbmVzOiBbXSwgZG90czogW10sIGxhc3Q6IG51bGwgfTtcbiAgfVxuXG4gIGNvbnN0IGxvdyA9IE1hdGgubWluKC4uLm51bWJlcnMpO1xuICBjb25zdCBoaWdoID0gTWF0aC5tYXgoLi4ubnVtYmVycyk7XG4gIGNvbnN0IHBvaW50cyA9IHZhbHVlcy5tYXAoKHZhbHVlLCBpbmRleCkgPT4gdmFsdWUgPT09IG51bGwgPyBudWxsIDoge1xuICAgIHg6IHZhbHVlcy5sZW5ndGggPT09IDEgPyBTUEFSS0xJTkVfQk9YIC8gMiA6IGluZGV4ICogU1BBUktMSU5FX0JPWCAvICh2YWx1ZXMubGVuZ3RoIC0gMSksXG4gICAgeTogaGlnaCA9PT0gbG93ID8gU1BBUktMSU5FX0JPWCAvIDIgOiAoaGlnaCAtIHZhbHVlKSAqIFNQQVJLTElORV9CT1ggLyAoaGlnaCAtIGxvdyksXG4gIH0pO1xuICBjb25zdCBydW5zID0gc3BhcmtsaW5lUnVucyhwb2ludHMpO1xuICBjb25zdCBsYXN0UG9pbnQgPSBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdO1xuXG4gIHJldHVybiB7XG4gICAgbGluZXM6IHJ1bnMuZmlsdGVyKChydW4pID0+IHJ1bi5sZW5ndGggPiAxKS5tYXAoKHJ1bikgPT4gcnVuLm1hcCgocG9pbnQpID0+IGAke3BvaW50Lnh9LCR7cG9pbnQueX1gKS5qb2luKCcgJykpLFxuICAgIGRvdHM6IHJ1bnMuZmlsdGVyKChydW4pID0+IHJ1bi5sZW5ndGggPT09IDEgJiYgcnVuWzBdICE9PSBsYXN0UG9pbnQpLm1hcCgocnVuKSA9PiBydW5bMF0pLFxuICAgIGxhc3Q6IGxhc3RQb2ludCA/IHsgLi4ubGFzdFBvaW50LCBob2xsb3c6IHBhcnRpYWwgfSA6IG51bGwsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHNwYXJrbGluZVJ1bnMocG9pbnRzOiAoS3BpU3BhcmtsaW5lUG9pbnQgfCBudWxsKVtdKTogS3BpU3BhcmtsaW5lUG9pbnRbXVtdIHtcbiAgcmV0dXJuIHBvaW50cy5yZWR1Y2U8S3BpU3BhcmtsaW5lUG9pbnRbXVtdPigocnVucywgcG9pbnQsIGluZGV4KSA9PiB7XG4gICAgaWYgKHBvaW50KSB7XG4gICAgICBpZiAoaW5kZXggPT09IDAgfHwgIXBvaW50c1tpbmRleCAtIDFdKSB7XG4gICAgICAgIHJ1bnMucHVzaChbXSk7XG4gICAgICB9XG5cbiAgICAgIHJ1bnNbcnVucy5sZW5ndGggLSAxXS5wdXNoKHBvaW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnVucztcbiAgfSwgW10pO1xufVxuXG4vLyBUaGUgb25lIHJvdydzIHZhbHVlLCBhcyB0aGUgY2FyZCBoYXMgYWx3YXlzIHJlYWQgaXQ6IHRoZSBtZWFzdXJlJ3MgY29sdW1uLFxuLy8gb3IgdGhlIHJvdydzIGZpcnN0IGNvbHVtbiB3aGVuIHRoZSBjb25maWcgbmFtZXMgbm9uZS5cbmZ1bmN0aW9uIHJvd1ZhbHVlKGNvbmZpZzogS3BpQ29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCwgZGF0YTogQ29tcG9uZW50RGF0YSB8IG51bGwgfCB1bmRlZmluZWQpOiB1bmtub3duIHtcbiAgY29uc3Qgcm93ID0gZGF0YT8ucm93cz8uWzBdO1xuICBjb25zdCBjb2x1bW4gPSBjb25maWc/Lm1lYXN1cmU/LmNvbHVtbiA/PyBPYmplY3Qua2V5cyhyb3cgPz8ge30pWzBdO1xuXG4gIHJldHVybiByb3c/Lltjb2x1bW5dO1xufVxuXG4vLyBBIGRlbHRhIG5lZWRzIGEgdmFsdWUgYW5kIGEgY29tcGFyaXNvbiB0aGF0IHJhbi4gQSBtaXNzaW5nIHZhbHVlIHNob3dzIG9ubHlcbi8vIHRoZSBkYXNoOyBhIG1pc3NpbmcgcHJpb3Igc2hvd3MgYSBkYXNoIGZvciB0aGUgZGVsdGEsIGFuZCB0aGUgbm90ZSBzYXlzIHdoeS5cbmZ1bmN0aW9uIGtwaURlbHRhKFxuICBjb25maWc6IEtwaUNvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGRhdGE6IENvbXBvbmVudERhdGEgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjb250ZXh0OiBLcGlDYXJkQ29udGV4dCxcbik6IEtwaUNhcmREZWx0YSB8IG51bGwge1xuICBjb25zdCBrcGkgPSBkYXRhPy5rcGk7XG5cbiAgaWYgKCFrcGkgfHwga3BpLnZhbHVlID09PSBudWxsIHx8ICFkYXRhLmNvbXBhcmlzb24gfHwgKGtwaS5wcmlvciA9PT0gbnVsbCAmJiBrcGkubm90ZSA9PT0gbnVsbCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG91dHB1dCA9IGRlbHRhT3V0cHV0KGtwaSwgY29uZmlnKTtcbiAgY29uc3QgYW1vdW50ID0gb3V0cHV0LnJvbGUgPT09ICdwZXJjZW50X2NoYW5nZScgPyBrcGkucGVyY2VudENoYW5nZSA6IGtwaS5jaGFuZ2U7XG4gIGNvbnN0IGNvbXBhcmVkID0gY29tcGFyZWRUZXh0KGNvbmZpZywgZGF0YSwgY29udGV4dCk7XG5cbiAgaWYgKGFtb3VudCA9PT0gbnVsbCkge1xuICAgIHJldHVybiB7IHRleHQ6IEVNUFRZX1ZBTFVFLCB0cmVuZDogUmVwb3J0S3BpVHJlbmQuRmxhdCwgdG9uZTogUmVwb3J0Q2hhbmdlUG9sYXJpdHkuTmV1dHJhbCwgY29tcGFyZWQgfTtcbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnMgPSB7IG1lYXN1cmVTcGVjOiBjb25maWc/Lm1lYXN1cmUgPz8gbnVsbCB9O1xuICBjb25zdCB0ZXh0ID0gZm9ybWF0T3V0cHV0VmFsdWUoYW1vdW50LCBvdXRwdXQsIG51bGwsIGNvbnRleHQuZm9ybWF0LCBvcHRpb25zKS50ZXh0O1xuICBjb25zdCB6ZXJvID0gZm9ybWF0T3V0cHV0VmFsdWUoMCwgb3V0cHV0LCBudWxsLCBjb250ZXh0LmZvcm1hdCwgb3B0aW9ucykudGV4dDtcbiAgY29uc3QgdHJlbmQgPSB0ZXh0ID09PSB6ZXJvID8gUmVwb3J0S3BpVHJlbmQuRmxhdCA6IChhbW91bnQgPiAwID8gUmVwb3J0S3BpVHJlbmQuVXAgOiBSZXBvcnRLcGlUcmVuZC5Eb3duKTtcblxuICByZXR1cm4geyB0ZXh0LCB0cmVuZCwgdG9uZTogZGVsdGFUb25lKHRyZW5kLCBjb25maWc/LmluY3JlYXNlSXMpLCBjb21wYXJlZCB9O1xufVxuXG4vLyBUaGUgZGVsdGEgdGhlIHNlcnZlciBuYW1lZCwgYXMgYW4gb3V0cHV0IGNvbHVtbjogdGhlIHBlcmNlbnQgY2hhbmdlLCBvciB0aGVcbi8vIGNoYW5nZSAoaW4gcG9pbnRzIGZvciBhIHBlcmNlbnQgbWVhc3VyZSkgd2hlbiBpdCBuYW1lZCB0aGF0IG9yIGhhcyBub1xuLy8gcGVyY2VudCBjaGFuZ2UgdG8gZ2l2ZSAoYSBwcmlvciBvZiAwLCBvciBhIGNoYW5nZSBhY3Jvc3MgemVybykuXG5mdW5jdGlvbiBkZWx0YU91dHB1dChrcGk6IENvbXBvbmVudEtwaSwgY29uZmlnOiBLcGlDb25maWcgfCBudWxsIHwgdW5kZWZpbmVkKTogT3V0cHV0TWV0YSB7XG4gIGNvbnN0IHBlcmNlbnQgPSBrcGkuc2hvdyA9PT0gJ3BlcmNlbnRfY2hhbmdlJyAmJiBrcGkucGVyY2VudENoYW5nZSAhPT0gbnVsbDtcblxuICByZXR1cm4ge1xuICAgIG1lYXN1cmU6IGNvbmZpZz8ubWVhc3VyZT8uY29sdW1uID8/ICcnLFxuICAgIGtpbmQ6ICd2YWx1ZScsXG4gICAgcm9sZTogcGVyY2VudCA/ICdwZXJjZW50X2NoYW5nZScgOiAnY2hhbmdlJyxcbiAgICBvZmZzZXQ6IDEsXG4gICAgd2luZG93OiBmYWxzZSxcbiAgICByYW5rOiBudWxsLFxuICAgIHNoYXJlOiBudWxsLFxuICB9O1xufVxuXG4vLyBHb29kIG5ld3MgaXMgZ3JlZW4gYW5kIGJhZCBuZXdzIHJlZCwgd2hpY2hldmVyIHdheSB0aGUgdmFsdWUgbW92ZWQ7IGEgZmxhdFxuLy8gY2hhbmdlLCBvciBhIHZhbHVlIHdob3NlIGRpcmVjdGlvbiBtZWFucyBuZWl0aGVyLCBpcyBzbGF0ZS5cbmZ1bmN0aW9uIGRlbHRhVG9uZSh0cmVuZDogUmVwb3J0S3BpVHJlbmQsIGluY3JlYXNlSXM6IFJlcG9ydENoYW5nZVBvbGFyaXR5IHwgbnVsbCB8IHVuZGVmaW5lZCk6IFJlcG9ydENoYW5nZVBvbGFyaXR5IHtcbiAgY29uc3QgcG9sYXJpdHkgPSBpbmNyZWFzZUlzID8/IFJlcG9ydENoYW5nZVBvbGFyaXR5Lkdvb2Q7XG5cbiAgaWYgKHRyZW5kID09PSBSZXBvcnRLcGlUcmVuZC5GbGF0IHx8IHBvbGFyaXR5ID09PSBSZXBvcnRDaGFuZ2VQb2xhcml0eS5OZXV0cmFsKSB7XG4gICAgcmV0dXJuIFJlcG9ydENoYW5nZVBvbGFyaXR5Lk5ldXRyYWw7XG4gIH1cblxuICBjb25zdCByaXNlID0gdHJlbmQgPT09IFJlcG9ydEtwaVRyZW5kLlVwO1xuXG4gIHJldHVybiByaXNlID09PSAocG9sYXJpdHkgPT09IFJlcG9ydENoYW5nZVBvbGFyaXR5Lkdvb2QpID8gUmVwb3J0Q2hhbmdlUG9sYXJpdHkuR29vZCA6IFJlcG9ydENoYW5nZVBvbGFyaXR5LkJhZDtcbn1cblxuLy8gJ3ZzICQxLDEzOSAoQXVnIDEg4oCTIDMxLCAyMDI2KSc6IHRoZSBwcmlvciB2YWx1ZSBhbmQgaXRzIHdpbmRvdywgZWl0aGVyXG4vLyBhbG9uZSB3aGVuIHRoZSBvdGhlciBpcyBtaXNzaW5nLlxuZnVuY3Rpb24gY29tcGFyZWRUZXh0KFxuICBjb25maWc6IEtwaUNvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGRhdGE6IENvbXBvbmVudERhdGEsXG4gIGNvbnRleHQ6IEtwaUNhcmRDb250ZXh0LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgY29tcGFyaXNvbiA9IGRhdGEuY29tcGFyaXNvbjtcbiAgY29uc3QgcHJpb3IgPSBjb21wYXJpc29uLnByaW9ycz8uWzBdO1xuICBjb25zdCBkYXlzID0gcHJpb3IgPyBmb3JtYXREYXlXaW5kb3cocHJpb3IsIGNvbXBhcmlzb24udGltZXpvbmUsIGNvbnRleHQuZm9ybWF0LmxvY2FsZSkgOiAnJztcbiAgY29uc3QgdmFsdWUgPSBkYXRhLmtwaS5wcmlvciA9PT0gbnVsbCA/ICcnIDogZm9ybWF0TnVtYmVyKGRhdGEua3BpLnByaW9yLCBjb25maWc/Lm1lYXN1cmUsIGNvbnRleHQuZm9ybWF0KTtcblxuICBpZiAodmFsdWUgJiYgZGF5cykge1xuICAgIHJldHVybiBgdnMgJHt2YWx1ZX0gKCR7ZGF5c30pYDtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZSB8fCBkYXlzID8gYHZzICR7dmFsdWUgfHwgZGF5c31gIDogJyc7XG59XG5cbi8vIFRoZSBkYXlzIHRoZSB2YWx1ZSBjb3ZlcnM6IHRoZSBjb21wYXJpc29uJ3MgY3VycmVudCB3aW5kb3csIGVsc2UgdGhlXG4vLyB0aW1lZnJhbWUncy4gJycgd2hlbiB0aGUgZGF0YSBoYXMgbmVpdGhlci5cbmZ1bmN0aW9uIHdpbmRvd0xpbmUoZGF0YTogQ29tcG9uZW50RGF0YSB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ6IEtwaUNhcmRDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgY29tcGFyaXNvbiA9IGRhdGE/LmNvbXBhcmlzb247XG5cbiAgaWYgKGNvbXBhcmlzb24/LmN1cnJlbnQpIHtcbiAgICByZXR1cm4gZm9ybWF0RGF5V2luZG93KGNvbXBhcmlzb24uY3VycmVudCwgY29tcGFyaXNvbi50aW1lem9uZSwgY29udGV4dC5mb3JtYXQubG9jYWxlKTtcbiAgfVxuXG4gIHJldHVybiBkYXRhPy50aW1lZnJhbWUgPyBmb3JtYXREYXlXaW5kb3coZGF0YS50aW1lZnJhbWUsIGNvbnRleHQudGltZXpvbmUsIGNvbnRleHQuZm9ybWF0LmxvY2FsZSkgOiAnJztcbn1cblxuLy8gVGhlIHRhcmdldCBhcyB0aGUgc2VydmVyIHNlbnQgaXQgYmFjazogaXRzIHZhbHVlIGluIHRoZSBtZWFzdXJlJ3MgZm9ybWF0LFxuLy8gYW5kIHRoZSBwcm9ncmVzcyB0b3dhcmQgaXQsIG5ldmVyIGNvbXB1dGVkIGhlcmUuIEEgbWV0IHRhcmdldCBmaWxscyBncmVlbi5cbmZ1bmN0aW9uIGtwaVRhcmdldChcbiAgY29uZmlnOiBLcGlDb25maWcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBrcGk6IENvbXBvbmVudEtwaSB8IG51bGwsXG4gIGZvcm1hdDogUmVwb3J0Rm9ybWF0Q29udGV4dCxcbik6IEtwaUNhcmRUYXJnZXQgfCBudWxsIHtcbiAgY29uc3QgdGFyZ2V0ID0ga3BpPy50YXJnZXQ7XG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHByb2dyZXNzID0gdGFyZ2V0LnByb2dyZXNzO1xuXG4gIHJldHVybiB7XG4gICAgdGV4dDogYCR7dGFyZ2V0LmxhYmVsIHx8IFRBUkdFVF9DQVBUSU9OfTogJHtmb3JtYXROdW1iZXIodGFyZ2V0LnZhbHVlLCBjb25maWc/Lm1lYXN1cmUsIGZvcm1hdCl9YCxcbiAgICBwcm9ncmVzczogcHJvZ3Jlc3MgPT09IG51bGwgPyAnJyA6IGAke2Zvcm1hdE51bWJlcihwcm9ncmVzcywgUFJPR1JFU1NfU1BFQywgeyAuLi5mb3JtYXQsIHJhdGlvUGVyY2VudDogdHJ1ZSB9KX0gb2YgdGFyZ2V0YCxcbiAgICBmaWxsOiBwcm9ncmVzcyA9PT0gbnVsbCA/IG51bGwgOiBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCBwcm9ncmVzcykpLFxuICAgIHRvbmU6IHRhcmdldC5tZXQgPyBSZXBvcnRDaGFuZ2VQb2xhcml0eS5Hb29kIDogUmVwb3J0Q2hhbmdlUG9sYXJpdHkuTmV1dHJhbCxcbiAgfTtcbn1cblxuXG4vLyBBIEtQSSdzIGNhcmQga2V5cyBhcyBpdHMgY29uZmlnIGhvbGRzIHRoZW07IGFuIGFic2VudCBrZXkgcmVhZHMgbnVsbC5cbmV4cG9ydCBmdW5jdGlvbiBrcGlDYXJkU2V0dGluZ3MoY29uZmlnOiBLcGlDb25maWcgfCBudWxsIHwgdW5kZWZpbmVkKTogS3BpQ2FyZFNldHRpbmdzIHtcbiAgcmV0dXJuIHtcbiAgICBpbmNyZWFzZUlzOiBjb25maWc/LmluY3JlYXNlSXMgPz8gbnVsbCxcbiAgICB0YXJnZXQ6IGNvbmZpZz8udGFyZ2V0ID8/IG51bGwsXG4gICAgc3BhcmtsaW5lOiBjb25maWc/LnNwYXJrbGluZSA/PyBudWxsLFxuICB9O1xufVxuXG4vLyBXaGV0aGVyIHR3byBzZXRzIG9mIGNhcmQga2V5cyBkcmF3IHRoZSBzYW1lIGNhcmQuIEdvb2QgYW5kIGFuIGFic2VudFxuLy8gaW5jcmVhc2VJcyBhcmUgb25lLCBhcyBhcmUgYSBudWxsIGdyYW51bGFyaXR5IGFuZCBtb250aCwgbnVsbCBwZXJpb2RzIGFuZFxuLy8gMTIsIGFuZCBhbiBlbXB0eSB0YXJnZXQgbGFiZWwgYW5kIG5vbmUuXG5leHBvcnQgZnVuY3Rpb24gc2FtZUtwaUNhcmRTZXR0aW5ncyhhOiBLcGlDYXJkU2V0dGluZ3MsIGI6IEtwaUNhcmRTZXR0aW5ncyk6IGJvb2xlYW4ge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobm9ybWFsaXplZENhcmRTZXR0aW5ncyhhKSkgPT09IEpTT04uc3RyaW5naWZ5KG5vcm1hbGl6ZWRDYXJkU2V0dGluZ3MoYikpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVkQ2FyZFNldHRpbmdzKHNldHRpbmdzOiBLcGlDYXJkU2V0dGluZ3MpOiBLcGlDYXJkU2V0dGluZ3Mge1xuICBjb25zdCB7IGluY3JlYXNlSXMsIHRhcmdldCwgc3BhcmtsaW5lIH0gPSBzZXR0aW5ncztcblxuICByZXR1cm4ge1xuICAgIGluY3JlYXNlSXM6IGluY3JlYXNlSXMgPT09IFJlcG9ydENoYW5nZVBvbGFyaXR5Lkdvb2QgPyBudWxsIDogKGluY3JlYXNlSXMgPz8gbnVsbCksXG4gICAgdGFyZ2V0OiB0YXJnZXQgPyB7IHZhbHVlOiB0YXJnZXQudmFsdWUsIGxhYmVsOiB0YXJnZXQubGFiZWwgfHwgbnVsbCB9IDogbnVsbCxcbiAgICBzcGFya2xpbmU6IHNwYXJrbGluZVxuICAgICAgPyB7XG4gICAgICAgIGdyYW51bGFyaXR5OiBzcGFya2xpbmUuZ3JhbnVsYXJpdHkgPz8gS1BJX1NQQVJLTElORV9ERUZBVUxUX0dSQU5VTEFSSVRZLFxuICAgICAgICBwZXJpb2RzOiBzcGFya2xpbmUucGVyaW9kcyA/PyBLUElfU1BBUktMSU5FX0RFRkFVTFRfUEVSSU9EUyxcbiAgICAgIH1cbiAgICAgIDogbnVsbCxcbiAgfTtcbn1cbiJdfQ==
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3BpLWNhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL3JlcG9ydHMva3BpLWNhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFDTCxjQUFjLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEdBQ25HLE1BQU0sVUFBVSxDQUFDO0FBZWxCLDBFQUEwRTtBQUMxRSwyQ0FBMkM7QUFDM0MsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQXFCLE9BQU8sQ0FBQztBQUMzRSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxFQUFFLENBQUM7QUFxRWhELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUN4QixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUM7QUFDaEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekYsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBRTFCLE1BQU0sVUFBVSxXQUFXLENBQ3pCLE1BQW9DLEVBQ3BDLElBQXNDLEVBQ3RDLE9BQXVCO0lBRXZCLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxPQUFPLENBQUM7SUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUM7SUFFOUIsT0FBTztRQUNMLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMs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QU8sRUFBRSxTQUFTLENBQUMsT0FBTyxJQUFJLDZCQUE2QjthQUM1RDtZQUNELENBQUMsQ0FBQyxJQUFJO0tBQ1QsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXBvcnRDaGFuZ2VQb2xhcml0eSB9IGZyb20gJy4vZW51bXMvcmVwb3J0LWNoYW5nZS1wb2xhcml0eS5lbnVtJztcbmltcG9ydCB7IFJlcG9ydEtwaVRyZW5kIH0gZnJvbSAnLi9lbnVtcy9yZXBvcnQta3BpLXRyZW5kLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtYXQgfSBmcm9tICcuL2VudW1zL3JlcG9ydC12YWx1ZS1mb3JtYXQuZW51bSc7XG5pbXBvcnQge1xuICBmb3JtYXREYXlSYW5nZSwgZm9ybWF0RGF5V2luZG93LCBmb3JtYXROdW1iZXIsIGZvcm1hdE91dHB1dFZhbHVlLCBmb3JtYXRSZWFkaW5nRGF5LCBpc1JlYWRPbk9uZURheSxcbn0gZnJvbSAnLi9mb3JtYXQnO1xuaW1wb3J0IHtcbiAgQ2hhcnRHcmFudWxhcml0eSxcbiAgQ29tcGFyaXNvbldpbmRvdyxcbiAgQ29tcG9uZW50Q29tcGFyaXNvbixcbiAgQ29tcG9uZW50RGF0YSxcbiAgQ29tcG9uZW50S3BpLFxuICBLcGlDYXJkU2V0dGluZ3MsXG4gIEtwaUNvbmZpZyxcbiAgT3V0cHV0TWV0YSxcbiAgUmVwb3J0Rm9ybWF0Q29udGV4dCxcbiAgUmVwb3J0TG9jYWxlVGFnLFxufSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LmludGVyZmFjZSc7XG5cblxuLy8gQSBzcGFya2xpbmUncyBwZXJpb2QgYW5kIGxlbmd0aCB3aGVuIGl0cyBjb25maWcgbmFtZXMgbmVpdGhlcjogbW9udGhseSxcbi8vIG92ZXIgMTIgcGVyaW9kcyAodGhlIHNlcnZlcidzIGRlZmF1bHRzKS5cbmV4cG9ydCBjb25zdCBLUElfU1BBUktMSU5FX0RFRkFVTFRfR1JBTlVMQVJJVFk6IENoYXJ0R3JhbnVsYXJpdHkgPSAnbW9udGgnO1xuZXhwb3J0IGNvbnN0IEtQSV9TUEFSS0xJTkVfREVGQVVMVF9QRVJJT0RTID0gMTI7XG5cblxuLy8gV2hhdCBhIEtQSSBjYXJkIHNob3dzLCBkZWNpZGVkIGZyb20gaXRzIGNvbmZpZyBhbmQgaXRzIGRhdGEuIFRoZSBzZXJ2ZXJcbi8vIHNlbmRzIGV2ZXJ5IG51bWJlciAodGhlIHZhbHVlLCB0aGUgcHJpb3IsIHRoZSBjaGFuZ2UsIHRoZSB0YXJnZXQncyBwcm9ncmVzcyxcbi8vIHRoZSBzcGFya2xpbmUncyBwb2ludHMpIGFuZCB0aGUgbm90ZSBjb2RlczsgdGhpcyBvbmx5IGZvcm1hdHMgdGhlbSBhbmRcbi8vIHBpY2tzIHRoZSBhcnJvdyBhbmQgdGhlIGNvbG9yLiBQdXJlLCBzbyB0aGUgZXhwb3J0cyBjYW4gZHJhdyB0aGUgc2FtZSBjYXJkLlxuLy9cbi8vIFdpdGhvdXQgYSBga3BpYCBrZXkgKGEgS1BJIHdpdGggbm8gY29tcGFyaXNvbiwgdGFyZ2V0IG9yIHNwYXJrbGluZSwgb3IgYW5cbi8vIG9sZGVyIHNlcnZlcikgdGhlIGNhcmQgaXMgdGhlIHZhbHVlIGFuZCBpdHMgbGFiZWwsIGFzIGl0IGFsd2F5cyB3YXMsIHBsdXNcbi8vIHRoZSB0aW1lZnJhbWUncyBkYXlzIHdoZW4gdGhlIGRhdGEgaGFzIGEgdGltZWZyYW1lLlxuXG4vLyBUaGUgcmVwb3J0IHRoZSBjYXJkIGlzIGRyYXduIGZvcjogaXRzIG51bWJlciBmb3JtYXQsIGFuZCB0aGUgem9uZSBhXG4vLyB0aW1lZnJhbWUncyBjdXQgdGltZSByZWFkcyBpbiAoYSBjb21wYXJpc29uIG5hbWVzIGl0cyBvd24pLlxuZXhwb3J0IGludGVyZmFjZSBLcGlDYXJkQ29udGV4dCB7XG4gIGZvcm1hdDogUmVwb3J0Rm9ybWF0Q29udGV4dDtcbiAgdGltZXpvbmU6IHN0cmluZztcbn1cblxuLy8gVGhlIGRlbHRhIHJvdzogdGhlIGNoYW5nZSBhcyBzaG93biwgdGhlIGFycm93IGl0IHBvaW50cyAobm9uZSB3aGVuIHRoZVxuLy8gc2hvd24gY2hhbmdlIHJvdW5kcyB0byB6ZXJvKSwgdGhlIGNvbG9yIGl0IG1lYW5zIHVuZGVyIHRoZSBjb25maWcnc1xuLy8gaW5jcmVhc2VJcywgYW5kIHdoYXQgaXQgaXMgY29tcGFyZWQgd2l0aCAoJ3ZzICQxLDEzOSAoQXVnIDEg4oCTIDMxLCAyMDI2KScpLlxuZXhwb3J0IGludGVyZmFjZSBLcGlDYXJkRGVsdGEge1xuICB0ZXh0OiBzdHJpbmc7XG4gIHRyZW5kOiBSZXBvcnRLcGlUcmVuZDtcbiAgdG9uZTogUmVwb3J0Q2hhbmdlUG9sYXJpdHk7XG4gIGNvbXBhcmVkOiBzdHJpbmc7XG59XG5cbi8vIFRoZSB0YXJnZXQgbGluZTogaXRzIGNhcHRpb24gYW5kIHZhbHVlICgnR29hbDogMTUwJyksIHRoZSBwcm9ncmVzcyB0aGVcbi8vIHNlcnZlciBjb21wdXRlZCAoJzM3JSBvZiB0YXJnZXQnLCAnJyB3aXRob3V0IG9uZSksIGhvdyBtdWNoIG9mIHRoZSBiYXIgdG9cbi8vIGZpbGwgKDAtMSwgbnVsbCBmb3Igbm8gYmFyKSBhbmQgdGhlIGJhcidzIGNvbG9yLlxuZXhwb3J0IGludGVyZmFjZSBLcGlDYXJkVGFyZ2V0IHtcbiAgdGV4dDogc3RyaW5nO1xuICBwcm9ncmVzczogc3RyaW5nO1xuICBmaWxsOiBudW1iZXIgfCBudWxsO1xuICB0b25lOiBSZXBvcnRDaGFuZ2VQb2xhcml0eTtcbn1cblxuLy8gVGhlIHNwYXJrbGluZSdzIHZhbHVlcywgb2xkZXN0IGZpcnN0LCBhbmQgd2hldGhlciB0aGUgbGFzdCBwZXJpb2QgaXMgbm90XG4vLyBmaW5pc2hlZCB5ZXQuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNhcmRTcGFya2xpbmUge1xuICB2YWx1ZXM6IChudW1iZXIgfCBudWxsKVtdO1xuICBwYXJ0aWFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNhcmRWaWV3IHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgZGVsdGE6IEtwaUNhcmREZWx0YSB8IG51bGw7XG4gIHdpbmRvdzogc3RyaW5nO1xuICB0YXJnZXQ6IEtwaUNhcmRUYXJnZXQgfCBudWxsO1xuICBzcGFya2xpbmU6IEtwaUNhcmRTcGFya2xpbmUgfCBudWxsO1xufVxuXG4vLyBUaGUgc3BhcmtsaW5lIGRyYXduIGluIGEgMC0xMDAgYm94IG9uIGJvdGggYXhlcyAoeSBkb3duKTogb25lIHBvbHlsaW5lIHBlclxuLy8gcnVuIG9mIHZhbHVlcyB3aXRob3V0IGEgZ2FwLCBhIGRvdCBmb3IgYSB2YWx1ZSB3aXRoIGFuIGVtcHR5IHBlcmlvZCBvbiBib3RoXG4vLyBzaWRlcywgYW5kIHRoZSBsYXN0IHBvaW50J3MgbWFya2VyLCBob2xsb3cgd2hlbiBpdHMgcGVyaW9kIGlzIHBhcnRpYWwuXG5leHBvcnQgaW50ZXJmYWNlIEtwaVNwYXJrbGluZVBvaW50IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpU3BhcmtsaW5lR2VvbWV0cnkge1xuICBsaW5lczogc3RyaW5nW107XG4gIGRvdHM6IEtwaVNwYXJrbGluZVBvaW50W107XG4gIGxhc3Q6IChLcGlTcGFya2xpbmVQb2ludCAmIHsgaG9sbG93OiBib29sZWFuIH0pIHwgbnVsbDtcbn1cblxuY29uc3QgRU1QVFlfVkFMVUUgPSAn4oCUJztcbmNvbnN0IFRBUkdFVF9DQVBUSU9OID0gJ1RhcmdldCc7XG5jb25zdCBQUk9HUkVTU19TUEVDID0gT2JqZWN0LmZyZWV6ZSh7IGZvcm1hdDogUmVwb3J0VmFsdWVGb3JtYXQuUGVyY2VudCwgcHJlY2lzaW9uOiAwIH0pO1xuY29uc3QgU1BBUktMSU5FX0JPWCA9IDEwMDtcblxuZXhwb3J0IGZ1bmN0aW9uIGtwaUNhcmRWaWV3KFxuICBjb25maWc6IEtwaUNvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGRhdGE6IENvbXBvbmVudERhdGEgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjb250ZXh0OiBLcGlDYXJkQ29udGV4dCxcbik6IEtwaUNhcmRWaWV3IHtcbiAgY29uc3QgbWVhc3VyZSA9IGNvbmZpZz8ubWVhc3VyZTtcbiAgY29uc3Qga3BpID0gZGF0YT8ua3BpID8/IG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogZm9ybWF0TnVtYmVyKGtwaSA/IGtwaS52YWx1ZSA6IHJvd1ZhbHVlKGNvbmZpZywgZGF0YSksIG1lYXN1cmUsIGNvbnRleHQuZm9ybWF0LCB7IGVtcHR5OiBFTVBUWV9WQUxVRSB9KSxcbiAgICBsYWJlbDogbWVhc3VyZT8ubGFiZWwgPz8gJycsXG4gICAgZGVsdGE6IGtwaURlbHRhKGNvbmZpZywgZGF0YSwgY29udGV4dCksXG4gICAgd2luZG93OiB3aW5kb3dMaW5lKGRhdGEsIGNvbnRleHQpLFxuICAgIHRhcmdldDoga3BpVGFyZ2V0KGNvbmZpZywga3BpLCBjb250ZXh0LmZvcm1hdCksXG4gICAgc3BhcmtsaW5lOiBrcGk/LnNwYXJrbGluZVxuICAgICAgPyB7IHZhbHVlczogKGtwaS5zcGFya2xpbmUucG9pbnRzID8/IFtdKS5tYXAoKHBvaW50KSA9PiBwb2ludC52YWx1ZSksIHBhcnRpYWw6ICEha3BpLnNwYXJrbGluZS5wYXJ0aWFsIH1cbiAgICAgIDogbnVsbCxcbiAgfTtcbn1cblxuLy8gVGhlIHBvbHlsaW5lIHJ1bnMsIGxvbmUgZG90cyBhbmQgbGFzdCBtYXJrZXIgZm9yIHRoZSB2YWx1ZXMsIHNjYWxlZCBzbyB0aGVcbi8vIGxvd2VzdCB2YWx1ZSBzaXRzIG9uIHRoZSBib3R0b20gZWRnZSBhbmQgdGhlIGhpZ2hlc3Qgb24gdGhlIHRvcCBvbmUgKGEgZmxhdFxuLy8gc2VyaWVzIHJ1bnMgdGhyb3VnaCB0aGUgbWlkZGxlKS5cbmV4cG9ydCBmdW5jdGlvbiBrcGlTcGFya2xpbmVHZW9tZXRyeSh2YWx1ZXM6IChudW1iZXIgfCBudWxsKVtdLCBwYXJ0aWFsOiBib29sZWFuKTogS3BpU3BhcmtsaW5lR2VvbWV0cnkge1xuICBjb25zdCBudW1iZXJzID0gdmFsdWVzLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBudW1iZXIgPT4gdmFsdWUgIT09IG51bGwpO1xuXG4gIGlmICghbnVtYmVycy5sZW5ndGgpIHtcbiAgICByZXR1cm4geyBsaW5lczogW10sIGRvdHM6IFtdLCBsYXN0OiBudWxsIH07XG4gIH1cblxuICBjb25zdCBsb3cgPSBNYXRoLm1pbiguLi5udW1iZXJzKTtcbiAgY29uc3QgaGlnaCA9IE1hdGgubWF4KC4uLm51bWJlcnMpO1xuICBjb25zdCBwb2ludHMgPSB2YWx1ZXMubWFwKCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09PSBudWxsID8gbnVsbCA6IHtcbiAgICB4OiB2YWx1ZXMubGVuZ3RoID09PSAxID8gU1BBUktMSU5FX0JPWCAvIDIgOiBpbmRleCAqIFNQQVJLTElORV9CT1ggLyAodmFsdWVzLmxlbmd0aCAtIDEpLFxuICAgIHk6IGhpZ2ggPT09IGxvdyA/IFNQQVJLTElORV9CT1ggLyAyIDogKGhpZ2ggLSB2YWx1ZSkgKiBTUEFSS0xJTkVfQk9YIC8gKGhpZ2ggLSBsb3cpLFxuICB9KTtcbiAgY29uc3QgcnVucyA9IHNwYXJrbGluZVJ1bnMocG9pbnRzKTtcbiAgY29uc3QgbGFzdFBvaW50ID0gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXTtcblxuICByZXR1cm4ge1xuICAgIGxpbmVzOiBydW5zLmZpbHRlcigocnVuKSA9PiBydW4ubGVuZ3RoID4gMSkubWFwKChydW4pID0+IHJ1bi5tYXAoKHBvaW50KSA9PiBgJHtwb2ludC54fSwke3BvaW50Lnl9YCkuam9pbignICcpKSxcbiAgICBkb3RzOiBydW5zLmZpbHRlcigocnVuKSA9PiBydW4ubGVuZ3RoID09PSAxICYmIHJ1blswXSAhPT0gbGFzdFBvaW50KS5tYXAoKHJ1bikgPT4gcnVuWzBdKSxcbiAgICBsYXN0OiBsYXN0UG9pbnQgPyB7IC4uLmxhc3RQb2ludCwgaG9sbG93OiBwYXJ0aWFsIH0gOiBudWxsLFxuICB9O1xufVxuXG5mdW5jdGlvbiBzcGFya2xpbmVSdW5zKHBvaW50czogKEtwaVNwYXJrbGluZVBvaW50IHwgbnVsbClbXSk6IEtwaVNwYXJrbGluZVBvaW50W11bXSB7XG4gIHJldHVybiBwb2ludHMucmVkdWNlPEtwaVNwYXJrbGluZVBvaW50W11bXT4oKHJ1bnMsIHBvaW50LCBpbmRleCkgPT4ge1xuICAgIGlmIChwb2ludCkge1xuICAgICAgaWYgKGluZGV4ID09PSAwIHx8ICFwb2ludHNbaW5kZXggLSAxXSkge1xuICAgICAgICBydW5zLnB1c2goW10pO1xuICAgICAgfVxuXG4gICAgICBydW5zW3J1bnMubGVuZ3RoIC0gMV0ucHVzaChwb2ludCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bnM7XG4gIH0sIFtdKTtcbn1cblxuLy8gVGhlIG9uZSByb3cncyB2YWx1ZSwgYXMgdGhlIGNhcmQgaGFzIGFsd2F5cyByZWFkIGl0OiB0aGUgbWVhc3VyZSdzIGNvbHVtbixcbi8vIG9yIHRoZSByb3cncyBmaXJzdCBjb2x1bW4gd2hlbiB0aGUgY29uZmlnIG5hbWVzIG5vbmUuXG5mdW5jdGlvbiByb3dWYWx1ZShjb25maWc6IEtwaUNvbmZpZyB8IG51bGwgfCB1bmRlZmluZWQsIGRhdGE6IENvbXBvbmVudERhdGEgfCBudWxsIHwgdW5kZWZpbmVkKTogdW5rbm93biB7XG4gIGNvbnN0IHJvdyA9IGRhdGE/LnJvd3M/LlswXTtcbiAgY29uc3QgY29sdW1uID0gY29uZmlnPy5tZWFzdXJlPy5jb2x1bW4gPz8gT2JqZWN0LmtleXMocm93ID8/IHt9KVswXTtcblxuICByZXR1cm4gcm93Py5bY29sdW1uXTtcbn1cblxuLy8gQSBkZWx0YSBuZWVkcyBhIHZhbHVlIGFuZCBhIGNvbXBhcmlzb24gdGhhdCByYW4uIEEgbWlzc2luZyB2YWx1ZSBzaG93cyBvbmx5XG4vLyB0aGUgZGFzaDsgYSBtaXNzaW5nIHByaW9yIHNob3dzIGEgZGFzaCBmb3IgdGhlIGRlbHRhLCBhbmQgdGhlIG5vdGUgc2F5cyB3aHkuXG5mdW5jdGlvbiBrcGlEZWx0YShcbiAgY29uZmlnOiBLcGlDb25maWcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBkYXRhOiBDb21wb25lbnREYXRhIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY29udGV4dDogS3BpQ2FyZENvbnRleHQsXG4pOiBLcGlDYXJkRGVsdGEgfCBudWxsIHtcbiAgY29uc3Qga3BpID0gZGF0YT8ua3BpO1xuXG4gIGlmICgha3BpIHx8IGtwaS52YWx1ZSA9PT0gbnVsbCB8fCAhZGF0YS5jb21wYXJpc29uIHx8IChrcGkucHJpb3IgPT09IG51bGwgJiYga3BpLm5vdGUgPT09IG51bGwpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBvdXRwdXQgPSBkZWx0YU91dHB1dChrcGksIGNvbmZpZyk7XG4gIGNvbnN0IGFtb3VudCA9IG91dHB1dC5yb2xlID09PSAncGVyY2VudF9jaGFuZ2UnID8ga3BpLnBlcmNlbnRDaGFuZ2UgOiBrcGkuY2hhbmdlO1xuICBjb25zdCBjb21wYXJlZCA9IGNvbXBhcmVkVGV4dChjb25maWcsIGRhdGEsIGNvbnRleHQpO1xuXG4gIGlmIChhbW91bnQgPT09IG51bGwpIHtcbiAgICByZXR1cm4geyB0ZXh0OiBFTVBUWV9WQUxVRSwgdHJlbmQ6IFJlcG9ydEtwaVRyZW5kLkZsYXQsIHRvbmU6IFJlcG9ydENoYW5nZVBvbGFyaXR5Lk5ldXRyYWwsIGNvbXBhcmVkIH07XG4gIH1cblxuICBjb25zdCBvcHRpb25zID0geyBtZWFzdXJlU3BlYzogY29uZmlnPy5tZWFzdXJlID8/IG51bGwgfTtcbiAgY29uc3QgdGV4dCA9IGZvcm1hdE91dHB1dFZhbHVlKGFtb3VudCwgb3V0cHV0LCBudWxsLCBjb250ZXh0LmZvcm1hdCwgb3B0aW9ucykudGV4dDtcbiAgY29uc3QgemVybyA9IGZvcm1hdE91dHB1dFZhbHVlKDAsIG91dHB1dCwgbnVsbCwgY29udGV4dC5mb3JtYXQsIG9wdGlvbnMpLnRleHQ7XG4gIGNvbnN0IHRyZW5kID0gdGV4dCA9PT0gemVybyA/IFJlcG9ydEtwaVRyZW5kLkZsYXQgOiAoYW1vdW50ID4gMCA/IFJlcG9ydEtwaVRyZW5kLlVwIDogUmVwb3J0S3BpVHJlbmQuRG93bik7XG5cbiAgcmV0dXJuIHsgdGV4dCwgdHJlbmQsIHRvbmU6IGRlbHRhVG9uZSh0cmVuZCwgY29uZmlnPy5pbmNyZWFzZUlzKSwgY29tcGFyZWQgfTtcbn1cblxuLy8gVGhlIGRlbHRhIHRoZSBzZXJ2ZXIgbmFtZWQsIGFzIGFuIG91dHB1dCBjb2x1bW46IHRoZSBwZXJjZW50IGNoYW5nZSwgb3IgdGhlXG4vLyBjaGFuZ2UgKGluIHBvaW50cyBmb3IgYSBwZXJjZW50IG1lYXN1cmUpIHdoZW4gaXQgbmFtZWQgdGhhdCBvciBoYXMgbm9cbi8vIHBlcmNlbnQgY2hhbmdlIHRvIGdpdmUgKGEgcHJpb3Igb2YgMCwgb3IgYSBjaGFuZ2UgYWNyb3NzIHplcm8pLlxuZnVuY3Rpb24gZGVsdGFPdXRwdXQoa3BpOiBDb21wb25lbnRLcGksIGNvbmZpZzogS3BpQ29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCk6IE91dHB1dE1ldGEge1xuICBjb25zdCBwZXJjZW50ID0ga3BpLnNob3cgPT09ICdwZXJjZW50X2NoYW5nZScgJiYga3BpLnBlcmNlbnRDaGFuZ2UgIT09IG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICBtZWFzdXJlOiBjb25maWc/Lm1lYXN1cmU/LmNvbHVtbiA/PyAnJyxcbiAgICBraW5kOiAndmFsdWUnLFxuICAgIHJvbGU6IHBlcmNlbnQgPyAncGVyY2VudF9jaGFuZ2UnIDogJ2NoYW5nZScsXG4gICAgb2Zmc2V0OiAxLFxuICAgIHdpbmRvdzogZmFsc2UsXG4gICAgcmFuazogbnVsbCxcbiAgICBzaGFyZTogbnVsbCxcbiAgfTtcbn1cblxuLy8gR29vZCBuZXdzIGlzIGdyZWVuIGFuZCBiYWQgbmV3cyByZWQsIHdoaWNoZXZlciB3YXkgdGhlIHZhbHVlIG1vdmVkOyBhIGZsYXRcbi8vIGNoYW5nZSwgb3IgYSB2YWx1ZSB3aG9zZSBkaXJlY3Rpb24gbWVhbnMgbmVpdGhlciwgaXMgc2xhdGUuXG5mdW5jdGlvbiBkZWx0YVRvbmUodHJlbmQ6IFJlcG9ydEtwaVRyZW5kLCBpbmNyZWFzZUlzOiBSZXBvcnRDaGFuZ2VQb2xhcml0eSB8IG51bGwgfCB1bmRlZmluZWQpOiBSZXBvcnRDaGFuZ2VQb2xhcml0eSB7XG4gIGNvbnN0IHBvbGFyaXR5ID0gaW5jcmVhc2VJcyA/PyBSZXBvcnRDaGFuZ2VQb2xhcml0eS5Hb29kO1xuXG4gIGlmICh0cmVuZCA9PT0gUmVwb3J0S3BpVHJlbmQuRmxhdCB8fCBwb2xhcml0eSA9PT0gUmVwb3J0Q2hhbmdlUG9sYXJpdHkuTmV1dHJhbCkge1xuICAgIHJldHVybiBSZXBvcnRDaGFuZ2VQb2xhcml0eS5OZXV0cmFsO1xuICB9XG5cbiAgY29uc3QgcmlzZSA9IHRyZW5kID09PSBSZXBvcnRLcGlUcmVuZC5VcDtcblxuICByZXR1cm4gcmlzZSA9PT0gKHBvbGFyaXR5ID09PSBSZXBvcnRDaGFuZ2VQb2xhcml0eS5Hb29kKSA/IFJlcG9ydENoYW5nZVBvbGFyaXR5Lkdvb2QgOiBSZXBvcnRDaGFuZ2VQb2xhcml0eS5CYWQ7XG59XG5cbi8vICd2cyAkMSwxMzkgKEF1ZyAxIOKAkyAzMSwgMjAyNiknOiB0aGUgcHJpb3IgdmFsdWUgYW5kIGl0cyB3aW5kb3csIGVpdGhlclxuLy8gYWxvbmUgd2hlbiB0aGUgb3RoZXIgaXMgbWlzc2luZy4gQSB2YWx1ZSByZWFkIG9uIG9uZSBkYXkgaXMgY29tcGFyZWQgd2l0aFxuLy8gdGhlIHZhbHVlIG9uIHRoZSBwcmlvciB3aW5kb3cncyBsYXN0IGRheTogJ3ZzIDIwIChvbiBBdWcgMzEsIDIwMjYpJywgb3Jcbi8vICd2cyBBdWcgMzEsIDIwMjYnIHdpdGggbm8gcHJpb3IgdmFsdWUuXG5mdW5jdGlvbiBjb21wYXJlZFRleHQoXG4gIGNvbmZpZzogS3BpQ29uZmlnIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgZGF0YTogQ29tcG9uZW50RGF0YSxcbiAgY29udGV4dDogS3BpQ2FyZENvbnRleHQsXG4pOiBzdHJpbmcge1xuICBjb25zdCBjb21wYXJpc29uID0gZGF0YS5jb21wYXJpc29uO1xuICBjb25zdCBwcmlvciA9IGNvbXBhcmlzb24ucHJpb3JzPy5bMF07XG4gIGNvbnN0IHZhbHVlID0gZGF0YS5rcGkucHJpb3IgPT09IG51bGwgPyAnJyA6IGZvcm1hdE51bWJlcihkYXRhLmtwaS5wcmlvciwgY29uZmlnPy5tZWFzdXJlLCBjb250ZXh0LmZvcm1hdCk7XG4gIGNvbnN0IGRheXMgPSBwcmlvciA/IHByaW9yV2luZG93VGV4dChjb21wYXJpc29uLCBwcmlvciwgY29udGV4dC5mb3JtYXQubG9jYWxlLCAhIXZhbHVlKSA6ICcnO1xuXG4gIGlmICh2YWx1ZSAmJiBkYXlzKSB7XG4gICAgcmV0dXJuIGB2cyAke3ZhbHVlfSAoJHtkYXlzfSlgO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlIHx8IGRheXMgPyBgdnMgJHt2YWx1ZSB8fCBkYXlzfWAgOiAnJztcbn1cblxuLy8gVGhlIHByaW9yIHdpbmRvdyBpbiB0aGUgY29tcGFyZWQgdGV4dDogaXRzIGRheXMsIG9yIHRoZSBkYXkgaXRzIHZhbHVlIGlzXG4vLyByZWFkIG9uICgnb24gQXVnIDMxLCAyMDI2JyBiZXNpZGUgdGhlIHZhbHVlLCB0aGUgYmFyZSBkYXkgd2l0aG91dCBvbmUpLlxuZnVuY3Rpb24gcHJpb3JXaW5kb3dUZXh0KFxuICBjb21wYXJpc29uOiBDb21wb25lbnRDb21wYXJpc29uLFxuICBwcmlvcjogQ29tcGFyaXNvbldpbmRvdyxcbiAgbG9jYWxlOiBSZXBvcnRMb2NhbGVUYWcsXG4gIHdpdGhWYWx1ZTogYm9vbGVhbixcbik6IHN0cmluZyB7XG4gIGlmICghaXNSZWFkT25PbmVEYXkoY29tcGFyaXNvbikpIHtcbiAgICByZXR1cm4gZm9ybWF0RGF5V2luZG93KHByaW9yLCBjb21wYXJpc29uLnRpbWV6b25lLCBsb2NhbGUpO1xuICB9XG5cbiAgcmV0dXJuIHdpdGhWYWx1ZSA/IGZvcm1hdFJlYWRpbmdEYXkocHJpb3IsIGxvY2FsZSkgOiBmb3JtYXREYXlSYW5nZShwcmlvci5lbmQsIHByaW9yLmVuZCwgbG9jYWxlKTtcbn1cblxuLy8gVGhlIGRheXMgdGhlIHZhbHVlIGNvdmVyczogdGhlIGNvbXBhcmlzb24ncyBjdXJyZW50IHdpbmRvdywgZWxzZSB0aGVcbi8vIHRpbWVmcmFtZSdzLiBBIHZhbHVlIHJlYWQgb24gb25lIGRheSBuYW1lcyB0aGF0IGRheSAoJ09uIFNlcCAxNSwgMjAyNicpLlxuLy8gJycgd2hlbiB0aGUgZGF0YSBoYXMgbmVpdGhlci5cbmZ1bmN0aW9uIHdpbmRvd0xpbmUoZGF0YTogQ29tcG9uZW50RGF0YSB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ6IEtwaUNhcmRDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgY29tcGFyaXNvbiA9IGRhdGE/LmNvbXBhcmlzb247XG5cbiAgaWYgKGNvbXBhcmlzb24/LmN1cnJlbnQpIHtcbiAgICByZXR1cm4gaXNSZWFkT25PbmVEYXkoY29tcGFyaXNvbilcbiAgICAgID8gZm9ybWF0UmVhZGluZ0RheShjb21wYXJpc29uLmN1cnJlbnQsIGNvbnRleHQuZm9ybWF0LmxvY2FsZSwgdHJ1ZSlcbiAgICAgIDogZm9ybWF0RGF5V2luZG93KGNvbXBhcmlzb24uY3VycmVudCwgY29tcGFyaXNvbi50aW1lem9uZSwgY29udGV4dC5mb3JtYXQubG9jYWxlKTtcbiAgfVxuXG4gIHJldHVybiBkYXRhPy50aW1lZnJhbWUgPyBmb3JtYXREYXlXaW5kb3coZGF0YS50aW1lZnJhbWUsIGNvbnRleHQudGltZXpvbmUsIGNvbnRleHQuZm9ybWF0LmxvY2FsZSkgOiAnJztcbn1cblxuLy8gVGhlIHRhcmdldCBhcyB0aGUgc2VydmVyIHNlbnQgaXQgYmFjazogaXRzIHZhbHVlIGluIHRoZSBtZWFzdXJlJ3MgZm9ybWF0LFxuLy8gYW5kIHRoZSBwcm9ncmVzcyB0b3dhcmQgaXQsIG5ldmVyIGNvbXB1dGVkIGhlcmUuIEEgbWV0IHRhcmdldCBmaWxscyBncmVlbi5cbmZ1bmN0aW9uIGtwaVRhcmdldChcbiAgY29uZmlnOiBLcGlDb25maWcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBrcGk6IENvbXBvbmVudEtwaSB8IG51bGwsXG4gIGZvcm1hdDogUmVwb3J0Rm9ybWF0Q29udGV4dCxcbik6IEtwaUNhcmRUYXJnZXQgfCBudWxsIHtcbiAgY29uc3QgdGFyZ2V0ID0ga3BpPy50YXJnZXQ7XG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHByb2dyZXNzID0gdGFyZ2V0LnByb2dyZXNzO1xuXG4gIHJldHVybiB7XG4gICAgdGV4dDogYCR7dGFyZ2V0LmxhYmVsIHx8IFRBUkdFVF9DQVBUSU9OfTogJHtmb3JtYXROdW1iZXIodGFyZ2V0LnZhbHVlLCBjb25maWc/Lm1lYXN1cmUsIGZvcm1hdCl9YCxcbiAgICBwcm9ncmVzczogcHJvZ3Jlc3MgPT09IG51bGwgPyAnJyA6IGAke2Zvcm1hdE51bWJlcihwcm9ncmVzcywgUFJPR1JFU1NfU1BFQywgeyAuLi5mb3JtYXQsIHJhdGlvUGVyY2VudDogdHJ1ZSB9KX0gb2YgdGFyZ2V0YCxcbiAgICBmaWxsOiBwcm9ncmVzcyA9PT0gbnVsbCA/IG51bGwgOiBNYXRoLm1pbigxLCBNYXRoLm1heCgwLCBwcm9ncmVzcykpLFxuICAgIHRvbmU6IHRhcmdldC5tZXQgPyBSZXBvcnRDaGFuZ2VQb2xhcml0eS5Hb29kIDogUmVwb3J0Q2hhbmdlUG9sYXJpdHkuTmV1dHJhbCxcbiAgfTtcbn1cblxuXG4vLyBBIEtQSSdzIGNhcmQga2V5cyBhcyBpdHMgY29uZmlnIGhvbGRzIHRoZW07IGFuIGFic2VudCBrZXkgcmVhZHMgbnVsbC5cbmV4cG9ydCBmdW5jdGlvbiBrcGlDYXJkU2V0dGluZ3MoY29uZmlnOiBLcGlDb25maWcgfCBudWxsIHwgdW5kZWZpbmVkKTogS3BpQ2FyZFNldHRpbmdzIHtcbiAgcmV0dXJuIHtcbiAgICBpbmNyZWFzZUlzOiBjb25maWc/LmluY3JlYXNlSXMgPz8gbnVsbCxcbiAgICB0YXJnZXQ6IGNvbmZpZz8udGFyZ2V0ID8/IG51bGwsXG4gICAgc3BhcmtsaW5lOiBjb25maWc/LnNwYXJrbGluZSA/PyBudWxsLFxuICB9O1xufVxuXG4vLyBXaGV0aGVyIHR3byBzZXRzIG9mIGNhcmQga2V5cyBkcmF3IHRoZSBzYW1lIGNhcmQuIEdvb2QgYW5kIGFuIGFic2VudFxuLy8gaW5jcmVhc2VJcyBhcmUgb25lLCBhcyBhcmUgYSBudWxsIGdyYW51bGFyaXR5IGFuZCBtb250aCwgbnVsbCBwZXJpb2RzIGFuZFxuLy8gMTIsIGFuZCBhbiBlbXB0eSB0YXJnZXQgbGFiZWwgYW5kIG5vbmUuXG5leHBvcnQgZnVuY3Rpb24gc2FtZUtwaUNhcmRTZXR0aW5ncyhhOiBLcGlDYXJkU2V0dGluZ3MsIGI6IEtwaUNhcmRTZXR0aW5ncyk6IGJvb2xlYW4ge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobm9ybWFsaXplZENhcmRTZXR0aW5ncyhhKSkgPT09IEpTT04uc3RyaW5naWZ5KG5vcm1hbGl6ZWRDYXJkU2V0dGluZ3MoYikpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVkQ2FyZFNldHRpbmdzKHNldHRpbmdzOiBLcGlDYXJkU2V0dGluZ3MpOiBLcGlDYXJkU2V0dGluZ3Mge1xuICBjb25zdCB7IGluY3JlYXNlSXMsIHRhcmdldCwgc3BhcmtsaW5lIH0gPSBzZXR0aW5ncztcblxuICByZXR1cm4ge1xuICAgIGluY3JlYXNlSXM6IGluY3JlYXNlSXMgPT09IFJlcG9ydENoYW5nZVBvbGFyaXR5Lkdvb2QgPyBudWxsIDogKGluY3JlYXNlSXMgPz8gbnVsbCksXG4gICAgdGFyZ2V0OiB0YXJnZXQgPyB7IHZhbHVlOiB0YXJnZXQudmFsdWUsIGxhYmVsOiB0YXJnZXQubGFiZWwgfHwgbnVsbCB9IDogbnVsbCxcbiAgICBzcGFya2xpbmU6IHNwYXJrbGluZVxuICAgICAgPyB7XG4gICAgICAgIGdyYW51bGFyaXR5OiBzcGFya2xpbmUuZ3JhbnVsYXJpdHkgPz8gS1BJX1NQQVJLTElORV9ERUZBVUxUX0dSQU5VTEFSSVRZLFxuICAgICAgICBwZXJpb2RzOiBzcGFya2xpbmUucGVyaW9kcyA/PyBLUElfU1BBUktMSU5FX0RFRkFVTFRfUEVSSU9EUyxcbiAgICAgIH1cbiAgICAgIDogbnVsbCxcbiAgfTtcbn1cbiJdfQ==
@@ -1,5 +1,15 @@
1
1
  // Default content padding around a component's body, inches (1/8").
2
2
  export const DEFAULT_COMPONENT_PADDING = 0.125;
3
+ // A component's content padding as a CSS padding: each edge in inches (a CSS
4
+ // inch is 96px, the canvas's own), DEFAULT_COMPONENT_PADDING unless set. The
5
+ // canvas pads a component's body with it, and the export measure
6
+ // (ReportTextLayoutService) its offscreen copy of a text block, so the two
7
+ // boxes are one.
8
+ export function componentPaddingCss(component) {
9
+ const padding = component.config?.padding;
10
+ const edge = (value) => `${value ?? DEFAULT_COMPONENT_PADDING}in`;
11
+ return `${edge(padding?.top)} ${edge(padding?.right)} ${edge(padding?.bottom)} ${edge(padding?.left)}`;
12
+ }
3
13
  // Default report heading size, points (1/72"). Applies to component titles.
4
14
  export const DEFAULT_HEADING_SIZE = 16;
5
15
  // Bounds for a page dimension, in inches. Mirrors ReportModel::PAGE_DIMENSION_MIN
@@ -13,4 +23,4 @@ export const PAGE_DIMENSION_MAX = 50;
13
23
  // The deepest a header or footer band may be, in inches. Mirrors
14
24
  // ReportHeaderFooter::MAX_HEIGHT on the server, which clamps.
15
25
  export const HEADER_FOOTER_MAX = 3;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2xheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvRUFBb0U7QUFDcEUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxDQUFDO0FBRS9DLDRFQUE0RTtBQUM1RSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFFdkMsa0ZBQWtGO0FBQ2xGLGlGQUFpRjtBQUNqRixrRkFBa0Y7QUFDbEYsaUZBQWlGO0FBQ2pGLGtGQUFrRjtBQUNsRixzQkFBc0I7QUFDdEIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztBQUVyQyxpRUFBaUU7QUFDakUsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlZmF1bHQgY29udGVudCBwYWRkaW5nIGFyb3VuZCBhIGNvbXBvbmVudCdzIGJvZHksIGluY2hlcyAoMS84XCIpLlxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09NUE9ORU5UX1BBRERJTkcgPSAwLjEyNTtcblxuLy8gRGVmYXVsdCByZXBvcnQgaGVhZGluZyBzaXplLCBwb2ludHMgKDEvNzJcIikuIEFwcGxpZXMgdG8gY29tcG9uZW50IHRpdGxlcy5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFQURJTkdfU0laRSA9IDE2O1xuXG4vLyBCb3VuZHMgZm9yIGEgcGFnZSBkaW1lbnNpb24sIGluIGluY2hlcy4gTWlycm9ycyBSZXBvcnRNb2RlbDo6UEFHRV9ESU1FTlNJT05fTUlOXG4vLyAvIE1BWCBvbiB0aGUgc2VydmVyLCB3aGljaCBpcyB0aGUgZW5mb3JjaW5nIHNpZGUg4oCUIHRoZXNlIGRyaXZlIHRoZSBmaWVsZC1sZXZlbFxuLy8gbWVzc2FnZSBzbyB0aGUgb3BlcmF0b3Igc2VlcyB0aGUgbGltaXQgYmVmb3JlIHN1Ym1pdHRpbmcuIFRoZSBjZWlsaW5nIGlzIHNldCBieVxuLy8gUG93ZXJQb2ludCwgbm90IGJ5IHRoZSBjYW52YXM6IEVDTUEtMzc2IGNhcHMgYSBzbGlkZSBhdCA1NiBpbmNoZXMsIGFuZCBhIC5wcHR4XG4vLyBvdmVyIHRoYXQgaXMgcmVmdXNlZCBvbiBvcGVuLCBzbyBhIHBhZ2UgaXMgbm90IGFsbG93ZWQgdG8gYmUgc2l6ZWQgcGFzdCB3aGF0IGl0XG4vLyBjYW4gYmUgZXhwb3J0ZWQgYXMuXG5leHBvcnQgY29uc3QgUEFHRV9ESU1FTlNJT05fTUlOID0gMTtcbmV4cG9ydCBjb25zdCBQQUdFX0RJTUVOU0lPTl9NQVggPSA1MDtcblxuLy8gVGhlIGRlZXBlc3QgYSBoZWFkZXIgb3IgZm9vdGVyIGJhbmQgbWF5IGJlLCBpbiBpbmNoZXMuIE1pcnJvcnNcbi8vIFJlcG9ydEhlYWRlckZvb3Rlcjo6TUFYX0hFSUdIVCBvbiB0aGUgc2VydmVyLCB3aGljaCBjbGFtcHMuXG5leHBvcnQgY29uc3QgSEVBREVSX0ZPT1RFUl9NQVggPSAzO1xuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2xheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxvRUFBb0U7QUFDcEUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxDQUFDO0FBRS9DLDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UsaUVBQWlFO0FBQ2pFLDJFQUEyRTtBQUMzRSxpQkFBaUI7QUFDakIsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFNBQTBCO0lBQzVELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO0lBQzFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBeUIsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUkseUJBQXlCLElBQUksQ0FBQztJQUV0RixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ3pHLENBQUM7QUFFRCw0RUFBNEU7QUFDNUUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBRXZDLGtGQUFrRjtBQUNsRixpRkFBaUY7QUFDakYsa0ZBQWtGO0FBQ2xGLGlGQUFpRjtBQUNqRixrRkFBa0Y7QUFDbEYsc0JBQXNCO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUNwQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFFckMsaUVBQWlFO0FBQ2pFLDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXBvcnRDb21wb25lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LmludGVyZmFjZSc7XG5cblxuLy8gRGVmYXVsdCBjb250ZW50IHBhZGRpbmcgYXJvdW5kIGEgY29tcG9uZW50J3MgYm9keSwgaW5jaGVzICgxLzhcIikuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT01QT05FTlRfUEFERElORyA9IDAuMTI1O1xuXG4vLyBBIGNvbXBvbmVudCdzIGNvbnRlbnQgcGFkZGluZyBhcyBhIENTUyBwYWRkaW5nOiBlYWNoIGVkZ2UgaW4gaW5jaGVzIChhIENTU1xuLy8gaW5jaCBpcyA5NnB4LCB0aGUgY2FudmFzJ3Mgb3duKSwgREVGQVVMVF9DT01QT05FTlRfUEFERElORyB1bmxlc3Mgc2V0LiBUaGVcbi8vIGNhbnZhcyBwYWRzIGEgY29tcG9uZW50J3MgYm9keSB3aXRoIGl0LCBhbmQgdGhlIGV4cG9ydCBtZWFzdXJlXG4vLyAoUmVwb3J0VGV4dExheW91dFNlcnZpY2UpIGl0cyBvZmZzY3JlZW4gY29weSBvZiBhIHRleHQgYmxvY2ssIHNvIHRoZSB0d29cbi8vIGJveGVzIGFyZSBvbmUuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9uZW50UGFkZGluZ0Nzcyhjb21wb25lbnQ6IFJlcG9ydENvbXBvbmVudCk6IHN0cmluZyB7XG4gIGNvbnN0IHBhZGRpbmcgPSBjb21wb25lbnQuY29uZmlnPy5wYWRkaW5nO1xuICBjb25zdCBlZGdlID0gKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpID0+IGAke3ZhbHVlID8/IERFRkFVTFRfQ09NUE9ORU5UX1BBRERJTkd9aW5gO1xuXG4gIHJldHVybiBgJHtlZGdlKHBhZGRpbmc/LnRvcCl9ICR7ZWRnZShwYWRkaW5nPy5yaWdodCl9ICR7ZWRnZShwYWRkaW5nPy5ib3R0b20pfSAke2VkZ2UocGFkZGluZz8ubGVmdCl9YDtcbn1cblxuLy8gRGVmYXVsdCByZXBvcnQgaGVhZGluZyBzaXplLCBwb2ludHMgKDEvNzJcIikuIEFwcGxpZXMgdG8gY29tcG9uZW50IHRpdGxlcy5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0hFQURJTkdfU0laRSA9IDE2O1xuXG4vLyBCb3VuZHMgZm9yIGEgcGFnZSBkaW1lbnNpb24sIGluIGluY2hlcy4gTWlycm9ycyBSZXBvcnRNb2RlbDo6UEFHRV9ESU1FTlNJT05fTUlOXG4vLyAvIE1BWCBvbiB0aGUgc2VydmVyLCB3aGljaCBpcyB0aGUgZW5mb3JjaW5nIHNpZGUg4oCUIHRoZXNlIGRyaXZlIHRoZSBmaWVsZC1sZXZlbFxuLy8gbWVzc2FnZSBzbyB0aGUgb3BlcmF0b3Igc2VlcyB0aGUgbGltaXQgYmVmb3JlIHN1Ym1pdHRpbmcuIFRoZSBjZWlsaW5nIGlzIHNldCBieVxuLy8gUG93ZXJQb2ludCwgbm90IGJ5IHRoZSBjYW52YXM6IEVDTUEtMzc2IGNhcHMgYSBzbGlkZSBhdCA1NiBpbmNoZXMsIGFuZCBhIC5wcHR4XG4vLyBvdmVyIHRoYXQgaXMgcmVmdXNlZCBvbiBvcGVuLCBzbyBhIHBhZ2UgaXMgbm90IGFsbG93ZWQgdG8gYmUgc2l6ZWQgcGFzdCB3aGF0IGl0XG4vLyBjYW4gYmUgZXhwb3J0ZWQgYXMuXG5leHBvcnQgY29uc3QgUEFHRV9ESU1FTlNJT05fTUlOID0gMTtcbmV4cG9ydCBjb25zdCBQQUdFX0RJTUVOU0lPTl9NQVggPSA1MDtcblxuLy8gVGhlIGRlZXBlc3QgYSBoZWFkZXIgb3IgZm9vdGVyIGJhbmQgbWF5IGJlLCBpbiBpbmNoZXMuIE1pcnJvcnNcbi8vIFJlcG9ydEhlYWRlckZvb3Rlcjo6TUFYX0hFSUdIVCBvbiB0aGUgc2VydmVyLCB3aGljaCBjbGFtcHMuXG5leHBvcnQgY29uc3QgSEVBREVSX0ZPT1RFUl9NQVggPSAzO1xuIl19