@workflow/web-shared 5.0.0-beta.7 → 5.0.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/components/error-boundary.js +1 -1
  2. package/dist/components/event-list-view.d.ts +12 -0
  3. package/dist/components/event-list-view.d.ts.map +1 -1
  4. package/dist/components/event-list-view.js +26 -13
  5. package/dist/components/hook-actions.js +1 -1
  6. package/dist/components/index.js +1 -1
  7. package/dist/components/new-trace-viewer/components/copy-button.js +2 -2
  8. package/dist/components/new-trace-viewer/components/event-list.js +2 -2
  9. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +1 -1
  10. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +1 -1
  11. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +1 -1
  12. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +1 -1
  13. package/dist/components/new-trace-viewer/components/split-pane.js +1 -1
  14. package/dist/components/new-trace-viewer/components/timeline.js +1 -1
  15. package/dist/components/new-trace-viewer/context.js +1 -1
  16. package/dist/components/new-trace-viewer/detail-panel.js +2 -2
  17. package/dist/components/new-trace-viewer/icons.js +1 -1
  18. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
  19. package/dist/components/new-trace-viewer/trace-viewer.js +45 -23
  20. package/dist/components/new-trace-viewer/types.js +1 -1
  21. package/dist/components/new-trace-viewer/util/constants.js +1 -1
  22. package/dist/components/new-trace-viewer/utils.js +1 -1
  23. package/dist/components/run-trace-view.js +1 -1
  24. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  25. package/dist/components/sidebar/attribute-panel.js +99 -73
  26. package/dist/components/sidebar/conversation-view.js +1 -1
  27. package/dist/components/sidebar/copyable-data-block.d.ts +1 -0
  28. package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
  29. package/dist/components/sidebar/copyable-data-block.js +16 -15
  30. package/dist/components/sidebar/detail-card.d.ts +5 -6
  31. package/dist/components/sidebar/detail-card.d.ts.map +1 -1
  32. package/dist/components/sidebar/detail-card.js +32 -16
  33. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  34. package/dist/components/sidebar/entity-detail-panel.js +6 -3
  35. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  36. package/dist/components/sidebar/events-list.js +21 -15
  37. package/dist/components/sidebar/resolve-hook-modal.js +1 -1
  38. package/dist/components/sidebar/sidebar-data-context.js +1 -1
  39. package/dist/components/stream-viewer.js +1 -1
  40. package/dist/components/trace-viewer/components/map.js +1 -1
  41. package/dist/components/trace-viewer/components/markers.js +1 -1
  42. package/dist/components/trace-viewer/components/node.js +1 -1
  43. package/dist/components/trace-viewer/components/search-input.js +1 -1
  44. package/dist/components/trace-viewer/components/search.js +1 -1
  45. package/dist/components/trace-viewer/components/span-content.js +1 -1
  46. package/dist/components/trace-viewer/components/span-detail-panel.js +1 -1
  47. package/dist/components/trace-viewer/components/span-segments.js +1 -1
  48. package/dist/components/trace-viewer/components/span-strategies.js +1 -1
  49. package/dist/components/trace-viewer/components/ui.js +1 -1
  50. package/dist/components/trace-viewer/components/zoom-button.js +1 -1
  51. package/dist/components/trace-viewer/components/zoom-icons.js +1 -1
  52. package/dist/components/trace-viewer/context.js +1 -1
  53. package/dist/components/trace-viewer/index.js +1 -1
  54. package/dist/components/trace-viewer/trace-viewer.js +1 -1
  55. package/dist/components/trace-viewer/types.js +1 -1
  56. package/dist/components/trace-viewer/util/constants.js +1 -1
  57. package/dist/components/trace-viewer/util/scrollbar-width.js +1 -1
  58. package/dist/components/trace-viewer/util/timing.js +1 -1
  59. package/dist/components/trace-viewer/util/tree.js +1 -1
  60. package/dist/components/trace-viewer/util/use-immediate-style.js +1 -1
  61. package/dist/components/trace-viewer/util/use-streaming-spans.js +1 -1
  62. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +1 -1
  63. package/dist/components/trace-viewer/worker.js +1 -1
  64. package/dist/components/trace-viewer-new.js +1 -1
  65. package/dist/components/ui/alert.js +1 -1
  66. package/dist/components/ui/button.d.ts +10 -0
  67. package/dist/components/ui/button.d.ts.map +1 -0
  68. package/dist/components/ui/button.js +39 -0
  69. package/dist/components/ui/card.js +1 -1
  70. package/dist/components/ui/data-inspector.d.ts +1 -0
  71. package/dist/components/ui/data-inspector.d.ts.map +1 -1
  72. package/dist/components/ui/data-inspector.js +4 -9
  73. package/dist/components/ui/decrypt-button.js +1 -1
  74. package/dist/components/ui/error-card.js +1 -1
  75. package/dist/components/ui/error-stack-block.d.ts.map +1 -1
  76. package/dist/components/ui/error-stack-block.js +4 -18
  77. package/dist/components/ui/inspector-theme.js +1 -1
  78. package/dist/components/ui/load-more-button.js +1 -1
  79. package/dist/components/ui/menu-dropdown.js +1 -1
  80. package/dist/components/ui/skeleton.js +1 -1
  81. package/dist/components/ui/spinner.js +1 -1
  82. package/dist/components/ui/timestamp-tooltip.js +1 -1
  83. package/dist/components/workflow-trace-view.js +1 -1
  84. package/dist/components/workflow-traces/event-colors.js +1 -1
  85. package/dist/components/workflow-traces/trace-colors.js +1 -1
  86. package/dist/components/workflow-traces/trace-span-construction.js +1 -1
  87. package/dist/components/workflow-traces/trace-time-utils.js +1 -1
  88. package/dist/hooks/use-dark-mode.js +1 -1
  89. package/dist/hooks/use-reduced-motion.js +1 -1
  90. package/dist/index.js +1 -1
  91. package/dist/lib/event-analysis.js +1 -1
  92. package/dist/lib/event-materialization.js +1 -1
  93. package/dist/lib/hydration.js +1 -1
  94. package/dist/lib/stream-display.js +1 -1
  95. package/dist/lib/toast.js +1 -1
  96. package/dist/lib/trace-builder.js +1 -1
  97. package/dist/lib/utils.js +1 -1
  98. package/package.json +5 -5
  99. package/src/components/event-list-view.tsx +29 -13
  100. package/src/components/new-trace-viewer/components/copy-button.tsx +1 -1
  101. package/src/components/new-trace-viewer/components/event-list.tsx +1 -1
  102. package/src/components/new-trace-viewer/detail-panel.tsx +1 -1
  103. package/src/components/new-trace-viewer/trace-viewer.tsx +83 -56
  104. package/src/components/sidebar/attribute-panel.tsx +212 -235
  105. package/src/components/sidebar/copyable-data-block.tsx +49 -27
  106. package/src/components/sidebar/detail-card.tsx +119 -41
  107. package/src/components/sidebar/entity-detail-panel.tsx +28 -28
  108. package/src/components/sidebar/events-list.tsx +51 -79
  109. package/src/components/ui/button.tsx +61 -0
  110. package/src/components/ui/data-inspector.tsx +9 -18
  111. package/src/components/ui/error-stack-block.tsx +7 -26
  112. package/dist/components/error-boundary.js.map +0 -1
  113. package/dist/components/event-list-view.js.map +0 -1
  114. package/dist/components/hook-actions.js.map +0 -1
  115. package/dist/components/index.js.map +0 -1
  116. package/dist/components/new-trace-viewer/components/copy-button.js.map +0 -1
  117. package/dist/components/new-trace-viewer/components/event-list.js.map +0 -1
  118. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js.map +0 -1
  119. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js.map +0 -1
  120. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js.map +0 -1
  121. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js.map +0 -1
  122. package/dist/components/new-trace-viewer/components/split-pane.js.map +0 -1
  123. package/dist/components/new-trace-viewer/components/timeline.js.map +0 -1
  124. package/dist/components/new-trace-viewer/context.js.map +0 -1
  125. package/dist/components/new-trace-viewer/detail-panel.js.map +0 -1
  126. package/dist/components/new-trace-viewer/icons.js.map +0 -1
  127. package/dist/components/new-trace-viewer/trace-viewer.js.map +0 -1
  128. package/dist/components/new-trace-viewer/types.js.map +0 -1
  129. package/dist/components/new-trace-viewer/util/constants.js.map +0 -1
  130. package/dist/components/new-trace-viewer/utils.js.map +0 -1
  131. package/dist/components/run-trace-view.js.map +0 -1
  132. package/dist/components/sidebar/attribute-panel.js.map +0 -1
  133. package/dist/components/sidebar/conversation-view.js.map +0 -1
  134. package/dist/components/sidebar/copyable-data-block.js.map +0 -1
  135. package/dist/components/sidebar/detail-card.js.map +0 -1
  136. package/dist/components/sidebar/entity-detail-panel.js.map +0 -1
  137. package/dist/components/sidebar/events-list.js.map +0 -1
  138. package/dist/components/sidebar/resolve-hook-modal.js.map +0 -1
  139. package/dist/components/sidebar/sidebar-data-context.js.map +0 -1
  140. package/dist/components/stream-viewer.js.map +0 -1
  141. package/dist/components/trace-viewer/components/map.js.map +0 -1
  142. package/dist/components/trace-viewer/components/markers.js.map +0 -1
  143. package/dist/components/trace-viewer/components/node.js.map +0 -1
  144. package/dist/components/trace-viewer/components/search-input.js.map +0 -1
  145. package/dist/components/trace-viewer/components/search.js.map +0 -1
  146. package/dist/components/trace-viewer/components/span-content.js.map +0 -1
  147. package/dist/components/trace-viewer/components/span-detail-panel.js.map +0 -1
  148. package/dist/components/trace-viewer/components/span-segments.js.map +0 -1
  149. package/dist/components/trace-viewer/components/span-strategies.js.map +0 -1
  150. package/dist/components/trace-viewer/components/ui.js.map +0 -1
  151. package/dist/components/trace-viewer/components/zoom-button.js.map +0 -1
  152. package/dist/components/trace-viewer/components/zoom-icons.js.map +0 -1
  153. package/dist/components/trace-viewer/context.js.map +0 -1
  154. package/dist/components/trace-viewer/index.js.map +0 -1
  155. package/dist/components/trace-viewer/trace-viewer.js.map +0 -1
  156. package/dist/components/trace-viewer/types.js.map +0 -1
  157. package/dist/components/trace-viewer/util/constants.js.map +0 -1
  158. package/dist/components/trace-viewer/util/scrollbar-width.js.map +0 -1
  159. package/dist/components/trace-viewer/util/timing.js.map +0 -1
  160. package/dist/components/trace-viewer/util/tree.js.map +0 -1
  161. package/dist/components/trace-viewer/util/use-immediate-style.js.map +0 -1
  162. package/dist/components/trace-viewer/util/use-streaming-spans.js.map +0 -1
  163. package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +0 -1
  164. package/dist/components/trace-viewer/worker.js.map +0 -1
  165. package/dist/components/trace-viewer-new.js.map +0 -1
  166. package/dist/components/ui/alert.js.map +0 -1
  167. package/dist/components/ui/card.js.map +0 -1
  168. package/dist/components/ui/data-inspector.js.map +0 -1
  169. package/dist/components/ui/decrypt-button.js.map +0 -1
  170. package/dist/components/ui/error-card.js.map +0 -1
  171. package/dist/components/ui/error-stack-block.js.map +0 -1
  172. package/dist/components/ui/inspector-theme.js.map +0 -1
  173. package/dist/components/ui/load-more-button.js.map +0 -1
  174. package/dist/components/ui/menu-dropdown.js.map +0 -1
  175. package/dist/components/ui/skeleton.js.map +0 -1
  176. package/dist/components/ui/spinner.js.map +0 -1
  177. package/dist/components/ui/timestamp-tooltip.js.map +0 -1
  178. package/dist/components/workflow-trace-view.js.map +0 -1
  179. package/dist/components/workflow-traces/event-colors.js.map +0 -1
  180. package/dist/components/workflow-traces/trace-colors.js.map +0 -1
  181. package/dist/components/workflow-traces/trace-span-construction.js.map +0 -1
  182. package/dist/components/workflow-traces/trace-time-utils.js.map +0 -1
  183. package/dist/hooks/use-dark-mode.js.map +0 -1
  184. package/dist/hooks/use-reduced-motion.js.map +0 -1
  185. package/dist/index.js.map +0 -1
  186. package/dist/lib/event-analysis.js.map +0 -1
  187. package/dist/lib/event-materialization.js.map +0 -1
  188. package/dist/lib/hydration.js.map +0 -1
  189. package/dist/lib/stream-display.js.map +0 -1
  190. package/dist/lib/toast.js.map +0 -1
  191. package/dist/lib/trace-builder.js.map +0 -1
  192. package/dist/lib/utils.js.map +0 -1
@@ -159,4 +159,4 @@ export const MiniMap = memo(function MiniMap({ timelineRef, rows, scale, }) {
159
159
  height: MAP_HEIGHT - 4,
160
160
  } })] }));
161
161
  });
162
- //# sourceMappingURL=map.js.map
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvbWFwLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLElBQUksRUFDSixTQUFTLEVBQ1QsZUFBZSxFQUNmLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxPQUFPLENBQUM7QUFDZixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sTUFBTSxNQUFNLDRCQUE0QixDQUFDO0FBRWhELE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVoRSxNQUFNLE1BQU0sR0FBRyxHQUFXLEVBQUU7SUFDMUIsSUFBSSxrQkFBa0IsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNyQyxPQUFPLFVBQVUsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUcsR0FBVyxFQUFFO0lBQzFCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsTUFBTSxRQUFRLEdBQUcsR0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0MsUUFBUSxFQUFFLENBQUM7UUFFWCxPQUFPLEdBQUcsRUFBRTtZQUNWLEtB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RSxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQzlDLEtBQUssRUFBRSxRQUFRLEdBQUcsR0FBRyxHQUNyQixFQUNGLGNBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQzFCLEdBQUcsRUFBRSxRQUFRLEVBQ2IsS0FBSyxFQUFFO29CQUNMLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUztvQkFDL0IsS0FBSyxFQUNILFVBQVUsR0FBRyxDQUFDO3dCQUNaLENBQUMsQ0FBQyxVQUFVO3dCQUNaLENBQUMsQ0FBQyxlQUFlLGdCQUFnQixHQUFHLENBQUMsS0FBSztvQkFDOUMsR0FBRyxFQUFFLENBQUM7b0JBQ04sTUFBTSxFQUFFLFVBQVUsR0FBRyxDQUFDO2lCQUN2QixHQUNELElBQ0UsQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIE11dGFibGVSZWZPYmplY3QsXG4gIG1lbW8sXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUcmFjZVZpZXdlciB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuLi90cmFjZS12aWV3ZXIubW9kdWxlLmNzcyc7XG5pbXBvcnQgdHlwZSB7IFZpc2libGVTcGFuIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgTUFQX0hFSUdIVCwgVElNRUxJTkVfUEFERElORyB9IGZyb20gJy4uL3V0aWwvY29uc3RhbnRzJztcbmltcG9ydCB7IHVzZUltbWVkaWF0ZVN0eWxlIH0gZnJvbSAnLi4vdXRpbC91c2UtaW1tZWRpYXRlLXN0eWxlJztcblxuY29uc3QgZ2V0RHBpID0gKCk6IG51bWJlciA9PiB7XG4gIGlmICgnZGV2aWNlUGl4ZWxSYXRpbycgaW4gZ2xvYmFsVGhpcykge1xuICAgIHJldHVybiBnbG9iYWxUaGlzLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbiAgfVxuICByZXR1cm4gMTtcbn07XG5cbmNvbnN0IHVzZURwaSA9ICgpOiBudW1iZXIgPT4ge1xuICBjb25zdCBbZHBpLCBzZXREcGldID0gdXNlU3RhdGUoMSk7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSAoKTogdm9pZCA9PiBzZXREcGkoZ2V0RHBpKCkpO1xuICAgIGNvbnN0IG1lZGlhID0gbWF0Y2hNZWRpYShgKHJlc29sdXRpb246ICR7ZHBpfWRwcHgpYCk7XG4gICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgb25DaGFuZ2UpO1xuICAgIG9uQ2hhbmdlKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbWVkaWEucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgb25DaGFuZ2UpO1xuICAgIH07XG4gIH0sIFtkcGldKTtcbiAgcmV0dXJuIGRwaTtcbn07XG5cbmNvbnN0IHBhZGRpbmcgPSBUSU1FTElORV9QQURESU5HO1xuXG5leHBvcnQgY29uc3QgTWluaU1hcCA9IG1lbW8oZnVuY3Rpb24gTWluaU1hcCh7XG4gIHRpbWVsaW5lUmVmLFxuICByb3dzLFxuICBzY2FsZSxcbn06IHtcbiAgdGltZWxpbmVSZWY6IE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgcm93czogVmlzaWJsZVNwYW5bXVtdO1xuICBzY2FsZTogbnVtYmVyO1xufSkge1xuICBjb25zdCB7XG4gICAgc3RhdGU6IHsgcm9vdCwgYmFzZVNjYWxlLCB0aW1lbGluZVdpZHRoLCB3aWR0aDogZnVsbFdpZHRoLCBzY3JvbGxiYXJXaWR0aCB9LFxuICB9ID0gdXNlVHJhY2VWaWV3ZXIoKTtcbiAgY29uc3QgbWFwV2lkdGggPSBmdWxsV2lkdGggKyBUSU1FTElORV9QQURESU5HICogMjtcbiAgY29uc3QgZHBpID0gdXNlRHBpKCk7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGNhbnZhc1JlZiA9IHVzZVJlZjxIVE1MQ2FudmFzRWxlbWVudD4obnVsbCk7XG5cbiAgY29uc3QgdGh1bWJSYXRpbyA9XG4gICAgKGZ1bGxXaWR0aCAvIChmdWxsV2lkdGggLSBzY3JvbGxiYXJXaWR0aCkpICpcbiAgICBNYXRoLm1pbihmdWxsV2lkdGggLyB0aW1lbGluZVdpZHRoLCBiYXNlU2NhbGUgLyBzY2FsZSk7XG4gIGNvbnN0IHRodW1iV2lkdGggPSBNYXRoLm1pbihcbiAgICBmdWxsV2lkdGgsXG4gICAgKHRpbWVsaW5lV2lkdGggLSBzY3JvbGxiYXJXaWR0aCkgKiB0aHVtYlJhdGlvXG4gICk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGlzSGVsZCA9IGZhbHNlO1xuICAgIGxldCBjbGllbnRYID0gMDtcbiAgICBsZXQgcmVjdDogRE9NUmVjdCB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGlzVmFsaWRFdmVudFRhcmdldCA9ICh0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCk6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuIEJvb2xlYW4oY29udGFpbmVyUmVmLmN1cnJlbnQ/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkpO1xuICAgIH07XG5cbiAgICBsZXQgbmV4dEZyYW1lID0gMDtcbiAgICBjb25zdCBvbkZyYW1lID0gKCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCFpc0hlbGQgfHwgIXJlY3QpIHJldHVybjtcbiAgICAgIGNvbnN0ICR0aW1lbGluZSA9IHRpbWVsaW5lUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoISR0aW1lbGluZSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCB4ID0gY2xpZW50WCAtIHRodW1iV2lkdGggKiAwLjUgLSByZWN0LmxlZnQ7XG4gICAgICAkdGltZWxpbmUuc2Nyb2xsTGVmdCA9IHggLyB0aHVtYlJhdGlvO1xuICAgIH07XG5cbiAgICBjb25zdCBvblBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICh7IGNsaWVudFggfSA9IGV2ZW50KTtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKG5leHRGcmFtZSk7XG4gICAgICBuZXh0RnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uUG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCFpc1ZhbGlkRXZlbnRUYXJnZXQoZXZlbnQudGFyZ2V0KSkgcmV0dXJuO1xuICAgICAgaXNIZWxkID0gdHJ1ZTtcbiAgICAgIHJlY3QgPSBjb250YWluZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBvblBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25Qb2ludGVyVXAgPSAoKTogdm9pZCA9PiB7XG4gICAgICBpc0hlbGQgPSBmYWxzZTtcbiAgICAgIHJlY3QgPSB1bmRlZmluZWQ7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uVG91Y2hTdGFydCA9IChldmVudDogVG91Y2hFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCFpc1ZhbGlkRXZlbnRUYXJnZXQoZXZlbnQudGFyZ2V0KSkgcmV0dXJuO1xuICAgICAgaWYgKGV2ZW50LmNhbmNlbGFibGUpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uVG91Y2hNb3ZlID0gKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBpZiAoIWlzSGVsZCkgcmV0dXJuO1xuICAgICAgaWYgKGV2ZW50LmNhbmNlbGFibGUpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgb25Qb2ludGVyRG93bik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgb25Qb2ludGVyTW92ZSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIG9uUG9pbnRlclVwKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uUG9pbnRlclVwKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIG9uVG91Y2hTdGFydCwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgb25Qb2ludGVyRG93bik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBvblBvaW50ZXJNb3ZlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBvblBvaW50ZXJVcCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uUG9pbnRlclVwKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0KTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBvblRvdWNoTW92ZSk7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShuZXh0RnJhbWUpO1xuICAgIH07XG4gIH0sIFt0aW1lbGluZVJlZiwgdGh1bWJSYXRpbywgdGh1bWJXaWR0aF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY2FudmFzID0gY2FudmFzUmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgY3R4ID0gY2FudmFzPy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGlmICghY2FudmFzIHx8ICFjdHgpIHJldHVybjtcblxuICAgIGNvbnN0IHJlbmRlciA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGN0eC5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgY3R4LnNjYWxlKGRwaSwgZHBpKTtcblxuICAgICAgY29uc3QgZ2FwID0gMTtcbiAgICAgIGNvbnN0IGhlaWdodCA9IDM7XG4gICAgICBjb25zdCByYXRpbyA9IChtYXBXaWR0aCAtIHBhZGRpbmcgKiAyKSAvIHJvb3QuZHVyYXRpb247XG5cbiAgICAgIC8vIFRPRE86IGZpbGwgc3BhbnMgYmFzZWQgb24gZGVwdGhcbiAgICAgIGN0eC5maWxsU3R5bGUgPSAnI2NjYyc7XG4gICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc3BhbiBvZiByb3cpIHtcbiAgICAgICAgICBjb25zdCB5ID0gcGFkZGluZyAtIGdhcCArIChnYXAgKyBoZWlnaHQpICogc3Bhbi5yb3c7XG4gICAgICAgICAgaWYgKHkgPj0gTUFQX0hFSUdIVCAtIGhlaWdodCAtIHBhZGRpbmcpIGJyZWFrO1xuXG4gICAgICAgICAgY29uc3QgeCA9IHBhZGRpbmcgKyAoc3Bhbi5zdGFydFRpbWUgLSByb290LnN0YXJ0VGltZSkgKiByYXRpbztcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IHNwYW4uZHVyYXRpb24gKiByYXRpbztcblxuICAgICAgICAgIGN0eC5yb3VuZFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCwgaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY3R4LmZpbGwoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgbmV4dEZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlcik7XG5cbiAgICByZXR1cm4gKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUobmV4dEZyYW1lKTtcbiAgfSwgW2RwaSwgcm9vdCwgbWFwV2lkdGgsIHJvd3NdKTtcblxuICBjb25zdCB0aHVtYlJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHsgc3R5bGU6IHRodW1iU3R5bGUsIHNldFN0eWxlOiBzZXRUaHVtYlN0eWxlIH0gPVxuICAgIHVzZUltbWVkaWF0ZVN0eWxlKHRodW1iUmVmKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCAkdGltZWxpbmUgPSB0aW1lbGluZVJlZi5jdXJyZW50O1xuICAgIGlmICghJHRpbWVsaW5lKSByZXR1cm47XG5cbiAgICBsZXQgbmV4dEZyYW1lID0gMDtcbiAgICBjb25zdCBvbkZyYW1lID0gKCk6IHZvaWQgPT4ge1xuICAgICAgc2V0VGh1bWJTdHlsZShcbiAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgIGB0cmFuc2xhdGVYKCR7cGFkZGluZyArICR0aW1lbGluZS5zY3JvbGxMZWZ0ICogdGh1bWJSYXRpb31weClgXG4gICAgICApO1xuICAgIH07XG4gICAgb25GcmFtZSgpO1xuXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShuZXh0RnJhbWUpO1xuICAgICAgbmV4dEZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpO1xuICAgIH07XG4gICAgJHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShuZXh0RnJhbWUpO1xuICAgICAgJHRpbWVsaW5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKTtcbiAgICB9O1xuICB9LCBbdGltZWxpbmVSZWYsIHRodW1iUmF0aW8sIHNldFRodW1iU3R5bGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm1hcENvbnRhaW5lcn1cbiAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgd2lkdGg6IHRodW1iV2lkdGggPiAwID8gbWFwV2lkdGggOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogTUFQX0hFSUdIVCxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGNhbnZhc1xuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5tYXBDYW52YXN9XG4gICAgICAgIGhlaWdodD17TUFQX0hFSUdIVCAqIGRwaX1cbiAgICAgICAgcmVmPXtjYW52YXNSZWZ9XG4gICAgICAgIHN0eWxlPXt7IHdpZHRoOiBtYXBXaWR0aCwgaGVpZ2h0OiBNQVBfSEVJR0hUIH19XG4gICAgICAgIHdpZHRoPXttYXBXaWR0aCAqIGRwaX1cbiAgICAgIC8+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm1hcFRodW1ifVxuICAgICAgICByZWY9e3RodW1iUmVmfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHRyYW5zZm9ybTogdGh1bWJTdHlsZS50cmFuc2Zvcm0sXG4gICAgICAgICAgd2lkdGg6XG4gICAgICAgICAgICB0aHVtYldpZHRoID4gMFxuICAgICAgICAgICAgICA/IHRodW1iV2lkdGhcbiAgICAgICAgICAgICAgOiBgY2FsYygxMDAlIC0gJHtUSU1FTElORV9QQURESU5HICogMn1weClgLFxuICAgICAgICAgIHRvcDogMixcbiAgICAgICAgICBoZWlnaHQ6IE1BUF9IRUlHSFQgLSA0LFxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuIl19
@@ -413,4 +413,4 @@ export function CursorMarker({ memoCacheRef, timelineRef, root, spans, events, s
413
413
  });
414
414
  return (_jsxs(_Fragment, { children: [_jsx("div", { className: styles.cursorMarkerStickyParent, children: _jsx("div", { className: styles.cursorMarkerLabelContainer, ref: labelRef, style: labelStyle, children: _jsx("div", { className: styles.cursorMarkerLabel, ref: labelTextRef }) }) }), _jsx("div", { className: styles.cursorMarkerStickyParent, children: _jsx("div", { className: styles.cursorMarkerContainer, ref: ref, style: style, children: _jsx("div", { className: styles.cursorMarker, children: _jsx("div", { className: styles.cursorSelection, ref: selectionRef, style: selectionStyle }) }) }) })] }));
415
415
  }
