kepler.gl 3.2.4 → 3.2.5

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 (47) hide show
  1. package/dist/src/reducers/src/ui-state-updaters.d.ts +1 -1
  2. package/dist/src/utils/src/application-config.d.ts +2 -0
  3. package/package.json +2 -2
  4. package/src/actions/package.json +8 -8
  5. package/src/ai-assistant/dist/components/ai-assistant-component.js +42 -7
  6. package/src/ai-assistant/package.json +7 -7
  7. package/src/ai-assistant/src/components/ai-assistant-component.tsx +17 -4
  8. package/src/cloud-providers/package.json +2 -2
  9. package/src/common-utils/package.json +3 -3
  10. package/src/components/dist/map-container.js +72 -64
  11. package/src/components/package.json +15 -15
  12. package/src/components/src/map-container.tsx +8 -1
  13. package/src/constants/dist/default-settings.js +1 -1
  14. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/89/a2/7b6ce2c6c94377ff73d3eb84e41a05931160d1d250804fb519215165f383a46120fd1f4662bd2ae95d7c509ce63f4b8e866b515f9f8750cb702709d4bcdc +1 -0
  15. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/5b/96/163a3fcac4673f000a64cbecbb40621d276cb6f295539b4a6e139bbfc4f5 +2 -0
  16. package/src/constants/package.json +2 -2
  17. package/src/constants/umd/keplergl.min.js +1 -1
  18. package/src/deckgl-arrow-layers/package.json +3 -3
  19. package/src/deckgl-layers/package.json +4 -4
  20. package/src/duckdb/package.json +7 -7
  21. package/src/effects/package.json +5 -5
  22. package/src/layers/dist/icon-layer/icon-layer.d.ts +2 -1
  23. package/src/layers/dist/icon-layer/icon-layer.js +11 -2
  24. package/src/layers/package.json +9 -9
  25. package/src/layers/src/icon-layer/icon-layer.ts +11 -2
  26. package/src/localization/package.json +1 -1
  27. package/src/processors/package.json +7 -7
  28. package/src/reducers/dist/ui-state-updaters.d.ts +1 -1
  29. package/src/reducers/dist/ui-state-updaters.js +4 -4
  30. package/src/reducers/package.json +16 -16
  31. package/src/reducers/src/ui-state-updaters.ts +9 -4
  32. package/src/schemas/package.json +7 -7
  33. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/13/40/aa1c82ba19f8a57b20540cedfbc7086324551b58a599674e858ef4b8c12fad29b2e5d0a17f38ff2fb0adb913909e58b1aada0a79f49e8dc1b3ca673db76f +1 -0
  34. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/95/15/0b35e451aad3f2352a14cfa64386984de34da0a0b5ad2fc736ecb44d22db +2 -0
  35. package/src/styles/package.json +2 -2
  36. package/src/styles/umd/keplergl.min.js +1 -1
  37. package/src/table/package.json +5 -5
  38. package/src/tasks/package.json +2 -2
  39. package/src/types/layers.d.ts +2 -0
  40. package/src/types/package.json +1 -1
  41. package/src/utils/dist/application-config.d.ts +2 -0
  42. package/src/utils/dist/application-config.js +13 -2
  43. package/src/utils/dist/dom-to-image.js +19 -7
  44. package/src/utils/package.json +4 -5
  45. package/src/utils/src/application-config.ts +17 -1
  46. package/src/utils/src/dom-to-image.ts +18 -6
  47. package/umd/keplergl.min.js +1146 -1146
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/duckdb",
3
3
  "author": "Shan He <heshan0131@gmail.com>",
4
- "version": "3.2.4",
4
+ "version": "3.2.5",
5
5
  "description": "DuckDB plugin for Kepler.gl",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -43,12 +43,12 @@
43
43
  ],
