kepler.gl 3.1.5 → 3.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/src/actions/src/action-types.d.ts +2 -2
  2. package/dist/src/actions/src/action-wrapper.d.ts +2 -2
  3. package/dist/src/actions/src/actions.d.ts +3 -3
  4. package/dist/src/actions/src/map-state-actions.d.ts +4 -4
  5. package/dist/src/actions/src/vis-state-actions.d.ts +2 -2
  6. package/dist/src/ai-assistant/src/tools/kepler-tools/index.d.ts +1 -1
  7. package/dist/src/ai-assistant/src/tools/tools.d.ts +1 -1
  8. package/dist/src/components/src/kepler-gl.d.ts +1 -1
  9. package/dist/src/components/src/side-panel/layer-panel/layer-configurator.d.ts +4 -4
  10. package/dist/src/constants/src/default-settings.d.ts +8 -6
  11. package/dist/src/duckdb/src/table/duckdb-table.d.ts +1 -1
  12. package/dist/src/effects/src/effect.d.ts +1 -0
  13. package/dist/src/reducers/src/index.d.ts +1 -0
  14. package/dist/src/reducers/src/layer-utils.d.ts +2 -0
  15. package/dist/src/reducers/src/map-style-updaters.d.ts +1 -0
  16. package/dist/src/reducers/src/vis-state.d.ts +4 -4
  17. package/dist/src/styles/src/base.d.ts +4 -0
  18. package/dist/src/table/src/kepler-table.d.ts +2 -2
  19. package/dist/src/utils/src/application-config.d.ts +1 -0
  20. package/package.json +2 -2
  21. package/src/actions/dist/action-types.d.ts +2 -2
  22. package/src/actions/dist/action-types.js +3 -3
  23. package/src/actions/dist/action-wrapper.d.ts +2 -2
  24. package/src/actions/dist/action-wrapper.js +3 -3
  25. package/src/actions/dist/actions.d.ts +3 -3
  26. package/src/actions/dist/actions.js +4 -4
  27. package/src/actions/dist/map-state-actions.d.ts +4 -4
  28. package/src/actions/dist/map-state-actions.js +5 -5
  29. package/src/actions/dist/vis-state-actions.d.ts +2 -2
  30. package/src/actions/dist/vis-state-actions.js +3 -3
  31. package/src/actions/package.json +8 -8
  32. package/src/actions/src/action-types.ts +2 -2
  33. package/src/actions/src/action-wrapper.ts +2 -2
  34. package/src/actions/src/actions.ts +3 -3
  35. package/src/actions/src/map-state-actions.ts +4 -4
  36. package/src/actions/src/vis-state-actions.ts +2 -2
  37. package/src/ai-assistant/dist/tools/kepler-tools/index.d.ts +1 -1
  38. package/src/ai-assistant/dist/tools/tools.d.ts +1 -1
  39. package/src/ai-assistant/package.json +7 -7
  40. package/src/cloud-providers/package.json +2 -2
  41. package/src/common-utils/package.json +3 -3
  42. package/src/components/dist/effects/effect-type-list-item.js +4 -8
  43. package/src/components/dist/kepler-gl.d.ts +1 -1
  44. package/src/components/dist/loading-indicator.js +7 -3
  45. package/src/components/dist/map-container.js +18 -3
  46. package/src/components/dist/modals/add-map-style-modal.js +2 -2
  47. package/src/components/dist/modals/export-image-modal.js +1 -2
  48. package/src/components/dist/plot-container.js +15 -1
  49. package/src/components/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -4
  50. package/src/components/dist/side-panel/layer-panel/layer-list.js +2 -4
  51. package/src/components/dist/side-panel/layer-panel/layer-type-list-item.js +8 -5
  52. package/src/components/dist/side-panel/layer-panel/raster-tile-colormap-list-item.js +2 -3
  53. package/src/components/dist/side-panel/layer-panel/vis-config-slider.js +10 -5
  54. package/src/components/dist/side-panel/map-style-panel/map-style-selector.js +3 -2
  55. package/src/components/package.json +15 -15
  56. package/src/components/src/effects/effect-type-list-item.tsx +2 -5
  57. package/src/components/src/loading-indicator.tsx +13 -3
  58. package/src/components/src/map-container.tsx +20 -6
  59. package/src/components/src/modals/add-map-style-modal.tsx +1 -1
  60. package/src/components/src/modals/export-image-modal.tsx +0 -1
  61. package/src/components/src/plot-container.tsx +19 -2
  62. package/src/components/src/side-panel/layer-panel/layer-list.tsx +0 -1
  63. package/src/components/src/side-panel/layer-panel/layer-type-list-item.tsx +11 -4
  64. package/src/components/src/side-panel/layer-panel/raster-tile-colormap-list-item.tsx +2 -3
  65. package/src/components/src/side-panel/layer-panel/vis-config-slider.tsx +12 -5
  66. package/src/components/src/side-panel/map-style-panel/map-style-selector.tsx +7 -1
  67. package/src/constants/dist/default-settings.d.ts +8 -6
  68. package/src/constants/dist/default-settings.js +9 -13
  69. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/14/ab/1fbe8d595eaf6f179613022ba62b99ba41fe2f6b8061293406468a705d53002cfb0ba12e6833df2aa9c4c55b7061e239395129a1515da317d57e518b1dc7 +1 -0
  70. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/37/b0/3745c4bb4b6114fa3433e4871042f7db966b48b29cde3301afe38370cecfe41f5aac801adc6fa93f6cd05411c521215e58542853414a81c0904ba4291e09 +1 -0
  71. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a6/24/e627b9d220d419ebbcd587d4a259bfdefa4e2a415bffa609a2388ad0b2f98ff87bc25b05959f5523f920d81c80d22ea832fea3de26f385bf3980061f6192 +1 -0
  72. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/68/bb/2c3d5cb60ef7b9e6d889b7d9b75b05761c58ee43b954df1a262102d3a106 +2 -0
  73. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/93/38/f167b214acd87fc28cf533f463b7423ce65340878809b494323fae359cb4 +2 -0
  74. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/c9/15/fa84924a275687fd07d9edc843fb826bd3d3733dc8f56523787fb2cba9b4 +2 -0
  75. package/src/constants/package.json +2 -2
  76. package/src/constants/src/default-settings.ts +5 -10
  77. package/src/constants/umd/keplergl.min.js +1 -1
  78. package/src/deckgl-arrow-layers/package.json +2 -2
  79. package/src/deckgl-layers/dist/raster/images.js +3 -3
  80. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.d.ts +1 -1
  81. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +2 -2
  82. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer.js +3 -9
  83. package/src/deckgl-layers/package.json +4 -4
  84. package/src/deckgl-layers/src/raster/images.ts +1 -1
  85. package/src/deckgl-layers/src/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.ts +12 -33
  86. package/src/deckgl-layers/src/raster/raster-mesh-layer/raster-mesh-layer.ts +2 -5
  87. package/src/duckdb/dist/table/duckdb-table.d.ts +1 -1
  88. package/src/duckdb/package.json +6 -6
  89. package/src/effects/dist/effect.d.ts +1 -0
  90. package/src/effects/dist/effect.js +7 -1
  91. package/src/effects/package.json +5 -5
  92. package/src/effects/src/effect.ts +5 -0
  93. package/src/layers/dist/base-layer.d.ts +1 -1
  94. package/src/layers/dist/geojson-layer/geojson-layer.d.ts +1 -1
  95. package/src/layers/dist/geojson-layer/geojson-utils.d.ts +3 -3
  96. package/src/layers/dist/icon-layer/icon-layer.d.ts +0 -1
  97. package/src/layers/dist/icon-layer/icon-layer.js +3 -4
  98. package/src/layers/dist/index.d.ts +2 -1
  99. package/src/layers/dist/index.js +16 -8
  100. package/src/layers/dist/raster-tile/image.d.ts +6 -0
  101. package/src/layers/dist/raster-tile/image.js +39 -22
  102. package/src/layers/dist/raster-tile/raster-tile-layer.d.ts +2 -8
  103. package/src/layers/dist/raster-tile/raster-tile-layer.js +20 -35
  104. package/src/layers/dist/raster-tile/types.d.ts +1 -0
  105. package/src/layers/dist/raster-tile/types.js +1 -1
  106. package/src/layers/dist/raster-tile/url.d.ts +3 -0
  107. package/src/layers/dist/raster-tile/url.js +7 -1
  108. package/src/layers/dist/trip-layer/trip-layer.d.ts +1 -1
  109. package/src/layers/package.json +9 -9
  110. package/src/layers/src/icon-layer/icon-layer.ts +3 -5
  111. package/src/layers/src/index.ts +2 -1
  112. package/src/layers/src/raster-tile/image.ts +17 -5
  113. package/src/layers/src/raster-tile/raster-tile-layer.ts +18 -29
  114. package/src/layers/src/raster-tile/types.ts +1 -0
  115. package/src/layers/src/raster-tile/url.ts +6 -0
  116. package/src/localization/package.json +1 -1
  117. package/src/processors/package.json +7 -7
  118. package/src/reducers/dist/index.d.ts +1 -0
  119. package/src/reducers/dist/index.js +8 -1
  120. package/src/reducers/dist/layer-utils.d.ts +2 -0
  121. package/src/reducers/dist/layer-utils.js +23 -4
  122. package/src/reducers/dist/map-style-updaters.d.ts +1 -0
  123. package/src/reducers/dist/map-style-updaters.js +10 -5
  124. package/src/reducers/dist/vis-state-updaters.js +3 -12
  125. package/src/reducers/dist/vis-state.d.ts +4 -4
  126. package/src/reducers/package.json +16 -16
  127. package/src/reducers/src/index.ts +1 -0
  128. package/src/reducers/src/layer-utils.ts +22 -4
  129. package/src/reducers/src/map-style-updaters.ts +16 -8
  130. package/src/reducers/src/vis-state-updaters.ts +0 -8
  131. package/src/schemas/package.json +7 -7
  132. package/src/styles/dist/base.d.ts +4 -0
  133. package/src/styles/dist/base.js +10 -5
  134. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/15/ff/0d5d265a9aac90d367588258e15bade446b406199e4f89eebe00a15f0ae15cb46533e3490a435bd3c2028c11baf5cf980129b56fbc9df269850d75f36930 +1 -0
  135. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/4b/ee/673360e4b8362fe8483486f8fa132c6b9d9abf45a240d54f76bc3d60d2b01e530c4efd92baad3479d54e7fa48474cb9d52e633ceb9dfec546588b6981cfc +1 -0
  136. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a5/1f/7149cdcef3cb8e64025c197e3a6a47482bf1027c0991969349c7f1ec68e76f091966010bb72674850b48ed8361c1953b1b08da7dd66143642b32ce467635 +1 -0
  137. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/b7/6d/49546dbc3e903a5e6771b0ead707e4f4605454ac2bc718d0f0bf801b96a7 +2 -0
  138. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/bf/bd/77b9889db712486a6db4f34442ad9371c8a7a6a8ea20d4d0f484df4dc841 +2 -0
  139. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c3/91/45735456a88c6ecc20a341b94971da9d02562b936da95a407f157b2f0ece +2 -0
  140. package/src/styles/package.json +2 -2
  141. package/src/styles/src/base.ts +6 -0
  142. package/src/styles/umd/keplergl.min.js +1 -1
  143. package/src/table/dist/{src/table/src/kepler-table.d.ts → kepler-table.d.ts} +2 -2
  144. package/src/table/dist/kepler-table.js +6 -4
  145. package/src/table/dist/tileset/vector-tile-utils.js +2 -2
  146. package/src/table/package.json +5 -5
  147. package/src/table/src/kepler-table.ts +4 -3
  148. package/src/table/src/tileset/vector-tile-utils.ts +1 -1
  149. package/src/table/tsconfig.production.json +2 -1
  150. package/src/tasks/package.json +2 -2
  151. package/src/types/effects.d.ts +1 -0
  152. package/src/types/package.json +1 -1
  153. package/src/utils/dist/application-config.d.ts +1 -0
  154. package/src/utils/dist/application-config.js +4 -4
  155. package/src/utils/package.json +4 -4
  156. package/src/utils/src/application-config.ts +6 -0
  157. package/umd/keplergl.min.js +1226 -1251
  158. package/src/table/dist/src/table/src/tileset/vector-tile-utils.spec.d.ts +0 -1
  159. package/src/table/dist/test/fixtures/tile-metadata.d.ts +0 -65
  160. /package/src/table/dist/{src/table/src/dataset-utils.d.ts → dataset-utils.d.ts} +0 -0
  161. /package/src/table/dist/{src/table/src/gpu-filter-utils.d.ts → gpu-filter-utils.d.ts} +0 -0
  162. /package/src/table/dist/{src/table/src/index.d.ts → index.d.ts} +0 -0
  163. /package/src/table/dist/{src/table/src/tileset → tileset}/raster-tile-utils.d.ts +0 -0
  164. /package/src/table/dist/{src/table/src/tileset → tileset}/tileset-utils.d.ts +0 -0
  165. /package/src/table/dist/{src/table/src/tileset → tileset}/vector-tile-utils.d.ts +0 -0
@@ -4,9 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports["default"] = exports.LOAD_ELEVATION_AFTER_ZOOM = void 0;
8
- exports.getMercatorModelMatrix = getMercatorModelMatrix;
9
- exports.isTilesBeingLoaded = void 0;
7
+ exports.getNumRasterTilesBeingLoaded = exports["default"] = exports.LOAD_ELEVATION_AFTER_ZOOM = void 0;
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -21,8 +19,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
21
19
  var _typed = require("@deck.gl/core/typed");
22
20
  var _typed2 = require("@deck.gl/geo-layers/typed");
23
21
  var _pmtiles = require("@loaders.gl/pmtiles");
24
- var _lodash = _interopRequireDefault(require("lodash.memoize"));
25
- var _math = require("math.gl");
22
+ var _memoize = _interopRequireDefault(require("lodash/memoize"));
26
23
  var _typed3 = require("@deck.gl/layers/typed");
27
24
  var _constants = require("@kepler.gl/constants");
28
25
  var _deckglLayers = require("@kepler.gl/deckgl-layers");
@@ -49,9 +46,9 @@ var devicePixelRatio = Math.min(2, typeof window !== 'undefined' && window.devic
49
46
  // Global counter that represents the number of tiles currently being loaded across all the raster tile layers
50
47
  var tilesBeingLoaded = 0;
51
48
 
52
- // This is a temp solution, as we don't have proper logic to track loading of asycn layers atm in Kepler.gl
53
- var isTilesBeingLoaded = exports.isTilesBeingLoaded = function isTilesBeingLoaded() {
54
- return tilesBeingLoaded > 0;
49
+ // This is a temp solution to track loading
50
+ var getNumRasterTilesBeingLoaded = exports.getNumRasterTilesBeingLoaded = function getNumRasterTilesBeingLoaded() {
51
+ return tilesBeingLoaded;
55
52
  };
56
53
  var LOAD_ELEVATION_AFTER_ZOOM = exports.LOAD_ELEVATION_AFTER_ZOOM = 8.9;
57
54
  var getShouldLoadTerrain = function getShouldLoadTerrain(stac, mapState, visConfig) {
@@ -86,7 +83,7 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
86
83
  var _presetOptions$single, _presetOptions$single2;
87
84
  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
85
  };
89
- _this.getDataSourceParams = (0, _lodash["default"])(function (stac, preset, presetOptions) {
86
+ _this.getDataSourceParams = (0, _memoize["default"])(function (stac, preset, presetOptions) {
90
87
  return (0, _rasterTileUtils.getDataSourceParams)(stac, preset, presetOptions);
91
88
  }, resolver);
92
89
  _this.meta = {
@@ -365,7 +362,8 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
365
362
  var _data$dataset2,
366
363
  _this2 = this;
367
364
  var data = opts.data,
368
- mapState = opts.mapState;
365
+ mapState = opts.mapState,
366
+ experimentalContext = opts.experimentalContext;
369
367
  var stac = data === null || data === void 0 || (_data$dataset2 = data.dataset) === null || _data$dataset2 === void 0 ? void 0 : _data$dataset2.metadata;
370
368
 
371
369
  // If a tabular dataset is loaded, and then the layer type is switched from Point to Raster Tile
@@ -378,6 +376,7 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
378
376
  id = _this$getDefaultDeckL.id,
379
377
  opacity = _this$getDefaultDeckL.opacity,
380
378
  visible = _this$getDefaultDeckL.visible;
379
+ var hasShadowEffect = experimentalContext === null || experimentalContext === void 0 ? void 0 : experimentalContext.hasShadowEffect;
381
380
  var preset = visConfig.preset,
382
381
  colormapId = visConfig.colormapId,
383
382
  linearRescaling = visConfig.linearRescaling,
@@ -478,7 +477,8 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
478
477
  dataType: dataType,
479
478
  minCategoricalBandValue: minCategoricalBandValue,
480
479
  maxCategoricalBandValue: maxCategoricalBandValue,
481
- hasCategoricalColorMap: Boolean(categoricalColorMap)
480
+ hasCategoricalColorMap: Boolean(categoricalColorMap),
481
+ hasShadowEffect: hasShadowEffect
482
482
  }));
483
483
  return [tileLayer];
484
484
  }
@@ -561,6 +561,7 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
561
561
  }
562
562
  _context.next = 11;