416
- //# sourceMappingURL=markers.js.map
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RyYWNlLXZpZXdlci9jb21wb25lbnRzL21hcmtlcnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDN0QsT0FBTyxFQUEwQixjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEUsT0FBTyxNQUFNLE1BQU0sNEJBQTRCLENBQUM7QUFRaEQsT0FBTyxFQUNMLGFBQWEsRUFDYixVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RDs7O0dBR0c7QUFDSCxTQUFTLFVBQVUsQ0FBQyxHQUFXO0lBQzdCLElBQUksR0FBRyxJQUFJLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxQyxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDO0lBQ3hCLE1BQU0sVUFBVSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFFN0IsSUFBSSxVQUFVLElBQUksR0FBRztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ2xDLElBQUksVUFBVSxJQUFJ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QUFDLE9BQU8sR0FBRyxRQUFRLENBQUM7UUFDckMsQ0FBQztRQUVELFFBQVEsQ0FBQztZQUNQLElBQUksRUFBRSxlQUFlO1lBQ3JCLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRTtZQUNqQixPQUFPO1lBQ1AsT0FBTztTQUNSLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUNMLDhCQUNFLGNBQUssU0FBUyxFQUFFLE1BQU0sQ0FBQyx3QkFBd0IsWUFDN0MsY0FDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLDBCQUEwQixFQUM1QyxHQUFHLEVBQUUsUUFBUSxFQUNiLEtBQUssRUFBRSxVQUFVLFlBRWpCLGNBQUssU0FBUyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsWUFBWSxHQUFJLEdBQzNELEdBQ0YsRUFDTixjQUFLLFNBQVMsRUFBRSxNQUFNLENBQUMsd0JBQXdCLFlBQzdDLGNBQUssU0FBUyxFQUFFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLFlBQ2xFLGNBQUssU0FBUyxFQUFFLE1BQU0sQ0FBQyxZQUFZLFlBQ2pDLGNBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQ2pDLEdBQUcsRUFBRSxZQUFZLEVBQ2pCLEtBQUssRUFBRSxjQUFjLEdBQ3JCLEdBQ0UsR0FDRixHQUNGLElBQ0wsQ0FDSixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgY2xzeCB9IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHR5cGUge1xuICBDU1NQcm9wZXJ0aWVzLFxuICBEaXNwYXRjaCxcbiAgTXV0YWJsZVJlZk9iamVjdCxcbiAgUmVhY3ROb2RlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB0eXBlIFRyYWNlVmlld2VyQWN0aW9uLCB1c2VUcmFjZVZpZXdlciB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuLi90cmFjZS12aWV3ZXIubW9kdWxlLmNzcyc7XG5pbXBvcnQgdHlwZSB7XG4gIE1lbW9DYWNoZSxcbiAgUm9vdE5vZGUsXG4gIFNjcm9sbFNuYXBzaG90LFxuICBWaXNpYmxlU3BhbixcbiAgVmlzaWJsZVNwYW5FdmVudCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgTUFSS0VSX0hFSUdIVCxcbiAgUk9XX0hFSUdIVCxcbiAgUk9XX1BBRERJTkcsXG4gIFRJTUVMSU5FX1BBRERJTkcsXG59IGZyb20gJy4uL3V0aWwvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGZvcm1hdER1cmF0aW9uRm9yVGltZWxpbmUsXG4gIGZvcm1hdFRpbWVTZWxlY3Rpb24sXG4gIGZvcm1hdFdhbGxDbG9ja1RpbWUsXG59IGZyb20gJy4uL3V0aWwvdGltaW5nJztcbmltcG9ydCB7IHVzZUltbWVkaWF0ZVN0eWxlIH0gZnJvbSAnLi4vdXRpbC91c2UtaW1tZWRpYXRlLXN0eWxlJztcbmltcG9ydCB7IHVzZVRyYWNrcGFkWm9vbSB9IGZyb20gJy4uL3V0aWwvdXNlLXRyYWNrcGFkLXpvb20nO1xuXG4vKipcbiAqIFNuYXAgYSByYXcgZHVyYXRpb24gdG8gdGhlIG5lYXJlc3QgXCJuaWNlXCIgbnVtYmVyIGluIHRoZSAxLTItNSDDlyAxMF5uXG4gKiBzZXF1ZW5jZSAoZS5nLiDigKYsIDAuNSwgMSwgMiwgNSwgMTAsIDIwLCA1MCwgMTAwLCDigKYpLlxuICovXG5mdW5jdGlvbiBzbmFwVG9OaWNlKHJhdzogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKHJhdyA8PSAwKSByZXR1cm4gMTtcbiAgY29uc3QgbG9nMTAgPSBNYXRoLmZsb29yKE1hdGgubG9nMTAocmF3KSk7XG4gIGNvbnN0IHBvdyA9IDEwICoqIGxvZzEwO1xuICBjb25zdCBub3JtYWxpemVkID0gcmF3IC8gcG93O1xuXG4gIGlmIChub3JtYWxpemVkIDw9IDEuNSkgcmV0dXJuIHBvdztcbiAgaWYgKG5vcm1hbGl6ZWQgPD0gMy41KSByZXR1cm4gMiAqIHBvdztcbiAgaWYgKG5vcm1hbGl6ZWQgPD0gNy41KSByZXR1cm4gNSAqIHBvdztcbiAgcmV0dXJuIDEwICogcG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTWFya2Vycyh7XG4gIHNjYWxlLFxuICBpc0xpdmUgPSBmYWxzZSxcbn06IHtcbiAgc2NhbGU6IG51bWJlcjtcbiAgaXNMaXZlPzogYm9vbGVhbjtcbn0pOiBSZWFjdE5vZGUge1xuICBjb25zdCB7XG4gICAgc3RhdGU6IHsgcm9vdCB9LFxuICB9ID0gdXNlVHJhY2VWaWV3ZXIoKTtcbiAgLy8gRm9yY2UgYSByZS1yZW5kZXIgZXZlcnkgc2Vjb25kIHdoZW4gbGl2ZSB0byBwaWNrIHVwIG5ldyB0aWNrIG1hcmtzLlxuICAvLyBUaGUgbWFya2VycyBjb250YWluZXIgd2lkdGggaXMgZ3Jvd24gYXQgNjBmcHMgYnkgdXNlTGl2ZVRpY2s7XG4gIC8vIHRoaXMgaW50ZXJ2YWwgb25seSBlbnN1cmVzIHRoZSBtYXJrZXIgKmxhYmVscyogc3RheSBjdXJyZW50LlxuICBjb25zdCBbLCBmb3JjZU1hcmtlclVwZGF0ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzTGl2ZSkgcmV0dXJuO1xuICAgIGNvbnN0IGlkID0gc2V0SW50ZXJ2YWwoKCkgPT4gZm9yY2VNYXJrZXJVcGRhdGUoKHYpID0+IHYgKyAxKSwgMTAwMCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaWQpO1xuICB9LCBbaXNMaXZlXSk7XG5cbiAgY29uc3QgZnVsbER1cmF0aW9uID0gcm9vdC5kdXJhdGlvbjtcblxuICAvLyBDYWxjdWxhdGUgYSBtYXJrZXIgaW50ZXJ2YWwgdGhhdCBnaXZlcyByZWFzb25hYmxlIHNwYWNpbmcgYXQgYW55IHpvb20gbGV2ZWwuXG4gIC8vIFdlIHRhcmdldCB+NTBweCBwZXIgbm90Y2ggbWFyazsgbGFiZWxzIGFwcGVhciBvbiBldmVyeSBOdGggbm90Y2ggdmlhIGxhYmVsU3BhY2luZy5cbiAgLy8gV2hlbiBzY2FsZSBpcyA8PSAwIChlLmcuIHRoZSBpbml0aWFsIC0xIHNlbnRpbmVsKSwgZmFsbCBiYWNrIHRvIGEgc2FmZSBkZWZhdWx0XG4gIC8vIHRvIGF2b2lkIGdlbmVyYXRpbmcgYW4gYWJzdXJkIG51bWJlciBvZiBtYXJrZXJzLlxuICBjb25zdCBlZmZlY3RpdmVTY2FsZSA9XG4gICAgc2NhbGUgPiAwID8gc2NhbGUgOiBmdWxsRHVyYXRpb24gPiAwID8gMSAvIGZ1bGxEdXJhdGlvbiA6IDE7XG4gIGNvbnN0IHRhcmdldE5vdGNoUHggPSA1MDtcbiAgbGV0IG1hcmtlckR1cmF0aW9uID0gc25hcFRvTmljZSh0YXJnZXROb3RjaFB4IC8gZWZmZWN0aXZlU2NhbGUpO1xuICBtYXJrZXJEdXJhdGlvbiA9IE1hdGgubWF4KDEsIG1hcmtlckR1cmF0aW9uKTtcbiAgbGV0IG1hcmtlcldpZHRoID0gbWFya2VyRHVyYXRpb24gKiBlZmZlY3RpdmVTY2FsZTtcblxuICAvLyBDYXAgbWFya2VyIGNvdW50IHRvIGF2b2lkIGNyZWF0aW5nIHRvbyBtYW55IERPTSBlbGVtZW50cyBhdCBleHRyZW1lIHpvb21cbiAgLy8gb24gdmVyeSBsb25nIHRyYWNlcy4gIE9ubHkgdGhlIHZpc2libGUgcG9ydGlvbiBpcyBzaG93biBvbiBzY3JlZW4gYW55d2F5LlxuICBjb25zdCBNQVhfTUFSS0VSUyA9IDEwMDA7XG4gIGlmIChmdWxsRHVyYXRpb24gLyBtYXJrZXJEdXJhdGlvbiA+IE1BWF9NQVJLRVJTKSB7XG4gICAgbWFya2VyRHVyYXRpb24gPSBzbmFwVG9OaWNlKGZ1bGxEdXJhdGlvbiAvIE1BWF9NQVJLRVJTKTtcbiAgICBtYXJrZXJXaWR0aCA9IG1hcmtlckR1cmF0aW9uICogZWZmZWN0aXZlU2NhbGU7XG4gIH1cbiAgY29uc3QgbWFya2VyQ291bnQgPSBNYXRoLmNlaWwoZnVsbER1cmF0aW9uIC8gbWFya2VyRHVyYXRpb24pO1xuXG4gIC8vIEhvdyBvZnRlbiBsYWJlbHMgc2hvdWxkIGFwcGVhciBmb3IgbWFya2VycywgZS5nLiAzID09PSBvbmUgbGFiZWwgZm9yIGV2ZXJ5IHRoaXJkIG1hcmtlclxuICBjb25zdCBsYWJlbFNwYWNpbmcgPSBNYXRoLmNlaWwoMTAwIC8gbWFya2VyV2lkdGgpIHx8IDE7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm1hcmtlcnNDb250YWluZXJ9PlxuICAgICAgPGRpdlxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5tYXJrZXJzfVxuICAgICAgICBzdHlsZT17XG4gICAgICAgICAge1xuICAgICAgICAgICAgd2lkdGg6IE1hdGguZmxvb3Iocm9vdC5kdXJhdGlvbiAqIHNjYWxlICsgMTUpLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogc2NhbGUgIT09IC0xID8gJ3Zpc2libGUnIDogJ2hpZGRlbicsXG4gICAgICAgICAgICAnLS1tYXJrZXItd2lkdGgnOiBgJHttYXJrZXJXaWR0aH1weGAsXG4gICAgICAgICAgfSBhcyBDU1NQcm9wZXJ0aWVzXG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAge25ldyBBcnJheShtYXJrZXJDb3VudCkuZmlsbChudWxsKS5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgICBjb25zdCBoYXNMYWJlbCA9IGkgJSBsYWJlbFNwYWNpbmcgPT09IDA7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChzdHlsZXMubWFya2VyLCAhaGFzTGFiZWwgJiYgc3R5bGVzLm5vdGNoKX1cbiAgICAgICAgICAgICAga2V5PXtTdHJpbmcoaSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtoYXNMYWJlbCA/IChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5tYXJrZXJMYWJlbH0+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0RHVyYXRpb25Gb3JUaW1lbGluZShtYXJrZXJEdXJhdGlvbiAqIGkpfVxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMubWFya2VyQ2xvY2tUaW1lfT5cbiAgICAgICAgICAgICAgICAgICAge2Zvcm1hdFdhbGxDbG9ja1RpbWUocm9vdC5zdGFydFRpbWUgKyBtYXJrZXJEdXJhdGlvbiAqIGkpfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV2ZW50TWFya2Vycyh7XG4gIGV2ZW50cyxcbiAgcm9vdCxcbiAgc2NhbGUsXG59OiB7XG4gIGV2ZW50czogVmlzaWJsZVNwYW5FdmVudFtdO1xuICByb290OiBSb290Tm9kZTtcbiAgc2NhbGU6IG51bWJlcjtcbn0pOiBSZWFjdE5vZGUge1xuICAvLyBGaWx0ZXIgb3V0IGV2ZW50cyB0aGF0IHNob3VsZCBub3Qgc2hvdyB2ZXJ0aWNhbCBsaW5lcyAod29ya2Zsb3ctc3BlY2lmaWMgZmVhdHVyZSlcbiAgY29uc3QgZXZlbnRzV2l0aFZlcnRpY2FsTGluZXMgPSB1c2VNZW1vKFxuICAgICgpID0+IGV2ZW50cy5maWx0ZXIoKHgpID0+IHguZXZlbnQuc2hvd1ZlcnRpY2FsTGluZSAhPT0gZmFsc2UpLFxuICAgIFtldmVudHNdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmV2ZW50TWFya2Vyc0NvbnRhaW5lcn0+XG4gICAgICA8ZGl2XG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmV2ZW50TWFya2Vyc31cbiAgICAgICAgc3R5bGU9e1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdpZHRoOiBNYXRoLmZsb29yKHJvb3QuZHVyYXRpb24gKiBzY2FsZSksXG4gICAgICAgICAgfSBhcyBDU1NQcm9wZXJ0aWVzXG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAge2V2ZW50c1dpdGhWZXJ0aWNhbExpbmVzLm1hcCgoeCkgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goc3R5bGVzLmV2ZW50TWFya2VyKX1cbiAgICAgICAgICAgICAga2V5PXt4LmtleX1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBsZWZ0OiBNYXRoLmZsb29yKCh4LnRpbWVzdGFtcCAtIHJvb3Quc3RhcnRUaW1lKSAqIHNjYWxlKSxcbiAgICAgICAgICAgICAgICAuLi4oeC5ldmVudC5jb2xvciAmJiB7IGJvcmRlckxlZnRDb2xvcjogeC5ldmVudC5jb2xvciB9KSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3QgSE9WRVJfT1ZFUlNDQU4gPSAyO1xuXG5pbnRlcmZhY2UgVHJhY2twYWRab29tIHtcbiAgYW5jaG9yWDogbnVtYmVyO1xuICBhbmNob3JUOiBudW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDdXJzb3JNYXJrZXIoe1xuICBtZW1vQ2FjaGVSZWYsXG4gIHRpbWVsaW5lUmVmLFxuICByb290LFxuICBzcGFucyxcbiAgZXZlbnRzLFxuICBzY2FsZSxcbiAgZGlzcGF0Y2gsXG4gIHNjcm9sbFNuYXBzaG90UmVmLFxufToge1xuICBtZW1vQ2FjaGVSZWY6IE11dGFibGVSZWZPYmplY3Q8TWVtb0NhY2hlPjtcbiAgdGltZWxpbmVSZWY6IE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgcm9vdDogUm9vdE5vZGU7XG4gIHNwYW5zOiBWaXNpYmxlU3BhbltdO1xuICBldmVudHM6IFZpc2libGVTcGFuRXZlbnRbXTtcbiAgc2NhbGU6IG51bWJlcjtcbiAgZGlzcGF0Y2g6IERpc3BhdGNoPFRyYWNlVmlld2VyQWN0aW9uPjtcbiAgc2Nyb2xsU25hcHNob3RSZWY6IE11dGFibGVSZWZPYmplY3Q8U2Nyb2xsU25hcHNob3QgfCB1bmRlZmluZWQ+O1xufSk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IGhhc0VudGVyZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBzcGFuc1JlZiA9IHVzZVJlZihzcGFucyk7XG4gIHNwYW5zUmVmLmN1cnJlbnQgPSBzcGFucztcbiAgY29uc3QgZXZlbnRzUmVmID0gdXNlUmVmKGV2ZW50cyk7XG4gIGV2ZW50c1JlZi5jdXJyZW50ID0gZXZlbnRzO1xuICBjb25zdCBsYWJlbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHsgc3R5bGU6IGxhYmVsU3R5bGUsIHNldFN0eWxlOiBzZXRMYWJlbFN0eWxlIH0gPVxuICAgIHVzZUltbWVkaWF0ZVN0eWxlKGxhYmVsUmVmKTtcbiAgY29uc3QgbGFiZWxUZXh0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCB7IHN0eWxlLCBzZXRTdHlsZSB9ID0gdXNlSW1tZWRpYXRlU3R5bGUocmVmKTtcbiAgY29uc3QgcmVjdFJlZiA9IHVzZVJlZjxET01SZWN0Pih1bmRlZmluZWQpO1xuXG4gIGNvbnN0IHNlbGVjdGlvblJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHsgc3R5bGU6IHNlbGVjdGlvblN0eWxlLCBzZXRTdHlsZTogc2V0U2VsZWN0aW9uU3R5bGUgfSA9XG4gICAgdXNlSW1tZWRpYXRlU3R5bGUoc2VsZWN0aW9uUmVmKTtcblxuICBjb25zdCB4UmVmID0gdXNlUmVmKDApO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0ICR0aW1lbGluZSA9IHRpbWVsaW5lUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCEkdGltZWxpbmUpIHJldHVybjtcblxuICAgIGxldCB4ID0geFJlZi5jdXJyZW50O1xuICAgIGxldCB4U3RhcnQgPSAwO1xuICAgIGxldCBpc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgbGV0IGlzRXh0ZXJuYWxEcmFnID0gZmFsc2U7XG4gICAgbGV0IGhhc01vdmVkID0gZmFsc2U7XG4gICAgbGV0IGlzUmlnaHRDbGljayA9IGZhbHNlO1xuICAgIGxldCBzY3JvbGxYID0gMDtcbiAgICBsZXQgc2Nyb2xsWSA9IDA7XG4gICAgY29uc3QgaG92ZXJTdGFydFQgPSBEYXRlLm5vdygpICsgNTAwO1xuICAgIGNvbnN0IHVwZGF0ZVJlY3QgPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAocmVjdFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICByZWN0UmVmLmN1cnJlbnQgPSAkdGltZWxpbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGdldFJvd0Zyb21ZID0gKHk6IG51bWJlcik6IG51bWJlciA9PiB7XG4gICAgICBpZiAoIXJlY3RSZWYuY3VycmVudCkgcmV0dXJuIDA7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAoeSAtIE1BUktFUl9IRUlHSFQgLSBUSU1FTElORV9QQURESU5HKSAvIChST1dfSEVJR0hUICsgUk9XX1BBRERJTkcpXG4gICAgICApO1xuICAgIH07XG5cbiAgICBjb25zdCByZW1vdmVIb3ZlciA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlID0gbWVtb0NhY2hlUmVmLmN1cnJlbnQ7XG4gICAgICAvLyBSZW1vdmUgaG92ZXIgc3R5bGluZyBmcm9tIGFueSBlbGVtZW50cyB0aGF0IGhhdmUgaXRcbiAgICAgIGZvciAoY29uc3Qgc3BhbiBvZiBzcGFuc1JlZi5jdXJyZW50KSB7XG4gICAgICAgIGlmICghc3Bhbi5pc0hvdmVyZWQpIGNvbnRpbnVlO1xuICAgICAgICBzcGFuLmlzSG92ZXJlZCA9IGZhbHNlO1xuICAgICAgICBjYWNoZS5zZXQoc3Bhbi5zcGFuLnNwYW5JZCwge30pO1xuICAgICAgfVxuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiAnZm9yY2VSZW5kZXInLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGxldCBuZXh0RnJhbWUgPSAwO1xuICAgIGNvbnN0IG9uRnJhbWUgPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAoIWhhc0VudGVyZWRSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgaWYgKCFyZWN0UmVmLmN1cnJlbnQpIHVwZGF0ZVJlY3QoKTtcbiAgICAgIGNvbnN0IHJlY3QgPSByZWN0UmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoIXJlY3QpIHJldHVybjtcblxuICAgICAgY29uc3QgeyBzY3JvbGxMZWZ0LCBzY3JvbGxUb3AgfSA9ICR0aW1lbGluZTtcblxuICAgICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KFxuICAgICAgICAwLFxuICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICB4ICsgc2Nyb2xsTGVmdCAtIHJlY3QubGVmdCAtIFRJTUVMSU5FX1BBRERJTkcsXG4gICAgICAgICAgcm9vdC5kdXJhdGlvbiAqIHNjYWxlXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICBjb25zdCBsZWZ0U3R5bGUgPSBgJHtsZWZ0IC0gc2Nyb2xsTGVmdCArIFRJTUVMSU5FX1BBRERJTkd9cHhgO1xuICAgICAgc2V0U3R5bGUoJ2xlZnQnLCBsZWZ0U3R5bGUpO1xuICAgICAgc2V0TGFiZWxTdHlsZSgnbGVmdCcsIGxlZnRTdHlsZSk7XG5cbiAgICAgIGNvbnN0IHQgPSByb290LnN0YXJ0VGltZSArIGxlZnQgLyBzY2FsZTtcbiAgICAgIGNvbnN0IGxhYmVsVCA9IHQgLSByb290LnN0YXJ0VGltZTtcbiAgICAgIGlmIChsYWJlbFQgPCAwIHx8IGxhYmVsVCA+IHJvb3QuZHVyYXRpb24pIHtcbiAgICAgICAgbGFiZWxUZXh0UmVmLmN1cnJlbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10ZXh0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYWJlbFRleHRSZWYuY3VycmVudD8uc2V0QXR0cmlidXRlKFxuICAgICAgICAgICdkYXRhLXRleHQnLFxuICAgICAgICAgIGZvcm1hdFRpbWVTZWxlY3Rpb24obGFiZWxUKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNEcmFnZ2luZykge1xuICAgICAgICBjb25zdCB4RGVsdGEgPSB4IC0geFN0YXJ0O1xuICAgICAgICBjb25zdCB3aWR0aCA9IE1hdGguYWJzKHhEZWx0YSk7XG4gICAgICAgIGlmICghaGFzTW92ZWQpIHtcbiAgICAgICAgICBpZiAod2lkdGggPCA0KSByZXR1cm47XG4gICAgICAgICAgaGFzTW92ZWQgPSB0cnVlO1xuICAgICAgICAgIHNldFNlbGVjdGlvblN0eWxlKCdkaXNwbGF5JywgJ2ZsZXgnKTtcbiAgICAgICAgICByZW1vdmVIb3ZlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHhEZWx0YSA+IDApIHtcbiAgICAgICAgICBzZXRTZWxlY3Rpb25TdHlsZSgnbGVmdCcsICcnKTtcbiAgICAgICAgICBzZXRTZWxlY3Rpb25TdHlsZSgncmlnaHQnLCAnMCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFNlbGVjdGlvblN0eWxlKCdsZWZ0JywgJzAnKTtcbiAgICAgICAgICBzZXRTZWxlY3Rpb25TdHlsZSgncmlnaHQnLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U2VsZWN0aW9uU3R5bGUoJ3dpZHRoJywgYCR7d2lkdGh9cHhgKTtcblxuICAgICAgICBjb25zdCBsZWZ0U3RhcnQgPSBNYXRoLm1heChcbiAgICAgICAgICAwLFxuICAgICAgICAgIE1hdGgubWluKFxuICAgICAgICAgICAgeFN0YXJ0ICsgc2Nyb2xsTGVmdCAtIHJlY3QubGVmdCAtIFRJTUVMSU5FX1BBRERJTkcsXG4gICAgICAgICAgICByb290LmR1cmF0aW9uICogc2NhbGVcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGxhYmVsVFN0YXJ0ID0gbGVmdFN0YXJ0IC8gc2NhbGU7XG4gICAgICAgIGxldCB0MTogbnVtYmVyO1xuICAgICAgICBsZXQgdDI6IG51bWJlcjtcbiAgICAgICAgaWYgKGxhYmVsVFN0YXJ0IDwgbGFiZWxUKSB7XG4gICAgICAgICAgdDEgPSBsYWJlbFRTdGFydDtcbiAgICAgICAgICB0MiA9IGxhYmVsVDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0MSA9IGxhYmVsVDtcbiAgICAgICAgICB0MiA9IGxhYmVsVFN0YXJ0O1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdGlvblJlZi5jdXJyZW50Py5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2RhdGEtcmFuZ2UnLFxuICAgICAgICAgIGAke2Zvcm1hdFRpbWVTZWxlY3Rpb24odDEpfSDigJQgJHtmb3JtYXRUaW1lU2VsZWN0aW9uKHQyKX1gXG4gICAgICAgICk7XG4gICAgICAgIHNlbGVjdGlvblJlZi5jdXJyZW50Py5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2RhdGEtZHVyYXRpb24nLFxuICAgICAgICAgIGAke2Zvcm1hdFRpbWVTZWxlY3Rpb24odDIgLSB0MSl9IHNlbGVjdGVkYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoRGF0ZS5ub3coKSA8IGhvdmVyU3RhcnRUKSB7XG4gICAgICAgIG5leHRGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2Nyb2xsTGVmdCAhPT0gc2Nyb2xsWCB8fCBzY3JvbGxUb3AgIT09IHNjcm9sbFkpIHtcbiAgICAgICAgc2Nyb2xsWCA9IHNjcm9sbExlZnQ7XG4gICAgICAgIHNjcm9sbFkgPSBzY3JvbGxUb3A7XG4gICAgICAgIG5leHRGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoeCAtIHJlY3QubGVmdCA8IDEyOCkge1xuICAgICAgICBsYWJlbFRleHRSZWYuY3VycmVudD8uc2V0QXR0cmlidXRlKCdkYXRhLWFsaWduJywgJ2xlZnQnKTtcbiAgICAgIH0gZWxzZSBpZiAoeCAtIHJlY3QubGVmdCA+IHJlY3Qud2lkdGggLSAxMjgpIHtcbiAgICAgICAgbGFiZWxUZXh0UmVmLmN1cnJlbnQ/LnNldEF0dHJpYnV0ZSgnZGF0YS1hbGlnbicsICdyaWdodCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFiZWxUZXh0UmVmLmN1cnJlbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1hbGlnbicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc01vdmVkICYmICFpc0V4dGVybmFsRHJhZykge1xuICAgICAgICBjb25zdCBjYWNoZSA9IG1lbW9DYWNoZVJlZi5jdXJyZW50O1xuXG4gICAgICAgIC8vIFNwYW4gSG92ZXJcbiAgICAgICAgY29uc3Qgcm93TWluID0gZ2V0Um93RnJvbVkoc2Nyb2xsVG9wKSAtIEhPVkVSX09WRVJTQ0FOO1xuICAgICAgICBjb25zdCByb3dNYXggPSBnZXRSb3dGcm9tWShzY3JvbGxUb3AgKyByZWN0LmhlaWdodCkgKyBIT1ZFUl9PVkVSU0NBTjtcbiAgICAgICAgZm9yIChjb25zdCBzcGFuIG9mIHNwYW5zUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBjb25zdCBpc0hvdmVyZWQgPVxuICAgICAgICAgICAgc3Bhbi5yb3cgPj0gcm93TWluICYmXG4gICAgICAgICAgICBzcGFuLnJvdyA8PSByb3dNYXggJiZcbiAgICAgICAgICAgIHQgPj0gc3Bhbi5zdGFydFRpbWUgJiZcbiAgICAgICAgICAgIHQgPD0gc3Bhbi5lbmRUaW1lO1xuICAgICAgICAgIGlmIChzcGFuLmlzSG92ZXJlZCA9PT0gaXNIb3ZlcmVkKSBjb250aW51ZTtcbiAgICAgICAgICBzcGFuLmlzSG92ZXJlZCA9IGlzSG92ZXJlZDtcbiAgICAgICAgICBjYWNoZS5zZXQoc3Bhbi5zcGFuLnNwYW5JZCwge30pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXZlbnQgSG92ZXIg4oCUIG9ubHkgc2hvdyB0aGUgbmVhcmVzdCBldmVudCB3aGVuIG11bHRpcGxlIG92ZXJsYXBcbiAgICAgICAgY29uc3QgZXZlbnRTcHJlYWRQeCA9IDEyO1xuICAgICAgICBjb25zdCBldmVudFNwcmVhZE1zID0gZXZlbnRTcHJlYWRQeCAvIHNjYWxlO1xuICAgICAgICBsZXQgY2xvc2VzdEV2ZW50OiAodHlwZW9mIGV2ZW50c1JlZi5jdXJyZW50KVtudW1iZXJdIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBjbG9zZXN0RGlzdCA9IEluZmluaXR5O1xuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50c1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgY29uc3QgZGlzdCA9IE1hdGguYWJzKGV2ZW50LnRpbWVzdGFtcCAtIHQpO1xuICAgICAgICAgIGlmIChkaXN0IDw9IGV2ZW50U3ByZWFkTXMgJiYgZGlzdCA8IGNsb3Nlc3REaXN0KSB7XG4gICAgICAgICAgICBjbG9zZXN0RGlzdCA9IGRpc3Q7XG4gICAgICAgICAgICBjbG9zZXN0RXZlbnQgPSBldmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHNSZWYuY3VycmVudCkge1xuICAgICAgICAgIGNvbnN0IGlzSG92ZXJlZCA9IGV2ZW50ID09PSBjbG9zZXN0RXZlbnQ7XG4gICAgICAgICAgaWYgKGV2ZW50LmlzSG92ZXJlZCA9PT0gaXNIb3ZlcmVkKSBjb250aW51ZTtcbiAgICAgICAgICBldmVudC5pc0hvdmVyZWQgPSBpc0hvdmVyZWQ7XG4gICAgICAgICAgY29uc3QgJGV2ZW50ID0gZXZlbnQucmVmPy5jdXJyZW50O1xuICAgICAgICAgIGlmICghJGV2ZW50KSBjb250aW51ZTtcbiAgICAgICAgICAkZXZlbnQuc2V0QXR0cmlidXRlKCdkYXRhLWhvdmVyZWQnLCBTdHJpbmcoaXNIb3ZlcmVkKSk7XG4gICAgICAgIH1cblxuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogJ2ZvcmNlUmVuZGVyJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBuZXh0RnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7XG5cbiAgICBjb25zdCBvblBvaW50ZXJFbnRlciA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBpZiAoZXZlbnQucG9pbnRlclR5cGUgIT09ICdtb3VzZScpIHJldHVybjtcbiAgICAgIGhhc0VudGVyZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfTtcbiAgICBjb25zdCBvblBvaW50ZXJMZWF2ZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGlmICghaGFzRW50ZXJlZFJlZi5jdXJyZW50KSByZXR1cm47XG4gICAgICBoYXNFbnRlcmVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHJlbW92ZUhvdmVyKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTW91c2VNb3ZlID0gKHsgY2xpZW50WCB9OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICB4ID0gY2xpZW50WDtcbiAgICAgIHhSZWYuY3VycmVudCA9IHg7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShuZXh0RnJhbWUpO1xuICAgICAgbmV4dEZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBvbkNvbnRleHRNZW51ID0gKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH07XG4gICAgY29uc3Qgb25Nb3VzZURvd24gPSAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChldmVudC5idXR0b24gPT09IDIpIHtcbiAgICAgICAgaXNSaWdodENsaWNrID0gdHJ1ZTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlzUmlnaHRDbGljayA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHRpbWVsaW5lUmVmLmN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgeFN0YXJ0ID0geDtcbiAgICAgICAgaXNEcmFnZ2luZyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpc0V4dGVybmFsRHJhZyA9IHRydWU7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW1vdmVIb3Zlcik7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBpc0V4dGVybmFsRHJhZyA9IGZhbHNlO1xuXG4gICAgICBpZiAoIWlzRHJhZ2dpbmcpIHJldHVybjtcbiAgICAgIGlzRHJhZ2dpbmcgPSBmYWxzZTtcblxuICAgICAgaWYgKCFoYXNNb3ZlZCkgcmV0dXJuO1xuICAgICAgaGFzTW92ZWQgPSBmYWxzZTtcbiAgICAgIHNldFNlbGVjdGlvblN0eWxlKCdkaXNwbGF5JywgJycpO1xuICAgICAgc2V0U2VsZWN0aW9uU3R5bGUoJ2xlZnQnLCAnJyk7XG4gICAgICBzZXRTZWxlY3Rpb25TdHlsZSgncmlnaHQnLCAnJyk7XG4gICAgICBzZXRTZWxlY3Rpb25TdHlsZSgnd2lkdGgnLCAnJyk7XG5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcblxuICAgICAgaWYgKGlzUmlnaHRDbGljaykge1xuICAgICAgICBpc1JpZ2h0Q2xpY2sgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlY3RSZWYuY3VycmVudCkgdXBkYXRlUmVjdCgpO1xuICAgICAgY29uc3QgcmVjdCA9IHJlY3RSZWYuY3VycmVudDtcbiAgICAgIGlmICghcmVjdCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCB7IHNjcm9sbExlZnQgfSA9ICR0aW1lbGluZTtcblxuICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heChcbiAgICAgICAgMCxcbiAgICAgICAgTWF0aC5taW4oXG4gICAgICAgICAgKHhTdGFydCArIHNjcm9sbExlZnQgLSByZWN0LmxlZnQgLSBUSU1FTElORV9QQURESU5HKSAvIHNjYWxlLFxuICAgICAgICAgIHJvb3QuZHVyYXRpb25cbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KFxuICAgICAgICAwLFxuICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAoeCArIHNjcm9sbExlZnQgLSByZWN0LmxlZnQgLSBUSU1FTElORV9QQURESU5HKSAvIHNjYWxlLFxuICAgICAgICAgIHJvb3QuZHVyYXRpb25cbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiAnc2NhbGVUb1JhbmdlJyxcbiAgICAgICAgdDE6IHN0YXJ0ICsgcm9vdC5zdGFydFRpbWUsXG4gICAgICAgIHQyOiBlbmQgKyByb290LnN0YXJ0VGltZSxcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBvbktleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmICghaXNEcmFnZ2luZykgcmV0dXJuO1xuICAgICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VzY2FwZScpIHJldHVybjtcblxuICAgICAgaXNSaWdodENsaWNrID0gdHJ1ZTtcbiAgICAgIG9uTW91c2VVcChldmVudCk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uV2luZG93U2Nyb2xsID0gKCk6IHZvaWQgPT4ge1xuICAgICAgcmVjdFJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdHJhY2twYWRab29tUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShuZXh0RnJhbWUpO1xuICAgICAgbmV4dEZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKG5leHRGcmFtZSk7XG4gICAgICBuZXh0RnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgIC8vIE5PVEU6IEkgdHJpZWQgdG8gdXNlIHRoZSBlbnRyeSBmcm9tIHRoaXMgdG8gaW1tZWRpYXRlbHkgc2V0IHRoZSByZWN0LFxuICAgICAgLy8gYnV0IGZvciBzb21lIHJlYXNvbiBpdCBoYXMgZGlmZmVyZW50IGRpbWVuc2lvbnMgdGhhbiB0aGUgb25lIGZyb21cbiAgICAgIC8vIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgcmVjdFJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUoJHRpbWVsaW5lKTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gICAgJHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51Jywgb25Db250ZXh0TWVudSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIG9uTW91c2VEb3duKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBvbk1vdXNlVXApO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duLCB0cnVlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dTY3JvbGwpO1xuICAgICR0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbCk7XG4gICAgJHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJlbnRlcicsIG9uUG9pbnRlckVudGVyKTtcbiAgICAkdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmxlYXZlJywgb25Qb2ludGVyTGVhdmUpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XG4gICAgICAkdGltZWxpbmUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCBvbkNvbnRleHRNZW51KTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbk1vdXNlRG93bik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIG9uTW91c2VVcCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93biwgdHJ1ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25XaW5kb3dTY3JvbGwpO1xuICAgICAgJHRpbWVsaW5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKTtcbiAgICAgICR0aW1lbGluZS5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZW50ZXInLCBvblBvaW50ZXJFbnRlcik7XG4gICAgICAkdGltZWxpbmUucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmxlYXZlJywgb25Qb2ludGVyTGVhdmUpO1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUobmV4dEZyYW1lKTtcbiAgICAgIHhSZWYuY3VycmVudCA9IHg7XG4gICAgICByZW1vdmVIb3ZlcigpO1xuICAgIH07XG4gIH0sIFtcbiAgICBkaXNwYXRjaCxcbiAgICByb290LFxuICAgIHNjYWxlLFxuICAgIHNldFN0eWxlLFxuICAgIHNldExhYmVsU3R5bGUsXG4gICAgc2V0U2VsZWN0aW9uU3R5bGUsXG4gICAgbWVtb0NhY2hlUmVmLFxuICAgIHRpbWVsaW5lUmVmLFxuICAgIHNjcm9sbFNuYXBzaG90UmVmLFxuICBdKTtcblxuICBjb25zdCB0cmFja3BhZFpvb21SZWYgPSB1c2VSZWY8VHJhY2twYWRab29tPih1bmRlZmluZWQpO1xuICB1c2VUcmFja3BhZFpvb20oKGRlbHRhKSA9PiB7XG4gICAgY29uc3QgJHRpbWVsaW5lID0gdGltZWxpbmVSZWYuY3VycmVudDtcbiAgICBpZiAoISR0aW1lbGluZSkgcmV0dXJuO1xuXG4gICAgcmVjdFJlZi5jdXJyZW50ID8/PSAkdGltZWxpbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcmVjdCA9IHJlY3RSZWYuY3VycmVudDtcbiAgICBjb25zdCBhbmNob3JYID0gTWF0aC5tYXgoXG4gICAgICAwLFxuICAgICAgTWF0aC5taW4oXG4gICAgICAgIHhSZWYuY3VycmVudCAtIHJlY3QubGVmdCAtIFRJTUVMSU5FX1BBRERJTkcsXG4gICAgICAgIHJlY3Qud2lkdGggLSAyICogVElNRUxJTkVfUEFERElOR1xuICAgICAgKVxuICAgICk7XG5cbiAgICBsZXQgYW5jaG9yVCA9IDA7XG4gICAgbGV0IGV4aXN0aW5nID0gdHJhY2twYWRab29tUmVmLmN1cnJlbnQ7XG4gICAgaWYgKGV4aXN0aW5nPy5hbmNob3JYID09PSBhbmNob3JYKSB7XG4gICAgICBhbmNob3JUID0gZXhpc3RpbmcuYW5jaG9yVDtcbiAgICB9IGVsc2Uge1xuICAgICAgYW5jaG9yVCA9ICgkdGltZWxpbmUuc2Nyb2xsTGVmdCArIGFuY2hvclgpIC8gc2NhbGU7XG4gICAgICBleGlzdGluZyA9IHtcbiAgICAgICAgYW5jaG9yVCxcbiAgICAgICAgYW5jaG9yWCxcbiAgICAgIH07XG4gICAgICB0cmFja3BhZFpvb21SZWYuY3VycmVudCA9IGV4aXN0aW5nO1xuICAgIH1cblxuICAgIGRpc3BhdGNoKHtcbiAgICAgIHR5cGU6ICd0cmFja3BhZFNjYWxlJyxcbiAgICAgIGRlbHRhOiBkZWx0YSAvIDY0LFxuICAgICAgYW5jaG9yVCxcbiAgICAgIGFuY2hvclgsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY3Vyc29yTWFya2VyU3RpY2t5UGFyZW50fT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmN1cnNvck1hcmtlckxhYmVsQ29udGFpbmVyfVxuICAgICAgICAgIHJlZj17bGFiZWxSZWZ9XG4gICAgICAgICAgc3R5bGU9e2xhYmVsU3R5bGV9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmN1cnNvck1hcmtlckxhYmVsfSByZWY9e2xhYmVsVGV4dFJlZn0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY3Vyc29yTWFya2VyU3RpY2t5UGFyZW50fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jdXJzb3JNYXJrZXJDb250YWluZXJ9IHJlZj17cmVmfSBzdHlsZT17c3R5bGV9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY3Vyc29yTWFya2VyfT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY3Vyc29yU2VsZWN0aW9ufVxuICAgICAgICAgICAgICByZWY9e3NlbGVjdGlvblJlZn1cbiAgICAgICAgICAgICAgc3R5bGU9e3NlbGVjdGlvblN0eWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn1cbiJdfQ==
@@ -282,4 +282,4 @@ export const SpanEventComponent = memo(function SpanEventComponent({ event, node
282
282
  top,
283
283
  }, children: [_jsx("div", { className: clsx(styles.hoverInfo, isLeftAligned ? styles.alignStart : styles.alignEnd), children: asBoundary ? (_jsxs(_Fragment, { children: [_jsx("span", { className: styles.eventName, children: displayLabel }), _jsx("span", { className: styles.eventTimestamp, children: timestamp }), phaseDuration ? (_jsxs(_Fragment, { children: [_jsx("span", { className: styles.eventName, children: phaseLabel }), _jsx("span", { className: styles.eventTimestamp, children: phaseDuration })] })) : null] })) : (_jsxs(_Fragment, { children: [_jsx("span", { className: styles.eventName, children: name }), _jsx("span", { className: styles.eventTimestamp, children: timestamp })] })) }), asBoundary ? (_jsx("div", { className: styles.boundaryLine })) : (_jsx("div", { className: styles.eventDiamond }))] }));
