kepler.gl 3.1.5 → 3.1.6

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 (37) hide show
  1. package/package.json +2 -2
  2. package/src/actions/package.json +8 -8
  3. package/src/ai-assistant/package.json +7 -7
  4. package/src/cloud-providers/package.json +2 -2
  5. package/src/common-utils/package.json +3 -3
  6. package/src/components/package.json +15 -15
  7. package/src/constants/dist/default-settings.js +1 -1
  8. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a6/24/e627b9d220d419ebbcd587d4a259bfdefa4e2a415bffa609a2388ad0b2f98ff87bc25b05959f5523f920d81c80d22ea832fea3de26f385bf3980061f6192 +1 -0
  9. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/c9/15/fa84924a275687fd07d9edc843fb826bd3d3733dc8f56523787fb2cba9b4 +2 -0
  10. package/src/constants/package.json +2 -2
  11. package/src/constants/umd/keplergl.min.js +1 -1
  12. package/src/deckgl-arrow-layers/package.json +2 -2
  13. package/src/deckgl-layers/dist/raster/images.js +3 -3
  14. package/src/deckgl-layers/package.json +4 -4
  15. package/src/deckgl-layers/src/raster/images.ts +1 -1
  16. package/src/duckdb/package.json +6 -6
  17. package/src/effects/package.json +5 -5
  18. package/src/layers/dist/raster-tile/image.js +3 -3
  19. package/src/layers/dist/raster-tile/raster-tile-layer.js +3 -3
  20. package/src/layers/package.json +9 -9
  21. package/src/layers/src/raster-tile/image.ts +1 -1
  22. package/src/layers/src/raster-tile/raster-tile-layer.ts +1 -1
  23. package/src/localization/package.json +1 -1
  24. package/src/processors/package.json +7 -7
  25. package/src/reducers/dist/vis-state-updaters.js +3 -12
  26. package/src/reducers/package.json +16 -16
  27. package/src/reducers/src/vis-state-updaters.ts +0 -8
  28. package/src/schemas/package.json +7 -7
  29. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/15/ff/0d5d265a9aac90d367588258e15bade446b406199e4f89eebe00a15f0ae15cb46533e3490a435bd3c2028c11baf5cf980129b56fbc9df269850d75f36930 +1 -0
  30. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/bf/bd/77b9889db712486a6db4f34442ad9371c8a7a6a8ea20d4d0f484df4dc841 +2 -0
  31. package/src/styles/package.json +2 -2
  32. package/src/styles/umd/keplergl.min.js +1 -1
  33. package/src/table/package.json +5 -5
  34. package/src/tasks/package.json +2 -2
  35. package/src/types/package.json +1 -1
  36. package/src/utils/package.json +4 -4
  37. package/umd/keplergl.min.js +1190 -1190
@@ -21,7 +21,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
21
21
  var _typed = require("@deck.gl/core/typed");
22
22
  var _typed2 = require("@deck.gl/geo-layers/typed");
23
23
  var _pmtiles = require("@loaders.gl/pmtiles");
24
- var _lodash = _interopRequireDefault(require("lodash.memoize"));
24
+ var _memoize = _interopRequireDefault(require("lodash/memoize"));
25
25
  var _math = require("math.gl");
26
26
  var _typed3 = require("@deck.gl/layers/typed");
27
27
  var _constants = require("@kepler.gl/constants");
@@ -86,7 +86,7 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
86
86
  var _presetOptions$single, _presetOptions$single2;
87
87
  return "".concat(stac.id, "-").concat(stac.collection, "-").concat(preset, "-").concat((_presetOptions$single = presetOptions.singleBand) === null || _presetOptions$single === void 0 ? void 0 : _presetOptions$single.assetId, "-").concat((_presetOptions$single2 = presetOptions.singleBand) === null || _presetOptions$single2 === void 0 ? void 0 : _presetOptions$single2.bandIndex);
88
88
  };
