@carto/kepler.gl 0.0.71-alpha.4 → 0.0.71

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 (43) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/components/common/item-selector/accessor.js +2 -2
  3. package/dist/components/common/item-selector/dropdown-list.js +8 -10
  4. package/dist/components/common/item-selector/item-selector.js +2 -2
  5. package/dist/components/common/styled-components.js +13 -21
  6. package/dist/components/kepler-gl.js +2 -2
  7. package/dist/components/map-container.js +22 -148
  8. package/dist/components/plot-container.js +6 -10
  9. package/dist/components/side-panel/layer-panel/color-range-selector.js +8 -43
  10. package/dist/components/side-panel/layer-panel/color-selector.js +1 -7
  11. package/dist/components/side-panel/layer-panel/layer-configurator.js +10 -40
  12. package/dist/constants/color-ranges.js +2 -12
  13. package/dist/constants/default-settings.js +4 -7
  14. package/dist/layers/base-layer.js +45 -139
  15. package/dist/layers/point-layer/point-layer.js +3 -2
  16. package/dist/localization/en.js +2 -5
  17. package/dist/reducers/vis-state-merger.js +2 -16
  18. package/dist/schemas/vis-state-schema.js +2 -2
  19. package/dist/utils/dom-to-image.js +6 -1
  20. package/package.json +2 -2
  21. package/src/components/common/item-selector/accessor.js +1 -1
  22. package/src/components/common/item-selector/dropdown-list.js +15 -24
  23. package/src/components/common/item-selector/item-selector.js +1 -1
  24. package/src/components/common/styled-components.js +2 -33
  25. package/src/components/kepler-gl.js +0 -4
  26. package/src/components/map-container.js +22 -152
  27. package/src/components/plot-container.js +3 -14
  28. package/src/components/side-panel/layer-panel/color-range-selector.js +8 -37
  29. package/src/components/side-panel/layer-panel/color-selector.js +0 -7
  30. package/src/components/side-panel/layer-panel/layer-configurator.js +7 -65
  31. package/src/constants/color-ranges.js +0 -9
  32. package/src/constants/default-settings.js +2 -5
  33. package/src/layers/base-layer.js +27 -93
  34. package/src/layers/layer-factory.d.ts +0 -1
  35. package/src/layers/point-layer/point-layer.js +1 -1
  36. package/src/localization/en.js +1 -4
  37. package/src/reducers/vis-state-merger.js +1 -13
  38. package/src/schemas/vis-state-schema.js +1 -1
  39. package/src/utils/dom-to-image.js +5 -0
  40. package/dist/components/side-panel/layer-panel/hex-column-config.js +0 -84
  41. package/dist/utils/custom-scales.js +0 -28
  42. package/src/components/side-panel/layer-panel/hex-column-config.js +0 -40
  43. package/src/utils/custom-scales.js +0 -20
@@ -85,7 +85,7 @@ var propTypes = {
85
85
  };
86
86
  PlotContainerFactory.deps = [_mapContainer["default"], _mapsLayout["default"]]; // Remove mapbox logo in exported map, because it contains non-ascii characters
87
87
 
88
- var StyledPlotContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n .mapboxgl-ctrl-bottom-left,\n .mapboxgl-ctrl-bottom-right,\n .mapbox-attribution-container {\n display: none;\n }\n\n position: absolute;\n top: ", "px;\n left: ", "px;\n"])), OUT_OF_SCREEN_POSITION, OUT_OF_SCREEN_POSITION);
88
+ var StyledPlotContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n top: ", "px;\n left: ", "px;\n"])), OUT_OF_SCREEN_POSITION, OUT_OF_SCREEN_POSITION);
89
89
 
90
90
  var StyledMapContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", "px;\n height: ", "px;\n display: flex;\n"])), function (props) {
91
91
  return props.width;
@@ -110,7 +110,8 @@ function PlotContainerFactory(MapContainer, MapsLayout) {
110
110
  var _this;
111
111
 
112
112
  (0, _classCallCheck2["default"])(this, PlotContainer);
113
- _this = _super.call(this, _props);
113
+ _this = _super.call(this, _props); // _onMapRender defined in cloud-native
114
+
114
115
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "plottingAreaRef", /*#__PURE__*/(0, _react.createRef)());
115
116
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "mapStyleSelector", function (props) {
116
117
  return props.mapFields.mapStyle;
@@ -132,11 +133,6 @@ function PlotContainerFactory(MapContainer, MapsLayout) {
132
133
  topMapStyle: (0, _mapboxGlStyleEditor.scaleMapStyleByResolution)(mapStyle.topMapStyle, scale)
133
134
  });
134
135
  }));
135
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onMapRender", function (map) {
136
- if (map.isStyleLoaded()) {
137
- _this._retrieveNewScreenshot();
138
- }
139
- });
140
136
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_retrieveNewScreenshot", function () {
141
137
  if (_this.plottingAreaRef.current) {
142
138
  (0, _exportUtils.convertToPng)(_this.plottingAreaRef.current, {
@@ -152,7 +148,7 @@ function PlotContainerFactory(MapContainer, MapsLayout) {
152
148
  });
153
149
  }
154
150
  });
155
- _this._onMapRender = (0, _lodash["default"])(_this._onMapRender, 500);
151
+ _this._generateThumbnail = null;
156
152
  _this._retrieveNewScreenshot = (0, _lodash["default"])(_this._retrieveNewScreenshot, 500);
157
153
  return _this;
158
154
  }
@@ -241,7 +237,7 @@ function PlotContainerFactory(MapContainer, MapsLayout) {
241
237
  }
242
238
  },
243
239
  MapComponent: _reactMapGl.StaticMap,
244
- onMapRender: this._onMapRender,
240
+ generateThumbnail: this._generateThumbnail,
245
241
  isExport: true,
246
242
  deckGlProps: deckGlProps,
247
243
  maskPolygon: maskPolygon
@@ -276,4 +272,4 @@ function PlotContainerFactory(MapContainer, MapsLayout) {
276
272
  PlotContainer.propsTypes = propTypes;
277
273
  return PlotContainer;
278
274
  }