284
284
  });
285
- //# sourceMappingURL=node.js.map
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RyYWNlLXZpZXdlci9jb21wb25lbnRzL25vZGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDMUQsT0FBTyxNQUFNLE1BQU0sNEJBQTRCLENBQUM7QUFVaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFHTCxlQUFlLEVBQ2YsYUFBYSxHQUNkLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxJQUFjLEVBQVUsRUFBRTtJQUM5RCxJQUFJLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxFQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUMsQ0FBQztBQUVGLFNBQVMsb0JBQW9CLENBQzNCLFlBQTBCLEVBQzFCLElBQWlCO0lBRWpCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDM0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNO1FBQUUsT0FB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c291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBjbHN4IH0gZnJvbSAnY2xzeCc7XG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMsIE11dGFibGVSZWZPYmplY3QsIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi4vdHJhY2Utdmlld2VyLm1vZHVsZS5jc3MnO1xuaW1wb3J0IHR5cGUge1xuICBNZW1vQ2FjaGUsXG4gIE1lbW9DYWNoZUtleSxcbiAgUm9vdE5vZGUsXG4gIFNjcm9sbFNuYXBzaG90LFxuICBTcGFuTm9kZSxcbiAgVmlzaWJsZVNwYW4sXG4gIFZpc2libGVTcGFuRXZlbnQsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE1BUktFUl9IRUlHSFQsIFJPV19IRUlHSFQsIFJPV19QQURESU5HIH0gZnJvbSAnLi4vdXRpbC9jb25zdGFudHMnO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24sIGdldEhpZ2hSZXNJbk1zIH0gZnJvbSAnLi4vdXRpbC90aW1pbmcnO1xuaW1wb3J0IHsgU3BhbkNvbnRlbnQgfSBmcm9tICcuL3NwYW4tY29udGVudCc7XG5pbXBvcnQgeyBjb21wdXRlU2VnbWVudHMgfSBmcm9tICcuL3NwYW4tc2VnbWVudHMnO1xuaW1wb3J0IHtcbiAgdHlwZSBSZXNvdXJjZVR5cGUsXG4gIHR5cGUgU3BhbkxheW91dCxcbiAgZ2V0UmVzb3VyY2VUeXBlLFxuICBnZXRTcGFuTGF5b3V0LFxufSBmcm9tICcuL3NwYW4tc3RyYXRlZ2llcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRTcGFuQ29sb3JDbGFzc05hbWUgPSAobm9kZTogU3Bhbk5vZGUpOiBzdHJpbmcgPT4ge1xuICBpZiAobm9kZS5pc1ZlcmNlbCkgcmV0dXJuIFN0cmluZyhzdHlsZXMuY29sb3JWZXJjZWwpO1xuICByZXR1cm4gU3RyaW5nKHN0eWxlc1tgY29sb3Ike25vZGUucmVzb3VyY2VJbmRleCAlIDV9YCBhcyAnY29sb3IwJ10pO1xufTtcblxuZnVuY3Rpb24gZ2V0VGVybWluYWxUaW1lc3RhbXAoXG4gIHJlc291cmNlVHlwZTogUmVzb3VyY2VUeXBlLFxuICBub2RlOiBWaXNpYmxlU3BhblxuKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZXZlbnRzID0gbm9kZS5ldmVudHM7XG4gIGlmICghZXZlbnRzPy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgc3dpdGNoIChyZXNvdXJjZVR5cGUpIHtcbiAgICBjYXNlICdob29rJzpcbiAgICAgIGZvciAobGV0IGkgPSBldmVudHMubGVuZ3RoOyBpLS07ICkge1xuICAgICAgICBpZiAoZXZlbnRzW2ldLmV2ZW50Lm5hbWUgPT09ICdob29rX2Rpc3Bvc2VkJykge1xuICAgICAgICAgIHJldHVybiBldmVudHNbaV0udGltZXN0YW1wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNhc2UgJ3NsZWVwJzpcbiAgICAgIGZvciAobGV0IGkgPSBldmVudHMubGVuZ3RoOyBpLS07ICkge1xuICAgICAgICBpZiAoZXZlbnRzW2ldLmV2ZW50Lm5hbWUgPT09ICd3YWl0X2NvbXBsZXRlZCcpIHtcbiAgICAgICAgICByZXR1cm4gZXZlbnRzW2ldLnRpbWVzdGFtcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjYXNlICdydW4nOlxuICAgICAgZm9yIChsZXQgaSA9IGV2ZW50cy5sZW5ndGg7IGktLTsgKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBldmVudHNbaV0uZXZlbnQubmFtZTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG5hbWUgPT09ICdydW5fY29tcGxldGVkJyB8fFxuICAgICAgICAgIG5hbWUgPT09ICdydW5fZmFpbGVkJyB8fFxuICAgICAgICAgIG5hbWUgPT09ICdydW5fY2FuY2VsbGVkJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZXZlbnRzW2ldLnRpbWVzdGFtcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjYXNlICdzdGVwJzpcbiAgICAgIGZvciAobGV0IGkgPSBldmVudHMubGVuZ3RoOyBpLS07ICkge1xuICAgICAgICBjb25zdCBuYW1lID0gZXZlbnRzW2ldLmV2ZW50Lm5hbWU7XG4gICAgICAgIGlmIChuYW1lID09PSAnc3RlcF9jb21wbGV0ZWQnIHx8IG5hbWUgPT09ICdzdGVwX2ZhaWxlZCcpIHtcbiAgICAgICAgICByZXR1cm4gZXZlbnRzW2ldLnRpbWVzdGFtcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmFtZSA9PT0gJ3N0ZXBfc3RhcnRlZCcgfHwgbmFtZSA9PT0gJ3N0ZXBfcmV0cnlpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgU3Bhbk5vZGVzID0gbWVtbyhmdW5jdGlvbiBTcGFuTm9kZXMoe1xuICByb290LFxuICBzY2FsZSxcbiAgc3BhbnMsXG4gIGlzTGl2ZSA9IGZhbHNlLFxuICBzY3JvbGxTbmFwc2hvdFJlZixcbiAgY2FjaGUsXG4gIGN1c3RvbVNwYW5DbGFzc05hbWVGdW5jLFxuICBjdXN0b21TcGFuRXZlbnRDbGFzc05hbWVGdW5jLFxufToge1xuICByb290OiBSb290Tm9kZTtcbiAgc2NhbGU6IG51bWJlcjtcbiAgc3BhbnM6IFZpc2libGVTcGFuW107XG4gIGlzTGl2ZT86IGJvb2xlYW47XG4gIHNjcm9sbFNuYXBzaG90UmVmOiBNdXRhYmxlUmVmT2JqZWN0PFNjcm9sbFNuYXBzaG90IHwgdW5kZWZpbmVkPjtcbiAgLyoqIE5vdCB1c2VkIGluIHRoZSBib2R5IOKAlCBleGlzdHMgc29sZWx5IHRvIGJ1c3QgUmVhY3QubWVtbyB3aGVuIHRoZSBnbG9iYWwgbWVtbyBjYWNoZSBjaGFuZ2VzLiAqL1xuICBjYWNoZUtleT86IE1lbW9DYWNoZUtleTtcbiAgY2FjaGU6IE1lbW9DYWNoZTtcbiAgY3VzdG9tU3BhbkNsYXNzTmFtZUZ1bmM/OiAoc3BhbjogU3Bhbk5vZGUpID0+IHN0cmluZztcbiAgY3VzdG9tU3BhbkV2ZW50Q2xhc3NOYW1lRnVuYz86IChldmVudDogVmlzaWJsZVNwYW5FdmVudCkgPT4gc3RyaW5nO1xufSkge1xuICByZXR1cm4gc3BhbnMubWFwKCh4KSA9PiAoXG4gICAgPFNwYW5Db21wb25lbnRcbiAgICAgIGNhY2hlS2V5PXtjYWNoZS5nZXQoeC5zcGFuLnNwYW5JZCl9XG4gICAgICBjdXN0b21TcGFuRXZlbnRDbGFzc05hbWVGdW5jPXtjdXN0b21TcGFuRXZlbnRDbGFzc05hbWVGdW5jfVxuICAgICAgY3VzdG9tU3BhbkNsYXNzTmFtZUZ1bmM9e2N1c3RvbVNwYW5DbGFzc05hbWVGdW5jfVxuICAgICAga2V5PXt4LnNwYW4uc3BhbklkfVxuICAgICAgbm9kZT17eH1cbiAgICAgIHJvb3Q9e3Jvb3R9XG4gICAgICBzY2FsZT17c2NhbGV9XG4gICAgICB0cmFjZUlzTGl2ZT17aXNMaXZlfVxuICAgICAgc2Nyb2xsU25hcHNob3RSZWY9e3Njcm9sbFNuYXBzaG90UmVmfVxuICAgIC8+XG4gICkpO1xufSk7XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gQ29tcHV0ZSBpbmxpbmUgc3R5bGVzIGZyb20gYSBTcGFuTGF5b3V0XG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZnVuY3Rpb24gZ2V0U3BhblN0eWxlKFxuICBsYXlvdXQ6IFNwYW5MYXlvdXQsXG4gIG5vZGU6IFZpc2libGVTcGFuLFxuICByb290OiBSb290Tm9kZSxcbiAgc2NhbGU6IG51bWJlclxuKTogQ1NTUHJvcGVydGllcyB7XG4gIC8vIFVzZSBpc0V4cGFuZGVkIChob3ZlcmVkIG9yIHNlbGVjdGVkKSBmb3Igd2lkdGggZXhwYW5zaW9uIHNvIHRoYXRcbiAgLy8gc2VsZWN0ZWQgc21hbGwgc3BhbnMgc3RheSBleHBhbmRlZCBhbmQgc2hvdyB0aGVpciBuYW1lLlxuICBjb25zdCBleHBhbmRlZCA9IGxheW91dC5pc0V4cGFuZGVkO1xuICByZXR1cm4ge1xuICAgIC8vIFVzZSBhY3R1YWxXaWR0aCBmb3IgQ1NTIHZhcmlhYmxlIHNvIGhvdmVyIGV4cGFuc2lvbiBpcyBhY2N1cmF0ZVxuICAgICctLXNwYW4td2lkdGgnOiBgJHtNYXRoLm1heChsYXlvdXQuYWN0dWFsV2lkdGgsIDEpfXB4YCxcbiAgICBtaW5XaWR0aDogZXhwYW5kZWQgPyBsYXlvdXQud2lkdGggOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IGV4cGFuZGVkID8gdW5kZWZpbmVkIDogbGF5b3V0LndpZHRoLFxuICAgIGhlaWdodDogbGF5b3V0LmhlaWdodCxcbiAgICBtYXhXaWR0aDpcbiAgICAgIGV4cGFuZGVkICYmICFsYXlvdXQuaXNOZWFyUmlnaHRTaWRlXG4gICAgICAgID8gKHJvb3QuZW5kVGltZSAtIG5vZGUuc3RhcnRUaW1lKSAqIHNjYWxlXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIGNvbnRhaW5JbnRyaW5zaWNXaWR0aDogZXhwYW5kZWQgPyB1bmRlZmluZWQgOiBsYXlvdXQud2lkdGgsXG4gICAgY29udGFpbkludHJpbnNpY0hlaWdodDogbGF5b3V0LmhlaWdodCxcbiAgICBsZWZ0OiBsYXlvdXQuaXNOZWFyUmlnaHRTaWRlID8gdW5kZWZpbmVkIDogbGF5b3V0LmxlZnQsXG4gICAgcmlnaHQ6IGxheW91dC5pc05lYXJSaWdodFNpZGVcbiAgICAgID8gKHJvb3QuZW5kVGltZSAtIG5vZGUuZW5kVGltZSkgKiBzY2FsZVxuICAgICAgOiB1bmRlZmluZWQsXG4gICAgdG9wOiBsYXlvdXQudG9wLFxuICB9IGFzIENTU1Byb3BlcnRpZXM7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gU3BhbkNvbXBvbmVudFxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCBjb25zdCBTcGFuQ29tcG9uZW50ID0gbWVtbyhmdW5jdGlvbiBTcGFuQ29tcG9uZW50KHtcbiAgbm9kZSxcbiAgcm9vdCxcbiAgc2NhbGUsXG4gIHRyYWNlSXNMaXZlID0gZmFsc2UsXG4gIHNjcm9sbFNuYXBzaG90UmVmLFxuICBjdXN0b21TcGFuQ2xhc3NOYW1lRnVuYyxcbiAgY3VzdG9tU3BhbkV2ZW50Q2xhc3NOYW1lRnVuYyxcbn06IHtcbiAgbm9kZTogVmlzaWJsZVNwYW47XG4gIHJvb3Q6IFJvb3ROb2RlO1xuICBzY2FsZTogbnVtYmVyO1xuICB0cmFjZUlzTGl2ZT86IGJvb2xlYW47XG4gIHNjcm9sbFNuYXBzaG90UmVmOiBNdXRhYmxlUmVmT2JqZWN0PFNjcm9sbFNuYXBzaG90IHwgdW5kZWZpbmVkPjtcbiAgLyoqIE5vdCB1c2VkIGluIHRoZSBib2R5IOKAlCBleGlzdHMgc29sZWx5IHRvIGJ1c3QgUmVhY3QubWVtbyBmb3IgdGhpcyBzcGFuLiAqL1xuICBjYWNoZUtleT86IE1lbW9DYWNoZUtleTtcbiAgY3VzdG9tU3BhbkNsYXNzTmFtZUZ1bmM/OiAoc3BhbjogU3Bhbk5vZGUpID0+IHN0cmluZztcbiAgY3VzdG9tU3BhbkV2ZW50Q2xhc3NOYW1lRnVuYz86IChldmVudDogVmlzaWJsZVNwYW5FdmVudCkgPT4gc3RyaW5nO1xufSk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBub2RlLnJlZiA9IHJlZjtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbm9kZS5yZWYgPSB1bmRlZmluZWQ7XG4gICAgfTtcbiAgfSwgW25vZGVdKTtcblxuICBjb25zdCB7IHNwYW4gfSA9IG5vZGU7XG4gIGNvbnN0IHJlc291cmNlVHlwZSA9IGdldFJlc291cmNlVHlwZShub2RlKTtcbiAgY29uc3QgW2xpdmVOb3csIHNldExpdmVOb3ddID0gdXNlU3RhdGUoMCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjbGFzcyBuYW1lIGZyb20gY2FsbGJhY2sgaWYgcHJvdmlkZWRcbiAgY29uc3QgY3VzdG9tQ2xhc3NOYW1lID0gY3VzdG9tU3BhbkNsYXNzTmFtZUZ1bmNcbiAgICA/IGN1c3RvbVNwYW5DbGFzc05hbWVGdW5jKG5vZGUpXG4gICAgOiAnJztcblxuICAvLyBXb3JrZmxvdyBzcGFuIHR5cGVzIHVzZSBjb2xvcmVkIHNlZ21lbnRzICsgYm91bmRhcnkgbGluZSBtYXJrZXJzXG4gIC8vIEdlbmVyaWMgT1RFTCBzcGFucyB1c2UgZGlhbW9uZCBldmVudCBtYXJrZXJzXG4gIGNvbnN0IGlzV29ya2Zsb3dTcGFuID0gcmVzb3VyY2VUeXBlICE9PSAnZGVmYXVsdCc7XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgc3BhbiBpcyBzdGlsbCBhY3RpdmUgKGxpdmUpLiBXZSByZXF1aXJlIHRoZSBwYXJlbnQgcnVuXG4gIC8vIHRvIGJlIGV4cGxpY2l0bHkgbGl2ZSB0byBhdm9pZCBjb21wbGV0ZWQvY2FuY2VsbGVkIHRyYWNlcyBjb250aW51aW5nIHRvXG4gIC8vIGdyb3cgZHVlIHRvIHRpbWluZyBoZXVyaXN0aWNzLlxuICBjb25zdCBkYXRhID0gc3Bhbi5hdHRyaWJ1dGVzPy5kYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICBjb25zdCB0ZXJtaW5hbFRpbWVzdGFtcCA9IGdldFRlcm1pbmFsVGltZXN0YW1wKHJlc291cmNlVHlwZSwgbm9kZSk7XG4gIGNvbnN0IGhhc1Rlcm1pbmFsRXZlbnQgPSB0ZXJtaW5hbFRpbWVzdGFtcCAhPSBudWxsO1xuICBjb25zdCBpc0NvbXBsZXRlZEJ5RGF0YSA9XG4gICAgcmVzb3VyY2VUeXBlID09PSAnaG9vaydcbiAgICAgID8gQm9vbGVhbihkYXRhPy5kaXNwb3NlZEF0KVxuICAgICAgOiBCb29sZWFuKGRhdGE/LmNvbXBsZXRlZEF0KTtcbiAgY29uc3QgaXNDb21wbGV0ZWQgPSBpc0NvbXBsZXRlZEJ5RGF0YSB8fCBoYXNUZXJtaW5hbEV2ZW50O1xuICBjb25zdCBpc0xpdmUgPSB0cmFjZUlzTGl2ZSAmJiBpc1dvcmtmbG93U3BhbiAmJiAhaXNDb21wbGV0ZWQ7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzTGl2ZSkgcmV0dXJuO1xuICAgIHNldExpdmVOb3coRGF0ZS5ub3coKSk7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBzZXRMaXZlTm93KERhdGUubm93KCkpO1xuICAgIH0sIDI1MCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICB9LCBbaXNMaXZlXSk7XG5cbiAgY29uc3QgY2Fub25pY2FsU3RhcnRUaW1lID0gZ2V0SGlnaFJlc0luTXMoc3Bhbi5zdGFydFRpbWUpO1xuICBjb25zdCBjYW5vbmljYWxFbmRUaW1lID0gZ2V0SGlnaFJlc0luTXMoc3Bhbi5lbmRUaW1lKTtcbiAgY29uc3QgY2Fub25pY2FsRHVyYXRpb24gPSBnZXRIaWdoUmVzSW5NcyhzcGFuLmR1cmF0aW9uKTtcbiAgY29uc3QgY2Fub25pY2FsQWN0aXZlU3RhcnRUaW1lID0gc3Bhbi5hY3RpdmVTdGFydFRpbWVcbiAgICA/IGdldEhpZ2hSZXNJbk1zKHNwYW4uYWN0aXZlU3RhcnRUaW1lKVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGR1cmF0aW9uTXMgPVxuICAgIHRlcm1pbmFsVGltZXN0YW1wICE9IG51bGxcbiAgICAgID8gTWF0aC5tYXgoMCwgdGVybWluYWxUaW1lc3RhbXAgLSBjYW5vbmljYWxTdGFydFRpbWUpXG4gICAgICA6IGlzTGl2ZVxuICAgICAgICA/IE1hdGgubWF4KDAsIChsaXZlTm93IHx8IERhdGUubm93KCkpIC0gY2Fub25pY2FsU3RhcnRUaW1lKVxuICAgICAgICA6IGNhbm9uaWNhbER1cmF0aW9uO1xuICBjb25zdCBkdXJhdGlvbiA9IG5vZGUuaXNJbnN0cnVtZW50YXRpb25IaW50XG4gICAgPyAnR2V0IFN0YXJ0ZWQnXG4gICAgOiBmb3JtYXREdXJhdGlvbihkdXJhdGlvbk1zKTtcbiAgY29uc3QgYmFzZU5vZGUgPSB7XG4gICAgLi4ubm9kZSxcbiAgICBzdGFydFRpbWU6IGNhbm9uaWNhbFN0YXJ0VGltZSxcbiAgICBlbmRUaW1lOiBjYW5vbmljYWxFbmRUaW1lLFxuICAgIGR1cmF0aW9uOiBjYW5vbmljYWxEdXJhdGlvbixcbiAgICBhY3RpdmVTdGFydFRpbWU6IGNhbm9uaWNhbEFjdGl2ZVN0YXJ0VGltZSxcbiAgfSBhcyBWaXNpYmxlU3BhbjtcbiAgY29uc3Qgc2VnbWVudE5vZGUgPSBpc0xpdmVcbiAgICA/ICh7XG4gICAgICAgIC4uLmJhc2VOb2RlLFxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb25NcyxcbiAgICAgICAgZW5kVGltZTogY2Fub25pY2FsU3RhcnRUaW1lICsgZHVyYXRpb25NcyxcbiAgICAgIH0gYXMgVmlzaWJsZVNwYW4pXG4gICAgOiBiYXNlTm9kZTtcbiAgY29uc3QgaGFzU2VnbWVudHMgPVxuICAgIGlzV29ya2Zsb3dTcGFuICYmXG4gICAgY29tcHV0ZVNlZ21lbnRzKHJlc291cmNlVHlwZSwgc2VnbWVudE5vZGUpLnNlZ21lbnRzLmxlbmd0aCA+IDA7XG4gIGNvbnN0IGxheW91dCA9IGdldFNwYW5MYXlvdXQoXG4gICAgcmVzb3VyY2VUeXBlLFxuICAgIHNlZ21lbnROb2RlLFxuICAgIHJvb3QsXG4gICAgc2NhbGUsXG4gICAgc2Nyb2xsU25hcHNob3RSZWZcbiAgKTtcblxuICAvLyBGb3IgbGl2ZSBzcGFucyB0aGUgZGF0YS1sZXZlbCBgbm9kZS5kdXJhdGlvbmAgY2FuIGJlIHN0YWxlIChmcm9tIHRoZSBsYXN0XG4gIC8vIGZldGNoKSB3aGlsZSB0aGUgdmlzdWFsIHdpZHRoIGlzIGdyb3dpbmcgdmlhIHJBRi4gUmVjb21wdXRlIGZyb20gcmVhbFxuICAvLyBlbGFwc2VkIHRpbWUgc28gdGhhdDpcbiAgLy8gIC0gaGVpZ2h0L2lzU21hbGwgY2xhc3NpZmljYXRpb24gc3RheXMgY29ycmVjdCAobm90IHNocnVua2VuIHRvIDQwJSlcbiAgLy8gIC0gUmVhY3QtcmVuZGVyZWQgd2lkdGggbWF0Y2hlcyB0aGUgckFGLWRyaXZlbiB3aWR0aCwgcHJldmVudGluZyBhIGJyaWVmXG4gIC8vICAgIHNocmlua+KGkmV4cGFuZCBmbGFzaCBvbiByZS1yZW5kZXIgdGhhdCBicmVha3MgY3Vyc29yIGhpdC10ZXN0aW5nXG4gIGlmIChpc0xpdmUpIHtcbiAgICBjb25zdCBlbGFwc2VkID0gZHVyYXRpb25NcztcbiAgICBjb25zdCBsaXZlQWN0dWFsV2lkdGggPSBlbGFwc2VkICogc2NhbGU7XG4gICAgY29uc3QgbGl2ZVdpZHRoID0gTWF0aC5tYXgobGl2ZUFjdHVhbFdpZHRoLCA0KTtcbiAgICBsYXlvdXQuYWN0dWFsV2lkdGggPSBsaXZlQWN0dWFsV2lkdGg7XG4gICAgbGF5b3V0LndpZHRoID0gbGl2ZVdpZHRoO1xuICAgIGxheW91dC5pc1NtYWxsID0gbGl2ZUFjdHVhbFdpZHRoIDwgNjQ7XG4gICAgbGF5b3V0LmlzSHVnZSA9IGxpdmVBY3R1YWxXaWR0aCA+PSA1MDA7XG4gICAgaWYgKCFsYXlvdXQuaXNTbWFsbCkge1xuICAgICAgbGF5b3V0LmhlaWdodCA9IFJPV19IRUlHSFQ7XG4gICAgICBsYXlvdXQudG9wID0gTUFSS0VSX0hFSUdIVCArIChST1dfSEVJR0hUICsgUk9XX1BBRERJTkcpICogc2VnbWVudE5vZGUucm93O1xuICAgIH1cbiAgfVxuXG4gIC8vIFNtb290aGx5IGdyb3cgYWN0aXZlIHNwYW4gd2lkdGggYXQgNjBmcHMgdXNpbmcgd2FsbCBjbG9jayB0aW1lXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0xpdmUgfHwgIXJlZi5jdXJyZW50KSByZXR1cm47XG5cbiAgICBsZXQgcmFmSWQgPSAwO1xuICAgIGNvbnN0IHRpY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCAkZWwgPSByZWYuY3VycmVudDtcbiAgICAgIGlmICghJGVsKSByZXR1cm47XG4gICAgICBjb25zdCBlbGFwc2VkID0gRGF0ZS5ub3coKSAtIGNhbm9uaWNhbFN0YXJ0VGltZTtcbiAgICAgIGNvbnN0IHcgPSBNYXRoLm1heChlbGFwc2VkICogc2NhbGUsIDIpO1xuICAgICAgJGVsLnN0eWxlLndpZHRoID0gYCR7d31weGA7XG4gICAgICAkZWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tc3Bhbi13aWR0aCcsIGAke3d9cHhgKTtcbiAgICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spO1xuICAgIH07XG4gICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljayk7XG4gICAgcmV0dXJuICgpID0+IGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKTtcbiAgfSwgW2lzTGl2ZSwgY2Fub25pY2FsU3RhcnRUaW1lLCBzY2FsZV0pO1xuXG4gIGNvbnN0IHJlbmRlck5vZGUgPSBzZWdtZW50Tm9kZTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9e2Ake3NwYW4ubmFtZX0gLSAke2R1cmF0aW9ufWB9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICBzdHlsZXMuc3Bhbk5vZGUsXG4gICAgICAgICAgbGF5b3V0LmlzSHVnZSAmJiBzdHlsZXMuaHVnZSxcbiAgICAgICAgICBsYXlvdXQuaXNTbWFsbCAmJiBzdHlsZXMuc21hbGwsXG4gICAgICAgICAgbGF5b3V0LmlzRXhwYW5kZWQgJiYgc3R5bGVzLnhIb3ZlcixcbiAgICAgICAgICBub2RlLmlzSGlnaGxpZ2h0ZWRcbiAgICAgICAgICAgID8gc3R5bGVzLmNvbG9ySGlnaGxpZ2h0XG4gICAgICAgICAgICA6IGdldFNwYW5Db2xvckNsYXNzTmFtZShub2RlKSxcbiAgICAgICAgICBub2RlLmlzSGlnaGxpZ2h0ZWQgPT09IGZhbHNlICYmIHN0eWxlcy51bmxpdCxcbiAgICAgICAgICBjdXN0b21DbGFzc05hbWUsXG4gICAgICAgICAgaGFzU2VnbWVudHMgJiYgc3R5bGVzLmhhc1NlZ21lbnRzXG4gICAgICAgICl9XG4gICAgICAgIGRhdGEtc3Bhbi1pZD17c3Bhbi5zcGFuSWR9XG4gICAgICAgIGRhdGEtc3RhcnQtdGltZT17c2VnbWVudE5vZGUuc3RhcnRUaW1lIC0gcm9vdC5zdGFydFRpbWV9XG4gICAgICAgIGRhdGEtcmlnaHQtc2lkZT17bGF5b3V0LmlzTmVhclJpZ2h0U2lkZX1cbiAgICAgICAgZGF0YS1zZWxlY3RlZD17bm9kZS5pc1NlbGVjdGVkID8gJycgOiB1bmRlZmluZWR9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBzdHlsZT17Z2V0U3BhblN0eWxlKGxheW91dCwgc2VnbWVudE5vZGUsIHJvb3QsIHNjYWxlKX1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxTcGFuQ29udGVudFxuICAgICAgICAgIGR1cmF0aW9uTXM9e2R1cmF0aW9uTXN9XG4gICAgICAgICAgcmVzb3VyY2VUeXBlPXtyZXNvdXJjZVR5cGV9XG4gICAgICAgICAgbm9kZT17cmVuZGVyTm9kZX1cbiAgICAgICAgICBsYXlvdXQ9e2xheW91dH1cbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAge3NlZ21lbnROb2RlLmV2ZW50cyAmJiAhbGF5b3V0LmlzU21hbGxcbiAgICAgICAgPyBzZWdtZW50Tm9kZS5ldmVudHMubWFwKCh4KSA9PiAoXG4gICAgICAgICAgICA8U3BhbkV2ZW50Q29tcG9uZW50XG4gICAgICAgICAgICAgIGN1c3RvbVNwYW5FdmVudENsYXNzTmFtZUZ1bmM9e2N1c3RvbVNwYW5FdmVudENsYXNzTmFtZUZ1bmN9XG4gICAgICAgICAgICAgIGV2ZW50PXt4fVxuICAgICAgICAgICAgICBrZXk9e3gua2V5fVxuICAgICAgICAgICAgICBub2RlPXtzZWdtZW50Tm9kZX1cbiAgICAgICAgICAgICAgcm9vdD17cm9vdH1cbiAgICAgICAgICAgICAgc2NhbGU9e3NjYWxlfVxuICAgICAgICAgICAgICBhc0JvdW5kYXJ5PXtpc1dvcmtmbG93U3Bhbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSlcbiAgICAgICAgOiBudWxsfVxuICAgIDwvPlxuICApO1xufSk7XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gU3BhbkV2ZW50Q29tcG9uZW50XG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIEh1bWFuLXJlYWRhYmxlIGxhYmVscyBmb3Igd29ya2Zsb3cgZXZlbnQgdHlwZXMgKi9cbmNvbnN0IEJPVU5EQVJZX0xBQkVMUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc3RlcF9zdGFydGVkOiAnU3RhcnRlZCcsXG4gIHN0ZXBfcmV0cnlpbmc6ICdSZXRyeWluZycsXG4gIHN0ZXBfZmFpbGVkOiAnRmFpbGVkJyxcbiAgaG9va19jcmVhdGVkOiAnQ3JlYXRlZCcsXG4gIGhvb2tfcmVjZWl2ZWQ6ICdSZWNlaXZlZCcsXG4gIGhvb2tfZGlzcG9zZWQ6ICdSZXNvbHZlZCcsXG4gIHdhaXRfY3JlYXRlZDogJ1NsZWVwIHN0YXJ0ZWQnLFxuICB3YWl0X2NvbXBsZXRlZDogJ1NsZWVwIGNvbXBsZXRlZCcsXG4gIHJ1bl9zdGFydGVkOiAnU3RhcnRlZCcsXG4gIHJ1bl9jb21wbGV0ZWQ6ICdDb21wbGV0ZWQnLFxuICBydW5fZmFpbGVkOiAnUnVuIGZhaWxlZCcsXG4gIHN0ZXBfY29tcGxldGVkOiAnQ29tcGxldGVkJyxcbn07XG5cbmV4cG9ydCBjb25zdCBTcGFuRXZlbnRDb21wb25lbnQgPSBtZW1vKGZ1bmN0aW9uIFNwYW5FdmVudENvbXBvbmVudCh7XG4gIGV2ZW50LFxuICBub2RlLFxuICByb290LFxuICBzY2FsZSxcbiAgY3VzdG9tU3BhbkV2ZW50Q2xhc3NOYW1lRnVuYyxcbiAgYXNCb3VuZGFyeSA9IGZhbHNlLFxufToge1xuICBldmVudDogVmlzaWJsZVNwYW5FdmVudDtcbiAgbm9kZTogVmlzaWJsZVNwYW47XG4gIHJvb3Q6IFJvb3ROb2RlO1xuICBzY2FsZTogbnVtYmVyO1xuICBjdXN0b21TcGFuRXZlbnRDbGFzc05hbWVGdW5jPzogKGV2ZW50OiBWaXNpYmxlU3BhbkV2ZW50KSA9PiBzdHJpbmc7XG4gIGFzQm91bmRhcnk/OiBib29sZWFuO1xufSk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBldmVudC5yZWYgPSByZWY7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGV2ZW50LnJlZiA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICB9LCBbZXZlbnRdKTtcblxuICBjb25zdCB7XG4gICAgZXZlbnQ6IHsgbmFtZSB9LFxuICB9ID0gZXZlbnQ7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IGZvcm1hdER1cmF0aW9uKGV2ZW50LnRpbWVzdGFtcCAtIHJvb3Quc3RhcnRUaW1lKTtcbiAgY29uc3QgZGlzcGxheUxhYmVsID0gYXNCb3VuZGFyeSA/IChCT1VOREFSWV9MQUJFTFNbbmFtZV0gPz8gbmFtZSkgOiBuYW1lO1xuXG4gIC8vIEZvciBib3VuZGFyeSBldmVudHMsIGNvbXB1dGUgdGhlIGR1cmF0aW9uIG9mIHRoZSBwaGFzZS5cbiAgLy8gXCJGb3J3YXJkXCIgZXZlbnRzIChzdGFydGVkLCByZXRyeWluZykgbWVhc3VyZSB1bnRpbCB0aGUgbmV4dCBldmVudC5cbiAgLy8gXCJUZXJtaW5hbFwiIGV2ZW50cyAoY29tcGxldGVkKSBtZWFzdXJlIGZyb20gdGhlIHByZXZpb3VzIHN0YXJ0ZWQgZXZlbnQuXG4gIGNvbnN0IGlzRm9yd2FyZEV2ZW50ID1cbiAgICBhc0JvdW5kYXJ5ICYmXG4gICAgKG5hbWUgPT09ICdzdGVwX3N0YXJ0ZWQnIHx8XG4gICAgICBuYW1lID09PSAncnVuX3N0YXJ0ZWQnIHx8XG4gICAgICBuYW1lID09PSAnc3RlcF9yZXRyeWluZycpO1xuICBjb25zdCBpc1Rlcm1pbmFsRXZlbnQgPVxuICAgIGFzQm91bmRhcnkgJiYgKG5hbWUgPT09ICdzdGVwX2NvbXBsZXRlZCcgfHwgbmFtZSA9PT0gJ3J1bl9jb21wbGV0ZWQnKTtcblxuICBsZXQgcGhhc2VEdXJhdGlvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCBwaGFzZUxhYmVsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgaWYgKChpc0ZvcndhcmRFdmVudCB8fCBpc1Rlcm1pbmFsRXZlbnQpICYmIG5vZGUuZXZlbnRzKSB7XG4gICAgY29uc3Qgc29ydGVkTm9kZUV2ZW50cyA9IFsuLi5ub2RlLmV2ZW50c10uc29ydChcbiAgICAgIChhLCBiKSA9PiBhLnRpbWVzdGFtcCAtIGIudGltZXN0YW1wXG4gICAgKTtcbiAgICBjb25zdCBjdXJyZW50SWR4ID0gc29ydGVkTm9kZUV2ZW50cy5maW5kSW5kZXgoKGUpID0+IGUua2V5ID09PSBldmVudC5rZXkpO1xuXG4gICAgaWYgKGlzVGVybWluYWxFdmVudCkge1xuICAgICAgLy8gTG9vayBiYWNrd2FyZCB0byBmaW5kIHRoZSBsYXN0IHN0ZXBfc3RhcnRlZFxuICAgICAgbGV0IHByZXZTdGFydFRpbWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgZm9yIChsZXQgaSA9IGN1cnJlbnRJZHggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAoc29ydGVkTm9kZUV2ZW50c1tpXS5ldmVudC5uYW1lID09PSAnc3RlcF9zdGFydGVkJykge1xuICAgICAgICAgIHByZXZTdGFydFRpbWUgPSBzb3J0ZWROb2RlRXZlbnRzW2ldLnRpbWVzdGFtcDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByZXZTdGFydFRpbWUgIT09IG51bGwpIHtcbiAgICAgICAgcGhhc2VEdXJhdGlvbiA9IGZvcm1hdER1cmF0aW9uKGV2ZW50LnRpbWVzdGFtcCAtIHByZXZTdGFydFRpbWUpO1xuICAgICAgICBwaGFzZUxhYmVsID0gJ0V4ZWN1dGVkJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTG9vayBmb3J3YXJkIHRvIHRoZSBuZXh0IGV2ZW50XG4gICAgICBjb25zdCBuZXh0RXZlbnQgPSBzb3J0ZWROb2RlRXZlbnRzW2N1cnJlbnRJZHggKyAxXTtcbiAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXh0RXZlbnQgPyBuZXh0RXZlbnQudGltZXN0YW1wIDogbm9kZS5lbmRUaW1lO1xuICAgICAgcGhhc2VEdXJhdGlvbiA9IGZvcm1hdER1cmF0aW9uKGVuZFRpbWUgLSBldmVudC50aW1lc3RhbXApO1xuICAgICAgcGhhc2VMYWJlbCA9IG5hbWUgPT09ICdzdGVwX3JldHJ5aW5nJyA/ICdXYWl0ZWQnIDogJ0V4ZWN1dGVkJztcbiAgICB9XG4gIH1cblxuICBjb25zdCBsZWZ0ID0gKGV2ZW50LnRpbWVzdGFtcCAtIHJvb3Quc3RhcnRUaW1lKSAqIHNjYWxlO1xuICBjb25zdCB0b3AgPSBNQVJLRVJfSEVJR0hUICsgKFJPV19IRUlHSFQgKyBST1dfUEFERElORykgKiBub2RlLnJvdztcbiAgY29uc3QgaXNMZWZ0QWxpZ25lZCA9XG4gICAgbm9kZS5kdXJhdGlvbiA8PSAwIHx8XG4gICAgKGV2ZW50LnRpbWVzdGFtcCAtIG5vZGUuc3RhcnRUaW1lKSAvIG5vZGUuZHVyYXRpb24gPCAwLjU7XG5cbiAgLy8gR2V0IGN1c3RvbSBjbGFzcyBuYW1lIGZyb20gY2FsbGJhY2sgaWYgcHJvdmlkZWRcbiAgY29uc3QgY3VzdG9tQ2xhc3NOYW1lID0gY3VzdG9tU3BhbkV2ZW50Q2xhc3NOYW1lRnVuY1xuICAgID8gY3VzdG9tU3BhbkV2ZW50Q2xhc3NOYW1lRnVuYyhldmVudClcbiAgICA6ICcnO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgdGl0bGU9e1xuICAgICAgICBwaGFzZUR1cmF0aW9uXG4gICAgICAgICAgPyBgJHtkaXNwbGF5TGFiZWx9ICR7dGltZXN0YW1wfVxcbiR7cGhhc2VMYWJlbH0gJHtwaGFzZUR1cmF0aW9ufWBcbiAgICAgICAgICA6IGAke2Rpc3BsYXlMYWJlbH0gJHt0aW1lc3RhbXB9YFxuICAgICAgfVxuICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICBzdHlsZXMuc3Bhbk5vZGVFdmVudCxcbiAgICAgICAgY3VzdG9tQ2xhc3NOYW1lLFxuICAgICAgICBhc0JvdW5kYXJ5ICYmIHN0eWxlcy5ib3VuZGFyeU1hcmtlcixcbiAgICAgICAgbm9kZS5pc0hpZ2hsaWdodGVkXG4gICAgICAgICAgPyBzdHlsZXMuY29sb3JIaWdobGlnaHRcbiAgICAgICAgICA6IGdldFNwYW5Db2xvckNsYXNzTmFtZShub2RlKSxcbiAgICAgICAgbm9kZS5pc0hpZ2hsaWdodGVkID09PSBmYWxzZSAmJiBzdHlsZXMudW5saXRcbiAgICAgICl9XG4gICAgICBkYXRhLWhvdmVyZWQ9e2V2ZW50LmlzSG92ZXJlZH1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgc3R5bGU9e1xuICAgICAgICB7XG4gICAgICAgICAgbGVmdCxcbiAgICAgICAgICB0b3AsXG4gICAgICAgIH0gYXMgQ1NTUHJvcGVydGllc1xuICAgICAgfVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICAgIHN0eWxlcy5ob3ZlckluZm8sXG4gICAgICAgICAgaXNMZWZ0QWxpZ25lZCA/IHN0eWxlcy5hbGlnblN0YXJ0IDogc3R5bGVzLmFsaWduRW5kXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHthc0JvdW5kYXJ5ID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5ldmVudE5hbWV9PntkaXNwbGF5TGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZXZlbnRUaW1lc3RhbXB9Pnt0aW1lc3RhbXB9PC9zcGFuPlxuICAgICAgICAgICAge3BoYXNlRHVyYXRpb24gPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZXZlbnROYW1lfT57cGhhc2VMYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZXZlbnRUaW1lc3RhbXB9PntwaGFzZUR1cmF0aW9ufTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZXZlbnROYW1lfT57bmFtZX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5ldmVudFRpbWVzdGFtcH0+e3RpbWVzdGFtcH08L3NwYW4+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICAgIHthc0JvdW5kYXJ5ID8gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJvdW5kYXJ5TGluZX0gLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZXZlbnREaWFtb25kfSAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuIl19
@@ -6,4 +6,4 @@ export function SearchInput({ height, width, value, placeholder, onChange, }) {
6
6
  function MagnifyingGlassIcon() {
7
7
  return (_jsxs("svg", { width: 16, height: 16, viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", focusable: "false", children: [_jsx("circle", { cx: "7", cy: "7", r: "4.5", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "M11.5 11.5L14 14", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" })] }));
