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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) 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/grid.js +2 -2
  7. package/dist/cjs/common/data-table/header-cell.js +123 -44
  8. package/dist/cjs/common/data-table/index.js +104 -31
  9. package/dist/cjs/common/file-uploader/file-upload.js +250 -40
  10. package/dist/cjs/common/histogram-plot.js +1 -1
  11. package/dist/cjs/common/icons/circle.js +54 -0
  12. package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
  13. package/dist/cjs/common/icons/index.js +22 -1
  14. package/dist/cjs/common/icons/line-string.js +60 -0
  15. package/dist/cjs/common/item-selector/item-selector.js +2 -2
  16. package/dist/cjs/common/portaled.js +3 -3
  17. package/dist/cjs/common/time-range-slider.js +2 -2
  18. package/dist/cjs/common/timeline-slider.js +2 -2
  19. package/dist/cjs/common/toolbar-item.js +24 -3
  20. package/dist/cjs/editor/editor.js +27 -9
  21. package/dist/cjs/editor/feature-action-panel.js +34 -12
  22. package/dist/cjs/editor/feature-properties-editor.js +215 -0
  23. package/dist/cjs/editor/filter-feature-badges.js +92 -0
  24. package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +2 -2
  25. package/dist/cjs/filters/time-widget.js +2 -2
  26. package/dist/cjs/index.js +33 -1
  27. package/dist/cjs/kepler-gl.js +20 -3
  28. package/dist/cjs/map/layer-hover-info.js +2 -2
  29. package/dist/cjs/map/map-control-toolbar.js +2 -2
  30. package/dist/cjs/map/map-control.js +14 -8
  31. package/dist/cjs/map/map-draw-panel.js +74 -15
  32. package/dist/cjs/map/theme-toggle-button.js +64 -0
  33. package/dist/cjs/map-container.js +17 -6
  34. package/dist/cjs/map-view-state-context.js +3 -3
  35. package/dist/cjs/modal-container.js +3 -2
  36. package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
  37. package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
  38. package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
  39. package/dist/cjs/modals/cloud-components/cloud-storage-disclaimer.js +24 -0
  40. package/dist/cjs/modals/cloud-tile.js +82 -39
  41. package/dist/cjs/modals/data-table-modal.js +37 -25
  42. package/dist/cjs/modals/export-video-modal.js +28 -1
  43. package/dist/cjs/modals/export-video-modal.spec.js +56 -10
  44. package/dist/cjs/modals/globe-export-video-container.js +19 -3
  45. package/dist/cjs/modals/globe-export-video-preview.js +25 -7
  46. package/dist/cjs/modals/hubble-utils.js +8 -3
  47. package/dist/cjs/modals/image-modal-container.js +2 -2
  48. package/dist/cjs/modals/load-data-modal.js +3 -3
  49. package/dist/cjs/modals/load-storage-map.js +9 -6
  50. package/dist/cjs/modals/save-map-modal.js +4 -3
  51. package/dist/cjs/modals/share-map-modal.js +5 -4
  52. package/dist/cjs/modals/swipe-composite-utils.js +9 -1
  53. package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
  54. package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
  55. package/dist/cjs/plot-container.js +12 -5
  56. package/dist/cjs/side-panel/common/dataset-info.js +2 -2
  57. package/dist/cjs/side-panel/filter-panel/filter-panel.js +2 -2
  58. package/dist/cjs/side-panel/layer-manager.js +11 -3
  59. package/dist/cjs/side-panel/layer-panel/custom-palette.js +2 -2
  60. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
  61. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
  62. package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
  63. package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
  64. package/dist/common/data-table/column-statistics-components.d.ts +31 -0
  65. package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
  66. package/dist/common/data-table/column-statistics-time.d.ts +19 -0
  67. package/dist/common/data-table/header-cell.d.ts +7 -5
  68. package/dist/common/data-table/index.d.ts +7 -24
  69. package/dist/common/histogram-plot.d.ts +24 -1
  70. package/dist/common/icons/{arrow-down-solid.d.ts → circle.d.ts} +2 -1
  71. package/dist/common/icons/draw-point.d.ts +10 -0
  72. package/dist/common/icons/index.d.ts +3 -0
  73. package/dist/common/icons/line-string.d.ts +10 -0
  74. package/dist/common/toolbar-item.d.ts +2 -0
  75. package/dist/editor/editor.d.ts +1 -0
  76. package/dist/editor/feature-action-panel.d.ts +1 -0
  77. package/dist/editor/feature-properties-editor.d.ts +8 -0
  78. package/dist/editor/filter-feature-badges.d.ts +12 -0
  79. package/dist/esm/common/data-table/cell-size.js +40 -23
  80. package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
  81. package/dist/esm/common/data-table/column-statistics-components.js +59 -0
  82. package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
  83. package/dist/esm/common/data-table/column-statistics-time.js +60 -0
  84. package/dist/esm/common/data-table/grid.js +2 -2
  85. package/dist/esm/common/data-table/header-cell.js +125 -46
  86. package/dist/esm/common/data-table/index.js +104 -31
  87. package/dist/esm/common/file-uploader/file-upload.js +251 -41
  88. package/dist/esm/common/histogram-plot.js +1 -1
  89. package/dist/esm/common/icons/circle.js +48 -0
  90. package/dist/esm/common/icons/draw-point.js +44 -0
  91. package/dist/esm/common/icons/index.js +4 -1
  92. package/dist/esm/common/icons/line-string.js +54 -0
  93. package/dist/esm/common/item-selector/item-selector.js +2 -2
  94. package/dist/esm/common/portaled.js +3 -3
  95. package/dist/esm/common/time-range-slider.js +2 -2
  96. package/dist/esm/common/timeline-slider.js +2 -2
  97. package/dist/esm/common/toolbar-item.js +24 -3
  98. package/dist/esm/editor/editor.js +27 -9
  99. package/dist/esm/editor/feature-action-panel.js +37 -15
  100. package/dist/esm/editor/feature-properties-editor.js +208 -0
  101. package/dist/esm/editor/filter-feature-badges.js +85 -0
  102. package/dist/esm/filters/filter-panels/polygon-filter-panel.js +2 -2
  103. package/dist/esm/filters/time-widget.js +2 -2
  104. package/dist/esm/index.js +5 -1
  105. package/dist/esm/kepler-gl.js +20 -3
  106. package/dist/esm/map/layer-hover-info.js +2 -2
  107. package/dist/esm/map/map-control-toolbar.js +2 -2
  108. package/dist/esm/map/map-control.js +14 -8
  109. package/dist/esm/map/map-draw-panel.js +72 -11
  110. package/dist/esm/map/theme-toggle-button.js +55 -0
  111. package/dist/esm/map-container.js +17 -6
  112. package/dist/esm/map-view-state-context.js +3 -3
  113. package/dist/esm/modal-container.js +3 -2
  114. package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
  115. package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
  116. package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
  117. package/dist/esm/modals/cloud-components/cloud-storage-disclaimer.js +19 -0
  118. package/dist/esm/modals/cloud-tile.js +82 -39
  119. package/dist/esm/modals/data-table-modal.js +38 -26
  120. package/dist/esm/modals/export-video-modal.js +29 -2
  121. package/dist/esm/modals/export-video-modal.spec.js +56 -10
  122. package/dist/esm/modals/globe-export-video-container.js +20 -4
  123. package/dist/esm/modals/globe-export-video-preview.js +26 -8
  124. package/dist/esm/modals/hubble-utils.js +8 -3
  125. package/dist/esm/modals/image-modal-container.js +2 -2
  126. package/dist/esm/modals/load-data-modal.js +3 -3
  127. package/dist/esm/modals/load-storage-map.js +8 -3
  128. package/dist/esm/modals/save-map-modal.js +4 -3
  129. package/dist/esm/modals/share-map-modal.js +5 -4
  130. package/dist/esm/modals/swipe-composite-utils.js +9 -1
  131. package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
  132. package/dist/esm/modals/swipe-export-video-preview.js +8 -4
  133. package/dist/esm/plot-container.js +12 -5
  134. package/dist/esm/side-panel/common/dataset-info.js +2 -2
  135. package/dist/esm/side-panel/filter-panel/filter-panel.js +2 -2
  136. package/dist/esm/side-panel/layer-manager.js +11 -3
  137. package/dist/esm/side-panel/layer-panel/custom-palette.js +2 -2
  138. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
  139. package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
  140. package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
  141. package/dist/index.d.ts +8 -0
  142. package/dist/kepler-gl.d.ts +3 -0
  143. package/dist/map/map-control.d.ts +6 -2
  144. package/dist/map/map-draw-panel.d.ts +1 -0
  145. package/dist/map/theme-toggle-button.d.ts +18 -0
  146. package/dist/map-container.d.ts +1 -0
  147. package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
  148. package/dist/modals/cloud-components/cloud-storage-disclaimer.d.ts +2 -0
  149. package/dist/modals/data-table-modal.d.ts +1 -0
  150. package/dist/modals/globe-export-video-container.d.ts +2 -0
  151. package/dist/modals/globe-export-video-preview.d.ts +3 -0
  152. package/dist/modals/hubble-utils.d.ts +2 -1
  153. package/dist/modals/swipe-composite-utils.d.ts +1 -1
  154. package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
  155. package/package.json +20 -21
  156. package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
  157. package/dist/cjs/modals/storage-map-viewer.js +0 -98
  158. package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
  159. package/dist/esm/common/icons/arrow-down-solid.js +0 -34
  160. package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
  161. package/dist/esm/modals/storage-map-viewer.js +0 -93
  162. package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
  163. package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
  164. package/dist/modals/storage-map-viewer.d.ts +0 -21
  165. package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
@@ -19,6 +19,7 @@ var _statusPanel = _interopRequireDefault(require("./status-panel"));
19
19
  var _localization = require("@kepler.gl/localization");
20
20
  var _useCloudListProvider2 = require("../hooks/use-cloud-list-provider");
21
21
  var _providerSelect = require("./cloud-components/provider-select");
22
+ var _cloudStorageDisclaimer = require("./cloud-components/cloud-storage-disclaimer");
22
23
  var _constants = require("@kepler.gl/constants");
23
24
  var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT
24
25
  // Copyright contributors to the kepler.gl project
@@ -57,8 +58,8 @@ var SharingUrl = exports.SharingUrl = function SharingUrl(_ref) {
57
58
  var nop = function nop() {
58
59
  return;
59
60
  };
60
- var StyledShareMapModal = (0, _styledComponents["default"])(_styledComponents2.StyledModalContent)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 24px 72px 40px 72px;\n margin: 0 -72px -40px -72px;\n display: flex;\n flex-direction: column;\n"])));
61
- var StyledInnerDiv = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 500px;\n"])));
61
+ var StyledShareMapModal = (0, _styledComponents["default"])(_styledComponents2.StyledModalContent)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 24px 72px 40px 72px;\n margin: 0 -72px -40px -72px;\n display: flex;\n flex-direction: column;\n min-height: 500px;\n"])));
62
+ var StyledInnerDiv = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n flex: 1;\n"])));
62
63
  var UNDERLINE_TEXT_DECORATION_STYLE = {
63
64
  textDecoration: 'underline'
64
65
  };
@@ -161,8 +162,8 @@ function ShareMapUrlModalFactory() {
161
162
  target: "_blank",
162
163
  rel: "noopener noreferrer",
163
164
  style: UNDERLINE_TEXT_DECORATION_STYLE
164
- }, provider.name)))) : null)));
165
+ }, provider.name)))) : null, /*#__PURE__*/_react["default"].createElement(_cloudStorageDisclaimer.CloudStorageDisclaimer, null))));
165
166
  };
166
167
  return ShareMapUrlModal;
167
168
  }
