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

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 (111) hide show
  1. package/dist/cjs/common/data-table/grid.js +2 -2
  2. package/dist/cjs/common/data-table/index.js +3 -3
  3. package/dist/cjs/common/file-uploader/file-upload.js +251 -40
  4. package/dist/cjs/common/icons/circle.js +54 -0
  5. package/dist/cjs/common/icons/index.js +8 -1
  6. package/dist/cjs/common/item-selector/item-selector.js +2 -2
  7. package/dist/cjs/common/portaled.js +3 -3
  8. package/dist/cjs/common/time-range-slider.js +2 -2
  9. package/dist/cjs/common/timeline-slider.js +2 -2
  10. package/dist/cjs/editor/editor.js +2 -2
  11. package/dist/cjs/effects/effect-configurator.js +2 -2
  12. package/dist/cjs/effects/effect-manager.js +32 -17
  13. package/dist/cjs/effects/effect-time-configurator.js +110 -42
  14. package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +2 -2
  15. package/dist/cjs/filters/time-widget.js +2 -2
  16. package/dist/cjs/kepler-gl.js +6 -2
  17. package/dist/cjs/map/layer-hover-info.js +2 -2
  18. package/dist/cjs/map/map-control.js +2 -2
  19. package/dist/cjs/map/map-draw-panel.js +10 -1
  20. package/dist/cjs/map-container.js +2 -2
  21. package/dist/cjs/map-view-state-context.js +3 -3
  22. package/dist/cjs/modal-container.js +2 -2
  23. package/dist/cjs/modals/cloud-components/cloud-storage-disclaimer.js +24 -0
  24. package/dist/cjs/modals/cloud-tile.js +39 -10
  25. package/dist/cjs/modals/export-map-modal/components.js +16 -7
  26. package/dist/cjs/modals/export-map-modal/export-html-map.js +5 -9
  27. package/dist/cjs/modals/export-map-modal/export-json-map.js +4 -8
  28. package/dist/cjs/modals/export-map-modal/export-map-modal.js +21 -16
  29. package/dist/cjs/modals/image-modal-container.js +2 -2
  30. package/dist/cjs/modals/load-data-modal.js +3 -3
  31. package/dist/cjs/modals/load-storage-map.js +9 -6
  32. package/dist/cjs/modals/save-map-modal.js +4 -3
  33. package/dist/cjs/modals/share-map-modal.js +5 -4
  34. package/dist/cjs/modals/swipe-export-video-preview.js +2 -2
  35. package/dist/cjs/notification-panel/notification-item.js +58 -12
  36. package/dist/cjs/plot-container.js +12 -5
  37. package/dist/cjs/remote-dataset-refresh-controller.js +50 -0
  38. package/dist/cjs/side-panel/common/dataset-info.js +187 -8
  39. package/dist/cjs/side-panel/common/dataset-refresh-progress.js +63 -0
  40. package/dist/cjs/side-panel/common/dataset-title.js +76 -13
  41. package/dist/cjs/side-panel/common/source-data-catalog.js +31 -6
  42. package/dist/cjs/side-panel/filter-manager.js +7 -3
  43. package/dist/cjs/side-panel/filter-panel/filter-panel.js +2 -2
  44. package/dist/cjs/side-panel/layer-manager.js +14 -4
  45. package/dist/cjs/side-panel/layer-panel/custom-palette.js +2 -2
  46. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +14 -4
  47. package/dist/cjs/side-panel/layer-panel/dataset-section.js +7 -3
  48. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +49 -35
  49. package/dist/cjs/side-panel/layer-panel/vector-tile-layer-configurator.js +4 -3
  50. package/dist/common/icons/circle.d.ts +10 -0
  51. package/dist/common/icons/index.d.ts +1 -0
  52. package/dist/effects/effect-manager.d.ts +1 -1
  53. package/dist/esm/common/data-table/grid.js +2 -2
  54. package/dist/esm/common/data-table/index.js +3 -3
  55. package/dist/esm/common/file-uploader/file-upload.js +252 -41
  56. package/dist/esm/common/icons/circle.js +48 -0
  57. package/dist/esm/common/icons/index.js +2 -1
  58. package/dist/esm/common/item-selector/item-selector.js +2 -2
  59. package/dist/esm/common/portaled.js +3 -3
  60. package/dist/esm/common/time-range-slider.js +2 -2
  61. package/dist/esm/common/timeline-slider.js +2 -2
  62. package/dist/esm/editor/editor.js +2 -2
  63. package/dist/esm/effects/effect-configurator.js +2 -2
  64. package/dist/esm/effects/effect-manager.js +34 -19
  65. package/dist/esm/effects/effect-time-configurator.js +111 -43
  66. package/dist/esm/filters/filter-panels/polygon-filter-panel.js +2 -2
  67. package/dist/esm/filters/time-widget.js +2 -2
  68. package/dist/esm/kepler-gl.js +6 -2
  69. package/dist/esm/map/layer-hover-info.js +2 -2
  70. package/dist/esm/map/map-control.js +2 -2
  71. package/dist/esm/map/map-draw-panel.js +11 -2
  72. package/dist/esm/map-container.js +2 -2
  73. package/dist/esm/map-view-state-context.js +3 -3
  74. package/dist/esm/modal-container.js +2 -2
  75. package/dist/esm/modals/cloud-components/cloud-storage-disclaimer.js +19 -0
  76. package/dist/esm/modals/cloud-tile.js +39 -10
  77. package/dist/esm/modals/export-map-modal/components.js +16 -7
  78. package/dist/esm/modals/export-map-modal/export-html-map.js +6 -10
  79. package/dist/esm/modals/export-map-modal/export-json-map.js +5 -9
  80. package/dist/esm/modals/export-map-modal/export-map-modal.js +21 -14
  81. package/dist/esm/modals/image-modal-container.js +2 -2
  82. package/dist/esm/modals/load-data-modal.js +3 -3
  83. package/dist/esm/modals/load-storage-map.js +8 -3
  84. package/dist/esm/modals/save-map-modal.js +4 -3
  85. package/dist/esm/modals/share-map-modal.js +5 -4
  86. package/dist/esm/modals/swipe-export-video-preview.js +2 -2
  87. package/dist/esm/notification-panel/notification-item.js +60 -14
  88. package/dist/esm/plot-container.js +12 -5
  89. package/dist/esm/remote-dataset-refresh-controller.js +44 -0
  90. package/dist/esm/side-panel/common/dataset-info.js +186 -9
  91. package/dist/esm/side-panel/common/dataset-refresh-progress.js +56 -0
  92. package/dist/esm/side-panel/common/dataset-title.js +77 -14
  93. package/dist/esm/side-panel/common/source-data-catalog.js +29 -6
  94. package/dist/esm/side-panel/filter-manager.js +7 -3
  95. package/dist/esm/side-panel/filter-panel/filter-panel.js +2 -2
  96. package/dist/esm/side-panel/layer-manager.js +14 -4
  97. package/dist/esm/side-panel/layer-panel/custom-palette.js +2 -2
  98. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +14 -4
  99. package/dist/esm/side-panel/layer-panel/dataset-section.js +7 -3
  100. package/dist/esm/side-panel/layer-panel/layer-configurator.js +49 -35
  101. package/dist/esm/side-panel/layer-panel/vector-tile-layer-configurator.js +4 -3
  102. package/dist/kepler-gl.d.ts +1 -0
  103. package/dist/modals/cloud-components/cloud-storage-disclaimer.d.ts +2 -0
  104. package/dist/modals/export-map-modal/components.d.ts +14 -0
  105. package/dist/remote-dataset-refresh-controller.d.ts +11 -0
  106. package/dist/side-panel/common/dataset-info.d.ts +10 -0
  107. package/dist/side-panel/common/dataset-refresh-progress.d.ts +11 -0
  108. package/dist/side-panel/common/dataset-title.d.ts +5 -0
  109. package/dist/side-panel/common/source-data-catalog.d.ts +3 -0
  110. package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -0
  111. package/package.json +17 -18
@@ -47,6 +47,7 @@ var _geocoderPanel = _interopRequireDefault(require("./geocoder-panel"));
47
47
  var _effectManager = _interopRequireDefault(require("./effects/effect-manager"));
48
48
  var _dndContext = _interopRequireDefault(require("./dnd-context"));
49
49
  var _useCloudListProvider = require("./hooks/use-cloud-list-provider");
50
+ var _remoteDatasetRefreshController = _interopRequireDefault(require("./remote-dataset-refresh-controller"));
50
51
  var _utils = require("@kepler.gl/utils");
51
52
  var _styles = require("@kepler.gl/styles");
52
53
  var _templateObject; // SPDX-License-Identifier: MIT
@@ -581,7 +582,10 @@ function KeplerGlFactory(BottomWidget, GeoCoderPanel, MapContainer, MapsLayout,
581
582
  height: "".concat(height, "px")
582
583
  },
583
584
  ref: this.root