8
8
  }
9
- //# sourceMappingURL=search-input.js.map
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvc2VhcmNoLWlucHV0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxNQUFNLE1BQU0sNEJBQTRCLENBQUM7QUFFaEQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxFQUMxQixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxXQUFXLEVBQ1gsUUFBUSxHQU9UO0lBQ0MsT0FBTyxDQUNMLGlCQUFPLFNBQVMsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLGFBQ3ZDLGNBQUssU0FBUyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsWUFDdEMsS0FBQyxtQkFBbUIsS0FBRyxHQUNuQixFQUNOLGdCQUNFLElBQUksRUFBQyxRQUFRLEVBQ2IsS0FBSyxFQUFFLEtBQUssRUFDWixXQUFXLEVBQUUsV0FBVyxFQUN4QixRQUFRLEVBQUUsUUFBUSxFQUNsQixLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQ3hCLElBQ0ksQ0FDVCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsbUJBQW1CO0lBQzFCLE9BQU8sQ0FDTCxlQUNFLEtBQUssRUFBRSxFQUFFLEVBQ1QsTUFBTSxFQUFFLEVBQUUsRUFDVixPQUFPLEVBQUMsV0FBVyxFQUNuQixJQUFJLEVBQUMsTUFBTSxpQkFDQyxNQUFNLEVBQ2xCLFNBQVMsRUFBQyxPQUFPLGFBRWpCLGlCQUFRLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxjQUFjLEVBQUMsV0FBVyxFQUFDLEtBQUssR0FBRyxFQUN4RSxlQUNFLENBQUMsRUFBQyxrQkFBa0IsRUFDcEIsTUFBTSxFQUFDLGNBQWMsRUFDckIsV0FBVyxFQUFDLEtBQUssRUFDakIsYUFBYSxFQUFDLE9BQU8sR0FDckIsSUFDRSxDQUNQLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDaGFuZ2VFdmVudEhhbmRsZXIsIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi4vdHJhY2Utdmlld2VyLm1vZHVsZS5jc3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gU2VhcmNoSW5wdXQoe1xuICBoZWlnaHQsXG4gIHdpZHRoLFxuICB2YWx1ZSxcbiAgcGxhY2Vob2xkZXIsXG4gIG9uQ2hhbmdlLFxufToge1xuICBoZWlnaHQ6IG51bWJlciB8IHN0cmluZztcbiAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBvbkNoYW5nZTogQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+O1xufSk6IFJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPGxhYmVsIGNsYXNzTmFtZT17c3R5bGVzLnNlYXJjaElucHV0TGFiZWx9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5zZWFyY2hJbnB1dFByZWZpeH0+XG4gICAgICAgIDxNYWduaWZ5aW5nR2xhc3NJY29uIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgc3R5bGU9e3sgaGVpZ2h0LCB3aWR0aCB9fVxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuICApO1xufVxuXG5mdW5jdGlvbiBNYWduaWZ5aW5nR2xhc3NJY29uKCk6IFJlYWN0Tm9kZSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgd2lkdGg9ezE2fVxuICAgICAgaGVpZ2h0PXsxNn1cbiAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICA+XG4gICAgICA8Y2lyY2xlIGN4PVwiN1wiIGN5PVwiN1wiIHI9XCI0LjVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjEuNVwiIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTExLjUgMTEuNUwxNCAxNFwiXG4gICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgIHN0cm9rZVdpZHRoPVwiMS41XCJcbiAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG4iXX0=
@@ -22,4 +22,4 @@ function SearchInputWrapper() {
22
22
  }, [dispatch, value]);
23
23
  return (_jsx("div", { className: styles.searchInput, children: _jsx(SearchInput, { height: SEARCH_HEIGHT, onChange: (e) => setValue(e.target.value), placeholder: "Search spans\u2026", value: value, width: "100%" }) }));
24
24
  }
25
- //# sourceMappingURL=search.js.map
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvc2VhcmNoLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBRWIsT0FBTyxFQUFrQixTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxNQUFNLE1BQU0sNEJBQTRCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxNQUFNLFVBQVUsU0FBUztJQUN2QixPQUFPLENBQ0wsY0FBSyxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsWUFDOUIsS0FBQyxrQkFBa0IsS0FBRyxHQUNsQixDQUNQLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxrQkFBa0I7SUFDekIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXZDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQ3hCLEdBQUcsRUFBRSxDQUNILFFBQVEsQ0FBQztZQUNQLElBQUksRUFBRSxXQUFXO1lBQ2pCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxFQUNKLEdBQUcsQ0FDSixDQUFDO1FBRUYsT0FBTyxHQUFHLEVBQUU7WUFDVixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFdEIsT0FBTyxDQUNMLGNBQUssU0FBUyxFQUFFLE1BQU0sQ0FBQyxXQUFXLFlBQ2hDLEtBQUMsV0FBVyxJQUNWLE1BQU0sRUFBRSxhQUFhLEVBQ3JCLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQ3pDLFdBQVcsRUFBQyxvQkFBZSxFQUMzQixLQUFLLEVBQUUsS0FBSyxFQUNaLEtBQUssRUFBQyxNQUFNLEdBQ1osR0FDRSxDQUNQLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB0eXBlIFJlYWN0Tm9kZSwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRyYWNlVmlld2VyIH0gZnJvbSAnLi4vY29udGV4dCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4uL3RyYWNlLXZpZXdlci5tb2R1bGUuY3NzJztcbmltcG9ydCB7IFNFQVJDSF9IRUlHSFQgfSBmcm9tICcuLi91dGlsL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJy4vc2VhcmNoLWlucHV0JztcblxuZXhwb3J0IGZ1bmN0aW9uIFNlYXJjaEJhcigpOiBSZWFjdE5vZGUge1xuICByZXR1cm4gKFxuICAgIDxuYXYgY2xhc3NOYW1lPXtzdHlsZXMuc2VhcmNoQmFyfT5cbiAgICAgIDxTZWFyY2hJbnB1dFdyYXBwZXIgLz5cbiAgICA8L25hdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gU2VhcmNoSW5wdXRXcmFwcGVyKCk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgZGlzcGF0Y2ggfSA9IHVzZVRyYWNlVmlld2VyKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAoKSA9PlxuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogJ3NldEZpbHRlcicsXG4gICAgICAgICAgZmlsdGVyOiB2YWx1ZSxcbiAgICAgICAgfSksXG4gICAgICAxMDBcbiAgICApO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICB9O1xuICB9LCBbZGlzcGF0Y2gsIHZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnNlYXJjaElucHV0fT5cbiAgICAgIDxTZWFyY2hJbnB1dFxuICAgICAgICBoZWlnaHQ9e1NFQVJDSF9IRUlHSFR9XG4gICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0VmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBzcGFuc+KAplwiXG4gICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0=
@@ -134,4 +134,4 @@ export function SpanContent({ resourceType, ...props }) {
134
134
  return _jsx(DefaultContent, { ...props });
135
135
  }
136
136
  }