168
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdENvcHlUb0NsaXBib2FyZCIsIl9zdHlsZXMiLCJfaW1hZ2VNb2RhbENvbnRhaW5lciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfc3RhdHVzUGFuZWwiLCJfbG9jYWxpemF0aW9uIiwiX3VzZUNsb3VkTGlzdFByb3ZpZGVyMiIsIl9wcm92aWRlclNlbGVjdCIsIl9jb25zdGFudHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIlN0eWxlZElucHV0TGFiZWwiLCJleHBvcnRzIiwic3R5bGVkIiwibGFiZWwiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3JMVCIsIlN0eWxlU2hhcmluZ1VybCIsImRpdiIsImF0dHJzIiwiY2xhc3NOYW1lIiwiU2hhcmluZ1VybCIsIl9yZWYiLCJ1cmwiLCJfcmVmJG1lc3NhZ2UiLCJtZXNzYWdlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29waWVkIiwic2V0Q29weSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsImRpc3BsYXkiLCJJbnB1dExpZ2h0IiwidHlwZSIsInZhbHVlIiwicmVhZE9ubHkiLCJDb3B5VG9DbGlwYm9hcmQiLCJ0ZXh0Iiwib25Db3B5IiwiQnV0dG9uIiwid2lkdGgiLCJub3AiLCJTdHlsZWRTaGFyZU1hcE1vZGFsIiwiU3R5bGVkTW9kYWxDb250ZW50IiwiU3R5bGVkSW5uZXJEaXYiLCJVTkRFUkxJTkVfVEVYVF9ERUNPUkFUSU9OX1NUWUxFIiwidGV4dERlY29yYXRpb24iLCJTaGFyZU1hcEhlYWRlciIsIl9yZWYyIiwiY2xvdWRQcm92aWRlcnMiLCJzaGFyZWFibGVDbG91ZFByb3ZpZGVycyIsInVzZU1lbW8iLCJmaWx0ZXIiLCJjcCIsImhhc1NoYXJpbmdVcmwiLCJTdHlsZWRFeHBvcnRTZWN0aW9uIiwiRm9ybWF0dGVkTWVzc2FnZSIsImlkIiwiUHJvdmlkZXJTZWxlY3QiLCJTaGFyZU1hcFVybE1vZGFsRmFjdG9yeSIsIlNoYXJlTWFwVXJsTW9kYWwiLCJfcmVmMyIsIl9yZWYzJGlzUHJvdmlkZXJMb2FkaSIsImlzUHJvdmlkZXJMb2FkaW5nIiwiX3JlZjMkb25FeHBvcnQiLCJvbkV4cG9ydCIsIl9yZWYzJHByb3ZpZGVyRXJyb3IiLCJwcm92aWRlckVycm9yIiwiX3JlZjMkc3VjY2Vzc0luZm8iLCJzdWNjZXNzSW5mbyIsIl9yZWYzJG9uVXBkYXRlSW1hZ2VTZSIsIm9uVXBkYXRlSW1hZ2VTZXR0aW5nIiwiY2xlYW51cEV4cG9ydEltYWdlIiwiX3VzZUNsb3VkTGlzdFByb3ZpZGVyIiwidXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJwcm92aWRlciIsInNoYXJlVXJsIiwiZm9sZGVyTGluayIsInVzZUVmZmVjdCIsIlRoZW1lUHJvdmlkZXIiLCJ0aGVtZUxUIiwiZGF0YVRlc3RJZHMiLCJwcm92aWRlclNoYXJlTWFwIiwiZGlzYWJsZWQiLCJpc0xvYWRpbmciLCJlcnJvciIsInByb3ZpZGVySWNvbiIsImljb24iLCJrZXkiLCJocmVmIiwidGFyZ2V0IiwicmVsIiwibmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvc2hhcmUtbWFwLW1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7VGhlbWVQcm92aWRlcn0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtDb3B5VG9DbGlwYm9hcmR9IGZyb20gJ3JlYWN0LWNvcHktdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7dGhlbWVMVH0gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IEltYWdlTW9kYWxDb250YWluZXIsIHtJbWFnZU1vZGFsQ29udGFpbmVyUHJvcHN9IGZyb20gJy4vaW1hZ2UtbW9kYWwtY29udGFpbmVyJztcblxuaW1wb3J0IHtcbiAgU3R5bGVkTW9kYWxDb250ZW50LFxuICBTdHlsZWRFeHBvcnRTZWN0aW9uLFxuICBJbnB1dExpZ2h0LFxuICBCdXR0b25cbn0gZnJvbSAnLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBTdGF0dXNQYW5lbCBmcm9tICcuL3N0YXR1cy1wYW5lbCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7dXNlQ2xvdWRMaXN0UHJvdmlkZXJ9IGZyb20gJy4uL2hvb2tzL3VzZS1jbG91ZC1saXN0LXByb3ZpZGVyJztcbmltcG9ydCB7UHJvdmlkZXJTZWxlY3R9IGZyb20gJy4vY2xvdWQtY29tcG9uZW50cy9wcm92aWRlci1zZWxlY3QnO1xuaW1wb3J0IHtQcm92aWRlcn0gZnJvbSAnQGtlcGxlci5nbC9jbG91ZC1wcm92aWRlcnMnO1xuaW1wb3J0IHtjbGVhbnVwRXhwb3J0SW1hZ2UgYXMgY2xlYW51cEV4cG9ydEltYWdlQWN0aW9ufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtkYXRhVGVzdElkc30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkSW5wdXRMYWJlbCA9IHN0eWxlZC5sYWJlbGBcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVH07XG4gIGxldHRlci1zcGFjaW5nOiAwLjJweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBTdHlsZVNoYXJpbmdVcmwgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2hhcmluZy11cmwnXG59KWBcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi1ib3R0b206IDE0cHg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgaW5wdXQge1xuICAgIGJvcmRlci1yaWdodDogMDtcbiAgfVxuXG4gIC5idXR0b24ge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgfVxuYDtcblxuaW50ZXJmYWNlIFNoYXJpbmdVcmxQcm9wcyB7XG4gIHVybDogc3RyaW5nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgU2hhcmluZ1VybDogUmVhY3QuRkM8U2hhcmluZ1VybFByb3BzPiA9ICh7dXJsLCBtZXNzYWdlID0gJyd9KSA9PiB7XG4gIGNvbnN0IFtjb3BpZWQsIHNldENvcHldID0gdXNlU3RhdGUoZmFsc2UpO1xuICByZXR1cm4gKFxuICAgIDxTdHlsZVNoYXJpbmdVcmw+XG4gICAgICA8U3R5bGVkSW5wdXRMYWJlbD57bWVzc2FnZX08L1N0eWxlZElucHV0TGFiZWw+XG4gICAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogJ2ZsZXgnfX0+XG4gICAgICAgIDxJbnB1dExpZ2h0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9e3VybH0gcmVhZE9ubHkgLz5cbiAgICAgICAgPENvcHlUb0NsaXBib2FyZCB0ZXh0PXt1cmx9IG9uQ29weT17KCkgPT4gc2V0Q29weSh0cnVlKX0+XG4gICAgICAgICAgPEJ1dHRvbiB3aWR0aD1cIjgwcHhcIj57Y29waWVkID8gJ0NvcGllZCEnIDogJ0NvcHknfTwvQnV0dG9uPlxuICAgICAgICA8L0NvcHlUb0NsaXBib2FyZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvU3R5bGVTaGFyaW5nVXJsPlxuICApO1xufTtcbmNvbnN0IG5vcCA9ICgpID0+IHtcbiAgcmV0dXJuO1xufTtcblxuY29uc3QgU3R5bGVkU2hhcmVNYXBNb2RhbCA9IHN0eWxlZChTdHlsZWRNb2RhbENvbnRlbnQpYFxuICBwYWRkaW5nOiAyNHB4IDcycHggNDBweCA3MnB4O1xuICBtYXJnaW46IDAgLTcycHggLTQwcHggLTcycHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5gO1xuXG5jb25zdCBTdHlsZWRJbm5lckRpdiA9IHN0eWxlZC5kaXZgXG4gIG1pbi1oZWlnaHQ6IDUwMHB4O1xuYDtcblxuY29uc3QgVU5ERVJMSU5FX1RFWFRfREVDT1JBVElPTl9TVFlMRSA9IHt0ZXh0RGVjb3JhdGlvbjogJ3VuZGVybGluZSd9O1xuXG5jb25zdCBTaGFyZU1hcEhlYWRlciA9ICh7Y2xvdWRQcm92aWRlcnN9KSA9PiB7XG4gIGNvbnN0IHNoYXJlYWJsZUNsb3VkUHJvdmlkZXJzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBjbG91ZFByb3ZpZGVycy5maWx0ZXIoY3AgPT4gY3AuaGFzU2hhcmluZ1VybCgpKSxcbiAgICBbY2xvdWRQcm92aWRlcnNdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aXRsZVwiPlxuICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuc2hhcmVNYXAudGl0bGUnfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPFByb3ZpZGVyU2VsZWN0IGNsb3VkUHJvdmlkZXJzPXtzaGFyZWFibGVDbG91ZFByb3ZpZGVyc30gLz5cbiAgICA8L1N0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICk7XG59O1xuXG5pbnRlcmZhY2UgU2hhcmVNYXBVcmxNb2RhbEZhY3RvcnlQcm9wcyB7XG4gIGlzUHJvdmlkZXJMb2FkaW5nPzogYm9vbGVhbjtcbiAgb25FeHBvcnQ/OiAocHJvdmlkZXI6IFByb3ZpZGVyKSA9PiB2b2lkO1xuICBwcm92aWRlckVycm9yPzogc3RyaW5nO1xuICBzdWNjZXNzSW5mbz86IHtzaGFyZVVybD86IHN0cmluZzsgZm9sZGVyTGluaz86IHN0cmluZ307XG4gIG9uVXBkYXRlSW1hZ2VTZXR0aW5nOiBJbWFnZU1vZGFsQ29udGFpbmVyUHJvcHNbJ29uVXBkYXRlSW1hZ2VTZXR0aW5nJ107XG4gIGNsZWFudXBFeHBvcnRJbWFnZTogdHlwZW9mIGNsZWFudXBFeHBvcnRJbWFnZUFjdGlvbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hhcmVNYXBVcmxNb2RhbEZhY3RvcnkoKSB7XG4gIGNvbnN0IFNoYXJlTWFwVXJsTW9kYWw6IFJlYWN0LkZDPFNoYXJlTWFwVXJsTW9kYWxGYWN0b3J5UHJvcHM+ID0gKHtcbiAgICBpc1Byb3ZpZGVyTG9hZGluZyA9IGZhbHNlLFxuICAgIG9uRXhwb3J0ID0gbm9wLFxuICAgIHByb3ZpZGVyRXJyb3IgPSBudWxsLFxuICAgIHN1Y2Nlc3NJbmZvID0ge30sXG4gICAgb25VcGRhdGVJbWFnZVNldHRpbmcgPSBub3AsXG4gICAgY2xlYW51cEV4cG9ydEltYWdlXG4gIH0pID0+IHtcbiAgICBjb25zdCB7cHJvdmlkZXIsIGNsb3VkUHJvdmlkZXJzfSA9IHVzZUNsb3VkTGlzdFByb3ZpZGVyKCk7XG4gICAgY29uc3Qge3NoYXJlVXJsLCBmb2xkZXJMaW5rfSA9IHN1Y2Nlc3NJbmZvO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChwcm92aWRlcikge1xuICAgICAgICBvbkV4cG9ydChwcm92aWRlcik7XG4gICAgICB9XG4gICAgfSwgW29uRXhwb3J0LCBwcm92aWRlcl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZUxUfT5cbiAgICAgICAgPEltYWdlTW9kYWxDb250YWluZXJcbiAgICAgICAgICBwcm92aWRlcj17cHJvdmlkZXJ9XG4gICAgICAgICAgb25VcGRhdGVJbWFnZVNldHRpbmc9e29uVXBkYXRlSW1hZ2VTZXR0aW5nfVxuICAgICAgICAgIGNsZWFudXBFeHBvcnRJbWFnZT17Y2xlYW51cEV4cG9ydEltYWdlfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0eWxlZFNoYXJlTWFwTW9kYWwgY2xhc3NOYW1lPVwiZXhwb3J0LWNsb3VkLW1vZGFsXCI+XG4gICAgICAgICAgICA8U2hhcmVNYXBIZWFkZXIgY2xvdWRQcm92aWRlcnM9e2Nsb3VkUHJvdmlkZXJzfSAvPlxuICAgICAgICAgICAge3Byb3ZpZGVyPy5oYXNTaGFyaW5nVXJsKCkgPyAoXG4gICAgICAgICAgICAgIDxTdHlsZWRJbm5lckRpdiBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMucHJvdmlkZXJTaGFyZU1hcH0+XG4gICAgICAgICAgICAgICAgPFN0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLnNoYXJlVXJpVGl0bGUnfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuc2hhcmVNYXAuc2hhcmVVcmlTdWJ0aXRsZSd9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNlbGVjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlIHdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLnNoYXJlRGlzY2xhaW1lcid9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRFeHBvcnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRFeHBvcnRTZWN0aW9uIGRpc2FibGVkPXtpc1Byb3ZpZGVyTG9hZGluZ30+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLmNsb3VkVGl0bGUnfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuc2hhcmVNYXAuY2xvdWRTdWJ0aXRsZSd9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRFeHBvcnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgIHtpc1Byb3ZpZGVyTG9hZGluZyB8fCBwcm92aWRlckVycm9yID8gKFxuICAgICAgICAgICAgICAgICAgPFN0YXR1c1BhbmVsXG4gICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZz17aXNQcm92aWRlckxvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgIGVycm9yPXtwcm92aWRlckVycm9yfVxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlckljb249e3Byb3ZpZGVyLmljb259XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIHtzaGFyZVVybCAmJiAoXG4gICAgICAgICAgICAgICAgICA8U3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5TaGFyZSBVcmw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFNoYXJpbmdVcmwga2V5PXswfSB1cmw9e3NoYXJlVXJsfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIHtwcm92aWRlciAmJiBmb2xkZXJMaW5rICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17Zm9sZGVyTGlua31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtVTkRFUkxJTkVfVEVYVF9ERUNPUkFUSU9OX1NUWUxFfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvdmlkZXIubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1N0eWxlZElubmVyRGl2PlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TdHlsZWRTaGFyZU1hcE1vZGFsPlxuICAgICAgICA8L0ltYWdlTW9kYWxDb250YWluZXI+XG4gICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gU2hhcmVNYXBVcmxNb2RhbDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFFQSxJQUFBTSxrQkFBQSxHQUFBTixPQUFBO0FBTUEsSUFBQU8sWUFBQSxHQUFBRixzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQVEsYUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsc0JBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLGVBQUEsR0FBQVYsT0FBQTtBQUdBLElBQUFXLFVBQUEsR0FBQVgsT0FBQTtBQUFpRCxJQUFBWSxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBckJqRDtBQUNBO0FBQUEsU0FBQWhCLHdCQUFBaUIsQ0FBQSxFQUFB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
169
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdENvcHlUb0NsaXBib2FyZCIsIl9zdHlsZXMiLCJfaW1hZ2VNb2RhbENvbnRhaW5lciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfc3RhdHVzUGFuZWwiLCJfbG9jYWxpemF0aW9uIiwiX3VzZUNsb3VkTGlzdFByb3ZpZGVyMiIsIl9wcm92aWRlclNlbGVjdCIsIl9jbG91ZFN0b3JhZ2VEaXNjbGFpbWVyIiwiX2NvbnN0YW50cyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiU3R5bGVkSW5wdXRMYWJlbCIsImV4cG9ydHMiLCJzdHlsZWQiLCJsYWJlbCIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvckxUIiwiU3R5bGVTaGFyaW5nVXJsIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJTaGFyaW5nVXJsIiwiX3JlZiIsInVybCIsIl9yZWYkbWVzc2FnZSIsIm1lc3NhZ2UiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJjb3BpZWQiLCJzZXRDb3B5IiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwiZGlzcGxheSIsIklucHV0TGlnaHQiLCJ0eXBlIiwidmFsdWUiLCJyZWFkT25seSIsIkNvcHlUb0NsaXBib2FyZCIsInRleHQiLCJvbkNvcHkiLCJCdXR0b24iLCJ3aWR0aCIsIm5vcCIsIlN0eWxlZFNoYXJlTWFwTW9kYWwiLCJTdHlsZWRNb2RhbENvbnRlbnQiLCJTdHlsZWRJbm5lckRpdiIsIlVOREVSTElORV9URVhUX0RFQ09SQVRJT05fU1RZTEUiLCJ0ZXh0RGVjb3JhdGlvbiIsIlNoYXJlTWFwSGVhZGVyIiwiX3JlZjIiLCJjbG91ZFByb3ZpZGVycyIsInNoYXJlYWJsZUNsb3VkUHJvdmlkZXJzIiwidXNlTWVtbyIsImZpbHRlciIsImNwIiwiaGFzU2hhcmluZ1VybCIsIlN0eWxlZEV4cG9ydFNlY3Rpb24iLCJGb3JtYXR0ZWRNZXNzYWdlIiwiaWQiLCJQcm92aWRlclNlbGVjdCIsIlNoYXJlTWFwVXJsTW9kYWxGYWN0b3J5IiwiU2hhcmVNYXBVcmxNb2RhbCIsIl9yZWYzIiwiX3JlZjMkaXNQcm92aWRlckxvYWRpIiwiaXNQcm92aWRlckxvYWRpbmciLCJfcmVmMyRvbkV4cG9ydCIsIm9uRXhwb3J0IiwiX3JlZjMkcHJvdmlkZXJFcnJvciIsInByb3ZpZGVyRXJyb3IiLCJfcmVmMyRzdWNjZXNzSW5mbyIsInN1Y2Nlc3NJbmZvIiwiX3JlZjMkb25VcGRhdGVJbWFnZVNlIiwib25VcGRhdGVJbWFnZVNldHRpbmciLCJjbGVhbnVwRXhwb3J0SW1hZ2UiLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJ1c2VDbG91ZExpc3RQcm92aWRlciIsInByb3ZpZGVyIiwic2hhcmVVcmwiLCJmb2xkZXJMaW5rIiwidXNlRWZmZWN0IiwiVGhlbWVQcm92aWRlciIsInRoZW1lTFQiLCJkYXRhVGVzdElkcyIsInByb3ZpZGVyU2hhcmVNYXAiLCJkaXNhYmxlZCIsImlzTG9hZGluZyIsImVycm9yIiwicHJvdmlkZXJJY29uIiwiaWNvbiIsImtleSIsImhyZWYiLCJ0YXJnZXQiLCJyZWwiLCJuYW1lIiwiQ2xvdWRTdG9yYWdlRGlzY2xhaW1lciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvc2hhcmUtbWFwLW1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7VGhlbWVQcm92aWRlcn0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtDb3B5VG9DbGlwYm9hcmR9IGZyb20gJ3JlYWN0LWNvcHktdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7dGhlbWVMVH0gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IEltYWdlTW9kYWxDb250YWluZXIsIHtJbWFnZU1vZGFsQ29udGFpbmVyUHJvcHN9IGZyb20gJy4vaW1hZ2UtbW9kYWwtY29udGFpbmVyJztcblxuaW1wb3J0IHtcbiAgU3R5bGVkTW9kYWxDb250ZW50LFxuICBTdHlsZWRFeHBvcnRTZWN0aW9uLFxuICBJbnB1dExpZ2h0LFxuICBCdXR0b25cbn0gZnJvbSAnLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBTdGF0dXNQYW5lbCBmcm9tICcuL3N0YXR1cy1wYW5lbCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7dXNlQ2xvdWRMaXN0UHJvdmlkZXJ9IGZyb20gJy4uL2hvb2tzL3VzZS1jbG91ZC1saXN0LXByb3ZpZGVyJztcbmltcG9ydCB7UHJvdmlkZXJTZWxlY3R9IGZyb20gJy4vY2xvdWQtY29tcG9uZW50cy9wcm92aWRlci1zZWxlY3QnO1xuaW1wb3J0IHtDbG91ZFN0b3JhZ2VEaXNjbGFpbWVyfSBmcm9tICcuL2Nsb3VkLWNvbXBvbmVudHMvY2xvdWQtc3RvcmFnZS1kaXNjbGFpbWVyJztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcbmltcG9ydCB7Y2xlYW51cEV4cG9ydEltYWdlIGFzIGNsZWFudXBFeHBvcnRJbWFnZUFjdGlvbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7ZGF0YVRlc3RJZHN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IFN0eWxlZElucHV0TGFiZWwgPSBzdHlsZWQubGFiZWxgXG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yTFR9O1xuICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG5gO1xuXG5leHBvcnQgY29uc3QgU3R5bGVTaGFyaW5nVXJsID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3NoYXJpbmctdXJsJ1xufSlgXG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW4tYm90dG9tOiAxNHB4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIGlucHV0IHtcbiAgICBib3JkZXItcmlnaHQ6IDA7XG4gIH1cblxuICAuYnV0dG9uIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gIH1cbmA7XG5cbmludGVyZmFjZSBTaGFyaW5nVXJsUHJvcHMge1xuICB1cmw6IHN0cmluZztcbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFNoYXJpbmdVcmw6IFJlYWN0LkZDPFNoYXJpbmdVcmxQcm9wcz4gPSAoe3VybCwgbWVzc2FnZSA9ICcnfSkgPT4ge1xuICBjb25zdCBbY29waWVkLCBzZXRDb3B5XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVTaGFyaW5nVXJsPlxuICAgICAgPFN0eWxlZElucHV0TGFiZWw+e21lc3NhZ2V9PC9TdHlsZWRJbnB1dExhYmVsPlxuICAgICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6ICdmbGV4J319PlxuICAgICAgICA8SW5wdXRMaWdodCB0eXBlPVwidGV4dFwiIHZhbHVlPXt1cmx9IHJlYWRPbmx5IC8+XG4gICAgICAgIDxDb3B5VG9DbGlwYm9hcmQgdGV4dD17dXJsfSBvbkNvcHk9eygpID0+IHNldENvcHkodHJ1ZSl9PlxuICAgICAgICAgIDxCdXR0b24gd2lkdGg9XCI4MHB4XCI+e2NvcGllZCA/ICdDb3BpZWQhJyA6ICdDb3B5J308L0J1dHRvbj5cbiAgICAgICAgPC9Db3B5VG9DbGlwYm9hcmQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L1N0eWxlU2hhcmluZ1VybD5cbiAgKTtcbn07XG5jb25zdCBub3AgPSAoKSA9PiB7XG4gIHJldHVybjtcbn07XG5cbmNvbnN0IFN0eWxlZFNoYXJlTWFwTW9kYWwgPSBzdHlsZWQoU3R5bGVkTW9kYWxDb250ZW50KWBcbiAgcGFkZGluZzogMjRweCA3MnB4IDQwcHggNzJweDtcbiAgbWFyZ2luOiAwIC03MnB4IC00MHB4IC03MnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtaW4taGVpZ2h0OiA1MDBweDtcbmA7XG5cbmNvbnN0IFN0eWxlZElubmVyRGl2ID0gc3R5bGVkLmRpdmBcbiAgZmxleDogMTtcbmA7XG5cbmNvbnN0IFVOREVSTElORV9URVhUX0RFQ09SQVRJT05fU1RZTEUgPSB7dGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnfTtcblxuY29uc3QgU2hhcmVNYXBIZWFkZXIgPSAoe2Nsb3VkUHJvdmlkZXJzfSkgPT4ge1xuICBjb25zdCBzaGFyZWFibGVDbG91ZFByb3ZpZGVycyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gY2xvdWRQcm92aWRlcnMuZmlsdGVyKGNwID0+IGNwLmhhc1NoYXJpbmdVcmwoKSksXG4gICAgW2Nsb3VkUHJvdmlkZXJzXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLnRpdGxlJ30gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxQcm92aWRlclNlbGVjdCBjbG91ZFByb3ZpZGVycz17c2hhcmVhYmxlQ2xvdWRQcm92aWRlcnN9IC8+XG4gICAgPC9TdHlsZWRFeHBvcnRTZWN0aW9uPlxuICApO1xufTtcblxuaW50ZXJmYWNlIFNoYXJlTWFwVXJsTW9kYWxGYWN0b3J5UHJvcHMge1xuICBpc1Byb3ZpZGVyTG9hZGluZz86IGJvb2xlYW47XG4gIG9uRXhwb3J0PzogKHByb3ZpZGVyOiBQcm92aWRlcikgPT4gdm9pZDtcbiAgcHJvdmlkZXJFcnJvcj86IHN0cmluZztcbiAgc3VjY2Vzc0luZm8/OiB7c2hhcmVVcmw/OiBzdHJpbmc7IGZvbGRlckxpbms/OiBzdHJpbmd9O1xuICBvblVwZGF0ZUltYWdlU2V0dGluZzogSW1hZ2VNb2RhbENvbnRhaW5lclByb3BzWydvblVwZGF0ZUltYWdlU2V0dGluZyddO1xuICBjbGVhbnVwRXhwb3J0SW1hZ2U6IHR5cGVvZiBjbGVhbnVwRXhwb3J0SW1hZ2VBY3Rpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNoYXJlTWFwVXJsTW9kYWxGYWN0b3J5KCkge1xuICBjb25zdCBTaGFyZU1hcFVybE1vZGFsOiBSZWFjdC5GQzxTaGFyZU1hcFVybE1vZGFsRmFjdG9yeVByb3BzPiA9ICh7XG4gICAgaXNQcm92aWRlckxvYWRpbmcgPSBmYWxzZSxcbiAgICBvbkV4cG9ydCA9IG5vcCxcbiAgICBwcm92aWRlckVycm9yID0gbnVsbCxcbiAgICBzdWNjZXNzSW5mbyA9IHt9LFxuICAgIG9uVXBkYXRlSW1hZ2VTZXR0aW5nID0gbm9wLFxuICAgIGNsZWFudXBFeHBvcnRJbWFnZVxuICB9KSA9PiB7XG4gICAgY29uc3Qge3Byb3ZpZGVyLCBjbG91ZFByb3ZpZGVyc30gPSB1c2VDbG91ZExpc3RQcm92aWRlcigpO1xuICAgIGNvbnN0IHtzaGFyZVVybCwgZm9sZGVyTGlua30gPSBzdWNjZXNzSW5mbztcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAocHJvdmlkZXIpIHtcbiAgICAgICAgb25FeHBvcnQocHJvdmlkZXIpO1xuICAgICAgfVxuICAgIH0sIFtvbkV4cG9ydCwgcHJvdmlkZXJdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWVMVH0+XG4gICAgICAgIDxJbWFnZU1vZGFsQ29udGFpbmVyXG4gICAgICAgICAgcHJvdmlkZXI9e3Byb3ZpZGVyfVxuICAgICAgICAgIG9uVXBkYXRlSW1hZ2VTZXR0aW5nPXtvblVwZGF0ZUltYWdlU2V0dGluZ31cbiAgICAgICAgICBjbGVhbnVwRXhwb3J0SW1hZ2U9e2NsZWFudXBFeHBvcnRJbWFnZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxTdHlsZWRTaGFyZU1hcE1vZGFsIGNsYXNzTmFtZT1cImV4cG9ydC1jbG91ZC1tb2RhbFwiPlxuICAgICAgICAgICAgPFNoYXJlTWFwSGVhZGVyIGNsb3VkUHJvdmlkZXJzPXtjbG91ZFByb3ZpZGVyc30gLz5cbiAgICAgICAgICAgIHtwcm92aWRlcj8uaGFzU2hhcmluZ1VybCgpID8gKFxuICAgICAgICAgICAgICA8U3R5bGVkSW5uZXJEaXYgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWRzLnByb3ZpZGVyU2hhcmVNYXB9PlxuICAgICAgICAgICAgICAgIDxTdHlsZWRFeHBvcnRTZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5zaGFyZU1hcC5zaGFyZVVyaVRpdGxlJ30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLnNoYXJlVXJpU3VidGl0bGUnfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzZWxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aXRsZSB3YXJuaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5zaGFyZU1hcC5zaGFyZURpc2NsYWltZXInfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgICAgICAgICAgICAgICA8U3R5bGVkRXhwb3J0U2VjdGlvbiBkaXNhYmxlZD17aXNQcm92aWRlckxvYWRpbmd9PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5zaGFyZU1hcC5jbG91ZFRpdGxlJ30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLnNoYXJlTWFwLmNsb3VkU3VidGl0bGUnfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkRXhwb3J0U2VjdGlvbj5cbiAgICAgICAgICAgICAgICB7aXNQcm92aWRlckxvYWRpbmcgfHwgcHJvdmlkZXJFcnJvciA/IChcbiAgICAgICAgICAgICAgICAgIDxTdGF0dXNQYW5lbFxuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzUHJvdmlkZXJMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICBlcnJvcj17cHJvdmlkZXJFcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJJY29uPXtwcm92aWRlci5pY29ufVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICB7c2hhcmVVcmwgJiYgKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlXCI+U2hhcmUgVXJsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNlbGVjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxTaGFyaW5nVXJsIGtleT17MH0gdXJsPXtzaGFyZVVybH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICB7cHJvdmlkZXIgJiYgZm9sZGVyTGluayAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2ZvbGRlckxpbmt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17VU5ERVJMSU5FX1RFWFRfREVDT1JBVElPTl9TVFlMRX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3ZpZGVyLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZEV4cG9ydFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9TdHlsZWRJbm5lckRpdj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPENsb3VkU3RvcmFnZURpc2NsYWltZXIgLz5cbiAgICAgICAgICA8L1N0eWxlZFNoYXJlTWFwTW9kYWw+XG4gICAgICAgIDwvSW1hZ2VNb2RhbENvbnRhaW5lcj5cbiAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBTaGFyZU1hcFVybE1vZGFsO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxxQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksb0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUwsT0FBQTtBQUVBLElBQUFNLGtCQUFBLEdBQUFOLE9BQUE7QUFNQSxJQUFBTyxZQUFBLEdBQUFGLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBUSxhQUFB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
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.compositeSwipeFrame = compositeSwipeFrame;
7
7
  exports.getSwipePercentageAtTime = getSwipePercentageAtTime;
8
8
  var _popmotion = require("popmotion");
9
+ var _deckglLayers = require("@kepler.gl/deckgl-layers");
9
10
  // SPDX-License-Identifier: MIT
10
11
  // Copyright contributors to the kepler.gl project
11
12
 
@@ -83,6 +84,7 @@ function drawSwipeDivider(ctx, splitX, height) {
83
84
  function compositeSwipeFrame(leftCanvas, rightCanvas, outputCanvas, percentage) {
84
85
  var showDivider = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
85
86
  var backgroundColor = arguments.length > 5 ? arguments[5] : undefined;
87
+ var showStars = arguments.length > 6 ? arguments[6] : undefined;
86
88
  var ctx = outputCanvas.getContext('2d');
87
89
  if (!ctx) return;
88
90
  var w = outputCanvas.width;
@@ -99,6 +101,12 @@ function compositeSwipeFrame(leftCanvas, rightCanvas, outputCanvas, percentage)
99
101
  ctx.fillRect(0, 0, w, h);
100
102
  }
101
103
 
104
+ // Stars are a CSS background on the live globe map, so they must be tiled
105
+ // onto the composite canvas or they won't appear in preview or export.
106
+ if (showStars) {
107
+ (0, _deckglLayers.drawStarsBackground)(ctx, w, h);
108
+ }
109
+
102
110
  // Draw right (background) canvas fully
103
111
  ctx.drawImage(rightCanvas, 0, 0, w, h);
104
112
 
@@ -115,4 +123,4 @@ function compositeSwipeFrame(leftCanvas, rightCanvas, outputCanvas, percentage)
115
123
  drawSwipeDivider(ctx, splitX, h);
116
124
  }
117
125
  }