279
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3Bsb3QtY29udGFpbmVyLmpzIl0sIm5hbWVzIjpbIkNMQVNTX0ZJTFRFUiIsIkRPTV9GSUxURVJfRlVOQyIsIm5vZGUiLCJpbmNsdWRlcyIsImNsYXNzTmFtZSIsIk9VVF9PRl9TQ1JFRU5fUE9TSVRJT04iLCJwcm9wVHlwZXMiLCJ3aWR0aCIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJoZWlnaHQiLCJleHBvcnRJbWFnZVNldHRpbmciLCJvYmplY3QiLCJhZGROb3RpZmljYXRpb24iLCJmdW5jIiwibWFwRmllbGRzIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VFcnJvciIsInNwbGl0TWFwcyIsImFycmF5T2YiLCJQbG90Q29udGFpbmVyRmFjdG9yeSIsImRlcHMiLCJNYXBDb250YWluZXJGYWN0b3J5IiwiTWFwc0xheW91dEZhY3RvcnkiLCJTdHlsZWRQbG90Q29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiU3R5bGVkTWFwQ29udGFpbmVyIiwicHJvcHMiLCJkZWNrR2xQcm9wcyIsImdsT3B0aW9ucyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsInVzZURldmljZVBpeGVscyIsIk1hcENvbnRhaW5lciIsIk1hcHNMYXlvdXQiLCJQbG90Q29udGFpbmVyIiwibWFwU3R5bGUiLCJpbWFnZVNpemUiLCJtYXBTdGF0ZSIsInNjYWxlIiwiaW1hZ2VXIiwiaW1hZ2VIIiwiaXNTcGxpdCIsIm1hcFN0eWxlU2VsZWN0b3IiLCJtYXBTY2FsZVNlbGVjdG9yIiwiYm90dG9tTWFwU3R5bGUiLCJ0b3BNYXBTdHlsZSIsIm1hcCIsImlzU3R5bGVMb2FkZWQiLCJfcmV0cmlldmVOZXdTY3JlZW5zaG90IiwicGxvdHRpbmdBcmVhUmVmIiwiY3VycmVudCIsImZpbHRlciIsInRoZW4iLCJlcnIiLCJlbmFibGVFcnJvck5vdGlmaWNhdGlvbiIsIl9vbk1hcFJlbmRlciIsInByb2Nlc3NpbmciLCJwcmV2UHJvcHMiLCJjaGVja3MiLCJzaG91bGRSZXRyaWV2ZVNjcmVlbnNob3QiLCJzb21lIiwiaXRlbSIsIm1hc2tQb2x5Z29uIiwibGVnZW5kIiwibGVuZ3RoIiwic2l6ZSIsIm5ld01hcFN0YXRlIiwiem9vbSIsIk1hdGgiLCJsb2cyIiwiY2VudGVyIiwicmVuZGVyZWRMYXllcnMiLCJsYXllcnMiLCJsYXllciIsImlkeCIsImlkIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJzaG91bGRSZW5kZXJMYXllciIsImxheWVyRGF0YSIsImJvdW5kcyIsImNlbnRlckFuZFpvb20iLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwibWFwUHJvcHMiLCJzY2FsZWRNYXBTdHlsZVNlbGVjdG9yIiwibWFwQ29udHJvbHMiLCJtYXBMZWdlbmQiLCJzaG93IiwiYWN0aXZlIiwiTWFwQ29tcG9uZW50IiwiU3RhdGljTWFwIiwib25NYXBSZW5kZXIiLCJpc0V4cG9ydCIsIm1hcENvbnRhaW5lcnMiLCJzZXR0aW5ncyIsImluZGV4IiwiQ29tcG9uZW50IiwicHJvcHNUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFlBQVksR0FBRyxDQUFDLDRCQUFELEVBQStCLGdCQUEvQixFQUFpRCxnQkFBakQsQ0FBckI7O0FBQ0EsSUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFBQyxJQUFJO0FBQUEsU0FBSSxDQUFDRixZQUFZLENBQUNHLFFBQWIsQ0FBc0JELElBQUksQ0FBQ0UsU0FBM0IsQ0FBTDtBQUFBLENBQTVCOztBQUNBLElBQU1DLHNCQUFzQixHQUFHLENBQUMsSUFBaEM7QUFFQSxJQUFNQyxTQUFTLEdBQUc7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QUNnRixLQUFELENBQVQsQ0FBaUJ6QjtBQUw5QixhQURhO0FBQUEsU0FBZCxDQURILENBSEY7QUFlQSw0QkFDRSxnQ0FBQyxtQkFBRDtBQUFxQixVQUFBLFNBQVMsRUFBQztBQUEvQix3QkFDRSxnQ0FBQyxrQkFBRDtBQUFvQixVQUFBLEdBQUcsRUFBRSxLQUFLdkIsZUFBOUI7QUFBK0MsVUFBQSxLQUFLLEVBQUVnQixJQUFJLENBQUM3RCxLQUEzRDtBQUFrRSxVQUFBLE1BQU0sRUFBRTZELElBQUksQ0FBQ3pEO0FBQS9FLFdBQ0d1RixhQURILENBREYsQ0FERjtBQU9EO0FBeEprRTtBQUFBO0FBQUEsSUFDekNHLGdCQUR5Qzs7QUEySnJFaEUsRUFBQUEsYUFBYSxDQUFDaUUsVUFBZCxHQUEyQmhHLFNBQTNCO0FBQ0EsU0FBTytCLGFBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8vIGxpYnJhcmllc1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7U3RhdGljTWFwfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC5kZWJvdW5jZSc7XG5pbXBvcnQge2V4cG9ydEltYWdlRXJyb3J9IGZyb20gJ3V0aWxzL25vdGlmaWNhdGlvbnMtdXRpbHMnO1xuaW1wb3J0IE1hcENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9tYXAtY29udGFpbmVyJztcbmltcG9ydCBNYXBzTGF5b3V0RmFjdG9yeSBmcm9tICcuL21hcHMtbGF5b3V0JztcbmltcG9ydCB7Y29udmVydFRvUG5nLCBnZXRTY2FsZUZyb21JbWFnZVNpemV9IGZyb20gJ3V0aWxzL2V4cG9ydC11dGlscyc7XG5pbXBvcnQge3NjYWxlTWFwU3R5bGVCeVJlc29sdXRpb259IGZyb20gJ3V0aWxzL21hcC1zdHlsZS11dGlscy9tYXBib3gtZ2wtc3R5bGUtZWRpdG9yJztcblxuaW1wb3J0IHtmaW5kTWFwQm91bmRzfSBmcm9tICd1dGlscy9kYXRhLXV0aWxzJztcbmltcG9ydCB7Z2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHN9IGZyb20gJ3V0aWxzL3Byb2plY3Rpb24tdXRpbHMnO1xuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRH0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5jb25zdCBDTEFTU19GSUxURVIgPSBbJ21hcGJveGdsLWNvbnRyb2wtY29udGFpbmVyJywgJ2F0dHJpdGlvbi1saW5rJywgJ2F0dHJpdGlvbi1sb2dvJ107XG5jb25zdCBET01fRklMVEVSX0ZVTkMgPSBub2RlID0+ICFDTEFTU19GSUxURVIuaW5jbHVkZXMobm9kZS5jbGFzc05hbWUpO1xuY29uc3QgT1VUX09GX1NDUkVFTl9QT1NJVElPTiA9IC05OTk5O1xuXG5jb25zdCBwcm9wVHlwZXMgPSB7XG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGhlaWdodDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBleHBvcnRJbWFnZVNldHRpbmc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgYWRkTm90aWZpY2F0aW9uOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBtYXBGaWVsZHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHNldEV4cG9ydEltYWdlRGF0YVVyaTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2V0RXhwb3J0SW1hZ2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc3BsaXRNYXBzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KVxufTtcblxuUGxvdENvbnRhaW5lckZhY3RvcnkuZGVwcyA9IFtNYXBDb250YWluZXJGYWN0b3J5LCBNYXBzTGF5b3V0RmFjdG9yeV07XG5cbi8vIFJlbW92ZSBtYXBib3ggbG9nbyBpbiBleHBvcnRlZCBtYXAsIGJlY2F1c2UgaXQgY29udGFpbnMgbm9uLWFzY2lpIGNoYXJhY3RlcnNcbmNvbnN0IFN0eWxlZFBsb3RDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICAubWFwYm94Z2wtY3RybC1ib3R0b20tbGVmdCxcbiAgLm1hcGJveGdsLWN0cmwtYm90dG9tLXJpZ2h0LFxuICAubWFwYm94LWF0dHJpYnV0aW9uLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAke09VVF9PRl9TQ1JFRU5fUE9TSVRJT059cHg7XG4gIGxlZnQ6ICR7T1VUX09GX1NDUkVFTl9QT1NJVElPTn1weDtcbmA7XG5cbmNvbnN0IFN0eWxlZE1hcENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLndpZHRofXB4O1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMuaGVpZ2h0fXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuYDtcblxuY29uc3QgZGVja0dsUHJvcHMgPSB7XG4gIGdsT3B0aW9uczoge1xuICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSxcbiAgICB1c2VEZXZpY2VQaXhlbHM6IGZhbHNlXG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBsb3RDb250YWluZXJGYWN0b3J5KE1hcENvbnRhaW5lciwgTWFwc0xheW91dCkge1xuICBjbGFzcyBQbG90Q29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgc3VwZXIocHJvcHMpO1xuICAgICAgdGhpcy5fb25NYXBSZW5kZXIgPSBkZWJvdW5jZSh0aGlzLl9vbk1hcFJlbmRlciwgNTAwKTtcbiAgICAgIHRoaXMuX3JldHJpZXZlTmV3U2NyZWVuc2hvdCA9IGRlYm91bmNlKHRoaXMuX3JldHJpZXZlTmV3U2NyZWVuc2hvdCwgNTAwKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMucHJvcHMuc2V0RXhwb3J0SW1hZ2VTZXR0aW5nKHtwcm9jZXNzaW5nOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgLy8gcmUtZmV0Y2ggdGhlIG5ldyBzY3JlZW5zaG90IG9ubHkgd2hlbiByYXRpbyBsZWdlbmQgb3IgcmVzb2x1dGlvbiBjaGFuZ2VzXG4gICAgICBjb25zdCBjaGVja3MgPSBbJ3JhdGlvJywgJ3Jlc29sdXRpb24nLCAnbGVnZW5kJ107XG4gICAgICBjb25zdCBzaG91bGRSZXRyaWV2ZVNjcmVlbnNob3QgPSBjaGVja3Muc29tZShcbiAgICAgICAgaXRlbSA9PiB0aGlzLnByb3BzLmV4cG9ydEltYWdlU2V0dGluZ1tpdGVtXSAhPT0gcHJldlByb3BzLmV4cG9ydEltYWdlU2V0dGluZ1tpdGVtXVxuICAgICAgKTtcbiAgICAgIGlmIChzaG91bGRSZXRyaWV2ZVNjcmVlbnNob3QpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRFeHBvcnRJbWFnZVNldHRpbmcoe3Byb2Nlc3Npbmc6IHRydWV9KTtcbiAgICAgICAgdGhpcy5fcmV0cmlldmVOZXdTY3JlZW5zaG90KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGxvdHRpbmdBcmVhUmVmID0gY3JlYXRlUmVmKCk7XG5cbiAgICBtYXBTdHlsZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubWFwRmllbGRzLm1hcFN0eWxlO1xuICAgIG1hcFNjYWxlU2VsZWN0b3IgPSBwcm9wcyA9PiB7XG4gICAgICBjb25zdCB7aW1hZ2VTaXplfSA9IHByb3BzLmV4cG9ydEltYWdlU2V0dGluZztcbiAgICAgIGNvbnN0IHttYXBTdGF0ZX0gPSBwcm9wcy5tYXBGaWVsZHM7XG4gICAgICBpZiAoaW1hZ2VTaXplLnNjYWxlKSB7XG4gICAgICAgIHJldHVybiBpbWFnZVNpemUuc2NhbGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNjYWxlID0gZ2V0U2NhbGVGcm9tSW1hZ2VTaXplKFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VXLFxuICAgICAgICBpbWFnZVNpemUuaW1hZ2VILFxuICAgICAgICBtYXBTdGF0ZS53aWR0aCAqIChtYXBTdGF0ZS5pc1NwbGl0ID8gMiA6IDEpLFxuICAgICAgICBtYXBTdGF0ZS5oZWlnaHRcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBzY2FsZSA+IDAgPyBzY2FsZSA6IDE7XG4gICAgfTtcblxuICAgIHNjYWxlZE1hcFN0eWxlU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubWFwU3R5bGVTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwU2NhbGVTZWxlY3RvcixcbiAgICAgIChtYXBTdHlsZSwgc2NhbGUpID0+ICh7XG4gICAgICAgIC4uLm1hcFN0eWxlLFxuICAgICAgICBib3R0b21NYXBTdHlsZTogc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbihtYXBTdHlsZS5ib3R0b21NYXBTdHlsZSwgc2NhbGUpLFxuICAgICAgICB0b3BNYXBTdHlsZTogc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvbihtYXBTdHlsZS50b3BNYXBTdHlsZSwgc2NhbGUpXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBfb25NYXBSZW5kZXIgPSBtYXAgPT4ge1xuICAgICAgaWYgKG1hcC5pc1N0eWxlTG9hZGVkKCkpIHtcbiAgICAgICAgdGhpcy5fcmV0cmlldmVOZXdTY3JlZW5zaG90KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9yZXRyaWV2ZU5ld1NjcmVlbnNob3QgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wbG90dGluZ0FyZWFSZWYuY3VycmVudCkge1xuICAgICAgICBjb252ZXJ0VG9QbmcodGhpcy5wbG90dGluZ0FyZWFSZWYuY3VycmVudCwge2ZpbHRlcjogRE9NX0ZJTFRFUl9GVU5DfSlcbiAgICAgICAgICAudGhlbih0aGlzLnByb3BzLnNldEV4cG9ydEltYWdlRGF0YVVyaSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0RXhwb3J0SW1hZ2VFcnJvcihlcnIpO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuZW5hYmxlRXJyb3JOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hZGROb3RpZmljYXRpb24oZXhwb3J0SW1hZ2VFcnJvcih7ZXJyfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7ZXhwb3J0SW1hZ2VTZXR0aW5nLCBtYXBGaWVsZHMsIHNwbGl0TWFwcywgbWFza1BvbHlnb259ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtpbWFnZVNpemUgPSB7fSwgbGVnZW5kfSA9IGV4cG9ydEltYWdlU2V0dGluZztcbiAgICAgIGNvbnN0IHttYXBTdGF0ZX0gPSBtYXBGaWVsZHM7XG4gICAgICBjb25zdCBpc1NwbGl0ID0gc3BsaXRNYXBzICYmIHNwbGl0TWFwcy5sZW5ndGggPiAxO1xuXG4gICAgICBjb25zdCBzaXplID0ge1xuICAgICAgICB3aWR0aDogaW1hZ2VTaXplLmltYWdlVyB8fCAxLFxuICAgICAgICBoZWlnaHQ6IGltYWdlU2l6ZS5pbWFnZUggfHwgMVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdpZHRoID0gc2l6ZS53aWR0aCAvIChpc1NwbGl0ID8gMiA6IDEpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7XG4gICAgICBjb25zdCBzY2FsZSA9IHRoaXMubWFwU2NhbGVTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IG5ld01hcFN0YXRlID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgem9vbTogbWFwU3RhdGUuem9vbSArIChNYXRoLmxvZzIoc2NhbGUpIHx8IDApXG4gICAgICB9O1xuXG4gICAgICAvLyBjZW50ZXIgYW5kIGFsbCBsYXllciBib3VuZHNcbiAgICAgIGlmIChleHBvcnRJbWFnZVNldHRpbmcuY2VudGVyKSB7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVkTGF5ZXJzID0gbWFwRmllbGRzLmxheWVycy5maWx0ZXIoXG4gICAgICAgICAgKGxheWVyLCBpZHgpID0+XG4gICAgICAgICAgICBsYXllci5pZCAhPT0gR0VPQ09ERVJfTEFZRVJfSUQgJiYgbGF5ZXIuc2hvdWxkUmVuZGVyTGF5ZXIobWFwRmllbGRzLmxheWVyRGF0YVtpZHhdKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBib3VuZHMgPSBmaW5kTWFwQm91bmRzKHJlbmRlcmVkTGF5ZXJzKTtcbiAgICAgICAgY29uc3QgY2VudGVyQW5kWm9vbSA9IGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzKGJvdW5kcywge3dpZHRoLCBoZWlnaHR9KTtcbiAgICAgICAgaWYgKGNlbnRlckFuZFpvb20pIHtcbiAgICAgICAgICBjb25zdCB6b29tID0gTnVtYmVyLmlzRmluaXRlKGNlbnRlckFuZFpvb20uem9vbSkgPyBjZW50ZXJBbmRab29tLnpvb20gOiBtYXBTdGF0ZS56b29tO1xuXG4gICAgICAgICAgbmV3TWFwU3RhdGUubG9uZ2l0dWRlID0gY2VudGVyQW5kWm9vbS5jZW50ZXJbMF07XG4gICAgICAgICAgbmV3TWFwU3RhdGUubGF0aXR1ZGUgPSBjZW50ZXJBbmRab29tLmNlbnRlclsxXTtcbiAgICAgICAgICBuZXdNYXBTdGF0ZS56b29tID0gem9vbSArIE51bWJlcihNYXRoLmxvZzIoc2NhbGUpIHx8IDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hcFByb3BzID0ge1xuICAgICAgICAuLi5tYXBGaWVsZHMsXG4gICAgICAgIG1hcFN0eWxlOiB0aGlzLnNjYWxlZE1hcFN0eWxlU2VsZWN0b3IodGhpcy5wcm9wcyksXG5cbiAgICAgICAgLy8gb3ZlcnJpZGUgdmlld3BvcnQgYmFzZWQgb24gZXhwb3J0IHNldHRpbmdzXG4gICAgICAgIG1hcFN0YXRlOiBuZXdNYXBTdGF0ZSxcbiAgICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgICAvLyBvdmVycmlkZSBtYXAgbGVnZW5kIHZpc2liaWxpdHlcbiAgICAgICAgICBtYXBMZWdlbmQ6IHtcbiAgICAgICAgICAgIHNob3c6IGxlZ2VuZCxcbiAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgTWFwQ29tcG9uZW50OiBTdGF0aWNNYXAsXG4gICAgICAgIG9uTWFwUmVuZGVyOiB0aGlzLl9vbk1hcFJlbmRlcixcbiAgICAgICAgaXNFeHBvcnQ6IHRydWUsXG4gICAgICAgIGRlY2tHbFByb3BzLFxuICAgICAgICBtYXNrUG9seWdvblxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFwQ29udGFpbmVycyA9ICFpc1NwbGl0ID8gKFxuICAgICAgICA8TWFwQ29udGFpbmVyIGluZGV4PXswfSBwcmltYXJ5PXt0cnVlfSB7Li4ubWFwUHJvcHN9IC8+XG4gICAgICApIDogKFxuICAgICAgICA8TWFwc0xheW91dCBpc0V4cG9ydD17dHJ1ZX0+XG4gICAgICAgICAge3NwbGl0TWFwcy5tYXAoKHNldHRpbmdzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIHByaW1hcnk9e2luZGV4ID09PSAxfVxuICAgICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICAgIG1hcExheWVycz17c3BsaXRNYXBzW2luZGV4XS5sYXllcnN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L01hcHNMYXlvdXQ+XG4gICAgICApO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFBsb3RDb250YWluZXIgY2xhc3NOYW1lPVwiZXhwb3J0LW1hcC1pbnN0YW5jZVwiPlxuICAgICAgICAgIDxTdHlsZWRNYXBDb250YWluZXIgcmVmPXt0aGlzLnBsb3R0aW5nQXJlYVJlZn0gd2lkdGg9e3NpemUud2lkdGh9IGhlaWdodD17c2l6ZS5oZWlnaHR9PlxuICAgICAgICAgICAge21hcENvbnRhaW5lcnN9XG4gICAgICAgICAgPC9TdHlsZWRNYXBDb250YWluZXI+XG4gICAgICAgIDwvU3R5bGVkUGxvdENvbnRhaW5lcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgUGxvdENvbnRhaW5lci5wcm9wc1R5cGVzID0gcHJvcFR5cGVzO1xuICByZXR1cm4gUGxvdENvbnRhaW5lcjtcbn1cbiJdfQ==
275
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3Bsb3QtY29udGFpbmVyLmpzIl0sIm5hbWVzIjpbIkNMQVNTX0ZJTFRFUiIsIkRPTV9GSUxURVJfRlVOQyIsIm5vZGUiLCJpbmNsdWRlcyIsImNsYXNzTmFtZSIsIk9VVF9PRl9TQ1JFRU5fUE9TSVRJT04iLCJwcm9wVHlwZXMiLCJ3aWR0aCIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJoZWlnaHQiLCJleHBvcnRJbWFnZVNldHRpbmciLCJvYmplY3QiLCJhZGROb3RpZmljYXRpb24iLCJmdW5jIiwibWFwRmllbGRzIiwic2V0RXhwb3J0SW1hZ2VTZXR0aW5nIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpIiwic2V0RXhwb3J0SW1hZ2VFcnJvciIsInNwbGl0TWFwcyIsImFycmF5T2YiLCJQbG90Q29udGFpbmVyRmFjdG9yeSIsImRlcHMiLCJNYXBDb250YWluZXJGYWN0b3J5IiwiTWFwc0xheW91dEZhY3RvcnkiLCJTdHlsZWRQbG90Q29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiU3R5bGVkTWFwQ29udGFpbmVyIiwicHJvcHMiLCJkZWNrR2xQcm9wcyIsImdsT3B0aW9ucyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsInVzZURldmljZVBpeGVscyIsIk1hcENvbnRhaW5lciIsIk1hcHNMYXlvdXQiLCJQbG90Q29udGFpbmVyIiwibWFwU3R5bGUiLCJpbWFnZVNpemUiLCJtYXBTdGF0ZSIsInNjYWxlIiwiaW1hZ2VXIiwiaW1hZ2VIIiwiaXNTcGxpdCIsIm1hcFN0eWxlU2VsZWN0b3IiLCJtYXBTY2FsZVNlbGVjdG9yIiwiYm90dG9tTWFwU3R5bGUiLCJ0b3BNYXBTdHlsZSIsInBsb3R0aW5nQXJlYVJlZiIsImN1cnJlbnQiLCJmaWx0ZXIiLCJ0aGVuIiwiZXJyIiwiZW5hYmxlRXJyb3JOb3RpZmljYXRpb24iLCJfZ2VuZXJhdGVUaHVtYm5haWwiLCJfcmV0cmlldmVOZXdTY3JlZW5zaG90IiwicHJvY2Vzc2luZyIsInByZXZQcm9wcyIsImNoZWNrcyIsInNob3VsZFJldHJpZXZlU2NyZWVuc2hvdCIsInNvbWUiLCJpdGVtIiwibWFza1BvbHlnb24iLCJsZWdlbmQiLCJsZW5ndGgiLCJzaXplIiwibmV3TWFwU3RhdGUiLCJ6b29tIiwiTWF0aCIsImxvZzIiLCJjZW50ZXIiLCJyZW5kZXJlZExheWVycyIsImxheWVycyIsImxheWVyIiwiaWR4IiwiaWQiLCJHRU9DT0RFUl9MQVlFUl9JRCIsInNob3VsZFJlbmRlckxheWVyIiwibGF5ZXJEYXRhIiwiYm91bmRzIiwiY2VudGVyQW5kWm9vbSIsIk51bWJlciIsImlzRmluaXRlIiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJtYXBQcm9wcyIsInNjYWxlZE1hcFN0eWxlU2VsZWN0b3IiLCJtYXBDb250cm9scyIsIm1hcExlZ2VuZCIsInNob3ciLCJhY3RpdmUiLCJNYXBDb21wb25lbnQiLCJTdGF0aWNNYXAiLCJnZW5lcmF0ZVRodW1ibmFpbCIsImlzRXhwb3J0IiwibWFwQ29udGFpbmVycyIsIm1hcCIsInNldHRpbmdzIiwiaW5kZXgiLCJDb21wb25lbnQiLCJwcm9wc1R5cGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsWUFBWSxHQUFHLENBQUMsNEJBQUQsRUFBK0IsZ0JBQS9CLEVBQWlELGdCQUFqRCxDQUFyQjs7QUFDQSxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUFDLElBQUk7QUFBQSxTQUFJLENBQUNGLFlBQVksQ0FBQ0csUUFBYixDQUFzQkQsSUFBSSxDQUFDRSxTQUEzQixDQUFMO0FBQUEsQ0FBNUI7O0FBQ0EsSUFBTUMsc0JBQXNCLEdBQUcsQ0FBQyxJQUFoQztBQUVBLElBQU1DLFNBQVMsR0FBRztBQUNo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RDtBQUFvQixVQUFBLEdBQUcsRUFBRSxLQUFLeEIsZUFBOUI7QUFBK0MsVUFBQSxLQUFLLEVBQUVpQixJQUFJLENBQUMzRCxLQUEzRDtBQUFrRSxVQUFBLE1BQU0sRUFBRTJELElBQUksQ0FBQ3ZEO0FBQS9FLFdBQ0dxRixhQURILENBREYsQ0FERjtBQU9EO0FBbkprRTtBQUFBO0FBQUEsSUFDekNJLGdCQUR5Qzs7QUFzSnJFL0QsRUFBQUEsYUFBYSxDQUFDZ0UsVUFBZCxHQUEyQi9GLFNBQTNCO0FBQ0EsU0FBTytCLGFBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8vIGxpYnJhcmllc1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7U3RhdGljTWFwfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC5kZWJvdW5jZSc7XG5pbXBvcnQge2V4cG9ydEltYWdlRXJyb3J9IGZyb20gJ3V0aWxzL25vdGlmaWNhdGlvbnMtdXRpbHMnO1xuaW1wb3J0IE1hcENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9tYXAtY29udGFpbmVyJztcbmltcG9ydCBNYXBzTGF5b3V0RmFjdG9yeSBmcm9tICcuL21hcHMtbGF5b3V0JztcbmltcG9ydCB7Y29udmVydFRvUG5nLCBnZXRTY2FsZUZyb21JbWFnZVNpemV9IGZyb20gJ3V0aWxzL2V4cG9ydC11dGlscyc7XG5pbXBvcnQge3NjYWxlTWFwU3R5bGVCeVJlc29sdXRpb259IGZyb20gJ3V0aWxzL21hcC1zdHlsZS11dGlscy9tYXBib3gtZ2wtc3R5bGUtZWRpdG9yJztcblxuaW1wb3J0IHtmaW5kTWFwQm91bmRzfSBmcm9tICd1dGlscy9kYXRhLXV0aWxzJztcbmltcG9ydCB7Z2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHN9IGZyb20gJ3V0aWxzL3Byb2plY3Rpb24tdXRpbHMnO1xuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRH0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5jb25zdCBDTEFTU19GSUxURVIgPSBbJ21hcGJveGdsLWNvbnRyb2wtY29udGFpbmVyJywgJ2F0dHJpdGlvbi1saW5rJywgJ2F0dHJpdGlvbi1sb2dvJ107XG5jb25zdCBET01fRklMVEVSX0ZVTkMgPSBub2RlID0+ICFDTEFTU19GSUxURVIuaW5jbHVkZXMobm9kZS5jbGFzc05hbWUpO1xuY29uc3QgT1VUX09GX1NDUkVFTl9QT1NJVElPTiA9IC05OTk5O1xuXG5jb25zdCBwcm9wVHlwZXMgPSB7XG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGhlaWdodDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBleHBvcnRJbWFnZVNldHRpbmc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgYWRkTm90aWZpY2F0aW9uOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBtYXBGaWVsZHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHNldEV4cG9ydEltYWdlRGF0YVVyaTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2V0RXhwb3J0SW1hZ2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc3BsaXRNYXBzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KVxufTtcblxuUGxvdENvbnRhaW5lckZhY3RvcnkuZGVwcyA9IFtNYXBDb250YWluZXJGYWN0b3J5LCBNYXBzTGF5b3V0RmFjdG9yeV07XG5cbi8vIFJlbW92ZSBtYXBib3ggbG9nbyBpbiBleHBvcnRlZCBtYXAsIGJlY2F1c2UgaXQgY29udGFpbnMgbm9uLWFzY2lpIGNoYXJhY3RlcnNcbmNvbnN0IFN0eWxlZFBsb3RDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJHtPVVRfT0ZfU0NSRUVOX1BPU0lUSU9OfXB4O1xuICBsZWZ0OiAke09VVF9PRl9TQ1JFRU5fUE9TSVRJT059cHg7XG5gO1xuXG5jb25zdCBTdHlsZWRNYXBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLmhlaWdodH1weDtcbiAgZGlzcGxheTogZmxleDtcbmA7XG5cbmNvbnN0IGRlY2tHbFByb3BzID0ge1xuICBnbE9wdGlvbnM6IHtcbiAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgdXNlRGV2aWNlUGl4ZWxzOiBmYWxzZVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQbG90Q29udGFpbmVyRmFjdG9yeShNYXBDb250YWluZXIsIE1hcHNMYXlvdXQpIHtcbiAgY2xhc3MgUGxvdENvbnRhaW5lciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgIC8vIF9vbk1hcFJlbmRlciBkZWZpbmVkIGluIGNsb3VkLW5hdGl2ZVxuICAgICAgdGhpcy5fZ2VuZXJhdGVUaHVtYm5haWwgPSBudWxsO1xuICAgICAgdGhpcy5fcmV0cmlldmVOZXdTY3JlZW5zaG90ID0gZGVib3VuY2UodGhpcy5fcmV0cmlldmVOZXdTY3JlZW5zaG90LCA1MDApO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5wcm9wcy5zZXRFeHBvcnRJbWFnZVNldHRpbmcoe3Byb2Nlc3Npbmc6IHRydWV9KTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICAvLyByZS1mZXRjaCB0aGUgbmV3IHNjcmVlbnNob3Qgb25seSB3aGVuIHJhdGlvIGxlZ2VuZCBvciByZXNvbHV0aW9uIGNoYW5nZXNcbiAgICAgIGNvbnN0IGNoZWNrcyA9IFsncmF0aW8nLCAncmVzb2x1dGlvbicsICdsZWdlbmQnXTtcbiAgICAgIGNvbnN0IHNob3VsZFJldHJpZXZlU2NyZWVuc2hvdCA9IGNoZWNrcy5zb21lKFxuICAgICAgICBpdGVtID0+IHRoaXMucHJvcHMuZXhwb3J0SW1hZ2VTZXR0aW5nW2l0ZW1dICE9PSBwcmV2UHJvcHMuZXhwb3J0SW1hZ2VTZXR0aW5nW2l0ZW1dXG4gICAgICApO1xuICAgICAgaWYgKHNob3VsZFJldHJpZXZlU2NyZWVuc2hvdCkge1xuICAgICAgICB0aGlzLnByb3BzLnNldEV4cG9ydEltYWdlU2V0dGluZyh7cHJvY2Vzc2luZzogdHJ1ZX0pO1xuICAgICAgICB0aGlzLl9yZXRyaWV2ZU5ld1NjcmVlbnNob3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwbG90dGluZ0FyZWFSZWYgPSBjcmVhdGVSZWYoKTtcblxuICAgIG1hcFN0eWxlU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5tYXBGaWVsZHMubWFwU3R5bGU7XG4gICAgbWFwU2NhbGVTZWxlY3RvciA9IHByb3BzID0+IHtcbiAgICAgIGNvbnN0IHtpbWFnZVNpemV9ID0gcHJvcHMuZXhwb3J0SW1hZ2VTZXR0aW5nO1xuICAgICAgY29uc3Qge21hcFN0YXRlfSA9IHByb3BzLm1hcEZpZWxkcztcbiAgICAgIGlmIChpbWFnZVNpemUuc2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGltYWdlU2l6ZS5zY2FsZTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2NhbGUgPSBnZXRTY2FsZUZyb21JbWFnZVNpemUoXG4gICAgICAgIGltYWdlU2l6ZS5pbWFnZVcsXG4gICAgICAgIGltYWdlU2l6ZS5pbWFnZUgsXG4gICAgICAgIG1hcFN0YXRlLndpZHRoICogKG1hcFN0YXRlLmlzU3BsaXQgPyAyIDogMSksXG4gICAgICAgIG1hcFN0YXRlLmhlaWdodFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHNjYWxlID4gMCA/IHNjYWxlIDogMTtcbiAgICB9O1xuXG4gICAgc2NhbGVkTWFwU3R5bGVTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5tYXBTdHlsZVNlbGVjdG9yLFxuICAgICAgdGhpcy5tYXBTY2FsZVNlbGVjdG9yLFxuICAgICAgKG1hcFN0eWxlLCBzY2FsZSkgPT4gKHtcbiAgICAgICAgLi4ubWFwU3R5bGUsXG4gICAgICAgIGJvdHRvbU1hcFN0eWxlOiBzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uKG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlLCBzY2FsZSksXG4gICAgICAgIHRvcE1hcFN0eWxlOiBzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uKG1hcFN0eWxlLnRvcE1hcFN0eWxlLCBzY2FsZSlcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIF9yZXRyaWV2ZU5ld1NjcmVlbnNob3QgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wbG90dGluZ0FyZWFSZWYuY3VycmVudCkge1xuICAgICAgICBjb252ZXJ0VG9QbmcodGhpcy5wbG90dGluZ0FyZWFSZWYuY3VycmVudCwge2ZpbHRlcjogRE9NX0ZJTFRFUl9GVU5DfSlcbiAgICAgICAgICAudGhlbih0aGlzLnByb3BzLnNldEV4cG9ydEltYWdlRGF0YVVyaSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc2V0RXhwb3J0SW1hZ2VFcnJvcihlcnIpO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuZW5hYmxlRXJyb3JOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5hZGROb3RpZmljYXRpb24oZXhwb3J0SW1hZ2VFcnJvcih7ZXJyfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7ZXhwb3J0SW1hZ2VTZXR0aW5nLCBtYXBGaWVsZHMsIHNwbGl0TWFwcywgbWFza1BvbHlnb259ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtpbWFnZVNpemUgPSB7fSwgbGVnZW5kfSA9IGV4cG9ydEltYWdlU2V0dGluZztcbiAgICAgIGNvbnN0IHttYXBTdGF0ZX0gPSBtYXBGaWVsZHM7XG4gICAgICBjb25zdCBpc1NwbGl0ID0gc3BsaXRNYXBzICYmIHNwbGl0TWFwcy5sZW5ndGggPiAxO1xuXG4gICAgICBjb25zdCBzaXplID0ge1xuICAgICAgICB3aWR0aDogaW1hZ2VTaXplLmltYWdlVyB8fCAxLFxuICAgICAgICBoZWlnaHQ6IGltYWdlU2l6ZS5pbWFnZUggfHwgMVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdpZHRoID0gc2l6ZS53aWR0aCAvIChpc1NwbGl0ID8gMiA6IDEpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7XG4gICAgICBjb25zdCBzY2FsZSA9IHRoaXMubWFwU2NhbGVTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IG5ld01hcFN0YXRlID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgem9vbTogbWFwU3RhdGUuem9vbSArIChNYXRoLmxvZzIoc2NhbGUpIHx8IDApXG4gICAgICB9O1xuXG4gICAgICAvLyBjZW50ZXIgYW5kIGFsbCBsYXllciBib3VuZHNcbiAgICAgIGlmIChleHBvcnRJbWFnZVNldHRpbmcuY2VudGVyKSB7XG4gICAgICAgIGNvbnN0IHJlbmRlcmVkTGF5ZXJzID0gbWFwRmllbGRzLmxheWVycy5maWx0ZXIoXG4gICAgICAgICAgKGxheWVyLCBpZHgpID0+XG4gICAgICAgICAgICBsYXllci5pZCAhPT0gR0VPQ09ERVJfTEFZRVJfSUQgJiYgbGF5ZXIuc2hvdWxkUmVuZGVyTGF5ZXIobWFwRmllbGRzLmxheWVyRGF0YVtpZHhdKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBib3VuZHMgPSBmaW5kTWFwQm91bmRzKHJlbmRlcmVkTGF5ZXJzKTtcbiAgICAgICAgY29uc3QgY2VudGVyQW5kWm9vbSA9IGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzKGJvdW5kcywge3dpZHRoLCBoZWlnaHR9KTtcbiAgICAgICAgaWYgKGNlbnRlckFuZFpvb20pIHtcbiAgICAgICAgICBjb25zdCB6b29tID0gTnVtYmVyLmlzRmluaXRlKGNlbnRlckFuZFpvb20uem9vbSkgPyBjZW50ZXJBbmRab29tLnpvb20gOiBtYXBTdGF0ZS56b29tO1xuXG4gICAgICAgICAgbmV3TWFwU3RhdGUubG9uZ2l0dWRlID0gY2VudGVyQW5kWm9vbS5jZW50ZXJbMF07XG4gICAgICAgICAgbmV3TWFwU3RhdGUubGF0aXR1ZGUgPSBjZW50ZXJBbmRab29tLmNlbnRlclsxXTtcbiAgICAgICAgICBuZXdNYXBTdGF0ZS56b29tID0gem9vbSArIE51bWJlcihNYXRoLmxvZzIoc2NhbGUpIHx8IDApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hcFByb3BzID0ge1xuICAgICAgICAuLi5tYXBGaWVsZHMsXG4gICAgICAgIG1hcFN0eWxlOiB0aGlzLnNjYWxlZE1hcFN0eWxlU2VsZWN0b3IodGhpcy5wcm9wcyksXG5cbiAgICAgICAgLy8gb3ZlcnJpZGUgdmlld3BvcnQgYmFzZWQgb24gZXhwb3J0IHNldHRpbmdzXG4gICAgICAgIG1hcFN0YXRlOiBuZXdNYXBTdGF0ZSxcbiAgICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgICAvLyBvdmVycmlkZSBtYXAgbGVnZW5kIHZpc2liaWxpdHlcbiAgICAgICAgICBtYXBMZWdlbmQ6IHtcbiAgICAgICAgICAgIHNob3c6IGxlZ2VuZCxcbiAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgTWFwQ29tcG9uZW50OiBTdGF0aWNNYXAsXG4gICAgICAgIGdlbmVyYXRlVGh1bWJuYWlsOiB0aGlzLl9nZW5lcmF0ZVRodW1ibmFpbCxcbiAgICAgICAgaXNFeHBvcnQ6IHRydWUsXG4gICAgICAgIGRlY2tHbFByb3BzLFxuICAgICAgICBtYXNrUG9seWdvblxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFwQ29udGFpbmVycyA9ICFpc1NwbGl0ID8gKFxuICAgICAgICA8TWFwQ29udGFpbmVyIGluZGV4PXswfSBwcmltYXJ5PXt0cnVlfSB7Li4ubWFwUHJvcHN9IC8+XG4gICAgICApIDogKFxuICAgICAgICA8TWFwc0xheW91dCBpc0V4cG9ydD17dHJ1ZX0+XG4gICAgICAgICAge3NwbGl0TWFwcy5tYXAoKHNldHRpbmdzLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE1hcENvbnRhaW5lclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIHByaW1hcnk9e2luZGV4ID09PSAxfVxuICAgICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICAgIG1hcExheWVycz17c3BsaXRNYXBzW2luZGV4XS5sYXllcnN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L01hcHNMYXlvdXQ+XG4gICAgICApO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFBsb3RDb250YWluZXIgY2xhc3NOYW1lPVwiZXhwb3J0LW1hcC1pbnN0YW5jZVwiPlxuICAgICAgICAgIDxTdHlsZWRNYXBDb250YWluZXIgcmVmPXt0aGlzLnBsb3R0aW5nQXJlYVJlZn0gd2lkdGg9e3NpemUud2lkdGh9IGhlaWdodD17c2l6ZS5oZWlnaHR9PlxuICAgICAgICAgICAge21hcENvbnRhaW5lcnN9XG4gICAgICAgICAgPC9TdHlsZWRNYXBDb250YWluZXI+XG4gICAgICAgIDwvU3R5bGVkUGxvdENvbnRhaW5lcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgUGxvdENvbnRhaW5lci5wcm9wc1R5cGVzID0gcHJvcFR5cGVzO1xuICByZXR1cm4gUGxvdENvbnRhaW5lcjtcbn1cbiJdfQ==
@@ -62,8 +62,6 @@ var _localization = require("../../../localization");
62
62
 
