@kepler.gl/components 3.3.0-alpha.6 → 3.3.0-alpha.7

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 (121) hide show
  1. package/dist/cjs/common/data-table/cell-size.js +40 -23
  2. package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
  3. package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
  4. package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
  5. package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
  6. package/dist/cjs/common/data-table/header-cell.js +123 -44
  7. package/dist/cjs/common/data-table/index.js +102 -29
  8. package/dist/cjs/common/histogram-plot.js +1 -1
  9. package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
  10. package/dist/cjs/common/icons/index.js +15 -1
  11. package/dist/cjs/common/icons/line-string.js +60 -0
  12. package/dist/cjs/common/toolbar-item.js +24 -3
  13. package/dist/cjs/editor/editor.js +26 -8
  14. package/dist/cjs/editor/feature-action-panel.js +34 -12
  15. package/dist/cjs/editor/feature-properties-editor.js +215 -0
  16. package/dist/cjs/editor/filter-feature-badges.js +92 -0
  17. package/dist/cjs/index.js +33 -1
  18. package/dist/cjs/kepler-gl.js +20 -3
  19. package/dist/cjs/map/map-control-toolbar.js +2 -2
  20. package/dist/cjs/map/map-control.js +13 -7
  21. package/dist/cjs/map/map-draw-panel.js +65 -15
  22. package/dist/cjs/map/theme-toggle-button.js +64 -0
  23. package/dist/cjs/map-container.js +16 -5
  24. package/dist/cjs/modal-container.js +2 -1
  25. package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
  26. package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
  27. package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
  28. package/dist/cjs/modals/cloud-tile.js +52 -38
  29. package/dist/cjs/modals/data-table-modal.js +37 -25
  30. package/dist/cjs/modals/export-video-modal.js +28 -1
  31. package/dist/cjs/modals/export-video-modal.spec.js +56 -10
  32. package/dist/cjs/modals/globe-export-video-container.js +19 -3
  33. package/dist/cjs/modals/globe-export-video-preview.js +25 -7
  34. package/dist/cjs/modals/hubble-utils.js +8 -3
  35. package/dist/cjs/modals/swipe-composite-utils.js +9 -1
  36. package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
  37. package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
  38. package/dist/cjs/side-panel/layer-manager.js +11 -3
  39. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
  40. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
  41. package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
  42. package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
  43. package/dist/common/data-table/column-statistics-components.d.ts +31 -0
  44. package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
  45. package/dist/common/data-table/column-statistics-time.d.ts +19 -0
  46. package/dist/common/data-table/header-cell.d.ts +7 -5
  47. package/dist/common/data-table/index.d.ts +7 -24
  48. package/dist/common/histogram-plot.d.ts +24 -1
  49. package/dist/common/icons/{arrow-down-solid.d.ts → draw-point.d.ts} +2 -1
  50. package/dist/common/icons/index.d.ts +2 -0
  51. package/dist/common/icons/line-string.d.ts +10 -0
  52. package/dist/common/toolbar-item.d.ts +2 -0
  53. package/dist/editor/editor.d.ts +1 -0
  54. package/dist/editor/feature-action-panel.d.ts +1 -0
  55. package/dist/editor/feature-properties-editor.d.ts +8 -0
  56. package/dist/editor/filter-feature-badges.d.ts +12 -0
  57. package/dist/esm/common/data-table/cell-size.js +40 -23
  58. package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
  59. package/dist/esm/common/data-table/column-statistics-components.js +59 -0
  60. package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
  61. package/dist/esm/common/data-table/column-statistics-time.js +60 -0
  62. package/dist/esm/common/data-table/header-cell.js +125 -46
  63. package/dist/esm/common/data-table/index.js +102 -29
  64. package/dist/esm/common/histogram-plot.js +1 -1
  65. package/dist/esm/common/icons/draw-point.js +44 -0
  66. package/dist/esm/common/icons/index.js +3 -1
  67. package/dist/esm/common/icons/line-string.js +54 -0
  68. package/dist/esm/common/toolbar-item.js +24 -3
  69. package/dist/esm/editor/editor.js +26 -8
  70. package/dist/esm/editor/feature-action-panel.js +37 -15
  71. package/dist/esm/editor/feature-properties-editor.js +208 -0
  72. package/dist/esm/editor/filter-feature-badges.js +85 -0
  73. package/dist/esm/index.js +5 -1
  74. package/dist/esm/kepler-gl.js +20 -3
  75. package/dist/esm/map/map-control-toolbar.js +2 -2
  76. package/dist/esm/map/map-control.js +13 -7
  77. package/dist/esm/map/map-draw-panel.js +63 -11
  78. package/dist/esm/map/theme-toggle-button.js +55 -0
  79. package/dist/esm/map-container.js +16 -5
  80. package/dist/esm/modal-container.js +2 -1
  81. package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
  82. package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
  83. package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
  84. package/dist/esm/modals/cloud-tile.js +52 -38
  85. package/dist/esm/modals/data-table-modal.js +38 -26
  86. package/dist/esm/modals/export-video-modal.js +29 -2
  87. package/dist/esm/modals/export-video-modal.spec.js +56 -10
  88. package/dist/esm/modals/globe-export-video-container.js +20 -4
  89. package/dist/esm/modals/globe-export-video-preview.js +26 -8
  90. package/dist/esm/modals/hubble-utils.js +8 -3
  91. package/dist/esm/modals/swipe-composite-utils.js +9 -1
  92. package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
  93. package/dist/esm/modals/swipe-export-video-preview.js +8 -4
  94. package/dist/esm/side-panel/layer-manager.js +11 -3
  95. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
  96. package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
  97. package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
  98. package/dist/index.d.ts +8 -0
  99. package/dist/kepler-gl.d.ts +3 -0
  100. package/dist/map/map-control.d.ts +6 -2
  101. package/dist/map/map-draw-panel.d.ts +1 -0
  102. package/dist/map/theme-toggle-button.d.ts +18 -0
  103. package/dist/map-container.d.ts +1 -0
  104. package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
  105. package/dist/modals/data-table-modal.d.ts +1 -0
  106. package/dist/modals/globe-export-video-container.d.ts +2 -0
  107. package/dist/modals/globe-export-video-preview.d.ts +3 -0
  108. package/dist/modals/hubble-utils.d.ts +2 -1
  109. package/dist/modals/swipe-composite-utils.d.ts +1 -1
  110. package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
  111. package/package.json +20 -20
  112. package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
  113. package/dist/cjs/modals/storage-map-viewer.js +0 -98
  114. package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
  115. package/dist/esm/common/icons/arrow-down-solid.js +0 -34
  116. package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
  117. package/dist/esm/modals/storage-map-viewer.js +0 -93
  118. package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
  119. package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
  120. package/dist/modals/storage-map-viewer.d.ts +0 -21
  121. package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
@@ -24,7 +24,7 @@ import { FILTER_VIEW_TYPES } from '@kepler.gl/constants';
24
24
  import { parseSetCameraType, scaleToVideoExport, getResolutionSetting } from './hubble-utils';
25
25
  import { GlobeExportVideoPreview } from './globe-export-video-preview';
26
26
  import SwipeExportSettings from './swipe-export-settings';
27
- import { getGlobeClearColor } from '@kepler.gl/deckgl-layers';
27
+ import { drawStarsBackground, getGlobeClearColor, getStarsBackgroundImage } from '@kepler.gl/deckgl-layers';
28
28
 
29
29
  // No-op for the swipe-specific settings callbacks that this single-map globe
30
30
  // exporter doesn't use (the swipe controls are hidden via `hideSwipe`).