137
- //# sourceMappingURL=span-content.js.map
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhbi1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvc3Bhbi1jb250ZW50LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBR2IsT0FBTyxNQUFNLE1BQU0sNEJBQTRCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFHTCxpQkFBaUIsRUFDakIsZUFBZSxHQUNoQixNQUFNLGlCQUFpQixDQUFDO0FBR3pCLDZFQUE2RTtBQUM3RSxpQkFBaUI7QUFDakIsNkVBQTZFO0FBRTdFLFNBQVMsV0FBVyxDQUFDLElBQWM7SUFDakMsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsNERBQTREO0FBQzVELDZFQUE2RTtBQUU3RSxNQUFNLGNBQWMsR0FBa0M7SUFDcEQsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLEVBQUU7SUFDWCxNQUFNLEVBQUUsUUFBUTtJQUNoQixRQUFRLEVBQUUsWUFBWTtJQUN0QixTQUFTLEVBQUUsVUFBVTtJQUNyQixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUNwQixRQUFRLEVBQUUsVUFBVTtDQUNyQixDQUFDO0FBRUYsU0FBUyxZQUFZLENBQUMsRUFDcEIsUUFBUSxFQUNSLFlBQVksR0FJYjtJQUNDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFdkMsT0FBTyxDQUNMLGNBQUssU0FBUyxFQUFFLE1BQU0sQ0FBQyxZQUFZLFlBQ2hDLFFBQVEsQ0FBQyxH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RUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUF1QjtJQUNqRCxPQUFPLEtBQUMsZUFBZSxJQUFDLFlBQVksRUFBQyxNQUFNLEtBQUssS0FBSyxHQUFJLENBQUM7QUFDNUQsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBdUI7SUFDbEQsT0FBTyxLQUFDLGVBQWUsSUFBQyxZQUFZLEVBQUMsT0FBTyxLQUFLLEtBQUssR0FBSSxDQUFDO0FBQzdELENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsYUFBYTtBQUNiLDZFQUE2RTtBQUU3RTs7R0FFRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsRUFDMUIsWUFBWSxFQUNaLEdBQUcsS0FBSyxFQUMwQztJQUNsRCxRQUFRLFlBQVksRUFBRSxDQUFDO1FBQ3JCLEtBQUssS0FBSztZQUNSLE9BQU8sS0FBQyxVQUFVLE9BQUssS0FBSyxHQUFJLENBQUM7UUFDbkMsS0FBSyxNQUFNO1lBQ1QsT0FBTyxLQUFDLFdBQVcsT0FBSyxLQUFLLEdBQUksQ0FBQztRQUNwQyxLQUFLLE1BQU07WUFDVCxPQUFPLEtBQUMsV0FBVyxPQUFLLEtBQUssR0FBSSxDQUFDO1FBQ3BDLEtBQUssT0FBTztZQUNWLE9BQU8sS0FBQyxZQUFZLE9BQUssS0FBSyxHQUFJLENBQUM7UUFDckM7WUFDRSxPQUFPLEtBQUMsY0FBYyxPQUFLLEtBQUssR0FBSSxDQUFDO0lBQ3pDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMsIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi4vdHJhY2Utdmlld2VyLm1vZHVsZS5jc3MnO1xuaW1wb3J0IHR5cGUgeyBTcGFuTm9kZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uIH0gZnJvbSAnLi4vdXRpbC90aW1pbmcnO1xuaW1wb3J0IHtcbiAgdHlwZSBTZWdtZW50LFxuICB0eXBlIFNlZ21lbnRTdGF0dXMsXG4gIFNFR01FTlRfQ0xBU1NfTUFQLFxuICBjb21wdXRlU2VnbWVudHMsXG59IGZyb20gJy4vc3Bhbi1zZWdtZW50cyc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlVHlwZSwgU3BhbkxheW91dCB9IGZyb20gJy4vc3Bhbi1zdHJhdGVnaWVzJztcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTaGFyZWQgaGVscGVyc1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmZ1bmN0aW9uIGdldER1cmF0aW9uKG5vZGU6IFNwYW5Ob2RlKTogc3RyaW5nIHtcbiAgaWYgKG5vZGUuaXNJbnN0cnVtZW50YXRpb25IaW50KSB7XG4gICAgcmV0dXJuICdHZXQgU3RhcnRlZCc7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdER1cmF0aW9uKG5vZGUuZHVyYXRpb24pO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFNlZ21lbnQgcmVuZGVyaW5nIChzaGFyZWQgYWNyb3NzIGFsbCB3b3JrZmxvdyBzcGFuIHR5cGVzKVxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmNvbnN0IFNFR01FTlRfTEFCRUxTOiBSZWNvcmQ8U2VnbWVudFN0YXR1cywgc3RyaW5nPiA9IHtcbiAgcXVldWVkOiAnUXVldWVkJyxcbiAgcnVubmluZzogJycsXG4gIGZhaWxlZDogJ0ZhaWxlZCcsXG4gIHJldHJ5aW5nOiAnUmV0cnkgd2FpdCcsXG4gIHN1Y2NlZWRlZDogJ0V4ZWN1dGVkJyxcbiAgd2FpdGluZzogJ1dhaXRpbmcnLFxuICBzbGVlcGluZzogJ1NsZWVwaW5nJyxcbiAgcmVjZWl2ZWQ6ICdSZWNlaXZlZCcsXG59O1xuXG5mdW5jdGlvbiBTZWdtZW50TGF5ZXIoe1xuICBzZWdtZW50cyxcbiAgc3BhbkR1cmF0aW9uLFxufToge1xuICBzZWdtZW50czogU2VnbWVudFtdO1xuICBzcGFuRHVyYXRpb246IG51bWJlcjtcbn0pOiBSZWFjdE5vZGUge1xuICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuc2VnbWVudExheWVyfT5cbiAgICAgIHtzZWdtZW50cy5tYXAoKHNlZywgaSkgPT4ge1xuICAgICAgICBjb25zdCBjbGFzc05hbWUgPVxuICAgICAgICAgIHN0eWxlc1tTRUdNRU5UX0NMQVNTX01BUFtzZWcuc3RhdHVzXSBhcyBrZXlvZiB0eXBlb2Ygc3R5bGVzXTtcbiAgICAgICAgY29uc3Qgc2VnRHVyYXRpb24gPVxuICAgICAgICAgIChzZWcuZW5kRnJhY3Rpb24gLSBzZWcuc3RhcnRGcmFjdGlvbikgKiBzcGFuRHVyYXRpb247XG4gICAgICAgIGNvbnN0IGxhYmVsID0gU0VHTUVOVF9MQUJFTFNbc2VnLnN0YXR1c107XG4gICAgICAgIGNvbnN0IHN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgIGxlZnQ6IGAke3NlZy5zdGFydEZyYWN0aW9uICogMTAwfSVgLFxuICAgICAgICAgIHdpZHRoOiBgJHsoc2VnLmVuZEZyYWN0aW9uIC0gc2VnLnN0YXJ0RnJhY3Rpb24pICogMTAwfSVgLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAga2V5PXtgc2VnLSR7c2VnLnN0YXR1c30tJHtTdHJpbmcoaSl9YH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlZ21lbnR9ICR7U3RyaW5nKGNsYXNzTmFtZSl9YH1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgICAgICA/IGAke2xhYmVsfSAke2Zvcm1hdER1cmF0aW9uKHNlZ0R1cmF0aW9uKX1gXG4gICAgICAgICAgICAgICAgOiBmb3JtYXREdXJhdGlvbihzZWdEdXJhdGlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbi8qKiBCdWlsZCBpbmxpbmUgc2VnbWVudCB0YWdzIHRvIHJlbmRlciBuZXh0IHRvIHRoZSBzcGFuIG5hbWUuICovXG5mdW5jdGlvbiBnZXRTZWdtZW50VGFncyhcbiAgc2VnbWVudHM6IFNlZ21lbnRbXSxcbiAgc3BhbkR1cmF0aW9uOiBudW1iZXJcbik6IHsgbGFiZWw6IHN0cmluZzsgZHVyYXRpb246IHN0cmluZyB9W10ge1xuICBjb25zdCB0YWdzOiB7IGxhYmVsOiBzdHJpbmc7IGR1cmF0aW9uOiBzdHJpbmcgfVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBzZWcgPSBzZWdtZW50c1tpXTtcbiAgICBjb25zdCBsYWJlbCA9IFNFR01FTlRfTEFCRUxTW3NlZy5zdGF0dXNdO1xuICAgIGlmICghbGFiZWwpIGNvbnRpbnVlOyAvLyBza2lwIFwicnVubmluZ1wiIHdoaWNoIGhhcyBubyBsYWJlbFxuICAgIGxldCBzZWdEdXJhdGlvbiA9IChzZWcuZW5kRnJhY3Rpb24gLSBzZWcuc3RhcnRGcmFjdGlvbikgKiBzcGFuRHVyYXRpb247XG5cbiAgICAvLyBGb3IgdGVybWluYWwgc2VnbWVudHMgKHN1Y2NlZWRlZC9mYWlsZWQpIHdpdGggfjAgZHVyYXRpb24sXG4gICAgLy8gdXNlIHRoZSBwcmVjZWRpbmcgcnVubmluZyBzZWdtZW50J3MgZHVyYXRpb24gaW5zdGVhZC5cbiAgICBpZiAoXG4gICAgICBzZWdEdXJhdGlvbiA8IDEgJiZcbiAgICAgIChzZWcuc3RhdHVzID09PSAnc3VjY2VlZGVkJyB8fCBzZWcuc3RhdHVzID09PSAnZmFpbGVkJykgJiZcbiAgICAgIGkgPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCBwcmV2ID0gc2VnbWVudHNbaSAtIDFdO1xuICAgICAgaWYgKHByZXYuc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgICAgc2VnRHVyYXRpb24gPSAocHJldi5lbmRGcmFjdGlvbiAtIHByZXYuc3RhcnRGcmFjdGlvbikgKiBzcGFuRHVyYXRpb247XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2tpcCB0YWdzIHRoYXQgc3RpbGwgaGF2ZSBubyBtZWFuaW5nZnVsIGR1cmF0aW9uXG4gICAgaWYgKHNlZ0R1cmF0aW9uIDwgMSkgY29udGludWU7XG5cbiAgICB0YWdzLnB1c2goeyBsYWJlbCwgZHVyYXRpb246IGZvcm1hdER1cmF0aW9uKHNlZ0R1cmF0aW9uKSB9KTtcbiAgfVxuICByZXR1cm4gdGFncztcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBUZXh0IGNvbnRlbnQgKHNoYXJlZCBsYWJlbCArIGR1cmF0aW9uIHJlbmRlcmluZylcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5mdW5jdGlvbiBUZXh0Q29udGVudCh7XG4gIG5vZGUsXG4gIGxheW91dCxcbiAgZHVyYXRpb25NcyxcbiAgc2VnbWVudFRhZ3MsXG59OiBTcGFuQ29udGVudFByb3BzICYge1xuICBzZWdtZW50VGFncz86IHsgbGFiZWw6IHN0cmluZzsgZHVyYXRpb246IHN0cmluZyB9W107XG59KTogUmVhY3ROb2RlIHtcbiAgY29uc3QgZHVyYXRpb24gPSBub2RlLmlzSW5zdHJ1bWVudGF0aW9uSGludFxuICAgID8gZ2V0RHVyYXRpb24obm9kZSlcbiAgICA6IGZvcm1hdER1cmF0aW9uKGR1cmF0aW9uTXMgPz8gbm9kZS5kdXJhdGlvbik7XG5cbiAgaWYgKGxheW91dC5pc1NtYWxsICYmICFsYXlvdXQuaXNIb3ZlcmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzaG93VGFncyA9XG4gICAgc2VnbWVudFRhZ3MgJiZcbiAgICBzZWdtZW50VGFncy5sZW5ndGggPiAwICYmXG4gICAgKGxheW91dC5pc0hvdmVyZWQgfHwgbGF5b3V0LndpZHRoID4gMjAwKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zcGFuTmFtZX0+XG4gICAgICAgIHtub2RlLmxhYmVsIHx8IG5vZGUuc3Bhbi5uYW1lfVxuICAgICAgICB7c2hvd1RhZ3NcbiAgICAgICAgICA/IHNlZ21lbnRUYWdzLm1hcCgodGFnLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxzcGFuIGtleT17aX0gY2xhc3NOYW1lPXtzdHlsZXMuc2VnbWVudFRhZ30+XG4gICAgICAgICAgICAgICAgeycgwrcgJ31cbiAgICAgICAgICAgICAgICB7dGFnLmxhYmVsfSB7dGFnLmR1cmF0aW9ufVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICApKVxuICAgICAgICAgIDogbnVsbH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtsYXlvdXQuaXNIdWdlID8gPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3BhblNwYWNlcn0gLz4gOiBudWxsfVxuICAgICAge2xheW91dC5pc0hvdmVyZWQgfHwgbGF5b3V0LndpZHRoID4gMTI4ID8gKFxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zcGFuRHVyYXRpb259PntkdXJhdGlvbn08L3NwYW4+XG4gICAgICApIDogbnVsbH1cbiAgICA8Lz5cbiAgKTtcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBDb250ZW50IHByb3BzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IGludGVyZmFjZSBTcGFuQ29udGVudFByb3BzIHtcbiAgbm9kZTogU3Bhbk5vZGU7XG4gIGxheW91dDogU3BhbkxheW91dDtcbiAgZHVyYXRpb25Ncz86IG51bWJlcjtcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBEZWZhdWx0IGNvbnRlbnQgKGdlbmVyaWMgT1RFTCBzcGFucyDigJQgbm8gc2VnbWVudHMpXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZnVuY3Rpb24gRGVmYXVsdENvbnRlbnQoeyBub2RlLCBsYXlvdXQgfTogU3BhbkNvbnRlbnRQcm9wcyk6IFJlYWN0Tm9kZSB7XG4gIHJldHVybiA8VGV4dENvbnRlbnQgbm9kZT17bm9kZX0gbGF5b3V0PXtsYXlvdXR9IC8+O1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFdvcmtmbG93IGNvbnRlbnQgKHNlZ21lbnRzICsgdGV4dCBmb3Igd29ya2Zsb3cgc3BhbiB0eXBlcylcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5mdW5jdGlvbiBXb3JrZmxvd0NvbnRlbnQoe1xuICByZXNvdXJjZVR5cGUsXG4gIG5vZGUsXG4gIGxheW91dCxcbiAgZHVyYXRpb25Ncyxcbn06IFNwYW5Db250ZW50UHJvcHMgJiB7IHJlc291cmNlVHlwZTogUmVzb3VyY2VUeXBlIH0pOiBSZWFjdE5vZGUge1xuICBjb25zdCBzcGFuRHVyYXRpb24gPSBkdXJhdGlvbk1zID8/IG5vZGUuZHVyYXRpb247XG4gIGNvbnN0IHsgc2VnbWVudHMgfSA9IGNvbXB1dGVTZWdtZW50cyhyZXNvdXJjZVR5cGUsIG5vZGUpO1xuICBjb25zdCBzZWdtZW50VGFncyA9IGdldFNlZ21lbnRUYWdzKHNlZ21lbnRzLCBzcGFuRHVyYXRpb24pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTZWdtZW50TGF5ZXIgc2VnbWVudHM9e3NlZ21lbnRzfSBzcGFuRHVyYXRpb249e3NwYW5EdXJhdGlvbn0gLz5cbiAgICAgIDxUZXh0Q29udGVudFxuICAgICAgICBkdXJhdGlvbk1zPXtzcGFuRHVyYXRpb259XG4gICAgICAgIG5vZGU9e25vZGV9XG4gICAgICAgIGxheW91dD17bGF5b3V0fVxuICAgICAgICBzZWdtZW50VGFncz17c2VnbWVudFRhZ3N9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFBlci10eXBlIGNvbnRlbnQgY29tcG9uZW50c1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCBmdW5jdGlvbiBSdW5Db250ZW50KHByb3BzOiBTcGFuQ29udGVudFByb3BzKTogUmVhY3ROb2RlIHtcbiAgcmV0dXJuIDxXb3JrZmxvd0NvbnRlbnQgcmVzb3VyY2VUeXBlPVwicnVuXCIgey4uLnByb3BzfSAvPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFN0ZXBDb250ZW50KHByb3BzOiBTcGFuQ29udGVudFByb3BzKTogUmVhY3ROb2RlIHtcbiAgcmV0dXJuIDxXb3JrZmxvd0NvbnRlbnQgcmVzb3VyY2VUeXBlPVwic3RlcFwiIHsuLi5wcm9wc30gLz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIb29rQ29udGVudChwcm9wczogU3BhbkNvbnRlbnRQcm9wcyk6IFJlYWN0Tm9kZSB7XG4gIHJldHVybiA8V29ya2Zsb3dDb250ZW50IHJlc291cmNlVHlwZT1cImhvb2tcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2xlZXBDb250ZW50KHByb3BzOiBTcGFuQ29udGVudFByb3BzKTogUmVhY3ROb2RlIHtcbiAgcmV0dXJuIDxXb3JrZmxvd0NvbnRlbnQgcmVzb3VyY2VUeXBlPVwic2xlZXBcIiB7Li4ucHJvcHN9IC8+O1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIERpc3BhdGNoZXJcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIFJldHVybnMgdGhlIGlubmVyIGNvbnRlbnQgZm9yIGEgc3BhbiBiYXNlZCBvbiBpdHMgcmVzb3VyY2UgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNwYW5Db250ZW50KHtcbiAgcmVzb3VyY2VUeXBlLFxuICAuLi5wcm9wc1xufTogU3BhbkNvbnRlbnRQcm9wcyAmIHsgcmVzb3VyY2VUeXBlOiBSZXNvdXJjZVR5cGUgfSk6IFJlYWN0Tm9kZSB7XG4gIHN3aXRjaCAocmVzb3VyY2VUeXBlKSB7XG4gICAgY2FzZSAncnVuJzpcbiAgICAgIHJldHVybiA8UnVuQ29udGVudCB7Li4ucHJvcHN9IC8+O1xuICAgIGNhc2UgJ3N0ZXAnOlxuICAgICAgcmV0dXJuIDxTdGVwQ29udGVudCB7Li4ucHJvcHN9IC8+O1xuICAgIGNhc2UgJ2hvb2snOlxuICAgICAgcmV0dXJuIDxIb29rQ29udGVudCB7Li4ucHJvcHN9IC8+O1xuICAgIGNhc2UgJ3NsZWVwJzpcbiAgICAgIHJldHVybiA8U2xlZXBDb250ZW50IHsuLi5wcm9wc30gLz47XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiA8RGVmYXVsdENvbnRlbnQgey4uLnByb3BzfSAvPjtcbiAgfVxufVxuIl19
@@ -282,4 +282,4 @@ export function PanelResizer() {
282
282
  }, [dispatch]);
283
283
  return (_jsx("div", { "aria-hidden": true, className: styles.spanDetailPanelResizer, onDoubleClick: onDoubleClick, onPointerDown: onPointerDown }));
284
284
  }