63
63
  var _icons = require("../../common/icons");
64
64
 
65
- var _hexColumnConfig = _interopRequireDefault(require("./hex-column-config"));
66
-
67
65
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
68
66
 
69
67
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
@@ -78,10 +76,7 @@ var ALL_TYPES = (0, _lodash["default"])(['all'].concat((0, _toConsumableArray2["
78
76
  return c.type;
79
77
  }).filter(function (ctype) {
80
78
  return ctype;
81
- })), ['custom', {
82
- value: _colorRanges.hexColor,
83
- divider: true
84
- }]));
79
+ })), ['custom']));
85
80
  exports.ALL_TYPES = ALL_TYPES;
86
81
  var ALL_STEPS = (0, _lodash["default"])(_colorRanges.COLOR_RANGES.map(function (d) {
87
82
  return d.colors.length;
@@ -143,7 +138,7 @@ function ColorRangeSelectFactory(ColorPaletteGroup, PaletteConfig) {
143
138
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "filteredColorRange", (0, _reselect.createSelector)(_this.colorRangesSelector, _this.configTypeSelector, _this.configStepSelector, function (colorRanges, type, steps) {
144
139
  return colorRanges.filter(function (colorRange) {
145
140
  var isType = type === 'all' || type === colorRange.type;
146
- var isStep = Number(steps || 6) === colorRange.colors.length;
141
+ var isStep = Number(steps) === colorRange.colors.length;
147
142
  return isType && isStep;
148
143
  });
149
144
  }));
@@ -152,8 +147,7 @@ function ColorRangeSelectFactory(ColorPaletteGroup, PaletteConfig) {
152
147
  value = _ref.value;
153
148
 
154
149
  _this._setColorRangeConfig(_objectSpread((0, _defineProperty2["default"])({}, key, value), key === 'type' && {
155
- custom: value === 'custom',
156
- hexColumn: value === _colorRanges.hexColor
150
+ custom: value === 'custom'
157
151
  }));
158
152
  });
159
153
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSetCustomPalette", function (config) {
@@ -161,11 +155,6 @@ function ColorRangeSelectFactory(ColorPaletteGroup, PaletteConfig) {
161
155
  customPalette: config
162
156
  });
163
157
  });
164
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSetHexColorColumn", function (config) {
165
- _this.props.setColorPaletteUI({
166
- customPalette: config
167
- });
168
- });
169
158
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_setColorRangeConfig", function (newConfig) {
170
159
  _this.props.setColorPaletteUI({
171
160
  colorRangeConfig: newConfig
@@ -175,8 +164,7 @@ function ColorRangeSelectFactory(ColorPaletteGroup, PaletteConfig) {
175
164
  _this.props.setColorPaletteUI({
176
165
  showSketcher: false,
177
166
  colorRangeConfig: {
178
- custom: false,
179
- hexColumn: false
167
+ custom: false
180
168
  }
181
169
  });
182
170
  });
@@ -185,23 +173,6 @@ function ColorRangeSelectFactory(ColorPaletteGroup, PaletteConfig) {
185
173
  showSketcher: val
186
174
  });
187
175
  });
188
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSelectColumn", function (column) {
189
- _this.props.onSelectColorColumn(column);
190
-
191
- _this._setColorRangeConfig({
192
- type: _colorRanges.hexColor,
193
- hexColumn: column === null || column === void 0 ? void 0 : column.name
194
- });
195
- });
196
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleOnChangePaletteType", function (_ref2) {
197
- var key = _ref2.key,
198
- value = _ref2.value;
199
-
200
- _this._updateConfig({
201
- key: key,
202
- value: value
203
- });
204
- });
205
176
  return _this;
206
177
  }
207
178
 