118
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcG9wbW90aW9uIiwicmVxdWlyZSIsImxpbmVhciIsInAiLCJFQVNJTkdfTUFQIiwiZWFzZUluT3V0IiwiZ2V0U3dpcGVQZXJjZW50YWdlQXRUaW1lIiwidGltZU1zIiwiZHVyYXRpb25NcyIsInN0YXJ0UGN0IiwiZW5kUGN0IiwiZWFzaW5nIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwicHJvZ3Jlc3MiLCJNYXRoIiwibWF4IiwibWluIiwiZWFzZWRQcm9ncmVzcyIsIkhBTkRMRV9SQURJVVMiLCJBUlJPV19TSVpFIiwiZHJhd1N3aXBlRGl2aWRlciIsImN0eCIsInNwbGl0WCIsImhlaWdodCIsInNhdmUiLCJzdHJva2VTdHlsZSIsImxpbmVXaWR0aCIsInNoYWRvd0NvbG9yIiwic2hhZG93Qmx1ciIsImJlZ2luUGF0aCIsIm1vdmVUbyIsImxpbmVUbyIsInN0cm9rZSIsImN5IiwiYXJjIiwiUEkiLCJmaWxsU3R5bGUiLCJmaWxsIiwiY2xvc2VQYXRoIiwicmVzdG9yZSIsImNvbXBvc2l0ZVN3aXBlRnJhbWUiLCJsZWZ0Q2FudmFzIiwicmlnaHRDYW52YXMiLCJvdXRwdXRDYW52YXMiLCJwZXJjZW50YWdlIiwic2hvd0RpdmlkZXIiLCJiYWNrZ3JvdW5kQ29sb3IiLCJnZXRDb250ZXh0IiwidyIsIndpZHRoIiwiaCIsInJvdW5kIiwiY2xlYXJSZWN0IiwiZmlsbFJlY3QiLCJkcmF3SW1hZ2UiLCJyZWN0IiwiY2xpcCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvc3dpcGUtY29tcG9zaXRlLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7ZWFzZUluT3V0fSBmcm9tICdwb3Btb3Rpb24nO1xuXG5leHBvcnQgdHlwZSBTd2lwZUVhc2luZyA9ICdsaW5lYXInIHwgJ2Vhc2UtaW4tb3V0JztcblxuY29uc3QgbGluZWFyID0gKHA6IG51bWJlcik6IG51bWJlciA9PiBwO1xuY29uc3QgRUFTSU5HX01BUDogUmVjb3JkPFN3aXBlRWFzaW5nLCAocDogbnVtYmVyKSA9PiBudW1iZXI+ID0ge1xuICBsaW5lYXIsXG4gICdlYXNlLWluLW91dCc6IGVhc2VJbk91dFxufTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBzd2lwZSBwZXJjZW50YWdlIGF0IGEgZ2l2ZW4gdGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN3aXBlUGVyY2VudGFnZUF0VGltZShcbiAgdGltZU1zOiBudW1iZXIsXG4gIGR1cmF0aW9uTXM6IG51bWJlcixcbiAgc3RhcnRQY3Q6IG51bWJlcixcbiAgZW5kUGN0OiBudW1iZXIsXG4gIGVhc2luZzogU3dpcGVFYXNpbmcgPSAnZWFzZS1pbi1vdXQnXG4pOiBudW1iZXIge1xuICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHRpbWVNcyAvIGR1cmF0aW9uTXMpKTtcbiAgY29uc3QgZWFzZWRQcm9ncmVzcyA9IEVBU0lOR19NQVBbZWFzaW5nXShwcm9ncmVzcyk7XG4gIHJldHVybiBzdGFydFBjdCArIChlbmRQY3QgLSBzdGFydFBjdCkgKiBlYXNlZFByb2dyZXNzO1xufVxuXG5jb25zdCBIQU5ETEVfUkFESVVTID0gMTQ7XG5jb25zdCBBUlJPV19TSVpFID0gNjtcblxuLyoqXG4gKiBEcmF3IGEgc3dpcGUgZGl2aWRlciAobGluZSArIGNpcmN1bGFyIGhhbmRsZSB3aXRoIGFycm93cykgb250byBhIDJEIGNhbnZhcyBjb250ZXh0LlxuICovXG5mdW5jdGlvbiBkcmF3U3dpcGVEaXZpZGVyKFxuICBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgc3BsaXRYOiBudW1iZXIsXG4gIGhlaWdodDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgY3R4LnNhdmUoKTtcblxuICAvLyBEaXZpZGVyIGxpbmVcbiAgY3R4LnN0cm9rZVN0eWxlID0gJyNGRkZGRkYnO1xuICBjdHgubGluZVdpZHRoID0gMjtcbiAgY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMCwgMCwgMCwgMC41KSc7XG4gIGN0eC5zaGFkb3dCbHVyID0gNDtcbiAgY3R4LmJlZ2luUGF0aCgpO1xuICBjdHgubW92ZVRvKHNwbGl0WCwgMCk7XG4gIGN0eC5saW5lVG8oc3BsaXRYLCBoZWlnaHQpO1xuICBjdHguc3Ryb2tlKCk7XG5cbiAgLy8gSGFuZGxlIGNpcmNsZVxuICBjb25zdCBjeSA9IGhlaWdodCAvIDI7XG4gIGN0eC5zaGFkb3dCbHVyID0gNjtcbiAgY3R4LmJlZ2luUGF0aCgpO1xuICBjdHguYXJjKHNwbGl0WCwgY3ksIEhBTkRMRV9SQURJVVMsIDAsIE1hdGguUEkgKiAyKTtcbiAgY3R4LmZpbGxTdHlsZSA9ICcjMjkzMjNDJztcbiAgY3R4LmZpbGwoKTtcbiAgY3R4LnN0cm9rZVN0eWxlID0gJyNGRkZGRkYnO1xuICBjdHgubGluZVdpZHRoID0gMjtcbiAgY3R4LnN0cm9rZSgpO1xuICBjdHguc2hhZG93Qmx1ciA9IDA7XG5cbiAgLy8gTGVmdCBhcnJvd1xuICBjdHguZmlsbFN0eWxlID0gJyNGRkZGRkYnO1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5tb3ZlVG8oc3BsaXRYIC0gQVJST1dfU0laRSAtIDMsIGN5KTtcbiAgY3R4LmxpbmVUbyhzcGxpdFggLSAzLCBjeSAtIEFSUk9XX1NJWkUpO1xuICBjdHgubGluZVRvKHNwbGl0WCAtIDMsIGN5ICsgQVJST1dfU0laRSk7XG4gIGN0eC5jbG9zZVBhdGgoKTtcbiAgY3R4LmZpbGwoKTtcblxuICAvLyBSaWdodCBhcnJvd1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5tb3ZlVG8oc3BsaXRYICsgQVJST1dfU0laRSArIDMsIGN5KTtcbiAgY3R4LmxpbmVUbyhzcGxpdFggKyAzLCBjeSAtIEFSUk9XX1NJWkUpO1xuICBjdHgubGluZVRvKHNwbGl0WCArIDMsIGN5ICsgQVJST1dfU0laRSk7XG4gIGN0eC5jbG9zZVBhdGgoKTtcbiAgY3R4LmZpbGwoKTtcblxuICBjdHgucmVzdG9yZSgpO1xufVxuXG4vKipcbiAqIENvbXBvc2l0ZSB0d28gY2FudmFzZXMgKGxlZnQvcmlnaHQgbWFwIHZpZXdzKSB3aXRoIGEgc3dpcGUgZGl2aWRlclxuICogaW50byBhIHNpbmdsZSBvdXRwdXQgY2FudmFzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zaXRlU3dpcGVGcmFtZShcbiAgbGVmdENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQsXG4gIHJpZ2h0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCxcbiAgb3V0cHV0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCxcbiAgcGVyY2VudGFnZTogbnVtYmVyLFxuICBzaG93RGl2aWRlcjogYm9vbGVhbiA9IHRydWUsXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGN0eCA9IG91dHB1dENhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBpZiAoIWN0eCkgcmV0dXJuO1xuXG4gIGNvbnN0IHcgPSBvdXRwdXRDYW52YXMud2lkdGg7XG4gIGNvbnN0IGggPSBvdXRwdXRDYW52YXMuaGVpZ2h0O1xuICBjb25zdCBzcGxpdFggPSBNYXRoLnJvdW5kKCh3ICogcGVyY2VudGFnZSkgLyAxMDApO1xuXG4gIGN0eC5jbGVhclJlY3QoMCwgMCwgdywgaCk7XG5cbiAgLy8gSW4gZ2xvYmUgbW9kZSB0aGUgZGVjayBjYW52YXNlcyBhcmUgdHJhbnNwYXJlbnQgd2hlcmUgdGhlIGdsb2JlIGlzbid0XG4gIC8vIGRyYXduIChjbGVhckNvbG9yIGlzIGRpc2FibGVkIHRvIGtlZXAgcGlja2luZyBpbnRhY3QpLCBzbyBwYWludCB0aGVcbiAgLy8gY29uZmlndXJlZCBiYWNrZ3JvdW5kIGZpcnN0LiBOb24tZ2xvYmUgc3dpcGUgcGFzc2VzIG5vIGNvbG9yIGFuZCBrZWVwcyB0aGVcbiAgLy8gcHJldmlvdXMgdHJhbnNwYXJlbnQtY2xlYXIgYmVoYXZpb3IgKHRoZSBiYXNlIG1hcCBpcyBhbHJlYWR5IG9wYXF1ZSkuXG4gIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICBjdHguZmlsbFN0eWxlID0gYmFja2dyb3VuZENvbG9yO1xuICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3LCBoKTtcbiAgfVxuXG4gIC8vIERyYXcgcmlnaHQgKGJhY2tncm91bmQpIGNhbnZhcyBmdWxseVxuICBjdHguZHJhd0ltYWdlKHJpZ2h0Q2FudmFzLCAwLCAwLCB3LCBoKTtcblxuICAvLyBEcmF3IGxlZnQgKGZvcmVncm91bmQpIGNhbnZhcyBjbGlwcGVkIHRvIDAuLnNwbGl0WFxuICBjdHguc2F2ZSgpO1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5yZWN0KDAsIDAsIHNwbGl0WCwgaCk7XG4gIGN0eC5jbGlwKCk7XG4gIGN0eC5kcmF3SW1hZ2UobGVmdENhbnZhcywgMCwgMCwgdywgaCk7XG4gIGN0eC5yZXN0b3JlKCk7XG5cbiAgLy8gRHJhdyB0aGUgZGl2aWRlclxuICBpZiAoc2hvd0RpdmlkZXIpIHtcbiAgICBkcmF3U3dpcGVEaXZpZGVyKGN0eCwgc3BsaXRYLCBoKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBR0EsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBSEE7QUFDQTs7QUFNQSxJQUFNQyxNQUFNLEdBQUcsU0FBVEEsTUFBTUEsQ0FBSUMsQ0FBUztFQUFBLE9BQWFBLENBQUM7QUFBQTtBQUN2QyxJQUFNQyxVQUFzRCxHQUFHO0VBQzdERixNQUFNLEVBQU5BLE1BQU07RUFDTixhQUFhLEVBQUVHO0FBQ2pCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ08sU0FBU0Msd0JBQXdCQSxDQUN0Q0MsTUFBYyxFQUNkQyxVQUFrQixFQUNsQkMsUUFBZ0IsRUFDaEJDLE1BQWMsRUFFTjtFQUFBLElBRFJDLE1BQW1CLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLGFBQWE7RUFFbkMsSUFBTUcsUUFBUSxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVELElBQUksQ0FBQ0UsR0FBRyxDQUFDLENBQUMsRUFBRVgsTUFBTSxHQUFHQyxVQUFVLENBQUMsQ0FBQztFQUM5RCxJQUFNVyxhQUFhLEdBQUdmLFVBQVUsQ0FBQ08sTUFBTSxDQUFDLENBQUNJLFFBQVEsQ0FBQztFQUNsRCxPQUFPTixRQUFRLEdBQUcsQ0FBQ0MsTUFBTSxHQUFHRCxRQUFRLElBQUlVLGFBQWE7QUFDdkQ7QUFFQSxJQUFNQyxhQUFhLEdBQUcsRUFBRTtBQUN4QixJQUFNQyxVQUFVLEdBQUcsQ0FBQzs7QUFFcEI7QUFDQTtBQUNBO0FBQ0EsU0FBU0MsZ0JBQWdCQSxDQUN2QkMsR0FBNkIsRUFDN0JDLE1BQWMsRUFDZEMsTUFBYyxFQUNSO0VBQ05GLEdBQUcsQ0FBQ0csSUFBSSxDQUFDLENBQUM7O0VBRVY7RUFDQUgsR0FBRyxDQUFDSSxXQUFXLEdBQUcsU0FBUztFQUMzQkosR0FBRyxDQUFDSyxTQUFTLEdBQUcsQ0FBQztFQUNqQkwsR0FBRyxDQUFDTSxXQUFXLEdBQUcsb0JBQW9CO0VBQ3RDTixHQUFHLENBQUNPLFVBQVUsR0FBRyxDQUFDO0VBQ2xCUCxHQUFHLENBQUNRLFNBQVMsQ0FBQyxDQUFDO0VBQ2ZSLEdBQUcsQ0FBQ1MsTUFBTSxDQUFDUixNQUFNLEVBQUUsQ0FBQyxDQUFDO0VBQ3JCRCxHQUFHLENBQUNVLE1BQU0sQ0FBQ1QsTUFBTSxFQUFFQyxNQUFNLENBQUM7RUFDMUJGLEdBQUcsQ0FBQ1csTUFBTSxDQUFDLENBQUM7O0VBRVo7RUFDQSxJQUFNQyxFQUFFLEdBQUdWLE1BQU0sR0FBRyxDQUFDO0VBQ3JCRixHQUFHLENBQUNPLFVBQVUsR0FBRyxDQUFDO0VBQ2xCUCxHQUFHLENBQUNRLFNBQVMsQ0FBQyxDQUFDO0VBQ2ZSLEdBQUcsQ0FBQ2EsR0FBRyxDQUFDWixNQUFNLEVBQUVXLEVBQUUsRUFBRWYsYUFBYSxFQUFFLENBQUMsRUFBRUosSUFBSSxDQUFDcUIsRUFBRSxHQUFHLENBQUMsQ0FBQztFQUNsRGQsR0FBRyxDQUFDZSxTQUFTLEdBQUcsU0FBUztFQUN6QmYsR0FBRyxDQUFDZ0IsSUFBSSxDQUFDLENBQUM7RUFDVmhCLEdBQUcsQ0FBQ0ksV0FBVyxHQUFHLFNBQVM7RUFDM0JKLEdBQUcsQ0FBQ0ssU0FBUyxHQUFHLENBQUM7RUFDakJMLEdBQUcsQ0FBQ1csTUFBTSxDQUFDLENBQUM7RUFDWlgsR0FBRyxDQUFDTyxVQUFVLEdBQUcsQ0FBQzs7RUFFbEI7RUFDQVAsR0FBRyxDQUFDZSxTQUFTLEdBQUcsU0FBUztFQUN6QmYsR0FBRyxDQUFDUSxTQUFTLENBQUMsQ0FBQztFQUNmUixHQUFHLENBQUNTLE1BQU0sQ0FBQ1IsTUFBTSxHQUFHSCxVQUFVLEdBQUcsQ0FBQyxFQUFFYyxFQUFFLENBQUM7RUFDdkNaLEdBQUcsQ0FBQ1UsTUFBTSxDQUFDVCxNQUFNLEdBQUcsQ0FBQyxFQUFFVyxFQUFFLEdBQUdkLFVBQVUsQ0FBQztFQUN2Q0UsR0FBRyxDQUFDVSxNQUFNLENBQUNULE1BQU0sR0FBRyxDQUFDLEVBQUVXLEVBQUUsR0FBR2QsVUFBVSxDQUFDO0VBQ3ZDRSxHQUFHLENBQUNpQixTQUFTLENBQUMsQ0FBQztFQUNmakIsR0FBRyxDQUFDZ0IsSUFBSSxDQUFDLENBQUM7O0VBRVY7RUFDQWhCLEdBQUcsQ0FBQ1EsU0FBUyxDQUFDLENBQUM7RUFDZlIsR0FBRyxDQUFDUyxNQUFNLENBQUNSLE1BQU0sR0FBR0gsVUFBVSxHQUFHLENBQUMsRUFBRWMsRUFBRSxDQUFDO0VBQ3ZDWixHQUFHLENBQUNVLE1BQU0sQ0FBQ1QsTUFBTSxHQUFHLENBQUMsRUFBRVcsRUFBRSxHQUFHZCxVQUFVLENBQUM7RUFDdkNFLEdBQUcsQ0FBQ1UsTUFBTSxDQUFDVCxNQUFNLEdBQUcsQ0FBQyxFQUFFVyxFQUFFLEdBQUdkLFVBQVUsQ0FBQztFQUN2Q0UsR0FBRyxDQUFDaUIsU0FBUyxDQUFDLENBQUM7RUFDZmpCLEdBQUcsQ0FBQ2dCLElBQUksQ0FBQyxDQUFDO0VBRVZoQixHQUFHLENBQUNrQixPQUFPLENBQUMsQ0FBQztBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsbUJBQW1CQSxDQUNqQ0MsVUFBNkIsRUFDN0JDLFdBQThCLEVBQzlCQyxZQUErQixFQUMvQkMsVUFBa0IsRUFHWjtFQUFBLElBRk5DLFdBQW9CLEdBQUFuQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxJQUFJO0VBQUEsSUFDM0JvQyxlQUF3QixHQUFBcEMsU0FBQSxDQUFBQyxNQUFBLE9BQUFELFNBQUEsTUFBQUUsU0FBQTtFQUV4QixJQUFNUyxHQUFHLEdBQUdzQixZQUFZLENBQUNJLFVBQVUsQ0FBQyxJQUFJLENBQUM7RUFDekMsSUFBSSxDQUFDMUIsR0FBRyxFQUFFO0VBRVYsSUFBTTJCLENBQUMsR0FBR0wsWUFBWSxDQUFDTSxLQUFLO0VBQzVCLElBQU1DLENBQUMsR0FBR1AsWUFBWSxDQUFDcEIsTUFBTTtFQUM3QixJQUFNRCxNQUFNLEdBQUdSLElBQUksQ0FBQ3FDLEtBQUssQ0FBRUgsQ0FBQyxHQUFHSixVQUFVLEdBQUksR0FBRyxDQUFDO0VBRWpEdkIsR0FBRyxDQUFDK0IsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUVKLENBQUMsRUFBRUUsQ0FBQyxDQUFDOztFQUV6QjtFQUNBO0VBQ0E7RUFDQTtFQUNBLElBQUlKLGVBQWUsRUFBRTtJQUNuQnpCLEdBQUcsQ0FBQ2UsU0FBUyxHQUFHVSxlQUFlO0lBQy9CekIsR0FBRyxDQUFDZ0MsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUVMLENBQUMsRUFBRUUsQ0FBQyxDQUFDO0VBQzFCOztFQUVBO0VBQ0E3QixHQUFHLENBQUNpQyxTQUFTLENBQUNaLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFTSxDQUFDLEVBQUVFLENBQUMsQ0FBQzs7RUFFdEM7RUFDQTdCLEdBQUcsQ0FBQ0csSUFBSSxDQUFDLENBQUM7RUFDVkgsR0FBRyxDQUFDUSxTQUFTLENBQUMsQ0FBQztFQUNmUixHQUFHLENBQUNrQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRWpDLE1BQU0sRUFBRTRCLENBQUMsQ0FBQztFQUN6QjdCLEdBQUcsQ0FBQ21DLElBQUksQ0FBQyxDQUFDO0VBQ1ZuQyxHQUFHLENBQUNpQyxTQUFTLENBQUNiLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFTyxDQUFDLEVBQUVFLENBQUMsQ0FBQztFQUNyQzdCLEdBQUcsQ0FBQ2tCLE9BQU8sQ0FBQyxDQUFDOztFQUViO0VBQ0EsSUFBSU0sV0FBVyxFQUFFO0lBQ2Z6QixnQkFBZ0IsQ0FBQ0MsR0FBRyxFQUFFQyxNQUFNLEVBQUU0QixDQUFDLENBQUM7RUFDbEM7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
126
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcG9wbW90aW9uIiwicmVxdWlyZSIsIl9kZWNrZ2xMYXllcnMiLCJsaW5lYXIiLCJwIiwiRUFTSU5HX01BUCIsImVhc2VJbk91dCIsImdldFN3aXBlUGVyY2VudGFnZUF0VGltZSIsInRpbWVNcyIsImR1cmF0aW9uTXMiLCJzdGFydFBjdCIsImVuZFBjdCIsImVhc2luZyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInByb2dyZXNzIiwiTWF0aCIsIm1heCIsIm1pbiIsImVhc2VkUHJvZ3Jlc3MiLCJIQU5ETEVfUkFESVVTIiwiQVJST1dfU0laRSIsImRyYXdTd2lwZURpdmlkZXIiLCJjdHgiLCJzcGxpdFgiLCJoZWlnaHQiLCJzYXZlIiwic3Ryb2tlU3R5bGUiLCJsaW5lV2lkdGgiLCJzaGFkb3dDb2xvciIsInNoYWRvd0JsdXIiLCJiZWdpblBhdGgiLCJtb3ZlVG8iLCJsaW5lVG8iLCJzdHJva2UiLCJjeSIsImFyYyIsIlBJIiwiZmlsbFN0eWxlIiwiZmlsbCIsImNsb3NlUGF0aCIsInJlc3RvcmUiLCJjb21wb3NpdGVTd2lwZUZyYW1lIiwibGVmdENhbnZhcyIsInJpZ2h0Q2FudmFzIiwib3V0cHV0Q2FudmFzIiwicGVyY2VudGFnZSIsInNob3dEaXZpZGVyIiwiYmFja2dyb3VuZENvbG9yIiwic2hvd1N0YXJzIiwiZ2V0Q29udGV4dCIsInciLCJ3aWR0aCIsImgiLCJyb3VuZCIsImNsZWFyUmVjdCIsImZpbGxSZWN0IiwiZHJhd1N0YXJzQmFja2dyb3VuZCIsImRyYXdJbWFnZSIsInJlY3QiLCJjbGlwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGFscy9zd2lwZS1jb21wb3NpdGUtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtlYXNlSW5PdXR9IGZyb20gJ3BvcG1vdGlvbic7XG5pbXBvcnQge2RyYXdTdGFyc0JhY2tncm91bmR9IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5cbmV4cG9ydCB0eXBlIFN3aXBlRWFzaW5nID0gJ2xpbmVhcicgfCAnZWFzZS1pbi1vdXQnO1xuXG5jb25zdCBsaW5lYXIgPSAocDogbnVtYmVyKTogbnVtYmVyID0+IHA7XG5jb25zdCBFQVNJTkdfTUFQOiBSZWNvcmQ8U3dpcGVFYXNpbmcsIChwOiBudW1iZXIpID0+IG51bWJlcj4gPSB7XG4gIGxpbmVhcixcbiAgJ2Vhc2UtaW4tb3V0JzogZWFzZUluT3V0XG59O1xuXG4vKipcbiAqIENvbXB1dGUgdGhlIHN3aXBlIHBlcmNlbnRhZ2UgYXQgYSBnaXZlbiB0aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3dpcGVQZXJjZW50YWdlQXRUaW1lKFxuICB0aW1lTXM6IG51bWJlcixcbiAgZHVyYXRpb25NczogbnVtYmVyLFxuICBzdGFydFBjdDogbnVtYmVyLFxuICBlbmRQY3Q6IG51bWJlcixcbiAgZWFzaW5nOiBTd2lwZUVhc2luZyA9ICdlYXNlLWluLW91dCdcbik6IG51bWJlciB7XG4gIGNvbnN0IHByb2dyZXNzID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgdGltZU1zIC8gZHVyYXRpb25NcykpO1xuICBjb25zdCBlYXNlZFByb2dyZXNzID0gRUFTSU5HX01BUFtlYXNpbmddKHByb2dyZXNzKTtcbiAgcmV0dXJuIHN0YXJ0UGN0ICsgKGVuZFBjdCAtIHN0YXJ0UGN0KSAqIGVhc2VkUHJvZ3Jlc3M7XG59XG5cbmNvbnN0IEhBTkRMRV9SQURJVVMgPSAxNDtcbmNvbnN0IEFSUk9XX1NJWkUgPSA2O1xuXG4vKipcbiAqIERyYXcgYSBzd2lwZSBkaXZpZGVyIChsaW5lICsgY2lyY3VsYXIgaGFuZGxlIHdpdGggYXJyb3dzKSBvbnRvIGEgMkQgY2FudmFzIGNvbnRleHQuXG4gKi9cbmZ1bmN0aW9uIGRyYXdTd2lwZURpdmlkZXIoXG4gIGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELFxuICBzcGxpdFg6IG51bWJlcixcbiAgaGVpZ2h0OiBudW1iZXJcbik6IHZvaWQge1xuICBjdHguc2F2ZSgpO1xuXG4gIC8vIERpdmlkZXIgbGluZVxuICBjdHguc3Ryb2tlU3R5bGUgPSAnI0ZGRkZGRic7XG4gIGN0eC5saW5lV2lkdGggPSAyO1xuICBjdHguc2hhZG93Q29sb3IgPSAncmdiYSgwLCAwLCAwLCAwLjUpJztcbiAgY3R4LnNoYWRvd0JsdXIgPSA0O1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5tb3ZlVG8oc3BsaXRYLCAwKTtcbiAgY3R4LmxpbmVUbyhzcGxpdFgsIGhlaWdodCk7XG4gIGN0eC5zdHJva2UoKTtcblxuICAvLyBIYW5kbGUgY2lyY2xlXG4gIGNvbnN0IGN5ID0gaGVpZ2h0IC8gMjtcbiAgY3R4LnNoYWRvd0JsdXIgPSA2O1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5hcmMoc3BsaXRYLCBjeSwgSEFORExFX1JBRElVUywgMCwgTWF0aC5QSSAqIDIpO1xuICBjdHguZmlsbFN0eWxlID0gJyMyOTMyM0MnO1xuICBjdHguZmlsbCgpO1xuICBjdHguc3Ryb2tlU3R5bGUgPSAnI0ZGRkZGRic7XG4gIGN0eC5saW5lV2lkdGggPSAyO1xuICBjdHguc3Ryb2tlKCk7XG4gIGN0eC5zaGFkb3dCbHVyID0gMDtcblxuICAvLyBMZWZ0IGFycm93XG4gIGN0eC5maWxsU3R5bGUgPSAnI0ZGRkZGRic7XG4gIGN0eC5iZWdpblBhdGgoKTtcbiAgY3R4Lm1vdmVUbyhzcGxpdFggLSBBUlJPV19TSVpFIC0gMywgY3kpO1xuICBjdHgubGluZVRvKHNwbGl0WCAtIDMsIGN5IC0gQVJST1dfU0laRSk7XG4gIGN0eC5saW5lVG8oc3BsaXRYIC0gMywgY3kgKyBBUlJPV19TSVpFKTtcbiAgY3R4LmNsb3NlUGF0aCgpO1xuICBjdHguZmlsbCgpO1xuXG4gIC8vIFJpZ2h0IGFycm93XG4gIGN0eC5iZWdpblBhdGgoKTtcbiAgY3R4Lm1vdmVUbyhzcGxpdFggKyBBUlJPV19TSVpFICsgMywgY3kpO1xuICBjdHgubGluZVRvKHNwbGl0WCArIDMsIGN5IC0gQVJST1dfU0laRSk7XG4gIGN0eC5saW5lVG8oc3BsaXRYICsgMywgY3kgKyBBUlJPV19TSVpFKTtcbiAgY3R4LmNsb3NlUGF0aCgpO1xuICBjdHguZmlsbCgpO1xuXG4gIGN0eC5yZXN0b3JlKCk7XG59XG5cbi8qKlxuICogQ29tcG9zaXRlIHR3byBjYW52YXNlcyAobGVmdC9yaWdodCBtYXAgdmlld3MpIHdpdGggYSBzd2lwZSBkaXZpZGVyXG4gKiBpbnRvIGEgc2luZ2xlIG91dHB1dCBjYW52YXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NpdGVTd2lwZUZyYW1lKFxuICBsZWZ0Q2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCxcbiAgcmlnaHRDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50LFxuICBvdXRwdXRDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50LFxuICBwZXJjZW50YWdlOiBudW1iZXIsXG4gIHNob3dEaXZpZGVyOiBib29sZWFuID0gdHJ1ZSxcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nLFxuICBzaG93U3RhcnM/OiBib29sZWFuXG4pOiB2b2lkIHtcbiAgY29uc3QgY3R4ID0gb3V0cHV0Q2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gIGlmICghY3R4KSByZXR1cm47XG5cbiAgY29uc3QgdyA9IG91dHB1dENhbnZhcy53aWR0aDtcbiAgY29uc3QgaCA9IG91dHB1dENhbnZhcy5oZWlnaHQ7XG4gIGNvbnN0IHNwbGl0WCA9IE1hdGgucm91bmQoKHcgKiBwZXJjZW50YWdlKSAvIDEwMCk7XG5cbiAgY3R4LmNsZWFyUmVjdCgwLCAwLCB3LCBoKTtcblxuICAvLyBJbiBnbG9iZSBtb2RlIHRoZSBkZWNrIGNhbnZhc2VzIGFyZSB0cmFuc3BhcmVudCB3aGVyZSB0aGUgZ2xvYmUgaXNuJ3RcbiAgLy8gZHJhd24gKGNsZWFyQ29sb3IgaXMgZGlzYWJsZWQgdG8ga2VlcCBwaWNraW5nIGludGFjdCksIHNvIHBhaW50IHRoZVxuICAvLyBjb25maWd1cmVkIGJhY2tncm91bmQgZmlyc3QuIE5vbi1nbG9iZSBzd2lwZSBwYXNzZXMgbm8gY29sb3IgYW5kIGtlZXBzIHRoZVxuICAvLyBwcmV2aW91cyB0cmFuc3BhcmVudC1jbGVhciBiZWhhdmlvciAodGhlIGJhc2UgbWFwIGlzIGFscmVhZHkgb3BhcXVlKS5cbiAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgIGN0eC5maWxsU3R5bGUgPSBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIHcsIGgpO1xuICB9XG5cbiAgLy8gU3RhcnMgYXJlIGEgQ1NTIGJhY2tncm91bmQgb24gdGhlIGxpdmUgZ2xvYmUgbWFwLCBzbyB0aGV5IG11c3QgYmUgdGlsZWRcbiAgLy8gb250byB0aGUgY29tcG9zaXRlIGNhbnZhcyBvciB0aGV5IHdvbid0IGFwcGVhciBpbiBwcmV2aWV3IG9yIGV4cG9ydC5cbiAgaWYgKHNob3dTdGFycykge1xuICAgIGRyYXdTdGFyc0JhY2tncm91bmQoY3R4LCB3LCBoKTtcbiAgfVxuXG4gIC8vIERyYXcgcmlnaHQgKGJhY2tncm91bmQpIGNhbnZhcyBmdWxseVxuICBjdHguZHJhd0ltYWdlKHJpZ2h0Q2FudmFzLCAwLCAwLCB3LCBoKTtcblxuICAvLyBEcmF3IGxlZnQgKGZvcmVncm91bmQpIGNhbnZhcyBjbGlwcGVkIHRvIDAuLnNwbGl0WFxuICBjdHguc2F2ZSgpO1xuICBjdHguYmVnaW5QYXRoKCk7XG4gIGN0eC5yZWN0KDAsIDAsIHNwbGl0WCwgaCk7XG4gIGN0eC5jbGlwKCk7XG4gIGN0eC5kcmF3SW1hZ2UobGVmdENhbnZhcywgMCwgMCwgdywgaCk7XG4gIGN0eC5yZXN0b3JlKCk7XG5cbiAgLy8gRHJhdyB0aGUgZGl2aWRlclxuICBpZiAoc2hvd0RpdmlkZXIpIHtcbiAgICBkcmF3U3dpcGVEaXZpZGVyKGN0eCwgc3BsaXRYLCBoKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7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
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ var _deckglLayers = require("@kepler.gl/deckgl-layers");
4
+ var _swipeCompositeUtils = require("./swipe-composite-utils");
5
+ // SPDX-License-Identifier: MIT
6
+ // Copyright contributors to the kepler.gl project
7
+
8
+ jest.mock('@kepler.gl/deckgl-layers', function () {
9
+ return {
10
+ drawStarsBackground: jest.fn()
11
+ };
12
+ });
13
+ function mockCanvas(width, height, ctx) {
14
+ return {
15
+ width: width,
16
+ height: height,
17
+ getContext: function getContext() {
18
+ return ctx;
19
+ }
20
+ };
21
+ }
22
+ function mockCompositeCtx() {
23
+ return {
24
+ clearRect: jest.fn(),
25
+ fillRect: jest.fn(),
26
+ drawImage: jest.fn(),
27
+ save: jest.fn(),
28
+ restore: jest.fn(),
29
+ beginPath: jest.fn(),
30
+ rect: jest.fn(),
31
+ clip: jest.fn(),
32
+ fillStyle: '',
33
+ strokeStyle: '',
34
+ lineWidth: 0,
35
+ shadowColor: '',
36
+ shadowBlur: 0,
37
+ moveTo: jest.fn(),
38
+ lineTo: jest.fn(),
39
+ stroke: jest.fn(),
40
+ arc: jest.fn(),
41
+ fill: jest.fn(),
42
+ closePath: jest.fn()
43
+ };
44
+ }
45
+ describe('compositeSwipeFrame', function () {
46
+ afterEach(function () {
47
+ jest.clearAllMocks();
48
+ });
49
+ test('tiles stars after the globe background color when showStars is true', function () {
50
+ var ctx = mockCompositeCtx();
51
+ var left = mockCanvas(10, 10, ctx);
52
+ var right = mockCanvas(10, 10, ctx);
53
+ var output = mockCanvas(100, 50, ctx);
54
+ (0, _swipeCompositeUtils.compositeSwipeFrame)(left, right, output, 50, false, 'rgb(1, 2, 3)', true);
55
+ expect(ctx.fillStyle).toBe('rgb(1, 2, 3)');
56
+ expect(ctx.fillRect).toHaveBeenCalledWith(0, 0, 100, 50);
57
+ expect(_deckglLayers.drawStarsBackground).toHaveBeenCalledWith(ctx, 100, 50);
58
+ expect(ctx.fillRect.mock.invocationCallOrder[0]).toBeLessThan(_deckglLayers.drawStarsBackground.mock.invocationCallOrder[0]);
59
+ });
60
+ test('does not draw stars when showStars is omitted', function () {
61
+ var ctx = mockCompositeCtx();
62
+ var left = mockCanvas(10, 10, ctx);
63
+ var right = mockCanvas(10, 10, ctx);
64
+ var output = mockCanvas(100, 50, ctx);
65
+ (0, _swipeCompositeUtils.compositeSwipeFrame)(left, right, output, 50, false, 'rgb(1, 2, 3)');
66
+ expect(_deckglLayers.drawStarsBackground).not.toHaveBeenCalled();
67
+ });
68
+ });
69
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVja2dsTGF5ZXJzIiwicmVxdWlyZSIsIl9zd2lwZUNvbXBvc2l0ZVV0aWxzIiwiamVzdCIsIm1vY2siLCJkcmF3U3RhcnNCYWNrZ3JvdW5kIiwiZm4iLCJtb2NrQ2FudmFzIiwid2lkdGgiLCJoZWlnaHQiLCJjdHgiLCJnZXRDb250ZXh0IiwibW9ja0NvbXBvc2l0ZUN0eCIsImNsZWFyUmVjdCIsImZpbGxSZWN0IiwiZHJhd0ltYWdlIiwic2F2ZSIsInJlc3RvcmUiLCJiZWdpblBhdGgiLCJyZWN0IiwiY2xpcCIsImZpbGxTdHlsZSIsInN0cm9rZVN0eWxlIiwibGluZVdpZHRoIiwic2hhZG93Q29sb3IiLCJzaGFkb3dCbHVyIiwibW92ZVRvIiwibGluZVRvIiwic3Ryb2tlIiwiYXJjIiwiZmlsbCIsImNsb3NlUGF0aCIsImRlc2NyaWJlIiwiYWZ0ZXJFYWNoIiwiY2xlYXJBbGxNb2NrcyIsInRlc3QiLCJsZWZ0IiwicmlnaHQiLCJvdXRwdXQiLCJjb21wb3NpdGVTd2lwZUZyYW1lIiwiZXhwZWN0IiwidG9CZSIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiaW52b2NhdGlvbkNhbGxPcmRlciIsInRvQmVMZXNzVGhhbiIsIm5vdCIsInRvSGF2ZUJlZW5DYWxsZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kYWxzL3N3aXBlLWNvbXBvc2l0ZS11dGlscy5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmplc3QubW9jaygnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJywgKCkgPT4gKHtcbiAgZHJhd1N0YXJzQmFja2dyb3VuZDogamVzdC5mbigpXG59KSk7XG5cbmltcG9ydCB7ZHJhd1N0YXJzQmFja2dyb3VuZH0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcbmltcG9ydCB7Y29tcG9zaXRlU3dpcGVGcmFtZX0gZnJvbSAnLi9zd2lwZS1jb21wb3NpdGUtdXRpbHMnO1xuXG5mdW5jdGlvbiBtb2NrQ2FudmFzKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBjdHg6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGwpIHtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgZ2V0Q29udGV4dDogKCkgPT4gY3R4XG4gIH0gYXMgdW5rbm93biBhcyBIVE1MQ2FudmFzRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gbW9ja0NvbXBvc2l0ZUN0eCgpIHtcbiAgcmV0dXJuIHtcbiAgICBjbGVhclJlY3Q6IGplc3QuZm4oKSxcbiAgICBmaWxsUmVjdDogamVzdC5mbigpLFxuICAgIGRyYXdJbWFnZTogamVzdC5mbigpLFxuICAgIHNhdmU6IGplc3QuZm4oKSxcbiAgICByZXN0b3JlOiBqZXN0LmZuKCksXG4gICAgYmVnaW5QYXRoOiBqZXN0LmZuKCksXG4gICAgcmVjdDogamVzdC5mbigpLFxuICAgIGNsaXA6IGplc3QuZm4oKSxcbiAgICBmaWxsU3R5bGU6ICcnLFxuICAgIHN0cm9rZVN0eWxlOiAnJyxcbiAgICBsaW5lV2lkdGg6IDAsXG4gICAgc2hhZG93Q29sb3I6ICcnLFxuICAgIHNoYWRvd0JsdXI6IDAsXG4gICAgbW92ZVRvOiBqZXN0LmZuKCksXG4gICAgbGluZVRvOiBqZXN0LmZuKCksXG4gICAgc3Ryb2tlOiBqZXN0LmZuKCksXG4gICAgYXJjOiBqZXN0LmZuKCksXG4gICAgZmlsbDogamVzdC5mbigpLFxuICAgIGNsb3NlUGF0aDogamVzdC5mbigpXG4gIH07XG59XG5cbmRlc2NyaWJlKCdjb21wb3NpdGVTd2lwZUZyYW1lJywgKCkgPT4ge1xuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICB9KTtcblxuICB0ZXN0KCd0aWxlcyBzdGFycyBhZnRlciB0aGUgZ2xvYmUgYmFja2dyb3VuZCBjb2xvciB3aGVuIHNob3dTdGFycyBpcyB0cnVlJywgKCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IG1vY2tDb21wb3NpdGVDdHgoKTtcbiAgICBjb25zdCBsZWZ0ID0gbW9ja0NhbnZhcygxMCwgMTAsIGN0eCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG4gICAgY29uc3QgcmlnaHQgPSBtb2NrQ2FudmFzKDEwLCAxMCwgY3R4IGFzIHVua25vd24gYXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKTtcbiAgICBjb25zdCBvdXRwdXQgPSBtb2NrQ2FudmFzKDEwMCwgNTAsIGN0eCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG5cbiAgICBjb21wb3NpdGVTd2lwZUZyYW1lKGxlZnQsIHJpZ2h0LCBvdXRwdXQsIDUwLCBmYWxzZSwgJ3JnYigxLCAyLCAzKScsIHRydWUpO1xuXG4gICAgZXhwZWN0KGN0eC5maWxsU3R5bGUpLnRvQmUoJ3JnYigxLCAyLCAzKScpO1xuICAgIGV4cGVjdChjdHguZmlsbFJlY3QpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKDAsIDAsIDEwMCwgNTApO1xuICAgIGV4cGVjdChkcmF3U3RhcnNCYWNrZ3JvdW5kKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChjdHgsIDEwMCwgNTApO1xuICAgIGV4cGVjdChjdHguZmlsbFJlY3QubW9jay5pbnZvY2F0aW9uQ2FsbE9yZGVyWzBdKS50b0JlTGVzc1RoYW4oXG4gICAgICAoZHJhd1N0YXJzQmFja2dyb3VuZCBhcyBqZXN0Lk1vY2spLm1vY2suaW52b2NhdGlvbkNhbGxPcmRlclswXVxuICAgICk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RvZXMgbm90IGRyYXcgc3RhcnMgd2hlbiBzaG93U3RhcnMgaXMgb21pdHRlZCcsICgpID0+IHtcbiAgICBjb25zdCBjdHggPSBtb2NrQ29tcG9zaXRlQ3R4KCk7XG4gICAgY29uc3QgbGVmdCA9IG1vY2tDYW52YXMoMTAsIDEwLCBjdHggYXMgdW5rbm93biBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuICAgIGNvbnN0IHJpZ2h0ID0gbW9ja0NhbnZhcygxMCwgMTAsIGN0eCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG4gICAgY29uc3Qgb3V0cHV0ID0gbW9ja0NhbnZhcygxMDAsIDUwLCBjdHggYXMgdW5rbm93biBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpO1xuXG4gICAgY29tcG9zaXRlU3dpcGVGcmFtZShsZWZ0LCByaWdodCwgb3V0cHV0LCA1MCwgZmFsc2UsICdyZ2IoMSwgMiwgMyknKTtcblxuICAgIGV4cGVjdChkcmF3U3RhcnNCYWNrZ3JvdW5kKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQU9BLElBQUFBLGFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLG9CQUFBLEdBQUFELE9BQUE7QUFSQTtBQUNBOztBQUVBRSxJQUFJLENBQUNDLElBQUksQ0FBQywwQkFBMEIsRUFBRTtFQUFBLE9BQU87SUFDM0NDLG1CQUFtQixFQUFFRixJQUFJLENBQUNHLEVBQUUsQ0FBQztFQUMvQixDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBS0gsU0FBU0MsVUFBVUEsQ0FBQ0MsS0FBYSxFQUFFQyxNQUFjLEVBQUVDLEdBQW9DLEVBQUU7RUFDdkYsT0FBTztJQUNMRixLQUFLLEVBQUxBLEtBQUs7SUFDTEMsTUFBTSxFQUFOQSxNQUFNO0lBQ05FLFVBQVUsRUFBRSxTQUFaQSxVQUFVQSxDQUFBO01BQUEsT0FBUUQsR0FBRztJQUFBO0VBQ3ZCLENBQUM7QUFDSDtBQUVBLFNBQVNFLGdCQUFnQkEsQ0FBQSxFQUFHO0VBQzFCLE9BQU87SUFDTEMsU0FBUyxFQUFFVixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCUSxRQUFRLEVBQUVYLElBQUksQ0FBQ0csRUFBRSxDQUFDLENBQUM7SUFDbkJTLFNBQVMsRUFBRVosSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztJQUNwQlUsSUFBSSxFQUFFYixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ2ZXLE9BQU8sRUFBRWQsSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztJQUNsQlksU0FBUyxFQUFFZixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCYSxJQUFJLEVBQUVoQixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ2ZjLElBQUksRUFBRWpCLElBQUksQ0FBQ0csRUFBRSxDQUFDLENBQUM7SUFDZmUsU0FBUyxFQUFFLEVBQUU7SUFDYkMsV0FBVyxFQUFFLEVBQUU7SUFDZkMsU0FBUyxFQUFFLENBQUM7SUFDWkMsV0FBVyxFQUFFLEVBQUU7SUFDZkMsVUFBVSxFQUFFLENBQUM7SUFDYkMsTUFBTSxFQUFFdkIsSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztJQUNqQnFCLE1BQU0sRUFBRXhCLElBQUksQ0FBQ0csRUFBRSxDQUFDLENBQUM7SUFDakJzQixNQUFNLEVBQUV6QixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCdUIsR0FBRyxFQUFFMUIsSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztJQUNkd0IsSUFBSSxFQUFFM0IsSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztJQUNmeUIsU0FBUyxFQUFFNUIsSUFBSSxDQUFDRyxFQUFFLENBQUM7RUFDckIsQ0FBQztBQUNIO0FBRUEwQixRQUFRLENBQUMscUJBQXFCLEVBQUUsWUFBTTtFQUNwQ0MsU0FBUyxDQUFDLFlBQU07SUFDZDlCLElBQUksQ0FBQytCLGFBQWEsQ0FBQyxDQUFDO0VBQ3RCLENBQUMsQ0FBQztFQUVGQyxJQUFJLENBQUMscUVBQXFFLEVBQUUsWUFBTTtJQUNoRixJQUFNekIsR0FBRyxHQUFHRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlCLElBQU13QixJQUFJLEdBQUc3QixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRUcsR0FBMEMsQ0FBQztJQUMzRSxJQUFNMkIsS0FBSyxHQUFHOUIsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUVHLEdBQTBDLENBQUM7SUFDNUUsSUFBTTRCLE1BQU0sR0FBRy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFRyxHQUEwQyxDQUFDO0lBRTlFLElBQUE2Qix3Q0FBbUIsRUFBQ0gsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUM7SUFFekVFLE1BQU0sQ0FBQzlCLEdBQUcsQ0FBQ1csU0FBUyxDQUFDLENBQUNvQixJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzFDRCxNQUFNLENBQUM5QixHQUFHLENBQUNJLFFBQVEsQ0FBQyxDQUFDNEIsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3hERixNQUFNLENBQUNuQyxpQ0FBbUIsQ0FBQyxDQUFDcUMsb0JBQW9CLENBQUNoQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUM5RDhCLE1BQU0sQ0FBQzlCLEdBQUcsQ0FBQ0ksUUFBUSxDQUFDVixJQUFJLENBQUN1QyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxZQUFZLENBQzFEdkMsaUNBQW1CLENBQWVELElBQUksQ0FBQ3VDLG1CQUFtQixDQUFDLENBQUMsQ0FDL0QsQ0FBQztFQUNILENBQUMsQ0FBQztFQUVGUixJQUFJLENBQUMsK0NBQStDLEVBQUUsWUFBTTtJQUMxRCxJQUFNekIsR0FBRyxHQUFHRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlCLElBQU13QixJQUFJLEdBQUc3QixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRUcsR0FBMEMsQ0FBQztJQUMzRSxJQUFNMkIsS0FBSyxHQUFHOUIsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUVHLEdBQTBDLENBQUM7SUFDNUUsSUFBTTRCLE1BQU0sR0FBRy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFRyxHQUEwQyxDQUFDO0lBRTlFLElBQUE2Qix3Q0FBbUIsRUFBQ0gsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQztJQUVuRUUsTUFBTSxDQUFDbkMsaUNBQW1CLENBQUMsQ0FBQ3dDLEdBQUcsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQztFQUNwRCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -18,7 +18,7 @@ var _react = _interopRequireWildcard(require("react"));
18
18
  var _react2 = _interopRequireDefault(require("@deck.gl/react"));