285
- //# sourceMappingURL=span-detail-panel.js.map
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhbi1kZXRhaWwtcGFuZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy90cmFjZS12aWV3ZXIvY29tcG9uZW50cy9zcGFuLWRldGFpbC1wYW5lbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUViLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUIsT0FBTyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFDTCxZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLGNBQWMsR0FDZixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLE1BQU0sTUFBTSw0QkFBNEIsQ0FBQztBQVNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQy9DLE9BQU8sRUFDTCxVQUFVLEVBQ1YsZUFBZSxFQUNmLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsSUFBSSxFQUNKLElBQUksRUFDSixRQUFRLEdBQ1QsTUFBTSxNQUFNLENBQUM7QUFFZCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQVMsRUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQWFyRSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQVUsRUFBRTtJQUNoRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNWLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO1NBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQzNCLFVBQThCLEVBQ1YsRUFBRTtJQUN0Qiw2Q0FBNkM7SUFDN0MsTUFBTSxNQUFNLEdBQXFDLEVBQUUsQ0FBQztJQUNwRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3RELE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNwQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxLQUFLLEdBQUc7Z0JBQ04sTUFBTTtnQkFDTixVQUFVLEVBQUUsRUFBRTthQUNmLENBQUM7WUFDRixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7UUFDRCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNwQixHQUFHO1lBQ0gsTUFBTTtZQUNOLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQzdELFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDN0IsQ0FBQztJQUNGLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsdUZBQXVGO0FBQ3ZGLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBZSxFQUFFLEtBQXNCLEVBQWMsRUFBRTtJQUMzRSxNQUFNLE1BQU0sR0FBZSxFQUFFLENBQUM7SUFFOUIsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUUxQixLQUFLLElBQUksSUFBSSxHQUFjLEtBQUssRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxFQUFFO0lBQ3RDLE1BQU0sRUFDSixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsRUFDckQsUUFBUSxHQUNULEdBQUcsY0FBYyxFQUFFLENBQUM7SUFFckIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUN2QixHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUNsQyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FDakIsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FDN0IsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEVBQzNELENBQUMsUUFBUSxDQUFDLENBQ1gsQ0FBQztJQUVGLE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRTtRQUMzQyxNQUFNLFlBQVksR0FBRyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzdCLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxrQkFBa0I7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNuQyxPQUFPLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFNUIsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQztJQUUzQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBRTFCLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWhELE9BQU8sQ0FDTCw4QkFDRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFDLG9CQUFvQixJQUFDLElBQUksRUFBRSxRQUFRLEdBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNuRSxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUMsbUJBQW1CLEtBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUMvRCxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUNyRCxLQUFDLFdBQVcsSUFBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUMsVUFBVSxZQUMxRCxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUN2QixrQkFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFFOUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNaLFFBQVEsQ0FBQzt3QkFDUCxJQUFJLEVBQUUsUUFBUTt3QkFDZCxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO3FCQUNyQixDQUFDLEVBRUosSUFBSSxFQUFDLFFBQVEsYUFFYixlQUFLLFNBQVMsRUFBRSxNQUFNLENBQUMsWUFBWSxhQUNqQyxlQUFNLFNBQVMsRUFBRSxNQUFNLENBQUMsWUFBWSxZQUNqQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUN4QixFQUNQLGVBQU0sU0FBUyxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsWUFDckMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FDekIsSUFDSCxFQUNOLG9DQUFrQixTQUFTLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixZQUN2RCxlQUNFLFNBQVMsRUFBRSxJQUFJLENBQ2IsTUFBTSxDQUFDLFlBQVksRUFDbkIscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQzVCLEVBQ0QsS0FBSyxFQUFFO29DQUNMLElBQUksRUFBRSxVQUFVLENBQ2QsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUNsRDtvQ0FDRCxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztpQ0FDakQsR0FDRCxHQUNHLEtBOUJGLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0ErQjNDLENBQ1YsQ0FBQyxHQUNVLENBQ2YsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNQLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDYixLQUFDLGNBQWMsSUFBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxHQUFJLENBQ3RFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDUCxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDekIsS0FBQyxXQUFXLElBQUMsSUFBSSxFQUFDLFFBQVEsWUFDdkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQzlCLE1BQUMsUUFBUSxlQUNQLGNBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyx3QkFBd0IsYUFDNUMsYUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLDJCQUEyQixZQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FDZCxFQUNMLGFBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyw2QkFBNkIsWUFDaEQsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUM5QyxJQUNGLEVBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUM1RCxLQUFDLFVBQVUsSUFFVCxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUUsRUFDbEMsS0FBSyxFQUFFLEtBQUssSUFGUCxHQUFHLENBR1IsQ0FDSCxDQUFDLEtBZlcsS0FBSyxDQUFDLEdBQUcsQ0FnQmIsQ0FDWixDQUFDLEdBQ1UsQ0FDZixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQ1AsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDeEIsS0FBQyxXQUFXLElBQUMsSUFBSSxFQUFDLFlBQVksWUFDM0IsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDOUIsS0FBQyxRQUFRLGNBQ04sS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FDeEMsS0FBQyxVQUFVLElBQVcsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUE1QixHQUFHLENBQTZCLENBQ2xELENBQUMsSUFIVyxLQUFLLENBQUMsTUFBTSxDQUloQixDQUNaLENBQUMsR0FDVSxDQUNmLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDUCx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQ2hDLEtBQUMsV0FBVyxJQUFDLElBQUksRUFBQyxVQUFVLFlBQ3pCLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDdEMsS0FBQyxRQUFRLGNBQ04sS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FDeEMsS0FBQyxVQUFVLElBQVcsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUE1QixHQUFHLENBQTZCLENBQ2xELENBQUMsSUFIVyxLQUFLLENBQUMsTUFBTSxDQUloQixDQUNaLENBQUMsR0FDVSxDQUNmLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDUCxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDdkMsTUFBQyxXQUFXLElBQUMsSUFBSSxFQUFDLFNBQVMsYUFDekIsS0FBQyxVQUFVLElBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUksRUFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQ3RCLEtBQUMsVUFBVSxJQUFDLElBQUksRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFJLENBQzNELENBQUMsQ0FBQyxDQUFDLElBQUksSUFDSSxDQUNmLElBQ0EsQ0FDSixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUM5QixRQUFRLEdBQUcsS0FBSyxHQUdqQjtJQUNDLE1BQU0sRUFDSixLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQzdCLFFBQVEsR0FDVCxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ3JCLE1BQU0sb0JBQW9CLEdBQUcsdUJBQXVCLEVBQUUsQ0FBQztJQUV2RCxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRTNCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUM7SUFFMUIsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFFBQVEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQ3BFLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBQyxZQUFZLEtBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNoRCxjQUFLLFNBQVMsRUFBRSxNQUFNLENBQUMsa0JBQWtCLFlBQ3ZDLGVBQUssU0FBUyxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsYUFFM0MsZUFBTSxTQUFTLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxZQUMxRCxJQUFJLENBQUMsSUFBSSxHQUNMLEVBRVAsZUFBSyxTQUFTLEVBQUUsTUFBTSxDQUFDLHFCQUFxQixhQUN6QyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDdkMsZUFBTSxTQUFTLEVBQUUsTUFBTSxDQUFDLHVCQUF1QixZQUM1QyxjQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUM3QixDQUNSLEVBQ0QsY0FBSyxTQUFTLEVBQUUsTUFBTSxDQUFDLGdDQUFnQyxHQUFJLEVBQzNELCtCQUNhLG9CQUFvQixFQUMvQixTQUFTLEVBQUUsTUFBTSxDQUFDLG9CQUFvQixFQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ1osUUFBUSxDQUFDO3dDQUNQLElBQUksRUFBRSxVQUFVO3FDQUNqQixDQUFDLEVBRUosSUFBSSxFQUFDLFFBQVEsWUFFYixLQUFDLFNBQVMsSUFBQyxLQUFLLEVBQUMsVUFBVSxFQUFDLElBQUksRUFBRSxFQUFFLEdBQUksR0FDakMsSUFDTCxJQUNGLEdBQ0YsRUFDTixjQUFLLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxZQUMzRCxvQkFBb0IsSUFBSSxLQUFDLG1CQUFtQixLQUFHLEdBQzVDLElBQ0YsQ0FDUCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sMkJBQTJCLEdBQUcsb0JBQW9CLENBQUM7QUFFekQsU0FBUyxXQUFXLENBQUMsRUFDbkIsSUFBSSxFQUNKLFNBQVMsR0FBRyxFQUFFLEVBQ2QsUUFBUSxHQUtUO0lBQ0MsTUFBTSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ2hELElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxVQUFVLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNqRCxPQUFPLENBQ0wsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLDJCQUEyQixHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxDQUN0RSxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ3RDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xCLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFCLFlBQVksQ0FBQyxPQUFPLENBQ2xCLEdBQUcsMkJBQTJCLEdBQUcsSUFBSSxFQUFFLEVBQ3ZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FDL0IsQ0FBQztZQUNGLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVYLE9BQU8sQ0FDTCxlQUNFLFNBQVMsRUFBRSxJQUFJLENBQ2IsTUFBTSxDQUFDLFdBQVcsRUFDbEIsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUMvQyxTQUFTLENBQ1YsYUFFRCxrQkFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLGFBQWEsRUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFDdkIsSUFBSSxFQUFDLFFBQVEsYUFFYix5QkFBTyxJQUFJLEdBQVEsRUFDbkIsS0FBQyxlQUFlLEtBQUcsSUFDWixFQUNSLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQ3pCLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUM5QixTQUFTO0lBQ1QsTUFBTTtJQUNOLEtBQUs7SUFDTCxLQUFLO0lBQ0wsTUFBTTtJQUNOLFFBQVE7Q0FDVCxDQUFDLENBQUM7QUFDSCxNQUFNLFVBQVUsR0FBMkI7SUFDekMsb0JBQW9CLEVBQUUsaUZBQWlGO0lBQ3ZHLGVBQWUsRUFBRSxvRkFBb0Y7SUFDckcsZUFBZSxFQUFFLHFHQUFxRztJQUN0SCxtQkFBbUIsRUFBRSw4REFBOEQ7SUFDbkYsaUJBQWlCLEVBQUUsbUVBQW1FO0lBQ3RGLFNBQVMsRUFBRSx3REFBd0Q7SUFDbkUsVUFBVSxFQUFFLG1GQUFtRjtJQUMvRixlQUFlLEVBQUUsb0VBQW9FO0lBQ3JGLGNBQWMsRUFBRSxtRUFBbUU7SUFDbkYsZ0JBQWdCLEVBQUUsNEVBQTRFO0NBQy9GLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ2pDLFVBQVU7SUFDVixlQUFlO0lBQ2YsY0FBYztJQUNkLGdCQUFnQjtDQUNqQixDQUFDLENBQUM7QUFFSCxNQUFNLFNBQVMsR0FBRyxDQUNoQixJQUE0QyxFQUM3QixFQUFFO0lBQ2pCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN2RSxJQUFJLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBYyxFQUFhLEVBQUU7SUFDNUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFNUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ2xFLE9BQU8sNkNBQTZDLENBQUM7SUFDdkQsQ0FBQztTQUFNLElBQ0wsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUM1QixDQUFDLElBQUksS0FBSyxpQkFBaUI7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDakUsQ0FBQztRQUNELE9BQU8seUNBQXlDLENBQUM7SUFDbkQsQ0FBQztTQUFNLElBQUksTUFBTSxJQUFJLFlBQVksSUFBSSxNQUFNLEtBQUssWUFBWSxFQUFFLENBQUM7UUFDN0QsT0FBTyx5Q0FBeUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBYyxFQUFXLEVBQUU7SUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDakMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNoRCxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDO0FBRUYsU0FBUyxvQkFBb0IsQ0FBQyxFQUFFLElBQUksRUFBc0I7SUFDeEQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0IsSUFBSSxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQyxXQUFXLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxXQUFXLEdBQUcsMkVBQTJFLENBQUM7SUFDNUYsQ0FBQztJQUVELElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFOUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNCLE9BQU8sQ0FDTCxLQUFDLFdBQVcsSUFBQyxJQUFJLEVBQUMsZUFBZSxZQUMvQixlQUFLLFNBQVMsRUFBRSxNQUFNLENBQUMsb0JBQW9CLGFBQ3pDLHlCQUFPLFdBQVcsR0FBUSxFQUN6QixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUMsSUFBSSxjQUFFLElBQUksR0FBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQzlCLEdBQ00sQ0FDZixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLGNBQWMsQ0FBQyxFQUNsRCxhQUFhLEVBQ2IsSUFBSSxHQUlMO0lBQ0MsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRS9CLE9BQU8sQ0FDTCxLQUFDLFdBQVcsSUFBQyxJQUFJLEVBQUMsT0FBTyxZQUN0QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQzdCLEtBQUMsYUFBYSxJQUFXLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBM0IsR0FBRyxDQUE0QixDQUNwRCxDQUFDLEdBQ1UsQ0FDZixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFPSCxTQUFTLFVBQVUsQ0FBSSxPQUE2QjtJQUNsRCxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQyxNQUFNLFNBQVMsR0FDYixPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVM7UUFDckMsT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUM7SUFDeEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksU0FBUztZQUFFLE9BQU87UUFFdEIsT0FBTzthQUNKLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2QsT0FBTyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDYixPQUFPLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztRQUNoQyxDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFekIsT0FBTyxPQUFPLENBQUMsZUFBZSxDQUFDO0FBQ2pDLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxFQUNyQixJQUFJLEVBQ0osSUFBSSxFQUFFLFdBQVcsR0FJbEI7SUFDQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFckMsT0FBTyxDQUNMLE1BQUMsSUFBSSxJQUNILEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUM3QixTQUFTLEVBQUUsSUFBSSxDQUNiLE1BQU0sQ0FBQyx3QkFBd0IsRUFDL0IsTUFBTSxDQUFDLHdCQUF3QixDQUNoQyxFQUNELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsYUFFdEIsZUFBTSxTQUFTLEVBQUUsTUFBTSxDQUFDLDJCQUEyQixZQUFHLElBQUksR0FBUSxFQUNsRSxlQUNFLFNBQVMsRUFBRSxJQUFJLENBQ2IsTUFBTSxDQUFDLDZCQUE2QixFQUNwQyxNQUFNLENBQUMsNkJBQTZCLENBQ3JDLFlBRUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNOLDhCQUNHLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFDLGlCQUFpQixJQUFDLEtBQUssRUFBQyxVQUFVLEdBQUcsSUFDbkQsQ0FDSixDQUFDLENBQUMsQ0FBQyxDQUNGLDhCQUNFLEtBQUMsUUFBUSxJQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBSSxFQUNyRCxLQUFDLFFBQVEsSUFBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sUUFBQyxLQUFLLEVBQUUsRUFBRSxHQUFJLElBQzFDLENBQ0osR0FDSSxJQUNGLENBQ1IsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLG1CQUFtQjtJQUMxQixPQUFPLENBQ0wsS0FBQyxXQUFXLElBQUMsSUFBSSxFQUFDLGVBQWUsWUFDL0IsZUFBSyxTQUFTLEVBQUUsTUFBTSxDQUFDLG9CQUFvQixhQUN6Qyx5QkFBTyxxRkFBcUYsR0FBUSxFQUNwRyxLQUFDLFVBQVUsSUFDVCxJQUFJLEVBQUMsNkRBQTZELEVBQ2xFLElBQUksRUFBQyxPQUFPLEVBQ1osTUFBTSxFQUFDLFFBQVEsNEJBR0osSUFDVCxHQUNNLENBQ2YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxFQUNsQixJQUFJLEVBQ0osS0FBSyxHQUlOO0lBQ0MsT0FBTyxDQUNMLGNBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyx3QkFBd0IsYUFDNUMsYUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLDJCQUEyQixZQUFHLElBQUksR0FBTSxFQUM5RCxhQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsNkJBQTZCLEVBQy9DLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFlBRW5CLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FDWCxJQUNGLENBQ04sQ0FBQztBQUNKLENBQUM7QUFZRDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZO0lBQzFCLE1BQU0sRUFDSixLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFDckIsUUFBUSxHQUNULEdBQUcsY0FBYyxFQUFFLENBQUM7SUFDckIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFtQjtRQUMxQyxLQUFLLEVBQUU7WUFDTCxDQUFDLEVBQUUsQ0FBQztZQUNKLEtBQUssRUFBRSxVQUFVO1NBQ2xCO1FBQ0QsQ0FBQyxFQUFFLENBQUM7UUFDSixLQUFLLEVBQUUsVUFBVTtRQUNqQixNQUFNLEVBQUUsS0FBSztLQUNkLENBQUMsQ0FBQztJQUNILFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztJQUV0QyxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQXNCLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDL0QsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLE9BQU87WUFBRSxPQUFPO1FBQzFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDbEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUNyQyxRQUFRLENBQUM7WUFDUCxJQUFJLEVBQUUsZUFBZTtZQUNyQixLQUFLLEVBQUUsWUFBWSxDQUFDLFVBQVU7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVmLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsTUFBTSxPQUFPLEdBQUcsR0FBUyxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDN0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxRQUFRLENBQUM7Z0JBQ1AsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLEtBQUs7YUFDTixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQW1CLEVBQVEsRUFBRTtZQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFDdkMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDckMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLEdBQVMsRUFBRTtZQUM3QixVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEMsQ0FBQyxDQUFDO1FBRUYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN0RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWxELE9BQU8sR0FBRyxFQUFFO1lBQ1YsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN6RCxNQUFNLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFZixPQUFPLENBQ0wsbUNBRUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsRUFDeEMsYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGFBQWEsR0FDNUIsQ0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgY2xzeCB9IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHR5cGUgeyBQb2ludGVyRXZlbnRIYW5kbGVyLCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgbWVtbyxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgaW5pdGlhbFN0YXRlLFxuICB1c2VDdXN0b21QYW5lbENvbXBvbmVudCxcbiAgdXNlVHJhY2VWaWV3ZXIsXG59IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuLi90cmFjZS12aWV3ZXIubW9kdWxlLmNzcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEdldFF1aWNrTGlua3MsXG4gIFF1aWNrTGlua1ZhbHVlLFxuICBSb290Tm9kZSxcbiAgU3BhbixcbiAgU3Bhbk5vZGUsXG4gIFRyYWNlTm9kZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24gfSBmcm9tICcuLi91dGlsL3RpbWluZyc7XG5pbXBvcnQgeyBnZXRTcGFuQ29sb3JDbGFzc05hbWUgfSBmcm9tICcuL25vZGUnO1xuaW1wb3J0IHtcbiAgQnV0dG9uTGluayxcbiAgSWNvbkNoZXZyb25Eb3duLFxuICBJY29uQ3Jvc3MsXG4gIEljb25FeHRlcm5hbFNtYWxsLFxuICBMaW5rLFxuICBOb3RlLFxuICBTa2VsZXRvbixcbn0gZnJvbSAnLi91aSc7XG5cbmNvbnN0IHBlcmNlbnRhZ2UgPSAobjogbnVtYmVyKTogc3RyaW5nID0+IGAkeygxMDAgKiBuKS50b0ZpeGVkKDMpfSVgO1xuXG5pbnRlcmZhY2UgR3JvdXBlZEF0dHJpYnV0ZSB7XG4gIHByZWZpeDogc3RyaW5nO1xuICBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXTtcbn1cblxuaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIHN1ZmZpeDogc3RyaW5nO1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuY29uc3Qgc29ydFdvcmQgPSAoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIgPT4ge1xuICBpZiAoYSA8IGIpIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn07XG5cbmNvbnN0IGdldEdyb3VwZWRBdHRyaWJ1dGVzID0gKFxuICBhdHRyaWJ1dGVzOiBTcGFuWydhdHRyaWJ1dGVzJ11cbik6IEdyb3VwZWRBdHRyaWJ1dGVbXSA9PiB7XG4gIC8vIEJ1aWxkIGdyb3VwcyBvZiBpdGVtcyB3aXRoIHRoZSBzYW1lIHByZWZpeFxuICBjb25zdCBncm91cHM6IFJlY29yZDxzdHJpbmcsIEdyb3VwZWRBdHRyaWJ1dGU+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpKSB7XG4gICAgY29uc3QgZG90SW5kZXggPSBrZXkuaW5kZXhPZignLicpO1xuICAgIGxldCBwcmVmaXggPSAnJztcbiAgICBsZXQgc3VmZml4ID0gJyc7XG4gICAgaWYgKGRvdEluZGV4ICE9PSAtMSkge1xuICAgICAgcHJlZml4ID0ga2V5LnN1YnN0cmluZygwLCBkb3RJbmRleCk7XG4gICAgICBzdWZmaXggPSBrZXkuc3Vic3RyaW5nKGRvdEluZGV4ICsgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1ZmZpeCA9IGtleTtcbiAgICB9XG5cbiAgICBsZXQgZ3JvdXAgPSBncm91cHNbcHJlZml4XTtcbiAgICBpZiAoIWdyb3VwKSB7XG4gICAgICBncm91cCA9IHtcbiAgICAgICAgcHJlZml4LFxuICAgICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIH07XG4gICAgICBncm91cHNbcHJlZml4XSA9IGdyb3VwO1xuICAgIH1cbiAgICBncm91cC5hdHRyaWJ1dGVzLnB1c2goe1xuICAgICAga2V5LFxuICAgICAgc3VmZml4LFxuICAgICAgdmFsdWU6IFN0cmluZyh2YWx1ZSksXG4gICAgfSk7XG4gIH1cblxuICAvLyBMaXN0IGFuZCBzb3J0IGV2ZXJ5dGhpbmdcbiAgY29uc3QgcmVzdWx0ID0gQXJyYXkuZnJvbShPYmplY3QudmFsdWVzKGdyb3VwcykpLnNvcnQoKGEsIGIpID0+XG4gICAgc29ydFdvcmQoYS5wcmVmaXgsIGIucHJlZml4KVxuICApO1xuICBmb3IgKGNvbnN0IGdyb3VwIG9mIHJlc3VsdCkge1xuICAgIGdyb3VwLmF0dHJpYnV0ZXMuc29ydCgoYSwgYikgPT4gc29ydFdvcmQoYS5zdWZmaXgsIGIuc3VmZml4KSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL25vVW51c2VkRnVuY3Rpb25QYXJhbWV0ZXJzOiBpZ25vcmVkIHVzaW5nIGAtLXN1cHByZXNzYFxuY29uc3QgZ2V0QW5jZXN0b3JzID0gKF9yb290OiBSb290Tm9kZSwgc3RhcnQ6IFNwYW5Ob2RlIHwgbnVsbCk6IFNwYW5Ob2RlW10gPT4ge1xuICBjb25zdCByZXN1bHQ6IFNwYW5Ob2RlW10gPSBbXTtcblxuICBpZiAoIXN0YXJ0KSByZXR1cm4gcmVzdWx0O1xuXG4gIGZvciAobGV0IG5vZGU6IFRyYWNlTm9kZSA9IHN0YXJ0OyAncGFyZW50JyBpbiBub2RlOyBub2RlID0gbm9kZS5wYXJlbnQpIHtcbiAgICByZXN1bHQudW5zaGlmdChub2RlKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgU3BhbkRldGFpbFBhbmVsQm9keSA9ICgpID0+IHtcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7IHJvb3QsIHNlbGVjdGVkLCByZXNvdXJjZU1hcCwgZ2V0UXVpY2tMaW5rcyB9LFxuICAgIGRpc3BhdGNoLFxuICB9ID0gdXNlVHJhY2VWaWV3ZXIoKTtcblxuICBjb25zdCBhbmNlc3RvcnMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFuY2VzdG9ycyhyb290LCBzZWxlY3RlZCksXG4gICAgW3Jvb3QsIHNlbGVjdGVkXVxuICApO1xuXG4gIGNvbnN0IGF0dHJpYnV0ZUdyb3VwcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0R3JvdXBlZEF0dHJpYnV0ZXMoc2VsZWN0ZWQ/LnNwYW4uYXR0cmlidXRlcyA/PyB7fSksXG4gICAgW3NlbGVjdGVkXVxuICApO1xuXG4gIGNvbnN0IHJlc291cmNlQXR0cmlidXRlR3JvdXBzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2VOYW1lID0gc2VsZWN0ZWQ/LnNwYW4ucmVzb3VyY2U7XG4gICAgaWYgKCFyZXNvdXJjZU5hbWUpIHJldHVybiBbXTtcbiAgICBjb25zdCByZXNvdXJjZUF0dHJpYnV0ZXMgPSByZXNvdXJjZU1hcFtyZXNvdXJjZU5hbWVdO1xuICAgIGlmICghcmVzb3VyY2VBdHRyaWJ1dGVzKSByZXR1cm4gW107XG4gICAgcmV0dXJuIGdldEdyb3VwZWRBdHRyaWJ1dGVzKHJlc291cmNlQXR0cmlidXRlcyk7XG4gIH0sIFtyZXNvdXJjZU1hcCwgc2VsZWN0ZWRdKTtcblxuICBpZiAoIXNlbGVjdGVkKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCB7IHNwYW4gfSA9IHNlbGVjdGVkO1xuXG4gIGNvbnN0IGlzRW50cnlTcGFuID0gZGV0ZWN0SXNFbnRyeVNwYW4oc2VsZWN0ZWQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzZWxlY3RlZC5pc1ZlcmNlbCA/IDxJbmZyYVNwYW5EZXNjcmlwdGlvbiBub2RlPXtzZWxlY3RlZH0gLz4gOiBudWxsfVxuICAgICAge3NlbGVjdGVkLmlzSW5zdHJ1bWVudGF0aW9uSGludCA/IDxJbnN0cnVtZW50YXRpb25IaW50IC8+IDogbnVsbH1cbiAgICAgIHshc2VsZWN0ZWQuaXNJbnN0cnVtZW50YXRpb25IaW50ICYmIGFuY2VzdG9ycy5sZW5ndGggPyAoXG4gICAgICAgIDxEZXRhaWxHcm91cCBjbGFzc05hbWU9e3N0eWxlcy5hbmNlc3Rvckdyb3VwfSBuYW1lPVwiTG9jYXRpb25cIj5cbiAgICAgICAgICB7YW5jZXN0b3JzLm1hcCgobm9kZSkgPT4gKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hbmNlc3Rvck5vZGV9XG4gICAgICAgICAgICAgIGtleT17YCR7c2VsZWN0ZWQuc3Bhbi5zcGFuSWR9LiR7bm9kZS5zcGFuLnNwYW5JZH1gfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgICAgaWQ6IG5vZGUuc3Bhbi5zcGFuSWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5hbmNlc3RvclRleHR9PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmFuY2VzdG9yTmFtZX0+XG4gICAgICAgICAgICAgICAgICB7bm9kZS5sYWJlbCB8fCBub2RlLnNwYW4ubmFtZX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuYW5jZXN0b3JEdXJhdGlvbn0+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0RHVyYXRpb24obm9kZS5kdXJhdGlvbil9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW4gY2xhc3NOYW1lPXtzdHlsZXMuYW5jZXN0b3JMaW5lQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICAgICAgICAgICAgICBzdHlsZXMuYW5jZXN0b3JMaW5lLFxuICAgICAgICAgICAgICAgICAgICBnZXRTcGFuQ29sb3JDbGFzc05hbWUobm9kZSlcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBwZXJjZW50YWdlKFxuICAgICAgICAgICAgICAgICAgICAgIChub2RlLnN0YXJ0VGltZSAtIHJvb3Quc3RhcnRUaW1lKSAvIHJvb3QuZHVyYXRpb25cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2Uobm9kZS5kdXJhdGlvbiAvIHJvb3QuZHVyYXRpb24pLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9EZXRhaWxHcm91cD5cbiAgICAgICkgOiBudWxsfVxuICAgICAge2lzRW50cnlTcGFuID8gKFxuICAgICAgICA8RW50cnlTcGFuTGlua3MgZ2V0UXVpY2tMaW5rcz17Z2V0UXVpY2tMaW5rc30gc3Bhbj17c2VsZWN0ZWQuc3Bhbn0gLz5cbiAgICAgICkgOiBudWxsfVxuICAgICAge3NlbGVjdGVkLmV2ZW50cz8ubGVuZ3RoID8gKFxuICAgICAgICA8RGV0YWlsR3JvdXAgbmFtZT1cIkV2ZW50c1wiPlxuICAgICAgICAgIHtzZWxlY3RlZC5ldmVudHMubWFwKChldmVudCkgPT4gKFxuICAgICAgICAgICAgPEZyYWdtZW50IGtleT17ZXZlbnQua2V5fT5cbiAgICAgICAgICAgICAgPGRsIGNsYXNzTmFtZT17c3R5bGVzLnNwYW5EZXRhaWxQYW5lbEF0dHJpYnV0ZX0+XG4gICAgICAgICAgICAgICAgPGR0IGNsYXNzTmFtZT17c3R5bGVzLnNwYW5EZXRhaWxQYW5lbEF0dHJpYnV0ZUtleX0+XG4gICAgICAgICAgICAgICAgICB7ZXZlbnQuZXZlbnQubmFtZX1cbiAgICAgICAgICAgICAgICA8L2R0PlxuICAgICAgICAgICAgICAgIDxkZCBjbGFzc05hbWU9e3N0eWxlcy5zcGFuRGV0YWlsUGFuZWxBdHRyaWJ1dGVWYWx1ZX0+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0RHVyYXRpb24oZXZlbnQudGltZXN0YW1wIC0gcm9vdC5zdGFydFRpbWUpfVxuICAgICAgICAgICAgICAgIDwvZGQ+XG4gICAgICAgICAgICAgIDwvZGw+XG4gICAgICAgICAgICAgIHtPYmplY3QuZW50cmllcyhldmVudC5ldmVudC5hdHRyaWJ1dGVzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKFxuICAgICAgICAgICAgICAgIDxEZXRhaWxMaW5lXG4gICAgICAgICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgICAgICAgIG5hbWU9e2Ake2V2ZW50LmV2ZW50Lm5hbWV9LiR7a2V5fWB9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0RldGFpbEdyb3VwPlxuICAgICAgKSA6IG51bGx9XG4gICAgICB7YXR0cmlidXRlR3JvdXBzLmxlbmd0aCA/IChcbiAgICAgICAgPERldGFpbEdyb3VwIG5hbWU9XCJBdHRyaWJ1dGVzXCI+XG4gICAgICAgICAge2F0dHJpYnV0ZUdyb3Vwcy5tYXAoKGdyb3VwKSA9PiAoXG4gICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtncm91cC5wcmVmaXh9PlxuICAgICAgICAgICAgICB7Z3JvdXAuYXR0cmlidXRlcy5tYXAoKHsga2V5LCB2YWx1ZSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPERldGFpbExpbmUga2V5PXtrZXl9IG5hbWU9e2tleX0gdmFsdWU9e3ZhbHVlfSAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRGV0YWlsR3JvdXA+XG4gICAgICApIDogbnVsbH1cbiAgICAgIHtyZXNvdXJjZUF0dHJpYnV0ZUdyb3Vwcy5sZW5ndGggPyAoXG4gICAgICAgIDxEZXRhaWxHcm91cCBuYW1lPVwiUmVzb3VyY2VcIj5cbiAgICAgICAgICB7cmVzb3VyY2VBdHRyaWJ1dGVHcm91cHMubWFwKChncm91cCkgPT4gKFxuICAgICAgICAgICAgPEZyYWdtZW50IGtleT17Z3JvdXAucHJlZml4fT5cbiAgICAgICAgICAgICAge2dyb3VwLmF0dHJpYnV0ZXMubWFwKCh7IGtleSwgdmFsdWUgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxEZXRhaWxMaW5lIGtleT17a2V5fSBuYW1lPXtrZXl9IHZhbHVlPXt2YWx1ZX0gLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0RldGFpbEdyb3VwPlxuICAgICAgKSA6IG51bGx9XG4gICAgICB7c2VsZWN0ZWQuaXNJbnN0cnVtZW50YXRpb25IaW50ID8gbnVsbCA6IChcbiAgICAgICAgPERldGFpbEdyb3VwIG5hbWU9XCJMaWJyYXJ5XCI+XG4gICAgICAgICAgPERldGFpbExpbmUgbmFtZT1cIm5hbWVcIiB2YWx1ZT17c3Bhbi5saWJyYXJ5Lm5hbWV9IC8+XG4gICAgICAgICAge3NwYW4ubGlicmFyeS52ZXJzaW9uID8gKFxuICAgICAgICAgICAgPERldGFpbExpbmUgbmFtZT1cInZlcnNpb25cIiB2YWx1ZT17c3Bhbi5saWJyYXJ5LnZlcnNpb259IC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvRGV0YWlsR3JvdXA+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNwYW5EZXRhaWxQYW5lbCh7XG4gIGF0dGFjaGVkID0gZmFsc2UsXG59OiB7XG4gIGF0dGFjaGVkPzogYm9vbGVhbjtcbn0pOiBSZWFjdE5vZGUge1xuICBjb25zdCB7XG4gICAgc3RhdGU6IHsgc2VsZWN0ZWQsIGlzTW9iaWxlIH0sXG4gICAgZGlzcGF0Y2gsXG4gIH0gPSB1c2VUcmFjZVZpZXdlcigpO1xuICBjb25zdCBjdXN0b21QYW5lbENvbXBvbmVudCA9IHVzZUN1c3RvbVBhbmVsQ29tcG9uZW50KCk7XG5cbiAgaWYgKCFzZWxlY3RlZCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBzcGFuIH0gPSBzZWxlY3RlZDtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbHN4KHN0eWxlcy5zcGFuRGV0YWlsUGFuZWwsIGlzTW9iaWxlICYmIHN0eWxlcy5tb2JpbGUpfT5cbiAgICAgIHthdHRhY2hlZCAmJiAhaXNNb2JpbGUgPyA8UGFuZWxSZXNpemVyIC8+IDogbnVsbH1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuc3BhbkRldGFpbFBhbmVsVG9wfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5zcGFuRGV0YWlsUGFuZWxUb3BJbmZvfT5cbiAgICAgICAgICB7LyogTmFtZS9JRCBmaXJzdCAqL31cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zcGFuRGV0YWlsUGFuZWxOYW1lfSB0aXRsZT17c3Bhbi5uYW1lfT5cbiAgICAgICAgICAgIHtzcGFuLm5hbWV9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHsvKiBSaWdodCBzaWRlOiBkdXJhdGlvbiBiYWRnZSwgc2VwYXJhdG9yLCBjbG9zZSAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnNwYW5EZXRhaWxQYW5lbENvcm5lcn0+XG4gICAgICAgICAgICB7c2VsZWN0ZWQuaXNJbnN0cnVtZW50YXRpb25IaW50ID8gbnVsbCA6IChcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3BhbkRldGFpbFBhbmVsRHVyYXRpb259PlxuICAgICAgICAgICAgICAgIHtmb3JtYXREdXJhdGlvbihzZWxlY3RlZC5kdXJhdGlvbil9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnNwYW5EZXRhaWxQYW5lbENsb3NlVmVydGljYWxSdWxlfSAvPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgU3BhbiBEZXRhaWxzXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc3BhbkRldGFpbFBhbmVsQ2xvc2V9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ2Rlc2VsZWN0JyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvbkNyb3NzIGNvbG9yPVwiZ3JheS03MDBcIiBzaXplPXsyMH0gLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Nsc3goJ2ZsZXggZ2FwLTMnLCBzdHlsZXMuc3BhbkRldGFpbFBhbmVsQm9keSl9PlxuICAgICAgICB7Y3VzdG9tUGFuZWxDb21wb25lbnQgfHwgPFNwYW5EZXRhaWxQYW5lbEJvZHkgLz59XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3QgRVhQQU5ERURfU1RPUkFHRV9LRVlfUFJFRklYID0gJ3ZjLXRyYWNlLXNwYW4tZXhwOic7XG5cbmZ1bmN0aW9uIERldGFpbEdyb3VwKHtcbiAgbmFtZSxcbiAgY2xhc3NOYW1lID0gJycsXG4gIGNoaWxkcmVuLFxufToge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0pOiBSZWFjdE5vZGUge1xuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgaWYgKCEoJ2xvY2FsU3RvcmFnZScgaW4gZ2xvYmFsVGhpcykpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiAoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgJHtFWFBBTkRFRF9TVE9SQUdFX0tFWV9QUkVGSVh9JHtuYW1lfWApICE9PSAnMCdcbiAgICApO1xuICB9KTtcblxuICBjb25zdCB0b2dnbGVFeHBhbmRlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCh4KSA9PiB7XG4gICAgICBjb25zdCB3aWxsQmVFeHBhbmRlZCA9ICF4O1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgIGAke0VYUEFOREVEX1NUT1JBR0VfS0VZX1BSRUZJWH0ke25hbWV9YCxcbiAgICAgICAgU3RyaW5nKE51bWJlcih3aWxsQmVFeHBhbmRlZCkpXG4gICAgICApO1xuICAgICAgcmV0dXJuIHdpbGxCZUV4cGFuZGVkO1xuICAgIH0pO1xuICB9LCBbbmFtZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICBzdHlsZXMuZGV0YWlsR3JvdXAsXG4gICAgICAgIGlzRXhwYW5kZWQgPyBzdHlsZXMuZXhwYW5kZWQgOiBzdHlsZXMuY29sbGFwc2VkLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZXRhaWxIZWFkaW5nfVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGVFeHBhbmRlZH1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuPntuYW1lfTwvc3Bhbj5cbiAgICAgICAgPEljb25DaGV2cm9uRG93biAvPlxuICAgICAgPC9idXR0b24+XG4gICAgICB7aXNFeHBhbmRlZCA/IGNoaWxkcmVuIDogbnVsbH1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3QgQ29tbW9uSHR0cFZlcmJzID0gbmV3IFNldChbXG4gICdPUFRJT05TJyxcbiAgJ0hFQUQnLFxuICAnR0VUJyxcbiAgJ1BVVCcsXG4gICdQT1NUJyxcbiAgJ0RFTEVURScsXG5dKTtcbmNvbnN0IEtub3duU3BhbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdSZXNvbHZlIERlcGxveW1lbnQnOiBgSG93IGxvbmcgaXQgdG9vayBWZXJjZWwncyByb3V0aW5nIGxheWVyIHRvIHJldHJpZXZlIGRldGFpbHMgZm9yIHRoZSBkZXBsb3ltZW50LmAsXG4gICdSZXNvbHZlIENhY2hlJzogYEhvdyBsb25nIGl0IHRvb2sgVmVyY2VsJ3Mgcm91dGluZyBsYXllciB0byBjaGVjayBmb3IgYSBjYWNoZWQgZnVuY3Rpb24gaW52b2NhdGlvbi5gLFxuICAnUmVzb2x2ZSBSb3V0ZSc6IGBIb3cgbG9uZyBpdCB0b29rIFZlcmNlbCdzIHJvdXRpbmcgbGF5ZXIgdG8gcmVzb2x2ZSByb3V0aW5nIHJ1bGVzLCBpbmNsdWRpbmcgcmVkaXJlY3RzIGFuZCByZXdyaXRlcy5gLFxuICAnSW52b2tlIE1pZGRsZXdhcmUnOiBgSG93IGxvbmcgaXQgdG9vayB0aGlzIG1pZGRsZXdhcmUgdG8gc3RhcnQgYW5kIHJ1biB1c2VyIGNvZGUuYCxcbiAgJ0ludm9rZSBGdW5jdGlvbic6IGBIb3cgbG9uZyBpdCB0b29rIHRoaXMgVmVyY2VsIEZ1bmN0aW9uIHRvIHN0YXJ0IGFuZCBydW4gdXNlciBjb2RlLmAsXG4gIHdhaXRVbnRpbDogYEhvdyBsb25nIGl0IHRvb2sgdG8gcnVuIHVzZXIgY29kZSBpbnNpZGUgb2Ygd2FpdFVudGlsLmAsXG4gICdTdGFydCBWTSc6IGBIb3cgbG9uZyBpdCB0b29rIHRvIHN0YXJ0IHRoZSBWaXJ0dWFsIE1hY2hpbmUgd2hpY2ggY29udGFpbnMgdGhlIFZlcmNlbCBGdW5jdGlvbi5gLFxuICAnU3Bhd24gTm9kZS5qcyc6IGBIb3cgbG9uZyBpdCB0b29rIHRoZSBWaXJ0dWFsIE1hY2hpbmUgdG8gc3RhcnQgdGhlIE5vZGUuanMgcnVudGltZS5gLFxuICAnU3Bhd24gUHl0aG9uJzogYEhvdyBsb25nIGl0IHRvb2sgdGhlIFZpcnR1YWwgTWFjaGluZSB0byBzdGFydCB0aGUgUHl0aG9uIHJ1bnRpbWUuYCxcbiAgJ0luaXQgVXNlciBDb2RlJzogYEhvdyBsb25nIGl0IHRvb2sgdG8gaW1wb3J0IHRoZSB1c2VyIGNvZGUgYW5kIHJ1biBhbnkgZ2xvYmFsbHktc2NvcGVkIGNvZGUuYCxcbn07XG5cbmNvbnN0IENvbGRTdGFydFNwYW5OYW1lcyA9IG5ldyBTZXQoW1xuICAnU3RhcnQgVk0nLFxuICAnU3Bhd24gTm9kZS5qcycsXG4gICdTcGF3biBQeXRob24nLFxuICAnSW5pdCBVc2VyIENvZGUnLFxuXSk7XG5cbmNvbnN0IGdldFJlZ2lvbiA9IChcbiAgbm9kZTogU3Bhbk5vZGUgfCBSb290Tm9kZSB8IG51bGwgfCB1bmRlZmluZWRcbik6IHN0cmluZyB8IG51bGwgPT4ge1xuICBpZiAoIW5vZGUgfHwgISgnc3BhbicgaW4gbm9kZSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGF0dHIgPSBub2RlLnNwYW4uYXR0cmlidXRlcztcbiAgY29uc3QgcmVnaW9uID0gYXR0clsndmVyY2VsLnJlZ2lvbiddIHx8IGF0dHJbJ3ZlcmNlbC5mdW5jdGlvbi5yZWdpb24nXTtcbiAgaWYgKHJlZ2lvbikgcmV0dXJuIFN0cmluZyhyZWdpb24pO1xuICByZXR1cm4gbnVsbDtcbn07XG5cbmNvbnN0IGdldE5vdGUgPSAobm9kZTogU3Bhbk5vZGUpOiBSZWFjdE5vZGUgPT4ge1xuICBjb25zdCB7IG5hbWUgfSA9IG5vZGUuc3BhbjtcbiAgY29uc3QgcmVnaW9uID0gZ2V0UmVnaW9uKG5vZGUpO1xuICBjb25zdCBwYXJlbnRSZWdpb24gPSBnZXRSZWdpb24obm9kZS5wYXJlbnQpO1xuXG4gIGlmIChub2RlLnNwYW4uYXR0cmlidXRlc1sndmVyY2VsLm1pZGRsZXdhcmUuaW50ZXJuYWwnXSA9PT0gJ3RydWUnKSB7XG4gICAgcmV0dXJuICdUaGUgVmVyY2VsIFRvb2xiYXIgY3JlYXRlZCB0aGlzIG1pZGRsZXdhcmUuJztcbiAgfSBlbHNlIGlmIChcbiAgICBDb2xkU3RhcnRTcGFuTmFtZXMuaGFzKG5hbWUpIHx8XG4gICAgKG5hbWUgPT09ICdJbnZva2UgRnVuY3Rpb24nICYmXG4gICAgICBub2RlLmNoaWxkcmVuLnNvbWUoKHgpID0+IENvbGRTdGFydFNwYW5OYW1lcy5oYXMoeC5zcGFuLm5hbWUpKSlcbiAgKSB7XG4gICAgcmV0dXJuICdUaGlzIGZ1bmN0aW9uIGVuY291bnRlcmVkIGEgY29sZCBzdGFydC4nO1xuICB9IGVsc2UgaWYgKHJlZ2lvbiAmJiBwYXJlbnRSZWdpb24gJiYgcmVnaW9uICE9PSBwYXJlbnRSZWdpb24pIHtcbiAgICByZXR1cm4gJ1RoaXMgcmVxdWVzdCB3YXMgcm91dGVkIGFjcm9zcyByZWdpb25zLic7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmNvbnN0IGRldGVjdElzRW50cnlTcGFuID0gKG5vZGU6IFNwYW5Ob2RlKTogYm9vbGVhbiA9PiB7XG4gIGlmICghbm9kZS5pc1ZlcmNlbCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCB7IG5hbWUgfSA9IG5vZGUuc3BhbjtcbiAgY29uc3Qgc3BhY2VJbmRleCA9IG5hbWUuaW5kZXhPZignICcpO1xuICBpZiAoc3BhY2VJbmRleCA9PT0gLTEpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgZmlyc3RXb3JkID0gbmFtZS5zdWJzdHJpbmcoMCwgc3BhY2VJbmRleCk7XG4gIHJldHVybiBDb21tb25IdHRwVmVyYnMuaGFzKGZpcnN0V29yZCk7XG59O1xuXG5mdW5jdGlvbiBJbmZyYVNwYW5EZXNjcmlwdGlvbih7IG5vZGUgfTogeyBub2RlOiBTcGFuTm9kZSB9KTogUmVhY3ROb2RlIHtcbiAgY29uc3QgeyBuYW1lIH0gPSBub2RlLnNwYW47XG4gIGxldCBkZXNjcmlwdGlvbiA9IEtub3duU3BhbnNbbmFtZV07XG5cbiAgaWYgKCFkZXNjcmlwdGlvbiAmJiBkZXRlY3RJc0VudHJ5U3Bhbihub2RlKSkge1xuICAgIGRlc2NyaXB0aW9uID0gYEhvdyBsb25nIGl0IHRvb2sgZm9yIFZlcmNlbCB0byBwcm9jZXNzIHRoZSByZXF1ZXN0IGFuZCBzZW5kIHRoZSByZXNwb25zZS5gO1xuICB9XG5cbiAgaWYgKCFkZXNjcmlwdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgbm90ZSA9IGdldE5vdGUobm9kZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RGV0YWlsR3JvdXAgbmFtZT1cIldoYXQgaXMgdGhpcz9cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaW5mcmFTcGFuRGVzY3JpcHRpb259PlxuICAgICAgICA8c3Bhbj57ZGVzY3JpcHRpb259PC9zcGFuPlxuICAgICAgICB7bm90ZSA/IDxOb3RlPntub3RlfTwvTm90ZT4gOiBub3RlfVxuICAgICAgPC9kaXY+XG4gICAgPC9EZXRhaWxHcm91cD5cbiAgKTtcbn1cblxuY29uc3QgRW50cnlTcGFuTGlua3MgPSBtZW1vKGZ1bmN0aW9uIEVudHJ5U3BhbkxpbmtzKHtcbiAgZ2V0UXVpY2tMaW5rcyxcbiAgc3Bhbixcbn06IHtcbiAgZ2V0UXVpY2tMaW5rczogR2V0UXVpY2tMaW5rcztcbiAgc3BhbjogU3Bhbjtcbn0pOiBSZWFjdE5vZGUge1xuICBjb25zdCBsaW5rcyA9IGdldFF1aWNrTGlua3Moc3Bhbik7XG5cbiAgaWYgKCFsaW5rcy5sZW5ndGgpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPERldGFpbEdyb3VwIG5hbWU9XCJMaW5rc1wiPlxuICAgICAge2xpbmtzLm1hcCgoeyBrZXksIHZhbHVlIH0pID0+IChcbiAgICAgICAgPEVudHJ5U3Bhbkxpbmsga2V5PXtrZXl9IGxpbms9e3ZhbHVlfSBuYW1lPXtrZXl9IC8+XG4gICAgICApKX1cbiAgICA8L0RldGFpbEdyb3VwPlxuICApO1xufSk7XG5cbmludGVyZmFjZSBSZXNvbHZhYmxlUHJvbWlzZTxUPiBleHRlbmRzIFByb21pc2U8VD4ge1xuICBfX3Jlc29sdmVkVmFsdWU/OiBUO1xuICBfX3JlamVjdGVkVmFsdWU/OiB1bmtub3duO1xufVxuXG5mdW5jdGlvbiB1c2VQcm9taXNlPFQ+KHByb21pc2U6IFJlc29sdmFibGVQcm9taXNlPFQ+KTogVCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IFtfLCBzZXRMYXRlc3RdID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBmdWxmaWxsZWQgPVxuICAgIHByb21pc2UuX19yZXNvbHZlZFZhbHVlICE9PSB1bmRlZmluZWQgfHxcbiAgICBwcm9taXNlLl9fcmVqZWN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChmdWxmaWxsZWQpIHJldHVybjtcblxuICAgIHByb21pc2VcbiAgICAgIC50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICBwcm9taXNlLl9fcmVzb2x2ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHByb21pc2UuX19yZWplY3RlZFZhbHVlID0gZXJyO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHNldExhdGVzdCh7fSkpO1xuICB9LCBbcHJvbWlzZSwgZnVsZmlsbGVkXSk7XG5cbiAgcmV0dXJuIHByb21pc2UuX19yZXNvbHZlZFZhbHVlO1xufVxuXG5mdW5jdGlvbiBFbnRyeVNwYW5MaW5rKHtcbiAgbmFtZSxcbiAgbGluazogbGlua1Byb21pc2UsXG59OiB7XG4gIG5hbWU6IHN0cmluZztcbiAgbGluazogUHJvbWlzZTxRdWlja0xpbmtWYWx1ZT47XG59KTogUmVhY3ROb2RlIHtcbiAgY29uc3QgbGluayA9IHVzZVByb21pc2UobGlua1Byb21pc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPExpbmtcbiAgICAgIGFzPXtsaW5rID8gdW5kZWZpbmVkIDogJ3NwYW4nfVxuICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICBzdHlsZXMuc3BhbkRldGFpbFBhbmVsQXR0cmlidXRlLFxuICAgICAgICBzdHlsZXMuc3BhbkRldGFpbFBhbmVsUXVpY2tMaW5rXG4gICAgICApfVxuICAgICAgaHJlZj17bGluaz8uaHJlZiB8fCAnJ31cbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zcGFuRGV0YWlsUGFuZWxBdHRyaWJ1dGVLZXl9PntuYW1lfTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICBzdHlsZXMuc3BhbkRldGFpbFBhbmVsQXR0cmlidXRlVmFsdWUsXG4gICAgICAgICAgc3R5bGVzLnNwYW5EZXRhaWxQYW5lbFF1aWNrTGlua0xhYmVsXG4gICAgICAgICl9XG4gICAgICA+XG4gICAgICAgIHtsaW5rID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7bGluay5sYWJlbH1cbiAgICAgICAgICAgIHtsaW5rLmljb24gfHwgPEljb25FeHRlcm5hbFNtYWxsIGNvbG9yPVwiZ3JheS05MDBcIiAvPn1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNrZWxldG9uIGhlaWdodD17MTh9IHdpZHRoPXszMiArIG5hbWUubGVuZ3RoICogOH0gLz5cbiAgICAgICAgICAgIDxTa2VsZXRvbiBoZWlnaHQ9ezE4fSByb3VuZGVkIHdpZHRoPXsxOH0gLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L0xpbms+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEluc3RydW1lbnRhdGlvbkhpbnQoKTogUmVhY3ROb2RlIHtcbiAgcmV0dXJuIChcbiAgICA8RGV0YWlsR3JvdXAgbmFtZT1cIldoYXQgaXMgdGhpcz9cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaW5mcmFTcGFuRGVzY3JpcHRpb259PlxuICAgICAgICA8c3Bhbj57YFlvdSBjYW4gdmlzdWFsaXplIHlvdXIgYXBwbGljYXRpb24ncyBzcGFucyBhbG9uZ3NpZGUgVmVyY2VsJ3Mgc3BhbnMgaW4gdGhpcyB2aWV3ZXIuYH08L3NwYW4+XG4gICAgICAgIDxCdXR0b25MaW5rXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vdmVyY2VsLmNvbS9kb2NzL3Nlc3Npb24tdHJhY2luZyNhZGRpbmctY3VzdG9tLXNwYW5zXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgID5cbiAgICAgICAgICBHZXQgU3RhcnRlZFxuICAgICAgICA8L0J1dHRvbkxpbms+XG4gICAgICA8L2Rpdj5cbiAgICA8L0RldGFpbEdyb3VwPlxuICApO1xufVxuXG5mdW5jdGlvbiBEZXRhaWxMaW5lKHtcbiAgbmFtZSxcbiAgdmFsdWUsXG59OiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHVua25vd247XG59KTogUmVhY3ROb2RlIHtcbiAgcmV0dXJuIChcbiAgICA8ZGwgY2xhc3NOYW1lPXtzdHlsZXMuc3BhbkRldGFpbFBhbmVsQXR0cmlidXRlfT5cbiAgICAgIDxkdCBjbGFzc05hbWU9e3N0eWxlcy5zcGFuRGV0YWlsUGFuZWxBdHRyaWJ1dGVLZXl9PntuYW1lfTwvZHQ+XG4gICAgICA8ZGRcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc3BhbkRldGFpbFBhbmVsQXR0cmlidXRlVmFsdWV9XG4gICAgICAgIHRpdGxlPXtTdHJpbmcodmFsdWUpfVxuICAgICAgPlxuICAgICAgICB7U3RyaW5nKHZhbHVlKX1cbiAgICAgIDwvZGQ+XG4gICAgPC9kbD5cbiAgKTtcbn1cblxuaW50ZXJmYWNlIFJlc2l6ZUdlc3R1cmVSZWYge1xuICBzdGFydDoge1xuICAgIHg6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICB9O1xuICB4OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGlzSGVsZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXNpemVyIGNvbXBvbmVudCBmb3IgdGhlIHRyYWNlIHZpZXdlciBwYW5lbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBhbmVsUmVzaXplcigpOiBSZWFjdE5vZGUge1xuICBjb25zdCB7XG4gICAgc3RhdGU6IHsgcGFuZWxXaWR0aCB9LFxuICAgIGRpc3BhdGNoLFxuICB9ID0gdXNlVHJhY2VWaWV3ZXIoKTtcbiAgY29uc3QgZ2VzdHVyZVJlZiA9IHVzZVJlZjxSZXNpemVHZXN0dXJlUmVmPih7XG4gICAgc3RhcnQ6IHtcbiAgICAgIHg6IDAsXG4gICAgICB3aWR0aDogcGFuZWxXaWR0aCxcbiAgICB9LFxuICAgIHg6IDAsXG4gICAgd2lkdGg6IHBhbmVsV2lkdGgsXG4gICAgaXNIZWxkOiBmYWxzZSxcbiAgfSk7XG4gIGdlc3R1cmVSZWYuY3VycmVudC53aWR0aCA9IHBhbmVsV2lkdGg7XG5cbiAgY29uc3Qgb25Qb2ludGVyRG93biA9IHVzZUNhbGxiYWNrPFBvaW50ZXJFdmVudEhhbmRsZXI+KChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC5wb2ludGVyVHlwZSAhPT0gJ21vdXNlJykgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgZyA9IGdlc3R1cmVSZWYuY3VycmVudDtcbiAgICBnLnN0YXJ0LnggPSBldmVudC5jbGllbnRYO1xuICAgIGcueCA9IGV2ZW50LmNsaWVudFg7XG4gICAgZy5zdGFydC53aWR0aCA9IGcud2lkdGg7XG4gICAgZy5pc0hlbGQgPSB0cnVlO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25Eb3VibGVDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnc2V0UGFuZWxXaWR0aCcsXG4gICAgICB3aWR0aDogaW5pdGlhbFN0YXRlLnBhbmVsV2lkdGgsXG4gICAgfSk7XG4gIH0sIFtkaXNwYXRjaF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IG5leHRGcmFtZSA9IDA7XG4gICAgY29uc3Qgb25GcmFtZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IGcgPSBnZXN0dXJlUmVmLmN1cnJlbnQ7XG4gICAgICBjb25zdCB3aWR0aCA9IGcuc3RhcnQud2lkdGggKyBnLnN0YXJ0LnggLSBnLng7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6ICdzZXRQYW5lbFdpZHRoJyxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25Qb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCA9PiB7XG4gICAgICBpZiAoIWdlc3R1cmVSZWYuY3VycmVudC5pc0hlbGQpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBnZXN0dXJlUmVmLmN1cnJlbnQueCA9IGV2ZW50LmNsaWVudFg7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShuZXh0RnJhbWUpO1xuICAgICAgbmV4dEZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpO1xuICAgIH07XG4gICAgY29uc3Qgb25Qb2ludGVyVXAgPSAoKTogdm9pZCA9PiB7XG4gICAgICBnZXN0dXJlUmVmLmN1cnJlbnQuaXNIZWxkID0gZmFsc2U7XG4gICAgfTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIG9uUG9pbnRlck1vdmUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBvblBvaW50ZXJVcCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgb25Qb2ludGVyTW92ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgb25Qb2ludGVyVXApO1xuICAgIH07XG4gIH0sIFtkaXNwYXRjaF0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgYXJpYS1oaWRkZW5cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNwYW5EZXRhaWxQYW5lbFJlc2l6ZXJ9XG4gICAgICBvbkRvdWJsZUNsaWNrPXtvbkRvdWJsZUNsaWNrfVxuICAgICAgb25Qb2ludGVyRG93bj17b25Qb2ludGVyRG93bn1cbiAgICAvPlxuICApO1xufVxuIl19
@@ -442,4 +442,4 @@ export function computeSegments(resourceType, node) {
442
442
  return { segments: [], boundaries: [] };
443
443
  }