@@ -244,9 +244,14 @@ export var GlobeExportVideoPanelContainer = /*#__PURE__*/function (_Component) {
244
244
  if (offCtx) {
245
245
  // deck's canvas is transparent where the globe isn't drawn
246
246
  // (clearColor is disabled to keep picking intact), so fill the
247
- // configured background first, then composite the deck frame.
247
+ // configured background first, tile the starfield (the live map
248
+ // paints stars as a CSS background, which canvas capture misses),
249
+ // then composite the deck frame.
248
250
  offCtx.fillStyle = _this.getBackgroundColor();
249
251
  offCtx.fillRect(0, 0, width, height);
252
+ if (_this.areStarsEnabled()) {
253
+ drawStarsBackground(offCtx, width, height);
254
+ }
250
255
  offCtx.drawImage(deckCanvas, 0, 0, width, height);
251
256
  }
252
257
  encoder.add(offscreen).then(function () {
@@ -510,6 +515,15 @@ export var GlobeExportVideoPanelContainer = /*#__PURE__*/function (_Component) {
510
515
  b = _getGlobeClearColor2[2];
511
516
  return "rgb(".concat(r, ", ").concat(g, ", ").concat(b, ")");
512
517
  }
518
+
519
+ /** Starfield behind the globe, matching the live map's CSS background. */
520
+ }, {
521
+ key: "areStarsEnabled",
522
+ value: function areStarsEnabled() {
523
+ var _this$props$mapData2, _globe$config;
524
+ var globe = (_this$props$mapData2 = this.props.mapData) === null || _this$props$mapData2 === void 0 || (_this$props$mapData2 = _this$props$mapData2.mapState) === null || _this$props$mapData2 === void 0 ? void 0 : _this$props$mapData2.globe;
525
+ return Boolean((globe === null || globe === void 0 ? void 0 : globe.enabled) && (globe === null || globe === void 0 || (_globe$config = globe.config) === null || _globe$config === void 0 ? void 0 : _globe$config.stars));
526
+ }
513
527
  }, {
514
528
  key: "setStateAndNotify",
515
529
  value: function setStateAndNotify(update) {
@@ -573,7 +587,9 @@ export var GlobeExportVideoPanelContainer = /*#__PURE__*/function (_Component) {
573
587
  saving: saving,
574
588
  durationMs: durationMs,
575
589
  deckProps: deckProps,
576
- backgroundColor: this.getBackgroundColor()
590
+ mapProps: this.props.mapProps,
591
+ backgroundColor: this.getBackgroundColor(),
592
+ starsImage: this.areStarsEnabled() ? getStarsBackgroundImage() : null
577
593
  }), /*#__PURE__*/React.createElement(SwipeExportSettings, {
578
594
  durationMs: durationMs,
579
595
  mediaType: mediaType,
@@ -617,4 +633,4 @@ export var GlobeExportVideoPanelContainer = /*#__PURE__*/function (_Component) {
617
633
  }
618
634
  }]);
619
635
  }(Component);
620
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsImNyZWF0ZVJlZiIsImVhc2VJbk91dCIsImRvd25sb2FkIiwic3R5bGVkIiwiQnV0dG9uIiwiRGVja0FkYXB0ZXIiLCJLZXBsZXJBbmltYXRpb24iLCJXZWJNRW5jb2RlciIsIkpQRUdTZXF1ZW5jZUVuY29kZXIiLCJQTkdTZXF1ZW5jZUVuY29kZXIiLCJHaWZFbmNvZGVyIiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJwYXJzZVNldENhbWVyYVR5cGUiLCJzY2FsZVRvVmlkZW9FeHBvcnQiLCJnZXRSZXNvbHV0aW9uU2V0dGluZyIsIkdsb2JlRXhwb3J0VmlkZW9QcmV2aWV3IiwiU3dpcGVFeHBvcnRTZXR0aW5ncyIsImdldEdsb2JlQ2xlYXJDb2xvciIsIm5vb3AiLCJ1bmRlZmluZWQiLCJFTkNPREVSUyIsImdpZiIsIndlYm0iLCJqcGVnIiwicG5nIiwiUGFuZWxCb2R5IiwiZGl2IiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCIsInByb3BzIiwiJGV4cG9ydFZpZGVvV2lkdGgiLCJUaW1lbGluZUNvbnRyb2xzIiwiX3RlbXBsYXRlT2JqZWN0MiIsInRpbWVsaW5lUGxheUJ1dHRvblN0eWxlIiwiY3Vyc29yIiwiaGVpZ2h0Iiwid2lkdGgiLCJmaWxsIiwiQnV0dG9uR3JvdXAiLCJfdGVtcGxhdGVPYmplY3QzIiwiU3RhdHVzVGV4dCIsIl90ZW1wbGF0ZU9iamVjdDQiLCJ0aGVtZSIsInN1YnRleHRDb2xvckxUIiwiUGxheUljb24iLCJfcmVmIiwic3R5bGUiLCJvbkNsaWNrIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInZpZXdCb3giLCJkIiwiU3RvcEljb24iLCJfcmVmMiIsIkdsb2JlRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lciIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9jYWxsU3VwZXIiLCJfZGVmaW5lUHJvcGVydHkiLCJ2aWV3U3RhdGUiLCJzZXRTdGF0ZSIsIm1lZGlhVHlwZSIsInNldFN0YXRlQW5kTm90aWZ5IiwiY2FtZXJhUHJlc2V0IiwiZmlsZU5hbWUiLCJyZXNvbHV0aW9uIiwiZHVyYXRpb25NcyIsIl90aGlzJHN0YXRlIiwic3RhdGUiLCJhZGFwdGVyIiwicHJldmlld2luZyIsImN1cnJlbnRUaW1lTXMiLCJtZW1vIiwiX29iamVjdFNwcmVhZCIsImFuaW1hdGlvbk1hbmFnZXIiLCJzZXRLZXlmcmFtZXMiLCJnZXRGaWx0ZXJLZXlmcmFtZXMiLCJnZXRUcmlwS2V5ZnJhbWVzIiwiY2FtZXJhS2V5ZnJhbWUiLCJnZXRDYW1lcmFLZXlmcmFtZXMiLCJzdGFydFRpbWUiLCJwZXJmb3JtYW5jZSIsIm5vdyIsImFuaW1hdGUiLCJlbGFwc2VkIiwiTWF0aCIsIm1pbiIsInRpbWVsaW5lIiwic2V0VGltZSIsImRyYXciLCJhbmltYXRpb25GcmFtZUlkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiZmlsZW5hbWUiLCJnZXRGaWxlTmFtZSIsIkVuY29kZXIiLCJnZXRFbmNvZGVyIiwiZm9ybWF0Q29uZmlncyIsImdldEZvcm1hdENvbmZpZ3MiLCJ0aW1lY29kZSIsImdldFRpbWVjb2RlIiwiX3RoaXMkZ2V0Q2FudmFzU2l6ZSIsImdldENhbnZhc1NpemUiLCJyZW5kZXJpbmciLCJzYXZpbmciLCJlbmNvZGVyIiwiZnJhbWVyYXRlIiwiYWN0aXZlRW5jb2RlciIsInN0YXJ0IiwiZnJhbWVMZW5ndGhNcyIsImZsb29yIiwidGltZU1zIiwicmV0cnlDb3VudCIsIk1BWF9SRVRSSUVTIiwiY2FwdHVyZU5leHRGcmFtZSIsIndhaXRBbmRDYXB0dXJlIiwicHJldmlldyIsInByZXZpZXdSZWYiLCJjdXJyZW50IiwiYXJlTGF5ZXJzTG9hZGVkIiwiZGVja0NhbnZhcyIsImdldENhbnZhcyIsIm9mZnNjcmVlbiIsImNvbXBvc2l0ZUNhbnZhcyIsImRvY3VtZW50Iiwib2ZmQ3R4IiwiZ2V0Q29udGV4dCIsImZpbGxTdHlsZSIsImdldEJhY2tncm91bmRDb2xvciIsImZpbGxSZWN0IiwiZHJhd0ltYWdlIiwiYWRkIiwidGhlbiIsImVuZCIsInNhdmUiLCJibG9iIiwiZXh0ZW5zaW9uIiwibWltZVR5cGUiLCJzZXRUaW1lb3V0IiwiX3JlZjMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJfcmVmMyRhYm9ydCIsImFib3J0IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJfdGhpcyRzdGF0ZSRtZW1vIiwiaW5pdGlhbFN0YXRlIiwibWFwU3RhdGUiLCJtYXBEYXRhIiwiZ2xDb250ZXh0IiwiX2dldENvbnRhaW5lciIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwcm9wcyIsIm9uVHJpcEZyYW1lVXBkYXRlIiwib25GaWx0ZXJGcmFtZVVwZGF0ZSIsImdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lcyIsImFuaW1hdGlvbiIsIm9uQ2FtZXJhRnJhbWVVcGRhdGUiLCJzZXRWaWV3U3RhdGUiLCJhdHRhY2hBbmltYXRpb24iLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIm9uU3RvcCIsImRlZmF1bHRGaWxlTmFtZSIsIl9nZXRSZXNvbHV0aW9uU2V0dGluZyIsIl90aGlzJGdldENhbnZhc1NpemUyIiwiZXhwb3J0VmlkZW9XaWR0aCIsImFzcGVjdFJhdGlvIiwiX3RoaXMkZ2V0Q2FudmFzU2l6ZTMiLCJxdWFsaXR5Iiwic2FtcGxlSW50ZXJ2YWwiLCJfdGhpcyRzdGF0ZTIiLCJfcmVmNCIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsInBpdGNoIiwiYmVhcmluZyIsIl90aGlzJGdldENhbnZhc1NpemU0IiwidGltaW5ncyIsImtleWZyYW1lcyIsImVhc2luZ3MiLCJfdGhpczIiLCJfdGhpcyRwcm9wczIiLCJmaWx0ZXJzIiwidmlzU3RhdGUiLCJhbmltYXRhYmxlRmlsdGVycyIsImZpbHRlcktleWZyYW1lcyIsIkFycmF5IiwiaXNBcnJheSIsImZpbHRlciIsImYiLCJ0eXBlIiwidmlldyIsImVubGFyZ2VkIiwibWFwIiwiaWQiLCJfdGhpcyRwcm9wcyRtYXBEYXRhJHYiLCJsYXllcnMiLCJhbmltYXRpb25Db25maWciLCJhbmltYXRhYmxlTGF5ZXIiLCJsIiwiY29uZmlnIiwiZW5hYmxlZCIsImlzVmlzaWJsZSIsInJlYWR5VG9BbmltYXRpb24iLCJkb21haW4iLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImN1cnJlbnRUaW1lIiwidHJpcEtleWZyYW1lIiwiX3RoaXMkcHJvcHMkbWFwRGF0YSIsImJnIiwiZ2xvYmUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJfZ2V0R2xvYmVDbGVhckNvbG9yIiwiX2dldEdsb2JlQ2xlYXJDb2xvcjIiLCJfc2xpY2VkVG9BcnJheSIsInIiLCJnIiwiYiIsImNvbmNhdCIsInVwZGF0ZSIsIm9uU2V0dGluZ3NDaGFuZ2UiLCJfdGhpcyRzdGF0ZTMiLCJyZW5kZXIiLCJfdGhpczMiLCJfdGhpcyRwcm9wczMiLCJkZWNrUHJvcHMiLCJfdGhpcyRzdGF0ZTQiLCJjYW52YXNTaXplIiwiaXNBY3RpdmUiLCJyZWYiLCJmcmFtZVJhdGUiLCJvbkNoYW5nZUR1cmF0aW9uIiwic2V0RHVyYXRpb24iLCJvbkNoYW5nZU1lZGlhVHlwZSIsInNldE1lZGlhVHlwZSIsIm9uQ2hhbmdlUmVzb2x1dGlvbiIsInNldFJlc29sdXRpb24iLCJvbkNoYW5nZUZpbGVOYW1lIiwic2V0RmlsZU5hbWUiLCJvbkNoYW5nZUNhbWVyYVByZXNldCIsInNldENhbWVyYVByZXNldCIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiZGlzYWJsZWQiLCJvbkNoYW5nZVN0YXJ0UGN0Iiwib25DaGFuZ2VFbmRQY3QiLCJvbkNoYW5nZUVhc2luZyIsImhpZGVTd2lwZSIsIm9uUHJldmlld1ZpZGVvIiwicm91bmQiLCJtYXJnaW5Ub3AiLCJvblJlbmRlclZpZGVvIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGFscy9nbG9iZS1leHBvcnQtdmlkZW8tY29udGFpbmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtlYXNlSW5PdXR9IGZyb20gJ3BvcG1vdGlvbic7XG5pbXBvcnQgZG93bmxvYWQgZnJvbSAnZG93bmxvYWRqcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgRGVja0FkYXB0ZXIsXG4gIEtlcGxlckFuaW1hdGlvbixcbiAgV2ViTUVuY29kZXIsXG4gIEpQRUdTZXF1ZW5jZUVuY29kZXIsXG4gIFBOR1NlcXVlbmNlRW5jb2RlcixcbiAgR2lmRW5jb2RlcixcbiAgRm9ybWF0Q29uZmlncyxcbiAgVGltZWNvZGVcbn0gZnJvbSAnQGh1YmJsZS5nbC9jb3JlJztcbmltcG9ydCB0eXBlIHtEZWNrUHJvcHMsIE1hcFZpZXdTdGF0ZX0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge0ZJTFRFUl9WSUVXX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7cGFyc2VTZXRDYW1lcmFUeXBlLCBzY2FsZVRvVmlkZW9FeHBvcnQsIGdldFJlc29sdXRpb25TZXR0aW5nfSBmcm9tICcuL2h1YmJsZS11dGlscyc7XG5pbXBvcnQge0dsb2JlRXhwb3J0VmlkZW9QcmV2aWV3fSBmcm9tICcuL2dsb2JlLWV4cG9ydC12aWRlby1wcmV2aWV3JztcbmltcG9ydCBTd2lwZUV4cG9ydFNldHRpbmdzIGZyb20gJy4vc3dpcGUtZXhwb3J0LXNldHRpbmdzJztcbmltcG9ydCB7Z2V0R2xvYmVDbGVhckNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuXG4vLyBOby1vcCBmb3IgdGhlIHN3aXBlLXNwZWNpZmljIHNldHRpbmdzIGNhbGxiYWNrcyB0aGF0IHRoaXMgc2luZ2xlLW1hcCBnbG9iZVxuLy8gZXhwb3J0ZXIgZG9lc24ndCB1c2UgKHRoZSBzd2lwZSBjb250cm9scyBhcmUgaGlkZGVuIHZpYSBgaGlkZVN3aXBlYCkuXG5jb25zdCBub29wID0gKCkgPT4gdW5kZWZpbmVkO1xuXG5jb25zdCBFTkNPREVSUyA9IHtcbiAgZ2lmOiBHaWZFbmNvZGVyLFxuICB3ZWJtOiBXZWJNRW5jb2RlcixcbiAganBlZzogSlBFR1NlcXVlbmNlRW5jb2RlcixcbiAgcG5nOiBQTkdTZXF1ZW5jZUVuY29kZXJcbn07XG5cbmV4cG9ydCB0eXBlIEdsb2JlRXhwb3J0VmlkZW9TZXR0aW5ncyA9IHtcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICBjYW1lcmFQcmVzZXQ/OiBzdHJpbmc7XG4gIGZpbGVOYW1lPzogc3RyaW5nO1xuICByZXNvbHV0aW9uPzogc3RyaW5nO1xuICBkdXJhdGlvbk1zPzogbnVtYmVyO1xufTtcblxudHlwZSBHbG9iZUV4cG9ydFZpZGVvUGFuZWxDb250YWluZXJQcm9wcyA9IHtcbiAgaW5pdGlhbFN0YXRlPzogUGFydGlhbDxHbG9iZUV4cG9ydFZpZGVvUGFuZWxDb250YWluZXJTdGF0ZT47XG4gIGdsQ29udGV4dD86IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ7XG4gIGV4cG9ydFZpZGVvV2lkdGg6IG51bWJlcjtcbiAgaGFuZGxlQ2xvc2U6ICgpID0+IHZvaWQ7XG4gIG1hcERhdGE6IGFueTtcbiAgaGVhZGVyOiBib29sZWFuO1xuICBkZWNrUHJvcHM/OiBEZWNrUHJvcHM7XG4gIG1hcFByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBkZWZhdWx0RmlsZU5hbWU6IHN0cmluZztcbiAgYW5pbWF0YWJsZUZpbHRlcnM6IGFueTtcbiAgb25UcmlwRnJhbWVVcGRhdGU6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICBvbkZpbHRlckZyYW1lVXBkYXRlOiAoZmlsdGVySWR4OiBudW1iZXIsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gdm9pZDtcbiAgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzOiAoYXJnczogYW55KSA9PiBhbnk7XG4gIG9uU2V0dGluZ3NDaGFuZ2U6IChzZXR0aW5nczogR2xvYmVFeHBvcnRWaWRlb1NldHRpbmdzKSA9PiB2b2lkO1xufTtcblxudHlwZSBHbG9iZUV4cG9ydFZpZGVvUGFuZWxDb250YWluZXJTdGF0ZSA9IHtcbiAgYWRhcHRlcj86IERlY2tBZGFwdGVyO1xuICBkdXJhdGlvbk1zOiBudW1iZXI7XG4gIG1lZGlhVHlwZTogc3RyaW5nO1xuICBjYW1lcmFQcmVzZXQ6IHN0cmluZztcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgcmVzb2x1dGlvbjogc3RyaW5nO1xuICB2aWV3U3RhdGU/OiBNYXBWaWV3U3RhdGU7XG4gIHJlbmRlcmluZzogYm9vbGVhbjtcbiAgcHJldmlld2luZzogYm9vbGVhbjtcbiAgc2F2aW5nOiBib29sZWFuO1xuICBjdXJyZW50VGltZU1zOiBudW1iZXI7XG4gIG1lbW8/OiB7dmlld1N0YXRlOiBNYXBWaWV3U3RhdGV9O1xufTtcblxuY29uc3QgUGFuZWxCb2R5ID0gc3R5bGVkLmRpdjx7JGV4cG9ydFZpZGVvV2lkdGg6IG51bWJlcn0+YFxuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICR7cHJvcHMgPT4gcHJvcHMuJGV4cG9ydFZpZGVvV2lkdGh9cHggMjgwcHg7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogYXV0bztcbiAgZ3JpZC1jb2x1bW4tZ2FwOiAyNHB4O1xuYDtcblxuY29uc3QgVGltZWxpbmVDb250cm9scyA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmctdG9wOiAxNnB4O1xuYDtcblxuY29uc3QgdGltZWxpbmVQbGF5QnV0dG9uU3R5bGUgPSB7XG4gIGN1cnNvcjogJ3BvaW50ZXInLFxuICBoZWlnaHQ6ICczMnB4JyxcbiAgd2lkdGg6ICczMnB4JyxcbiAgZmlsbDogJyNGRkYnXG59O1xuXG5jb25zdCBCdXR0b25Hcm91cCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG5gO1xuXG5jb25zdCBTdGF0dXNUZXh0ID0gc3R5bGVkLmRpdmBcbiAgZm9udC1zaXplOiAxMXB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3JMVCB8fCAnIzZBNzQ4NSd9O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDRweDtcbmA7XG5cbmNvbnN0IFBsYXlJY29uOiBSZWFjdC5GQzx7c3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzOyBvbkNsaWNrPzogKCkgPT4gdm9pZH0+ID0gKHtcbiAgc3R5bGUsXG4gIG9uQ2xpY2tcbn0pID0+IChcbiAgPHN2ZyBjbGFzc05hbWU9XCJkYXRhLWV4LWljb25zLXBsYXlcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3N0eWxlfSBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIgLz5cbiAgICA8cGF0aCBkPVwiTTE5LjM3NiAxMi40MTZMOC43NzcgMTkuNDgyQS41LjUgMCAwIDEgOCAxOS4wNjZWNC45MzRhLjUuNSAwIDAgMSAuNzc3LS40MTZsMTAuNTk5IDcuMDY2YS41LjUgMCAwIDEgMCAuODMyelwiIC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgU3RvcEljb246IFJlYWN0LkZDPHtzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7IG9uQ2xpY2s/OiAoKSA9PiB2b2lkfT4gPSAoe1xuICBzdHlsZSxcbiAgb25DbGlja1xufSkgPT4gKFxuICA8c3ZnIGNsYXNzTmFtZT1cImRhdGEtZXgtaWNvbnMtc3RvcFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17c3R5bGV9IG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMHpcIiAvPlxuICAgIDxwYXRoIGQ9XCJNNiA1aDEyYTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMUg2YTEgMSAwIDAgMS0xLTFWNmExIDEgMCAwIDEgMS0xelwiIC8+XG4gIDwvc3ZnPlxuKTtcblxuLyoqXG4gKiBWaWRlbyBleHBvcnQgY29udGFpbmVyIGZvciBnbG9iZSBtb2RlLlxuICpcbiAqIGh1YmJsZSdzIGJ1aWx0LWluIEV4cG9ydFZpZGVvUGFuZWxDb250YWluZXIgb25seSBkcml2ZXMgaXRzIGZyYW1lLWNhcHR1cmVcbiAqIGxvb3AgZnJvbSB0aGUgbWFwYm94IGJhc2UgbWFwJ3MgJ3JlbmRlcicgZXZlbnQ7IGluIGdsb2JlIG1vZGUgdGhlIGJhc2UgbWFwIGlzXG4gKiBkaXNhYmxlZCBzbyB0aGF0IGxvb3AgbmV2ZXIgZmlyZXMgYW5kIHRoZSBleHBvcnQgaGFuZ3MuIFRoaXMgY29udGFpbmVyIG1pcnJvcnNcbiAqIHRoZSBzd2lwZS1leHBvcnQgYXBwcm9hY2g6IGl0IG93bnMgYSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2FwdHVyZSBsb29wIGFuZFxuICogcmVhZHMgdGhlIGdsb2JlIGRlY2sgY2FudmFzIGRpcmVjdGx5LCBzbyByZWNvcmRpbmcgd29ya3Mgd2l0aG91dCBhIGJhc2UgbWFwLlxuICovXG5leHBvcnQgY2xhc3MgR2xvYmVFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50PFxuICBHbG9iZUV4cG9ydFZpZGVvUGFuZWxDb250YWluZXJQcm9wcyxcbiAgR2xvYmVFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyU3RhdGVcbj4ge1xuICBwcmV2aWV3UmVmID0gY3JlYXRlUmVmPEdsb2JlRXhwb3J0VmlkZW9QcmV2aWV3PigpO1xuICBhbmltYXRpb25GcmFtZUlkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgYWN0aXZlRW5jb2RlcjogYW55IHwgbnVsbCA9IG51bGw7XG4gIC8vIFJldXNlZCBhY3Jvc3MgYWxsIGNhcHR1cmVkIGZyYW1lcyB0byBhdm9pZCBhbGxvY2F0aW5nIGEgZnVsbC1yZXNvbHV0aW9uXG4gIC8vIGNhbnZhcyBwZXIgZnJhbWUgKEdDIHByZXNzdXJlL2phbmsgZHVyaW5nIGEgbXVsdGktc2Vjb25kIGV4cG9ydCkuXG4gIGNvbXBvc2l0ZUNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogR2xvYmVFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICBjb25zdCB7XG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBtYXBEYXRhOiB7bWFwU3RhdGV9LFxuICAgICAgZ2xDb250ZXh0XG4gICAgfSA9IHByb3BzO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIG1lZGlhVHlwZTogJ3dlYm0nLFxuICAgICAgY2FtZXJhUHJlc2V0OiAnTm9uZScsXG4gICAgICBmaWxlTmFtZTogJycsXG4gICAgICByZXNvbHV0aW9uOiAnMTI4MHg3MjAnLFxuICAgICAgZHVyYXRpb25NczogMTAwMCxcbiAgICAgIHJlbmRlcmluZzogZmFsc2UsXG4gICAgICBwcmV2aWV3aW5nOiBmYWxzZSxcbiAgICAgIHNhdmluZzogZmFsc2UsXG4gICAgICBjdXJyZW50VGltZU1zOiAwLFxuICAgICAgLi4uKGluaXRpYWxTdGF0ZSB8fCB7fSlcbiAgICB9O1xuXG4gICAgY29uc3Qgdmlld1N0YXRlID0gc2NhbGVUb1ZpZGVvRXhwb3J0KG1hcFN0YXRlLCB0aGlzLl9nZXRDb250YWluZXIoKSk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICB2aWV3U3RhdGUsXG4gICAgICBtZW1vOiB7dmlld1N0YXRlfSxcbiAgICAgIGFkYXB0ZXI6IG5ldyBEZWNrQWRhcHRlcih7Z2xDb250ZXh0fSlcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3Qge29uVHJpcEZyYW1lVXBkYXRlLCBvbkZpbHRlckZyYW1lVXBkYXRlLCBnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXN9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBhbmltYXRpb24gPSBuZXcgS2VwbGVyQW5pbWF0aW9uKHtcbiAgICAgIC4uLnRoaXMuZ2V0RmlsdGVyS2V5ZnJhbWVzKCksXG4gICAgICAuLi50aGlzLmdldFRyaXBLZXlmcmFtZXMoKSxcbiAgICAgIGNhbWVyYUtleWZyYW1lOiB0aGlzLmdldENhbWVyYUtleWZyYW1lcygpLFxuICAgICAgb25DYW1lcmFGcmFtZVVwZGF0ZTogdGhpcy5zZXRWaWV3U3RhdGUgYXMgYW55LFxuICAgICAgb25UcmlwRnJhbWVVcGRhdGUsXG4gICAgICBvbkZpbHRlckZyYW1lVXBkYXRlLFxuICAgICAgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzXG4gICAgfSk7XG4gICAgdGhpcy5zdGF0ZS5hZGFwdGVyIS5hbmltYXRpb25NYW5hZ2VyLmF0dGFjaEFuaW1hdGlvbihhbmltYXRpb24pO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5vblN0b3Aoe2Fib3J0OiB0cnVlfSk7XG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uRnJhbWVJZCkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25GcmFtZUlkKTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWxlTmFtZSgpIHtcbiAgICBjb25zdCB7ZGVmYXVsdEZpbGVOYW1lfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge2ZpbGVOYW1lfSA9IHRoaXMuc3RhdGU7XG4gICAgcmV0dXJuIGZpbGVOYW1lIHx8IGRlZmF1bHRGaWxlTmFtZTtcbiAgfVxuXG4gIGdldENhbnZhc1NpemUoKSB7XG4gICAgY29uc3Qge3Jlc29sdXRpb259ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBnZXRSZXNvbHV0aW9uU2V0dGluZyhyZXNvbHV0aW9uKTtcbiAgICByZXR1cm4ge3dpZHRoLCBoZWlnaHR9O1xuICB9XG5cbiAgX2dldENvbnRhaW5lcigpIHtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSB0aGlzLmdldENhbnZhc1NpemUoKTtcbiAgICBjb25zdCB7ZXhwb3J0VmlkZW9XaWR0aH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGFzcGVjdFJhdGlvID0gd2lkdGggLyBoZWlnaHQ7XG4gICAgcmV0dXJuIHtoZWlnaHQ6IGV4cG9ydFZpZGVvV2lkdGggLyBhc3BlY3RSYXRpbywgd2lkdGg6IGV4cG9ydFZpZGVvV2lkdGh9O1xuICB9XG5cbiAgZ2V0Rm9ybWF0Q29uZmlncygpOiBQYXJ0aWFsPEZvcm1hdENvbmZpZ3M+IHtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSB0aGlzLmdldENhbnZhc1NpemUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgd2VibToge3F1YWxpdHk6IDAuOH0sXG4gICAgICBqcGVnOiB7cXVhbGl0eTogMC44fSxcbiAgICAgIHBuZzoge30sXG4gICAgICBnaWY6IHtzYW1wbGVJbnRlcnZhbDogMTAwMCwgd2lkdGgsIGhlaWdodH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0VGltZWNvZGUoKTogVGltZWNvZGUge1xuICAgIGNvbnN0IHtkdXJhdGlvbk1zfSA9IHRoaXMuc3RhdGU7XG4gICAgcmV0dXJuIHtzdGFydDogMCwgZW5kOiBkdXJhdGlvbk1zLCBmcmFtZXJhdGU6IDMwfTtcbiAgfVxuXG4gIGdldEVuY29kZXIoKSB7XG4gICAgY29uc3Qge21lZGlhVHlwZX0gPSB0aGlzLnN0YXRlO1xuICAgIHJldHVybiBFTkNPREVSU1ttZWRpYVR5cGVdO1xuICB9XG5cbiAgZ2V0Q2FtZXJhS2V5ZnJhbWVzKCkge1xuICAgIGNvbnN0IHt2aWV3U3RhdGUsIGNhbWVyYVByZXNldCwgZHVyYXRpb25Nc30gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHtsb25naXR1ZGUsIGxhdGl0dWRlLCB6b29tLCBwaXRjaCwgYmVhcmluZ30gPSB2aWV3U3RhdGUhO1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IHRoaXMuZ2V0Q2FudmFzU2l6ZSgpO1xuICAgIHJldHVybiB7XG4gICAgICB0aW1pbmdzOiBbMCwgZHVyYXRpb25Nc10sXG4gICAgICBrZXlmcmFtZXM6IFtcbiAgICAgICAge2xvbmdpdHVkZSwgbGF0aXR1ZGUsIHpvb20sIHBpdGNoLCBiZWFyaW5nfSxcbiAgICAgICAgcGFyc2VTZXRDYW1lcmFUeXBlKGNhbWVyYVByZXNldCwgdmlld1N0YXRlISlcbiAgICAgIF0sXG4gICAgICBlYXNpbmdzOiBbZWFzZUluT3V0XSxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfTtcbiAgfVxuXG4gIGdldEZpbHRlcktleWZyYW1lcygpIHtcbiAgICBjb25zdCB7XG4gICAgICBtYXBEYXRhOiB7XG4gICAgICAgIHZpc1N0YXRlOiB7ZmlsdGVyc31cbiAgICAgIH0sXG4gICAgICBhbmltYXRhYmxlRmlsdGVyc1xuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgZmlsdGVyS2V5ZnJhbWVzID0gKFxuICAgICAgQXJyYXkuaXNBcnJheShhbmltYXRhYmxlRmlsdGVycykgJiYgYW5pbWF0YWJsZUZpbHRlcnMubGVuZ3RoXG4gICAgICAgID8gYW5pbWF0YWJsZUZpbHRlcnNcbiAgICAgICAgOiBmaWx0ZXJzLmZpbHRlcihcbiAgICAgICAgICAgIChmOiBhbnkpID0+IGYudHlwZSA9PT0gJ3RpbWVSYW5nZScgJiYgZi52aWV3ID09PSBGSUxURVJfVklFV19UWVBFUy5lbmxhcmdlZFxuICAgICAgICAgIClcbiAgICApLm1hcCgoZjogYW55KSA9PiAoe1xuICAgICAgaWQ6IGYuaWQsXG4gICAgICB0aW1pbmdzOiBbMCwgdGhpcy5zdGF0ZS5kdXJhdGlvbk1zXVxuICAgIH0pKTtcblxuICAgIGlmIChmaWx0ZXJLZXlmcmFtZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge2ZpbHRlcnMsIGZpbHRlcktleWZyYW1lc307XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGdldFRyaXBLZXlmcmFtZXMoKSB7XG4gICAgY29uc3Qge1xuICAgICAgbWFwRGF0YToge1xuICAgICAgICB2aXNTdGF0ZToge2xheWVycywgYW5pbWF0aW9uQ29uZmlnfVxuICAgICAgfVxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgYW5pbWF0YWJsZUxheWVyID0gbGF5ZXJzLmZpbHRlcihcbiAgICAgIChsOiBhbnkpID0+IGwuY29uZmlnLmFuaW1hdGlvbiAmJiBsLmNvbmZpZy5hbmltYXRpb24uZW5hYmxlZCAmJiBsLmNvbmZpZy5pc1Zpc2libGVcbiAgICApO1xuICAgIGNvbnN0IHJlYWR5VG9BbmltYXRpb24gPVxuICAgICAgQXJyYXkuaXNBcnJheShhbmltYXRpb25Db25maWcuZG9tYWluKSAmJiBOdW1iZXIuaXNGaW5pdGUoYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lKTtcbiAgICBpZiAoYW5pbWF0YWJsZUxheWVyLmxlbmd0aCAmJiByZWFkeVRvQW5pbWF0aW9uKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgIHRyaXBLZXlmcmFtZToge3RpbWluZ3M6IFswLCB0aGlzLnN0YXRlLmR1cmF0aW9uTXNdfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgc2V0Vmlld1N0YXRlID0gKHZpZXdTdGF0ZTogTWFwVmlld1N0YXRlKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7dmlld1N0YXRlfSk7XG4gIH07XG5cbiAgLyoqIENTUyBiYWNrZ3JvdW5kIGNvbG9yIChhcmVhIHRoZSBnbG9iZSBkb2Vzbid0IGNvdmVyKSwgZnJvbSBnbG9iZSBjb25maWcuICovXG4gIGdldEJhY2tncm91bmRDb2xvcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJnID0gdGhpcy5wcm9wcy5tYXBEYXRhPy5tYXBTdGF0ZT8uZ2xvYmU/LmNvbmZpZz8uYmFja2dyb3VuZENvbG9yO1xuICAgIGNvbnN0IFtyLCBnLCBiXSA9IGdldEdsb2JlQ2xlYXJDb2xvcihiZyk7XG4gICAgcmV0dXJuIGByZ2IoJHtyfSwgJHtnfSwgJHtifSlgO1xuICB9XG5cbiAgc2V0U3RhdGVBbmROb3RpZnkodXBkYXRlOiBHbG9iZUV4cG9ydFZpZGVvU2V0dGluZ3MpIHtcbiAgICBjb25zdCB7b25TZXR0aW5nc0NoYW5nZX0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHttZWRpYVR5cGUsIGNhbWVyYVByZXNldCwgZmlsZU5hbWUsIHJlc29sdXRpb24sIGR1cmF0aW9uTXN9ID0gdGhpcy5zdGF0ZTtcbiAgICB0aGlzLnNldFN0YXRlKHsuLi50aGlzLnN0YXRlLCAuLi51cGRhdGV9IGFzIGFueSk7XG4gICAgaWYgKG9uU2V0dGluZ3NDaGFuZ2UpIHtcbiAgICAgIG9uU2V0dGluZ3NDaGFuZ2Uoe21lZGlhVHlwZSwgY2FtZXJhUHJlc2V0LCBmaWxlTmFtZSwgcmVzb2x1dGlvbiwgZHVyYXRpb25NcywgLi4udXBkYXRlfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0TWVkaWFUeXBlID0gKG1lZGlhVHlwZTogc3RyaW5nKSA9PiB0aGlzLnNldFN0YXRlQW5kTm90aWZ5KHttZWRpYVR5cGV9KTtcbiAgc2V0Q2FtZXJhUHJlc2V0ID0gKGNhbWVyYVByZXNldDogc3RyaW5nKSA9PiB0aGlzLnNldFN0YXRlQW5kTm90aWZ5KHtjYW1lcmFQcmVzZXR9KTtcbiAgc2V0RmlsZU5hbWUgPSAoZmlsZU5hbWU6IHN0cmluZykgPT4gdGhpcy5zZXRTdGF0ZUFuZE5vdGlmeSh7ZmlsZU5hbWV9KTtcbiAgc2V0UmVzb2x1dGlvbiA9IChyZXNvbHV0aW9uOiBzdHJpbmcpID0+IHRoaXMuc2V0U3RhdGVBbmROb3RpZnkoe3Jlc29sdXRpb259KTtcbiAgc2V0RHVyYXRpb24gPSAoZHVyYXRpb25NczogbnVtYmVyKSA9PiB0aGlzLnNldFN0YXRlQW5kTm90aWZ5KHtkdXJhdGlvbk1zfSk7XG5cbiAgLyoqIFByZXZpZXcgcGxheWJhY2sg4oCUIGFuaW1hdGUgdGhlIGNhbWVyYSB3aXRob3V0IGVuY29kaW5nLiAqL1xuICBvblByZXZpZXdWaWRlbyA9ICgpID0+IHtcbiAgICBjb25zdCB7YWRhcHRlciwgZHVyYXRpb25Nc30gPSB0aGlzLnN0YXRlO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgcHJldmlld2luZzogdHJ1ZSxcbiAgICAgIGN1cnJlbnRUaW1lTXM6IDAsXG4gICAgICBtZW1vOiB7dmlld1N0YXRlOiB7Li4udGhpcy5zdGF0ZS52aWV3U3RhdGUhfX1cbiAgICB9KTtcblxuICAgIGFkYXB0ZXIhLmFuaW1hdGlvbk1hbmFnZXIuc2V0S2V5ZnJhbWVzKCdrZXBsZXInLCB7XG4gICAgICAuLi50aGlzLmdldEZpbHRlcktleWZyYW1lcygpLFxuICAgICAgLi4udGhpcy5nZXRUcmlwS2V5ZnJhbWVzKCksXG4gICAgICBjYW1lcmFLZXlmcmFtZTogdGhpcy5nZXRDYW1lcmFLZXlmcmFtZXMoKVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgYW5pbWF0ZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGVsYXBzZWQgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lTXMgPSBNYXRoLm1pbihlbGFwc2VkLCBkdXJhdGlvbk1zKTtcblxuICAgICAgYWRhcHRlciEuYW5pbWF0aW9uTWFuYWdlci50aW1lbGluZS5zZXRUaW1lKGN1cnJlbnRUaW1lTXMpO1xuICAgICAgYWRhcHRlciEuYW5pbWF0aW9uTWFuYWdlci5kcmF3KCk7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe2N1cnJlbnRUaW1lTXN9KTtcblxuICAgICAgaWYgKGN1cnJlbnRUaW1lTXMgPj0gZHVyYXRpb25Ncykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBwcmV2aWV3aW5nOiBmYWxzZSxcbiAgICAgICAgICBjdXJyZW50VGltZU1zOiAwLFxuICAgICAgICAgIHZpZXdTdGF0ZTogey4uLnRoaXMuc3RhdGUubWVtbyEudmlld1N0YXRlfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hbmltYXRpb25GcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpO1xuICAgIH07XG4gICAgdGhpcy5hbmltYXRpb25GcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZWNvcmQg4oCUIGRyaXZlIG91ciBvd24gY2FwdHVyZSBsb29wIChodWJibGUncyBidWlsdC1pbiBsb29wIG5ldmVyIGZpcmVzXG4gICAqIHdpdGhvdXQgYSBiYXNlIG1hcCkgYW5kIGVuY29kZSB0aGUgZ2xvYmUgZGVjayBjYW52YXMgZnJhbWUgYnkgZnJhbWUuXG4gICAqL1xuICBvblJlbmRlclZpZGVvID0gKCkgPT4ge1xuICAgIGNvbnN0IHthZGFwdGVyfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgZmlsZW5hbWUgPSB0aGlzLmdldEZpbGVOYW1lKCk7XG4gICAgY29uc3QgRW5jb2RlciA9IHRoaXMuZ2V0RW5jb2RlcigpO1xuICAgIGNvbnN0IGZvcm1hdENvbmZpZ3MgPSB0aGlzLmdldEZvcm1hdENvbmZpZ3MoKTtcbiAgICBjb25zdCB0aW1lY29kZSA9IHRoaXMuZ2V0VGltZWNvZGUoKTtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSB0aGlzLmdldENhbnZhc1NpemUoKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgcmVuZGVyaW5nOiB0cnVlLFxuICAgICAgc2F2aW5nOiBmYWxzZSxcbiAgICAgIGN1cnJlbnRUaW1lTXM6IDAsXG4gICAgICBtZW1vOiB7dmlld1N0YXRlOiB7Li4udGhpcy5zdGF0ZS52aWV3U3RhdGUhfX1cbiAgICB9KTtcblxuICAgIGFkYXB0ZXIhLmFuaW1hdGlvbk1hbmFnZXIuc2V0S2V5ZnJhbWVzKCdrZXBsZXInLCB7XG4gICAgICAuLi50aGlzLmdldEZpbHRlcktleWZyYW1lcygpLFxuICAgICAgLi4udGhpcy5nZXRUcmlwS2V5ZnJhbWVzKCksXG4gICAgICBjYW1lcmFLZXlmcmFtZTogdGhpcy5nZXRDYW1lcmFLZXlmcmFtZXMoKVxuICAgIH0pO1xuXG4gICAgY29uc3QgZW5jb2RlciA9IG5ldyBFbmNvZGVyKHsuLi5mb3JtYXRDb25maWdzLCBmcmFtZXJhdGU6IHRpbWVjb2RlLmZyYW1lcmF0ZX0pO1xuICAgIHRoaXMuYWN0aXZlRW5jb2RlciA9IGVuY29kZXI7XG4gICAgZW5jb2Rlci5zdGFydCgpO1xuXG4gICAgY29uc3QgZnJhbWVMZW5ndGhNcyA9IE1hdGguZmxvb3IoMTAwMCAvIHRpbWVjb2RlLmZyYW1lcmF0ZSk7XG4gICAgbGV0IHRpbWVNcyA9IHRpbWVjb2RlLnN0YXJ0O1xuICAgIGxldCByZXRyeUNvdW50ID0gMDtcbiAgICBjb25zdCBNQVhfUkVUUklFUyA9IDYwO1xuXG4gICAgY29uc3QgY2FwdHVyZU5leHRGcmFtZSA9ICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5zdGF0ZS5yZW5kZXJpbmcgfHwgdGhpcy5hY3RpdmVFbmNvZGVyICE9PSBlbmNvZGVyKSByZXR1cm47XG5cbiAgICAgIGFkYXB0ZXIhLmFuaW1hdGlvbk1hbmFnZXIudGltZWxpbmUuc2V0VGltZSh0aW1lTXMpO1xuICAgICAgYWRhcHRlciEuYW5pbWF0aW9uTWFuYWdlci5kcmF3KCk7XG4gICAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50VGltZU1zOiB0aW1lTXN9KTtcblxuICAgICAgLy8gQWxsb3cgc3RhdGUgdXBkYXRlIOKGkiBwcmV2aWV3IHJlLXJlbmRlciDihpIgZGVjayByZWRyYXcgYmVmb3JlIGNhcHR1cmluZy5cbiAgICAgIGNvbnN0IHdhaXRBbmRDYXB0dXJlID0gKCkgPT4ge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUVuY29kZXIgIT09IGVuY29kZXIpIHJldHVybjtcbiAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRW5jb2RlciAhPT0gZW5jb2RlcikgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgcHJldmlldyA9IHRoaXMucHJldmlld1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKCFwcmV2aWV3KSByZXR1cm47XG5cbiAgICAgICAgICAgIC8vIFdhaXQgZm9yIGdsb2JlIGJhc2UvZGF0YSBsYXllcnMgKHRpbGVzIGluY2x1ZGVkKSB0byBmaW5pc2ggYmVmb3JlXG4gICAgICAgICAgICAvLyB0aGUgZmlyc3QgZnJhbWUgc28gd2UgZG9uJ3QgcmVjb3JkIGEgaGFsZi1sb2FkZWQgcGxhbmV0LlxuICAgICAgICAgICAgaWYgKCFwcmV2aWV3LmFyZUxheWVyc0xvYWRlZCgpICYmIHJldHJ5Q291bnQgPCBNQVhfUkVUUklFUykge1xuICAgICAgICAgICAgICByZXRyeUNvdW50Kys7XG4gICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh3YWl0QW5kQ2FwdHVyZSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHJ5Q291bnQgPSAwO1xuXG4gICAgICAgICAgICBjb25zdCBkZWNrQ2FudmFzID0gcHJldmlldy5nZXRDYW52YXMoKTtcbiAgICAgICAgICAgIGlmICghZGVja0NhbnZhcykgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyBSZXVzZSBhIHNpbmdsZSBvZmZzY3JlZW4gY2FudmFzIGFjcm9zcyBmcmFtZXMgKHJlc2l6ZWQgb25seSB3aGVuXG4gICAgICAgICAgICAvLyB0aGUgb3V0cHV0IGRpbWVuc2lvbnMgY2hhbmdlKSBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgb25lIHBlciBmcmFtZS5cbiAgICAgICAgICAgIGxldCBvZmZzY3JlZW4gPSB0aGlzLmNvbXBvc2l0ZUNhbnZhcztcbiAgICAgICAgICAgIGlmICghb2Zmc2NyZWVuKSB7XG4gICAgICAgICAgICAgIG9mZnNjcmVlbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUNhbnZhcyA9IG9mZnNjcmVlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvZmZzY3JlZW4ud2lkdGggIT09IHdpZHRoIHx8IG9mZnNjcmVlbi5oZWlnaHQgIT09IGhlaWdodCkge1xuICAgICAgICAgICAgICBvZmZzY3JlZW4ud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgICAgb2Zmc2NyZWVuLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG9mZkN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgICAgaWYgKG9mZkN0eCkge1xuICAgICAgICAgICAgICAvLyBkZWNrJ3MgY2FudmFzIGlzIHRyYW5zcGFyZW50IHdoZXJlIHRoZSBnbG9iZSBpc24ndCBkcmF3blxuICAgICAgICAgICAgICAvLyAoY2xlYXJDb2xvciBpcyBkaXNhYmxlZCB0byBrZWVwIHBpY2tpbmcgaW50YWN0KSwgc28gZmlsbCB0aGVcbiAgICAgICAgICAgICAgLy8gY29uZmlndXJlZCBiYWNrZ3JvdW5kIGZpcnN0LCB0aGVuIGNvbXBvc2l0ZSB0aGUgZGVjayBmcmFtZS5cbiAgICAgICAgICAgICAgb2ZmQ3R4LmZpbGxTdHlsZSA9IHRoaXMuZ2V0QmFja2dyb3VuZENvbG9yKCk7XG4gICAgICAgICAgICAgIG9mZkN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgb2ZmQ3R4LmRyYXdJbWFnZShkZWNrQ2FudmFzLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZW5jb2Rlci5hZGQob2Zmc2NyZWVuKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRW5jb2RlciAhPT0gZW5jb2RlcikgcmV0dXJuO1xuICAgICAgICAgICAgICB0aW1lTXMgKz0gZnJhbWVMZW5ndGhNcztcbiAgICAgICAgICAgICAgaWYgKHRpbWVNcyA+IHRpbWVjb2RlLmVuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3NhdmluZzogdHJ1ZX0pO1xuICAgICAgICAgICAgICAgIGVuY29kZXIuc2F2ZSgpLnRoZW4oKGJsb2I6IEJsb2IgfCBudWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVFbmNvZGVyICE9PSBlbmNvZGVyKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICBpZiAoYmxvYikge1xuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZChibG9iLCBmaWxlbmFtZSArIGVuY29kZXIuZXh0ZW5zaW9uLCBlbmNvZGVyLm1pbWVUeXBlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzYXZpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGltZU1zOiAwLFxuICAgICAgICAgICAgICAgICAgICB2aWV3U3RhdGU6IHsuLi50aGlzLnN0YXRlLm1lbW8hLnZpZXdTdGF0ZX1cbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhcHR1cmVOZXh0RnJhbWUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgd2FpdEFuZENhcHR1cmUoKTtcbiAgICB9O1xuXG4gICAgLy8gR2l2ZSB0aGUgZGVjayBhIG1vbWVudCB0byBtb3VudC9kcmF3IGJlZm9yZSB0aGUgZmlyc3QgY2FwdHVyZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IGNhcHR1cmVOZXh0RnJhbWUoKSwgNTAwKTtcbiAgfTtcblxuICBvblN0b3AgPSAoe2Fib3J0ID0gZmFsc2V9OiB7YWJvcnQ/OiBib29sZWFufSA9IHt9KSA9PiB7XG4gICAgaWYgKHRoaXMuYW5pbWF0aW9uRnJhbWVJZCkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hbmltYXRpb25GcmFtZUlkKTtcbiAgICAgIHRoaXMuYW5pbWF0aW9uRnJhbWVJZCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlRW5jb2RlciA9IG51bGw7XG4gICAgaWYgKCFhYm9ydCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHJlbmRlcmluZzogZmFsc2UsXG4gICAgICAgIHByZXZpZXdpbmc6IGZhbHNlLFxuICAgICAgICBjdXJyZW50VGltZU1zOiAwLFxuICAgICAgICB2aWV3U3RhdGU6IHRoaXMuc3RhdGUubWVtbz8udmlld1N0YXRlIHx8IHRoaXMuc3RhdGUudmlld1N0YXRlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtleHBvcnRWaWRlb1dpZHRoLCBtYXBEYXRhLCBkZWNrUHJvcHN9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IHtcbiAgICAgIGFkYXB0ZXIsXG4gICAgICBkdXJhdGlvbk1zLFxuICAgICAgbWVkaWFUeXBlLFxuICAgICAgY2FtZXJhUHJlc2V0LFxuICAgICAgZmlsZU5hbWUsXG4gICAgICByZXNvbHV0aW9uLFxuICAgICAgdmlld1N0YXRlLFxuICAgICAgcmVuZGVyaW5nLFxuICAgICAgcHJldmlld2luZyxcbiAgICAgIHNhdmluZyxcbiAgICAgIGN1cnJlbnRUaW1lTXNcbiAgICB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGNvbnN0IHRpbWVjb2RlID0gdGhpcy5nZXRUaW1lY29kZSgpO1xuICAgIGxldCBjYW52YXNTaXplID0gdGhpcy5nZXRDYW52YXNTaXplKCk7XG4gICAgaWYgKHByZXZpZXdpbmcpIHtcbiAgICAgIGNhbnZhc1NpemUgPSB0aGlzLl9nZXRDb250YWluZXIoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0FjdGl2ZSA9IHJlbmRlcmluZyB8fCBwcmV2aWV3aW5nO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhwb3J0LXZpZGVvLXBhbmVsXCI+XG4gICAgICAgIDxQYW5lbEJvZHkgJGV4cG9ydFZpZGVvV2lkdGg9e2V4cG9ydFZpZGVvV2lkdGh9PlxuICAgICAgICAgIDxHbG9iZUV4cG9ydFZpZGVvUHJldmlld1xuICAgICAgICAgICAgcmVmPXt0aGlzLnByZXZpZXdSZWZ9XG4gICAgICAgICAgICBtYXBEYXRhPXttYXBEYXRhfVxuICAgICAgICAgICAgYWRhcHRlcj17YWRhcHRlciF9XG4gICAgICAgICAgICBzZXRWaWV3U3RhdGU9e3RoaXMuc2V0Vmlld1N0YXRlfVxuICAgICAgICAgICAgZXhwb3J0VmlkZW9XaWR0aD17ZXhwb3J0VmlkZW9XaWR0aH1cbiAgICAgICAgICAgIHJlc29sdXRpb249e1tjYW52YXNTaXplLndpZHRoLCBjYW52YXNTaXplLmhlaWdodF19XG4gICAgICAgICAgICB2aWV3U3RhdGU9e3ZpZXdTdGF0ZSF9XG4gICAgICAgICAgICByZW5kZXJpbmc9e3JlbmRlcmluZ31cbiAgICAgICAgICAgIHNhdmluZz17c2F2aW5nfVxuICAgICAgICAgICAgZHVyYXRpb25Ncz17ZHVyYXRpb25Nc31cbiAgICAgICAgICAgIGRlY2tQcm9wcz17ZGVja1Byb3BzfVxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yPXt0aGlzLmdldEJhY2tncm91bmRDb2xvcigpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFN3aXBlRXhwb3J0U2V0dGluZ3NcbiAgICAgICAgICAgIGR1cmF0aW9uTXM9e2R1cmF0aW9uTXN9XG4gICAgICAgICAgICBtZWRpYVR5cGU9e21lZGlhVHlwZX1cbiAgICAgICAgICAgIHJlc29sdXRpb249e3Jlc29sdXRpb259XG4gICAgICAgICAgICBmaWxlTmFtZT17ZmlsZU5hbWV9XG4gICAgICAgICAgICBjYW1lcmFQcmVzZXQ9e2NhbWVyYVByZXNldH1cbiAgICAgICAgICAgIGZyYW1lUmF0ZT17dGltZWNvZGUuZnJhbWVyYXRlfVxuICAgICAgICAgICAgb25DaGFuZ2VEdXJhdGlvbj17dGhpcy5zZXREdXJhdGlvbn1cbiAgICAgICAgICAgIG9uQ2hhbmdlTWVkaWFUeXBlPXt0aGlzLnNldE1lZGlhVHlwZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlUmVzb2x1dGlvbj17dGhpcy5zZXRSZXNvbHV0aW9ufVxuICAgICAgICAgICAgb25DaGFuZ2VGaWxlTmFtZT17dGhpcy5zZXRGaWxlTmFtZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlQ2FtZXJhUHJlc2V0PXt0aGlzLnNldENhbWVyYVByZXNldH1cbiAgICAgICAgICAgIHN3aXBlU3RhcnRQY3Q9ezB9XG4gICAgICAgICAgICBzd2lwZUVuZFBjdD17MTAwfVxuICAgICAgICAgICAgc3dpcGVFYXNpbmc9eydlYXNlLWluLW91dCd9XG4gICAgICAgICAgICBkaXNhYmxlZD17aXNBY3RpdmV9XG4gICAgICAgICAgICBvbkNoYW5nZVN0YXJ0UGN0PXtub29wfVxuICAgICAgICAgICAgb25DaGFuZ2VFbmRQY3Q9e25vb3B9XG4gICAgICAgICAgICBvbkNoYW5nZUVhc2luZz17bm9vcH1cbiAgICAgICAgICAgIGhpZGVTd2lwZVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFRpbWVsaW5lQ29udHJvbHMgY2xhc3NOYW1lPVwidGltZWxpbmUtY29udHJvbHNcIj5cbiAgICAgICAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgICAgICAgPFN0b3BJY29uIHN0eWxlPXt0aW1lbGluZVBsYXlCdXR0b25TdHlsZX0gb25DbGljaz17KCkgPT4gdGhpcy5vblN0b3Aoe30pfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFBsYXlJY29uIHN0eWxlPXt0aW1lbGluZVBsYXlCdXR0b25TdHlsZX0gb25DbGljaz17dGhpcy5vblByZXZpZXdWaWRlb30gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9UaW1lbGluZUNvbnRyb2xzPlxuICAgICAgICAgIHtzYXZpbmcgJiYgPFN0YXR1c1RleHQ+U2F2aW5nLi4uPC9TdGF0dXNUZXh0Pn1cbiAgICAgICAgICB7cmVuZGVyaW5nICYmICFzYXZpbmcgJiYgKFxuICAgICAgICAgICAgPFN0YXR1c1RleHQ+UmVuZGVyaW5nLi4uIHtNYXRoLnJvdW5kKChjdXJyZW50VGltZU1zIC8gZHVyYXRpb25NcykgKiAxMDApfSU8L1N0YXR1c1RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8QnV0dG9uR3JvdXA+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHN0eWxlPXt7bWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzMycHgnfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZXhwb3J0LXZpZGVvLWJ1dHRvblwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25SZW5kZXJWaWRlb31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzQWN0aXZlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZW5kZXJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvQnV0dG9uR3JvdXA+XG4gICAgICAgIDwvUGFuZWxCb2R5PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFFQSxPQUFPQSxLQUFLLElBQUdDLFNBQVMsRUFB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
636
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsImNyZWF0ZVJlZiIsImVhc2VJbk91dCIsImRvd25sb2FkIiwic3R5bGVkIiwiQnV0dG9uIiwiRGVja0FkYXB0ZXIiLCJLZXBsZXJBbmltYXRpb24iLCJXZWJNRW5jb2RlciIsIkpQRUdTZXF1ZW5jZUVuY29kZXIiLCJQTkdTZXF1ZW5jZUVuY29kZXIiLCJHaWZFbmNvZGVyIiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJwYXJzZVNldENhbWVyYVR5cGUiLCJzY2FsZVRvVmlkZW9FeHBvcnQiLCJnZXRSZXNvbHV0aW9uU2V0dGluZyIsIkdsb2JlRXhwb3J0VmlkZW9QcmV2aWV3IiwiU3dpcGVFeHBvcnRTZXR0aW5ncyIsImRyYXdTdGFyc0JhY2tncm91bmQiLCJnZXRHbG9iZUNsZWFyQ29sb3IiLCJnZXRTdGFyc0JhY2tncm91bmRJbWFnZSIsIm5vb3AiLCJ1bmRlZmluZWQiLCJFTkNPREVSUyIsImdpZiIsIndlYm0iLCJqcGVnIiwicG5nIiwiUGFuZWxCb2R5IiwiZGl2IiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCIsInByb3BzIiwiJGV4cG9ydFZpZGVvV2lkdGgiLCJUaW1lbGluZUNvbnRyb2xzIiwiX3RlbXBsYXRlT2JqZWN0MiIsInRpbWVsaW5lUGxheUJ1dHRvblN0eWxlIiwiY3Vyc29yIiwiaGVpZ2h0Iiwid2lkdGgiLCJmaWxsIiwiQnV0dG9uR3JvdXAiLCJfdGVtcGxhdGVPYmplY3QzIiwiU3RhdHVzVGV4dCIsIl90ZW1wbGF0ZU9iamVjdDQiLCJ0aGVtZSIsInN1YnRleHRDb2xvckxUIiwiUGxheUljb24iLCJfcmVmIiwic3R5bGUiLCJvbkNsaWNrIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInZpZXdCb3giLCJkIiwiU3RvcEljb24iLCJfcmVmMiIsIkdsb2JlRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lciIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9jYWxsU3VwZXIiLCJfZGVmaW5lUHJvcGVydHkiLCJ2aWV3U3RhdGUiLCJzZXRTdGF0ZSIsIm1lZGlhVHlwZSIsInNldFN0YXRlQW5kTm90aWZ5IiwiY2FtZXJhUHJlc2V0IiwiZmlsZU5hbWUiLCJyZXNvbHV0aW9uIiwiZHVyYXRpb25NcyIsIl90aGlzJHN0YXRlIiwic3RhdGUiLCJhZGFwdGVyIiwicHJldmlld2luZyIsImN1cnJlbnRUaW1lTXMiLCJtZW1vIiwiX29iamVjdFNwcmVhZCIsImFuaW1hdGlvbk1hbmFnZXIiLCJzZXRLZXlmcmFtZXMiLCJnZXRGaWx0ZXJLZXlmcmFtZXMiLCJnZXRUcmlwS2V5ZnJhbWVzIiwiY2FtZXJhS2V5ZnJhbWUiLCJnZXRDYW1lcmFLZXlmcmFtZXMiLCJzdGFydFRpbWUiLCJwZXJmb3JtYW5jZSIsIm5vdyIsImFuaW1hdGUiLCJlbGFwc2VkIiwiTWF0aCIsIm1pbiIsInRpbWVsaW5lIiwic2V0VGltZSIsImRyYXciLCJhbmltYXRpb25GcmFtZUlkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiZmlsZW5hbWUiLCJnZXRGaWxlTmFtZSIsIkVuY29kZXIiLCJnZXRFbmNvZGVyIiwiZm9ybWF0Q29uZmlncyIsImdldEZvcm1hdENvbmZpZ3MiLCJ0aW1lY29kZSIsImdldFRpbWVjb2RlIiwiX3RoaXMkZ2V0Q2FudmFzU2l6ZSIsImdldENhbnZhc1NpemUiLCJyZW5kZXJpbmciLCJzYXZpbmciLCJlbmNvZGVyIiwiZnJhbWVyYXRlIiwiYWN0aXZlRW5jb2RlciIsInN0YXJ0IiwiZnJhbWVMZW5ndGhNcyIsImZsb29yIiwidGltZU1zIiwicmV0cnlDb3VudCIsIk1BWF9SRVRSSUVTIiwiY2FwdHVyZU5leHRGcmFtZSIsIndhaXRBbmRDYXB0dXJlIiwicHJldmlldyIsInByZXZpZXdSZWYiLCJjdXJyZW50IiwiYXJlTGF5ZXJzTG9hZGVkIiwiZGVja0NhbnZhcyIsImdldENhbnZhcyIsIm9mZnNjcmVlbiIsImNvbXBvc2l0ZUNhbnZhcyIsImRvY3VtZW50Iiwib2ZmQ3R4IiwiZ2V0Q29udGV4dCIsImZpbGxTdHlsZSIsImdldEJhY2tncm91bmRDb2xvciIsImZpbGxSZWN0IiwiYXJlU3RhcnNFbmFibGVkIiwiZHJhd0ltYWdlIiwiYWRkIiwidGhlbiIsImVuZCIsInNhdmUiLCJibG9iIiwiZXh0ZW5zaW9uIiwibWltZVR5cGUiLCJzZXRUaW1lb3V0IiwiX3JlZjMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJfcmVmMyRhYm9ydCIsImFib3J0IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJfdGhpcyRzdGF0ZSRtZW1vIiwiaW5pdGlhbFN0YXRlIiwibWFwU3RhdGUiLCJtYXBEYXRhIiwiZ2xDb250ZXh0IiwiX2dldENvbnRhaW5lciIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwcm9wcyIsIm9uVHJpcEZyYW1lVXBkYXRlIiwib25GaWx0ZXJGcmFtZVVwZGF0ZSIsImdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lcyIsImFuaW1hdGlvbiIsIm9uQ2FtZXJhRnJhbWVVcGRhdGUiLCJzZXRWaWV3U3RhdGUiLCJhdHRhY2hBbmltYXRpb24iLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIm9uU3RvcCIsImRlZmF1bHRGaWxlTmFtZSIsIl9nZXRSZXNvbHV0aW9uU2V0dGluZyIsIl90aGlzJGdldENhbnZhc1NpemUyIiwiZXhwb3J0VmlkZW9XaWR0aCIsImFzcGVjdFJhdGlvIiwiX3RoaXMkZ2V0Q2FudmFzU2l6ZTMiLCJxdWFsaXR5Iiwic2FtcGxlSW50ZXJ2YWwiLCJfdGhpcyRzdGF0ZTIiLCJfcmVmNCIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsInBpdGNoIiwiYmVhcmluZyIsIl90aGlzJGdldENhbnZhc1NpemU0IiwidGltaW5ncyIsImtleWZyYW1lcyIsImVhc2luZ3MiLCJfdGhpczIiLCJfdGhpcyRwcm9wczIiLCJmaWx0ZXJzIiwidmlzU3RhdGUiLCJhbmltYXRhYmxlRmlsdGVycyIsImZpbHRlcktleWZyYW1lcyIsIkFycmF5IiwiaXNBcnJheSIsImZpbHRlciIsImYiLCJ0eXBlIiwidmlldyIsImVubGFyZ2VkIiwibWFwIiwiaWQiLCJfdGhpcyRwcm9wcyRtYXBEYXRhJHYiLCJsYXllcnMiLCJhbmltYXRpb25Db25maWciLCJhbmltYXRhYmxlTGF5ZXIiLCJsIiwiY29uZmlnIiwiZW5hYmxlZCIsImlzVmlzaWJsZSIsInJlYWR5VG9BbmltYXRpb24iLCJkb21haW4iLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImN1cnJlbnRUaW1lIiwidHJpcEtleWZyYW1lIiwiX3RoaXMkcHJvcHMkbWFwRGF0YSIsImJnIiwiZ2xvYmUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJfZ2V0R2xvYmVDbGVhckNvbG9yIiwiX2dldEdsb2JlQ2xlYXJDb2xvcjIiLCJfc2xpY2VkVG9BcnJheSIsInIiLCJnIiwiYiIsImNvbmNhdCIsIl90aGlzJHByb3BzJG1hcERhdGEyIiwiX2dsb2JlJGNvbmZpZyIsIkJvb2xlYW4iLCJzdGFycyIsInVwZGF0ZSIsIm9uU2V0dGluZ3NDaGFuZ2UiLCJfdGhpcyRzdGF0ZTMiLCJyZW5kZXIiLCJfdGhpczMiLCJfdGhpcyRwcm9wczMiLCJkZWNrUHJvcHMiLCJfdGhpcyRzdGF0ZTQiLCJjYW52YXNTaXplIiwiaXNBY3RpdmUiLCJyZWYiLCJtYXBQcm9wcyIsInN0YXJzSW1hZ2UiLCJmcmFtZVJhdGUiLCJvbkNoYW5nZUR1cmF0aW9uIiwic2V0RHVyYXRpb24iLCJvbkNoYW5nZU1lZGlhVHlwZSIsInNldE1lZGlhVHlwZSIsIm9uQ2hhbmdlUmVzb2x1dGlvbiIsInNldFJlc29sdXRpb24iLCJvbkNoYW5nZUZpbGVOYW1lIiwic2V0RmlsZU5hbWUiLCJvbkNoYW5nZUNhbWVyYVByZXNldCIsInNldENhbWVyYVByZXNldCIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiZGlzYWJsZWQiLCJvbkNoYW5nZVN0YXJ0UGN0Iiwib25DaGFuZ2VFbmRQY3QiLCJvbkNoYW5nZUVhc2luZyIsImhpZGVTd2lwZSIsIm9uUHJldmlld1ZpZGVvIiwicm91bmQiLCJtYXJnaW5Ub3AiLCJvblJlbmRlclZpZGVvIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGFscy9nbG9iZS1leHBvcnQtdmlkZW8tY29udGFpbmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtlYXNlSW5PdXR9IGZyb20gJ3BvcG1vdGlvbic7XG5pbXBvcnQgZG93bmxvYWQgZnJvbSAnZG93bmxvYWRqcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgRGVja0FkYXB0ZXIsXG4gIEtlcGxlckFuaW1hdGlvbixcbiAgV2ViTUVuY29kZXIsXG4gIEpQRUdTZXF1ZW5jZUVuY29kZXIsXG4gIFBOR1NlcXVlbmNlRW5jb2RlcixcbiAgR2lmRW5jb2RlcixcbiAgRm9ybWF0Q29uZmlncyxcbiAgVGltZWNvZGVcbn0gZnJvbSAnQGh1YmJsZS5nbC9jb3JlJztcbmltcG9ydCB0eXBlIHtEZWNrUHJvcHMsIE1hcFZpZXdTdGF0ZX0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge0ZJTFRFUl9WSUVXX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7cGFyc2VTZXRDYW1lcmFUeXBlLCBzY2FsZVRvVmlkZW9FeHBvcnQsIGdldFJlc29sdXRpb25TZXR0aW5nfSBmcm9tICcuL2h1YmJsZS11dGlscyc7XG5pbXBvcnQge0dsb2JlRXhwb3J0VmlkZW9QcmV2aWV3fSBmcm9tICcuL2dsb2JlLWV4cG9ydC12aWRlby1wcmV2aWV3JztcbmltcG9ydCBTd2lwZUV4cG9ydFNldHRpbmdzIGZyb20gJy4vc3dpcGUtZXhwb3J0LXNldHRpbmdzJztcbmltcG9ydCB7ZHJhd1N0YXJzQmFja2dyb3VuZCwgZ2V0R2xvYmVDbGVhckNvbG9yLCBnZXRTdGFyc0JhY2tncm91bmRJbWFnZX0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuLy8gTm8tb3AgZm9yIHRoZSBzd2lwZS1zcGVjaWZpYyBzZXR0aW5ncyBjYWxsYmFja3MgdGhhdCB0aGlzIHNpbmdsZS1tYXAgZ2xvYmVcbi8vIGV4cG9ydGVyIGRvZXNuJ3QgdXNlICh0aGUgc3dpcGUgY29udHJvbHMgYXJlIGhpZGRlbiB2aWEgYGhpZGVTd2lwZWApLlxuY29uc3Qgbm9vcCA9ICgpID0+IHVuZGVmaW5lZDtcblxuY29uc3QgRU5DT0RFUlMgPSB7XG4gIGdpZjogR2lmRW5jb2RlcixcbiAgd2VibTogV2ViTUVuY29kZXIsXG4gIGpwZWc6IEpQRUdTZXF1ZW5jZUVuY29kZXIsXG4gIHBuZzogUE5HU2VxdWVuY2VFbmNvZGVyXG59O1xuXG5leHBvcnQgdHlwZSBHbG9iZUV4cG9ydFZpZGVvU2V0dGluZ3MgPSB7XG4gIG1lZGlhVHlwZT86IHN0cmluZztcbiAgY2FtZXJhUHJlc2V0Pzogc3RyaW5nO1xuICBmaWxlTmFtZT86IHN0cmluZztcbiAgcmVzb2x1dGlvbj86IHN0cmluZztcbiAgZHVyYXRpb25Ncz86IG51bWJlcjtcbn07XG5cbnR5cGUgR2xvYmVFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyUHJvcHMgPSB7XG4gIGluaXRpYWxTdGF0ZT86IFBhcnRpYWw8R2xvYmVFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyU3RhdGU+O1xuICBnbENvbnRleHQ/OiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0O1xuICBleHBvcnRWaWRlb1dpZHRoOiBudW1iZXI7XG4gIGhhbmRsZUNsb3NlOiAoKSA9PiB2b2lkO1xuICBtYXBEYXRhOiBhbnk7XG4gIGhlYWRlcjogYm9vbGVhbjtcbiAgZGVja1Byb3BzPzogRGVja1Byb3BzO1xuICBtYXBQcm9wczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgZGVmYXVsdEZpbGVOYW1lOiBzdHJpbmc7XG4gIGFuaW1hdGFibGVGaWx0ZXJzOiBhbnk7XG4gIG9uVHJpcEZyYW1lVXBkYXRlOiAodmFsdWU6IGFueSkgPT4gdm9pZDtcbiAgb25GaWx0ZXJGcmFtZVVwZGF0ZTogKGZpbHRlcklkeDogbnVtYmVyLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHZvaWQ7XG4gIGdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lczogKGFyZ3M6IGFueSkgPT4gYW55O1xuICBvblNldHRpbmdzQ2hhbmdlOiAoc2V0dGluZ3M6IEdsb2JlRXhwb3J0VmlkZW9TZXR0aW5ncykgPT4gdm9pZDtcbn07XG5cbnR5cGUgR2xvYmVFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyU3RhdGUgPSB7XG4gIGFkYXB0ZXI/OiBEZWNrQWRhcHRlcjtcbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICBtZWRpYVR5cGU6IHN0cmluZztcbiAgY2FtZXJhUHJlc2V0OiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIHJlc29sdXRpb246IHN0cmluZztcbiAgdmlld1N0YXRlPzogTWFwVmlld1N0YXRlO1xuICByZW5kZXJpbmc6IGJvb2xlYW47XG4gIHByZXZpZXdpbmc6IGJvb2xlYW47XG4gIHNhdmluZzogYm9vbGVhbjtcbiAgY3VycmVudFRpbWVNczogbnVtYmVyO1xuICBtZW1vPzoge3ZpZXdTdGF0ZTogTWFwVmlld1N0YXRlfTtcbn07XG5cbmNvbnN0IFBhbmVsQm9keSA9IHN0eWxlZC5kaXY8eyRleHBvcnRWaWRlb1dpZHRoOiBudW1iZXJ9PmBcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAke3Byb3BzID0+IHByb3BzLiRleHBvcnRWaWRlb1dpZHRofXB4IDI4MHB4O1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG87XG4gIGdyaWQtY29sdW1uLWdhcDogMjRweDtcbmA7XG5cbmNvbnN0IFRpbWVsaW5lQ29udHJvbHMgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nLXRvcDogMTZweDtcbmA7XG5cbmNvbnN0IHRpbWVsaW5lUGxheUJ1dHRvblN0eWxlID0ge1xuICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgaGVpZ2h0OiAnMzJweCcsXG4gIHdpZHRoOiAnMzJweCcsXG4gIGZpbGw6ICcjRkZGJ1xufTtcblxuY29uc3QgQnV0dG9uR3JvdXAgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuYDtcblxuY29uc3QgU3RhdHVzVGV4dCA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yTFQgfHwgJyM2QTc0ODUnfTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tdG9wOiA0cHg7XG5gO1xuXG5jb25zdCBQbGF5SWNvbjogUmVhY3QuRkM8e3N0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllczsgb25DbGljaz86ICgpID0+IHZvaWR9PiA9ICh7XG4gIHN0eWxlLFxuICBvbkNsaWNrXG59KSA9PiAoXG4gIDxzdmcgY2xhc3NOYW1lPVwiZGF0YS1leC1pY29ucy1wbGF5XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXtzdHlsZX0gb25DbGljaz17b25DbGlja30+XG4gICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwelwiIC8+XG4gICAgPHBhdGggZD1cIk0xOS4zNzYgMTIuNDE2TDguNzc3IDE5LjQ4MkEuNS41IDAgMCAxIDggMTkuMDY2VjQuOTM0YS41LjUgMCAwIDEgLjc3Ny0uNDE2bDEwLjU5OSA3LjA2NmEuNS41IDAgMCAxIDAgLjgzMnpcIiAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IFN0b3BJY29uOiBSZWFjdC5GQzx7c3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzOyBvbkNsaWNrPzogKCkgPT4gdm9pZH0+ID0gKHtcbiAgc3R5bGUsXG4gIG9uQ2xpY2tcbn0pID0+IChcbiAgPHN2ZyBjbGFzc05hbWU9XCJkYXRhLWV4LWljb25zLXN0b3BcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3N0eWxlfSBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIgLz5cbiAgICA8cGF0aCBkPVwiTTYgNWgxMmExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFINmExIDEgMCAwIDEtMS0xVjZhMSAxIDAgMCAxIDEtMXpcIiAvPlxuICA8L3N2Zz5cbik7XG5cbi8qKlxuICogVmlkZW8gZXhwb3J0IGNvbnRhaW5lciBmb3IgZ2xvYmUgbW9kZS5cbiAqXG4gKiBodWJibGUncyBidWlsdC1pbiBFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyIG9ubHkgZHJpdmVzIGl0cyBmcmFtZS1jYXB0dXJlXG4gKiBsb29wIGZyb20gdGhlIG1hcGJveCBiYXNlIG1hcCdzICdyZW5kZXInIGV2ZW50OyBpbiBnbG9iZSBtb2RlIHRoZSBiYXNlIG1hcCBpc1xuICogZGlzYWJsZWQgc28gdGhhdCBsb29wIG5ldmVyIGZpcmVzIGFuZCB0aGUgZXhwb3J0IGhhbmdzLiBUaGlzIGNvbnRhaW5lciBtaXJyb3JzXG4gKiB0aGUgc3dpcGUtZXhwb3J0IGFwcHJvYWNoOiBpdCBvd25zIGEgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhcHR1cmUgbG9vcCBhbmRcbiAqIHJlYWRzIHRoZSBnbG9iZSBkZWNrIGNhbnZhcyBkaXJlY3RseSwgc28gcmVjb3JkaW5nIHdvcmtzIHdpdGhvdXQgYSBiYXNlIG1hcC5cbiAqL1xuZXhwb3J0IGNsYXNzIEdsb2JlRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lciBleHRlbmRzIENvbXBvbmVudDxcbiAgR2xvYmVFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyUHJvcHMsXG4gIEdsb2JlRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lclN0YXRlXG4+IHtcbiAgcHJldmlld1JlZiA9IGNyZWF0ZVJlZjxHbG9iZUV4cG9ydFZpZGVvUHJldmlldz4oKTtcbiAgYW5pbWF0aW9uRnJhbWVJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGFjdGl2ZUVuY29kZXI6IGFueSB8IG51bGwgPSBudWxsO1xuICAvLyBSZXVzZWQgYWNyb3NzIGFsbCBjYXB0dXJlZCBmcmFtZXMgdG8gYXZvaWQgYWxsb2NhdGluZyBhIGZ1bGwtcmVzb2x1dGlvblxuICAvLyBjYW52YXMgcGVyIGZyYW1lIChHQyBwcmVzc3VyZS9qYW5rIGR1cmluZyBhIG11bHRpLXNlY29uZCBleHBvcnQpLlxuICBjb21wb3NpdGVDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEdsb2JlRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lclByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgbWFwRGF0YToge21hcFN0YXRlfSxcbiAgICAgIGdsQ29udGV4dFxuICAgIH0gPSBwcm9wcztcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBtZWRpYVR5cGU6ICd3ZWJtJyxcbiAgICAgIGNhbWVyYVByZXNldDogJ05vbmUnLFxuICAgICAgZmlsZU5hbWU6ICcnLFxuICAgICAgcmVzb2x1dGlvbjogJzEyODB4NzIwJyxcbiAgICAgIGR1cmF0aW9uTXM6IDEwMDAsXG4gICAgICByZW5kZXJpbmc6IGZhbHNlLFxuICAgICAgcHJldmlld2luZzogZmFsc2UsXG4gICAgICBzYXZpbmc6IGZhbHNlLFxuICAgICAgY3VycmVudFRpbWVNczogMCxcbiAgICAgIC4uLihpbml0aWFsU3RhdGUgfHwge30pXG4gICAgfTtcblxuICAgIGNvbnN0IHZpZXdTdGF0ZSA9IHNjYWxlVG9WaWRlb0V4cG9ydChtYXBTdGF0ZSwgdGhpcy5fZ2V0Q29udGFpbmVyKCkpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgdmlld1N0YXRlLFxuICAgICAgbWVtbzoge3ZpZXdTdGF0ZX0sXG4gICAgICBhZGFwdGVyOiBuZXcgRGVja0FkYXB0ZXIoe2dsQ29udGV4dH0pXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IHtvblRyaXBGcmFtZVVwZGF0ZSwgb25GaWx0ZXJGcmFtZVVwZGF0ZSwgZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgYW5pbWF0aW9uID0gbmV3IEtlcGxlckFuaW1hdGlvbih7XG4gICAgICAuLi50aGlzLmdldEZpbHRlcktleWZyYW1lcygpLFxuICAgICAgLi4udGhpcy5nZXRUcmlwS2V5ZnJhbWVzKCksXG4gICAgICBjYW1lcmFLZXlmcmFtZTogdGhpcy5nZXRDYW1lcmFLZXlmcmFtZXMoKSxcbiAgICAgIG9uQ2FtZXJhRnJhbWVVcGRhdGU6IHRoaXMuc2V0Vmlld1N0YXRlIGFzIGFueSxcbiAgICAgIG9uVHJpcEZyYW1lVXBkYXRlLFxuICAgICAgb25GaWx0ZXJGcmFtZVVwZGF0ZSxcbiAgICAgIGdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lc1xuICAgIH0pO1xuICAgIHRoaXMuc3RhdGUuYWRhcHRlciEuYW5pbWF0aW9uTWFuYWdlci5hdHRhY2hBbmltYXRpb24oYW5pbWF0aW9uKTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMub25TdG9wKHthYm9ydDogdHJ1ZX0pO1xuICAgIGlmICh0aGlzLmFuaW1hdGlvbkZyYW1lSWQpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0aW9uRnJhbWVJZCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmlsZU5hbWUoKSB7XG4gICAgY29uc3Qge2RlZmF1bHRGaWxlTmFtZX0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHtmaWxlTmFtZX0gPSB0aGlzLnN0YXRlO1xuICAgIHJldHVybiBmaWxlTmFtZSB8fCBkZWZhdWx0RmlsZU5hbWU7XG4gIH1cblxuICBnZXRDYW52YXNTaXplKCkge1xuICAgIGNvbnN0IHtyZXNvbHV0aW9ufSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gZ2V0UmVzb2x1dGlvblNldHRpbmcocmVzb2x1dGlvbik7XG4gICAgcmV0dXJuIHt3aWR0aCwgaGVpZ2h0fTtcbiAgfVxuXG4gIF9nZXRDb250YWluZXIoKSB7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gdGhpcy5nZXRDYW52YXNTaXplKCk7XG4gICAgY29uc3Qge2V4cG9ydFZpZGVvV2lkdGh9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBhc3BlY3RSYXRpbyA9IHdpZHRoIC8gaGVpZ2h0O1xuICAgIHJldHVybiB7aGVpZ2h0OiBleHBvcnRWaWRlb1dpZHRoIC8gYXNwZWN0UmF0aW8sIHdpZHRoOiBleHBvcnRWaWRlb1dpZHRofTtcbiAgfVxuXG4gIGdldEZvcm1hdENvbmZpZ3MoKTogUGFydGlhbDxGb3JtYXRDb25maWdzPiB7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gdGhpcy5nZXRDYW52YXNTaXplKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdlYm06IHtxdWFsaXR5OiAwLjh9LFxuICAgICAganBlZzoge3F1YWxpdHk6IDAuOH0sXG4gICAgICBwbmc6IHt9LFxuICAgICAgZ2lmOiB7c2FtcGxlSW50ZXJ2YWw6IDEwMDAsIHdpZHRoLCBoZWlnaHR9XG4gICAgfTtcbiAgfVxuXG4gIGdldFRpbWVjb2RlKCk6IFRpbWVjb2RlIHtcbiAgICBjb25zdCB7ZHVyYXRpb25Nc30gPSB0aGlzLnN0YXRlO1xuICAgIHJldHVybiB7c3RhcnQ6IDAsIGVuZDogZHVyYXRpb25NcywgZnJhbWVyYXRlOiAzMH07XG4gIH1cblxuICBnZXRFbmNvZGVyKCkge1xuICAgIGNvbnN0IHttZWRpYVR5cGV9ID0gdGhpcy5zdGF0ZTtcbiAgICByZXR1cm4gRU5DT0RFUlNbbWVkaWFUeXBlXTtcbiAgfVxuXG4gIGdldENhbWVyYUtleWZyYW1lcygpIHtcbiAgICBjb25zdCB7dmlld1N0YXRlLCBjYW1lcmFQcmVzZXQsIGR1cmF0aW9uTXN9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7bG9uZ2l0dWRlLCBsYXRpdHVkZSwgem9vbSwgcGl0Y2gsIGJlYXJpbmd9ID0gdmlld1N0YXRlITtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSB0aGlzLmdldENhbnZhc1NpemUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGltaW5nczogWzAsIGR1cmF0aW9uTXNdLFxuICAgICAga2V5ZnJhbWVzOiBbXG4gICAgICAgIHtsb25naXR1ZGUsIGxhdGl0dWRlLCB6b29tLCBwaXRjaCwgYmVhcmluZ30sXG4gICAgICAgIHBhcnNlU2V0Q2FtZXJhVHlwZShjYW1lcmFQcmVzZXQsIHZpZXdTdGF0ZSEpXG4gICAgICBdLFxuICAgICAgZWFzaW5nczogW2Vhc2VJbk91dF0sXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH07XG4gIH1cblxuICBnZXRGaWx0ZXJLZXlmcmFtZXMoKSB7XG4gICAgY29uc3Qge1xuICAgICAgbWFwRGF0YToge1xuICAgICAgICB2aXNTdGF0ZToge2ZpbHRlcnN9XG4gICAgICB9LFxuICAgICAgYW5pbWF0YWJsZUZpbHRlcnNcbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGZpbHRlcktleWZyYW1lcyA9IChcbiAgICAgIEFycmF5LmlzQXJyYXkoYW5pbWF0YWJsZUZpbHRlcnMpICYmIGFuaW1hdGFibGVGaWx0ZXJzLmxlbmd0aFxuICAgICAgICA/IGFuaW1hdGFibGVGaWx0ZXJzXG4gICAgICAgIDogZmlsdGVycy5maWx0ZXIoXG4gICAgICAgICAgICAoZjogYW55KSA9PiBmLnR5cGUgPT09ICd0aW1lUmFuZ2UnICYmIGYudmlldyA9PT0gRklMVEVSX1ZJRVdfVFlQRVMuZW5sYXJnZWRcbiAgICAgICAgICApXG4gICAgKS5tYXAoKGY6IGFueSkgPT4gKHtcbiAgICAgIGlkOiBmLmlkLFxuICAgICAgdGltaW5nczogWzAsIHRoaXMuc3RhdGUuZHVyYXRpb25Nc11cbiAgICB9KSk7XG5cbiAgICBpZiAoZmlsdGVyS2V5ZnJhbWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtmaWx0ZXJzLCBmaWx0ZXJLZXlmcmFtZXN9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBnZXRUcmlwS2V5ZnJhbWVzKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1hcERhdGE6IHtcbiAgICAgICAgdmlzU3RhdGU6IHtsYXllcnMsIGFuaW1hdGlvbkNvbmZpZ31cbiAgICAgIH1cbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIGNvbnN0IGFuaW1hdGFibGVMYXllciA9IGxheWVycy5maWx0ZXIoXG4gICAgICAobDogYW55KSA9PiBsLmNvbmZpZy5hbmltYXRpb24gJiYgbC5jb25maWcuYW5pbWF0aW9uLmVuYWJsZWQgJiYgbC5jb25maWcuaXNWaXNpYmxlXG4gICAgKTtcbiAgICBjb25zdCByZWFkeVRvQW5pbWF0aW9uID1cbiAgICAgIEFycmF5LmlzQXJyYXkoYW5pbWF0aW9uQ29uZmlnLmRvbWFpbikgJiYgTnVtYmVyLmlzRmluaXRlKGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSk7XG4gICAgaWYgKGFuaW1hdGFibGVMYXllci5sZW5ndGggJiYgcmVhZHlUb0FuaW1hdGlvbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICB0cmlwS2V5ZnJhbWU6IHt0aW1pbmdzOiBbMCwgdGhpcy5zdGF0ZS5kdXJhdGlvbk1zXX1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHNldFZpZXdTdGF0ZSA9ICh2aWV3U3RhdGU6IE1hcFZpZXdTdGF0ZSkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe3ZpZXdTdGF0ZX0pO1xuICB9O1xuXG4gIC8qKiBDU1MgYmFja2dyb3VuZCBjb2xvciAoYXJlYSB0aGUgZ2xvYmUgZG9lc24ndCBjb3ZlciksIGZyb20gZ2xvYmUgY29uZmlnLiAqL1xuICBnZXRCYWNrZ3JvdW5kQ29sb3IoKTogc3RyaW5nIHtcbiAgICBjb25zdCBiZyA9IHRoaXMucHJvcHMubWFwRGF0YT8ubWFwU3RhdGU/Lmdsb2JlPy5jb25maWc/LmJhY2tncm91bmRDb2xvcjtcbiAgICBjb25zdCBbciwgZywgYl0gPSBnZXRHbG9iZUNsZWFyQ29sb3IoYmcpO1xuICAgIHJldHVybiBgcmdiKCR7cn0sICR7Z30sICR7Yn0pYDtcbiAgfVxuXG4gIC8qKiBTdGFyZmllbGQgYmVoaW5kIHRoZSBnbG9iZSwgbWF0Y2hpbmcgdGhlIGxpdmUgbWFwJ3MgQ1NTIGJhY2tncm91bmQuICovXG4gIGFyZVN0YXJzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBnbG9iZSA9IHRoaXMucHJvcHMubWFwRGF0YT8ubWFwU3RhdGU/Lmdsb2JlO1xuICAgIHJldHVybiBCb29sZWFuKGdsb2JlPy5lbmFibGVkICYmIGdsb2JlPy5jb25maWc/LnN0YXJzKTtcbiAgfVxuXG4gIHNldFN0YXRlQW5kTm90aWZ5KHVwZGF0ZTogR2xvYmVFeHBvcnRWaWRlb1NldHRpbmdzKSB7XG4gICAgY29uc3Qge29uU2V0dGluZ3NDaGFuZ2V9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7bWVkaWFUeXBlLCBjYW1lcmFQcmVzZXQsIGZpbGVOYW1lLCByZXNvbHV0aW9uLCBkdXJhdGlvbk1zfSA9IHRoaXMuc3RhdGU7XG4gICAgdGhpcy5zZXRTdGF0ZSh7Li4udGhpcy5zdGF0ZSwgLi4udXBkYXRlfSBhcyBhbnkpO1xuICAgIGlmIChvblNldHRpbmdzQ2hhbmdlKSB7XG4gICAgICBvblNldHRpbmdzQ2hhbmdlKHttZWRpYVR5cGUsIGNhbWVyYVByZXNldCwgZmlsZU5hbWUsIHJlc29sdXRpb24sIGR1cmF0aW9uTXMsIC4uLnVwZGF0ZX0pO1xuICAgIH1cbiAgfVxuXG4gIHNldE1lZGlhVHlwZSA9IChtZWRpYVR5cGU6IHN0cmluZykgPT4gdGhpcy5zZXRTdGF0ZUFuZE5vdGlmeSh7bWVkaWFUeXBlfSk7XG4gIHNldENhbWVyYVByZXNldCA9IChjYW1lcmFQcmVzZXQ6IHN0cmluZykgPT4gdGhpcy5zZXRTdGF0ZUFuZE5vdGlmeSh7Y2FtZXJhUHJlc2V0fSk7XG4gIHNldEZpbGVOYW1lID0gKGZpbGVOYW1lOiBzdHJpbmcpID0+IHRoaXMuc2V0U3RhdGVBbmROb3RpZnkoe2ZpbGVOYW1lfSk7XG4gIHNldFJlc29sdXRpb24gPSAocmVzb2x1dGlvbjogc3RyaW5nKSA9PiB0aGlzLnNldFN0YXRlQW5kTm90aWZ5KHtyZXNvbHV0aW9ufSk7XG4gIHNldER1cmF0aW9uID0gKGR1cmF0aW9uTXM6IG51bWJlcikgPT4gdGhpcy5zZXRTdGF0ZUFuZE5vdGlmeSh7ZHVyYXRpb25Nc30pO1xuXG4gIC8qKiBQcmV2aWV3IHBsYXliYWNrIOKAlCBhbmltYXRlIHRoZSBjYW1lcmEgd2l0aG91dCBlbmNvZGluZy4gKi9cbiAgb25QcmV2aWV3VmlkZW8gPSAoKSA9PiB7XG4gICAgY29uc3Qge2FkYXB0ZXIsIGR1cmF0aW9uTXN9ID0gdGhpcy5zdGF0ZTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHByZXZpZXdpbmc6IHRydWUsXG4gICAgICBjdXJyZW50VGltZU1zOiAwLFxuICAgICAgbWVtbzoge3ZpZXdTdGF0ZTogey4uLnRoaXMuc3RhdGUudmlld1N0YXRlIX19XG4gICAgfSk7XG5cbiAgICBhZGFwdGVyIS5hbmltYXRpb25NYW5hZ2VyLnNldEtleWZyYW1lcygna2VwbGVyJywge1xuICAgICAgLi4udGhpcy5nZXRGaWx0ZXJLZXlmcmFtZXMoKSxcbiAgICAgIC4uLnRoaXMuZ2V0VHJpcEtleWZyYW1lcygpLFxuICAgICAgY2FtZXJhS2V5ZnJhbWU6IHRoaXMuZ2V0Q2FtZXJhS2V5ZnJhbWVzKClcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IGFuaW1hdGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBlbGFwc2VkID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWU7XG4gICAgICBjb25zdCBjdXJyZW50VGltZU1zID0gTWF0aC5taW4oZWxhcHNlZCwgZHVyYXRpb25Ncyk7XG5cbiAgICAgIGFkYXB0ZXIhLmFuaW1hdGlvbk1hbmFnZXIudGltZWxpbmUuc2V0VGltZShjdXJyZW50VGltZU1zKTtcbiAgICAgIGFkYXB0ZXIhLmFuaW1hdGlvbk1hbmFnZXIuZHJhdygpO1xuXG4gICAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50VGltZU1zfSk7XG5cbiAgICAgIGlmIChjdXJyZW50VGltZU1zID49IGR1cmF0aW9uTXMpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgcHJldmlld2luZzogZmFsc2UsXG4gICAgICAgICAgY3VycmVudFRpbWVNczogMCxcbiAgICAgICAgICB2aWV3U3RhdGU6IHsuLi50aGlzLnN0YXRlLm1lbW8hLnZpZXdTdGF0ZX1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuYW5pbWF0aW9uRnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcbiAgICB9O1xuICAgIHRoaXMuYW5pbWF0aW9uRnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcbiAgfTtcblxuICAvKipcbiAgICogUmVjb3JkIOKAlCBkcml2ZSBvdXIgb3duIGNhcHR1cmUgbG9vcCAoaHViYmxlJ3MgYnVpbHQtaW4gbG9vcCBuZXZlciBmaXJlc1xuICAgKiB3aXRob3V0IGEgYmFzZSBtYXApIGFuZCBlbmNvZGUgdGhlIGdsb2JlIGRlY2sgY2FudmFzIGZyYW1lIGJ5IGZyYW1lLlxuICAgKi9cbiAgb25SZW5kZXJWaWRlbyA9ICgpID0+IHtcbiAgICBjb25zdCB7YWRhcHRlcn0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gdGhpcy5nZXRGaWxlTmFtZSgpO1xuICAgIGNvbnN0IEVuY29kZXIgPSB0aGlzLmdldEVuY29kZXIoKTtcbiAgICBjb25zdCBmb3JtYXRDb25maWdzID0gdGhpcy5nZXRGb3JtYXRDb25maWdzKCk7XG4gICAgY29uc3QgdGltZWNvZGUgPSB0aGlzLmdldFRpbWVjb2RlKCk7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gdGhpcy5nZXRDYW52YXNTaXplKCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHJlbmRlcmluZzogdHJ1ZSxcbiAgICAgIHNhdmluZzogZmFsc2UsXG4gICAgICBjdXJyZW50VGltZU1zOiAwLFxuICAgICAgbWVtbzoge3ZpZXdTdGF0ZTogey4uLnRoaXMuc3RhdGUudmlld1N0YXRlIX19XG4gICAgfSk7XG5cbiAgICBhZGFwdGVyIS5hbmltYXRpb25NYW5hZ2VyLnNldEtleWZyYW1lcygna2VwbGVyJywge1xuICAgICAgLi4udGhpcy5nZXRGaWx0ZXJLZXlmcmFtZXMoKSxcbiAgICAgIC4uLnRoaXMuZ2V0VHJpcEtleWZyYW1lcygpLFxuICAgICAgY2FtZXJhS2V5ZnJhbWU6IHRoaXMuZ2V0Q2FtZXJhS2V5ZnJhbWVzKClcbiAgICB9KTtcblxuICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgRW5jb2Rlcih7Li4uZm9ybWF0Q29uZmlncywgZnJhbWVyYXRlOiB0aW1lY29kZS5mcmFtZXJhdGV9KTtcbiAgICB0aGlzLmFjdGl2ZUVuY29kZXIgPSBlbmNvZGVyO1xuICAgIGVuY29kZXIuc3RhcnQoKTtcblxuICAgIGNvbnN0IGZyYW1lTGVuZ3RoTXMgPSBNYXRoLmZsb29yKDEwMDAgLyB0aW1lY29kZS5mcmFtZXJhdGUpO1xuICAgIGxldCB0aW1lTXMgPSB0aW1lY29kZS5zdGFydDtcbiAgICBsZXQgcmV0cnlDb3VudCA9IDA7XG4gICAgY29uc3QgTUFYX1JFVFJJRVMgPSA2MDtcblxuICAgIGNvbnN0IGNhcHR1cmVOZXh0RnJhbWUgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc3RhdGUucmVuZGVyaW5nIHx8IHRoaXMuYWN0aXZlRW5jb2RlciAhPT0gZW5jb2RlcikgcmV0dXJuO1xuXG4gICAgICBhZGFwdGVyIS5hbmltYXRpb25NYW5hZ2VyLnRpbWVsaW5lLnNldFRpbWUodGltZU1zKTtcbiAgICAgIGFkYXB0ZXIhLmFuaW1hdGlvbk1hbmFnZXIuZHJhdygpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7Y3VycmVudFRpbWVNczogdGltZU1zfSk7XG5cbiAgICAgIC8vIEFsbG93IHN0YXRlIHVwZGF0ZSDihpIgcHJldmlldyByZS1yZW5kZXIg4oaSIGRlY2sgcmVkcmF3IGJlZm9yZSBjYXB0dXJpbmcuXG4gICAgICBjb25zdCB3YWl0QW5kQ2FwdHVyZSA9ICgpID0+IHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5hY3RpdmVFbmNvZGVyICE9PSBlbmNvZGVyKSByZXR1cm47XG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUVuY29kZXIgIT09IGVuY29kZXIpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpZXcgPSB0aGlzLnByZXZpZXdSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmICghcHJldmlldykgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyBXYWl0IGZvciBnbG9iZSBiYXNlL2RhdGEgbGF5ZXJzICh0aWxlcyBpbmNsdWRlZCkgdG8gZmluaXNoIGJlZm9yZVxuICAgICAgICAgICAgLy8gdGhlIGZpcnN0IGZyYW1lIHNvIHdlIGRvbid0IHJlY29yZCBhIGhhbGYtbG9hZGVkIHBsYW5ldC5cbiAgICAgICAgICAgIGlmICghcHJldmlldy5hcmVMYXllcnNMb2FkZWQoKSAmJiByZXRyeUNvdW50IDwgTUFYX1JFVFJJRVMpIHtcbiAgICAgICAgICAgICAgcmV0cnlDb3VudCsrO1xuICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUod2FpdEFuZENhcHR1cmUpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXRyeUNvdW50ID0gMDtcblxuICAgICAgICAgICAgY29uc3QgZGVja0NhbnZhcyA9IHByZXZpZXcuZ2V0Q2FudmFzKCk7XG4gICAgICAgICAgICBpZiAoIWRlY2tDYW52YXMpIHJldHVybjtcblxuICAgICAgICAgICAgLy8gUmV1c2UgYSBzaW5nbGUgb2Zmc2NyZWVuIGNhbnZhcyBhY3Jvc3MgZnJhbWVzIChyZXNpemVkIG9ubHkgd2hlblxuICAgICAgICAgICAgLy8gdGhlIG91dHB1dCBkaW1lbnNpb25zIGNoYW5nZSkgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIG9uZSBwZXIgZnJhbWUuXG4gICAgICAgICAgICBsZXQgb2Zmc2NyZWVuID0gdGhpcy5jb21wb3NpdGVDYW52YXM7XG4gICAgICAgICAgICBpZiAoIW9mZnNjcmVlbikge1xuICAgICAgICAgICAgICBvZmZzY3JlZW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVDYW52YXMgPSBvZmZzY3JlZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2Zmc2NyZWVuLndpZHRoICE9PSB3aWR0aCB8fCBvZmZzY3JlZW4uaGVpZ2h0ICE9PSBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgb2Zmc2NyZWVuLndpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICAgIG9mZnNjcmVlbi5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBvZmZDdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgIGlmIChvZmZDdHgpIHtcbiAgICAgICAgICAgICAgLy8gZGVjaydzIGNhbnZhcyBpcyB0cmFuc3BhcmVudCB3aGVyZSB0aGUgZ2xvYmUgaXNuJ3QgZHJhd25cbiAgICAgICAgICAgICAgLy8gKGNsZWFyQ29sb3IgaXMgZGlzYWJsZWQgdG8ga2VlcCBwaWNraW5nIGludGFjdCksIHNvIGZpbGwgdGhlXG4gICAgICAgICAgICAgIC8vIGNvbmZpZ3VyZWQgYmFja2dyb3VuZCBmaXJzdCwgdGlsZSB0aGUgc3RhcmZpZWxkICh0aGUgbGl2ZSBtYXBcbiAgICAgICAgICAgICAgLy8gcGFpbnRzIHN0YXJzIGFzIGEgQ1NTIGJhY2tncm91bmQsIHdoaWNoIGNhbnZhcyBjYXB0dXJlIG1pc3NlcyksXG4gICAgICAgICAgICAgIC8vIHRoZW4gY29tcG9zaXRlIHRoZSBkZWNrIGZyYW1lLlxuICAgICAgICAgICAgICBvZmZDdHguZmlsbFN0eWxlID0gdGhpcy5nZXRCYWNrZ3JvdW5kQ29sb3IoKTtcbiAgICAgICAgICAgICAgb2ZmQ3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgICBpZiAodGhpcy5hcmVTdGFyc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIGRyYXdTdGFyc0JhY2tncm91bmQob2ZmQ3R4LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvZmZDdHguZHJhd0ltYWdlKGRlY2tDYW52YXMsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbmNvZGVyLmFkZChvZmZzY3JlZW4pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVFbmNvZGVyICE9PSBlbmNvZGVyKSByZXR1cm47XG4gICAgICAgICAgICAgIHRpbWVNcyArPSBmcmFtZUxlbmd0aE1zO1xuICAgICAgICAgICAgICBpZiAodGltZU1zID4gdGltZWNvZGUuZW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c2F2aW5nOiB0cnVlfSk7XG4gICAgICAgICAgICAgICAgZW5jb2Rlci5zYXZlKCkudGhlbigoYmxvYjogQmxvYiB8IG51bGwpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUVuY29kZXIgIT09IGVuY29kZXIpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIGlmIChibG9iKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGJsb2IsIGZpbGVuYW1lICsgZW5jb2Rlci5leHRlbnNpb24sIGVuY29kZXIubWltZVR5cGUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHNhdmluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUaW1lTXM6IDAsXG4gICAgICAgICAgICAgICAgICAgIHZpZXdTdGF0ZTogey4uLnRoaXMuc3RhdGUubWVtbyEudmlld1N0YXRlfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FwdHVyZU5leHRGcmFtZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICB3YWl0QW5kQ2FwdHVyZSgpO1xuICAgIH07XG5cbiAgICAvLyBHaXZlIHRoZSBkZWNrIGEgbW9tZW50IHRvIG1vdW50L2RyYXcgYmVmb3JlIHRoZSBmaXJzdCBjYXB0dXJlLlxuICAgIHNldFRpbWVvdXQoKCkgPT4gY2FwdHVyZU5leHRGcmFtZSgpLCA1MDApO1xuICB9O1xuXG4gIG9uU3RvcCA9ICh7YWJvcnQgPSBmYWxzZX06IHthYm9ydD86IGJvb2xlYW59ID0ge30pID0+IHtcbiAgICBpZiAodGhpcy5hbmltYXRpb25GcmFtZUlkKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lSWQpO1xuICAgICAgdGhpcy5hbmltYXRpb25GcmFtZUlkID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVFbmNvZGVyID0gbnVsbDtcbiAgICBpZiAoIWFib3J0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgcmVuZGVyaW5nOiBmYWxzZSxcbiAgICAgICAgcHJldmlld2luZzogZmFsc2UsXG4gICAgICAgIGN1cnJlbnRUaW1lTXM6IDAsXG4gICAgICAgIHZpZXdTdGF0ZTogdGhpcy5zdGF0ZS5tZW1vPy52aWV3U3RhdGUgfHwgdGhpcy5zdGF0ZS52aWV3U3RhdGVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2V4cG9ydFZpZGVvV2lkdGgsIG1hcERhdGEsIGRlY2tQcm9wc30gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3Qge1xuICAgICAgYWRhcHRlcixcbiAgICAgIGR1cmF0aW9uTXMsXG4gICAgICBtZWRpYVR5cGUsXG4gICAgICBjYW1lcmFQcmVzZXQsXG4gICAgICBmaWxlTmFtZSxcbiAgICAgIHJlc29sdXRpb24sXG4gICAgICB2aWV3U3RhdGUsXG4gICAgICByZW5kZXJpbmcsXG4gICAgICBwcmV2aWV3aW5nLFxuICAgICAgc2F2aW5nLFxuICAgICAgY3VycmVudFRpbWVNc1xuICAgIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgdGltZWNvZGUgPSB0aGlzLmdldFRpbWVjb2RlKCk7XG4gICAgbGV0IGNhbnZhc1NpemUgPSB0aGlzLmdldENhbnZhc1NpemUoKTtcbiAgICBpZiAocHJldmlld2luZykge1xuICAgICAgY2FudmFzU2l6ZSA9IHRoaXMuX2dldENvbnRhaW5lcigpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzQWN0aXZlID0gcmVuZGVyaW5nIHx8IHByZXZpZXdpbmc7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJleHBvcnQtdmlkZW8tcGFuZWxcIj5cbiAgICAgICAgPFBhbmVsQm9keSAkZXhwb3J0VmlkZW9XaWR0aD17ZXhwb3J0VmlkZW9XaWR0aH0+XG4gICAgICAgICAgPEdsb2JlRXhwb3J0VmlkZW9QcmV2aWV3XG4gICAgICAgICAgICByZWY9e3RoaXMucHJldmlld1JlZn1cbiAgICAgICAgICAgIG1hcERhdGE9e21hcERhdGF9XG4gICAgICAgICAgICBhZGFwdGVyPXthZGFwdGVyIX1cbiAgICAgICAgICAgIHNldFZpZXdTdGF0ZT17dGhpcy5zZXRWaWV3U3RhdGV9XG4gICAgICAgICAgICBleHBvcnRWaWRlb1dpZHRoPXtleHBvcnRWaWRlb1dpZHRofVxuICAgICAgICAgICAgcmVzb2x1dGlvbj17W2NhbnZhc1NpemUud2lkdGgsIGNhbnZhc1NpemUuaGVpZ2h0XX1cbiAgICAgICAgICAgIHZpZXdTdGF0ZT17dmlld1N0YXRlIX1cbiAgICAgICAgICAgIHJlbmRlcmluZz17cmVuZGVyaW5nfVxuICAgICAgICAgICAgc2F2aW5nPXtzYXZpbmd9XG4gICAgICAgICAgICBkdXJhdGlvbk1zPXtkdXJhdGlvbk1zfVxuICAgICAgICAgICAgZGVja1Byb3BzPXtkZWNrUHJvcHN9XG4gICAgICAgICAgICBtYXBQcm9wcz17dGhpcy5wcm9wcy5tYXBQcm9wc31cbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcj17dGhpcy5nZXRCYWNrZ3JvdW5kQ29sb3IoKX1cbiAgICAgICAgICAgIHN0YXJzSW1hZ2U9e3RoaXMuYXJlU3RhcnNFbmFibGVkKCkgPyBnZXRTdGFyc0JhY2tncm91bmRJbWFnZSgpIDogbnVsbH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxTd2lwZUV4cG9ydFNldHRpbmdzXG4gICAgICAgICAgICBkdXJhdGlvbk1zPXtkdXJhdGlvbk1zfVxuICAgICAgICAgICAgbWVkaWFUeXBlPXttZWRpYVR5cGV9XG4gICAgICAgICAgICByZXNvbHV0aW9uPXtyZXNvbHV0aW9ufVxuICAgICAgICAgICAgZmlsZU5hbWU9e2ZpbGVOYW1lfVxuICAgICAgICAgICAgY2FtZXJhUHJlc2V0PXtjYW1lcmFQcmVzZXR9XG4gICAgICAgICAgICBmcmFtZVJhdGU9e3RpbWVjb2RlLmZyYW1lcmF0ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlRHVyYXRpb249e3RoaXMuc2V0RHVyYXRpb259XG4gICAgICAgICAgICBvbkNoYW5nZU1lZGlhVHlwZT17dGhpcy5zZXRNZWRpYVR5cGV9XG4gICAgICAgICAgICBvbkNoYW5nZVJlc29sdXRpb249e3RoaXMuc2V0UmVzb2x1dGlvbn1cbiAgICAgICAgICAgIG9uQ2hhbmdlRmlsZU5hbWU9e3RoaXMuc2V0RmlsZU5hbWV9XG4gICAgICAgICAgICBvbkNoYW5nZUNhbWVyYVByZXNldD17dGhpcy5zZXRDYW1lcmFQcmVzZXR9XG4gICAgICAgICAgICBzd2lwZVN0YXJ0UGN0PXswfVxuICAgICAgICAgICAgc3dpcGVFbmRQY3Q9ezEwMH1cbiAgICAgICAgICAgIHN3aXBlRWFzaW5nPXsnZWFzZS1pbi1vdXQnfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2lzQWN0aXZlfVxuICAgICAgICAgICAgb25DaGFuZ2VTdGFydFBjdD17bm9vcH1cbiAgICAgICAgICAgIG9uQ2hhbmdlRW5kUGN0PXtub29wfVxuICAgICAgICAgICAgb25DaGFuZ2VFYXNpbmc9e25vb3B9XG4gICAgICAgICAgICBoaWRlU3dpcGVcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxUaW1lbGluZUNvbnRyb2xzIGNsYXNzTmFtZT1cInRpbWVsaW5lLWNvbnRyb2xzXCI+XG4gICAgICAgICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgICAgICAgIDxTdG9wSWNvbiBzdHlsZT17dGltZWxpbmVQbGF5QnV0dG9uU3R5bGV9IG9uQ2xpY2s9eygpID0+IHRoaXMub25TdG9wKHt9KX0gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxQbGF5SWNvbiBzdHlsZT17dGltZWxpbmVQbGF5QnV0dG9uU3R5bGV9IG9uQ2xpY2s9e3RoaXMub25QcmV2aWV3VmlkZW99IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvVGltZWxpbmVDb250cm9scz5cbiAgICAgICAgICB7c2F2aW5nICYmIDxTdGF0dXNUZXh0PlNhdmluZy4uLjwvU3RhdHVzVGV4dD59XG4gICAgICAgICAge3JlbmRlcmluZyAmJiAhc2F2aW5nICYmIChcbiAgICAgICAgICAgIDxTdGF0dXNUZXh0PlJlbmRlcmluZy4uLiB7TWF0aC5yb3VuZCgoY3VycmVudFRpbWVNcyAvIGR1cmF0aW9uTXMpICogMTAwKX0lPC9TdGF0dXNUZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEJ1dHRvbkdyb3VwPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBzdHlsZT17e21hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICczMnB4J319XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImV4cG9ydC12aWRlby1idXR0b25cIlxuICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uUmVuZGVyVmlkZW99XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0FjdGl2ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVuZGVyXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L0J1dHRvbkdyb3VwPlxuICAgICAgICA8L1BhbmVsQm9keT5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7O0FBRUEsT0FBT0EsS0FBSyxJQUFHQyxTQUFTLEVBQUVDLFNBQVMsUUFBTyxPQUFPO0FBQ2pELFNBQVFDLFNBQVMsUUFBTyxXQUFXO0FBQ25DLE9BQU9DLFFBQVEsTUFBTSxZQUFZO0FBQ2pDLE9BQU9DLE1BQU0s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
@@ -7,6 +7,8 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
7
7
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
8
8
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
9
9
  var _templateObject;
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
12
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
11
13
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
12
14
  // SPDX-License-Identifier: MIT
@@ -15,13 +17,15 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
15
17
  import React, { Component } from 'react';
16
18
  import DeckGL from '@deck.gl/react';
17
19
  import styled from 'styled-components';
18
- import { EXPORT_DECK_DEVICE_PROPS } from './hubble-utils';
19
- var PreviewContainer = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: ", "px;\n height: ", "px;\n position: relative;\n background: ", ";\n"])), function (props) {
20
+ import { EXPORT_DECK_DEVICE_PROPS, getGlobeExportLayers } from './hubble-utils';
21
+ var PreviewContainer = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: ", "px;\n height: ", "px;\n position: relative;\n background-color: ", ";\n ", "\n"])), function (props) {
20
22
  return props.$width;
21
23
  }, function (props) {
22
24
  return props.$height;
23
25
  }, function (props) {
24
26
  return props.$background;
27
+ }, function (props) {
28
+ return props.$starsImage ? "background-image: url('".concat(props.$starsImage, "'); background-repeat: repeat;") : '';
25
29
  });