584
- }, /*#__PURE__*/_react["default"].createElement(NotificationPanel, notificationPanelFields), /*#__PURE__*/_react["default"].createElement(DndContext, {
585
+ }, /*#__PURE__*/_react["default"].createElement(NotificationPanel, notificationPanelFields), /*#__PURE__*/_react["default"].createElement(_remoteDatasetRefreshController["default"], {
586
+ datasets: visState.datasets,
587
+ refreshDataset: this.props.visStateActions.refreshDataset
588
+ }), /*#__PURE__*/_react["default"].createElement(DndContext, {
585
589
  visState: visState
586
590
  }, !uiState.readOnly && !readOnly && /*#__PURE__*/_react["default"].createElement(SidePanel, sideFields), /*#__PURE__*/_react["default"].createElement(MapsLayout, {
587
591
  className: "maps",
@@ -678,4 +682,4 @@ function mergeActions(actions, userActions) {
678
682
  return _objectSpread(_objectSpread({}, actions), overrides);
679
683
  }
680
684
  var _default = exports["default"] = KeplerGlFactory;
681
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVkdXgiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZXNlbGVjdCIsIl9rZXBsZXJnbENvbm5lY3QiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfY29tbW9uVXRpbHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfY29uc3RhbnRzIiwiX3NpZGVQYW5lbCIsIl9tYXBDb250YWluZXIyIiwiX21hcHNMYXlvdXQiLCJfYm90dG9tV2lkZ2V0IiwiX21vZGFsQ29udGFpbmVyIiwiX3Bsb3RDb250YWluZXIiLCJfbm90aWZpY2F0aW9uUGFuZWwiLCJfZ2VvY29kZXJQYW5lbCIsIl9lZmZlY3RNYW5hZ2VyIiwiX2RuZENvbnRleHQiLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJfdXRpbHMiLCJfc3R5bGVzIiwiX3RlbXBsYXRlT2JqZWN0IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiVHlwZUVycm9yIiwiYSIsInUiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsImZyb20iLCJ0ZXN0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiR2xvYmFsU3R5bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwibGluZUhlaWdodCIsImxhYmVsQ29sb3IiLCJCb3R0b21XaWRnZXRPdXRlciIsIl9yZWYiLCJhYnNvbHV0ZSIsImNvbmNhdCIsImlzVmlld3BvcnREaXNqb2ludGVkIiwiZXhwb3J0cyIsIm1hcFN0YXRlIiwiaXNTcGxpdCIsImlzVmlld3BvcnRTeW5jZWQiLCJzcGxpdE1hcFZpZXdwb3J0cyIsIm1hcFN0YXRlU2VsZWN0b3IiLCJjcmVhdGVTZWxlY3RvciIsIl8iLCJpbmRleCIsIk51bWJlciIsImlzRmluaXRlIiwibWFwRmllbGRzU2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJhdHRyaWJ1dGlvbiIsImF0dHJpYnV0aW9uU2VsZWN0b3IiLCJnZXRNYXBib3hSZWYiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIkRFRkFVTFRfS0VQTEVSX0dMX1BST1BTIiwiZGF0YXNldEF0dHJpYnV0aW9ucyIsInNvdXJjZXMiLCJhdHRyaWJ1dGlvbkxvZ29zIiwibG9nb3MiLCJtYXBTdHlsZSIsIm9uRGVja0luaXRpYWxpemVkIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJvbk1vdXNlTW92ZSIsImRlY2tHbFByb3BzIiwidWlTdGF0ZUFjdGlvbnMiLCJ2aXNTdGF0ZUFjdGlvbnMiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ2aXNTdGF0ZSIsImFjdGl2ZVNpZGVQYW5lbCIsInVpU3RhdGUiLCJtYXBDb250cm9scyIsInJlYWRPbmx5IiwibG9jYWxlIiwidWlUaGVtZSIsImlzTG9hZGluZ0luZGljYXRvclZpc2libGUiLCJsb2FkaW5nSW5kaWNhdG9yVmFsdWUiLCJzaWRlUGFuZWxXaWR0aCIsIndpZHRoIiwidG9wTWFwQ29udGFpbmVyUHJvcHMiLCJib3R0b21NYXBDb250YWluZXJQcm9wcyIsInRyYW5zZm9ybVJlcXVlc3QiLCJSVExUZXh0UGx1Z2luIiwiZ2V0VmlzaWJsZURhdGFzZXRzIiwiZGF0YXNldHMiLCJmaWx0ZXJPYmplY3RCeVByZWRpY2F0ZSIsImtleSIsIkdFT0NPREVSX0RBVEFTRVRfTkFNRSIsInNpZGVQYW5lbFNlbGVjdG9yIiwiYXZhaWxhYmxlUHJvdmlkZXJzIiwiZmlsdGVyZWREYXRhc2V0cyIsImFwcE5hbWUiLCJ2ZXJzaW9uIiwiYXBwV2Vic2l0ZSIsIm9uU2F2ZU1hcCIsIm1hcFN0eWxlQWN0aW9ucyIsImZpbHRlcnMiLCJsYXllcnMiLCJsYXllck9yZGVyIiwibGF5ZXJDbGFzc2VzIiwiaW50ZXJhY3Rpb25Db25maWciLCJtYXBJbmZvIiwibGF5ZXJCbGVuZGluZyIsIm92ZXJsYXlCbGVuZGluZyIsIm1hcFNhdmVkIiwicHJvdmlkZXJTdGF0ZSIsInBsb3RDb250YWluZXJTZWxlY3RvciIsImhlaWdodCIsInJhdGlvIiwiZXhwb3J0SW1hZ2UiLCJyZXNvbHV0aW9uIiwibGVnZW5kIiwiY2VudGVyIiwiaW1hZ2VTaXplIiwiZXNjYXBlWGh0bWxGb3JXZWJwYWNrIiwibWFwRmllbGRzIiwiYWRkTm90aWZpY2F0aW9uIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VFcnJvciIsInNwbGl0TWFwcyIsImlzU3BsaXRTZWxlY3RvciIsImJvdHRvbVdpZGdldFNlbGVjdG9yIiwiYW5pbWF0aW9uQ29uZmlnIiwidG9nZ2xlTW9kYWwiLCJzaWRlUGFuZWwiLCJtYXJnaW4iLCJsZWZ0IiwibW9kYWxDb250YWluZXJTZWxlY3RvciIsInJvb3ROb2RlIiwicHJvdmlkZXJBY3Rpb25zIiwiY2xvdWRQcm92aWRlcnMiLCJvbkV4cG9ydFRvQ2xvdWRTdWNjZXNzIiwib25Mb2FkQ2xvdWRNYXBTdWNjZXNzIiwib25Mb2FkQ2xvdWRNYXBFcnJvciIsIm9uRXhwb3J0VG9DbG91ZEVycm9yIiwiZ2VvQ29kZXJQYW5lbFNlbGVjdG9yIiwiZGltZW5zaW9ucyIsIl9wcm9wcyR2aXNTdGF0ZSRpbnRlciIsIl9wcm9wcyR2aXNTdGF0ZSRpbnRlcjIiLCJpc0dlb2NvZGVyRW5hYmxlZCIsImdlb2NvZGVyIiwiZW5hYmxlZCIsInVwZGF0ZVZpc0RhdGEiLCJyZW1vdmVEYXRhc2V0IiwidXBkYXRlTWFwIiwiYXBwV2lkdGgiLCJsaW1pdFNlYXJjaCIsImNvbmZpZyIsImRhdGFzZXRBdHRyaWJ1dGlvblNlbGVjdG9yIiwic3RhdGUiLCJ1bmlxdWVBdHRyaWJ1dGlvbnMiLCJfZHMkbWV0YWRhdGEiLCJkcyIsImF0dHJpYnV0aW9ucyIsIm1ldGFkYXRhIiwibGlua3MiLCJtYXRjaCIsImxpbmsiLCJfbGluayRtYXRjaCIsIl9saW5rJG1hdGNoMiIsImhyZWYiLCJ0aXRsZSIsImluZGV4T2YiLCJ1cmwiLCJlcnJvciIsImxheWVyQXR0cmlidXRpb25LZXlTZWxlY3RvciIsIl9zdGF0ZSR2aXNTdGF0ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwiX2xheWVyJGNvbmZpZyIsIl9sYXllciRtZXRhIiwibGF5ZXIiLCJpc1Zpc2libGUiLCJtZXRhIiwiX2EkbG9nb1VybCIsImxvZ29VcmwiLCJlcnIiLCJsYXllckF0dHJpYnV0aW9uU2VsZWN0b3IiLCJfc3RhdGUkdmlzU3RhdGUyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9sb29wIiwiX2xheWVyJGNvbmZpZzIiLCJfbGF5ZXIkbWV0YTIiLCJhdHRyIiwiZmluZCIsImxheWVyQXR0cmlidXRpb25zIiwidW5pcXVlVGV4dEF0dHJpYnV0aW9ucyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJsYXllckF0dHJpYnV0aW9uIiwibm90aWZpY2F0aW9uUGFuZWxTZWxlY3RvciIsInJlbW92ZU5vdGlmaWNhdGlvbiIsIm5vdGlmaWNhdGlvbnMiLCJtYXBTdHlsZXMiLCJtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCIsIkRFRkFVTFRfTUFQQk9YX0FQSV9VUkwiLCJLRVBMRVJfR0xfTkFNRSIsIktFUExFUl9HTF9WRVJTSU9OIiwiRElNRU5TSU9OUyIsImZlYXR1cmVGbGFncyIsIktlcGxlckdsRmFjdG9yeSIsImRlcHMiLCJCb3R0b21XaWRnZXRGYWN0b3J5IiwiR2VvQ29kZXJQYW5lbEZhY3RvcnkiLCJNYXBDb250YWluZXJGYWN0b3J5IiwiTWFwc0xheW91dEZhY3RvcnkiLCJNb2RhbENvbnRhaW5lckZhY3RvcnkiLCJTaWRlUGFuZWxGYWN0b3J5IiwiUGxvdENvbnRhaW5lckZhY3RvcnkiLCJOb3RpZmljYXRpb25QYW5lbEZhY3RvcnkiLCJEbmRDb250ZXh0RmFjdG9yeSIsIkVmZmVjdE1hbmFnZXJGYWN0b3J5IiwiQm90dG9tV2lkZ2V0IiwiR2VvQ29kZXJQYW5lbCIsIk1hcENvbnRhaW5lciIsIk1hcHNMYXlvdXQiLCJNb2RhbENvbnRhaW5lciIsIlNpZGVQYW5lbCIsIlBsb3RDb250YWluZXIiLCJOb3RpZmljYXRpb25QYW5lbCIsIkRuZENvbnRleHQiLCJLZXBsZXJHTCIsIl9Db21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuIiwiYXJncyIsIl9rZXkiLCJzZXRTdGF0ZSIsImNyZWF0ZVJlZiIsIl9wcm9wcyR1aVN0YXRlIiwidGhlbWVTZWxlY3RvciIsInVpVGhlbWVTZWxlY3RvciIsInRoZW1lSW5wdXQiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImVuYWJsZVRoZW1lVG9nZ2xlIiwiVEhFTUUiLCJkYXJrIiwiX3R5cGVvZjIiLCJiYXNpY1RoZW1lIiwibGlnaHQiLCJ0aGVtZUxUIiwiYmFzZSIsInRoZW1lQlMiLCJkYXRhc2V0c1NlbGVjdG9yIiwicHJvdmlkZXJzIiwiaGFzU3RvcmFnZSIsInNvbWUiLCJwIiwiaGFzUHJpdmF0ZVN0b3JhZ2UiLCJoYXNTaGFyZSIsImhhc1NoYXJpbmdVcmwiLCJsb2NhbGVNZXNzYWdlcyIsImN1c3RvbU1lc3NhZ2VzIiwibWVyZ2VNZXNzYWdlcyIsIm1lc3NhZ2VzIiwiZGVmYXVsdFN0eWxlcyIsInZhbHVlcyIsImN1c3RvbVN0eWxlcyIsIm1hcCIsIm1zIiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCIsImFsbFN0eWxlcyIsInJlZHVjZSIsImFjY3UiLCJzdHlsZSIsImxvYWRNYXBTdHlsZXMiLCJjb250YWluZXJJZCIsImxheWVySWQiLCJ0b2dnbGVMYXllckZvck1hcCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiY29tcG9uZW50RGlkTW91bnQiLCJfZ2V0QXBwbGljYXRpb25Db25maWciLCJiYXNlTWFwTGlicmFyeUNvbmZpZyIsIm1hcExpYk5hbWUiLCJfdmFsaWRhdGVNYXBib3hUb2tlbiIsIl9sb2FkTWFwU3R5bGUiLCJvbktlcGxlckdsSW5pdGlhbGl6ZWQiLCJyb290IiwiY3VycmVudCIsIkhUTUxFbGVtZW50Iiwib2JzZXJ2ZURpbWVuc2lvbnMiLCJfaGFuZGxlUmVzaXplIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJ1bm9ic2VydmVEaW1lbnNpb25zIiwidmFsaWRhdGVUb2tlbiIsIkNvbnNvbGUiLCJ3YXJuIiwiTUlTU0lOR19NQVBCT1hfVE9LRU4iLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wcyIsIl90aGlzJHByb3BzJGlkIiwiX3RoaXMkcHJvcHMkd2lkdGgiLCJfdGhpcyRwcm9wcyRoZWlnaHQiLCJfdGhpcyRwcm9wcyRjbG91ZFByb3YiLCJhdmFpbGFibGVUaGVtZVNlbGVjdG9yIiwibG9jYWxlTWVzc2FnZXNTZWxlY3RvciIsImlzRXhwb3J0aW5nSW1hZ2UiLCJleHBvcnRpbmciLCJmaWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IiLCJzaWRlRmllbGRzIiwicGxvdENvbnRhaW5lckZpZWxkcyIsImJvdHRvbVdpZGdldEZpZWxkcyIsIm1vZGFsQ29udGFpbmVyRmllbGRzIiwiZ2VvQ29kZXJQYW5lbEZpZWxkcyIsIm5vdGlmaWNhdGlvblBhbmVsRmllbGRzIiwibWFwQ29udGFpbmVycyIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kczIiLCJwcmltYXJ5IiwiZGVsZXRlTWFwTGFiZWxzIiwiX2RlbGV0ZU1hcExhYmVscyIsInNldHRpbmdzIiwiUm9vdENvbnRleHQiLCJQcm92aWRlciIsIkZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciIsIkludGxQcm92aWRlciIsIlN0eWxlU2hlZXRNYW5hZ2VyIiwic2hvdWxkRm9yd2FyZFByb3AiLCJUaGVtZVByb3ZpZGVyIiwiQ2xvdWRMaXN0UHJvdmlkZXIiLCJjbGFzc05hbWUiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsInBvc2l0aW9uIiwicmVmIiwib25TZXRTd2lwZUNvbXBhcmVQZXJjZW50YWdlIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZSIsInVuc3luY2VkVmlld3BvcnRzIiwiX21hcENvbnRhaW5lciIsImhhc1BvcnRhYmxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwicm9vdFJlZiIsImJvdHRvbVdpZGdldFJlZiIsImNvbnRhaW5lclciLCJjb250YWluZXJIIiwiQ29tcG9uZW50Iiwia2VwbGVyR2xDb25uZWN0IiwibWFwU3RhdGVUb1Byb3BzIiwibWFrZU1hcERpc3BhdGNoVG9Qcm9wcyIsIndpdGhUaGVtZSIsImRlZmF1bHRVc2VyQWN0aW9ucyIsImdldERpc3BhdGNoIiwiZGlzcGF0Y2giLCJnZXRVc2VyQWN0aW9ucyIsImFjdGlvbnMiLCJtYWtlR2V0QWN0aW9uQ3JlYXRvcnMiLCJ1c2VyQWN0aW9ucyIsIl9tYXAiLCJWaXNTdGF0ZUFjdGlvbnMiLCJNYXBTdGF0ZUFjdGlvbnMiLCJNYXBTdHlsZUFjdGlvbnMiLCJVSVN0YXRlQWN0aW9ucyIsIlByb3ZpZGVyQWN0aW9ucyIsImJpbmRBY3Rpb25DcmVhdG9ycyIsIm1lcmdlQWN0aW9ucyIsIl9tYXAyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZ2V0QWN0aW9uQ3JlYXRvcnMiLCJtYXBEaXNwYXRjaFRvUHJvcHMiLCJvd25Qcm9wcyIsImdyb3VwZWRBY3Rpb25DcmVhdG9ycyIsIm92ZXJyaWRlcyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2tlcGxlci1nbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIERpc3BhdGNofSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge2JpbmRBY3Rpb25DcmVhdG9yc30gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZSwgU3R5bGVTaGVldE1hbmFnZXIsIFRoZW1lUHJvdmlkZXJ9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCB7Y29ubmVjdCBhcyBrZXBsZXJHbENvbm5lY3R9IGZyb20gJy4vY29ubmVjdC9rZXBsZXJnbC1jb25uZWN0JztcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB7bWVzc2FnZXN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Um9vdENvbnRleHQsIEZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciwgRmVhdHVyZUZsYWdzfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRpb25XaXRoU3R5bGUsXG4gIERhdGFzZXRBdHRyaWJ1dGlvbixcbiAgT25FcnJvckNhbGxCYWNrLFxuICBPblN1Y2Nlc3NDYWxsQmFjayxcbiAgVmlld3BvcnQsXG4gIE1hcFN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge1xuICBNYXBTdGF0ZUFjdGlvbnMsXG4gIE1hcFN0eWxlQWN0aW9ucyxcbiAgUHJvdmlkZXJBY3Rpb25zLFxuICBVSVN0YXRlQWN0aW9ucyxcbiAgVmlzU3RhdGVBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5cbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcblxuaW1wb3J0IHtzaG91bGRGb3J3YXJkUHJvcH0gZnJvbSAnLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG50eXBlIEtlcGxlckdsQWN0aW9ucyA9IHtcbiAgdmlzU3RhdGVBY3Rpb25zOiB0eXBlb2YgVmlzU3RhdGVBY3Rpb25zO1xuICBtYXBTdGF0ZUFjdGlvbnM6IHR5cGVvZiBNYXBTdGF0ZUFjdGlvbnM7XG4gIG1hcFN0eWxlQWN0aW9uczogdHlwZW9mIE1hcFN0eWxlQWN0aW9ucztcbiAgdWlTdGF0ZUFjdGlvbnM6IHR5cGVvZiBVSVN0YXRlQWN0aW9ucztcbiAgcHJvdmlkZXJBY3Rpb25zOiB0eXBlb2YgUHJvdmlkZXJBY3Rpb25zO1xufTtcblxuaW1wb3J0IHtcbiAgRElNRU5TSU9OUyxcbiAgS0VQTEVSX0dMX05BTUUsXG4gIEtFUExFUl9HTF9WRVJTSU9OLFxuICBUSEVNRSxcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgR0VPQ09ERVJfREFUQVNFVF9OQU1FLFxuICBNSVNTSU5HX01BUEJPWF9UT0tFTlxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCBTaWRlUGFuZWxGYWN0b3J5IGZyb20gJy4vc2lkZS1wYW5lbCc7XG5pbXBvcnQgTWFwQ29udGFpbmVyRmFjdG9yeSBmcm9tICcuL21hcC1jb250YWluZXInO1xuaW1wb3J0IE1hcHNMYXlvdXRGYWN0b3J5IGZyb20gJy4vbWFwcy1sYXlvdXQnO1xuaW1wb3J0IEJvdHRvbVdpZGdldEZhY3RvcnkgZnJvbSAnLi9ib3R0b20td2lkZ2V0JztcbmltcG9ydCBNb2RhbENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9tb2RhbC1jb250YWluZXInO1xuaW1wb3J0IFBsb3RDb250YWluZXJGYWN0b3J5IGZyb20gJy4vcGxvdC1jb250YWluZXInO1xuaW1wb3J0IE5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeSBmcm9tICcuL25vdGlmaWNhdGlvbi1wYW5lbCc7XG5pbXBvcnQgR2VvQ29kZXJQYW5lbEZhY3RvcnkgZnJvbSAnLi9nZW9jb2Rlci1wYW5lbCc7XG5pbXBvcnQgRWZmZWN0TWFuYWdlckZhY3RvcnkgZnJvbSAnLi9lZmZlY3RzL2VmZmVjdC1tYW5hZ2VyJztcbmltcG9ydCBEbmRDb250ZXh0RmFjdG9yeSBmcm9tICcuL2RuZC1jb250ZXh0JztcbmltcG9ydCB7Q2xvdWRMaXN0UHJvdmlkZXJ9IGZyb20gJy4vaG9va3MvdXNlLWNsb3VkLWxpc3QtcHJvdmlkZXInO1xuXG5pbXBvcnQge1xuICBmaWx0ZXJPYmplY3RCeVByZWRpY2F0ZSxcbiAgdmFsaWRhdGVUb2tlbixcbiAgbWVyZ2VNZXNzYWdlcyxcbiAgb2JzZXJ2ZURpbWVuc2lvbnMsXG4gIHVub2JzZXJ2ZURpbWVuc2lvbnMsXG4gIGhhc1BvcnRhYmxlV2lkdGgsXG4gIGdldEFwcGxpY2F0aW9uQ29uZmlnXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge3RoZW1lIGFzIGJhc2ljVGhlbWUsIHRoZW1lTFQsIHRoZW1lQlMsIGJyZWFrUG9pbnRWYWx1ZXN9IGZyb20gJ0BrZXBsZXIuZ2wvc3R5bGVzJztcbmltcG9ydCB7S2VwbGVyR2xTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge1Byb3ZpZGVyfSBmcm9tICdAa2VwbGVyLmdsL2Nsb3VkLXByb3ZpZGVycyc7XG5cbi8vIE1heWJlIHdlIHNob3VsZCB0aGluayBhYm91dCBleHBvcnRpbmcgdGhpcyBvciBjcmVhdGluZyBhIHZhcmlhYmxlXG4vLyBhcyBwYXJ0IG9mIHRoZSBiYXNlLmpzIHRoZW1lXG5jb25zdCBHbG9iYWxTdHlsZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtZmFtaWx5OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRGYW1pbHl9O1xuICBmb250LXdlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250V2VpZ2h0fTtcbiAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRTaXplfTtcbiAgbGluZS1oZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGluZUhlaWdodH07XG5cbiAgKixcbiAgKjpiZWZvcmUsXG4gICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuXG4gIHVsIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIGxpIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICBhIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIH1cblxuICA6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAubWFwbGlicmVnbC1jdHJsIC5tYXBsaWJyZWdsLWN0cmwtbG9nbyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5tYXBib3hnbC1jdHJsIC5tYXBib3hnbC1jdHJsLWxvZ28ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbmA7XG5cbnR5cGUgQm90dG9tV2lkZ2V0T3V0ZXJQcm9wcyA9IHtcbiAgYWJzb2x1dGU/OiBib29sZWFuO1xufTtcblxuY29uc3QgQm90dG9tV2lkZ2V0T3V0ZXIgPSBzdHlsZWQuZGl2PEJvdHRvbVdpZGdldE91dGVyUHJvcHM+KFxuICAoe2Fic29sdXRlfSkgPT4gYFxuICAke2Fic29sdXRlID8gJ3Bvc2l0aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAwOyByaWdodDogMDsnIDogJyd9XG4gIHBvaW50ZXItZXZlbnRzOiBub25lOyAvKiBwcmV2ZW50IHBhZGRpbmcgZnJvbSBibG9ja2luZyBpbnB1dCAqL1xuICAmID4gKiB7XG4gICAgLyogYWxsIGNoaWxkcmVuIHNob3VsZCBhbGxvdyBpbnB1dCAqL1xuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XG4gIH1gXG4pO1xuXG5leHBvcnQgY29uc3QgaXNWaWV3cG9ydERpc2pvaW50ZWQgPSBwcm9wcyA9PiB7XG4gIHJldHVybiAoXG4gICAgcHJvcHMubWFwU3RhdGUuaXNTcGxpdCAmJlxuICAgICFwcm9wcy5tYXBTdGF0ZS5pc1ZpZXdwb3J0U3luY2VkICYmXG4gICAgcHJvcHMubWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoID4gMVxuICApO1xufTtcblxudHlwZSBNYXBTdGF0ZVByb3BzID0ge1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgbWFwU3RhdGVTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbKHByb3BzOiBNYXBTdGF0ZVByb3BzKSA9PiBwcm9wcy5tYXBTdGF0ZSwgKF86IE1hcFN0YXRlUHJvcHMsIGluZGV4PzogbnVtYmVyKSA9PiBpbmRleF0sXG4gIChtYXBTdGF0ZTogTWFwU3RhdGUsIGluZGV4PzogbnVtYmVyKTogTWFwU3RhdGUgPT4ge1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKGluZGV4KSkge1xuICAgICAgLy8gZWl0aGVyIG5vIGluZGV4IGFyZyBvciBhbiBpbnZhbGlkIGluZGV4IHdhcyBwcm92aWRlZFxuICAgICAgLy8gaXQgaXMgZXhwZWN0ZWQgdG8gYmUgZWl0aGVyIDAgb3IgMSB3aGVuIGluIHNwbGl0IG1vZGVcbiAgICAgIC8vIG9ubHkgdXNlIHRoZSBtYXBTdGF0ZVxuICAgICAgcmV0dXJuIG1hcFN0YXRlO1xuICAgIH1cblxuICAgIHJldHVybiBpc1ZpZXdwb3J0RGlzam9pbnRlZCh7bWFwU3RhdGV9KVxuICAgICAgPyAvLyBtaXggdG9nZXRoZXIgdGhlIHZpZXdwb3J0IHByb3BlcnRpZXMgaW50ZW5kZWQgZm9yIHRoaXMgZGlzam9pbnRlZCA8TWFwQ29udGFpbmVyPiB3aXRoIHRoZSBvdGhlciBuZWNlc3NhcnkgbWFwU3RhdGUgcHJvcGVydGllc1xuICAgICAgICB7Li4ubWFwU3RhdGUsIC4uLm1hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzW2luZGV4IHx8IDBdfVxuICAgICAgOiAvLyBvdGhlcndpc2Ugb25seSB1c2UgdGhlIG1hcFN0YXRlXG4gICAgICAgIG1hcFN0YXRlO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgbWFwRmllbGRzU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIGluZGV4ID0gMCkgPT4ge1xuICBjb25zdCBhdHRyaWJ1dGlvbiA9IGF0dHJpYnV0aW9uU2VsZWN0b3IocHJvcHMpO1xuICByZXR1cm4ge1xuICAgIGdldE1hcGJveFJlZjogcHJvcHMuZ2V0TWFwYm94UmVmLFxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwcm9wcy5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBtYXBib3hBcGlVcmw6IHByb3BzLm1hcGJveEFwaVVybCA/IHByb3BzLm1hcGJveEFwaVVybCA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLm1hcGJveEFwaVVybCxcbiAgICBtYXBTdGF0ZTogbWFwU3RhdGVTZWxlY3Rvcihwcm9wcywgaW5kZXgpLFxuICAgIGRhdGFzZXRBdHRyaWJ1dGlvbnM6IGF0dHJpYnV0aW9uLnNvdXJjZXMsXG4gICAgYXR0cmlidXRpb25Mb2dvczogYXR0cmlidXRpb24ubG9nb3MsXG4gICAgbWFwU3R5bGU6IHByb3BzLm1hcFN0eWxlLFxuICAgIG9uRGVja0luaXRpYWxpemVkOiBwcm9wcy5vbkRlY2tJbml0aWFsaXplZCxcbiAgICBvblZpZXdTdGF0ZUNoYW5nZTogcHJvcHMub25WaWV3U3RhdGVDaGFuZ2UsXG4gICAgb25Nb3VzZU1vdmU6IHByb3BzLm9uTW91c2VNb3ZlLFxuICAgIGRlY2tHbFByb3BzOiBwcm9wcy5kZWNrR2xQcm9wcyxcbiAgICB1aVN0YXRlQWN0aW9uczogcHJvcHMudWlTdGF0ZUFjdGlvbnMsXG4gICAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gICAgbWFwU3RhdGVBY3Rpb25zOiBwcm9wcy5tYXBTdGF0ZUFjdGlvbnMsXG5cbiAgICAvLyB2aXNTdGF0ZVxuICAgIHZpc1N0YXRlOiBwcm9wcy52aXNTdGF0ZSxcblxuICAgIC8vIHVpU3RhdGVcbiAgICBhY3RpdmVTaWRlUGFuZWw6IHByb3BzLnVpU3RhdGUuYWN0aXZlU2lkZVBhbmVsLFxuICAgIG1hcENvbnRyb2xzOiBwcm9wcy51aVN0YXRlLm1hcENvbnRyb2xzLFxuICAgIHJlYWRPbmx5OiBwcm9wcy51aVN0YXRlLnJlYWRPbmx5LFxuICAgIGxvY2FsZTogcHJvcHMudWlTdGF0ZS5sb2NhbGUsXG4gICAgdWlUaGVtZTogcHJvcHMudWlTdGF0ZS50aGVtZSxcbiAgICBpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlOiBOdW1iZXIocHJvcHMudmlzU3RhdGUubG9hZGluZ0luZGljYXRvclZhbHVlKSA+IDAsXG4gICAgc2lkZVBhbmVsV2lkdGg6IHByb3BzLnNpZGVQYW5lbFdpZHRoID8gcHJvcHMuc2lkZVBhbmVsV2lkdGggOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcblxuICAgIC8vIG1hcFN0eWxlXG4gICAgdG9wTWFwQ29udGFpbmVyUHJvcHM6IHByb3BzLnRvcE1hcENvbnRhaW5lclByb3BzLFxuICAgIGJvdHRvbU1hcENvbnRhaW5lclByb3BzOiBwcm9wcy5ib3R0b21NYXBDb250YWluZXJQcm9wcyxcblxuICAgIC8vIHRyYW5zZm9ybVJlcXVlc3QgZm9yIE1hcGJveCBiYXNlbWFwc1xuICAgIHRyYW5zZm9ybVJlcXVlc3Q6IHByb3BzLnRyYW5zZm9ybVJlcXVlc3QsXG5cbiAgICBSVExUZXh0UGx1Z2luOiBwcm9wcy5SVExUZXh0UGx1Z2luXG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzaWJsZURhdGFzZXRzKGRhdGFzZXRzKSB7XG4gIC8vIFdlIGRvbid0IHdhbnQgR2VvY29kZXIgZGF0YXNldCB0byBiZSBwcmVzZW50IGluIFNpZGVQYW5lbCBkYXRhc2V0IGxpc3RcbiAgcmV0dXJuIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlKGRhdGFzZXRzLCBrZXkgPT4ga2V5ICE9PSBHRU9DT0RFUl9EQVRBU0VUX05BTUUpO1xufVxuXG5leHBvcnQgY29uc3Qgc2lkZVBhbmVsU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIGF2YWlsYWJsZVByb3ZpZGVycywgZmlsdGVyZWREYXRhc2V0cykgPT4gKHtcbiAgYXBwTmFtZTogcHJvcHMuYXBwTmFtZSA/IHByb3BzLmFwcE5hbWUgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5hcHBOYW1lLFxuICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uID8gcHJvcHMudmVyc2lvbiA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLnZlcnNpb24sXG4gIGFwcFdlYnNpdGU6IHByb3BzLmFwcFdlYnNpdGUsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgbWFwU3RhdGU6IHByb3BzLm1hcFN0YXRlLFxuICBvblNhdmVNYXA6IHByb3BzLm9uU2F2ZU1hcCxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgbWFwU3R5bGVBY3Rpb25zOiBwcm9wcy5tYXBTdHlsZUFjdGlvbnMsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICB1aVN0YXRlQWN0aW9uczogcHJvcHMudWlTdGF0ZUFjdGlvbnMsXG4gIG1hcFN0YXRlQWN0aW9uczogcHJvcHMubWFwU3RhdGVBY3Rpb25zLFxuXG4gIGRhdGFzZXRzOiBmaWx0ZXJlZERhdGFzZXRzLFxuICBmaWx0ZXJzOiBwcm9wcy52aXNTdGF0ZS5maWx0ZXJzLFxuICBsYXllcnM6IHByb3BzLnZpc1N0YXRlLmxheWVycyxcbiAgbGF5ZXJPcmRlcjogcHJvcHMudmlzU3RhdGUubGF5ZXJPcmRlcixcbiAgbGF5ZXJDbGFzc2VzOiBwcm9wcy52aXNTdGF0ZS5sYXllckNsYXNzZXMsXG4gIGludGVyYWN0aW9uQ29uZmlnOiBwcm9wcy52aXNTdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZyxcbiAgbWFwSW5mbzogcHJvcHMudmlzU3RhdGUubWFwSW5mbyxcbiAgbGF5ZXJCbGVuZGluZzogcHJvcHMudmlzU3RhdGUubGF5ZXJCbGVuZGluZyxcbiAgb3ZlcmxheUJsZW5kaW5nOiBwcm9wcy52aXNTdGF0ZS5vdmVybGF5QmxlbmRpbmcsXG5cbiAgd2lkdGg6IHByb3BzLnNpZGVQYW5lbFdpZHRoID8gcHJvcHMuc2lkZVBhbmVsV2lkdGggOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcbiAgYXZhaWxhYmxlUHJvdmlkZXJzLFxuICBtYXBTYXZlZDogcHJvcHMucHJvdmlkZXJTdGF0ZS5tYXBTYXZlZFxufSk7XG5cbmV4cG9ydCBjb25zdCBwbG90Q29udGFpbmVyU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+ICh7XG4gIHdpZHRoOiBwcm9wcy53aWR0aCxcbiAgaGVpZ2h0OiBwcm9wcy5oZWlnaHQsXG4gIHJhdGlvOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLnJhdGlvLFxuICByZXNvbHV0aW9uOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLnJlc29sdXRpb24sXG4gIGxlZ2VuZDogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5sZWdlbmQsXG4gIGNlbnRlcjogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5jZW50ZXIsXG4gIGltYWdlU2l6ZTogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemUsXG4gIGVzY2FwZVhodG1sRm9yV2VicGFjazogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5lc2NhcGVYaHRtbEZvcldlYnBhY2ssXG5cbiAgbWFwRmllbGRzOiBtYXBGaWVsZHNTZWxlY3Rvcihwcm9wcyksXG4gIGFkZE5vdGlmaWNhdGlvbjogcHJvcHMudWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uLFxuICBzZXRFeHBvcnRJbWFnZVNldHRpbmc6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlU2V0dGluZyxcbiAgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZURhdGFVcmksXG4gIHNldEV4cG9ydEltYWdlRXJyb3I6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlRXJyb3IsXG4gIHNwbGl0TWFwczogcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzXG59KTtcblxuZXhwb3J0IGNvbnN0IGlzU3BsaXRTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcykgPT5cbiAgcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzICYmIHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcy5sZW5ndGggPiAxO1xuXG5leHBvcnQgY29uc3QgYm90dG9tV2lkZ2V0U2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIHRoZW1lKSA9PiAoe1xuICBmaWx0ZXJzOiBwcm9wcy52aXNTdGF0ZS5maWx0ZXJzLFxuICBkYXRhc2V0czogcHJvcHMudmlzU3RhdGUuZGF0YXNldHMsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIGxheWVyczogcHJvcHMudmlzU3RhdGUubGF5ZXJzLFxuICBhbmltYXRpb25Db25maWc6IHByb3BzLnZpc1N0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gIHRvZ2dsZU1vZGFsOiBwcm9wcy51aVN0YXRlQWN0aW9ucy50b2dnbGVNb2RhbCxcbiAgc2lkZVBhbmVsV2lkdGg6IHByb3BzLnVpU3RhdGUucmVhZE9ubHkgPyAwIDogcHJvcHMuc2lkZVBhbmVsV2lkdGggKyB0aGVtZS5zaWRlUGFuZWwubWFyZ2luLmxlZnRcbn0pO1xuXG5leHBvcnQgY29uc3QgbW9kYWxDb250YWluZXJTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgcm9vdE5vZGUpID0+ICh7XG4gIGFwcE5hbWU6IHByb3BzLmFwcE5hbWUgPyBwcm9wcy5hcHBOYW1lIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuYXBwTmFtZSxcbiAgbWFwU3R5bGU6IHByb3BzLm1hcFN0eWxlLFxuICB2aXNTdGF0ZTogcHJvcHMudmlzU3RhdGUsXG4gIG1hcFN0YXRlOiBwcm9wcy5tYXBTdGF0ZSxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgcHJvdmlkZXJTdGF0ZTogcHJvcHMucHJvdmlkZXJTdGF0ZSxcblxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogcHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcHJvcHMubWFwYm94QXBpVXJsLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgdWlTdGF0ZUFjdGlvbnM6IHByb3BzLnVpU3RhdGVBY3Rpb25zLFxuICBtYXBTdHlsZUFjdGlvbnM6IHByb3BzLm1hcFN0eWxlQWN0aW9ucyxcbiAgcHJvdmlkZXJBY3Rpb25zOiBwcm9wcy5wcm92aWRlckFjdGlvbnMsXG5cbiAgcm9vdE5vZGUsXG4gIC8vIFVzZXIgZGVmaW5lZCBjbG91ZCBwcm92aWRlciBwcm9wc1xuICBjbG91ZFByb3ZpZGVyczogcHJvcHMuY2xvdWRQcm92aWRlcnNcbiAgICA/IHByb3BzLmNsb3VkUHJvdmlkZXJzXG4gICAgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5jbG91ZFByb3ZpZGVycyxcbiAgb25FeHBvcnRUb0Nsb3VkU3VjY2VzczogcHJvcHMub25FeHBvcnRUb0Nsb3VkU3VjY2VzcyxcbiAgb25Mb2FkQ2xvdWRNYXBTdWNjZXNzOiBwcm9wcy5vbkxvYWRDbG91ZE1hcFN1Y2Nlc3MsXG4gIG9uTG9hZENsb3VkTWFwRXJyb3I6IHByb3BzLm9uTG9hZENsb3VkTWFwRXJyb3IsXG4gIG9uRXhwb3J0VG9DbG91ZEVycm9yOiBwcm9wcy5vbkV4cG9ydFRvQ2xvdWRFcnJvclxufSk7XG5cbmV4cG9ydCBjb25zdCBnZW9Db2RlclBhbmVsU2VsZWN0b3IgPSAoXG4gIHByb3BzOiBLZXBsZXJHTFByb3BzLFxuICBkaW1lbnNpb25zOiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9XG4pID0+ICh7XG4gIGlzR2VvY29kZXJFbmFibGVkOiBwcm9wcy52aXNTdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogcHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcFN0YXRlOiBwcm9wcy5tYXBTdGF0ZSxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgbGF5ZXJPcmRlcjogcHJvcHMudmlzU3RhdGUubGF5ZXJPcmRlcixcbiAgdXBkYXRlVmlzRGF0YTogcHJvcHMudmlzU3RhdGVBY3Rpb25zLnVwZGF0ZVZpc0RhdGEsXG4gIHJlbW92ZURhdGFzZXQ6IHByb3BzLnZpc1N0YXRlQWN0aW9ucy5yZW1vdmVEYXRhc2V0LFxuICB1cGRhdGVNYXA6IHByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAsXG4gIGFwcFdpZHRoOiBkaW1lbnNpb25zLndpZHRoLFxuICBsaW1pdFNlYXJjaDogcHJvcHMudmlzU3RhdGUuaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuY29uZmlnPy5saW1pdFNlYXJjaCA/PyBmYWxzZVxufSk7XG5cbi8qKlxuICogUmV0dXJucyBhcnJheSBvZiB1bmlxdWUgZGF0YXNldCBhdHRyaWJ1dGlvbnMsIGVhY2ggd2l0aCB0aXRsZSBhbmQgdXJsIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXRhc2V0QXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbc3RhdGUgPT4gc3RhdGUudmlzU3RhdGUuZGF0YXNldHNdLFxuICBkYXRhc2V0cyA9PiB7XG4gICAgY29uc3QgdW5pcXVlQXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGRhdGFzZXRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBkcyA9IGRhdGFzZXRzW2tleV07XG4gICAgICBjb25zdCBhdHRyaWJ1dGlvbnMgPSBkcz8ubWV0YWRhdGE/LmF0dHJpYnV0aW9ucztcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHJpYnV0aW9ucykpIHtcbiAgICAgICAgYXR0cmlidXRpb25zLmZvckVhY2goYXR0cmlidXRpb24gPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgYXR0cmlidXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBhdHRyaWJ1dGlvbiBjYW4gYmUgYSByYXcgc3RyaW5nIG9yIGEgc3RyaW5nIHdpdGggbGluayB0YWdzXG4gICAgICAgICAgICBjb25zdCBsaW5rcyA9IGF0dHJpYnV0aW9uLm1hdGNoKC88YVteXSs/YT4vZyk7XG4gICAgICAgICAgICBpZiAobGlua3MpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsaW5rcz8uZm9yRWFjaChsaW5rID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBsaW5rLm1hdGNoKC9ocmVmPVwiKFteXCJdKikvKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBsaW5rLm1hdGNoKC90aXRsZT1cIihbXlwiXSopLyk/LlsxXTtcbiAgICAgICAgICAgICAgICAgIGlmIChocmVmICYmIHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXF1ZUF0dHJpYnV0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7bGluay5pbmRleE9mKCcmY29weTsnKSA+PSAwID8gJ8KpICcgOiAnJ30ke3RpdGxlfWAsXG4gICAgICAgICAgICAgICAgICAgICAgdXJsOiBocmVmXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIGp1c3QgaWdub3JlIGZvciBub3dcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdW5pcXVlQXR0cmlidXRpb25zLnB1c2goe3RpdGxlOiBhdHRyaWJ1dGlvbiwgdXJsOiBudWxsfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdW5pcXVlQXR0cmlidXRpb25zO1xuICB9XG4pO1xuXG4vKipcbiAqIENvbGxlY3QgdW5pcXVlIGxheWVyLWxldmVsIGF0dHJpYnV0aW9ucyBmcm9tIHZpc2libGUgbGF5ZXJzLlxuICogQnVpbGRzIGEgc2VyaWFsaXplZCBjYWNoZSBrZXkgZnJvbSBhdHRyaWJ1dGlvbiB2YWx1ZXMgc28gY3JlYXRlU2VsZWN0b3JcbiAqIGNhbiBkZXRlY3QgaW4tcGxhY2UgbXV0YXRpb25zIHRvIGxheWVyLm1ldGEuXG4gKi9cbmNvbnN0IGxheWVyQXR0cmlidXRpb25LZXlTZWxlY3RvciA9IChzdGF0ZTogYW55KTogc3RyaW5nID0+IHtcbiAgY29uc3QgbGF5ZXJzOiBhbnlbXSA9IHN0YXRlLnZpc1N0YXRlPy5sYXllcnM7XG4gIGlmICghbGF5ZXJzKSByZXR1cm4gJyc7XG4gIGxldCBrZXkgPSAnJztcbiAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICBpZiAobGF5ZXIuY29uZmlnPy5pc1Zpc2libGUgJiYgbGF5ZXIubWV0YT8uYXR0cmlidXRpb24pIHtcbiAgICAgIGNvbnN0IGEgPSBsYXllci5tZXRhLmF0dHJpYnV0aW9uO1xuICAgICAga2V5ICs9IGAke2EudGl0bGV9XFwwJHthLnVybH1cXDAke2EubG9nb1VybCA/PyAnJ31cXDBgO1xuICAgIH1cbiAgfVxuICByZXR1cm4ga2V5O1xufTtcblxuZXhwb3J0IGNvbnN0IGxheWVyQXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbKHN0YXRlOiBhbnkpID0+IHN0YXRlLnZpc1N0YXRlPy5sYXllcnMsIGxheWVyQXR0cmlidXRpb25LZXlTZWxlY3Rvcl0sXG4gIChsYXllcnM6IGFueVtdKTogQXR0cmlidXRpb25XaXRoU3R5bGVbXSA9PiB7XG4gICAgY29uc3QgYXR0cmlidXRpb25zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdID0gW107XG4gICAgaWYgKCFsYXllcnMpIHJldHVybiBhdHRyaWJ1dGlvbnM7XG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgIGlmIChsYXllci5jb25maWc/LmlzVmlzaWJsZSAmJiBsYXllci5tZXRhPy5hdHRyaWJ1dGlvbikge1xuICAgICAgICBjb25zdCBhdHRyID0gbGF5ZXIubWV0YS5hdHRyaWJ1dGlvbjtcbiAgICAgICAgaWYgKGF0dHIudGl0bGUgJiYgIWF0dHJpYnV0aW9ucy5maW5kKGEgPT4gYS50aXRsZSA9PT0gYXR0ci50aXRsZSAmJiBhLnVybCA9PT0gYXR0ci51cmwpKSB7XG4gICAgICAgICAgYXR0cmlidXRpb25zLnB1c2goYXR0cik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGF0dHJpYnV0aW9ucztcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IGF0dHJpYnV0aW9uU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgW2RhdGFzZXRBdHRyaWJ1dGlvblNlbGVjdG9yLCBsYXllckF0dHJpYnV0aW9uU2VsZWN0b3JdLFxuICAoXG4gICAgZGF0YXNldEF0dHJpYnV0aW9uczogRGF0YXNldEF0dHJpYnV0aW9uW10sXG4gICAgbGF5ZXJBdHRyaWJ1dGlvbnM6IEF0dHJpYnV0aW9uV2l0aFN0eWxlW11cbiAgKToge1xuICAgIHNvdXJjZXM6IERhdGFzZXRBdHRyaWJ1dGlvbltdO1xuICAgIGxvZ29zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdO1xuICB9ID0+IHtcbiAgICBjb25zdCB1bmlxdWVUZXh0QXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXSA9IFsuLi5kYXRhc2V0QXR0cmlidXRpb25zXTtcbiAgICBjb25zdCBsb2dvczogQXR0cmlidXRpb25XaXRoU3R5bGVbXSA9IFtdO1xuXG4gICAgbGF5ZXJBdHRyaWJ1dGlvbnMuZm9yRWFjaChsYXllckF0dHJpYnV0aW9uID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIXVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMuZmluZChcbiAgICAgICAgICBhID0+IGEudGl0bGUgPT09IGxheWVyQXR0cmlidXRpb24udGl0bGUgJiYgYS51cmwgPT09IGxheWVyQXR0cmlidXRpb24udXJsXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICB1bmlxdWVUZXh0QXR0cmlidXRpb25zLnB1c2goe3RpdGxlOiBsYXllckF0dHJpYnV0aW9uLnRpdGxlLCB1cmw6IGxheWVyQXR0cmlidXRpb24udXJsfSk7XG4gICAgICB9XG4gICAgICBpZiAobGF5ZXJBdHRyaWJ1dGlvbi5sb2dvVXJsICYmICFsb2dvcy5maW5kKGEgPT4gYS5sb2dvVXJsID09PSBsYXllckF0dHJpYnV0aW9uLmxvZ29VcmwpKSB7XG4gICAgICAgIGxvZ29zLnB1c2gobGF5ZXJBdHRyaWJ1dGlvbik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge3NvdXJjZXM6IHVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMsIGxvZ29zfTtcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IG5vdGlmaWNhdGlvblBhbmVsU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+ICh7XG4gIHJlbW92ZU5vdGlmaWNhdGlvbjogcHJvcHMudWlTdGF0ZUFjdGlvbnMucmVtb3ZlTm90aWZpY2F0aW9uLFxuICBub3RpZmljYXRpb25zOiBwcm9wcy51aVN0YXRlLm5vdGlmaWNhdGlvbnNcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMgPSB7XG4gIG1hcFN0eWxlczogW10sXG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBmYWxzZSxcbiAgbWFwYm94QXBpVXJsOiBERUZBVUxUX01BUEJPWF9BUElfVVJMLFxuICB3aWR0aDogODAwLFxuICBoZWlnaHQ6IDgwMCxcbiAgYXBwTmFtZTogS0VQTEVSX0dMX05BTUUsXG4gIHZlcnNpb246IEtFUExFUl9HTF9WRVJTSU9OLFxuICBzaWRlUGFuZWxXaWR0aDogRElNRU5TSU9OUy5zaWRlUGFuZWwud2lkdGgsXG4gIHRoZW1lOiB7fSxcbiAgY2xvdWRQcm92aWRlcnM6IFtdLFxuICByZWFkT25seTogZmFsc2UsXG4gIGZlYXR1cmVGbGFnczoge31cbn07XG5cbnR5cGUgS2VwbGVyR0xCYXNpY1Byb3BzID0ge1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG5cbiAgYXBwV2Vic2l0ZT86IGFueTtcbiAgb25TYXZlTWFwPzogKCkgPT4gdm9pZDtcbiAgb25WaWV3U3RhdGVDaGFuZ2U/OiAodmlld1N0YXRlOiBWaWV3cG9ydCkgPT4gdm9pZDtcbiAgb25EZWNrSW5pdGlhbGl6ZWQ/OiAoKSA9PiB2b2lkO1xuICBvbktlcGxlckdsSW5pdGlhbGl6ZWQ/OiAoKSA9PiB2b2lkO1xuICBnZXRNYXBib3hSZWY/OiAoKSA9PiBSZWFjdC5SZWZPYmplY3Q8YW55PjtcbiAgbWFwU3R5bGVzPzoge2lkOiBzdHJpbmc7IHN0eWxlPzogb2JqZWN0fVtdO1xuICBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdD86IGJvb2xlYW47XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIHNpZGVQYW5lbFdpZHRoPzogbnVtYmVyO1xuICB0aGVtZT86IG9iamVjdDtcbiAgY2xvdWRQcm92aWRlcnM/OiBQcm92aWRlcltdO1xuICBkZWNrR2xQcm9wcz86IG9iamVjdDtcbiAgb25Mb2FkQ2xvdWRNYXBTdWNjZXNzPzogT25TdWNjZXNzQ2FsbEJhY2s7XG4gIG9uTG9hZENsb3VkTWFwRXJyb3I/OiBPbkVycm9yQ2FsbEJhY2s7XG4gIG9uTW91c2VNb3ZlPzogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50ICYge2xuZ0xhdD86IFtudW1iZXIsIG51bWJlcl19KSA9PiB2b2lkO1xuICBvbkV4cG9ydFRvQ2xvdWRTdWNjZXNzPzogT25TdWNjZXNzQ2FsbEJhY2s7XG4gIG9uRXhwb3J0VG9DbG91ZEVycm9yPzogT25FcnJvckNhbGxCYWNrO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIGZlYXR1cmVGbGFncz86IEZlYXR1cmVGbGFncztcblxuICBsb2NhbGVNZXNzYWdlcz86IHtba2V5OiBzdHJpbmddOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfX07XG4gIGRpc3BhdGNoOiBEaXNwYXRjaDxhbnk+O1xuXG4gIHRvcE1hcENvbnRhaW5lclByb3BzPzogb2JqZWN0O1xuICBib3R0b21NYXBDb250YWluZXJQcm9wcz86IG9iamVjdDtcblxuICB0cmFuc2Zvcm1SZXF1ZXN0PzogKHVybDogc3RyaW5nKSA9PiB7dXJsOiBzdHJpbmd9O1xuXG4gIC8qKiBQYXNzIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgcmVtb3RlIFJUTCB0ZXh0IHBsdWdpbiwgb3IgYSBVUkwgc3RyaW5nIHRvIHNlbGYtaG9zdCBpdC4gKi9cbiAgUlRMVGV4dFBsdWdpbj86IHN0cmluZyB8IGZhbHNlO1xufTtcblxudHlwZSBLZXBsZXJHTFByb3BzID0gS2VwbGVyR2xTdGF0ZSAmIEtlcGxlckdsQWN0aW9ucyAmIEtlcGxlckdMQmFzaWNQcm9wcztcbnR5cGUgS2VwbGVyR0xDb21wU3RhdGUgPSB7XG4gIGRpbWVuc2lvbnM6IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn0gfCBudWxsO1xufTtcblxuS2VwbGVyR2xGYWN0b3J5LmRlcHMgPSBbXG4gIEJvdHRvbVdpZGdldEZhY3RvcnksXG4gIEdlb0NvZGVyUGFuZWxGYWN0b3J5LFxuICBNYXBDb250YWluZXJGYWN0b3J5LFxuICBNYXBzTGF5b3V0RmFjdG9yeSxcbiAgTW9kYWxDb250YWluZXJGYWN0b3J5LFxuICBTaWRlUGFuZWxGYWN0b3J5LFxuICBQbG90Q29udGFpbmVyRmFjdG9yeSxcbiAgTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5LFxuICBEbmRDb250ZXh0RmFjdG9yeSxcbiAgRWZmZWN0TWFuYWdlckZhY3Rvcnlcbl07XG5cbmZ1bmN0aW9uIEtlcGxlckdsRmFjdG9yeShcbiAgQm90dG9tV2lkZ2V0OiBSZXR1cm5UeXBlPHR5cGVvZiBCb3R0b21XaWRnZXRGYWN0b3J5PixcbiAgR2VvQ29kZXJQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgR2VvQ29kZXJQYW5lbEZhY3Rvcnk+LFxuICBNYXBDb250YWluZXI6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRhaW5lckZhY3Rvcnk+LFxuICBNYXBzTGF5b3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBzTGF5b3V0RmFjdG9yeT4sXG4gIE1vZGFsQ29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBNb2RhbENvbnRhaW5lckZhY3Rvcnk+LFxuICBTaWRlUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIFNpZGVQYW5lbEZhY3Rvcnk+LFxuICBQbG90Q29udGFpbmVyOiBSZXR1cm5UeXBlPHR5cGVvZiBQbG90Q29udGFpbmVyRmFjdG9yeT4sXG4gIE5vdGlmaWNhdGlvblBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBOb3RpZmljYXRpb25QYW5lbEZhY3Rvcnk+LFxuICBEbmRDb250ZXh0OiBSZXR1cm5UeXBlPHR5cGVvZiBEbmRDb250ZXh0RmFjdG9yeT5cbik6IFJlYWN0LkNvbXBvbmVudFR5cGU8S2VwbGVyR0xCYXNpY1Byb3BzICYge3NlbGVjdG9yOiAoLi4uYXJnczogYW55W10pID0+IEtlcGxlckdsU3RhdGV9PiB7XG4gIC8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2tlcGxlci1nbCcpLlVuY29ubmVjdGVkS2VwbGVyR2xQcm9wc30gS2VwbGVyR2xQcm9wcyAqL1xuICAvKiogQGF1Z21lbnRzIFJlYWN0LkNvbXBvbmVudDxLZXBsZXJHbFByb3BzPiAqL1xuICBjbGFzcyBLZXBsZXJHTCBleHRlbmRzIENvbXBvbmVudDxcbiAgICBLZXBsZXJHTFByb3BzICYge3NlbGVjdG9yOiAoLi4uYXJnczogYW55W10pID0+IEtlcGxlckdsU3RhdGV9LFxuICAgIEtlcGxlckdMQ29tcFN0YXRlXG4gID4ge1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUztcblxuICAgIHN0YXRlOiBLZXBsZXJHTENvbXBTdGF0ZSA9IHtcbiAgICAgIGRpbWVuc2lvbnM6IG51bGxcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBpZiAoZ2V0QXBwbGljYXRpb25Db25maWcoKS5iYXNlTWFwTGlicmFyeUNvbmZpZz8uWydtYXBib3gnXT8ubWFwTGliTmFtZSA9PT0gJ01hcGJveCcpIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVNYXBib3hUb2tlbigpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9hZE1hcFN0eWxlKCk7XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25LZXBsZXJHbEluaXRpYWxpemVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25LZXBsZXJHbEluaXRpYWxpemVkKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yb290LmN1cnJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBvYnNlcnZlRGltZW5zaW9ucyh0aGlzLnJvb3QuY3VycmVudCwgdGhpcy5faGFuZGxlUmVzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnJvb3QuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5yb290LmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2RpbWVuc2lvbnN9KTtcbiAgICB9O1xuXG4gICAgc3RhdGljIGNvbnRleHRUeXBlID0gUm9vdENvbnRleHQ7XG5cbiAgICByb290ID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4oKTtcbiAgICBib3R0b21XaWRnZXRSZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG5cbiAgICAvKiBzZWxlY3RvcnMgKi9cbiAgICB0aGVtZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudGhlbWU7XG4gICAgdWlUaGVtZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudWlTdGF0ZT8udGhlbWU7XG4gICAgYXZhaWxhYmxlVGhlbWVTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy50aGVtZVNlbGVjdG9yLFxuICAgICAgdGhpcy51aVRoZW1lU2VsZWN0b3IsXG4gICAgICAodGhlbWUsIHVpVGhlbWUpID0+IHtcbiAgICAgICAgLy8gV2hlbiB0aGVtZSB0b2dnbGUgaXMgZW5hYmxlZCwgdWlTdGF0ZS50aGVtZSBkcml2ZXMgbGlnaHQvZGFyayBzd2l0Y2hpbmcuXG4gICAgICAgIGNvbnN0IHRoZW1lSW5wdXQgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVuYWJsZVRoZW1lVG9nZ2xlXG4gICAgICAgICAgPyB1aVRoZW1lIHx8IFRIRU1FLmRhcmtcbiAgICAgICAgICA6IHRoZW1lO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdGhlbWVJbnB1dCA9PT0gJ29iamVjdCcgJiYgdGhlbWVJbnB1dCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5iYXNpY1RoZW1lLFxuICAgICAgICAgICAgLi4udGhlbWVJbnB1dFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoZW1lSW5wdXQgPT09IFRIRU1FLmxpZ2h0KSB7XG4gICAgICAgICAgcmV0dXJuIHRoZW1lTFQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoZW1lSW5wdXQgPT09IFRIRU1FLmJhc2UpIHtcbiAgICAgICAgICByZXR1cm4gdGhlbWVCUztcbiAgICAgICAgfVxuICAgICAgICAvLyBUSEVNRS5kYXJrIGFuZCB1bmtub3duIHZhbHVlcyBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGFyayB0aGVtZVxuICAgICAgICByZXR1cm4gYmFzaWNUaGVtZTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgZGF0YXNldHNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnZpc1N0YXRlLmRhdGFzZXRzO1xuICAgIGZpbHRlcmVkRGF0YXNldHNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMuZGF0YXNldHNTZWxlY3RvciwgZ2V0VmlzaWJsZURhdGFzZXRzKTtcblxuICAgIGF2YWlsYWJsZVByb3ZpZGVycyA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiBwcm9wcy5jbG91ZFByb3ZpZGVycyxcbiAgICAgIHByb3ZpZGVycyA9PlxuICAgICAgICBBcnJheS5pc0FycmF5KHByb3ZpZGVycykgJiYgcHJvdmlkZXJzLmxlbmd0aFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBoYXNTdG9yYWdlOiBwcm92aWRlcnMuc29tZShwID0+IHAuaGFzUHJpdmF0ZVN0b3JhZ2UoKSksXG4gICAgICAgICAgICAgIGhhc1NoYXJlOiBwcm92aWRlcnMuc29tZShwID0+IHAuaGFzU2hhcmluZ1VybCgpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge31cbiAgICApO1xuXG4gICAgbG9jYWxlTWVzc2FnZXNTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiBwcm9wcy5sb2NhbGVNZXNzYWdlcyxcbiAgICAgIGN1c3RvbU1lc3NhZ2VzID0+IChjdXN0b21NZXNzYWdlcyA/IG1lcmdlTWVzc2FnZXMobWVzc2FnZXMsIGN1c3RvbU1lc3NhZ2VzKSA6IG1lc3NhZ2VzKVxuICAgICk7XG5cbiAgICAvKiBwcml2YXRlIG1ldGhvZHMgKi9cbiAgICBfdmFsaWRhdGVNYXBib3hUb2tlbigpIHtcbiAgICAgIGNvbnN0IHttYXBib3hBcGlBY2Nlc3NUb2tlbn0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKCF2YWxpZGF0ZVRva2VuKG1hcGJveEFwaUFjY2Vzc1Rva2VuKSkge1xuICAgICAgICBDb25zb2xlLndhcm4oTUlTU0lOR19NQVBCT1hfVE9LRU4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9sb2FkTWFwU3R5bGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0U3R5bGVzID0gT2JqZWN0LnZhbHVlcyh0aGlzLnByb3BzLm1hcFN0eWxlLm1hcFN0eWxlcyk7XG4gICAgICAvLyBhZGQgaWQgdG8gY3VzdG9tIG1hcCBzdHlsZXMgaWYgbm90IGdpdmVuXG4gICAgICBjb25zdCBjdXN0b21TdHlsZXMgPSAodGhpcy5wcm9wcy5tYXBTdHlsZXMgfHwgW10pLm1hcChtcyA9PiAoe1xuICAgICAgICAuLi5tcyxcbiAgICAgICAgaWQ6IG1zLmlkIHx8IGdlbmVyYXRlSGFzaElkKClcbiAgICAgIH0pKTtcblxuICAgICAgY29uc3QgYWxsU3R5bGVzID0gWy4uLmN1c3RvbVN0eWxlcywgLi4uZGVmYXVsdFN0eWxlc10ucmVkdWNlKChhY2N1LCBzdHlsZSkgPT4ge1xuICAgICAgICBhY2N1W3N0eWxlLmlkXSA9IHN0eWxlO1xuICAgICAgICByZXR1cm4gYWNjdTtcbiAgICAgIH0sIHt9KTtcblxuICAgICAgdGhpcy5wcm9wcy5tYXBTdHlsZUFjdGlvbnMubG9hZE1hcFN0eWxlcyhhbGxTdHlsZXMpO1xuICAgIH07XG5cbiAgICBfZGVsZXRlTWFwTGFiZWxzID0gKGNvbnRhaW5lcklkLCBsYXllcklkKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy50b2dnbGVMYXllckZvck1hcChjb250YWluZXJJZCwgbGF5ZXJJZCk7XG4gICAgfTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBpZCA9ICdtYXAnLFxuICAgICAgICB3aWR0aCA9IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5oZWlnaHQsXG4gICAgICAgIHVpU3RhdGUsXG4gICAgICAgIHZpc1N0YXRlLFxuICAgICAgICAvLyByZWFkT25seSBvdmVycmlkZVxuICAgICAgICByZWFkT25seSxcblxuICAgICAgICAvLyBmZWF0dXJlc1xuICAgICAgICBmZWF0dXJlRmxhZ3MsXG5cbiAgICAgICAgLy8gY2xvdWQgcHJvdmlkZXJzXG4gICAgICAgIGNsb3VkUHJvdmlkZXJzID0gW11cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCBkaW1lbnNpb25zID0gdGhpcy5zdGF0ZS5kaW1lbnNpb25zIHx8IHt3aWR0aCwgaGVpZ2h0fTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3BsaXRNYXBzLCAvLyB0aGlzIHdpbGwgc3RvcmUgc3VwcG9ydCBmb3Igc3BsaXQgbWFwIHZpZXcgaXMgbmVjZXNzYXJ5XG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnXG4gICAgICB9ID0gdmlzU3RhdGU7XG5cbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBpc1NwbGl0U2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCB0aGVtZSA9IHRoaXMuYXZhaWxhYmxlVGhlbWVTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGxvY2FsZU1lc3NhZ2VzID0gdGhpcy5sb2NhbGVNZXNzYWdlc1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgaXNFeHBvcnRpbmdJbWFnZSA9IHVpU3RhdGUuZXhwb3J0SW1hZ2UuZXhwb3J0aW5nO1xuICAgICAgY29uc3QgYXZhaWxhYmxlUHJvdmlkZXJzID0gdGhpcy5hdmFpbGFibGVQcm92aWRlcnModGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkRGF0YXNldHMgPSB0aGlzLmZpbHRlcmVkRGF0YXNldHNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IHNpZGVGaWVsZHMgPSBzaWRlUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzLCBhdmFpbGFibGVQcm92aWRlcnMsIGZpbHRlcmVkRGF0YXNldHMpO1xuICAgICAgY29uc3QgcGxvdENvbnRhaW5lckZpZWxkcyA9IHBsb3RDb250YWluZXJTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGJvdHRvbVdpZGdldEZpZWxkcyA9IGJvdHRvbVdpZGdldFNlbGVjdG9yKHRoaXMucHJvcHMsIHRoZW1lKTtcbiAgICAgIGNvbnN0IG1vZGFsQ29udGFpbmVyRmllbGRzID0gbW9kYWxDb250YWluZXJTZWxlY3Rvcih0aGlzLnByb3BzLCB0aGlzLnJvb3QuY3VycmVudCk7XG4gICAgICBjb25zdCBnZW9Db2RlclBhbmVsRmllbGRzID0gZ2VvQ29kZXJQYW5lbFNlbGVjdG9yKHRoaXMucHJvcHMsIGRpbWVuc2lvbnMpO1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uUGFuZWxGaWVsZHMgPSBub3RpZmljYXRpb25QYW5lbFNlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBtYXBDb250YWluZXJzID0gIWlzU3BsaXRcbiAgICAgICAgPyBbXG4gICAgICAgICAgICA8TWFwQ29udGFpbmVyXG4gICAgICAgICAgICAgIHByaW1hcnk9e3RydWV9XG4gICAgICAgICAgICAgIGtleT17MH1cbiAgICAgICAgICAgICAgaW5kZXg9ezB9XG4gICAgICAgICAgICAgIHsuLi5tYXBGaWVsZHNTZWxlY3Rvcih0aGlzLnByb3BzKX1cbiAgICAgICAgICAgICAgY29udGFpbmVySWQ9ezB9XG4gICAgICAgICAgICAgIGRlbGV0ZU1hcExhYmVscz17dGhpcy5fZGVsZXRlTWFwTGFiZWxzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICBdXG4gICAgICAgIDogc3BsaXRNYXBzLm1hcCgoc2V0dGluZ3MsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8TWFwQ29udGFpbmVyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgcHJpbWFyeT17aW5kZXggPT09IDF9XG4gICAgICAgICAgICAgIHsuLi5tYXBGaWVsZHNTZWxlY3Rvcih0aGlzLnByb3BzLCBpbmRleCl9XG4gICAgICAgICAgICAgIGNvbnRhaW5lcklkPXtpbmRleH1cbiAgICAgICAgICAgICAgZGVsZXRlTWFwTGFiZWxzPXt0aGlzLl9kZWxldGVNYXBMYWJlbHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Um9vdENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3RoaXMucm9vdH0+XG4gICAgICAgICAgPEZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciBmZWF0dXJlRmxhZ3M9e2ZlYXR1cmVGbGFnc30+XG4gICAgICAgICAgICA8SW50bFByb3ZpZGVyIGxvY2FsZT17dWlTdGF0ZS5sb2NhbGV9IG1lc3NhZ2VzPXtsb2NhbGVNZXNzYWdlc1t1aVN0YXRlLmxvY2FsZV19PlxuICAgICAgICAgICAgICA8U3R5bGVTaGVldE1hbmFnZXIgc2hvdWxkRm9yd2FyZFByb3A9e3Nob3VsZEZvcndhcmRQcm9wfT5cbiAgICAgICAgICAgICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICAgICAgICAgICAgPENsb3VkTGlzdFByb3ZpZGVyIHByb3ZpZGVycz17Y2xvdWRQcm92aWRlcnN9PlxuICAgICAgICAgICAgICAgICAgICA8R2xvYmFsU3R5bGVcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJrZXBsZXItZ2xcIlxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtga2VwbGVyLWdsX18ke2lkfWB9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYCR7d2lkdGh9cHhgLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBgJHtoZWlnaHR9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICByZWY9e3RoaXMucm9vdH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25QYW5lbCB7Li4ubm90aWZpY2F0aW9uUGFuZWxGaWVsZHN9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPERuZENvbnRleHQgdmlzU3RhdGU9e3Zpc1N0YXRlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHshdWlTdGF0ZS5yZWFkT25seSAmJiAhcmVhZE9ubHkgJiYgPFNpZGVQYW5lbCB7Li4uc2lkZUZpZWxkc30gLz59XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFwc0xheW91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtYXBzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwU3RhdGU9e3RoaXMucHJvcHMubWFwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZT17dGhpcy5wcm9wcy5tYXBTdGF0ZUFjdGlvbnMuc2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge21hcENvbnRhaW5lcnN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L01hcHNMYXlvdXQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9EbmRDb250ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtpc0V4cG9ydGluZ0ltYWdlICYmIDxQbG90Q29udGFpbmVyIHsuLi5wbG90Q29udGFpbmVyRmllbGRzfSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICB7LyogMSBnZW9jb2Rlcjogc2luZ2xlIG1vZGUgT1Igc3BsaXQgbW9kZSBhbmQgc3luY2VkIHZpZXdwb3J0cyAqL31cbiAgICAgICAgICAgICAgICAgICAgICB7IWlzVmlld3BvcnREaXNqb2ludGVkKHRoaXMucHJvcHMpICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEdlb0NvZGVyUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdlb0NvZGVyUGFuZWxGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN5bmNlZFZpZXdwb3J0cz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgey8qIDIgZ2VvY29kZXJzOiBzcGxpdCBtb2RlIGFuZCB1bnN5bmNlZCB2aWV3cG9ydHMgKi99XG4gICAgICAgICAgICAgICAgICAgICAge2lzVmlld3BvcnREaXNqb2ludGVkKHRoaXMucHJvcHMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXBDb250YWluZXJzLm1hcCgoX21hcENvbnRhaW5lciwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEdlb0NvZGVyUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZW9Db2RlclBhbmVsRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnN5bmNlZFZpZXdwb3J0cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b21XaWRnZXRPdXRlciBhYnNvbHV0ZT17IWhhc1BvcnRhYmxlV2lkdGgoYnJlYWtQb2ludFZhbHVlcyl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbVdpZGdldFxuICAgICAgICAgICAgICAgICAgICAgICAgICByb290UmVmPXt0aGlzLmJvdHRvbVdpZGdldFJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmJvdHRvbVdpZGdldEZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyVz17ZGltZW5zaW9ucy53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L0JvdHRvbVdpZGdldE91dGVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxNb2RhbENvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLm1vZGFsQ29udGFpbmVyRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyVz17ZGltZW5zaW9ucy53aWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckg9e2RpbWVuc2lvbnMuaGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvR2xvYmFsU3R5bGU+XG4gICAgICAgICAgICAgICAgICA8L0Nsb3VkTGlzdFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9TdHlsZVNoZWV0TWFuYWdlcj5cbiAgICAgICAgICAgIDwvSW50bFByb3ZpZGVyPlxuICAgICAgICAgIDwvRmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICA8L1Jvb3RDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ga2VwbGVyR2xDb25uZWN0KFxuICAgIG1hcFN0YXRlVG9Qcm9wcyxcbiAgICBtYWtlTWFwRGlzcGF0Y2hUb1Byb3BzXG4gICkod2l0aFRoZW1lKEtlcGxlckdMKSkgYXMgUmV0dXJuVHlwZTx0eXBlb2YgS2VwbGVyR2xGYWN0b3J5Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZTogS2VwbGVyR2xTdGF0ZSwgcHJvcHM6IEtlcGxlckdMUHJvcHMpIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wcm9wcyxcbiAgICB2aXNTdGF0ZTogc3RhdGUudmlzU3RhdGUsXG4gICAgbWFwU3R5bGU6IHN0YXRlLm1hcFN0eWxlLFxuICAgIG1hcFN0YXRlOiBzdGF0ZS5tYXBTdGF0ZSxcbiAgICB1aVN0YXRlOiBzdGF0ZS51aVN0YXRlLFxuICAgIHByb3ZpZGVyU3RhdGU6IHN0YXRlLnByb3ZpZGVyU3RhdGVcbiAgfTtcbn1cblxuY29uc3QgZGVmYXVsdFVzZXJBY3Rpb25zID0ge307XG5cbmNvbnN0IGdldERpc3BhdGNoID0gZGlzcGF0Y2ggPT4gZGlzcGF0Y2g7XG5jb25zdCBnZXRVc2VyQWN0aW9ucyA9IChkaXNwYXRjaCwgcHJvcHMpID0+IHByb3BzLmFjdGlvbnMgfHwgZGVmYXVsdFVzZXJBY3Rpb25zO1xuXG4vKiogQHR5cGUgeygpID0+IGltcG9ydCgncmVzZWxlY3QnKS5PdXRwdXRQYXJhbWV0cmljU2VsZWN0b3I8YW55LCBhbnksIGFueSwgYW55Pn0gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlR2V0QWN0aW9uQ3JlYXRvcnMoKSB7XG4gIHJldHVybiBjcmVhdGVTZWxlY3RvcihbZ2V0RGlzcGF0Y2gsIGdldFVzZXJBY3Rpb25zXSwgKGRpc3BhdGNoLCB1c2VyQWN0aW9ucykgPT4ge1xuICAgIGNvbnN0IFt2aXNTdGF0ZUFjdGlvbnMsIG1hcFN0YXRlQWN0aW9ucywgbWFwU3R5bGVBY3Rpb25zLCB1aVN0YXRlQWN0aW9ucywgcHJvdmlkZXJBY3Rpb25zXSA9IFtcbiAgICAgIFZpc1N0YXRlQWN0aW9ucyxcbiAgICAgIE1hcFN0YXRlQWN0aW9ucyxcbiAgICAgIE1hcFN0eWxlQWN0aW9ucyxcbiAgICAgIFVJU3RhdGVBY3Rpb25zLFxuICAgICAgUHJvdmlkZXJBY3Rpb25zXG4gICAgXS5tYXAoYWN0aW9ucyA9PiBiaW5kQWN0aW9uQ3JlYXRvcnMobWVyZ2VBY3Rpb25zKGFjdGlvbnMsIHVzZXJBY3Rpb25zKSwgZGlzcGF0Y2gpKTtcblxuICAgIHJldHVybiB7XG4gICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICBtYXBTdGF0ZUFjdGlvbnMsXG4gICAgICBtYXBTdHlsZUFjdGlvbnMsXG4gICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgIHByb3ZpZGVyQWN0aW9ucyxcbiAgICAgIGRpc3BhdGNoXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VNYXBEaXNwYXRjaFRvUHJvcHMoKSB7XG4gIGNvbnN0IGdldEFjdGlvbkNyZWF0b3JzID0gbWFrZUdldEFjdGlvbkNyZWF0b3JzKCk7XG4gIGNvbnN0IG1hcERpc3BhdGNoVG9Qcm9wcyA9IChkaXNwYXRjaCwgb3duUHJvcHMpID0+IHtcbiAgICBjb25zdCBncm91cGVkQWN0aW9uQ3JlYXRvcnMgPSBnZXRBY3Rpb25DcmVhdG9ycyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmdyb3VwZWRBY3Rpb25DcmVhdG9ycyxcbiAgICAgIGRpc3BhdGNoXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gbWFwRGlzcGF0Y2hUb1Byb3BzO1xufVxuXG4vKipcbiAqIE92ZXJyaWRlIGRlZmF1bHQga2VwbGVyLmdsIGFjdGlvbnMgd2l0aCB1c2VyIGRlZmluZWQgYWN0aW9ucyB1c2luZyB0aGUgc2FtZSBrZXlcbiAqL1xuZnVuY3Rpb24gbWVyZ2VBY3Rpb25zKGFjdGlvbnMsIHVzZXJBY3Rpb25zKSB7XG4gIGNvbnN0IG92ZXJyaWRlcyA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiB1c2VyQWN0aW9ucykge1xuICAgIGlmIChcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1c2VyQWN0aW9ucywga2V5KSAmJlxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFjdGlvbnMsIGtleSlcbiAgICApIHtcbiAgICAgIG92ZXJyaWRlc1trZXldID0gdXNlckFjdGlvbnNba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gey4uLmFjdGlvbnMsIC4uLm92ZXJyaWRlc307XG59XG5cbmV4cG9ydCBkZWZhdWx0IEtlcGxlckdsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGlCQUFBLEdBQUFMLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxnQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsYUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsUUFBQSxHQUFBVCxPQUFBO0FBVUEsSUFBQVUsUUFBQSxHQUFBVixPQUFBO0FBUUEsSUFBQVcsWUFBQSxHQUFBWCxPQUFBO0FBRUEsSUFBQVksa0JBQUEsR0FBQVosT0FBQTtBQVVBLElBQUFhLFVBQUEsR0FBQWIsT0FBQTtBQVVBLElBQUFjLFVBQUEsR0FBQVosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFlLGNBQUEsR0FBQWIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFnQixXQUFBLEdBQUFkLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBaUIsYUFBQSxHQUFBZixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWtCLGVBQUEsR0FBQWhCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBbUIsY0FBQSxHQUFBakIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFvQixrQkFBQSxHQUFBbEIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFxQixjQUFBLEdBQUFuQixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQXNCLGNBQUEsR0FBQXBCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBdUIsV0FBQSxHQUFBckIsc0JBQUEsQ0FBQUYs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
685
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVkdXgiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZXNlbGVjdCIsIl9rZXBsZXJnbENvbm5lY3QiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfY29tbW9uVXRpbHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfY29uc3RhbnRzIiwiX3NpZGVQYW5lbCIsIl9tYXBDb250YWluZXIyIiwiX21hcHNMYXlvdXQiLCJfYm90dG9tV2lkZ2V0IiwiX21vZGFsQ29udGFpbmVyIiwiX3Bsb3RDb250YWluZXIiLCJfbm90aWZpY2F0aW9uUGFuZWwiLCJfZ2VvY29kZXJQYW5lbCIsIl9lZmZlY3RNYW5hZ2VyIiwiX2RuZENvbnRleHQiLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJfcmVtb3RlRGF0YXNldFJlZnJlc2hDb250cm9sbGVyIiwiX3V0aWxzIiwiX3N0eWxlcyIsIl90ZW1wbGF0ZU9iamVjdCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsIlR5cGVFcnJvciIsImEiLCJ1IiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkdsb2JhbFN0eWxlIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJsYWJlbENvbG9yIiwiQm90dG9tV2lkZ2V0T3V0ZXIiLCJfcmVmIiwiYWJzb2x1dGUiLCJjb25jYXQiLCJpc1ZpZXdwb3J0RGlzam9pbnRlZCIsImV4cG9ydHMiLCJtYXBTdGF0ZSIsImlzU3BsaXQiLCJpc1ZpZXdwb3J0U3luY2VkIiwic3BsaXRNYXBWaWV3cG9ydHMiLCJtYXBTdGF0ZVNlbGVjdG9yIiwiY3JlYXRlU2VsZWN0b3IiLCJfIiwiaW5kZXgiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsIm1hcEZpZWxkc1NlbGVjdG9yIiwidW5kZWZpbmVkIiwiYXR0cmlidXRpb24iLCJhdHRyaWJ1dGlvblNlbGVjdG9yIiwiZ2V0TWFwYm94UmVmIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJERUZBVUxUX0tFUExFUl9HTF9QUk9QUyIsImRhdGFzZXRBdHRyaWJ1dGlvbnMiLCJzb3VyY2VzIiwiYXR0cmlidXRpb25Mb2dvcyIsImxvZ29zIiwibWFwU3R5bGUiLCJvbkRlY2tJbml0aWFsaXplZCIsIm9uVmlld1N0YXRlQ2hhbmdlIiwib25Nb3VzZU1vdmUiLCJkZWNrR2xQcm9wcyIsInVpU3RhdGVBY3Rpb25zIiwidmlzU3RhdGVBY3Rpb25zIiwibWFwU3RhdGVBY3Rpb25zIiwidmlzU3RhdGUiLCJhY3RpdmVTaWRlUGFuZWwiLCJ1aVN0YXRlIiwibWFwQ29udHJvbHMiLCJyZWFkT25seSIsImxvY2FsZSIsInVpVGhlbWUiLCJpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlIiwibG9hZGluZ0luZGljYXRvclZhbHVlIiwic2lkZVBhbmVsV2lkdGgiLCJ3aWR0aCIsInRvcE1hcENvbnRhaW5lclByb3BzIiwiYm90dG9tTWFwQ29udGFpbmVyUHJvcHMiLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwiUlRMVGV4dFBsdWdpbiIsImdldFZpc2libGVEYXRhc2V0cyIsImRhdGFzZXRzIiwiZmlsdGVyT2JqZWN0QnlQcmVkaWNhdGUiLCJrZXkiLCJHRU9DT0RFUl9EQVRBU0VUX05BTUUiLCJzaWRlUGFuZWxTZWxlY3RvciIsImF2YWlsYWJsZVByb3ZpZGVycyIsImZpbHRlcmVkRGF0YXNldHMiLCJhcHBOYW1lIiwidmVyc2lvbiIsImFwcFdlYnNpdGUiLCJvblNhdmVNYXAiLCJtYXBTdHlsZUFjdGlvbnMiLCJmaWx0ZXJzIiwibGF5ZXJzIiwibGF5ZXJPcmRlciIsImxheWVyQ2xhc3NlcyIsImludGVyYWN0aW9uQ29uZmlnIiwibWFwSW5mbyIsImxheWVyQmxlbmRpbmciLCJvdmVybGF5QmxlbmRpbmciLCJtYXBTYXZlZCIsInByb3ZpZGVyU3RhdGUiLCJwbG90Q29udGFpbmVyU2VsZWN0b3IiLCJoZWlnaHQiLCJyYXRpbyIsImV4cG9ydEltYWdlIiwicmVzb2x1dGlvbiIsImxlZ2VuZCIsImNlbnRlciIsImltYWdlU2l6ZSIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsIm1hcEZpZWxkcyIsImFkZE5vdGlmaWNhdGlvbiIsInNldEV4cG9ydEltYWdlU2V0dGluZyIsInNldEV4cG9ydEltYWdlRGF0YVVyaSIsInNldEV4cG9ydEltYWdlRXJyb3IiLCJzcGxpdE1hcHMiLCJpc1NwbGl0U2VsZWN0b3IiLCJib3R0b21XaWRnZXRTZWxlY3RvciIsImFuaW1hdGlvbkNvbmZpZyIsInRvZ2dsZU1vZGFsIiwic2lkZVBhbmVsIiwibWFyZ2luIiwibGVmdCIsIm1vZGFsQ29udGFpbmVyU2VsZWN0b3IiLCJyb290Tm9kZSIsInByb3ZpZGVyQWN0aW9ucyIsImNsb3VkUHJvdmlkZXJzIiwib25FeHBvcnRUb0Nsb3VkU3VjY2VzcyIsIm9uTG9hZENsb3VkTWFwU3VjY2VzcyIsIm9uTG9hZENsb3VkTWFwRXJyb3IiLCJvbkV4cG9ydFRvQ2xvdWRFcnJvciIsImdlb0NvZGVyUGFuZWxTZWxlY3RvciIsImRpbWVuc2lvbnMiLCJfcHJvcHMkdmlzU3RhdGUkaW50ZXIiLCJfcHJvcHMkdmlzU3RhdGUkaW50ZXIyIiwiaXNHZW9jb2RlckVuYWJsZWQiLCJnZW9jb2RlciIsImVuYWJsZWQiLCJ1cGRhdGVWaXNEYXRhIiwicmVtb3ZlRGF0YXNldCIsInVwZGF0ZU1hcCIsImFwcFdpZHRoIiwibGltaXRTZWFyY2giLCJjb25maWciLCJkYXRhc2V0QXR0cmlidXRpb25TZWxlY3RvciIsInN0YXRlIiwidW5pcXVlQXR0cmlidXRpb25zIiwiX2RzJG1ldGFkYXRhIiwiZHMiLCJhdHRyaWJ1dGlvbnMiLCJtZXRhZGF0YSIsImxpbmtzIiwibWF0Y2giLCJsaW5rIiwiX2xpbmskbWF0Y2giLCJfbGluayRtYXRjaDIiLCJocmVmIiwidGl0bGUiLCJpbmRleE9mIiwidXJsIiwiZXJyb3IiLCJsYXllckF0dHJpYnV0aW9uS2V5U2VsZWN0b3IiLCJfc3RhdGUkdmlzU3RhdGUiLCJfaXRlcmF0b3IiLCJfc3RlcCIsIl9sYXllciRjb25maWciLCJfbGF5ZXIkbWV0YSIsImxheWVyIiwiaXNWaXNpYmxlIiwibWV0YSIsIl9hJGxvZ29VcmwiLCJsb2dvVXJsIiwiZXJyIiwibGF5ZXJBdHRyaWJ1dGlvblNlbGVjdG9yIiwiX3N0YXRlJHZpc1N0YXRlMiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfbG9vcCIsIl9sYXllciRjb25maWcyIiwiX2xheWVyJG1ldGEyIiwiYXR0ciIsImZpbmQiLCJsYXllckF0dHJpYnV0aW9ucyIsInVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwibGF5ZXJBdHRyaWJ1dGlvbiIsIm5vdGlmaWNhdGlvblBhbmVsU2VsZWN0b3IiLCJyZW1vdmVOb3RpZmljYXRpb24iLCJub3RpZmljYXRpb25zIiwibWFwU3R5bGVzIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiS0VQTEVSX0dMX05BTUUiLCJLRVBMRVJfR0xfVkVSU0lPTiIsIkRJTUVOU0lPTlMiLCJmZWF0dXJlRmxhZ3MiLCJLZXBsZXJHbEZhY3RvcnkiLCJkZXBzIiwiQm90dG9tV2lkZ2V0RmFjdG9yeSIsIkdlb0NvZGVyUGFuZWxGYWN0b3J5IiwiTWFwQ29udGFpbmVyRmFjdG9yeSIsIk1hcHNMYXlvdXRGYWN0b3J5IiwiTW9kYWxDb250YWluZXJGYWN0b3J5IiwiU2lkZVBhbmVsRmFjdG9yeSIsIlBsb3RDb250YWluZXJGYWN0b3J5IiwiTm90aWZpY2F0aW9uUGFuZWxGYWN0b3J5IiwiRG5kQ29udGV4dEZhY3RvcnkiLCJFZmZlY3RNYW5hZ2VyRmFjdG9yeSIsIkJvdHRvbVdpZGdldCIsIkdlb0NvZGVyUGFuZWwiLCJNYXBDb250YWluZXIiLCJNYXBzTGF5b3V0IiwiTW9kYWxDb250YWluZXIiLCJTaWRlUGFuZWwiLCJQbG90Q29udGFpbmVyIiwiTm90aWZpY2F0aW9uUGFuZWwiLCJEbmRDb250ZXh0IiwiS2VwbGVyR0wiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsImFyZ3MiLCJfa2V5Iiwic2V0U3RhdGUiLCJjcmVhdGVSZWYiLCJfcHJvcHMkdWlTdGF0ZSIsInRoZW1lU2VsZWN0b3IiLCJ1aVRoZW1lU2VsZWN0b3IiLCJ0aGVtZUlucHV0IiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJlbmFibGVUaGVtZVRvZ2dsZSIsIlRIRU1FIiwiZGFyayIsIl90eXBlb2YyIiwiYmFzaWNUaGVtZSIsImxpZ2h0IiwidGhlbWVMVCIsImJhc2UiLCJ0aGVtZUJTIiwiZGF0YXNldHNTZWxlY3RvciIsInByb3ZpZGVycyIsImhhc1N0b3JhZ2UiLCJzb21lIiwicCIsImhhc1ByaXZhdGVTdG9yYWdlIiwiaGFzU2hhcmUiLCJoYXNTaGFyaW5nVXJsIiwibG9jYWxlTWVzc2FnZXMiLCJjdXN0b21NZXNzYWdlcyIsIm1lcmdlTWVzc2FnZXMiLCJtZXNzYWdlcyIsImRlZmF1bHRTdHlsZXMiLCJ2YWx1ZXMiLCJjdXN0b21TdHlsZXMiLCJtYXAiLCJtcyIsImlkIiwiZ2VuZXJhdGVIYXNoSWQiLCJhbGxTdHlsZXMiLCJyZWR1Y2UiLCJhY2N1Iiwic3R5bGUiLCJsb2FkTWFwU3R5bGVzIiwiY29udGFpbmVySWQiLCJsYXllcklkIiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImNvbXBvbmVudERpZE1vdW50IiwiX2dldEFwcGxpY2F0aW9uQ29uZmlnIiwiYmFzZU1hcExpYnJhcnlDb25maWciLCJtYXBMaWJOYW1lIiwiX3ZhbGlkYXRlTWFwYm94VG9rZW4iLCJfbG9hZE1hcFN0eWxlIiwib25LZXBsZXJHbEluaXRpYWxpemVkIiwicm9vdCIsImN1cnJlbnQiLCJIVE1MRWxlbWVudCIsIm9ic2VydmVEaW1lbnNpb25zIiwiX2hhbmRsZVJlc2l6ZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwidW5vYnNlcnZlRGltZW5zaW9ucyIsInZhbGlkYXRlVG9rZW4iLCJDb25zb2xlIiwid2FybiIsIk1JU1NJTkdfTUFQQk9YX1RPS0VOIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMiLCJfdGhpcyRwcm9wcyRpZCIsIl90aGlzJHByb3BzJHdpZHRoIiwiX3RoaXMkcHJvcHMkaGVpZ2h0IiwiX3RoaXMkcHJvcHMkY2xvdWRQcm92IiwiYXZhaWxhYmxlVGhlbWVTZWxlY3RvciIsImxvY2FsZU1lc3NhZ2VzU2VsZWN0b3IiLCJpc0V4cG9ydGluZ0ltYWdlIiwiZXhwb3J0aW5nIiwiZmlsdGVyZWREYXRhc2V0c1NlbGVjdG9yIiwic2lkZUZpZWxkcyIsInBsb3RDb250YWluZXJGaWVsZHMiLCJib3R0b21XaWRnZXRGaWVsZHMiLCJtb2RhbENvbnRhaW5lckZpZWxkcyIsImdlb0NvZGVyUGFuZWxGaWVsZHMiLCJub3RpZmljYXRpb25QYW5lbEZpZWxkcyIsIm1hcENvbnRhaW5lcnMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwicHJpbWFyeSIsImRlbGV0ZU1hcExhYmVscyIsIl9kZWxldGVNYXBMYWJlbHMiLCJzZXR0aW5ncyIsIlJvb3RDb250ZXh0IiwiUHJvdmlkZXIiLCJGZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXIiLCJJbnRsUHJvdmlkZXIiLCJTdHlsZVNoZWV0TWFuYWdlciIsInNob3VsZEZvcndhcmRQcm9wIiwiVGhlbWVQcm92aWRlciIsIkNsb3VkTGlzdFByb3ZpZGVyIiwiY2xhc3NOYW1lIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJwb3NpdGlvbiIsInJlZiIsInJlZnJlc2hEYXRhc2V0Iiwib25TZXRTd2lwZUNvbXBhcmVQZXJjZW50YWdlIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZSIsInVuc3luY2VkVmlld3BvcnRzIiwiX21hcENvbnRhaW5lciIsImhhc1BvcnRhYmxlV2lkdGgiLCJicmVha1BvaW50VmFsdWVzIiwicm9vdFJlZiIsImJvdHRvbVdpZGdldFJlZiIsImNvbnRhaW5lclciLCJjb250YWluZXJIIiwiQ29tcG9uZW50Iiwia2VwbGVyR2xDb25uZWN0IiwibWFwU3RhdGVUb1Byb3BzIiwibWFrZU1hcERpc3BhdGNoVG9Qcm9wcyIsIndpdGhUaGVtZSIsImRlZmF1bHRVc2VyQWN0aW9ucyIsImdldERpc3BhdGNoIiwiZGlzcGF0Y2giLCJnZXRVc2VyQWN0aW9ucyIsImFjdGlvbnMiLCJtYWtlR2V0QWN0aW9uQ3JlYXRvcnMiLCJ1c2VyQWN0aW9ucyIsIl9tYXAiLCJWaXNTdGF0ZUFjdGlvbnMiLCJNYXBTdGF0ZUFjdGlvbnMiLCJNYXBTdHlsZUFjdGlvbnMiLCJVSVN0YXRlQWN0aW9ucyIsIlByb3ZpZGVyQWN0aW9ucyIsImJpbmRBY3Rpb25DcmVhdG9ycyIsIm1lcmdlQWN0aW9ucyIsIl9tYXAyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZ2V0QWN0aW9uQ3JlYXRvcnMiLCJtYXBEaXNwYXRjaFRvUHJvcHMiLCJvd25Qcm9wcyIsImdyb3VwZWRBY3Rpb25DcmVhdG9ycyIsIm92ZXJyaWRlcyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2tlcGxlci1nbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIERpc3BhdGNofSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge2JpbmRBY3Rpb25DcmVhdG9yc30gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZSwgU3R5bGVTaGVldE1hbmFnZXIsIFRoZW1lUHJvdmlkZXJ9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCB7Y29ubmVjdCBhcyBrZXBsZXJHbENvbm5lY3R9IGZyb20gJy4vY29ubmVjdC9rZXBsZXJnbC1jb25uZWN0JztcbmltcG9ydCB7SW50bFByb3ZpZGVyfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB7bWVzc2FnZXN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7Um9vdENvbnRleHQsIEZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlciwgRmVhdHVyZUZsYWdzfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHtcbiAgQXR0cmlidXRpb25XaXRoU3R5bGUsXG4gIERhdGFzZXRBdHRyaWJ1dGlvbixcbiAgT25FcnJvckNhbGxCYWNrLFxuICBPblN1Y2Nlc3NDYWxsQmFjayxcbiAgVmlld3BvcnQsXG4gIE1hcFN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge1xuICBNYXBTdGF0ZUFjdGlvbnMsXG4gIE1hcFN0eWxlQWN0aW9ucyxcbiAgUHJvdmlkZXJBY3Rpb25zLFxuICBVSVN0YXRlQWN0aW9ucyxcbiAgVmlzU3RhdGVBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5cbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcblxuaW1wb3J0IHtzaG91bGRGb3J3YXJkUHJvcH0gZnJvbSAnLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG50eXBlIEtlcGxlckdsQWN0aW9ucyA9IHtcbiAgdmlzU3RhdGVBY3Rpb25zOiB0eXBlb2YgVmlzU3RhdGVBY3Rpb25zO1xuICBtYXBTdGF0ZUFjdGlvbnM6IHR5cGVvZiBNYXBTdGF0ZUFjdGlvbnM7XG4gIG1hcFN0eWxlQWN0aW9uczogdHlwZW9mIE1hcFN0eWxlQWN0aW9ucztcbiAgdWlTdGF0ZUFjdGlvbnM6IHR5cGVvZiBVSVN0YXRlQWN0aW9ucztcbiAgcHJvdmlkZXJBY3Rpb25zOiB0eXBlb2YgUHJvdmlkZXJBY3Rpb25zO1xufTtcblxuaW1wb3J0IHtcbiAgRElNRU5TSU9OUyxcbiAgS0VQTEVSX0dMX05BTUUsXG4gIEtFUExFUl9HTF9WRVJTSU9OLFxuICBUSEVNRSxcbiAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCxcbiAgR0VPQ09ERVJfREFUQVNFVF9OQU1FLFxuICBNSVNTSU5HX01BUEJPWF9UT0tFTlxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCBTaWRlUGFuZWxGYWN0b3J5IGZyb20gJy4vc2lkZS1wYW5lbCc7XG5pbXBvcnQgTWFwQ29udGFpbmVyRmFjdG9yeSBmcm9tICcuL21hcC1jb250YWluZXInO1xuaW1wb3J0IE1hcHNMYXlvdXRGYWN0b3J5IGZyb20gJy4vbWFwcy1sYXlvdXQnO1xuaW1wb3J0IEJvdHRvbVdpZGdldEZhY3RvcnkgZnJvbSAnLi9ib3R0b20td2lkZ2V0JztcbmltcG9ydCBNb2RhbENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9tb2RhbC1jb250YWluZXInO1xuaW1wb3J0IFBsb3RDb250YWluZXJGYWN0b3J5IGZyb20gJy4vcGxvdC1jb250YWluZXInO1xuaW1wb3J0IE5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeSBmcm9tICcuL25vdGlmaWNhdGlvbi1wYW5lbCc7XG5pbXBvcnQgR2VvQ29kZXJQYW5lbEZhY3RvcnkgZnJvbSAnLi9nZW9jb2Rlci1wYW5lbCc7XG5pbXBvcnQgRWZmZWN0TWFuYWdlckZhY3RvcnkgZnJvbSAnLi9lZmZlY3RzL2VmZmVjdC1tYW5hZ2VyJztcbmltcG9ydCBEbmRDb250ZXh0RmFjdG9yeSBmcm9tICcuL2RuZC1jb250ZXh0JztcbmltcG9ydCB7Q2xvdWRMaXN0UHJvdmlkZXJ9IGZyb20gJy4vaG9va3MvdXNlLWNsb3VkLWxpc3QtcHJvdmlkZXInO1xuaW1wb3J0IFJlbW90ZURhdGFzZXRSZWZyZXNoQ29udHJvbGxlciBmcm9tICcuL3JlbW90ZS1kYXRhc2V0LXJlZnJlc2gtY29udHJvbGxlcic7XG5cbmltcG9ydCB7XG4gIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlLFxuICB2YWxpZGF0ZVRva2VuLFxuICBtZXJnZU1lc3NhZ2VzLFxuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9ucyxcbiAgaGFzUG9ydGFibGVXaWR0aCxcbiAgZ2V0QXBwbGljYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7dGhlbWUgYXMgYmFzaWNUaGVtZSwgdGhlbWVMVCwgdGhlbWVCUywgYnJlYWtQb2ludFZhbHVlc30gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtLZXBsZXJHbFN0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcblxuLy8gTWF5YmUgd2Ugc2hvdWxkIHRoaW5rIGFib3V0IGV4cG9ydGluZyB0aGlzIG9yIGNyZWF0aW5nIGEgdmFyaWFibGVcbi8vIGFzIHBhcnQgb2YgdGhlIGJhc2UuanMgdGhlbWVcbmNvbnN0IEdsb2JhbFN0eWxlID0gc3R5bGVkLmRpdmBcbiAgZm9udC1mYW1pbHk6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udEZhbWlseX07XG4gIGZvbnQtd2VpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmZvbnRXZWlnaHR9O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udFNpemV9O1xuICBsaW5lLWhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5saW5lSGVpZ2h0fTtcblxuICAqLFxuICAqOmJlZm9yZSxcbiAgKjphZnRlciB7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgbGkge1xuICAgIG1hcmdpbjogMDtcbiAgfVxuXG4gIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgfVxuXG4gIDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC5tYXBsaWJyZWdsLWN0cmwgLm1hcGxpYnJlZ2wtY3RybC1sb2dvIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLm1hcGJveGdsLWN0cmwgLm1hcGJveGdsLWN0cmwtbG9nbyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuYDtcblxudHlwZSBCb3R0b21XaWRnZXRPdXRlclByb3BzID0ge1xuICBhYnNvbHV0ZT86IGJvb2xlYW47XG59O1xuXG5jb25zdCBCb3R0b21XaWRnZXRPdXRlciA9IHN0eWxlZC5kaXY8Qm90dG9tV2lkZ2V0T3V0ZXJQcm9wcz4oXG4gICh7YWJzb2x1dGV9KSA9PiBgXG4gICR7YWJzb2x1dGUgPyAncG9zaXRpb246IGFic29sdXRlOyBib3R0b206IDA7IHJpZ2h0OiAwOycgOiAnJ31cbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIHByZXZlbnQgcGFkZGluZyBmcm9tIGJsb2NraW5nIGlucHV0ICovXG4gICYgPiAqIHtcbiAgICAvKiBhbGwgY2hpbGRyZW4gc2hvdWxkIGFsbG93IGlucHV0ICovXG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgfWBcbik7XG5cbmV4cG9ydCBjb25zdCBpc1ZpZXdwb3J0RGlzam9pbnRlZCA9IHByb3BzID0+IHtcbiAgcmV0dXJuIChcbiAgICBwcm9wcy5tYXBTdGF0ZS5pc1NwbGl0ICYmXG4gICAgIXByb3BzLm1hcFN0YXRlLmlzVmlld3BvcnRTeW5jZWQgJiZcbiAgICBwcm9wcy5tYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGggPiAxXG4gICk7XG59O1xuXG50eXBlIE1hcFN0YXRlUHJvcHMgPSB7XG4gIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXBTdGF0ZVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gIFsocHJvcHM6IE1hcFN0YXRlUHJvcHMpID0+IHByb3BzLm1hcFN0YXRlLCAoXzogTWFwU3RhdGVQcm9wcywgaW5kZXg/OiBudW1iZXIpID0+IGluZGV4XSxcbiAgKG1hcFN0YXRlOiBNYXBTdGF0ZSwgaW5kZXg/OiBudW1iZXIpOiBNYXBTdGF0ZSA9PiB7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoaW5kZXgpKSB7XG4gICAgICAvLyBlaXRoZXIgbm8gaW5kZXggYXJnIG9yIGFuIGludmFsaWQgaW5kZXggd2FzIHByb3ZpZGVkXG4gICAgICAvLyBpdCBpcyBleHBlY3RlZCB0byBiZSBlaXRoZXIgMCBvciAxIHdoZW4gaW4gc3BsaXQgbW9kZVxuICAgICAgLy8gb25seSB1c2UgdGhlIG1hcFN0YXRlXG4gICAgICByZXR1cm4gbWFwU3RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmlld3BvcnREaXNqb2ludGVkKHttYXBTdGF0ZX0pXG4gICAgICA/IC8vIG1peCB0b2dldGhlciB0aGUgdmlld3BvcnQgcHJvcGVydGllcyBpbnRlbmRlZCBmb3IgdGhpcyBkaXNqb2ludGVkIDxNYXBDb250YWluZXI+IHdpdGggdGhlIG90aGVyIG5lY2Vzc2FyeSBtYXBTdGF0ZSBwcm9wZXJ0aWVzXG4gICAgICAgIHsuLi5tYXBTdGF0ZSwgLi4ubWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbaW5kZXggfHwgMF19XG4gICAgICA6IC8vIG90aGVyd2lzZSBvbmx5IHVzZSB0aGUgbWFwU3RhdGVcbiAgICAgICAgbWFwU3RhdGU7XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBtYXBGaWVsZHNTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgaW5kZXggPSAwKSA9PiB7XG4gIGNvbnN0IGF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25TZWxlY3Rvcihwcm9wcyk7XG4gIHJldHVybiB7XG4gICAgZ2V0TWFwYm94UmVmOiBwcm9wcy5nZXRNYXBib3hSZWYsXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHByb3BzLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgIG1hcGJveEFwaVVybDogcHJvcHMubWFwYm94QXBpVXJsID8gcHJvcHMubWFwYm94QXBpVXJsIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMubWFwYm94QXBpVXJsLFxuICAgIG1hcFN0YXRlOiBtYXBTdGF0ZVNlbGVjdG9yKHByb3BzLCBpbmRleCksXG4gICAgZGF0YXNldEF0dHJpYnV0aW9uczogYXR0cmlidXRpb24uc291cmNlcyxcbiAgICBhdHRyaWJ1dGlvbkxvZ29zOiBhdHRyaWJ1dGlvbi5sb2dvcyxcbiAgICBtYXBTdHlsZTogcHJvcHMubWFwU3R5bGUsXG4gICAgb25EZWNrSW5pdGlhbGl6ZWQ6IHByb3BzLm9uRGVja0luaXRpYWxpemVkLFxuICAgIG9uVmlld1N0YXRlQ2hhbmdlOiBwcm9wcy5vblZpZXdTdGF0ZUNoYW5nZSxcbiAgICBvbk1vdXNlTW92ZTogcHJvcHMub25Nb3VzZU1vdmUsXG4gICAgZGVja0dsUHJvcHM6IHByb3BzLmRlY2tHbFByb3BzLFxuICAgIHVpU3RhdGVBY3Rpb25zOiBwcm9wcy51aVN0YXRlQWN0aW9ucyxcbiAgICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgICBtYXBTdGF0ZUFjdGlvbnM6IHByb3BzLm1hcFN0YXRlQWN0aW9ucyxcblxuICAgIC8vIHZpc1N0YXRlXG4gICAgdmlzU3RhdGU6IHByb3BzLnZpc1N0YXRlLFxuXG4gICAgLy8gdWlTdGF0ZVxuICAgIGFjdGl2ZVNpZGVQYW5lbDogcHJvcHMudWlTdGF0ZS5hY3RpdmVTaWRlUGFuZWwsXG4gICAgbWFwQ29udHJvbHM6IHByb3BzLnVpU3RhdGUubWFwQ29udHJvbHMsXG4gICAgcmVhZE9ubHk6IHByb3BzLnVpU3RhdGUucmVhZE9ubHksXG4gICAgbG9jYWxlOiBwcm9wcy51aVN0YXRlLmxvY2FsZSxcbiAgICB1aVRoZW1lOiBwcm9wcy51aVN0YXRlLnRoZW1lLFxuICAgIGlzTG9hZGluZ0luZGljYXRvclZpc2libGU6IE51bWJlcihwcm9wcy52aXNTdGF0ZS5sb2FkaW5nSW5kaWNhdG9yVmFsdWUpID4gMCxcbiAgICBzaWRlUGFuZWxXaWR0aDogcHJvcHMuc2lkZVBhbmVsV2lkdGggPyBwcm9wcy5zaWRlUGFuZWxXaWR0aCA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLndpZHRoLFxuXG4gICAgLy8gbWFwU3R5bGVcbiAgICB0b3BNYXBDb250YWluZXJQcm9wczogcHJvcHMudG9wTWFwQ29udGFpbmVyUHJvcHMsXG4gICAgYm90dG9tTWFwQ29udGFpbmVyUHJvcHM6IHByb3BzLmJvdHRvbU1hcENvbnRhaW5lclByb3BzLFxuXG4gICAgLy8gdHJhbnNmb3JtUmVxdWVzdCBmb3IgTWFwYm94IGJhc2VtYXBzXG4gICAgdHJhbnNmb3JtUmVxdWVzdDogcHJvcHMudHJhbnNmb3JtUmVxdWVzdCxcblxuICAgIFJUTFRleHRQbHVnaW46IHByb3BzLlJUTFRleHRQbHVnaW5cbiAgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXNpYmxlRGF0YXNldHMoZGF0YXNldHMpIHtcbiAgLy8gV2UgZG9uJ3Qgd2FudCBHZW9jb2RlciBkYXRhc2V0IHRvIGJlIHByZXNlbnQgaW4gU2lkZVBhbmVsIGRhdGFzZXQgbGlzdFxuICByZXR1cm4gZmlsdGVyT2JqZWN0QnlQcmVkaWNhdGUoZGF0YXNldHMsIGtleSA9PiBrZXkgIT09IEdFT0NPREVSX0RBVEFTRVRfTkFNRSk7XG59XG5cbmV4cG9ydCBjb25zdCBzaWRlUGFuZWxTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgYXZhaWxhYmxlUHJvdmlkZXJzLCBmaWx0ZXJlZERhdGFzZXRzKSA9PiAoe1xuICBhcHBOYW1lOiBwcm9wcy5hcHBOYW1lID8gcHJvcHMuYXBwTmFtZSA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLmFwcE5hbWUsXG4gIHZlcnNpb246IHByb3BzLnZlcnNpb24gPyBwcm9wcy52ZXJzaW9uIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMudmVyc2lvbixcbiAgYXBwV2Vic2l0ZTogcHJvcHMuYXBwV2Vic2l0ZSxcbiAgbWFwU3R5bGU6IHByb3BzLm1hcFN0eWxlLFxuICBtYXBTdGF0ZTogcHJvcHMubWFwU3RhdGUsXG4gIG9uU2F2ZU1hcDogcHJvcHMub25TYXZlTWFwLFxuICB1aVN0YXRlOiBwcm9wcy51aVN0YXRlLFxuICBtYXBTdHlsZUFjdGlvbnM6IHByb3BzLm1hcFN0eWxlQWN0aW9ucyxcbiAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gIHVpU3RhdGVBY3Rpb25zOiBwcm9wcy51aVN0YXRlQWN0aW9ucyxcbiAgbWFwU3RhdGVBY3Rpb25zOiBwcm9wcy5tYXBTdGF0ZUFjdGlvbnMsXG5cbiAgZGF0YXNldHM6IGZpbHRlcmVkRGF0YXNldHMsXG4gIGZpbHRlcnM6IHByb3BzLnZpc1N0YXRlLmZpbHRlcnMsXG4gIGxheWVyczogcHJvcHMudmlzU3RhdGUubGF5ZXJzLFxuICBsYXllck9yZGVyOiBwcm9wcy52aXNTdGF0ZS5sYXllck9yZGVyLFxuICBsYXllckNsYXNzZXM6IHByb3BzLnZpc1N0YXRlLmxheWVyQ2xhc3NlcyxcbiAgaW50ZXJhY3Rpb25Db25maWc6IHByb3BzLnZpc1N0YXRlLmludGVyYWN0aW9uQ29uZmlnLFxuICBtYXBJbmZvOiBwcm9wcy52aXNTdGF0ZS5tYXBJbmZvLFxuICBsYXllckJsZW5kaW5nOiBwcm9wcy52aXNTdGF0ZS5sYXllckJsZW5kaW5nLFxuICBvdmVybGF5QmxlbmRpbmc6IHByb3BzLnZpc1N0YXRlLm92ZXJsYXlCbGVuZGluZyxcblxuICB3aWR0aDogcHJvcHMuc2lkZVBhbmVsV2lkdGggPyBwcm9wcy5zaWRlUGFuZWxXaWR0aCA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLndpZHRoLFxuICBhdmFpbGFibGVQcm92aWRlcnMsXG4gIG1hcFNhdmVkOiBwcm9wcy5wcm92aWRlclN0YXRlLm1hcFNhdmVkXG59KTtcblxuZXhwb3J0IGNvbnN0IHBsb3RDb250YWluZXJTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gKHtcbiAgd2lkdGg6IHByb3BzLndpZHRoLFxuICBoZWlnaHQ6IHByb3BzLmhlaWdodCxcbiAgcmF0aW86IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UucmF0aW8sXG4gIHJlc29sdXRpb246IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UucmVzb2x1dGlvbixcbiAgbGVnZW5kOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLmxlZ2VuZCxcbiAgY2VudGVyOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLmNlbnRlcixcbiAgaW1hZ2VTaXplOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLmltYWdlU2l6ZSxcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiBwcm9wcy51aVN0YXRlLmV4cG9ydEltYWdlLmVzY2FwZVhodG1sRm9yV2VicGFjayxcblxuICBtYXBGaWVsZHM6IG1hcEZpZWxkc1NlbGVjdG9yKHByb3BzKSxcbiAgYWRkTm90aWZpY2F0aW9uOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5hZGROb3RpZmljYXRpb24sXG4gIHNldEV4cG9ydEltYWdlU2V0dGluZzogcHJvcHMudWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VTZXR0aW5nLFxuICBzZXRFeHBvcnRJbWFnZURhdGFVcmk6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnNldEV4cG9ydEltYWdlRGF0YVVyaSxcbiAgc2V0RXhwb3J0SW1hZ2VFcnJvcjogcHJvcHMudWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VFcnJvcixcbiAgc3BsaXRNYXBzOiBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHNcbn0pO1xuXG5leHBvcnQgY29uc3QgaXNTcGxpdFNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PlxuICBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHMgJiYgcHJvcHMudmlzU3RhdGUuc3BsaXRNYXBzLmxlbmd0aCA+IDE7XG5cbmV4cG9ydCBjb25zdCBib3R0b21XaWRnZXRTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcywgdGhlbWUpID0+ICh7XG4gIGZpbHRlcnM6IHByb3BzLnZpc1N0YXRlLmZpbHRlcnMsXG4gIGRhdGFzZXRzOiBwcm9wcy52aXNTdGF0ZS5kYXRhc2V0cyxcbiAgdWlTdGF0ZTogcHJvcHMudWlTdGF0ZSxcbiAgbGF5ZXJzOiBwcm9wcy52aXNTdGF0ZS5sYXllcnMsXG4gIGFuaW1hdGlvbkNvbmZpZzogcHJvcHMudmlzU3RhdGUuYW5pbWF0aW9uQ29uZmlnLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgdG9nZ2xlTW9kYWw6IHByb3BzLnVpU3RhdGVBY3Rpb25zLnRvZ2dsZU1vZGFsLFxuICBzaWRlUGFuZWxXaWR0aDogcHJvcHMudWlTdGF0ZS5yZWFkT25seSA/IDAgOiBwcm9wcy5zaWRlUGFuZWxXaWR0aCArIHRoZW1lLnNpZGVQYW5lbC5tYXJnaW4ubGVmdFxufSk7XG5cbmV4cG9ydCBjb25zdCBtb2RhbENvbnRhaW5lclNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzLCByb290Tm9kZSkgPT4gKHtcbiAgYXBwTmFtZTogcHJvcHMuYXBwTmFtZSA/IHByb3BzLmFwcE5hbWUgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5hcHBOYW1lLFxuICBtYXBTdHlsZTogcHJvcHMubWFwU3R5bGUsXG4gIHZpc1N0YXRlOiBwcm9wcy52aXNTdGF0ZSxcbiAgbWFwU3RhdGU6IHByb3BzLm1hcFN0YXRlLFxuICB1aVN0YXRlOiBwcm9wcy51aVN0YXRlLFxuICBwcm92aWRlclN0YXRlOiBwcm9wcy5wcm92aWRlclN0YXRlLFxuXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwcm9wcy5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwYm94QXBpVXJsOiBwcm9wcy5tYXBib3hBcGlVcmwsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICB1aVN0YXRlQWN0aW9uczogcHJvcHMudWlTdGF0ZUFjdGlvbnMsXG4gIG1hcFN0eWxlQWN0aW9uczogcHJvcHMubWFwU3R5bGVBY3Rpb25zLFxuICBwcm92aWRlckFjdGlvbnM6IHByb3BzLnByb3ZpZGVyQWN0aW9ucyxcblxuICByb290Tm9kZSxcbiAgLy8gVXNlciBkZWZpbmVkIGNsb3VkIHByb3ZpZGVyIHByb3BzXG4gIGNsb3VkUHJvdmlkZXJzOiBwcm9wcy5jbG91ZFByb3ZpZGVyc1xuICAgID8gcHJvcHMuY2xvdWRQcm92aWRlcnNcbiAgICA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLmNsb3VkUHJvdmlkZXJzLFxuICBvbkV4cG9ydFRvQ2xvdWRTdWNjZXNzOiBwcm9wcy5vbkV4cG9ydFRvQ2xvdWRTdWNjZXNzLFxuICBvbkxvYWRDbG91ZE1hcFN1Y2Nlc3M6IHByb3BzLm9uTG9hZENsb3VkTWFwU3VjY2VzcyxcbiAgb25Mb2FkQ2xvdWRNYXBFcnJvcjogcHJvcHMub25Mb2FkQ2xvdWRNYXBFcnJvcixcbiAgb25FeHBvcnRUb0Nsb3VkRXJyb3I6IHByb3BzLm9uRXhwb3J0VG9DbG91ZEVycm9yXG59KTtcblxuZXhwb3J0IGNvbnN0IGdlb0NvZGVyUGFuZWxTZWxlY3RvciA9IChcbiAgcHJvcHM6IEtlcGxlckdMUHJvcHMsXG4gIGRpbWVuc2lvbnM6IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn1cbikgPT4gKHtcbiAgaXNHZW9jb2RlckVuYWJsZWQ6IHByb3BzLnZpc1N0YXRlLmludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQsXG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBwcm9wcy5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgbWFwU3RhdGU6IHByb3BzLm1hcFN0YXRlLFxuICB1aVN0YXRlOiBwcm9wcy51aVN0YXRlLFxuICBsYXllck9yZGVyOiBwcm9wcy52aXNTdGF0ZS5sYXllck9yZGVyLFxuICB1cGRhdGVWaXNEYXRhOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMudXBkYXRlVmlzRGF0YSxcbiAgcmVtb3ZlRGF0YXNldDogcHJvcHMudmlzU3RhdGVBY3Rpb25zLnJlbW92ZURhdGFzZXQsXG4gIHVwZGF0ZU1hcDogcHJvcHMubWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcCxcbiAgYXBwV2lkdGg6IGRpbWVuc2lvbnMud2lkdGgsXG4gIGxpbWl0U2VhcmNoOiBwcm9wcy52aXNTdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5jb25maWc/LmxpbWl0U2VhcmNoID8/IGZhbHNlXG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIGFycmF5IG9mIHVuaXF1ZSBkYXRhc2V0IGF0dHJpYnV0aW9ucywgZWFjaCB3aXRoIHRpdGxlIGFuZCB1cmwgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGRhdGFzZXRBdHRyaWJ1dGlvblNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gIFtzdGF0ZSA9PiBzdGF0ZS52aXNTdGF0ZS5kYXRhc2V0c10sXG4gIGRhdGFzZXRzID0+IHtcbiAgICBjb25zdCB1bmlxdWVBdHRyaWJ1dGlvbnM6IERhdGFzZXRBdHRyaWJ1dGlvbltdID0gW107XG4gICAgT2JqZWN0LmtleXMoZGF0YXNldHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGRzID0gZGF0YXNldHNba2V5XTtcbiAgICAgIGNvbnN0IGF0dHJpYnV0aW9ucyA9IGRzPy5tZXRhZGF0YT8uYXR0cmlidXRpb25zO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXR0cmlidXRpb25zKSkge1xuICAgICAgICBhdHRyaWJ1dGlvbnMuZm9yRWFjaChhdHRyaWJ1dGlvbiA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIC8vIGF0dHJpYnV0aW9uIGNhbiBiZSBhIHJhdyBzdHJpbmcgb3IgYSBzdHJpbmcgd2l0aCBsaW5rIHRhZ3NcbiAgICAgICAgICAgIGNvbnN0IGxpbmtzID0gYXR0cmlidXRpb24ubWF0Y2goLzxhW15dKz9hPi9nKTtcbiAgICAgICAgICAgIGlmIChsaW5rcykge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxpbmtzPy5mb3JFYWNoKGxpbmsgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaHJlZiA9IGxpbmsubWF0Y2goL2hyZWY9XCIoW15cIl0qKS8pPy5bMV07XG4gICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IGxpbmsubWF0Y2goL3RpdGxlPVwiKFteXCJdKikvKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgaWYgKGhyZWYgJiYgdGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5pcXVlQXR0cmlidXRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBgJHtsaW5rLmluZGV4T2YoJyZjb3B5OycpID49IDAgPyAnwqkgJyA6ICcnfSR7dGl0bGV9YCxcbiAgICAgICAgICAgICAgICAgICAgICB1cmw6IGhyZWZcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgLy8ganVzdCBpZ25vcmUgZm9yIG5vd1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB1bmlxdWVBdHRyaWJ1dGlvbnMucHVzaCh7dGl0bGU6IGF0dHJpYnV0aW9uLCB1cmw6IG51bGx9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB1bmlxdWVBdHRyaWJ1dGlvbnM7XG4gIH1cbik7XG5cbi8qKlxuICogQ29sbGVjdCB1bmlxdWUgbGF5ZXItbGV2ZWwgYXR0cmlidXRpb25zIGZyb20gdmlzaWJsZSBsYXllcnMuXG4gKiBCdWlsZHMgYSBzZXJpYWxpemVkIGNhY2hlIGtleSBmcm9tIGF0dHJpYnV0aW9uIHZhbHVlcyBzbyBjcmVhdGVTZWxlY3RvclxuICogY2FuIGRldGVjdCBpbi1wbGFjZSBtdXRhdGlvbnMgdG8gbGF5ZXIubWV0YS5cbiAqL1xuY29uc3QgbGF5ZXJBdHRyaWJ1dGlvbktleVNlbGVjdG9yID0gKHN0YXRlOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBsYXllcnM6IGFueVtdID0gc3RhdGUudmlzU3RhdGU/LmxheWVycztcbiAgaWYgKCFsYXllcnMpIHJldHVybiAnJztcbiAgbGV0IGtleSA9ICcnO1xuICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xuICAgIGlmIChsYXllci5jb25maWc/LmlzVmlzaWJsZSAmJiBsYXllci5tZXRhPy5hdHRyaWJ1dGlvbikge1xuICAgICAgY29uc3QgYSA9IGxheWVyLm1ldGEuYXR0cmlidXRpb247XG4gICAgICBrZXkgKz0gYCR7YS50aXRsZX1cXDAke2EudXJsfVxcMCR7YS5sb2dvVXJsID8/ICcnfVxcMGA7XG4gICAgfVxuICB9XG4gIHJldHVybiBrZXk7XG59O1xuXG5leHBvcnQgY29uc3QgbGF5ZXJBdHRyaWJ1dGlvblNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gIFsoc3RhdGU6IGFueSkgPT4gc3RhdGUudmlzU3RhdGU/LmxheWVycywgbGF5ZXJBdHRyaWJ1dGlvbktleVNlbGVjdG9yXSxcbiAgKGxheWVyczogYW55W10pOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdID0+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGlvbnM6IEF0dHJpYnV0aW9uV2l0aFN0eWxlW10gPSBbXTtcbiAgICBpZiAoIWxheWVycykgcmV0dXJuIGF0dHJpYnV0aW9ucztcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIGxheWVycykge1xuICAgICAgaWYgKGxheWVyLmNvbmZpZz8uaXNWaXNpYmxlICYmIGxheWVyLm1ldGE/LmF0dHJpYnV0aW9uKSB7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBsYXllci5tZXRhLmF0dHJpYnV0aW9uO1xuICAgICAgICBpZiAoYXR0ci50aXRsZSAmJiAhYXR0cmlidXRpb25zLmZpbmQoYSA9PiBhLnRpdGxlID09PSBhdHRyLnRpdGxlICYmIGEudXJsID09PSBhdHRyLnVybCkpIHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbnMucHVzaChhdHRyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXR0cmlidXRpb25zO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgYXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbZGF0YXNldEF0dHJpYnV0aW9uU2VsZWN0b3IsIGxheWVyQXR0cmlidXRpb25TZWxlY3Rvcl0sXG4gIChcbiAgICBkYXRhc2V0QXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXSxcbiAgICBsYXllckF0dHJpYnV0aW9uczogQXR0cmlidXRpb25XaXRoU3R5bGVbXVxuICApOiB7XG4gICAgc291cmNlczogRGF0YXNldEF0dHJpYnV0aW9uW107XG4gICAgbG9nb3M6IEF0dHJpYnV0aW9uV2l0aFN0eWxlW107XG4gIH0gPT4ge1xuICAgIGNvbnN0IHVuaXF1ZVRleHRBdHRyaWJ1dGlvbnM6IERhdGFzZXRBdHRyaWJ1dGlvbltdID0gWy4uLmRhdGFzZXRBdHRyaWJ1dGlvbnNdO1xuICAgIGNvbnN0IGxvZ29zOiBBdHRyaWJ1dGlvbldpdGhTdHlsZVtdID0gW107XG5cbiAgICBsYXllckF0dHJpYnV0aW9ucy5mb3JFYWNoKGxheWVyQXR0cmlidXRpb24gPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhdW5pcXVlVGV4dEF0dHJpYnV0aW9ucy5maW5kKFxuICAgICAgICAgIGEgPT4gYS50aXRsZSA9PT0gbGF5ZXJBdHRyaWJ1dGlvbi50aXRsZSAmJiBhLnVybCA9PT0gbGF5ZXJBdHRyaWJ1dGlvbi51cmxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHVuaXF1ZVRleHRBdHRyaWJ1dGlvbnMucHVzaCh7dGl0bGU6IGxheWVyQXR0cmlidXRpb24udGl0bGUsIHVybDogbGF5ZXJBdHRyaWJ1dGlvbi51cmx9KTtcbiAgICAgIH1cbiAgICAgIGlmIChsYXllckF0dHJpYnV0aW9uLmxvZ29VcmwgJiYgIWxvZ29zLmZpbmQoYSA9PiBhLmxvZ29VcmwgPT09IGxheWVyQXR0cmlidXRpb24ubG9nb1VybCkpIHtcbiAgICAgICAgbG9nb3MucHVzaChsYXllckF0dHJpYnV0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7c291cmNlczogdW5pcXVlVGV4dEF0dHJpYnV0aW9ucywgbG9nb3N9O1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3Qgbm90aWZpY2F0aW9uUGFuZWxTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gKHtcbiAgcmVtb3ZlTm90aWZpY2F0aW9uOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5yZW1vdmVOb3RpZmljYXRpb24sXG4gIG5vdGlmaWNhdGlvbnM6IHByb3BzLnVpU3RhdGUubm90aWZpY2F0aW9uc1xufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0tFUExFUl9HTF9QUk9QUyA9IHtcbiAgbWFwU3R5bGVzOiBbXSxcbiAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IGZhbHNlLFxuICBtYXBib3hBcGlVcmw6IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIHdpZHRoOiA4MDAsXG4gIGhlaWdodDogODAwLFxuICBhcHBOYW1lOiBLRVBMRVJfR0xfTkFNRSxcbiAgdmVyc2lvbjogS0VQTEVSX0dMX1ZFUlNJT04sXG4gIHNpZGVQYW5lbFdpZHRoOiBESU1FTlNJT05TLnNpZGVQYW5lbC53aWR0aCxcbiAgdGhlbWU6IHt9LFxuICBjbG91ZFByb3ZpZGVyczogW10sXG4gIHJlYWRPbmx5OiBmYWxzZSxcbiAgZmVhdHVyZUZsYWdzOiB7fVxufTtcblxudHlwZSBLZXBsZXJHTEJhc2ljUHJvcHMgPSB7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcblxuICBhcHBXZWJzaXRlPzogYW55O1xuICBvblNhdmVNYXA/OiAoKSA9PiB2b2lkO1xuICBvblZpZXdTdGF0ZUNoYW5nZT86ICh2aWV3U3RhdGU6IFZpZXdwb3J0KSA9PiB2b2lkO1xuICBvbkRlY2tJbml0aWFsaXplZD86ICgpID0+IHZvaWQ7XG4gIG9uS2VwbGVyR2xJbml0aWFsaXplZD86ICgpID0+IHZvaWQ7XG4gIGdldE1hcGJveFJlZj86ICgpID0+IFJlYWN0LlJlZk9iamVjdDxhbnk+O1xuICBtYXBTdHlsZXM/OiB7aWQ6IHN0cmluZzsgc3R5bGU/OiBvYmplY3R9W107XG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0PzogYm9vbGVhbjtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgc2lkZVBhbmVsV2lkdGg/OiBudW1iZXI7XG4gIHRoZW1lPzogb2JqZWN0O1xuICBjbG91ZFByb3ZpZGVycz86IFByb3ZpZGVyW107XG4gIGRlY2tHbFByb3BzPzogb2JqZWN0O1xuICBvbkxvYWRDbG91ZE1hcFN1Y2Nlc3M/OiBPblN1Y2Nlc3NDYWxsQmFjaztcbiAgb25Mb2FkQ2xvdWRNYXBFcnJvcj86IE9uRXJyb3JDYWxsQmFjaztcbiAgb25Nb3VzZU1vdmU/OiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQgJiB7bG5nTGF0PzogW251bWJlciwgbnVtYmVyXX0pID0+IHZvaWQ7XG4gIG9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3M/OiBPblN1Y2Nlc3NDYWxsQmFjaztcbiAgb25FeHBvcnRUb0Nsb3VkRXJyb3I/OiBPbkVycm9yQ2FsbEJhY2s7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgZmVhdHVyZUZsYWdzPzogRmVhdHVyZUZsYWdzO1xuXG4gIGxvY2FsZU1lc3NhZ2VzPzoge1trZXk6IHN0cmluZ106IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9fTtcbiAgZGlzcGF0Y2g6IERpc3BhdGNoPGFueT47XG5cbiAgdG9wTWFwQ29udGFpbmVyUHJvcHM/OiBvYmplY3Q7XG4gIGJvdHRvbU1hcENvbnRhaW5lclByb3BzPzogb2JqZWN0O1xuXG4gIHRyYW5zZm9ybVJlcXVlc3Q/OiAodXJsOiBzdHJpbmcpID0+IHt1cmw6IHN0cmluZ307XG5cbiAgLyoqIFBhc3MgYGZhbHNlYCB0byBkaXNhYmxlIHRoZSByZW1vdGUgUlRMIHRleHQgcGx1Z2luLCBvciBhIFVSTCBzdHJpbmcgdG8gc2VsZi1ob3N0IGl0LiAqL1xuICBSVExUZXh0UGx1Z2luPzogc3RyaW5nIHwgZmFsc2U7XG59O1xuXG50eXBlIEtlcGxlckdMUHJvcHMgPSBLZXBsZXJHbFN0YXRlICYgS2VwbGVyR2xBY3Rpb25zICYgS2VwbGVyR0xCYXNpY1Byb3BzO1xudHlwZSBLZXBsZXJHTENvbXBTdGF0ZSA9IHtcbiAgZGltZW5zaW9uczoge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfSB8IG51bGw7XG59O1xuXG5LZXBsZXJHbEZhY3RvcnkuZGVwcyA9IFtcbiAgQm90dG9tV2lkZ2V0RmFjdG9yeSxcbiAgR2VvQ29kZXJQYW5lbEZhY3RvcnksXG4gIE1hcENvbnRhaW5lckZhY3RvcnksXG4gIE1hcHNMYXlvdXRGYWN0b3J5LFxuICBNb2RhbENvbnRhaW5lckZhY3RvcnksXG4gIFNpZGVQYW5lbEZhY3RvcnksXG4gIFBsb3RDb250YWluZXJGYWN0b3J5LFxuICBOb3RpZmljYXRpb25QYW5lbEZhY3RvcnksXG4gIERuZENvbnRleHRGYWN0b3J5LFxuICBFZmZlY3RNYW5hZ2VyRmFjdG9yeVxuXTtcblxuZnVuY3Rpb24gS2VwbGVyR2xGYWN0b3J5KFxuICBCb3R0b21XaWRnZXQ6IFJldHVyblR5cGU8dHlwZW9mIEJvdHRvbVdpZGdldEZhY3Rvcnk+LFxuICBHZW9Db2RlclBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBHZW9Db2RlclBhbmVsRmFjdG9yeT4sXG4gIE1hcENvbnRhaW5lcjogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udGFpbmVyRmFjdG9yeT4sXG4gIE1hcHNMYXlvdXQ6IFJldHVyblR5cGU8dHlwZW9mIE1hcHNMYXlvdXRGYWN0b3J5PixcbiAgTW9kYWxDb250YWluZXI6IFJldHVyblR5cGU8dHlwZW9mIE1vZGFsQ29udGFpbmVyRmFjdG9yeT4sXG4gIFNpZGVQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgU2lkZVBhbmVsRmFjdG9yeT4sXG4gIFBsb3RDb250YWluZXI6IFJldHVyblR5cGU8dHlwZW9mIFBsb3RDb250YWluZXJGYWN0b3J5PixcbiAgTm90aWZpY2F0aW9uUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIE5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeT4sXG4gIERuZENvbnRleHQ6IFJldHVyblR5cGU8dHlwZW9mIERuZENvbnRleHRGYWN0b3J5PlxuKTogUmVhY3QuQ29tcG9uZW50VHlwZTxLZXBsZXJHTEJhc2ljUHJvcHMgJiB7c2VsZWN0b3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gS2VwbGVyR2xTdGF0ZX0+IHtcbiAgLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4va2VwbGVyLWdsJykuVW5jb25uZWN0ZWRLZXBsZXJHbFByb3BzfSBLZXBsZXJHbFByb3BzICovXG4gIC8qKiBAYXVnbWVudHMgUmVhY3QuQ29tcG9uZW50PEtlcGxlckdsUHJvcHM+ICovXG4gIGNsYXNzIEtlcGxlckdMIGV4dGVuZHMgQ29tcG9uZW50PFxuICAgIEtlcGxlckdMUHJvcHMgJiB7c2VsZWN0b3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gS2VwbGVyR2xTdGF0ZX0sXG4gICAgS2VwbGVyR0xDb21wU3RhdGVcbiAgPiB7XG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTO1xuXG4gICAgc3RhdGU6IEtlcGxlckdMQ29tcFN0YXRlID0ge1xuICAgICAgZGltZW5zaW9uczogbnVsbFxuICAgIH07XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmJhc2VNYXBMaWJyYXJ5Q29uZmlnPy5bJ21hcGJveCddPy5tYXBMaWJOYW1lID09PSAnTWFwYm94Jykge1xuICAgICAgICB0aGlzLl92YWxpZGF0ZU1hcGJveFRva2VuKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9sb2FkTWFwU3R5bGUoKTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbktlcGxlckdsSW5pdGlhbGl6ZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbktlcGxlckdsSW5pdGlhbGl6ZWQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJvb3QuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMucm9vdC5jdXJyZW50LCB0aGlzLl9oYW5kbGVSZXNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucm9vdC5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyh0aGlzLnJvb3QuY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2hhbmRsZVJlc2l6ZSA9IGRpbWVuc2lvbnMgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7ZGltZW5zaW9uc30pO1xuICAgIH07XG5cbiAgICBzdGF0aWMgY29udGV4dFR5cGUgPSBSb290Q29udGV4dDtcblxuICAgIHJvb3QgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPigpO1xuICAgIGJvdHRvbVdpZGdldFJlZiA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcblxuICAgIC8qIHNlbGVjdG9ycyAqL1xuICAgIHRoZW1lU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy50aGVtZTtcbiAgICB1aVRoZW1lU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy51aVN0YXRlPy50aGVtZTtcbiAgICBhdmFpbGFibGVUaGVtZVNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLnRoZW1lU2VsZWN0b3IsXG4gICAgICB0aGlzLnVpVGhlbWVTZWxlY3RvcixcbiAgICAgICh0aGVtZSwgdWlUaGVtZSkgPT4ge1xuICAgICAgICAvLyBXaGVuIHRoZW1lIHRvZ2dsZSBpcyBlbmFibGVkLCB1aVN0YXRlLnRoZW1lIGRyaXZlcyBsaWdodC9kYXJrIHN3aXRjaGluZy5cbiAgICAgICAgY29uc3QgdGhlbWVJbnB1dCA9IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZW5hYmxlVGhlbWVUb2dnbGUgPyB1aVRoZW1lIHx8IFRIRU1FLmRhcmsgOiB0aGVtZTtcblxuICAgICAgICBpZiAodHlwZW9mIHRoZW1lSW5wdXQgPT09ICdvYmplY3QnICYmIHRoZW1lSW5wdXQgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzaWNUaGVtZSxcbiAgICAgICAgICAgIC4uLnRoZW1lSW5wdXRcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGVtZUlucHV0ID09PSBUSEVNRS5saWdodCkge1xuICAgICAgICAgIHJldHVybiB0aGVtZUxUO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGVtZUlucHV0ID09PSBUSEVNRS5iYXNlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoZW1lQlM7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVEhFTUUuZGFyayBhbmQgdW5rbm93biB2YWx1ZXMgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGRhcmsgdGhlbWVcbiAgICAgICAgcmV0dXJuIGJhc2ljVGhlbWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIGRhdGFzZXRzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy52aXNTdGF0ZS5kYXRhc2V0cztcbiAgICBmaWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3Rvcih0aGlzLmRhdGFzZXRzU2VsZWN0b3IsIGdldFZpc2libGVEYXRhc2V0cyk7XG5cbiAgICBhdmFpbGFibGVQcm92aWRlcnMgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gcHJvcHMuY2xvdWRQcm92aWRlcnMsXG4gICAgICBwcm92aWRlcnMgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShwcm92aWRlcnMpICYmIHByb3ZpZGVycy5sZW5ndGhcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaGFzU3RvcmFnZTogcHJvdmlkZXJzLnNvbWUocCA9PiBwLmhhc1ByaXZhdGVTdG9yYWdlKCkpLFxuICAgICAgICAgICAgICBoYXNTaGFyZTogcHJvdmlkZXJzLnNvbWUocCA9PiBwLmhhc1NoYXJpbmdVcmwoKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9XG4gICAgKTtcblxuICAgIGxvY2FsZU1lc3NhZ2VzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gcHJvcHMubG9jYWxlTWVzc2FnZXMsXG4gICAgICBjdXN0b21NZXNzYWdlcyA9PiAoY3VzdG9tTWVzc2FnZXMgPyBtZXJnZU1lc3NhZ2VzKG1lc3NhZ2VzLCBjdXN0b21NZXNzYWdlcykgOiBtZXNzYWdlcylcbiAgICApO1xuXG4gICAgLyogcHJpdmF0ZSBtZXRob2RzICovXG4gICAgX3ZhbGlkYXRlTWFwYm94VG9rZW4oKSB7XG4gICAgICBjb25zdCB7bWFwYm94QXBpQWNjZXNzVG9rZW59ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmICghdmFsaWRhdGVUb2tlbihtYXBib3hBcGlBY2Nlc3NUb2tlbikpIHtcbiAgICAgICAgQ29uc29sZS53YXJuKE1JU1NJTkdfTUFQQk9YX1RPS0VOKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbG9hZE1hcFN0eWxlID0gKCkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFN0eWxlcyA9IE9iamVjdC52YWx1ZXModGhpcy5wcm9wcy5tYXBTdHlsZS5tYXBTdHlsZXMpO1xuICAgICAgLy8gYWRkIGlkIHRvIGN1c3RvbSBtYXAgc3R5bGVzIGlmIG5vdCBnaXZlblxuICAgICAgY29uc3QgY3VzdG9tU3R5bGVzID0gKHRoaXMucHJvcHMubWFwU3R5bGVzIHx8IFtdKS5tYXAobXMgPT4gKHtcbiAgICAgICAgLi4ubXMsXG4gICAgICAgIGlkOiBtcy5pZCB8fCBnZW5lcmF0ZUhhc2hJZCgpXG4gICAgICB9KSk7XG5cbiAgICAgIGNvbnN0IGFsbFN0eWxlcyA9IFsuLi5jdXN0b21TdHlsZXMsIC4uLmRlZmF1bHRTdHlsZXNdLnJlZHVjZSgoYWNjdSwgc3R5bGUpID0+IHtcbiAgICAgICAgYWNjdVtzdHlsZS5pZF0gPSBzdHlsZTtcbiAgICAgICAgcmV0dXJuIGFjY3U7XG4gICAgICB9LCB7fSk7XG5cbiAgICAgIHRoaXMucHJvcHMubWFwU3R5bGVBY3Rpb25zLmxvYWRNYXBTdHlsZXMoYWxsU3R5bGVzKTtcbiAgICB9O1xuXG4gICAgX2RlbGV0ZU1hcExhYmVscyA9IChjb250YWluZXJJZCwgbGF5ZXJJZCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJGb3JNYXAoY29udGFpbmVySWQsIGxheWVySWQpO1xuICAgIH07XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaWQgPSAnbWFwJyxcbiAgICAgICAgd2lkdGggPSBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuaGVpZ2h0LFxuICAgICAgICB1aVN0YXRlLFxuICAgICAgICB2aXNTdGF0ZSxcbiAgICAgICAgLy8gcmVhZE9ubHkgb3ZlcnJpZGVcbiAgICAgICAgcmVhZE9ubHksXG5cbiAgICAgICAgLy8gZmVhdHVyZXNcbiAgICAgICAgZmVhdHVyZUZsYWdzLFxuXG4gICAgICAgIC8vIGNsb3VkIHByb3ZpZGVyc1xuICAgICAgICBjbG91ZFByb3ZpZGVycyA9IFtdXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgZGltZW5zaW9ucyA9IHRoaXMuc3RhdGUuZGltZW5zaW9ucyB8fCB7d2lkdGgsIGhlaWdodH07XG4gICAgICBjb25zdCB7XG4gICAgICAgIHNwbGl0TWFwcywgLy8gdGhpcyB3aWxsIHN0b3JlIHN1cHBvcnQgZm9yIHNwbGl0IG1hcCB2aWV3IGlzIG5lY2Vzc2FyeVxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZ1xuICAgICAgfSA9IHZpc1N0YXRlO1xuXG4gICAgICBjb25zdCBpc1NwbGl0ID0gaXNTcGxpdFNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLmF2YWlsYWJsZVRoZW1lU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsb2NhbGVNZXNzYWdlcyA9IHRoaXMubG9jYWxlTWVzc2FnZXNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGlzRXhwb3J0aW5nSW1hZ2UgPSB1aVN0YXRlLmV4cG9ydEltYWdlLmV4cG9ydGluZztcbiAgICAgIGNvbnN0IGF2YWlsYWJsZVByb3ZpZGVycyA9IHRoaXMuYXZhaWxhYmxlUHJvdmlkZXJzKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZERhdGFzZXRzID0gdGhpcy5maWx0ZXJlZERhdGFzZXRzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBzaWRlRmllbGRzID0gc2lkZVBhbmVsU2VsZWN0b3IodGhpcy5wcm9wcywgYXZhaWxhYmxlUHJvdmlkZXJzLCBmaWx0ZXJlZERhdGFzZXRzKTtcbiAgICAgIGNvbnN0IHBsb3RDb250YWluZXJGaWVsZHMgPSBwbG90Q29udGFpbmVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBib3R0b21XaWRnZXRGaWVsZHMgPSBib3R0b21XaWRnZXRTZWxlY3Rvcih0aGlzLnByb3BzLCB0aGVtZSk7XG4gICAgICBjb25zdCBtb2RhbENvbnRhaW5lckZpZWxkcyA9IG1vZGFsQ29udGFpbmVyU2VsZWN0b3IodGhpcy5wcm9wcywgdGhpcy5yb290LmN1cnJlbnQpO1xuICAgICAgY29uc3QgZ2VvQ29kZXJQYW5lbEZpZWxkcyA9IGdlb0NvZGVyUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzLCBkaW1lbnNpb25zKTtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblBhbmVsRmllbGRzID0gbm90aWZpY2F0aW9uUGFuZWxTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3QgbWFwQ29udGFpbmVycyA9ICFpc1NwbGl0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBwcmltYXJ5PXt0cnVlfVxuICAgICAgICAgICAgICBrZXk9ezB9XG4gICAgICAgICAgICAgIGluZGV4PXswfVxuICAgICAgICAgICAgICB7Li4ubWFwRmllbGRzU2VsZWN0b3IodGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgIGNvbnRhaW5lcklkPXswfVxuICAgICAgICAgICAgICBkZWxldGVNYXBMYWJlbHM9e3RoaXMuX2RlbGV0ZU1hcExhYmVsc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgXVxuICAgICAgICA6IHNwbGl0TWFwcy5tYXAoKHNldHRpbmdzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIHByaW1hcnk9e2luZGV4ID09PSAxfVxuICAgICAgICAgICAgICB7Li4ubWFwRmllbGRzU2VsZWN0b3IodGhpcy5wcm9wcywgaW5kZXgpfVxuICAgICAgICAgICAgICBjb250YWluZXJJZD17aW5kZXh9XG4gICAgICAgICAgICAgIGRlbGV0ZU1hcExhYmVscz17dGhpcy5fZGVsZXRlTWFwTGFiZWxzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFJvb3RDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnJvb3R9PlxuICAgICAgICAgIDxGZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXIgZmVhdHVyZUZsYWdzPXtmZWF0dXJlRmxhZ3N9PlxuICAgICAgICAgICAgPEludGxQcm92aWRlciBsb2NhbGU9e3VpU3RhdGUubG9jYWxlfSBtZXNzYWdlcz17bG9jYWxlTWVzc2FnZXNbdWlTdGF0ZS5sb2NhbGVdfT5cbiAgICAgICAgICAgICAgPFN0eWxlU2hlZXRNYW5hZ2VyIHNob3VsZEZvcndhcmRQcm9wPXtzaG91bGRGb3J3YXJkUHJvcH0+XG4gICAgICAgICAgICAgICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgICAgICAgICAgICAgIDxDbG91ZExpc3RQcm92aWRlciBwcm92aWRlcnM9e2Nsb3VkUHJvdmlkZXJzfT5cbiAgICAgICAgICAgICAgICAgICAgPEdsb2JhbFN0eWxlXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwia2VwbGVyLWdsXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD17YGtlcGxlci1nbF9fJHtpZH1gfVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGAke3dpZHRofXB4YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYCR7aGVpZ2h0fXB4YFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnJvb3R9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uUGFuZWwgey4uLm5vdGlmaWNhdGlvblBhbmVsRmllbGRzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxSZW1vdGVEYXRhc2V0UmVmcmVzaENvbnRyb2xsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRzPXt2aXNTdGF0ZS5kYXRhc2V0c31cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hEYXRhc2V0PXt0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5yZWZyZXNoRGF0YXNldH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxEbmRDb250ZXh0IHZpc1N0YXRlPXt2aXNTdGF0ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IXVpU3RhdGUucmVhZE9ubHkgJiYgIXJlYWRPbmx5ICYmIDxTaWRlUGFuZWwgey4uLnNpZGVGaWVsZHN9IC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgPE1hcHNMYXlvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWFwc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFN0YXRlPXt0aGlzLnByb3BzLm1hcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvblNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2U9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMubWFwU3RhdGVBY3Rpb25zLnNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bWFwQ29udGFpbmVyc31cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFwc0xheW91dD5cbiAgICAgICAgICAgICAgICAgICAgICA8L0RuZENvbnRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge2lzRXhwb3J0aW5nSW1hZ2UgJiYgPFBsb3RDb250YWluZXIgey4uLnBsb3RDb250YWluZXJGaWVsZHN9IC8+fVxuICAgICAgICAgICAgICAgICAgICAgIHsvKiAxIGdlb2NvZGVyOiBzaW5nbGUgbW9kZSBPUiBzcGxpdCBtb2RlIGFuZCBzeW5jZWQgdmlld3BvcnRzICovfVxuICAgICAgICAgICAgICAgICAgICAgIHshaXNWaWV3cG9ydERpc2pvaW50ZWQodGhpcy5wcm9wcykgJiYgaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8R2VvQ29kZXJQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2VvQ29kZXJQYW5lbEZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3luY2VkVmlld3BvcnRzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICB7LyogMiBnZW9jb2RlcnM6IHNwbGl0IG1vZGUgYW5kIHVuc3luY2VkIHZpZXdwb3J0cyAqL31cbiAgICAgICAgICAgICAgICAgICAgICB7aXNWaWV3cG9ydERpc2pvaW50ZWQodGhpcy5wcm9wcykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcENvbnRhaW5lcnMubWFwKChfbWFwQ29udGFpbmVyLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8R2VvQ29kZXJQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdlb0NvZGVyUGFuZWxGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3luY2VkVmlld3BvcnRzPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbVdpZGdldE91dGVyIGFic29sdXRlPXshaGFzUG9ydGFibGVXaWR0aChicmVha1BvaW50VmFsdWVzKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tV2lkZ2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RSZWY9e3RoaXMuYm90dG9tV2lkZ2V0UmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uYm90dG9tV2lkZ2V0RmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJXPXtkaW1lbnNpb25zLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvQm90dG9tV2lkZ2V0T3V0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPE1vZGFsQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4ubW9kYWxDb250YWluZXJGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJXPXtkaW1lbnNpb25zLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySD17ZGltZW5zaW9ucy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9HbG9iYWxTdHlsZT5cbiAgICAgICAgICAgICAgICAgIDwvQ2xvdWRMaXN0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgICAgICAgICAgICA8L1N0eWxlU2hlZXRNYW5hZ2VyPlxuICAgICAgICAgICAgPC9JbnRsUHJvdmlkZXI+XG4gICAgICAgICAgPC9GZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXI+XG4gICAgICAgIDwvUm9vdENvbnRleHQuUHJvdmlkZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBrZXBsZXJHbENvbm5lY3QoXG4gICAgbWFwU3RhdGVUb1Byb3BzLFxuICAgIG1ha2VNYXBEaXNwYXRjaFRvUHJvcHNcbiAgKSh3aXRoVGhlbWUoS2VwbGVyR0wpKSBhcyBSZXR1cm5UeXBlPHR5cGVvZiBLZXBsZXJHbEZhY3Rvcnk+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwU3RhdGVUb1Byb3BzKHN0YXRlOiBLZXBsZXJHbFN0YXRlLCBwcm9wczogS2VwbGVyR0xQcm9wcykge1xuICByZXR1cm4ge1xuICAgIC4uLnByb3BzLFxuICAgIHZpc1N0YXRlOiBzdGF0ZS52aXNTdGF0ZSxcbiAgICBtYXBTdHlsZTogc3RhdGUubWFwU3R5bGUsXG4gICAgbWFwU3RhdGU6IHN0YXRlLm1hcFN0YXRlLFxuICAgIHVpU3RhdGU6IHN0YXRlLnVpU3RhdGUsXG4gICAgcHJvdmlkZXJTdGF0ZTogc3RhdGUucHJvdmlkZXJTdGF0ZVxuICB9O1xufVxuXG5jb25zdCBkZWZhdWx0VXNlckFjdGlvbnMgPSB7fTtcblxuY29uc3QgZ2V0RGlzcGF0Y2ggPSBkaXNwYXRjaCA9PiBkaXNwYXRjaDtcbmNvbnN0IGdldFVzZXJBY3Rpb25zID0gKGRpc3BhdGNoLCBwcm9wcykgPT4gcHJvcHMuYWN0aW9ucyB8fCBkZWZhdWx0VXNlckFjdGlvbnM7XG5cbi8qKiBAdHlwZSB7KCkgPT4gaW1wb3J0KCdyZXNlbGVjdCcpLk91dHB1dFBhcmFtZXRyaWNTZWxlY3RvcjxhbnksIGFueSwgYW55LCBhbnk+fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VHZXRBY3Rpb25DcmVhdG9ycygpIHtcbiAgcmV0dXJuIGNyZWF0ZVNlbGVjdG9yKFtnZXREaXNwYXRjaCwgZ2V0VXNlckFjdGlvbnNdLCAoZGlzcGF0Y2gsIHVzZXJBY3Rpb25zKSA9PiB7XG4gICAgY29uc3QgW3Zpc1N0YXRlQWN0aW9ucywgbWFwU3RhdGVBY3Rpb25zLCBtYXBTdHlsZUFjdGlvbnMsIHVpU3RhdGVBY3Rpb25zLCBwcm92aWRlckFjdGlvbnNdID0gW1xuICAgICAgVmlzU3RhdGVBY3Rpb25zLFxuICAgICAgTWFwU3RhdGVBY3Rpb25zLFxuICAgICAgTWFwU3R5bGVBY3Rpb25zLFxuICAgICAgVUlTdGF0ZUFjdGlvbnMsXG4gICAgICBQcm92aWRlckFjdGlvbnNcbiAgICBdLm1hcChhY3Rpb25zID0+IGJpbmRBY3Rpb25DcmVhdG9ycyhtZXJnZUFjdGlvbnMoYWN0aW9ucywgdXNlckFjdGlvbnMpLCBkaXNwYXRjaCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgIG1hcFN0YXRlQWN0aW9ucyxcbiAgICAgIG1hcFN0eWxlQWN0aW9ucyxcbiAgICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgICAgcHJvdmlkZXJBY3Rpb25zLFxuICAgICAgZGlzcGF0Y2hcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbWFrZU1hcERpc3BhdGNoVG9Qcm9wcygpIHtcbiAgY29uc3QgZ2V0QWN0aW9uQ3JlYXRvcnMgPSBtYWtlR2V0QWN0aW9uQ3JlYXRvcnMoKTtcbiAgY29uc3QgbWFwRGlzcGF0Y2hUb1Byb3BzID0gKGRpc3BhdGNoLCBvd25Qcm9wcykgPT4ge1xuICAgIGNvbnN0IGdyb3VwZWRBY3Rpb25DcmVhdG9ycyA9IGdldEFjdGlvbkNyZWF0b3JzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZ3JvdXBlZEFjdGlvbkNyZWF0b3JzLFxuICAgICAgZGlzcGF0Y2hcbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiBtYXBEaXNwYXRjaFRvUHJvcHM7XG59XG5cbi8qKlxuICogT3ZlcnJpZGUgZGVmYXVsdCBrZXBsZXIuZ2wgYWN0aW9ucyB3aXRoIHVzZXIgZGVmaW5lZCBhY3Rpb25zIHVzaW5nIHRoZSBzYW1lIGtleVxuICovXG5mdW5jdGlvbiBtZXJnZUFjdGlvbnMoYWN0aW9ucywgdXNlckFjdGlvbnMpIHtcbiAgY29uc3Qgb3ZlcnJpZGVzID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIHVzZXJBY3Rpb25zKSB7XG4gICAgaWYgKFxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHVzZXJBY3Rpb25zLCBrZXkpICYmXG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYWN0aW9ucywga2V5KVxuICAgICkge1xuICAgICAgb3ZlcnJpZGVzW2tleV0gPSB1c2VyQWN0aW9uc1trZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7Li4uYWN0aW9ucywgLi4ub3ZlcnJpZGVzfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgS2VwbGVyR2xGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksaUJBQUEsR0FBQUwsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGdCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxRQUFBLEdBQUFULE9BQUE7QUFVQSxJQUFBVSxRQUFBLEdBQUFWLE9BQUE7QUFRQSxJQUFBVyxZQUFBLEdBQUFYLE9BQUE7QUFFQSxJQUFBWSxrQkFBQSxHQUFBWixPQUFBO0FBVUEsSUFBQWEsVUFBQSxHQUFBYixPQUFBO0FBVUEsSUFBQWMs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
@@ -12,7 +12,7 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
12
12
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
13
  var _react = _interopRequireWildcard(require("react"));
14
14
  var _styledComponents = _interopRequireDefault(require("styled-components"));
15
- var _truncate = _interopRequireDefault(require("lodash/truncate"));
15
+ var _truncate = _interopRequireDefault(require("es-toolkit/compat/truncate"));
16
16
  var _styledComponents2 = require("../common/styled-components");
17
17
  var _icons = require("../common/icons");
18
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -315,4 +315,4 @@ var LayerHoverInfoFactory = function LayerHoverInfoFactory() {
315
315
  return LayerHoverInfo;
316
316
  };
317
317
  var _default = exports["default"] = LayerHoverInfoFactory;
318
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdHJ1bmNhdGUiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfaWNvbnMiLCJfcHJvcFR5cGVzIiwiX2NvbW1vblV0aWxzIiwiX3V0aWxzIiwiX3JlZHVjZXJzIiwiX3JlYWN0SW50bCIsIl9leGNsdWRlZCIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiU3R5bGVkTGF5ZXJOYW1lIiwiZXhwb3J0cyIsInN0eWxlZCIsIkNlbnRlckZsZXhib3giLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3JIbCIsIlN0eWxlZFRhYmxlIiwidGFibGUiLCJub3RpZmljYXRpb25Db2xvcnMiLCJzdWNjZXNzIiwibmVnYXRpdmVCdG5BY3RCZ2QiLCJTdHlsZWREaXZpZGVyIiwiZGl2IiwicGFuZWxCb3JkZXJDb2xvciIsIlRPT0xUSVBfVkFMVUVfTUFYX0xFTkdUSCIsIlRvb2x0aXBJbWFnZSIsIl9yZWYiLCJzcmMiLCJpbWdSZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJzdGFydHNXaXRoIiwiVVJMIiwicmV2b2tlT2JqZWN0VVJMIiwiY3VycmVudCIsImNyZWF0ZUVsZW1lbnQiLCJyZWYiLCJSb3ciLCJfcmVmMiIsIm5hbWUiLCJ2YWx1ZSIsImRlbHRhVmFsdWUiLCJ1cmwiLCJpc0NvbXBhcmluZyIsIm1hdGNoIiwiZGlzcGxheVZhbHVlIiwibGVuZ3RoIiwidHJ1bmNhdGUiLCJhc0ltZyIsInRlc3QiLCJjbGFzc05hbWUiLCJrZXkiLCJyZXBsYWNlIiwidGFyZ2V0IiwicmVsIiwiaHJlZiIsImNvbmNhdCIsIm5vdE51bGxvclVuZGVmaW5lZCIsInRvU3RyaW5nIiwiY2hhckF0IiwiRW50cnlJbmZvIiwiX3JlZjMiLCJmaWVsZHNUb1Nob3ciLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwibWFwIiwiaXRlbSIsIkVudHJ5SW5mb1JvdyIsIl9leHRlbmRzMiIsIl9yZWY0IiwibGF5ZXIiLCJmaWVsZHMiLCJkYXRhIiwicHJpbWFyeURhdGEiLCJjb21wYXJlVHlwZSIsImN1cnJlbnRUaW1lIiwiZmllbGRJZHgiLCJmaW5kSW5kZXgiLCJmaWVsZCIsImZpZWxkVmFsdWVBY2Nlc3NvciIsImFjY2Vzc1ZTRmllbGRWYWx1ZSIsIkRhdGFSb3ciLCJpbmRleCIsIl9yb3dJbmRleCIsInByaW1hcnlWYWx1ZSIsImRpc3BsYXlEZWx0YVZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwiX3R5cGVvZjIiLCJnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUiLCJlcnJvciIsImdldFRvb2x0aXBEaXNwbGF5VmFsdWUiLCJkaXNwbGF5TmFtZSIsIkJvb2xlYW4iLCJDZWxsSW5mbyIsIl9yZWY1IiwiX3JlZjYiLCJjb25maWciLCJjb2xvckZpZWxkIiwic2l6ZUZpZWxkIiwiY29sb3JWYWx1ZSIsInVzZU1lbW8iLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiZmluZCIsImVsZXZhdGlvblZhbHVlIiwic2l6ZSIsImNvbG9yRGVsdGEiLCJlbGV2YXRpb25EZWx0YSIsImFnZ3JlZ2F0ZWREYXRhIiwicmVkdWNlIiwiYWNjIiwiX2RhdGEkYWdncmVnYXRlZERhdGEiLCJkYXRhRm9yRmllbGQiLCJtZWFzdXJlIiwiX3ByaW1hcnlEYXRhJGFnZ3JlZ2F0IiwicHJpbWFyeURhdGFGb3JGaWVsZCIsInR5cGUiLCJOdW1iZXIiLCJwdXNoIiwiY2FwaXRhbGl6ZUZpcnN0TGV0dGVyIiwiY29sb3JNZWFzdXJlIiwiZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uIiwic2l6ZU1lYXN1cmUiLCJTdHJpbmciLCJwb2ludHMiLCJpZHgiLCJMYXllckhvdmVySW5mb0ZhY3RvcnkiLCJMYXllckhvdmVySW5mbyIsImludGwiLCJ1c2VJbnRsIiwiaGFzRmllbGRzVG9TaG93IiwiZmllbGRWYWx1ZXMiLCJrZXlzIiwid21zRmVhdHVyZURhdGEiLCJMYXllcnMiLCJoZWlnaHQiLCJsYWJlbCIsInVuZGVmaW5lZCIsIl9yZWY3IiwiX3JlZjgiLCJsYWJlbE1lc3NhZ2UiLCJmb3JtYXRNZXNzYWdlIiwiaWQiLCJpc0FnZ3JlZ2F0ZWQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJhcnJheU9mIiwiYW55Iiwib2JqZWN0Iiwib25lT2ZUeXBlIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFwL2xheWVyLWhvdmVyLWluZm8udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB0cnVuY2F0ZSBmcm9tICdsb2Rhc2gvdHJ1bmNhdGUnO1xuaW1wb3J0IHtDb21wYXJlVHlwZSwgRmllbGQsIE1lcmdlLCBUb29sdGlwRmllbGR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtDZW50ZXJGbGV4Ym94fSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtMYXllcnN9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7RGF0YVJvd30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0xheWVyfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge1xuICBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhLFxuICBMYXllckhvdmVyUHJvcCxcbiAgZ2V0VG9vbHRpcERpc3BsYXlEZWx0YVZhbHVlLFxuICBnZXRUb29sdGlwRGlzcGxheVZhbHVlXG59IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuaW1wb3J0IHt1c2VJbnRsfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge2NhcGl0YWxpemVGaXJzdExldHRlcn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRMYXllck5hbWUgPSBzdHlsZWQoQ2VudGVyRmxleGJveClgXG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsZXR0ZXItc3BhY2luZzogMC40M3B4O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcblxuICBzdmcge1xuICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRUYWJsZSA9IHN0eWxlZC50YWJsZWBcbiAgJiAucm93X19kZWx0YS12YWx1ZSB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgbWFyZ2luLWxlZnQ6IDZweDtcblxuICAgICYucG9zaXRpdmUge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubm90aWZpY2F0aW9uQ29sb3JzLnN1Y2Nlc3N9O1xuICAgIH1cblxuICAgICYubmVnYXRpdmUge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubmVnYXRpdmVCdG5BY3RCZ2R9O1xuICAgIH1cbiAgfVxuICAmIC5yb3dfX25hbWUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgfVxuICAmIC5yb3dfX3ZhbHVlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgICBtYXgtd2lkdGg6IDI1MHB4O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWREaXZpZGVyID0gc3R5bGVkLmRpdmBcbiAgLy8gb2Zmc2V0IGRpdmlkZXIgdG8gcmVhY2ggcG9wb3ZlciBlZGdlXG4gIG1hcmdpbi1sZWZ0OiAtMTRweDtcbiAgbWFyZ2luLXJpZ2h0OiAtMTRweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCb3JkZXJDb2xvcn07XG5gO1xuXG5pbnRlcmZhY2UgUm93UHJvcHMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGRlbHRhVmFsdWU/OiBzdHJpbmcgfCBudWxsO1xuICB1cmw/OiBzdHJpbmc7XG4gIGlzQ29tcGFyaW5nPzogYm9vbGVhbjtcbn1cblxuY29uc3QgVE9PTFRJUF9WQUxVRV9NQVhfTEVOR1RIID0gMjU2O1xuXG4vKipcbiAqIEltYWdlIGNvbXBvbmVudCB0aGF0IGNsZWFucyB1cCByZXNvdXJjZXMgb24gdW5tb3VudCB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy5cbiAqIFJldm9rZXMgYmxvYi9vYmplY3QgVVJMcyBhbmQgY2xlYXJzIHRoZSBpbWFnZSBzcmMgdG8gcmVsZWFzZSBtZW1vcnkuXG4gKi9cbmNvbnN0IFRvb2x0aXBJbWFnZTogUmVhY3QuRkM8e3NyYzogc3RyaW5nfT4gPSAoe3NyY30pID0+IHtcbiAgY29uc3QgaW1nUmVmID0gdXNlUmVmPEhUTUxJbWFnZUVsZW1lbnQ+KG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIC8vIFJldm9rZSBibG9iIFVSTHMgdG8gZnJlZSBtZW1vcnlcbiAgICAgIGlmIChzcmMgJiYgKHNyYy5zdGFydHNXaXRoKCdibG9iOicpIHx8IHNyYy5zdGFydHNXaXRoKCdkYXRhOicpKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoc3JjKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnMgZnJvbSBub24tb2JqZWN0IFVSTHNcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQ2xlYXIgdGhlIGltYWdlIHNyYyB0byByZWxlYXNlIHRoZSBkZWNvZGVkIGltYWdlIGZyb20gbWVtb3J5XG4gICAgICBpZiAoaW1nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaW1nUmVmLmN1cnJlbnQuc3JjID0gJyc7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW3NyY10pO1xuXG4gIHJldHVybiA8aW1nIHJlZj17aW1nUmVmfSBzcmM9e3NyY30gLz47XG59O1xuXG5jb25zdCBSb3c6IFJlYWN0LkZDPFJvd1Byb3BzPiA9ICh7bmFtZSwgdmFsdWUsIGRlbHRhVmFsdWUsIHVybCwgaXNDb21wYXJpbmd9KSA9PiB7XG4gIC8vIFNldCAndXJsJyB0byAndmFsdWUnIGlmIGl0IGxvb2tzIGxpa2UgYSB1cmxcbiAgaWYgKCF1cmwgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5tYXRjaCgvXmh0dHAvKSkge1xuICAgIHVybCA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3QgZGlzcGxheVZhbHVlID1cbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IFRPT0xUSVBfVkFMVUVfTUFYX0xFTkdUSFxuICAgICAgPyB0cnVuY2F0ZSh2YWx1ZSwge2xlbmd0aDogVE9PTFRJUF9WQUxVRV9NQVhfTEVOR1RIfSlcbiAgICAgIDogdmFsdWU7XG5cbiAgY29uc3QgYXNJbWcgPSAvPGltZz4vLnRlc3QobmFtZSk7XG4gIHJldHVybiAoXG4gICAgPHRyIGNsYXNzTmFtZT1cImxheWVyLWhvdmVyLWluZm9fX3Jvd1wiIGtleT17bmFtZX0+XG4gICAgICA8dGQgY2xhc3NOYW1lPVwicm93X19uYW1lXCI+e2FzSW1nID8gbmFtZS5yZXBsYWNlKCc8aW1nPicsICcnKSA6IG5hbWV9PC90ZD5cbiAgICAgIDx0ZCBjbGFzc05hbWU9XCJyb3dfX3ZhbHVlXCI+XG4gICAgICAgIHthc0ltZyA/IChcbiAgICAgICAgICA8VG9vbHRpcEltYWdlIHNyYz17dmFsdWV9IC8+XG4gICAgICAgICkgOiB1cmwgPyAoXG4gICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIGhyZWY9e3VybH0+XG4gICAgICAgICAgICB7ZGlzcGxheVZhbHVlfVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8c3Bhbj57ZGlzcGxheVZhbHVlfTwvc3Bhbj5cbiAgICAgICAgKX1cbiAgICAgIDwvdGQ+XG4gICAgICB7aXNDb21wYXJpbmcgPyAoXG4gICAgICAgIDx0ZFxuICAgICAgICAgIGNsYXNzTmFtZT17YHJvd19fZGVsdGEtdmFsdWUgJHtcbiAgICAgICAgICAgIG5vdE51bGxvclVuZGVmaW5lZChkZWx0YVZhbHVlKVxuICAgICAgICAgICAgICA/IGRlbHRhVmFsdWU/LnRvU3RyaW5nKCkuY2hhckF0KDApID09PSAnKydcbiAgICAgICAgICAgICAgICA/ICdwb3NpdGl2ZSdcbiAgICAgICAgICAgICAgICA6ICduZWdhdGl2ZSdcbiAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgIH1gfVxuICAgICAgICA+XG4gICAgICAgICAge2RlbHRhVmFsdWUgPz8gJyd9XG4gICAgICAgIDwvdGQ+XG4gICAgICApIDogbnVsbH1cbiAgICA8L3RyPlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgRW50cnlJbmZvUHJvcHMgPSBNZXJnZTxMYXllckhvdmVyUHJvcCwge2ZpZWxkc1RvU2hvdzogVG9vbHRpcEZpZWxkW119PjtcblxuY29uc3QgRW50cnlJbmZvOiBSZWFjdC5GQzxFbnRyeUluZm9Qcm9wcz4gPSAoe2ZpZWxkc1RvU2hvdywgLi4ucHJvcHN9KSA9PiAoXG4gIDx0Ym9keT5cbiAgICB7ZmllbGRzVG9TaG93Lm1hcChpdGVtID0+IChcbiAgICAgIDxFbnRyeUluZm9Sb3cga2V5PXtpdGVtLm5hbWV9IGl0ZW09e2l0ZW19IHsuLi5wcm9wc30gLz5cbiAgICApKX1cbiAgPC90Ym9keT5cbik7XG5cbmV4cG9ydCB0eXBlIEVudHJ5SW5mb1Jvd1Byb3BzID0ge1xuICBkYXRhOiBMYXllckhvdmVyUHJvcFsnZGF0YSddO1xuICBmaWVsZHM6IEZpZWxkW107XG4gIGxheWVyOiBMYXllcjtcbiAgcHJpbWFyeURhdGE/OiBMYXllckhvdmVyUHJvcFsncHJpbWFyeURhdGEnXTtcbiAgY29tcGFyZVR5cGU/OiBDb21wYXJlVHlwZTtcbiAgY3VycmVudFRpbWU/OiBWaXNTdGF0ZVsnYW5pbWF0aW9uQ29uZmlnJ11bJ2N1cnJlbnRUaW1lJ107XG4gIGl0ZW06IFRvb2x0aXBGaWVsZDtcbn07XG5cbmNvbnN0IEVudHJ5SW5mb1JvdzogUmVhY3QuRkM8RW50cnlJbmZvUm93UHJvcHM+ID0gKHtcbiAgbGF5ZXIsXG4gIGl0ZW0sXG4gIGZpZWxkcyxcbiAgZGF0YSxcbiAgcHJpbWFyeURhdGEsXG4gIGNvbXBhcmVUeXBlLFxuICBjdXJyZW50VGltZVxufSkgPT4ge1xuICBjb25zdCBmaWVsZElkeCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWUgPT09IGl0ZW0ubmFtZSk7XG4gIGlmIChmaWVsZElkeCA8IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBmaWVsZCA9IGZpZWxkc1tmaWVsZElkeF07XG4gIGNvbnN0IGZpZWxkVmFsdWVBY2Nlc3NvciA9IGxheWVyLmFjY2Vzc1ZTRmllbGRWYWx1ZShmaWVsZCwgY3VycmVudFRpbWUpO1xuICBjb25zdCB2YWx1ZSA9IGZpZWxkVmFsdWVBY2Nlc3NvcihmaWVsZCwgZGF0YSBpbnN0YW5jZW9mIERhdGFSb3cgPyB7aW5kZXg6IGRhdGEuX3Jvd0luZGV4fSA6IGRhdGEpO1xuXG4gIGxldCBwcmltYXJ5VmFsdWUgPSBudWxsO1xuICBsZXQgZGlzcGxheURlbHRhVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGlmIChwcmltYXJ5RGF0YSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAocHJpbWFyeURhdGEgaW5zdGFuY2VvZiBEYXRhUm93KSB7XG4gICAgICAgIHByaW1hcnlWYWx1ZSA9IGZpZWxkVmFsdWVBY2Nlc3NvcihmaWVsZCwge2luZGV4OiBwcmltYXJ5RGF0YS5fcm93SW5kZXh9KTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwcmltYXJ5RGF0YSkgfHwgKHR5cGVvZiBwcmltYXJ5RGF0YSA9PT0gJ29iamVjdCcgJiYgcHJpbWFyeURhdGEpKSB7XG4gICAgICAgIHByaW1hcnlWYWx1ZSA9IGZpZWxkVmFsdWVBY2Nlc3NvcihmaWVsZCwgcHJpbWFyeURhdGEpO1xuICAgICAgfVxuXG4gICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IGdldFRvb2x0aXBEaXNwbGF5RGVsdGFWYWx1ZSh7XG4gICAgICAgIGZpZWxkLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcHJpbWFyeVZhbHVlLFxuICAgICAgICBjb21wYXJlVHlwZVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHByaW1hcnlWYWx1ZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZGlzcGxheVZhbHVlID0gZ2V0VG9vbHRpcERpc3BsYXlWYWx1ZSh7aXRlbSwgZmllbGQsIHZhbHVlfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Um93XG4gICAgICBuYW1lPXtmaWVsZC5kaXNwbGF5TmFtZSB8fCBmaWVsZC5uYW1lfVxuICAgICAgdmFsdWU9e2Rpc3BsYXlWYWx1ZX1cbiAgICAgIGRlbHRhVmFsdWU9e2Rpc3BsYXlEZWx0YVZhbHVlfVxuICAgICAgaXNDb21wYXJpbmc9e0Jvb2xlYW4ocHJpbWFyeURhdGEpfVxuICAgIC8+XG4gICk7XG59O1xuXG5jb25zdCBDZWxsSW5mbyA9ICh7XG4gIGZpZWxkc1RvU2hvdyxcbiAgZGF0YSxcbiAgbGF5ZXIsXG4gIHByaW1hcnlEYXRhLFxuICBjb21wYXJlVHlwZVxufToge1xuICBkYXRhOiBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhO1xuICBmaWVsZHNUb1Nob3c6IFRvb2x0aXBGaWVsZFtdO1xuICBsYXllcjogTGF5ZXI7XG4gIHByaW1hcnlEYXRhPzogQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IG51bGw7XG4gIGNvbXBhcmVUeXBlPzogQ29tcGFyZVR5cGU7XG59KSA9PiB7XG4gIGNvbnN0IHtjb2xvckZpZWxkLCBzaXplRmllbGR9ID0gbGF5ZXIuY29uZmlnIGFzIGFueTtcbiAgY29uc3QgaXNDb21wYXJpbmcgPSBCb29sZWFuKHByaW1hcnlEYXRhKTtcblxuICBjb25zdCBjb2xvclZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGNvbG9yRmllbGQgJiYgbGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3IpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBmaWVsZHNUb1Nob3cuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lID09PSBjb2xvckZpZWxkLm5hbWUpO1xuICAgICAgcmV0dXJuIGdldFRvb2x0aXBEaXNwbGF5VmFsdWUoe2l0ZW0sIGZpZWxkOiBjb2xvckZpZWxkLCB2YWx1ZTogZGF0YS5jb2xvclZhbHVlfSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LCBbZmllbGRzVG9TaG93LCBjb2xvckZpZWxkLCBsYXllciwgZGF0YS5jb2xvclZhbHVlXSk7XG5cbiAgY29uc3QgZWxldmF0aW9uVmFsdWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoc2l6ZUZpZWxkICYmIGxheWVyLnZpc3VhbENoYW5uZWxzLnNpemUpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBmaWVsZHNUb1Nob3cuZmluZChmaWVsZCA9PiBmaWVsZC5uYW1lID09PSBzaXplRmllbGQubmFtZSk7XG4gICAgICByZXR1cm4gZ2V0VG9vbHRpcERpc3BsYXlWYWx1ZSh7aXRlbSwgZmllbGQ6IHNpemVGaWVsZCwgdmFsdWU6IGRhdGEuZWxldmF0aW9uVmFsdWV9KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIFtmaWVsZHNUb1Nob3csIHNpemVGaWVsZCwgbGF5ZXIsIGRhdGEuZWxldmF0aW9uVmFsdWVdKTtcblxuICBjb25zdCBjb2xvckRlbHRhID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFwcmltYXJ5RGF0YSB8fCAhY29sb3JGaWVsZCB8fCAhKCdjb2xvclZhbHVlJyBpbiBwcmltYXJ5RGF0YSkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUoe1xuICAgICAgZmllbGQ6IGNvbG9yRmllbGQsXG4gICAgICB2YWx1ZTogZGF0YS5jb2xvclZhbHVlLFxuICAgICAgcHJpbWFyeVZhbHVlOiBwcmltYXJ5RGF0YS5jb2xvclZhbHVlLFxuICAgICAgY29tcGFyZVR5cGVcbiAgICB9KTtcbiAgfSwgW3ByaW1hcnlEYXRhLCBjb2xvckZpZWxkLCBkYXRhLmNvbG9yVmFsdWUsIGNvbXBhcmVUeXBlXSk7XG5cbiAgY29uc3QgZWxldmF0aW9uRGVsdGEgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIXByaW1hcnlEYXRhIHx8ICFzaXplRmllbGQgfHwgISgnZWxldmF0aW9uVmFsdWUnIGluIHByaW1hcnlEYXRhKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGdldFRvb2x0aXBEaXNwbGF5RGVsdGFWYWx1ZSh7XG4gICAgICBmaWVsZDogc2l6ZUZpZWxkLFxuICAgICAgdmFsdWU6IGRhdGEuZWxldmF0aW9uVmFsdWUsXG4gICAgICBwcmltYXJ5VmFsdWU6IHByaW1hcnlEYXRhLmVsZXZhdGlvblZhbHVlLFxuICAgICAgY29tcGFyZVR5cGVcbiAgICB9KTtcbiAgfSwgW3ByaW1hcnlEYXRhLCBzaXplRmllbGQsIGRhdGEuZWxldmF0aW9uVmFsdWUsIGNvbXBhcmVUeXBlXSk7XG5cbiAgY29uc3QgYWdncmVnYXRlZERhdGEgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZGF0YS5hZ2dyZWdhdGVkRGF0YSAmJiBmaWVsZHNUb1Nob3cpIHtcbiAgICAgIHJldHVybiBmaWVsZHNUb1Nob3cucmVkdWNlKFxuICAgICAgICAoYWNjLCBmaWVsZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGFGb3JGaWVsZCA9IGRhdGEuYWdncmVnYXRlZERhdGE/LltmaWVsZC5uYW1lXTtcbiAgICAgICAgICBpZiAoZGF0YUZvckZpZWxkPy5tZWFzdXJlICYmIGZpZWxkLm5hbWUgIT09IGNvbG9yRmllbGQ/Lm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHByaW1hcnlEYXRhRm9yRmllbGQgPSBwcmltYXJ5RGF0YT8uYWdncmVnYXRlZERhdGE/LltmaWVsZC5uYW1lXTtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhVmFsdWUgPSBwcmltYXJ5RGF0YUZvckZpZWxkXG4gICAgICAgICAgICAgID8gZ2V0VG9vbHRpcERpc3BsYXlEZWx0YVZhbHVlKHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkOiB7dHlwZTogJ3JlYWwnLCBuYW1lOiBmaWVsZC5uYW1lfSBhcyBGaWVsZCxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBkYXRhRm9yRmllbGQudmFsdWUgIT0gbnVsbCA/IE51bWJlcihkYXRhRm9yRmllbGQudmFsdWUpIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIHByaW1hcnlWYWx1ZTpcbiAgICAgICAgICAgICAgICAgICAgcHJpbWFyeURhdGFGb3JGaWVsZC52YWx1ZSAhPSBudWxsID8gTnVtYmVyKHByaW1hcnlEYXRhRm9yRmllbGQudmFsdWUpIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgIGNvbXBhcmVUeXBlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgICAgYWNjLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBgJHtjYXBpdGFsaXplRmlyc3RMZXR0ZXIoZGF0YUZvckZpZWxkLm1lYXN1cmUpfSBvZiAke2ZpZWxkLm5hbWV9YCxcbiAgICAgICAgICAgICAgdmFsdWU6IGRhdGFGb3JGaWVsZC52YWx1ZSxcbiAgICAgICAgICAgICAgZGVsdGFWYWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIFtdIGFzIHtuYW1lOiBzdHJpbmc7IHZhbHVlPzogc3RyaW5nOyBkZWx0YVZhbHVlOiBzdHJpbmcgfCBudWxsfVtdXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH0sIFtkYXRhLmFnZ3JlZ2F0ZWREYXRhLCBmaWVsZHNUb1Nob3csIGNvbG9yRmllbGQ/Lm5hbWUsIHByaW1hcnlEYXRhLCBjb21wYXJlVHlwZV0pO1xuXG4gIGNvbnN0IGNvbG9yTWVhc3VyZSA9IGxheWVyLmdldFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbignY29sb3InKS5tZWFzdXJlO1xuICBjb25zdCBzaXplTWVhc3VyZSA9IGxheWVyLmdldFZpc3VhbENoYW5uZWxEZXNjcmlwdGlvbignc2l6ZScpLm1lYXN1cmU7XG4gIHJldHVybiAoXG4gICAgPHRib2R5PlxuICAgICAgPFJvd1xuICAgICAgICBuYW1lPXsndG90YWwgcG9pbnRzJ31cbiAgICAgICAga2V5PVwiY291bnRcIlxuICAgICAgICB2YWx1ZT17U3RyaW5nKGRhdGEucG9pbnRzICYmIGRhdGEucG9pbnRzLmxlbmd0aCl9XG4gICAgICAgIGlzQ29tcGFyaW5nPXtpc0NvbXBhcmluZ31cbiAgICAgIC8+XG4gICAgICB7Y29sb3JGaWVsZCAmJiBsYXllci52aXN1YWxDaGFubmVscy5jb2xvciAmJiBjb2xvck1lYXN1cmUgPyAoXG4gICAgICAgIDxSb3dcbiAgICAgICAgICBuYW1lPXtjb2xvck1lYXN1cmV9XG4gICAgICAgICAga2V5PVwiY29sb3JcIlxuICAgICAgICAgIHZhbHVlPXtjb2xvclZhbHVlIHx8ICdOL0EnfVxuICAgICAgICAgIGRlbHRhVmFsdWU9e2NvbG9yRGVsdGF9XG4gICAgICAgICAgaXNDb21wYXJpbmc9e2lzQ29tcGFyaW5nfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICB7c2l6ZUZpZWxkICYmIGxheWVyLnZpc3VhbENoYW5uZWxzLnNpemUgJiYgc2l6ZU1lYXN1cmUgPyAoXG4gICAgICAgIDxSb3dcbiAgICAgICAgICBuYW1lPXtzaXplTWVhc3VyZX1cbiAgICAgICAgICBrZXk9XCJzaXplXCJcbiAgICAgICAgICB2YWx1ZT17ZWxldmF0aW9uVmFsdWUgfHwgJ04vQSd9XG4gICAgICAgICAgZGVsdGFWYWx1ZT17ZWxldmF0aW9uRGVsdGF9XG4gICAgICAgICAgaXNDb21wYXJpbmc9e2lzQ29tcGFyaW5nfVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICB7YWdncmVnYXRlZERhdGEubWFwKChkYXRhRm9yRmllbGQsIGlkeCkgPT4gKFxuICAgICAgICA8Um93XG4gICAgICAgICAgbmFtZT17ZGF0YUZvckZpZWxkLm5hbWV9XG4gICAgICAgICAga2V5PXtgZGF0YV8ke2lkeH1gfVxuICAgICAgICAgIHZhbHVlPXtkYXRhRm9yRmllbGQudmFsdWUgIT0gbnVsbCA/IFN0cmluZyhkYXRhRm9yRmllbGQudmFsdWUpIDogJ04vQSd9XG4gICAgICAgICAgZGVsdGFWYWx1ZT17ZGF0YUZvckZpZWxkLmRlbHRhVmFsdWV9XG4gICAgICAgICAgaXNDb21wYXJpbmc9e2lzQ29tcGFyaW5nfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC90Ym9keT5cbiAgKTtcbn07XG5cbmNvbnN0IExheWVySG92ZXJJbmZvRmFjdG9yeSA9ICgpID0+IHtcbiAgY29uc3QgTGF5ZXJIb3ZlckluZm8gPSBwcm9wcyA9PiB7XG4gICAgY29uc3Qge2RhdGEsIGxheWVyfSA9IHByb3BzO1xuICAgIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG4gICAgaWYgKCFkYXRhIHx8ICFsYXllcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzRmllbGRzVG9TaG93ID1cbiAgICAgIChkYXRhLmZpZWxkVmFsdWVzICYmIE9iamVjdC5rZXlzKGRhdGEuZmllbGRWYWx1ZXMpLmxlbmd0aCA+IDApIHx8XG4gICAgICAoZGF0YS53bXNGZWF0dXJlRGF0YSAmJiBkYXRhLndtc0ZlYXR1cmVEYXRhLmxlbmd0aCA+IDApIHx8XG4gICAgICAocHJvcHMuZmllbGRzVG9TaG93ICYmIHByb3BzLmZpZWxkc1RvU2hvdy5sZW5ndGggPiAwKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1hcC1wb3BvdmVyX19sYXllci1pbmZvXCI+XG4gICAgICAgIDxTdHlsZWRMYXllck5hbWUgY2xhc3NOYW1lPVwibWFwLXBvcG92ZXJfX2xheWVyLW5hbWVcIj5cbiAgICAgICAgICA8TGF5ZXJzIGhlaWdodD1cIjEycHhcIiAvPlxuICAgICAgICAgIHtwcm9wcy5sYXllci5jb25maWcubGFiZWx9XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJOYW1lPlxuICAgICAgICB7aGFzRmllbGRzVG9TaG93ICYmIDxTdHlsZWREaXZpZGVyIC8+fVxuICAgICAgICA8U3R5bGVkVGFibGUgY2xhc3NOYW1lPXtwcm9wcy5wcmltYXJ5RGF0YSA/ICdjb21wYXJpbmcnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICB7ZGF0YS53bXNGZWF0dXJlRGF0YSA/IChcbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAge2RhdGEud21zRmVhdHVyZURhdGEubWFwKCh7bmFtZSwgdmFsdWV9LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPFJvdyBrZXk9e2l9IG5hbWU9e25hbWV9IHZhbHVlPXt2YWx1ZX0gLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICkgOiBkYXRhLmZpZWxkVmFsdWVzID8gKFxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICB7ZGF0YS5maWVsZFZhbHVlcy5tYXAoKHtsYWJlbE1lc3NhZ2UsIHZhbHVlfSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxSb3cga2V5PXtpfSBuYW1lPXtpbnRsLmZvcm1hdE1lc3NhZ2Uoe2lkOiBsYWJlbE1lc3NhZ2V9KX0gdmFsdWU9e3ZhbHVlfSAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgKSA6IHByb3BzLmxheWVyLmlzQWdncmVnYXRlZCA/IChcbiAgICAgICAgICAgIDxDZWxsSW5mbyB7Li4ucHJvcHN9IC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxFbnRyeUluZm8gey4uLnByb3BzfSAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU3R5bGVkVGFibGU+XG4gICAgICAgIHtoYXNGaWVsZHNUb1Nob3cgJiYgPFN0eWxlZERpdmlkZXIgLz59XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xuXG4gIExheWVySG92ZXJJbmZvLnByb3BUeXBlcyA9IHtcbiAgICBmaWVsZHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgIGZpZWxkc1RvU2hvdzogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgbGF5ZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGF0YTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksIFByb3BUeXBlcy5vYmplY3RdKVxuICB9O1xuICByZXR1cm4gTGF5ZXJIb3ZlckluZm87XG59O1xuXG5leHBvcnQgZGVmYXVsdCBMYXllckhvdmVySW5mb0ZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSSxrQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sWUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsTUFBQSxHQUFBUixPQUFBO0FBRUEsSUFBQVMsU0FBQSxHQUFBVCxPQUFBO0FBTUEsSUFBQVUsVUFBQSxHQUFBVixPQUFBO0FBQW1DLElBQUFXLFNBQUE7QUFBQSxJQUFBQyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBbkJuQztBQUNBO0FBQUEsU0FBQWYsd0JBQUFnQixDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBbEIsdUJBQUEsWUFBQUEsd0JBQUFnQixDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLFFBQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FB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
318
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdHJ1bmNhdGUiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfaWNvbnMiLCJfcHJvcFR5cGVzIiwiX2NvbW1vblV0aWxzIiwiX3V0aWxzIiwiX3JlZHVjZXJzIiwiX3JlYWN0SW50bCIsIl9leGNsdWRlZCIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiU3R5bGVkTGF5ZXJOYW1lIiwiZXhwb3J0cyIsInN0eWxlZCIsIkNlbnRlckZsZXhib3giLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJ0ZXh0Q29sb3JIbCIsIlN0eWxlZFRhYmxlIiwidGFibGUiLCJub3RpZmljYXRpb25Db2xvcnMiLCJzdWNjZXNzIiwibmVnYXRpdmVCdG5BY3RCZ2QiLCJTdHlsZWREaXZpZGVyIiwiZGl2IiwicGFuZWxCb3JkZXJDb2xvciIsIlRPT0xUSVBfVkFMVUVfTUFYX0xFTkdUSCIsIlRvb2x0aXBJbWFnZSIsIl9yZWYiLCJzcmMiLCJpbWdSZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJzdGFydHNXaXRoIiwiVVJMIiwicmV2b2tlT2JqZWN0VVJMIiwiY3VycmVudCIsImNyZWF0ZUVsZW1lbnQiLCJyZWYiLCJSb3ciLCJfcmVmMiIsIm5hbWUiLCJ2YWx1ZSIsImRlbHRhVmFsdWUiLCJ1cmwiLCJpc0NvbXBhcmluZyIsIm1hdGNoIiwiZGlzcGxheVZhbHVlIiwibGVuZ3RoIiwidHJ1bmNhdGUiLCJhc0ltZyIsInRlc3QiLCJjbGFzc05hbWUiLCJrZXkiLCJyZXBsYWNlIiwidGFyZ2V0IiwicmVsIiwiaHJlZiIsImNvbmNhdCIsIm5vdE51bGxvclVuZGVmaW5lZCIsInRvU3RyaW5nIiwiY2hhckF0IiwiRW50cnlJbmZvIiwiX3JlZjMiLCJmaWVsZHNUb1Nob3ciLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwibWFwIiwiaXRlbSIsIkVudHJ5SW5mb1JvdyIsIl9leHRlbmRzMiIsIl9yZWY0IiwibGF5ZXIiLCJmaWVsZHMiLCJkYXRhIiwicHJpbWFyeURhdGEiLCJjb21wYXJlVHlwZSIsImN1cnJlbnRUaW1lIiwiZmllbGRJZHgiLCJmaW5kSW5kZXgiLCJmaWVsZCIsImZpZWxkVmFsdWVBY2Nlc3NvciIsImFjY2Vzc1ZTRmllbGRWYWx1ZSIsIkRhdGFSb3ciLCJpbmRleCIsIl9yb3dJbmRleCIsInByaW1hcnlWYWx1ZSIsImRpc3BsYXlEZWx0YVZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwiX3R5cGVvZjIiLCJnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUiLCJlcnJvciIsImdldFRvb2x0aXBEaXNwbGF5VmFsdWUiLCJkaXNwbGF5TmFtZSIsIkJvb2xlYW4iLCJDZWxsSW5mbyIsIl9yZWY1IiwiX3JlZjYiLCJjb25maWciLCJjb2xvckZpZWxkIiwic2l6ZUZpZWxkIiwiY29sb3JWYWx1ZSIsInVzZU1lbW8iLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiZmluZCIsImVsZXZhdGlvblZhbHVlIiwic2l6ZSIsImNvbG9yRGVsdGEiLCJlbGV2YXRpb25EZWx0YSIsImFnZ3JlZ2F0ZWREYXRhIiwicmVkdWNlIiwiYWNjIiwiX2RhdGEkYWdncmVnYXRlZERhdGEiLCJkYXRhRm9yRmllbGQiLCJtZWFzdXJlIiwiX3ByaW1hcnlEYXRhJGFnZ3JlZ2F0IiwicHJpbWFyeURhdGFGb3JGaWVsZCIsInR5cGUiLCJOdW1iZXIiLCJwdXNoIiwiY2FwaXRhbGl6ZUZpcnN0TGV0dGVyIiwiY29sb3JNZWFzdXJlIiwiZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uIiwic2l6ZU1lYXN1cmUiLCJTdHJpbmciLCJwb2ludHMiLCJpZHgiLCJMYXllckhvdmVySW5mb0ZhY3RvcnkiLCJMYXllckhvdmVySW5mbyIsImludGwiLCJ1c2VJbnRsIiwiaGFzRmllbGRzVG9TaG93IiwiZmllbGRWYWx1ZXMiLCJrZXlzIiwid21zRmVhdHVyZURhdGEiLCJMYXllcnMiLCJoZWlnaHQiLCJsYWJlbCIsInVuZGVmaW5lZCIsIl9yZWY3IiwiX3JlZjgiLCJsYWJlbE1lc3NhZ2UiLCJmb3JtYXRNZXNzYWdlIiwiaWQiLCJpc0FnZ3JlZ2F0ZWQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJhcnJheU9mIiwiYW55Iiwib2JqZWN0Iiwib25lT2ZUeXBlIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFwL2xheWVyLWhvdmVyLWluZm8udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB0cnVuY2F0ZSBmcm9tICdlcy10b29sa2l0L2NvbXBhdC90cnVuY2F0ZSc7XG5pbXBvcnQge0NvbXBhcmVUeXBlLCBGaWVsZCwgTWVyZ2UsIFRvb2x0aXBGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0NlbnRlckZsZXhib3h9IGZyb20gJy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0xheWVyc30gZnJvbSAnLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtEYXRhUm93fSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEsXG4gIExheWVySG92ZXJQcm9wLFxuICBnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUsXG4gIGdldFRvb2x0aXBEaXNwbGF5VmFsdWVcbn0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge3VzZUludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IFN0eWxlZExheWVyTmFtZSA9IHN0eWxlZChDZW50ZXJGbGV4Ym94KWBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICBmb250LXNpemU6IDEycHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjQzcHg7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuXG4gIHN2ZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFRhYmxlID0gc3R5bGVkLnRhYmxlYFxuICAmIC5yb3dfX2RlbHRhLXZhbHVlIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBtYXJnaW4tbGVmdDogNnB4O1xuXG4gICAgJi5wb3NpdGl2ZSB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25Db2xvcnMuc3VjY2Vzc307XG4gICAgfVxuXG4gICAgJi5uZWdhdGl2ZSB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5uZWdhdGl2ZUJ0bkFjdEJnZH07XG4gICAgfVxuICB9XG4gICYgLnJvd19fbmFtZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB9XG4gICYgLnJvd19fdmFsdWUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xuICAgIG1heC13aWR0aDogMjUwcHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZERpdmlkZXIgPSBzdHlsZWQuZGl2YFxuICAvLyBvZmZzZXQgZGl2aWRlciB0byByZWFjaCBwb3BvdmVyIGVkZ2VcbiAgbWFyZ2luLWxlZnQ6IC0xNHB4O1xuICBtYXJnaW4tcmlnaHQ6IC0xNHB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJvcmRlckNvbG9yfTtcbmA7XG5cbmludGVyZmFjZSBSb3dQcm9wcyB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZGVsdGFWYWx1ZT86IHN0cmluZyB8IG51bGw7XG4gIHVybD86IHN0cmluZztcbiAgaXNDb21wYXJpbmc/OiBib29sZWFuO1xufVxuXG5jb25zdCBUT09MVElQX1ZBTFVFX01BWF9MRU5HVEggPSAyNTY7XG5cbi8qKlxuICogSW1hZ2UgY29tcG9uZW50IHRoYXQgY2xlYW5zIHVwIHJlc291cmNlcyBvbiB1bm1vdW50IHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLlxuICogUmV2b2tlcyBibG9iL29iamVjdCBVUkxzIGFuZCBjbGVhcnMgdGhlIGltYWdlIHNyYyB0byByZWxlYXNlIG1lbW9yeS5cbiAqL1xuY29uc3QgVG9vbHRpcEltYWdlOiBSZWFjdC5GQzx7c3JjOiBzdHJpbmd9PiA9ICh7c3JjfSkgPT4ge1xuICBjb25zdCBpbWdSZWYgPSB1c2VSZWY8SFRNTEltYWdlRWxlbWVudD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgLy8gUmV2b2tlIGJsb2IgVVJMcyB0byBmcmVlIG1lbW9yeVxuICAgICAgaWYgKHNyYyAmJiAoc3JjLnN0YXJ0c1dpdGgoJ2Jsb2I6JykgfHwgc3JjLnN0YXJ0c1dpdGgoJ2RhdGE6JykpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChzcmMpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgLy8gaWdub3JlIGVycm9ycyBmcm9tIG5vbi1vYmplY3QgVVJMc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBDbGVhciB0aGUgaW1hZ2Ugc3JjIHRvIHJlbGVhc2UgdGhlIGRlY29kZWQgaW1hZ2UgZnJvbSBtZW1vcnlcbiAgICAgIGlmIChpbWdSZWYuY3VycmVudCkge1xuICAgICAgICBpbWdSZWYuY3VycmVudC5zcmMgPSAnJztcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbc3JjXSk7XG5cbiAgcmV0dXJuIDxpbWcgcmVmPXtpbWdSZWZ9IHNyYz17c3JjfSAvPjtcbn07XG5cbmNvbnN0IFJvdzogUmVhY3QuRkM8Um93UHJvcHM+ID0gKHtuYW1lLCB2YWx1ZSwgZGVsdGFWYWx1ZSwgdXJsLCBpc0NvbXBhcmluZ30pID0+IHtcbiAgLy8gU2V0ICd1cmwnIHRvICd2YWx1ZScgaWYgaXQgbG9va3MgbGlrZSBhIHVybFxuICBpZiAoIXVybCAmJiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLm1hdGNoKC9eaHR0cC8pKSB7XG4gICAgdXJsID0gdmFsdWU7XG4gIH1cblxuICBjb25zdCBkaXNwbGF5VmFsdWUgPVxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gVE9PTFRJUF9WQUxVRV9NQVhfTEVOR1RIXG4gICAgICA/IHRydW5jYXRlKHZhbHVlLCB7bGVuZ3RoOiBUT09MVElQX1ZBTFVFX01BWF9MRU5HVEh9KVxuICAgICAgOiB2YWx1ZTtcblxuICBjb25zdCBhc0ltZyA9IC88aW1nPi8udGVzdChuYW1lKTtcbiAgcmV0dXJuIChcbiAgICA8dHIgY2xhc3NOYW1lPVwibGF5ZXItaG92ZXItaW5mb19fcm93XCIga2V5PXtuYW1lfT5cbiAgICAgIDx0ZCBjbGFzc05hbWU9XCJyb3dfX25hbWVcIj57YXNJbWcgPyBuYW1lLnJlcGxhY2UoJzxpbWc+JywgJycpIDogbmFtZX08L3RkPlxuICAgICAgPHRkIGNsYXNzTmFtZT1cInJvd19fdmFsdWVcIj5cbiAgICAgICAge2FzSW1nID8gKFxuICAgICAgICAgIDxUb29sdGlwSW1hZ2Ugc3JjPXt2YWx1ZX0gLz5cbiAgICAgICAgKSA6IHVybCA/IChcbiAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgaHJlZj17dXJsfT5cbiAgICAgICAgICAgIHtkaXNwbGF5VmFsdWV9XG4gICAgICAgICAgPC9hPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxzcGFuPntkaXNwbGF5VmFsdWV9PC9zcGFuPlxuICAgICAgICApfVxuICAgICAgPC90ZD5cbiAgICAgIHtpc0NvbXBhcmluZyA/IChcbiAgICAgICAgPHRkXG4gICAgICAgICAgY2xhc3NOYW1lPXtgcm93X19kZWx0YS12YWx1ZSAke1xuICAgICAgICAgICAgbm90TnVsbG9yVW5kZWZpbmVkKGRlbHRhVmFsdWUpXG4gICAgICAgICAgICAgID8gZGVsdGFWYWx1ZT8udG9TdHJpbmcoKS5jaGFyQXQoMCkgPT09ICcrJ1xuICAgICAgICAgICAgICAgID8gJ3Bvc2l0aXZlJ1xuICAgICAgICAgICAgICAgIDogJ25lZ2F0aXZlJ1xuICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7ZGVsdGFWYWx1ZSA/PyAnJ31cbiAgICAgICAgPC90ZD5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvdHI+XG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBFbnRyeUluZm9Qcm9wcyA9IE1lcmdlPExheWVySG92ZXJQcm9wLCB7ZmllbGRzVG9TaG93OiBUb29sdGlwRmllbGRbXX0+O1xuXG5jb25zdCBFbnRyeUluZm86IFJlYWN0LkZDPEVudHJ5SW5mb1Byb3BzPiA9ICh7ZmllbGRzVG9TaG93LCAuLi5wcm9wc30pID0+IChcbiAgPHRib2R5PlxuICAgIHtmaWVsZHNUb1Nob3cubWFwKGl0ZW0gPT4gKFxuICAgICAgPEVudHJ5SW5mb1JvdyBrZXk9e2l0ZW0ubmFtZX0gaXRlbT17aXRlbX0gey4uLnByb3BzfSAvPlxuICAgICkpfVxuICA8L3Rib2R5PlxuKTtcblxuZXhwb3J0IHR5cGUgRW50cnlJbmZvUm93UHJvcHMgPSB7XG4gIGRhdGE6IExheWVySG92ZXJQcm9wWydkYXRhJ107XG4gIGZpZWxkczogRmllbGRbXTtcbiAgbGF5ZXI6IExheWVyO1xuICBwcmltYXJ5RGF0YT86IExheWVySG92ZXJQcm9wWydwcmltYXJ5RGF0YSddO1xuICBjb21wYXJlVHlwZT86IENvbXBhcmVUeXBlO1xuICBjdXJyZW50VGltZT86IFZpc1N0YXRlWydhbmltYXRpb25Db25maWcnXVsnY3VycmVudFRpbWUnXTtcbiAgaXRlbTogVG9vbHRpcEZpZWxkO1xufTtcblxuY29uc3QgRW50cnlJbmZvUm93OiBSZWFjdC5GQzxFbnRyeUluZm9Sb3dQcm9wcz4gPSAoe1xuICBsYXllcixcbiAgaXRlbSxcbiAgZmllbGRzLFxuICBkYXRhLFxuICBwcmltYXJ5RGF0YSxcbiAgY29tcGFyZVR5cGUsXG4gIGN1cnJlbnRUaW1lXG59KSA9PiB7XG4gIGNvbnN0IGZpZWxkSWR4ID0gZmllbGRzLmZpbmRJbmRleChmID0+IGYubmFtZSA9PT0gaXRlbS5uYW1lKTtcbiAgaWYgKGZpZWxkSWR4IDwgMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGZpZWxkID0gZmllbGRzW2ZpZWxkSWR4XTtcbiAgY29uc3QgZmllbGRWYWx1ZUFjY2Vzc29yID0gbGF5ZXIuYWNjZXNzVlNGaWVsZFZhbHVlKGZpZWxkLCBjdXJyZW50VGltZSk7XG4gIGNvbnN0IHZhbHVlID0gZmllbGRWYWx1ZUFjY2Vzc29yKGZpZWxkLCBkYXRhIGluc3RhbmNlb2YgRGF0YVJvdyA/IHtpbmRleDogZGF0YS5fcm93SW5kZXh9IDogZGF0YSk7XG5cbiAgbGV0IHByaW1hcnlWYWx1ZSA9IG51bGw7XG4gIGxldCBkaXNwbGF5RGVsdGFWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKHByaW1hcnlEYXRhKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChwcmltYXJ5RGF0YSBpbnN0YW5jZW9mIERhdGFSb3cpIHtcbiAgICAgICAgcHJpbWFyeVZhbHVlID0gZmllbGRWYWx1ZUFjY2Vzc29yKGZpZWxkLCB7aW5kZXg6IHByaW1hcnlEYXRhLl9yb3dJbmRleH0pO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHByaW1hcnlEYXRhKSB8fCAodHlwZW9mIHByaW1hcnlEYXRhID09PSAnb2JqZWN0JyAmJiBwcmltYXJ5RGF0YSkpIHtcbiAgICAgICAgcHJpbWFyeVZhbHVlID0gZmllbGRWYWx1ZUFjY2Vzc29yKGZpZWxkLCBwcmltYXJ5RGF0YSk7XG4gICAgICB9XG5cbiAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gZ2V0VG9vbHRpcERpc3BsYXlEZWx0YVZhbHVlKHtcbiAgICAgICAgZmllbGQsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwcmltYXJ5VmFsdWUsXG4gICAgICAgIGNvbXBhcmVUeXBlXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcHJpbWFyeVZhbHVlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBkaXNwbGF5VmFsdWUgPSBnZXRUb29sdGlwRGlzcGxheVZhbHVlKHtpdGVtLCBmaWVsZCwgdmFsdWV9KTtcblxuICByZXR1cm4gKFxuICAgIDxSb3dcbiAgICAgIG5hbWU9e2ZpZWxkLmRpc3BsYXlOYW1lIHx8IGZpZWxkLm5hbWV9XG4gICAgICB2YWx1ZT17ZGlzcGxheVZhbHVlfVxuICAgICAgZGVsdGFWYWx1ZT17ZGlzcGxheURlbHRhVmFsdWV9XG4gICAgICBpc0NvbXBhcmluZz17Qm9vbGVhbihwcmltYXJ5RGF0YSl9XG4gICAgLz5cbiAgKTtcbn07XG5cbmNvbnN0IENlbGxJbmZvID0gKHtcbiAgZmllbGRzVG9TaG93LFxuICBkYXRhLFxuICBsYXllcixcbiAgcHJpbWFyeURhdGEsXG4gIGNvbXBhcmVUeXBlXG59OiB7XG4gIGRhdGE6IEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGE7XG4gIGZpZWxkc1RvU2hvdzogVG9vbHRpcEZpZWxkW107XG4gIGxheWVyOiBMYXllcjtcbiAgcHJpbWFyeURhdGE/OiBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhIHwgbnVsbDtcbiAgY29tcGFyZVR5cGU/OiBDb21wYXJlVHlwZTtcbn0pID0+IHtcbiAgY29uc3Qge2NvbG9yRmllbGQsIHNpemVGaWVsZH0gPSBsYXllci5jb25maWcgYXMgYW55O1xuICBjb25zdCBpc0NvbXBhcmluZyA9IEJvb2xlYW4ocHJpbWFyeURhdGEpO1xuXG4gIGNvbnN0IGNvbG9yVmFsdWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoY29sb3JGaWVsZCAmJiBsYXllci52aXN1YWxDaGFubmVscy5jb2xvcikge1xuICAgICAgY29uc3QgaXRlbSA9IGZpZWxkc1RvU2hvdy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09IGNvbG9yRmllbGQubmFtZSk7XG4gICAgICByZXR1cm4gZ2V0VG9vbHRpcERpc3BsYXlWYWx1ZSh7aXRlbSwgZmllbGQ6IGNvbG9yRmllbGQsIHZhbHVlOiBkYXRhLmNvbG9yVmFsdWV9KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIFtmaWVsZHNUb1Nob3csIGNvbG9yRmllbGQsIGxheWVyLCBkYXRhLmNvbG9yVmFsdWVdKTtcblxuICBjb25zdCBlbGV2YXRpb25WYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChzaXplRmllbGQgJiYgbGF5ZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZSkge1xuICAgICAgY29uc3QgaXRlbSA9IGZpZWxkc1RvU2hvdy5maW5kKGZpZWxkID0+IGZpZWxkLm5hbWUgPT09IHNpemVGaWVsZC5uYW1lKTtcbiAgICAgIHJldHVybiBnZXRUb29sdGlwRGlzcGxheVZhbHVlKHtpdGVtLCBmaWVsZDogc2l6ZUZpZWxkLCB2YWx1ZTogZGF0YS5lbGV2YXRpb25WYWx1ZX0pO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSwgW2ZpZWxkc1RvU2hvdywgc2l6ZUZpZWxkLCBsYXllciwgZGF0YS5lbGV2YXRpb25WYWx1ZV0pO1xuXG4gIGNvbnN0IGNvbG9yRGVsdGEgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIXByaW1hcnlEYXRhIHx8ICFjb2xvckZpZWxkIHx8ICEoJ2NvbG9yVmFsdWUnIGluIHByaW1hcnlEYXRhKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGdldFRvb2x0aXBEaXNwbGF5RGVsdGFWYWx1ZSh7XG4gICAgICBmaWVsZDogY29sb3JGaWVsZCxcbiAgICAgIHZhbHVlOiBkYXRhLmNvbG9yVmFsdWUsXG4gICAgICBwcmltYXJ5VmFsdWU6IHByaW1hcnlEYXRhLmNvbG9yVmFsdWUsXG4gICAgICBjb21wYXJlVHlwZVxuICAgIH0pO1xuICB9LCBbcHJpbWFyeURhdGEsIGNvbG9yRmllbGQsIGRhdGEuY29sb3JWYWx1ZSwgY29tcGFyZVR5cGVdKTtcblxuICBjb25zdCBlbGV2YXRpb25EZWx0YSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghcHJpbWFyeURhdGEgfHwgIXNpemVGaWVsZCB8fCAhKCdlbGV2YXRpb25WYWx1ZScgaW4gcHJpbWFyeURhdGEpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gZ2V0VG9vbHRpcERpc3BsYXlEZWx0YVZhbHVlKHtcbiAgICAgIGZpZWxkOiBzaXplRmllbGQsXG4gICAgICB2YWx1ZTogZGF0YS5lbGV2YXRpb25WYWx1ZSxcbiAgICAgIHByaW1hcnlWYWx1ZTogcHJpbWFyeURhdGEuZWxldmF0aW9uVmFsdWUsXG4gICAgICBjb21wYXJlVHlwZVxuICAgIH0pO1xuICB9LCBbcHJpbWFyeURhdGEsIHNpemVGaWVsZCwgZGF0YS5lbGV2YXRpb25WYWx1ZSwgY29tcGFyZVR5cGVdKTtcblxuICBjb25zdCBhZ2dyZWdhdGVkRGF0YSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChkYXRhLmFnZ3JlZ2F0ZWREYXRhICYmIGZpZWxkc1RvU2hvdykge1xuICAgICAgcmV0dXJuIGZpZWxkc1RvU2hvdy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIGZpZWxkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YUZvckZpZWxkID0gZGF0YS5hZ2dyZWdhdGVkRGF0YT8uW2ZpZWxkLm5hbWVdO1xuICAgICAgICAgIGlmIChkYXRhRm9yRmllbGQ/Lm1lYXN1cmUgJiYgZmllbGQubmFtZSAhPT0gY29sb3JGaWVsZD8ubmFtZSkge1xuICAgICAgICAgICAgY29uc3QgcHJpbWFyeURhdGFGb3JGaWVsZCA9IHByaW1hcnlEYXRhPy5hZ2dyZWdhdGVkRGF0YT8uW2ZpZWxkLm5hbWVdO1xuICAgICAgICAgICAgY29uc3QgZGVsdGFWYWx1ZSA9IHByaW1hcnlEYXRhRm9yRmllbGRcbiAgICAgICAgICAgICAgPyBnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUoe1xuICAgICAgICAgICAgICAgICAgZmllbGQ6IHt0eXBlOiAncmVhbCcsIG5hbWU6IGZpZWxkLm5hbWV9IGFzIEZpZWxkLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IGRhdGFGb3JGaWVsZC52YWx1ZSAhPSBudWxsID8gTnVtYmVyKGRhdGFGb3JGaWVsZC52YWx1ZSkgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgcHJpbWFyeVZhbHVlOlxuICAgICAgICAgICAgICAgICAgICBwcmltYXJ5RGF0YUZvckZpZWxkLnZhbHVlICE9IG51bGwgPyBOdW1iZXIocHJpbWFyeURhdGFGb3JGaWVsZC52YWx1ZSkgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgY29tcGFyZVR5cGVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICBhY2MucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IGAke2NhcGl0YWxpemVGaXJzdExldHRlcihkYXRhRm9yRmllbGQubWVhc3VyZSl9IG9mICR7ZmllbGQubmFtZX1gLFxuICAgICAgICAgICAgICB2YWx1ZTogZGF0YUZvckZpZWxkLnZhbHVlLFxuICAgICAgICAgICAgICBkZWx0YVZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSxcbiAgICAgICAgW10gYXMge25hbWU6IHN0cmluZzsgdmFsdWU/OiBzdHJpbmc7IGRlbHRhVmFsdWU6IHN0cmluZyB8IG51bGx9W11cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfSwgW2RhdGEuYWdncmVnYXRlZERhdGEsIGZpZWxkc1RvU2hvdywgY29sb3JGaWVsZD8ubmFtZSwgcHJpbWFyeURhdGEsIGNvbXBhcmVUeXBlXSk7XG5cbiAgY29uc3QgY29sb3JNZWFzdXJlID0gbGF5ZXIuZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uKCdjb2xvcicpLm1lYXN1cmU7XG4gIGNvbnN0IHNpemVNZWFzdXJlID0gbGF5ZXIuZ2V0VmlzdWFsQ2hhbm5lbERlc2NyaXB0aW9uKCdzaXplJykubWVhc3VyZTtcbiAgcmV0dXJuIChcbiAgICA8dGJvZHk+XG4gICAgICA8Um93XG4gICAgICAgIG5hbWU9eyd0b3RhbCBwb2ludHMnfVxuICAgICAgICBrZXk9XCJjb3VudFwiXG4gICAgICAgIHZhbHVlPXtTdHJpbmcoZGF0YS5wb2ludHMgJiYgZGF0YS5wb2ludHMubGVuZ3RoKX1cbiAgICAgICAgaXNDb21wYXJpbmc9e2lzQ29tcGFyaW5nfVxuICAgICAgLz5cbiAgICAgIHtjb2xvckZpZWxkICYmIGxheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yICYmIGNvbG9yTWVhc3VyZSA/IChcbiAgICAgICAgPFJvd1xuICAgICAgICAgIG5hbWU9e2NvbG9yTWVhc3VyZX1cbiAgICAgICAgICBrZXk9XCJjb2xvclwiXG4gICAgICAgICAgdmFsdWU9e2NvbG9yVmFsdWUgfHwgJ04vQSd9XG4gICAgICAgICAgZGVsdGFWYWx1ZT17Y29sb3JEZWx0YX1cbiAgICAgICAgICBpc0NvbXBhcmluZz17aXNDb21wYXJpbmd9XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIHtzaXplRmllbGQgJiYgbGF5ZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZSAmJiBzaXplTWVhc3VyZSA/IChcbiAgICAgICAgPFJvd1xuICAgICAgICAgIG5hbWU9e3NpemVNZWFzdXJlfVxuICAgICAgICAgIGtleT1cInNpemVcIlxuICAgICAgICAgIHZhbHVlPXtlbGV2YXRpb25WYWx1ZSB8fCAnTi9BJ31cbiAgICAgICAgICBkZWx0YVZhbHVlPXtlbGV2YXRpb25EZWx0YX1cbiAgICAgICAgICBpc0NvbXBhcmluZz17aXNDb21wYXJpbmd9XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIHthZ2dyZWdhdGVkRGF0YS5tYXAoKGRhdGFGb3JGaWVsZCwgaWR4KSA9PiAoXG4gICAgICAgIDxSb3dcbiAgICAgICAgICBuYW1lPXtkYXRhRm9yRmllbGQubmFtZX1cbiAgICAgICAgICBrZXk9e2BkYXRhXyR7aWR4fWB9XG4gICAgICAgICAgdmFsdWU9e2RhdGFGb3JGaWVsZC52YWx1ZSAhPSBudWxsID8gU3RyaW5nKGRhdGFGb3JGaWVsZC52YWx1ZSkgOiAnTi9BJ31cbiAgICAgICAgICBkZWx0YVZhbHVlPXtkYXRhRm9yRmllbGQuZGVsdGFWYWx1ZX1cbiAgICAgICAgICBpc0NvbXBhcmluZz17aXNDb21wYXJpbmd9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICA8L3Rib2R5PlxuICApO1xufTtcblxuY29uc3QgTGF5ZXJIb3ZlckluZm9GYWN0b3J5ID0gKCkgPT4ge1xuICBjb25zdCBMYXllckhvdmVySW5mbyA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7ZGF0YSwgbGF5ZXJ9ID0gcHJvcHM7XG4gICAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgICBpZiAoIWRhdGEgfHwgIWxheWVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNGaWVsZHNUb1Nob3cgPVxuICAgICAgKGRhdGEuZmllbGRWYWx1ZXMgJiYgT2JqZWN0LmtleXMoZGF0YS5maWVsZFZhbHVlcykubGVuZ3RoID4gMCkgfHxcbiAgICAgIChkYXRhLndtc0ZlYXR1cmVEYXRhICYmIGRhdGEud21zRmVhdHVyZURhdGEubGVuZ3RoID4gMCkgfHxcbiAgICAgIChwcm9wcy5maWVsZHNUb1Nob3cgJiYgcHJvcHMuZmllbGRzVG9TaG93Lmxlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFwLXBvcG92ZXJfX2xheWVyLWluZm9cIj5cbiAgICAgICAgPFN0eWxlZExheWVyTmFtZSBjbGFzc05hbWU9XCJtYXAtcG9wb3Zlcl9fbGF5ZXItbmFtZVwiPlxuICAgICAgICAgIDxMYXllcnMgaGVpZ2h0PVwiMTJweFwiIC8+XG4gICAgICAgICAge3Byb3BzLmxheWVyLmNvbmZpZy5sYWJlbH1cbiAgICAgICAgPC9TdHlsZWRMYXllck5hbWU+XG4gICAgICAgIHtoYXNGaWVsZHNUb1Nob3cgJiYgPFN0eWxlZERpdmlkZXIgLz59XG4gICAgICAgIDxTdHlsZWRUYWJsZSBjbGFzc05hbWU9e3Byb3BzLnByaW1hcnlEYXRhID8gJ2NvbXBhcmluZycgOiB1bmRlZmluZWR9PlxuICAgICAgICAgIHtkYXRhLndtc0ZlYXR1cmVEYXRhID8gKFxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICB7ZGF0YS53bXNGZWF0dXJlRGF0YS5tYXAoKHtuYW1lLCB2YWx1ZX0sIGkpID0+IChcbiAgICAgICAgICAgICAgICA8Um93IGtleT17aX0gbmFtZT17bmFtZX0gdmFsdWU9e3ZhbHVlfSAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgKSA6IGRhdGEuZmllbGRWYWx1ZXMgPyAoXG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgIHtkYXRhLmZpZWxkVmFsdWVzLm1hcCgoe2xhYmVsTWVzc2FnZSwgdmFsdWV9LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPFJvdyBrZXk9e2l9IG5hbWU9e2ludGwuZm9ybWF0TWVzc2FnZSh7aWQ6IGxhYmVsTWVzc2FnZX0pfSB2YWx1ZT17dmFsdWV9IC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICApIDogcHJvcHMubGF5ZXIuaXNBZ2dyZWdhdGVkID8gKFxuICAgICAgICAgICAgPENlbGxJbmZvIHsuLi5wcm9wc30gLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPEVudHJ5SW5mbyB7Li4ucHJvcHN9IC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TdHlsZWRUYWJsZT5cbiAgICAgICAge2hhc0ZpZWxkc1RvU2hvdyAmJiA8U3R5bGVkRGl2aWRlciAvPn1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH07XG5cbiAgTGF5ZXJIb3ZlckluZm8ucHJvcFR5cGVzID0ge1xuICAgIGZpZWxkczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgZmllbGRzVG9TaG93OiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICBsYXllcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkYXRhOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSwgUHJvcFR5cGVzLm9iamVjdF0pXG4gIH07XG4gIHJldHVybiBMYXllckhvdmVySW5mbztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExheWVySG92ZXJJbmZvRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFNBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFJLGtCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxNQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxTQUFBLEdBQUFULE9BQUE7QUFNQSxJQUFBVSxVQUFBLEdBQUFWLE9BQUE7QUFBbUMsSUFBQVcsU0FBQTtBQUFBLElBQUFDLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFuQm5DO0FBQ0E7QUFBQSxTQUFBZix3QkFBQWdCLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFsQix1QkFBQSxZQUFBQSx3QkFBQWdCLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxtQkFBQVQsQ0FBQSxpQkFBQUEsQ0FBQSxnQkFBQVUsUUFBQSxDQUFBVixDQUFBLDBCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FB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QUFFQTtNQUFNLENBQUUsQ0FBQztJQUFBLENBQzFDLENBQ0ksQ0FBQyxHQUNOK0IsSUFBSSxDQUFDNEQsV0FBVyxnQkFDbEJoSyxNQUFBLFlBQUFnRSxhQUFBLGdCQUNHb0MsSUFBSSxDQUFDNEQsV0FBVyxDQUFDbkUsR0FBRyxDQUFDLFVBQUEyRSxLQUFBLEVBQXdCaEosQ0FBQztNQUFBLElBQXZCaUosWUFBWSxHQUFBRCxLQUFBLENBQVpDLFlBQVk7UUFBRXBHLEtBQUssR0FBQW1HLEtBQUEsQ0FBTG5HLEtBQUs7TUFBQSxvQkFDekNyRSxNQUFBLFlBQUFnRSxhQUFBLENBQUNFLEdBQUc7UUFBQ2MsR0FBRyxFQUFFeEQsQ0FBRTtRQUFDNEMsSUFBSSxFQUFFeUYsSUFBSSxDQUFDYSxhQUFhLENBQUM7VUFBQ0MsRUFBRSxFQUFFRjtRQUFZLENBQUMsQ0FBRTtRQUFDcEcsS0FBSyxFQUFFQTtNQUFNLENBQUUsQ0FBQztJQUFBLENBQzVFLENBQ0ksQ0FBQyxHQUNOM0IsS0FBSyxDQUFDd0QsS0FBSyxDQUFDMEUsWUFBWSxnQkFDMUI1SyxNQUFBLFlBQUFnRSxhQUFBLENBQUMwRCxRQUFRLEVBQUtoRixLQUFRLENBQUMsZ0JBRXZCMUMsTUFBQSxZQUFBZ0UsYUFBQSxDQUFDeUIsU0FBUyxFQUFLL0MsS0FBUSxDQUVkLENBQUMsRUFDYnFILGVBQWUsaUJBQUkvSixNQUFBLFlBQUFnRSxhQUFBLENBQUNkLGFBQWEsTUFBRSxDQUNqQyxDQUFDO0VBRVYsQ0FBQztFQUVEMEcsY0FBYyxDQUFDaUIsU0FBUyxHQUFHO0lBQ3pCMUUsTUFBTSxFQUFFMkUscUJBQVMsQ0FBQ0MsT0FBTyxDQUFDRCxxQkFBUyxDQUFDRSxHQUFHLENBQUM7SUFDeENyRixZQUFZLEVBQUVtRixxQkFBUyxDQUFDQyxPQUFPLENBQUNELHFCQUFTLENBQUNFLEdBQUcsQ0FBQztJQUM5QzlFLEtBQUssRUFBRTRFLHFCQUFTLENBQUNHLE1BQU07SUFDdkI3RSxJQUFJLEVBQUUwRSxxQkFBUyxDQUFDSSxTQUFTLENBQUMsQ0FBQ0oscUJBQVMsQ0FBQ0MsT0FBTyxDQUFDRCxxQkFBUyxDQUFDRSxHQUFHLENBQUMsRUFBRUYscUJBQVMsQ0FBQ0csTUFBTSxDQUFDO0VBQ2hGLENBQUM7RUFDRCxPQUFPckIsY0FBYztBQUN2QixDQUFDO0FBQUMsSUFBQXVCLFFBQUEsR0FBQTdJLE9BQUEsY0FFYXFILHFCQUFxQiIsImlnbm9yZUxpc3QiOltdfQ==