44
44
  "dependencies": {
45
45
  "@duckdb/duckdb-wasm": "^1.28.0",
46
- "@kepler.gl/common-utils": "3.2.4",
47
- "@kepler.gl/constants": "3.2.4",
48
- "@kepler.gl/processors": "3.2.4",
49
- "@kepler.gl/table": "3.2.4",
50
- "@kepler.gl/types": "3.2.4",
51
- "@kepler.gl/utils": "3.2.4",
46
+ "@kepler.gl/common-utils": "3.2.5",
47
+ "@kepler.gl/constants": "3.2.5",
48
+ "@kepler.gl/processors": "3.2.5",
49
+ "@kepler.gl/table": "3.2.5",
50
+ "@kepler.gl/types": "3.2.5",
51
+ "@kepler.gl/utils": "3.2.5",
52
52
  "@monaco-editor/react": "^4.6.0",
53
53
  "@radix-ui/react-collapsible": "^1.1.0",
54
54
  "apache-arrow": ">=15.0.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/effects",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.4",
4
+ "version": "3.2.5",
5
5
  "description": "kepler.gl viaual effects",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -31,10 +31,10 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@deck.gl/core": "^8.9.27",
34
- "@kepler.gl/common-utils": "3.2.4",
35
- "@kepler.gl/constants": "3.2.4",
36
- "@kepler.gl/types": "3.2.4",
37
- "@kepler.gl/utils": "3.2.4",
34
+ "@kepler.gl/common-utils": "3.2.5",
35
+ "@kepler.gl/constants": "3.2.5",
36
+ "@kepler.gl/types": "3.2.5",
37
+ "@kepler.gl/utils": "3.2.5",
38
38
  "@luma.gl/core": "^8.5.20",
39
39
  "@luma.gl/shadertools": "^8.5.20",
40
40
  "moment-timezone": "^0.5.35",
@@ -4,7 +4,7 @@ import Layer, { LayerBaseConfig, LayerBaseConfigPartial } from '../base-layer';
4
4
  import { FindDefaultLayerPropsReturnValue } from '../layer-utils';
5
5
  import { default as KeplerTable } from '@kepler.gl/table';
6
6
  import { DataContainerInterface } from '@kepler.gl/utils';
7
- import { ColorRange, VisConfigBoolean, VisConfigColorRange, VisConfigNumber, VisConfigRange, Merge, LayerColumn } from '@kepler.gl/types';
7
+ import { ColorRange, VisConfigBoolean, VisConfigColorRange, VisConfigNumber, VisConfigRange, Merge, LayerColumn, BindedLayerCallbacks } from '@kepler.gl/types';
8
8
  export declare type IconLayerColumnsConfig = {
9
9
  lat: LayerColumn;
10
10
  lng: LayerColumn;
@@ -52,6 +52,7 @@ export default class IconLayer extends Layer {
52
52
  _layerInfoModal: () => JSX.Element;
53
53
  iconGeometry: IconGeometry;
54
54
  iconGeometryVersion: number;
55
+ onRedrawNeeded: BindedLayerCallbacks['onRedrawNeeded'];
55
56
  visConfigSettings: IconLayerVisConfigSettings;
56
57
  config: IconLayerConfig;
57
58
  constructor(props: {
@@ -77,6 +77,7 @@ var IconLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
77
77
  (0, _defineProperty2["default"])(_this, "_layerInfoModal", void 0);
78
78
  (0, _defineProperty2["default"])(_this, "iconGeometry", void 0);
79
79
  (0, _defineProperty2["default"])(_this, "iconGeometryVersion", void 0);
80
+ (0, _defineProperty2["default"])(_this, "onRedrawNeeded", void 0);
80
81
  _this.registerVisConfig(pointVisConfigs);
81
82
  _this.getPositionAccessor = function (dataContainer) {
82
83
  return iconPosAccessor(_this.config.columns)(dataContainer);
@@ -201,6 +202,7 @@ var IconLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
201
202
  }, {
202
203
  key: "setSvgIcons",
203
204
  value: function setSvgIcons() {
205
+ var _this$onRedrawNeeded;
204
206
  var svgIcons = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
205
207
  this.iconGeometry = svgIcons.reduce(function (accu, curr) {
206
208
  return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, curr.id, flatterIconPositions(curr)));
@@ -209,6 +211,9 @@ var IconLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
209
211
  // Increment version when SVG icons are loaded to trigger layer re-render
210
212
  this.iconGeometryVersion += 1;
211
213
  this._layerInfoModal = (0, _iconInfoModal["default"])(svgIcons);
214
+
215
+ // Trigger a map redraw so deck.gl picks up the new geometry
216
+ (_this$onRedrawNeeded = this.onRedrawNeeded) === null || _this$onRedrawNeeded === void 0 || _this$onRedrawNeeded.call(this);
212
217
  }
213
218
  }, {
214
219
  key: "getFilteredItemCount",
@@ -298,7 +303,11 @@ var IconLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
298
303
  gpuFilter = opts.gpuFilter,
299
304
  objectHovered = opts.objectHovered,
300
305
  mapState = opts.mapState,
301
- interactionConfig = opts.interactionConfig;
306
+ interactionConfig = opts.interactionConfig,
307
+ layerCallbacks = opts.layerCallbacks;
308
+
309
+ // Store callback to trigger map redraw when icon geometry loads asynchronously
310
+ this.onRedrawNeeded = layerCallbacks === null || layerCallbacks === void 0 ? void 0 : layerCallbacks.onRedrawNeeded;
302
311
  var radiusScale = this.getRadiusScaleByZoom(mapState);
303
312
  var layerProps = _objectSpread({
304
313
  radiusScale: radiusScale,
@@ -411,4 +420,4 @@ var IconLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
411
420
  }
412
421
  }]);
413
422
  }(_baseLayer["default"]);
414
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZXh0ZW5zaW9ucyIsIl9jb25zdGFudHMiLCJfZGVja2dsTGF5ZXJzIiwiX2ljb25MYXllckljb24iLCJfY29uc3RhbnRzMiIsIl9pY29uSW5mb01vZGFsIiwiX2Jhc2VMYXllciIsIl9sYXllclV0aWxzIiwiX3V0aWxzIiwiX2xheWVyVGV4dExhYmVsIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiYnJ1c2hpbmdFeHRlbnNpb24iLCJCcnVzaGluZ0V4dGVuc2lvbiIsImljb25Qb3NBY2Nlc3NvciIsImV4cG9ydHMiLCJfcmVmIiwibGF0IiwibG5nIiwiYWx0aXR1ZGUiLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImljb25BY2Nlc3NvciIsIl9yZWYyIiwiaWNvbiIsImljb25SZXF1aXJlZENvbHVtbnMiLCJpY29uT3B0aW9uYWxDb2x1bW5zIiwicG9pbnRWaXNDb25maWdzIiwicmFkaXVzIiwiZml4ZWRSYWRpdXMiLCJvcGFjaXR5IiwiY29sb3JSYW5nZSIsInJhZGl1c1JhbmdlIiwiYmlsbGJvYXJkIiwiZmxhdHRlckljb25Qb3NpdGlvbnMiLCJtZXNoIiwiY2VsbHMiLCJyZWR1Y2UiLCJwcmV2IiwiY2VsbCIsInBvc2l0aW9ucyIsIkljb25MYXllciIsIl9MYXllciIsInByb3BzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJnZXRJY29uQWNjZXNzb3IiLCJfbGF5ZXJJbmZvTW9kYWwiLCJJY29uSW5mb01vZGFsRmFjdG9yeSIsInN2Z0ljb25zIiwiaWNvbkdlb21ldHJ5IiwiaWNvbkdlb21ldHJ5VmVyc2lvbiIsImlzVGVzdCIsInNldFN2Z0ljb25zIiwiZ2V0U3ZnSWNvbnMiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImdldCIsImNvbmNhdCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiY2RuVXJsIiwiZGVmYXVsdFBvaW50Q29sdW1uUGFpcnMiLCJJY29uTGF5ZXJJY29uIiwiY29sb3IiLCJhY2Nlc3NvciIsImRlZmF1bHRWYWx1ZSIsInNpemUiLCJwcm9wZXJ0eSIsInJhbmdlIiwiY2hhbm5lbFNjYWxlVHlwZSIsImlkIiwidGVtcGxhdGUiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJ2YWx1ZSIsImdldFpvb21GYWN0b3IiLCJfcmVmMyIsInpvb20iLCJfcmVmMyR6b29tT2Zmc2V0Iiwiem9vbU9mZnNldCIsIk1hdGgiLCJwb3ciLCJfdGhpczIiLCJmZXRjaENvbmZpZyIsIm1ldGhvZCIsIm1vZGUiLCJjYWNoZSIsIldpbmRvdyIsImZldGNoIiwic3ZnSWNvblVybCIsInRoZW4iLCJyZXNwb25zZSIsIm9rIiwiRXJyb3IiLCJzdGF0dXMiLCJqc29uIiwicGFyc2VkIiwidW5kZWZpbmVkIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwiYWNjdSIsImN1cnIiLCJnZXRGaWx0ZXJlZEl0ZW1Db3VudCIsImZpbHRlcmVkSXRlbUNvdW50IiwidmFsdWVzIiwidG90YWwiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJfcmVmNCIsImdldFBvc2l0aW9uIiwiZmlsdGVyZWRJbmRleCIsImdldEljb24iLCJkYXRhIiwiaSIsInJvd0luZGV4IiwicG9zIiwiZXZlcnkiLCJmb3JtYXRMYXllckRhdGEiLCJkYXRhc2V0cyIsIm9sZExheWVyRGF0YSIsImRhdGFJZCIsInRleHRMYWJlbCIsIl9kYXRhc2V0cyR0aGlzJGNvbmZpZyIsImdwdUZpbHRlciIsIl90aGlzJHVwZGF0ZURhdGEiLCJ1cGRhdGVEYXRhIiwidHJpZ2dlckNoYW5nZWQiLCJ0ZXh0TGFiZWxzIiwiZm9ybWF0VGV4dExhYmVsRGF0YSIsImFjY2Vzc29ycyIsImdldEF0dHJpYnV0ZUFjY2Vzc29ycyIsImdldEZpbHRlclZhbHVlIiwiZmlsdGVyVmFsdWVBY2Nlc3NvciIsInVwZGF0ZUxheWVyTWV0YSIsImRhdGFzZXQiLCJib3VuZHMiLCJnZXRQb2ludHNCb3VuZHMiLCJ1cGRhdGVNZXRhIiwicmVuZGVyTGF5ZXIiLCJvcHRzIiwiX3RoaXMkY29uZmlnJGNvbHVtbnMkIiwiX3RoaXMzIiwib2JqZWN0SG92ZXJlZCIsIm1hcFN0YXRlIiwiaW50ZXJhY3Rpb25Db25maWciLCJyYWRpdXNTY2FsZSIsImdldFJhZGl1c1NjYWxlQnlab29tIiwibGF5ZXJQcm9wcyIsInZpc0NvbmZpZyIsInJhZGl1c01heFBpeGVscyIsInVwZGF0ZVRyaWdnZXJzIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycyIsImRlZmF1bHRMYXllclByb3BzIiwiZ2V0RGVmYXVsdERlY2tMYXllclByb3BzIiwiYnJ1c2hpbmdQcm9wcyIsImdldEJydXNoaW5nRXh0ZW5zaW9uUHJvcHMiLCJnZXRQaXhlbE9mZnNldCIsImdldFRleHRPZmZzZXRCeVJhZGl1cyIsImdldFJhZGl1cyIsImV4dGVuc2lvbnMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwic2hhcmVkUHJvcHMiLCJmaWx0ZXJSYW5nZSIsImxhYmVsTGF5ZXJzIiwicmVuZGVyVGV4dExhYmVsTGF5ZXIiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsInBhcmFtZXRlcnMiLCJkZXB0aFRlc3QiLCJjdWxsRmFjZSIsIkdMIiwiRlJPTlQiLCJiYXNlTGF5ZXJJZCIsImxheWVySWRXaXRoVmVyc2lvbiIsIlN2Z0ljb25MYXllciIsImdldEljb25HZW9tZXRyeSIsIl90aGlzMyRpY29uR2VvbWV0cnkiLCJnZXREZWZhdWx0SG92ZXJMYXllclByb3BzIiwidmlzaWJsZSIsImdldEZpbGxDb2xvciIsImhpZ2hsaWdodENvbG9yIiwiX3RoaXMzJGljb25HZW9tZXRyeTIiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJfcmVmNSIsIl9yZWY1JGZpZWxkUGFpcnMiLCJmaWVsZFBhaXJzIiwiX3JlZjUkZmllbGRzIiwiZmllbGRzIiwibm90Rm91bmQiLCJpY29uRmllbGRzIiwiX3JlZjYiLCJuYW1lIiwicmVwbGFjZSIsInRyaW0iLCJzcGxpdCIsInNvbWUiLCJzZWciLCJJQ09OX0ZJRUxEUyIsImluY2x1ZGVzIiwicHRQYWlyIiwiYXNzaWduUG9pbnRQYWlyVG9MYXllckNvbHVtbiIsIm1hcCIsImljb25GaWVsZCIsImxhYmVsIiwiaXNWaXNpYmxlIiwiTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaWNvbi1sYXllci9pY29uLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBXaW5kb3cgZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQge0JydXNoaW5nRXh0ZW5zaW9ufSBmcm9tICdAZGVjay5nbC9leHRlbnNpb25zJztcbmltcG9ydCBHTCBmcm9tICdAbHVtYS5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge1N2Z0ljb25MYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcbmltcG9ydCBJY29uTGF5ZXJJY29uIGZyb20gJy4vaWNvbi1sYXllci1pY29uJztcbmltcG9ydCB7SUNPTl9GSUVMRFN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBJY29uSW5mb01vZGFsRmFjdG9yeSBmcm9tICcuL2ljb24taW5mby1tb2RhbCc7XG5pbXBvcnQgTGF5ZXIsIHtMYXllckJhc2VDb25maWcsIExheWVyQmFzZUNvbmZpZ1BhcnRpYWx9IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHthc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uLCBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZX0gZnJvbSAnLi4vbGF5ZXItdXRpbHMnO1xuaW1wb3J0IHtpc1Rlc3R9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtnZXRUZXh0T2Zmc2V0QnlSYWRpdXMsIGZvcm1hdFRleHRMYWJlbERhdGF9IGZyb20gJy4uL2xheWVyLXRleHQtbGFiZWwnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEtlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7Z2V0QXBwbGljYXRpb25Db25maWcsIERhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnQm9vbGVhbixcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnTnVtYmVyLFxuICBWaXNDb25maWdSYW5nZSxcbiAgTWVyZ2UsXG4gIExheWVyQ29sdW1uXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBJY29uTGF5ZXJDb2x1bW5zQ29uZmlnID0ge1xuICBsYXQ6IExheWVyQ29sdW1uO1xuICBsbmc6IExheWVyQ29sdW1uO1xuICBhbHRpdHVkZTogTGF5ZXJDb2x1bW47XG4gIGljb246IExheWVyQ29sdW1uO1xufTtcblxudHlwZSBJY29uR2VvbWV0cnkgPSBvYmplY3QgfCBudWxsO1xuXG5leHBvcnQgdHlwZSBJY29uTGF5ZXJWaXNDb25maWdTZXR0aW5ncyA9IHtcbiAgcmFkaXVzOiBWaXNDb25maWdOdW1iZXI7XG4gIGZpeGVkUmFkaXVzOiBWaXNDb25maWdCb29sZWFuO1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIGNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIHJhZGl1c1JhbmdlOiBWaXNDb25maWdSYW5nZTtcbn07XG5cbmV4cG9ydCB0eXBlIEljb25MYXllclZpc0NvbmZpZyA9IHtcbiAgcmFkaXVzOiBudW1iZXI7XG4gIGZpeGVkUmFkaXVzOiBib29sZWFuO1xuICBvcGFjaXR5OiBudW1iZXI7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHJhZGl1c1JhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xuICBiaWxsYm9hcmQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBJY29uTGF5ZXJDb25maWcgPSBNZXJnZTxcbiAgTGF5ZXJCYXNlQ29uZmlnLFxuICB7Y29sdW1uczogSWNvbkxheWVyQ29sdW1uc0NvbmZpZzsgdmlzQ29uZmlnOiBJY29uTGF5ZXJWaXNDb25maWd9XG4+O1xuXG5leHBvcnQgdHlwZSBJY29uTGF5ZXJEYXRhID0ge2luZGV4OiBudW1iZXI7IGljb246IHN0cmluZ307XG5cbmNvbnN0IGJydXNoaW5nRXh0ZW5zaW9uID0gbmV3IEJydXNoaW5nRXh0ZW5zaW9uKCk7XG5cbmV4cG9ydCBjb25zdCBpY29uUG9zQWNjZXNzb3IgPVxuICAoe2xhdCwgbG5nLCBhbHRpdHVkZX06IEljb25MYXllckNvbHVtbnNDb25maWcpID0+XG4gIChkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT5cbiAgZCA9PlxuICAgIFtcbiAgICAgIGRjLnZhbHVlQXQoZC5pbmRleCwgbG5nLmZpZWxkSWR4KSxcbiAgICAgIGRjLnZhbHVlQXQoZC5pbmRleCwgbGF0LmZpZWxkSWR4KSxcbiAgICAgIGFsdGl0dWRlPy5maWVsZElkeCA+IC0xID8gZGMudmFsdWVBdChkLmluZGV4LCBhbHRpdHVkZS5maWVsZElkeCkgOiAwXG4gICAgXTtcblxuZXhwb3J0IGNvbnN0IGljb25BY2Nlc3NvciA9XG4gICh7aWNvbn06IEljb25MYXllckNvbHVtbnNDb25maWcpID0+XG4gIChkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT5cbiAgZCA9PlxuICAgIGRjLnZhbHVlQXQoZC5pbmRleCwgaWNvbi5maWVsZElkeCk7XG5cbmV4cG9ydCBjb25zdCBpY29uUmVxdWlyZWRDb2x1bW5zOiBbJ2xhdCcsICdsbmcnLCAnaWNvbiddID0gWydsYXQnLCAnbG5nJywgJ2ljb24nXTtcbmV4cG9ydCBjb25zdCBpY29uT3B0aW9uYWxDb2x1bW5zOiBbJ2FsdGl0dWRlJ10gPSBbJ2FsdGl0dWRlJ107XG5cbmV4cG9ydCBjb25zdCBwb2ludFZpc0NvbmZpZ3M6IHtcbiAgcmFkaXVzOiAncmFkaXVzJztcbiAgZml4ZWRSYWRpdXM6ICdmaXhlZFJhZGl1cyc7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JztcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnO1xuICByYWRpdXNSYW5nZTogJ3JhZGl1c1JhbmdlJztcbiAgYmlsbGJvYXJkOiAnYmlsbGJvYXJkJztcbn0gPSB7XG4gIHJhZGl1czogJ3JhZGl1cycsXG4gIGZpeGVkUmFkaXVzOiAnZml4ZWRSYWRpdXMnLFxuICBvcGFjaXR5OiAnb3BhY2l0eScsXG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gIGJpbGxib2FyZDogJ2JpbGxib2FyZCdcbn07XG5cbmZ1bmN0aW9uIGZsYXR0ZXJJY29uUG9zaXRpb25zKGljb24pIHtcbiAgLy8gaGFkIHRvIGZsaXAgeSwgc2luY2UgQGx1bWEgbW9kYWwgaGFzIGNoYW5nZWRcbiAgcmV0dXJuIGljb24ubWVzaC5jZWxscy5yZWR1Y2UoKHByZXYsIGNlbGwpID0+IHtcbiAgICBjZWxsLmZvckVhY2gocCA9PiB7XG4gICAgICBwcmV2LnB1c2goXG4gICAgICAgIC4uLltpY29uLm1lc2gucG9zaXRpb25zW3BdWzBdLCAtaWNvbi5tZXNoLnBvc2l0aW9uc1twXVsxXSwgaWNvbi5tZXNoLnBvc2l0aW9uc1twXVsyXV1cbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHByZXY7XG4gIH0sIFtdKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSWNvbkxheWVyIGV4dGVuZHMgTGF5ZXIge1xuICBnZXRJY29uQWNjZXNzb3I6IChkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiAoZDogYW55KSA9PiBhbnk7XG4gIF9sYXllckluZm9Nb2RhbDogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGljb25HZW9tZXRyeTogSWNvbkdlb21ldHJ5O1xuICBpY29uR2VvbWV0cnlWZXJzaW9uOiBudW1iZXI7XG5cbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogSWNvbkxheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgY29uZmlnOiBJY29uTGF5ZXJDb25maWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvcHM6IHtcbiAgICAgIGlkPzogc3RyaW5nO1xuICAgICAgaWNvbkdlb21ldHJ5PzogSWNvbkdlb21ldHJ5O1xuICAgICAgc3ZnSWNvbnM/OiBhbnlbXTtcbiAgICB9ICYgTGF5ZXJCYXNlQ29uZmlnUGFydGlhbFxuICApIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKHBvaW50VmlzQ29uZmlncyk7XG4gICAgdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yID0gKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gICAgICBpY29uUG9zQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YUNvbnRhaW5lcik7XG4gICAgdGhpcy5nZXRJY29uQWNjZXNzb3IgPSBkYXRhQ29udGFpbmVyID0+IGljb25BY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcblxuICAgIHRoaXMuX2xheWVySW5mb01vZGFsID0gSWNvbkluZm9Nb2RhbEZhY3RvcnkocHJvcHMuc3ZnSWNvbnMpO1xuICAgIHRoaXMuaWNvbkdlb21ldHJ5ID0gcHJvcHMuaWNvbkdlb21ldHJ5IHx8IG51bGw7XG4gICAgdGhpcy5pY29uR2VvbWV0cnlWZXJzaW9uID0gMDtcblxuICAgIGlmIChpc1Rlc3QoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocHJvcHMuc3ZnSWNvbnMpIHtcbiAgICAgIC8vIGlmIHN2ZyBpY29ucyBhcmUgcGFzc2VkIGluIHRoZW4gYnlwYXNzIGZldGNoaW5nIG9mIHJlbW90ZSBzdmcgaWNvbnNcbiAgICAgIHRoaXMuc2V0U3ZnSWNvbnMocHJvcHMuc3ZnSWNvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBwcmVwYXJlIGxheWVyIGluZm8gbW9kYWwgYW5kIGZldGNoIHJlbW90ZSBzdmcgaWNvbnNcbiAgICAgIHRoaXMuZ2V0U3ZnSWNvbnMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3ZnSWNvblVybCgpIHtcbiAgICByZXR1cm4gYCR7Z2V0QXBwbGljYXRpb25Db25maWcoKS5jZG5Vcmx9L2ljb25zL3N2Zy1pY29ucy5qc29uYDtcbiAgfVxuXG4gIGdldCB0eXBlKCk6ICdpY29uJyB7XG4gICAgcmV0dXJuICdpY29uJztcbiAgfVxuXG4gIGdldCByZXF1aXJlZExheWVyQ29sdW1ucygpIHtcbiAgICByZXR1cm4gaWNvblJlcXVpcmVkQ29sdW1ucztcbiAgfVxuXG4gIGdldCBvcHRpb25hbENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIGljb25PcHRpb25hbENvbHVtbnM7XG4gIH1cblxuICBnZXQgY29sdW1uUGFpcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvaW50Q29sdW1uUGFpcnM7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBJY29uTGF5ZXJJY29uO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIC4uLnN1cGVyLnZpc3VhbENoYW5uZWxzLnNpemUsXG4gICAgICAgIHByb3BlcnR5OiAncmFkaXVzJyxcbiAgICAgICAgcmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6ICdyYWRpdXMnLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFJhZGl1cycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXQgbGF5ZXJJbmZvTW9kYWwoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiAnaWNvbkluZm8nLFxuICAgICAgdGVtcGxhdGU6IHRoaXMuX2xheWVySW5mb01vZGFsLFxuICAgICAgbW9kYWxQcm9wczoge1xuICAgICAgICB0aXRsZTogJ21vZGFsLmljb25JbmZvLnRpdGxlJ1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXRab29tRmFjdG9yKHt6b29tLCB6b29tT2Zmc2V0ID0gMH06IHt6b29tOiBudW1iZXI7IHpvb21PZmZzZXQ/OiBudW1iZXJ9KSB7XG4gICAgcmV0dXJuIE1hdGgucG93KDIsIDE0IC0gem9vbSArIHpvb21PZmZzZXQpO1xuICB9XG5cbiAgZ2V0U3ZnSWNvbnMoKSB7XG4gICAgY29uc3QgZmV0Y2hDb25maWcgPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgbW9kZTogJ2NvcnMnLFxuICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICB9O1xuXG4gICAgaWYgKFdpbmRvdy5mZXRjaCAmJiB0aGlzLnN2Z0ljb25VcmwpIHtcbiAgICAgIFdpbmRvdy5mZXRjaCh0aGlzLnN2Z0ljb25VcmwsIGZldGNoQ29uZmlnKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCBzdmctaWNvbnMuanNvbjogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChwYXJzZWQ6IHtzdmdJY29ucz86IGFueVtdfSA9IHt9KSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTdmdJY29ucyhwYXJzZWQuc3ZnSWNvbnMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBvciBwYXJzaW5nIHN2Zy1pY29ucy5qc29uOicsIGVycik7XG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gZW1wdHkgZ2VvbWV0cnkgdG8gYWxsb3cgZGVmYXVsdCBpY29uIHJlbmRlcmluZ1xuICAgICAgICAgIHRoaXMuaWNvbkdlb21ldHJ5ID0ge307XG4gICAgICAgICAgdGhpcy5pY29uR2VvbWV0cnlWZXJzaW9uICs9IDE7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBmZXRjaCBhdmFpbGFibGU7IHNldCBlbXB0eSBnZW9tZXRyeSBzbyBsYXllciBjYW4gcmVuZGVyIGRlZmF1bHQgaWNvbnNcbiAgICAgIHRoaXMuaWNvbkdlb21ldHJ5ID0ge307XG4gICAgICB0aGlzLmljb25HZW9tZXRyeVZlcnNpb24gKz0gMTtcbiAgICB9XG4gIH1cblxuICBzZXRTdmdJY29ucyhzdmdJY29uczogYW55W10gPSBbXSkge1xuICAgIHRoaXMuaWNvbkdlb21ldHJ5ID0gc3ZnSWNvbnMucmVkdWNlKFxuICAgICAgKGFjY3UsIGN1cnIpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtjdXJyLmlkXTogZmxhdHRlckljb25Qb3NpdGlvbnMoY3VycilcbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xuXG4gICAgLy8gSW5jcmVtZW50IHZlcnNpb24gd2hlbiBTVkcgaWNvbnMgYXJlIGxvYWRlZCB0byB0cmlnZ2VyIGxheWVyIHJlLXJlbmRlclxuICAgIHRoaXMuaWNvbkdlb21ldHJ5VmVyc2lvbiArPSAxO1xuXG4gICAgdGhpcy5fbGF5ZXJJbmZvTW9kYWwgPSBJY29uSW5mb01vZGFsRmFjdG9yeShzdmdJY29ucyk7XG4gIH1cblxuICBzdGF0aWMgZmluZERlZmF1bHRMYXllclByb3BzKHtcbiAgICBmaWVsZFBhaXJzID0gW10sXG4gICAgZmllbGRzID0gW11cbiAgfTogS2VwbGVyVGFibGUpOiBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSB7XG4gICAgY29uc3Qgbm90Rm91bmQ6IEZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlID0ge3Byb3BzOiBbXX07XG4gICAgaWYgKCFmaWVsZFBhaXJzLmxlbmd0aCB8fCAhZmllbGRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5vdEZvdW5kO1xuICAgIH1cblxuICAgIGNvbnN0IGljb25GaWVsZHMgPSBmaWVsZHMuZmlsdGVyKCh7bmFtZX0pID0+XG4gICAgICBuYW1lXG4gICAgICAgIC5yZXBsYWNlKC9bXywuXSsvZywgJyAnKVxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5zb21lKHNlZyA9PiBJQ09OX0ZJRUxEUy5pY29uLnNvbWUodCA9PiB0LmluY2x1ZGVzKHNlZykpKVxuICAgICk7XG5cbiAgICBpZiAoIWljb25GaWVsZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbm90Rm91bmQ7XG4gICAgfVxuXG4gICAgLy8gY3JlYXRlIGljb24gbGF5ZXJzIGZvciBmaXJzdCBwb2ludCBwYWlyXG4gICAgY29uc3QgcHRQYWlyID0gZmllbGRQYWlyc1swXTtcbiAgICBjb25zdCBjb2x1bW5zID0gYXNzaWduUG9pbnRQYWlyVG9MYXllckNvbHVtbihwdFBhaXIsIHRydWUpO1xuXG4gICAgY29uc3QgcHJvcHMgPSBpY29uRmllbGRzLm1hcChpY29uRmllbGQgPT4gKHtcbiAgICAgIGxhYmVsOiBpY29uRmllbGQubmFtZS5yZXBsYWNlKC9bXywuXSsvZywgJyAnKS50cmltKCksXG4gICAgICBjb2x1bW5zOiB7XG4gICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIGljb246IHtcbiAgICAgICAgICB2YWx1ZTogaWNvbkZpZWxkLm5hbWUsXG4gICAgICAgICAgZmllbGRJZHg6IGljb25GaWVsZC5maWVsZElkeFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHtwcm9wc307XG4gIH1cblxuICBnZXRGaWx0ZXJlZEl0ZW1Db3VudCgpIHtcbiAgICAvLyB1c2UgdG90YWxcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5maWx0ZXJlZEl0ZW1Db3VudCkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmZpbHRlcmVkSXRlbUNvdW50KS5yZWR1Y2UoXG4gICAgICAgICh0b3RhbCwgY3VycikgPT4gKE51bWJlci5pc0Zpbml0ZShjdXJyKSA/IHRvdGFsICsgY3VyciA6IHRvdGFsKSxcbiAgICAgICAgMFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUoe2RhdGFDb250YWluZXIsIGZpbHRlcmVkSW5kZXh9OiBLZXBsZXJUYWJsZSwgZ2V0UG9zaXRpb24pIHtcbiAgICBjb25zdCBnZXRJY29uID0gdGhpcy5nZXRJY29uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG4gICAgY29uc3QgZGF0YTogSWNvbkxheWVyRGF0YVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlcmVkSW5kZXgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmlsdGVyZWRJbmRleFtpXTtcbiAgICAgIGNvbnN0IHJvd0luZGV4ID0ge2luZGV4fTtcbiAgICAgIGNvbnN0IHBvcyA9IGdldFBvc2l0aW9uKHJvd0luZGV4KTtcbiAgICAgIGNvbnN0IGljb24gPSBnZXRJY29uKHJvd0luZGV4KTtcblxuICAgICAgLy8gaWYgZG9lc24ndCBoYXZlIHBvaW50IGxhdCBvciBsbmcsIGRvIG5vdCBhZGQgdGhlIHBvaW50XG4gICAgICAvLyBkZWNrLmdsIGNhbid0IGhhbmRsZSBwb3NpdGlvbiA9IG51bGxcbiAgICAgIGlmIChwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJiB0eXBlb2YgaWNvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZGF0YS5wdXNoKHtcbiAgICAgICAgICBpbmRleCxcbiAgICAgICAgICBpY29uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGF0YUlkID09PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHt0ZXh0TGFiZWx9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qge2dwdUZpbHRlciwgZGF0YUNvbnRhaW5lcn0gPSBkYXRhc2V0c1t0aGlzLmNvbmZpZy5kYXRhSWRdO1xuXG4gICAgY29uc3QgZ2V0UG9zaXRpb24gPSB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG5cbiAgICBjb25zdCB7ZGF0YSwgdHJpZ2dlckNoYW5nZWR9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgLy8gZ2V0IGFsbCBkaXN0aW5jdCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGxhYmVsc1xuICAgIGNvbnN0IHRleHRMYWJlbHMgPSBmb3JtYXRUZXh0TGFiZWxEYXRhKHtcbiAgICAgIHRleHRMYWJlbCxcbiAgICAgIHRyaWdnZXJDaGFuZ2VkLFxuICAgICAgb2xkTGF5ZXJEYXRhLFxuICAgICAgZGF0YSxcbiAgICAgIGRhdGFDb250YWluZXJcbiAgICB9KTtcblxuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQ29udGFpbmVyfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGdldFBvc2l0aW9uLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKCksXG4gICAgICB0ZXh0TGFiZWxzLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZUxheWVyTWV0YShkYXRhc2V0OiBLZXBsZXJUYWJsZSwgZ2V0UG9zaXRpb24pIHtcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lcn0gPSBkYXRhc2V0O1xuICAgIGNvbnN0IGJvdW5kcyA9IHRoaXMuZ2V0UG9pbnRzQm91bmRzKGRhdGFDb250YWluZXIsIGdldFBvc2l0aW9uKTtcbiAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kc30pO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXIob3B0cykge1xuICAgIGNvbnN0IHtkYXRhLCBncHVGaWx0ZXIsIG9iamVjdEhvdmVyZWQsIG1hcFN0YXRlLCBpbnRlcmFjdGlvbkNvbmZpZ30gPSBvcHRzO1xuXG4gICAgY29uc3QgcmFkaXVzU2NhbGUgPSB0aGlzLmdldFJhZGl1c1NjYWxlQnlab29tKG1hcFN0YXRlKTtcblxuICAgIGNvbnN0IGxheWVyUHJvcHMgPSB7XG4gICAgICByYWRpdXNTY2FsZSxcbiAgICAgIGJpbGxib2FyZDogdGhpcy5jb25maWcudmlzQ29uZmlnLmJpbGxib2FyZCxcbiAgICAgIC4uLih0aGlzLmNvbmZpZy52aXNDb25maWcuZml4ZWRSYWRpdXMgPyB7fSA6IHtyYWRpdXNNYXhQaXhlbHM6IDUwMH0pXG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgZ2V0UG9zaXRpb246IHRoaXMuY29uZmlnLmNvbHVtbnMsXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMsXG4gICAgICAuLi50aGlzLmdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycygpXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRMYXllclByb3BzID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG4gICAgY29uc3QgYnJ1c2hpbmdQcm9wcyA9IHRoaXMuZ2V0QnJ1c2hpbmdFeHRlbnNpb25Qcm9wcyhpbnRlcmFjdGlvbkNvbmZpZyk7XG4gICAgY29uc3QgZ2V0UGl4ZWxPZmZzZXQgPSBnZXRUZXh0T2Zmc2V0QnlSYWRpdXMocmFkaXVzU2NhbGUsIGRhdGEuZ2V0UmFkaXVzLCBtYXBTdGF0ZSk7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IFsuLi5kZWZhdWx0TGF5ZXJQcm9wcy5leHRlbnNpb25zLCBicnVzaGluZ0V4dGVuc2lvbl07XG5cbiAgICAvLyBzaGFyZWQgUHJvcHMgYmV0d2VlbiBsYXllciBhbmQgbGFiZWwgbGF5ZXJcbiAgICBjb25zdCBzaGFyZWRQcm9wcyA9IHtcbiAgICAgIGdldEZpbHRlclZhbHVlOiBkYXRhLmdldEZpbHRlclZhbHVlLFxuICAgICAgZXh0ZW5zaW9ucyxcbiAgICAgIGZpbHRlclJhbmdlOiBkZWZhdWx0TGF5ZXJQcm9wcy5maWx0ZXJSYW5nZSxcbiAgICAgIC4uLmJydXNoaW5nUHJvcHNcbiAgICB9O1xuXG4gICAgY29uc3QgbGFiZWxMYXllcnMgPSBbXG4gICAgICAuLi50aGlzLnJlbmRlclRleHRMYWJlbExheWVyKFxuICAgICAgICB7XG4gICAgICAgICAgZ2V0UG9zaXRpb246IGRhdGEuZ2V0UG9zaXRpb24sXG4gICAgICAgICAgc2hhcmVkUHJvcHMsXG4gICAgICAgICAgZ2V0UGl4ZWxPZmZzZXQsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgfSxcbiAgICAgICAgb3B0c1xuICAgICAgKVxuICAgIF07XG4gICAgY29uc3QgaG92ZXJlZE9iamVjdCA9IHRoaXMuaGFzSG92ZXJlZE9iamVjdChvYmplY3RIb3ZlcmVkKTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XG4gICAgICAvLyBpY29ucyB3aWxsIGJlIGZsYXQgb24gdGhlIG1hcCB3aGVuIHRoZSBhbHRpdHVkZSBjb2x1bW4gaXMgbm90IHVzZWRcbiAgICAgIGRlcHRoVGVzdDogdGhpcy5jb25maWcuY29sdW1ucy5hbHRpdHVkZT8uZmllbGRJZHggPiAtMSxcbiAgICAgIGN1bGxGYWNlOiBHTC5GUk9OVFxuICAgIH07XG5cbiAgICAvLyBBcHBlbmQgZ2VvbWV0cnkgdmVyc2lvbiB0byBsYXllciBpZCBzbyBkZWNrLmdsIHRyZWF0cyBpdCBhcyBuZXcgbGF5ZXIgd2hlbiBnZW9tZXRyeSBjaGFuZ2VzXG4gICAgY29uc3QgYmFzZUxheWVySWQgPSBkZWZhdWx0TGF5ZXJQcm9wcy5pZCB8fCB0aGlzLmlkO1xuICAgIGNvbnN0IGxheWVySWRXaXRoVmVyc2lvbiA9IGAke2Jhc2VMYXllcklkfV8ke3RoaXMuaWNvbkdlb21ldHJ5VmVyc2lvbn1gO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBTdmdJY29uTGF5ZXIoe1xuICAgICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcyxcbiAgICAgICAgaWQ6IGxheWVySWRXaXRoVmVyc2lvbixcbiAgICAgICAgLi4uYnJ1c2hpbmdQcm9wcyxcbiAgICAgICAgLi4ubGF5ZXJQcm9wcyxcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgZ2V0SWNvbkdlb21ldHJ5OiBpZCA9PiB0aGlzLmljb25HZW9tZXRyeT8uW2lkXSxcblxuICAgICAgICAvLyB1cGRhdGUgdHJpZ2dlcnNcbiAgICAgICAgdXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgIGV4dGVuc2lvbnNcbiAgICAgIH0pLFxuXG4gICAgICAvLyBob3ZlciBsYXllclxuICAgICAgLi4uKGhvdmVyZWRPYmplY3RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFN2Z0ljb25MYXllclByb3BzIG5lZWRzIGdldEljb24gRmllbGRcbiAgICAgICAgICAgIG5ldyBTdmdJY29uTGF5ZXIoe1xuICAgICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMoKSxcbiAgICAgICAgICAgICAgaWQ6IGAke2xheWVySWRXaXRoVmVyc2lvbn0taG92ZXJgLFxuICAgICAgICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICAgICAgICB2aXNpYmxlOiBkZWZhdWx0TGF5ZXJQcm9wcy52aXNpYmxlLFxuICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgIGdldFBvc2l0aW9uOiBkYXRhLmdldFBvc2l0aW9uLFxuICAgICAgICAgICAgICBnZXRSYWRpdXM6IGRhdGEuZ2V0UmFkaXVzLFxuICAgICAgICAgICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICAgICAgICBnZXRJY29uR2VvbWV0cnk6IGlkID0+IHRoaXMuaWNvbkdlb21ldHJ5Py5baWRdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG5cbiAgICAgIC8vIHRleHQgbGFiZWwgbGF5ZXJcbiAgICAgIC4uLmxhYmVsTGF5ZXJzXG4gICAgXTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxVQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxlQUFBLEdBQUFWLE9BQUE7QUFBK0UsU0FBQVcsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcs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TTtRQUFOQSxNQUFNLEdBQUFELFlBQUEsY0FBRyxFQUFFLEdBQUFBLFlBQUE7TUFFWCxJQUFNRSxRQUEwQyxHQUFHO1FBQUMxSixLQUFLLEVBQUU7TUFBRSxDQUFDO01BQzlELElBQUksQ0FBQ3VKLFVBQVUsQ0FBQzdNLE1BQU0sSUFBSSxDQUFDK00sTUFBTSxDQUFDL00sTUFBTSxFQUFFO1FBQ3hDLE9BQU9nTixRQUFRO01BQ2pCO01BRUEsSUFBTUMsVUFBVSxHQUFHRixNQUFNLENBQUN0TixNQUFNLENBQUMsVUFBQXlOLEtBQUE7UUFBQSxJQUFFQyxJQUFJLEdBQUFELEtBQUEsQ0FBSkMsSUFBSTtRQUFBLE9BQ3JDQSxJQUFJLENBQ0RDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQ3ZCQyxJQUFJLENBQUMsQ0FBQyxDQUNOQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQ1ZDLElBQUksQ0FBQyxVQUFBQyxHQUFHO1VBQUEsT0FBSUMsdUJBQVcsQ0FBQ3RMLElBQUksQ0FBQ29MLElBQUksQ0FBQyxVQUFBbk8sQ0FBQztZQUFBLE9BQUlBLENBQUMsQ0FBQ3NPLFFBQVEsQ0FBQ0YsR0FBRyxDQUFDO1VBQUEsRUFBQztRQUFBLEVBQUM7TUFBQSxDQUM3RCxDQUFDO01BRUQsSUFBSSxDQUFDUCxVQUFVLENBQUNqTixNQUFNLEVBQUU7UUFDdEIsT0FBT2dOLFFBQVE7TUFDakI7O01BRUE7TUFDQSxJQUFNVyxNQUFNLEdBQUdkLFVBQVUsQ0FBQyxDQUFDLENBQUM7TUFDNUIsSUFBTWhKLE9BQU8sR0FBRyxJQUFBK0osd0NBQTRCLEVBQUNELE1BQU0sRUFBRSxJQUFJLENBQUM7TUFFMUQsSUFBTXJLLEtBQUssR0FBRzJKLFVBQVUsQ0FBQ1ksR0FBRyxDQUFDLFVBQUFDLFNBQVM7UUFBQSxPQUFLO1VBQ3pDQyxLQUFLLEVBQUVELFNBQVMsQ0FBQ1gsSUFBSSxDQUFDQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUMsQ0FBQztVQUNwRHhKLE9BQU8sRUFBQS9ELGFBQUEsQ0FBQUEsYUFBQSxLQUNGK0QsT0FBTztZQUNWMUIsSUFBSSxFQUFFO2NBQ0p3RCxLQUFLLEVBQUVtSSxTQUFTLENBQUNYLElBQUk7Y0FDckJuTCxRQUFRLEVBQUU4TCxTQUFTLENBQUM5TDtZQUN0QjtVQUFDLEVBQ0Y7VUFDRGdNLFNBQVMsRUFBRTtRQUNiLENBQUM7TUFBQSxDQUFDLENBQUM7TUFFSCxPQUFPO1FBQUMxSyxLQUFLLEVBQUxBO01BQUssQ0FBQztJQUNoQjtFQUFDO0FBQUEsRUFuTG9DMksscUJBQUsiLCJpZ25vcmVMaXN0IjpbXX0=
423
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZXh0ZW5zaW9ucyIsIl9jb25zdGFudHMiLCJfZGVja2dsTGF5ZXJzIiwiX2ljb25MYXllckljb24iLCJfY29uc3RhbnRzMiIsIl9pY29uSW5mb01vZGFsIiwiX2Jhc2VMYXllciIsIl9sYXllclV0aWxzIiwiX3V0aWxzIiwiX2xheWVyVGV4dExhYmVsIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiYnJ1c2hpbmdFeHRlbnNpb24iLCJCcnVzaGluZ0V4dGVuc2lvbiIsImljb25Qb3NBY2Nlc3NvciIsImV4cG9ydHMiLCJfcmVmIiwibGF0IiwibG5nIiwiYWx0aXR1ZGUiLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImljb25BY2Nlc3NvciIsIl9yZWYyIiwiaWNvbiIsImljb25SZXF1aXJlZENvbHVtbnMiLCJpY29uT3B0aW9uYWxDb2x1bW5zIiwicG9pbnRWaXNDb25maWdzIiwicmFkaXVzIiwiZml4ZWRSYWRpdXMiLCJvcGFjaXR5IiwiY29sb3JSYW5nZSIsInJhZGl1c1JhbmdlIiwiYmlsbGJvYXJkIiwiZmxhdHRlckljb25Qb3NpdGlvbnMiLCJtZXNoIiwiY2VsbHMiLCJyZWR1Y2UiLCJwcmV2IiwiY2VsbCIsInBvc2l0aW9ucyIsIkljb25MYXllciIsIl9MYXllciIsInByb3BzIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJnZXRJY29uQWNjZXNzb3IiLCJfbGF5ZXJJbmZvTW9kYWwiLCJJY29uSW5mb01vZGFsRmFjdG9yeSIsInN2Z0ljb25zIiwiaWNvbkdlb21ldHJ5IiwiaWNvbkdlb21ldHJ5VmVyc2lvbiIsImlzVGVzdCIsInNldFN2Z0ljb25zIiwiZ2V0U3ZnSWNvbnMiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImdldCIsImNvbmNhdCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiY2RuVXJsIiwiZGVmYXVsdFBvaW50Q29sdW1uUGFpcnMiLCJJY29uTGF5ZXJJY29uIiwiY29sb3IiLCJhY2Nlc3NvciIsImRlZmF1bHRWYWx1ZSIsInNpemUiLCJwcm9wZXJ0eSIsInJhbmdlIiwiY2hhbm5lbFNjYWxlVHlwZSIsImlkIiwidGVtcGxhdGUiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJ2YWx1ZSIsImdldFpvb21GYWN0b3IiLCJfcmVmMyIsInpvb20iLCJfcmVmMyR6b29tT2Zmc2V0Iiwiem9vbU9mZnNldCIsIk1hdGgiLCJwb3ciLCJfdGhpczIiLCJmZXRjaENvbmZpZyIsIm1ldGhvZCIsIm1vZGUiLCJjYWNoZSIsIldpbmRvdyIsImZldGNoIiwic3ZnSWNvblVybCIsInRoZW4iLCJyZXNwb25zZSIsIm9rIiwiRXJyb3IiLCJzdGF0dXMiLCJqc29uIiwicGFyc2VkIiwidW5kZWZpbmVkIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwiX3RoaXMkb25SZWRyYXdOZWVkZWQiLCJhY2N1IiwiY3VyciIsIm9uUmVkcmF3TmVlZGVkIiwiZ2V0RmlsdGVyZWRJdGVtQ291bnQiLCJmaWx0ZXJlZEl0ZW1Db3VudCIsInZhbHVlcyIsInRvdGFsIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJjYWxjdWxhdGVEYXRhQXR0cmlidXRlIiwiX3JlZjQiLCJnZXRQb3NpdGlvbiIsImZpbHRlcmVkSW5kZXgiLCJnZXRJY29uIiwiZGF0YSIsImkiLCJyb3dJbmRleCIsInBvcyIsImV2ZXJ5IiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJvbGRMYXllckRhdGEiLCJkYXRhSWQiLCJ0ZXh0TGFiZWwiLCJfZGF0YXNldHMkdGhpcyRjb25maWciLCJncHVGaWx0ZXIiLCJfdGhpcyR1cGRhdGVEYXRhIiwidXBkYXRlRGF0YSIsInRyaWdnZXJDaGFuZ2VkIiwidGV4dExhYmVscyIsImZvcm1hdFRleHRMYWJlbERhdGEiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJ1cGRhdGVMYXllck1ldGEiLCJkYXRhc2V0IiwiYm91bmRzIiwiZ2V0UG9pbnRzQm91bmRzIiwidXBkYXRlTWV0YSIsInJlbmRlckxheWVyIiwib3B0cyIsIl90aGlzJGNvbmZpZyRjb2x1bW5zJCIsIl90aGlzMyIsIm9iamVjdEhvdmVyZWQiLCJtYXBTdGF0ZSIsImludGVyYWN0aW9uQ29uZmlnIiwibGF5ZXJDYWxsYmFja3MiLCJyYWRpdXNTY2FsZSIsImdldFJhZGl1c1NjYWxlQnlab29tIiwibGF5ZXJQcm9wcyIsInZpc0NvbmZpZyIsInJhZGl1c01heFBpeGVscyIsInVwZGF0ZVRyaWdnZXJzIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycyIsImRlZmF1bHRMYXllclByb3BzIiwiZ2V0RGVmYXVsdERlY2tMYXllclByb3BzIiwiYnJ1c2hpbmdQcm9wcyIsImdldEJydXNoaW5nRXh0ZW5zaW9uUHJvcHMiLCJnZXRQaXhlbE9mZnNldCIsImdldFRleHRPZmZzZXRCeVJhZGl1cyIsImdldFJhZGl1cyIsImV4dGVuc2lvbnMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwic2hhcmVkUHJvcHMiLCJmaWx0ZXJSYW5nZSIsImxhYmVsTGF5ZXJzIiwicmVuZGVyVGV4dExhYmVsTGF5ZXIiLCJob3ZlcmVkT2JqZWN0IiwiaGFzSG92ZXJlZE9iamVjdCIsInBhcmFtZXRlcnMiLCJkZXB0aFRlc3QiLCJjdWxsRmFjZSIsIkdMIiwiRlJPTlQiLCJiYXNlTGF5ZXJJZCIsImxheWVySWRXaXRoVmVyc2lvbiIsIlN2Z0ljb25MYXllciIsImdldEljb25HZW9tZXRyeSIsIl90aGlzMyRpY29uR2VvbWV0cnkiLCJnZXREZWZhdWx0SG92ZXJMYXllclByb3BzIiwidmlzaWJsZSIsImdldEZpbGxDb2xvciIsImhpZ2hsaWdodENvbG9yIiwiX3RoaXMzJGljb25HZW9tZXRyeTIiLCJmaW5kRGVmYXVsdExheWVyUHJvcHMiLCJfcmVmNSIsIl9yZWY1JGZpZWxkUGFpcnMiLCJmaWVsZFBhaXJzIiwiX3JlZjUkZmllbGRzIiwiZmllbGRzIiwibm90Rm91bmQiLCJpY29uRmllbGRzIiwiX3JlZjYiLCJuYW1lIiwicmVwbGFjZSIsInRyaW0iLCJzcGxpdCIsInNvbWUiLCJzZWciLCJJQ09OX0ZJRUxEUyIsImluY2x1ZGVzIiwicHRQYWlyIiwiYXNzaWduUG9pbnRQYWlyVG9MYXllckNvbHVtbiIsIm1hcCIsImljb25GaWVsZCIsImxhYmVsIiwiaXNWaXNpYmxlIiwiTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaWNvbi1sYXllci9pY29uLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBXaW5kb3cgZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQge0JydXNoaW5nRXh0ZW5zaW9ufSBmcm9tICdAZGVjay5nbC9leHRlbnNpb25zJztcbmltcG9ydCBHTCBmcm9tICdAbHVtYS5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge1N2Z0ljb25MYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcbmltcG9ydCBJY29uTGF5ZXJJY29uIGZyb20gJy4vaWNvbi1sYXllci1pY29uJztcbmltcG9ydCB7SUNPTl9GSUVMRFN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBJY29uSW5mb01vZGFsRmFjdG9yeSBmcm9tICcuL2ljb24taW5mby1tb2RhbCc7XG5pbXBvcnQgTGF5ZXIsIHtMYXllckJhc2VDb25maWcsIExheWVyQmFzZUNvbmZpZ1BhcnRpYWx9IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHthc3NpZ25Qb2ludFBhaXJUb0xheWVyQ29sdW1uLCBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZX0gZnJvbSAnLi4vbGF5ZXItdXRpbHMnO1xuaW1wb3J0IHtpc1Rlc3R9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtnZXRUZXh0T2Zmc2V0QnlSYWRpdXMsIGZvcm1hdFRleHRMYWJlbERhdGF9IGZyb20gJy4uL2xheWVyLXRleHQtbGFiZWwnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEtlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7Z2V0QXBwbGljYXRpb25Db25maWcsIERhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnQm9vbGVhbixcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnTnVtYmVyLFxuICBWaXNDb25maWdSYW5nZSxcbiAgTWVyZ2UsXG4gIExheWVyQ29sdW1uLFxuICBCaW5kZWRMYXllckNhbGxiYWNrc1xufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgSWNvbkxheWVyQ29sdW1uc0NvbmZpZyA9IHtcbiAgbGF0OiBMYXllckNvbHVtbjtcbiAgbG5nOiBMYXllckNvbHVtbjtcbiAgYWx0aXR1ZGU6IExheWVyQ29sdW1uO1xuICBpY29uOiBMYXllckNvbHVtbjtcbn07XG5cbnR5cGUgSWNvbkdlb21ldHJ5ID0gb2JqZWN0IHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgSWNvbkxheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSB7XG4gIHJhZGl1czogVmlzQ29uZmlnTnVtYmVyO1xuICBmaXhlZFJhZGl1czogVmlzQ29uZmlnQm9vbGVhbjtcbiAgb3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICByYWRpdXNSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBJY29uTGF5ZXJWaXNDb25maWcgPSB7XG4gIHJhZGl1czogbnVtYmVyO1xuICBmaXhlZFJhZGl1czogYm9vbGVhbjtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICBjb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICByYWRpdXNSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgYmlsbGJvYXJkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgSWNvbkxheWVyQ29uZmlnID0gTWVyZ2U8XG4gIExheWVyQmFzZUNvbmZpZyxcbiAge2NvbHVtbnM6IEljb25MYXllckNvbHVtbnNDb25maWc7IHZpc0NvbmZpZzogSWNvbkxheWVyVmlzQ29uZmlnfVxuPjtcblxuZXhwb3J0IHR5cGUgSWNvbkxheWVyRGF0YSA9IHtpbmRleDogbnVtYmVyOyBpY29uOiBzdHJpbmd9O1xuXG5jb25zdCBicnVzaGluZ0V4dGVuc2lvbiA9IG5ldyBCcnVzaGluZ0V4dGVuc2lvbigpO1xuXG5leHBvcnQgY29uc3QgaWNvblBvc0FjY2Vzc29yID1cbiAgKHtsYXQsIGxuZywgYWx0aXR1ZGV9OiBJY29uTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PlxuICAoZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gIGQgPT5cbiAgICBbXG4gICAgICBkYy52YWx1ZUF0KGQuaW5kZXgsIGxuZy5maWVsZElkeCksXG4gICAgICBkYy52YWx1ZUF0KGQuaW5kZXgsIGxhdC5maWVsZElkeCksXG4gICAgICBhbHRpdHVkZT8uZmllbGRJZHggPiAtMSA/IGRjLnZhbHVlQXQoZC5pbmRleCwgYWx0aXR1ZGUuZmllbGRJZHgpIDogMFxuICAgIF07XG5cbmV4cG9ydCBjb25zdCBpY29uQWNjZXNzb3IgPVxuICAoe2ljb259OiBJY29uTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PlxuICAoZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gIGQgPT5cbiAgICBkYy52YWx1ZUF0KGQuaW5kZXgsIGljb24uZmllbGRJZHgpO1xuXG5leHBvcnQgY29uc3QgaWNvblJlcXVpcmVkQ29sdW1uczogWydsYXQnLCAnbG5nJywgJ2ljb24nXSA9IFsnbGF0JywgJ2xuZycsICdpY29uJ107XG5leHBvcnQgY29uc3QgaWNvbk9wdGlvbmFsQ29sdW1uczogWydhbHRpdHVkZSddID0gWydhbHRpdHVkZSddO1xuXG5leHBvcnQgY29uc3QgcG9pbnRWaXNDb25maWdzOiB7XG4gIHJhZGl1czogJ3JhZGl1cyc7XG4gIGZpeGVkUmFkaXVzOiAnZml4ZWRSYWRpdXMnO1xuICBvcGFjaXR5OiAnb3BhY2l0eSc7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZSc7XG4gIGJpbGxib2FyZDogJ2JpbGxib2FyZCc7XG59ID0ge1xuICByYWRpdXM6ICdyYWRpdXMnLFxuICBmaXhlZFJhZGl1czogJ2ZpeGVkUmFkaXVzJyxcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHJhZGl1c1JhbmdlOiAncmFkaXVzUmFuZ2UnLFxuICBiaWxsYm9hcmQ6ICdiaWxsYm9hcmQnXG59O1xuXG5mdW5jdGlvbiBmbGF0dGVySWNvblBvc2l0aW9ucyhpY29uKSB7XG4gIC8vIGhhZCB0byBmbGlwIHksIHNpbmNlIEBsdW1hIG1vZGFsIGhhcyBjaGFuZ2VkXG4gIHJldHVybiBpY29uLm1lc2guY2VsbHMucmVkdWNlKChwcmV2LCBjZWxsKSA9PiB7XG4gICAgY2VsbC5mb3JFYWNoKHAgPT4ge1xuICAgICAgcHJldi5wdXNoKFxuICAgICAgICAuLi5baWNvbi5tZXNoLnBvc2l0aW9uc1twXVswXSwgLWljb24ubWVzaC5wb3NpdGlvbnNbcF1bMV0sIGljb24ubWVzaC5wb3NpdGlvbnNbcF1bMl1dXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiBwcmV2O1xuICB9LCBbXSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEljb25MYXllciBleHRlbmRzIExheWVyIHtcbiAgZ2V0SWNvbkFjY2Vzc29yOiAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT4gKGQ6IGFueSkgPT4gYW55O1xuICBfbGF5ZXJJbmZvTW9kYWw6ICgpID0+IEpTWC5FbGVtZW50O1xuICBpY29uR2VvbWV0cnk6IEljb25HZW9tZXRyeTtcbiAgaWNvbkdlb21ldHJ5VmVyc2lvbjogbnVtYmVyO1xuXG4gIG9uUmVkcmF3TmVlZGVkOiBCaW5kZWRMYXllckNhbGxiYWNrc1snb25SZWRyYXdOZWVkZWQnXTtcblxuICBkZWNsYXJlIHZpc0NvbmZpZ1NldHRpbmdzOiBJY29uTGF5ZXJWaXNDb25maWdTZXR0aW5ncztcbiAgZGVjbGFyZSBjb25maWc6IEljb25MYXllckNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9wczoge1xuICAgICAgaWQ/OiBzdHJpbmc7XG4gICAgICBpY29uR2VvbWV0cnk/OiBJY29uR2VvbWV0cnk7XG4gICAgICBzdmdJY29ucz86IGFueVtdO1xuICAgIH0gJiBMYXllckJhc2VDb25maWdQYXJ0aWFsXG4gICkge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMucmVnaXN0ZXJWaXNDb25maWcocG9pbnRWaXNDb25maWdzKTtcbiAgICB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IgPSAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT5cbiAgICAgIGljb25Qb3NBY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcbiAgICB0aGlzLmdldEljb25BY2Nlc3NvciA9IGRhdGFDb250YWluZXIgPT4gaWNvbkFjY2Vzc29yKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuXG4gICAgdGhpcy5fbGF5ZXJJbmZvTW9kYWwgPSBJY29uSW5mb01vZGFsRmFjdG9yeShwcm9wcy5zdmdJY29ucyk7XG4gICAgdGhpcy5pY29uR2VvbWV0cnkgPSBwcm9wcy5pY29uR2VvbWV0cnkgfHwgbnVsbDtcbiAgICB0aGlzLmljb25HZW9tZXRyeVZlcnNpb24gPSAwO1xuXG4gICAgaWYgKGlzVGVzdCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwcm9wcy5zdmdJY29ucykge1xuICAgICAgLy8gaWYgc3ZnIGljb25zIGFyZSBwYXNzZWQgaW4gdGhlbiBieXBhc3MgZmV0Y2hpbmcgb2YgcmVtb3RlIHN2ZyBpY29uc1xuICAgICAgdGhpcy5zZXRTdmdJY29ucyhwcm9wcy5zdmdJY29ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHByZXBhcmUgbGF5ZXIgaW5mbyBtb2RhbCBhbmQgZmV0Y2ggcmVtb3RlIHN2ZyBpY29uc1xuICAgICAgdGhpcy5nZXRTdmdJY29ucygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdmdJY29uVXJsKCkge1xuICAgIHJldHVybiBgJHtnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmNkblVybH0vaWNvbnMvc3ZnLWljb25zLmpzb25gO1xuICB9XG5cbiAgZ2V0IHR5cGUoKTogJ2ljb24nIHtcbiAgICByZXR1cm4gJ2ljb24nO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkTGF5ZXJDb2x1bW5zKCkge1xuICAgIHJldHVybiBpY29uUmVxdWlyZWRDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IG9wdGlvbmFsQ29sdW1ucygpIHtcbiAgICByZXR1cm4gaWNvbk9wdGlvbmFsQ29sdW1ucztcbiAgfVxuXG4gIGdldCBjb2x1bW5QYWlycygpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9pbnRDb2x1bW5QYWlycztcbiAgfVxuXG4gIGdldCBsYXllckljb24oKSB7XG4gICAgcmV0dXJuIEljb25MYXllckljb247XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIC4uLnN1cGVyLnZpc3VhbENoYW5uZWxzLmNvbG9yLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldEZpbGxDb2xvcicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgLi4uc3VwZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZSxcbiAgICAgICAgcHJvcGVydHk6ICdyYWRpdXMnLFxuICAgICAgICByYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogJ3JhZGl1cycsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0UmFkaXVzJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAxXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGdldCBsYXllckluZm9Nb2RhbCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6ICdpY29uSW5mbycsXG4gICAgICB0ZW1wbGF0ZTogdGhpcy5fbGF5ZXJJbmZvTW9kYWwsXG4gICAgICBtb2RhbFByb3BzOiB7XG4gICAgICAgIHRpdGxlOiAnbW9kYWwuaWNvbkluZm8udGl0bGUnXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGdldFpvb21GYWN0b3Ioe3pvb20sIHpvb21PZmZzZXQgPSAwfToge3pvb206IG51bWJlcjsgem9vbU9mZnNldD86IG51bWJlcn0pIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMiwgMTQgLSB6b29tICsgem9vbU9mZnNldCk7XG4gIH1cblxuICBnZXRTdmdJY29ucygpIHtcbiAgICBjb25zdCBmZXRjaENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBtb2RlOiAnY29ycycsXG4gICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgIH07XG5cbiAgICBpZiAoV2luZG93LmZldGNoICYmIHRoaXMuc3ZnSWNvblVybCkge1xuICAgICAgV2luZG93LmZldGNoKHRoaXMuc3ZnSWNvblVybCwgZmV0Y2hDb25maWcpXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIHN2Zy1pY29ucy5qc29uOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHBhcnNlZDoge3N2Z0ljb25zPzogYW55W119ID0ge30pID0+IHtcbiAgICAgICAgICB0aGlzLnNldFN2Z0ljb25zKHBhcnNlZC5zdmdJY29ucyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIG9yIHBhcnNpbmcgc3ZnLWljb25zLmpzb246JywgZXJyKTtcbiAgICAgICAgICAvLyBGYWxsYmFjayB0byBlbXB0eSBnZW9tZXRyeSB0byBhbGxvdyBkZWZhdWx0IGljb24gcmVuZGVyaW5nXG4gICAgICAgICAgdGhpcy5pY29uR2VvbWV0cnkgPSB7fTtcbiAgICAgICAgICB0aGlzLmljb25HZW9tZXRyeVZlcnNpb24gKz0gMTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGZldGNoIGF2YWlsYWJsZTsgc2V0IGVtcHR5IGdlb21ldHJ5IHNvIGxheWVyIGNhbiByZW5kZXIgZGVmYXVsdCBpY29uc1xuICAgICAgdGhpcy5pY29uR2VvbWV0cnkgPSB7fTtcbiAgICAgIHRoaXMuaWNvbkdlb21ldHJ5VmVyc2lvbiArPSAxO1xuICAgIH1cbiAgfVxuXG4gIHNldFN2Z0ljb25zKHN2Z0ljb25zOiBhbnlbXSA9IFtdKSB7XG4gICAgdGhpcy5pY29uR2VvbWV0cnkgPSBzdmdJY29ucy5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2N1cnIuaWRdOiBmbGF0dGVySWNvblBvc2l0aW9ucyhjdXJyKVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgICAvLyBJbmNyZW1lbnQgdmVyc2lvbiB3aGVuIFNWRyBpY29ucyBhcmUgbG9hZGVkIHRvIHRyaWdnZXIgbGF5ZXIgcmUtcmVuZGVyXG4gICAgdGhpcy5pY29uR2VvbWV0cnlWZXJzaW9uICs9IDE7XG5cbiAgICB0aGlzLl9sYXllckluZm9Nb2RhbCA9IEljb25JbmZvTW9kYWxGYWN0b3J5KHN2Z0ljb25zKTtcblxuICAgIC8vIFRyaWdnZXIgYSBtYXAgcmVkcmF3IHNvIGRlY2suZ2wgcGlja3MgdXAgdGhlIG5ldyBnZW9tZXRyeVxuICAgIHRoaXMub25SZWRyYXdOZWVkZWQ/LigpO1xuICB9XG5cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyh7XG4gICAgZmllbGRQYWlycyA9IFtdLFxuICAgIGZpZWxkcyA9IFtdXG4gIH06IEtlcGxlclRhYmxlKTogRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUge1xuICAgIGNvbnN0IG5vdEZvdW5kOiBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSA9IHtwcm9wczogW119O1xuICAgIGlmICghZmllbGRQYWlycy5sZW5ndGggfHwgIWZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBub3RGb3VuZDtcbiAgICB9XG5cbiAgICBjb25zdCBpY29uRmllbGRzID0gZmllbGRzLmZpbHRlcigoe25hbWV9KSA9PlxuICAgICAgbmFtZVxuICAgICAgICAucmVwbGFjZSgvW18sLl0rL2csICcgJylcbiAgICAgICAgLnRyaW0oKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAuc29tZShzZWcgPT4gSUNPTl9GSUVMRFMuaWNvbi5zb21lKHQgPT4gdC5pbmNsdWRlcyhzZWcpKSlcbiAgICApO1xuXG4gICAgaWYgKCFpY29uRmllbGRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5vdEZvdW5kO1xuICAgIH1cblxuICAgIC8vIGNyZWF0ZSBpY29uIGxheWVycyBmb3IgZmlyc3QgcG9pbnQgcGFpclxuICAgIGNvbnN0IHB0UGFpciA9IGZpZWxkUGFpcnNbMF07XG4gICAgY29uc3QgY29sdW1ucyA9IGFzc2lnblBvaW50UGFpclRvTGF5ZXJDb2x1bW4ocHRQYWlyLCB0cnVlKTtcblxuICAgIGNvbnN0IHByb3BzID0gaWNvbkZpZWxkcy5tYXAoaWNvbkZpZWxkID0+ICh7XG4gICAgICBsYWJlbDogaWNvbkZpZWxkLm5hbWUucmVwbGFjZSgvW18sLl0rL2csICcgJykudHJpbSgpLFxuICAgICAgY29sdW1uczoge1xuICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgdmFsdWU6IGljb25GaWVsZC5uYW1lLFxuICAgICAgICAgIGZpZWxkSWR4OiBpY29uRmllbGQuZmllbGRJZHhcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZVxuICAgIH0pKTtcblxuICAgIHJldHVybiB7cHJvcHN9O1xuICB9XG5cbiAgZ2V0RmlsdGVyZWRJdGVtQ291bnQoKSB7XG4gICAgLy8gdXNlIHRvdGFsXG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyZWRJdGVtQ291bnQpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5maWx0ZXJlZEl0ZW1Db3VudCkucmVkdWNlKFxuICAgICAgICAodG90YWwsIGN1cnIpID0+IChOdW1iZXIuaXNGaW5pdGUoY3VycikgPyB0b3RhbCArIGN1cnIgOiB0b3RhbCksXG4gICAgICAgIDBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjYWxjdWxhdGVEYXRhQXR0cmlidXRlKHtkYXRhQ29udGFpbmVyLCBmaWx0ZXJlZEluZGV4fTogS2VwbGVyVGFibGUsIGdldFBvc2l0aW9uKSB7XG4gICAgY29uc3QgZ2V0SWNvbiA9IHRoaXMuZ2V0SWNvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgIGNvbnN0IGRhdGE6IEljb25MYXllckRhdGFbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJlZEluZGV4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGZpbHRlcmVkSW5kZXhbaV07XG4gICAgICBjb25zdCByb3dJbmRleCA9IHtpbmRleH07XG4gICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihyb3dJbmRleCk7XG4gICAgICBjb25zdCBpY29uID0gZ2V0SWNvbihyb3dJbmRleCk7XG5cbiAgICAgIC8vIGlmIGRvZXNuJ3QgaGF2ZSBwb2ludCBsYXQgb3IgbG5nLCBkbyBub3QgYWRkIHRoZSBwb2ludFxuICAgICAgLy8gZGVjay5nbCBjYW4ndCBoYW5kbGUgcG9zaXRpb24gPSBudWxsXG4gICAgICBpZiAocG9zLmV2ZXJ5KE51bWJlci5pc0Zpbml0ZSkgJiYgdHlwZW9mIGljb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRhdGEucHVzaCh7XG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgaWNvblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGFJZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB7dGV4dExhYmVsfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHtncHVGaWx0ZXIsIGRhdGFDb250YWluZXJ9ID0gZGF0YXNldHNbdGhpcy5jb25maWcuZGF0YUlkXTtcblxuICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuXG4gICAgY29uc3Qge2RhdGEsIHRyaWdnZXJDaGFuZ2VkfSA9IHRoaXMudXBkYXRlRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKTtcblxuICAgIC8vIGdldCBhbGwgZGlzdGluY3QgY2hhcmFjdGVycyBpbiB0aGUgdGV4dCBsYWJlbHNcbiAgICBjb25zdCB0ZXh0TGFiZWxzID0gZm9ybWF0VGV4dExhYmVsRGF0YSh7XG4gICAgICB0ZXh0TGFiZWwsXG4gICAgICB0cmlnZ2VyQ2hhbmdlZCxcbiAgICAgIG9sZExheWVyRGF0YSxcbiAgICAgIGRhdGEsXG4gICAgICBkYXRhQ29udGFpbmVyXG4gICAgfSk7XG5cbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLmdldEF0dHJpYnV0ZUFjY2Vzc29ycyh7ZGF0YUNvbnRhaW5lcn0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBnZXRQb3NpdGlvbixcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVBY2Nlc3NvcihkYXRhQ29udGFpbmVyKSgpLFxuICAgICAgdGV4dExhYmVscyxcbiAgICAgIC4uLmFjY2Vzc29yc1xuICAgIH07XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YXNldDogS2VwbGVyVGFibGUsIGdldFBvc2l0aW9uKSB7XG4gICAgY29uc3Qge2RhdGFDb250YWluZXJ9ID0gZGF0YXNldDtcbiAgICBjb25zdCBib3VuZHMgPSB0aGlzLmdldFBvaW50c0JvdW5kcyhkYXRhQ29udGFpbmVyLCBnZXRQb3NpdGlvbik7XG4gICAgdGhpcy51cGRhdGVNZXRhKHtib3VuZHN9KTtcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgZ3B1RmlsdGVyLCBvYmplY3RIb3ZlcmVkLCBtYXBTdGF0ZSwgaW50ZXJhY3Rpb25Db25maWcsIGxheWVyQ2FsbGJhY2tzfSA9IG9wdHM7XG5cbiAgICAvLyBTdG9yZSBjYWxsYmFjayB0byB0cmlnZ2VyIG1hcCByZWRyYXcgd2hlbiBpY29uIGdlb21ldHJ5IGxvYWRzIGFzeW5jaHJvbm91c2x5XG4gICAgdGhpcy5vblJlZHJhd05lZWRlZCA9IGxheWVyQ2FsbGJhY2tzPy5vblJlZHJhd05lZWRlZDtcblxuICAgIGNvbnN0IHJhZGl1c1NjYWxlID0gdGhpcy5nZXRSYWRpdXNTY2FsZUJ5Wm9vbShtYXBTdGF0ZSk7XG5cbiAgICBjb25zdCBsYXllclByb3BzID0ge1xuICAgICAgcmFkaXVzU2NhbGUsXG4gICAgICBiaWxsYm9hcmQ6IHRoaXMuY29uZmlnLnZpc0NvbmZpZy5iaWxsYm9hcmQsXG4gICAgICAuLi4odGhpcy5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzID8ge30gOiB7cmFkaXVzTWF4UGl4ZWxzOiA1MDB9KVxuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHtcbiAgICAgIGdldFBvc2l0aW9uOiB0aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzLFxuICAgICAgLi4udGhpcy5nZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKVxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuICAgIGNvbnN0IGJydXNoaW5nUHJvcHMgPSB0aGlzLmdldEJydXNoaW5nRXh0ZW5zaW9uUHJvcHMoaW50ZXJhY3Rpb25Db25maWcpO1xuICAgIGNvbnN0IGdldFBpeGVsT2Zmc2V0ID0gZ2V0VGV4dE9mZnNldEJ5UmFkaXVzKHJhZGl1c1NjYWxlLCBkYXRhLmdldFJhZGl1cywgbWFwU3RhdGUpO1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBbLi4uZGVmYXVsdExheWVyUHJvcHMuZXh0ZW5zaW9ucywgYnJ1c2hpbmdFeHRlbnNpb25dO1xuXG4gICAgLy8gc2hhcmVkIFByb3BzIGJldHdlZW4gbGF5ZXIgYW5kIGxhYmVsIGxheWVyXG4gICAgY29uc3Qgc2hhcmVkUHJvcHMgPSB7XG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YS5nZXRGaWx0ZXJWYWx1ZSxcbiAgICAgIGV4dGVuc2lvbnMsXG4gICAgICBmaWx0ZXJSYW5nZTogZGVmYXVsdExheWVyUHJvcHMuZmlsdGVyUmFuZ2UsXG4gICAgICAuLi5icnVzaGluZ1Byb3BzXG4gICAgfTtcblxuICAgIGNvbnN0IGxhYmVsTGF5ZXJzID0gW1xuICAgICAgLi4udGhpcy5yZW5kZXJUZXh0TGFiZWxMYXllcihcbiAgICAgICAge1xuICAgICAgICAgIGdldFBvc2l0aW9uOiBkYXRhLmdldFBvc2l0aW9uLFxuICAgICAgICAgIHNoYXJlZFByb3BzLFxuICAgICAgICAgIGdldFBpeGVsT2Zmc2V0LFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzXG4gICAgICAgIH0sXG4gICAgICAgIG9wdHNcbiAgICAgIClcbiAgICBdO1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgLy8gaWNvbnMgd2lsbCBiZSBmbGF0IG9uIHRoZSBtYXAgd2hlbiB0aGUgYWx0aXR1ZGUgY29sdW1uIGlzIG5vdCB1c2VkXG4gICAgICBkZXB0aFRlc3Q6IHRoaXMuY29uZmlnLmNvbHVtbnMuYWx0aXR1ZGU/LmZpZWxkSWR4ID4gLTEsXG4gICAgICBjdWxsRmFjZTogR0wuRlJPTlRcbiAgICB9O1xuXG4gICAgLy8gQXBwZW5kIGdlb21ldHJ5IHZlcnNpb24gdG8gbGF5ZXIgaWQgc28gZGVjay5nbCB0cmVhdHMgaXQgYXMgbmV3IGxheWVyIHdoZW4gZ2VvbWV0cnkgY2hhbmdlc1xuICAgIGNvbnN0IGJhc2VMYXllcklkID0gZGVmYXVsdExheWVyUHJvcHMuaWQgfHwgdGhpcy5pZDtcbiAgICBjb25zdCBsYXllcklkV2l0aFZlcnNpb24gPSBgJHtiYXNlTGF5ZXJJZH1fJHt0aGlzLmljb25HZW9tZXRyeVZlcnNpb259YDtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgU3ZnSWNvbkxheWVyKHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMsXG4gICAgICAgIGlkOiBsYXllcklkV2l0aFZlcnNpb24sXG4gICAgICAgIC4uLmJydXNoaW5nUHJvcHMsXG4gICAgICAgIC4uLmxheWVyUHJvcHMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgIGdldEljb25HZW9tZXRyeTogaWQgPT4gdGhpcy5pY29uR2VvbWV0cnk/LltpZF0sXG5cbiAgICAgICAgLy8gdXBkYXRlIHRyaWdnZXJzXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICBleHRlbnNpb25zXG4gICAgICB9KSxcblxuICAgICAgLy8gaG92ZXIgbGF5ZXJcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0XG4gICAgICAgID8gW1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBTdmdJY29uTGF5ZXJQcm9wcyBuZWVkcyBnZXRJY29uIEZpZWxkXG4gICAgICAgICAgICBuZXcgU3ZnSWNvbkxheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCksXG4gICAgICAgICAgICAgIGlkOiBgJHtsYXllcklkV2l0aFZlcnNpb259LWhvdmVyYCxcbiAgICAgICAgICAgICAgLi4ubGF5ZXJQcm9wcyxcbiAgICAgICAgICAgICAgdmlzaWJsZTogZGVmYXVsdExheWVyUHJvcHMudmlzaWJsZSxcbiAgICAgICAgICAgICAgZGF0YTogW2hvdmVyZWRPYmplY3RdLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgICAgICBnZXRQb3NpdGlvbjogZGF0YS5nZXRQb3NpdGlvbixcbiAgICAgICAgICAgICAgZ2V0UmFkaXVzOiBkYXRhLmdldFJhZGl1cyxcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvcixcbiAgICAgICAgICAgICAgZ2V0SWNvbkdlb21ldHJ5OiBpZCA9PiB0aGlzLmljb25HZW9tZXRyeT8uW2lkXVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuXG4gICAgICAvLyB0ZXh0IGxhYmVsIGxheWVyXG4gICAgICAuLi5sYWJlbExheWVyc1xuICAgIF07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sY0FBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsZUFBQSxHQUFBVixPQUFBO0FBQStFLFNBQUFXLFFB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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/layers",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.4",
4
+ "version": "3.2.5",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -36,14 +36,14 @@
36
36
  "@deck.gl/geo-layers": "^8.9.27",
37
37
  "@deck.gl/layers": "^8.9.27",
38
38
  "@deck.gl/mesh-layers": "^8.9.27",
39
- "@kepler.gl/common-utils": "3.2.4",
40
- "@kepler.gl/constants": "3.2.4",
41
- "@kepler.gl/deckgl-arrow-layers": "3.2.4",
42
- "@kepler.gl/deckgl-layers": "3.2.4",
43
- "@kepler.gl/localization": "3.2.4",
44
- "@kepler.gl/table": "3.2.4",
45
- "@kepler.gl/types": "3.2.4",
46
- "@kepler.gl/utils": "3.2.4",
39
+ "@kepler.gl/common-utils": "3.2.5",
40
+ "@kepler.gl/constants": "3.2.5",
41
+ "@kepler.gl/deckgl-arrow-layers": "3.2.5",
42
+ "@kepler.gl/deckgl-layers": "3.2.5",
43
+ "@kepler.gl/localization": "3.2.5",
44
+ "@kepler.gl/table": "3.2.5",
45
+ "@kepler.gl/types": "3.2.5",
46
+ "@kepler.gl/utils": "3.2.5",
47
47
  "@loaders.gl/arrow": "^4.3.2",
48
48
  "@loaders.gl/core": "^4.3.2",
49
49
  "@loaders.gl/gis": "^4.3.2",
@@ -22,7 +22,8 @@ import {
22
22
  VisConfigNumber,
23
23
  VisConfigRange,
24
24
  Merge,
25
- LayerColumn
25
+ LayerColumn,
26
+ BindedLayerCallbacks
26
27
  } from '@kepler.gl/types';
27
28
 
28
29
  export type IconLayerColumnsConfig = {
@@ -113,6 +114,8 @@ export default class IconLayer extends Layer {
113
114
  iconGeometry: IconGeometry;
114
115
  iconGeometryVersion: number;
115
116
 
117
+ onRedrawNeeded: BindedLayerCallbacks['onRedrawNeeded'];
118
+
116
119
  declare visConfigSettings: IconLayerVisConfigSettings;
117
120
  declare config: IconLayerConfig;
118
121
 
@@ -246,6 +249,9 @@ export default class IconLayer extends Layer {
246
249
  this.iconGeometryVersion += 1;
247
250
 
248
251
  this._layerInfoModal = IconInfoModalFactory(svgIcons);
252
+
253
+ // Trigger a map redraw so deck.gl picks up the new geometry
254
+ this.onRedrawNeeded?.();
249
255
  }
250
256
 
251
257
  static findDefaultLayerProps({
@@ -361,7 +367,10 @@ export default class IconLayer extends Layer {
361
367
  }
362
368
 
363
369
  renderLayer(opts) {
364
- const {data, gpuFilter, objectHovered, mapState, interactionConfig} = opts;
370
+ const {data, gpuFilter, objectHovered, mapState, interactionConfig, layerCallbacks} = opts;
371
+
372
+ // Store callback to trigger map redraw when icon geometry loads asynchronously
373
+ this.onRedrawNeeded = layerCallbacks?.onRedrawNeeded;
365
374
 
366
375
  const radiusScale = this.getRadiusScaleByZoom(mapState);
367
376
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/localization",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.4",
4
+ "version": "3.2.5",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/processors",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.4",
4
+ "version": "3.2.5",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -31,12 +31,12 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@danmarshall/deckgl-typings": "4.9.22",
34
- "@kepler.gl/common-utils": "3.2.4",
35
- "@kepler.gl/constants": "3.2.4",
36
- "@kepler.gl/schemas": "3.2.4",
37
- "@kepler.gl/table": "3.2.4",
38
- "@kepler.gl/types": "3.2.4",
39
- "@kepler.gl/utils": "3.2.4",
34
+ "@kepler.gl/common-utils": "3.2.5",
35
+ "@kepler.gl/constants": "3.2.5",
36
+ "@kepler.gl/schemas": "3.2.5",
37
+ "@kepler.gl/table": "3.2.5",
38
+ "@kepler.gl/types": "3.2.5",
39
+ "@kepler.gl/utils": "3.2.5",
40
40
  "@loaders.gl/arrow": "^4.3.2",
41
41
  "@loaders.gl/core": "^4.3.2",
42
42
  "@loaders.gl/csv": "^4.3.2",
@@ -28,7 +28,7 @@ export declare const DEFAULT_MAP_CONTROLS: MapControls;
28
28
  * @property imageDataUri Default: `''`,
29
29
  * @property exporting Default: `false`
30
30
  * @property error Default: `false`
31
- * @property escapeXhtmlForWebpack Default: `true`
31
+ * @property escapeXhtmlForWebpack Default: from application config (auto-detected: `true` for webpack)
32
32
  * @public
33
33
  */
34
34
  export declare const DEFAULT_EXPORT_IMAGE: ExportImage;