26
30
  /**
27
31
  * Single-canvas video export preview for globe mode.
@@ -91,20 +95,33 @@ export var GlobeExportVideoPreview = /*#__PURE__*/function (_Component) {
91
95
  setViewState = _this$props2.setViewState,
92
96
  resolution = _this$props2.resolution,
93
97
  exportVideoWidth = _this$props2.exportVideoWidth,
94
- backgroundColor = _this$props2.backgroundColor;
98
+ backgroundColor = _this$props2.backgroundColor,
99
+ mapData = _this$props2.mapData,
100
+ mapProps = _this$props2.mapProps,
101
+ starsImage = _this$props2.starsImage;
95
102
  var _this$_getContainer = this._getContainer(),
96
103
  width = _this$_getContainer.width,
97
104
  height = _this$_getContainer.height;
98
105
  var deck = this.deckRef.current;
99
106
 
107
+ // Rebuild layers from the animated camera (hubble 2D: createKeplerLayers(mapData, viewState)).
108
+ var layers = getGlobeExportLayers(mapData, {
109
+ mapIndex: 0,
110
+ mapboxApiAccessToken: mapProps === null || mapProps === void 0 ? void 0 : mapProps.mapboxApiAccessToken,
111
+ mapboxApiUrl: mapProps === null || mapProps === void 0 ? void 0 : mapProps.mapboxApiUrl,
112
+ viewState: viewState
113
+ });
114
+
100
115
  // adapter.getProps injects `_animate` (and toggles `controller` off while
101
- // recording) so hubble's KeplerAnimation can drive the camera. Layers,
102
- // views, controller bounds and initialViewState come from `deckProps`
116
+ // recording) so hubble's KeplerAnimation can drive the camera. Views,
117
+ // controller bounds and initialViewState come from `deckProps`
103
118
  // (see getHubbleDeckGlProps). A controlled `viewState` keeps the preview in
104
119
  // sync with the animated camera and prevents the GlobeState assert.
105
120
  var adapterProps = adapter.getProps({
106
121
  deck: deck,
107
- extraProps: deckProps
122
+ extraProps: _objectSpread(_objectSpread({}, deckProps), {}, {
123
+ layers: layers
124
+ })
108
125
  });
109
126
 
110
127
  // Render the drawing buffer at the true export resolution regardless of the
@@ -119,7 +136,8 @@ export var GlobeExportVideoPreview = /*#__PURE__*/function (_Component) {
119
136
  return /*#__PURE__*/React.createElement(PreviewContainer, {
120
137
  $width: width,
121
138
  $height: height,
122
- $background: backgroundColor
139
+ $background: backgroundColor,
140
+ $starsImage: starsImage
123
141
  }, /*#__PURE__*/React.createElement(DeckGL, _extends({
124
142
  ref: function ref(_ref2) {
125
143
  _this2.deckRef.current = (_ref2 === null || _ref2 === void 0 ? void 0 : _ref2.deck) || null;
@@ -138,4 +156,4 @@ export var GlobeExportVideoPreview = /*#__PURE__*/function (_Component) {
138
156
  }
139
157
  }]);
140
158
  }(Component);
141
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsIkRlY2tHTCIsInN0eWxlZCIsIkVYUE9SVF9ERUNLX0RFVklDRV9QUk9QUyIsIlByZXZpZXdDb250YWluZXIiLCJkaXYiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsIiwicHJvcHMiLCIkd2lkdGgiLCIkaGVpZ2h0IiwiJGJhY2tncm91bmQiLCJHbG9iZUV4cG9ydFZpZGVvUHJldmlldyIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2NhbGxTdXBlciIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiX2dldENvbnRhaW5lciIsIl90aGlzJHByb3BzIiwiZXhwb3J0VmlkZW9XaWR0aCIsInJlc29sdXRpb24iLCJhc3BlY3RSYXRpbyIsImhlaWdodCIsIndpZHRoIiwiZ2V0Q2FudmFzIiwiX2RlY2skZ2V0Q2FudmFzIiwiZGVjayIsImRlY2tSZWYiLCJjdXJyZW50IiwiY2FsbCIsImFyZUxheWVyc0xvYWRlZCIsImxheWVycyIsImV2ZXJ5IiwibGF5ZXIiLCJpc0xvYWRlZCIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHByb3BzMiIsImFkYXB0ZXIiLCJkZWNrUHJvcHMiLCJ2aWV3U3RhdGUiLCJzZXRWaWV3U3RhdGUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJfdGhpcyRfZ2V0Q29udGFpbmVyIiwiYWRhcHRlclByb3BzIiwiZ2V0UHJvcHMiLCJleHRyYVByb3BzIiwicGl4ZWxSYXRpbyIsIk1hdGgiLCJtYXgiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiLCJyZWYiLCJkZXZpY2VQcm9wcyIsIm9uVmlld1N0YXRlQ2hhbmdlIiwiX3JlZiIsInZzIiwidXNlRGV2aWNlUGl4ZWxzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGFscy9nbG9iZS1leHBvcnQtdmlkZW8tcHJldmlldy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBSZWZPYmplY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBEZWNrR0wgZnJvbSAnQGRlY2suZ2wvcmVhY3QnO1xuaW1wb3J0IHR5cGUge0RlY2ssIERlY2tQcm9wcywgTWFwVmlld1N0YXRlfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0RlY2tBZGFwdGVyfSBmcm9tICdAaHViYmxlLmdsL2NvcmUnO1xuaW1wb3J0IHtFWFBPUlRfREVDS19ERVZJQ0VfUFJPUFN9IGZyb20gJy4vaHViYmxlLXV0aWxzJztcblxuY29uc3QgUHJldmlld0NvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyR3aWR0aDogbnVtYmVyOyAkaGVpZ2h0OiBudW1iZXI7ICRiYWNrZ3JvdW5kOiBzdHJpbmd9PmBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMuJHdpZHRofXB4O1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMuJGhlaWdodH1weDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiAke3Byb3BzID0+IHByb3BzLiRiYWNrZ3JvdW5kfTtcbmA7XG5cbmV4cG9ydCB0eXBlIEdsb2JlRXhwb3J0VmlkZW9QcmV2aWV3UHJvcHMgPSB7XG4gIG1hcERhdGE6IGFueTtcbiAgcmVzb2x1dGlvbjogW251bWJlciwgbnVtYmVyXTtcbiAgZXhwb3J0VmlkZW9XaWR0aDogbnVtYmVyO1xuICBkZWNrUHJvcHM/OiBEZWNrUHJvcHM7XG4gIHZpZXdTdGF0ZTogTWFwVmlld1N0YXRlO1xuICBhZGFwdGVyOiBEZWNrQWRhcHRlcjtcbiAgcmVuZGVyaW5nOiBib29sZWFuO1xuICBzYXZpbmc6IGJvb2xlYW47XG4gIHNldFZpZXdTdGF0ZTogKHZpZXdTdGF0ZTogTWFwVmlld1N0YXRlKSA9PiB2b2lkO1xuICBkdXJhdGlvbk1zOiBudW1iZXI7XG4gIC8qKiBDU1MgY29sb3Igc3RyaW5nIGZvciB0aGUgYXJlYSB0aGUgZ2xvYmUgZG9lcyBub3QgY292ZXIuICovXG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBTaW5nbGUtY2FudmFzIHZpZGVvIGV4cG9ydCBwcmV2aWV3IGZvciBnbG9iZSBtb2RlLlxuICpcbiAqIGh1YmJsZSdzIGJ1aWx0LWluIHByZXZpZXcgY2Fubm90IGJlIHVzZWQgZm9yIGdsb2JlIG1vZGU6IGluIGl0c1xuICogYGRpc2FibGVCYXNlTWFwYCBicmFuY2ggaXQgcmVuZGVycyBhIGJhcmUgPERlY2tHTD4gd2l0aG91dCBhIHZpZXdTdGF0ZSBhbmRcbiAqIG5ldmVyIHdpcmVzIHVwIHRoZSBmcmFtZS1jYXB0dXJlIGxvb3AgKHRoYXQgbG9vcCBpcyBkcml2ZW4gYnkgdGhlIG1hcGJveFxuICogJ3JlbmRlcicgZXZlbnQsIHdoaWNoIGRvZXMgbm90IGV4aXN0IHdpdGhvdXQgYSBiYXNlIG1hcCkuIFRoaXMgY29tcG9uZW50XG4gKiByZW5kZXJzIHRoZSBnbG9iZSBkZWNrIGRpcmVjdGx5IHdpdGggYSB2YWxpZCwgY29udHJvbGxlZCB2aWV3U3RhdGUgc28gdGhlXG4gKiBHbG9iZVZpZXcgY29udHJvbGxlciBpbml0aWFsaXplcyBjb3JyZWN0bHkgKG5vIE1hcFN0YXRlL0dsb2JlU3RhdGUgYXNzZXJ0KSxcbiAqIHN0YXlzIGludGVyYWN0aXZlLCBhbmQgZXhwb3NlcyB0aGUgZGVjayBjYW52YXMgc28gdGhlIHBhcmVudCBjb250YWluZXIgY2FuXG4gKiBkcml2ZSBpdHMgb3duIGNhcHR1cmUgbG9vcCAobWlycm9ycyB0aGUgc3dpcGUgZXhwb3J0IGFwcHJvYWNoKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEdsb2JlRXhwb3J0VmlkZW9QcmV2aWV3IGV4dGVuZHMgQ29tcG9uZW50PEdsb2JlRXhwb3J0VmlkZW9QcmV2aWV3UHJvcHM+IHtcbiAgZGVja1JlZjogUmVmT2JqZWN0PERlY2sgfCBudWxsPiA9IFJlYWN0LmNyZWF0ZVJlZjxEZWNrIHwgbnVsbD4oKTtcblxuICBfZ2V0Q29udGFpbmVyKCkge1xuICAgIGNvbnN0IHtleHBvcnRWaWRlb1dpZHRoLCByZXNvbHV0aW9ufSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgYXNwZWN0UmF0aW8gPSByZXNvbHV0aW9uWzBdIC8gcmVzb2x1dGlvblsxXTtcbiAgICByZXR1cm4ge2hlaWdodDogZXhwb3J0VmlkZW9XaWR0aCAvIGFzcGVjdFJhdGlvLCB3aWR0aDogZXhwb3J0VmlkZW9XaWR0aH07XG4gIH1cblxuICAvKiogRXhwb3NlIHRoZSBkZWNrIGNhbnZhcyBzbyB0aGUgcGFyZW50IGNvbnRhaW5lciBjYW4gY2FwdHVyZSBmcmFtZXMuICovXG4gIGdldENhbnZhcygpOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGwge1xuICAgIGNvbnN0IGRlY2sgPSB0aGlzLmRlY2tSZWYuY3VycmVudCBhcyBhbnk7XG4gICAgcmV0dXJuIChkZWNrICYmIGRlY2suZ2V0Q2FudmFzPy4oKSkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKiBBbGwgbGF5ZXJzIGxvYWRlZCDigJQgdXNlZCB0byBnYXRlIHRoZSBmaXJzdCBjYXB0dXJlIGZyYW1lLiAqL1xuICBhcmVMYXllcnNMb2FkZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGVjayA9IHRoaXMuZGVja1JlZi5jdXJyZW50O1xuICAgIGlmICghZGVjaykgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGxheWVycyA9IGRlY2sucHJvcHMubGF5ZXJzIHx8IFtdO1xuICAgIHJldHVybiBsYXllcnMubGVuZ3RoID4gMCAmJiBsYXllcnMuZXZlcnkoKGxheWVyOiBhbnkpID0+IGxheWVyLmlzTG9hZGVkKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7YWRhcHRlciwgZGVja1Byb3BzLCB2aWV3U3RhdGUsIHNldFZpZXdTdGF0ZSwgcmVzb2x1dGlvbiwgZXhwb3J0VmlkZW9XaWR0aCwgYmFja2dyb3VuZENvbG9yfSA9XG4gICAgICB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IHRoaXMuX2dldENvbnRhaW5lcigpO1xuICAgIGNvbnN0IGRlY2sgPSB0aGlzLmRlY2tSZWYuY3VycmVudDtcblxuICAgIC8vIGFkYXB0ZXIuZ2V0UHJvcHMgaW5qZWN0cyBgX2FuaW1hdGVgIChhbmQgdG9nZ2xlcyBgY29udHJvbGxlcmAgb2ZmIHdoaWxlXG4gICAgLy8gcmVjb3JkaW5nKSBzbyBodWJibGUncyBLZXBsZXJBbmltYXRpb24gY2FuIGRyaXZlIHRoZSBjYW1lcmEuIExheWVycyxcbiAgICAvLyB2aWV3cywgY29udHJvbGxlciBib3VuZHMgYW5kIGluaXRpYWxWaWV3U3RhdGUgY29tZSBmcm9tIGBkZWNrUHJvcHNgXG4gICAgLy8gKHNlZSBnZXRIdWJibGVEZWNrR2xQcm9wcykuIEEgY29udHJvbGxlZCBgdmlld1N0YXRlYCBrZWVwcyB0aGUgcHJldmlldyBpblxuICAgIC8vIHN5bmMgd2l0aCB0aGUgYW5pbWF0ZWQgY2FtZXJhIGFuZCBwcmV2ZW50cyB0aGUgR2xvYmVTdGF0ZSBhc3NlcnQuXG4gICAgY29uc3QgYWRhcHRlclByb3BzID0gYWRhcHRlci5nZXRQcm9wcyh7XG4gICAgICBkZWNrOiBkZWNrIGFzIGFueSxcbiAgICAgIGV4dHJhUHJvcHM6IGRlY2tQcm9wcyBhcyBhbnlcbiAgICB9KSBhcyBhbnk7XG5cbiAgICAvLyBSZW5kZXIgdGhlIGRyYXdpbmcgYnVmZmVyIGF0IHRoZSB0cnVlIGV4cG9ydCByZXNvbHV0aW9uIHJlZ2FyZGxlc3Mgb2YgdGhlXG4gICAgLy8gc21hbGwgQ1NTIHByZXZpZXcgc2l6ZS4gZGVjay5nbCdzIE1TQUEgKGFudGlhbGlhcyBkZWZhdWx0cyB0byB0cnVlIHdoZW5cbiAgICAvLyBkZWNrIG93bnMgdGhlIGNhbnZhcykgb25seSBzbW9vdGhzIGVkZ2VzIGF0IHRoZSBkcmF3aW5nLWJ1ZmZlciByZXNvbHV0aW9uLFxuICAgIC8vIHNvIGlmIHRoZSBidWZmZXIgd2VyZSB0aGUgc21hbGwgcHJldmlldyBzaXplIHRoZSBnbG9iZSBzaWxob3VldHRlIHdvdWxkXG4gICAgLy8gbG9vayBwaXhlbGF0ZWQgb25jZSB0aGUgY2FwdHVyZWQgZnJhbWUgaXMgc2NhbGVkIHVwIHRvIHRoZSBvdXRwdXQgc2l6ZS5cbiAgICAvLyBQYXNzaW5nIGFuIGV4cGxpY2l0IG51bWVyaWMgYHVzZURldmljZVBpeGVsc2Agc2l6ZXMgdGhlIGJ1ZmZlciB0b1xuICAgIC8vIHdpZHRoICogcmF0aW8gPT09IGV4cG9ydFZpZGVvV2lkdGggKiAocmVzb2x1dGlvbiAvIGV4cG9ydFZpZGVvV2lkdGgpID09PVxuICAgIC8vIHJlc29sdXRpb24sIGFuZCBpcyBmYXIgbW9yZSByZWxpYWJsZSB0aGFuIG11dGF0aW5nIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLlxuICAgIGNvbnN0IHBpeGVsUmF0aW8gPSBNYXRoLm1heCgxLCByZXNvbHV0aW9uWzBdIC8gZXhwb3J0VmlkZW9XaWR0aCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFByZXZpZXdDb250YWluZXIgJHdpZHRoPXt3aWR0aH0gJGhlaWdodD17aGVpZ2h0fSAkYmFja2dyb3VuZD17YmFja2dyb3VuZENvbG9yfT5cbiAgICAgICAgPERlY2tHTFxuICAgICAgICAgIHJlZj17cmVmID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVja1JlZi5jdXJyZW50ID0gKHJlZj8uZGVjayBhcyBhbnkpIHx8IG51bGw7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBkZXZpY2VQcm9wcz17RVhQT1JUX0RFQ0tfREVWSUNFX1BST1BTfVxuICAgICAgICAgIHsuLi5hZGFwdGVyUHJvcHN9XG4gICAgICAgICAgdmlld1N0YXRlPXt2aWV3U3RhdGV9XG4gICAgICAgICAgb25WaWV3U3RhdGVDaGFuZ2U9eyh7dmlld1N0YXRlOiB2c306IGFueSkgPT4gc2V0Vmlld1N0YXRlKHZzKX1cbiAgICAgICAgICB1c2VEZXZpY2VQaXhlbHM9e3BpeGVsUmF0aW99XG4gICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgIGhlaWdodD17aGVpZ2h0fVxuICAgICAgICAvPlxuICAgICAgPC9QcmV2aWV3Q29udGFpbmVyPlxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLE9BQU9BLEtBQUssSUFBR0MsU0FBUyxRQUFrQixPQUFPO0FBQ2pELE9BQU9DLE1BQU0sTUFBTSxnQkFBZ0I7QUFFbkMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUd0QyxTQUFRQyx3QkFBd0IsUUFBTyxnQkFBZ0I7QUFFdkQsSUFBTUMsZ0JBQWdCLEdBQUdGLE1BQU0sQ0FBQ0csR0FBRyxDQUFBQyxlQUFBLEtBQUFBLGVBQUEsR0FBQUMsc0JBQUEsNEZBQ3hCLFVBQUFDLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLE1BQU07QUFBQSxHQUNwQixVQUFBRCxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDRSxPQUFPO0FBQUEsR0FFbEIsVUFBQUYsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0csV0FBVztBQUFBLEVBQ3pDO0FBaUJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQWFDLHVCQUF1QiwwQkFBQUMsVUFBQTtFQUFBLFNBQUFELHdCQUFBO0lBQUEsSUFBQUUsS0FBQTtJQUFBQyxlQUFBLE9BQUFILHVCQUFBO0lBQUEsU0FBQUksSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBQUMsSUFBQSxPQUFBQyxLQUFBLENBQUFKLElBQUEsR0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtN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
159
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsIkRlY2tHTCIsInN0eWxlZCIsIkVYUE9SVF9ERUNLX0RFVklDRV9QUk9QUyIsImdldEdsb2JlRXhwb3J0TGF5ZXJzIiwiUHJldmlld0NvbnRhaW5lciIsImRpdiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCJwcm9wcyIsIiR3aWR0aCIsIiRoZWlnaHQiLCIkYmFja2dyb3VuZCIsIiRzdGFyc0ltYWdlIiwiY29uY2F0IiwiR2xvYmVFeHBvcnRWaWRlb1ByZXZpZXciLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2siLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsIl9jYWxsU3VwZXIiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJfaW5oZXJpdHMiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJ2YWx1ZSIsIl9nZXRDb250YWluZXIiLCJfdGhpcyRwcm9wcyIsImV4cG9ydFZpZGVvV2lkdGgiLCJyZXNvbHV0aW9uIiwiYXNwZWN0UmF0aW8iLCJoZWlnaHQiLCJ3aWR0aCIsImdldENhbnZhcyIsIl9kZWNrJGdldENhbnZhcyIsImRlY2siLCJkZWNrUmVmIiwiY3VycmVudCIsImNhbGwiLCJhcmVMYXllcnNMb2FkZWQiLCJsYXllcnMiLCJldmVyeSIsImxheWVyIiwiaXNMb2FkZWQiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wczIiLCJhZGFwdGVyIiwiZGVja1Byb3BzIiwidmlld1N0YXRlIiwic2V0Vmlld1N0YXRlIiwiYmFja2dyb3VuZENvbG9yIiwibWFwRGF0YSIsIm1hcFByb3BzIiwic3RhcnNJbWFnZSIsIl90aGlzJF9nZXRDb250YWluZXIiLCJtYXBJbmRleCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiYWRhcHRlclByb3BzIiwiZ2V0UHJvcHMiLCJleHRyYVByb3BzIiwiX29iamVjdFNwcmVhZCIsInBpeGVsUmF0aW8iLCJNYXRoIiwibWF4IiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzIiwicmVmIiwiZGV2aWNlUHJvcHMiLCJvblZpZXdTdGF0ZUNoYW5nZSIsIl9yZWYiLCJ2cyIsInVzZURldmljZVBpeGVscyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvZ2xvYmUtZXhwb3J0LXZpZGVvLXByZXZpZXcudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgUmVmT2JqZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgRGVja0dMIGZyb20gJ0BkZWNrLmdsL3JlYWN0JztcbmltcG9ydCB0eXBlIHtEZWNrLCBEZWNrUHJvcHMsIE1hcFZpZXdTdGF0ZX0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtEZWNrQWRhcHRlcn0gZnJvbSAnQGh1YmJsZS5nbC9jb3JlJztcbmltcG9ydCB7RVhQT1JUX0RFQ0tfREVWSUNFX1BST1BTLCBnZXRHbG9iZUV4cG9ydExheWVyc30gZnJvbSAnLi9odWJibGUtdXRpbHMnO1xuXG5jb25zdCBQcmV2aWV3Q29udGFpbmVyID0gc3R5bGVkLmRpdjx7XG4gICR3aWR0aDogbnVtYmVyO1xuICAkaGVpZ2h0OiBudW1iZXI7XG4gICRiYWNrZ3JvdW5kOiBzdHJpbmc7XG4gICRzdGFyc0ltYWdlPzogc3RyaW5nIHwgbnVsbDtcbn0+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy4kd2lkdGh9cHg7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy4kaGVpZ2h0fXB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMuJGJhY2tncm91bmR9O1xuICAke3Byb3BzID0+XG4gICAgcHJvcHMuJHN0YXJzSW1hZ2VcbiAgICAgID8gYGJhY2tncm91bmQtaW1hZ2U6IHVybCgnJHtwcm9wcy4kc3RhcnNJbWFnZX0nKTsgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDtgXG4gICAgICA6ICcnfVxuYDtcblxuZXhwb3J0IHR5cGUgR2xvYmVFeHBvcnRWaWRlb1ByZXZpZXdQcm9wcyA9IHtcbiAgbWFwRGF0YTogYW55O1xuICByZXNvbHV0aW9uOiBbbnVtYmVyLCBudW1iZXJdO1xuICBleHBvcnRWaWRlb1dpZHRoOiBudW1iZXI7XG4gIGRlY2tQcm9wcz86IERlY2tQcm9wcztcbiAgdmlld1N0YXRlOiBNYXBWaWV3U3RhdGU7XG4gIGFkYXB0ZXI6IERlY2tBZGFwdGVyO1xuICByZW5kZXJpbmc6IGJvb2xlYW47XG4gIHNhdmluZzogYm9vbGVhbjtcbiAgc2V0Vmlld1N0YXRlOiAodmlld1N0YXRlOiBNYXBWaWV3U3RhdGUpID0+IHZvaWQ7XG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbiAgLyoqIENTUyBjb2xvciBzdHJpbmcgZm9yIHRoZSBhcmVhIHRoZSBnbG9iZSBkb2VzIG5vdCBjb3Zlci4gKi9cbiAgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIG1hcFByb3BzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqIFRpbGVhYmxlIHN0YXItZmllbGQgZGF0YSBVUkwsIG1hdGNoaW5nIHRoZSBsaXZlIGdsb2JlIG1hcCBDU1MgYmFja2dyb3VuZC4gKi9cbiAgc3RhcnNJbWFnZT86IHN0cmluZyB8IG51bGw7XG59O1xuXG4vKipcbiAqIFNpbmdsZS1jYW52YXMgdmlkZW8gZXhwb3J0IHByZXZpZXcgZm9yIGdsb2JlIG1vZGUuXG4gKlxuICogaHViYmxlJ3MgYnVpbHQtaW4gcHJldmlldyBjYW5ub3QgYmUgdXNlZCBmb3IgZ2xvYmUgbW9kZTogaW4gaXRzXG4gKiBgZGlzYWJsZUJhc2VNYXBgIGJyYW5jaCBpdCByZW5kZXJzIGEgYmFyZSA8RGVja0dMPiB3aXRob3V0IGEgdmlld1N0YXRlIGFuZFxuICogbmV2ZXIgd2lyZXMgdXAgdGhlIGZyYW1lLWNhcHR1cmUgbG9vcCAodGhhdCBsb29wIGlzIGRyaXZlbiBieSB0aGUgbWFwYm94XG4gKiAncmVuZGVyJyBldmVudCwgd2hpY2ggZG9lcyBub3QgZXhpc3Qgd2l0aG91dCBhIGJhc2UgbWFwKS4gVGhpcyBjb21wb25lbnRcbiAqIHJlbmRlcnMgdGhlIGdsb2JlIGRlY2sgZGlyZWN0bHkgd2l0aCBhIHZhbGlkLCBjb250cm9sbGVkIHZpZXdTdGF0ZSBzbyB0aGVcbiAqIEdsb2JlVmlldyBjb250cm9sbGVyIGluaXRpYWxpemVzIGNvcnJlY3RseSAobm8gTWFwU3RhdGUvR2xvYmVTdGF0ZSBhc3NlcnQpLFxuICogc3RheXMgaW50ZXJhY3RpdmUsIGFuZCBleHBvc2VzIHRoZSBkZWNrIGNhbnZhcyBzbyB0aGUgcGFyZW50IGNvbnRhaW5lciBjYW5cbiAqIGRyaXZlIGl0cyBvd24gY2FwdHVyZSBsb29wIChtaXJyb3JzIHRoZSBzd2lwZSBleHBvcnQgYXBwcm9hY2gpLlxuICovXG5leHBvcnQgY2xhc3MgR2xvYmVFeHBvcnRWaWRlb1ByZXZpZXcgZXh0ZW5kcyBDb21wb25lbnQ8R2xvYmVFeHBvcnRWaWRlb1ByZXZpZXdQcm9wcz4ge1xuICBkZWNrUmVmOiBSZWZPYmplY3Q8RGVjayB8IG51bGw+ID0gUmVhY3QuY3JlYXRlUmVmPERlY2sgfCBudWxsPigpO1xuXG4gIF9nZXRDb250YWluZXIoKSB7XG4gICAgY29uc3Qge2V4cG9ydFZpZGVvV2lkdGgsIHJlc29sdXRpb259ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBhc3BlY3RSYXRpbyA9IHJlc29sdXRpb25bMF0gLyByZXNvbHV0aW9uWzFdO1xuICAgIHJldHVybiB7aGVpZ2h0OiBleHBvcnRWaWRlb1dpZHRoIC8gYXNwZWN0UmF0aW8sIHdpZHRoOiBleHBvcnRWaWRlb1dpZHRofTtcbiAgfVxuXG4gIC8qKiBFeHBvc2UgdGhlIGRlY2sgY2FudmFzIHNvIHRoZSBwYXJlbnQgY29udGFpbmVyIGNhbiBjYXB0dXJlIGZyYW1lcy4gKi9cbiAgZ2V0Q2FudmFzKCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gICAgY29uc3QgZGVjayA9IHRoaXMuZGVja1JlZi5jdXJyZW50IGFzIGFueTtcbiAgICByZXR1cm4gKGRlY2sgJiYgZGVjay5nZXRDYW52YXM/LigpKSB8fCBudWxsO1xuICB9XG5cbiAgLyoqIEFsbCBsYXllcnMgbG9hZGVkIOKAlCB1c2VkIHRvIGdhdGUgdGhlIGZpcnN0IGNhcHR1cmUgZnJhbWUuICovXG4gIGFyZUxheWVyc0xvYWRlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBkZWNrID0gdGhpcy5kZWNrUmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFkZWNrKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgbGF5ZXJzID0gZGVjay5wcm9wcy5sYXllcnMgfHwgW107XG4gICAgcmV0dXJuIGxheWVycy5sZW5ndGggPiAwICYmIGxheWVycy5ldmVyeSgobGF5ZXI6IGFueSkgPT4gbGF5ZXIuaXNMb2FkZWQpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGFkYXB0ZXIsXG4gICAgICBkZWNrUHJvcHMsXG4gICAgICB2aWV3U3RhdGUsXG4gICAgICBzZXRWaWV3U3RhdGUsXG4gICAgICByZXNvbHV0aW9uLFxuICAgICAgZXhwb3J0VmlkZW9XaWR0aCxcbiAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgIG1hcERhdGEsXG4gICAgICBtYXBQcm9wcyxcbiAgICAgIHN0YXJzSW1hZ2VcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSB0aGlzLl9nZXRDb250YWluZXIoKTtcbiAgICBjb25zdCBkZWNrID0gdGhpcy5kZWNrUmVmLmN1cnJlbnQ7XG5cbiAgICAvLyBSZWJ1aWxkIGxheWVycyBmcm9tIHRoZSBhbmltYXRlZCBjYW1lcmEgKGh1YmJsZSAyRDogY3JlYXRlS2VwbGVyTGF5ZXJzKG1hcERhdGEsIHZpZXdTdGF0ZSkpLlxuICAgIGNvbnN0IGxheWVycyA9IGdldEdsb2JlRXhwb3J0TGF5ZXJzKG1hcERhdGEsIHtcbiAgICAgIG1hcEluZGV4OiAwLFxuICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IG1hcFByb3BzPy5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgIG1hcGJveEFwaVVybDogbWFwUHJvcHM/Lm1hcGJveEFwaVVybCxcbiAgICAgIHZpZXdTdGF0ZVxuICAgIH0pO1xuXG4gICAgLy8gYWRhcHRlci5nZXRQcm9wcyBpbmplY3RzIGBfYW5pbWF0ZWAgKGFuZCB0b2dnbGVzIGBjb250cm9sbGVyYCBvZmYgd2hpbGVcbiAgICAvLyByZWNvcmRpbmcpIHNvIGh1YmJsZSdzIEtlcGxlckFuaW1hdGlvbiBjYW4gZHJpdmUgdGhlIGNhbWVyYS4gVmlld3MsXG4gICAgLy8gY29udHJvbGxlciBib3VuZHMgYW5kIGluaXRpYWxWaWV3U3RhdGUgY29tZSBmcm9tIGBkZWNrUHJvcHNgXG4gICAgLy8gKHNlZSBnZXRIdWJibGVEZWNrR2xQcm9wcykuIEEgY29udHJvbGxlZCBgdmlld1N0YXRlYCBrZWVwcyB0aGUgcHJldmlldyBpblxuICAgIC8vIHN5bmMgd2l0aCB0aGUgYW5pbWF0ZWQgY2FtZXJhIGFuZCBwcmV2ZW50cyB0aGUgR2xvYmVTdGF0ZSBhc3NlcnQuXG4gICAgY29uc3QgYWRhcHRlclByb3BzID0gYWRhcHRlci5nZXRQcm9wcyh7XG4gICAgICBkZWNrOiBkZWNrIGFzIGFueSxcbiAgICAgIGV4dHJhUHJvcHM6IHsuLi5kZWNrUHJvcHMsIGxheWVyc30gYXMgYW55XG4gICAgfSkgYXMgYW55O1xuXG4gICAgLy8gUmVuZGVyIHRoZSBkcmF3aW5nIGJ1ZmZlciBhdCB0aGUgdHJ1ZSBleHBvcnQgcmVzb2x1dGlvbiByZWdhcmRsZXNzIG9mIHRoZVxuICAgIC8vIHNtYWxsIENTUyBwcmV2aWV3IHNpemUuIGRlY2suZ2wncyBNU0FBIChhbnRpYWxpYXMgZGVmYXVsdHMgdG8gdHJ1ZSB3aGVuXG4gICAgLy8gZGVjayBvd25zIHRoZSBjYW52YXMpIG9ubHkgc21vb3RocyBlZGdlcyBhdCB0aGUgZHJhd2luZy1idWZmZXIgcmVzb2x1dGlvbixcbiAgICAvLyBzbyBpZiB0aGUgYnVmZmVyIHdlcmUgdGhlIHNtYWxsIHByZXZpZXcgc2l6ZSB0aGUgZ2xvYmUgc2lsaG91ZXR0ZSB3b3VsZFxuICAgIC8vIGxvb2sgcGl4ZWxhdGVkIG9uY2UgdGhlIGNhcHR1cmVkIGZyYW1lIGlzIHNjYWxlZCB1cCB0byB0aGUgb3V0cHV0IHNpemUuXG4gICAgLy8gUGFzc2luZyBhbiBleHBsaWNpdCBudW1lcmljIGB1c2VEZXZpY2VQaXhlbHNgIHNpemVzIHRoZSBidWZmZXIgdG9cbiAgICAvLyB3aWR0aCAqIHJhdGlvID09PSBleHBvcnRWaWRlb1dpZHRoICogKHJlc29sdXRpb24gLyBleHBvcnRWaWRlb1dpZHRoKSA9PT1cbiAgICAvLyByZXNvbHV0aW9uLCBhbmQgaXMgZmFyIG1vcmUgcmVsaWFibGUgdGhhbiBtdXRhdGluZyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpby5cbiAgICBjb25zdCBwaXhlbFJhdGlvID0gTWF0aC5tYXgoMSwgcmVzb2x1dGlvblswXSAvIGV4cG9ydFZpZGVvV2lkdGgpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQcmV2aWV3Q29udGFpbmVyXG4gICAgICAgICR3aWR0aD17d2lkdGh9XG4gICAgICAgICRoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgJGJhY2tncm91bmQ9e2JhY2tncm91bmRDb2xvcn1cbiAgICAgICAgJHN0YXJzSW1hZ2U9e3N0YXJzSW1hZ2V9XG4gICAgICA+XG4gICAgICAgIDxEZWNrR0xcbiAgICAgICAgICByZWY9e3JlZiA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlY2tSZWYuY3VycmVudCA9IChyZWY/LmRlY2sgYXMgYW55KSB8fCBudWxsO1xuICAgICAgICAgIH19XG4gICAgICAgICAgZGV2aWNlUHJvcHM9e0VYUE9SVF9ERUNLX0RFVklDRV9QUk9QU31cbiAgICAgICAgICB7Li4uYWRhcHRlclByb3BzfVxuICAgICAgICAgIHZpZXdTdGF0ZT17dmlld1N0YXRlfVxuICAgICAgICAgIG9uVmlld1N0YXRlQ2hhbmdlPXsoe3ZpZXdTdGF0ZTogdnN9OiBhbnkpID0+IHNldFZpZXdTdGF0ZSh2cyl9XG4gICAgICAgICAgdXNlRGV2aWNlUGl4ZWxzPXtwaXhlbFJhdGlvfVxuICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgLz5cbiAgICAgIDwvUHJldmlld0NvbnRhaW5lcj5cbiAgICApO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLE9BQU9BLEtBQUssSUFBR0MsU0FBUyxRQUFrQixPQUFPO0FBQ2pELE9BQU9DLE1BQU0sTUFBTSxnQkFBZ0I7QUFFbkMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUd0QyxTQUFRQyx3QkFBd0IsRUFBRUMsb0JBQW9CLFFBQU8sZ0JBQWdCO0FBRTdFLElBQU1DLGdCQUFnQixHQUFHSCxNQUFNLENBQUNJLEdBQUcsQ0FBQUMsZUFBQSxLQUFBQSxlQUFBLEdBQUFDLHNCQUFBLDBHQU14QixVQUFBQyxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxNQUFNO0FBQUEsR0FDcEIsVUFBQUQsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0UsT0FBTztBQUFBLEdBRVosVUFBQUYsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0csV0FBVztBQUFBLEdBQzVDLFVBQUFILEtBQUs7RUFBQSxPQUNMQSxLQUFLLENBQUNJLFdBQVcsNkJBQUFDLE1BQUEsQ0FDYUwsS0FBSyxDQUFDSSxXQUFXLHNDQUMzQyxFQUFFO0FBQUEsRUFDVDtBQW9CRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFhRSx1QkFBdUIs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