19
19
  var _maplibre = _interopRequireWildcard(require("react-map-gl/maplibre"));
20
20
  var _mapbox = require("@deck.gl/mapbox");
21
- var _lodash = _interopRequireDefault(require("lodash.isequal"));
21
+ var _isEqual = _interopRequireDefault(require("es-toolkit/compat/isEqual"));
22
22
  var _styledComponents = _interopRequireDefault(require("styled-components"));
23
23
  var _react3 = require("@hubble.gl/react");
24
24
  var _swipeCompositeUtils = require("./swipe-composite-utils");
@@ -150,7 +150,7 @@ var SwipeExportVideoPreview = exports.SwipeExportVideoPreview = /*#__PURE__*/fun
150
150
  return (0, _createClass2["default"])(SwipeExportVideoPreview, [{
151
151
  key: "componentDidUpdate",
152
152
  value: function componentDidUpdate(prevProps) {
153
- if (!(0, _lodash["default"])(prevProps.resolution, this.props.resolution)) {
153
+ if (!(0, _isEqual["default"])(prevProps.resolution, this.props.resolution)) {
154
154
  this._resizeVideo();
155
155
  }
156
156
  if (prevProps.currentTimeMs !== this.props.currentTimeMs || prevProps.swipeStartPct !== this.props.swipeStartPct || prevProps.swipeEndPct !== this.props.swipeEndPct || prevProps.swipeEasing !== this.props.swipeEasing) {
@@ -222,12 +222,15 @@ var SwipeExportVideoPreview = exports.SwipeExportVideoPreview = /*#__PURE__*/fun
222
222
  }, {
223
223
  key: "_compositeFrame",
224
224
  value: function _compositeFrame() {
225
+ var _this$props$mapData, _globe$config;
225
226
  var leftCanvas = this._getLeftCanvas();
226
227
  var rightCanvas = this._getRightCanvas();
227
228
  var outputCanvas = this.compositeCanvasRef.current;
228
229
  if (!leftCanvas || !rightCanvas || !outputCanvas) return;
229
230
  var percentage = this._getCurrentSwipePercentage();
230
- (0, _swipeCompositeUtils.compositeSwipeFrame)(leftCanvas, rightCanvas, outputCanvas, percentage, true, this.props.backgroundColor);
231
+ var globe = (_this$props$mapData = this.props.mapData) === null || _this$props$mapData === void 0 || (_this$props$mapData = _this$props$mapData.mapState) === null || _this$props$mapData === void 0 ? void 0 : _this$props$mapData.globe;
232
+ var showStars = 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));
233
+ (0, _swipeCompositeUtils.compositeSwipeFrame)(leftCanvas, rightCanvas, outputCanvas, percentage, true, this.props.backgroundColor, showStars);
231
234
  }
232
235
  }, {
233
236
  key: "_areLayersLoaded",
@@ -268,7 +271,8 @@ var SwipeExportVideoPreview = exports.SwipeExportVideoPreview = /*#__PURE__*/fun
268
271
  return (0, _hubbleUtils.getGlobeExportLayers)(mapData, {
269
272
  mapIndex: mapIndex,
270
273
  mapboxApiAccessToken: mapProps === null || mapProps === void 0 ? void 0 : mapProps.mapboxApiAccessToken,
271
- mapboxApiUrl: mapProps === null || mapProps === void 0 ? void 0 : mapProps.mapboxApiUrl
274
+ mapboxApiUrl: mapProps === null || mapProps === void 0 ? void 0 : mapProps.mapboxApiUrl,
275
+ viewState: viewState
272
276
  });
273
277
  }
274
278
  if (deckProps && deckProps.layers) {
@@ -388,4 +392,4 @@ var SwipeExportVideoPreview = exports.SwipeExportVideoPreview = /*#__PURE__*/fun
388
392
  }
389
393
  }]);