444
444
  }
445
- //# sourceMappingURL=span-segments.js.map
445
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhbi1zZWdtZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RyYWNlLXZpZXdlci9jb21wb25lbnRzL3NwYW4tc2VnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbURBLDZFQUE2RTtBQUM3RSw2REFBNkQ7QUFDN0QsNkVBQTZFO0FBRTdFOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFrQztJQUM5RCxNQUFNLEVBQUUsV0FBVztJQUNuQixPQUFPLEVBQUUsWUFBWTtJQUNyQixNQUFNLEVBQUUsV0FBVztJQUNuQixRQUFRLEVBQUUsYUFBYTtJQUN2QixTQUFTLEVBQUUsY0FBYztJQUN6QixPQUFPLEVBQUUsWUFBWTtJQUNyQixRQUFRLEVBQUUsYUFBYTtJQUN2QixRQUFRLEVBQUUsYUFBYTtDQUN4QixDQUFDO0FBRUYsNkVBQTZFO0FBQzdFLFVBQVU7QUFDViw2RUFBNkU7QUFFN0UsU0FBUyxhQUFhLENBQUMsS0FBYTtJQUNsQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixJQUFZLEVBQ1osU0FBaUIsRUFDakIsWUFBb0I7SUFFcEIsSUFBSSxZQUFZLElBQUksQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sYUFBYSxDQUFDLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsWUFBWSxDQUFDLE1BQXVCO0lBQzNDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FB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YixnQkFBZ0I7aUJBQ2pCLENBQUM7YUFDSCxDQUFDO1FBQ0osS0FBSyxNQUFNO1lBQ1QsT0FBTztnQkFDTCxRQUFRLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2dCQUNuQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxFQUFFO29CQUNsQyxjQUFjO29CQUNkLGVBQWU7b0JBQ2YsZUFBZTtpQkFDaEIsQ0FBQzthQUNILENBQUM7UUFDSixLQUFLLE9BQU87WUFDVixPQUFPO2dCQUNMLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzthQUN4RSxDQUFDO1FBQ0osS0FBSyxLQUFLO1lBQ1IsT0FBTztnQkFDTCxRQUFRLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDO2dCQUNsQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO2FBQ3JFLENBQUM7UUFDSjtZQUNFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3Bhbk5vZGUsIFNwYW5Ob2RlRXZlbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlVHlwZSB9IGZyb20gJy4vc3Bhbi1zdHJhdGVnaWVzJztcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTZWdtZW50IHR5cGVzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBWaXN1YWwgc3RhdHVzIG9mIGEgc2VnbWVudCB3aXRoaW4gYSBzcGFuIGJhci5cbiAqXG4gKiAtIHF1ZXVlZDogICAgIFdhaXRpbmcgdG8gc3RhcnQgKGhhdGNoZWQgcGF0dGVybilcbiAqIC0gcnVubmluZzogICAgQWN0aXZlbHkgZXhlY3V0aW5nIChzb2xpZCBibHVlKVxuICogLSBmYWlsZWQ6ICAgICBBdHRlbXB0IHRoYXQgZW5kZWQgaW4gZmFpbHVyZSAoc29mdCByZWQpXG4gKiAtIHJldHJ5aW5nOiAgIFdhaXRpbmcgYmV0d2VlbiByZXRyeSBhdHRlbXB0cyAoaGF0Y2hlZCBwYXR0ZXJuKVxuICogLSBzdWNjZWVkZWQ6ICBGaW5hbCBzdWNjZXNzZnVsIGF0dGVtcHQgKHNvZnQgZ3JlZW4pXG4gKiAtIHdhaXRpbmc6ICAgIFBhc3NpdmUgd2FpdGluZywgZS5nLiBob29rIHdhaXRpbmcgZm9yIHBheWxvYWQgKGhhdGNoZWQgcGF0dGVybilcbiAqIC0gc2xlZXBpbmc6ICAgU2xlZXAgaW4gcHJvZ3Jlc3MgKHNvZnQgYW1iZXIpXG4gKiAtIHJlY2VpdmVkOiAgIEhvb2sgcmVjZWl2ZWQgYSBwYXlsb2FkIChzb2Z0IGJsdWUpXG4gKi9cbmV4cG9ydCB0eXBlIFNlZ21lbnRTdGF0dXMgPVxuICB8ICdxdWV1ZWQnXG4gIHwgJ3J1bm5pbmcnXG4gIHwgJ2ZhaWxlZCdcbiAgfCAncmV0cnlpbmcnXG4gIHwgJ3N1Y2NlZWRlZCdcbiAgfCAnd2FpdGluZydcbiAgfCAnc2xlZXBpbmcnXG4gIHwgJ3JlY2VpdmVkJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWdtZW50IHtcbiAgLyoqIEZyYWN0aW9uIG9mIHNwYW4gd2lkdGggd2hlcmUgdGhpcyBzZWdtZW50IHN0YXJ0cyAoMOKAkzEpICovXG4gIHN0YXJ0RnJhY3Rpb246IG51bWJlcjtcbiAgLyoqIEZyYWN0aW9uIG9mIHNwYW4gd2lkdGggd2hlcmUgdGhpcyBzZWdtZW50IGVuZHMgKDDigJMxKSAqL1xuICBlbmRGcmFjdGlvbjogbnVtYmVyO1xuICAvKiogVmlzdWFsIHN0YXR1cyBjb250cm9sbGluZyBjb2xvci9wYXR0ZXJuICovXG4gIHN0YXR1czogU2VnbWVudFN0YXR1cztcbn1cblxuLyoqXG4gKiBBIGJvdW5kYXJ5IGJldHdlZW4gdHdvIHNlZ21lbnRzLCByZXByZXNlbnRpbmcgYW4gZXZlbnQgdGhhdCBjYXVzZWRcbiAqIGEgdHJhbnNpdGlvbi4gUmVuZGVyZWQgYXMgYSBob3ZlcmFibGUgZGl2aWRlciB3aXRoIGEgdG9vbHRpcC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWdtZW50Qm91bmRhcnkge1xuICAvKiogRnJhY3Rpb25hbCBwb3NpdGlvbiBhbG9uZyB0aGUgc3BhbiAoMOKAkzEpICovXG4gIGZyYWN0aW9uOiBudW1iZXI7XG4gIC8qKiBEaXNwbGF5IGxhYmVsIGZvciB0aGUgdG9vbHRpcCAoZS5nLiBcInN0ZXBfc3RhcnRlZFwiKSAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogRm9ybWF0dGVkIHRpbWVzdGFtcCByZWxhdGl2ZSB0byBzcGFuIHN0YXJ0ICovXG4gIG9mZnNldE1zOiBudW1iZXI7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gQ1NTIGNsYXNzIG1hcHBpbmcgKHNlZ21lbnQgc3RhdHVzIOKGkiBtb2R1bGUgQ1NTIGNsYXNzIG5hbWUpXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBNYXBzIGEgU2VnbWVudFN0YXR1cyB0byB0aGUgQ1NTIG1vZHVsZSBjbGFzcyBuYW1lIHRvIHVzZS5cbiAqIFRoZXNlIGNsYXNzIG5hbWVzIG11c3QgZXhpc3QgaW4gdHJhY2Utdmlld2VyLm1vZHVsZS5jc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBTRUdNRU5UX0NMQVNTX01BUDogUmVjb3JkPFNlZ21lbnRTdGF0dXMsIHN0cmluZz4gPSB7XG4gIHF1ZXVlZDogJ3NlZ1F1ZXVlZCcsXG4gIHJ1bm5pbmc6ICdzZWdSdW5uaW5nJyxcbiAgZmFpbGVkOiAnc2VnRmFpbGVkJyxcbiAgcmV0cnlpbmc6ICdzZWdSZXRyeWluZycsXG4gIHN1Y2NlZWRlZDogJ3NlZ1N1Y2NlZWRlZCcsXG4gIHdhaXRpbmc6ICdzZWdXYWl0aW5nJyxcbiAgc2xlZXBpbmc6ICdzZWdTbGVlcGluZycsXG4gIHJlY2VpdmVkOiAnc2VnUmVjZWl2ZWQnLFxufTtcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBIZWxwZXJzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZnVuY3Rpb24gY2xhbXBGcmFjdGlvbih2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIHRpbWVUb0ZyYWN0aW9uKFxuICB0aW1lOiBudW1iZXIsXG4gIHNwYW5TdGFydDogbnVtYmVyLFxuICBzcGFuRHVyYXRpb246IG51bWJlclxuKTogbnVtYmVyIHtcbiAgaWYgKHNwYW5EdXJhdGlvbiA8PSAwKSByZXR1cm4gMDtcbiAgcmV0dXJuIGNsYW1wRnJhY3Rpb24oKHRpbWUgLSBzcGFuU3RhcnQpIC8gc3BhbkR1cmF0aW9uKTtcbn1cblxuLyoqXG4gKiBTb3J0IGV2ZW50cyBieSB0aW1lc3RhbXAgYXNjZW5kaW5nLlxuICovXG5mdW5jdGlvbiBzb3J0ZWRFdmVudHMoZXZlbnRzOiBTcGFuTm9kZUV2ZW50W10pOiBTcGFuTm9kZUV2ZW50W10ge1xuICByZXR1cm4gWy4uLmV2ZW50c10uc29ydCgoYSwgYikgPT4gYS50aW1lc3RhbXAgLSBiLnRpbWVzdGFtcCk7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gU3RlcCBzZWdtZW50c1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogQ29tcHV0ZSBzZWdtZW50cyBmb3IgYSBzdGVwIHNwYW4uXG4gKlxuICogVGltZWxpbmU6IFtxdWV1ZWRdIOKGkiBbYXR0ZW1wdOKCgSAoZmFpbCldIOKGkiBbcmV0cnkgd2FpdF0g4oaSIFthdHRlbXB04oKCIChmYWlsKV0g4oaSIC4uLiDihpIgW2F0dGVtcHTigpkgKHN1Y2Nlc3MpXVxuICpcbiAqIEV2ZW50cyB1c2VkOiBzdGVwX3N0YXJ0ZWQsIHN0ZXBfcmV0cnlpbmcsIHN0ZXBfZmFpbGVkLCBzdGVwX2NvbXBsZXRlZFxuICogVGhlIGZpbmFsIHNlZ21lbnQgaXMgJ3N1Y2NlZWRlZCcgaWYgbm8gdHJhaWxpbmcgc3RlcF9yZXRyeWluZy9zdGVwX2ZhaWxlZC5cbiAqL1xuZnVuY3Rpb24gY29tcHV0ZVN0ZXBTZWdtZW50cyhub2RlOiBTcGFuTm9kZSk6IFNlZ21lbnRbXSB7XG4gIGNvbnN0IGV2ZW50cyA9IG5vZGUuZXZlbnRzID8gc29ydGVkRXZlbnRzKG5vZGUuZXZlbnRzKSA6IFtdO1xuICBjb25zdCB7IHN0YXJ0VGltZSwgZHVyYXRpb24gfSA9IG5vZGU7XG4gIGNvbnN0IHNlZ21lbnRzOiBTZWdtZW50W10gPSBbXTtcblxuICBpZiAoZHVyYXRpb24gPD0gMCkgcmV0dXJuIHNlZ21lbnRzO1xuXG4gIC8vIEJ1aWxkIGEgdGltZWxpbmUgb2YgZXZlbnQgYm91bmRhcmllc1xuICBpbnRlcmZhY2UgRXZlbnRNYXJrIHtcbiAgICB0aW1lOiBudW1iZXI7XG4gICAgdHlwZTogc3RyaW5nO1xuICB9XG4gIGNvbnN0IG1hcmtzOiBFdmVudE1hcmtbXSA9IGV2ZW50c1xuICAgIC5maWx0ZXIoKGUpID0+XG4gICAgICBbXG4gICAgICAgICdzdGVwX3N0YXJ0ZWQnLFxuICAgICAgICAnc3RlcF9yZXRyeWluZycsXG4gICAgICAgICdzdGVwX2ZhaWxlZCcsXG4gICAgICAgICdzdGVwX2NvbXBsZXRlZCcsXG4gICAgICBdLmluY2x1ZGVzKGUuZXZlbnQubmFtZSlcbiAgICApXG4gICAgLm1hcCgoZSkgPT4gKHsgdGltZTogZS50aW1lc3RhbXAsIHR5cGU6IGUuZXZlbnQubmFtZSB9KSk7XG5cbiAgaWYgKG1hcmtzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIE5vIGV2ZW50cyDigJQgc2hvdyBlbnRpcmUgc3BhbiBhcyBydW5uaW5nXG4gICAgc2VnbWVudHMucHVzaCh7IHN0YXJ0RnJhY3Rpb246IDAsIGVuZEZyYWN0aW9uOiAxLCBzdGF0dXM6ICdydW5uaW5nJyB9KTtcbiAgICByZXR1cm4gc2VnbWVudHM7XG4gIH1cblxuICAvLyBRdWV1ZWQgcGVyaW9kOiBmcm9tIHNwYW4gc3RhcnQgdG8gZmlyc3QgZXZlbnRcbiAgY29uc3QgZmlyc3RNYXJrID0gbWFya3NbMF07XG4gIGNvbnN0IGZpcnN0RnJhY3Rpb24gPSB0aW1lVG9GcmFjdGlvbihmaXJzdE1hcmsudGltZSwgc3RhcnRUaW1lLCBkdXJhdGlvbik7XG4gIGlmIChmaXJzdEZyYWN0aW9uID4gMC4wMDEpIHtcbiAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgIHN0YXJ0RnJhY3Rpb246IDAsXG4gICAgICBlbmRGcmFjdGlvbjogZmlyc3RGcmFjdGlvbixcbiAgICAgIHN0YXR1czogJ3F1ZXVlZCcsXG4gICAgfSk7XG4gIH1cblxuICAvLyBXYWxrIHRocm91Z2ggZXZlbnRzIHRvIGJ1aWxkIGF0dGVtcHQvcmV0cnkgc2VnbWVudHNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXJrcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1hcmsgPSBtYXJrc1tpXTtcbiAgICBjb25zdCBtYXJrRnJhY3Rpb24gPSB0aW1lVG9GcmFjdGlvbihtYXJrLnRpbWUsIHN0YXJ0VGltZSwgZHVyYXRpb24pO1xuICAgIGNvbnN0IG5leHRNYXJrID0gbWFya3NbaSArIDFdO1xuICAgIGNvbnN0IG5leHRGcmFjdGlvbiA9IG5leHRNYXJrXG4gICAgICA/IHRpbWVUb0ZyYWN0aW9uKG5leHRNYXJrLnRpbWUsIHN0YXJ0VGltZSwgZHVyYXRpb24pXG4gICAgICA6IDE7XG5cbiAgICBpZiAobWFyay50eXBlID09PSAnc3RlcF9zdGFydGVkJykge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYW4gZXhlY3V0aW9uIGF0dGVtcHQuXG4gICAgICAvLyBJdCBydW5zIHVudGlsIHRoZSBuZXh0IGV2ZW50IChzdGVwX3JldHJ5aW5nIG9yIHN0ZXBfZmFpbGVkKSBvciBlbmQgb2Ygc3Bhbi5cbiAgICAgIGNvbnN0IGlzTGFzdE1hcmsgPSBpID09PSBtYXJrcy5sZW5ndGggLSAxO1xuICAgICAgaWYgKGlzTGFzdE1hcmspIHtcbiAgICAgICAgLy8gTGFzdCBldmVudCBpcyBzdGVwX3N0YXJ0ZWQg4oCUIHRoaXMgYXR0ZW1wdCBpcyBlaXRoZXIgc3RpbGwgcnVubmluZyBvciBzdWNjZWVkZWRcbiAgICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgICAgc3RhcnRGcmFjdGlvbjogbWFya0ZyYWN0aW9uLFxuICAgICAgICAgIGVuZEZyYWN0aW9uOiAxLFxuICAgICAgICAgIHN0YXR1czogJ3N1Y2NlZWRlZCcsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXR0ZW1wdCBydW5zIHVudGlsIHRoZSBuZXh0IGV2ZW50XG4gICAgICAgIGNvbnN0IG5leHRUeXBlID0gbmV4dE1hcmsudHlwZTtcbiAgICAgICAgY29uc3QgYXR0ZW1wdFN0YXR1czogU2VnbWVudFN0YXR1cyA9XG4gICAgICAgICAgbmV4dFR5cGUgPT09ICdzdGVwX3JldHJ5aW5nJyB8fCBuZXh0VHlwZSA9PT0gJ3N0ZXBfZmFpbGVkJ1xuICAgICAgICAgICAgPyAnZmFpbGVkJ1xuICAgICAgICAgICAgOiBuZXh0VHlwZSA9PT0gJ3N0ZXBfY29tcGxldGVkJ1xuICAgICAgICAgICAgICA/ICdzdWNjZWVkZWQnXG4gICAgICAgICAgICAgIDogJ3J1bm5pbmcnO1xuICAgICAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgICAgICBzdGFydEZyYWN0aW9uOiBtYXJrRnJhY3Rpb24sXG4gICAgICAgICAgZW5kRnJhY3Rpb246IG5leHRGcmFjdGlvbixcbiAgICAgICAgICBzdGF0dXM6IGF0dGVtcHRTdGF0dXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobWFyay50eXBlID09PSAnc3RlcF9yZXRyeWluZycpIHtcbiAgICAgIC8vIFJldHJ5IHdhaXQ6IGZyb20gdGhpcyBldmVudCB0byB0aGUgbmV4dCBzdGVwX3N0YXJ0ZWQgKG9yIGVuZClcbiAgICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgICBzdGFydEZyYWN0aW9uOiBtYXJrRnJhY3Rpb24sXG4gICAgICAgIGVuZEZyYWN0aW9uOiBuZXh0RnJhY3Rpb24sXG4gICAgICAgIHN0YXR1czogJ3JldHJ5aW5nJyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAobWFyay50eXBlID09PSAnc3RlcF9mYWlsZWQnKSB7XG4gICAgICAvLyBUZXJtaW5hbCBmYWlsdXJlOiBmcm9tIHRoaXMgZXZlbnQgdG8gdGhlIGVuZFxuICAgICAgaWYgKG1hcmtGcmFjdGlvbiA8IDAuOTk5KSB7XG4gICAgICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgICAgIHN0YXJ0RnJhY3Rpb246IG1hcmtGcmFjdGlvbixcbiAgICAgICAgICBlbmRGcmFjdGlvbjogMSxcbiAgICAgICAgICBzdGF0dXM6ICdmYWlsZWQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG1hcmsudHlwZSA9PT0gJ3N0ZXBfY29tcGxldGVkJykge1xuICAgICAgLy8gVGVybWluYWwgc3VjY2VzczogZG8gbm90aGluZyBoZXJlIHNpbmNlIHRoZSBwcmVjZWRpbmcgc3RlcF9zdGFydGVkXG4gICAgICAvLyBzZWdtZW50IGFscmVhZHkgdGVybWluYXRlcyBhdCB0aGlzIG1hcmtlci5cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VnbWVudHM7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gSG9vayBzZWdtZW50c1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogQ29tcHV0ZSBzZWdtZW50cyBmb3IgYSBob29rIHNwYW4uXG4gKlxuICogVGltZWxpbmU6IFt3YWl0aW5nXSDihpIgW3JlY2VpdmVkXSDihpIgW2Rpc3Bvc2VkXVxuICovXG5mdW5jdGlvbiBjb21wdXRlSG9va1NlZ21lbnRzKG5vZGU6IFNwYW5Ob2RlKTogU2VnbWVudFtdIHtcbiAgY29uc3QgZXZlbnRzID0gbm9kZS5ldmVudHMgPyBzb3J0ZWRFdmVudHMobm9kZS5ldmVudHMpIDogW107XG4gIGNvbnN0IHsgc3RhcnRUaW1lLCBkdXJhdGlvbiB9ID0gbm9kZTtcbiAgY29uc3Qgc2VnbWVudHM6IFNlZ21lbnRbXSA9IFtdO1xuXG4gIGlmIChkdXJhdGlvbiA8PSAwKSByZXR1cm4gc2VnbWVudHM7XG5cbiAgY29uc3QgcmVjZWl2ZWRFdmVudCA9IGV2ZW50cy5maW5kKChlKSA9PiBlLmV2ZW50Lm5hbWUgPT09ICdob29rX3JlY2VpdmVkJyk7XG4gIGNvbnN0IGRpc3Bvc2VkRXZlbnQgPSBldmVudHMuZmluZCgoZSkgPT4gZS5ldmVudC5uYW1lID09PSAnaG9va19kaXNwb3NlZCcpO1xuXG4gIGlmICghcmVjZWl2ZWRFdmVudCAmJiAhZGlzcG9zZWRFdmVudCkge1xuICAgIC8vIFN0aWxsIHdhaXRpbmdcbiAgICBzZWdtZW50cy5wdXNoKHsgc3RhcnRGcmFjdGlvbjogMCwgZW5kRnJhY3Rpb246IDEsIHN0YXR1czogJ3dhaXRpbmcnIH0pO1xuICAgIHJldHVybiBzZWdtZW50cztcbiAgfVxuXG4gIGNvbnN0IHJlY2VpdmVkRnJhY3Rpb24gPSByZWNlaXZlZEV2ZW50XG4gICAgPyB0aW1lVG9GcmFjdGlvbihyZWNlaXZlZEV2ZW50LnRpbWVzdGFtcCwgc3RhcnRUaW1lLCBkdXJhdGlvbilcbiAgICA6IG51bGw7XG4gIGNvbnN0IGRpc3Bvc2VkRnJhY3Rpb24gPSBkaXNwb3NlZEV2ZW50XG4gICAgPyB0aW1lVG9GcmFjdGlvbihkaXNwb3NlZEV2ZW50LnRpbWVzdGFtcCwgc3RhcnRUaW1lLCBkdXJhdGlvbilcbiAgICA6IG51bGw7XG5cbiAgLy8gV2FpdGluZyBwZXJpb2QgKGJlZm9yZSByZWNlaXZlZClcbiAgaWYgKHJlY2VpdmVkRnJhY3Rpb24gIT09IG51bGwgJiYgcmVjZWl2ZWRGcmFjdGlvbiA+IDAuMDAxKSB7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiAwLFxuICAgICAgZW5kRnJhY3Rpb246IHJlY2VpdmVkRnJhY3Rpb24sXG4gICAgICBzdGF0dXM6ICd3YWl0aW5nJyxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChyZWNlaXZlZEZyYWN0aW9uID09PSBudWxsICYmIGRpc3Bvc2VkRnJhY3Rpb24gIT09IG51bGwpIHtcbiAgICAvLyBEaXNwb3NlZCB3aXRob3V0IHJlY2VpdmluZyDigJQgd2FpdGluZyB0aGUgd2hvbGUgdGltZVxuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgc3RhcnRGcmFjdGlvbjogMCxcbiAgICAgIGVuZEZyYWN0aW9uOiBkaXNwb3NlZEZyYWN0aW9uLFxuICAgICAgc3RhdHVzOiAnd2FpdGluZycsXG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWNlaXZlZCBwZXJpb2RcbiAgaWYgKHJlY2VpdmVkRnJhY3Rpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBlbmQgPSBkaXNwb3NlZEZyYWN0aW9uID8/IDE7XG4gICAgc2VnbWVudHMucHVzaCh7XG4gICAgICBzdGFydEZyYWN0aW9uOiByZWNlaXZlZEZyYWN0aW9uLFxuICAgICAgZW5kRnJhY3Rpb246IGVuZCxcbiAgICAgIHN0YXR1czogJ3JlY2VpdmVkJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFBvc3QtZGlzcG9zZWQgKGlmIHRoZXJlJ3MgcmVtYWluaW5nIHNwYW4gYWZ0ZXIgZGlzcG9zYWwpXG4gIGlmIChkaXNwb3NlZEZyYWN0aW9uICE9PSBudWxsICYmIGRpc3Bvc2VkRnJhY3Rpb24gPCAwLjk5OSkge1xuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgc3RhcnRGcmFjdGlvbjogZGlzcG9zZWRGcmFjdGlvbixcbiAgICAgIGVuZEZyYWN0aW9uOiAxLFxuICAgICAgc3RhdHVzOiAnc3VjY2VlZGVkJyxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBzZWdtZW50cztcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTbGVlcCBzZWdtZW50c1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogQ29tcHV0ZSBzZWdtZW50cyBmb3IgYSBzbGVlcCBzcGFuLlxuICpcbiAqIFRpbWVsaW5lOiBbc2xlZXBpbmddIOKGkiBbY29tcGxldGVkXVxuICovXG5mdW5jdGlvbiBjb21wdXRlU2xlZXBTZWdtZW50cyhub2RlOiBTcGFuTm9kZSk6IFNlZ21lbnRbXSB7XG4gIGNvbnN0IGV2ZW50cyA9IG5vZGUuZXZlbnRzID8gc29ydGVkRXZlbnRzKG5vZGUuZXZlbnRzKSA6IFtdO1xuICBjb25zdCB7IHN0YXJ0VGltZSwgZHVyYXRpb24gfSA9IG5vZGU7XG4gIGNvbnN0IHNlZ21lbnRzOiBTZWdtZW50W10gPSBbXTtcblxuICBpZiAoZHVyYXRpb24gPD0gMCkgcmV0dXJuIHNlZ21lbnRzO1xuXG4gIGNvbnN0IGNvbXBsZXRlZEV2ZW50ID0gZXZlbnRzLmZpbmQoKGUpID0+IGUuZXZlbnQubmFtZSA9PT0gJ3dhaXRfY29tcGxldGVkJyk7XG5cbiAgaWYgKCFjb21wbGV0ZWRFdmVudCkge1xuICAgIC8vIFN0aWxsIHNsZWVwaW5nXG4gICAgc2VnbWVudHMucHVzaCh7IHN0YXJ0RnJhY3Rpb246IDAsIGVuZEZyYWN0aW9uOiAxLCBzdGF0dXM6ICdzbGVlcGluZycgfSk7XG4gICAgcmV0dXJuIHNlZ21lbnRzO1xuICB9XG5cbiAgY29uc3QgY29tcGxldGVkRnJhY3Rpb24gPSB0aW1lVG9GcmFjdGlvbihcbiAgICBjb21wbGV0ZWRFdmVudC50aW1lc3RhbXAsXG4gICAgc3RhcnRUaW1lLFxuICAgIGR1cmF0aW9uXG4gICk7XG5cbiAgaWYgKGNvbXBsZXRlZEZyYWN0aW9uID4gMC4wMDEpIHtcbiAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgIHN0YXJ0RnJhY3Rpb246IDAsXG4gICAgICBlbmRGcmFjdGlvbjogY29tcGxldGVkRnJhY3Rpb24sXG4gICAgICBzdGF0dXM6ICdzbGVlcGluZycsXG4gICAgfSk7XG4gIH1cblxuICBzZWdtZW50cy5wdXNoKHtcbiAgICBzdGFydEZyYWN0aW9uOiBjb21wbGV0ZWRGcmFjdGlvbixcbiAgICBlbmRGcmFjdGlvbjogMSxcbiAgICBzdGF0dXM6ICdzdWNjZWVkZWQnLFxuICB9KTtcblxuICByZXR1cm4gc2VnbWVudHM7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gUnVuIHNlZ21lbnRzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBDb21wdXRlIHNlZ21lbnRzIGZvciBhIHJ1biBzcGFuLlxuICpcbiAqIFRpbWVsaW5lOiBbcXVldWVkXSDihpIgW3J1bm5pbmddIOKGkiBbY29tcGxldGVkL2ZhaWxlZF1cbiAqXG4gKiBUaGUgcXVldWVkIHBlcmlvZCBpcyBkZXJpdmVkIGZyb20gYWN0aXZlU3RhcnRUaW1lIChydW4uc3RhcnRlZEF0KS5cbiAqIEEgc3ludGhldGljIHJ1bl9zdGFydGVkIGV2ZW50IGlzIGluamVjdGVkIGF0IHRoYXQgdGltZXN0YW1wIHNvXG4gKiB0aGUgYm91bmRhcnkgaXMgaG92ZXJhYmxlIGluIHRoZSB0cmFjZSB2aWV3ZXIuXG4gKi9cbmZ1bmN0aW9uIGNvbXB1dGVSdW5TZWdtZW50cyhub2RlOiBTcGFuTm9kZSk6IFNlZ21lbnRbXSB7XG4gIGNvbnN0IGV2ZW50cyA9IG5vZGUuZXZlbnRzID8gc29ydGVkRXZlbnRzKG5vZGUuZXZlbnRzKSA6IFtdO1xuICBjb25zdCB7IHN0YXJ0VGltZSwgZHVyYXRpb24sIGFjdGl2ZVN0YXJ0VGltZSB9ID0gbm9kZTtcbiAgY29uc3Qgc2VnbWVudHM6IFNlZ21lbnRbXSA9IFtdO1xuXG4gIGlmIChkdXJhdGlvbiA8PSAwKSByZXR1cm4gc2VnbWVudHM7XG5cbiAgLy8gVjEgcnVucyAoc3BlY1ZlcnNpb24gMSkgZG9uJ3QgZW1pdCBydW4gbGlmZWN5Y2xlIGV2ZW50cyAocnVuX2NyZWF0ZWQsXG4gIC8vIHJ1bl9zdGFydGVkLCBydW5fY29tcGxldGVkKS4gRGV0ZWN0IHRoaXMgYnkgY2hlY2tpbmcgZm9yIHRoZSBhYnNlbmNlIG9mXG4gIC8vIHJ1bl9jcmVhdGVkIOKAlCBpdCdzIGFsd2F5cyB0aGUgZmlyc3QgZXZlbnQgZm9yIHYyIHJ1bnMgYW5kIGlzIGFsd2F5c1xuICAvLyBsb2FkZWQgaW4gdGhlIGZpcnN0IHBhZ2UsIHNvIGl0cyBhYnNlbmNlIHJlbGlhYmx5IHNpZ25hbHMgYSB2MSBydW4uXG4gIC8vIEZvciB2MSwgZmFsbCBiYWNrIHRvIHRoZSBydW4gZW50aXR5J3Mgc3RhdHVzIGZyb20gc3Bhbi5hdHRyaWJ1dGVzLmRhdGEuXG4gIGNvbnN0IGhhc1J1bkNyZWF0ZWQgPSBldmVudHMuc29tZSgoZSkgPT4gZS5ldmVudC5uYW1lID09PSAncnVuX2NyZWF0ZWQnKTtcblxuICBpZiAoIWhhc1J1bkNyZWF0ZWQpIHtcbiAgICBjb25zdCBydW5EYXRhID0gbm9kZS5zcGFuLmF0dHJpYnV0ZXM/LmRhdGEgYXNcbiAgICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJ1blN0YXR1cyA9IHJ1bkRhdGE/LnN0YXR1cyBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGNvbXB1dGVWMVJ1blNlZ21lbnRzKFxuICAgICAgc3RhcnRUaW1lLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBhY3RpdmVTdGFydFRpbWUsXG4gICAgICBydW5TdGF0dXNcbiAgICApO1xuICB9XG5cbiAgY29uc3QgZmFpbGVkRXZlbnQgPSBldmVudHMuZmluZCgoZSkgPT4gZS5ldmVudC5uYW1lID09PSAncnVuX2ZhaWxlZCcpO1xuICBjb25zdCBjb21wbGV0ZWRFdmVudCA9IGV2ZW50cy5maW5kKChlKSA9PiBlLmV2ZW50Lm5hbWUgPT09ICdydW5fY29tcGxldGVkJyk7XG5cbiAgLy8gUXVldWVkIHBlcmlvZCAoZnJvbSBzcGFuIHN0YXJ0IHRvIGFjdGl2ZVN0YXJ0VGltZSlcbiAgbGV0IGN1cnNvciA9IDA7XG4gIGlmIChhY3RpdmVTdGFydFRpbWUgJiYgYWN0aXZlU3RhcnRUaW1lID4gc3RhcnRUaW1lKSB7XG4gICAgY29uc3QgcXVldWVkRnJhY3Rpb24gPSB0aW1lVG9GcmFjdGlvbihhY3RpdmVTdGFydFRpbWUsIHN0YXJ0VGltZSwgZHVyYXRpb24pO1xuICAgIGlmIChxdWV1ZWRGcmFjdGlvbiA+IDAuMDAxKSB7XG4gICAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgICAgc3RhcnRGcmFjdGlvbjogMCxcbiAgICAgICAgZW5kRnJhY3Rpb246IHF1ZXVlZEZyYWN0aW9uLFxuICAgICAgICBzdGF0dXM6ICdxdWV1ZWQnLFxuICAgICAgfSk7XG4gICAgICBjdXJzb3IgPSBxdWV1ZWRGcmFjdGlvbjtcbiAgICB9XG4gIH1cblxuICBpZiAoZmFpbGVkRXZlbnQpIHtcbiAgICBjb25zdCBmYWlsZWRGcmFjdGlvbiA9IHRpbWVUb0ZyYWN0aW9uKFxuICAgICAgZmFpbGVkRXZlbnQudGltZXN0YW1wLFxuICAgICAgc3RhcnRUaW1lLFxuICAgICAgZHVyYXRpb25cbiAgICApO1xuICAgIC8vIFJ1bm5pbmcgdW50aWwgZmFpbHVyZVxuICAgIGlmIChmYWlsZWRGcmFjdGlvbiA+IGN1cnNvciArIDAuMDAxKSB7XG4gICAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgICAgc3RhcnRGcmFjdGlvbjogY3Vyc29yLFxuICAgICAgICBlbmRGcmFjdGlvbjogZmFpbGVkRnJhY3Rpb24sXG4gICAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgc3RhcnRGcmFjdGlvbjogZmFpbGVkRnJhY3Rpb24sXG4gICAgICBlbmRGcmFjdGlvbjogMSxcbiAgICAgIHN0YXR1czogJ2ZhaWxlZCcsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoY29tcGxldGVkRXZlbnQpIHtcbiAgICBjb25zdCBjb21wbGV0ZWRGcmFjdGlvbiA9IHRpbWVUb0ZyYWN0aW9uKFxuICAgICAgY29tcGxldGVkRXZlbnQudGltZXN0YW1wLFxuICAgICAgc3RhcnRUaW1lLFxuICAgICAgZHVyYXRpb25cbiAgICApO1xuICAgIGlmIChjb21wbGV0ZWRGcmFjdGlvbiA+IGN1cnNvciArIDAuMDAxKSB7XG4gICAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgICAgc3RhcnRGcmFjdGlvbjogY3Vyc29yLFxuICAgICAgICBlbmRGcmFjdGlvbjogY29tcGxldGVkRnJhY3Rpb24sXG4gICAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgc3RhcnRGcmFjdGlvbjogY29tcGxldGVkRnJhY3Rpb24sXG4gICAgICBlbmRGcmFjdGlvbjogMSxcbiAgICAgIHN0YXR1czogJ3N1Y2NlZWRlZCcsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gUnVubmluZyB0byBjb21wbGV0aW9uIChvciB0ZXJtaW5hbCBldmVudHMgaGF2ZW4ndCBsb2FkZWQgeWV0KVxuICAgIHNlZ21lbnRzLnB1c2goe1xuICAgICAgc3RhcnRGcmFjdGlvbjogY3Vyc29yLFxuICAgICAgZW5kRnJhY3Rpb246IDEsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBzZWdtZW50cztcbn1cblxuLyoqXG4gKiBDb21wdXRlIHNlZ21lbnRzIGZvciBhIHYxIHJ1biB1c2luZyBvbmx5IHRoZSBydW4gZW50aXR5J3Mgc3RhdHVzIGFuZFxuICogYWN0aXZlU3RhcnRUaW1lIChkZXJpdmVkIGZyb20gcnVuLnN0YXJ0ZWRBdCkuIFYxIHJ1bnMgaGF2ZSBubyBydW5cbiAqIGxpZmVjeWNsZSBldmVudHMsIHNvIHdlIGluZmVyIHRoZSB2aXN1YWwgc2VnbWVudHMgZnJvbSBlbnRpdHkgZmllbGRzLlxuICovXG5mdW5jdGlvbiBjb21wdXRlVjFSdW5TZWdtZW50cyhcbiAgc3RhcnRUaW1lOiBudW1iZXIsXG4gIGR1cmF0aW9uOiBudW1iZXIsXG4gIGFjdGl2ZVN0YXJ0VGltZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBydW5TdGF0dXM6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogU2VnbWVudFtdIHtcbiAgY29uc3Qgc2VnbWVudHM6IFNlZ21lbnRbXSA9IFtdO1xuXG4gIGxldCBjdXJzb3IgPSAwO1xuICBpZiAoYWN0aXZlU3RhcnRUaW1lICYmIGFjdGl2ZVN0YXJ0VGltZSA+IHN0YXJ0VGltZSkge1xuICAgIGNvbnN0IHF1ZXVlZEZyYWN0aW9uID0gdGltZVRvRnJhY3Rpb24oYWN0aXZlU3RhcnRUaW1lLCBzdGFydFRpbWUsIGR1cmF0aW9uKTtcbiAgICBpZiAocXVldWVkRnJhY3Rpb24gPiAwLjAwMSkge1xuICAgICAgc2VnbWVudHMucHVzaCh7XG4gICAgICAgIHN0YXJ0RnJhY3Rpb246IDAsXG4gICAgICAgIGVuZEZyYWN0aW9uOiBxdWV1ZWRGcmFjdGlvbixcbiAgICAgICAgc3RhdHVzOiAncXVldWVkJyxcbiAgICAgIH0pO1xuICAgICAgY3Vyc29yID0gcXVldWVkRnJhY3Rpb247XG4gICAgfVxuICB9XG5cbiAgaWYgKHJ1blN0YXR1cyA9PT0gJ2ZhaWxlZCcpIHtcbiAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgIHN0YXJ0RnJhY3Rpb246IGN1cnNvcixcbiAgICAgIGVuZEZyYWN0aW9uOiAxLFxuICAgICAgc3RhdHVzOiAnZmFpbGVkJyxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChydW5TdGF0dXMgPT09ICdjb21wbGV0ZWQnIHx8IHJ1blN0YXR1cyA9PT0gJ2NhbmNlbGxlZCcpIHtcbiAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgIHN0YXJ0RnJhY3Rpb246IGN1cnNvcixcbiAgICAgIGVuZEZyYWN0aW9uOiAxLFxuICAgICAgc3RhdHVzOiAnc3VjY2VlZGVkJyxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBzZWdtZW50cy5wdXNoKHtcbiAgICAgIHN0YXJ0RnJhY3Rpb246IGN1cnNvcixcbiAgICAgIGVuZEZyYWN0aW9uOiAxLFxuICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc2VnbWVudHM7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gRGlzcGF0Y2hlclxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VnbWVudFJlc3VsdCB7XG4gIHNlZ21lbnRzOiBTZWdtZW50W107XG4gIGJvdW5kYXJpZXM6IFNlZ21lbnRCb3VuZGFyeVtdO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEJvdW5kYXJ5IGNvbXB1dGF0aW9uXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIEV2ZW50IG5hbWVzIHRvIGh1bWFuLXJlYWRhYmxlIGxhYmVscyAqL1xuY29uc3QgRVZFTlRfTEFCRUxTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBzdGVwX3N0YXJ0ZWQ6ICdTdGFydGVkJyxcbiAgc3RlcF9yZXRyeWluZzogJ1JldHJ5aW5nJyxcbiAgc3RlcF9mYWlsZWQ6ICdGYWlsZWQnLFxuICBob29rX2NyZWF0ZWQ6ICdDcmVhdGVkJyxcbiAgaG9va19yZWNlaXZlZDogJ1JlY2VpdmVkJyxcbiAgaG9va19kaXNwb3NlZDogJ1Jlc29sdmVkJyxcbiAgd2FpdF9jcmVhdGVkOiAnU2xlZXAgc3RhcnRlZCcsXG4gIHdhaXRfY29tcGxldGVkOiAnU2xlZXAgY29tcGxldGVkJyxcbiAgcnVuX2NvbXBsZXRlZDogJ0NvbXBsZXRlZCcsXG4gIHJ1bl9mYWlsZWQ6ICdSdW4gZmFpbGVkJyxcbiAgc3RlcF9jb21wbGV0ZWQ6ICdDb21wbGV0ZWQnLFxufTtcblxuLyoqXG4gKiBFeHRyYWN0IGJvdW5kYXJpZXMgZnJvbSBhIHNwYW4ncyBldmVudHMuIEVhY2ggYm91bmRhcnkgc2l0cyBhdCB0aGVcbiAqIGZyYWN0aW9uYWwgcG9zaXRpb24gb2YgYSByZWxldmFudCBldmVudCB3aXRoaW4gdGhlIHNwYW4gZHVyYXRpb24uXG4gKiBPbmx5IGluY2x1ZGVzIGV2ZW50cyB0aGF0IGFyZSB1c2VkIGFzIHNlZ21lbnQgYm91bmRhcmllcyAobm90IGF0IHRoZVxuICogdmVyeSBzdGFydCBvciB2ZXJ5IGVuZCBvZiB0aGUgc3BhbiwgdG8gYXZvaWQgZWRnZSBjbHV0dGVyKS5cbiAqL1xuZnVuY3Rpb24gY29tcHV0ZUJvdW5kYXJpZXMoXG4gIG5vZGU6IFNwYW5Ob2RlLFxuICByZWxldmFudEV2ZW50TmFtZXM6IHN0cmluZ1tdXG4pOiBTZWdtZW50Qm91bmRhcnlbXSB7XG4gIGNvbnN0IGV2ZW50cyA9IG5vZGUuZXZlbnRzID8gc29ydGVkRXZlbnRzKG5vZGUuZXZlbnRzKSA6IFtdO1xuICBjb25zdCB7IHN0YXJ0VGltZSwgZHVyYXRpb24gfSA9IG5vZGU7XG5cbiAgaWYgKGR1cmF0aW9uIDw9IDApIHJldHVybiBbXTtcblxuICBjb25zdCBib3VuZGFyaWVzOiBTZWdtZW50Qm91bmRhcnlbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGUgb2YgZXZlbnRzKSB7XG4gICAgaWYgKCFyZWxldmFudEV2ZW50TmFtZXMuaW5jbHVkZXMoZS5ldmVudC5uYW1lKSkgY29udGludWU7XG5cbiAgICBjb25zdCBmcmFjdGlvbiA9IHRpbWVUb0ZyYWN0aW9uKGUudGltZXN0YW1wLCBzdGFydFRpbWUsIGR1cmF0aW9uKTtcbiAgICAvLyBTa2lwIGJvdW5kYXJpZXMgYXQgdGhlIHZlcnkgZWRnZXMgKDwgMSUgb3IgPiA5OSUpIHRvIGF2b2lkIGNsdXR0ZXJcbiAgICBpZiAoZnJhY3Rpb24gPCAwLjAxIHx8IGZyYWN0aW9uID4gMC45OSkgY29udGludWU7XG5cbiAgICBib3VuZGFyaWVzLnB1c2goe1xuICAgICAgZnJhY3Rpb24sXG4gICAgICBsYWJlbDogRVZFTlRfTEFCRUxTW2UuZXZlbnQubmFtZV0gPz8gZS5ldmVudC5uYW1lLFxuICAgICAgb2Zmc2V0TXM6IGUudGltZXN0YW1wIC0gc3RhcnRUaW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGJvdW5kYXJpZXM7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gRGlzcGF0Y2hlclxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgZXZlbnQtYmFzZWQgc2VnbWVudHMgYW5kIGJvdW5kYXJpZXMgZm9yIGEgc3BhbiBiYXNlZCBvbiBpdHMgcmVzb3VyY2UgdHlwZS5cbiAqIFJldHVybnMgZW1wdHkgYXJyYXlzIGZvciAnZGVmYXVsdCcgKGdlbmVyaWMgT1RFTCkgc3BhbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlU2VnbWVudHMoXG4gIHJlc291cmNlVHlwZTogUmVzb3VyY2VUeXBlLFxuICBub2RlOiBTcGFuTm9kZVxuKTogU2VnbWVudFJlc3VsdCB7XG4gIHN3aXRjaCAocmVzb3VyY2VUeXBlKSB7XG4gICAgY2FzZSAnc3RlcCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZWdtZW50czogY29tcHV0ZVN0ZXBTZWdtZW50cyhub2RlKSxcbiAgICAgICAgYm91bmRhcmllczogY29tcHV0ZUJvdW5kYXJpZXMobm9kZSwgW1xuICAgICAgICAgICdzdGVwX3N0YXJ0ZWQnLFxuICAgICAgICAgICdzdGVwX3JldHJ5aW5nJyxcbiAgICAgICAgICAnc3RlcF9mYWlsZWQnLFxuICAgICAgICAgICdzdGVwX2NvbXBsZXRlZCcsXG4gICAgICAgIF0pLFxuICAgICAgfTtcbiAgICBjYXNlICdob29rJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNlZ21lbnRzOiBjb21wdXRlSG9va1NlZ21lbnRzKG5vZGUpLFxuICAgICAgICBib3VuZGFyaWVzOiBjb21wdXRlQm91bmRhcmllcyhub2RlLCBbXG4gICAgICAgICAgJ2hvb2tfY3JlYXRlZCcsXG4gICAgICAgICAgJ2hvb2tfcmVjZWl2ZWQnLFxuICAgICAgICAgICdob29rX2Rpc3Bvc2VkJyxcbiAgICAgICAgXSksXG4gICAgICB9O1xuICAgIGNhc2UgJ3NsZWVwJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNlZ21lbnRzOiBjb21wdXRlU2xlZXBTZWdtZW50cyhub2RlKSxcbiAgICAgICAgYm91bmRhcmllczogY29tcHV0ZUJvdW5kYXJpZXMobm9kZSwgWyd3YWl0X2NyZWF0ZWQnLCAnd2FpdF9jb21wbGV0ZWQnXSksXG4gICAgICB9O1xuICAgIGNhc2UgJ3J1bic6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZWdtZW50czogY29tcHV0ZVJ1blNlZ21lbnRzKG5vZGUpLFxuICAgICAgICBib3VuZGFyaWVzOiBjb21wdXRlQm91bmRhcmllcyhub2RlLCBbJ3J1bl9jb21wbGV0ZWQnLCAncnVuX2ZhaWxlZCddKSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7IHNlZ21lbnRzOiBbXSwgYm91bmRhcmllczogW10gfTtcbiAgfVxufVxuIl19