@@ -218,15 +189,15 @@ function ColorRangeSelectFactory(ColorPaletteGroup, PaletteConfig) {
218
189
  return /*#__PURE__*/_react["default"].createElement(StyledColorRangeSelector, null, /*#__PURE__*/_react["default"].createElement(StyledColorConfig, {
219
190
  className: "color-range-selector__config"
220
191
  }, Object.keys(colorRangeConfig).filter(function (key) {
221
- return Boolean(CONFIG_SETTINGS[key]) && (colorRangeConfig.custom || colorRangeConfig.hexColumn ? key === 'type' : true);
192
+ return Boolean(CONFIG_SETTINGS[key]) && (colorRangeConfig.custom ? key === 'type' : true);
222
193
  }).map(function (key) {
223
194
  return /*#__PURE__*/_react["default"].createElement(PaletteConfig, {
224
195
  key: key,
225
196
  label: CONFIG_SETTINGS[key].label || key,
226
197
  config: CONFIG_SETTINGS[key],
227
- value: colorRangeConfig[key] || 6,
198
+ value: colorRangeConfig[key],
228
199
  onChange: function onChange(value) {
229
- return _this2._handleOnChangePaletteType({
200
+ return _this2._updateConfig({
230
201
  key: key,
231
202
  value: value
232
203
  });
@@ -240,10 +211,6 @@ function ColorRangeSelectFactory(ColorPaletteGroup, PaletteConfig) {
240
211
  onToggleSketcher: this._onToggleSketcher,
241
212
  setCustomPalette: this._onSetCustomPalette,
242
213
  onCancel: this._onCustomPaletteCancel
243
- }) : colorRangeConfig.hexColumn ? /*#__PURE__*/_react["default"].createElement(_hexColumnConfig["default"], {
244
- fields: this.props.fields,
245
- value: colorRangeConfig.hexColumn,
246
- onSelectColumn: this._onSelectColumn
247
214
  }) : /*#__PURE__*/_react["default"].createElement(ColorPaletteGroup, {
248
215
  colorRanges: filteredColorRanges,
249
216
  onSelect: this.props.onSelectColorRange,
@@ -262,11 +229,9 @@ function ColorRangeSelectFactory(ColorPaletteGroup, PaletteConfig) {
262
229
  }(_react.Component);
263
230
 
264
231
  (0, _defineProperty2["default"])(ColorRangeSelect, "propTypes", {
265
- fields: _propTypes["default"].arrayOf(_propTypes["default"].any),
266
232
  colorPaletteUI: _propTypes["default"].object.isRequired,
267
233
  selectedColorRange: _propTypes["default"].object.isRequired,
268
234
  onSelectColorRange: _propTypes["default"].func.isRequired,
269
- onSelectColorColumn: _propTypes["default"].func.isRequired,
270
235
  setColorPaletteUI: _propTypes["default"].func.isRequired,
271
236
  // optional
272
237
  colorRanges: _propTypes["default"].arrayOf(_propTypes["default"].any)
@@ -402,4 +367,4 @@ function ColorPaletteGroupFactory() {
402
367
 
403
368
  return ColorPaletteGroup;
404
369
  }
405
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3ItcmFuZ2Utc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiQUxMX1RZUEVTIiwiQ09MT1JfUkFOR0VTIiwibWFwIiwiYyIsInR5cGUiLCJmaWx0ZXIiLCJjdHlwZSIsInZhbHVlIiwiaGV4Q29sb3IiLCJkaXZpZGVyIiwiQUxMX1NURVBTIiwiZCIsImNvbG9ycyIsImxlbmd0aCIsInNvcnQiLCJudW1iZXJTb3J0IiwiU3R5bGVkQ29sb3JDb25maWciLCJzdHlsZWQiLCJkaXYiLCJTdHlsZWRDb2xvclJhbmdlU2VsZWN0b3IiLCJhdHRycyIsImNsYXNzTmFtZSIsIlN0eWxlZFBhbGV0dGVDb25maWciLCJwcm9wcyIsInRoZW1lIiwic2Vjb25kYXJ5SW5wdXQiLCJDT05GSUdfU0VUVElOR1NfQ1VTVE9NX1JFVkVSU0VEX0JVVFRPTl9UWVBFIiwiQ09ORklHX1NFVFRJTkdTIiwib3B0aW9ucyIsInN0ZXBzIiwicmV2ZXJzZWQiLCJDb2xvclJhbmdlU2VsZWN0RmFjdG9yeSIsImRlcHMiLCJDb2xvclBhbGV0dGVHcm91cEZhY3RvcnkiLCJQYWxldHRlQ29uZmlnRmFjdG9yeSIsIkNvbG9yUGFsZXR0ZUdyb3VwIiwiUGFsZXR0ZUNvbmZpZyIsIkNvbG9yUmFuZ2VTZWxlY3QiLCJjb2xvclJhbmdlcyIsImNvbG9yUGFsZXR0ZVVJIiwiY29sb3JSYW5nZUNvbmZpZyIsImNvbG9yUmFuZ2VzU2VsZWN0b3IiLCJjb25maWdUeXBlU2VsZWN0b3IiLCJjb25maWdTdGVwU2VsZWN0b3IiLCJjb2xvclJhbmdlIiwiaXNUeXBlIiwiaXNTdGVwIiwiTnVtYmVyIiwia2V5IiwiX3NldENvbG9yUmFuZ2VDb25maWciLCJjdXN0b20iLCJoZXhDb2x1bW4iLCJjb25maWciLCJzZXRDb2xvclBhbGV0dGVVSSIsImN1c3RvbVBhbGV0dGUiLCJuZXdDb25maWciLCJzaG93U2tldGNoZXIiLCJ2YWwiLCJjb2x1bW4iLCJvblNlbGVjdENvbG9yQ29sdW1uIiwibmFtZSIsIl91cGRhdGVDb25maWciLCJmaWx0ZXJlZENvbG9yUmFuZ2VzIiwiZmlsdGVyZWRDb2xvclJhbmdlIiwiT2JqZWN0Iiwia2V5cyIsIkJvb2xlYW4iLCJsYWJlbCIsIl9oYW5kbGVPbkNoYW5nZVBhbGV0dGVUeXBlIiwic2VsZWN0ZWRDb2xvclJhbmdlIiwib25TZWxlY3RDb2xvclJhbmdlIiwiX29uVG9nZ2xlU2tldGNoZXIiLCJfb25TZXRDdXN0b21QYWxldHRlIiwiX29uQ3VzdG9tUGFsZXR0ZUNhbmNlbCIsImZpZWxkcyIsIl9vblNlbGVjdENvbHVtbiIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsImFycmF5T2YiLCJhbnkiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiZnVuYyIsIm9uQ2hhbmdlIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsImxpbmsiLCJTdHlsZWRDb2xvclJhbmdlIiwicGFuZWxCYWNrZ3JvdW5kSG92ZXIiLCJvblNlbGVjdCIsInNlbGVjdGVkIiwidGl0bGUiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUcseUJBQ3ZCLEtBRHVCLDZDQUVwQkMsMEJBQWFDLEdBQWIsQ0FBaUIsVUFBQUMsQ0FBQztBQUFBLFNBQUlBLENBQUMsQ0FBQ0MsSUFBTjtBQUFBLENBQWxCLEVBQThCQyxNQUE5QixDQUFxQyxVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSjtBQUFBLENBQTFDLENBRm9CLElBR3ZCLFFBSHVCLEVBSXZCO0FBQUNDLEVBQUFBLEtBQUssRUFBRUMscUJBQVI7QUFBa0JDLEVBQUFBLE9BQU8sRUFBRTtBQUEzQixDQUp1QixHQUFsQjs7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UCw0QkFDRTtBQUFLLFVBQUEsU0FBUyxFQUFDO0FBQWYsV0FDR0EsS0FBSyxJQUFJQSxLQURaLEVBRUdyRCxXQUFXLENBQUNwQyxHQUFaLENBQWdCLFVBQUMwQyxVQUFELEVBQWFnRCxDQUFiO0FBQUEsOEJBQ2YsZ0NBQUMsZ0JBQUQ7QUFDRSxZQUFBLEdBQUcsWUFBS2hELFVBQVUsQ0FBQ2dCLElBQWhCLGNBQXdCZ0MsQ0FBeEIsQ0FETDtBQUVFLFlBQUEsT0FBTyxFQUFFLGlCQUFBUixDQUFDO0FBQUEscUJBQ1JLLFFBQVEsQ0FBQzNELFFBQVEsR0FBRyxtQ0FBa0IsSUFBbEIsRUFBd0JjLFVBQXhCLENBQUgsR0FBeUNBLFVBQWxELEVBQThEd0MsQ0FBOUQsQ0FEQTtBQUFBO0FBRlosMEJBTUUsZ0NBQUMsd0JBQUQ7QUFDRSxZQUFBLE1BQU0sRUFBRXhDLFVBQVUsQ0FBQ2hDLE1BRHJCO0FBRUUsWUFBQSxVQUFVLEVBQUVrQixRQUZkO0FBR0UsWUFBQSxVQUFVLEVBQUVjLFVBQVUsQ0FBQ2dCLElBQVgsS0FBb0I4QixRQUFRLENBQUM5QixJQUgzQztBQUlFLFlBQUEsU0FBUyxFQUFFO0FBQ1QsMEJBQVksSUFESDtBQUVULGdEQUEyQmdDLENBQTNCO0FBRlM7QUFKYiwwQkFTRSxnQ0FBQywwQkFBRDtBQUFTLFlBQUEsRUFBRSx3QkFBaUJBLENBQWpCLGFBQVg7QUFBeUMsWUFBQSxNQUFNLEVBQUMsT0FBaEQ7QUFBd0QsWUFBQSxLQUFLLEVBQUM7QUFBOUQsYUFDR2hELFVBQVUsQ0FBQ2dCLElBRGQsQ0FURixDQU5GLENBRGU7QUFBQSxTQUFoQixDQUZILENBREY7QUEyQkQ7QUEvQnNDO0FBQUE7QUFBQSxJQUNUZ0IsZ0JBRFM7O0FBaUN6QyxTQUFPekMsaUJBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC51bmlxJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuXG5pbXBvcnQgSXRlbVNlbGVjdG9yIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2l0ZW0tc2VsZWN0b3IvaXRlbS1zZWxlY3Rvcic7XG5pbXBvcnQge1BhbmVsTGFiZWwsIEJ1dHRvbiwgVG9vbHRpcH0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFN3aXRjaCBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zd2l0Y2gnO1xuaW1wb3J0IENvbG9yUGFsZXR0ZSBmcm9tICcuL2NvbG9yLXBhbGV0dGUnO1xuaW1wb3J0IEN1c3RvbVBhbGV0dGUgZnJvbSAnLi9jdXN0b20tcGFsZXR0ZSc7XG5pbXBvcnQge0NPTE9SX1JBTkdFUywgaGV4Q29sb3J9IGZyb20gJ2NvbnN0YW50cy9jb2xvci1yYW5nZXMnO1xuaW1wb3J0IHtudW1iZXJTb3J0fSBmcm9tICd1dGlscy9kYXRhLXV0aWxzJztcbmltcG9ydCB7cmV2ZXJzZUNvbG9yUmFuZ2V9IGZyb20gJ3V0aWxzL2NvbG9yLXV0aWxzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnbG9jYWxpemF0aW9uJztcbmltcG9ydCB7U3dhcEhvcml6b250YWx9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCBIZXhDb2x1bW5Db25maWcgZnJvbSAnLi9oZXgtY29sdW1uLWNvbmZpZyc7XG5cbmV4cG9ydCBjb25zdCBBTExfVFlQRVMgPSB1bmlxKFtcbiAgJ2FsbCcsXG4gIC4uLkNPTE9SX1JBTkdFUy5tYXAoYyA9PiBjLnR5cGUpLmZpbHRlcihjdHlwZSA9PiBjdHlwZSksXG4gICdjdXN0b20nLFxuICB7dmFsdWU6IGhleENvbG9yLCBkaXZpZGVyOiB0cnVlfVxuXSk7XG5cbmV4cG9ydCBjb25zdCBBTExfU1RFUFMgPSB1bmlxKENPTE9SX1JBTkdFUy5tYXAoZCA9PiBkLmNvbG9ycy5sZW5ndGgpKS5zb3J0KG51bWJlclNvcnQpO1xuXG5jb25zdCBTdHlsZWRDb2xvckNvbmZpZyA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmc6IDEycHggMTJweCAwIDEycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRDb2xvclJhbmdlU2VsZWN0b3IgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnY29sb3ItcmFuZ2Utc2VsZWN0b3InXG59KWBcbiAgcGFkZGluZy1ib3R0b206IDEycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRQYWxldHRlQ29uZmlnID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC5jb2xvci1wYWxldHRlX19jb25maWdfX2xhYmVsIHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gIH1cbiAgLmNvbG9yLXBhbGV0dGVfX2NvbmZpZ19fc2VsZWN0IHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gIH1cbiAgLml0ZW0tc2VsZWN0b3IgLml0ZW0tc2VsZWN0b3JfX2Ryb3Bkb3duIHtcbiAgICAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0fTtcbiAgfVxuICAuY29sb3ItcGFsZXR0ZV9fY29uZmlnX19idXR0b24ge1xuICAgIHN2ZyB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBDT05GSUdfU0VUVElOR1NfQ1VTVE9NX1JFVkVSU0VEX0JVVFRPTl9UWVBFID0gJ2N1c3RvbS1yZXZlcnNlZC1idXR0b24nO1xuXG5jb25zdCBDT05GSUdfU0VUVElOR1MgPSB7XG4gIHR5cGU6IHtcbiAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICBvcHRpb25zOiBBTExfVFlQRVNcbiAgfSxcbiAgc3RlcHM6IHtcbiAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICBvcHRpb25zOiBBTExfU1RFUFNcbiAgfSxcbiAgcmV2ZXJzZWQ6IHtcbiAgICB0eXBlOiBDT05GSUdfU0VUVElOR1NfQ1VTVE9NX1JFVkVSU0VEX0JVVFRPTl9UWVBFLFxuICAgIG9wdGlvbnM6IFt0cnVlLCBmYWxzZV1cbiAgfVxufTtcblxuQ29sb3JSYW5nZVNlbGVjdEZhY3RvcnkuZGVwcyA9IFtDb2xvclBhbGV0dGVHcm91cEZhY3RvcnksIFBhbGV0dGVDb25maWdGYWN0b3J5XTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvbG9yUmFuZ2VTZWxlY3RGYWN0b3J5KENvbG9yUGFsZXR0ZUdyb3VwLCBQYWxldHRlQ29uZmlnKSB7XG4gIGNsYXNzIENvbG9yUmFuZ2VTZWxlY3QgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICBmaWVsZHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgICAgY29sb3JQYWxldHRlVUk6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIHNlbGVjdGVkQ29sb3JSYW5nZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgb25TZWxlY3RDb2xvclJhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgb25TZWxlY3RDb2xvckNvbHVtbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHNldENvbG9yUGFsZXR0ZVVJOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgLy8gb3B0aW9uYWxcbiAgICAgIGNvbG9yUmFuZ2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KVxuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgY29sb3JSYW5nZXM6IENPTE9SX1JBTkdFUyxcbiAgICAgIG9uU2VsZWN0Q29sb3JSYW5nZTogKCkgPT4ge30sXG4gICAgICBzZXRDb2xvclBhbGV0dGVVSTogKCkgPT4ge31cbiAgICB9O1xuXG4gICAgY29sb3JSYW5nZXNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmNvbG9yUmFuZ2VzO1xuICAgIGNvbmZpZ1R5cGVTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmNvbG9yUGFsZXR0ZVVJLmNvbG9yUmFuZ2VDb25maWcudHlwZTtcbiAgICBjb25maWdTdGVwU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5jb2xvclBhbGV0dGVVSS5jb2xvclJhbmdlQ29uZmlnLnN0ZXBzO1xuICAgIGZpbHRlcmVkQ29sb3JSYW5nZSA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5jb2xvclJhbmdlc1NlbGVjdG9yLFxuICAgICAgdGhpcy5jb25maWdUeXBlU2VsZWN0b3IsXG4gICAgICB0aGlzLmNvbmZpZ1N0ZXBTZWxlY3RvcixcbiAgICAgIChjb2xvclJhbmdlcywgdHlwZSwgc3RlcHMpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbG9yUmFuZ2VzLmZpbHRlcihjb2xvclJhbmdlID0+IHtcbiAgICAgICAgICBjb25zdCBpc1R5cGUgPSB0eXBlID09PSAnYWxsJyB8fCB0eXBlID09PSBjb2xvclJhbmdlLnR5cGU7XG4gICAgICAgICAgY29uc3QgaXNTdGVwID0gTnVtYmVyKHN0ZXBzIHx8IDYpID09PSBjb2xvclJhbmdlLmNvbG9ycy5sZW5ndGg7XG5cbiAgICAgICAgICByZXR1cm4gaXNUeXBlICYmIGlzU3RlcDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIF91cGRhdGVDb25maWcgPSAoe2tleSwgdmFsdWV9KSA9PiB7XG4gICAgICB0aGlzLl9zZXRDb2xvclJhbmdlQ29uZmlnKHtcbiAgICAgICAgW2tleV06IHZhbHVlLFxuICAgICAgICAuLi4oa2V5ID09PSAndHlwZScgJiYge2N1c3RvbTogdmFsdWUgPT09ICdjdXN0b20nLCBoZXhDb2x1bW46IHZhbHVlID09PSBoZXhDb2xvcn0pXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX29uU2V0Q3VzdG9tUGFsZXR0ZSA9IGNvbmZpZyA9PiB7XG4gICAgICB0aGlzLnByb3BzLnNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgY3VzdG9tUGFsZXR0ZTogY29uZmlnXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX29uU2V0SGV4Q29sb3JDb2x1bW4gPSBjb25maWcgPT4ge1xuICAgICAgdGhpcy5wcm9wcy5zZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgIGN1c3RvbVBhbGV0dGU6IGNvbmZpZ1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIF9zZXRDb2xvclJhbmdlQ29uZmlnID0gbmV3Q29uZmlnID0+IHtcbiAgICAgIHRoaXMucHJvcHMuc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiBuZXdDb25maWdcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfb25DdXN0b21QYWxldHRlQ2FuY2VsID0gbmV3Q29uZmlnID0+IHtcbiAgICAgIHRoaXMucHJvcHMuc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICBzaG93U2tldGNoZXI6IGZhbHNlLFxuICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiB7Y3VzdG9tOiBmYWxzZSwgaGV4Q29sdW1uOiBmYWxzZX1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfb25Ub2dnbGVTa2V0Y2hlciA9IHZhbCA9PiB7XG4gICAgICB0aGlzLnByb3BzLnNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgc2hvd1NrZXRjaGVyOiB2YWxcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfb25TZWxlY3RDb2x1bW4gPSBjb2x1bW4gPT4ge1xuICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdENvbG9yQ29sdW1uKGNvbHVtbik7XG4gICAgICB0aGlzLl9zZXRDb2xvclJhbmdlQ29uZmlnKHtcbiAgICAgICAgdHlwZTogaGV4Q29sb3IsXG4gICAgICAgIGhleENvbHVtbjogY29sdW1uPy5uYW1lXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX2hhbmRsZU9uQ2hhbmdlUGFsZXR0ZVR5cGUgPSAoe2tleSwgdmFsdWV9KSA9PiB7XG4gICAgICB0aGlzLl91cGRhdGVDb25maWcoe2tleSwgdmFsdWV9KTtcbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2N1c3RvbVBhbGV0dGUsIHNob3dTa2V0Y2hlciwgY29sb3JSYW5nZUNvbmZpZ30gPSB0aGlzLnByb3BzLmNvbG9yUGFsZXR0ZVVJO1xuICAgICAgY29uc3QgZmlsdGVyZWRDb2xvclJhbmdlcyA9IHRoaXMuZmlsdGVyZWRDb2xvclJhbmdlKHRoaXMucHJvcHMpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkQ29sb3JSYW5nZVNlbGVjdG9yPlxuICAgICAgICAgIDxTdHlsZWRDb2xvckNvbmZpZyBjbGFzc05hbWU9XCJjb2xvci1yYW5nZS1zZWxlY3Rvcl9fY29uZmlnXCI+XG4gICAgICAgICAgICB7T2JqZWN0LmtleXMoY29sb3JSYW5nZUNvbmZpZylcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICBrZXkgPT5cbiAgICAgICAgICAgICAgICAgIEJvb2xlYW4oQ09ORklHX1NFVFRJTkdTW2tleV0pICYmXG4gICAgICAgICAgICAgICAgICAoY29sb3JSYW5nZUNvbmZpZy5jdXN0b20gfHwgY29sb3JSYW5nZUNvbmZpZy5oZXhDb2x1bW4gPyBrZXkgPT09ICd0eXBlJyA6IHRydWUpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8UGFsZXR0ZUNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9e0NPTkZJR19TRVRUSU5HU1trZXldLmxhYmVsIHx8IGtleX1cbiAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtDT05GSUdfU0VUVElOR1Nba2V5XX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbG9yUmFuZ2VDb25maWdba2V5XSB8fCA2fVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gdGhpcy5faGFuZGxlT25DaGFuZ2VQYWxldHRlVHlwZSh7a2V5LCB2YWx1ZX0pfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1N0eWxlZENvbG9yQ29uZmlnPlxuXG4gICAgICAgICAge2NvbG9yUmFuZ2VDb25maWcuY3VzdG9tID8gKFxuICAgICAgICAgICAgPEN1c3RvbVBhbGV0dGVcbiAgICAgICAgICAgICAgY3VzdG9tUGFsZXR0ZT17Y3VzdG9tUGFsZXR0ZX1cbiAgICAgICAgICAgICAgc2hvd1NrZXRjaGVyPXtzaG93U2tldGNoZXJ9XG4gICAgICAgICAgICAgIHNlbGVjdGVkPXt0aGlzLnByb3BzLnNlbGVjdGVkQ29sb3JSYW5nZX1cbiAgICAgICAgICAgICAgb25BcHBseT17dGhpcy5wcm9wcy5vblNlbGVjdENvbG9yUmFuZ2V9XG4gICAgICAgICAgICAgIG9uVG9nZ2xlU2tldGNoZXI9e3RoaXMuX29uVG9nZ2xlU2tldGNoZXJ9XG4gICAgICAgICAgICAgIHNldEN1c3RvbVBhbGV0dGU9e3RoaXMuX29uU2V0Q3VzdG9tUGFsZXR0ZX1cbiAgICAgICAgICAgICAgb25DYW5jZWw9e3RoaXMuX29uQ3VzdG9tUGFsZXR0ZUNhbmNlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IGNvbG9yUmFuZ2VDb25maWcuaGV4Q29sdW1uID8gKFxuICAgICAgICAgICAgPEhleENvbHVtbkNvbmZpZ1xuICAgICAgICAgICAgICBmaWVsZHM9e3RoaXMucHJvcHMuZmllbGRzfVxuICAgICAgICAgICAgICB2YWx1ZT17Y29sb3JSYW5nZUNvbmZpZy5oZXhDb2x1bW59XG4gICAgICAgICAgICAgIG9uU2VsZWN0Q29sdW1uPXt0aGlzLl9vblNlbGVjdENvbHVtbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxDb2xvclBhbGV0dGVHcm91cFxuICAgICAgICAgICAgICBjb2xvclJhbmdlcz17ZmlsdGVyZWRDb2xvclJhbmdlc31cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3RDb2xvclJhbmdlfVxuICAgICAgICAgICAgICBzZWxlY3RlZD17dGhpcy5wcm9wcy5zZWxlY3RlZENvbG9yUmFuZ2V9XG4gICAgICAgICAgICAgIHJldmVyc2VkPXtjb2xvclJhbmdlQ29uZmlnLnJldmVyc2VkfVxuICAgICAgICAgICAgICBjb25maWdUeXBlU2VsZWN0b3I9eygpID0+IHRoaXMucHJvcHMuY29sb3JQYWxldHRlVUkuY29sb3JSYW5nZUNvbmZpZy50eXBlfVxuICAgICAgICAgICAgICBjb25maWdTdGVwU2VsZWN0b3I9eygpID0+IHRoaXMucHJvcHMuY29sb3JQYWxldHRlVUkuY29sb3JSYW5nZUNvbmZpZy5zdGVwc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TdHlsZWRDb2xvclJhbmdlU2VsZWN0b3I+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBDb2xvclJhbmdlU2VsZWN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUGFsZXR0ZUNvbmZpZ0ZhY3RvcnkoKSB7XG4gIGNsYXNzIFBhbGV0dGVDb25maWcgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBjb25maWc6IHt0eXBlLCBvcHRpb25zfSxcbiAgICAgICAgb25DaGFuZ2VcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkUGFsZXR0ZUNvbmZpZ1xuICAgICAgICAgIGNsYXNzTmFtZT17YGNvbG9yLXBhbGV0dGVfX2NvbmZpZyBjb2xvci1wYWxldHRlX19jb25maWctLSR7bGFiZWx9YH1cbiAgICAgICAgICBvbkNsaWNrPXtlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbG9yLXBhbGV0dGVfX2NvbmZpZ19fbGFiZWxcIj5cbiAgICAgICAgICAgIHt0eXBlICE9PSBDT05GSUdfU0VUVElOR1NfQ1VTVE9NX1JFVkVSU0VEX0JVVFRPTl9UWVBFICYmIChcbiAgICAgICAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e2Bjb2xvci4ke2xhYmVsfWB9IC8+XG4gICAgICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge3R5cGUgPT09ICdzZWxlY3QnICYmIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3ItcGFsZXR0ZV9fY29uZmlnX19zZWxlY3RcIj5cbiAgICAgICAgICAgICAgPEl0ZW1TZWxlY3RvclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3ZhbHVlfVxuICAgICAgICAgICAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgICAgICAgbXVsdGlTZWxlY3Q9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAge3R5cGUgPT09ICdzd2l0Y2gnICYmIChcbiAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgY2hlY2tlZD17dmFsdWV9XG4gICAgICAgICAgICAgIGlkPXtgJHtsYWJlbH0tdG9nZ2xlYH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IG9uQ2hhbmdlKCF2YWx1ZSl9XG4gICAgICAgICAgICAgIHNlY29uZGFyeVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHt0eXBlID09PSBDT05GSUdfU0VUVElOR1NfQ1VTVE9NX1JFVkVSU0VEX0JVVFRPTl9UWVBFICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgY29sb3ItcGFsZXR0ZV9fY29uZmlnX19idXR0b24gJHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA/ICdjb2xvci1wYWxldHRlX19jb25maWdfX2J1dHRvbi0tYWN0aXZlJyA6ICcnXG4gICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICBkYXRhLXRpcFxuICAgICAgICAgICAgICBkYXRhLWZvcj17YCR7bGFiZWx9LXRvb2x0aXBgfVxuICAgICAgICAgICAgICB7Li4uKCF2YWx1ZSAmJiB7bGluazogdHJ1ZX0pfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkNoYW5nZSghdmFsdWUpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3dhcEhvcml6b250YWwgLz5cbiAgICAgICAgICAgICAgPFRvb2x0aXAgaWQ9e2Ake2xhYmVsfS10b29sdGlwYH0gZWZmZWN0PVwic29saWRcIiBwbGFjZT1cInRvcFwiPlxuICAgICAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TdHlsZWRQYWxldHRlQ29uZmlnPlxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFBhbGV0dGVDb25maWc7XG59XG5cbmNvbnN0IFN0eWxlZENvbG9yUmFuZ2UgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnY29sb3ItcGFsZXR0ZS1vdXRlcidcbn0pYFxuICBwYWRkaW5nOiAwIDhweDtcbiAgOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZEhvdmVyfTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbmA7XG5cbmV4cG9ydCBmdW5jdGlvbiBDb2xvclBhbGV0dGVHcm91cEZhY3RvcnkoKSB7XG4gIGNsYXNzIENvbG9yUGFsZXR0ZUdyb3VwIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7cmV2ZXJzZWQsIG9uU2VsZWN0LCBzZWxlY3RlZCwgY29sb3JSYW5nZXMsIHRpdGxlfSA9IHRoaXMucHJvcHM7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbG9yLXBhbGV0dGVfX2dyb3VwXCI+XG4gICAgICAgICAge3RpdGxlICYmIHRpdGxlfVxuICAgICAgICAgIHtjb2xvclJhbmdlcy5tYXAoKGNvbG9yUmFuZ2UsIGkpID0+IChcbiAgICAgICAgICAgIDxTdHlsZWRDb2xvclJhbmdlXG4gICAgICAgICAgICAgIGtleT17YCR7Y29sb3JSYW5nZS5uYW1lfS0ke2l9YH1cbiAgICAgICAgICAgICAgb25DbGljaz17ZSA9PlxuICAgICAgICAgICAgICAgIG9uU2VsZWN0KHJldmVyc2VkID8gcmV2ZXJzZUNvbG9yUmFuZ2UodHJ1ZSwgY29sb3JSYW5nZSkgOiBjb2xvclJhbmdlLCBlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxDb2xvclBhbGV0dGVcbiAgICAgICAgICAgICAgICBjb2xvcnM9e2NvbG9yUmFuZ2UuY29sb3JzfVxuICAgICAgICAgICAgICAgIGlzUmV2ZXJzZWQ9e3JldmVyc2VkfVxuICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e2NvbG9yUmFuZ2UubmFtZSA9PT0gc2VsZWN0ZWQubmFtZX1cbiAgICAgICAgICAgICAgICByb290UHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICdkYXRhLXRpcCc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAnZGF0YS1mb3InOiBgY29sb3ItcmFuZ2UtJHtpfS10b29sdGlwYFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VG9vbHRpcCBpZD17YGNvbG9yLXJhbmdlLSR7aX0tdG9vbHRpcGB9IGVmZmVjdD1cInNvbGlkXCIgcGxhY2U9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgIHtjb2xvclJhbmdlLm5hbWV9XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICA8L0NvbG9yUGFsZXR0ZT5cbiAgICAgICAgICAgIDwvU3R5bGVkQ29sb3JSYW5nZT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gQ29sb3JQYWxldHRlR3JvdXA7XG59XG4iXX0=
370
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3ItcmFuZ2Utc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiQUxMX1RZUEVTIiwiQ09MT1JfUkFOR0VTIiwibWFwIiwiYyIsInR5cGUiLCJmaWx0ZXIiLCJjdHlwZSIsIkFMTF9TVEVQUyIsImQiLCJjb2xvcnMiLCJsZW5ndGgiLCJzb3J0IiwibnVtYmVyU29ydCIsIlN0eWxlZENvbG9yQ29uZmlnIiwic3R5bGVkIiwiZGl2IiwiU3R5bGVkQ29sb3JSYW5nZVNlbGVjdG9yIiwiYXR0cnMiLCJjbGFzc05hbWUiLCJTdHlsZWRQYWxldHRlQ29uZmlnIiwicHJvcHMiLCJ0aGVtZSIsInNlY29uZGFyeUlucHV0IiwiQ09ORklHX1NFVFRJTkdTX0NVU1RPTV9SRVZFUlNFRF9CVVRUT05fVFlQRSIsIkNPTkZJR19TRVRUSU5HUyIsIm9wdGlvbnMiLCJzdGVwcyIsInJldmVyc2VkIiwiQ29sb3JSYW5nZVNlbGVjdEZhY3RvcnkiLCJkZXBzIiwiQ29sb3JQYWxldHRlR3JvdXBGYWN0b3J5IiwiUGFsZXR0ZUNvbmZpZ0ZhY3RvcnkiLCJDb2xvclBhbGV0dGVHcm91cCIsIlBhbGV0dGVDb25maWciLCJDb2xvclJhbmdlU2VsZWN0IiwiY29sb3JSYW5nZXMiLCJjb2xvclBhbGV0dGVVSSIsImNvbG9yUmFuZ2VDb25maWciLCJjb2xvclJhbmdlc1NlbGVjdG9yIiwiY29uZmlnVHlwZVNlbGVjdG9yIiwiY29uZmlnU3RlcFNlbGVjdG9yIiwiY29sb3JSYW5nZSIsImlzVHlwZSIsImlzU3RlcCIsIk51bWJlciIsImtleSIsInZhbHVlIiwiX3NldENvbG9yUmFuZ2VDb25maWciLCJjdXN0b20iLCJjb25maWciLCJzZXRDb2xvclBhbGV0dGVVSSIsImN1c3RvbVBhbGV0dGUiLCJuZXdDb25maWciLCJzaG93U2tldGNoZXIiLCJ2YWwiLCJmaWx0ZXJlZENvbG9yUmFuZ2VzIiwiZmlsdGVyZWRDb2xvclJhbmdlIiwiT2JqZWN0Iiwia2V5cyIsIkJvb2xlYW4iLCJsYWJlbCIsIl91cGRhdGVDb25maWciLCJzZWxlY3RlZENvbG9yUmFuZ2UiLCJvblNlbGVjdENvbG9yUmFuZ2UiLCJfb25Ub2dnbGVTa2V0Y2hlciIsIl9vblNldEN1c3RvbVBhbGV0dGUiLCJfb25DdXN0b21QYWxldHRlQ2FuY2VsIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJhcnJheU9mIiwiYW55Iiwib25DaGFuZ2UiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwibGluayIsIlN0eWxlZENvbG9yUmFuZ2UiLCJwYW5lbEJhY2tncm91bmRIb3ZlciIsIm9uU2VsZWN0Iiwic2VsZWN0ZWQiLCJ0aXRsZSIsImkiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUcseUJBQ3ZCLEtBRHVCLDZDQUVwQkMsMEJBQWFDLEdBQWIsQ0FBaUIsVUFBQUMsQ0FBQztBQUFBLFNBQUlBLENBQUMsQ0FBQ0MsSUFBTjtBQUFBLENBQWxCLEVBQThCQyxNQUE5QixDQUFxQyxVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSjtBQUFBLENBQTFDLENBRm9CLElBR3ZCLFFBSHVCLEdBQWxCOztBQU1BLElBQU1DLFNBQVMsR0FBRyx3QkFBS04sMEJBQWFDLEdBQWIsQ0FBaUIsVUFBQU0sQ0FBQztBQUFBLFNBQUlBLENBQUMsQ0FBQ0MsTUFBRixDQUFTQyxNQUFiO0FBQUEsQ0FBbEIsQ0FBTCxFQUE2Q0MsSUFBN0MsQ0FBa0RDLHFCQUFsRCxDQUFsQjs7O0FBRVAsSUFBTUMsaUJBQWlCLEdBQUdDLDZCQUFPQyxHQUFWLHNIQUF2Qjs7QUFJQSxJ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QUFBLHFCQUNSSyxRQUFRLENBQUNyRCxRQUFRLEdBQUcsbUNBQWtCLElBQWxCLEVBQXdCYyxVQUF4QixDQUFILEdBQXlDQSxVQUFsRCxFQUE4RGtDLENBQTlELENBREE7QUFBQTtBQUZaLDBCQU1FLGdDQUFDLHdCQUFEO0FBQ0UsWUFBQSxNQUFNLEVBQUVsQyxVQUFVLENBQUNoQyxNQURyQjtBQUVFLFlBQUEsVUFBVSxFQUFFa0IsUUFGZDtBQUdFLFlBQUEsVUFBVSxFQUFFYyxVQUFVLENBQUMyQyxJQUFYLEtBQW9CSCxRQUFRLENBQUNHLElBSDNDO0FBSUUsWUFBQSxTQUFTLEVBQUU7QUFDVCwwQkFBWSxJQURIO0FBRVQsZ0RBQTJCRCxDQUEzQjtBQUZTO0FBSmIsMEJBU0UsZ0NBQUMsMEJBQUQ7QUFBUyxZQUFBLEVBQUUsd0JBQWlCQSxDQUFqQixhQUFYO0FBQXlDLFlBQUEsTUFBTSxFQUFDLE9BQWhEO0FBQXdELFlBQUEsS0FBSyxFQUFDO0FBQTlELGFBQ0cxQyxVQUFVLENBQUMyQyxJQURkLENBVEYsQ0FORixDQURlO0FBQUEsU0FBaEIsQ0FGSCxDQURGO0FBMkJEO0FBL0JzQztBQUFBO0FBQUEsSUFDVGpCLGdCQURTOztBQWlDekMsU0FBT25DLGlCQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gudW5pcSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcblxuaW1wb3J0IEl0ZW1TZWxlY3RvciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3InO1xuaW1wb3J0IHtQYW5lbExhYmVsLCBCdXR0b24sIFRvb2x0aXB9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBTd2l0Y2ggZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3dpdGNoJztcbmltcG9ydCBDb2xvclBhbGV0dGUgZnJvbSAnLi9jb2xvci1wYWxldHRlJztcbmltcG9ydCBDdXN0b21QYWxldHRlIGZyb20gJy4vY3VzdG9tLXBhbGV0dGUnO1xuaW1wb3J0IHtDT0xPUl9SQU5HRVN9IGZyb20gJ2NvbnN0YW50cy9jb2xvci1yYW5nZXMnO1xuaW1wb3J0IHtudW1iZXJTb3J0fSBmcm9tICd1dGlscy9kYXRhLXV0aWxzJztcbmltcG9ydCB7cmV2ZXJzZUNvbG9yUmFuZ2V9IGZyb20gJ3V0aWxzL2NvbG9yLXV0aWxzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnbG9jYWxpemF0aW9uJztcbmltcG9ydCB7U3dhcEhvcml6b250YWx9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcblxuZXhwb3J0IGNvbnN0IEFMTF9UWVBFUyA9IHVuaXEoW1xuICAnYWxsJyxcbiAgLi4uQ09MT1JfUkFOR0VTLm1hcChjID0+IGMudHlwZSkuZmlsdGVyKGN0eXBlID0+IGN0eXBlKSxcbiAgJ2N1c3RvbSdcbl0pO1xuXG5leHBvcnQgY29uc3QgQUxMX1NURVBTID0gdW5pcShDT0xPUl9SQU5HRVMubWFwKGQgPT4gZC5jb2xvcnMubGVuZ3RoKSkuc29ydChudW1iZXJTb3J0KTtcblxuY29uc3QgU3R5bGVkQ29sb3JDb25maWcgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAxMnB4IDEycHggMCAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkQ29sb3JSYW5nZVNlbGVjdG9yID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2NvbG9yLXJhbmdlLXNlbGVjdG9yJ1xufSlgXG4gIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkUGFsZXR0ZUNvbmZpZyA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1ib3R0b206IDhweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAuY29sb3ItcGFsZXR0ZV9fY29uZmlnX19sYWJlbCB7XG4gICAgZmxleC1ncm93OiAxO1xuICB9XG4gIC5jb2xvci1wYWxldHRlX19jb25maWdfX3NlbGVjdCB7XG4gICAgZmxleC1ncm93OiAxO1xuICB9XG4gIC5pdGVtLXNlbGVjdG9yIC5pdGVtLXNlbGVjdG9yX19kcm9wZG93biB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zZWNvbmRhcnlJbnB1dH07XG4gIH1cbiAgLmNvbG9yLXBhbGV0dGVfX2NvbmZpZ19fYnV0dG9uIHtcbiAgICBzdmcge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgQ09ORklHX1NFVFRJTkdTX0NVU1RPTV9SRVZFUlNFRF9CVVRUT05fVFlQRSA9ICdjdXN0b20tcmV2ZXJzZWQtYnV0dG9uJztcblxuY29uc3QgQ09ORklHX1NFVFRJTkdTID0ge1xuICB0eXBlOiB7XG4gICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgb3B0aW9uczogQUxMX1RZUEVTXG4gIH0sXG4gIHN0ZXBzOiB7XG4gICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgb3B0aW9uczogQUxMX1NURVBTXG4gIH0sXG4gIHJldmVyc2VkOiB7XG4gICAgdHlwZTogQ09ORklHX1NFVFRJTkdTX0NVU1RPTV9SRVZFUlNFRF9CVVRUT05fVFlQRSxcbiAgICBvcHRpb25zOiBbdHJ1ZSwgZmFsc2VdXG4gIH1cbn07XG5cbkNvbG9yUmFuZ2VTZWxlY3RGYWN0b3J5LmRlcHMgPSBbQ29sb3JQYWxldHRlR3JvdXBGYWN0b3J5LCBQYWxldHRlQ29uZmlnRmFjdG9yeV07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2xvclJhbmdlU2VsZWN0RmFjdG9yeShDb2xvclBhbGV0dGVHcm91cCwgUGFsZXR0ZUNvbmZpZykge1xuICBjbGFzcyBDb2xvclJhbmdlU2VsZWN0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgY29sb3JQYWxldHRlVUk6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIHNlbGVjdGVkQ29sb3JSYW5nZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgb25TZWxlY3RDb2xvclJhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgc2V0Q29sb3JQYWxldHRlVUk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAvLyBvcHRpb25hbFxuICAgICAgY29sb3JSYW5nZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpXG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBjb2xvclJhbmdlczogQ09MT1JfUkFOR0VTLFxuICAgICAgb25TZWxlY3RDb2xvclJhbmdlOiAoKSA9PiB7fSxcbiAgICAgIHNldENvbG9yUGFsZXR0ZVVJOiAoKSA9PiB7fVxuICAgIH07XG5cbiAgICBjb2xvclJhbmdlc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMuY29sb3JSYW5nZXM7XG4gICAgY29uZmlnVHlwZVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMuY29sb3JQYWxldHRlVUkuY29sb3JSYW5nZUNvbmZpZy50eXBlO1xuICAgIGNvbmZpZ1N0ZXBTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmNvbG9yUGFsZXR0ZVVJLmNvbG9yUmFuZ2VDb25maWcuc3RlcHM7XG4gICAgZmlsdGVyZWRDb2xvclJhbmdlID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmNvbG9yUmFuZ2VzU2VsZWN0b3IsXG4gICAgICB0aGlzLmNvbmZpZ1R5cGVTZWxlY3RvcixcbiAgICAgIHRoaXMuY29uZmlnU3RlcFNlbGVjdG9yLFxuICAgICAgKGNvbG9yUmFuZ2VzLCB0eXBlLCBzdGVwcykgPT4ge1xuICAgICAgICByZXR1cm4gY29sb3JSYW5nZXMuZmlsdGVyKGNvbG9yUmFuZ2UgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzVHlwZSA9IHR5cGUgPT09ICdhbGwnIHx8IHR5cGUgPT09IGNvbG9yUmFuZ2UudHlwZTtcbiAgICAgICAgICBjb25zdCBpc1N0ZXAgPSBOdW1iZXIoc3RlcHMpID09PSBjb2xvclJhbmdlLmNvbG9ycy5sZW5ndGg7XG5cbiAgICAgICAgICByZXR1cm4gaXNUeXBlICYmIGlzU3RlcDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIF91cGRhdGVDb25maWcgPSAoe2tleSwgdmFsdWV9KSA9PiB7XG4gICAgICB0aGlzLl9zZXRDb2xvclJhbmdlQ29uZmlnKHtcbiAgICAgICAgW2tleV06IHZhbHVlLFxuICAgICAgICAuLi4oa2V5ID09PSAndHlwZScgJiYge2N1c3RvbTogdmFsdWUgPT09ICdjdXN0b20nfSlcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfb25TZXRDdXN0b21QYWxldHRlID0gY29uZmlnID0+IHtcbiAgICAgIHRoaXMucHJvcHMuc2V0Q29sb3JQYWxldHRlVUkoe1xuICAgICAgICBjdXN0b21QYWxldHRlOiBjb25maWdcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfc2V0Q29sb3JSYW5nZUNvbmZpZyA9IG5ld0NvbmZpZyA9PiB7XG4gICAgICB0aGlzLnByb3BzLnNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgY29sb3JSYW5nZUNvbmZpZzogbmV3Q29uZmlnXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX29uQ3VzdG9tUGFsZXR0ZUNhbmNlbCA9IG5ld0NvbmZpZyA9PiB7XG4gICAgICB0aGlzLnByb3BzLnNldENvbG9yUGFsZXR0ZVVJKHtcbiAgICAgICAgc2hvd1NrZXRjaGVyOiBmYWxzZSxcbiAgICAgICAgY29sb3JSYW5nZUNvbmZpZzoge2N1c3RvbTogZmFsc2V9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX29uVG9nZ2xlU2tldGNoZXIgPSB2YWwgPT4ge1xuICAgICAgdGhpcy5wcm9wcy5zZXRDb2xvclBhbGV0dGVVSSh7XG4gICAgICAgIHNob3dTa2V0Y2hlcjogdmFsXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2N1c3RvbVBhbGV0dGUsIHNob3dTa2V0Y2hlciwgY29sb3JSYW5nZUNvbmZpZ30gPSB0aGlzLnByb3BzLmNvbG9yUGFsZXR0ZVVJO1xuICAgICAgY29uc3QgZmlsdGVyZWRDb2xvclJhbmdlcyA9IHRoaXMuZmlsdGVyZWRDb2xvclJhbmdlKHRoaXMucHJvcHMpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkQ29sb3JSYW5nZVNlbGVjdG9yPlxuICAgICAgICAgIDxTdHlsZWRDb2xvckNvbmZpZyBjbGFzc05hbWU9XCJjb2xvci1yYW5nZS1zZWxlY3Rvcl9fY29uZmlnXCI+XG4gICAgICAgICAgICB7T2JqZWN0LmtleXMoY29sb3JSYW5nZUNvbmZpZylcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICBrZXkgPT5cbiAgICAgICAgICAgICAgICAgIEJvb2xlYW4oQ09ORklHX1NFVFRJTkdTW2tleV0pICYmIChjb2xvclJhbmdlQ29uZmlnLmN1c3RvbSA/IGtleSA9PT0gJ3R5cGUnIDogdHJ1ZSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAubWFwKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxQYWxldHRlQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgIGtleT17a2V5fVxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17Q09ORklHX1NFVFRJTkdTW2tleV0ubGFiZWwgfHwga2V5fVxuICAgICAgICAgICAgICAgICAgICBjb25maWc9e0NPTkZJR19TRVRUSU5HU1trZXldfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29sb3JSYW5nZUNvbmZpZ1trZXldfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gdGhpcy5fdXBkYXRlQ29uZmlnKHtrZXksIHZhbHVlfSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU3R5bGVkQ29sb3JDb25maWc+XG5cbiAgICAgICAgICB7Y29sb3JSYW5nZUNvbmZpZy5jdXN0b20gPyAoXG4gICAgICAgICAgICA8Q3VzdG9tUGFsZXR0ZVxuICAgICAgICAgICAgICBjdXN0b21QYWxldHRlPXtjdXN0b21QYWxldHRlfVxuICAgICAgICAgICAgICBzaG93U2tldGNoZXI9e3Nob3dTa2V0Y2hlcn1cbiAgICAgICAgICAgICAgc2VsZWN0ZWQ9e3RoaXMucHJvcHMuc2VsZWN0ZWRDb2xvclJhbmdlfVxuICAgICAgICAgICAgICBvbkFwcGx5PXt0aGlzLnByb3BzLm9uU2VsZWN0Q29sb3JSYW5nZX1cbiAgICAgICAgICAgICAgb25Ub2dnbGVTa2V0Y2hlcj17dGhpcy5fb25Ub2dnbGVTa2V0Y2hlcn1cbiAgICAgICAgICAgICAgc2V0Q3VzdG9tUGFsZXR0ZT17dGhpcy5fb25TZXRDdXN0b21QYWxldHRlfVxuICAgICAgICAgICAgICBvbkNhbmNlbD17dGhpcy5fb25DdXN0b21QYWxldHRlQ2FuY2VsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPENvbG9yUGFsZXR0ZUdyb3VwXG4gICAgICAgICAgICAgIGNvbG9yUmFuZ2VzPXtmaWx0ZXJlZENvbG9yUmFuZ2VzfVxuICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdENvbG9yUmFuZ2V9XG4gICAgICAgICAgICAgIHNlbGVjdGVkPXt0aGlzLnByb3BzLnNlbGVjdGVkQ29sb3JSYW5nZX1cbiAgICAgICAgICAgICAgcmV2ZXJzZWQ9e2NvbG9yUmFuZ2VDb25maWcucmV2ZXJzZWR9XG4gICAgICAgICAgICAgIGNvbmZpZ1R5cGVTZWxlY3Rvcj17KCkgPT4gdGhpcy5wcm9wcy5jb2xvclBhbGV0dGVVSS5jb2xvclJhbmdlQ29uZmlnLnR5cGV9XG4gICAgICAgICAgICAgIGNvbmZpZ1N0ZXBTZWxlY3Rvcj17KCkgPT4gdGhpcy5wcm9wcy5jb2xvclBhbGV0dGVVSS5jb2xvclJhbmdlQ29uZmlnLnN0ZXBzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1N0eWxlZENvbG9yUmFuZ2VTZWxlY3Rvcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIENvbG9yUmFuZ2VTZWxlY3Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQYWxldHRlQ29uZmlnRmFjdG9yeSgpIHtcbiAgY2xhc3MgUGFsZXR0ZUNvbmZpZyBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGNvbmZpZzoge3R5cGUsIG9wdGlvbnN9LFxuICAgICAgICBvbkNoYW5nZVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRQYWxldHRlQ29uZmlnXG4gICAgICAgICAgY2xhc3NOYW1lPXtgY29sb3ItcGFsZXR0ZV9fY29uZmlnIGNvbG9yLXBhbGV0dGVfX2NvbmZpZy0tJHtsYWJlbH1gfVxuICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gZS5zdG9wUHJvcGFnYXRpb24oKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3ItcGFsZXR0ZV9fY29uZmlnX19sYWJlbFwiPlxuICAgICAgICAgICAge3R5cGUgIT09IENPTkZJR19TRVRUSU5HU19DVVNUT01fUkVWRVJTRURfQlVUVE9OX1RZUEUgJiYgKFxuICAgICAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17YGNvbG9yLiR7bGFiZWx9YH0gLz5cbiAgICAgICAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7dHlwZSA9PT0gJ3NlbGVjdCcgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xvci1wYWxldHRlX19jb25maWdfX3NlbGVjdFwiPlxuICAgICAgICAgICAgICA8SXRlbVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dmFsdWV9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dHlwZSA9PT0gJ3N3aXRjaCcgJiYgKFxuICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZX1cbiAgICAgICAgICAgICAgaWQ9e2Ake2xhYmVsfS10b2dnbGVgfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gb25DaGFuZ2UoIXZhbHVlKX1cbiAgICAgICAgICAgICAgc2Vjb25kYXJ5XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3R5cGUgPT09IENPTkZJR19TRVRUSU5HU19DVVNUT01fUkVWRVJTRURfQlVUVE9OX1RZUEUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Bjb2xvci1wYWxldHRlX19jb25maWdfX2J1dHRvbiAke1xuICAgICAgICAgICAgICAgIHZhbHVlID8gJ2NvbG9yLXBhbGV0dGVfX2NvbmZpZ19fYnV0dG9uLS1hY3RpdmUnIDogJydcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgIGRhdGEtdGlwXG4gICAgICAgICAgICAgIGRhdGEtZm9yPXtgJHtsYWJlbH0tdG9vbHRpcGB9XG4gICAgICAgICAgICAgIHsuLi4oIXZhbHVlICYmIHtsaW5rOiB0cnVlfSl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2hhbmdlKCF2YWx1ZSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTd2FwSG9yaXpvbnRhbCAvPlxuICAgICAgICAgICAgICA8VG9vbHRpcCBpZD17YCR7bGFiZWx9LXRvb2x0aXBgfSBlZmZlY3Q9XCJzb2xpZFwiIHBsYWNlPVwidG9wXCI+XG4gICAgICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1N0eWxlZFBhbGV0dGVDb25maWc+XG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gUGFsZXR0ZUNvbmZpZztcbn1cblxuY29uc3QgU3R5bGVkQ29sb3JSYW5nZSA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdjb2xvci1wYWxldHRlLW91dGVyJ1xufSlgXG4gIHBhZGRpbmc6IDAgOHB4O1xuICA6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuYDtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbG9yUGFsZXR0ZUdyb3VwRmFjdG9yeSgpIHtcbiAgY2xhc3MgQ29sb3JQYWxldHRlR3JvdXAgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtyZXZlcnNlZCwgb25TZWxlY3QsIHNlbGVjdGVkLCBjb2xvclJhbmdlcywgdGl0bGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3ItcGFsZXR0ZV9fZ3JvdXBcIj5cbiAgICAgICAgICB7dGl0bGUgJiYgdGl0bGV9XG4gICAgICAgICAge2NvbG9yUmFuZ2VzLm1hcCgoY29sb3JSYW5nZSwgaSkgPT4gKFxuICAgICAgICAgICAgPFN0eWxlZENvbG9yUmFuZ2VcbiAgICAgICAgICAgICAga2V5PXtgJHtjb2xvclJhbmdlLm5hbWV9LSR7aX1gfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+XG4gICAgICAgICAgICAgICAgb25TZWxlY3QocmV2ZXJzZWQgPyByZXZlcnNlQ29sb3JSYW5nZSh0cnVlLCBjb2xvclJhbmdlKSA6IGNvbG9yUmFuZ2UsIGUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPENvbG9yUGFsZXR0ZVxuICAgICAgICAgICAgICAgIGNvbG9ycz17Y29sb3JSYW5nZS5jb2xvcnN9XG4gICAgICAgICAgICAgICAgaXNSZXZlcnNlZD17cmV2ZXJzZWR9XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17Y29sb3JSYW5nZS5uYW1lID09PSBzZWxlY3RlZC5uYW1lfVxuICAgICAgICAgICAgICAgIHJvb3RQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgJ2RhdGEtdGlwJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICdkYXRhLWZvcic6IGBjb2xvci1yYW5nZS0ke2l9LXRvb2x0aXBgXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUb29sdGlwIGlkPXtgY29sb3ItcmFuZ2UtJHtpfS10b29sdGlwYH0gZWZmZWN0PVwic29saWRcIiBwbGFjZT1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAge2NvbG9yUmFuZ2UubmFtZX1cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgIDwvQ29sb3JQYWxldHRlPlxuICAgICAgICAgICAgPC9TdHlsZWRDb2xvclJhbmdlPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBDb2xvclBhbGV0dGVHcm91cDtcbn1cbiJdfQ==
@@ -128,9 +128,6 @@ function ColorSelectorFactory(SingleColorPalette, ColorRangeSelector) {
128
128
  _this.props.colorSets[editing].setColor(color);
129
129
  }
130
130
  });
131
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSelectColorColumn", function (column) {
132
- _this.props.onSelectHexColorColumn(column);
133
- });
134
131
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_showDropdown", function (e, i) {
135
132
  e.stopPropagation();
136
133
  e.preventDefault();
@@ -190,9 +187,7 @@ function ColorSelectorFactory(SingleColorPalette, ColorRangeSelector) {
190
187
  }, colorSets[editing].isRange ? /*#__PURE__*/_react["default"].createElement(ColorRangeSelector, {
191
188
  selectedColorRange: colorSets[editing].selectedColor,
192
189
  onSelectColorRange: this._onSelectColor,
193
- onSelectColorColumn: this._onSelectColorColumn,
194
190
  setColorPaletteUI: this.props.setColorUI,
195
- fields: this.props.fields,
196
191
  colorPaletteUI: colorUI
197
192
  }) : /*#__PURE__*/_react["default"].createElement(SingleColorPalette, {
198
193
  selectedColor: (0, _colorUtils.rgbToHex)(colorSets[editing].selectedColor),
@@ -204,7 +199,6 @@ function ColorSelectorFactory(SingleColorPalette, ColorRangeSelector) {
204
199
  }(_react.Component);
205
200
 
206
201
  (0, _defineProperty2["default"])(ColorSelector, "propTypes", {
207
- fields: _propTypes["default"].arrayOf(_propTypes["default"].any),
208
202
  colorSets: _propTypes["default"].arrayOf(_propTypes["default"].shape({
209
203
  selectedColor: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].any), _propTypes["default"].object]),
210
204
  setColor: _propTypes["default"].func.isRequired,
@@ -229,4 +223,4 @@ function ColorSelectorFactory(SingleColorPalette, ColorRangeSelector) {
229
223
 
230
224
  var _default = ColorSelectorFactory;
231
225
  exports["default"] = _default;
232
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3Itc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiQ29sb3JCbG9jayIsInN0eWxlZCIsImRpdiIsInByb3BzIiwiY29sb3IiLCJzbGljZSIsImpvaW4iLCJDb2xvclNlbGVjdG9ySW5wdXQiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0IiwiaW5wdXRCb3hIZWlnaHQiLCJpbnB1dFBsYWNlaG9sZGVyQ29sb3IiLCJJbnB1dEJveENvbnRhaW5lciIsIkNvbG9yU2VsZWN0b3JGYWN0b3J5IiwiZGVwcyIsIlNpbmdsZUNvbG9yUGFsZXR0ZUZhY3RvcnkiLCJDb2xvclJhbmdlU2VsZWN0RmFjdG9yeSIsIlNpbmdsZUNvbG9yUGFsZXR0ZSIsIkNvbG9yUmFuZ2VTZWxlY3RvciIsIkNvbG9yU2VsZWN0b3IiLCJzaG93RHJvcGRvd24iLCJlIiwiY29sb3JVSSIsIk51bWJlciIsImlzSW50ZWdlciIsInNob3dTa2V0Y2hlciIsIl9jbG9zZVBhbmVsRHJvcGRvd24iLCJzdGF0ZSIsIl9nZXRFZGl0aW5nIiwic2V0Q29sb3JVSSIsInNldFN0YXRlIiwic3RvcFByb3BhZ2F0aW9uIiwiZWRpdGluZyIsImNvbG9yU2V0cyIsInNldENvbG9yIiwiY29sdW1uIiwib25TZWxlY3RIZXhDb2xvckNvbHVtbiIsImkiLCJwcmV2ZW50RGVmYXVsdCIsImRpc2FibGVkIiwiY3VycmVudEVkaXRpbmciLCJub2RlIiwibWFwIiwiY1NldCIsIl9zaG93RHJvcGRvd24iLCJpc1JhbmdlIiwic2VsZWN0ZWRDb2xvciIsImNvbG9ycyIsImxhYmVsIiwiX29uU2VsZWN0Q29sb3IiLCJfb25TZWxlY3RDb2xvckNvbHVtbiIsImZpZWxkcyIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsImFycmF5T2YiLCJhbnkiLCJzaGFwZSIsIm9uZU9mVHlwZSIsIm9iamVjdCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwiYm9vbCIsInN0cmluZyIsImN1c3RvbVBhbGV0dGUiLCJudW1iZXIiLCJjb2xvclJhbmdlQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFTyxJQUFNQSxVQUFVLEdBQUdDLDZCQUFPQyxHQUFWLDRLQUlELFVBQUFDLEtBQUs7QUFBQSx1QkFBV0EsS0FBSyxDQUFDQyxLQUFOLENBQVlDLEtBQVosQ0FBa0IsQ0FBbEIsRUFBcUIsQ0FBckIsRUFBd0JDLElBQXhCLENBQTZCLEdBQTdCLENBQVg7QUFBQSxDQUpKLENBQWhCOzs7O0FBT0EsSUFBTUMsa0JBQWtCLEdBQUdOLDZCQUFPQyxHQUFWLG9RQUMzQixVQUFBQyxLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDSyxVQUFOLEtBQXFCLFdBQXJCLEdBQW1DTCxLQUFLLENBQUNNLEtBQU4sQ0FBWUMsY0FBL0MsR0FBZ0VQLEtBQUssQ0FBQ00sS0FBTixDQUFZRSxLQUFqRjtBQUFBLENBRHNCLEVBRW5CLFVBQUFSLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNNLEtBQU4sQ0FBWUcsY0FBaEI7QUFBQSxDQUZjLEVBUWxCLFVBQUFULEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNNLEtBQU4sQ0FBWUkscUJBQWhCO0FBQUEsQ0FSYSxDQUF4Qjs7OztBQVlBLElBQU1DLGlCQUFpQixHQUFHYiw2QkFBT0MsR0FBVixtUkFBdkI7OztBQVlQYSxvQkFBb0IsQ0FBQ0MsSUFBckIsR0FBNEIsQ0FBQ0MsOEJBQUQsRUFBNEJDLDhCQUE1QixDQUE1Qjs7QUFFQSxTQUFTSCxvQkFBVCxDQUE4Qkksa0JBQTlCLEVBQWtEQyxrQkFBbEQsRUFBc0U7QUFBQSxNQUM5REMsYUFEOEQ7QUFBQTs7QUFBQTs7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBLGdHQTJCMUQ7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QlIsc0JBQVVXLE1BQTNCLENBQXBCLENBSFM7QUFJdkJDLE1BQUFBLGdCQUFnQixFQUFFWixzQkFBVUs7QUFKTCxLQUFoQixDQVZRO0FBZ0JqQnBELElBQUFBLFVBQVUsRUFBRStDLHNCQUFVUyxNQWhCTDtBQWlCakJ2QixJQUFBQSxRQUFRLEVBQUVjLHNCQUFVUSxJQWpCSDtBQWtCakJoQyxJQUFBQSxVQUFVLEVBQUV3QixzQkFBVU07QUFsQkwsR0FGK0M7QUFBQSxtQ0FDOUR4QyxhQUQ4RCxrQkF1QjVDO0FBQ3BCYyxJQUFBQSxTQUFTLEVBQUU7QUFEUyxHQXZCNEM7QUFxSXBFLFNBQU8scUNBQWVkLGFBQWYsQ0FBUDtBQUNEOztlQUVjTixvQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge3JnYlRvSGV4fSBmcm9tICd1dGlscy9jb2xvci11dGlscyc7XG5pbXBvcnQgQ29sb3JQYWxldHRlIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9jb2xvci1wYWxldHRlJztcbmltcG9ydCB7U3R5bGVkUGFuZWxEcm9wZG93bn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IG9uQ2xpY2tPdXRzaWRlIGZyb20gJ3JlYWN0LW9uY2xpY2tvdXRzaWRlJztcbmltcG9ydCBTaW5nbGVDb2xvclBhbGV0dGVGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9zaW5nbGUtY29sb3ItcGFsZXR0ZSc7XG5pbXBvcnQgQ29sb3JSYW5nZVNlbGVjdEZhY3RvcnkgZnJvbSAnLi9jb2xvci1yYW5nZS1zZWxlY3Rvcic7XG5cbmV4cG9ydCBjb25zdCBDb2xvckJsb2NrID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDMycHg7XG4gIGhlaWdodDogMThweDtcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IGByZ2IoJHtwcm9wcy5jb2xvci5zbGljZSgwLCAzKS5qb2luKCcsJyl9KWB9O1xuYDtcblxuZXhwb3J0IGNvbnN0IENvbG9yU2VsZWN0b3JJbnB1dCA9IHN0eWxlZC5kaXZgXG4gICR7cHJvcHMgPT4gKHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknID8gcHJvcHMudGhlbWUuc2Vjb25kYXJ5SW5wdXQgOiBwcm9wcy50aGVtZS5pbnB1dCl9O1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRCb3hIZWlnaHR9O1xuXG4gIC5jb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JfX2xhYmVsIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0UGxhY2Vob2xkZXJDb2xvcn07XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBJbnB1dEJveENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAuY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cCB7XG4gICAgZmxleC1ncm93OiAxO1xuICB9XG4gIC5jb2xvci1zZWxlY3RfX2lucHV0LWdyb3VwOm50aC1jaGlsZCgyKSB7XG4gICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gIH1cbmA7XG5cbkNvbG9yU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbU2luZ2xlQ29sb3JQYWxldHRlRmFjdG9yeSwgQ29sb3JSYW5nZVNlbGVjdEZhY3RvcnldO1xuXG5mdW5jdGlvbiBDb2xvclNlbGVjdG9yRmFjdG9yeShTaW5nbGVDb2xvclBhbGV0dGUsIENvbG9yUmFuZ2VTZWxlY3Rvcikge1xuICBjbGFzcyBDb2xvclNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgZmllbGRzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICAgIGNvbG9yU2V0czogUHJvcFR5cGVzLmFycmF5T2YoXG4gICAgICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgICAgc2VsZWN0ZWRDb2xvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgICAgICAgICBzZXRDb2xvcjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgICAgICBpc1JhbmdlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIGNvbG9yVUk6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgIGN1c3RvbVBhbGV0dGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIHNob3dTa2V0Y2hlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmJvb2wsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICAgICAgc2hvd0Ryb3Bkb3duOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0XG4gICAgICB9KSxcbiAgICAgIGlucHV0VGhlbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBzZXRDb2xvclVJOiBQcm9wVHlwZXMuZnVuY1xuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgY29sb3JTZXRzOiBbXVxuICAgIH07XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIHNob3dEcm9wZG93bjogZmFsc2VcbiAgICB9O1xuXG4gICAgbm9kZSA9IGNyZWF0ZVJlZigpO1xuXG4gICAgaGFuZGxlQ2xpY2tPdXRzaWRlID0gZSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2xvclVJICYmIE51bWJlci5pc0ludGVnZXIodGhpcy5wcm9wcy5jb2xvclVJLnNob3dTa2V0Y2hlcikpIHtcbiAgICAgICAgLy8gaWYgc2tldGNoZXIgaXMgb3BlbiwgbGV0IHNrZXRjaCB0byBjbG9zZSBpdHNlbGYgZmlyc3RcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2xvc2VQYW5lbERyb3Bkb3duKCk7XG4gICAgfTtcblxuICAgIF9nZXRFZGl0aW5nID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY29sb3JVSSA/IHRoaXMucHJvcHMuY29sb3JVSS5zaG93RHJvcGRvd24gOiB0aGlzLnN0YXRlLnNob3dEcm9wZG93bjtcbiAgICB9O1xuXG4gICAgX2Nsb3NlUGFuZWxEcm9wZG93biA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9nZXRFZGl0aW5nKCkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnByb3BzLnNldENvbG9yVUkpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRDb2xvclVJKHtzaG93RHJvcGRvd246IGZhbHNlLCBzaG93U2tldGNoZXI6IGZhbHNlfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtzaG93RHJvcGRvd246IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vblNlbGVjdENvbG9yID0gKGNvbG9yLCBlKSA9PiB7XG4gICAgICBlPy5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnN0IGVkaXRpbmcgPSB0aGlzLl9nZXRFZGl0aW5nKCk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2xvclNldHNbZWRpdGluZ10pIHtcbiAgICAgICAgdGhpcy5wcm9wcy5jb2xvclNldHNbZWRpdGluZ10uc2V0Q29sb3IoY29sb3IpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25TZWxlY3RDb2xvckNvbHVtbiA9IGNvbHVtbiA9PiB7XG4gICAgICB0aGlzLnByb3BzLm9uU2VsZWN0SGV4Q29sb3JDb2x1bW4oY29sdW1uKTtcbiAgICB9O1xuXG4gICAgX3Nob3dEcm9wZG93biA9IChlLCBpKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuc2V0Q29sb3JVSSkge1xuICAgICAgICB0aGlzLnByb3BzLnNldENvbG9yVUkoe3Nob3dEcm9wZG93bjogaX0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd0Ryb3Bkb3duOiBpfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtjb2xvclNldHMsIGRpc2FibGVkLCBpbnB1dFRoZW1lLCBjb2xvclVJfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGVkaXRpbmcgPSB0aGlzLl9nZXRFZGl0aW5nKCk7XG4gICAgICBjb25zdCBjdXJyZW50RWRpdGluZyA9IGNvbG9yU2V0c1tlZGl0aW5nXSAmJiB0eXBlb2YgY29sb3JTZXRzW2VkaXRpbmddID09PSAnb2JqZWN0JztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JcIiByZWY9e3RoaXMubm9kZX0+XG4gICAgICAgICAgPElucHV0Qm94Q29udGFpbmVyPlxuICAgICAgICAgICAge2NvbG9yU2V0cy5tYXAoKGNTZXQsIGkpID0+IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3RfX2lucHV0LWdyb3VwXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgICA8Q29sb3JTZWxlY3RvcklucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXtlZGl0aW5nID09PSBpfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgaW5wdXRUaGVtZT17aW5wdXRUaGVtZX1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX3Nob3dEcm9wZG93bihlLCBpKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7Y1NldC5pc1JhbmdlID8gKFxuICAgICAgICAgICAgICAgICAgICA8Q29sb3JQYWxldHRlIGNvbG9ycz17Y1NldC5zZWxlY3RlZENvbG9yLmNvbG9yc30gLz5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxDb2xvckJsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yX19ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2NTZXQuc2VsZWN0ZWRDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7Y1NldC5sYWJlbCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JfX2xhYmVsXCI+e2NTZXQubGFiZWx9PC9kaXY+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0NvbG9yU2VsZWN0b3JJbnB1dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0lucHV0Qm94Q29udGFpbmVyPlxuICAgICAgICAgIHtjdXJyZW50RWRpdGluZyA/IChcbiAgICAgICAgICAgIDxTdHlsZWRQYW5lbERyb3Bkb3duIGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19kcm9wZG93blwiPlxuICAgICAgICAgICAgICB7Y29sb3JTZXRzW2VkaXRpbmddLmlzUmFuZ2UgPyAoXG4gICAgICAgICAgICAgICAgPENvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvclJhbmdlPXtjb2xvclNldHNbZWRpdGluZ10uc2VsZWN0ZWRDb2xvcn1cbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0Q29sb3JSYW5nZT17dGhpcy5fb25TZWxlY3RDb2xvcn1cbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0Q29sb3JDb2x1bW49e3RoaXMuX29uU2VsZWN0Q29sb3JDb2x1bW59XG4gICAgICAgICAgICAgICAgICBzZXRDb2xvclBhbGV0dGVVST17dGhpcy5wcm9wcy5zZXRDb2xvclVJfVxuICAgICAgICAgICAgICAgICAgZmllbGRzPXt0aGlzLnByb3BzLmZpZWxkc31cbiAgICAgICAgICAgICAgICAgIGNvbG9yUGFsZXR0ZVVJPXtjb2xvclVJfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFNpbmdsZUNvbG9yUGFsZXR0ZVxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17cmdiVG9IZXgoY29sb3JTZXRzW2VkaXRpbmddLnNlbGVjdGVkQ29sb3IpfVxuICAgICAgICAgICAgICAgICAgb25TZWxlY3RDb2xvcj17dGhpcy5fb25TZWxlY3RDb2xvcn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TdHlsZWRQYW5lbERyb3Bkb3duPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvbkNsaWNrT3V0c2lkZShDb2xvclNlbGVjdG9yKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sb3JTZWxlY3RvckZhY3Rvcnk7XG4iXX0=
226
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3Itc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiQ29sb3JCbG9jayIsInN0eWxlZCIsImRpdiIsInByb3BzIiwiY29sb3IiLCJzbGljZSIsImpvaW4iLCJDb2xvclNlbGVjdG9ySW5wdXQiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0IiwiaW5wdXRCb3hIZWlnaHQiLCJpbnB1dFBsYWNlaG9sZGVyQ29sb3IiLCJJbnB1dEJveENvbnRhaW5lciIsIkNvbG9yU2VsZWN0b3JGYWN0b3J5IiwiZGVwcyIsIlNpbmdsZUNvbG9yUGFsZXR0ZUZhY3RvcnkiLCJDb2xvclJhbmdlU2VsZWN0RmFjdG9yeSIsIlNpbmdsZUNvbG9yUGFsZXR0ZSIsIkNvbG9yUmFuZ2VTZWxlY3RvciIsIkNvbG9yU2VsZWN0b3IiLCJzaG93RHJvcGRvd24iLCJlIiwiY29sb3JVSSIsIk51bWJlciIsImlzSW50ZWdlciIsInNob3dTa2V0Y2hlciIsIl9jbG9zZVBhbmVsRHJvcGRvd24iLCJzdGF0ZSIsIl9nZXRFZGl0aW5nIiwic2V0Q29sb3JVSSIsInNldFN0YXRlIiwic3RvcFByb3BhZ2F0aW9uIiwiZWRpdGluZyIsImNvbG9yU2V0cyIsInNldENvbG9yIiwiaSIsInByZXZlbnREZWZhdWx0IiwiZGlzYWJsZWQiLCJjdXJyZW50RWRpdGluZyIsIm5vZGUiLCJtYXAiLCJjU2V0IiwiX3Nob3dEcm9wZG93biIsImlzUmFuZ2UiLCJzZWxlY3RlZENvbG9yIiwiY29sb3JzIiwibGFiZWwiLCJfb25TZWxlY3RDb2xvciIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsImFycmF5T2YiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsIm9iamVjdCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwiYm9vbCIsInN0cmluZyIsImN1c3RvbVBhbGV0dGUiLCJudW1iZXIiLCJjb2xvclJhbmdlQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFTyxJQUFNQSxVQUFVLEdBQUdDLDZCQUFPQyxHQUFWLDRLQUlELFVBQUFDLEtBQUs7QUFBQSx1QkFBV0EsS0FBSyxDQUFDQyxLQUFOLENBQVlDLEtBQVosQ0FBa0IsQ0FBbEIsRUFBcUIsQ0FBckIsRUFBd0JDLElBQXhCLENBQTZCLEdBQTdCLENBQVg7QUFBQSxDQUpKLENBQWhCOzs7O0FBT0EsSUFBTUMsa0JBQWtCLEdBQUdOLDZCQUFPQyxHQUFWLG9RQUMzQixVQUFBQyxLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDSyxVQUFOLEtBQXFCLFdBQXJCLEdBQW1DTCxLQUFLLENBQUNNLEtBQU4sQ0FBWUMsY0FBL0MsR0FBZ0VQLEtBQUssQ0FBQ00sS0FBTixDQUFZRSxLQUFqRjtBQUFBLENBRHNCLEVBRW5CLFVBQUFSLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNNLEtBQU4sQ0FBWUcsY0FBaEI7QUFBQSxDQUZjLEVBUWxCLFVBQUFULEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNNLEtBQU4sQ0FBWUkscUJBQWhCO0FBQUEsQ0FSYSxDQUF4Qjs7OztBQVlBLElBQU1DLGlCQUFpQixHQUFHYiw2QkFBT0MsR0FBVixtUkFBdkI7OztBQVlQYSxvQkFBb0IsQ0FBQ0MsSUFBckIsR0FBNEIsQ0FBQ0MsOEJBQUQsRUFBNEJDLDhCQUE1QixDQUE1Qjs7QUFFQSxTQUFTSCxvQkFBVCxDQUE4Qkksa0JBQTlCLEVBQWtEQyxrQkFBbEQsRUFBc0U7QUFBQSxNQUM5REMsYUFEOEQ7QUFBQTs7QUFBQTs7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBLGdHQTBCMUQ7QUFDTkMsUUFBQUEsWUFBWSxFQUFFO0FBRFIsT0ExQjBEO0FBQUEsNEdBOEIzRCx1QkE5QjJEO0FBQUEsNkdBZ0M3QyxVQUFBQyxDQUFDLEVBQUk7QUFDeEIsWUFBSSxNQUFLcEIsS0FBTCxDQUFXcUIsT0FBWCxJQUFzQkMsTUFBTSxDQUFDQyxTQUFQLENBQWlCLE1BQUt2QixLQUFMLENBQVdxQixPQUFYLENBQW1CRyxZQUFwQyxDQUExQixFQUE2RTtBQUMzRTtBQUNBO0FBQ0Q7O0FBQ0QsY0FBS0MsbUJBQUw7QUFDRCxPQXRDaUU7QUFBQSxzR0F3Q3BELFlBQU07QUFDbEIsZUFBTyxNQUFLekIsS0FBTCxDQUFXcUIsT0FBWCxHQUFxQixNQUFLckIsS0FBTCxDQUFXcUIsT0FBWCxDQUFtQkYsWUFBeEMsR0FBdUQsTUFBS08sS0FBTCxDQUFXUCxZQUF6RTtBQUNELE9BMUNpRTtBQUFBLDhHQTRDNUMsWUFBTTtBQUMxQixZQUFJLE1BQUtRLFdBQUwsT0FBdUIsS0FBM0IsRUFBa0M7QUFDaEM7QUFDRDs7QUFDRCxZQUFJLE1BQUszQixLQUFMLENBQVc0QixVQUFmLEVBQTJCO0FBQ3pCLGdCQUFLNUIsS0FBTCxDQUFXNEIsVUFBWCxDQUFzQjtBQUFDVCxZQUFBQSxZQUFZLEVBQUUsS0FBZjtBQUFzQkssWUFBQUEsWUFBWSxFQUFFO0FBQXBDLFdBQXRCO0FBQ0QsU0FGRCxNQUVPO0FBQ0wsZ0JBQUtLLFFBQUwsQ0FBYztBQUFDVixZQUFBQSxZQUFZLEVBQUU7QUFBZixXQUFkO0FBQ0Q7QUFDRixPQXJEaUU7QUFBQSx5R0F1RGpELFVBQUNsQixLQUFELEVBQVFtQixDQUFSLEVBQWM7QUFDN0JBLFFBQUFBLENBQUMsU0FBRCxJQUFBQSxDQUFDLFdBQUQsWUFBQUEsQ0FBQyxDQUFFVSxlQUFIOztBQUNBLFlBQU1DLE9BQU8sR0FBRyxNQUFLSixXQUFMLEVBQWhCOztBQUNBLFlBQUksTUFBSzNCLEtBQUwsQ0FBV2dDLFNBQVgsQ0FBcUJELE9BQXJCLENBQUosRUFBbUM7QUFDakMsZ0JBQUsvQixLQUFMLENBQVdnQyxTQUFYLENBQXFCRCxPQUFyQixFQUE4QkUsUUFBOUIsQ0FBdUNoQyxLQUF2QztBQUNEO0FBQ0YsT0E3RGlFO0FBQUEsd0dBK0RsRCxVQUFDbUIsQ0FBRCxFQUFJYyxDQUFKLEVBQVU7QUFDeEJkLFFBQUFBLENBQUMsQ0FBQ1UsZUFBRjtBQUNBVixRQUFBQSxDQUFDLENBQUNlLGNBQUY7O0FBQ0EsWUFBSSxNQUFLbkMsS0FBTCxDQUFXNEIsVUFBZixFQUEyQjtBQUN6QixnQkFBSzVCLEtBQUwsQ0FBVzRCLFVBQVgsQ0FBc0I7QUFBQ1QsWUFBQUEsWUFBWSxFQUFFZTtBQUFmLFdBQXRCO0FBQ0QsU0FGRCxNQUVPO0FBQ0wsZ0JBQUtMLFFBQUwsQ0FBYztBQUFDVixZQUFBQSxZQUFZLEVBQUVlO0FBQWYsV0FBZDtBQUNEO0FBQ0YsT0F2RWlFO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUEsYUF5RWxFLGtCQUFTO0FBQUE7O0FBQUEsMEJBQzRDLEtBQUtsQyxLQURqRDtBQUFBLFlBQ0FnQyxTQURBLGVBQ0FBLFNBREE7QUFBQSxZQUNXSSxRQURYLGVBQ1dBLFFBRFg7QUFBQSxZQUNxQi9CLFVBRHJCLGVBQ3FCQSxVQURyQjtBQUFBLFlBQ2lDZ0IsT0FEakMsZUFDaUNBLE9BRGpDOztBQUdQLFlBQU1VLE9BQU8sR0FBRyxLQUFLSixXQUFMLEVBQWhCOztBQUNBLFlBQU1VLGNBQWMsR0FBR0wsU0FBUyxDQUFDRCxPQUFELENBQVQsSUFBc0IseUJBQU9DLFNBQVMsQ0FBQ0QsT0FBRCxDQUFoQixNQUE4QixRQUEzRTtBQUNBLDRCQUNFO0FBQUssVUFBQSxTQUFTLEVBQUMsZ0JBQWY7QUFBZ0MsVUFBQSxHQUFHLEVBQUUsS0FBS087QUFBMUMsd0JBQ0UsZ0NBQUMsaUJBQUQsUUFDR04sU0FBUyxDQUFDTyxHQUFWLENBQWMsVUFBQ0MsSUFBRCxFQUFPTixDQUFQO0FBQUEsOEJBQ2I7QUFBSyxZQUFBLFNBQVMsRUFBQywyQkFBZjtBQUEyQyxZQUFBLEdBQUcsRUFBRUE7QUFBaEQsMEJBQ0UsZ0NBQUMsa0JBQUQ7QUFDRSxZQUFBLFNBQVMsRUFBQywwQkFEWjtBQUVFLFlBQUEsTUFBTSxFQUFFSCxPQUFPLEtBQUtHLENBRnRCO0FBR0UsWUFBQSxRQUFRLEVBQUVFLFFBSFo7QUFJRSxZQUFBLFVBQVUsRUFBRS9CLFVBSmQ7QUFLRSxZQUFBLFdBQVcsRUFBRSxxQkFBQWUsQ0FBQztBQUFBLHFCQUFJLE1BQUksQ0FBQ3FCLGFBQUwsQ0FBbUJyQixDQUFuQixFQUFzQmMsQ0FBdEIsQ0FBSjtBQUFBO0FBTGhCLGFBT0dNLElBQUksQ0FBQ0UsT0FBTCxnQkFDQyxnQ0FBQyx3QkFBRDtBQUFjLFlBQUEsTUFBTSxFQUFFRixJQUFJLENBQUNHLGFBQUwsQ0FBbUJDO0FBQXpDLFlBREQsZ0JBR0MsZ0NBQUMsVUFBRDtBQUNFLFlBQUEsU0FBUyxFQUFDLGlDQURaO0FBRUUsWUFBQSxLQUFLLEVBQUVKLElBQUksQ0FBQ0c7QUFGZCxZQVZKLEVBZUdILElBQUksQ0FBQ0ssS0FBTCxnQkFDQztBQUFLLFlBQUEsU0FBUyxFQUFDO0FBQWYsYUFBa0RMLElBQUksQ0FBQ0ssS0FBdkQsQ0FERCxHQUVHLElBakJOLENBREYsQ0FEYTtBQUFBLFNBQWQsQ0FESCxDQURGLEVBMEJHUixjQUFjLGdCQUNiLGdDQUFDLHNDQUFEO0FBQXFCLFVBQUEsU0FBUyxFQUFDO0FBQS9CLFdBQ0dMLFNBQVMsQ0FBQ0QsT0FBRCxDQUFULENBQW1CVyxPQUFuQixnQkFDQyxnQ0FBQyxrQkFBRDtBQUNFLFVBQUEsa0JBQWtCLEVBQUVWLFNBQVMsQ0FBQ0QsT0FBRCxDQUFULENBQW1CWSxhQUR6QztBQUVFLFVBQUEsa0JBQWtCLEVBQUUsS0FBS0csY0FGM0I7QUFHRSxVQUFBLGlCQUFpQixFQUFFLEtBQUs5QyxLQUFMLENBQVc0QixVQUhoQztBQUlFLFVBQUEsY0FBYyxFQUFFUDtBQUpsQixVQURELGdCQVFDLGdDQUFDLGtCQUFEO0FBQ0UsVUFBQSxhQUFhLEVBQUUsMEJBQVNXLFNBQVMsQ0FBQ0QsT0FBRCxDQUFULENBQW1CWSxhQUE1QixDQURqQjtBQUVFLFVBQUEsYUFBYSxFQUFFLEtBQUtHO0FBRnRCLFVBVEosQ0FEYSxHQWdCWCxJQTFDTixDQURGO0FBOENEO0FBNUhpRTtBQUFBO0FBQUEsSUFDeENDLGdCQUR3Qzs7QUFBQSxtQ0FDOUQ3QixhQUQ4RCxlQUUvQztBQUNqQmMsSUFBQUEsU0FBUyxFQUFFZ0Isc0JBQVVDLE9BQVYsQ0FDVEQsc0JBQVVFLEtBQVYsQ0FBZ0I7QUFDZFAsTUFBQUEsYUFBYSxFQUFFSyxzQkFBVUcsU0FBVixDQUFvQixDQUFDSCxzQkFBVUMsT0FBVixDQUFrQkQsc0JBQVVJLEdBQTVCLENBQUQsRUFBbUNKLHNCQUFVSyxNQUE3QyxDQUFwQixDQUREO0FBRWRwQixNQUFBQSxRQUFRLEVBQUVlLHNCQUFVTSxJQUFWLENBQWVDLFVBRlg7QUFHZGIsTUFBQUEsT0FBTyxFQUFFTSxzQkFBVVEsSUFITDtBQUlkWCxNQUFBQSxLQUFLLEVBQUVHLHNCQUFVUztBQUpILEtBQWhCLENBRFMsQ0FETTtBQVNqQnBDLElBQUFBLE9BQU8sRUFBRTJCLHNCQUFVRSxLQUFWLENBQWdCO0FBQ3ZCUSxNQUFBQSxhQUFhLEVBQUVWLHNCQUFVSyxNQURGO0FBRXZCN0IsTUFBQUEsWUFBWSxFQUFFd0Isc0JBQVVHLFNBQVYsQ0FBb0IsQ0FBQ0gsc0JBQVVRLElBQVgsRUFBaUJSLHNCQUFVVyxNQUEzQixDQUFwQixDQUZTO0FBR3ZCeEMsTUFBQUEsWUFBWSxFQUFFNkIsc0JBQVVHLFNBQVYsQ0FBb0IsQ0FBQ0gsc0JBQVVRLElBQVgsRUFBaUJSLHNCQUFVVyxNQUEzQixDQUFwQixDQUhTO0FBSXZCQyxNQUFBQSxnQkFBZ0IsRUFBRVosc0JBQVVLO0FBSkwsS0FBaEIsQ0FUUTtBQWVqQmhELElBQUFBLFVBQVUsRUFBRTJDLHNCQUFVUyxNQWZMO0FBZ0JqQnJCLElBQUFBLFFBQVEsRUFBRVksc0JBQVVRLElBaEJIO0FBaUJqQjVCLElBQUFBLFVBQVUsRUFBRW9CLHNCQUFVTTtBQWpCTCxHQUYrQztBQUFBLG1DQUM5RHBDLGFBRDhELGtCQXNCNUM7QUFDcEJjLElBQUFBLFNBQVMsRUFBRTtBQURTLEdBdEI0QztBQThIcEUsU0FBTyxxQ0FBZWQsYUFBZixDQUFQO0FBQ0Q7O2VBRWNOLG9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7cmdiVG9IZXh9IGZyb20gJ3V0aWxzL2NvbG9yLXV0aWxzJztcbmltcG9ydCBDb2xvclBhbGV0dGUgZnJvbSAnY29tcG9uZW50cy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2NvbG9yLXBhbGV0dGUnO1xuaW1wb3J0IHtTdHlsZWRQYW5lbERyb3Bkb3dufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgb25DbGlja091dHNpZGUgZnJvbSAncmVhY3Qtb25jbGlja291dHNpZGUnO1xuaW1wb3J0IFNpbmdsZUNvbG9yUGFsZXR0ZUZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL3NpbmdsZS1jb2xvci1wYWxldHRlJztcbmltcG9ydCBDb2xvclJhbmdlU2VsZWN0RmFjdG9yeSBmcm9tICcuL2NvbG9yLXJhbmdlLXNlbGVjdG9yJztcblxuZXhwb3J0IGNvbnN0IENvbG9yQmxvY2sgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMzJweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICBib3JkZXItcmFkaXVzOiAxcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gYHJnYigke3Byb3BzLmNvbG9yLnNsaWNlKDAsIDMpLmpvaW4oJywnKX0pYH07XG5gO1xuXG5leHBvcnQgY29uc3QgQ29sb3JTZWxlY3RvcklucHV0ID0gc3R5bGVkLmRpdmBcbiAgJHtwcm9wcyA9PiAocHJvcHMuaW5wdXRUaGVtZSA9PT0gJ3NlY29uZGFyeScgPyBwcm9wcy50aGVtZS5zZWNvbmRhcnlJbnB1dCA6IHByb3BzLnRoZW1lLmlucHV0KX07XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmNvbG9yLXNlbGVjdG9yX19zZWxlY3Rvcl9fbGFiZWwge1xuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRQbGFjZWhvbGRlckNvbG9yfTtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IElucHV0Qm94Q29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gIC5jb2xvci1zZWxlY3RfX2lucHV0LWdyb3VwIHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gIH1cbiAgLmNvbG9yLXNlbGVjdF9faW5wdXQtZ3JvdXA6bnRoLWNoaWxkKDIpIHtcbiAgICBtYXJnaW4tbGVmdDogMTJweDtcbiAgfVxuYDtcblxuQ29sb3JTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtTaW5nbGVDb2xvclBhbGV0dGVGYWN0b3J5LCBDb2xvclJhbmdlU2VsZWN0RmFjdG9yeV07XG5cbmZ1bmN0aW9uIENvbG9yU2VsZWN0b3JGYWN0b3J5KFNpbmdsZUNvbG9yUGFsZXR0ZSwgQ29sb3JSYW5nZVNlbGVjdG9yKSB7XG4gIGNsYXNzIENvbG9yU2VsZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICBjb2xvclNldHM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgICAgICBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICAgIHNlbGVjdGVkQ29sb3I6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gICAgICAgICAgc2V0Q29sb3I6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgICAgaXNSYW5nZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgICAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBjb2xvclVJOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICBjdXN0b21QYWxldHRlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICBzaG93U2tldGNoZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5ib29sLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gICAgICAgIHNob3dEcm9wZG93bjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmJvb2wsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICAgICAgY29sb3JSYW5nZUNvbmZpZzogUHJvcFR5cGVzLm9iamVjdFxuICAgICAgfSksXG4gICAgICBpbnB1dFRoZW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgc2V0Q29sb3JVSTogUHJvcFR5cGVzLmZ1bmNcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIGNvbG9yU2V0czogW11cbiAgICB9O1xuXG4gICAgc3RhdGUgPSB7XG4gICAgICBzaG93RHJvcGRvd246IGZhbHNlXG4gICAgfTtcblxuICAgIG5vZGUgPSBjcmVhdGVSZWYoKTtcblxuICAgIGhhbmRsZUNsaWNrT3V0c2lkZSA9IGUgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuY29sb3JVSSAmJiBOdW1iZXIuaXNJbnRlZ2VyKHRoaXMucHJvcHMuY29sb3JVSS5zaG93U2tldGNoZXIpKSB7XG4gICAgICAgIC8vIGlmIHNrZXRjaGVyIGlzIG9wZW4sIGxldCBza2V0Y2ggdG8gY2xvc2UgaXRzZWxmIGZpcnN0XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2Nsb3NlUGFuZWxEcm9wZG93bigpO1xuICAgIH07XG5cbiAgICBfZ2V0RWRpdGluZyA9ICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmNvbG9yVUkgPyB0aGlzLnByb3BzLmNvbG9yVUkuc2hvd0Ryb3Bkb3duIDogdGhpcy5zdGF0ZS5zaG93RHJvcGRvd247XG4gICAgfTtcblxuICAgIF9jbG9zZVBhbmVsRHJvcGRvd24gPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fZ2V0RWRpdGluZygpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wcm9wcy5zZXRDb2xvclVJKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0Q29sb3JVSSh7c2hvd0Ryb3Bkb3duOiBmYWxzZSwgc2hvd1NrZXRjaGVyOiBmYWxzZX0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd0Ryb3Bkb3duOiBmYWxzZX0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25TZWxlY3RDb2xvciA9IChjb2xvciwgZSkgPT4ge1xuICAgICAgZT8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBjb25zdCBlZGl0aW5nID0gdGhpcy5fZ2V0RWRpdGluZygpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuY29sb3JTZXRzW2VkaXRpbmddKSB7XG4gICAgICAgIHRoaXMucHJvcHMuY29sb3JTZXRzW2VkaXRpbmddLnNldENvbG9yKGNvbG9yKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3Nob3dEcm9wZG93biA9IChlLCBpKSA9PiB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuc2V0Q29sb3JVSSkge1xuICAgICAgICB0aGlzLnByb3BzLnNldENvbG9yVUkoe3Nob3dEcm9wZG93bjogaX0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd0Ryb3Bkb3duOiBpfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtjb2xvclNldHMsIGRpc2FibGVkLCBpbnB1dFRoZW1lLCBjb2xvclVJfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGVkaXRpbmcgPSB0aGlzLl9nZXRFZGl0aW5nKCk7XG4gICAgICBjb25zdCBjdXJyZW50RWRpdGluZyA9IGNvbG9yU2V0c1tlZGl0aW5nXSAmJiB0eXBlb2YgY29sb3JTZXRzW2VkaXRpbmddID09PSAnb2JqZWN0JztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JcIiByZWY9e3RoaXMubm9kZX0+XG4gICAgICAgICAgPElucHV0Qm94Q29udGFpbmVyPlxuICAgICAgICAgICAge2NvbG9yU2V0cy5tYXAoKGNTZXQsIGkpID0+IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3RfX2lucHV0LWdyb3VwXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgICA8Q29sb3JTZWxlY3RvcklucHV0XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXtlZGl0aW5nID09PSBpfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgaW5wdXRUaGVtZT17aW5wdXRUaGVtZX1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX3Nob3dEcm9wZG93bihlLCBpKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7Y1NldC5pc1JhbmdlID8gKFxuICAgICAgICAgICAgICAgICAgICA8Q29sb3JQYWxldHRlIGNvbG9ycz17Y1NldC5zZWxlY3RlZENvbG9yLmNvbG9yc30gLz5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxDb2xvckJsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yX19ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2NTZXQuc2VsZWN0ZWRDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7Y1NldC5sYWJlbCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JfX2xhYmVsXCI+e2NTZXQubGFiZWx9PC9kaXY+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0NvbG9yU2VsZWN0b3JJbnB1dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0lucHV0Qm94Q29udGFpbmVyPlxuICAgICAgICAgIHtjdXJyZW50RWRpdGluZyA/IChcbiAgICAgICAgICAgIDxTdHlsZWRQYW5lbERyb3Bkb3duIGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19kcm9wZG93blwiPlxuICAgICAgICAgICAgICB7Y29sb3JTZXRzW2VkaXRpbmddLmlzUmFuZ2UgPyAoXG4gICAgICAgICAgICAgICAgPENvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvclJhbmdlPXtjb2xvclNldHNbZWRpdGluZ10uc2VsZWN0ZWRDb2xvcn1cbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0Q29sb3JSYW5nZT17dGhpcy5fb25TZWxlY3RDb2xvcn1cbiAgICAgICAgICAgICAgICAgIHNldENvbG9yUGFsZXR0ZVVJPXt0aGlzLnByb3BzLnNldENvbG9yVUl9XG4gICAgICAgICAgICAgICAgICBjb2xvclBhbGV0dGVVST17Y29sb3JVSX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxTaW5nbGVDb2xvclBhbGV0dGVcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I9e3JnYlRvSGV4KGNvbG9yU2V0c1tlZGl0aW5nXS5zZWxlY3RlZENvbG9yKX1cbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0Q29sb3I9e3RoaXMuX29uU2VsZWN0Q29sb3J9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU3R5bGVkUGFuZWxEcm9wZG93bj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb25DbGlja091dHNpZGUoQ29sb3JTZWxlY3Rvcik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yU2VsZWN0b3JGYWN0b3J5O1xuIl19