390
394
  }(_react.Component);
391
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3QyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9tYXBsaWJyZSIsIl9tYXBib3giLCJfbG9kYXNoIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfcmVhY3QzIiwiX3N3aXBlQ29tcG9zaXRlVXRpbHMiLCJfaHViYmxlVXRpbHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsInNldFJlZiIsInJlZiIsInZhbHVlIiwiY3VycmVudCIsIkRlY2tHTE92ZXJsYXkiLCJmb3J3YXJkUmVmIiwicHJvcHMiLCJvdmVybGF5IiwidXNlQ29udHJvbCIsIk1hcGJveE92ZXJsYXkiLCJpbnRlcmxlYXZlZCIsInNldFByb3BzIiwiX2RlY2siLCJkaXNwbGF5TmFtZSIsIlByZXZpZXdDb250YWluZXIiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIiR3aWR0aCIsIiRoZWlnaHQiLCJWaXNpYmxlQ2FudmFzIiwiY2FudmFzIiwiTWFwTGF5ZXIiLCJTd2lwZUV4cG9ydFZpZGVvUHJldmlldyIsImV4cG9ydHMiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiUmVhY3QiLCJjcmVhdGVSZWYiLCJwcm9jZWVkVG9OZXh0RnJhbWUiLCJsZWZ0TG9hZGVkIiwiX2FyZUxheWVyc0xvYWRlZCIsInJpZ2h0TG9hZGVkIiwibGVmdFRpbGVzUmVhZHkiLCJkaXNhYmxlQmFzZU1hcCIsImxlZnRNYXBSZWYiLCJnZXRNYXAiLCJhcmVUaWxlc0xvYWRlZCIsInJpZ2h0VGlsZXNSZWFkeSIsInJpZ2h0TWFwUmVmIiwiX2NvbXBvc2l0ZUZyYW1lIiwiX3RoaXMkbGVmdE1hcFJlZiRjdXJyIiwibWFwIiwib24iLCJzdGF0ZSIsImxlZnRSZWFkeSIsInNldFN0YXRlIiwiX3RyeUNvbXBvc2l0ZSIsIl90aGlzJHJpZ2h0TWFwUmVmJGN1ciIsInJpZ2h0UmVhZHkiLCJzaWRlIiwicmVhZHlLZXkiLCJsZWZ0RGVja1JlZiIsInJpZ2h0RGVja1JlZiIsIl9yZXNpemVWaWRlbyIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwiaXNFcXVhbCIsInJlc29sdXRpb24iLCJjdXJyZW50VGltZU1zIiwic3dpcGVTdGFydFBjdCIsInN3aXBlRW5kUGN0Iiwic3dpcGVFYXNpbmciLCJfdGhpcyRwcm9wcyIsImV4cG9ydFZpZGVvV2lkdGgiLCJfc2V0RGV2aWNlUGl4ZWxSYXRpbyIsImRldmljZVBpeGVsUmF0aW8iLCJ3aW5kb3ciLCJfZ2V0Q29udGFpbmVyIiwiX3RoaXMkcHJvcHMyIiwiYXNwZWN0UmF0aW8iLCJoZWlnaHQiLCJ3aWR0aCIsIl9nZXRDdXJyZW50U3dpcGVQZXJjZW50YWdlIiwiX3RoaXMkcHJvcHMzIiwiZHVyYXRpb25NcyIsImdldFN3aXBlUGVyY2VudGFnZUF0VGltZSIsIl9nZXRMZWZ0Q2FudmFzIiwiZ2V0Q2FudmFzIiwiX2dldENhbnZhcyIsIl9yZWYiLCJfZ2V0UmlnaHRDYW52YXMiLCJfZ2V0Q2FudmFzMiIsIl9yZWYyIiwibGVmdENhbnZhcyIsInJpZ2h0Q2FudmFzIiwib3V0cHV0Q2FudmFzIiwiY29tcG9zaXRlQ2FudmFzUmVmIiwicGVyY2VudGFnZSIsImNvbXBvc2l0ZVN3aXBlRnJhbWUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJkZWNrUmVmIiwibGF5ZXJzIiwiZXZlcnkiLCJsYXllciIsImlzTG9hZGVkIiwiZ2V0Q29tcG9zaXRlQ2FudmFzIiwiX2NyZWF0ZUxheWVycyIsIm1hcEluZGV4IiwiYmVmb3JlSWQiLCJfbWFwRGF0YSRtYXBTdGF0ZSIsIl90aGlzJHByb3BzNCIsImRlY2tQcm9wcyIsIm1hcERhdGEiLCJ2aWV3U3RhdGUiLCJtYXBQcm9wcyIsIm1hcFN0YXRlIiwiZ2xvYmUiLCJlbmFibGVkIiwiZ2V0R2xvYmVFeHBvcnRMYXllcnMiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsImNsb25lIiwiaWQiLCJjb25jYXQiLCJjcmVhdGVLZXBsZXJMYXllcnMiLCJfcmVuZGVyTWFwQ2FudmFzIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHM1IiwiYWRhcHRlciIsIm1hcGJveExheWVyQmVmb3JlSWQiLCJfdGhpcyRfZ2V0Q29udGFpbmVyIiwia2VwbGVyTGF5ZXJzIiwibWFwUmVmIiwib25NYXBMb2FkIiwiX29uTGVmdE1hcExvYWQiLCJfb25SaWdodE1hcExvYWQiLCJkZWNrIiwiYWRhcHRlclByb3BzIiwiZ2V0UHJvcHMiLCJleHRyYVByb3BzIiwiYWRhcHRlck9uQWZ0ZXJSZW5kZXIiLCJvbkFmdGVyUmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsImRldmljZVByb3BzIiwiRVhQT1JUX0RFQ0tfREVWSUNFX1BST1BTIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJfcmVmMyIsInZzIiwic2V0Vmlld1N0YXRlIiwicGFyYW1zIiwiX29uRGVja1JlbmRlciIsIl9yZWY1IiwibWFwU3R5bGVGcm9tUHJvcHMiLCJtYXBTdHlsZSIsIm1hcExpYiIsInRyYW5zZm9ybVJlcXVlc3QiLCJzdHlsZSIsImFudGlhbGlhcyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsIm9uTG9hZCIsIkVYUE9SVF9PVkVSTEFZX0RFVklDRV9QUk9QUyIsInJlbmRlciIsIl90aGlzJF9nZXRDb250YWluZXIyIiwiQ29tcG9uZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGFscy9zd2lwZS1leHBvcnQtdmlkZW8tcHJldmlldy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBSZWZPYmplY3QsIGZvcndhcmRSZWYsIEZvcndhcmRlZFJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IERlY2tHTCBmcm9tICdAZGVjay5nbC9yZWFjdCc7XG5pbXBvcnQgUmVhY3RNYXBHTCwge3R5cGUgTWFwUmVmLCB1c2VDb250cm9sfSBmcm9tICdyZWFjdC1tYXAtZ2wvbWFwbGlicmUnO1xuLy8gQHRzLWlnbm9yZSBtb2R1bGUgcmVzb2x1dGlvbiBtaXNtYXRjaCB3aXRoIG1vZHVsZVJlc29sdXRpb246XCJub2RlXCJcbmltcG9ydCB7TWFwYm94T3ZlcmxheX0gZnJvbSAnQGRlY2suZ2wvbWFwYm94JztcbmltcG9ydCB0eXBlIHtEZWNrLCBEZWNrUHJvcHMsIE1hcFZpZXdTdGF0ZX0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2guaXNlcXVhbCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtEZWNrQWRhcHRlcn0gZnJvbSAnQGh1YmJsZS5nbC9jb3JlJztcbmltcG9ydCB7Y3JlYXRlS2VwbGVyTGF5ZXJzfSBmcm9tICdAaHViYmxlLmdsL3JlYWN0JztcbmltcG9ydCB7Y29tcG9zaXRlU3dpcGVGcmFtZSwgZ2V0U3dpcGVQZXJjZW50YWdlQXRUaW1lLCBTd2lwZUVhc2luZ30gZnJvbSAnLi9zd2lwZS1jb21wb3NpdGUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgRVhQT1JUX0RFQ0tfREVWSUNFX1BST1BTLFxuICBFWFBPUlRfT1ZFUkxBWV9ERVZJQ0VfUFJPUFMsXG4gIGdldEdsb2JlRXhwb3J0TGF5ZXJzXG59IGZyb20gJy4vaHViYmxlLXV0aWxzJztcblxuZnVuY3Rpb24gc2V0UmVmPFQ+KHJlZjogUmVhY3QuUmVmPFQ+IHwgUmVhY3QuTXV0YWJsZVJlZk9iamVjdDxUPiwgdmFsdWU6IFQpIHtcbiAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZWYodmFsdWUpO1xuICB9IGVsc2UgaWYgKHJlZikge1xuICAgIChyZWYgYXMgUmVhY3QuTXV0YWJsZVJlZk9iamVjdDxUPikuY3VycmVudCA9IHZhbHVlO1xuICB9XG59XG5cbmNvbnN0IERlY2tHTE92ZXJsYXkgPSBmb3J3YXJkUmVmPERlY2ssIGFueT4oXG4gIChwcm9wczogYW55LCByZWY6IEZvcndhcmRlZFJlZjxEZWNrPikgPT4ge1xuICAgIGNvbnN0IG92ZXJsYXkgPSB1c2VDb250cm9sPE1hcGJveE92ZXJsYXk+KCgpID0+IG5ldyBNYXBib3hPdmVybGF5KHsuLi5wcm9wcywgaW50ZXJsZWF2ZWQ6IHRydWV9KSk7XG4gICAgb3ZlcmxheS5zZXRQcm9wcyhwcm9wcyk7XG4gICAgc2V0UmVmKHJlZiwgKG92ZXJsYXkgYXMgYW55KS5fZGVjayk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbik7XG5EZWNrR0xPdmVybGF5LmRpc3BsYXlOYW1lID0gJ0RlY2tHTE92ZXJsYXknO1xuXG5jb25zdCBQcmV2aWV3Q29udGFpbmVyID0gc3R5bGVkLmRpdjx7JHdpZHRoOiBudW1iZXI7ICRoZWlnaHQ6IG51bWJlcn0+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy4kd2lkdGh9cHg7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy4kaGVpZ2h0fXB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xuXG5jb25zdCBWaXNpYmxlQ2FudmFzID0gc3R5bGVkLmNhbnZhczx7JHdpZHRoOiBudW1iZXI7ICRoZWlnaHQ6IG51bWJlcn0+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy4kd2lkdGh9cHg7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy4kaGVpZ2h0fXB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuYDtcblxuY29uc3QgTWFwTGF5ZXIgPSBzdHlsZWQuZGl2PHskd2lkdGg6IG51bWJlcjsgJGhlaWdodDogbnVtYmVyfT5gXG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLiR3aWR0aH1weDtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLiRoZWlnaHR9cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMDtcbmA7XG5cbmV4cG9ydCB0eXBlIFN3aXBlRXhwb3J0VmlkZW9QcmV2aWV3UHJvcHMgPSB7XG4gIG1hcERhdGE6IGFueTtcbiAgcmVzb2x1dGlvbjogW251bWJlciwgbnVtYmVyXTtcbiAgZXhwb3J0VmlkZW9XaWR0aDogbnVtYmVyO1xuICBkaXNhYmxlQmFzZU1hcDogYm9vbGVhbjtcbiAgZGVja1Byb3BzPzogRGVja1Byb3BzO1xuICB2aWV3U3RhdGU6IE1hcFZpZXdTdGF0ZTtcbiAgYWRhcHRlcjogRGVja0FkYXB0ZXI7XG4gIG1hcGJveExheWVyQmVmb3JlSWQ/OiBzdHJpbmc7XG4gIHJlbmRlcmluZzogYm9vbGVhbjtcbiAgc2F2aW5nOiBib29sZWFuO1xuICBzZXRWaWV3U3RhdGU6ICh2aWV3U3RhdGU6IE1hcFZpZXdTdGF0ZSkgPT4gdm9pZDtcbiAgZHVyYXRpb25NczogbnVtYmVyO1xuICBtYXBQcm9wcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHN3aXBlU3RhcnRQY3Q6IG51bWJlcjtcbiAgc3dpcGVFbmRQY3Q6IG51bWJlcjtcbiAgc3dpcGVFYXNpbmc6IFN3aXBlRWFzaW5nO1xuICBjdXJyZW50VGltZU1zOiBudW1iZXI7XG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbn07XG5cbnR5cGUgU3dpcGVFeHBvcnRWaWRlb1ByZXZpZXdTdGF0ZSA9IHtcbiAgbGVmdFJlYWR5OiBib29sZWFuO1xuICByaWdodFJlYWR5OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBBIGR1YWwtY2FudmFzIHZpZGVvIGV4cG9ydCBwcmV2aWV3IHRoYXQgcmVuZGVycyBsZWZ0L3JpZ2h0IHNwbGl0IG1hcCBsYXllcnNcbiAqIGFuZCBjb21wb3NpdGVzIHRoZW0gd2l0aCBhbiBhbmltYXRlZCBzd2lwZSBkaXZpZGVyLlxuICovXG5leHBvcnQgY2xhc3MgU3dpcGVFeHBvcnRWaWRlb1ByZXZpZXcgZXh0ZW5kcyBDb21wb25lbnQ8XG4gIFN3aXBlRXhwb3J0VmlkZW9QcmV2aWV3UHJvcHMsXG4gIFN3aXBlRXhwb3J0VmlkZW9QcmV2aWV3U3RhdGVcbj4ge1xuICBsZWZ0TWFwUmVmOiBSZWZPYmplY3Q8TWFwUmVmIHwgbnVsbD4gPSBSZWFjdC5jcmVhdGVSZWY8TWFwUmVmIHwgbnVsbD4oKTtcbiAgcmlnaHRNYXBSZWY6IFJlZk9iamVjdDxNYXBSZWYgfCBudWxsPiA9IFJlYWN0LmNyZWF0ZVJlZjxNYXBSZWYgfCBudWxsPigpO1xuICBsZWZ0RGVja1JlZjogUmVmT2JqZWN0PERlY2sgfCBudWxsPiA9IFJlYWN0LmNyZWF0ZVJlZjxEZWNrIHwgbnVsbD4oKTtcbiAgcmlnaHREZWNrUmVmOiBSZWZPYmplY3Q8RGVjayB8IG51bGw+ID0gUmVhY3QuY3JlYXRlUmVmPERlY2sgfCBudWxsPigpO1xuICBjb21wb3NpdGVDYW52YXNSZWY6IFJlZk9iamVjdDxIVE1MQ2FudmFzRWxlbWVudCB8IG51bGw+ID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogU3dpcGVFeHBvcnRWaWRlb1ByZXZpZXdQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBsZWZ0UmVhZHk6IGZhbHNlLFxuICAgICAgcmlnaHRSZWFkeTogZmFsc2VcbiAgICB9O1xuXG4gICAgdGhpcy5fcmVzaXplVmlkZW8oKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHM6IFN3aXBlRXhwb3J0VmlkZW9QcmV2aWV3UHJvcHMpIHtcbiAgICBpZiAoIWlzRXF1YWwocHJldlByb3BzLnJlc29sdXRpb24sIHRoaXMucHJvcHMucmVzb2x1dGlvbikpIHtcbiAgICAgIHRoaXMuX3Jlc2l6ZVZpZGVvKCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJldlByb3BzLmN1cnJlbnRUaW1lTXMgIT09IHRoaXMucHJvcHMuY3VycmVudFRpbWVNcyB8fFxuICAgICAgcHJldlByb3BzLnN3aXBlU3RhcnRQY3QgIT09IHRoaXMucHJvcHMuc3dpcGVTdGFydFBjdCB8fFxuICAgICAgcHJldlByb3BzLnN3aXBlRW5kUGN0ICE9PSB0aGlzLnByb3BzLnN3aXBlRW5kUGN0IHx8XG4gICAgICBwcmV2UHJvcHMuc3dpcGVFYXNpbmcgIT09IHRoaXMucHJvcHMuc3dpcGVFYXNpbmdcbiAgICApIHtcbiAgICAgIHRoaXMuX2NvbXBvc2l0ZUZyYW1lKCk7XG4gICAgfVxuICB9XG5cbiAgX3Jlc2l6ZVZpZGVvKCkge1xuICAgIGNvbnN0IHtleHBvcnRWaWRlb1dpZHRoLCByZXNvbHV0aW9ufSA9IHRoaXMucHJvcHM7XG4gICAgdGhpcy5fc2V0RGV2aWNlUGl4ZWxSYXRpbyhyZXNvbHV0aW9uWzBdIC8gZXhwb3J0VmlkZW9XaWR0aCk7XG4gIH1cblxuICBfc2V0RGV2aWNlUGl4ZWxSYXRpbyhkZXZpY2VQaXhlbFJhdGlvOiBudW1iZXIpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgd2luZG93LmRldmljZVBpeGVsUmF0aW8gPSBkZXZpY2VQaXhlbFJhdGlvO1xuICB9XG5cbiAgX2dldENvbnRhaW5lcigpIHtcbiAgICBjb25zdCB7ZXhwb3J0VmlkZW9XaWR0aCwgcmVzb2x1dGlvbn0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGFzcGVjdFJhdGlvID0gcmVzb2x1dGlvblswXSAvIHJlc29sdXRpb25bMV07XG4gICAgcmV0dXJuIHtoZWlnaHQ6IGV4cG9ydFZpZGVvV2lkdGggLyBhc3BlY3RSYXRpbywgd2lkdGg6IGV4cG9ydFZpZGVvV2lkdGh9O1xuICB9XG5cbiAgX2dldEN1cnJlbnRTd2lwZVBlcmNlbnRhZ2UoKTogbnVtYmVyIHtcbiAgICBjb25zdCB7Y3VycmVudFRpbWVNcywgZHVyYXRpb25Ncywgc3dpcGVTdGFydFBjdCwgc3dpcGVFbmRQY3QsIHN3aXBlRWFzaW5nfSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIGdldFN3aXBlUGVyY2VudGFnZUF0VGltZShjdXJyZW50VGltZU1zLCBkdXJhdGlvbk1zLCBzd2lwZVN0YXJ0UGN0LCBzd2lwZUVuZFBjdCwgc3dpcGVFYXNpbmcpO1xuICB9XG5cbiAgX2dldExlZnRDYW52YXMoKTogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5sZWZ0TWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmxlZnRNYXBSZWYuY3VycmVudC5nZXRNYXAoKS5nZXRDYW52YXMoKTtcbiAgICB9XG4gICAgLy8gRmFsbGJhY2s6IERlY2tHTCBjYW52YXMgKG5vIGJhc2VtYXAgbW9kZSlcbiAgICBpZiAodGhpcy5sZWZ0RGVja1JlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm4gKHRoaXMubGVmdERlY2tSZWYuY3VycmVudCBhcyBhbnkpLmdldENhbnZhcz8uKCkgfHwgbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBfZ2V0UmlnaHRDYW52YXMoKTogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5yaWdodE1hcFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5yaWdodE1hcFJlZi5jdXJyZW50LmdldE1hcCgpLmdldENhbnZhcygpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yaWdodERlY2tSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuICh0aGlzLnJpZ2h0RGVja1JlZi5jdXJyZW50IGFzIGFueSkuZ2V0Q2FudmFzPy4oKSB8fCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIF9jb21wb3NpdGVGcmFtZSgpIHtcbiAgICBjb25zdCBsZWZ0Q2FudmFzID0gdGhpcy5fZ2V0TGVmdENhbnZhcygpO1xuICAgIGNvbnN0IHJpZ2h0Q2FudmFzID0gdGhpcy5fZ2V0UmlnaHRDYW52YXMoKTtcbiAgICBjb25zdCBvdXRwdXRDYW52YXMgPSB0aGlzLmNvbXBvc2l0ZUNhbnZhc1JlZi5jdXJyZW50O1xuXG4gICAgaWYgKCFsZWZ0Q2FudmFzIHx8ICFyaWdodENhbnZhcyB8fCAhb3V0cHV0Q2FudmFzKSByZXR1cm47XG5cbiAgICBjb25zdCBwZXJjZW50YWdlID0gdGhpcy5fZ2V0Q3VycmVudFN3aXBlUGVyY2VudGFnZSgpO1xuICAgIGNvbXBvc2l0ZVN3aXBlRnJhbWUoXG4gICAgICBsZWZ0Q2FudmFzLFxuICAgICAgcmlnaHRDYW52YXMsXG4gICAgICBvdXRwdXRDYW52YXMsXG4gICAgICBwZXJjZW50YWdlLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRoaXMucHJvcHMuYmFja2dyb3VuZENvbG9yXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgdGhlIHBhcmVudCBjb250YWluZXIncyBhZGFwdGVyIGFmdGVyIGVhY2ggcmVuZGVyLlxuICAgKiBXZSBuZWVkIGJvdGggbWFwcyB0byBiZSBsb2FkZWQgYmVmb3JlIGNvbXBvc2l0aW5nIGFuZCBjYXB0dXJpbmcuXG4gICAqL1xuICBvbkFmdGVyUmVuZGVyID0gKHByb2NlZWRUb05leHRGcmFtZTogKCkgPT4gdm9pZCkgPT4ge1xuICAgIGNvbnN0IGxlZnRMb2FkZWQgPSB0aGlzLl9hcmVMYXllcnNMb2FkZWQoJ2xlZnQnKTtcbiAgICBjb25zdCByaWdodExvYWRlZCA9IHRoaXMuX2FyZUxheWVyc0xvYWRlZCgncmlnaHQnKTtcbiAgICBjb25zdCBsZWZ0VGlsZXNSZWFkeSA9XG4gICAgICB0aGlzLnByb3BzLmRpc2FibGVCYXNlTWFwIHx8ICF0aGlzLmxlZnRNYXBSZWYuY3VycmVudCB8fCB0aGlzLmxlZnRNYXBSZWYuY3VycmVudC5nZXRNYXAoKS5hcmVUaWxlc0xvYWRlZCgpO1xuICAgIGNvbnN0IHJpZ2h0VGlsZXNSZWFkeSA9XG4gICAgICB0aGlzLnByb3BzLmRpc2FibGVCYXNlTWFwIHx8ICF0aGlzLnJpZ2h0TWFwUmVmLmN1cnJlbnQgfHwgdGhpcy5yaWdodE1hcFJlZi5jdXJyZW50LmdldE1hcCgpLmFyZVRpbGVzTG9hZGVkKCk7XG5cbiAgICBpZiAobGVmdExvYWRlZCAmJiByaWdodExvYWRlZCAmJiBsZWZ0VGlsZXNSZWFkeSAmJiByaWdodFRpbGVzUmVhZHkpIHtcbiAgICAgIHRoaXMuX2NvbXBvc2l0ZUZyYW1lKCk7XG4gICAgICBwcm9jZWVkVG9OZXh0RnJhbWUoKTtcbiAgICB9XG4gIH07XG5cbiAgX2FyZUxheWVyc0xvYWRlZChzaWRlOiAnbGVmdCcgfCAncmlnaHQnKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGVja1JlZiA9IHNpZGUgPT09ICdsZWZ0JyA/IHRoaXMubGVmdERlY2tSZWYgOiB0aGlzLnJpZ2h0RGVja1JlZjtcbiAgICBpZiAoIWRlY2tSZWYuY3VycmVudCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGxheWVycyA9IGRlY2tSZWYuY3VycmVudC5wcm9wcy5sYXllcnMgfHwgW107XG4gICAgcmV0dXJuIGxheWVycy5ldmVyeSgobGF5ZXI6IGFueSkgPT4gbGF5ZXIuaXNMb2FkZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY29tcG9zaXRlZCBjYW52YXMgZWxlbWVudCBmb3IgdmlkZW8gY2FwdHVyZS5cbiAgICovXG4gIGdldENvbXBvc2l0ZUNhbnZhcygpOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbXBvc2l0ZUNhbnZhc1JlZi5jdXJyZW50O1xuICB9XG5cbiAgX2NyZWF0ZUxheWVycyhtYXBJbmRleDogbnVtYmVyLCBiZWZvcmVJZD86IHN0cmluZykge1xuICAgIGNvbnN0IHtkZWNrUHJvcHMsIG1hcERhdGEsIHZpZXdTdGF0ZSwgZGlzYWJsZUJhc2VNYXAsIG1hcFByb3BzfSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBHbG9iZSBzd2lwZTogYnVpbGQgYSBmcmVzaCBzZXQgb2YgZ2xvYmUgbGF5ZXJzIHBlciBzaWRlLiBFYWNoIHNpZGUgaXMgYVxuICAgIC8vIHNlcGFyYXRlIERlY2ssIHNvIGl0IG5lZWRzIGl0cyBPV04gTGF5ZXIgaW5zdGFuY2VzIChkZWNrLmdsIExheWVyIG9iamVjdHNcbiAgICAvLyBhcmUgc3RhdGVmdWwgYW5kIGJvdW5kIHRvIG9uZSBEZWNrIOKAlCBzaGFyaW5nIHRoZW0gbWFrZXMgdGhlIHNlY29uZCBEZWNrXG4gICAgLy8gYXNzZXJ0IHdoaWxlIGluaXRpYWxpemluZyB0aGVtKS4gQnVpbGRpbmcgcGVyIGBtYXBJbmRleGAgYWxzbyByZXNwZWN0cyB0aGVcbiAgICAvLyBzcGxpdC1tYXAgbGF5ZXIgdmlzaWJpbGl0eSBvbiBlYWNoIGhhbGYgb2YgdGhlIHN3aXBlLlxuICAgIGlmIChkaXNhYmxlQmFzZU1hcCAmJiBtYXBEYXRhPy5tYXBTdGF0ZT8uZ2xvYmU/LmVuYWJsZWQpIHtcbiAgICAgIHJldHVybiBnZXRHbG9iZUV4cG9ydExheWVycyhtYXBEYXRhLCB7XG4gICAgICAgIG1hcEluZGV4LFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogbWFwUHJvcHM/Lm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmw6IG1hcFByb3BzPy5tYXBib3hBcGlVcmxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChkZWNrUHJvcHMgJiYgZGVja1Byb3BzLmxheWVycykge1xuICAgICAgLy8gTm9uLWdsb2JlIHBhdGggd2l0aCBleHBsaWNpdCBsYXllcnM6IGNsb25lIHBlciBzaWRlIHdpdGggYSB1bmlxdWUgaWQgc29cbiAgICAgIC8vIHRoZSB0d28gRGVjayBpbnN0YW5jZXMgZG9uJ3Qgc2hhcmUgdGhlIHNhbWUgc3RhdGVmdWwgTGF5ZXIgb2JqZWN0cy5cbiAgICAgIHJldHVybiBkZWNrUHJvcHMubGF5ZXJzLm1hcCgobGF5ZXI6IGFueSkgPT5cbiAgICAgICAgbGF5ZXIgJiYgdHlwZW9mIGxheWVyLmNsb25lID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgPyBsYXllci5jbG9uZSh7aWQ6IGAke2xheWVyLmlkfS1zd2lwZS0ke21hcEluZGV4fWB9KVxuICAgICAgICAgIDogbGF5ZXJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVLZXBsZXJMYXllcnMobWFwRGF0YSwgdmlld1N0YXRlLCBtYXBJbmRleCwgYmVmb3JlSWQpO1xuICB9XG5cbiAgX29uTGVmdE1hcExvYWQgPSAoKSA9PiB7XG4gICAgY29uc3QgbWFwID0gdGhpcy5sZWZ0TWFwUmVmLmN1cnJlbnQ/LmdldE1hcCgpO1xuICAgIGlmIChtYXApIHtcbiAgICAgIG1hcC5vbigncmVuZGVyJywgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3RhdGUubGVmdFJlYWR5KSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7bGVmdFJlYWR5OiB0cnVlfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdHJ5Q29tcG9zaXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX29uUmlnaHRNYXBMb2FkID0gKCkgPT4ge1xuICAgIGNvbnN0IG1hcCA9IHRoaXMucmlnaHRNYXBSZWYuY3VycmVudD8uZ2V0TWFwKCk7XG4gICAgaWYgKG1hcCkge1xuICAgICAgbWFwLm9uKCdyZW5kZXInLCAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5yaWdodFJlYWR5KSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cmlnaHRSZWFkeTogdHJ1ZX0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RyeUNvbXBvc2l0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF90cnlDb21wb3NpdGUoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUubGVmdFJlYWR5ICYmIHRoaXMuc3RhdGUucmlnaHRSZWFkeSkge1xuICAgICAgdGhpcy5fY29tcG9zaXRlRnJhbWUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBHbG9iZSAoZGlzYWJsZUJhc2VNYXApIG1vZGUgaGFzIG5vIFJlYWN0TWFwR0wgYW5kIHRoZXJlZm9yZSBubyBtYXAgJ3JlbmRlcidcbiAgLy8gZXZlbnQgdG8gZHJpdmUgY29tcG9zaXRpbmcuIEluc3RlYWQgZWFjaCBiYXJlIDxEZWNrR0w+IHJlcG9ydHMgd2hlbiBpdCBoYXNcbiAgLy8gZHJhd24gdmlhIG9uQWZ0ZXJSZW5kZXI7IG9uY2UgYm90aCBzaWRlcyBoYXZlIHJlbmRlcmVkIHdlIGNvbXBvc2l0ZS4gV2l0aG91dFxuICAvLyB0aGlzIHRoZSBjb21wb3NpdGUgb3V0cHV0IGNhbnZhcyBpcyBuZXZlciBwYWludGVkIHVudGlsIHRoZSB1c2VyIHByZXNzZXNcbiAgLy8gcGxheSwgc28gdGhlIHByZXZpZXcgc2hvd3MgYSBibGFuayAod2hpdGUpIGZyYW1lIG9uIG1vdW50LlxuICBfb25EZWNrUmVuZGVyID0gKHNpZGU6ICdsZWZ0JyB8ICdyaWdodCcpID0+IHtcbiAgICBjb25zdCByZWFkeUtleSA9IHNpZGUgPT09ICdsZWZ0JyA/ICdsZWZ0UmVhZHknIDogJ3JpZ2h0UmVhZHknO1xuICAgIGlmICghdGhpcy5zdGF0ZVtyZWFkeUtleV0pIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1tyZWFkeUtleV06IHRydWV9IGFzIGFueSk7XG4gICAgfVxuICAgIC8vIENvbXBvc2l0ZSBhcyBzb29uIGFzIGJvdGggZGVja3MgZXhpc3QgYW5kIGhhdmUgZHJhd24uIFdlIGNoZWNrIHRoZSBkZWNrXG4gICAgLy8gcmVmcyBkaXJlY3RseSAobm90IFJlYWN0IHN0YXRlLCB3aGljaCBjYW4gYmUgc3RhbGUgcmlnaHQgYWZ0ZXIgc2V0U3RhdGUpXG4gICAgLy8gYW5kIGludGVudGlvbmFsbHkgZG9uJ3QgZ2F0ZSBvbiBsYXllcnMgYmVpbmcgZnVsbHkgbG9hZGVkIGhlcmUgKHRoYXQgZ2F0ZVxuICAgIC8vIGxpdmVzIGluIHRoZSBjYXB0dXJlIGxvb3ApOiBmb3IgYSBsaXZlIHByZXZpZXcgd2Ugd2FudCB0byBzaG93IHRoZSBnbG9iZVxuICAgIC8vIGFzIGl0IHN0cmVhbXMgaW4gcmF0aGVyIHRoYW4gYSBibGFuayBmcmFtZSB3aGlsZSB0aWxlcyBsb2FkLlxuICAgIGlmICh0aGlzLmxlZnREZWNrUmVmLmN1cnJlbnQgJiYgdGhpcy5yaWdodERlY2tSZWYuY3VycmVudCkge1xuICAgICAgdGhpcy5fY29tcG9zaXRlRnJhbWUoKTtcbiAgICB9XG4gIH07XG5cbiAgX3JlbmRlck1hcENhbnZhcyhcbiAgICBzaWRlOiAnbGVmdCcgfCAncmlnaHQnLFxuICAgIG1hcEluZGV4OiBudW1iZXJcbiAgKSB7XG4gICAgY29uc3Qge3ZpZXdTdGF0ZSwgYWRhcHRlciwgZGVja1Byb3BzLCBtYXBQcm9wcywgZGlzYWJsZUJhc2VNYXAsIG1hcGJveExheWVyQmVmb3JlSWR9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSB0aGlzLl9nZXRDb250YWluZXIoKTtcbiAgICBjb25zdCBrZXBsZXJMYXllcnMgPSB0aGlzLl9jcmVhdGVMYXllcnMobWFwSW5kZXgsIG1hcGJveExheWVyQmVmb3JlSWQpO1xuICAgIGNvbnN0IG1hcFJlZiA9IHNpZGUgPT09ICdsZWZ0JyA/IHRoaXMubGVmdE1hcFJlZiA6IHRoaXMucmlnaHRNYXBSZWY7XG4gICAgY29uc3QgZGVja1JlZiA9IHNpZGUgPT09ICdsZWZ0JyA/IHRoaXMubGVmdERlY2tSZWYgOiB0aGlzLnJpZ2h0RGVja1JlZjtcbiAgICBjb25zdCBvbk1hcExvYWQgPSBzaWRlID09PSAnbGVmdCcgPyB0aGlzLl9vbkxlZnRNYXBMb2FkIDogdGhpcy5fb25SaWdodE1hcExvYWQ7XG4gICAgY29uc3QgZGVjayA9IGRlY2tSZWYuY3VycmVudDtcblxuICAgIGlmIChkaXNhYmxlQmFzZU1hcCkge1xuICAgICAgY29uc3QgYWRhcHRlclByb3BzID0gYWRhcHRlci5nZXRQcm9wcyh7XG4gICAgICAgIGRlY2s6IGRlY2sgYXMgYW55LFxuICAgICAgICBleHRyYVByb3BzOiB7Li4uZGVja1Byb3BzLCBsYXllcnM6IGtlcGxlckxheWVyc31cbiAgICAgIH0pIGFzIGFueTtcbiAgICAgIGNvbnN0IGFkYXB0ZXJPbkFmdGVyUmVuZGVyID0gYWRhcHRlclByb3BzLm9uQWZ0ZXJSZW5kZXI7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8TWFwTGF5ZXIgJHdpZHRoPXt3aWR0aH0gJGhlaWdodD17aGVpZ2h0fT5cbiAgICAgICAgICA8RGVja0dMXG4gICAgICAgICAgICByZWY9e3JlZiA9PiBzZXRSZWYoZGVja1JlZiwgcmVmPy5kZWNrIGFzIGFueSl9XG4gICAgICAgICAgICBkZXZpY2VQcm9wcz17RVhQT1JUX0RFQ0tfREVWSUNFX1BST1BTfVxuICAgICAgICAgICAgey4uLmFkYXB0ZXJQcm9wc31cbiAgICAgICAgICAgIHZpZXdTdGF0ZT17dmlld1N0YXRlfVxuICAgICAgICAgICAgb25WaWV3U3RhdGVDaGFuZ2U9eyh7dmlld1N0YXRlOiB2c306IGFueSkgPT4gdGhpcy5wcm9wcy5zZXRWaWV3U3RhdGUodnMpfVxuICAgICAgICAgICAgb25BZnRlclJlbmRlcj17KHBhcmFtczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgYWRhcHRlck9uQWZ0ZXJSZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBhZGFwdGVyT25BZnRlclJlbmRlcihwYXJhbXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuX29uRGVja1JlbmRlcihzaWRlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB7Li4udGhpcy5fZ2V0Q29udGFpbmVyKCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9NYXBMYXllcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgbWFwU3R5bGU6IG1hcFN0eWxlRnJvbVByb3BzLFxuICAgICAgbWFwTGliLFxuICAgICAgdHJhbnNmb3JtUmVxdWVzdFxuICAgIH0gPSAobWFwUHJvcHMgfHwge30pIGFzIGFueTtcblxuICAgIHJldHVybiAoXG4gICAgICA8TWFwTGF5ZXIgJHdpZHRoPXt3aWR0aH0gJGhlaWdodD17aGVpZ2h0fT5cbiAgICAgICAgPFJlYWN0TWFwR0xcbiAgICAgICAgICByZWY9e21hcFJlZn1cbiAgICAgICAgICBzdHlsZT17e3dpZHRoLCBoZWlnaHR9fVxuICAgICAgICAgIGFudGlhbGlhc1xuICAgICAgICAgIG1hcExpYj17bWFwTGlifVxuICAgICAgICAgIHRyYW5zZm9ybVJlcXVlc3Q9e3RyYW5zZm9ybVJlcXVlc3R9XG4gICAgICAgICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyXG4gICAgICAgICAgey4uLnZpZXdTdGF0ZX1cbiAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGVGcm9tUHJvcHN9XG4gICAgICAgICAgb25Mb2FkPXtvbk1hcExvYWR9XG4gICAgICAgID5cbiAgICAgICAgICA8RGVja0dMT3ZlcmxheVxuICAgICAgICAgICAgcmVmPXtkZWNrUmVmfVxuICAgICAgICAgICAgZGV2aWNlUHJvcHM9e0VYUE9SVF9PVkVSTEFZX0RFVklDRV9QUk9QU31cbiAgICAgICAgICAgIHsuLi5hZGFwdGVyLmdldFByb3BzKHtkZWNrOiBkZWNrIGFzIGFueSwgZXh0cmFQcm9wczogey4uLmRlY2tQcm9wcywgbGF5ZXJzOiBrZXBsZXJMYXllcnN9fSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9SZWFjdE1hcEdMPlxuICAgICAgPC9NYXBMYXllcj5cbiAgICApO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtyZXNvbHV0aW9ufSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gdGhpcy5fZ2V0Q29udGFpbmVyKCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFByZXZpZXdDb250YWluZXIgJHdpZHRoPXt3aWR0aH0gJGhlaWdodD17aGVpZ2h0fT5cbiAgICAgICAgey8qIEhpZGRlbiBtYXAgY2FudmFzZXMgZm9yIGxlZnQgKG1hcEluZGV4PTApIGFuZCByaWdodCAobWFwSW5kZXg9MSkgKi99XG4gICAgICAgIHt0aGlzLl9yZW5kZXJNYXBDYW52YXMoJ2xlZnQnLCAwKX1cbiAgICAgICAge3RoaXMuX3JlbmRlck1hcENhbnZhcygncmlnaHQnLCAxKX1cblxuICAgICAgICB7LyogVmlzaWJsZSBjb21wb3NpdGVkIG91dHB1dCAqL31cbiAgICAgICAgPFZpc2libGVDYW52YXNcbiAgICAgICAgICByZWY9e3RoaXMuY29tcG9zaXRlQ2FudmFzUmVmfVxuICAgICAgICAgIHdpZHRoPXtyZXNvbHV0aW9uWzBdfVxuICAgICAgICAgIGhlaWdodD17cmVzb2x1dGlvblsxXX1cbiAgICAgICAgICAkd2lkdGg9e3dpZHRofVxuICAgICAgICAgICRoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgLz5cbiAgICAg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
395
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3QyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9tYXBsaWJyZSIsIl9tYXBib3giLCJfaXNFcXVhbCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX3JlYWN0MyIsIl9zd2lwZUNvbXBvc2l0ZVV0aWxzIiwiX2h1YmJsZVV0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJzZXRSZWYiLCJyZWYiLCJ2YWx1ZSIsImN1cnJlbnQiLCJEZWNrR0xPdmVybGF5IiwiZm9yd2FyZFJlZiIsInByb3BzIiwib3ZlcmxheSIsInVzZUNvbnRyb2wiLCJNYXBib3hPdmVybGF5IiwiaW50ZXJsZWF2ZWQiLCJzZXRQcm9wcyIsIl9kZWNrIiwiZGlzcGxheU5hbWUiLCJQcmV2aWV3Q29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCIkd2lkdGgiLCIkaGVpZ2h0IiwiVmlzaWJsZUNhbnZhcyIsImNhbnZhcyIsIk1hcExheWVyIiwiU3dpcGVFeHBvcnRWaWRlb1ByZXZpZXciLCJleHBvcnRzIiwiX0NvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIlJlYWN0IiwiY3JlYXRlUmVmIiwicHJvY2VlZFRvTmV4dEZyYW1lIiwibGVmdExvYWRlZCIsIl9hcmVMYXllcnNMb2FkZWQiLCJyaWdodExvYWRlZCIsImxlZnRUaWxlc1JlYWR5IiwiZGlzYWJsZUJhc2VNYXAiLCJsZWZ0TWFwUmVmIiwiZ2V0TWFwIiwiYXJlVGlsZXNMb2FkZWQiLCJyaWdodFRpbGVzUmVhZHkiLCJyaWdodE1hcFJlZiIsIl9jb21wb3NpdGVGcmFtZSIsIl90aGlzJGxlZnRNYXBSZWYkY3VyciIsIm1hcCIsIm9uIiwic3RhdGUiLCJsZWZ0UmVhZHkiLCJzZXRTdGF0ZSIsIl90cnlDb21wb3NpdGUiLCJfdGhpcyRyaWdodE1hcFJlZiRjdXIiLCJyaWdodFJlYWR5Iiwic2lkZSIsInJlYWR5S2V5IiwibGVmdERlY2tSZWYiLCJyaWdodERlY2tSZWYiLCJfcmVzaXplVmlkZW8iLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsImlzRXF1YWwiLCJyZXNvbHV0aW9uIiwiY3VycmVudFRpbWVNcyIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiX3RoaXMkcHJvcHMiLCJleHBvcnRWaWRlb1dpZHRoIiwiX3NldERldmljZVBpeGVsUmF0aW8iLCJkZXZpY2VQaXhlbFJhdGlvIiwid2luZG93IiwiX2dldENvbnRhaW5lciIsIl90aGlzJHByb3BzMiIsImFzcGVjdFJhdGlvIiwiaGVpZ2h0Iiwid2lkdGgiLCJfZ2V0Q3VycmVudFN3aXBlUGVyY2VudGFnZSIsIl90aGlzJHByb3BzMyIsImR1cmF0aW9uTXMiLCJnZXRTd2lwZVBlcmNlbnRhZ2VBdFRpbWUiLCJfZ2V0TGVmdENhbnZhcyIsImdldENhbnZhcyIsIl9nZXRDYW52YXMiLCJfcmVmIiwiX2dldFJpZ2h0Q2FudmFzIiwiX2dldENhbnZhczIiLCJfcmVmMiIsIl90aGlzJHByb3BzJG1hcERhdGEiLCJfZ2xvYmUkY29uZmlnIiwibGVmdENhbnZhcyIsInJpZ2h0Q2FudmFzIiwib3V0cHV0Q2FudmFzIiwiY29tcG9zaXRlQ2FudmFzUmVmIiwicGVyY2VudGFnZSIsImdsb2JlIiwibWFwRGF0YSIsIm1hcFN0YXRlIiwic2hvd1N0YXJzIiwiZW5hYmxlZCIsImNvbmZpZyIsInN0YXJzIiwiY29tcG9zaXRlU3dpcGVGcmFtZSIsImJhY2tncm91bmRDb2xvciIsImRlY2tSZWYiLCJsYXllcnMiLCJldmVyeSIsImxheWVyIiwiaXNMb2FkZWQiLCJnZXRDb21wb3NpdGVDYW52YXMiLCJfY3JlYXRlTGF5ZXJzIiwibWFwSW5kZXgiLCJiZWZvcmVJZCIsIl9tYXBEYXRhJG1hcFN0YXRlIiwiX3RoaXMkcHJvcHM0IiwiZGVja1Byb3BzIiwidmlld1N0YXRlIiwibWFwUHJvcHMiLCJnZXRHbG9iZUV4cG9ydExheWVycyIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwiY2xvbmUiLCJpZCIsImNvbmNhdCIsImNyZWF0ZUtlcGxlckxheWVycyIsIl9yZW5kZXJNYXBDYW52YXMiLCJfdGhpczIiLCJfdGhpcyRwcm9wczUiLCJhZGFwdGVyIiwibWFwYm94TGF5ZXJCZWZvcmVJZCIsIl90aGlzJF9nZXRDb250YWluZXIiLCJrZXBsZXJMYXllcnMiLCJtYXBSZWYiLCJvbk1hcExvYWQiLCJfb25MZWZ0TWFwTG9hZCIsIl9vblJpZ2h0TWFwTG9hZCIsImRlY2siLCJhZGFwdGVyUHJvcHMiLCJnZXRQcm9wcyIsImV4dHJhUHJvcHMiLCJhZGFwdGVyT25BZnRlclJlbmRlciIsIm9uQWZ0ZXJSZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwiZGV2aWNlUHJvcHMiLCJFWFBPUlRfREVDS19ERVZJQ0VfUFJPUFMiLCJvblZpZXdTdGF0ZUNoYW5nZSIsIl9yZWYzIiwidnMiLCJzZXRWaWV3U3RhdGUiLCJwYXJhbXMiLCJfb25EZWNrUmVuZGVyIiwiX3JlZjUiLCJtYXBTdHlsZUZyb21Qcm9wcyIsIm1hcFN0eWxlIiwibWFwTGliIiwidHJhbnNmb3JtUmVxdWVzdCIsInN0eWxlIiwiYW50aWFsaWFzIiwicHJlc2VydmVEcmF3aW5nQnVmZmVyIiwib25Mb2FkIiwiRVhQT1JUX09WRVJMQVlfREVWSUNFX1BST1BTIiwicmVuZGVyIiwiX3RoaXMkX2dldENvbnRhaW5lcjIiLCJDb21wb25lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kYWxzL3N3aXBlLWV4cG9ydC12aWRlby1wcmV2aWV3LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIFJlZk9iamVjdCwgZm9yd2FyZFJlZiwgRm9yd2FyZGVkUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgRGVja0dMIGZyb20gJ0BkZWNrLmdsL3JlYWN0JztcbmltcG9ydCBSZWFjdE1hcEdMLCB7dHlwZSBNYXBSZWYsIHVzZUNvbnRyb2x9IGZyb20gJ3JlYWN0LW1hcC1nbC9tYXBsaWJyZSc7XG4vLyBAdHMtaWdub3JlIG1vZHVsZSByZXNvbHV0aW9uIG1pc21hdGNoIHdpdGggbW9kdWxlUmVzb2x1dGlvbjpcIm5vZGVcIlxuaW1wb3J0IHtNYXBib3hPdmVybGF5fSBmcm9tICdAZGVjay5nbC9tYXBib3gnO1xuaW1wb3J0IHR5cGUge0RlY2ssIERlY2tQcm9wcywgTWFwVmlld1N0YXRlfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2VzLXRvb2xraXQvY29tcGF0L2lzRXF1YWwnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7RGVja0FkYXB0ZXJ9IGZyb20gJ0BodWJibGUuZ2wvY29yZSc7XG5pbXBvcnQge2NyZWF0ZUtlcGxlckxheWVyc30gZnJvbSAnQGh1YmJsZS5nbC9yZWFjdCc7XG5pbXBvcnQge2NvbXBvc2l0ZVN3aXBlRnJhbWUsIGdldFN3aXBlUGVyY2VudGFnZUF0VGltZSwgU3dpcGVFYXNpbmd9IGZyb20gJy4vc3dpcGUtY29tcG9zaXRlLXV0aWxzJztcbmltcG9ydCB7XG4gIEVYUE9SVF9ERUNLX0RFVklDRV9QUk9QUyxcbiAgRVhQT1JUX09WRVJMQVlfREVWSUNFX1BST1BTLFxuICBnZXRHbG9iZUV4cG9ydExheWVyc1xufSBmcm9tICcuL2h1YmJsZS11dGlscyc7XG5cbmZ1bmN0aW9uIHNldFJlZjxUPihyZWY6IFJlYWN0LlJlZjxUPiB8IFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8VD4sIHZhbHVlOiBUKSB7XG4gIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmVmKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChyZWYpIHtcbiAgICAocmVmIGFzIFJlYWN0Lk11dGFibGVSZWZPYmplY3Q8VD4pLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfVxufVxuXG5jb25zdCBEZWNrR0xPdmVybGF5ID0gZm9yd2FyZFJlZjxEZWNrLCBhbnk+KFxuICAocHJvcHM6IGFueSwgcmVmOiBGb3J3YXJkZWRSZWY8RGVjaz4pID0+IHtcbiAgICBjb25zdCBvdmVybGF5ID0gdXNlQ29udHJvbDxNYXBib3hPdmVybGF5PigoKSA9PiBuZXcgTWFwYm94T3ZlcmxheSh7Li4ucHJvcHMsIGludGVybGVhdmVkOiB0cnVlfSkpO1xuICAgIG92ZXJsYXkuc2V0UHJvcHMocHJvcHMpO1xuICAgIHNldFJlZihyZWYsIChvdmVybGF5IGFzIGFueSkuX2RlY2spO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4pO1xuRGVja0dMT3ZlcmxheS5kaXNwbGF5TmFtZSA9ICdEZWNrR0xPdmVybGF5JztcblxuY29uc3QgUHJldmlld0NvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyR3aWR0aDogbnVtYmVyOyAkaGVpZ2h0OiBudW1iZXJ9PmBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMuJHdpZHRofXB4O1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMuJGhlaWdodH1weDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuY29uc3QgVmlzaWJsZUNhbnZhcyA9IHN0eWxlZC5jYW52YXM8eyR3aWR0aDogbnVtYmVyOyAkaGVpZ2h0OiBudW1iZXJ9PmBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMuJHdpZHRofXB4O1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMuJGhlaWdodH1weDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbmA7XG5cbmNvbnN0IE1hcExheWVyID0gc3R5bGVkLmRpdjx7JHdpZHRoOiBudW1iZXI7ICRoZWlnaHQ6IG51bWJlcn0+YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy4kd2lkdGh9cHg7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy4kaGVpZ2h0fXB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgb3BhY2l0eTogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDA7XG5gO1xuXG5leHBvcnQgdHlwZSBTd2lwZUV4cG9ydFZpZGVvUHJldmlld1Byb3BzID0ge1xuICBtYXBEYXRhOiBhbnk7XG4gIHJlc29sdXRpb246IFtudW1iZXIsIG51bWJlcl07XG4gIGV4cG9ydFZpZGVvV2lkdGg6IG51bWJlcjtcbiAgZGlzYWJsZUJhc2VNYXA6IGJvb2xlYW47XG4gIGRlY2tQcm9wcz86IERlY2tQcm9wcztcbiAgdmlld1N0YXRlOiBNYXBWaWV3U3RhdGU7XG4gIGFkYXB0ZXI6IERlY2tBZGFwdGVyO1xuICBtYXBib3hMYXllckJlZm9yZUlkPzogc3RyaW5nO1xuICByZW5kZXJpbmc6IGJvb2xlYW47XG4gIHNhdmluZzogYm9vbGVhbjtcbiAgc2V0Vmlld1N0YXRlOiAodmlld1N0YXRlOiBNYXBWaWV3U3RhdGUpID0+IHZvaWQ7XG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbiAgbWFwUHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBzd2lwZVN0YXJ0UGN0OiBudW1iZXI7XG4gIHN3aXBlRW5kUGN0OiBudW1iZXI7XG4gIHN3aXBlRWFzaW5nOiBTd2lwZUVhc2luZztcbiAgY3VycmVudFRpbWVNczogbnVtYmVyO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG59O1xuXG50eXBlIFN3aXBlRXhwb3J0VmlkZW9QcmV2aWV3U3RhdGUgPSB7XG4gIGxlZnRSZWFkeTogYm9vbGVhbjtcbiAgcmlnaHRSZWFkeTogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQSBkdWFsLWNhbnZhcyB2aWRlbyBleHBvcnQgcHJldmlldyB0aGF0IHJlbmRlcnMgbGVmdC9yaWdodCBzcGxpdCBtYXAgbGF5ZXJzXG4gKiBhbmQgY29tcG9zaXRlcyB0aGVtIHdpdGggYW4gYW5pbWF0ZWQgc3dpcGUgZGl2aWRlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFN3aXBlRXhwb3J0VmlkZW9QcmV2aWV3IGV4dGVuZHMgQ29tcG9uZW50PFxuICBTd2lwZUV4cG9ydFZpZGVvUHJldmlld1Byb3BzLFxuICBTd2lwZUV4cG9ydFZpZGVvUHJldmlld1N0YXRlXG4+IHtcbiAgbGVmdE1hcFJlZjogUmVmT2JqZWN0PE1hcFJlZiB8IG51bGw+ID0gUmVhY3QuY3JlYXRlUmVmPE1hcFJlZiB8IG51bGw+KCk7XG4gIHJpZ2h0TWFwUmVmOiBSZWZPYmplY3Q8TWFwUmVmIHwgbnVsbD4gPSBSZWFjdC5jcmVhdGVSZWY8TWFwUmVmIHwgbnVsbD4oKTtcbiAgbGVmdERlY2tSZWY6IFJlZk9iamVjdDxEZWNrIHwgbnVsbD4gPSBSZWFjdC5jcmVhdGVSZWY8RGVjayB8IG51bGw+KCk7XG4gIHJpZ2h0RGVja1JlZjogUmVmT2JqZWN0PERlY2sgfCBudWxsPiA9IFJlYWN0LmNyZWF0ZVJlZjxEZWNrIHwgbnVsbD4oKTtcbiAgY29tcG9zaXRlQ2FudmFzUmVmOiBSZWZPYmplY3Q8SFRNTENhbnZhc0VsZW1lbnQgfCBudWxsPiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MQ2FudmFzRWxlbWVudCB8IG51bGw+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFN3aXBlRXhwb3J0VmlkZW9QcmV2aWV3UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbGVmdFJlYWR5OiBmYWxzZSxcbiAgICAgIHJpZ2h0UmVhZHk6IGZhbHNlXG4gICAgfTtcblxuICAgIHRoaXMuX3Jlc2l6ZVZpZGVvKCk7XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzOiBTd2lwZUV4cG9ydFZpZGVvUHJldmlld1Byb3BzKSB7XG4gICAgaWYgKCFpc0VxdWFsKHByZXZQcm9wcy5yZXNvbHV0aW9uLCB0aGlzLnByb3BzLnJlc29sdXRpb24pKSB7XG4gICAgICB0aGlzLl9yZXNpemVWaWRlbygpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByZXZQcm9wcy5jdXJyZW50VGltZU1zICE9PSB0aGlzLnByb3BzLmN1cnJlbnRUaW1lTXMgfHxcbiAgICAgIHByZXZQcm9wcy5zd2lwZVN0YXJ0UGN0ICE9PSB0aGlzLnByb3BzLnN3aXBlU3RhcnRQY3QgfHxcbiAgICAgIHByZXZQcm9wcy5zd2lwZUVuZFBjdCAhPT0gdGhpcy5wcm9wcy5zd2lwZUVuZFBjdCB8fFxuICAgICAgcHJldlByb3BzLnN3aXBlRWFzaW5nICE9PSB0aGlzLnByb3BzLnN3aXBlRWFzaW5nXG4gICAgKSB7XG4gICAgICB0aGlzLl9jb21wb3NpdGVGcmFtZSgpO1xuICAgIH1cbiAgfVxuXG4gIF9yZXNpemVWaWRlbygpIHtcbiAgICBjb25zdCB7ZXhwb3J0VmlkZW9XaWR0aCwgcmVzb2x1dGlvbn0gPSB0aGlzLnByb3BzO1xuICAgIHRoaXMuX3NldERldmljZVBpeGVsUmF0aW8ocmVzb2x1dGlvblswXSAvIGV4cG9ydFZpZGVvV2lkdGgpO1xuICB9XG5cbiAgX3NldERldmljZVBpeGVsUmF0aW8oZGV2aWNlUGl4ZWxSYXRpbzogbnVtYmVyKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvID0gZGV2aWNlUGl4ZWxSYXRpbztcbiAgfVxuXG4gIF9nZXRDb250YWluZXIoKSB7XG4gICAgY29uc3Qge2V4cG9ydFZpZGVvV2lkdGgsIHJlc29sdXRpb259ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBhc3BlY3RSYXRpbyA9IHJlc29sdXRpb25bMF0gLyByZXNvbHV0aW9uWzFdO1xuICAgIHJldHVybiB7aGVpZ2h0OiBleHBvcnRWaWRlb1dpZHRoIC8gYXNwZWN0UmF0aW8sIHdpZHRoOiBleHBvcnRWaWRlb1dpZHRofTtcbiAgfVxuXG4gIF9nZXRDdXJyZW50U3dpcGVQZXJjZW50YWdlKCk6IG51bWJlciB7XG4gICAgY29uc3Qge2N1cnJlbnRUaW1lTXMsIGR1cmF0aW9uTXMsIHN3aXBlU3RhcnRQY3QsIHN3aXBlRW5kUGN0LCBzd2lwZUVhc2luZ30gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiBnZXRTd2lwZVBlcmNlbnRhZ2VBdFRpbWUoY3VycmVudFRpbWVNcywgZHVyYXRpb25Ncywgc3dpcGVTdGFydFBjdCwgc3dpcGVFbmRQY3QsIHN3aXBlRWFzaW5nKTtcbiAgfVxuXG4gIF9nZXRMZWZ0Q2FudmFzKCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubGVmdE1hcFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5sZWZ0TWFwUmVmLmN1cnJlbnQuZ2V0TWFwKCkuZ2V0Q2FudmFzKCk7XG4gICAgfVxuICAgIC8vIEZhbGxiYWNrOiBEZWNrR0wgY2FudmFzIChubyBiYXNlbWFwIG1vZGUpXG4gICAgaWYgKHRoaXMubGVmdERlY2tSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuICh0aGlzLmxlZnREZWNrUmVmLmN1cnJlbnQgYXMgYW55KS5nZXRDYW52YXM/LigpIHx8IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgX2dldFJpZ2h0Q2FudmFzKCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMucmlnaHRNYXBSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIHRoaXMucmlnaHRNYXBSZWYuY3VycmVudC5nZXRNYXAoKS5nZXRDYW52YXMoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmlnaHREZWNrUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiAodGhpcy5yaWdodERlY2tSZWYuY3VycmVudCBhcyBhbnkpLmdldENhbnZhcz8uKCkgfHwgbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBfY29tcG9zaXRlRnJhbWUoKSB7XG4gICAgY29uc3QgbGVmdENhbnZhcyA9IHRoaXMuX2dldExlZnRDYW52YXMoKTtcbiAgICBjb25zdCByaWdodENhbnZhcyA9IHRoaXMuX2dldFJpZ2h0Q2FudmFzKCk7XG4gICAgY29uc3Qgb3V0cHV0Q2FudmFzID0gdGhpcy5jb21wb3NpdGVDYW52YXNSZWYuY3VycmVudDtcblxuICAgIGlmICghbGVmdENhbnZhcyB8fCAhcmlnaHRDYW52YXMgfHwgIW91dHB1dENhbnZhcykgcmV0dXJuO1xuXG4gICAgY29uc3QgcGVyY2VudGFnZSA9IHRoaXMuX2dldEN1cnJlbnRTd2lwZVBlcmNlbnRhZ2UoKTtcbiAgICBjb25zdCBnbG9iZSA9IHRoaXMucHJvcHMubWFwRGF0YT8ubWFwU3RhdGU/Lmdsb2JlO1xuICAgIGNvbnN0IHNob3dTdGFycyA9IEJvb2xlYW4oZ2xvYmU/LmVuYWJsZWQgJiYgZ2xvYmU/LmNvbmZpZz8uc3RhcnMpO1xuXG4gICAgY29tcG9zaXRlU3dpcGVGcmFtZShcbiAgICAgIGxlZnRDYW52YXMsXG4gICAgICByaWdodENhbnZhcyxcbiAgICAgIG91dHB1dENhbnZhcyxcbiAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICB0cnVlLFxuICAgICAgdGhpcy5wcm9wcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBzaG93U3RhcnNcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgcGFyZW50IGNvbnRhaW5lcidzIGFkYXB0ZXIgYWZ0ZXIgZWFjaCByZW5kZXIuXG4gICAqIFdlIG5lZWQgYm90aCBtYXBzIHRvIGJlIGxvYWRlZCBiZWZvcmUgY29tcG9zaXRpbmcgYW5kIGNhcHR1cmluZy5cbiAgICovXG4gIG9uQWZ0ZXJSZW5kZXIgPSAocHJvY2VlZFRvTmV4dEZyYW1lOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgY29uc3QgbGVmdExvYWRlZCA9IHRoaXMuX2FyZUxheWVyc0xvYWRlZCgnbGVmdCcpO1xuICAgIGNvbnN0IHJpZ2h0TG9hZGVkID0gdGhpcy5fYXJlTGF5ZXJzTG9hZGVkKCdyaWdodCcpO1xuICAgIGNvbnN0IGxlZnRUaWxlc1JlYWR5ID1cbiAgICAgIHRoaXMucHJvcHMuZGlzYWJsZUJhc2VNYXAgfHwgIXRoaXMubGVmdE1hcFJlZi5jdXJyZW50IHx8IHRoaXMubGVmdE1hcFJlZi5jdXJyZW50LmdldE1hcCgpLmFyZVRpbGVzTG9hZGVkKCk7XG4gICAgY29uc3QgcmlnaHRUaWxlc1JlYWR5ID1cbiAgICAgIHRoaXMucHJvcHMuZGlzYWJsZUJhc2VNYXAgfHwgIXRoaXMucmlnaHRNYXBSZWYuY3VycmVudCB8fCB0aGlzLnJpZ2h0TWFwUmVmLmN1cnJlbnQuZ2V0TWFwKCkuYXJlVGlsZXNMb2FkZWQoKTtcblxuICAgIGlmIChsZWZ0TG9hZGVkICYmIHJpZ2h0TG9hZGVkICYmIGxlZnRUaWxlc1JlYWR5ICYmIHJpZ2h0VGlsZXNSZWFkeSkge1xuICAgICAgdGhpcy5fY29tcG9zaXRlRnJhbWUoKTtcbiAgICAgIHByb2NlZWRUb05leHRGcmFtZSgpO1xuICAgIH1cbiAgfTtcblxuICBfYXJlTGF5ZXJzTG9hZGVkKHNpZGU6ICdsZWZ0JyB8ICdyaWdodCcpOiBib29sZWFuIHtcbiAgICBjb25zdCBkZWNrUmVmID0gc2lkZSA9PT0gJ2xlZnQnID8gdGhpcy5sZWZ0RGVja1JlZiA6IHRoaXMucmlnaHREZWNrUmVmO1xuICAgIGlmICghZGVja1JlZi5jdXJyZW50KSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgbGF5ZXJzID0gZGVja1JlZi5jdXJyZW50LnByb3BzLmxheWVycyB8fCBbXTtcbiAgICByZXR1cm4gbGF5ZXJzLmV2ZXJ5KChsYXllcjogYW55KSA9PiBsYXllci5pc0xvYWRlZCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb21wb3NpdGVkIGNhbnZhcyBlbGVtZW50IGZvciB2aWRlbyBjYXB0dXJlLlxuICAgKi9cbiAgZ2V0Q29tcG9zaXRlQ2FudmFzKCk6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9zaXRlQ2FudmFzUmVmLmN1cnJlbnQ7XG4gIH1cblxuICBfY3JlYXRlTGF5ZXJzKG1hcEluZGV4OiBudW1iZXIsIGJlZm9yZUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3Qge2RlY2tQcm9wcywgbWFwRGF0YSwgdmlld1N0YXRlLCBkaXNhYmxlQmFzZU1hcCwgbWFwUHJvcHN9ID0gdGhpcy5wcm9wcztcblxuICAgIC8vIEdsb2JlIHN3aXBlOiBidWlsZCBhIGZyZXNoIHNldCBvZiBnbG9iZSBsYXllcnMgcGVyIHNpZGUuIEVhY2ggc2lkZSBpcyBhXG4gICAgLy8gc2VwYXJhdGUgRGVjaywgc28gaXQgbmVlZHMgaXRzIE9XTiBMYXllciBpbnN0YW5jZXMgKGRlY2suZ2wgTGF5ZXIgb2JqZWN0c1xuICAgIC8vIGFyZSBzdGF0ZWZ1bCBhbmQgYm91bmQgdG8gb25lIERlY2sg4oCUIHNoYXJpbmcgdGhlbSBtYWtlcyB0aGUgc2Vjb25kIERlY2tcbiAgICAvLyBhc3NlcnQgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZW0pLiBCdWlsZGluZyBwZXIgYG1hcEluZGV4YCBhbHNvIHJlc3BlY3RzIHRoZVxuICAgIC8vIHNwbGl0LW1hcCBsYXllciB2aXNpYmlsaXR5IG9uIGVhY2ggaGFsZiBvZiB0aGUgc3dpcGUuXG4gICAgaWYgKGRpc2FibGVCYXNlTWFwICYmIG1hcERhdGE/Lm1hcFN0YXRlPy5nbG9iZT8uZW5hYmxlZCkge1xuICAgICAgcmV0dXJuIGdldEdsb2JlRXhwb3J0TGF5ZXJzKG1hcERhdGEsIHtcbiAgICAgICAgbWFwSW5kZXgsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBtYXBQcm9wcz8ubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybDogbWFwUHJvcHM/Lm1hcGJveEFwaVVybCxcbiAgICAgICAgdmlld1N0YXRlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoZGVja1Byb3BzICYmIGRlY2tQcm9wcy5sYXllcnMpIHtcbiAgICAgIC8vIE5vbi1nbG9iZSBwYXRoIHdpdGggZXhwbGljaXQgbGF5ZXJzOiBjbG9uZSBwZXIgc2lkZSB3aXRoIGEgdW5pcXVlIGlkIHNvXG4gICAgICAvLyB0aGUgdHdvIERlY2sgaW5zdGFuY2VzIGRvbid0IHNoYXJlIHRoZSBzYW1lIHN0YXRlZnVsIExheWVyIG9iamVjdHMuXG4gICAgICByZXR1cm4gZGVja1Byb3BzLmxheWVycy5tYXAoKGxheWVyOiBhbnkpID0+XG4gICAgICAgIGxheWVyICYmIHR5cGVvZiBsYXllci5jbG9uZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgID8gbGF5ZXIuY2xvbmUoe2lkOiBgJHtsYXllci5pZH0tc3dpcGUtJHttYXBJbmRleH1gfSlcbiAgICAgICAgICA6IGxheWVyXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlS2VwbGVyTGF5ZXJzKG1hcERhdGEsIHZpZXdTdGF0ZSwgbWFwSW5kZXgsIGJlZm9yZUlkKTtcbiAgfVxuXG4gIF9vbkxlZnRNYXBMb2FkID0gKCkgPT4ge1xuICAgIGNvbnN0IG1hcCA9IHRoaXMubGVmdE1hcFJlZi5jdXJyZW50Py5nZXRNYXAoKTtcbiAgICBpZiAobWFwKSB7XG4gICAgICBtYXAub24oJ3JlbmRlcicsICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmxlZnRSZWFkeSkge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2xlZnRSZWFkeTogdHJ1ZX0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RyeUNvbXBvc2l0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9vblJpZ2h0TWFwTG9hZCA9ICgpID0+IHtcbiAgICBjb25zdCBtYXAgPSB0aGlzLnJpZ2h0TWFwUmVmLmN1cnJlbnQ/LmdldE1hcCgpO1xuICAgIGlmIChtYXApIHtcbiAgICAgIG1hcC5vbigncmVuZGVyJywgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3RhdGUucmlnaHRSZWFkeSkge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3JpZ2h0UmVhZHk6IHRydWV9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90cnlDb21wb3NpdGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBfdHJ5Q29tcG9zaXRlKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmxlZnRSZWFkeSAmJiB0aGlzLnN0YXRlLnJpZ2h0UmVhZHkpIHtcbiAgICAgIHRoaXMuX2NvbXBvc2l0ZUZyYW1lKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2xvYmUgKGRpc2FibGVCYXNlTWFwKSBtb2RlIGhhcyBubyBSZWFjdE1hcEdMIGFuZCB0aGVyZWZvcmUgbm8gbWFwICdyZW5kZXInXG4gIC8vIGV2ZW50IHRvIGRyaXZlIGNvbXBvc2l0aW5nLiBJbnN0ZWFkIGVhY2ggYmFyZSA8RGVja0dMPiByZXBvcnRzIHdoZW4gaXQgaGFzXG4gIC8vIGRyYXduIHZpYSBvbkFmdGVyUmVuZGVyOyBvbmNlIGJvdGggc2lkZXMgaGF2ZSByZW5kZXJlZCB3ZSBjb21wb3NpdGUuIFdpdGhvdXRcbiAgLy8gdGhpcyB0aGUgY29tcG9zaXRlIG91dHB1dCBjYW52YXMgaXMgbmV2ZXIgcGFpbnRlZCB1bnRpbCB0aGUgdXNlciBwcmVzc2VzXG4gIC8vIHBsYXksIHNvIHRoZSBwcmV2aWV3IHNob3dzIGEgYmxhbmsgKHdoaXRlKSBmcmFtZSBvbiBtb3VudC5cbiAgX29uRGVja1JlbmRlciA9IChzaWRlOiAnbGVmdCcgfCAncmlnaHQnKSA9PiB7XG4gICAgY29uc3QgcmVhZHlLZXkgPSBzaWRlID09PSAnbGVmdCcgPyAnbGVmdFJlYWR5JyA6ICdyaWdodFJlYWR5JztcbiAgICBpZiAoIXRoaXMuc3RhdGVbcmVhZHlLZXldKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtbcmVhZHlLZXldOiB0cnVlfSBhcyBhbnkpO1xuICAgIH1cbiAgICAvLyBDb21wb3NpdGUgYXMgc29vbiBhcyBib3RoIGRlY2tzIGV4aXN0IGFuZCBoYXZlIGRyYXduLiBXZSBjaGVjayB0aGUgZGVja1xuICAgIC8vIHJlZnMgZGlyZWN0bHkgKG5vdCBSZWFjdCBzdGF0ZSwgd2hpY2ggY2FuIGJlIHN0YWxlIHJpZ2h0IGFmdGVyIHNldFN0YXRlKVxuICAgIC8vIGFuZCBpbnRlbnRpb25hbGx5IGRvbid0IGdhdGUgb24gbGF5ZXJzIGJlaW5nIGZ1bGx5IGxvYWRlZCBoZXJlICh0aGF0IGdhdGVcbiAgICAvLyBsaXZlcyBpbiB0aGUgY2FwdHVyZSBsb29wKTogZm9yIGEgbGl2ZSBwcmV2aWV3IHdlIHdhbnQgdG8gc2hvdyB0aGUgZ2xvYmVcbiAgICAvLyBhcyBpdCBzdHJlYW1zIGluIHJhdGhlciB0aGFuIGEgYmxhbmsgZnJhbWUgd2hpbGUgdGlsZXMgbG9hZC5cbiAgICBpZiAodGhpcy5sZWZ0RGVja1JlZi5jdXJyZW50ICYmIHRoaXMucmlnaHREZWNrUmVmLmN1cnJlbnQpIHtcbiAgICAgIHRoaXMuX2NvbXBvc2l0ZUZyYW1lKCk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJNYXBDYW52YXMoXG4gICAgc2lkZTogJ2xlZnQnIHwgJ3JpZ2h0JyxcbiAgICBtYXBJbmRleDogbnVtYmVyXG4gICkge1xuICAgIGNvbnN0IHt2aWV3U3RhdGUsIGFkYXB0ZXIsIGRlY2tQcm9wcywgbWFwUHJvcHMsIGRpc2FibGVCYXNlTWFwLCBtYXBib3hMYXllckJlZm9yZUlkfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge3dpZHRoLCBoZWlnaHR9ID0gdGhpcy5fZ2V0Q29udGFpbmVyKCk7XG4gICAgY29uc3Qga2VwbGVyTGF5ZXJzID0gdGhpcy5fY3JlYXRlTGF5ZXJzKG1hcEluZGV4LCBtYXBib3hMYXllckJlZm9yZUlkKTtcbiAgICBjb25zdCBtYXBSZWYgPSBzaWRlID09PSAnbGVmdCcgPyB0aGlzLmxlZnRNYXBSZWYgOiB0aGlzLnJpZ2h0TWFwUmVmO1xuICAgIGNvbnN0IGRlY2tSZWYgPSBzaWRlID09PSAnbGVmdCcgPyB0aGlzLmxlZnREZWNrUmVmIDogdGhpcy5yaWdodERlY2tSZWY7XG4gICAgY29uc3Qgb25NYXBMb2FkID0gc2lkZSA9PT0gJ2xlZnQnID8gdGhpcy5fb25MZWZ0TWFwTG9hZCA6IHRoaXMuX29uUmlnaHRNYXBMb2FkO1xuICAgIGNvbnN0IGRlY2sgPSBkZWNrUmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoZGlzYWJsZUJhc2VNYXApIHtcbiAgICAgIGNvbnN0IGFkYXB0ZXJQcm9wcyA9IGFkYXB0ZXIuZ2V0UHJvcHMoe1xuICAgICAgICBkZWNrOiBkZWNrIGFzIGFueSxcbiAgICAgICAgZXh0cmFQcm9wczogey4uLmRlY2tQcm9wcywgbGF5ZXJzOiBrZXBsZXJMYXllcnN9XG4gICAgICB9KSBhcyBhbnk7XG4gICAgICBjb25zdCBhZGFwdGVyT25BZnRlclJlbmRlciA9IGFkYXB0ZXJQcm9wcy5vbkFmdGVyUmVuZGVyO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPE1hcExheWVyICR3aWR0aD17d2lkdGh9ICRoZWlnaHQ9e2hlaWdodH0+XG4gICAgICAgICAgPERlY2tHTFxuICAgICAgICAgICAgcmVmPXtyZWYgPT4gc2V0UmVmKGRlY2tSZWYsIHJlZj8uZGVjayBhcyBhbnkpfVxuICAgICAgICAgICAgZGV2aWNlUHJvcHM9e0VYUE9SVF9ERUNLX0RFVklDRV9QUk9QU31cbiAgICAgICAgICAgIHsuLi5hZGFwdGVyUHJvcHN9XG4gICAgICAgICAgICB2aWV3U3RhdGU9e3ZpZXdTdGF0ZX1cbiAgICAgICAgICAgIG9uVmlld1N0YXRlQ2hhbmdlPXsoe3ZpZXdTdGF0ZTogdnN9OiBhbnkpID0+IHRoaXMucHJvcHMuc2V0Vmlld1N0YXRlKHZzKX1cbiAgICAgICAgICAgIG9uQWZ0ZXJSZW5kZXI9eyhwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGFkYXB0ZXJPbkFmdGVyUmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgYWRhcHRlck9uQWZ0ZXJSZW5kZXIocGFyYW1zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLl9vbkRlY2tSZW5kZXIoc2lkZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgey4uLnRoaXMuX2dldENvbnRhaW5lcigpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTWFwTGF5ZXI+XG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHtcbiAgICAgIG1hcFN0eWxlOiBtYXBTdHlsZUZyb21Qcm9wcyxcbiAgICAgIG1hcExpYixcbiAgICAgIHRyYW5zZm9ybVJlcXVlc3RcbiAgICB9ID0gKG1hcFByb3BzIHx8IHt9KSBhcyBhbnk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPE1hcExheWVyICR3aWR0aD17d2lkdGh9ICRoZWlnaHQ9e2hlaWdodH0+XG4gICAgICAgIDxSZWFjdE1hcEdMXG4gICAgICAgICAgcmVmPXttYXBSZWZ9XG4gICAgICAgICAgc3R5bGU9e3t3aWR0aCwgaGVpZ2h0fX1cbiAgICAgICAgICBhbnRpYWxpYXNcbiAgICAgICAgICBtYXBMaWI9e21hcExpYn1cbiAgICAgICAgICB0cmFuc2Zvcm1SZXF1ZXN0PXt0cmFuc2Zvcm1SZXF1ZXN0fVxuICAgICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlclxuICAgICAgICAgIHsuLi52aWV3U3RhdGV9XG4gICAgICAgICAgbWFwU3R5bGU9e21hcFN0eWxlRnJvbVByb3BzfVxuICAgICAgICAgIG9uTG9hZD17b25NYXBMb2FkfVxuICAgICAgICA+XG4gICAgICAgICAgPERlY2tHTE92ZXJsYXlcbiAgICAgICAgICAgIHJlZj17ZGVja1JlZn1cbiAgICAgICAgICAgIGRldmljZVByb3BzPXtFWFBPUlRfT1ZFUkxBWV9ERVZJQ0VfUFJPUFN9XG4gICAgICAgICAgICB7Li4uYWRhcHRlci5nZXRQcm9wcyh7ZGVjazogZGVjayBhcyBhbnksIGV4dHJhUHJvcHM6IHsuLi5kZWNrUHJvcHMsIGxheWVyczoga2VwbGVyTGF5ZXJzfX0pfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvUmVhY3RNYXBHTD5cbiAgICAgIDwvTWFwTGF5ZXI+XG4gICAgKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7cmVzb2x1dGlvbn0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IHRoaXMuX2dldENvbnRhaW5lcigpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQcmV2aWV3Q29udGFpbmVyICR3aWR0aD17d2lkdGh9ICRoZWlnaHQ9e2hlaWdodH0+XG4gICAgICAgIHsvKiBIaWRkZW4gbWFwIGNhbnZhc2VzIGZvciBsZWZ0IChtYXBJbmRleD0wKSBhbmQgcmlnaHQgKG1hcEluZGV4PTEpICovfVxuICAgICAgICB7dGhpcy5fcmVuZGVyTWFwQ2FudmFzKCdsZWZ0JywgMCl9XG4gICAgICAgIHt0aGlzLl9yZW5kZXJNYXBDYW52YXMoJ3JpZ2h0JywgMSl9XG5cbiAgICAgICAgey8qIFZpc2libGUgY29tcG9zaXRlZCBvdXRwdXQgKi99XG4gICAgICAgIDxWaXNpYmxlQ2FudmFzXG4gICAgICAgICAgcmVmPXt0aGlzLmNvbXBvc2l0ZUNhbnZhc1JlZn1cbiAgICAgICAgICB3aWR0aD17cmVzb2x1dGlvblswXX1cbiAgICAgICAgICBoZWlnaHQ9e3Jlc29sdXRpb25bMV19XG4gICAgICAgICAgJHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICAkaGVpZ2h0PXtoZWlnaHR9XG4gICAgICAgIC8+XG4gICAgICA8L1ByZXZpZXdDb250YWluZXI+XG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSix1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssUUFBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0saUJBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFPLE9BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLG9CQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxZQUFBLEdBQUFULE9BQUE7QUFJd0IsSUFBQVUsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQTtBQUFBLFNBQUFiLHdCQUFBYyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBaEIsdUJBQUEsWUFBQUEsd0JBQUFjLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxtQkFBQVQs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OUksR0FBRyxFQUFFbUksTUFBTztRQUNaeUIsS0FBSyxFQUFFO1VBQUNqRixLQUFLLEVBQUxBLEtBQUs7VUFBRUQsTUFBTSxFQUFOQTtRQUFNLENBQUU7UUFDdkJtRixTQUFTO1FBQ1RILE1BQU0sRUFBRUEsTUFBTztRQUNmQyxnQkFBZ0IsRUFBRUEsZ0JBQWlCO1FBQ25DRyxxQkFBcUI7TUFBQSxHQUNqQjNDLFNBQVM7UUFDYnNDLFFBQVEsRUFBRUQsaUJBQWtCO1FBQzVCTyxNQUFNLEVBQUUzQjtNQUFVLGlCQUVsQmhNLE1BQUEsWUFBQXlNLGFBQUEsQ0FBQzFJLGFBQWEsTUFBQTJJLFNBQUE7UUFDWjlJLEdBQUcsRUFBRXVHLE9BQVE7UUFDYndDLFdBQVcsRUFBRWlCO01BQTRCLEdBQ3JDakMsT0FBTyxDQUFDVSxRQUFRLENBQUM7UUFBQ0YsSUFBSSxFQUFFQSxJQUFXO1FBQUVHLFVBQVUsRUFBQWxKLGFBQUEsQ0FBQUEsYUFBQSxLQUFNMEgsU0FBUztVQUFFVixNQUFNLEVBQUUwQjtRQUFZO01BQUMsQ0FBQyxDQUFDLENBQzVGLENBQ1MsQ0FDSixDQUFDO0lBRWY7RUFBQztJQUFBekUsR0FBQTtJQUFBeEQsS0FBQSxFQUVELFNBQUFnSyxNQUFNQSxDQUFBLEVBQUc7TUFDUCxJQUFPcEcsVUFBVSxHQUFJLElBQUksQ0FBQ3hELEtBQUssQ0FBeEJ3RCxVQUFVO01BQ2pCLElBQUFxRyxvQkFBQSxHQUF3QixJQUFJLENBQUMzRixhQUFhLENBQUMsQ0FBQztRQUFyQ0ksS0FBSyxHQUFBdUYsb0JBQUEsQ0FBTHZGLEtBQUs7UUFBRUQsTUFBTSxHQUFBd0Ysb0JBQUEsQ0FBTnhGLE1BQU07TUFFcEIsb0JBQ0V0SSxNQUFBLFlBQUF5TSxhQUFBLENBQUNoSSxnQkFBZ0I7UUFBQ0ksTUFBTSxFQUFFMEQsS0FBTTtRQUFDekQsT0FBTyxFQUFFd0Q7TUFBTyxHQUU5QyxJQUFJLENBQUNrRCxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQ2hDLElBQUksQ0FBQ0EsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxlQUdsQ3hMLE1BQUEsWUFBQXlNLGFBQUEsQ0FBQzFILGFBQWE7UUFDWm5CLEdBQUcsRUFBRSxJQUFJLENBQUM0RixrQkFBbUI7UUFDN0JqQixLQUFLLEVBQUVkLFVBQVUsQ0FBQyxDQUFDLENBQUU7UUFDckJhLE1BQU0sRUFBRWIsVUFBVSxDQUFDLENBQUMsQ0FBRTtRQUN0QjVDLE1BQU0sRUFBRTBELEtBQU07UUFDZHpELE9BQU8sRUFBRXdEO01BQU8sQ0FDakIsQ0FDZSxDQUFDO0lBRXZCO0VBQUM7QUFBQSxFQTFTMEN5RixnQkFBUyIsImlnbm9yZUxpc3QiOltdfQ==