563
563
  return (0, _image.loadTerrain)({
564
+ boundsForGeometry: [west, north, east, south],
564
565
  index: props.index,
565
566
  signal: props.signal,
566
567
  rasterTileServerUrls: props.stac.rasterTileServerUrls || []
@@ -587,6 +588,7 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
587
588
  minValue: props.minCategoricalBandValue,
588
589
  maxValue: props.maxCategoricalBandValue
589
590
  }), shouldLoadTerrain && LOAD_ELEVATION_AFTER_ZOOM < zoom ? (0, _image.loadTerrain)({
591
+ boundsForGeometry: [west, north, east, south],
590
592
  index: props.index,
591
593
  signal: props.signal,
592
594
  rasterTileServerUrls: props.stac.rasterTileServerUrls || []
@@ -659,6 +661,7 @@ var RasterTileLayer = exports["default"] = /*#__PURE__*/function (_KeplerLayer)
659
661
  }
660
662
  _context2.next = 13;
661
663
  return (0, _image.loadTerrain)({
664
+ boundsForGeometry: [west, north, east, south],
662
665
  index: props.index,
663
666
  signal: props.signal,
664
667
  rasterTileServerUrls: metadata.rasterTileServerUrls
@@ -765,8 +768,9 @@ function renderSubLayersStac(props) {
765
768
  }),
766
769
  modules = _getModules.modules,
767
770
  moduleProps = _getModules.moduleProps;
771
+ var idSuffix = props.hasShadowEffect ? 'shadow' : '';
768
772
  return terrain ? new _deckglLayers.RasterMeshLayer(props, {
769
- id: "raster-3d-layer-".concat(props.id),
773
+ id: "raster-3d-layer-".concat(props.id, "-").concat(idSuffix),
770
774
  // Dummy data
771
775
  data: [1],
772
776
  mesh: terrain,
@@ -774,16 +778,12 @@ function renderSubLayersStac(props) {
774
778
  modules: modules,
775
779
  moduleProps: moduleProps,
776
780
  getPolygonOffset: null,
777
- coordinateSystem: _typed.COORDINATE_SYSTEM.CARTESIAN,
778
- modelMatrix: getMercatorModelMatrix(tile.index),
779
- getPosition: function getPosition() {
780
- return [0, 0, 0];
781
- },
781
+ coordinateSystem: _typed.COORDINATE_SYSTEM.LNGLAT,
782
782
  // Color to use if surfaceImage is unavailable
783
783
  getColor: [255, 255, 255]
784
784
  // material: false
785
785
  }) : new _deckglLayers.RasterLayer(props, {
786
- id: "raster-2d-layer-".concat(props.id),
786
+ id: "raster-2d-layer-".concat(props.id, "-").concat(idSuffix),
787
787
  images: images,
788
788
  modules: modules,
789
789
  moduleProps: moduleProps,
@@ -791,17 +791,6 @@ function renderSubLayersStac(props) {
791
791
  _imageCoordinateSystem: _typed.COORDINATE_SYSTEM.CARTESIAN
792
792
  });
793
793
  }
794
-
795
- // From https://github.com/uber/deck.gl/blob/b1901b11cbdcb82b317e1579ff236d1ca1d03ea7/modules/geo-layers/src/mvt-tile-layer/mvt-tile-layer.js#L41-L52
796
- function getMercatorModelMatrix(tile) {
797
- var WORLD_SIZE = 512;
798
- var worldScale = Math.pow(2, tile.z);
799
- var xScale = WORLD_SIZE / worldScale;
800
- var yScale = -xScale;
801
- var xOffset = WORLD_SIZE * tile.x / worldScale;
802
- var yOffset = WORLD_SIZE * (1 - tile.y / worldScale);
803
- return new _math.Matrix4().translate([xOffset, yOffset, 0]).scale([xScale, yScale, 1]);
804
- }
805
794
  function renderSubLayersPMTiles(props) {
806
795
  var _props$data;
807
796
  var tileSource = props.tileSource,
@@ -875,11 +864,7 @@ function getRasterLayerPMTiles(props) {
875
864
  modules: modules,
876
865
  moduleProps: moduleProps,
877
866
  getPolygonOffset: null,
878
- coordinateSystem: _typed.COORDINATE_SYSTEM.CARTESIAN,
879
- modelMatrix: getMercatorModelMatrix(tile.index),
880
- getPosition: function getPosition() {
881
- return [0, 0, 0];
882
- },
867
+ coordinateSystem: _typed.COORDINATE_SYSTEM.LNGLAT,
883
868
  // Color to use if surfaceImage is unavailable
884
869
  getColor: [255, 255, 255]
885
870
  // material: false
@@ -893,4 +878,4 @@ function getRasterLayerPMTiles(props) {
893
878
  _imageCoordinateSystem: _typed.COORDINATE_SYSTEM.CARTESIAN
894
879
  });
895
880
  }
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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
881
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3R5cGVkMiIsIl9wbXRpbGVzIiwiX21lbW9pemUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3R5cGVkMyIsIl9jb25zdGFudHMiLCJfZGVja2dsTGF5ZXJzIiwiX2NvbW1vblV0aWxzIiwiX3V0aWxzIiwiX2NvbmZpZyIsIl9ncHVVdGlscyIsIl9pbWFnZSIsIl9yYXN0ZXJUaWxlSWNvbiIsIl9yYXN0ZXJUaWxlVXRpbHMiLCJfYmFzZUxheWVyIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJyIiwiZSIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJvd25LZXlzIiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsImRldmljZVBpeGVsUmF0aW8iLCJNYXRoIiwibWluIiwid2luZG93IiwidGlsZXNCZWluZ0xvYWRlZCIsImdldE51bVJhc3RlclRpbGVzQmVpbmdMb2FkZWQiLCJleHBvcnRzIiwiTE9BRF9FTEVWQVRJT05fQUZURVJfWk9PTSIsImdldFNob3VsZExvYWRUZXJyYWluIiwic3RhYyIsIm1hcFN0YXRlIiwidmlzQ29uZmlnIiwiX3N0YWMkcmFzdGVyVGlsZVNlcnZlIiwicmFzdGVyVGlsZVNlcnZlclVybHMiLCJlbmFibGVUZXJyYWluIiwiZHJhZ1JvdGF0ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwicmFzdGVyU2VydmVyU3VwcG9ydHNFbGV2YXRpb24iLCJSYXN0ZXJUaWxlTGF5ZXIiLCJfS2VwbGVyTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIkluZmluaXR5IiwicmVnaXN0ZXJWaXNDb25maWciLCJyYXN0ZXJWaXNDb25maWdzIiwicmVzb2x2ZXIiLCJwcmVzZXQiLCJwcmVzZXRPcHRpb25zIiwiX3ByZXNldE9wdGlvbnMkc2luZ2xlIiwiX3ByZXNldE9wdGlvbnMkc2luZ2xlMiIsImNvbmNhdCIsImlkIiwiY29sbGVjdGlvbiIsInNpbmdsZUJhbmQiLCJhc3NldElkIiwiYmFuZEluZGV4IiwiZ2V0RGF0YVNvdXJjZVBhcmFtcyIsIm1lbW9pemUiLCJtZXRhIiwielJhbmdlIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJnZXQiLCJMQVlFUl9UWVBFUyIsInJhc3RlclRpbGUiLCJSYXN0ZXJJY29uIiwiRGF0YXNldFR5cGUiLCJSQVNURVJfVElMRSIsImNhdGVnb3JpY2FsQ29sb3JMZWdlbmRzIiwiY29uZmlnIiwiY29sb3JSYW5nZSIsImNvbG9yTGVnZW5kcyIsImNvbG9yIiwiZ2V0RGVmYXVsdExheWVyQ29uZmlnIiwiY29sb3JGaWVsZCIsImFuYWx5emVyVHlwZSIsImZvcm1hdCIsInR5cGUiLCJmaWVsZElkeCIsInZhbHVlQWNjZXNzb3IiLCJkaXNwbGF5TmFtZSIsImdldEhvdmVyRGF0YSIsInNob3VsZFJlbmRlckxheWVyIiwiaXNWaXNpYmxlIiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJvbGRMYXllckRhdGEiLCJfZGF0YXNldCRtZXRhZGF0YSIsImRhdGFJZCIsIm5vdE51bGxvclVuZGVmaW5lZCIsImRhdGFzZXQiLCJkYXRhVXBkYXRlVHJpZ2dlcnMiLCJnZXREYXRhVXBkYXRlVHJpZ2dlcnMiLCJ0cmlnZ2VyQ2hhbmdlZCIsImdldENoYW5nZWRUcmlnZ2VycyIsImdldE1ldGEiLCJ1cGRhdGVMYXllck1ldGEiLCJ0aWxlU291cmNlIiwibWV0YWRhdGEiLCJwbXRpbGVzVHlwZSIsIlBNVGlsZXNUeXBlIiwiUkFTVEVSIiwibWV0YWRhdGFVcmwiLCJfcmVmIiwib2xkRGF0YXNldCIsIm9sZFRpbGVTb3VyY2UiLCJkYXRhIiwiUE1UaWxlc1NvdXJjZSIsImNyZWF0ZURhdGFTb3VyY2UiLCJ1cGRhdGVNZXRhIiwiYm91bmRzIiwiZ2V0U1RBQ0JvdW5kcyIsInNldEluaXRpYWxMYXllckNvbmZpZyIsInVwZGF0ZUxheWVyVmlzQ29uZmlnIiwidXNlU1RBQ1NlYXJjaGluZyIsImF2YWlsYWJsZUJhbmRzIiwiZ2V0RU9CYW5kcyIsInNpbmdsZUJhbmROYW1lIiwiYXZhaWxhYmxlUHJlc2V0cyIsImZpbHRlckF2YWlsYWJsZVByZXNldHMiLCJQUkVTRVRfT1BUSU9OUyIsImluY2x1ZGVzIiwidmlzQ29uZmlnU2V0dGluZ3MiLCJkZWZhdWx0VmFsdWUiLCJjb2xvckRlZmF1bHRzIiwiREFUQV9TT1VSQ0VfQ09MT1JfREVGQVVMVFMiLCJvblZpZXdwb3J0TG9hZCIsInRpbGVzIiwidXBkYXRlTWluTWF4UGl4ZWxWYWx1ZSIsIm5ld1pSYW5nZSIsImNvbXB1dGVaUmFuZ2UiLCJfZ2V0TWluTWF4RnJvbVRpbGUyREgiLCJnZXRNaW5NYXhGcm9tVGlsZTJESGVhZGVycyIsIl9nZXRNaW5NYXhGcm9tVGlsZTJESDIiLCJfc2xpY2VkVG9BcnJheTIiLCJtYXgiLCJtaW5WaWV3cG9ydFBpeGVsVmFsdWUiLCJtYXhWaWV3cG9ydFBpeGVsVmFsdWUiLCJnZXRNaW5NYXhQaXhlbFZhbHVlcyIsImltYWdlcyIsIm1pblBpeGVsVmFsdWUiLCJtYXhQaXhlbFZhbHVlIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJpbWFnZSIsIl9nZXRJbWFnZU1pbk1heCIsImdldEltYWdlTWluTWF4IiwiX2dldEltYWdlTWluTWF4MiIsImVyciIsInJlbmRlckxheWVyIiwib3B0cyIsIl9kYXRhJGRhdGFzZXQiLCJyZW5kZXJQTVRpbGVzTGF5ZXIiLCJyZW5kZXJTdGFjTGF5ZXIiLCJfZGF0YSRkYXRhc2V0MiIsIl90aGlzMiIsImV4cGVyaW1lbnRhbENvbnRleHQiLCJzdGFjX3ZlcnNpb24iLCJfdGhpcyRnZXREZWZhdWx0RGVja0wiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJvcGFjaXR5IiwidmlzaWJsZSIsImhhc1NoYWRvd0VmZmVjdCIsImNvbG9ybWFwSWQiLCJsaW5lYXJSZXNjYWxpbmciLCJsaW5lYXJSZXNjYWxpbmdGYWN0b3IiLCJub25MaW5lYXJSZXNjYWxpbmciLCJnYW1tYUNvbnRyYXN0RmFjdG9yIiwic2lnbW9pZGFsQ29udHJhc3RGYWN0b3IiLCJzaWdtb2lkYWxCaWFzRmFjdG9yIiwic2F0dXJhdGlvblZhbHVlIiwiZmlsdGVyRW5hYmxlZCIsImZpbHRlclJhbmdlIiwic3RhY1NlYXJjaFByb3ZpZGVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsIl9zdGFjUXVlcnkiLCJjYXRlZ29yaWNhbENvbG9yTWFwIiwiY29sb3JNYXAiLCJkeW5hbWljQ29sb3IiLCJzaG91bGRMb2FkVGVycmFpbiIsIkRhdGUiLCJiYW5kQ29tYmluYXRpb24iLCJnZXRTaW5nbGVCYW5kUHJlc2V0T3B0aW9ucyIsImRhdGFTb3VyY2VQYXJhbXMiLCJtaW5ab29tIiwibWF4Wm9vbSIsImdsb2JhbEJvdW5kcyIsImxvYWRBc3NldElkcyIsImxvYWRCYW5kSW5kZXhlcyIsInJlbmRlckJhbmRJbmRleGVzIiwiZGF0YVR5cGUiLCJkc01pblBpeGVsVmFsdWUiLCJkc01heFBpeGVsVmFsdWUiLCJtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSIsIm1heENhdGVnb3JpY2FsQmFuZFZhbHVlIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRUaWxlRGF0YUN1c3RvbVByb3BzIiwidGlsZUxheWVyIiwiVGlsZUxheWVyIiwidGlsZVNpemUiLCJnZXRUaWxlRGF0YSIsImFyZ3MiLCJiaW5kIiwicmVuZGVyU3ViTGF5ZXJzIiwicmVuZGVyU3ViTGF5ZXJzU3RhYyIsIm1heFJlcXVlc3RzIiwiZ2V0TWF4UmVxdWVzdHMiLCJ1cGRhdGVUcmlnZ2VycyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZWZpbmVtZW50U3RyYXRlZ3kiLCJoYXNDYXRlZ29yaWNhbENvbG9yTWFwIiwiX2RhdGEkZGF0YXNldDMiLCJfdGhpczMiLCJfdGhpcyRnZXREZWZhdWx0RGVja0wyIiwic2hvd1RpbGVCb3JkZXJzIiwiZ2V0VGlsZURhdGFQTVRpbGVzIiwicGlja2FibGUiLCJhdXRvSGlnaGxpZ2h0Iiwiem9vbU9mZnNldCIsInJlbmRlclN1YkxheWVyc1BNVGlsZXMiLCJfZ2V0VGlsZURhdGEiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9wcm9wcyRiYm94Iiwid2VzdCIsInNvdXRoIiwiZWFzdCIsIm5vcnRoIiwiem9vbSIsImFzc2V0UmVxdWVzdHMiLCJ0ZXJyYWluIiwiX3lpZWxkJFByb21pc2UkYWxsIiwiX3lpZWxkJFByb21pc2UkYWxsMiIsIl90ZXJyYWluIiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWIiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWMiIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsImJib3giLCJpbmRleCIsInoiLCJiYm94SW50ZXJzZWN0cyIsImFicnVwdCIsImdldFNUQUNJbWFnZVJlcXVlc3RzIiwic2VudCIsInQwIiwibG9hZFRlcnJhaW4iLCJib3VuZHNGb3JHZW9tZXRyeSIsInNpZ25hbCIsIlByb21pc2UiLCJhbGwiLCJsb2FkSW1hZ2VzIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsImltYWdlQmFuZHMiLCJ0MSIsInN0b3AiLCJfeCIsIl9nZXRUaWxlRGF0YVBNVGlsZXMiLCJfY2FsbGVlMiIsIl9wcm9wcyRiYm94MiIsIl95aWVsZCRQcm9taXNlJGFsbDMiLCJfeWllbGQkUHJvbWlzZSRhbGw0IiwiX3RoaXMkZ2V0TWluTWF4UGl4ZWxWMyIsIl90aGlzJGdldE1pbk1heFBpeGVsVjQiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJfeDIiLCJfeDMiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJuZXdMYXllclByb3AiLCJsYWJlbCIsIktlcGxlckxheWVyIiwidGlsZSIsImdsb2JhbE1pblBpeGVsVmFsdWUiLCJnbG9iYWxNYXhQaXhlbFZhbHVlIiwidGlsZU1pblBpeGVsVmFsdWUiLCJ0aWxlTWF4UGl4ZWxWYWx1ZSIsIl9nZXRNb2R1bGVzIiwiZ2V0TW9kdWxlcyIsIm1vZHVsZXMiLCJtb2R1bGVQcm9wcyIsImlkU3VmZml4IiwiUmFzdGVyTWVzaExheWVyIiwibWVzaCIsImdldFBvbHlnb25PZmZzZXQiLCJjb29yZGluYXRlU3lzdGVtIiwiQ09PUkRJTkFURV9TWVNURU0iLCJMTkdMQVQiLCJnZXRDb2xvciIsIlJhc3RlckxheWVyIiwiX2ltYWdlQ29vcmRpbmF0ZVN5c3RlbSIsIkNBUlRFU0lBTiIsIl9wcm9wcyRkYXRhIiwiX3Byb3BzJHRpbGUiLCJfcHJvcHMkdGlsZSRiYm94IiwibGF5ZXJzIiwibWltZVR5cGUiLCJnZXRSYXN0ZXJMYXllclBNVGlsZXMiLCJib3JkZXJDb2xvciIsIlBhdGhMYXllciIsImdldFBhdGgiLCJkIiwid2lkdGhNaW5QaXhlbHMiLCJpbWFnZVJnYmEiLCJfZ2V0TW9kdWxlczIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmFzdGVyLXRpbGUvcmFzdGVyLXRpbGUtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtDT09SRElOQVRFX1NZU1RFTSwgTGF5ZXIgYXMgRGVja0xheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCB7VGlsZUxheWVyLCBHZW9Cb3VuZGluZ0JveH0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycy90eXBlZCc7XG5pbXBvcnQge1BNVGlsZXNTb3VyY2UsIFBNVGlsZXNUaWxlU291cmNlfSBmcm9tICdAbG9hZGVycy5nbC9wbXRpbGVzJztcbmltcG9ydCB7VGV4dHVyZTJEUHJvcHN9IGZyb20gJ0BsdW1hLmdsL3dlYmdsJztcbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcblxuaW1wb3J0IHtQYXRoTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycy90eXBlZCc7XG5pbXBvcnQge0RhdGFzZXRUeXBlLCBQTVRpbGVzVHlwZSwgTEFZRVJfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7UmFzdGVyTGF5ZXIsIFJhc3Rlck1lc2hMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcbmltcG9ydCB7XG4gIExheWVyQmFzZUNvbmZpZyxcbiAgTGF5ZXJDb2xvckNvbmZpZyxcbiAgTGF5ZXJIZWlnaHRDb25maWcsXG4gIFZpc3VhbENoYW5uZWwsXG4gIFZpc0NvbmZpZ0NvbG9yUmFuZ2UsXG4gIFZpc0NvbmZpZ1NlbGVjdGlvbixcbiAgVmlzQ29uZmlnQm9vbGVhbixcbiAgVmlzQ29uZmlnSW5wdXQsXG4gIFZpc0NvbmZpZ1JhbmdlLFxuICBWaXNDb25maWdOdW1iZXJcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0RhdGFzZXRzLCBLZXBsZXJUYWJsZSBhcyBLZXBsZXJEYXRhc2V0LCBWZWN0b3JUaWxlTWV0YWRhdGF9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7cmFzdGVyVmlzQ29uZmlncywgUFJFU0VUX09QVElPTlMsIERBVEFfU09VUkNFX0NPTE9SX0RFRkFVTFRTfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge2dldE1vZHVsZXN9IGZyb20gJy4vZ3B1LXV0aWxzJztcbmltcG9ydCB7Z2V0U1RBQ0ltYWdlUmVxdWVzdHMsIGxvYWRJbWFnZXMsIGxvYWRUZXJyYWlufSBmcm9tICcuL2ltYWdlJztcbmltcG9ydCBSYXN0ZXJJY29uIGZyb20gJy4vcmFzdGVyLXRpbGUtaWNvbic7XG5pbXBvcnQge1xuICBnZXREYXRhU291cmNlUGFyYW1zLFxuICBnZXRNYXhSZXF1ZXN0cyxcbiAgYmJveEludGVyc2VjdHMsXG4gIGNvbXB1dGVaUmFuZ2UsXG4gIGdldFNUQUNCb3VuZHMsXG4gIGdldEVPQmFuZHMsXG4gIGZpbHRlckF2YWlsYWJsZVByZXNldHMsXG4gIGdldFNpbmdsZUJhbmRQcmVzZXRPcHRpb25zLFxuICBnZXRJbWFnZU1pbk1heCxcbiAgZ2V0TWluTWF4RnJvbVRpbGUyREhlYWRlcnNcbn0gZnJvbSAnLi9yYXN0ZXItdGlsZS11dGlscyc7XG5pbXBvcnQge1xuICBHZXRUaWxlRGF0YUN1c3RvbVByb3BzLFxuICBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcyxcbiAgR2V0VGlsZURhdGFQcm9wcyxcbiAgUmVuZGVyU3ViTGF5ZXJzUHJvcHMsXG4gIEdldFRpbGVEYXRhT3V0cHV0LFxuICBEYXRhU291cmNlUGFyYW1zLFxuICBLZXBsZXJSYXN0ZXJEYXRhc2V0LFxuICBUaWxlMkRIZWFkZXIsXG4gIFByZXNldE9wdGlvbixcbiAgQ29tcGxldGVTVEFDT2JqZWN0XG59IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQge0ZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlfSBmcm9tICcuLi9sYXllci11dGlscyc7XG5pbXBvcnQge2RlZmF1bHQgYXMgS2VwbGVyTGF5ZXIsIExheWVyQmFzZUNvbmZpZ1BhcnRpYWx9IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuXG4vLyBBZGp1c3QgdGlsZVNpemUgdG8gZGV2aWNlUGl4ZWxSYXRpbywgYnV0IG5vdCBoaWdoZXIgdGhhbiAyIHRvIHJlZHVjZSByZXF1ZXN0cyB0byBzZXJ2ZXJcbmNvbnN0IGRldmljZVBpeGVsUmF0aW86IG51bWJlciA9IE1hdGgubWluKFxuICAyLFxuICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRldmljZVBpeGVsUmF0aW8pIHx8IDFcbik7XG5cbi8vIEdsb2JhbCBjb3VudGVyIHRoYXQgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHRpbGVzIGN1cnJlbnRseSBiZWluZyBsb2FkZWQgYWNyb3NzIGFsbCB0aGUgcmFzdGVyIHRpbGUgbGF5ZXJzXG5sZXQgdGlsZXNCZWluZ0xvYWRlZCA9IDA7XG5cbi8vIFRoaXMgaXMgYSB0ZW1wIHNvbHV0aW9uIHRvIHRyYWNrIGxvYWRpbmdcbmV4cG9ydCBjb25zdCBnZXROdW1SYXN0ZXJUaWxlc0JlaW5nTG9hZGVkID0gKCkgPT4ge1xuICByZXR1cm4gdGlsZXNCZWluZ0xvYWRlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBMT0FEX0VMRVZBVElPTl9BRlRFUl9aT09NID0gOC45O1xuXG5jb25zdCBnZXRTaG91bGRMb2FkVGVycmFpbiA9IChzdGFjLCBtYXBTdGF0ZSwgdmlzQ29uZmlnKSA9PiB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIC8vIHdlIG5lZWQgYSByYXN0ZXIgdGlsZSBzZXJ2ZXIgZm9yIGVsZXZhdGlvbnMgZXZlbiB3aGVuIHdlIHVzZXIgUE1UaWxlc1xuICAgIHN0YWMucmFzdGVyVGlsZVNlcnZlclVybHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgIC8vIGNoZWNrIHRoZSBzd2l0Y2ggZnJvbSB0aGUgbGF5ZXIgY29uZmlndXJhdG9yXG4gICAgICB2aXNDb25maWcuZW5hYmxlVGVycmFpbiAmJlxuICAgICAgLy8gZm9yIG5vdyBvbmx5IGluIDNEIG1vZGUsIG5vdCB0b3AgbW9kZVxuICAgICAgbWFwU3RhdGUuZHJhZ1JvdGF0ZSAmJlxuICAgICAgZ2V0QXBwbGljYXRpb25Db25maWcoKS5yYXN0ZXJTZXJ2ZXJTdXBwb3J0c0VsZXZhdGlvblxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnQ29tbW9uU2V0dGluZ3MgPSB7XG4gIG9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgZW5hYmxlVGVycmFpbjogVmlzQ29uZmlnQm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ1NldHRpbmdzID0gUmFzdGVyVGlsZUxheWVyVmlzQ29uZmlnQ29tbW9uU2V0dGluZ3MgJiB7XG4gIHByZXNldDogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICB1c2VTVEFDU2VhcmNoaW5nOiBWaXNDb25maWdCb29sZWFuO1xuICBzdGFjU2VhcmNoUHJvdmlkZXI6IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbiAgc3RhcnREYXRlOiBWaXNDb25maWdJbnB1dDtcbiAgZW5kRGF0ZTogVmlzQ29uZmlnSW5wdXQ7XG4gIGR5bmFtaWNDb2xvcjogVmlzQ29uZmlnQm9vbGVhbjtcbiAgY29sb3JtYXBJZDogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICBsaW5lYXJSZXNjYWxpbmdGYWN0b3I6IFZpc0NvbmZpZ1JhbmdlO1xuICBub25MaW5lYXJSZXNjYWxpbmc6IFZpc0NvbmZpZ0Jvb2xlYW47XG4gIGdhbW1hQ29udHJhc3RGYWN0b3I6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2lnbW9pZGFsQ29udHJhc3RGYWN0b3I6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2lnbW9pZGFsQmlhc0ZhY3RvcjogVmlzQ29uZmlnTnVtYmVyO1xuICBzYXR1cmF0aW9uVmFsdWU6IFZpc0NvbmZpZ051bWJlcjtcbiAgZmlsdGVyRW5hYmxlZDogVmlzQ29uZmlnQm9vbGVhbjtcbiAgZmlsdGVyUmFuZ2U6IFZpc0NvbmZpZ1JhbmdlO1xuICBfc3RhY1F1ZXJ5OiBWaXNDb25maWdJbnB1dDtcbiAgc2luZ2xlQmFuZE5hbWU6IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbn07XG5cbnR5cGUgUmFzdGVyVGlsZUxheWVyTWV0YSA9IHtcbiAgelJhbmdlOiBudW1iZXJbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYXN0ZXJUaWxlTGF5ZXIgZXh0ZW5kcyBLZXBsZXJMYXllciB7XG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIG1ldGE6IFJhc3RlclRpbGVMYXllck1ldGE7XG5cbiAgLyoqIE1pbiBiYW5kcyBpbWFnZSBkYXRhIHZhbHVlLCBiYXNlZCBvbiB0aGUgY3VycmVudCB2aWV3cG9ydCAqL1xuICBtaW5WaWV3cG9ydFBpeGVsVmFsdWUgPSBJbmZpbml0eTtcbiAgLyoqIE1heCBiYW5kcyBpbWFnZSBkYXRhIHZhbHVlLCBiYXNlZCBvbiB0aGUgY3VycmVudCB2aWV3cG9ydCAqL1xuICBtYXhWaWV3cG9ydFBpeGVsVmFsdWUgPSAtSW5maW5pdHk7XG4gIC8qKiBNZW1vaXplZCBtZXRob2QgdGhhdCBjYWxjdWxhdGVzIGRhdGEgc291cmNlIHBhcmFtcyAqL1xuXG4gIGdldERhdGFTb3VyY2VQYXJhbXM6IChcbiAgICBzdGFjOiBDb21wbGV0ZVNUQUNPYmplY3QsXG4gICAgcHJlc2V0OiBzdHJpbmcsXG4gICAgcHJlc2V0T3B0aW9uczogUHJlc2V0T3B0aW9uXG4gICkgPT4gRGF0YVNvdXJjZVBhcmFtcyB8IG51bGw7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhyYXN0ZXJWaXNDb25maWdzKTtcblxuICAgIC8vIE5vIHR3byBTVEFDIGlkcyBtYXkgYmUgdGhlIHNhbWUgd2l0aGluIGEgc2luZ2xlIGNvbGxlY3Rpb24sIHRob3VnaCBpdCdzIGNvbmNlaXZhYmx5IHBvc3NpYmxlXG4gICAgLy8gYWNyb3NzIG11bHRpcGxlIFNUQUMgY29sbGVjdGlvbnMgdGhlcmUgY291bGQgYmUgYW4gaWQgY29sbGlzaW9uLiBOb3RlOiBTVEFDIENvbGxlY3Rpb25cbiAgICAvLyBvYmplY3RzIGRvbid0IGhhdmUgYSBgY29sbGVjdGlvbmAga2V5OyBTVEFDIEl0ZW0gb2JqZWN0cyBoYXZlIGEgYGNvbGxlY3Rpb25gIGtleSAod2hpY2hcbiAgICAvLyBtYXRjaGVzIHRoZSBjb2xsZWN0aW9uJ3MgYGlkYCkuXG4gICAgY29uc3QgcmVzb2x2ZXIgPSAoc3RhYzogQ29tcGxldGVTVEFDT2JqZWN0LCBwcmVzZXQ6IHN0cmluZywgcHJlc2V0T3B0aW9uczogUHJlc2V0T3B0aW9uKSA9PlxuICAgICAgYCR7c3RhYy5pZH0tJHtzdGFjLmNvbGxlY3Rpb259LSR7cHJlc2V0fS0ke3ByZXNldE9wdGlvbnMuc2luZ2xlQmFuZD8uYXNzZXRJZH0tJHtwcmVzZXRPcHRpb25zLnNpbmdsZUJhbmQ/LmJhbmRJbmRleH1gO1xuICAgIHRoaXMuZ2V0RGF0YVNvdXJjZVBhcmFtcyA9IG1lbW9pemUoXG4gICAgICAoc3RhYywgcHJlc2V0LCBwcmVzZXRPcHRpb25zKSA9PiBnZXREYXRhU291cmNlUGFyYW1zKHN0YWMsIHByZXNldCwgcHJlc2V0T3B0aW9ucyksXG4gICAgICByZXNvbHZlclxuICAgICk7XG5cbiAgICB0aGlzLm1ldGEgPSB7elJhbmdlOiBudWxsfTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldDogS2VwbGVyRGF0YXNldCk6IEZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlIHtcbiAgICBpZiAoZGF0YXNldC50eXBlICE9PSBEYXRhc2V0VHlwZS5SQVNURVJfVElMRSkge1xuICAgICAgcmV0dXJuIHtwcm9wczogW119O1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0xheWVyUHJvcCA9IHtcbiAgICAgIGRhdGFJZDogZGF0YXNldC5pZCxcbiAgICAgIGxhYmVsOiBkYXRhc2V0LmxhYmVsLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgfTtcblxuICAgIHJldHVybiB7cHJvcHM6IFtuZXdMYXllclByb3BdfTtcbiAgfVxuXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIExBWUVSX1RZUEVTLnJhc3RlclRpbGU7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnUmFzdGVyIFRpbGUnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpOiBLZXBsZXJMYXllclsnbGF5ZXJJY29uJ10ge1xuICAgIHJldHVybiBSYXN0ZXJJY29uO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRlZERhdGFzZXRUeXBlcygpOiBEYXRhc2V0VHlwZVtdIHtcbiAgICByZXR1cm4gW0RhdGFzZXRUeXBlLlJBU1RFUl9USUxFXTtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpOiBSZWNvcmQ8c3RyaW5nLCBWaXN1YWxDaGFubmVsPiB7XG4gICAgY29uc3Qge1xuICAgICAgdmlzQ29uZmlnOiB7XG4gICAgICAgIGNvbG9yUmFuZ2U6IHtjb2xvckxlZ2VuZHM6IGNhdGVnb3JpY2FsQ29sb3JMZWdlbmRzfVxuICAgICAgfVxuICAgIH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoY2F0ZWdvcmljYWxDb2xvckxlZ2VuZHMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOiBzdXBlci52aXN1YWxDaGFubmVscy5jb2xvclxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIGdldCByZXF1aXJlRGF0YSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldERlZmF1bHRMYXllckNvbmZpZyhcbiAgICBwcm9wczogTGF5ZXJCYXNlQ29uZmlnUGFydGlhbFxuICApOiBMYXllckJhc2VDb25maWcgJiBQYXJ0aWFsPExheWVyQ29sb3JDb25maWcgJiBMYXllckhlaWdodENvbmZpZz4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5nZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHMpLFxuICAgICAgY29sb3JGaWVsZDoge1xuICAgICAgICBhbmFseXplclR5cGU6ICcnLFxuICAgICAgICBuYW1lOiAnQ2F0ZWdvcnknLFxuICAgICAgICBmb3JtYXQ6ICcnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZmllbGRJZHg6IC0xLFxuICAgICAgICB2YWx1ZUFjY2Vzc29yOiAoKSA9PiAnJyxcbiAgICAgICAgZGlzcGxheU5hbWU6ICdDYXRlZ29yeSdcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gV2UgY2FuIHJlbmRlciB3aXRob3V0IGNvbHVtbnMsIHNvIHdlIHJlZGVmaW5lIHRoaXMgbWV0aG9kXG4gIHNob3VsZFJlbmRlckxheWVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMudHlwZSAmJiB0aGlzLmNvbmZpZy5pc1Zpc2libGUpO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzOiBEYXRhc2V0cywgb2xkTGF5ZXJEYXRhPzogYW55KSB7XG4gICAgY29uc3Qge2RhdGFJZH0gPSB0aGlzLmNvbmZpZztcbiAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChkYXRhSWQpKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgLy8gY2FsbCB1cGRhdGVEYXRhIHRvIHVwZGF0ZUxheWVyTWV0YVxuICAgIGNvbnN0IGRhdGFVcGRhdGVUcmlnZ2VycyA9IHRoaXMuZ2V0RGF0YVVwZGF0ZVRyaWdnZXJzKGRhdGFzZXQpO1xuICAgIGNvbnN0IHRyaWdnZXJDaGFuZ2VkID0gdGhpcy5nZXRDaGFuZ2VkVHJpZ2dlcnMoZGF0YVVwZGF0ZVRyaWdnZXJzKTtcblxuICAgIGlmICh0cmlnZ2VyQ2hhbmdlZCAmJiB0cmlnZ2VyQ2hhbmdlZC5nZXRNZXRhKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhc2V0IGFzIEtlcGxlclJhc3RlckRhdGFzZXQpO1xuICAgIH1cblxuICAgIGxldCB0aWxlU291cmNlOiBQTVRpbGVzVGlsZVNvdXJjZSB8IG51bGwgPSBudWxsO1xuICAgIGlmIChkYXRhc2V0Lm1ldGFkYXRhPy5wbXRpbGVzVHlwZSA9PT0gUE1UaWxlc1R5cGUuUkFTVEVSKSB7XG4gICAgICBjb25zdCBtZXRhZGF0YVVybCA9IGRhdGFzZXQubWV0YWRhdGEubWV0YWRhdGFVcmw7XG4gICAgICAvLyB1c2UgdGhlIG9sZCB0aWxlIHNvdXJjZSBpZiBpdCBleGlzdHMgYW5kIG1hdGNoZXMgdGhlIG5ldyBtZXRhZGF0YVVybFxuICAgICAgY29uc3Qge2RhdGFzZXQ6IG9sZERhdGFzZXQsIHRpbGVTb3VyY2U6IG9sZFRpbGVTb3VyY2V9ID0gb2xkTGF5ZXJEYXRhIHx8IHt9O1xuICAgICAgaWYgKG9sZERhdGFzZXQgPT09IGRhdGFzZXQgJiYgb2xkVGlsZVNvdXJjZT8uZGF0YSA9PT0gbWV0YWRhdGFVcmwpIHtcbiAgICAgICAgdGlsZVNvdXJjZSA9IG9sZExheWVyRGF0YS50aWxlU291cmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGlsZVNvdXJjZSA9IG1ldGFkYXRhVXJsID8gUE1UaWxlc1NvdXJjZS5jcmVhdGVEYXRhU291cmNlKG1ldGFkYXRhVXJsLCB7fSkgOiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7ZGF0YXNldCwgdGlsZVNvdXJjZX07XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YXNldDogS2VwbGVyUmFzdGVyRGF0YXNldCk6IHZvaWQge1xuICAgIGlmIChkYXRhc2V0LnR5cGUgIT09IERhdGFzZXRUeXBlLlJBU1RFUl9USUxFKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhYyA9IGRhdGFzZXQubWV0YWRhdGE7XG4gICAgaWYgKHN0YWMucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTWV0YSh7XG4gICAgICAgIGJvdW5kczogc3RhYy5ib3VuZHNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGJvdW5kcyA9IGdldFNUQUNCb3VuZHMoc3RhYyk7XG4gICAgaWYgKGJvdW5kcykge1xuICAgICAgLy8gSWYgYSBTVEFDIEl0ZW0gKGkuZS4gc3RhYy50eXBlID09PSAnRmVhdHVyZScpLCB0aGVuIHNldCBtYXAgYm91bmRzLlxuICAgICAgLy8gQnV0IHdlIGRvbid0IHdhbnQgdG8gc2V0IGJvdW5kcyBmb3IgTGFuZHNhdCBvciBTZW50aW5lbCBiZWNhdXNlIGl0IHdvdWxkIHpvb20gb3V0IHRvIHpvb21cbiAgICAgIC8vIDAsIGFuZCB3ZSBkb24ndCBoYXZlIGxvdy16b29tIHRpbGVzLlxuICAgICAgaWYgKHN0YWMudHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB3aGVuIGFkZGluZyBhIG5ldyBkYXRhc2V0XG4gICAqL1xuICBzZXRJbml0aWFsTGF5ZXJDb25maWcoZGF0YXNldDogS2VwbGVyRGF0YXNldCk6IFJhc3RlclRpbGVMYXllciB7XG4gICAgY29uc3Qgc3RhYyA9IGRhdGFzZXQ/Lm1ldGFkYXRhIGFzIEdldFRpbGVEYXRhQ3VzdG9tUHJvcHNbJ3N0YWMnXTtcblxuICAgIGlmICghc3RhYykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHN0YWMucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gV2hlbiBhIFNUQUMgQ29sbGVjdGlvbiBpcyBhZGRlZCwgdXNlU3RhY1NlYXJjaGluZyBzaG91bGQgYmUgdHJ1ZSB0byBwcmV2ZW50IGEgYmxhY2sgc2NyZWVuXG4gICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh7XG4gICAgICB1c2VTVEFDU2VhcmNoaW5nOiBzdGFjLnR5cGUgPT09ICdDb2xsZWN0aW9uJ1xuICAgIH0pO1xuXG4gICAgLy8gU2V0IHNpbmdsZUJhbmROYW1lIGlmIHRoZXJlIGlzIG9ubHkgb25lIGJhbmRcbiAgICBjb25zdCBhdmFpbGFibGVCYW5kcyA9IGdldEVPQmFuZHMoc3RhYykgfHwgW107XG4gICAgaWYgKGF2YWlsYWJsZUJhbmRzPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMudXBkYXRlTGF5ZXJWaXNDb25maWcoe3NpbmdsZUJhbmROYW1lOiBhdmFpbGFibGVCYW5kc1swXS5uYW1lfSk7XG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIHRoZSBwcmVzZXQgaWYgdGhlIGRlZmF1bHQgb25lIGlzIG5vdCBhbGxvd2VkXG4gICAgY29uc3QgYXZhaWxhYmxlUHJlc2V0cyA9IGZpbHRlckF2YWlsYWJsZVByZXNldHMoc3RhYywgUFJFU0VUX09QVElPTlMpO1xuICAgIGlmIChcbiAgICAgIGF2YWlsYWJsZVByZXNldHM/Lmxlbmd0aCAmJlxuICAgICAgIWF2YWlsYWJsZVByZXNldHM/LmluY2x1ZGVzKHRoaXMudmlzQ29uZmlnU2V0dGluZ3MucHJlc2V0LmRlZmF1bHRWYWx1ZSBhcyBzdHJpbmcpXG4gICAgKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKHtwcmVzZXQ6IGF2YWlsYWJsZVByZXNldHNbMF19KTtcbiAgICB9XG5cbiAgICAvLyBBcHBseSBpbXByb3ZlZCBpbWFnZSBwcm9jZXNzaW5nIHByb3BzIG9ubHkgZm9yIG5vbiBzaW5nbGUgYmFuZCBtb2Rlc1xuICAgIGNvbnN0IHByZXNldCA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5wcmVzZXQ7XG4gICAgY29uc3QgY29sb3JEZWZhdWx0cyA9IERBVEFfU09VUkNFX0NPTE9SX0RFRkFVTFRTW3N0YWMuaWRdO1xuICAgIGlmIChjb2xvckRlZmF1bHRzICYmIHByZXNldCAhPT0gJ3NpbmdsZUJhbmQnKSB7XG4gICAgICB0aGlzLnVwZGF0ZUxheWVyVmlzQ29uZmlnKGNvbG9yRGVmYXVsdHMpO1xuICAgIH1cblxuICAgIC8qXG4gICAgTGFuZFNhdCBzcGVjaWZpZXMgdGVtcG9yYWwgYm91bmRzIGJ1dCB0aGUgdmFsaWQgZGF0YSBpcyBhZnRlciBlbmQgZGF0ZVxuICAgIGNvbnN0IHVwZGF0ZWREYXRlcyA9IHRpbWVSYW5nZVRvU3RhY1RlbXBvcmFsSW50ZXJ2YWwoXG4gICAgICBzdGFjIGFzIFN0YWNUeXBlcy5TVEFDQ29sbGVjdGlvbixcbiAgICAgIHRoaXMuY29uZmlnLnZpc0NvbmZpZy5zdGFydERhdGUsXG4gICAgICB0aGlzLmNvbmZpZy52aXNDb25maWcuZW5kRGF0ZVxuICAgICk7XG4gICAgdGhpcy51cGRhdGVMYXllclZpc0NvbmZpZyh1cGRhdGVkRGF0ZXMpO1xuICAgICovXG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgelJhbmdlIG9mIHZpZXdwb3J0LiBUaGlzIGlzIG5lY2Vzc2FyeSBzbyB0aGF0IHRpbGVzIGluIGV4dHJ1ZGVkIG1vZGUgYXJlIHNob3duIHByb3Blcmx5XG4gICAqIGF0IGhpZ2ggZWxldmF0aW9uczogaHR0cHM6Ly9naXRodWIuY29tL2ZvdXJzcXVhcmUvc3R1ZGlvLW1vbm9yZXBvL3B1bGwvMTg5Mi9maWxlc1xuICAgKiBEZXJpdmVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2RlY2suZ2wvYmxvYi84ZDgyNGE0YjgzNmZlZTNiZmViZTZmYzk2MmUwZjAzZDhjMWRiZDBkL21vZHVsZXMvZ2VvLWxheWVycy9zcmMvdGVycmFpbi1sYXllci90ZXJyYWluLWxheWVyLmpzI0wxNzMtTDE5NlxuICAgKlxuICAgKiBAcGFyYW0gdGlsZXMgQXJyYXkgb2YgdGlsZXMgaW4gY3VycmVudCB2aWV3cG9ydFxuICAgKi9cbiAgb25WaWV3cG9ydExvYWQodGlsZXM6IChUaWxlMkRIZWFkZXIgfCBudWxsKVtdKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNaW5NYXhQaXhlbFZhbHVlKHRpbGVzKTtcbiAgICBjb25zdCBuZXdaUmFuZ2UgPSBjb21wdXRlWlJhbmdlKHRpbGVzKTtcbiAgICBpZiAoIW5ld1pSYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHt6UmFuZ2V9ID0gdGhpcy5tZXRhO1xuICAgIGlmICghelJhbmdlIHx8IG5ld1pSYW5nZVswXSA8IHpSYW5nZVswXSB8fCBuZXdaUmFuZ2VbMV0gPiB6UmFuZ2VbMV0pIHtcbiAgICAgIHRoaXMubWV0YS56UmFuZ2UgPSBuZXdaUmFuZ2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2aWV3cG9ydC1yZWxhdGVkIG1pblB4ZWxWYWx1ZSBhbmQgbWF4UGl4ZWxWYWx1ZVxuICAgKiBAcGFyYW0gdGlsZXMgLSBkZWNrLmdsIHRpbGVzXG4gICAqL1xuICB1cGRhdGVNaW5NYXhQaXhlbFZhbHVlKHRpbGVzOiAoVGlsZTJESGVhZGVyIHwgbnVsbClbXSk6IHZvaWQge1xuICAgIGNvbnN0IFttaW4sIG1heF0gPSBnZXRNaW5NYXhGcm9tVGlsZTJESGVhZGVycyh0aWxlcyk7XG4gICAgdGhpcy5taW5WaWV3cG9ydFBpeGVsVmFsdWUgPSBtaW47XG4gICAgdGhpcy5tYXhWaWV3cG9ydFBpeGVsVmFsdWUgPSBtYXg7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIG1pbiBhbmQgbWF4IHZhbHVlcyBvZiBpbnB1dCByYXN0ZXIgYmFuZCBpbWFnZSBwcm9wZXJ0aWVzXG4gICAqIGFuZCB1cGRhdGUgYG1pbkJhbmRzVmFsdWVgIGFuZCBgbWF4QmFuZHNWYWx1ZWBcbiAgICogQHBhcmFtIGltYWdlcyAtIHJhc3RlciBiYW5kIGltYWdlIHByb3BlcnRpZXNcbiAgICogQHJldHVybiBbbWluLCBtYXhdIHBpeGVsIHZhbHVlcyBmb3IgdGhlIHRpbGVcbiAgICovXG4gIGdldE1pbk1heFBpeGVsVmFsdWVzKGltYWdlczogVGV4dHVyZTJEUHJvcHNbXSB8IG51bGwpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBsZXQgbWluUGl4ZWxWYWx1ZSA9IEluZmluaXR5O1xuICAgIGxldCBtYXhQaXhlbFZhbHVlID0gLUluZmluaXR5O1xuICAgIGlmIChpbWFnZXMpIHtcbiAgICAgIGZvciAoY29uc3QgaW1hZ2Ugb2YgaW1hZ2VzKSB7XG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBnZXRJbWFnZU1pbk1heChpbWFnZS5kYXRhKTtcbiAgICAgICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgbWluUGl4ZWxWYWx1ZSA9IE1hdGgubWluKG1pbiwgbWluUGl4ZWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBtYXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgbWF4UGl4ZWxWYWx1ZSA9IE1hdGgubWF4KG1heCwgbWF4UGl4ZWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFttaW5QaXhlbFZhbHVlLCBtYXhQaXhlbFZhbHVlXTtcbiAgfVxuXG4gIC8vIGdlbmVyYXRlIGEgZGVjayBsYXllclxuICByZW5kZXJMYXllcihvcHRzKTogVGlsZUxheWVyPGFueT5bXSB7XG4gICAgY29uc3Qge2RhdGF9ID0gb3B0cztcblxuICAgIGlmIChkYXRhPy5kYXRhc2V0Py5tZXRhZGF0YT8ucG10aWxlc1R5cGUgPT09IFBNVGlsZXNUeXBlLlJBU1RFUikge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyUE1UaWxlc0xheWVyKG9wdHMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZW5kZXJTdGFjTGF5ZXIob3B0cyk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclN0YWNMYXllcihvcHRzKTogVGlsZUxheWVyPGFueT5bXSB7XG4gICAgY29uc3Qge2RhdGEsIG1hcFN0YXRlLCBleHBlcmltZW50YWxDb250ZXh0fSA9IG9wdHM7XG4gICAgY29uc3Qgc3RhYyA9IGRhdGE/LmRhdGFzZXQ/Lm1ldGFkYXRhIGFzIEdldFRpbGVEYXRhQ3VzdG9tUHJvcHNbJ3N0YWMnXTtcblxuICAgIC8vIElmIGEgdGFidWxhciBkYXRhc2V0IGlzIGxvYWRlZCwgYW5kIHRoZW4gdGhlIGxheWVyIHR5cGUgaXMgc3dpdGNoZWQgZnJvbSBQb2ludCB0byBSYXN0ZXIgVGlsZVxuICAgIC8vIGxheWVyLCB0aGlzIGBzdGFjYCBvYmplY3Qgd2lsbCBleGlzdCBidXQgd2lsbCBub3QgYmUgcmFzdGVyIG1ldGFkYXRhXG4gICAgaWYgKCFzdGFjIHx8ICFzdGFjLnN0YWNfdmVyc2lvbikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qge2lkLCBvcGFjaXR5LCB2aXNpYmxlfSA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuXG4gICAgY29uc3QgaGFzU2hhZG93RWZmZWN0ID0gZXhwZXJpbWVudGFsQ29udGV4dD8uaGFzU2hhZG93RWZmZWN0O1xuXG4gICAgY29uc3Qge1xuICAgICAgcHJlc2V0LFxuICAgICAgY29sb3JtYXBJZCxcbiAgICAgIGxpbmVhclJlc2NhbGluZyxcbiAgICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcixcbiAgICAgIG5vbkxpbmVhclJlc2NhbGluZyxcbiAgICAgIGdhbW1hQ29udHJhc3RGYWN0b3IsXG4gICAgICBzaWdtb2lkYWxDb250cmFzdEZhY3RvcixcbiAgICAgIHNpZ21vaWRhbEJpYXNGYWN0b3IsXG4gICAgICBzYXR1cmF0aW9uVmFsdWUsXG4gICAgICBmaWx0ZXJFbmFibGVkLFxuICAgICAgZmlsdGVyUmFuZ2UsXG4gICAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgICAgc3RhY1NlYXJjaFByb3ZpZGVyLFxuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICAgIF9zdGFjUXVlcnksXG4gICAgICBzaW5nbGVCYW5kTmFtZSxcbiAgICAgIGNvbG9yUmFuZ2U6IHtjb2xvck1hcDogY2F0ZWdvcmljYWxDb2xvck1hcH0sXG4gICAgICBkeW5hbWljQ29sb3JcbiAgICB9ID0gdmlzQ29uZmlnO1xuXG4gICAgY29uc3Qgc2hvdWxkTG9hZFRlcnJhaW4gPSBnZXRTaG91bGRMb2FkVGVycmFpbihzdGFjLCBtYXBTdGF0ZSwgdmlzQ29uZmlnKTtcblxuICAgIGlmIChuZXcgRGF0ZShlbmREYXRlKSA8IG5ldyBEYXRlKHN0YXJ0RGF0ZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB7YmFuZENvbWJpbmF0aW9ufSA9IFBSRVNFVF9PUFRJT05TW3ByZXNldF07XG5cbiAgICBjb25zdCBzaW5nbGVCYW5kID0gZ2V0U2luZ2xlQmFuZFByZXNldE9wdGlvbnMoc3RhYywgc2luZ2xlQmFuZE5hbWUpO1xuICAgIGNvbnN0IGRhdGFTb3VyY2VQYXJhbXM6IERhdGFTb3VyY2VQYXJhbXMgfCBudWxsID0gdGhpcy5nZXREYXRhU291cmNlUGFyYW1zKHN0YWMsIHByZXNldCwge1xuICAgICAgc2luZ2xlQmFuZFxuICAgIH0pO1xuXG4gICAgaWYgKCFkYXRhU291cmNlUGFyYW1zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgbWluWm9vbSxcbiAgICAgIG1heFpvb20sXG4gICAgICBnbG9iYWxCb3VuZHMsXG4gICAgICBsb2FkQXNzZXRJZHMsXG4gICAgICBsb2FkQmFuZEluZGV4ZXMsXG4gICAgICByZW5kZXJCYW5kSW5kZXhlcyxcbiAgICAgIGRhdGFUeXBlLFxuICAgICAgbWluUGl4ZWxWYWx1ZTogZHNNaW5QaXhlbFZhbHVlLFxuICAgICAgbWF4UGl4ZWxWYWx1ZTogZHNNYXhQaXhlbFZhbHVlLFxuICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZVxuICAgIH0gPSBkYXRhU291cmNlUGFyYW1zO1xuXG4gICAgY29uc3QgbWluUGl4ZWxWYWx1ZSA9XG4gICAgICAhZHluYW1pY0NvbG9yICYmIE51bWJlci5pc0Zpbml0ZShkc01pblBpeGVsVmFsdWUpXG4gICAgICAgID8gZHNNaW5QaXhlbFZhbHVlXG4gICAgICAgIDogdGhpcy5taW5WaWV3cG9ydFBpeGVsVmFsdWU7XG4gICAgY29uc3QgbWF4UGl4ZWxWYWx1ZSA9XG4gICAgICAhZHluYW1pY0NvbG9yICYmIE51bWJlci5pc0Zpbml0ZShkc01heFBpeGVsVmFsdWUpXG4gICAgICAgID8gZHNNYXhQaXhlbFZhbHVlXG4gICAgICAgIDogdGhpcy5tYXhWaWV3cG9ydFBpeGVsVmFsdWU7XG5cbiAgICBjb25zdCBnZXRUaWxlRGF0YUN1c3RvbVByb3BzOiBHZXRUaWxlRGF0YUN1c3RvbVByb3BzID0ge1xuICAgICAgc3RhYyxcbiAgICAgIGxvYWRBc3NldElkcyxcbiAgICAgIGxvYWRCYW5kSW5kZXhlcyxcbiAgICAgIGNvbG9ybWFwSWQsXG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIHVzZVNUQUNTZWFyY2hpbmcsXG4gICAgICBzdGFjU2VhcmNoUHJvdmlkZXIsXG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgICAgX3N0YWNRdWVyeSxcbiAgICAgIGNhdGVnb3JpY2FsQ29sb3JNYXAsXG4gICAgICBtaW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlXG4gICAgfTtcblxuICAgIGNvbnN0IHRpbGVMYXllciA9IG5ldyBUaWxlTGF5ZXI8YW55LCBSZW5kZXJTdWJMYXllcnNQcm9wcz4oe1xuICAgICAgaWQsXG4gICAgICBtaW5ab29tLFxuICAgICAgbWF4Wm9vbSxcbiAgICAgIHRpbGVTaXplOiA1MTIgLyBkZXZpY2VQaXhlbFJhdGlvLFxuICAgICAgZ2V0VGlsZURhdGE6IChhcmdzOiBhbnkpID0+IHRoaXMuZ2V0VGlsZURhdGEoey4uLmFyZ3MsIC4uLmdldFRpbGVEYXRhQ3VzdG9tUHJvcHN9KSxcbiAgICAgIG9uVmlld3BvcnRMb2FkOiB0aGlzLm9uVmlld3BvcnRMb2FkLmJpbmQodGhpcyksXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gVFMgZG9lc24ndCBrbm93IHdlJ2xsIHBhc3MgYXBwcm9wcmlhdGUgcHJvcHMgaGVyZVxuICAgICAgcmVuZGVyU3ViTGF5ZXJzOiByZW5kZXJTdWJMYXllcnNTdGFjLFxuICAgICAgbWF4UmVxdWVzdHM6IGdldE1heFJlcXVlc3RzKHN0YWMucmFzdGVyVGlsZVNlcnZlclVybHMgfHwgW10pLFxuICAgICAgLy8gUGFzc2luZyB2aXNpYmxlIG9uIHRvIFRpbGVMYXllciBpcyBuZWNlc3NhcnkgZm9yIHNwbGl0IHZpZXcgdG8gd29ya1xuICAgICAgdmlzaWJsZSxcbiAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgIGdldFRpbGVEYXRhOiBbXG4gICAgICAgICAgc2hvdWxkTG9hZFRlcnJhaW4sXG4gICAgICAgICAgLy8gQ29sb3JtYXAgaGFzIGNoYW5nZWRcbiAgICAgICAgICBjb2xvcm1hcElkLFxuICAgICAgICAgIC8vIGFzc2V0cyB0byBiZSBsb2FkZWQgaGFzIGNoYW5nZWRcbiAgICAgICAgICAuLi5sb2FkQXNzZXRJZHMsXG4gICAgICAgICAgLy8gYmFuZCBpbmRleGVzIHRvIGJlIGxvYWRlZCBoYXMgY2hhbmdlZFxuICAgICAgICAgIC4uLmxvYWRCYW5kSW5kZXhlcyxcbiAgICAgICAgICB1c2VTVEFDU2VhcmNoaW5nLFxuICAgICAgICAgIHN0YWNTZWFyY2hQcm92aWRlcixcbiAgICAgICAgICBzdGFydERhdGUsXG4gICAgICAgICAgZW5kRGF0ZSxcbiAgICAgICAgICBfc3RhY1F1ZXJ5LFxuICAgICAgICAgIGNhdGVnb3JpY2FsQ29sb3JNYXAsXG4gICAgICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICAgICAgbWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIFByb3BzIGZvciAzRCBtb2RlXG4gICAgICAuLi4oc2hvdWxkTG9hZFRlcnJhaW5cbiAgICAgICAgPyB7XG4gICAgICAgICAgICB6UmFuZ2U6IHRoaXMubWV0YS56UmFuZ2UgfHwgbnVsbCxcbiAgICAgICAgICAgIHJlZmluZW1lbnRTdHJhdGVneTogJ25vLW92ZXJsYXAnXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICAgIHJlbmRlckJhbmRJbmRleGVzLFxuICAgICAgb3BhY2l0eSxcbiAgICAgIGxpbmVhclJlc2NhbGluZyxcbiAgICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcixcbiAgICAgIG5vbkxpbmVhclJlc2NhbGluZyxcbiAgICAgIG1pblBpeGVsVmFsdWUsXG4gICAgICBtYXhQaXhlbFZhbHVlLFxuICAgICAgZ2FtbWFDb250cmFzdEZhY3RvcixcbiAgICAgIHNpZ21vaWRhbENvbnRyYXN0RmFjdG9yLFxuICAgICAgc2lnbW9pZGFsQmlhc0ZhY3RvcixcbiAgICAgIHNhdHVyYXRpb25WYWx1ZSxcbiAgICAgIGJhbmRDb21iaW5hdGlvbixcbiAgICAgIGZpbHRlckVuYWJsZWQsXG4gICAgICBmaWx0ZXJSYW5nZSxcbiAgICAgIGRhdGFUeXBlLFxuICAgICAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWUsXG4gICAgICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgIGhhc0NhdGVnb3JpY2FsQ29sb3JNYXA6IEJvb2xlYW4oY2F0ZWdvcmljYWxDb2xvck1hcCksXG4gICAgICBoYXNTaGFkb3dFZmZlY3RcbiAgICB9KTtcblxuICAgIHJldHVybiBbdGlsZUxheWVyXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUE1UaWxlc0xheWVyKG9wdHMpOiBUaWxlTGF5ZXI8YW55PltdIHtcbiAgICBjb25zdCB7aWQsIG9wYWNpdHksIHZpc2libGV9ID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG5cbiAgICBjb25zdCB7ZGF0YSwgbWFwU3RhdGV9ID0gb3B0cztcbiAgICBjb25zdCBtZXRhZGF0YSA9IGRhdGE/LmRhdGFzZXQ/Lm1ldGFkYXRhIGFzIFZlY3RvclRpbGVNZXRhZGF0YTtcbiAgICBjb25zdCB7dmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgY29uc3QgdGlsZVNvdXJjZSA9IGRhdGEudGlsZVNvdXJjZTtcbiAgICBjb25zdCBzaG93VGlsZUJvcmRlcnMgPSBmYWxzZTtcbiAgICBjb25zdCBtaW5ab29tID0gbWV0YWRhdGEubWluWm9vbSB8fCAwO1xuICAgIGNvbnN0IG1heFpvb20gPSBtZXRhZGF0YS5tYXhab29tIHx8IDMwO1xuXG4gICAgY29uc3Qgc2hvdWxkTG9hZFRlcnJhaW4gPSBnZXRTaG91bGRMb2FkVGVycmFpbihtZXRhZGF0YSwgbWFwU3RhdGUsIHZpc0NvbmZpZyk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IFRpbGVMYXllcjxhbnksIFJhc3RlclRpbGVMYXllclZpc0NvbmZpZ0NvbW1vblNldHRpbmdzPih7XG4gICAgICAgIGlkLFxuICAgICAgICBnZXRUaWxlRGF0YTogKGFyZ3M6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLmdldFRpbGVEYXRhUE1UaWxlcyh7Li4uYXJncywgc2hvdWxkTG9hZFRlcnJhaW4sIG1ldGFkYXRhfSwgdGlsZVNvdXJjZSksXG5cbiAgICAgICAgLy8gQXNzdW1lIHRoZSBwbXRpbGVzIGZpbGUgc3VwcG9ydCBIVFRQLzIsIHNvIHdlIGFyZW4ndCBsaW1pdGVkIGJ5IHRoZSBicm93c2VyIHRvIGEgY2VydGFpbiBudW1iZXIgcGVyIGRvbWFpbi5cbiAgICAgICAgbWF4UmVxdWVzdHM6IDIwLFxuXG4gICAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiBzaG93VGlsZUJvcmRlcnMsXG5cbiAgICAgICAgb25WaWV3cG9ydExvYWQ6IHRoaXMub25WaWV3cG9ydExvYWQuYmluZCh0aGlzKSxcblxuICAgICAgICBtaW5ab29tLFxuICAgICAgICBtYXhab29tLFxuICAgICAgICB0aWxlU2l6ZTogNTEyIC8gZGV2aWNlUGl4ZWxSYXRpbyxcbiAgICAgICAgem9vbU9mZnNldDogZGV2aWNlUGl4ZWxSYXRpbyA9PT0gMSA/IC0xIDogMCxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIFRTIGRvZXNuJ3Qga25vdyB3ZSdsbCBwYXNzIGFwcHJvcHJpYXRlIHByb3BzIGhlcmVcbiAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiByZW5kZXJTdWJMYXllcnNQTVRpbGVzLFxuXG4gICAgICAgIHRpbGVTb3VyY2UsXG4gICAgICAgIHNob3dUaWxlQm9yZGVycyxcblxuICAgICAgICB2aXNpYmxlLFxuICAgICAgICBvcGFjaXR5LFxuXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgZ2V0VGlsZURhdGE6IFtzaG91bGRMb2FkVGVycmFpbl1cbiAgICAgICAgfSxcbiAgICAgICAgLy8gUHJvcHMgZm9yIDNEIG1vZGVcbiAgICAgICAgLi4uKHNob3VsZExvYWRUZXJyYWluXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHpSYW5nZTogdGhpcy5tZXRhLnpSYW5nZSB8fCBudWxsLFxuICAgICAgICAgICAgICByZWZpbmVtZW50U3RyYXRlZ3k6ICduby1vdmVybGFwJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pXG4gICAgICB9KVxuICAgIF07XG4gIH1cblxuICBhc3luYyBnZXRUaWxlRGF0YShwcm9wczogR2V0VGlsZURhdGFQcm9wcyk6IFByb21pc2U8R2V0VGlsZURhdGFPdXRwdXQ+IHtcbiAgICBjb25zdCB7XG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9LFxuICAgICAgaW5kZXg6IHt6OiB6b29tfVxuICAgIH0gPSBwcm9wcztcblxuICAgIGlmIChnbG9iYWxCb3VuZHMgJiYgIWJib3hJbnRlcnNlY3RzKGdsb2JhbEJvdW5kcywgW3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aF0pKSB7XG4gICAgICAvLyB0aWxlIGlzIG91dHNpZGUgb2YgU1RBQyBvYmplY3QncyBib3VuZGluZyBib3g7IGRvbid0IGZldGNoIHRpbGVcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0UmVxdWVzdHMgPSBhd2FpdCBnZXRTVEFDSW1hZ2VSZXF1ZXN0cyhwcm9wcyk7XG4gICAgLy8gTm8gYXNzZXRzIHRvIGxvYWQsIG1vc3QgbGlrZWx5IGR1ZSB0byBwcm9wcyBiZWluZyBpbnZhbGlkL3Vuc3VwcG9ydGVkXG4gICAgaWYgKCFhc3NldFJlcXVlc3RzKSB7XG4gICAgICAvLyBXZSBzdGlsbCBpc3N1ZSB0aGUgbG9hZFRlcnJhaW4gcmVxdWVzdCBpZiBhcHBsaWNhYmxlXG4gICAgICBjb25zdCB0ZXJyYWluID1cbiAgICAgICAgc2hvdWxkTG9hZFRlcnJhaW4gJiZcbiAgICAgICAgTE9BRF9FTEVWQVRJT05fQUZURVJfWk9PTSA8IHpvb20gJiZcbiAgICAgICAgKGF3YWl0IGxvYWRUZXJyYWluKHtcbiAgICAgICAgICBib3VuZHNGb3JHZW9tZXRyeTogW3dlc3QsIG5vcnRoLCBlYXN0LCBzb3V0aF0sXG4gICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICAgIHNpZ25hbDogcHJvcHMuc2lnbmFsLFxuICAgICAgICAgIHJhc3RlclRpbGVTZXJ2ZXJVcmxzOiBwcm9wcy5zdGFjLnJhc3RlclRpbGVTZXJ2ZXJVcmxzIHx8IFtdXG4gICAgICAgIH0pKTtcbiAgICAgIHJldHVybiB7aW1hZ2VzOiBudWxsLCAuLi4odGVycmFpbiA/IHt0ZXJyYWlufSA6IHt9KX07XG4gICAgfVxuXG4gICAgdGlsZXNCZWluZ0xvYWRlZCsrO1xuXG4gICAgLy8gV3JhcCBsb2FkaW5nIGltYWdlcyBpbnRvIGEgdHJ5L2NhdGNoIGJlY2F1c2UgdGlsZXMgdGhhdCBhcmUgb25seSBicmllZmx5IGluIHZpZXcgd2lsbCBiZVxuICAgIC8vIGFib3J0ZWQuIFRoZSBgQWJvcnRDb250cm9sbGVyLmFib3J0KClgIGNyZWF0ZXMgYSBET01FeGNlcHRpb24gZXJyb3IuXG4gICAgLy8gTm90ZSB0aGF0IHNpbmNlIGxvYWRpbmcgaXMgYXN5bmMsIHRyeS9jYXRjaCB3aWxsIG9ubHkgd29yayB3aGVuIGF3YWl0ZWQgaW5zaWRlIHRoZSB0cnkgYmxvY2tcbiAgICB0cnkge1xuICAgICAgY29uc3QgW2ltYWdlcywgdGVycmFpbl0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIGxvYWRJbWFnZXMoYXNzZXRSZXF1ZXN0cywgcHJvcHMuY29sb3JtYXBJZCwge1xuICAgICAgICAgIGNvbG9yTWFwOiBwcm9wcy5jYXRlZ29yaWNhbENvbG9yTWFwLFxuICAgICAgICAgIG1pblZhbHVlOiBwcm9wcy5taW5DYXRlZ29yaWNhbEJhbmRWYWx1ZSxcbiAgICAgICAgICBtYXhWYWx1ZTogcHJvcHMubWF4Q2F0ZWdvcmljYWxCYW5kVmFsdWVcbiAgICAgICAgfSksXG4gICAgICAgIHNob3VsZExvYWRUZXJyYWluICYmIExPQURfRUxFVkFUSU9OX0FGVEVSX1pPT00gPCB6b29tXG4gICAgICAgICAgPyBsb2FkVGVycmFpbih7XG4gICAgICAgICAgICAgIGJvdW5kc0Zvckdlb21ldHJ5OiBbd2VzdCwgbm9ydGgsIGVhc3QsIHNvdXRoXSxcbiAgICAgICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICAgICAgICBzaWduYWw6IHByb3BzLnNpZ25hbCxcbiAgICAgICAgICAgICAgcmFzdGVyVGlsZVNlcnZlclVybHM6IHByb3BzLnN0YWMucmFzdGVyVGlsZVNlcnZlclVybHMgfHwgW11cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBdKTtcblxuICAgICAgY29uc3QgW21pbiwgbWF4XSA9IHRoaXMuZ2V0TWluTWF4UGl4ZWxWYWx1ZXMoaW1hZ2VzLmltYWdlQmFuZHMpO1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuXG4gICAgICAvLyBBZGQgdGVycmFpbiBkYXRhIG9ubHkgaWYgd2UgcmVxdWVzdGVkIGl0IGFib3ZlXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbWFnZXMsXG4gICAgICAgIC4uLih0ZXJyYWluID8ge3RlcnJhaW59IDoge30pLFxuICAgICAgICBtaW5QaXhlbFZhbHVlOiBtaW4sXG4gICAgICAgIG1heFBpeGVsVmFsdWU6IG1heFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuICAgICAgaWYgKChlcnJvciBhcyBhbnkpLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgICAvLyB0aWxlIHdhcyBhYm9ydGVkXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBTb21lIG90aGVyIHVuaGFuZGxlZCBlcnJvclxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VGlsZURhdGFQTVRpbGVzKFxuICAgIHByb3BzOiBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcyAmIHtcbiAgICAgIHNob3VsZExvYWRUZXJyYWluOiBib29sZWFuO1xuICAgICAgbWV0YWRhdGE6IHtyYXN0ZXJUaWxlU2VydmVyVXJsczogc3RyaW5nW119O1xuICAgICAgZ2xvYmFsQm91bmRzOiBEYXRhU291cmNlUGFyYW1zWydnbG9iYWxCb3VuZHMnXTtcbiAgICB9LFxuICAgIHRpbGVTb3VyY2VcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB7XG4gICAgICBzaG91bGRMb2FkVGVycmFpbixcbiAgICAgIGdsb2JhbEJvdW5kcyxcbiAgICAgIGJib3g6IHt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGh9LFxuICAgICAgaW5kZXg6IHt6OiB6b29tfSxcbiAgICAgIG1ldGFkYXRhXG4gICAgfSA9IHByb3BzO1xuXG4gICAgaWYgKGdsb2JhbEJvdW5kcyAmJiAhYmJveEludGVyc2VjdHMoZ2xvYmFsQm91bmRzLCBbd2VzdCwgc291dGgsIGVhc3QsIG5vcnRoXSkpIHtcbiAgICAgIC8vIHRpbGUgaXMgb3V0c2lkZSBvZiBTVEFDIG9iamVjdCdzIGJvdW5kaW5nIGJveDsgZG9uJ3QgZmV0Y2ggdGlsZVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGlsZXNCZWluZ0xvYWRlZCsrO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFtpbWFnZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbdGlsZVNvdXJjZS5nZXRUaWxlRGF0YShwcm9wcyldKTtcbiAgICAgIC8vIEZvciBud28gY2hlY2sgaWYgdGhlIGJhc2UgdGlsZSBleGlzdHMsIGFzIHRoaXMgY2FuIGNhdXNlIGxvYWRpbmcgdG8gZ2V0IHN0dWNrIHdpdGggXCJzcGFyc2VcIiBQTVRpbGVzLlxuICAgICAgY29uc3QgdGVycmFpbiA9XG4gICAgICAgIGltYWdlICYmIHNob3VsZExvYWRUZXJyYWluICYmIExPQURfRUxFVkFUSU9OX0FGVEVSX1pPT00gPCB6b29tXG4gICAgICAgICAgPyBhd2FpdCBsb2FkVGVycmFpbih7XG4gICAgICAgICAgICAgIGJvdW5kc0Zvckdlb21ldHJ5OiBbd2VzdCwgbm9ydGgsIGVhc3QsIHNvdXRoXSxcbiAgICAgICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICAgICAgICBzaWduYWw6IHByb3BzLnNpZ25hbCxcbiAgICAgICAgICAgICAgcmFzdGVyVGlsZVNlcnZlclVybHM6IG1ldGFkYXRhLnJhc3RlclRpbGVTZXJ2ZXJVcmxzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogbnVsbDtcblxuICAgICAgbGV0IG1pblBpeGVsVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgbGV0IG1heFBpeGVsVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgaWYgKGltYWdlKSB7XG4gICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSB0aGlzLmdldE1pbk1heFBpeGVsVmFsdWVzKFt7ZGF0YTogaW1hZ2V9XSk7XG4gICAgICAgIG1pblBpeGVsVmFsdWUgPSBtaW47XG4gICAgICAgIG1heFBpeGVsVmFsdWUgPSBtYXg7XG4gICAgICB9XG4gICAgICB0aWxlc0JlaW5nTG9hZGVkLS07XG5cbiAgICAgIC8vIEFkZCB0ZXJyYWluIGRhdGEgb25seSBpZiB3ZSByZXF1ZXN0ZWQgaXQgYWJvdmVcbiAgICAgIHJldHVybiB7aW1hZ2UsIG1pblBpeGVsVmFsdWUsIG1heFBpeGVsVmFsdWUsIC4uLih0ZXJyYWluID8ge3RlcnJhaW59IDoge30pfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGlsZXNCZWluZ0xvYWRlZC0tO1xuXG4gICAgICBpZiAoKGVycm9yIGFzIEVycm9yKS5uYW1lID09PSAnQWJvcnRFcnJvcicpIHtcbiAgICAgICAgLy8gdGlsZSB3YXMgYWJvcnRlZFxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gU29tZSBvdGhlciB1bmhhbmRsZWQgZXJyb3JcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJTdWJMYXllcnNTdGFjKHByb3BzOiBSZW5kZXJTdWJMYXllcnNQcm9wcyk6IERlY2tMYXllcjxhbnk+IHwgRGVja0xheWVyPGFueT5bXSB7XG4gIGNvbnN0IHtcbiAgICB0aWxlLFxuICAgIGRhdGEsXG4gICAgbWluUGl4ZWxWYWx1ZTogZ2xvYmFsTWluUGl4ZWxWYWx1ZSxcbiAgICBtYXhQaXhlbFZhbHVlOiBnbG9iYWxNYXhQaXhlbFZhbHVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgYmJveCA9IHRpbGUuYmJveCBhcyBHZW9Cb3VuZGluZ0JveDtcbiAgY29uc3Qge3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aH0gPSBiYm94O1xuXG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpbWFnZXMsXG4gICAgdGVycmFpbixcbiAgICBtaW5QaXhlbFZhbHVlOiB0aWxlTWluUGl4ZWxWYWx1ZSxcbiAgICBtYXhQaXhlbFZhbHVlOiB0aWxlTWF4UGl4ZWxWYWx1ZVxuICB9ID0gZGF0YTtcbiAgaWYgKCFpbWFnZXMgfHwgKEFycmF5LmlzQXJyYXkoaW1hZ2VzKSAmJiBpbWFnZXMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IG1pblBpeGVsVmFsdWUgPSBOdW1iZXIuaXNGaW5pdGUoZ2xvYmFsTWluUGl4ZWxWYWx1ZSlcbiAgICA/IGdsb2JhbE1pblBpeGVsVmFsdWVcbiAgICA6IHRpbGVNaW5QaXhlbFZhbHVlO1xuICBjb25zdCBtYXhQaXhlbFZhbHVlID0gTnVtYmVyLmlzRmluaXRlKGdsb2JhbE1heFBpeGVsVmFsdWUpXG4gICAgPyBnbG9iYWxNYXhQaXhlbFZhbHVlXG4gICAgOiB0aWxlTWF4UGl4ZWxWYWx1ZTtcbiAgaWYgKHR5cGVvZiBtaW5QaXhlbFZhbHVlICE9PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4UGl4ZWxWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCB7bW9kdWxlcywgbW9kdWxlUHJvcHN9ID0gZ2V0TW9kdWxlcyh7XG4gICAgaW1hZ2VzLFxuICAgIHByb3BzOiB7Li4ucHJvcHMsIG1pblBpeGVsVmFsdWUsIG1heFBpeGVsVmFsdWV9XG4gIH0pO1xuXG4gIGNvbnN0IGlkU3VmZml4ID0gcHJvcHMuaGFzU2hhZG93RWZmZWN0ID8gJ3NoYWRvdycgOiAnJztcblxuICByZXR1cm4gdGVycmFpblxuICAgID8gbmV3IFJhc3Rlck1lc2hMYXllcihwcm9wcywge1xuICAgICAgICBpZDogYHJhc3Rlci0zZC1sYXllci0ke3Byb3BzLmlkfS0ke2lkU3VmZml4fWAsXG4gICAgICAgIC8vIER1bW15IGRhdGFcbiAgICAgICAgZGF0YTogWzFdLFxuICAgICAgICBtZXNoOiB0ZXJyYWluLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIG1vZHVsZXMsXG4gICAgICAgIG1vZHVsZVByb3BzLFxuXG4gICAgICAgIGdldFBvbHlnb25PZmZzZXQ6IG51bGwsXG4gICAgICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkxOR0xBVCxcbiAgICAgICAgLy8gQ29sb3IgdG8gdXNlIGlmIHN1cmZhY2VJbWFnZSBpcyB1bmF2YWlsYWJsZVxuICAgICAgICBnZXRDb2xvcjogWzI1NSwgMjU1LCAyNTVdXG4gICAgICAgIC8vIG1hdGVyaWFsOiBmYWxzZVxuICAgICAgfSlcbiAgICA6IG5ldyBSYXN0ZXJMYXllcihwcm9wcywge1xuICAgICAgICBpZDogYHJhc3Rlci0yZC1sYXllci0ke3Byb3BzLmlkfS0ke2lkU3VmZml4fWAsXG4gICAgICAgIGltYWdlcyxcbiAgICAgICAgbW9kdWxlcyxcbiAgICAgICAgbW9kdWxlUHJvcHMsXG4gICAgICAgIGJvdW5kczogW3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aF0sXG4gICAgICAgIF9pbWFnZUNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTlxuICAgICAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclN1YkxheWVyc1BNVGlsZXMocHJvcHM6IHtcbiAgaWQ6IHN0cmluZztcbiAgZGF0YTogYW55O1xuICB0aWxlU291cmNlOiBhbnk7XG4gIHNob3dUaWxlQm9yZGVyczogYW55O1xuICBtaW5ab29tOiBhbnk7XG4gIG1heFpvb206IGFueTtcbiAgdGlsZTogYW55O1xufSkge1xuICBjb25zdCB7XG4gICAgdGlsZVNvdXJjZSxcbiAgICBzaG93VGlsZUJvcmRlcnMsXG4gICAgbWluWm9vbSxcbiAgICBtYXhab29tLFxuICAgIHRpbGU6IHtcbiAgICAgIGluZGV4OiB7ejogem9vbX0sXG4gICAgICBiYm94OiB7d2VzdCwgc291dGgsIGVhc3QsIG5vcnRofVxuICAgIH1cbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IGxheWVyczogYW55W10gPSBbXTtcblxuICBpZiAocHJvcHMuZGF0YT8uaW1hZ2UpIHtcbiAgICBzd2l0Y2ggKHRpbGVTb3VyY2UubWltZVR5cGUpIHtcbiAgICAgIGNhc2UgJ2ltYWdlL3BuZyc6XG4gICAgICBjYXNlICdpbWFnZS9qcGVnJzpcbiAgICAgIGNhc2UgJ2ltYWdlL3dlYnAnOlxuICAgICAgY2FzZSAnaW1hZ2UvYXZpZic6XG4gICAgICAgIGxheWVycy5wdXNoKGdldFJhc3RlckxheWVyUE1UaWxlcyhwcm9wcykpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVidWcgdGlsZSBib3JkZXJzXG4gIGNvbnN0IGJvcmRlckNvbG9yID0gem9vbSA8PSBtaW5ab29tIHx8IHpvb20gPj0gbWF4Wm9vbSA/IFsyNTUsIDAsIDAsIDI1NV0gOiBbMCwgMCwgMjU1LCAyNTVdO1xuICBpZiAoc2hvd1RpbGVCb3JkZXJzKSB7XG4gICAgbGF5ZXJzLnB1c2goXG4gICAgICBuZXcgUGF0aExheWVyKHtcbiAgICAgICAgaWQ6IGAke3Byb3BzLmlkfS1ib3JkZXJgLFxuICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgW1xuICAgICAgICAgICAgW3dlc3QsIG5vcnRoXSxcbiAgICAgICAgICAgIFt3ZXN0LCBzb3V0aF0sXG4gICAgICAgICAgICBbZWFzdCwgc291dGhdLFxuICAgICAgICAgICAgW2Vhc3QsIG5vcnRoXSxcbiAgICAgICAgICAgIFt3ZXN0LCBub3J0aF1cbiAgICAgICAgICBdXG4gICAgICAgIF0sXG4gICAgICAgIGdldFBhdGg6IGQgPT4gZCxcbiAgICAgICAgZ2V0Q29sb3I6IGJvcmRlckNvbG9yIGFzIGFueSxcbiAgICAgICAgd2lkdGhNaW5QaXhlbHM6IDRcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBsYXllcnM7XG59XG5cbmZ1bmN0aW9uIGdldFJhc3RlckxheWVyUE1UaWxlcyhwcm9wczoge2lkOiBzdHJpbmc7IGRhdGE6IGFueTsgdGlsZTogYW55fSkge1xuICBjb25zdCB7dGlsZSwgZGF0YX0gPSBwcm9wcztcbiAgY29uc3QgYmJveCA9IHRpbGUuYmJveCBhcyBHZW9Cb3VuZGluZ0JveDtcbiAgY29uc3Qge3dlc3QsIHNvdXRoLCBlYXN0LCBub3J0aH0gPSBiYm94O1xuXG4gIGlmICghZGF0YT8uaW1hZ2UpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBpbWFnZXMgPSB7aW1hZ2VSZ2JhOiB7ZGF0YTogZGF0YS5pbWFnZX19O1xuICBjb25zdCB7dGVycmFpbn0gPSBkYXRhO1xuXG4gIGNvbnN0IHttb2R1bGVzLCBtb2R1bGVQcm9wc30gPSBnZXRNb2R1bGVzKHtcbiAgICBpbWFnZXNcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcnJhaW5cbiAgICA/IG5ldyBSYXN0ZXJNZXNoTGF5ZXIocHJvcHMsIHtcbiAgICAgICAgaWQ6IGByYXN0ZXItM2QtbGF5ZXItJHtwcm9wcy5pZH1gLFxuICAgICAgICAvLyBEdW1teSBkYXRhXG4gICAgICAgIGRhdGE6IFsxXSxcbiAgICAgICAgbWVzaDogdGVycmFpbixcbiAgICAgICAgaW1hZ2VzLFxuICAgICAgICBtb2R1bGVzLFxuICAgICAgICBtb2R1bGVQcm9wcyxcblxuICAgICAgICBnZXRQb2x5Z29uT2Zmc2V0OiBudWxsLFxuICAgICAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5MTkdMQVQsXG4gICAgICAgIC8vIENvbG9yIHRvIHVzZSBpZiBzdXJmYWNlSW1hZ2UgaXMgdW5hdmFpbGFibGVcbiAgICAgICAgZ2V0Q29sb3I6IFsyNTUsIDI1NSwgMjU1XVxuICAgICAgICAvLyBtYXRlcmlhbDogZmFsc2VcbiAgICAgIH0pXG4gICAgOiBuZXcgUmFzdGVyTGF5ZXIocHJvcHMsIHtcbiAgICAgICAgaWQ6IGByYXN0ZXItMmQtbGF5ZXItJHtwcm9wcy5pZH1gLFxuICAgICAgICBkYXRhOiBudWxsIGFzIG5ldmVyLFxuICAgICAgICBpbWFnZXMsXG4gICAgICAgIG1vZHVsZXMsXG4gICAgICAgIG1vZHVsZVByb3BzLFxuICAgICAgICBib3VuZHM6IFt3ZXN0LCBzb3V0aCwgZWFzdCwgbm9ydGhdLFxuICAgICAgICBfaW1hZ2VDb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU5cbiAgICAgIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxRQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFFQSxJQUFBSyxPQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFjQSxJQUFBUSxZQUFBLEdBQUFSLE9BQUE7QUFFQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFFQSxJQUFBVSxPQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxTQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxNQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFB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
@@ -135,6 +135,7 @@ export declare type RenderSubLayersCustomProps = ColorRescaling & Pick<AssetRequ
135
135
  minCategoricalBandValue?: number;
136
136
  maxCategoricalBandValue?: number;
137
137
  hasCategoricalColorMap: boolean;
138
+ hasShadowEffect?: boolean;
138
139
  };
139
140
  export interface RenderSubLayersDefaultProps {
140
141
  id: string;
@@ -43,4 +43,4 @@ var BandCombination = exports.BandCombination = /*#__PURE__*/function (BandCombi
43
43
  /** Properties provided to getTileData by the deck.gl TileLayer */
44
44
  /** Properties passed into the deck.gl TileLayer getTileData callback */
45
45
  /** Required information on how to render each preset */
46
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYW5kQ29tYmluYXRpb24iLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci10aWxlL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7X1RpbGUyREhlYWRlcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycy90eXBlZCc7XG5pbXBvcnQge1R5cGVkQXJyYXl9IGZyb20gJ0Bsb2FkZXJzLmdsL2xvYWRlci11dGlscy9zcmMvdHlwZXMnO1xuaW1wb3J0IHtUZXh0dXJlMkRQcm9wc30gZnJvbSAnQGx1bWEuZ2wvd2ViZ2wnO1xuXG5pbXBvcnQge0tlcGxlclRhYmxlIGFzIEtlcGxlckRhdGFzZXR9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHR5cGUge0NvbG9yTWFwLCBTdGFjVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBTVEFDT2JqZWN0ID0gU3RhY1R5cGVzLlNUQUNPYmplY3Q7XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNJdGVtID0gU3RhY1R5cGVzLkNvbXBsZXRlU1RBQ0l0ZW07XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNDb2xsZWN0aW9uID0gU3RhY1R5cGVzLkNvbXBsZXRlU1RBQ0NvbGxlY3Rpb247XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNPYmplY3QgPSBTdGFjVHlwZXMuQ29tcGxldGVTVEFDT2JqZWN0O1xuXG50eXBlIERhdGFUeXBlT2ZUaGVCYW5kID0gU3RhY1R5cGVzLkRhdGFUeXBlT2ZUaGVCYW5kO1xuXG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNBc3NldExpbmtzID1cbiAgfCBDb21wbGV0ZVNUQUNJdGVtWydhc3NldHMnXVxuICB8IENvbXBsZXRlU1RBQ0NvbGxlY3Rpb25bJ2l0ZW1fYXNzZXRzJ107XG5cbmV4cG9ydCBlbnVtIEJhbmRDb21iaW5hdGlvbiB7XG4gIC8qKiBSZW5kZXIgYSBzaW5nbGUgcmFzdGVyIGJhbmQuICovXG4gIFNpbmdsZSA9ICdzaW5nbGUnLFxuXG4gIC8qKiBSZW5kZXIgdGhyZWUgYmFuZHMgdG9nZXRoZXIgb24gdGhlIEdQVS5cbiAgICogTm90ZSB0aGF0IHRoaXMgY291bGQgYmUgXCJ0cnVlIGNvbG9yXCIgaWYgdGhlIGZpcnN0IGJhbmQgaXMgcmVkLCB0aGUgc2Vjb25kIGlzIGdyZWVuLCBhbmQgdGhlXG4gICAqIHRoaXJkIGlzIGJsdWUuIEJ1dCBpdCBjb3VsZCBhbHNvIGJlIFwiZmFsc2UgY29sb3JcIiBpZiB0aGUgdGhyZWUgYmFuZHMgY2hvc2VuIGFyZSBub3QgUkdCLlxuICAgKi9cbiAgUmdiID0gJ3JnYicsXG5cbiAgLyoqIENhbGN1bGF0ZSB0aGUgTm9ybWFsaXplZCBEaWZmZXJlbmNlIFZlZ2V0YXRpb24gSW5kZXggKE5EVkkpIG9uIHR3byBiYW5kcy4gKi9cbiAgTm9ybWFsaXplZERpZmZlcmVuY2UgPSAnbm9ybWFsaXplZERpZmZlcmVuY2UnLFxuXG4gIC8qKiBDYWxjdWxhdGUgdGhlIEVWSSBvbiB0d28gYmFuZHMuICovXG4gIEVuaGFuY2VkVmVnZXRhdGlvbkluZGV4ID0gJ2VuaGFuY2VkVmVnZXRhdGlvbkluZGV4JyxcblxuICAvKiogQ2FsY3VsYXRlIFNBVkkgb24gdHdvIGJhbmRzLiAqL1xuICBTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXggPSAnc29pbEFkanVzdGVkVmVnZXRhdGlvbkluZGV4JyxcblxuICAvKiogQ2FsY3VsYXRlIE1TQVZJIG9uIHR3byBiYW5kcy4gKi9cbiAgTW9kaWZpZWRTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXggPSAnbW9kaWZpZWRTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXgnXG59XG5cbi8qKlxuICogSWRlbnRpZmllcnMgb2YgU1RBQyBhc3NldHMgdG8gbG9hZFxuICpcbiAqIFRoZXNlIGlkZW50aWZpZXJzIHNob3VsZCBtYXRjaCB0aGUga2V5cyBvZiB0aGUgU1RBQyBhc3NldHMgb2JqZWN0LiBSZWZlciB0b1xuICogaHR0cHM6Ly9naXRodWIuY29tL3JhZGlhbnRlYXJ0aC9zdGFjLXNwZWMvYmxvYi9tYXN0ZXIvaXRlbS1zcGVjL2l0ZW0tc3BlYy5tZCNhc3NldHNcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXRJZHMgPSBzdHJpbmdbXTtcblxuLyoqXG4gKiBJbmRleGVzIG9mIGJhbmRzIHdpdGhpbiBlYWNoIGFzc2V0IHRoYXQgc2hvdWxkIGJlIGxvYWRlZC5cbiAqXG4gKiBFYWNoIGFzc2V0IHJlZmVycyB0byBhIHNpbmdsZSBDbG91ZC1PcHRpbWl6ZWQgR2VvVElGRiBmaWxlIG9uIGRpc2suIEVhY2ggQ09HIGhhcyBhIHdpZHRoLCBoZWlnaHQsXG4gKiBhbmQgb25lIG9yIG1vcmUgYmFuZHMuXG4gKlxuICogVGhpcyBhcnJheSBvZiBpbmRleGVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBsaXN0IG9mIEFzc2V0SWRzLiBUaGUgbnRoIGJhbmQgaW5kZXhcbiAqIGRlc2NyaWJlcyB0aGUgd2hpY2ggaW5kZXggZnJvbSB0aGUgbnRoIGFzc2V0IGlkIHRvIGxvYWQuXG4gKi9cbmV4cG9ydCB0eXBlIEJhbmRJbmRleGVzID0gbnVtYmVyW107XG5cbi8qKlxuICogQW4gYXJyYXkgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIGhvdyBiYW5kcyBzaG91bGQgYmUgcmVvcmRlcmVkIG9uIHRoZSBHUFUuIFRoaXMgYWxsb3dzIGZvclxuICogZmFzdGVyIGNoYW5naW5nIG9mIGJhbmRzIGZvciBzaW5nbGUtYXNzZXQgcmFzdGVyIGRhdGEsIHN1Y2ggYXMgTkFJUC4gV2lsbCBiZSBudWxsIGZvciBtdWx0aS1hc3NldFxuICogU1RBQyBpdGVtcy5cbiAqL1xuZXhwb3J0IHR5cGUgUmVuZGVyQmFuZEluZGV4ZXMgPSBCYW5kSW5kZXhlcyB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIEFzc2V0UmVxdWVzdEluZm8gPSB7XG4gIGxvYWRBc3NldElkczogQXNzZXRJZHM7XG4gIGxvYWRCYW5kSW5kZXhlczogQmFuZEluZGV4ZXM7XG4gIHJlbmRlckJhbmRJbmRleGVzOiBSZW5kZXJCYW5kSW5kZXhlcztcbn07XG5cbi8qKiBVc2VyLXByb3ZpZGVkIGluZm9ybWF0aW9uIGZvciBob3cgdG8gcmVuZGVyIGEgcHJlc2V0ICovXG5leHBvcnQgdHlwZSBQcmVzZXRPcHRpb24gPSB7XG4gIHNpbmdsZUJhbmQ/OiB7XG4gICAgYXNzZXRJZDogc3RyaW5nO1xuICAgIGJhbmRJbmRleD86IG51bWJlcjtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFTb3VyY2VQYXJhbXMgPSBBc3NldFJlcXVlc3RJbmZvICYge1xuICBtaW5ab29tOiBudW1iZXI7XG4gIG1heFpvb206IG51bWJlcjtcbiAgbWluUGl4ZWxWYWx1ZTogbnVtYmVyO1xuICBtYXhQaXhlbFZhbHVlOiBudW1iZXI7XG4gIG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZT86IG51bWJlcjtcbiAgZ2xvYmFsQm91bmRzOiBudW1iZXJbXSB8IG51bGw7XG4gIGRhdGFUeXBlOiBEYXRhVHlwZU9mVGhlQmFuZDtcbn07XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsQ29sb3JtYXBPcHRpb25zID0ge1xuICBjb2xvck1hcD86IENvbG9yTWFwO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBFeHRlbmRlZEtlcGxlclNUQUMgPSB7cmFzdGVyVGlsZVNlcnZlclVybHM/OiBbXX07XG5cbi8qKlxuICogQ3VzdG9tIGZpZWxkcyB3ZSBwYXNzIG9uIHRvIHRoZSBnZXRUaWxlRGF0YSBjYWxsYmFja1xuICogQW55dGhpbmcgcmVxdWlyZWQgdG8ga25vdyBfd2hhdCBkYXRhIHRvIGxvYWRfIHNob3VsZCBiZSBwYXNzZWQgaW4gaGVyZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFDdXN0b21Qcm9wcyA9IFBpY2s8QXNzZXRSZXF1ZXN0SW5mbywgJ2xvYWRBc3NldElkcycgfCAnbG9hZEJhbmRJbmRleGVzJz4gJiB7XG4gIHN0YWM6IENvbXBsZXRlU1RBQ09iamVjdCAmIEV4dGVuZGVkS2VwbGVyU1RBQztcbiAgY29sb3JtYXBJZDogc3RyaW5nO1xuICBjYXRlZ29yaWNhbENvbG9yTWFwOiBDb2xvck1hcDtcbiAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWU/OiBudW1iZXI7XG4gIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuXG4gIC8qKiBJZiB0cnVlLCBmZXRjaCB0ZXJyYWluIGRhdGEgYXMgd2VsbCBhcyB0ZXh0dXJlIGRhdGEuICovXG4gIHNob3VsZExvYWRUZXJyYWluOiBib29sZWFuO1xuICBnbG9iYWxCb3VuZHM6IG51bWJlcltdIHwgbnVsbDtcbiAgdXNlU1RBQ1NlYXJjaGluZzogYm9vbGVhbjtcbiAgc3RhY1NlYXJjaFByb3ZpZGVyOiBzdHJpbmc7XG4gIHN0YXJ0RGF0ZTogc3RyaW5nO1xuICBlbmREYXRlOiBzdHJpbmc7XG5cbiAgLyogU3RyaW5naWZpZWQgSlNPTiByZXByZXNlbnRpbmcgYSBTVEFDIEFQSSBTZWFyY2ggUXVlcnkgdGhlIGJhY2tlbmQgc2hvdWxkIHJlcXVlc3QgZnJvbSBhIHNlcnZlci4gKi9cbiAgX3N0YWNRdWVyeT86IHN0cmluZztcbn07XG5cbi8qKiBQcm9wZXJ0aWVzIHByb3ZpZGVkIHRvIGdldFRpbGVEYXRhIGJ5IHRoZSBkZWNrLmdsIFRpbGVMYXllciAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcyB7XG4gIGluZGV4OiB7eDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcn07XG4gIHVybD86IHN0cmluZztcblxuICAvKiogQm91bmRpbmcgYm94IG9mIHRoZSBjdXJyZW50IHdlYiBtZXJjYXRvciB0aWxlLiAqL1xuICBiYm94OiB7d2VzdDogbnVtYmVyOyBub3J0aDogbnVtYmVyOyBlYXN0OiBudW1iZXI7IHNvdXRoOiBudW1iZXJ9O1xuXG4gIC8qKiBBYm9ydFNpZ25hbCB1c2VkIGZvciBjYW5jZWxsaW5nIHJlcXVlc3RzICovXG4gIHNpZ25hbDogQWJvcnRTaWduYWw7XG59XG5cbi8qKiBQcm9wZXJ0aWVzIHBhc3NlZCBpbnRvIHRoZSBkZWNrLmdsIFRpbGVMYXllciBnZXRUaWxlRGF0YSBjYWxsYmFjayAqL1xuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFQcm9wcyA9IEdldFRpbGVEYXRhQ3VzdG9tUHJvcHMgJiBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcztcblxuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFPdXRwdXQgPSBhbnkgfCBudWxsO1xuXG5leHBvcnQgdHlwZSBSZW5kZXJTdWJMYXllcnNDdXN0b21Qcm9wcyA9IENvbG9yUmVzY2FsaW5nICZcbiAgUGljazxBc3NldFJlcXVlc3RJbmZvLCAncmVuZGVyQmFuZEluZGV4ZXMnPiAmIHtcbiAgICBvcGFjaXR5OiBudW1iZXI7XG4gICAgbGluZWFyUmVzY2FsaW5nOiBib29sZWFuO1xuICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcjogW251bWJlciwgbnVtYmVyXTtcbiAgICBub25MaW5lYXJSZXNjYWxpbmc6IGJvb2xlYW47XG4gICAgbWluUGl4ZWxWYWx1ZTogbnVtYmVyO1xuICAgIG1heFBpeGVsVmFsdWU6IG51bWJlcjtcbiAgICBiYW5kQ29tYmluYXRpb246IEJhbmRDb21iaW5hdGlvbjtcbiAgICBmaWx0ZXJFbmFibGVkOiBib29sZWFuO1xuICAgIGZpbHRlclJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICAgIGN1cnJlbnRUaW1lOiBudW1iZXI7XG4gICAgZGF0YVR5cGU6IERhdGFUeXBlT2ZUaGVCYW5kO1xuICAgIG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICAgIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICAgIGhhc0NhdGVnb3JpY2FsQ29sb3JNYXA6IGJvb2xlYW47XG4gIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyU3ViTGF5ZXJzRGVmYXVsdFByb3BzIHtcbiAgaWQ6IHN0cmluZztcbiAgdGlsZTogX1RpbGUyREhlYWRlcjxHZXRUaWxlRGF0YU91dHB1dD47XG4gIGRhdGE6IEdldFRpbGVEYXRhT3V0cHV0O1xufVxuXG5leHBvcnQgdHlwZSBSZW5kZXJTdWJMYXllcnNQcm9wcyA9IFJlbmRlclN1YkxheWVyc0N1c3RvbVByb3BzICYgUmVuZGVyU3ViTGF5ZXJzRGVmYXVsdFByb3BzO1xuXG4vKiogUmVxdWlyZWQgaW5mb3JtYXRpb24gb24gaG93IHRvIHJlbmRlciBlYWNoIHByZXNldCAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVzZXREYXRhIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgYmFuZENvbWJpbmF0aW9uOiBCYW5kQ29tYmluYXRpb247XG4gIGNvbW1vbk5hbWVzPzogc3RyaW5nW107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpbmZvVXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yUmVzY2FsaW5nIHtcbiAgZ2FtbWFDb250cmFzdEZhY3RvcjogbnVtYmVyO1xuICBzaWdtb2lkYWxDb250cmFzdEZhY3RvcjogbnVtYmVyO1xuICBzaWdtb2lkYWxCaWFzRmFjdG9yOiBudW1iZXI7XG4gIHNhdHVyYXRpb25WYWx1ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ09wdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENvbG9ybWFwSW1hZ2VEYXRhID0gVGV4dHVyZTJEUHJvcHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VEYXRhIHtcbiAgaW1hZ2VCYW5kczogVGV4dHVyZTJEUHJvcHNbXSB8IG51bGw7XG4gIGltYWdlQ29sb3JtYXA/OiBUZXh0dXJlMkRQcm9wcyB8IG51bGw7XG4gIGltYWdlTWFzaz86IFRleHR1cmUyRFByb3BzIHwgbnVsbDtcbiAgaW1hZ2VQYW4/OiBUZXh0dXJlMkRQcm9wcyB8IG51bGw7XG4gIGltYWdlUmdiYT86IFRleHR1cmUyRFByb3BzIHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgQXNzZXRSZXF1ZXN0RGF0YSA9IHtcbiAgdXJsOiBzdHJpbmc7XG4gIG9wdGlvbnM6IFJlcXVlc3RJbml0O1xuICB1c2VNYXNrOiBib29sZWFuO1xuICAvKiogUGFzcyB0aGlzIHByb3BlcnR5IHRocm91Z2ggdGhlIHJlcXVlc3QgdG8gcGljayBzcGVjaWZpYyBiYW5kcyBmcm9tIHRoZSByZXNwb25zZSAqL1xuICByZXNwb25zZVJlcXVpcmVkQmFuZEluZGljZXM/OiBudW1iZXJbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBOUFlMb2FkZXJEYXRhVHlwZXMgPVxuICB8IFVpbnQ4QXJyYXlcbiAgfCBVaW50OENsYW1wZWRBcnJheVxuICB8IEludDhBcnJheVxuICB8IFVpbnQxNkFycmF5XG4gIHwgSW50MTZBcnJheVxuICB8IFVpbnQzMkFycmF5XG4gIHwgSW50MzJBcnJheVxuICB8IEZsb2F0MzJBcnJheVxuICB8IEZsb2F0NjRBcnJheTtcblxuZXhwb3J0IGludGVyZmFjZSBOUFlMb2FkZXJSZXNwb25zZSB7XG4gIGRhdGE6IE5QWUxvYWRlckRhdGFUeXBlcztcbiAgaGVhZGVyOiB7XG4gICAgZGVzY3I6IHN0cmluZztcbiAgICBzaGFwZTogbnVtYmVyW107XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFpbkRhdGEge1xuICBoZWFkZXI6IHtcbiAgICB2ZXJ0ZXhDb3VudDogbnVtYmVyO1xuICAgIGJvdW5kaW5nQm94OiBbW251bWJlciwgbnVtYmVyLCBudW1iZXJdLCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl1dO1xuICB9O1xuICBtb2RlOiA0O1xuICBpbmRpY2VzOiB7XG4gICAgdmFsdWU6IFR5cGVkQXJyYXk7XG4gICAgc2l6ZTogMTtcbiAgfTtcbiAgYXR0cmlidXRlczoge1xuICAgIFBPU0lUSU9OOiB7XG4gICAgICB2YWx1ZTogVHlwZWRBcnJheTtcbiAgICAgIHNpemU6IDM7XG4gICAgfTtcbiAgICBURVhDT09SRF8wOiB7XG4gICAgICB2YWx1ZTogVHlwZWRBcnJheTtcbiAgICAgIHNpemU6IDI7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgS2VwbGVyUmFzdGVyRGF0YXNldCA9IEtlcGxlckRhdGFzZXQgJiB7XG4gIG1ldGFkYXRhOiBDb21wbGV0ZVNUQUNPYmplY3Q7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbGUyREhlYWRlciB7XG4gIGNvbnRlbnQ/OiB7XG4gICAgdGVycmFpbj86IFRlcnJhaW5EYXRhO1xuICAgIGltYWdlczogR2V0VGlsZURhdGFPdXRwdXQ7XG4gIH0gfCBudWxsO1xuICBnZXQgZGF0YSgpOiBHZXRUaWxlRGF0YU91dHB1dDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUFBLElBb0JZQSxlQUFlLEdBQUFDLE9BQUEsQ0FBQUQsZUFBQSwwQkFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFBLE9BQWZBLGVBQWU7QUFBQTtBQXVCM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBMkJBO0FBQ0E7QUFDQTtBQUNBO0FBb0JBO0FBWUE7QUErQkEiLCJpZ25vcmVMaXN0IjpbXX0=
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYW5kQ29tYmluYXRpb24iLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jhc3Rlci10aWxlL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7X1RpbGUyREhlYWRlcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycy90eXBlZCc7XG5pbXBvcnQge1R5cGVkQXJyYXl9IGZyb20gJ0Bsb2FkZXJzLmdsL2xvYWRlci11dGlscy9zcmMvdHlwZXMnO1xuaW1wb3J0IHtUZXh0dXJlMkRQcm9wc30gZnJvbSAnQGx1bWEuZ2wvd2ViZ2wnO1xuXG5pbXBvcnQge0tlcGxlclRhYmxlIGFzIEtlcGxlckRhdGFzZXR9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHR5cGUge0NvbG9yTWFwLCBTdGFjVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBTVEFDT2JqZWN0ID0gU3RhY1R5cGVzLlNUQUNPYmplY3Q7XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNJdGVtID0gU3RhY1R5cGVzLkNvbXBsZXRlU1RBQ0l0ZW07XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNDb2xsZWN0aW9uID0gU3RhY1R5cGVzLkNvbXBsZXRlU1RBQ0NvbGxlY3Rpb247XG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNPYmplY3QgPSBTdGFjVHlwZXMuQ29tcGxldGVTVEFDT2JqZWN0O1xuXG50eXBlIERhdGFUeXBlT2ZUaGVCYW5kID0gU3RhY1R5cGVzLkRhdGFUeXBlT2ZUaGVCYW5kO1xuXG5leHBvcnQgdHlwZSBDb21wbGV0ZVNUQUNBc3NldExpbmtzID1cbiAgfCBDb21wbGV0ZVNUQUNJdGVtWydhc3NldHMnXVxuICB8IENvbXBsZXRlU1RBQ0NvbGxlY3Rpb25bJ2l0ZW1fYXNzZXRzJ107XG5cbmV4cG9ydCBlbnVtIEJhbmRDb21iaW5hdGlvbiB7XG4gIC8qKiBSZW5kZXIgYSBzaW5nbGUgcmFzdGVyIGJhbmQuICovXG4gIFNpbmdsZSA9ICdzaW5nbGUnLFxuXG4gIC8qKiBSZW5kZXIgdGhyZWUgYmFuZHMgdG9nZXRoZXIgb24gdGhlIEdQVS5cbiAgICogTm90ZSB0aGF0IHRoaXMgY291bGQgYmUgXCJ0cnVlIGNvbG9yXCIgaWYgdGhlIGZpcnN0IGJhbmQgaXMgcmVkLCB0aGUgc2Vjb25kIGlzIGdyZWVuLCBhbmQgdGhlXG4gICAqIHRoaXJkIGlzIGJsdWUuIEJ1dCBpdCBjb3VsZCBhbHNvIGJlIFwiZmFsc2UgY29sb3JcIiBpZiB0aGUgdGhyZWUgYmFuZHMgY2hvc2VuIGFyZSBub3QgUkdCLlxuICAgKi9cbiAgUmdiID0gJ3JnYicsXG5cbiAgLyoqIENhbGN1bGF0ZSB0aGUgTm9ybWFsaXplZCBEaWZmZXJlbmNlIFZlZ2V0YXRpb24gSW5kZXggKE5EVkkpIG9uIHR3byBiYW5kcy4gKi9cbiAgTm9ybWFsaXplZERpZmZlcmVuY2UgPSAnbm9ybWFsaXplZERpZmZlcmVuY2UnLFxuXG4gIC8qKiBDYWxjdWxhdGUgdGhlIEVWSSBvbiB0d28gYmFuZHMuICovXG4gIEVuaGFuY2VkVmVnZXRhdGlvbkluZGV4ID0gJ2VuaGFuY2VkVmVnZXRhdGlvbkluZGV4JyxcblxuICAvKiogQ2FsY3VsYXRlIFNBVkkgb24gdHdvIGJhbmRzLiAqL1xuICBTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXggPSAnc29pbEFkanVzdGVkVmVnZXRhdGlvbkluZGV4JyxcblxuICAvKiogQ2FsY3VsYXRlIE1TQVZJIG9uIHR3byBiYW5kcy4gKi9cbiAgTW9kaWZpZWRTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXggPSAnbW9kaWZpZWRTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXgnXG59XG5cbi8qKlxuICogSWRlbnRpZmllcnMgb2YgU1RBQyBhc3NldHMgdG8gbG9hZFxuICpcbiAqIFRoZXNlIGlkZW50aWZpZXJzIHNob3VsZCBtYXRjaCB0aGUga2V5cyBvZiB0aGUgU1RBQyBhc3NldHMgb2JqZWN0LiBSZWZlciB0b1xuICogaHR0cHM6Ly9naXRodWIuY29tL3JhZGlhbnRlYXJ0aC9zdGFjLXNwZWMvYmxvYi9tYXN0ZXIvaXRlbS1zcGVjL2l0ZW0tc3BlYy5tZCNhc3NldHNcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXRJZHMgPSBzdHJpbmdbXTtcblxuLyoqXG4gKiBJbmRleGVzIG9mIGJhbmRzIHdpdGhpbiBlYWNoIGFzc2V0IHRoYXQgc2hvdWxkIGJlIGxvYWRlZC5cbiAqXG4gKiBFYWNoIGFzc2V0IHJlZmVycyB0byBhIHNpbmdsZSBDbG91ZC1PcHRpbWl6ZWQgR2VvVElGRiBmaWxlIG9uIGRpc2suIEVhY2ggQ09HIGhhcyBhIHdpZHRoLCBoZWlnaHQsXG4gKiBhbmQgb25lIG9yIG1vcmUgYmFuZHMuXG4gKlxuICogVGhpcyBhcnJheSBvZiBpbmRleGVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBsaXN0IG9mIEFzc2V0SWRzLiBUaGUgbnRoIGJhbmQgaW5kZXhcbiAqIGRlc2NyaWJlcyB0aGUgd2hpY2ggaW5kZXggZnJvbSB0aGUgbnRoIGFzc2V0IGlkIHRvIGxvYWQuXG4gKi9cbmV4cG9ydCB0eXBlIEJhbmRJbmRleGVzID0gbnVtYmVyW107XG5cbi8qKlxuICogQW4gYXJyYXkgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIGhvdyBiYW5kcyBzaG91bGQgYmUgcmVvcmRlcmVkIG9uIHRoZSBHUFUuIFRoaXMgYWxsb3dzIGZvclxuICogZmFzdGVyIGNoYW5naW5nIG9mIGJhbmRzIGZvciBzaW5nbGUtYXNzZXQgcmFzdGVyIGRhdGEsIHN1Y2ggYXMgTkFJUC4gV2lsbCBiZSBudWxsIGZvciBtdWx0aS1hc3NldFxuICogU1RBQyBpdGVtcy5cbiAqL1xuZXhwb3J0IHR5cGUgUmVuZGVyQmFuZEluZGV4ZXMgPSBCYW5kSW5kZXhlcyB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIEFzc2V0UmVxdWVzdEluZm8gPSB7XG4gIGxvYWRBc3NldElkczogQXNzZXRJZHM7XG4gIGxvYWRCYW5kSW5kZXhlczogQmFuZEluZGV4ZXM7XG4gIHJlbmRlckJhbmRJbmRleGVzOiBSZW5kZXJCYW5kSW5kZXhlcztcbn07XG5cbi8qKiBVc2VyLXByb3ZpZGVkIGluZm9ybWF0aW9uIGZvciBob3cgdG8gcmVuZGVyIGEgcHJlc2V0ICovXG5leHBvcnQgdHlwZSBQcmVzZXRPcHRpb24gPSB7XG4gIHNpbmdsZUJhbmQ/OiB7XG4gICAgYXNzZXRJZDogc3RyaW5nO1xuICAgIGJhbmRJbmRleD86IG51bWJlcjtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFTb3VyY2VQYXJhbXMgPSBBc3NldFJlcXVlc3RJbmZvICYge1xuICBtaW5ab29tOiBudW1iZXI7XG4gIG1heFpvb206IG51bWJlcjtcbiAgbWluUGl4ZWxWYWx1ZTogbnVtYmVyO1xuICBtYXhQaXhlbFZhbHVlOiBudW1iZXI7XG4gIG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICBtYXhDYXRlZ29yaWNhbEJhbmRWYWx1ZT86IG51bWJlcjtcbiAgZ2xvYmFsQm91bmRzOiBudW1iZXJbXSB8IG51bGw7XG4gIGRhdGFUeXBlOiBEYXRhVHlwZU9mVGhlQmFuZDtcbn07XG5cbmV4cG9ydCB0eXBlIENhdGVnb3JpY2FsQ29sb3JtYXBPcHRpb25zID0ge1xuICBjb2xvck1hcD86IENvbG9yTWFwO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBFeHRlbmRlZEtlcGxlclNUQUMgPSB7cmFzdGVyVGlsZVNlcnZlclVybHM/OiBbXX07XG5cbi8qKlxuICogQ3VzdG9tIGZpZWxkcyB3ZSBwYXNzIG9uIHRvIHRoZSBnZXRUaWxlRGF0YSBjYWxsYmFja1xuICogQW55dGhpbmcgcmVxdWlyZWQgdG8ga25vdyBfd2hhdCBkYXRhIHRvIGxvYWRfIHNob3VsZCBiZSBwYXNzZWQgaW4gaGVyZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFDdXN0b21Qcm9wcyA9IFBpY2s8QXNzZXRSZXF1ZXN0SW5mbywgJ2xvYWRBc3NldElkcycgfCAnbG9hZEJhbmRJbmRleGVzJz4gJiB7XG4gIHN0YWM6IENvbXBsZXRlU1RBQ09iamVjdCAmIEV4dGVuZGVkS2VwbGVyU1RBQztcbiAgY29sb3JtYXBJZDogc3RyaW5nO1xuICBjYXRlZ29yaWNhbENvbG9yTWFwOiBDb2xvck1hcDtcbiAgbWluQ2F0ZWdvcmljYWxCYW5kVmFsdWU/OiBudW1iZXI7XG4gIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuXG4gIC8qKiBJZiB0cnVlLCBmZXRjaCB0ZXJyYWluIGRhdGEgYXMgd2VsbCBhcyB0ZXh0dXJlIGRhdGEuICovXG4gIHNob3VsZExvYWRUZXJyYWluOiBib29sZWFuO1xuICBnbG9iYWxCb3VuZHM6IG51bWJlcltdIHwgbnVsbDtcbiAgdXNlU1RBQ1NlYXJjaGluZzogYm9vbGVhbjtcbiAgc3RhY1NlYXJjaFByb3ZpZGVyOiBzdHJpbmc7XG4gIHN0YXJ0RGF0ZTogc3RyaW5nO1xuICBlbmREYXRlOiBzdHJpbmc7XG5cbiAgLyogU3RyaW5naWZpZWQgSlNPTiByZXByZXNlbnRpbmcgYSBTVEFDIEFQSSBTZWFyY2ggUXVlcnkgdGhlIGJhY2tlbmQgc2hvdWxkIHJlcXVlc3QgZnJvbSBhIHNlcnZlci4gKi9cbiAgX3N0YWNRdWVyeT86IHN0cmluZztcbn07XG5cbi8qKiBQcm9wZXJ0aWVzIHByb3ZpZGVkIHRvIGdldFRpbGVEYXRhIGJ5IHRoZSBkZWNrLmdsIFRpbGVMYXllciAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcyB7XG4gIGluZGV4OiB7eDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcn07XG4gIHVybD86IHN0cmluZztcblxuICAvKiogQm91bmRpbmcgYm94IG9mIHRoZSBjdXJyZW50IHdlYiBtZXJjYXRvciB0aWxlLiAqL1xuICBiYm94OiB7d2VzdDogbnVtYmVyOyBub3J0aDogbnVtYmVyOyBlYXN0OiBudW1iZXI7IHNvdXRoOiBudW1iZXJ9O1xuXG4gIC8qKiBBYm9ydFNpZ25hbCB1c2VkIGZvciBjYW5jZWxsaW5nIHJlcXVlc3RzICovXG4gIHNpZ25hbDogQWJvcnRTaWduYWw7XG59XG5cbi8qKiBQcm9wZXJ0aWVzIHBhc3NlZCBpbnRvIHRoZSBkZWNrLmdsIFRpbGVMYXllciBnZXRUaWxlRGF0YSBjYWxsYmFjayAqL1xuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFQcm9wcyA9IEdldFRpbGVEYXRhQ3VzdG9tUHJvcHMgJiBHZXRUaWxlRGF0YURlZmF1bHRQcm9wcztcblxuZXhwb3J0IHR5cGUgR2V0VGlsZURhdGFPdXRwdXQgPSBhbnkgfCBudWxsO1xuXG5leHBvcnQgdHlwZSBSZW5kZXJTdWJMYXllcnNDdXN0b21Qcm9wcyA9IENvbG9yUmVzY2FsaW5nICZcbiAgUGljazxBc3NldFJlcXVlc3RJbmZvLCAncmVuZGVyQmFuZEluZGV4ZXMnPiAmIHtcbiAgICBvcGFjaXR5OiBudW1iZXI7XG4gICAgbGluZWFyUmVzY2FsaW5nOiBib29sZWFuO1xuICAgIGxpbmVhclJlc2NhbGluZ0ZhY3RvcjogW251bWJlciwgbnVtYmVyXTtcbiAgICBub25MaW5lYXJSZXNjYWxpbmc6IGJvb2xlYW47XG4gICAgbWluUGl4ZWxWYWx1ZTogbnVtYmVyO1xuICAgIG1heFBpeGVsVmFsdWU6IG51bWJlcjtcbiAgICBiYW5kQ29tYmluYXRpb246IEJhbmRDb21iaW5hdGlvbjtcbiAgICBmaWx0ZXJFbmFibGVkOiBib29sZWFuO1xuICAgIGZpbHRlclJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICAgIGN1cnJlbnRUaW1lOiBudW1iZXI7XG4gICAgZGF0YVR5cGU6IERhdGFUeXBlT2ZUaGVCYW5kO1xuICAgIG1pbkNhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICAgIG1heENhdGVnb3JpY2FsQmFuZFZhbHVlPzogbnVtYmVyO1xuICAgIGhhc0NhdGVnb3JpY2FsQ29sb3JNYXA6IGJvb2xlYW47XG4gICAgaGFzU2hhZG93RWZmZWN0PzogYm9vbGVhbjtcbiAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJTdWJMYXllcnNEZWZhdWx0UHJvcHMge1xuICBpZDogc3RyaW5nO1xuICB0aWxlOiBfVGlsZTJESGVhZGVyPEdldFRpbGVEYXRhT3V0cHV0PjtcbiAgZGF0YTogR2V0VGlsZURhdGFPdXRwdXQ7XG59XG5cbmV4cG9ydCB0eXBlIFJlbmRlclN1YkxheWVyc1Byb3BzID0gUmVuZGVyU3ViTGF5ZXJzQ3VzdG9tUHJvcHMgJiBSZW5kZXJTdWJMYXllcnNEZWZhdWx0UHJvcHM7XG5cbi8qKiBSZXF1aXJlZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gcmVuZGVyIGVhY2ggcHJlc2V0ICovXG5leHBvcnQgaW50ZXJmYWNlIFByZXNldERhdGEge1xuICBsYWJlbDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBiYW5kQ29tYmluYXRpb246IEJhbmRDb21iaW5hdGlvbjtcbiAgY29tbW9uTmFtZXM/OiBzdHJpbmdbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGluZm9Vcmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JSZXNjYWxpbmcge1xuICBnYW1tYUNvbnRyYXN0RmFjdG9yOiBudW1iZXI7XG4gIHNpZ21vaWRhbENvbnRyYXN0RmFjdG9yOiBudW1iZXI7XG4gIHNpZ21vaWRhbEJpYXNGYWN0b3I6IG51bWJlcjtcbiAgc2F0dXJhdGlvblZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3B0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQ29sb3JtYXBJbWFnZURhdGEgPSBUZXh0dXJlMkRQcm9wcztcblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZURhdGEge1xuICBpbWFnZUJhbmRzOiBUZXh0dXJlMkRQcm9wc1tdIHwgbnVsbDtcbiAgaW1hZ2VDb2xvcm1hcD86IFRleHR1cmUyRFByb3BzIHwgbnVsbDtcbiAgaW1hZ2VNYXNrPzogVGV4dHVyZTJEUHJvcHMgfCBudWxsO1xuICBpbWFnZVBhbj86IFRleHR1cmUyRFByb3BzIHwgbnVsbDtcbiAgaW1hZ2VSZ2JhPzogVGV4dHVyZTJEUHJvcHMgfCBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBBc3NldFJlcXVlc3REYXRhID0ge1xuICB1cmw6IHN0cmluZztcbiAgb3B0aW9uczogUmVxdWVzdEluaXQ7XG4gIHVzZU1hc2s6IGJvb2xlYW47XG4gIC8qKiBQYXNzIHRoaXMgcHJvcGVydHkgdGhyb3VnaCB0aGUgcmVxdWVzdCB0byBwaWNrIHNwZWNpZmljIGJhbmRzIGZyb20gdGhlIHJlc3BvbnNlICovXG4gIHJlc3BvbnNlUmVxdWlyZWRCYW5kSW5kaWNlcz86IG51bWJlcltdIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIE5QWUxvYWRlckRhdGFUeXBlcyA9XG4gIHwgVWludDhBcnJheVxuICB8IFVpbnQ4Q2xhbXBlZEFycmF5XG4gIHwgSW50OEFycmF5XG4gIHwgVWludDE2QXJyYXlcbiAgfCBJbnQxNkFycmF5XG4gIHwgVWludDMyQXJyYXlcbiAgfCBJbnQzMkFycmF5XG4gIHwgRmxvYXQzMkFycmF5XG4gIHwgRmxvYXQ2NEFycmF5O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5QWUxvYWRlclJlc3BvbnNlIHtcbiAgZGF0YTogTlBZTG9hZGVyRGF0YVR5cGVzO1xuICBoZWFkZXI6IHtcbiAgICBkZXNjcjogc3RyaW5nO1xuICAgIHNoYXBlOiBudW1iZXJbXTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWluRGF0YSB7XG4gIGhlYWRlcjoge1xuICAgIHZlcnRleENvdW50OiBudW1iZXI7XG4gICAgYm91bmRpbmdCb3g6IFtbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXV07XG4gIH07XG4gIG1vZGU6IDQ7XG4gIGluZGljZXM6IHtcbiAgICB2YWx1ZTogVHlwZWRBcnJheTtcbiAgICBzaXplOiAxO1xuICB9O1xuICBhdHRyaWJ1dGVzOiB7XG4gICAgUE9TSVRJT046IHtcbiAgICAgIHZhbHVlOiBUeXBlZEFycmF5O1xuICAgICAgc2l6ZTogMztcbiAgICB9O1xuICAgIFRFWENPT1JEXzA6IHtcbiAgICAgIHZhbHVlOiBUeXBlZEFycmF5O1xuICAgICAgc2l6ZTogMjtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBLZXBsZXJSYXN0ZXJEYXRhc2V0ID0gS2VwbGVyRGF0YXNldCAmIHtcbiAgbWV0YWRhdGE6IENvbXBsZXRlU1RBQ09iamVjdDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGlsZTJESGVhZGVyIHtcbiAgY29udGVudD86IHtcbiAgICB0ZXJyYWluPzogVGVycmFpbkRhdGE7XG4gICAgaW1hZ2VzOiBHZXRUaWxlRGF0YU91dHB1dDtcbiAgfSB8IG51bGw7XG4gIGdldCBkYXRhKCk6IEdldFRpbGVEYXRhT3V0cHV0O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQUEsSUFvQllBLGVBQWUsR0FBQUMsT0FBQSxDQUFBRCxlQUFBLDBCQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQUEsT0FBZkEsZUFBZTtBQUFBO0FBdUIzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFvQkE7QUFZQTtBQWdDQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -36,3 +36,6 @@ export declare function getTerrainUrl(rasterTileServerUrls: string[], x: number,
36
36
  * https://www.linkedin.com/pulse/fast-cesium-terrain-rendering-new-quantized-mesh-output-alvaro-huarte/
37
37
  */
38
38
  export declare function getMeshMaxError(z: number, multiplier: number): number;
39
+ export declare const RasterLayerResources: {
40
+ rasterColorMap: (colormapId: string) => string;
41
+ };