89
- _this.getDataSourceParams = (0, _lodash["default"])(function (stac, preset, presetOptions) {
89
+ _this.getDataSourceParams = (0, _memoize["default"])(function (stac, preset, presetOptions) {
90
90
  return (0, _rasterTileUtils.getDataSourceParams)(stac, preset, presetOptions);
91
91
  }, resolver);
92
92
  _this.meta = {
@@ -893,4 +893,4 @@ function getRasterLayerPMTiles(props) {
893
893
  _imageCoordinateSystem: _typed.COORDINATE_SYSTEM.CARTESIAN
894
894
  });
895
895
  }
896
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3R5cGVkMiIsIl9wbXRpbGVzIiwiX2xvZGFzaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbWF0aCIsIl90eXBlZDMiLCJfY29uc3RhbnRzIiwiX2RlY2tnbExheWVycyIsIl9jb21tb25VdGlscyIsIl91dGlscyIsIl9jb25maWciLCJfZ3B1VXRpbHMiLCJfaW1hZ2UiLCJfcmFzdGVyVGlsZUljb24iLCJfcmFzdGVyVGlsZVV0aWxzIiwiX2Jhc2VMYXllciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsImUiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwiYSIsInUiLCJjYWxsIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0Iiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJkZXZpY2VQaXhlbFJhdGlvIiwiTWF0aCIsIm1pbiIsIndpbmRvdyIsInRpbGVzQmVpbmdMb2FkZWQiLCJpc1RpbGVzQmVpbmdMb2FkZWQiLCJleHBvcnRzIiwiTE9BRF9FTEVWQVRJT05fQUZURVJfWk9PTSIsImdldFNob3VsZExvYWRUZXJyYWluIiwic3RhYyIsIm1hcFN0YXRlIiwidmlzQ29uZmlnIiwiX3N0YWMkcmFzdGVyVGlsZVNlcnZlIiwicmFzdGVyVGlsZVNlcnZlclVybHMiLCJlbmFibGVUZXJyYWluIiwiZHJhZ1JvdGF0ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwicmFzdGVyU2VydmVyU3VwcG9ydHNFbGV2YXRpb24iLCJSYXN0ZXJUaWxlTGF5ZXIiLCJfS2VwbGVyTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIkluZmluaXR5IiwicmVnaXN0ZXJWaXNDb25maWciLCJyYXN0ZXJWaXNDb25maWdzIiwicmVzb2x2ZXIiLCJwcmVzZXQiLCJwcmVzZXRPcHRpb25zIiwiX3ByZXNldE9wdGlvbnMkc2luZ2xlIiwiX3ByZXNldE9wdGlvbnMkc2luZ2xlMiIsImNvbmNhdCIsImlkIiwiY29sbGVjdGlvbiIsInNpbmdsZUJhbmQiLCJhc3NldElkIiwiYmFuZEluZGV4IiwiZ2V0RGF0YVNvdXJjZVBhcmFtcyIsIm1lbW9pemUiLCJtZXRhIiwielJhbmdlIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJnZXQiLCJMQVlFUl9UWVBFUyIsInJhc3RlclRpbGUiLCJSYXN0ZXJJY29uIiwiRGF0YXNldFR5cGUiLCJSQVNURVJfVElMRSIsImNhdGVnb3JpY2FsQ29sb3JMZWdlbmRzIiwiY29uZmlnIiwiY29sb3JSYW5nZSIsImNvbG9yTGVnZW5kcyIsImNvbG9yIiwiZ2V0RGVmYXVsdExheWVyQ29uZmlnIiwiY29sb3JGaWVsZCIsImFuYWx5emVyVHlwZSIsImZvcm1hdCIsInR5cGUiLCJmaWVsZElkeCIsInZhbHVlQWNjZXNzb3IiLCJkaXNwbGF5TmFtZSIsImdldEhvdmVyRGF0YSIsInNob3VsZFJlbmRlckxheWVyIiwiaXNWaXNpYmxlIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJvbGRMYXllckRhdGEiLCJfZGF0YXNldCRtZXRhZGF0YSIsImRhdGFJZCIsIm5vdE51bGxvclVuZGVmaW5lZCIsImRhdGFzZXQiLCJkYXRhVXBkYXRlVHJpZ2dlcnMiLCJnZXREYXRhVXBkYXRlVHJpZ2dlcnMiLCJ0cmlnZ2VyQ2hhbmdlZCIsImdldENoYW5nZWRUcmlnZ2VycyIsImdldE1ldGEiLCJ1cGRhdGVMYXllck1ldGEiLCJ0aWxlU291cmNlIiwibWV0YWRhdGEiLCJwbXRpbGVzVHlwZSIsIlBNVGlsZXNUeXBlIiwiUkFTVEVSIiwibWV0YWRhdGFVcmwiLCJfcmVmIiwib2xkRGF0YXNldCIsIm9sZFRpbGVTb3VyY2UiLCJkYXRhIiwiUE1UaWxlc1NvdXJjZSIsImNyZWF0ZURhdGFTb3VyY2UiLCJ1cGRhdGVNZXRhIiwiYm91bmRzIiwiZ2V0U1RBQ0JvdW5kcyIsInNldEluaXRpYWxMYXllckNvbmZpZyIsInVwZGF0ZUxheWVyVmlzQ29uZmlnIiwidXNlU1RBQ1NlYXJjaGluZyIsImF2YWlsYWJsZUJhbmRzIiwiZ2V0RU9CYW5kcyIsInNpbmdsZUJhbmROYW1lIiwiYXZhaWxhYmxlUHJlc2V0cyIsImZpbHRlckF2YWlsYWJsZVByZXNldHMiLCJQUkVTRVRfT1BUSU9OUyIsImluY2x1ZGVzIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJkZWZhdWx0VmFsdWUiLCJjb2xvckRlZmF1bHRzIiwiREFUQV9TT1VSQ0VfQ09MT1JfREVGQVVMVFMiLCJvblZpZXdwb3J0TG9hZCIsInRpbGVzIiwidXBkYXRlTWluTWF4UGl4ZWxWYWx1ZSIsIm5ld1pSYW5nZSIsImNvbXB1dGVaUmFuZ2UiLCJfZ2V0TWluTWF4RnJvbVRpbGUyREgiLCJnZXRNaW5NYXhGcm9tVGlsZTJESGVhZGVycyIsIl9nZXRNaW5NYXhGcm9tVGlsZTJESDIiLCJfc2xpY2VkVG9BcnJheTIiLCJtYXgiLCJtaW5WaWV3cG9ydFBpeGVsVmFsdWUiLCJtYXhWaWV3cG9ydFBpeGVsVmFsdWUiLCJnZXRNaW5NYXhQaXhlbFZhbHVlcyIsImltYWdlcyIsIm1pblBpeGVsVmFsdWUiLCJtYXhQaXhlbFZhbHVlIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJpbWFnZSIsIl9nZXRJbWFnZU1pbk1heCIsImdldEltYWdlTWluTWF4IiwiX2dldEltYWdlTWluTWF4MiIsImVyciIsInJlbmRlckxheWVyIiwib3B0cyIsIl9kYXRhJGRhdGFzZXQiLCJyZW5kZXJQTVRpbGVzTGF5ZXIiLCJyZW5kZXJTdGFjTGF5ZXIiLCJfZGF0YSRkYXRhc2V0MiIsIl90aGlzMiIsInN0YWNfdmVyc2lvbiIsIl90aGlzJGdldERlZmF1bHREZWNrTCIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsIm9wYWNpdHkiLCJ2aXNpYmxlIiwiY29sb3JtYXBJZCIsImxpbmVhclJlc2NhbGluZyIsImxpbmVhclJlc2NhbGluZ0ZhY3RvciIsIm5vbkxpbmVhclJlc2NhbGluZyIsImdhbW1hQ29udHJhc3RGYWN0b3IiLCJzaWdtb2lkYWxDb250cmFzdEZhY3RvciIsInNpZ21vaWRhbEJpYXNGYWN0b3IiLCJzYXR1cmF0aW9uVmFsdWUiLCJmaWx0ZXJFbmFibGVkIiwiZmlsdGVyUmFuZ2UiLCJzdGFjU2VhcmNoUHJvdmlkZXIiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiX3N0YWNRdWVyeSIsImNhdGVnb3JpY2FsQ29sb3JNYXAiLCJjb2xvck1hcCIsImR5bmFtaWNDb2xvciIsInNob3VsZExvYWRUZXJyYWluIiwiRGF0ZSIsImJhbmRDb21iaW5hdGlvbiIsImdldFNpbmdsZUJhbmRQcmVzZXRPcHRpb25zIiwiZGF0YVNvdXJjZVBhcmFtcyIsIm1pblpvb20iLCJtYXhab29tIiwiZ2xvYmFsQm91bmRzIiwibG9hZEFzc2V0SWRzIiwibG9hZEJhbmRJbmRleGVzIiwicmVuZGVyQmFuZEluZGV4ZXMiLCJkYXRhVHlwZSIsImRzTWluUGl4ZWxWYWx1ZSIsImRzTWF4UGl4ZWxWYWx1ZSIsIm1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlIiwibWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWUiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImdldFRpbGVEYXRhQ3VzdG9tUHJvcHMiLCJ0aWxlTGF5ZXIiLCJUaWxlTGF5ZXIiLCJ0aWxlU2l6ZSIsImdldFRpbGVEYXRhIiwiYXJncyIsImJpbmQiLCJyZW5kZXJTdWJMYXllcnMiLCJyZW5kZXJTdWJMYXllcnNTdGFjIiwibWF4UmVxdWVzdHMiLCJnZXRNYXhSZXF1ZXN0cyIsInVwZGF0ZVRyaWdnZXJzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInJlZmluZW1lbnRTdHJhdGVneSIsImhhc0NhdGVnb3JpY2FsQ29sb3JNYXAiLCJfZGF0YSRkYXRhc2V0MyIsIl90aGlzMyIsIl90aGlzJGdldERlZmF1bHREZWNrTDIiLCJzaG93VGlsZUJvcmRlcnMiLCJnZXRUaWxlRGF0YVBNVGlsZXMiLCJwaWNrYWJsZSIsImF1dG9IaWdobGlnaHQiLCJ6b29tT2Zmc2V0IiwicmVuZGVyU3ViTGF5ZXJzUE1UaWxlcyIsIl9nZXRUaWxlRGF0YSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3Byb3BzJGJib3giLCJ3ZXN0Iiwic291dGgiLCJlYXN0Iiwibm9ydGgiLCJ6b29tIiwiYXNzZXRSZXF1ZXN0cyIsInRlcnJhaW4iLCJfeWllbGQkUHJvbWlzZSRhbGwiLCJfeWllbGQkUHJvbWlzZSRhbGwyIiwiX3RlcnJhaW4iLCJfdGhpcyRnZXRNaW5NYXhQaXhlbFYiLCJfdGhpcyRnZXRNaW5NYXhQaXhlbFYyIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwiYmJveCIsImluZGV4IiwieiIsImJib3hJbnRlcnNlY3RzIiwiYWJydXB0IiwiZ2V0U1RBQ0ltYWdlUmVxdWVzdHMiLCJzZW50IiwidDAiLCJsb2FkVGVycmFpbiIsInNpZ25hbCIsIlByb21pc2UiLCJhbGwiLCJsb2FkSW1hZ2VzIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsImltYWdlQmFuZHMiLCJ0MSIsInN0b3AiLCJfeCIsIl9nZXRUaWxlRGF0YVBNVGlsZXMiLCJfY2FsbGVlMiIsIl9wcm9wcyRiYm94MiIsIl95aWVsZCRQcm9taXNlJGFsbDMiLCJfeWllbGQkUHJvbWlzZSRhbGw0IiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWMyIsIl90aGlzJGdldE1pbk1heFBpeGVsVjQiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJfeDIiLCJfeDMiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJuZXdMYXllclByb3AiLCJsYWJlbCIsIktlcGxlckxheWVyIiwidGlsZSIsImdsb2JhbE1pblBpeGVsVmFsdWUiLCJnbG9iYWxNYXhQaXhlbFZhbHVlIiwidGlsZU1pblBpeGVsVmFsdWUiLCJ0aWxlTWF4UGl4ZWxWYWx1ZSIsIl9nZXRNb2R1bGVzIiwiZ2V0TW9kdWxlcyIsIm1vZHVsZXMiLCJtb2R1bGVQcm9wcyIsIlJhc3Rlck1lc2hMYXllciIsIm1lc2giLCJnZXRQb2x5Z29uT2Zmc2V0IiwiY29vcmRpbmF0ZVN5c3RlbSIsIkNPT1JESU5BVEVfU1lTVEVNIiwiQ0FSVEVTSUFOIiwibW9kZWxNYXRyaXgiLCJnZXRNZXJjYXRvck1vZGVsTWF0cml4IiwiZ2V0UG9zaXRpb24iLCJnZXRDb2xvciIsIlJhc3RlckxheWVyIiwiX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbSIsIldPUkxEX1NJWkUiLCJ3b3JsZFNjYWxlIiwicG93IiwieFNjYWxlIiwieVNjYWxlIiwieE9mZnNldCIsIngiLCJ5T2Zmc2V0IiwieSIsIk1hdHJpeDQiLCJ0cmFuc2xhdGUiLCJzY2FsZSIsIl9wcm9wcyRkYXRhIiwiX3Byb3BzJHRpbGUiLCJfcHJvcHMkdGlsZSRiYm94IiwibGF5ZXJzIiwibWltZVR5cGUiLCJnZXRSYXN0ZXJMYXllclBNVGlsZXMiLCJib3JkZXJDb2xvciIsIlBhdGhMYXllciIsImdldFBhdGgiLCJkIiwid2lkdGhNaW5QaXhlbHMiLCJpbWFnZVJnYmEiLCJfZ2V0TW9kdWxlczIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmFzdGVyLXRpbGUvcmFzdGVyLXRpbGUtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtDT09SRElOQVRFX1NZU1RFTSwgTGF5ZXIgYXMgRGVja0xheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCB7VGlsZUxheWVyLCBHZW9Cb3VuZGluZ0JveH0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycy90eXBlZCc7XG5pbXBvcnQge1BNVGlsZXNTb3VyY2UsIFBNVGlsZXNUaWxlU291cmNlfSBmcm9tICdAbG9hZGVycy5nbC9wbXRpbGVzJztcbmltcG9ydCB7VGV4dHVyZTJEUHJvcHN9IGZyb20gJ0BsdW1hLmdsL3dlYmdsJztcbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC5tZW1vaXplJztcbmltcG9ydCB7TWF0cml4NH0gZnJvbSAnbWF0aC5nbCc7XG5cbmltcG9ydCB7UGF0aExheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMvdHlwZWQnO1xuaW1wb3J0IHtEYXRhc2V0VHlwZSwgUE1UaWxlc1R5cGUsIExBWUVSX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1Jhc3RlckxheWVyLCBSYXN0ZXJNZXNoTGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5pbXBvcnQge1xuICBMYXllckJhc2VDb25maWcsXG4gIExheWVyQ29sb3JDb25maWcsXG4gIExheWVySGVpZ2h0Q29uZmlnLFxuICBWaXN1YWxDaGFubmVsLFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdTZWxlY3Rpb24sXG4gIFZpc0NvbmZpZ0Jvb2xlYW4sXG4gIFZpc0NvbmZpZ0lucHV0LFxuICBWaXNDb25maWdSYW5nZSxcbiAgVmlzQ29uZmlnTnVtYmVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtEYXRhc2V0cywgS2VwbGVyVGFibGUgYXMgS2VwbGVyRGF0YXNldCwgVmVjdG9yVGlsZU1ldGFkYXRhfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7Z2V0QXBwbGljYXRpb25Db25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge3Jhc3RlclZpc0NvbmZpZ3MsIFBSRVNFVF9PUFRJT05TLCBEQVRBX1NPVVJDRV9DT0xPUl9ERUZBVUxUU30gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtnZXRNb2R1bGVzfSBmcm9tICcuL2dwdS11dGlscyc7XG5pbXBvcnQge2dldFNUQUNJbWFnZVJlcXVlc3RzLCBsb2FkSW1hZ2VzLCBsb2FkVGVycmFpbn0gZnJvbSAnLi9pbWFnZSc7XG5pbXBvcnQgUmFzdGVySWNvbiBmcm9tICcuL3Jhc3Rlci10aWxlLWljb24nO1xuaW1wb3J0IHtcbiAgZ2V0RGF0YVNvdXJjZVBhcmFtcyxcbiAgZ2V0TWF4UmVxdWVzdHMsXG4gIGJib3hJbnRlcnNlY3RzLFxuICBjb21wdXRlWlJhbmdlLFxuICBnZXRTVEFDQm91bmRzLFxuICBnZXRFT0JhbmRzLFxuICBmaWx0ZXJBdmFpbGFibGVQcmVzZXRzLFxuICBnZXRTaW5nbGVCYW5kUHJlc2V0T3B0aW9ucyxcbiAgZ2V0SW1hZ2VNaW5NYXgsXG4gIGdldE1pbk1heEZyb21UaWxlMkRIZWFkZXJzXG59IGZyb20gJy4vcmFzdGVyLXRpbGUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgR2V0VGlsZURhdGFDdXN0b21Qcm9wcyxcbiAgR2V0VGlsZURhdGFEZWZhdWx0UHJvcHMsXG4gIEdldFRpbGVEYXRhUHJvcHMsXG4gIFJlbmRlclN1YkxheWVyc1Byb3BzLFxuICBHZXRUaWxlRGF0YU91dHB1dCxcbiAgRGF0YVNvdXJjZVBhcmFtcyxcbiAgS2VwbGVyUmFzdGVyRGF0YXNldCxcbiAgVGlsZTJESGVhZGVyLFxuICBQcmVzZXRPcHRpb24sXG4gIENvbXBsZXRlU1RBQ09iamVjdFxufSBmcm9tICcuL3R5cGVzJztcblxuaW1wb3J0IHtGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZX0gZnJvbSAnLi4vbGF5ZXItdXRpbHMnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEtlcGxlckxheWVyLCBMYXllckJhc2VDb25maWdQYXJ0aWFsfSBmcm9tICcuLi9iYXNlLWxheWVyJztcblxuLy8gQWRqdXN0IHRpbGVTaXplIHRvIGRldmljZVBpeGVsUmF0aW8sIGJ1dCBub3QgaGlnaGVyIHRoYW4gMiB0byByZWR1Y2UgcmVxdWVzdHMgdG8gc2VydmVyXG5jb25zdCBkZXZpY2VQaXhlbFJhdGlvOiBudW1iZXIgPSBNYXRoLm1pbihcbiAgMixcbiAgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKSB8fCAxXG4pO1xuXG4vLyBHbG9iYWwgY291bnRlciB0aGF0IHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB0aWxlcyBjdXJyZW50bHkgYmVpbmcgbG9hZGVkIGFjcm9zcyBhbGwgdGhlIHJhc3RlciB0aWxlIGxheWVyc1xubGV0IHRpbGVzQmVpbmdMb2FkZWQgPSAwO1xuXG4vLyBUaGlzIGlzIGEgdGVtcCBzb2x1dGlvbiwgYXMgd2UgZG9uJ3QgaGF2ZSBwcm9wZXIgbG9naWMgdG8gdHJhY2sgbG9hZGluZyBvZiBhc3ljbiBsYXllcnMgYXRtIGluIEtlcGxlci5nbFxuZXhwb3J0IGNvbnN0IGlzVGlsZXNCZWluZ0xvYWRlZCA9ICgpID0+IHtcbiAgcmV0dXJuIHRpbGVzQmVpbmdMb2FkZWQgPiAwO1xufTtcblxuZXhwb3J0IGNvbnN0IExPQURfRUxFVkFUSU9OX0FGVEVSX1pPT00gPSA4Ljk7XG5cbmNvbnN0IGdldFNob3VsZExvYWRUZXJyYWluID0gKHN0YWMsIG1hcFN0YXRlLCB2aXNDb25maWcpID0+IHtcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgLy8gd2UgbmVlZCBhIHJhc3RlciB0aWxlIHNlcnZlciBmb3IgZWxldmF0aW9ucyBldmVuIHdoZW4gd2UgdXNlciBQTVRpbGVzXG4gICAgc3RhYy5yYXN0ZXJUaWxlU2VydmVyVXJscz8ubGVuZ3RoID4gMCAmJlxuICAgICAgLy8gY2hlY2sgdGhlIHN3aXRjaCBmcm9tIHRoZSBsYXllciBjb25maWd1cmF0b3JcbiAgICAgIHZpc0NvbmZpZy5lbmFibGVUZXJyYWluICYmXG4gICAgICAvLyBmb3Igbm93IG9ubHkgaW4gM0QgbW9kZSwgbm90IHRvcCBtb2RlXG4gICAgICBtYXBTdGF0ZS5kcmFnUm90YXRlICYmXG4gICAgICBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnJhc3RlclNlcnZlclN1cHBvcnRzRWxldmF0aW9uXG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBSYXN0ZXJUaWxlTGF5ZXJWaXNDb25maWdDb21tb25TZXR0aW5ncyA9IHtcbiAgb3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICBlbmFibGVUZXJyYWluOiBWaXNDb25maWdCb29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSBSYXN0ZXJUaWxlTGF5ZXJWaXNDb25maWdDb21tb25TZXR0aW5ncyAmIHtcbiAgcHJlc2V0OiBWaXNDb25maWdTZWxlY3Rpb247XG4gIHVzZVNUQUNTZWFyY2hpbmc6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIHN0YWNTZWFyY2hQcm92aWRlcjogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICBzdGFydERhdGU6IFZpc0NvbmZpZ0lucHV0O1xuICBlbmREYXRlOiBWaXNDb25maWdJbnB1dDtcbiAgZHluYW1pY0NvbG9yOiBWaXNDb25maWdCb29sZWFuO1xuICBjb2xvcm1hcElkOiBWaXNDb25maWdTZWxlY3Rpb247XG4gIGNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIGxpbmVhclJlc2NhbGluZ0ZhY3RvcjogVmlzQ29uZmlnUmFuZ2U7XG4gIG5vbkxpbmVhclJlc2NhbGluZzogVmlzQ29uZmlnQm9vbGVhbjtcbiAgZ2FtbWFDb250cmFzdEZhY3RvcjogVmlzQ29uZmlnTnVtYmVyO1xuICBzaWdtb2lkYWxDb250cmFzdEZhY3RvcjogVmlzQ29uZmlnTnVtYmVyO1xuICBzaWdtb2lkYWxCaWFzRmFjdG9yOiBWaXNDb25maWdOdW1iZXI7XG4gIHNhdHVyYXRpb25WYWx1ZTogVmlzQ29uZmlnTnVtYmVyO1xuICBmaWx0ZXJFbmFibGVkOiBWaXNDb25maWdCb29sZWFuO1xuICBmaWx0ZXJSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIF9zdGFjUXVlcnk6IFZpc0NvbmZpZ0lucHV0O1xuICBzaW5nbGVCYW5kTmFtZTogVmlzQ29uZmlnU2VsZWN0aW9uO1xufTtcblxudHlwZSBSYXN0ZXJUaWxlTGF5ZXJNZXRhID0ge1xuICB6UmFuZ2U6IG51bWJlcltdIHwgbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhc3RlclRpbGVMYXllciBleHRlbmRzIEtlcGxlckxheWVyIHtcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgbWV0YTogUmFzdGVyVGlsZUxheWVyTWV0YTtcblxuICAvKiogTWluIGJhbmRzIGltYWdlIGRhdGEgdmFsdWUsIGJhc2VkIG9uIHRoZSBjdXJyZW50IHZpZXdwb3J0ICovXG4gIG1pblZpZXdwb3J0UGl4ZWxWYWx1ZSA9IEluZmluaXR5O1xuICAvKiogTWF4IGJhbmRzIGltYWdlIGRhdGEgdmFsdWUsIGJhc2VkIG9uIHRoZSBjdXJyZW50IHZpZXdwb3J0ICovXG4gIG1heFZpZXdwb3J0UGl4ZWxWYWx1ZSA9IC1JbmZpbml0eTtcbiAgLyoqIE1lbW9pemVkIG1ldGhvZCB0aGF0IGNhbGN1bGF0ZXMgZGF0YSBzb3VyY2UgcGFyYW1zICovXG5cbiAgZ2V0RGF0YVNvdXJjZVBhcmFtczogKFxuICAgIHN0YWM6IENvbXBsZXRlU1RBQ09iamVjdCxcbiAgICBwcmVzZXQ6IHN0cmluZyxcbiAgICBwcmVzZXRPcHRpb25zOiBQcmVzZXRPcHRpb25cbiAgKSA9PiBEYXRhU291cmNlUGFyYW1zIHwgbnVsbDtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKHJhc3RlclZpc0NvbmZpZ3MpO1xuXG4gICAgLy8gTm8gdHdvIFNUQUMgaWRzIG1heSBiZSB0aGUgc2FtZSB3aXRoaW4gYSBzaW5nbGUgY29sbGVjdGlvbiwgdGhvdWdoIGl0J3MgY29uY2VpdmFibHkgcG9zc2libGVcbiAgICAvLyBhY3Jvc3MgbXVsdGlwbGUgU1RBQyBjb2xsZWN0aW9ucyB0aGVyZSBjb3VsZCBiZSBhbiBpZCBjb2xsaXNpb24uIE5vdGU6IFNUQUMgQ29sbGVjdGlvblxuICAgIC8vIG9iamVjdHMgZG9uJ3QgaGF2ZSBhIGBjb2xsZWN0aW9uYCBrZXk7IFNUQUMgSXRlbSBvYmplY3RzIGhhdmUgYSBgY29sbGVjdGlvbmAga2V5ICh3aGljaFxuICAgIC8vIG1hdGNoZXMgdGhlIGNvbGxlY3Rpb24ncyBgaWRgKS5cbiAgICBjb25zdCByZXNvbHZlciA9IChzdGFjOiBDb21wbGV0ZVNUQUNPYmplY3QsIHByZXNldDogc3RyaW5nLCBwcmVzZXRPcHRpb25zOiBQcmVzZXRPcHRpb24pID0+XG4gICAgICBgJHtzdGFjLmlkfS0ke3N0YWMuY29sbGVjdGlvbn0tJHtwcmVzZXR9LSR7cHJlc2V0T3B0aW9ucy5zaW5nbGVCYW5kPy5hc3NldElkfS0ke3ByZXNldE9wdGlvbnMuc2luZ2xlQmFuZD8uYmFuZEluZGV4fWA7XG4gICAgdGhpcy5nZXREYXRhU291cmNlUGFyYW1zID0gbWVtb2l6ZShcbiAgICAgIChzdGFjLCBwcmVzZXQsIHByZXNldE9wdGlvbnMpID0+IGdldERhdGFTb3VyY2VQYXJhbXMoc3RhYywgcHJlc2V0LCBwcmVzZXRPcHRpb25zKSxcbiAgICAgIHJlc29sdmVyXG4gICAgKTtcblxuICAgIHRoaXMubWV0YSA9IHt6UmFuZ2U6IG51bGx9O1xuICB9XG5cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyhkYXRhc2V0OiBLZXBsZXJEYXRhc2V0KTogRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUge1xuICAgIGlmIChkYXRhc2V0LnR5cGUgIT09IERhdGFzZXRUeXBlLlJBU1RFUl9USUxFKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuXG4gICAgY29uc3QgbmV3TGF5ZXJQcm9wID0ge1xuICAgICAgZGF0YUlkOiBkYXRhc2V0LmlkLFxuICAgICAgbGFiZWw6IGRhdGFzZXQubGFiZWwsXG4gICAgICBpc1Zpc2libGU6IHRydWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtwcm9wczogW25ld0xheWVyUHJvcF19O1xuICB9XG5cbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTEFZRVJfVFlQRVMucmFzdGVyVGlsZTtcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdSYXN0ZXIgVGlsZSc7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCk6IEtlcGxlckxheWVyWydsYXllckljb24nXSB7XG4gICAgcmV0dXJuIFJhc3Rlckljb247XG4gIH1cblxuICBnZXQgc3VwcG9ydGVkRGF0YXNldFR5cGVzKCk6IERhdGFzZXRUeXBlW10ge1xuICAgIHJldHVybiBbRGF0YXNldFR5cGUuUkFTVEVSX1RJTEVdO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCk6IFJlY29yZDxzdHJpbmcsIFZpc3VhbENoYW5uZWw+IHtcbiAgICBjb25zdCB7XG4gICAgICB2aXNDb25maWc6IHtcbiAgICAgICAgY29sb3JSYW5nZToge2NvbG9yTGVnZW5kczogY2F0ZWdvcmljYWxDb2xvckxlZ2VuZHN9XG4gICAgICB9XG4gICAgfSA9IHRoaXMuY29uZmlnO1xuICAgIGlmIChjYXRlZ29yaWNhbENvbG9yTGVnZW5kcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IHN1cGVyLnZpc3VhbENoYW5uZWxzLmNvbG9yXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJlcXVpcmVEYXRhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0RGVmYXVsdExheWVyQ29uZmlnKFxuICAgIHByb3BzOiBMYXllckJhc2VDb25maWdQYXJ0aWFsXG4gICk6IExheWVyQmFzZUNvbmZpZyAmIFBhcnRpYWw8TGF5ZXJDb2xvckNvbmZpZyAmIExheWVySGVpZ2h0Q29uZmlnPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyksXG4gICAgICBjb2xvckZpZWxkOiB7XG4gICAgICAgIGFuYWx5emVyVHlwZTogJycsXG4gICAgICAgIG5hbWU6ICdDYXRlZ29yeScsXG4gICAgICAgIGZvcm1hdDogJycsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBmaWVsZElkeDogLTEsXG4gICAgICAgIHZhbHVlQWNjZXNzb3I6ICgpID0+ICcnLFxuICAgICAgICBkaXNwbGF5TmFtZTogJ0NhdGVnb3J5J1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXRIb3ZlckRhdGEoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBXZSBjYW4gcmVuZGVyIHdpdGhvdXQgY29sdW1ucywgc28gd2UgcmVkZWZpbmUgdGhpcyBtZXRob2RcbiAgc2hvdWxkUmVuZGVyTGF5ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy50eXBlICYmIHRoaXMuY29uZmlnLmlzVmlzaWJsZSk7XG4gIH1cblxuICBmb3JtYXRMYXllckRhdGEoZGF0YXNldHM6IERhdGFzZXRzLCBvbGRMYXllckRhdGE/OiBhbnkpIHtcbiAgICBjb25zdCB7ZGF0YUlkfSA9IHRoaXMuY29uZmlnO1xuICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKGRhdGFJZCkpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2RhdGFJZF07XG5cbiAgICAvLyBjYWxsIHVwZGF0ZURhdGEgdG8gdXBkYXRlTGF5ZXJNZXRhXG4gICAgY29uc3QgZGF0YVVwZGF0ZVRyaWdnZXJzID0gdGhpcy5nZXREYXRhVXBkYXRlVHJpZ2dlcnMoZGF0YXNldCk7XG4gICAgY29uc3QgdHJpZ2dlckNoYW5nZWQgPSB0aGlzLmdldENoYW5nZWRUcmlnZ2VycyhkYXRhVXBkYXRlVHJpZ2dlcnMpO1xuXG4gICAgaWYgKHRyaWdnZXJDaGFuZ2VkICYmIHRyaWdnZXJDaGFuZ2VkLmdldE1ldGEpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJNZXRhKGRhdGFzZXQgYXMgS2VwbGVyUmFzdGVyRGF0YXNldCk7XG4gICAgfVxuXG4gICAgbGV0IHRpbGVTb3VyY2U6IFBNVGlsZXNUaWxlU291cmNlIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKGRhdGFzZXQubWV0YWRhdGE/LnBtdGlsZXNUeXBlID09PSBQTVRpbGVzVHlwZS5SQVNURVIpIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhVXJsID0gZGF0YXNldC5tZXRhZGF0YS5tZXRhZGF0YVVybDtcbiAgICAgIC8vIHVzZSB0aGUgb2xkIHRpbGUgc291cmNlIGlmIGl0IGV4aXN0cyBhbmQgbWF0Y2hlcyB0aGUgbmV3IG1ldGFkYXRhVXJsXG4gICAgICBjb25zdCB7ZGF0YXNldDogb2xkRGF0YXNldCwgdGlsZVNvdXJjZTogb2xkVGlsZVNvdXJjZX0gPSBvbGRMYXllckRhdGEgfHwge307XG4gICAgICBpZiAob2xkRGF0YXNldCA9PT0gZGF0YXNldCAmJiBvbGRUaWxlU291cmNlPy5kYXRhID09PSBtZXRhZGF0YVVybCkge1xuICAgICAgICB0aWxlU291cmNlID0gb2xkTGF5ZXJEYXRhLnRpbGVTb3VyY2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aWxlU291cmNlID0gbWV0YWRhdGFVcmwgPyBQTVRpbGVzU291cmNlLmNyZWF0ZURhdGFTb3VyY2UobWV0YWRhdGFVcmwsIHt9KSA6IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtkYXRhc2V0LCB0aWxlU291cmNlfTtcbiAgfVxuXG4gIHVwZGF0ZUxheWVyTWV0YShkYXRhc2V0OiBLZXBsZXJSYXN0ZXJEYXRhc2V0KTogdm9pZCB7XG4gICAgaWYgKGRhdGFzZXQudHlwZSAhPT0gRGF0YXNldFR5cGUuUkFTVEVSX1RJTEUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFjID0gZGF0YXNldC5tZXRhZGF0YTtcbiAgICBpZiAoc3RhYy5wbXRpbGVzVHlwZSA9PT0gUE1UaWxlc1R5cGUuUkFTVEVSKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVNZXRhKHtcbiAgICAgICAgYm91bmRzOiBzdGFjLmJvdW5kc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgYm91bmRzID0gZ2V0U1RBQ0JvdW5kcyhzdGFjKTtcbiAgICBpZiAoYm91bmRzKSB7XG4gICAgICAvLyBJZiBhIFNUQUMgSXRlbSAoaS5lLiBzdGFjLnR5cGUgPT09ICdGZWF0dXJlJyksIHRoZW4gc2V0IG1hcCBib3VuZHMuXG4gICAgICAvLyBCdXQgd2UgZG9uJ3Qgd2FudCB0byBzZXQgYm91bmRzIGZvciBMYW5kc2F0IG9yIFNlbnRpbmVsIGJlY2F1c2UgaXQgd291bGQgem9vbSBvdXQgdG8gem9vbVxuICAgICAgLy8gMCwgYW5kIHdlIGRvbid0IGhhdmUgbG93LXpvb20gdGlsZXMuXG4gICAgICBpZiAoc3RhYy50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICAgICAgdGhpcy51cGRhdGVNZXRhKHtib3VuZHN9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVuIHdoZW4gYWRkaW5nIGEgbmV3IGRhdGFzZXRcbiAgICovXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0OiBLZXBsZXJEYXRhc2V0KTogUmFzdGVyVGlsZUxheWVyIHtcbiAgICBjb25zdCBzdGFjID0gZGF0YXNldD8ubWV0YWRhdGEgYXMgR2V0VGlsZURhdGFDdXN0b21Qcm9wc1snc3RhYyddO1xuXG4gICAgaWYgKCFzdGFjKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoc3RhYy5wbXRpbGVzVHlwZSA9PT0gUE1UaWxlc1R5cGUuUkFTVEVSKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBXaGVuIGEgU1RBQyBDb2xsZWN0aW9uIGlzIGFkZGVkLCB1c2VTdGFjU2VhcmNoaW5nIHNob3VsZCBiZSB0cnVlIHRvIHByZXZlbnQgYSBibGFjayBzY3JlZW5cbiAgICB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHtcbiAgICAgIHVzZVNUQUNTZWFyY2hpbmc6IHN0YWMudHlwZSA9PT0gJ0NvbGxlY3Rpb24nXG4gICAgfSk7XG5cbiAgICAvLyBTZXQgc2luZ2xlQmFuZE5hbWUgaWYgdGhlcmUgaXMgb25seSBvbmUgYmFuZFxuICAgIGNvbnN0IGF2YWlsYWJsZUJhbmRzID0gZ2V0RU9CYW5kcyhzdGFjKSB8fCBbXTtcbiAgICBpZiAoYXZhaWxhYmxlQmFuZHM/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh7c2luZ2xlQmFuZE5hbWU6IGF2YWlsYWJsZUJhbmRzWzBdLm5hbWV9KTtcbiAgICB9XG5cbiAgICAvLyBDaGFuZ2UgdGhlIHByZXNldCBpZiB0aGUgZGVmYXVsdCBvbmUgaXMgbm90IGFsbG93ZWRcbiAgICBjb25zdCBhdmFpbGFibGVQcmVzZXRzID0gZmlsdGVyQXZhaWxhYmxlUHJlc2V0cyhzdGFjLCBQUkVTRVRfT1BUSU9OUyk7XG4gICAgaWYgKFxuICAgICAgYXZhaWxhYmxlUHJlc2V0cz8ubGVuZ3RoICYmXG4gICAgICAhYXZhaWxhYmxlUHJlc2V0cz8uaW5jbHVkZXModGhpcy52aXNDb25maWdTZXR0aW5ncy5wcmVzZXQuZGVmYXVsdFZhbHVlIGFzIHN0cmluZylcbiAgICApIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe3ByZXNldDogYXZhaWxhYmxlUHJlc2V0c1swXX0pO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IGltcHJvdmVkIGltYWdlIHByb2Nlc3NpbmcgcHJvcHMgb25seSBmb3Igbm9uIHNpbmdsZSBiYW5kIG1vZGVzXG4gICAgY29uc3QgcHJlc2V0ID0gdGhpcy5jb25maWcudmlzQ29uZmlnLnByZXNldDtcbiAgICBjb25zdCBjb2xvckRlZmF1bHRzID0gREFUQV9TT1VSQ0VfQ09MT1JfREVGQVVMVFNbc3RhYy5pZF07XG4gICAgaWYgKGNvbG9yRGVmYXVsdHMgJiYgcHJlc2V0ICE9PSAnc2luZ2xlQmFuZCcpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoY29sb3JEZWZhdWx0cyk7XG4gICAgfVxuXG4gICAgLypcbiAgICBMYW5kU2F0IHNwZWNpZmllcyB0ZW1wb3JhbCBib3VuZHMgYnV0IHRoZSB2YWxpZCBkYXRhIGlzIGFmdGVyIGVuZCBkYXRlXG4gICAgY29uc3QgdXBkYXRlZERhdGVzID0gdGltZVJhbmdlVG9TdGFjVGVtcG9yYWxJbnRlcnZhbChcbiAgICAgIHN0YWMgYXMgU3RhY1R5cGVzLlNUQUNDb2xsZWN0aW9uLFxuICAgICAgdGhpcy5jb25maWcudmlzQ29uZmlnLnN0YXJ0RGF0ZSxcbiAgICAgIHRoaXMuY29uZmlnLnZpc0NvbmZpZy5lbmREYXRlXG4gICAgKTtcbiAgICB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHVwZGF0ZWREYXRlcyk7XG4gICAgKi9cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB6UmFuZ2Ugb2Ygdmlld3BvcnQuIFRoaXMgaXMgbmVjZXNzYXJ5IHNvIHRoYXQgdGlsZXMgaW4gZXh0cnVkZWQgbW9kZSBhcmUgc2hvd24gcHJvcGVybHlcbiAgICogYXQgaGlnaCBlbGV2YXRpb25zOiBodHRwczovL2dpdGh1Yi5jb20vZm91cnNxdWFyZS9zdHVkaW8tbW9ub3JlcG8vcHVsbC8xODkyL2ZpbGVzXG4gICAqIERlcml2ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdmlzZ2wvZGVjay5nbC9ibG9iLzhkODI0YTRiODM2ZmVlM2JmZWJlNmZjOTYyZTBmMDNkOGMxZGJkMGQvbW9kdWxlcy9nZW8tbGF5ZXJzL3NyYy90ZXJyYWluLWxheWVyL3RlcnJhaW4tbGF5ZXIuanMjTDE3My1MMTk2XG4gICAqXG4gICAqIEBwYXJhbSB0aWxlcyBBcnJheSBvZiB0aWxlcyBpbiBjdXJyZW50IHZpZXdwb3J0XG4gICAqL1xuICBvblZpZXdwb3J0TG9hZCh0aWxlczogKFRpbGUyREhlYWRlciB8IG51bGwpW10pOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZU1pbk1heFBpeGVsVmFsdWUodGlsZXMpO1xuICAgIGNvbnN0IG5ld1pSYW5nZSA9IGNvbXB1dGVaUmFuZ2UodGlsZXMpO1xuICAgIGlmICghbmV3WlJhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qge3pSYW5nZX0gPSB0aGlzLm1ldGE7XG4gICAgaWYgKCF6UmFuZ2UgfHwgbmV3WlJhbmdlWzBdIDwgelJhbmdlWzBdIHx8IG5ld1pSYW5nZVsxXSA+IHpSYW5nZVsxXSkge1xuICAgICAgdGhpcy5tZXRhLnpSYW5nZSA9IG5ld1pSYW5nZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZpZXdwb3J0LXJlbGF0ZWQgbWluUHhlbFZhbHVlIGFuZCBtYXhQaXhlbFZhbHVlXG4gICAqIEBwYXJhbSB0aWxlcyAtIGRlY2suZ2wgdGlsZXNcbiAgICovXG4gIHVwZGF0ZU1pbk1heFBpeGVsVmFsdWUodGlsZXM6IChUaWxlMkRIZWFkZXIgfCBudWxsKVtdKTogdm9pZCB7XG4gICAgY29uc3QgW21pbiwgbWF4XSA9IGdldE1pbk1heEZyb21UaWxlMkRIZWFkZXJzKHRpbGVzKTtcbiAgICB0aGlzLm1pblZpZXdwb3J0UGl4ZWxWYWx1ZSA9IG1pbjtcbiAgICB0aGlzLm1heFZpZXdwb3J0UGl4ZWxWYWx1ZSA9IG1heDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgbWluIGFuZCBtYXggdmFsdWVzIG9mIGlucHV0IHJhc3RlciBiYW5kIGltYWdlIHByb3BlcnRpZXNcbiAgICogYW5kIHVwZGF0ZSBgbWluQmFuZHNWYWx1ZWAgYW5kIGBtYXhCYW5kc1ZhbHVlYFxuICAgKiBAcGFyYW0gaW1hZ2VzIC0gcmFzdGVyIGJhbmQgaW1hZ2UgcHJvcGVydGllc1xuICAgKiBAcmV0dXJuIFttaW4sIG1heF0gcGl4ZWwgdmFsdWVzIGZvciB0aGUgdGlsZVxuICAgKi9cbiAgZ2V0TWluTWF4UGl4ZWxWYWx1ZXMoaW1hZ2VzOiBUZXh0dXJlMkRQcm9wc1tdIHwgbnVsbCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGxldCBtaW5QaXhlbFZhbHVlID0gSW5maW5pdHk7XG4gICAgbGV0IG1heFBpeGVsVmFsdWUgPSAtSW5maW5pdHk7XG4gICAgaWYgKGltYWdlcykge1xuICAgICAgZm9yIChjb25zdCBpbWFnZSBvZiBpbWFnZXMpIHtcbiAgICAgICAgY29uc3QgW21pbiwgbWF4XSA9IGdldEltYWdlTWluTWF4KGltYWdlLmRhdGEpO1xuICAgICAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBtaW5QaXhlbFZhbHVlID0gTWF0aC5taW4obWluLCBtaW5QaXhlbFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBtYXhQaXhlbFZhbHVlID0gTWF0aC5tYXgobWF4LCBtYXhQaXhlbFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW21pblBpeGVsVmFsdWUsIG1heFBpeGVsVmFsdWVdO1xuICB9XG5cbiAgLy8gZ2VuZXJhdGUgYSBkZWNrIGxheWVyXG4gIHJlbmRlckxheWVyKG9wdHMpOiBUaWxlTGF5ZXI8YW55PltdIHtcbiAgICBjb25zdCB7ZGF0YX0gPSBvcHRzO1xuXG4gICAgaWYgKGRhdGE/LmRhdGFzZXQ/Lm1ldGFkYXRhPy5wbXRpbGVzVHlwZSA9PT0gUE1UaWxlc1R5cGUuUkFTVEVSKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJQTVRpbGVzTGF5ZXIob3B0cyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlbmRlclN0YWNMYXllcihvcHRzKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyU3RhY0xheWVyKG9wdHMpOiBUaWxlTGF5ZXI8YW55PltdIHtcbiAgICBjb25zdCB7ZGF0YSwgbWFwU3RhdGV9ID0gb3B0cztcbiAgICBjb25zdCBzdGFjID0gZGF0YT8uZGF0YXNldD8ubWV0YWRhdGEgYXMgR2V0VGlsZURhdGFDdXN0b21Qcm9wc1snc3RhYyddO1xuXG4gICAgLy8gSWYgYSB0YWJ1bGFyIGRhdGFzZXQgaXMgbG9hZGVkLCBhbmQgdGhlbiB0aGUgbGF5ZXIgdHlwZSBpcyBzd2l0Y2hlZCBmcm9tIFBvaW50IHRvIFJhc3RlciBUaWxlXG4gICAgLy8gbGF5ZXIsIHRoaXMgYHN0YWNgIG9iamVjdCB3aWxsIGV4aXN0IGJ1dCB3aWxsIG5vdCBiZSByYXN0ZXIgbWV0YWRhdGFcbiAgICBpZiAoIXN0YWMgfHwgIXN0YWMuc3RhY192ZXJzaW9uKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB7aWQsIG9wYWNpdHksIHZpc2libGV9ID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG5cbiAgICBjb25zdCB7XG4gICAgICBwcmVzZXQsXG4gICAgICBjb2xvcm1hcElkLFxuICAgICAgbGluZWFyUmVzY2FsaW5nLFxuICAgICAgbGluZWFyUmVzY2FsaW5nRmFjdG9yLFxuICAgICAgbm9uTGluZWFyUmVzY2FsaW5nLFxuICAgICAgZ2FtbWFDb250cmFzdEZhY3RvcixcbiAgICAgIHNpZ21vaWRhbENvbnRyYXN0RmFjdG9yLFxuICAgICAgc2lnbW9pZGFsQmlhc0ZhY3RvcixcbiAgICAgIHNhdHVyYXRpb25WYWx1ZSxcbiAgICAgIGZpbHRlckVuYWJsZWQsXG4gICAgICBmaWx0ZXJSYW5nZSxcbiAgICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgICAgX3N0YWNRdWVyeSxcbiAgICAgIHNpbmdsZUJhbmROYW1lLFxuICAgICAgY29sb3JSYW5nZToge2NvbG9yTWFwOiBjYXRlZ29yaWNhbENvbG9yTWFwfSxcbiAgICAgIGR5bmFtaWNDb2xvclxuICAgIH0gPSB2aXNDb25maWc7XG5cbiAgICBjb25zdCBzaG91bGRMb2FkVGVycmFpbiA9IGdldFNob3VsZExvYWRUZXJyYWluKHN0YWMsIG1hcFN0YXRlLCB2aXNDb25maWcpO1xuXG4gICAgaWYgKG5ldyBEYXRlKGVuZERhdGUpIDwgbmV3IERhdGUoc3RhcnREYXRlKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHtiYW5kQ29tYmluYXRpb259ID0gUFJFU0VUX09QVElPTlNbcHJlc2V0XTtcblxuICAgIGNvbnN0IHNpbmdsZUJhbmQgPSBnZXRTaW5nbGVCYW5kUHJlc2V0T3B0aW9ucyhzdGFjLCBzaW5nbGVCYW5kTmFtZSk7XG4gICAgY29uc3QgZGF0YVNvdXJjZVBhcmFtczogRGF0YVNvdXJjZVBhcmFtcyB8IG51bGwgPSB0aGlzLmdldERhdGFTb3VyY2VQYXJhbXMoc3RhYywgcHJlc2V0LCB7XG4gICAgICBzaW5nbGVCYW5kXG4gICAgfSk7XG5cbiAgICBpZiAoIWRhdGFTb3VyY2VQYXJhbXMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBtaW5ab29tLFxuICAgICAgbWF4Wm9vbSxcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIGxvYWRBc3NldElkcyxcbiAgICAgIGxvYWRCYW5kSW5kZXhlcyxcbiAgICAgIHJlbmRlckJhbmRJbmRleGVzLFxuICAgICAgZGF0YVR5cGUsXG4gICAgICBtaW5QaXhlbFZhbHVlOiBkc01pblBpeGVsVmFsdWUsXG4gICAgICBtYXhQaXhlbFZhbHVlOiBkc01heFBpeGVsVmFsdWUsXG4gICAgICBtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlXG4gICAgfSA9IGRhdGFTb3VyY2VQYXJhbXM7XG5cbiAgICBjb25zdCBtaW5QaXhlbFZhbHVlID1cbiAgICAgICFkeW5hbWljQ29sb3IgJiYgTnVtYmVyLmlzRmluaXRlKGRzTWluUGl4ZWxWYWx1ZSlcbiAgICAgICAgPyBkc01pblBpeGVsVmFsdWVcbiAgICAgICAgOiB0aGlzLm1pblZpZXdwb3J0UGl4ZWxWYWx1ZTtcbiAgICBjb25zdCBtYXhQaXhlbFZhbHVlID1cbiAgICAgICFkeW5hbWljQ29sb3IgJiYgTnVtYmVyLmlzRmluaXRlKGRzTWF4UGl4ZWxWYWx1ZSlcbiAgICAgICAgPyBkc01heFBpeGVsVmFsdWVcbiAgICAgICAgOiB0aGlzLm1heFZpZXdwb3J0UGl4ZWxWYWx1ZTtcblxuICAgIGNvbnN0IGdldFRpbGVEYXRhQ3VzdG9tUHJvcHM6IEdldFRpbGVEYXRhQ3VzdG9tUHJvcHMgPSB7XG4gICAgICBzdGFjLFxuICAgICAgbG9hZEFzc2V0SWRzLFxuICAgICAgbG9hZEJhbmRJbmRleGVzLFxuICAgICAgY29sb3JtYXBJZCxcbiAgICAgIHNob3VsZExvYWRUZXJyYWluLFxuICAgICAgZ2xvYmFsQm91bmRzLFxuICAgICAgdXNlU1RBQ1NlYXJjaGluZyxcbiAgICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgICBfc3RhY1F1ZXJ5LFxuICAgICAgY2F0ZWdvcmljYWxDb2xvck1hcCxcbiAgICAgIG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlLFxuICAgICAgbWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWVcbiAgICB9O1xuXG4gICAgY29uc3QgdGlsZUxheWVyID0gbmV3IFRpbGVMYXllcjxhbnksIFJlbmRlclN1YkxheWVyc1Byb3BzPih7XG4gICAgICBpZCxcbiAgICAgIG1pblpvb20sXG4gICAgICBtYXhab29tLFxuICAgICAgdGlsZVNpemU6IDUxMiAvIGRldmljZVBpeGVsUmF0aW8sXG4gICAgICBnZXRUaWxlRGF0YTogKGFyZ3M6IGFueSkgPT4gdGhpcy5nZXRUaWxlRGF0YSh7Li4uYXJncywgLi4uZ2V0VGlsZURhdGFDdXN0b21Qcm9wc30pLFxuICAgICAgb25WaWV3cG9ydExvYWQ6IHRoaXMub25WaWV3cG9ydExvYWQuYmluZCh0aGlzKSxcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBUUyBkb2Vzbid0IGtub3cgd2UnbGwgcGFzcyBhcHByb3ByaWF0ZSBwcm9wcyBoZXJlXG4gICAgICByZW5kZXJTdWJMYXllcnM6IHJlbmRlclN1YkxheWVyc1N0YWMsXG4gICAgICBtYXhSZXF1ZXN0czogZ2V0TWF4UmVxdWVzdHMoc3RhYy5yYXN0ZXJUaWxlU2VydmVyVXJscyB8fCBbXSksXG4gICAgICAvLyBQYXNzaW5nIHZpc2libGUgb24gdG8gVGlsZUxheWVyIGlzIG5lY2Vzc2FyeSBmb3Igc3BsaXQgdmlldyB0byB3b3JrXG4gICAgICB2aXNpYmxlLFxuICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgZ2V0VGlsZURhdGE6IFtcbiAgICAgICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgICAgICAvLyBDb2xvcm1hcCBoYXMgY2hhbmdlZFxuICAgICAgICAgIGNvbG9ybWFwSWQsXG4gICAgICAgICAgLy8gYXNzZXRzIHRvIGJlIGxvYWRlZCBoYXMgY2hhbmdlZFxuICAgICAgICAgIC4uLmxvYWRBc3NldElkcyxcbiAgICAgICAgICAvLyBiYW5kIGluZGV4ZXMgdG8gYmUgbG9hZGVkIGhhcyBjaGFuZ2VkXG4gICAgICAgICAgLi4ubG9hZEJhbmRJbmRleGVzLFxuICAgICAgICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgICAgICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgICAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgICAgICBlbmREYXRlLFxuICAgICAgICAgIF9zdGFjUXVlcnksXG4gICAgICAgICAgY2F0ZWdvcmljYWxDb2xvck1hcCxcbiAgICAgICAgICBtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgICAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gUHJvcHMgZm9yIDNEIG1vZGVcbiAgICAgIC4uLihzaG91bGRMb2FkVGVycmFpblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHpSYW5nZTogdGhpcy5tZXRhLnpSYW5nZSB8fCBudWxsLFxuICAgICAgICAgICAgcmVmaW5lbWVudFN0cmF0ZWd5OiAnbm8tb3ZlcmxhcCdcbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgICAgcmVuZGVyQmFuZEluZGV4ZXMsXG4gICAgICBvcGFjaXR5LFxuICAgICAgbGluZWFyUmVzY2FsaW5nLFxuICAgICAgbGluZWFyUmVzY2FsaW5nRmFjdG9yLFxuICAgICAgbm9uTGluZWFyUmVzY2FsaW5nLFxuICAgICAgbWluUGl4ZWxWYWx1ZSxcbiAgICAgIG1heFBpeGVsVmFsdWUsXG4gICAgICBnYW1tYUNvbnRyYXN0RmFjdG9yLFxuICAgICAgc2lnbW9pZGFsQ29udHJhc3RGYWN0b3IsXG4gICAgICBzaWdtb2lkYWxCaWFzRmFjdG9yLFxuICAgICAgc2F0dXJhdGlvblZhbHVlLFxuICAgICAgYmFuZENvbWJpbmF0aW9uLFxuICAgICAgZmlsdGVyRW5hYmxlZCxcbiAgICAgIGZpbHRlclJhbmdlLFxuICAgICAgZGF0YVR5cGUsXG4gICAgICBtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlLFxuICAgICAgaGFzQ2F0ZWdvcmljYWxDb2xvck1hcDogQm9vbGVhbihjYXRlZ29yaWNhbENvbG9yTWFwKVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFt0aWxlTGF5ZXJdO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJQTVRpbGVzTGF5ZXIob3B0cyk6IFRpbGVMYXllcjxhbnk+W10ge1xuICAgIGNvbnN0IHtpZCwgb3BhY2l0eSwgdmlzaWJsZX0gPSB0aGlzLmdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyhvcHRzKTtcblxuICAgIGNvbnN0IHtkYXRhLCBtYXBTdGF0ZX0gPSBvcHRzO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gZGF0YT8uZGF0YXNldD8ubWV0YWRhdGEgYXMgVmVjdG9yVGlsZU1ldGFkYXRhO1xuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG5cbiAgICBjb25zdCB0aWxlU291cmNlID0gZGF0YS50aWxlU291cmNlO1xuICAgIGNvbnN0IHNob3dUaWxlQm9yZGVycyA9IGZhbHNlO1xuICAgIGNvbnN0IG1pblpvb20gPSBtZXRhZGF0YS5taW5ab29tIHx8IDA7XG4gICAgY29uc3QgbWF4Wm9vbSA9IG1ldGFkYXRhLm1heFpvb20gfHwgMzA7XG5cbiAgICBjb25zdCBzaG91bGRMb2FkVGVycmFpbiA9IGdldFNob3VsZExvYWRUZXJyYWluKG1ldGFkYXRhLCBtYXBTdGF0ZSwgdmlzQ29uZmlnKTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgVGlsZUxheWVyPGFueSwgUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnQ29tbW9uU2V0dGluZ3M+KHtcbiAgICAgICAgaWQsXG4gICAgICAgIGdldFRpbGVEYXRhOiAoYXJnczogYW55KSA9PlxuICAgICAgICAgIHRoaXMuZ2V0VGlsZURhdGFQTVRpbGVzKHsuLi5hcmdzLCBzaG91bGRMb2FkVGVycmFpbiwgbWV0YWRhdGF9LCB0aWxlU291cmNlKSxcblxuICAgICAgICAvLyBBc3N1bWUgdGhlIHBtdGlsZXMgZmlsZSBzdXBwb3J0IEhUVFAvMiwgc28gd2UgYXJlbid0IGxpbWl0ZWQgYnkgdGhlIGJyb3dzZXIgdG8gYSBjZXJ0YWluIG51bWJlciBwZXIgZG9tYWluLlxuICAgICAgICBtYXhSZXF1ZXN0czogMjAsXG5cbiAgICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICAgIGF1dG9IaWdobGlnaHQ6IHNob3dUaWxlQm9yZGVycyxcblxuICAgICAgICBvblZpZXdwb3J0TG9hZDogdGhpcy5vblZpZXdwb3J0TG9hZC5iaW5kKHRoaXMpLFxuXG4gICAgICAgIG1pblpvb20sXG4gICAgICAgIG1heFpvb20sXG4gICAgICAgIHRpbGVTaXplOiA1MTIgLyBkZXZpY2VQaXhlbFJhdGlvLFxuICAgICAgICB6b29tT2Zmc2V0OiBkZXZpY2VQaXhlbFJhdGlvID09PSAxID8gLTEgOiAwLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gVFMgZG9lc24ndCBrbm93IHdlJ2xsIHBhc3MgYXBwcm9wcmlhdGUgcHJvcHMgaGVyZVxuICAgICAgICByZW5kZXJTdWJMYXllcnM6IHJlbmRlclN1YkxheWVyc1BNVGlsZXMsXG5cbiAgICAgICAgdGlsZVNvdXJjZSxcbiAgICAgICAgc2hvd1RpbGVCb3JkZXJzLFxuXG4gICAgICAgIHZpc2libGUsXG4gICAgICAgIG9wYWNpdHksXG5cbiAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICBnZXRUaWxlRGF0YTogW3Nob3VsZExvYWRUZXJyYWluXVxuICAgICAgICB9LFxuICAgICAgICAvLyBQcm9wcyBmb3IgM0QgbW9kZVxuICAgICAgICAuLi4oc2hvdWxkTG9hZFRlcnJhaW5cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgelJhbmdlOiB0aGlzLm1ldGEuelJhbmdlIHx8IG51bGwsXG4gICAgICAgICAgICAgIHJlZmluZW1lbnRTdHJhdGVneTogJ25vLW92ZXJsYXAnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSlcbiAgICAgIH0pXG4gICAgXTtcbiAgfVxuXG4gIGFzeW5jIGdldFRpbGVEYXRhKHByb3BzOiBHZXRUaWxlRGF0YVByb3BzKTogUHJvbWlzZTxHZXRUaWxlRGF0YU91dHB1dD4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHNob3VsZExvYWRUZXJyYWluLFxuICAgICAgZ2xvYmFsQm91bmRzLFxuICAgICAgYmJveDoge3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aH0sXG4gICAgICBpbmRleDoge3o6IHpvb219XG4gICAgfSA9IHByb3BzO1xuXG4gICAgaWYgKGdsb2JhbEJvdW5kcyAmJiAhYmJveEludGVyc2VjdHMoZ2xvYmFsQm91bmRzLCBbd2VzdCwgc291dGgsIGVhc3QsIG5vcnRoXSkpIHtcbiAgICAgIC8vIHRpbGUgaXMgb3V0c2lkZSBvZiBTVEFDIG9iamVjdCdzIGJvdW5kaW5nIGJveDsgZG9uJ3QgZmV0Y2ggdGlsZVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXRSZXF1ZXN0cyA9IGF3YWl0IGdldFNUQUNJbWFnZVJlcXVlc3RzKHByb3BzKTtcbiAgICAvLyBObyBhc3NldHMgdG8gbG9hZCwgbW9zdCBsaWtlbHkgZHVlIHRvIHByb3BzIGJlaW5nIGludmFsaWQvdW5zdXBwb3J0ZWRcbiAgICBpZiAoIWFzc2V0UmVxdWVzdHMpIHtcbiAgICAgIC8vIFdlIHN0aWxsIGlzc3VlIHRoZSBsb2FkVGVycmFpbiByZXF1ZXN0IGlmIGFwcGxpY2FibGVcbiAgICAgIGNvbnN0IHRlcnJhaW4gPVxuICAgICAgICBzaG91bGRMb2FkVGVycmFpbiAmJlxuICAgICAgICBMT0FEX0VMRVZBVElPTl9BRlRFUl9aT09NIDwgem9vbSAmJlxuICAgICAgICAoYXdhaXQgbG9hZFRlcnJhaW4oe1xuICAgICAgICAgIGluZGV4OiBwcm9wcy5pbmRleCxcbiAgICAgICAgICBzaWduYWw6IHByb3BzLnNpZ25hbCxcbiAgICAgICAgICByYXN0ZXJUaWxlU2VydmVyVXJsczogcHJvcHMuc3RhYy5yYXN0ZXJUaWxlU2VydmVyVXJscyB8fCBbXVxuICAgICAgICB9KSk7XG4gICAgICByZXR1cm4ge2ltYWdlczogbnVsbCwgLi4uKHRlcnJhaW4gPyB7dGVycmFpbn0gOiB7fSl9O1xuICAgIH1cblxuICAgIHRpbGVzQmVpbmdMb2FkZWQrKztcblxuICAgIC8vIFdyYXAgbG9hZGluZyBpbWFnZXMgaW50byBhIHRyeS9jYXRjaCBiZWNhdXNlIHRpbGVzIHRoYXQgYXJlIG9ubHkgYnJpZWZseSBpbiB2aWV3IHdpbGwgYmVcbiAgICAvLyBhYm9ydGVkLiBUaGUgYEFib3J0Q29udHJvbGxlci5hYm9ydCgpYCBjcmVhdGVzIGEgRE9NRXhjZXB0aW9uIGVycm9yLlxuICAgIC8vIE5vdGUgdGhhdCBzaW5jZSBsb2FkaW5nIGlzIGFzeW5jLCB0cnkvY2F0Y2ggd2lsbCBvbmx5IHdvcmsgd2hlbiBhd2FpdGVkIGluc2lkZSB0aGUgdHJ5IGJsb2NrXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFtpbWFnZXMsIHRlcnJhaW5dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBsb2FkSW1hZ2VzKGFzc2V0UmVxdWVzdHMsIHByb3BzLmNvbG9ybWFwSWQsIHtcbiAgICAgICAgICBjb2xvck1hcDogcHJvcHMuY2F0ZWdvcmljYWxDb2xvck1hcCxcbiAgICAgICAgICBtaW5WYWx1ZTogcHJvcHMubWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICAgICAgbWF4VmFsdWU6IHByb3BzLm1heENhdGVnb3JpY2FsQmFuZFZhbHVlXG4gICAgICAgIH0pLFxuICAgICAgICBzaG91bGRMb2FkVGVycmFpbiAmJiBMT0FEX0VMRVZBVElPTl9BRlRFUl9aT09NIDwgem9vbVxuICAgICAgICAgID8gbG9hZFRlcnJhaW4oe1xuICAgICAgICAgICAgICBpbmRleDogcHJvcHMuaW5kZXgsXG4gICAgICAgICAgICAgIHNpZ25hbDogcHJvcHMuc2lnbmFsLFxuICAgICAgICAgICAgICByYXN0ZXJUaWxlU2VydmVyVXJsczogcHJvcHMuc3RhYy5yYXN0ZXJUaWxlU2VydmVyVXJscyB8fCBbXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IG51bGxcbiAgICAgIF0pO1xuXG4gICAgICBjb25zdCBbbWluLCBtYXhdID0gdGhpcy5nZXRNaW5NYXhQaXhlbFZhbHVlcyhpbWFnZXMuaW1hZ2VCYW5kcyk7XG4gICAgICB0aWxlc0JlaW5nTG9hZGVkLS07XG5cbiAgICAgIC8vIEFkZCB0ZXJyYWluIGRhdGEgb25seSBpZiB3ZSByZXF1ZXN0ZWQgaXQgYWJvdmVcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGltYWdlcyxcbiAgICAgICAgLi4uKHRlcnJhaW4gPyB7dGVycmFpbn0gOiB7fSksXG4gICAgICAgIG1pblBpeGVsVmFsdWU6IG1pbixcbiAgICAgICAgbWF4UGl4ZWxWYWx1ZTogbWF4XG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aWxlc0JlaW5nTG9hZGVkLS07XG4gICAgICBpZiAoKGVycm9yIGFzIGFueSkubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgIC8vIHRpbGUgd2FzIGFib3J0ZWRcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIFNvbWUgb3RoZXIgdW5oYW5kbGVkIGVycm9yXG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRUaWxlRGF0YVBNVGlsZXMoXG4gICAgcHJvcHM6IEdldFRpbGVEYXRhRGVmYXVsdFByb3BzICYge1xuICAgICAgc2hvdWxkTG9hZFRlcnJhaW46IGJvb2xlYW47XG4gICAgICBtZXRhZGF0YToge3Jhc3RlclRpbGVTZXJ2ZXJVcmxzOiBzdHJpbmdbXX07XG4gICAgICBnbG9iYWxCb3VuZHM6IERhdGFTb3VyY2VQYXJhbXNbJ2dsb2JhbEJvdW5kcyddO1xuICAgIH0sXG4gICAgdGlsZVNvdXJjZVxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHNob3VsZExvYWRUZXJyYWluLFxuICAgICAgZ2xvYmFsQm91bmRzLFxuICAgICAgYmJveDoge3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aH0sXG4gICAgICBpbmRleDoge3o6IHpvb219LFxuICAgICAgbWV0YWRhdGFcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBpZiAoZ2xvYmFsQm91bmRzICYmICFiYm94SW50ZXJzZWN0cyhnbG9iYWxCb3VuZHMsIFt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGhdKSkge1xuICAgICAgLy8gdGlsZSBpcyBvdXRzaWRlIG9mIFNUQUMgb2JqZWN0J3MgYm91bmRpbmcgYm94OyBkb24ndCBmZXRjaCB0aWxlXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aWxlc0JlaW5nTG9hZGVkKys7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgW2ltYWdlXSA9IGF3YWl0IFByb21pc2UuYWxsKFt0aWxlU291cmNlLmdldFRpbGVEYXRhKHByb3BzKV0pO1xuICAgICAgLy8gRm9yIG53byBjaGVjayBpZiB0aGUgYmFzZSB0aWxlIGV4aXN0cywgYXMgdGhpcyBjYW4gY2F1c2UgbG9hZGluZyB0byBnZXQgc3R1Y2sgd2l0aCBcInNwYXJzZVwiIFBNVGlsZXMuXG4gICAgICBjb25zdCB0ZXJyYWluID1cbiAgICAgICAgaW1hZ2UgJiYgc2hvdWxkTG9hZFRlcnJhaW4gJiYgTE9BRF9FTEVWQVRJT05fQUZURVJfWk9PTSA8IHpvb21cbiAgICAgICAgICA/IGF3YWl0IGxvYWRUZXJyYWluKHtcbiAgICAgICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICAgICAgICBzaWduYWw6IHByb3BzLnNpZ25hbCxcbiAgICAgICAgICAgICAgcmFzdGVyVGlsZVNlcnZlclVybHM6IG1ldGFkYXRhLnJhc3RlclRpbGVTZXJ2ZXJVcmxzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogbnVsbDtcblxuICAgICAgbGV0IG1pblBpeGVsVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgbGV0IG1heFBpeGVsVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgaWYgKGltYWdlKSB7XG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSB0aGlzLmdldE1pbk1heFBpeGVsVmFsdWVzKFt7ZGF0YTogaW1hZ2V9XSk7XG4gICAgICAgIG1pblBpeGVsVmFsdWUgPSBtaW47XG4gICAgICAgIG1heFBpeGVsVmFsdWUgPSBtYXg7XG4gICAgICB9XG4gICAgICB0aWxlc0JlaW5nTG9hZGVkLS07XG5cbiAgICAgIC8vIEFkZCB0ZXJyYWluIGRhdGEgb25seSBpZiB3ZSByZXF1ZXN0ZWQgaXQgYWJvdmVcbiAgICAgIHJldHVybiB7aW1hZ2UsIG1pblBpeGVsVmFsdWUsIG1heFBpeGVsVmFsdWUsIC4uLih0ZXJyYWluID8ge3RlcnJhaW59IDoge30pfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuXG4gICAgICBpZiAoKGVycm9yIGFzIEVycm9yKS5uYW1lID09PSAnQWJvcnRFcnJvcicpIHtcbiAgICAgICAgLy8gdGlsZSB3YXMgYWJvcnRlZFxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gU29tZSBvdGhlciB1bmhhbmRsZWQgZXJyb3JcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJTdWJMYXllcnNTdGFjKHByb3BzOiBSZW5kZXJTdWJMYXllcnNQcm9wcyk6IERlY2tMYXllcjxhbnk+IHwgRGVja0xheWVyPGFueT5bXSB7XG4gIGNvbnN0IHtcbiAgICB0aWxlLFxuICAgIGRhdGEsXG4gICAgbWluUGl4ZWxWYWx1ZTogZ2xvYmFsTWluUGl4ZWxWYWx1ZSxcbiAgICBtYXhQaXhlbFZhbHVlOiBnbG9iYWxNYXhQaXhlbFZhbHVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgYmJveCA9IHRpbGUuYmJveCBhcyBHZW9Cb3VuZGluZ0JveDtcbiAgY29uc3Qge3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aH0gPSBiYm94O1xuXG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpbWFnZXMsXG4gICAgdGVycmFpbixcbiAgICBtaW5QaXhlbFZhbHVlOiB0aWxlTWluUGl4ZWxWYWx1ZSxcbiAgICBtYXhQaXhlbFZhbHVlOiB0aWxlTWF4UGl4ZWxWYWx1ZVxuICB9ID0gZGF0YTtcbiAgaWYgKCFpbWFnZXMgfHwgKEFycmF5LmlzQXJyYXkoaW1hZ2VzKSAmJiBpbWFnZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IG1pblBpeGVsVmFsdWUgPSBOdW1iZXIuaXNGaW5pdGUoZ2xvYmFsTWluUGl4ZWxWYWx1ZSlcbiAgICA/IGdsb2JhbE1pblBpeGVsVmFsdWVcbiAgICA6IHRpbGVNaW5QaXhlbFZhbHVlO1xuICBjb25zdCBtYXhQaXhlbFZhbHVlID0gTnVtYmVyLmlzRmluaXRlKGdsb2JhbE1heFBpeGVsVmFsdWUpXG4gICAgPyBnbG9iYWxNYXhQaXhlbFZhbHVlXG4gICAgOiB0aWxlTWF4UGl4ZWxWYWx1ZTtcbiAgaWYgKHR5cGVvZiBtaW5QaXhlbFZhbHVlICE9PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4UGl4ZWxWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCB7bW9kdWxlcywgbW9kdWxlUHJvcHN9ID0gZ2V0TW9kdWxlcyh7XG4gICAgaW1hZ2VzLFxuICAgIHByb3BzOiB7Li4ucHJvcHMsIG1pblBpeGVsVmFsdWUsIG1heFBpeGVsVmFsdWV9XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJyYWluXG4gICAgPyBuZXcgUmFzdGVyTWVzaExheWVyKHByb3BzLCB7XG4gICAgICAgIGlkOiBgcmFzdGVyLTNkLWxheWVyLSR7cHJvcHMuaWR9YCxcbiAgICAgICAgLy8gRHVtbXkgZGF0YVxuICAgICAgICBkYXRhOiBbMV0sXG4gICAgICAgIG1lc2g6IHRlcnJhaW4sXG4gICAgICAgIGltYWdlcyxcbiAgICAgICAgbW9kdWxlcyxcbiAgICAgICAgbW9kdWxlUHJvcHMsXG5cbiAgICAgICAgZ2V0UG9seWdvbk9mZnNldDogbnVsbCxcbiAgICAgICAgY29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uQ0FSVEVTSUFOLFxuICAgICAgICBtb2RlbE1hdHJpeDogZ2V0TWVyY2F0b3JNb2RlbE1hdHJpeCh0aWxlLmluZGV4KSxcbiAgICAgICAgZ2V0UG9zaXRpb246ICgpID0+IFswLCAwLCAwXSxcbiAgICAgICAgLy8gQ29sb3IgdG8gdXNlIGlmIHN1cmZhY2VJbWFnZSBpcyB1bmF2YWlsYWJsZVxuICAgICAgICBnZXRDb2xvcjogWzI1NSwgMjU1LCAyNTVdXG4gICAgICAgIC8vIG1hdGVyaWFsOiBmYWxzZVxuICAgICAgfSlcbiAgICA6IG5ldyBSYXN0ZXJMYXllcihwcm9wcywge1xuICAgICAgICBpZDogYHJhc3Rlci0yZC1sYXllci0ke3Byb3BzLmlkfWAsXG4gICAgICAgIGltYWdlcyxcbiAgICAgICAgbW9kdWxlcyxcbiAgICAgICAgbW9kdWxlUHJvcHMsXG4gICAgICAgIGJvdW5kczogW3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aF0sXG4gICAgICAgIF9pbWFnZUNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTlxuICAgICAgfSk7XG59XG5cbi8vIEZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ViZXIvZGVjay5nbC9ibG9iL2IxOTAxYjExY2JkY2I4MmIzMTdlMTU3OWZmMjM2ZDFjYTFkMDNlYTcvbW9kdWxlcy9nZW8tbGF5ZXJzL3NyYy9tdnQtdGlsZS1sYXllci9tdnQtdGlsZS1sYXllci5qcyNMNDEtTDUyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVyY2F0b3JNb2RlbE1hdHJpeCh0aWxlOiB7eDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcn0pOiBNYXRyaXg0IHtcbiAgY29uc3QgV09STERfU0laRSA9IDUxMjtcbiAgY29uc3Qgd29ybGRTY2FsZSA9IE1hdGgucG93KDIsIHRpbGUueik7XG5cbiAgY29uc3QgeFNjYWxlID0gV09STERfU0laRSAvIHdvcmxkU2NhbGU7XG4gIGNvbnN0IHlTY2FsZSA9IC14U2NhbGU7XG5cbiAgY29uc3QgeE9mZnNldCA9IChXT1JMRF9TSVpFICogdGlsZS54KSAvIHdvcmxkU2NhbGU7XG4gIGNvbnN0IHlPZmZzZXQgPSBXT1JMRF9TSVpFICogKDEgLSB0aWxlLnkgLyB3b3JsZFNjYWxlKTtcblxuICByZXR1cm4gbmV3IE1hdHJpeDQoKS50cmFuc2xhdGUoW3hPZmZzZXQsIHlPZmZzZXQsIDBdKS5zY2FsZShbeFNjYWxlLCB5U2NhbGUsIDFdKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyU3ViTGF5ZXJzUE1UaWxlcyhwcm9wczoge1xuICBpZDogc3RyaW5nO1xuICBkYXRhOiBhbnk7XG4gIHRpbGVTb3VyY2U6IGFueTtcbiAgc2hvd1RpbGVCb3JkZXJzOiBhbnk7XG4gIG1pblpvb206IGFueTtcbiAgbWF4Wm9vbTogYW55O1xuICB0aWxlOiBhbnk7XG59KSB7XG4gIGNvbnN0IHtcbiAgICB0aWxlU291cmNlLFxuICAgIHNob3dUaWxlQm9yZGVycyxcbiAgICBtaW5ab29tLFxuICAgIG1heFpvb20sXG4gICAgdGlsZToge1xuICAgICAgaW5kZXg6IHt6OiB6b29tfSxcbiAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9XG4gICAgfVxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgbGF5ZXJzOiBhbnlbXSA9IFtdO1xuXG4gIGlmIChwcm9wcy5kYXRhPy5pbWFnZSkge1xuICAgIHN3aXRjaCAodGlsZVNvdXJjZS5taW1lVHlwZSkge1xuICAgICAgY2FzZSAnaW1hZ2UvcG5nJzpcbiAgICAgIGNhc2UgJ2ltYWdlL2pwZWcnOlxuICAgICAgY2FzZSAnaW1hZ2Uvd2VicCc6XG4gICAgICBjYXNlICdpbWFnZS9hdmlmJzpcbiAgICAgICAgbGF5ZXJzLnB1c2goZ2V0UmFzdGVyTGF5ZXJQTVRpbGVzKHByb3BzKSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBEZWJ1ZyB0aWxlIGJvcmRlcnNcbiAgY29uc3QgYm9yZGVyQ29sb3IgPSB6b29tIDw9IG1pblpvb20gfHwgem9vbSA+PSBtYXhab29tID8gWzI1NSwgMCwgMCwgMjU1XSA6IFswLCAwLCAyNTUsIDI1NV07XG4gIGlmIChzaG93VGlsZUJvcmRlcnMpIHtcbiAgICBsYXllcnMucHVzaChcbiAgICAgIG5ldyBQYXRoTGF5ZXIoe1xuICAgICAgICBpZDogYCR7cHJvcHMuaWR9LWJvcmRlcmAsXG4gICAgICAgIGRhdGE6IFtcbiAgICAgICAgICBbXG4gICAgICAgICAgICBbd2VzdCwgbm9ydGhdLFxuICAgICAgICAgICAgW3dlc3QsIHNvdXRoXSxcbiAgICAgICAgICAgIFtlYXN0LCBzb3V0aF0sXG4gICAgICAgICAgICBbZWFzdCwgbm9ydGhdLFxuICAgICAgICAgICAgW3dlc3QsIG5vcnRoXVxuICAgICAgICAgIF1cbiAgICAgICAgXSxcbiAgICAgICAgZ2V0UGF0aDogZCA9PiBkLFxuICAgICAgICBnZXRDb2xvcjogYm9yZGVyQ29sb3IgYXMgYW55LFxuICAgICAgICB3aWR0aE1pblBpeGVsczogNFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGxheWVycztcbn1cblxuZnVuY3Rpb24gZ2V0UmFzdGVyTGF5ZXJQTVRpbGVzKHByb3BzOiB7aWQ6IHN0cmluZzsgZGF0YTogYW55OyB0aWxlOiBhbnl9KSB7XG4gIGNvbnN0IHt0aWxlLCBkYXRhfSA9IHByb3BzO1xuICBjb25zdCBiYm94ID0gdGlsZS5iYm94IGFzIEdlb0JvdW5kaW5nQm94O1xuICBjb25zdCB7d2VzdCwgc291dGgsIGVhc3QsIG5vcnRofSA9IGJib3g7XG5cbiAgaWYgKCFkYXRhPy5pbWFnZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGltYWdlcyA9IHtpbWFnZVJnYmE6IHtkYXRhOiBkYXRhLmltYWdlfX07XG4gIGNvbnN0IHt0ZXJyYWlufSA9IGRhdGE7XG5cbiAgY29uc3Qge21vZHVsZXMsIG1vZHVsZVByb3BzfSA9IGdldE1vZHVsZXMoe1xuICAgIGltYWdlc1xuICB9KTtcblxuICByZXR1cm4gdGVycmFpblxuICAgID8gbmV3IFJhc3Rlck1lc2hMYXllcihwcm9wcywge1xuICAgICAgICBpZDogYHJhc3Rlci0zZC1sYXllci0ke3Byb3BzLmlkfWAsXG4gICAgICAgIC8vIER1bW15IGRhdGFcbiAgICAgICAgZGF0YTogWzFdLFxuICAgICAgICBtZXNoOiB0ZXJyYWluLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIG1vZHVsZXMsXG4gICAgICAgIG1vZHVsZVByb3BzLFxuXG4gICAgICAgIGdldFBvbHlnb25PZmZzZXQ6IG51bGwsXG4gICAgICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICAgICAgbW9kZWxNYXRyaXg6IGdldE1lcmNhdG9yTW9kZWxNYXRyaXgodGlsZS5pbmRleCksXG4gICAgICAgIGdldFBvc2l0aW9uOiAoKSA9PiBbMCwgMCwgMF0sXG4gICAgICAgIC8vIENvbG9yIHRvIHVzZSBpZiBzdXJmYWNlSW1hZ2UgaXMgdW5hdmFpbGFibGVcbiAgICAgICAgZ2V0Q29sb3I6IFsyNTUsIDI1NSwgMjU1XVxuICAgICAgICAvLyBtYXRlcmlhbDogZmFsc2VcbiAgICAgIH0pXG4gICAgOiBuZXcgUmFzdGVyTGF5ZXIocHJvcHMsIHtcbiAgICAgICAgaWQ6IGByYXN0ZXItMmQtbGF5ZXItJHtwcm9wcy5pZH1gLFxuICAgICAgICBkYXRhOiBudWxsIGFzIG5ldmVyLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIG1vZHVsZXMsXG4gICAgICAgIG1vZHVsZVByb3BzLFxuICAgICAgICBib3VuZHM6IFt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGhdLFxuICAgICAgICBfaW1hZ2VDb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU5cbiAgICAgIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLE9BQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtBQWNBLElBQUFTLFlBQUEsR0FBQVQsT0FBQTtBQUVBLElBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUVBLElBQUFXLE9BQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLFNBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLE1BQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLGVBQUEsR0FBQVYsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFlLGdCQUFBLEdBQUFmLE9BQUE7QUEwQkEsSUFBQWdCLFVBQUEsR0FBQVosc0JBQUEsQ0FBQUosT0FBQTtBQUE2RSxTQUFBaUIsMkJBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLHlCQUFBQyxNQUFBLElBQUFILENBQUEsQ0FBQUcsTUFBQSxDQUFBQyxRQUFBLEtBQUFKLENBQUEscUJBQUFFLENBQUEsUUFBQUcsS0FBQSxDQUFBQyxPQUFBLENBQUFOLENBQUEsTUFBQUUsQ0FBQSxHQUFBSywyQkFBQSxDQUFBUCxDQUFBLE1BQUFDLENB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
896
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3R5cGVkMiIsIl9wbXRpbGVzIiwiX21lbW9pemUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX21hdGgiLCJfdHlwZWQzIiwiX2NvbnN0YW50cyIsIl9kZWNrZ2xMYXllcnMiLCJfY29tbW9uVXRpbHMiLCJfdXRpbHMiLCJfY29uZmlnIiwiX2dwdVV0aWxzIiwiX2ltYWdlIiwiX3Jhc3RlclRpbGVJY29uIiwiX3Jhc3RlclRpbGVVdGlscyIsIl9iYXNlTGF5ZXIiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIk1hdGgiLCJtaW4iLCJ3aW5kb3ciLCJ0aWxlc0JlaW5nTG9hZGVkIiwiaXNUaWxlc0JlaW5nTG9hZGVkIiwiZXhwb3J0cyIsIkxPQURfRUxFVkFUSU9OX0FGVEVSX1pPT00iLCJnZXRTaG91bGRMb2FkVGVycmFpbiIsInN0YWMiLCJtYXBTdGF0ZSIsInZpc0NvbmZpZyIsIl9zdGFjJHJhc3RlclRpbGVTZXJ2ZSIsInJhc3RlclRpbGVTZXJ2ZXJVcmxzIiwiZW5hYmxlVGVycmFpbiIsImRyYWdSb3RhdGUiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsInJhc3RlclNlcnZlclN1cHBvcnRzRWxldmF0aW9uIiwiUmFzdGVyVGlsZUxheWVyIiwiX0tlcGxlckxheWVyIiwicHJvcHMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJJbmZpbml0eSIsInJlZ2lzdGVyVmlzQ29uZmlnIiwicmFzdGVyVmlzQ29uZmlncyIsInJlc29sdmVyIiwicHJlc2V0IiwicHJlc2V0T3B0aW9ucyIsIl9wcmVzZXRPcHRpb25zJHNpbmdsZSIsIl9wcmVzZXRPcHRpb25zJHNpbmdsZTIiLCJjb25jYXQiLCJpZCIsImNvbGxlY3Rpb24iLCJzaW5nbGVCYW5kIiwiYXNzZXRJZCIsImJhbmRJbmRleCIsImdldERhdGFTb3VyY2VQYXJhbXMiLCJtZW1vaXplIiwibWV0YSIsInpSYW5nZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiZ2V0IiwiTEFZRVJfVFlQRVMiLCJyYXN0ZXJUaWxlIiwiUmFzdGVySWNvbiIsIkRhdGFzZXRUeXBlIiwiUkFTVEVSX1RJTEUiLCJjYXRlZ29yaWNhbENvbG9yTGVnZW5kcyIsImNvbmZpZyIsImNvbG9yUmFuZ2UiLCJjb2xvckxlZ2VuZHMiLCJjb2xvciIsImdldERlZmF1bHRMYXllckNvbmZpZyIsImNvbG9yRmllbGQiLCJhbmFseXplclR5cGUiLCJmb3JtYXQiLCJ0eXBlIiwiZmllbGRJZHgiLCJ2YWx1ZUFjY2Vzc29yIiwiZGlzcGxheU5hbWUiLCJnZXRIb3ZlckRhdGEiLCJzaG91bGRSZW5kZXJMYXllciIsImlzVmlzaWJsZSIsImZvcm1hdExheWVyRGF0YSIsImRhdGFzZXRzIiwib2xkTGF5ZXJEYXRhIiwiX2RhdGFzZXQkbWV0YWRhdGEiLCJkYXRhSWQiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJkYXRhc2V0IiwiZGF0YVVwZGF0ZVRyaWdnZXJzIiwiZ2V0RGF0YVVwZGF0ZVRyaWdnZXJzIiwidHJpZ2dlckNoYW5nZWQiLCJnZXRDaGFuZ2VkVHJpZ2dlcnMiLCJnZXRNZXRhIiwidXBkYXRlTGF5ZXJNZXRhIiwidGlsZVNvdXJjZSIsIm1ldGFkYXRhIiwicG10aWxlc1R5cGUiLCJQTVRpbGVzVHlwZSIsIlJBU1RFUiIsIm1ldGFkYXRhVXJsIiwiX3JlZiIsIm9sZERhdGFzZXQiLCJvbGRUaWxlU291cmNlIiwiZGF0YSIsIlBNVGlsZXNTb3VyY2UiLCJjcmVhdGVEYXRhU291cmNlIiwidXBkYXRlTWV0YSIsImJvdW5kcyIsImdldFNUQUNCb3VuZHMiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJ1cGRhdGVMYXllclZpc0NvbmZpZyIsInVzZVNUQUNTZWFyY2hpbmciLCJhdmFpbGFibGVCYW5kcyIsImdldEVPQmFuZHMiLCJzaW5nbGVCYW5kTmFtZSIsImF2YWlsYWJsZVByZXNldHMiLCJmaWx0ZXJBdmFpbGFibGVQcmVzZXRzIiwiUFJFU0VUX09QVElPTlMiLCJpbmNsdWRlcyIsInZpc0NvbmZpZ1NldHRpbmdzIiwiZGVmYXVsdFZhbHVlIiwiY29sb3JEZWZhdWx0cyIsIkRBVEFfU09VUkNFX0NPTE9SX0RFRkFVTFRTIiwib25WaWV3cG9ydExvYWQiLCJ0aWxlcyIsInVwZGF0ZU1pbk1heFBpeGVsVmFsdWUiLCJuZXdaUmFuZ2UiLCJjb21wdXRlWlJhbmdlIiwiX2dldE1pbk1heEZyb21UaWxlMkRIIiwiZ2V0TWluTWF4RnJvbVRpbGUyREhlYWRlcnMiLCJfZ2V0TWluTWF4RnJvbVRpbGUyREgyIiwiX3NsaWNlZFRvQXJyYXkyIiwibWF4IiwibWluVmlld3BvcnRQaXhlbFZhbHVlIiwibWF4Vmlld3BvcnRQaXhlbFZhbHVlIiwiZ2V0TWluTWF4UGl4ZWxWYWx1ZXMiLCJpbWFnZXMiLCJtaW5QaXhlbFZhbHVlIiwibWF4UGl4ZWxWYWx1ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwiaW1hZ2UiLCJfZ2V0SW1hZ2VNaW5NYXgiLCJnZXRJbWFnZU1pbk1heCIsIl9nZXRJbWFnZU1pbk1heDIiLCJlcnIiLCJyZW5kZXJMYXllciIsIm9wdHMiLCJfZGF0YSRkYXRhc2V0IiwicmVuZGVyUE1UaWxlc0xheWVyIiwicmVuZGVyU3RhY0xheWVyIiwiX2RhdGEkZGF0YXNldDIiLCJfdGhpczIiLCJzdGFjX3ZlcnNpb24iLCJfdGhpcyRnZXREZWZhdWx0RGVja0wiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJvcGFjaXR5IiwidmlzaWJsZSIsImNvbG9ybWFwSWQiLCJsaW5lYXJSZXNjYWxpbmciLCJsaW5lYXJSZXNjYWxpbmdGYWN0b3IiLCJub25MaW5lYXJSZXNjYWxpbmciLCJnYW1tYUNvbnRyYXN0RmFjdG9yIiwic2lnbW9pZGFsQ29udHJhc3RGYWN0b3IiLCJzaWdtb2lkYWxCaWFzRmFjdG9yIiwic2F0dXJhdGlvblZhbHVlIiwiZmlsdGVyRW5hYmxlZCIsImZpbHRlclJhbmdlIiwic3RhY1NlYXJjaFByb3ZpZGVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsIl9zdGFjUXVlcnkiLCJjYXRlZ29yaWNhbENvbG9yTWFwIiwiY29sb3JNYXAiLCJkeW5hbWljQ29sb3IiLCJzaG91bGRMb2FkVGVycmFpbiIsIkRhdGUiLCJiYW5kQ29tYmluYXRpb24iLCJnZXRTaW5nbGVCYW5kUHJlc2V0T3B0aW9ucyIsImRhdGFTb3VyY2VQYXJhbXMiLCJtaW5ab29tIiwibWF4Wm9vbSIsImdsb2JhbEJvdW5kcyIsImxvYWRBc3NldElkcyIsImxvYWRCYW5kSW5kZXhlcyIsInJlbmRlckJhbmRJbmRleGVzIiwiZGF0YVR5cGUiLCJkc01pblBpeGVsVmFsdWUiLCJkc01heFBpeGVsVmFsdWUiLCJtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSIsIm1heENhdGVnb3JpY2FsQmFuZFZhbHVlIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRUaWxlRGF0YUN1c3RvbVByb3BzIiwidGlsZUxheWVyIiwiVGlsZUxheWVyIiwidGlsZVNpemUiLCJnZXRUaWxlRGF0YSIsImFyZ3MiLCJiaW5kIiwicmVuZGVyU3ViTGF5ZXJzIiwicmVuZGVyU3ViTGF5ZXJzU3RhYyIsIm1heFJlcXVlc3RzIiwiZ2V0TWF4UmVxdWVzdHMiLCJ1cGRhdGVUcmlnZ2VycyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZWZpbmVtZW50U3RyYXRlZ3kiLCJoYXNDYXRlZ29yaWNhbENvbG9yTWFwIiwiX2RhdGEkZGF0YXNldDMiLCJfdGhpczMiLCJfdGhpcyRnZXREZWZhdWx0RGVja0wyIiwic2hvd1RpbGVCb3JkZXJzIiwiZ2V0VGlsZURhdGFQTVRpbGVzIiwicGlja2FibGUiLCJhdXRvSGlnaGxpZ2h0Iiwiem9vbU9mZnNldCIsInJlbmRlclN1YkxheWVyc1BNVGlsZXMiLCJfZ2V0VGlsZURhdGEiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9wcm9wcyRiYm94Iiwid2VzdCIsInNvdXRoIiwiZWFzdCIsIm5vcnRoIiwiem9vbSIsImFzc2V0UmVxdWVzdHMiLCJ0ZXJyYWluIiwiX3lpZWxkJFByb21pc2UkYWxsIiwiX3lpZWxkJFByb21pc2UkYWxsMiIsIl90ZXJyYWluIiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWIiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWMiIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsImJib3giLCJpbmRleCIsInoiLCJiYm94SW50ZXJzZWN0cyIsImFicnVwdCIsImdldFNUQUNJbWFnZVJlcXVlc3RzIiwic2VudCIsInQwIiwibG9hZFRlcnJhaW4iLCJzaWduYWwiLCJQcm9taXNlIiwiYWxsIiwibG9hZEltYWdlcyIsIm1pblZhbHVlIiwibWF4VmFsdWUiLCJpbWFnZUJhbmRzIiwidDEiLCJzdG9wIiwiX3giLCJfZ2V0VGlsZURhdGFQTVRpbGVzIiwiX2NhbGxlZTIiLCJfcHJvcHMkYmJveDIiLCJfeWllbGQkUHJvbWlzZSRhbGwzIiwiX3lpZWxkJFByb21pc2UkYWxsNCIsIl90aGlzJGdldE1pbk1heFBpeGVsVjMiLCJfdGhpcyRnZXRNaW5NYXhQaXhlbFY0IiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiX3gyIiwiX3gzIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwibmV3TGF5ZXJQcm9wIiwibGFiZWwiLCJLZXBsZXJMYXllciIsInRpbGUiLCJnbG9iYWxNaW5QaXhlbFZhbHVlIiwiZ2xvYmFsTWF4UGl4ZWxWYWx1ZSIsInRpbGVNaW5QaXhlbFZhbHVlIiwidGlsZU1heFBpeGVsVmFsdWUiLCJfZ2V0TW9kdWxlcyIsImdldE1vZHVsZXMiLCJtb2R1bGVzIiwibW9kdWxlUHJvcHMiLCJSYXN0ZXJNZXNoTGF5ZXIiLCJtZXNoIiwiZ2V0UG9seWdvbk9mZnNldCIsImNvb3JkaW5hdGVTeXN0ZW0iLCJDT09SRElOQVRFX1NZU1RFTSIsIkNBUlRFU0lBTiIsIm1vZGVsTWF0cml4IiwiZ2V0TWVyY2F0b3JNb2RlbE1hdHJpeCIsImdldFBvc2l0aW9uIiwiZ2V0Q29sb3IiLCJSYXN0ZXJMYXllciIsIl9pbWFnZUNvb3JkaW5hdGVTeXN0ZW0iLCJXT1JMRF9TSVpFIiwid29ybGRTY2FsZSIsInBvdyIsInhTY2FsZSIsInlTY2FsZSIsInhPZmZzZXQiLCJ4IiwieU9mZnNldCIsInkiLCJNYXRyaXg0IiwidHJhbnNsYXRlIiwic2NhbGUiLCJfcHJvcHMkZGF0YSIsIl9wcm9wcyR0aWxlIiwiX3Byb3BzJHRpbGUkYmJveCIsImxheWVycyIsIm1pbWVUeXBlIiwiZ2V0UmFzdGVyTGF5ZXJQTVRpbGVzIiwiYm9yZGVyQ29sb3IiLCJQYXRoTGF5ZXIiLCJnZXRQYXRoIiwiZCIsIndpZHRoTWluUGl4ZWxzIiwiaW1hZ2VSZ2JhIiwiX2dldE1vZHVsZXMyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci10aWxlL3Jhc3Rlci10aWxlLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q09PUkRJTkFURV9TWVNURU0sIExheWVyIGFzIERlY2tMYXllcn0gZnJvbSAnQGRlY2suZ2wvY29yZS90eXBlZCc7XG5pbXBvcnQge1RpbGVMYXllciwgR2VvQm91bmRpbmdCb3h9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMvdHlwZWQnO1xuaW1wb3J0IHtQTVRpbGVzU291cmNlLCBQTVRpbGVzVGlsZVNvdXJjZX0gZnJvbSAnQGxvYWRlcnMuZ2wvcG10aWxlcyc7XG5pbXBvcnQge1RleHR1cmUyRFByb3BzfSBmcm9tICdAbHVtYS5nbC93ZWJnbCc7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdsb2Rhc2gvbWVtb2l6ZSc7XG5pbXBvcnQge01hdHJpeDR9IGZyb20gJ21hdGguZ2wnO1xuXG5pbXBvcnQge1BhdGhMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzL3R5cGVkJztcbmltcG9ydCB7RGF0YXNldFR5cGUsIFBNVGlsZXNUeXBlLCBMQVlFUl9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtSYXN0ZXJMYXllciwgUmFzdGVyTWVzaExheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuaW1wb3J0IHtcbiAgTGF5ZXJCYXNlQ29uZmlnLFxuICBMYXllckNvbG9yQ29uZmlnLFxuICBMYXllckhlaWdodENvbmZpZyxcbiAgVmlzdWFsQ2hhbm5lbCxcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnU2VsZWN0aW9uLFxuICBWaXNDb25maWdCb29sZWFuLFxuICBWaXNDb25maWdJbnB1dCxcbiAgVmlzQ29uZmlnUmFuZ2UsXG4gIFZpc0NvbmZpZ051bWJlclxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7RGF0YXNldHMsIEtlcGxlclRhYmxlIGFzIEtlcGxlckRhdGFzZXQsIFZlY3RvclRpbGVNZXRhZGF0YX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHtyYXN0ZXJWaXNDb25maWdzLCBQUkVTRVRfT1BUSU9OUywgREFUQV9TT1VSQ0VfQ09MT1JfREVGQVVMVFN9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7Z2V0TW9kdWxlc30gZnJvbSAnLi9ncHUtdXRpbHMnO1xuaW1wb3J0IHtnZXRTVEFDSW1hZ2VSZXF1ZXN0cywgbG9hZEltYWdlcywgbG9hZFRlcnJhaW59IGZyb20gJy4vaW1hZ2UnO1xuaW1wb3J0IFJhc3Rlckljb24gZnJvbSAnLi9yYXN0ZXItdGlsZS1pY29uJztcbmltcG9ydCB7XG4gIGdldERhdGFTb3VyY2VQYXJhbXMsXG4gIGdldE1heFJlcXVlc3RzLFxuICBiYm94SW50ZXJzZWN0cyxcbiAgY29tcHV0ZVpSYW5nZSxcbiAgZ2V0U1RBQ0JvdW5kcyxcbiAgZ2V0RU9CYW5kcyxcbiAgZmlsdGVyQXZhaWxhYmxlUHJlc2V0cyxcbiAgZ2V0U2luZ2xlQmFuZFByZXNldE9wdGlvbnMsXG4gIGdldEltYWdlTWluTWF4LFxuICBnZXRNaW5NYXhGcm9tVGlsZTJESGVhZGVyc1xufSBmcm9tICcuL3Jhc3Rlci10aWxlLXV0aWxzJztcbmltcG9ydCB7XG4gIEdldFRpbGVEYXRhQ3VzdG9tUHJvcHMsXG4gIEdldFRpbGVEYXRhRGVmYXVsdFByb3BzLFxuICBHZXRUaWxlRGF0YVByb3BzLFxuICBSZW5kZXJTdWJMYXllcnNQcm9wcyxcbiAgR2V0VGlsZURhdGFPdXRwdXQsXG4gIERhdGFTb3VyY2VQYXJhbXMsXG4gIEtlcGxlclJhc3RlckRhdGFzZXQsXG4gIFRpbGUyREhlYWRlcixcbiAgUHJlc2V0T3B0aW9uLFxuICBDb21wbGV0ZVNUQUNPYmplY3Rcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCB7RmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWV9IGZyb20gJy4uL2xheWVyLXV0aWxzJztcbmltcG9ydCB7ZGVmYXVsdCBhcyBLZXBsZXJMYXllciwgTGF5ZXJCYXNlQ29uZmlnUGFydGlhbH0gZnJvbSAnLi4vYmFzZS1sYXllcic7XG5cbi8vIEFkanVzdCB0aWxlU2l6ZSB0byBkZXZpY2VQaXhlbFJhdGlvLCBidXQgbm90IGhpZ2hlciB0aGFuIDIgdG8gcmVkdWNlIHJlcXVlc3RzIHRvIHNlcnZlclxuY29uc3QgZGV2aWNlUGl4ZWxSYXRpbzogbnVtYmVyID0gTWF0aC5taW4oXG4gIDIsXG4gICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykgfHwgMVxuKTtcblxuLy8gR2xvYmFsIGNvdW50ZXIgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgdGlsZXMgY3VycmVudGx5IGJlaW5nIGxvYWRlZCBhY3Jvc3MgYWxsIHRoZSByYXN0ZXIgdGlsZSBsYXllcnNcbmxldCB0aWxlc0JlaW5nTG9hZGVkID0gMDtcblxuLy8gVGhpcyBpcyBhIHRlbXAgc29sdXRpb24sIGFzIHdlIGRvbid0IGhhdmUgcHJvcGVyIGxvZ2ljIHRvIHRyYWNrIGxvYWRpbmcgb2YgYXN5Y24gbGF5ZXJzIGF0bSBpbiBLZXBsZXIuZ2xcbmV4cG9ydCBjb25zdCBpc1RpbGVzQmVpbmdMb2FkZWQgPSAoKSA9PiB7XG4gIHJldHVybiB0aWxlc0JlaW5nTG9hZGVkID4gMDtcbn07XG5cbmV4cG9ydCBjb25zdCBMT0FEX0VMRVZBVElPTl9BRlRFUl9aT09NID0gOC45O1xuXG5jb25zdCBnZXRTaG91bGRMb2FkVGVycmFpbiA9IChzdGFjLCBtYXBTdGF0ZSwgdmlzQ29uZmlnKSA9PiB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIC8vIHdlIG5lZWQgYSByYXN0ZXIgdGlsZSBzZXJ2ZXIgZm9yIGVsZXZhdGlvbnMgZXZlbiB3aGVuIHdlIHVzZXIgUE1UaWxlc1xuICAgIHN0YWMucmFzdGVyVGlsZVNlcnZlclVybHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgIC8vIGNoZWNrIHRoZSBzd2l0Y2ggZnJvbSB0aGUgbGF5ZXIgY29uZmlndXJhdG9yXG4gICAgICB2aXNDb25maWcuZW5hYmxlVGVycmFpbiAmJlxuICAgICAgLy8gZm9yIG5vdyBvbmx5IGluIDNEIG1vZGUsIG5vdCB0b3AgbW9kZVxuICAgICAgbWFwU3RhdGUuZHJhZ1JvdGF0ZSAmJlxuICAgICAgZ2V0QXBwbGljYXRpb25Db25maWcoKS5yYXN0ZXJTZXJ2ZXJTdXBwb3J0c0VsZXZhdGlvblxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnQ29tbW9uU2V0dGluZ3MgPSB7XG4gIG9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgZW5hYmxlVGVycmFpbjogVmlzQ29uZmlnQm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ1NldHRpbmdzID0gUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnQ29tbW9uU2V0dGluZ3MgJiB7XG4gIHByZXNldDogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICB1c2VTVEFDU2VhcmNoaW5nOiBWaXNDb25maWdCb29sZWFuO1xuICBzdGFjU2VhcmNoUHJvdmlkZXI6IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbiAgc3RhcnREYXRlOiBWaXNDb25maWdJbnB1dDtcbiAgZW5kRGF0ZTogVmlzQ29uZmlnSW5wdXQ7XG4gIGR5bmFtaWNDb2xvcjogVmlzQ29uZmlnQm9vbGVhbjtcbiAgY29sb3JtYXBJZDogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICBsaW5lYXJSZXNjYWxpbmdGYWN0b3I6IFZpc0NvbmZpZ1JhbmdlO1xuICBub25MaW5lYXJSZXNjYWxpbmc6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIGdhbW1hQ29udHJhc3RGYWN0b3I6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2lnbW9pZGFsQ29udHJhc3RGYWN0b3I6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2lnbW9pZGFsQmlhc0ZhY3RvcjogVmlzQ29uZmlnTnVtYmVyO1xuICBzYXR1cmF0aW9uVmFsdWU6IFZpc0NvbmZpZ051bWJlcjtcbiAgZmlsdGVyRW5hYmxlZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgZmlsdGVyUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICBfc3RhY1F1ZXJ5OiBWaXNDb25maWdJbnB1dDtcbiAgc2luZ2xlQmFuZE5hbWU6IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbn07XG5cbnR5cGUgUmFzdGVyVGlsZUxheWVyTWV0YSA9IHtcbiAgelJhbmdlOiBudW1iZXJbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYXN0ZXJUaWxlTGF5ZXIgZXh0ZW5kcyBLZXBsZXJMYXllciB7XG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIG1ldGE6IFJhc3RlclRpbGVMYXllck1ldGE7XG5cbiAgLyoqIE1pbiBiYW5kcyBpbWFnZSBkYXRhIHZhbHVlLCBiYXNlZCBvbiB0aGUgY3VycmVudCB2aWV3cG9ydCAqL1xuICBtaW5WaWV3cG9ydFBpeGVsVmFsdWUgPSBJbmZpbml0eTtcbiAgLyoqIE1heCBiYW5kcyBpbWFnZSBkYXRhIHZhbHVlLCBiYXNlZCBvbiB0aGUgY3VycmVudCB2aWV3cG9ydCAqL1xuICBtYXhWaWV3cG9ydFBpeGVsVmFsdWUgPSAtSW5maW5pdHk7XG4gIC8qKiBNZW1vaXplZCBtZXRob2QgdGhhdCBjYWxjdWxhdGVzIGRhdGEgc291cmNlIHBhcmFtcyAqL1xuXG4gIGdldERhdGFTb3VyY2VQYXJhbXM6IChcbiAgICBzdGFjOiBDb21wbGV0ZVNUQUNPYmplY3QsXG4gICAgcHJlc2V0OiBzdHJpbmcsXG4gICAgcHJlc2V0T3B0aW9uczogUHJlc2V0T3B0aW9uXG4gICkgPT4gRGF0YVNvdXJjZVBhcmFtcyB8IG51bGw7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhyYXN0ZXJWaXNDb25maWdzKTtcblxuICAgIC8vIE5vIHR3byBTVEFDIGlkcyBtYXkgYmUgdGhlIHNhbWUgd2l0aGluIGEgc2luZ2xlIGNvbGxlY3Rpb24sIHRob3VnaCBpdCdzIGNvbmNlaXZhYmx5IHBvc3NpYmxlXG4gICAgLy8gYWNyb3NzIG11bHRpcGxlIFNUQUMgY29sbGVjdGlvbnMgdGhlcmUgY291bGQgYmUgYW4gaWQgY29sbGlzaW9uLiBOb3RlOiBTVEFDIENvbGxlY3Rpb25cbiAgICAvLyBvYmplY3RzIGRvbid0IGhhdmUgYSBgY29sbGVjdGlvbmAga2V5OyBTVEFDIEl0ZW0gb2JqZWN0cyBoYXZlIGEgYGNvbGxlY3Rpb25gIGtleSAod2hpY2hcbiAgICAvLyBtYXRjaGVzIHRoZSBjb2xsZWN0aW9uJ3MgYGlkYCkuXG4gICAgY29uc3QgcmVzb2x2ZXIgPSAoc3RhYzogQ29tcGxldGVTVEFDT2JqZWN0LCBwcmVzZXQ6IHN0cmluZywgcHJlc2V0T3B0aW9uczogUHJlc2V0T3B0aW9uKSA9PlxuICAgICAgYCR7c3RhYy5pZH0tJHtzdGFjLmNvbGxlY3Rpb259LSR7cHJlc2V0fS0ke3ByZXNldE9wdGlvbnMuc2luZ2xlQmFuZD8uYXNzZXRJZH0tJHtwcmVzZXRPcHRpb25zLnNpbmdsZUJhbmQ/LmJhbmRJbmRleH1gO1xuICAgIHRoaXMuZ2V0RGF0YVNvdXJjZVBhcmFtcyA9IG1lbW9pemUoXG4gICAgICAoc3RhYywgcHJlc2V0LCBwcmVzZXRPcHRpb25zKSA9PiBnZXREYXRhU291cmNlUGFyYW1zKHN0YWMsIHByZXNldCwgcHJlc2V0T3B0aW9ucyksXG4gICAgICByZXNvbHZlclxuICAgICk7XG5cbiAgICB0aGlzLm1ldGEgPSB7elJhbmdlOiBudWxsfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldDogS2VwbGVyRGF0YXNldCk6IEZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlIHtcbiAgICBpZiAoZGF0YXNldC50eXBlICE9PSBEYXRhc2V0VHlwZS5SQVNURVJfVElMRSkge1xuICAgICAgcmV0dXJuIHtwcm9wczogW119O1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0xheWVyUHJvcCA9IHtcbiAgICAgIGRhdGFJZDogZGF0YXNldC5pZCxcbiAgICAgIGxhYmVsOiBkYXRhc2V0LmxhYmVsLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgfTtcblxuICAgIHJldHVybiB7cHJvcHM6IFtuZXdMYXllclByb3BdfTtcbiAgfVxuXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIExBWUVSX1RZUEVTLnJhc3RlclRpbGU7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnUmFzdGVyIFRpbGUnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpOiBLZXBsZXJMYXllclsnbGF5ZXJJY29uJ10ge1xuICAgIHJldHVybiBSYXN0ZXJJY29uO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZERhdGFzZXRUeXBlcygpOiBEYXRhc2V0VHlwZVtdIHtcbiAgICByZXR1cm4gW0RhdGFzZXRUeXBlLlJBU1RFUl9USUxFXTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpOiBSZWNvcmQ8c3RyaW5nLCBWaXN1YWxDaGFubmVsPiB7XG4gICAgY29uc3Qge1xuICAgICAgdmlzQ29uZmlnOiB7XG4gICAgICAgIGNvbG9yUmFuZ2U6IHtjb2xvckxlZ2VuZHM6IGNhdGVnb3JpY2FsQ29sb3JMZWdlbmRzfVxuICAgICAgfVxuICAgIH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoY2F0ZWdvcmljYWxDb2xvckxlZ2VuZHMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOiBzdXBlci52aXN1YWxDaGFubmVscy5jb2xvclxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIGdldCByZXF1aXJlRGF0YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhcbiAgICBwcm9wczogTGF5ZXJCYXNlQ29uZmlnUGFydGlhbFxuICApOiBMYXllckJhc2VDb25maWcgJiBQYXJ0aWFsPExheWVyQ29sb3JDb25maWcgJiBMYXllckhlaWdodENvbmZpZz4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5nZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHMpLFxuICAgICAgY29sb3JGaWVsZDoge1xuICAgICAgICBhbmFseXplclR5cGU6ICcnLFxuICAgICAgICBuYW1lOiAnQ2F0ZWdvcnknLFxuICAgICAgICBmb3JtYXQ6ICcnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZmllbGRJZHg6IC0xLFxuICAgICAgICB2YWx1ZUFjY2Vzc29yOiAoKSA9PiAnJyxcbiAgICAgICAgZGlzcGxheU5hbWU6ICdDYXRlZ29yeSdcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gV2UgY2FuIHJlbmRlciB3aXRob3V0IGNvbHVtbnMsIHNvIHdlIHJlZGVmaW5lIHRoaXMgbWV0aG9kXG4gIHNob3VsZFJlbmRlckxheWVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMudHlwZSAmJiB0aGlzLmNvbmZpZy5pc1Zpc2libGUpO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzOiBEYXRhc2V0cywgb2xkTGF5ZXJEYXRhPzogYW55KSB7XG4gICAgY29uc3Qge2RhdGFJZH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChkYXRhSWQpKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgLy8gY2FsbCB1cGRhdGVEYXRhIHRvIHVwZGF0ZUxheWVyTWV0YVxuICAgIGNvbnN0IGRhdGFVcGRhdGVUcmlnZ2VycyA9IHRoaXMuZ2V0RGF0YVVwZGF0ZVRyaWdnZXJzKGRhdGFzZXQpO1xuICAgIGNvbnN0IHRyaWdnZXJDaGFuZ2VkID0gdGhpcy5nZXRDaGFuZ2VkVHJpZ2dlcnMoZGF0YVVwZGF0ZVRyaWdnZXJzKTtcblxuICAgIGlmICh0cmlnZ2VyQ2hhbmdlZCAmJiB0cmlnZ2VyQ2hhbmdlZC5nZXRNZXRhKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhc2V0IGFzIEtlcGxlclJhc3RlckRhdGFzZXQpO1xuICAgIH1cblxuICAgIGxldCB0aWxlU291cmNlOiBQTVRpbGVzVGlsZVNvdXJjZSB8IG51bGwgPSBudWxsO1xuICAgIGlmIChkYXRhc2V0Lm1ldGFkYXRhPy5wbXRpbGVzVHlwZSA9PT0gUE1UaWxlc1R5cGUuUkFTVEVSKSB7XG4gICAgICBjb25zdCBtZXRhZGF0YVVybCA9IGRhdGFzZXQubWV0YWRhdGEubWV0YWRhdGFVcmw7XG4gICAgICAvLyB1c2UgdGhlIG9sZCB0aWxlIHNvdXJjZSBpZiBpdCBleGlzdHMgYW5kIG1hdGNoZXMgdGhlIG5ldyBtZXRhZGF0YVVybFxuICAgICAgY29uc3Qge2RhdGFzZXQ6IG9sZERhdGFzZXQsIHRpbGVTb3VyY2U6IG9sZFRpbGVTb3VyY2V9ID0gb2xkTGF5ZXJEYXRhIHx8IHt9O1xuICAgICAgaWYgKG9sZERhdGFzZXQgPT09IGRhdGFzZXQgJiYgb2xkVGlsZVNvdXJjZT8uZGF0YSA9PT0gbWV0YWRhdGFVcmwpIHtcbiAgICAgICAgdGlsZVNvdXJjZSA9IG9sZExheWVyRGF0YS50aWxlU291cmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGlsZVNvdXJjZSA9IG1ldGFkYXRhVXJsID8gUE1UaWxlc1NvdXJjZS5jcmVhdGVEYXRhU291cmNlKG1ldGFkYXRhVXJsLCB7fSkgOiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7ZGF0YXNldCwgdGlsZVNvdXJjZX07XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YXNldDogS2VwbGVyUmFzdGVyRGF0YXNldCk6IHZvaWQge1xuICAgIGlmIChkYXRhc2V0LnR5cGUgIT09IERhdGFzZXRUeXBlLlJBU1RFUl9USUxFKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhYyA9IGRhdGFzZXQubWV0YWRhdGE7XG4gICAgaWYgKHN0YWMucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTWV0YSh7XG4gICAgICAgIGJvdW5kczogc3RhYy5ib3VuZHNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGJvdW5kcyA9IGdldFNUQUNCb3VuZHMoc3RhYyk7XG4gICAgaWYgKGJvdW5kcykge1xuICAgICAgLy8gSWYgYSBTVEFDIEl0ZW0gKGkuZS4gc3RhYy50eXBlID09PSAnRmVhdHVyZScpLCB0aGVuIHNldCBtYXAgYm91bmRzLlxuICAgICAgLy8gQnV0IHdlIGRvbid0IHdhbnQgdG8gc2V0IGJvdW5kcyBmb3IgTGFuZHNhdCBvciBTZW50aW5lbCBiZWNhdXNlIGl0IHdvdWxkIHpvb20gb3V0IHRvIHpvb21cbiAgICAgIC8vIDAsIGFuZCB3ZSBkb24ndCBoYXZlIGxvdy16b29tIHRpbGVzLlxuICAgICAgaWYgKHN0YWMudHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB3aGVuIGFkZGluZyBhIG5ldyBkYXRhc2V0XG4gICAqL1xuICBzZXRJbml0aWFsTGF5ZXJDb25maWcoZGF0YXNldDogS2VwbGVyRGF0YXNldCk6IFJhc3RlclRpbGVMYXllciB7XG4gICAgY29uc3Qgc3RhYyA9IGRhdGFzZXQ/Lm1ldGFkYXRhIGFzIEdldFRpbGVEYXRhQ3VzdG9tUHJvcHNbJ3N0YWMnXTtcblxuICAgIGlmICghc3RhYykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHN0YWMucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gV2hlbiBhIFNUQUMgQ29sbGVjdGlvbiBpcyBhZGRlZCwgdXNlU3RhY1NlYXJjaGluZyBzaG91bGQgYmUgdHJ1ZSB0byBwcmV2ZW50IGEgYmxhY2sgc2NyZWVuXG4gICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh7XG4gICAgICB1c2VTVEFDU2VhcmNoaW5nOiBzdGFjLnR5cGUgPT09ICdDb2xsZWN0aW9uJ1xuICAgIH0pO1xuXG4gICAgLy8gU2V0IHNpbmdsZUJhbmROYW1lIGlmIHRoZXJlIGlzIG9ubHkgb25lIGJhbmRcbiAgICBjb25zdCBhdmFpbGFibGVCYW5kcyA9IGdldEVPQmFuZHMoc3RhYykgfHwgW107XG4gICAgaWYgKGF2YWlsYWJsZUJhbmRzPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe3NpbmdsZUJhbmROYW1lOiBhdmFpbGFibGVCYW5kc1swXS5uYW1lfSk7XG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIHRoZSBwcmVzZXQgaWYgdGhlIGRlZmF1bHQgb25lIGlzIG5vdCBhbGxvd2VkXG4gICAgY29uc3QgYXZhaWxhYmxlUHJlc2V0cyA9IGZpbHRlckF2YWlsYWJsZVByZXNldHMoc3RhYywgUFJFU0VUX09QVElPTlMpO1xuICAgIGlmIChcbiAgICAgIGF2YWlsYWJsZVByZXNldHM/Lmxlbmd0aCAmJlxuICAgICAgIWF2YWlsYWJsZVByZXNldHM/LmluY2x1ZGVzKHRoaXMudmlzQ29uZmlnU2V0dGluZ3MucHJlc2V0LmRlZmF1bHRWYWx1ZSBhcyBzdHJpbmcpXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHtwcmVzZXQ6IGF2YWlsYWJsZVByZXNldHNbMF19KTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBpbXByb3ZlZCBpbWFnZSBwcm9jZXNzaW5nIHByb3BzIG9ubHkgZm9yIG5vbiBzaW5nbGUgYmFuZCBtb2Rlc1xuICAgIGNvbnN0IHByZXNldCA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5wcmVzZXQ7XG4gICAgY29uc3QgY29sb3JEZWZhdWx0cyA9IERBVEFfU09VUkNFX0NPTE9SX0RFRkFVTFRTW3N0YWMuaWRdO1xuICAgIGlmIChjb2xvckRlZmF1bHRzICYmIHByZXNldCAhPT0gJ3NpbmdsZUJhbmQnKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKGNvbG9yRGVmYXVsdHMpO1xuICAgIH1cblxuICAgIC8qXG4gICAgTGFuZFNhdCBzcGVjaWZpZXMgdGVtcG9yYWwgYm91bmRzIGJ1dCB0aGUgdmFsaWQgZGF0YSBpcyBhZnRlciBlbmQgZGF0ZVxuICAgIGNvbnN0IHVwZGF0ZWREYXRlcyA9IHRpbWVSYW5nZVRvU3RhY1RlbXBvcmFsSW50ZXJ2YWwoXG4gICAgICBzdGFjIGFzIFN0YWNUeXBlcy5TVEFDQ29sbGVjdGlvbixcbiAgICAgIHRoaXMuY29uZmlnLnZpc0NvbmZpZy5zdGFydERhdGUsXG4gICAgICB0aGlzLmNvbmZpZy52aXNDb25maWcuZW5kRGF0ZVxuICAgICk7XG4gICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh1cGRhdGVkRGF0ZXMpO1xuICAgICovXG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgelJhbmdlIG9mIHZpZXdwb3J0LiBUaGlzIGlzIG5lY2Vzc2FyeSBzbyB0aGF0IHRpbGVzIGluIGV4dHJ1ZGVkIG1vZGUgYXJlIHNob3duIHByb3Blcmx5XG4gICAqIGF0IGhpZ2ggZWxldmF0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL2ZvdXJzcXVhcmUvc3R1ZGlvLW1vbm9yZXBvL3B1bGwvMTg5Mi9maWxlc1xuICAgKiBEZXJpdmVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2RlY2suZ2wvYmxvYi84ZDgyNGE0YjgzNmZlZTNiZmViZTZmYzk2MmUwZjAzZDhjMWRiZDBkL21vZHVsZXMvZ2VvLWxheWVycy9zcmMvdGVycmFpbi1sYXllci90ZXJyYWluLWxheWVyLmpzI0wxNzMtTDE5NlxuICAgKlxuICAgKiBAcGFyYW0gdGlsZXMgQXJyYXkgb2YgdGlsZXMgaW4gY3VycmVudCB2aWV3cG9ydFxuICAgKi9cbiAgb25WaWV3cG9ydExvYWQodGlsZXM6IChUaWxlMkRIZWFkZXIgfCBudWxsKVtdKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNaW5NYXhQaXhlbFZhbHVlKHRpbGVzKTtcbiAgICBjb25zdCBuZXdaUmFuZ2UgPSBjb21wdXRlWlJhbmdlKHRpbGVzKTtcbiAgICBpZiAoIW5ld1pSYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHt6UmFuZ2V9ID0gdGhpcy5tZXRhO1xuICAgIGlmICghelJhbmdlIHx8IG5ld1pSYW5nZVswXSA8IHpSYW5nZVswXSB8fCBuZXdaUmFuZ2VbMV0gPiB6UmFuZ2VbMV0pIHtcbiAgICAgIHRoaXMubWV0YS56UmFuZ2UgPSBuZXdaUmFuZ2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2aWV3cG9ydC1yZWxhdGVkIG1pblB4ZWxWYWx1ZSBhbmQgbWF4UGl4ZWxWYWx1ZVxuICAgKiBAcGFyYW0gdGlsZXMgLSBkZWNrLmdsIHRpbGVzXG4gICAqL1xuICB1cGRhdGVNaW5NYXhQaXhlbFZhbHVlKHRpbGVzOiAoVGlsZTJESGVhZGVyIHwgbnVsbClbXSk6IHZvaWQge1xuICAgIGNvbnN0IFttaW4sIG1heF0gPSBnZXRNaW5NYXhGcm9tVGlsZTJESGVhZGVycyh0aWxlcyk7XG4gICAgdGhpcy5taW5WaWV3cG9ydFBpeGVsVmFsdWUgPSBtaW47XG4gICAgdGhpcy5tYXhWaWV3cG9ydFBpeGVsVmFsdWUgPSBtYXg7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIG1pbiBhbmQgbWF4IHZhbHVlcyBvZiBpbnB1dCByYXN0ZXIgYmFuZCBpbWFnZSBwcm9wZXJ0aWVzXG4gICAqIGFuZCB1cGRhdGUgYG1pbkJhbmRzVmFsdWVgIGFuZCBgbWF4QmFuZHNWYWx1ZWBcbiAgICogQHBhcmFtIGltYWdlcyAtIHJhc3RlciBiYW5kIGltYWdlIHByb3BlcnRpZXNcbiAgICogQHJldHVybiBbbWluLCBtYXhdIHBpeGVsIHZhbHVlcyBmb3IgdGhlIHRpbGVcbiAgICovXG4gIGdldE1pbk1heFBpeGVsVmFsdWVzKGltYWdlczogVGV4dHVyZTJEUHJvcHNbXSB8IG51bGwpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBsZXQgbWluUGl4ZWxWYWx1ZSA9IEluZmluaXR5O1xuICAgIGxldCBtYXhQaXhlbFZhbHVlID0gLUluZmluaXR5O1xuICAgIGlmIChpbWFnZXMpIHtcbiAgICAgIGZvciAoY29uc3QgaW1hZ2Ugb2YgaW1hZ2VzKSB7XG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBnZXRJbWFnZU1pbk1heChpbWFnZS5kYXRhKTtcbiAgICAgICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgbWluUGl4ZWxWYWx1ZSA9IE1hdGgubWluKG1pbiwgbWluUGl4ZWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtYXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgbWF4UGl4ZWxWYWx1ZSA9IE1hdGgubWF4KG1heCwgbWF4UGl4ZWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFttaW5QaXhlbFZhbHVlLCBtYXhQaXhlbFZhbHVlXTtcbiAgfVxuXG4gIC8vIGdlbmVyYXRlIGEgZGVjayBsYXllclxuICByZW5kZXJMYXllcihvcHRzKTogVGlsZUxheWVyPGFueT5bXSB7XG4gICAgY29uc3Qge2RhdGF9ID0gb3B0cztcblxuICAgIGlmIChkYXRhPy5kYXRhc2V0Py5tZXRhZGF0YT8ucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyUE1UaWxlc0xheWVyKG9wdHMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZW5kZXJTdGFjTGF5ZXIob3B0cyk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclN0YWNMYXllcihvcHRzKTogVGlsZUxheWVyPGFueT5bXSB7XG4gICAgY29uc3Qge2RhdGEsIG1hcFN0YXRlfSA9IG9wdHM7XG4gICAgY29uc3Qgc3RhYyA9IGRhdGE/LmRhdGFzZXQ/Lm1ldGFkYXRhIGFzIEdldFRpbGVEYXRhQ3VzdG9tUHJvcHNbJ3N0YWMnXTtcblxuICAgIC8vIElmIGEgdGFidWxhciBkYXRhc2V0IGlzIGxvYWRlZCwgYW5kIHRoZW4gdGhlIGxheWVyIHR5cGUgaXMgc3dpdGNoZWQgZnJvbSBQb2ludCB0byBSYXN0ZXIgVGlsZVxuICAgIC8vIGxheWVyLCB0aGlzIGBzdGFjYCBvYmplY3Qgd2lsbCBleGlzdCBidXQgd2lsbCBub3QgYmUgcmFzdGVyIG1ldGFkYXRhXG4gICAgaWYgKCFzdGFjIHx8ICFzdGFjLnN0YWNfdmVyc2lvbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qge2lkLCBvcGFjaXR5LCB2aXNpYmxlfSA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJlc2V0LFxuICAgICAgY29sb3JtYXBJZCxcbiAgICAgIGxpbmVhclJlc2NhbGluZyxcbiAgICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcixcbiAgICAgIG5vbkxpbmVhclJlc2NhbGluZyxcbiAgICAgIGdhbW1hQ29udHJhc3RGYWN0b3IsXG4gICAgICBzaWdtb2lkYWxDb250cmFzdEZhY3RvcixcbiAgICAgIHNpZ21vaWRhbEJpYXNGYWN0b3IsXG4gICAgICBzYXR1cmF0aW9uVmFsdWUsXG4gICAgICBmaWx0ZXJFbmFibGVkLFxuICAgICAgZmlsdGVyUmFuZ2UsXG4gICAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICAgIF9zdGFjUXVlcnksXG4gICAgICBzaW5nbGVCYW5kTmFtZSxcbiAgICAgIGNvbG9yUmFuZ2U6IHtjb2xvck1hcDogY2F0ZWdvcmljYWxDb2xvck1hcH0sXG4gICAgICBkeW5hbWljQ29sb3JcbiAgICB9ID0gdmlzQ29uZmlnO1xuXG4gICAgY29uc3Qgc2hvdWxkTG9hZFRlcnJhaW4gPSBnZXRTaG91bGRMb2FkVGVycmFpbihzdGFjLCBtYXBTdGF0ZSwgdmlzQ29uZmlnKTtcblxuICAgIGlmIChuZXcgRGF0ZShlbmREYXRlKSA8IG5ldyBEYXRlKHN0YXJ0RGF0ZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB7YmFuZENvbWJpbmF0aW9ufSA9IFBSRVNFVF9PUFRJT05TW3ByZXNldF07XG5cbiAgICBjb25zdCBzaW5nbGVCYW5kID0gZ2V0U2luZ2xlQmFuZFByZXNldE9wdGlvbnMoc3RhYywgc2luZ2xlQmFuZE5hbWUpO1xuICAgIGNvbnN0IGRhdGFTb3VyY2VQYXJhbXM6IERhdGFTb3VyY2VQYXJhbXMgfCBudWxsID0gdGhpcy5nZXREYXRhU291cmNlUGFyYW1zKHN0YWMsIHByZXNldCwge1xuICAgICAgc2luZ2xlQmFuZFxuICAgIH0pO1xuXG4gICAgaWYgKCFkYXRhU291cmNlUGFyYW1zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgbWluWm9vbSxcbiAgICAgIG1heFpvb20sXG4gICAgICBnbG9iYWxCb3VuZHMsXG4gICAgICBsb2FkQXNzZXRJZHMsXG4gICAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgICByZW5kZXJCYW5kSW5kZXhlcyxcbiAgICAgIGRhdGFUeXBlLFxuICAgICAgbWluUGl4ZWxWYWx1ZTogZHNNaW5QaXhlbFZhbHVlLFxuICAgICAgbWF4UGl4ZWxWYWx1ZTogZHNNYXhQaXhlbFZhbHVlLFxuICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZVxuICAgIH0gPSBkYXRhU291cmNlUGFyYW1zO1xuXG4gICAgY29uc3QgbWluUGl4ZWxWYWx1ZSA9XG4gICAgICAhZHluYW1pY0NvbG9yICYmIE51bWJlci5pc0Zpbml0ZShkc01pblBpeGVsVmFsdWUpXG4gICAgICAgID8gZHNNaW5QaXhlbFZhbHVlXG4gICAgICAgIDogdGhpcy5taW5WaWV3cG9ydFBpeGVsVmFsdWU7XG4gICAgY29uc3QgbWF4UGl4ZWxWYWx1ZSA9XG4gICAgICAhZHluYW1pY0NvbG9yICYmIE51bWJlci5pc0Zpbml0ZShkc01heFBpeGVsVmFsdWUpXG4gICAgICAgID8gZHNNYXhQaXhlbFZhbHVlXG4gICAgICAgIDogdGhpcy5tYXhWaWV3cG9ydFBpeGVsVmFsdWU7XG5cbiAgICBjb25zdCBnZXRUaWxlRGF0YUN1c3RvbVByb3BzOiBHZXRUaWxlRGF0YUN1c3RvbVByb3BzID0ge1xuICAgICAgc3RhYyxcbiAgICAgIGxvYWRBc3NldElkcyxcbiAgICAgIGxvYWRCYW5kSW5kZXhlcyxcbiAgICAgIGNvbG9ybWFwSWQsXG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgICAgX3N0YWNRdWVyeSxcbiAgICAgIGNhdGVnb3JpY2FsQ29sb3JNYXAsXG4gICAgICBtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlXG4gICAgfTtcblxuICAgIGNvbnN0IHRpbGVMYXllciA9IG5ldyBUaWxlTGF5ZXI8YW55LCBSZW5kZXJTdWJMYXllcnNQcm9wcz4oe1xuICAgICAgaWQsXG4gICAgICBtaW5ab29tLFxuICAgICAgbWF4Wm9vbSxcbiAgICAgIHRpbGVTaXplOiA1MTIgLyBkZXZpY2VQaXhlbFJhdGlvLFxuICAgICAgZ2V0VGlsZURhdGE6IChhcmdzOiBhbnkpID0+IHRoaXMuZ2V0VGlsZURhdGEoey4uLmFyZ3MsIC4uLmdldFRpbGVEYXRhQ3VzdG9tUHJvcHN9KSxcbiAgICAgIG9uVmlld3BvcnRMb2FkOiB0aGlzLm9uVmlld3BvcnRMb2FkLmJpbmQodGhpcyksXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gVFMgZG9lc24ndCBrbm93IHdlJ2xsIHBhc3MgYXBwcm9wcmlhdGUgcHJvcHMgaGVyZVxuICAgICAgcmVuZGVyU3ViTGF5ZXJzOiByZW5kZXJTdWJMYXllcnNTdGFjLFxuICAgICAgbWF4UmVxdWVzdHM6IGdldE1heFJlcXVlc3RzKHN0YWMucmFzdGVyVGlsZVNlcnZlclVybHMgfHwgW10pLFxuICAgICAgLy8gUGFzc2luZyB2aXNpYmxlIG9uIHRvIFRpbGVMYXllciBpcyBuZWNlc3NhcnkgZm9yIHNwbGl0IHZpZXcgdG8gd29ya1xuICAgICAgdmlzaWJsZSxcbiAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgIGdldFRpbGVEYXRhOiBbXG4gICAgICAgICAgc2hvdWxkTG9hZFRlcnJhaW4sXG4gICAgICAgICAgLy8gQ29sb3JtYXAgaGFzIGNoYW5nZWRcbiAgICAgICAgICBjb2xvcm1hcElkLFxuICAgICAgICAgIC8vIGFzc2V0cyB0byBiZSBsb2FkZWQgaGFzIGNoYW5nZWRcbiAgICAgICAgICAuLi5sb2FkQXNzZXRJZHMsXG4gICAgICAgICAgLy8gYmFuZCBpbmRleGVzIHRvIGJlIGxvYWRlZCBoYXMgY2hhbmdlZFxuICAgICAgICAgIC4uLmxvYWRCYW5kSW5kZXhlcyxcbiAgICAgICAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgICAgICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICAgICAgICBzdGFydERhdGUsXG4gICAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgICBfc3RhY1F1ZXJ5LFxuICAgICAgICAgIGNhdGVnb3JpY2FsQ29sb3JNYXAsXG4gICAgICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICAgICAgbWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIFByb3BzIGZvciAzRCBtb2RlXG4gICAgICAuLi4oc2hvdWxkTG9hZFRlcnJhaW5cbiAgICAgICAgPyB7XG4gICAgICAgICAgICB6UmFuZ2U6IHRoaXMubWV0YS56UmFuZ2UgfHwgbnVsbCxcbiAgICAgICAgICAgIHJlZmluZW1lbnRTdHJhdGVneTogJ25vLW92ZXJsYXAnXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICAgIHJlbmRlckJhbmRJbmRleGVzLFxuICAgICAgb3BhY2l0eSxcbiAgICAgIGxpbmVhclJlc2NhbGluZyxcbiAgICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcixcbiAgICAgIG5vbkxpbmVhclJlc2NhbGluZyxcbiAgICAgIG1pblBpeGVsVmFsdWUsXG4gICAgICBtYXhQaXhlbFZhbHVlLFxuICAgICAgZ2FtbWFDb250cmFzdEZhY3RvcixcbiAgICAgIHNpZ21vaWRhbENvbnRyYXN0RmFjdG9yLFxuICAgICAgc2lnbW9pZGFsQmlhc0ZhY3RvcixcbiAgICAgIHNhdHVyYXRpb25WYWx1ZSxcbiAgICAgIGJhbmRDb21iaW5hdGlvbixcbiAgICAgIGZpbHRlckVuYWJsZWQsXG4gICAgICBmaWx0ZXJSYW5nZSxcbiAgICAgIGRhdGFUeXBlLFxuICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgIGhhc0NhdGVnb3JpY2FsQ29sb3JNYXA6IEJvb2xlYW4oY2F0ZWdvcmljYWxDb2xvck1hcClcbiAgICB9KTtcblxuICAgIHJldHVybiBbdGlsZUxheWVyXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUE1UaWxlc0xheWVyKG9wdHMpOiBUaWxlTGF5ZXI8YW55PltdIHtcbiAgICBjb25zdCB7aWQsIG9wYWNpdHksIHZpc2libGV9ID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG5cbiAgICBjb25zdCB7ZGF0YSwgbWFwU3RhdGV9ID0gb3B0cztcbiAgICBjb25zdCBtZXRhZGF0YSA9IGRhdGE/LmRhdGFzZXQ/Lm1ldGFkYXRhIGFzIFZlY3RvclRpbGVNZXRhZGF0YTtcbiAgICBjb25zdCB7dmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgY29uc3QgdGlsZVNvdXJjZSA9IGRhdGEudGlsZVNvdXJjZTtcbiAgICBjb25zdCBzaG93VGlsZUJvcmRlcnMgPSBmYWxzZTtcbiAgICBjb25zdCBtaW5ab29tID0gbWV0YWRhdGEubWluWm9vbSB8fCAwO1xuICAgIGNvbnN0IG1heFpvb20gPSBtZXRhZGF0YS5tYXhab29tIHx8IDMwO1xuXG4gICAgY29uc3Qgc2hvdWxkTG9hZFRlcnJhaW4gPSBnZXRTaG91bGRMb2FkVGVycmFpbihtZXRhZGF0YSwgbWFwU3RhdGUsIHZpc0NvbmZpZyk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IFRpbGVMYXllcjxhbnksIFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ0NvbW1vblNldHRpbmdzPih7XG4gICAgICAgIGlkLFxuICAgICAgICBnZXRUaWxlRGF0YTogKGFyZ3M6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmdldFRpbGVEYXRhUE1UaWxlcyh7Li4uYXJncywgc2hvdWxkTG9hZFRlcnJhaW4sIG1ldGFkYXRhfSwgdGlsZVNvdXJjZSksXG5cbiAgICAgICAgLy8gQXNzdW1lIHRoZSBwbXRpbGVzIGZpbGUgc3VwcG9ydCBIVFRQLzIsIHNvIHdlIGFyZW4ndCBsaW1pdGVkIGJ5IHRoZSBicm93c2VyIHRvIGEgY2VydGFpbiBudW1iZXIgcGVyIGRvbWFpbi5cbiAgICAgICAgbWF4UmVxdWVzdHM6IDIwLFxuXG4gICAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiBzaG93VGlsZUJvcmRlcnMsXG5cbiAgICAgICAgb25WaWV3cG9ydExvYWQ6IHRoaXMub25WaWV3cG9ydExvYWQuYmluZCh0aGlzKSxcblxuICAgICAgICBtaW5ab29tLFxuICAgICAgICBtYXhab29tLFxuICAgICAgICB0aWxlU2l6ZTogNTEyIC8gZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgem9vbU9mZnNldDogZGV2aWNlUGl4ZWxSYXRpbyA9PT0gMSA/IC0xIDogMCxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIFRTIGRvZXNuJ3Qga25vdyB3ZSdsbCBwYXNzIGFwcHJvcHJpYXRlIHByb3BzIGhlcmVcbiAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiByZW5kZXJTdWJMYXllcnNQTVRpbGVzLFxuXG4gICAgICAgIHRpbGVTb3VyY2UsXG4gICAgICAgIHNob3dUaWxlQm9yZGVycyxcblxuICAgICAgICB2aXNpYmxlLFxuICAgICAgICBvcGFjaXR5LFxuXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgZ2V0VGlsZURhdGE6IFtzaG91bGRMb2FkVGVycmFpbl1cbiAgICAgICAgfSxcbiAgICAgICAgLy8gUHJvcHMgZm9yIDNEIG1vZGVcbiAgICAgICAgLi4uKHNob3VsZExvYWRUZXJyYWluXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHpSYW5nZTogdGhpcy5tZXRhLnpSYW5nZSB8fCBudWxsLFxuICAgICAgICAgICAgICByZWZpbmVtZW50U3RyYXRlZ3k6ICduby1vdmVybGFwJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pXG4gICAgICB9KVxuICAgIF07XG4gIH1cblxuICBhc3luYyBnZXRUaWxlRGF0YShwcm9wczogR2V0VGlsZURhdGFQcm9wcyk6IFByb21pc2U8R2V0VGlsZURhdGFPdXRwdXQ+IHtcbiAgICBjb25zdCB7XG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9LFxuICAgICAgaW5kZXg6IHt6OiB6b29tfVxuICAgIH0gPSBwcm9wcztcblxuICAgIGlmIChnbG9iYWxCb3VuZHMgJiYgIWJib3hJbnRlcnNlY3RzKGdsb2JhbEJvdW5kcywgW3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aF0pKSB7XG4gICAgICAvLyB0aWxlIGlzIG91dHNpZGUgb2YgU1RBQyBvYmplY3QncyBib3VuZGluZyBib3g7IGRvbid0IGZldGNoIHRpbGVcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0UmVxdWVzdHMgPSBhd2FpdCBnZXRTVEFDSW1hZ2VSZXF1ZXN0cyhwcm9wcyk7XG4gICAgLy8gTm8gYXNzZXRzIHRvIGxvYWQsIG1vc3QgbGlrZWx5IGR1ZSB0byBwcm9wcyBiZWluZyBpbnZhbGlkL3Vuc3VwcG9ydGVkXG4gICAgaWYgKCFhc3NldFJlcXVlc3RzKSB7XG4gICAgICAvLyBXZSBzdGlsbCBpc3N1ZSB0aGUgbG9hZFRlcnJhaW4gcmVxdWVzdCBpZiBhcHBsaWNhYmxlXG4gICAgICBjb25zdCB0ZXJyYWluID1cbiAgICAgICAgc2hvdWxkTG9hZFRlcnJhaW4gJiZcbiAgICAgICAgTE9BRF9FTEVWQVRJT05fQUZURVJfWk9PTSA8IHpvb20gJiZcbiAgICAgICAgKGF3YWl0IGxvYWRUZXJyYWluKHtcbiAgICAgICAgICBpbmRleDogcHJvcHMuaW5kZXgsXG4gICAgICAgICAgc2lnbmFsOiBwcm9wcy5zaWduYWwsXG4gICAgICAgICAgcmFzdGVyVGlsZVNlcnZlclVybHM6IHByb3BzLnN0YWMucmFzdGVyVGlsZVNlcnZlclVybHMgfHwgW11cbiAgICAgICAgfSkpO1xuICAgICAgcmV0dXJuIHtpbWFnZXM6IG51bGwsIC4uLih0ZXJyYWluID8ge3RlcnJhaW59IDoge30pfTtcbiAgICB9XG5cbiAgICB0aWxlc0JlaW5nTG9hZGVkKys7XG5cbiAgICAvLyBXcmFwIGxvYWRpbmcgaW1hZ2VzIGludG8gYSB0cnkvY2F0Y2ggYmVjYXVzZSB0aWxlcyB0aGF0IGFyZSBvbmx5IGJyaWVmbHkgaW4gdmlldyB3aWxsIGJlXG4gICAgLy8gYWJvcnRlZC4gVGhlIGBBYm9ydENvbnRyb2xsZXIuYWJvcnQoKWAgY3JlYXRlcyBhIERPTUV4Y2VwdGlvbiBlcnJvci5cbiAgICAvLyBOb3RlIHRoYXQgc2luY2UgbG9hZGluZyBpcyBhc3luYywgdHJ5L2NhdGNoIHdpbGwgb25seSB3b3JrIHdoZW4gYXdhaXRlZCBpbnNpZGUgdGhlIHRyeSBibG9ja1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBbaW1hZ2VzLCB0ZXJyYWluXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgbG9hZEltYWdlcyhhc3NldFJlcXVlc3RzLCBwcm9wcy5jb2xvcm1hcElkLCB7XG4gICAgICAgICAgY29sb3JNYXA6IHByb3BzLmNhdGVnb3JpY2FsQ29sb3JNYXAsXG4gICAgICAgICAgbWluVmFsdWU6IHByb3BzLm1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlLFxuICAgICAgICAgIG1heFZhbHVlOiBwcm9wcy5tYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZVxuICAgICAgICB9KSxcbiAgICAgICAgc2hvdWxkTG9hZFRlcnJhaW4gJiYgTE9BRF9FTEVWQVRJT05fQUZURVJfWk9PTSA8IHpvb21cbiAgICAgICAgICA/IGxvYWRUZXJyYWluKHtcbiAgICAgICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICAgICAgICBzaWduYWw6IHByb3BzLnNpZ25hbCxcbiAgICAgICAgICAgICAgcmFzdGVyVGlsZVNlcnZlclVybHM6IHByb3BzLnN0YWMucmFzdGVyVGlsZVNlcnZlclVybHMgfHwgW11cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBdKTtcblxuICAgICAgY29uc3QgW21pbiwgbWF4XSA9IHRoaXMuZ2V0TWluTWF4UGl4ZWxWYWx1ZXMoaW1hZ2VzLmltYWdlQmFuZHMpO1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuXG4gICAgICAvLyBBZGQgdGVycmFpbiBkYXRhIG9ubHkgaWYgd2UgcmVxdWVzdGVkIGl0IGFib3ZlXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbWFnZXMsXG4gICAgICAgIC4uLih0ZXJyYWluID8ge3RlcnJhaW59IDoge30pLFxuICAgICAgICBtaW5QaXhlbFZhbHVlOiBtaW4sXG4gICAgICAgIG1heFBpeGVsVmFsdWU6IG1heFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuICAgICAgaWYgKChlcnJvciBhcyBhbnkpLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgICAvLyB0aWxlIHdhcyBhYm9ydGVkXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBTb21lIG90aGVyIHVuaGFuZGxlZCBlcnJvclxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VGlsZURhdGFQTVRpbGVzKFxuICAgIHByb3BzOiBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcyAmIHtcbiAgICAgIHNob3VsZExvYWRUZXJyYWluOiBib29sZWFuO1xuICAgICAgbWV0YWRhdGE6IHtyYXN0ZXJUaWxlU2VydmVyVXJsczogc3RyaW5nW119O1xuICAgICAgZ2xvYmFsQm91bmRzOiBEYXRhU291cmNlUGFyYW1zWydnbG9iYWxCb3VuZHMnXTtcbiAgICB9LFxuICAgIHRpbGVTb3VyY2VcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB7XG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9LFxuICAgICAgaW5kZXg6IHt6OiB6b29tfSxcbiAgICAgIG1ldGFkYXRhXG4gICAgfSA9IHByb3BzO1xuXG4gICAgaWYgKGdsb2JhbEJvdW5kcyAmJiAhYmJveEludGVyc2VjdHMoZ2xvYmFsQm91bmRzLCBbd2VzdCwgc291dGgsIGVhc3QsIG5vcnRoXSkpIHtcbiAgICAgIC8vIHRpbGUgaXMgb3V0c2lkZSBvZiBTVEFDIG9iamVjdCdzIGJvdW5kaW5nIGJveDsgZG9uJ3QgZmV0Y2ggdGlsZVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGlsZXNCZWluZ0xvYWRlZCsrO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFtpbWFnZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbdGlsZVNvdXJjZS5nZXRUaWxlRGF0YShwcm9wcyldKTtcbiAgICAgIC8vIEZvciBud28gY2hlY2sgaWYgdGhlIGJhc2UgdGlsZSBleGlzdHMsIGFzIHRoaXMgY2FuIGNhdXNlIGxvYWRpbmcgdG8gZ2V0IHN0dWNrIHdpdGggXCJzcGFyc2VcIiBQTVRpbGVzLlxuICAgICAgY29uc3QgdGVycmFpbiA9XG4gICAgICAgIGltYWdlICYmIHNob3VsZExvYWRUZXJyYWluICYmIExPQURfRUxFVkFUSU9OX0FGVEVSX1pPT00gPCB6b29tXG4gICAgICAgICAgPyBhd2FpdCBsb2FkVGVycmFpbih7XG4gICAgICAgICAgICAgIGluZGV4OiBwcm9wcy5pbmRleCxcbiAgICAgICAgICAgICAgc2lnbmFsOiBwcm9wcy5zaWduYWwsXG4gICAgICAgICAgICAgIHJhc3RlclRpbGVTZXJ2ZXJVcmxzOiBtZXRhZGF0YS5yYXN0ZXJUaWxlU2VydmVyVXJsc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIGxldCBtaW5QaXhlbFZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAgIGxldCBtYXhQaXhlbFZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAgIGlmIChpbWFnZSkge1xuICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gdGhpcy5nZXRNaW5NYXhQaXhlbFZhbHVlcyhbe2RhdGE6IGltYWdlfV0pO1xuICAgICAgICBtaW5QaXhlbFZhbHVlID0gbWluO1xuICAgICAgICBtYXhQaXhlbFZhbHVlID0gbWF4O1xuICAgICAgfVxuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuXG4gICAgICAvLyBBZGQgdGVycmFpbiBkYXRhIG9ubHkgaWYgd2UgcmVxdWVzdGVkIGl0IGFib3ZlXG4gICAgICByZXR1cm4ge2ltYWdlLCBtaW5QaXhlbFZhbHVlLCBtYXhQaXhlbFZhbHVlLCAuLi4odGVycmFpbiA/IHt0ZXJyYWlufSA6IHt9KX07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRpbGVzQmVpbmdMb2FkZWQtLTtcblxuICAgICAgaWYgKChlcnJvciBhcyBFcnJvcikubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICAgIC8vIHRpbGUgd2FzIGFib3J0ZWRcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIFNvbWUgb3RoZXIgdW5oYW5kbGVkIGVycm9yXG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyU3ViTGF5ZXJzU3RhYyhwcm9wczogUmVuZGVyU3ViTGF5ZXJzUHJvcHMpOiBEZWNrTGF5ZXI8YW55PiB8IERlY2tMYXllcjxhbnk+W10ge1xuICBjb25zdCB7XG4gICAgdGlsZSxcbiAgICBkYXRhLFxuICAgIG1pblBpeGVsVmFsdWU6IGdsb2JhbE1pblBpeGVsVmFsdWUsXG4gICAgbWF4UGl4ZWxWYWx1ZTogZ2xvYmFsTWF4UGl4ZWxWYWx1ZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGJib3ggPSB0aWxlLmJib3ggYXMgR2VvQm91bmRpbmdCb3g7XG4gIGNvbnN0IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9ID0gYmJveDtcblxuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCB7XG4gICAgaW1hZ2VzLFxuICAgIHRlcnJhaW4sXG4gICAgbWluUGl4ZWxWYWx1ZTogdGlsZU1pblBpeGVsVmFsdWUsXG4gICAgbWF4UGl4ZWxWYWx1ZTogdGlsZU1heFBpeGVsVmFsdWVcbiAgfSA9IGRhdGE7XG4gIGlmICghaW1hZ2VzIHx8IChBcnJheS5pc0FycmF5KGltYWdlcykgJiYgaW1hZ2VzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBtaW5QaXhlbFZhbHVlID0gTnVtYmVyLmlzRmluaXRlKGdsb2JhbE1pblBpeGVsVmFsdWUpXG4gICAgPyBnbG9iYWxNaW5QaXhlbFZhbHVlXG4gICAgOiB0aWxlTWluUGl4ZWxWYWx1ZTtcbiAgY29uc3QgbWF4UGl4ZWxWYWx1ZSA9IE51bWJlci5pc0Zpbml0ZShnbG9iYWxNYXhQaXhlbFZhbHVlKVxuICAgID8gZ2xvYmFsTWF4UGl4ZWxWYWx1ZVxuICAgIDogdGlsZU1heFBpeGVsVmFsdWU7XG4gIGlmICh0eXBlb2YgbWluUGl4ZWxWYWx1ZSAhPT0gJ251bWJlcicgfHwgdHlwZW9mIG1heFBpeGVsVmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3Qge21vZHVsZXMsIG1vZHVsZVByb3BzfSA9IGdldE1vZHVsZXMoe1xuICAgIGltYWdlcyxcbiAgICBwcm9wczogey4uLnByb3BzLCBtaW5QaXhlbFZhbHVlLCBtYXhQaXhlbFZhbHVlfVxuICB9KTtcblxuICByZXR1cm4gdGVycmFpblxuICAgID8gbmV3IFJhc3Rlck1lc2hMYXllcihwcm9wcywge1xuICAgICAgICBpZDogYHJhc3Rlci0zZC1sYXllci0ke3Byb3BzLmlkfWAsXG4gICAgICAgIC8vIER1bW15IGRhdGFcbiAgICAgICAgZGF0YTogWzFdLFxuICAgICAgICBtZXNoOiB0ZXJyYWluLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIG1vZHVsZXMsXG4gICAgICAgIG1vZHVsZVByb3BzLFxuXG4gICAgICAgIGdldFBvbHlnb25PZmZzZXQ6IG51bGwsXG4gICAgICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICAgICAgbW9kZWxNYXRyaXg6IGdldE1lcmNhdG9yTW9kZWxNYXRyaXgodGlsZS5pbmRleCksXG4gICAgICAgIGdldFBvc2l0aW9uOiAoKSA9PiBbMCwgMCwgMF0sXG4gICAgICAgIC8vIENvbG9yIHRvIHVzZSBpZiBzdXJmYWNlSW1hZ2UgaXMgdW5hdmFpbGFibGVcbiAgICAgICAgZ2V0Q29sb3I6IFsyNTUsIDI1NSwgMjU1XVxuICAgICAgICAvLyBtYXRlcmlhbDogZmFsc2VcbiAgICAgIH0pXG4gICAgOiBuZXcgUmFzdGVyTGF5ZXIocHJvcHMsIHtcbiAgICAgICAgaWQ6IGByYXN0ZXItMmQtbGF5ZXItJHtwcm9wcy5pZH1gLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIG1vZHVsZXMsXG4gICAgICAgIG1vZHVsZVByb3BzLFxuICAgICAgICBib3VuZHM6IFt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGhdLFxuICAgICAgICBfaW1hZ2VDb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU5cbiAgICAgIH0pO1xufVxuXG4vLyBGcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS91YmVyL2RlY2suZ2wvYmxvYi9iMTkwMWIxMWNiZGNiODJiMzE3ZTE1NzlmZjIzNmQxY2ExZDAzZWE3L21vZHVsZXMvZ2VvLWxheWVycy9zcmMvbXZ0LXRpbGUtbGF5ZXIvbXZ0LXRpbGUtbGF5ZXIuanMjTDQxLUw1MlxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lcmNhdG9yTW9kZWxNYXRyaXgodGlsZToge3g6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXJ9KTogTWF0cml4NCB7XG4gIGNvbnN0IFdPUkxEX1NJWkUgPSA1MTI7XG4gIGNvbnN0IHdvcmxkU2NhbGUgPSBNYXRoLnBvdygyLCB0aWxlLnopO1xuXG4gIGNvbnN0IHhTY2FsZSA9IFdPUkxEX1NJWkUgLyB3b3JsZFNjYWxlO1xuICBjb25zdCB5U2NhbGUgPSAteFNjYWxlO1xuXG4gIGNvbnN0IHhPZmZzZXQgPSAoV09STERfU0laRSAqIHRpbGUueCkgLyB3b3JsZFNjYWxlO1xuICBjb25zdCB5T2Zmc2V0ID0gV09STERfU0laRSAqICgxIC0gdGlsZS55IC8gd29ybGRTY2FsZSk7XG5cbiAgcmV0dXJuIG5ldyBNYXRyaXg0KCkudHJhbnNsYXRlKFt4T2Zmc2V0LCB5T2Zmc2V0LCAwXSkuc2NhbGUoW3hTY2FsZSwgeVNjYWxlLCAxXSk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclN1YkxheWVyc1BNVGlsZXMocHJvcHM6IHtcbiAgaWQ6IHN0cmluZztcbiAgZGF0YTogYW55O1xuICB0aWxlU291cmNlOiBhbnk7XG4gIHNob3dUaWxlQm9yZGVyczogYW55O1xuICBtaW5ab29tOiBhbnk7XG4gIG1heFpvb206IGFueTtcbiAgdGlsZTogYW55O1xufSkge1xuICBjb25zdCB7XG4gICAgdGlsZVNvdXJjZSxcbiAgICBzaG93VGlsZUJvcmRlcnMsXG4gICAgbWluWm9vbSxcbiAgICBtYXhab29tLFxuICAgIHRpbGU6IHtcbiAgICAgIGluZGV4OiB7ejogem9vbX0sXG4gICAgICBiYm94OiB7d2VzdCwgc291dGgsIGVhc3QsIG5vcnRofVxuICAgIH1cbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGxheWVyczogYW55W10gPSBbXTtcblxuICBpZiAocHJvcHMuZGF0YT8uaW1hZ2UpIHtcbiAgICBzd2l0Y2ggKHRpbGVTb3VyY2UubWltZVR5cGUpIHtcbiAgICAgIGNhc2UgJ2ltYWdlL3BuZyc6XG4gICAgICBjYXNlICdpbWFnZS9qcGVnJzpcbiAgICAgIGNhc2UgJ2ltYWdlL3dlYnAnOlxuICAgICAgY2FzZSAnaW1hZ2UvYXZpZic6XG4gICAgICAgIGxheWVycy5wdXNoKGdldFJhc3RlckxheWVyUE1UaWxlcyhwcm9wcykpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVidWcgdGlsZSBib3JkZXJzXG4gIGNvbnN0IGJvcmRlckNvbG9yID0gem9vbSA8PSBtaW5ab29tIHx8IHpvb20gPj0gbWF4Wm9vbSA/IFsyNTUsIDAsIDAsIDI1NV0gOiBbMCwgMCwgMjU1LCAyNTVdO1xuICBpZiAoc2hvd1RpbGVCb3JkZXJzKSB7XG4gICAgbGF5ZXJzLnB1c2goXG4gICAgICBuZXcgUGF0aExheWVyKHtcbiAgICAgICAgaWQ6IGAke3Byb3BzLmlkfS1ib3JkZXJgLFxuICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgW1xuICAgICAgICAgICAgW3dlc3QsIG5vcnRoXSxcbiAgICAgICAgICAgIFt3ZXN0LCBzb3V0aF0sXG4gICAgICAgICAgICBbZWFzdCwgc291dGhdLFxuICAgICAgICAgICAgW2Vhc3QsIG5vcnRoXSxcbiAgICAgICAgICAgIFt3ZXN0LCBub3J0aF1cbiAgICAgICAgICBdXG4gICAgICAgIF0sXG4gICAgICAgIGdldFBhdGg6IGQgPT4gZCxcbiAgICAgICAgZ2V0Q29sb3I6IGJvcmRlckNvbG9yIGFzIGFueSxcbiAgICAgICAgd2lkdGhNaW5QaXhlbHM6IDRcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBsYXllcnM7XG59XG5cbmZ1bmN0aW9uIGdldFJhc3RlckxheWVyUE1UaWxlcyhwcm9wczoge2lkOiBzdHJpbmc7IGRhdGE6IGFueTsgdGlsZTogYW55fSkge1xuICBjb25zdCB7dGlsZSwgZGF0YX0gPSBwcm9wcztcbiAgY29uc3QgYmJveCA9IHRpbGUuYmJveCBhcyBHZW9Cb3VuZGluZ0JveDtcbiAgY29uc3Qge3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aH0gPSBiYm94O1xuXG4gIGlmICghZGF0YT8uaW1hZ2UpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBpbWFnZXMgPSB7aW1hZ2VSZ2JhOiB7ZGF0YTogZGF0YS5pbWFnZX19O1xuICBjb25zdCB7dGVycmFpbn0gPSBkYXRhO1xuXG4gIGNvbnN0IHttb2R1bGVzLCBtb2R1bGVQcm9wc30gPSBnZXRNb2R1bGVzKHtcbiAgICBpbWFnZXNcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcnJhaW5cbiAgICA/IG5ldyBSYXN0ZXJNZXNoTGF5ZXIocHJvcHMsIHtcbiAgICAgICAgaWQ6IGByYXN0ZXItM2QtbGF5ZXItJHtwcm9wcy5pZH1gLFxuICAgICAgICAvLyBEdW1teSBkYXRhXG4gICAgICAgIGRhdGE6IFsxXSxcbiAgICAgICAgbWVzaDogdGVycmFpbixcbiAgICAgICAgaW1hZ2VzLFxuICAgICAgICBtb2R1bGVzLFxuICAgICAgICBtb2R1bGVQcm9wcyxcblxuICAgICAgICBnZXRQb2x5Z29uT2Zmc2V0OiBudWxsLFxuICAgICAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU4sXG4gICAgICAgIG1vZGVsTWF0cml4OiBnZXRNZXJjYXRvck1vZGVsTWF0cml4KHRpbGUuaW5kZXgpLFxuICAgICAgICBnZXRQb3NpdGlvbjogKCkgPT4gWzAsIDAsIDBdLFxuICAgICAgICAvLyBDb2xvciB0byB1c2UgaWYgc3VyZmFjZUltYWdlIGlzIHVuYXZhaWxhYmxlXG4gICAgICAgIGdldENvbG9yOiBbMjU1LCAyNTUsIDI1NV1cbiAgICAgICAgLy8gbWF0ZXJpYWw6IGZhbHNlXG4gICAgICB9KVxuICAgIDogbmV3IFJhc3RlckxheWVyKHByb3BzLCB7XG4gICAgICAgIGlkOiBgcmFzdGVyLTJkLWxheWVyLSR7cHJvcHMuaWR9YCxcbiAgICAgICAgZGF0YTogbnVsbCBhcyBuZXZlcixcbiAgICAgICAgaW1hZ2VzLFxuICAgICAgICBtb2R1bGVzLFxuICAgICAgICBtb2R1bGVQcm9wcyxcbiAgICAgICAgYm91bmRzOiBbd2VzdCwgc291dGgsIGVhc3QsIG5vcnRoXSxcbiAgICAgICAgX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbTogQ09PUkRJTkFURV9TWVNURU0uQ0FSVEVTSUFOXG4gICAgICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxRQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxLQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFjQSxJQUFBUyxZQUFBLEdBQUFULE9BQUE7QUFFQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFFQSxJQUFBVyxPQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxTQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxNQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxlQUFBLEdBQUFWLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBZSxnQkFBQSxHQUFBZixPQUFBO0FBMEJBLElBQUFnQixVQUFBLEdBQUFaLHNCQUFBLENBQUFKLE9BQUE7QUFBNkUsU0FBQWlCLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxD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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/layers",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.5",
4
+ "version": "3.1.6",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -36,14 +36,14 @@
36
36
  "@deck.gl/geo-layers": "^8.9.27",
37
37
  "@deck.gl/layers": "^8.9.27",
38
38
  "@deck.gl/mesh-layers": "^8.9.27",
39
- "@kepler.gl/common-utils": "3.1.5",
40
- "@kepler.gl/constants": "3.1.5",
41
- "@kepler.gl/deckgl-arrow-layers": "3.1.5",
42
- "@kepler.gl/deckgl-layers": "3.1.5",
43
- "@kepler.gl/localization": "3.1.5",
44
- "@kepler.gl/table": "3.1.5",
45
- "@kepler.gl/types": "3.1.5",
46
- "@kepler.gl/utils": "3.1.5",
39
+ "@kepler.gl/common-utils": "3.1.6",
40
+ "@kepler.gl/constants": "3.1.6",
41
+ "@kepler.gl/deckgl-arrow-layers": "3.1.6",
42
+ "@kepler.gl/deckgl-layers": "3.1.6",
43
+ "@kepler.gl/localization": "3.1.6",
44
+ "@kepler.gl/table": "3.1.6",
45
+ "@kepler.gl/types": "3.1.6",
46
+ "@kepler.gl/utils": "3.1.6",
47
47
  "@loaders.gl/arrow": "^4.3.2",
48
48
  "@loaders.gl/core": "^4.3.2",
49
49
  "@loaders.gl/gis": "^4.3.2",
@@ -7,7 +7,7 @@
7
7
 
8
8
  import {load} from '@loaders.gl/core';
9
9
  import {QuantizedMeshLoader} from '@loaders.gl/terrain';
10
- import memoize from 'lodash.memoize';
10
+ import memoize from 'lodash/memoize';
11
11
 
12
12
  import {getLoaderOptions, RasterLayerResources as cdnUrls} from '@kepler.gl/constants';
13
13
 
@@ -5,7 +5,7 @@ import {COORDINATE_SYSTEM, Layer as DeckLayer} from '@deck.gl/core/typed';
5
5
  import {TileLayer, GeoBoundingBox} from '@deck.gl/geo-layers/typed';
6
6
  import {PMTilesSource, PMTilesTileSource} from '@loaders.gl/pmtiles';
7
7
  import {Texture2DProps} from '@luma.gl/webgl';
8
- import memoize from 'lodash.memoize';
8
+ import memoize from 'lodash/memoize';
9
9
  import {Matrix4} from 'math.gl';
10
10
 
11
11
  import {PathLayer} from '@deck.gl/layers/typed';
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/localization",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.5",
4
+ "version": "3.1.6",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/processors",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.5",
4
+ "version": "3.1.6",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -31,12 +31,12 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@danmarshall/deckgl-typings": "4.9.22",
34
- "@kepler.gl/common-utils": "3.1.5",
35
- "@kepler.gl/constants": "3.1.5",
36
- "@kepler.gl/schemas": "3.1.5",
37
- "@kepler.gl/table": "3.1.5",
38
- "@kepler.gl/types": "3.1.5",
39
- "@kepler.gl/utils": "3.1.5",
34
+ "@kepler.gl/common-utils": "3.1.6",
35
+ "@kepler.gl/constants": "3.1.6",
36
+ "@kepler.gl/schemas": "3.1.6",
37
+ "@kepler.gl/table": "3.1.6",
38
+ "@kepler.gl/types": "3.1.6",
39
+ "@kepler.gl/utils": "3.1.6",
40
40
  "@loaders.gl/arrow": "^4.3.2",
41
41
  "@loaders.gl/core": "^4.3.2",
42
42
  "@loaders.gl/csv": "^4.3.2",