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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -187,12 +187,11 @@ function LayerConfiguratorFactory(SourceDataSelector, VisConfigSlider, TextLabel
187
187
  collapsible: true
188
188
  }), layer.config.colorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, layerConfiguratorProps), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({
189
189
  channel: layer.visualChannels.color
190
- }, layerChannelConfigProps))), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), layer.type === _types.LAYER_TYPES.point ? /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.outline, visConfiguratorProps, {
190
+ }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), layer.type === _types.LAYER_TYPES.point ? /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.outline, visConfiguratorProps, {
191
191
  collapsible: true,
192
192
  disabled: Boolean(layer.config.visConfig.customMarkers)
193
193
  }), layer.config.strokeColorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
194
- property: "strokeColorRange",
195
- field: "strokeColorField"
194
+ channel: "strokeColor"
196
195
  })) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
197
196
  selectedColor: layer.config.visConfig.strokeColor,
198
197
  property: "strokeColor"
@@ -433,8 +432,7 @@ function LayerConfiguratorFactory(SourceDataSelector, VisConfigSlider, TextLabel
433
432
  label: "layer.strokeColor",
434
433
  collapsible: true
435
434
  }), layer.config.strokeColorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
436
- property: "strokeColorRange",
437
- field: "strokeColorField"
435
+ channel: "strokeColor"
438
436
  })) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
439
437
  selectedColor: layer.config.visConfig.strokeColor,
440
438
  property: "strokeColor"
@@ -518,8 +516,7 @@ function LayerConfiguratorFactory(SourceDataSelector, VisConfigSlider, TextLabel
518
516
  label: "layer.strokeColor",
519
517
  collapsible: true
520
518
  }), layer.config.strokeColorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
521
- property: "strokeColorRange",
522
- field: "strokeColorField"
519
+ channel: "strokeColor"
523
520
  })) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
524
521
  selectedColor: layer.config.visConfig.strokeColor,
525
522
  property: "strokeColor"
@@ -776,15 +773,18 @@ function LayerColorRangeSelectorFactory(ColorSelector) {
776
773
  var _this$props4 = this.props,
777
774
  layer = _this$props4.layer,
778
775
  onChange = _this$props4.onChange,
779
- _this$props4$property = _this$props4.property,
780
- property = _this$props4$property === void 0 ? 'colorRange' : _this$props4$property,
781
- _this$props4$field = _this$props4.field,
782
- field = _this$props4$field === void 0 ? 'colorField' : _this$props4$field,
783
- _this$props4$scale = _this$props4.scale,
784
- scale = _this$props4$scale === void 0 ? 'colorScale' : _this$props4$scale,
776
+ _this$props4$channel = _this$props4.channel,
777
+ channel = _this$props4$channel === void 0 ? 'color' : _this$props4$channel,
785
778
  _setColorUI3 = _this$props4.setColorUI,
786
779
  fields = _this$props4.fields,
787
- handleCustomOnSelectHexColumn = _this$props4.handleCustomOnSelectHexColumn;
780
+ _this$props4$handleCu = _this$props4.handleCustomOnSelectHexColumn,
781
+ handleCustomOnSelectHexColumn = _this$props4$handleCu === void 0 ? function () {
782
+ return null;
783
+ } : _this$props4$handleCu;
784
+ var _layer$visualChannels = layer.visualChannels[channel],
785
+ property = _layer$visualChannels.range,
786
+ field = _layer$visualChannels.field,
787
+ scale = _layer$visualChannels.scale;
788
788
  return /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.PanelLabel, null, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, {
789
789
  id: "layer.colorRange"
790
790
  })), /*#__PURE__*/_react["default"].createElement(ColorSelector, {
@@ -793,10 +793,10 @@ function LayerColorRangeSelectorFactory(ColorSelector) {
793
793
  selectedColor: layer.config.visConfig[property],
794
794
  isRange: true,
795
795
  setColor: function setColor(colorRange) {
796
- layer.updateLayerConfig((0, _defineProperty2["default"])({}, scale, _defaultSettings.SCALE_TYPES.ordinal));
797
796
  var colorMap = layer.config.visConfig[property].colorMap;
798
797
  var colorRangeUpdated = colorMap ? layer.updateColorMap(property, colorMap, colorRange) : colorRange;
799
798
  onChange((0, _defineProperty2["default"])({}, property, colorRangeUpdated));
799
+ layer.validateScale(channel); // Validate scale to ensure that it changes from `identity` to the correct one.
800
800
  }
801
801
  }],
802
802
  colorUI: layer.config.colorUI[property],
@@ -804,16 +804,14 @@ function LayerColorRangeSelectorFactory(ColorSelector) {
804
804
  return _setColorUI3(property, newConfig);
805
805
  },
806
806
  onSelectHexColorColumn: function onSelectHexColorColumn(colorColumn) {
807
- var _layer$updateLayerCon2;
807
+ var _layer$updateLayerCon;
808
808
 
809
- if (handleCustomOnSelectHexColumn) {
810
- handleCustomOnSelectHexColumn(layer, colorColumn);
811
- }
812
-
813
- layer.updateLayerConfig((_layer$updateLayerCon2 = {}, (0, _defineProperty2["default"])(_layer$updateLayerCon2, field, _objectSpread(_objectSpread({}, layer.config[field]), {}, {
809
+ // It's defined in CN: see workspace-www/src/features/builder/ui/KeplerGl/SidePanel/LayerPanel/LayerColorRangeSelector.tsx
810
+ handleCustomOnSelectHexColumn(layer, colorColumn);
811
+ layer.updateLayerConfig((_layer$updateLayerCon = {}, (0, _defineProperty2["default"])(_layer$updateLayerCon, field, _objectSpread(_objectSpread({}, layer.config[field]), {}, {
814
812
  colorColumn: colorColumn === null || colorColumn === void 0 ? void 0 : colorColumn.name,
815
813
  colorColumnIdx: colorColumn === null || colorColumn === void 0 ? void 0 : colorColumn.fieldIdx
816
- })), (0, _defineProperty2["default"])(_layer$updateLayerCon2, scale, _defaultSettings.SCALE_TYPES.identity), _layer$updateLayerCon2));
814
+ })), (0, _defineProperty2["default"])(_layer$updateLayerCon, scale, _defaultSettings.SCALE_TYPES.identity), _layer$updateLayerCon));
817
815
  onChange((0, _defineProperty2["default"])({}, property, _colorRanges.hexColorCustomPalette));
818
816
  }
819
817
  }));
@@ -1004,4 +1002,4 @@ var AggregationTypeSelector = function AggregationTypeSelector(_ref15) {
1004
1002
 
1005
1003
 
1006
1004
  exports.AggregationTypeSelector = AggregationTypeSelector;
1007
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlndXJhdG9yLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlndXJhdG9yIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJwcm9wcyIsInRoZW1lIiwibGF5ZXJDb25maWd1cmF0b3JNYXJnaW4iLCJsYXllckNvbmZpZ3VyYXRvclBhZGRpbmciLCJsYXllckNvbmZpZ3VyYXRvckJvcmRlciIsImxheWVyQ29uZmlndXJhdG9yQm9yZGVyQ29sb3IiLCJTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciIsImdldExheWVyRmllbGRzIiwiZGF0YXNldHMiLCJsYXllciIsImNvbmZpZyIsImRhdGFJZCIsImZpZWxkcyIsImdldExheWVyRGF0YXNldCIsImdldExheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJkaXNhYmxlZCIsIkJvb2xlYW4iLCJvbkNoYW5nZSIsInVwZGF0ZUxheWVyQ29uZmlnIiwic2V0Q29sb3JVSSIsInVwZGF0ZUxheWVyQ29sb3JVSSIsImdldFZpc0NvbmZpZ3VyYXRvclByb3BzIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJnZXRMYXllckNoYW5uZWxDb25maWdQcm9wcyIsInVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyIsIm9uQ2hhbmdlVmlzQ29uZmlnIiwiTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5IiwiZGVwcyIsIlNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkiLCJWaXNDb25maWdTbGlkZXJGYWN0b3J5IiwiVGV4dExhYmVsUGFuZWxGYWN0b3J5IiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sdW1uQ29uZmlnRmFjdG9yeSIsIkxheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSIsIlZpc0NvbmZpZ1N3aXRjaEZhY3RvcnkiLCJBZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnkiLCJMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5IiwiTGF5ZXJBZ2dyZWdhdGlvblJlc29sdXRpb25GYWN0b3J5IiwiTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeSIsIkFyY0xheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkiLCJDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXBGYWN0b3J5IiwiU291cmNlRGF0YVNlbGVjdG9yIiwiVmlzQ29uZmlnU2xpZGVyIiwiVGV4dExhYmVsUGFuZWwiLCJMYXllckNvbmZpZ0dyb3VwIiwiQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvciIsIkxheWVyQ29sdW1uQ29uZmlnIiwiTGF5ZXJUeXBlU2VsZWN0b3IiLCJWaXNDb25maWdTd2l0Y2giLCJBZ2dyU2NhbGVTZWxlY3RvciIsIkxheWVyVmlzaWJpbGl0eUJ5Wm9vbSIsIkxheWVyQWdncmVnYXRpb25SZXNvbHV0aW9uIiwiTGF5ZXJDb2xvclNlbGVjdG9yIiwiTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IiLCJBcmNMYXllckNvbG9yU2VsZWN0b3IiLCJDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXAiLCJMYXllckNvbmZpZ3VyYXRvciIsIl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJ2aXNDb25maWdTZXR0aW5ncyIsImZpbGxlZCIsImxhYmVsIiwiY29sb3JGaWVsZCIsInZpc3VhbENoYW5uZWxzIiwiY29sb3IiLCJvcGFjaXR5IiwidHlwZSIsIkxBWUVSX1RZUEVTIiwicG9pbnQiLCJvdXRsaW5lIiwidmlzQ29uZmlnIiwiY3VzdG9tTWFya2VycyIsInN0cm9rZUNvbG9yRmllbGQiLCJzdHJva2VDb2xvciIsInRoaWNrbmVzcyIsInNpemVGaWVsZCIsInJhZGl1cyIsInJhZGl1c1JhbmdlIiwic2l6ZSIsInVwZGF0ZUxheWVyVGV4dExhYmVsIiwidGV4dExhYmVsIiwiY29sb3JQYWxldHRlIiwic2V0Q29sb3JQYWxldHRlVUkiLCJjb2xvckFnZ3JlZ2F0aW9uIiwiY29uZGl0aW9uIiwiY2x1c3RlclJhZGl1cyIsIndlaWdodCIsIl9yZW5kZXJBZ2dyZWdhdGlvbkxheWVyQ29uZmlnIiwiZW5hYmxlM2QiLCJlbGV2YXRpb25CeURlc2NyaXB0aW9uIiwiY29sb3JCeURlc2NyaXB0aW9uIiwicGVyY2VudGlsZSIsIndvcmxkVW5pdFNpemUiLCJjb3ZlcmFnZSIsImVsZXZhdGlvblNjYWxlIiwic2l6ZVJhbmdlIiwic2l6ZUFnZ3JlZ2F0aW9uIiwiZWxldmF0aW9uUGVyY2VudGlsZSIsImNvdmVyYWdlRmllbGQiLCJjb3ZlcmFnZVJhbmdlIiwiYXJncyIsIl9yZW5kZXJMaW5lTGF5ZXJDb25maWciLCJzb3VyY2VDb2xvciIsIm1ldGEiLCJmZWF0dXJlVHlwZXMiLCJwb2x5Z29uIiwic3Ryb2tlZCIsInRyYWlsTGVuZ3RoIiwic3Ryb2tlT3BhY2l0eSIsImhlaWdodCIsIndpcmVmcmFtZSIsInJhZGl1c0ZpZWxkIiwiZSIsInRhcmdldCIsImZpbGVzIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwic2NlbmVncmFwaCIsInNpemVTY2FsZSIsImFuZ2xlWCIsImFuZ2xlWSIsImFuZ2xlWiIsImhlaWdodFJhbmdlIiwibGF5ZXJUeXBlT3B0aW9ucyIsInVwZGF0ZUxheWVyVHlwZSIsImZpZWxkUGFpcnMiLCJ1bmRlZmluZWQiLCJkYXRhc2V0IiwicmVuZGVyVGVtcGxhdGUiLCJsYXllckluZm9Nb2RhbCIsIm9wZW5Nb2RhbCIsIk9iamVjdCIsImtleXMiLCJjb2x1bW5zIiwibGVuZ3RoIiwiaGFzQWxsQ29sdW1ucyIsImlkIiwidmFsdWUiLCJjb2x1bW5QYWlycyIsImFzc2lnbkNvbHVtblBhaXJzIiwiYmluZCIsImFzc2lnbkNvbHVtbiIsImNvbHVtbkxhYmVscyIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJhcnJheU9mIiwiYW55IiwiZnVuYyIsIlN0eWxlZEhvd1RvQnV0dG9uIiwiSG93VG9CdXR0b24iLCJvbkNsaWNrIiwiQ29sb3JTZWxlY3RvckZhY3RvcnkiLCJDb2xvclNlbGVjdG9yIiwic2VsZWN0ZWRDb2xvciIsInByb3BlcnR5Iiwic2V0Q29sb3IiLCJyZ2JWYWx1ZSIsImNvbG9yVUkiLCJuZXdDb25maWciLCJvbkNoYW5nZUNvbmZpZyIsInRhcmdldENvbG9yIiwiZmllbGQiLCJzY2FsZSIsImhhbmRsZUN1c3RvbU9uU2VsZWN0SGV4Q29sdW1uIiwiaXNSYW5nZSIsImNvbG9yUmFuZ2UiLCJTQ0FMRV9UWVBFUyIsIm9yZGluYWwiLCJjb2xvck1hcCIsImNvbG9yUmFuZ2VVcGRhdGVkIiwidXBkYXRlQ29sb3JNYXAiLCJjb2xvckNvbHVtbiIsIm5hbWUiLCJjb2xvckNvbHVtbklkeCIsImZpZWxkSWR4IiwiaWRlbnRpdHkiLCJoZXhDb2xvckN1c3RvbVBhbGV0dGUiLCJWaXNDb25maWdCeUZpZWxkU2VsZWN0b3JGYWN0b3J5IiwiVmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yIiwiY2hhbm5lbCIsImZpZWxkc0FnZ3JlZ2F0ZWQiLCJkZXNjcmlwdGlvbiIsImlzTG9hZGluZyIsImNoYW5uZWxTY2FsZVR5cGUiLCJkb21haW4iLCJhZ2dyZWdhdGlvbiIsImtleSIsInJhbmdlIiwiZGVmYXVsdE1lYXN1cmUiLCJzdXBwb3J0ZWRGaWVsZFR5cGVzIiwiY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMiLCJDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMiLCJzdXBwb3J0ZWRGaWVsZHMiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsInNjYWxlT3B0aW9ucyIsImdldFNjYWxlT3B0aW9ucyIsInNob3dTY2FsZUN1c3RvbWl6YWJsZSIsIkNIQU5ORUxfU0NBTEVTIiwic2hvd1NjYWxlIiwiaXNBZ2dyZWdhdGVkIiwiZGVmYXVsdERlc2NyaXB0aW9uIiwidmlzUmFuZ2UiLCJhZ2dyZWdhdG9yIiwidmFsIiwic2VsZWN0ZWRBZ2dyZWdhdG9yIiwidWlDdXN0b21TY2FsZVR5cGUiLCJDb2xvckRpbWVuc2lvblNjYWxlU2VsZWN0b3JGYWN0b3J5IiwiQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yIiwiY29sb3JBZ2dyIiwiQXJyYXkiLCJpc0FycmF5IiwiQWdncmVnYXRpb25UeXBlU2VsZWN0b3IiLCJzZWxlY3RlZEZpZWxkIiwiYWdncmVnYXRpb25PcHRpb25zIiwiZ2V0QWdncmVnYXRpb25PcHRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsdUJBQXVCLEdBQUdDLDZCQUFPQyxHQUFQLENBQVdDLEtBQVgsQ0FBaUI7QUFDL0NDLEVBQUFBLFNBQVMsRUFBRTtBQURvQyxDQUFqQixDQUFILDhMQUliLFVBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUMsdUJBQWhCO0FBQUEsQ0FKUSxFQUtoQixVQUFBRixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlFLHdCQUFoQjtBQUFBLENBTFcsRUFNWixVQUFBSCxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlHLHVCQUFoQjtBQUFBLENBTk8sRUFPdkIsVUFBQUosS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZSSw0QkFBaEI7QUFBQSxDQVBrQixDQUE3Qjs7QUFVQSxJQUFNQyw2QkFBNkIsR0FBR1YsNkJBQU9DLEdBQVAsQ0FBV0MsS0FBWCxDQUFpQjtBQUNyREMsRUFB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RG1DLENBQzFDTyxHQUQwQztBQUVyRSxNQUFNMkIsYUFBYSxHQUFHbk4sS0FBSyxDQUFDQyxNQUFOLENBQWE4SixLQUFiLENBQXRCO0FBRnFFLE1BRzlEOUYsU0FIOEQsR0FHakRqRSxLQUFLLENBQUNDLE1BSDJDLENBRzlEZ0UsU0FIOEQsRUFLckU7O0FBQ0EsTUFBTW1KLGtCQUFrQixHQUFHcE4sS0FBSyxDQUFDcU4scUJBQU4sQ0FBNEI3QixHQUE1QixDQUEzQjtBQUVBLHNCQUNFLGdDQUFDLG1DQUFELHFCQUNFLGdDQUFDLDZCQUFELHFCQUNFLGdDQUFDLDhCQUFEO0FBQWtCLElBQUEsRUFBRSxFQUFFLG1CQUF0QjtBQUEyQyxJQUFBLE1BQU0sRUFBRTtBQUFDekIsTUFBQUEsS0FBSyxFQUFFb0QsYUFBYSxDQUFDekM7QUFBdEI7QUFBbkQsSUFERixDQURGLGVBSUUsZ0NBQUMsd0JBQUQ7QUFDRSxJQUFBLGFBQWEsRUFBRXpHLFNBQVMsQ0FBQ3NILFdBQUQsQ0FEMUI7QUFFRSxJQUFBLE9BQU8sRUFBRTZCLGtCQUZYO0FBR0UsSUFBQSxXQUFXLEVBQUUsS0FIZjtBQUlFLElBQUEsVUFBVSxFQUFFLEtBSmQ7QUFLRSxJQUFBLFFBQVEsRUFBRSxrQkFBQS9FLEtBQUs7QUFBQSxhQUNiN0gsVUFBUSxDQUNOO0FBQ0V5RCxRQUFBQSxTQUFTLGtDQUNKakUsS0FBSyxDQUFDQyxNQUFOLENBQWFnRSxTQURULDRDQUVOc0gsV0FGTSxFQUVRbEQsS0FGUjtBQURYLE9BRE0sRUFPTjRDLE9BQU8sQ0FBQ08sR0FQRixDQURLO0FBQUE7QUFMakIsSUFKRixDQURGO0FBd0JELENBaENNO0FBa0NQIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBGcmFnbWVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdsb2NhbGl6YXRpb24nO1xuXG5pbXBvcnQge0J1dHRvbiwgSW5wdXQsIFBhbmVsTGFiZWwsIFNpZGVQYW5lbFNlY3Rpb259IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBJdGVtU2VsZWN0b3IgZnJvbSAnY29tcG9uZW50cy9jb21tb24vaXRlbS1zZWxlY3Rvci9pdGVtLXNlbGVjdG9yJztcblxuaW1wb3J0IFZpc0NvbmZpZ0J5RmllbGRTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi92aXMtY29uZmlnLWJ5LWZpZWxkLXNlbGVjdG9yJztcbmltcG9ydCBMYXllckNvbHVtbkNvbmZpZ0ZhY3RvcnkgZnJvbSAnLi9sYXllci1jb2x1bW4tY29uZmlnJztcbmltcG9ydCBMYXllclR5cGVTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi9sYXllci10eXBlLXNlbGVjdG9yJztcbmltcG9ydCBMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5IGZyb20gJy4vbGF5ZXItdmlzaWJpbGl0eS1ieS16b29tJztcbmltcG9ydCBEaW1lbnNpb25TY2FsZVNlbGVjdG9yIGZyb20gJy4vZGltZW5zaW9uLXNjYWxlLXNlbGVjdG9yJztcbmltcG9ydCBTb3VyY2VEYXRhU2VsZWN0b3JGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9jb21tb24vc291cmNlLWRhdGEtc2VsZWN0b3InO1xuaW1wb3J0IFZpc0NvbmZpZ1N3aXRjaEZhY3RvcnkgZnJvbSAnLi92aXMtY29uZmlnLXN3aXRjaCc7XG5pbXBvcnQgVmlzQ29uZmlnU2xpZGVyRmFjdG9yeSBmcm9tICcuL3Zpcy1jb25maWctc2xpZGVyJztcbmltcG9ydCBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeSwge0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50fSBmcm9tICcuL2xheWVyLWNvbmZpZy1ncm91cCc7XG5pbXBvcnQgQ3VzdG9tTWFya2Vyc0NvbmZpZ0dyb3VwRmFjdG9yeSBmcm9tICcuL2N1c3RvbS1tYXJrZXJzLWNvbmZpZy1ncm91cCc7XG5pbXBvcnQgVGV4dExhYmVsUGFuZWxGYWN0b3J5IGZyb20gJy4vdGV4dC1sYWJlbC1wYW5lbCc7XG5cbmltcG9ydCB7Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyfSBmcm9tICd1dGlscy91dGlscyc7XG5cbmltcG9ydCB7XG4gIENIQU5ORUxfU0NBTEVTLFxuICBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMsXG4gIFNDQUxFX1RZUEVTXG59IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7TEFZRVJfVFlQRVN9IGZyb20gJ2xheWVycy90eXBlcyc7XG5pbXBvcnQge2luamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IENvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi9jb2xvci1kaW1lbnNpb24tc2NhbGUtc2VsZWN0b3InO1xuaW1wb3J0IENvbG9yU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vY29sb3Itc2VsZWN0b3InO1xuaW1wb3J0IExheWVyQWdncmVnYXRpb25SZXNvbHV0aW9uRmFjdG9yeSBmcm9tICcuL2xheWVyLWFnZ3JlZ2F0aW9uLXJlc29sdXRpb24nO1xuaW1wb3J0IHtoZXhDb2xvckN1c3RvbVBhbGV0dGV9IGZyb20gJ2NvbnN0YW50cy9jb2xvci1yYW5nZXMnO1xuXG5jb25zdCBTdHlsZWRMYXllckNvbmZpZ3VyYXRvciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdsYXllci1wYW5lbF9fY29uZmlnJ1xufSlgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvck1hcmdpbn07XG4gIHBhZGRpbmc6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWd1cmF0b3JQYWRkaW5nfTtcbiAgYm9yZGVyLWxlZnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWd1cmF0b3JCb3JkZXJ9IGRhc2hlZFxuICAgICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWd1cmF0b3JCb3JkZXJDb2xvcn07XG5gO1xuXG5jb25zdCBTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdsYXllci1wYW5lbF9fY29uZmlnX192aXN1YWxDLWNvbmZpZydcbn0pYFxuICBtYXJnaW4tdG9wOiAxMnB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IGdldExheWVyRmllbGRzID0gKGRhdGFzZXRzLCBsYXllcikgPT5cbiAgbGF5ZXIuY29uZmlnICYmIGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdID8gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0uZmllbGRzIDogW107XG5cbmV4cG9ydCBjb25zdCBnZXRMYXllckRhdGFzZXQgPSAoZGF0YXNldHMsIGxheWVyKSA9PlxuICBsYXllci5jb25maWcgJiYgZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0gPyBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXSA6IG51bGw7XG5cbmV4cG9ydCBjb25zdCBnZXRMYXllckNvbmZpZ3VyYXRvclByb3BzID0gcHJvcHMgPT4gKHtcbiAgbGF5ZXI6IHByb3BzLmxheWVyLFxuICBkaXNhYmxlZDogQm9vbGVhbihwcm9wcy5kaXNhYmxlZCksXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyQ29uZmlnLFxuICBzZXRDb2xvclVJOiBwcm9wcy51cGRhdGVMYXllckNvbG9yVUlcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0VmlzQ29uZmlndXJhdG9yUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyVmlzQ29uZmlnLFxuICBzZXRDb2xvclVJOiBwcm9wcy51cGRhdGVMYXllckNvbG9yVUlcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0TGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyxcbiAgb25DaGFuZ2VWaXNDb25maWc6IHByb3BzLnVwZGF0ZUxheWVyVmlzQ29uZmlnXG59KTtcblxuTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5LmRlcHMgPSBbXG4gIFNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnksXG4gIFZpc0NvbmZpZ1NsaWRlckZhY3RvcnksXG4gIFRleHRMYWJlbFBhbmVsRmFjdG9yeSxcbiAgTGF5ZXJDb25maWdHcm91cEZhY3RvcnksXG4gIENoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllckNvbHVtbkNvbmZpZ0ZhY3RvcnksXG4gIExheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSxcbiAgVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSxcbiAgQWdnclNjYWxlU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5LFxuICBMYXllckFnZ3JlZ2F0aW9uUmVzb2x1dGlvbkZhY3RvcnksXG4gIExheWVyQ29sb3JTZWxlY3RvckZhY3RvcnksXG4gIExheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeSxcbiAgQXJjTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSxcbiAgQ3VzdG9tTWFya2Vyc0NvbmZpZ0dyb3VwRmFjdG9yeVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5KFxuICBTb3VyY2VEYXRhU2VsZWN0b3IsXG4gIFZpc0NvbmZpZ1NsaWRlcixcbiAgVGV4dExhYmVsUGFuZWwsXG4gIExheWVyQ29uZmlnR3JvdXAsXG4gIENoYW5uZWxCeVZhbHVlU2VsZWN0b3IsXG4gIExheWVyQ29sdW1uQ29uZmlnLFxuICBMYXllclR5cGVTZWxlY3RvcixcbiAgVmlzQ29uZmlnU3dpdGNoLFxuICBBZ2dyU2NhbGVTZWxlY3RvcixcbiAgTGF5ZXJWaXNpYmlsaXR5Qnlab29tLFxuICBMYXllckFnZ3JlZ2F0aW9uUmVzb2x1dGlvbixcbiAgTGF5ZXJDb2xvclNlbGVjdG9yLFxuICBMYXllckNvbG9yUmFuZ2VTZWxlY3RvcixcbiAgQXJjTGF5ZXJDb2xvclNlbGVjdG9yLFxuICBDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXBcbikge1xuICBjbGFzcyBMYXllckNvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIGxheWVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBkYXRhc2V0czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJUeXBlT3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIG9wZW5Nb2RhbDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZUxheWVyQ29uZmlnOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlTGF5ZXJUeXBlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlTGF5ZXJWaXNDb25maWc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllclZpc3VhbENoYW5uZWxDb25maWc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllckNvbG9yVUk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgICB9O1xuXG4gICAgX3JlbmRlclBvaW50TGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnKHByb3BzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVySWNvbkxheWVyQ29uZmlnKHByb3BzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2NhdHRlcnBsb3RMYXllckNvbmZpZyhwcm9wcyk7XG4gICAgfVxuXG4gICAgX3JlbmRlclNjYXR0ZXJwbG90TGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogRmlsbCBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLihsYXllci52aXNDb25maWdTZXR0aW5ncy5maWxsZWQgfHwge2xhYmVsOiAnbGF5ZXIuY29sb3InfSl9XG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIG91dGxpbmUgY29sb3IgKi99XG4gICAgICAgICAge2xheWVyLnR5cGUgPT09IExBWUVSX1RZUEVTLnBvaW50ID8gKFxuICAgICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm91dGxpbmV9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e0Jvb2xlYW4obGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5jdXN0b21NYXJrZXJzKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zdHJva2VDb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgcHJvcGVydHk9XCJzdHJva2VDb2xvclJhbmdlXCJcbiAgICAgICAgICAgICAgICAgIGZpZWxkPVwic3Ryb2tlQ29sb3JGaWVsZFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yPXtsYXllci5jb25maWcudmlzQ29uZmlnLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgcHJvcGVydHk9XCJzdHJva2VDb2xvclwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50aGlja25lc3N9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWxheWVyLmNvbmZpZy52aXNDb25maWcub3V0bGluZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAge2xheWVyLnR5cGUgPT09IExBWUVSX1RZUEVTLnBvaW50ID8gKFxuICAgICAgICAgICAgPEN1c3RvbU1hcmtlcnNDb25maWdHcm91cFxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzPXt2aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHM9e2xheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHsvKiBSYWRpdXMgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIGxhYmVsPXtsYXllci5jb25maWcudmlzQ29uZmlnLmN1c3RvbU1hcmtlcnMgPyAnbGF5ZXIuc2l6ZScgOiAnbGF5ZXIucmFkaXVzJ31cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgeyFsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtCb29sZWFuKGxheWVyLmNvbmZpZy5zaXplRmllbGQpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXNSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshbGF5ZXIuY29uZmlnLnNpemVGaWVsZH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZX1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiB0ZXh0IGxhYmVsICovfVxuICAgICAgICAgIDxUZXh0TGFiZWxQYW5lbFxuICAgICAgICAgICAgZmllbGRzPXt2aXNDb25maWd1cmF0b3JQcm9wcy5maWVsZHN9XG4gICAgICAgICAgICB1cGRhdGVMYXllclRleHRMYWJlbD17dGhpcy5wcm9wcy51cGRhdGVMYXllclRleHRMYWJlbH1cbiAgICAgICAgICAgIHRleHRMYWJlbD17bGF5ZXIuY29uZmlnLnRleHRMYWJlbH1cbiAgICAgICAgICAgIGNvbG9yUGFsZXR0ZT17dmlzQ29uZmlndXJhdG9yUHJvcHMuY29sb3JQYWxldHRlfVxuICAgICAgICAgICAgc2V0Q29sb3JQYWxldHRlVUk9e3Zpc0NvbmZpZ3VyYXRvclByb3BzLnNldENvbG9yUGFsZXR0ZVVJfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJDbHVzdGVyTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5jb2xvcid9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPEFnZ3JTY2FsZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VWaXNDb25maWc9e2xheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLm9uQ2hhbmdlVmlzQ29uZmlnfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAge2xheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmNvbG9yQWdncmVnYXRpb24uY29uZGl0aW9uKGxheWVyLmNvbmZpZykgPyAoXG4gICAgICAgICAgICAgICAgPEFnZ3JlZ2F0aW9uVHlwZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuY29sb3JBZ2dyZWdhdGlvbn1cbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBDbHVzdGVyIFJhZGl1cyAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLnJhZGl1cyd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuY2x1c3RlclJhZGl1c30gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXNSYW5nZX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJIZWF0bWFwTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5jb2xvcid9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgey8qIFJhZGl1cyAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLnJhZGl1cyd9PlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgIHsvKiBXZWlnaHQgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci53ZWlnaHQnfT5cbiAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLndlaWdodH1cbiAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJHcmlkTGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJBZ2dyZWdhdGlvbkxheWVyQ29uZmlnKHByb3BzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVySGV4YWdvbkxheWVyQ29uZmlnKHByb3BzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyQWdncmVnYXRpb25MYXllckNvbmZpZyhwcm9wcyk7XG4gICAgfVxuXG4gICAgX3JlbmRlckFnZ3JlZ2F0aW9uTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIGNvbnN0IHtjb25maWd9ID0gbGF5ZXI7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZpc0NvbmZpZzoge2VuYWJsZTNkfVxuICAgICAgfSA9IGNvbmZpZztcbiAgICAgIGNvbnN0IGVsZXZhdGlvbkJ5RGVzY3JpcHRpb24gPSAnbGF5ZXIuZWxldmF0aW9uQnlEZXNjcmlwdGlvbic7XG4gICAgICBjb25zdCBjb2xvckJ5RGVzY3JpcHRpb24gPSAnbGF5ZXIuY29sb3JCeURlc2NyaXB0aW9uJztcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLmNvbG9yJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8QWdnclNjYWxlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZz17bGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMub25DaGFuZ2VWaXNDb25maWd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7bGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuY29sb3JBZ2dyZWdhdGlvbi5jb25kaXRpb24obGF5ZXIuY29uZmlnKSA/IChcbiAgICAgICAgICAgICAgICA8QWdncmVnYXRpb25UeXBlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jb2xvckFnZ3JlZ2F0aW9ufVxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e2NvbG9yQnlEZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7bGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucGVyY2VudGlsZSAmJlxuICAgICAgICAgICAgICBsYXllci52aXNDb25maWdTZXR0aW5ncy5wZXJjZW50aWxlLmNvbmRpdGlvbihsYXllci5jb25maWcpID8gKFxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5wZXJjZW50aWxlfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBDZWxsIHNpemUgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5yYWRpdXMnfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLndvcmxkVW5pdFNpemV9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuY292ZXJhZ2V9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIEVsZXZhdGlvbiAqL31cbiAgICAgICAgICB7bGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZW5hYmxlM2QgPyAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZW5hYmxlM2R9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuaGVpZ2h0TXVsdGlwbGllclwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZX1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtlbGV2YXRpb25CeURlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFlbmFibGUzZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxBZ2dyU2NhbGVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2VWaXNDb25maWc9e2xheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLm9uQ2hhbmdlVmlzQ29uZmlnfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVSYW5nZX1cbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIGxhYmVsPVwibGF5ZXJWaXNDb25maWdzLmhlaWdodFJhbmdlXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplQWdncmVnYXRpb24uY29uZGl0aW9uKGxheWVyLmNvbmZpZykgPyAoXG4gICAgICAgICAgICAgICAgICA8QWdncmVnYXRpb25UeXBlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVBZ2dyZWdhdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICB7bGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uUGVyY2VudGlsZS5jb25kaXRpb24obGF5ZXIuY29uZmlnKSA/IChcbiAgICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVsZXZhdGlvblBlcmNlbnRpbGV9XG4gICAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFNoYW4gbW92ZSB0aGVzZSBpbnRvIGxheWVyIGNsYXNzXG4gICAgX3JlbmRlckhleGFnb25JZExheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICAgICAgey8qIENvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIuY29sb3InfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogQ292ZXJhZ2UgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5jb3ZlcmFnZSd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgeyFsYXllci5jb25maWcuY292ZXJhZ2VGaWVsZCA/IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jb3ZlcmFnZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jb3ZlcmFnZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvdmVyYWdlfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIGhlaWdodCAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZTNkfVxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVsZXZhdGlvblNjYWxlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplUmFuZ2V9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPVwibGF5ZXJWaXNDb25maWdzLmhlaWdodFJhbmdlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICA8L1N0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyQXJjTGF5ZXJDb25maWcoYXJncykge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckxpbmVMYXllckNvbmZpZyhhcmdzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyTGluZUxheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICAgICAgey8qIENvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIuY29sb3InfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxBcmNMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgICAgc2V0Q29sb3JVST17bGF5ZXJDb25maWd1cmF0b3JQcm9wcy5zZXRDb2xvclVJfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlQ29uZmlnPXtsYXllckNvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlVmlzQ29uZmlnPXt2aXNDb25maWd1cmF0b3JQcm9wcy5vbkNoYW5nZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc291cmNlQ29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiB0aGlja25lc3MgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5zdHJva2UnfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFsYXllci5jb25maWcuc2l6ZUZpZWxkfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MudGhpY2tuZXNzfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogZWxldmF0aW9uIHNjYWxlICovfVxuICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZSA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPVwibGF5ZXJWaXNDb25maWdzLmVsZXZhdGlvblNjYWxlXCIgY29sbGFwc2libGU+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uU2NhbGV9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1N0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyVHJpcExheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1ldGE6IHtmZWF0dXJlVHlwZXMgPSB7fX1cbiAgICAgIH0gPSBsYXllcjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLmNvbG9yJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLmNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yIHsuLi5sYXllckNvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIFN0cm9rZSBXaWR0aCAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IGxhYmVsPVwibGF5ZXIuc3Ryb2tlV2lkdGhcIiBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50aGlja25lc3N9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIFRyYWlsIExlbmd0aCovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICB7Li4uKGZlYXR1cmVUeXBlcy5wb2x5Z29uID8gbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZCA6IHt9KX1cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIudHJhaWxMZW5ndGhcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJsYXllci50cmFpbExlbmd0aERlc2NyaXB0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50cmFpbExlbmd0aH1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlckdlb2pzb25MYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzXG4gICAgfSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBtZXRhOiB7ZmVhdHVyZVR5cGVzID0ge319LFxuICAgICAgICBjb25maWc6IHt2aXNDb25maWd9XG4gICAgICB9ID0gbGF5ZXI7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogRmlsbCBDb2xvciAqL31cbiAgICAgICAgICB7ZmVhdHVyZVR5cGVzLnBvbHlnb24gfHwgZmVhdHVyZVR5cGVzLnBvaW50ID8gKFxuICAgICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmZpbGxlZH1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBsYWJlbD1cImxheWVyLmZpbGxDb2xvclwiXG4gICAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7Lyogc3Ryb2tlIGNvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZH1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuc3Ryb2tlQ29sb3JcIlxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnN0cm9rZUNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yUmFuZ2VcIlxuICAgICAgICAgICAgICAgIGZpZWxkPVwic3Ryb2tlQ29sb3JGaWVsZFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I9e2xheWVyLmNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgcHJvcGVydHk9XCJzdHJva2VDb2xvclwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zdHJva2VPcGFjaXR5fVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIFN0cm9rZSBXaWR0aCAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgey4uLihmZWF0dXJlVHlwZXMucG9seWdvbiA/IGxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZWQgOiB7fSl9XG4gICAgICAgICAgICBsYWJlbD1cImxheWVyLnN0cm9rZVdpZHRoXCJcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIEVsZXZhdGlvbiAqL31cbiAgICAgICAgICB7ZmVhdHVyZVR5cGVzLnBvbHlnb24gPyAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbmFibGUzZH1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyF2aXNDb25maWcuZmlsbGVkfVxuICAgICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVsZXZhdGlvblNjYWxlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuaGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1N3aXRjaCB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy53aXJlZnJhbWV9IC8+XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7LyogUmFkaXVzICovfVxuICAgICAgICAgIHtmZWF0dXJlVHlwZXMucG9pbnQgPyAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLnJhZGl1cyd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICB7IWxheWVyLmNvbmZpZy5yYWRpdXNGaWVsZCA/IChcbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e0Jvb2xlYW4obGF5ZXIuY29uZmlnLnJhZGl1c0ZpZWxkKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXNSYW5nZX1cbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshbGF5ZXIuY29uZmlnLnJhZGl1c0ZpZWxkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMucmFkaXVzfVxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXIzRExheWVyQ29uZmlnKHtsYXllciwgdmlzQ29uZmlndXJhdG9yUHJvcHN9KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci4zRE1vZGVsJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICBhY2NlcHQ9XCIuZ2xiLC5nbHRmXCJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2UgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5maWxlcyAmJiBlLnRhcmdldC5maWxlc1swXSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChlLnRhcmdldC5maWxlc1swXSk7XG4gICAgICAgICAgICAgICAgICB2aXNDb25maWd1cmF0b3JQcm9wcy5vbkNoYW5nZSh7c2NlbmVncmFwaDogdXJsfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci4zRE1vZGVsT3B0aW9ucyd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVNjYWxlfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5hbmdsZVh9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmFuZ2xlWX1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuYW5nbGVafVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyUzJMYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzXG4gICAgfSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBjb25maWc6IHt2aXNDb25maWd9XG4gICAgICB9ID0gbGF5ZXI7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5maWxsZWR9XG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICBsYWJlbD1cImxheWVyLmZpbGxDb2xvclwiXG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZH1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuc3Ryb2tlQ29sb3JcIlxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnN0cm9rZUNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yUmFuZ2VcIlxuICAgICAgICAgICAgICAgIGZpZWxkPVwic3Ryb2tlQ29sb3JGaWVsZFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I9e2xheWVyLmNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgcHJvcGVydHk9XCJzdHJva2VDb2xvclwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIFN0cm9rZSBXaWR0aCAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IGxhYmVsPVwibGF5ZXIuc3Ryb2tlV2lkdGhcIiBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50aGlja25lc3N9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZX1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBFbGV2YXRpb24gKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbmFibGUzZH1cbiAgICAgICAgICAgIGRpc2FibGVkPXshdmlzQ29uZmlnLmZpbGxlZH1cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuaGVpZ2h0fVxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uU2NhbGV9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuZWxldmF0aW9uU2NhbGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5oZWlnaHRSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuaGVpZ2h0UmFuZ2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU3dpdGNoIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLndpcmVmcmFtZX0gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICA8L1N0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bGF5ZXIsIGRhdGFzZXRzLCB1cGRhdGVMYXllckNvbmZpZywgbGF5ZXJUeXBlT3B0aW9ucywgdXBkYXRlTGF5ZXJUeXBlfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7ZmllbGRzID0gW10sIGZpZWxkUGFpcnMgPSB1bmRlZmluZWR9ID0gbGF5ZXIuY29uZmlnLmRhdGFJZFxuICAgICAgICA/IGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdXG4gICAgICAgIDoge307XG4gICAgICBjb25zdCB7Y29uZmlnfSA9IGxheWVyO1xuXG4gICAgICBjb25zdCB2aXNDb25maWd1cmF0b3JQcm9wcyA9IGdldFZpc0NvbmZpZ3VyYXRvclByb3BzKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyA9IGdldExheWVyQ29uZmlndXJhdG9yUHJvcHModGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllckNoYW5uZWxDb25maWdQcm9wcyA9IGdldExheWVyQ2hhbm5lbENvbmZpZ1Byb3BzKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgZGF0YXNldCA9IGdldExheWVyRGF0YXNldChkYXRhc2V0cywgbGF5ZXIpO1xuICAgICAgY29uc3QgcmVuZGVyVGVtcGxhdGUgPSBsYXllci50eXBlICYmIGBfcmVuZGVyJHtjYXBpdGFsaXplRmlyc3RMZXR0ZXIobGF5ZXIudHlwZSl9TGF5ZXJDb25maWdgO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJDb25maWd1cmF0b3I+XG4gICAgICAgICAge2xheWVyLmxheWVySW5mb01vZGFsID8gKFxuICAgICAgICAgICAgPEhvd1RvQnV0dG9uIG9uQ2xpY2s9eygpID0+IHRoaXMucHJvcHMub3Blbk1vZGFsKGxheWVyLmxheWVySW5mb01vZGFsKX0gLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgbGFiZWw9eydsYXllci5iYXNpYyd9XG4gICAgICAgICAgICBjb2xsYXBzaWJsZT17T2JqZWN0LmtleXMobGF5ZXIuY29uZmlnLmNvbHVtbnMpLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICBleHBhbmRlZD17IWxheWVyLmhhc0FsbENvbHVtbnMoKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TGF5ZXJUeXBlU2VsZWN0b3JcbiAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIGxheWVyVHlwZU9wdGlvbnM9e2xheWVyVHlwZU9wdGlvbnN9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXt1cGRhdGVMYXllclR5cGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPExheWVyVmlzaWJpbGl0eUJ5Wm9vbVxuICAgICAgICAgICAgICB1cGRhdGVMYXllckNvbmZpZz17dGhpcy5wcm9wcy51cGRhdGVMYXllckNvbmZpZ31cbiAgICAgICAgICAgICAgbGF5ZXI9e2xheWVyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17bGF5ZXJDb25maWd1cmF0b3JQcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8TGF5ZXJBZ2dyZWdhdGlvblJlc29sdXRpb24gbGF5ZXI9e2xheWVyfSBkaXNhYmxlZD17bGF5ZXJDb25maWd1cmF0b3JQcm9wcy5kaXNhYmxlZH0gLz5cbiAgICAgICAgICAgIHtPYmplY3Qua2V5cyhkYXRhc2V0cykubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgIDxTb3VyY2VEYXRhU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgICAgaWQ9e2xheWVyLmlkfVxuICAgICAgICAgICAgICAgIGRhdGFJZD17Y29uZmlnLmRhdGFJZH1cbiAgICAgICAgICAgICAgICBvblNlbGVjdD17dmFsdWUgPT4gdXBkYXRlTGF5ZXJDb25maWcoe2RhdGFJZDogdmFsdWV9KX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7T2JqZWN0LmtleXMobGF5ZXIuY29uZmlnLmNvbHVtbnMpLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPExheWVyQ29sdW1uQ29uZmlnXG4gICAgICAgICAgICAgICAgICBjb2x1bW5QYWlycz17bGF5ZXIuY29sdW1uUGFpcnN9XG4gICAgICAgICAgICAgICAgICBjb2x1bW5zPXtsYXllci5jb25maWcuY29sdW1uc31cbiAgICAgICAgICAgICAgICAgIGFzc2lnbkNvbHVtblBhaXJzPXtsYXllci5hc3NpZ25Db2x1bW5QYWlycy5iaW5kKGxheWVyKX1cbiAgICAgICAgICAgICAgICAgIGFzc2lnbkNvbHVtbj17bGF5ZXIuYXNzaWduQ29sdW1uLmJpbmQobGF5ZXIpfVxuICAgICAgICAgICAgICAgICAgY29sdW1uTGFiZWxzPXtsYXllci5jb2x1bW5MYWJlbHN9XG4gICAgICAgICAgICAgICAgICBmaWVsZHM9e2ZpZWxkc31cbiAgICAgICAgICAgICAgICAgIGZpZWxkUGFpcnM9e2ZpZWxkUGFpcnN9XG4gICAgICAgICAgICAgICAgICB1cGRhdGVMYXllckNvbmZpZz17dXBkYXRlTGF5ZXJDb25maWd9XG4gICAgICAgICAgICAgICAgICB1cGRhdGVMYXllclR5cGU9e3RoaXMucHJvcHMudXBkYXRlTGF5ZXJUeXBlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICB7dGhpc1tyZW5kZXJUZW1wbGF0ZV0gJiZcbiAgICAgICAgICAgIHRoaXNbcmVuZGVyVGVtcGxhdGVdKHtcbiAgICAgICAgICAgICAgbGF5ZXIsXG4gICAgICAgICAgICAgIGRhdGFzZXQsXG4gICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgICAgICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wcyxcbiAgICAgICAgICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wc1xuICAgICAgICAgICAgfSl9XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBMYXllckNvbmZpZ3VyYXRvcjtcbn1cbi8qXG4gKiBDb21wb25lbnRpemUgY29uZmlnIGNvbXBvbmVudCBpbnRvIHB1cmUgZnVuY3Rpb25hbCBjb21wb25lbnRzXG4gKi9cblxuY29uc3QgU3R5bGVkSG93VG9CdXR0b24gPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxMnB4O1xuICB0b3A6IC00cHg7XG5gO1xuXG5leHBvcnQgY29uc3QgSG93VG9CdXR0b24gPSAoe29uQ2xpY2t9KSA9PiAoXG4gIDxTdHlsZWRIb3dUb0J1dHRvbj5cbiAgICA8QnV0dG9uIGxpbmsgc21hbGwgb25DbGljaz17b25DbGlja30+XG4gICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J2xheWVyQ29uZmlndXJhdGlvbi5ob3dUbyd9IC8+XG4gICAgPC9CdXR0b24+XG4gIDwvU3R5bGVkSG93VG9CdXR0b24+XG4pO1xuXG5MYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbQ29sb3JTZWxlY3RvckZhY3RvcnldO1xuZXhwb3J0IGZ1bmN0aW9uIExheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkoQ29sb3JTZWxlY3Rvcikge1xuICBjbGFzcyBMYXllckNvbG9yU2VsZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtsYXllciwgb25DaGFuZ2UsIHNlbGVjdGVkQ29sb3IsIHByb3BlcnR5ID0gJ2NvbG9yJywgc2V0Q29sb3JVSSwgZmllbGRzfSA9IHRoaXMucHJvcHM7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibGF5ZXIuY29sb3JcIiAvPlxuICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICA8Q29sb3JTZWxlY3RvclxuICAgICAgICAgICAgZmllbGRzPXtmaWVsZHN9XG4gICAgICAgICAgICBjb2xvclNldHM9e1tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I6IHNlbGVjdGVkQ29sb3IgfHwgbGF5ZXIuY29uZmlnLmNvbG9yLFxuICAgICAgICAgICAgICAgIHNldENvbG9yOiByZ2JWYWx1ZSA9PiBvbkNoYW5nZSh7W3Byb3BlcnR5XTogcmdiVmFsdWV9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdfVxuICAgICAgICAgICAgY29sb3JVST17bGF5ZXIuY29uZmlnLmNvbG9yVUlbcHJvcGVydHldfVxuICAgICAgICAgICAgc2V0Q29sb3JVST17bmV3Q29uZmlnID0+IHNldENvbG9yVUkocHJvcGVydHksIG5ld0NvbmZpZyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTGF5ZXJDb2xvclNlbGVjdG9yO1xufVxuXG5BcmNMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbQ29sb3JTZWxlY3RvckZhY3RvcnldO1xuZXhwb3J0IGZ1bmN0aW9uIEFyY0xheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkoQ29sb3JTZWxlY3Rvcikge1xuICBjbGFzcyBBcmNMYXllckNvbG9yU2VsZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbGF5ZXIsXG4gICAgICAgIG9uQ2hhbmdlQ29uZmlnLFxuICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZyxcbiAgICAgICAgcHJvcGVydHkgPSAnY29sb3InLFxuICAgICAgICBzZXRDb2xvclVJLFxuICAgICAgICBmaWVsZHNcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibGF5ZXIuY29sb3JSYW5nZVwiIC8+XG4gICAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICAgIDxDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICBmaWVsZHM9e2ZpZWxkc31cbiAgICAgICAgICAgIGNvbG9yU2V0cz17W1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogbGF5ZXIuY29uZmlnLmNvbG9yLFxuICAgICAgICAgICAgICAgIHNldENvbG9yOiByZ2JWYWx1ZSA9PiBvbkNoYW5nZUNvbmZpZyh7Y29sb3I6IHJnYlZhbHVlfSksXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdTb3VyY2UnXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yOiBsYXllci5jb25maWcudmlzQ29uZmlnLnRhcmdldENvbG9yIHx8IGxheWVyLmNvbmZpZy5jb2xvcixcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogcmdiVmFsdWUgPT4gb25DaGFuZ2VWaXNDb25maWcoe3RhcmdldENvbG9yOiByZ2JWYWx1ZX0pLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGFyZ2V0J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdfVxuICAgICAgICAgICAgY29sb3JVST17bGF5ZXIuY29uZmlnLmNvbG9yVUlbcHJvcGVydHldfVxuICAgICAgICAgICAgc2V0Q29sb3JVST17bmV3Q29uZmlnID0+IHNldENvbG9yVUkocHJvcGVydHksIG5ld0NvbmZpZyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIEFyY0xheWVyQ29sb3JTZWxlY3Rvcjtcbn1cblxuTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbQ29sb3JTZWxlY3RvckZhY3RvcnldO1xuZXhwb3J0IGZ1bmN0aW9uIExheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeShDb2xvclNlbGVjdG9yKSB7XG4gIGNsYXNzIExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGxheWVyLFxuICAgICAgICBvbkNoYW5nZSxcbiAgICAgICAgcHJvcGVydHkgPSAnY29sb3JSYW5nZScsXG4gICAgICAgIGZpZWxkID0gJ2NvbG9yRmllbGQnLFxuICAgICAgICBzY2FsZSA9ICdjb2xvclNjYWxlJyxcbiAgICAgICAgc2V0Q29sb3JVSSxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICBoYW5kbGVDdXN0b21PblNlbGVjdEhleENvbHVtblxuICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibGF5ZXIuY29sb3JSYW5nZVwiIC8+XG4gICAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICAgIDxDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICBmaWVsZHM9e2ZpZWxkc31cbiAgICAgICAgICAgIGNvbG9yU2V0cz17W1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV0sXG4gICAgICAgICAgICAgICAgaXNSYW5nZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogY29sb3JSYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgICBsYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICAgICAgICAgICAgICAgIFtzY2FsZV06IFNDQUxFX1RZUEVTLm9yZGluYWxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgY29uc3Qge2NvbG9yTWFwfSA9IGxheWVyLmNvbmZpZy52aXNDb25maWdbcHJvcGVydHldO1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3JSYW5nZVVwZGF0ZWQgPSBjb2xvck1hcFxuICAgICAgICAgICAgICAgICAgICA/IGxheWVyLnVwZGF0ZUNvbG9yTWFwKHByb3BlcnR5LCBjb2xvck1hcCwgY29sb3JSYW5nZSlcbiAgICAgICAgICAgICAgICAgICAgOiBjb2xvclJhbmdlO1xuICAgICAgICAgICAgICAgICAgb25DaGFuZ2Uoe1twcm9wZXJ0eV06IGNvbG9yUmFuZ2VVcGRhdGVkfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdfVxuICAgICAgICAgICAgY29sb3JVST17bGF5ZXIuY29uZmlnLmNvbG9yVUlbcHJvcGVydHldfVxuICAgICAgICAgICAgc2V0Q29sb3JVST17bmV3Q29uZmlnID0+IHNldENvbG9yVUkocHJvcGVydHksIG5ld0NvbmZpZyl9XG4gICAgICAgICAgICBvblNlbGVjdEhleENvbG9yQ29sdW1uPXtjb2xvckNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgIGlmIChoYW5kbGVDdXN0b21PblNlbGVjdEhleENvbHVtbikge1xuICAgICAgICAgICAgICAgIGhhbmRsZUN1c3RvbU9uU2VsZWN0SGV4Q29sdW1uKGxheWVyLCBjb2xvckNvbHVtbik7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBsYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICAgICAgICAgICAgW2ZpZWxkXToge1xuICAgICAgICAgICAgICAgICAgLi4ubGF5ZXIuY29uZmlnW2ZpZWxkXSxcbiAgICAgICAgICAgICAgICAgIGNvbG9yQ29sdW1uOiBjb2xvckNvbHVtbj8ubmFtZSxcbiAgICAgICAgICAgICAgICAgIGNvbG9yQ29sdW1uSWR4OiBjb2xvckNvbHVtbj8uZmllbGRJZHhcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtzY2FsZV06IFNDQUxFX1RZUEVTLmlkZW50aXR5XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHtbcHJvcGVydHldOiBoZXhDb2xvckN1c3RvbVBhbGV0dGV9KTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIExheWVyQ29sb3JSYW5nZVNlbGVjdG9yO1xufVxuXG5DaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW1Zpc0NvbmZpZ0J5RmllbGRTZWxlY3RvckZhY3RvcnldO1xuZXhwb3J0IGZ1bmN0aW9uIENoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5KFZpc0NvbmZpZ0J5RmllbGRTZWxlY3Rvcikge1xuICBjb25zdCBDaGFubmVsQnlWYWx1ZVNlbGVjdG9yID0gKHtcbiAgICBsYXllcixcbiAgICBjaGFubmVsLFxuICAgIG9uQ2hhbmdlLFxuICAgIG9uQ2hhbmdlVmlzQ29uZmlnLFxuICAgIGZpZWxkcyxcbiAgICBmaWVsZHNBZ2dyZWdhdGVkLFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGlzTG9hZGluZ1xuICB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgY2hhbm5lbFNjYWxlVHlwZSxcbiAgICAgIGRvbWFpbixcbiAgICAgIGZpZWxkLFxuICAgICAgYWdncmVnYXRpb24sXG4gICAgICBrZXksXG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIHJhbmdlLFxuICAgICAgc2NhbGUsXG4gICAgICBkZWZhdWx0TWVhc3VyZSxcbiAgICAgIHN1cHBvcnRlZEZpZWxkVHlwZXNcbiAgICB9ID0gY2hhbm5lbDtcbiAgICBjb25zdCBjaGFubmVsU3VwcG9ydGVkRmllbGRUeXBlcyA9XG4gICAgICBzdXBwb3J0ZWRGaWVsZFR5cGVzIHx8IENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEU1tjaGFubmVsU2NhbGVUeXBlXTtcbiAgICBjb25zdCBzdXBwb3J0ZWRGaWVsZHMgPSBmaWVsZHMuZmlsdGVyKCh7dHlwZX0pID0+IGNoYW5uZWxTdXBwb3J0ZWRGaWVsZFR5cGVzLmluY2x1ZGVzKHR5cGUpKTtcbiAgICBjb25zdCBzY2FsZU9wdGlvbnMgPSBsYXllci5nZXRTY2FsZU9wdGlvbnMoY2hhbm5lbC5rZXkpO1xuICAgIGNvbnN0IHNob3dTY2FsZUN1c3RvbWl6YWJsZSA9XG4gICAgICBjaGFubmVsU2NhbGVUeXBlID09PSBDSEFOTkVMX1NDQUxFUy5jb2xvciAmJlxuICAgICAgc2NhbGUgJiZcbiAgICAgIGxheWVyLmNvbmZpZ1tzY2FsZV0gJiZcbiAgICAgIEJvb2xlYW4obGF5ZXIuY29uZmlnW2ZpZWxkXSkgJiZcbiAgICAgIHNjYWxlT3B0aW9ucz8ubGVuZ3RoID4gMDtcbiAgICBjb25zdCBzaG93U2NhbGUgPSBCb29sZWFuKFxuICAgICAgIXNob3dTY2FsZUN1c3RvbWl6YWJsZSAmJlxuICAgICAgICBzY2FsZSAmJlxuICAgICAgICAhbGF5ZXIuaXNBZ2dyZWdhdGVkICYmXG4gICAgICAgIGxheWVyLmNvbmZpZ1tzY2FsZV0gJiZcbiAgICAgICAgc2NhbGVPcHRpb25zPy5sZW5ndGggPiAxXG4gICAgKTtcbiAgICBjb25zdCBkZWZhdWx0RGVzY3JpcHRpb24gPSAnbGF5ZXJDb25maWd1cmF0aW9uLmRlZmF1bHREZXNjcmlwdGlvbic7XG4gICAgY29uc3QgdmlzUmFuZ2UgPSBsYXllci5jb25maWcudmlzQ29uZmlnW3JhbmdlXTtcbiAgICBjb25zdCBhZ2dyZWdhdG9yID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1thZ2dyZWdhdGlvbl07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpc0NvbmZpZ0J5RmllbGRTZWxlY3RvclxuICAgICAgICBjaGFubmVsPXtjaGFubmVsLmtleX1cbiAgICAgICAgZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9uIHx8IGRlZmF1bHREZXNjcmlwdGlvbn1cbiAgICAgICAgZG9tYWluPXtsYXllci5jb25maWdbZG9tYWluXX1cbiAgICAgICAgZmllbGRzPXtzdXBwb3J0ZWRGaWVsZHN9XG4gICAgICAgIGFnZ3JlZ2F0b3I9e2FnZ3JlZ2F0b3J9XG4gICAgICAgIGZpZWxkc0FnZ3JlZ2F0ZWQ9e2ZpZWxkc0FnZ3JlZ2F0ZWR9XG4gICAgICAgIGlkPXtsYXllci5pZH1cbiAgICAgICAga2V5PXtgJHtrZXl9LWNoYW5uZWwtc2VsZWN0b3JgfVxuICAgICAgICBwcm9wZXJ0eT17cHJvcGVydHl9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtkZWZhdWx0TWVhc3VyZSB8fCAncGxhY2Vob2xkZXIuc2VsZWN0RmllbGQnfVxuICAgICAgICByYW5nZT17dmlzUmFuZ2V9XG4gICAgICAgIHNjYWxlT3B0aW9ucz17c2NhbGVPcHRpb25zfVxuICAgICAgICBzY2FsZVR5cGU9e3NjYWxlID8gbGF5ZXIuY29uZmlnW3NjYWxlXSA6IG51bGx9XG4gICAgICAgIHNlbGVjdGVkRmllbGQ9e2xheWVyLmNvbmZpZ1tmaWVsZF19XG4gICAgICAgIHNob3dTY2FsZT17c2hvd1NjYWxlfVxuICAgICAgICBzaG93U2NhbGVDdXN0b21pemFibGU9e3Nob3dTY2FsZUN1c3RvbWl6YWJsZX1cbiAgICAgICAgdXBkYXRlRmllbGQ9e3ZhbCA9PiB7XG4gICAgICAgICAgaWYgKHZpc1JhbmdlPy5jb2xvck1hcCkge1xuICAgICAgICAgICAgb25DaGFuZ2VWaXNDb25maWcoe1tyYW5nZV06IHsuLi52aXNSYW5nZSwgY29sb3JNYXA6IHVuZGVmaW5lZH19KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb25DaGFuZ2UoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFtmaWVsZF06IHZhbCxcbiAgICAgICAgICAgICAgLi4uKGZpZWxkc0FnZ3JlZ2F0ZWQgJiYge1xuICAgICAgICAgICAgICAgIHZpc0NvbmZpZzoge1xuICAgICAgICAgICAgICAgICAgLi4ubGF5ZXIuY29uZmlnLnZpc0NvbmZpZyxcbiAgICAgICAgICAgICAgICAgIFthZ2dyZWdhdGlvbl06IHZhbD8uc2VsZWN0ZWRBZ2dyZWdhdG9yXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGtleVxuICAgICAgICAgICk7XG4gICAgICAgIH19XG4gICAgICAgIHVwZGF0ZVNjYWxlPXt2YWwgPT4gb25DaGFuZ2Uoe1tzY2FsZV06IHZhbH0sIGtleSl9XG4gICAgICAgIHVwZGF0ZUN1c3RvbVBhbGV0dGU9eyhjb2xvck1hcCwgdWlDdXN0b21TY2FsZVR5cGUpID0+IHtcbiAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZyh7W3JhbmdlXTogey4uLnZpc1JhbmdlLCBjb2xvck1hcCwgdWlDdXN0b21TY2FsZVR5cGV9fSk7XG4gICAgICAgIH19XG4gICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBDaGFubmVsQnlWYWx1ZVNlbGVjdG9yO1xufVxuXG5BZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtDb2xvckRpbWVuc2lvblNjYWxlU2VsZWN0b3JGYWN0b3J5XTtcblxuZnVuY3Rpb24gQWdnclNjYWxlU2VsZWN0b3JGYWN0b3J5KENvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3Rvcikge1xuICBjbGFzcyBBZ2dyU2NhbGVTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2NoYW5uZWwsIGxheWVyLCBvbkNoYW5nZSwgb25DaGFuZ2VWaXNDb25maWd9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtzY2FsZSwga2V5LCBjaGFubmVsU2NhbGVUeXBlLCBkb21haW4sIHJhbmdlfSA9IGNoYW5uZWw7XG4gICAgICBjb25zdCBzY2FsZU9wdGlvbnMgPSBsYXllci5nZXRTY2FsZU9wdGlvbnMoa2V5KTtcbiAgICAgIGNvbnN0IHZpc1JhbmdlID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1tyYW5nZV07XG4gICAgICBjb25zdCBzaG93U2NhbGVDdXN0b21pemFibGUgPVxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlID09PSBDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3IgJiZcbiAgICAgICAgQXJyYXkuaXNBcnJheShzY2FsZU9wdGlvbnMpICYmXG4gICAgICAgIHNjYWxlT3B0aW9ucy5sZW5ndGggPiAwO1xuICAgICAgY29uc3Qgc2hvd1NjYWxlID0gQXJyYXkuaXNBcnJheShzY2FsZU9wdGlvbnMpICYmIHNjYWxlT3B0aW9ucy5sZW5ndGggPiAxO1xuXG4gICAgICBpZiAoc2hvd1NjYWxlQ3VzdG9taXphYmxlKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICA8Q29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yXG4gICAgICAgICAgICAgIGxhYmVsPXtgJHtrZXl9IFNjYWxlYH1cbiAgICAgICAgICAgICAgc2NhbGVUeXBlPXtsYXllci5jb25maWdbc2NhbGVdfVxuICAgICAgICAgICAgICBvcHRpb25zPXtzY2FsZU9wdGlvbnN9XG4gICAgICAgICAgICAgIGRvbWFpbj17bGF5ZXIuY29uZmlnW2RvbWFpbl19XG4gICAgICAgICAgICAgIHJhbmdlPXt2aXNSYW5nZX1cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e3ZhbCA9PiBvbkNoYW5nZSh7W3NjYWxlXTogdmFsfSwga2V5KX1cbiAgICAgICAgICAgICAgb25TZXRDdXN0b21QYWxldHRlPXsoY29sb3JNYXAsIHVpQ3VzdG9tU2NhbGVUeXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VWaXNDb25maWcoe1tyYW5nZV06IHsuLi52aXNSYW5nZSwgY29sb3JNYXAsIHVpQ3VzdG9tU2NhbGVUeXBlfX0pO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzaG93U2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8RGltZW5zaW9uU2NhbGVTZWxlY3RvclxuICAgICAgICAgICAgbGFiZWw9e2Ake2tleX0gU2NhbGVgfVxuICAgICAgICAgICAgb3B0aW9ucz17c2NhbGVPcHRpb25zfVxuICAgICAgICAgICAgc2NhbGVUeXBlPXtsYXllci5jb25maWdbc2NhbGVdfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3ZhbCA9PiBvbkNoYW5nZSh7W3NjYWxlXTogdmFsfSwga2V5KX1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmplY3RJbnRsKEFnZ3JTY2FsZVNlbGVjdG9yKTtcbn1cblxuZXhwb3J0IGNvbnN0IEFnZ3JlZ2F0aW9uVHlwZVNlbGVjdG9yID0gKHtsYXllciwgY2hhbm5lbCwgb25DaGFuZ2V9KSA9PiB7XG4gIGNvbnN0IHtmaWVsZCwgYWdncmVnYXRpb24sIGtleX0gPSBjaGFubmVsO1xuICBjb25zdCBzZWxlY3RlZEZpZWxkID0gbGF5ZXIuY29uZmlnW2ZpZWxkXTtcbiAgY29uc3Qge3Zpc0NvbmZpZ30gPSBsYXllci5jb25maWc7XG5cbiAgLy8gYWdncmVnYXRpb24gc2hvdWxkIG9ubHkgYmUgc2VsZWN0YWJsZSB3aGVuIGZpZWxkIGlzIHNlbGVjdGVkXG4gIGNvbnN0IGFnZ3JlZ2F0aW9uT3B0aW9ucyA9IGxheWVyLmdldEFnZ3JlZ2F0aW9uT3B0aW9ucyhrZXkpO1xuXG4gIHJldHVybiAoXG4gICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydsYXllci5hZ2dyZWdhdGVCeSd9IHZhbHVlcz17e2ZpZWxkOiBzZWxlY3RlZEZpZWxkLm5hbWV9fSAvPlxuICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgPEl0ZW1TZWxlY3RvclxuICAgICAgICBzZWxlY3RlZEl0ZW1zPXt2aXNDb25maWdbYWdncmVnYXRpb25dfVxuICAgICAgICBvcHRpb25zPXthZ2dyZWdhdGlvbk9wdGlvbnN9XG4gICAgICAgIG11bHRpU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgc2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PlxuICAgICAgICAgIG9uQ2hhbmdlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB2aXNDb25maWc6IHtcbiAgICAgICAgICAgICAgICAuLi5sYXllci5jb25maWcudmlzQ29uZmlnLFxuICAgICAgICAgICAgICAgIFthZ2dyZWdhdGlvbl06IHZhbHVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGFubmVsLmtleVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICk7XG59O1xuXG4vKiBlc2xpbnQtZW5hYmxlIG1heC1wYXJhbXMgKi9cbiJdfQ==
1005
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlndXJhdG9yLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlndXJhdG9yIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJwcm9wcyIsInRoZW1lIiwibGF5ZXJDb25maWd1cmF0b3JNYXJnaW4iLCJsYXllckNvbmZpZ3VyYXRvclBhZGRpbmciLCJsYXllckNvbmZpZ3VyYXRvckJvcmRlciIsImxheWVyQ29uZmlndXJhdG9yQm9yZGVyQ29sb3IiLCJTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciIsImdldExheWVyRmllbGRzIiwiZGF0YXNldHMiLCJsYXllciIsImNvbmZpZyIsImRhdGFJZCIsImZpZWxkcyIsImdldExheWVyRGF0YXNldCIsImdldExheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJkaXNhYmxlZCIsIkJvb2xlYW4iLCJvbkNoYW5nZSIsInVwZGF0ZUxheWVyQ29uZmlnIiwic2V0Q29sb3JVSSIsInVwZGF0ZUxheWVyQ29sb3JVSSIsImdldFZpc0NvbmZpZ3VyYXRvclByb3BzIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJnZXRMYXllckNoYW5uZWxDb25maWdQcm9wcyIsInVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyIsIm9uQ2hhbmdlVmlzQ29uZmlnIiwiTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5IiwiZGVwcyIsIlNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkiLCJWaXNDb25maWdTbGlkZXJGYWN0b3J5IiwiVGV4dExhYmVsUGFuZWxGYWN0b3J5IiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sdW1uQ29uZmlnRmFjdG9yeSIsIkxheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSIsIlZpc0NvbmZpZ1N3aXRjaEZhY3RvcnkiLCJBZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnkiLCJMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5IiwiTGF5ZXJBZ2dyZWdhdGlvblJlc29sdXRpb25GYWN0b3J5IiwiTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeSIsIkFyY0xheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkiLCJDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXBGYWN0b3J5IiwiU291cmNlRGF0YVNlbGVjdG9yIiwiVmlzQ29uZmlnU2xpZGVyIiwiVGV4dExhYmVsUGFuZWwiLCJMYXllckNvbmZpZ0dyb3VwIiwiQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvciIsIkxheWVyQ29sdW1uQ29uZmlnIiwiTGF5ZXJUeXBlU2VsZWN0b3IiLCJWaXNDb25maWdTd2l0Y2giLCJBZ2dyU2NhbGVTZWxlY3RvciIsIkxheWVyVmlzaWJpbGl0eUJ5Wm9vbSIsIkxheWVyQWdncmVnYXRpb25SZXNvbHV0aW9uIiwiTGF5ZXJDb2xvclNlbGVjdG9yIiwiTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IiLCJBcmNMYXllckNvbG9yU2VsZWN0b3IiLCJDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXAiLCJMYXllckNvbmZpZ3VyYXRvciIsIl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJ2aXNDb25maWdTZXR0aW5ncyIsImZpbGxlZCIsImxhYmVsIiwiY29sb3JGaWVsZCIsInZpc3VhbENoYW5uZWxzIiwiY29sb3IiLCJvcGFjaXR5IiwidHlwZSIsIkxBWUVSX1RZUEVTIiwicG9pbnQiLCJvdXRsaW5lIiwidmlzQ29uZmlnIiwiY3VzdG9tTWFya2VycyIsInN0cm9rZUNvbG9yRmllbGQiLCJzdHJva2VDb2xvciIsInRoaWNrbmVzcyIsInNpemVGaWVsZCIsInJhZGl1cyIsInJhZGl1c1JhbmdlIiwic2l6ZSIsInVwZGF0ZUxheWVyVGV4dExhYmVsIiwidGV4dExhYmVsIiwiY29sb3JQYWxldHRlIiwic2V0Q29sb3JQYWxldHRlVUkiLCJjb2xvckFnZ3JlZ2F0aW9uIiwiY29uZGl0aW9uIiwiY2x1c3RlclJhZGl1cyIsIndlaWdodCIsIl9yZW5kZXJBZ2dyZWdhdGlvbkxheWVyQ29uZmlnIiwiZW5hYmxlM2QiLCJlbGV2YXRpb25CeURlc2NyaXB0aW9uIiwiY29sb3JCeURlc2NyaXB0aW9uIiwicGVyY2VudGlsZSIsIndvcmxkVW5pdFNpemUiLCJjb3ZlcmFnZSIsImVsZXZhdGlvblNjYWxlIiwic2l6ZVJhbmdlIiwic2l6ZUFnZ3JlZ2F0aW9uIiwiZWxldmF0aW9uUGVyY2VudGlsZSIsImNvdmVyYWdlRmllbGQiLCJjb3ZlcmFnZVJhbmdlIiwiYXJncyIsIl9yZW5kZXJMaW5lTGF5ZXJDb25maWciLCJzb3VyY2VDb2xvciIsIm1ldGEiLCJmZWF0dXJlVHlwZXMiLCJwb2x5Z29uIiwic3Ryb2tlZCIsInRyYWlsTGVuZ3RoIiwic3Ryb2tlT3BhY2l0eSIsImhlaWdodCIsIndpcmVmcmFtZSIsInJhZGl1c0ZpZWxkIiwiZSIsInRhcmdldCIsImZpbGVzIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwic2NlbmVncmFwaCIsInNpemVTY2FsZSIsImFuZ2xlWCIsImFuZ2xlWSIsImFuZ2xlWiIsImhlaWdodFJhbmdlIiwibGF5ZXJUeXBlT3B0aW9ucyIsInVwZGF0ZUxheWVyVHlwZSIsImZpZWxkUGFpcnMiLCJ1bmRlZmluZWQiLCJkYXRhc2V0IiwicmVuZGVyVGVtcGxhdGUiLCJsYXllckluZm9Nb2RhbCIsIm9wZW5Nb2RhbCIsIk9iamVjdCIsImtleXMiLCJjb2x1bW5zIiwibGVuZ3RoIiwiaGFzQWxsQ29sdW1ucyIsImlkIiwidmFsdWUiLCJjb2x1bW5QYWlycyIsImFzc2lnbkNvbHVtblBhaXJzIiwiYmluZCIsImFzc2lnbkNvbHVtbiIsImNvbHVtbkxhYmVscyIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJhcnJheU9mIiwiYW55IiwiZnVuYyIsIlN0eWxlZEhvd1RvQnV0dG9uIiwiSG93VG9CdXR0b24iLCJvbkNsaWNrIiwiQ29sb3JTZWxlY3RvckZhY3RvcnkiLCJDb2xvclNlbGVjdG9yIiwic2VsZWN0ZWRDb2xvciIsInByb3BlcnR5Iiwic2V0Q29sb3IiLCJyZ2JWYWx1ZSIsImNvbG9yVUkiLCJuZXdDb25maWciLCJvbkNoYW5nZUNvbmZpZyIsInRhcmdldENvbG9yIiwiY2hhbm5lbCIsImhhbmRsZUN1c3RvbU9uU2VsZWN0SGV4Q29sdW1uIiwicmFuZ2UiLCJmaWVsZCIsInNjYWxlIiwiaXNSYW5nZSIsImNvbG9yUmFuZ2UiLCJjb2xvck1hcCIsImNvbG9yUmFuZ2VVcGRhdGVkIiwidXBkYXRlQ29sb3JNYXAiLCJ2YWxpZGF0ZVNjYWxlIiwiY29sb3JDb2x1bW4iLCJuYW1lIiwiY29sb3JDb2x1bW5JZHgiLCJmaWVsZElkeCIsIlNDQUxFX1RZUEVTIiwiaWRlbnRpdHkiLCJoZXhDb2xvckN1c3RvbVBhbGV0dGUiLCJWaXNDb25maWdCeUZpZWxkU2VsZWN0b3JGYWN0b3J5IiwiVmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yIiwiZmllbGRzQWdncmVnYXRlZCIsImRlc2NyaXB0aW9uIiwiaXNMb2FkaW5nIiwiY2hhbm5lbFNjYWxlVHlwZSIsImRvbWFpbiIsImFnZ3JlZ2F0aW9uIiwia2V5IiwiZGVmYXVsdE1lYXN1cmUiLCJzdXBwb3J0ZWRGaWVsZFR5cGVzIiwiY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMiLCJDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMiLCJzdXBwb3J0ZWRGaWVsZHMiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsInNjYWxlT3B0aW9ucyIsImdldFNjYWxlT3B0aW9ucyIsInNob3dTY2FsZUN1c3RvbWl6YWJsZSIsIkNIQU5ORUxfU0NBTEVTIiwic2hvd1NjYWxlIiwiaXNBZ2dyZWdhdGVkIiwiZGVmYXVsdERlc2NyaXB0aW9uIiwidmlzUmFuZ2UiLCJhZ2dyZWdhdG9yIiwidmFsIiwic2VsZWN0ZWRBZ2dyZWdhdG9yIiwidWlDdXN0b21TY2FsZVR5cGUiLCJDb2xvckRpbWVuc2lvblNjYWxlU2VsZWN0b3JGYWN0b3J5IiwiQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yIiwiY29sb3JBZ2dyIiwiQXJyYXkiLCJpc0FycmF5IiwiQWdncmVnYXRpb25UeXBlU2VsZWN0b3IiLCJzZWxlY3RlZEZpZWxkIiwiYWdncmVnYXRpb25PcHRpb25zIiwiZ2V0QWdncmVnYXRpb25PcHRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsdUJBQXVCLEdBQUdDLDZCQUFPQyxHQUFQLENBQVdDLEtBQVgsQ0FBaUI7QUFDL0NDLEVBQUFBLFNBQVMsRUFBRTtBQURvQyxDQUFqQixDQUFILDhMQUliLFVBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUMsdUJBQWhCO0FBQUEsQ0FKUSxFQUtoQixVQUFBRixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlFLHdCQUFoQjtBQUFBLENBTFcsRUFNWixVQUFBSCxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlHLHVCQUFoQjtBQUFBLENBTk8sRUFPdkIsVUFBQUosS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZSSw0QkFBaEI7QUFBQSxDQVBrQixDQUE3Qjs7QUFVQSxJQUFNQyw2QkFBNkIsR0FBR1YsNkJBQU9DLEdBQVAsQ0FBV0MsS0FBWCxDQUFpQjtBQUNy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MEM7QUFFckUsTUFBTTBCLGFBQWEsR0FBR25OLEtBQUssQ0FBQ0MsTUFBTixDQUFhaUssS0FBYixDQUF0QjtBQUZxRSxNQUc5RGpHLFNBSDhELEdBR2pEakUsS0FBSyxDQUFDQyxNQUgyQyxDQUc5RGdFLFNBSDhELEVBS3JFOztBQUNBLE1BQU1tSixrQkFBa0IsR0FBR3BOLEtBQUssQ0FBQ3FOLHFCQUFOLENBQTRCNUIsR0FBNUIsQ0FBM0I7QUFFQSxzQkFDRSxnQ0FBQyxtQ0FBRCxxQkFDRSxnQ0FBQyw2QkFBRCxxQkFDRSxnQ0FBQyw4QkFBRDtBQUFrQixJQUFBLEVBQUUsRUFBRSxtQkFBdEI7QUFBMkMsSUFBQSxNQUFNLEVBQUU7QUFBQ3ZCLE1BQUFBLEtBQUssRUFBRWlELGFBQWEsQ0FBQ3hDO0FBQXRCO0FBQW5ELElBREYsQ0FERixlQUlFLGdDQUFDLHdCQUFEO0FBQ0UsSUFBQSxhQUFhLEVBQUUxRyxTQUFTLENBQUN1SCxXQUFELENBRDFCO0FBRUUsSUFBQSxPQUFPLEVBQUU0QixrQkFGWDtBQUdFLElBQUEsV0FBVyxFQUFFLEtBSGY7QUFJRSxJQUFBLFVBQVUsRUFBRSxLQUpkO0FBS0UsSUFBQSxRQUFRLEVBQUUsa0JBQUEvRSxLQUFLO0FBQUEsYUFDYjdILFVBQVEsQ0FDTjtBQUNFeUQsUUFBQUEsU0FBUyxrQ0FDSmpFLEtBQUssQ0FBQ0MsTUFBTixDQUFhZ0UsU0FEVCw0Q0FFTnVILFdBRk0sRUFFUW5ELEtBRlI7QUFEWCxPQURNLEVBT04wQixPQUFPLENBQUMwQixHQVBGLENBREs7QUFBQTtBQUxqQixJQUpGLENBREY7QUF3QkQsQ0FoQ007QUFrQ1AiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIEZyYWdtZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ2xvY2FsaXphdGlvbic7XG5cbmltcG9ydCB7QnV0dG9uLCBJbnB1dCwgUGFuZWxMYWJlbCwgU2lkZVBhbmVsU2VjdGlvbn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEl0ZW1TZWxlY3RvciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3InO1xuXG5pbXBvcnQgVmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yRmFjdG9yeSBmcm9tICcuL3Zpcy1jb25maWctYnktZmllbGQtc2VsZWN0b3InO1xuaW1wb3J0IExheWVyQ29sdW1uQ29uZmlnRmFjdG9yeSBmcm9tICcuL2xheWVyLWNvbHVtbi1jb25maWcnO1xuaW1wb3J0IExheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSBmcm9tICcuL2xheWVyLXR5cGUtc2VsZWN0b3InO1xuaW1wb3J0IExheWVyVmlzaWJpbGl0eUJ5Wm9vbUZhY3RvcnkgZnJvbSAnLi9sYXllci12aXNpYmlsaXR5LWJ5LXpvb20nO1xuaW1wb3J0IERpbWVuc2lvblNjYWxlU2VsZWN0b3IgZnJvbSAnLi9kaW1lbnNpb24tc2NhbGUtc2VsZWN0b3InO1xuaW1wb3J0IFNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9zaWRlLXBhbmVsL2NvbW1vbi9zb3VyY2UtZGF0YS1zZWxlY3Rvcic7XG5pbXBvcnQgVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSBmcm9tICcuL3Zpcy1jb25maWctc3dpdGNoJztcbmltcG9ydCBWaXNDb25maWdTbGlkZXJGYWN0b3J5IGZyb20gJy4vdmlzLWNvbmZpZy1zbGlkZXInO1xuaW1wb3J0IExheWVyQ29uZmlnR3JvdXBGYWN0b3J5LCB7Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnR9IGZyb20gJy4vbGF5ZXItY29uZmlnLWdyb3VwJztcbmltcG9ydCBDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXBGYWN0b3J5IGZyb20gJy4vY3VzdG9tLW1hcmtlcnMtY29uZmlnLWdyb3VwJztcbmltcG9ydCBUZXh0TGFiZWxQYW5lbEZhY3RvcnkgZnJvbSAnLi90ZXh0LWxhYmVsLXBhbmVsJztcblxuaW1wb3J0IHtjYXBpdGFsaXplRmlyc3RMZXR0ZXJ9IGZyb20gJ3V0aWxzL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgQ0hBTk5FTF9TQ0FMRVMsXG4gIENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyxcbiAgU0NBTEVfVFlQRVNcbn0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtMQVlFUl9UWVBFU30gZnJvbSAnbGF5ZXJzL3R5cGVzJztcbmltcG9ydCB7aW5qZWN0SW50bH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yRmFjdG9yeSBmcm9tICcuL2NvbG9yLWRpbWVuc2lvbi1zY2FsZS1zZWxlY3Rvcic7XG5pbXBvcnQgQ29sb3JTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi9jb2xvci1zZWxlY3Rvcic7XG5pbXBvcnQgTGF5ZXJBZ2dyZWdhdGlvblJlc29sdXRpb25GYWN0b3J5IGZyb20gJy4vbGF5ZXItYWdncmVnYXRpb24tcmVzb2x1dGlvbic7XG5pbXBvcnQge2hleENvbG9yQ3VzdG9tUGFsZXR0ZX0gZnJvbSAnY29uc3RhbnRzL2NvbG9yLXJhbmdlcyc7XG5cbmNvbnN0IFN0eWxlZExheWVyQ29uZmlndXJhdG9yID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLXBhbmVsX19jb25maWcnXG59KWBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlndXJhdG9yTWFyZ2lufTtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvclBhZGRpbmd9O1xuICBib3JkZXItbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvckJvcmRlcn0gZGFzaGVkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvckJvcmRlckNvbG9yfTtcbmA7XG5cbmNvbnN0IFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLXBhbmVsX19jb25maWdfX3Zpc3VhbEMtY29uZmlnJ1xufSlgXG4gIG1hcmdpbi10b3A6IDEycHg7XG5gO1xuXG5leHBvcnQgY29uc3QgZ2V0TGF5ZXJGaWVsZHMgPSAoZGF0YXNldHMsIGxheWVyKSA9PlxuICBsYXllci5jb25maWcgJiYgZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0gPyBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXS5maWVsZHMgOiBbXTtcblxuZXhwb3J0IGNvbnN0IGdldExheWVyRGF0YXNldCA9IChkYXRhc2V0cywgbGF5ZXIpID0+XG4gIGxheWVyLmNvbmZpZyAmJiBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXSA/IGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdIDogbnVsbDtcblxuZXhwb3J0IGNvbnN0IGdldExheWVyQ29uZmlndXJhdG9yUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGRpc2FibGVkOiBCb29sZWFuKHByb3BzLmRpc2FibGVkKSxcbiAgZmllbGRzOiBnZXRMYXllckZpZWxkcyhwcm9wcy5kYXRhc2V0cywgcHJvcHMubGF5ZXIpLFxuICBvbkNoYW5nZTogcHJvcHMudXBkYXRlTGF5ZXJDb25maWcsXG4gIHNldENvbG9yVUk6IHByb3BzLnVwZGF0ZUxheWVyQ29sb3JVSVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRWaXNDb25maWd1cmF0b3JQcm9wcyA9IHByb3BzID0+ICh7XG4gIGxheWVyOiBwcm9wcy5sYXllcixcbiAgZmllbGRzOiBnZXRMYXllckZpZWxkcyhwcm9wcy5kYXRhc2V0cywgcHJvcHMubGF5ZXIpLFxuICBvbkNoYW5nZTogcHJvcHMudXBkYXRlTGF5ZXJWaXNDb25maWcsXG4gIHNldENvbG9yVUk6IHByb3BzLnVwZGF0ZUxheWVyQ29sb3JVSVxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRMYXllckNoYW5uZWxDb25maWdQcm9wcyA9IHByb3BzID0+ICh7XG4gIGxheWVyOiBwcm9wcy5sYXllcixcbiAgZmllbGRzOiBnZXRMYXllckZpZWxkcyhwcm9wcy5kYXRhc2V0cywgcHJvcHMubGF5ZXIpLFxuICBvbkNoYW5nZTogcHJvcHMudXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnLFxuICBvbkNoYW5nZVZpc0NvbmZpZzogcHJvcHMudXBkYXRlTGF5ZXJWaXNDb25maWdcbn0pO1xuXG5MYXllckNvbmZpZ3VyYXRvckZhY3RvcnkuZGVwcyA9IFtcbiAgU291cmNlRGF0YVNlbGVjdG9yRmFjdG9yeSxcbiAgVmlzQ29uZmlnU2xpZGVyRmFjdG9yeSxcbiAgVGV4dExhYmVsUGFuZWxGYWN0b3J5LFxuICBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeSxcbiAgQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvckZhY3RvcnksXG4gIExheWVyQ29sdW1uQ29uZmlnRmFjdG9yeSxcbiAgTGF5ZXJUeXBlU2VsZWN0b3JGYWN0b3J5LFxuICBWaXNDb25maWdTd2l0Y2hGYWN0b3J5LFxuICBBZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnksXG4gIExheWVyVmlzaWJpbGl0eUJ5Wm9vbUZhY3RvcnksXG4gIExheWVyQWdncmVnYXRpb25SZXNvbHV0aW9uRmFjdG9yeSxcbiAgTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSxcbiAgTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3JGYWN0b3J5LFxuICBBcmNMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5LFxuICBDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXBGYWN0b3J5XG5dO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMYXllckNvbmZpZ3VyYXRvckZhY3RvcnkoXG4gIFNvdXJjZURhdGFTZWxlY3RvcixcbiAgVmlzQ29uZmlnU2xpZGVyLFxuICBUZXh0TGFiZWxQYW5lbCxcbiAgTGF5ZXJDb25maWdHcm91cCxcbiAgQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvcixcbiAgTGF5ZXJDb2x1bW5Db25maWcsXG4gIExheWVyVHlwZVNlbGVjdG9yLFxuICBWaXNDb25maWdTd2l0Y2gsXG4gIEFnZ3JTY2FsZVNlbGVjdG9yLFxuICBMYXllclZpc2liaWxpdHlCeVpvb20sXG4gIExheWVyQWdncmVnYXRpb25SZXNvbHV0aW9uLFxuICBMYXllckNvbG9yU2VsZWN0b3IsXG4gIExheWVyQ29sb3JSYW5nZVNlbGVjdG9yLFxuICBBcmNMYXllckNvbG9yU2VsZWN0b3IsXG4gIEN1c3RvbU1hcmtlcnNDb25maWdHcm91cFxuKSB7XG4gIGNsYXNzIExheWVyQ29uZmlndXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgbGF5ZXI6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIGRhdGFzZXRzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBsYXllclR5cGVPcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgb3Blbk1vZGFsOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlTGF5ZXJDb25maWc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllclR5cGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllclZpc0NvbmZpZzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZUxheWVyQ29sb3JVSTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICAgIH07XG5cbiAgICBfcmVuZGVyUG9pbnRMYXllckNvbmZpZyhwcm9wcykge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclNjYXR0ZXJwbG90TGF5ZXJDb25maWcocHJvcHMpO1xuICAgIH1cblxuICAgIF9yZW5kZXJJY29uTGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnKHByb3BzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyU2NhdHRlcnBsb3RMYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzXG4gICAgfSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBGaWxsIENvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4uKGxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmZpbGxlZCB8fCB7bGFiZWw6ICdsYXllci5jb2xvcid9KX1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvciB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBvdXRsaW5lIGNvbG9yICovfVxuICAgICAgICAgIHtsYXllci50eXBlID09PSBMQVlFUl9UWVBFUy5wb2ludCA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vdXRsaW5lfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgICAgIGRpc2FibGVkPXtCb29sZWFuKGxheWVyLmNvbmZpZy52aXNDb25maWcuY3VzdG9tTWFya2Vycyl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsYXllci5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSBjaGFubmVsPVwic3Ryb2tlQ29sb3JcIiAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I9e2xheWVyLmNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshbGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5vdXRsaW5lfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7bGF5ZXIudHlwZSA9PT0gTEFZRVJfVFlQRVMucG9pbnQgPyAoXG4gICAgICAgICAgICA8Q3VzdG9tTWFya2Vyc0NvbmZpZ0dyb3VwXG4gICAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHM9e3Zpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wcz17bGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgey8qIFJhZGl1cyAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgbGFiZWw9e2xheWVyLmNvbmZpZy52aXNDb25maWcuY3VzdG9tTWFya2VycyA/ICdsYXllci5zaXplJyA6ICdsYXllci5yYWRpdXMnfVxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7IWxheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e0Jvb2xlYW4obGF5ZXIuY29uZmlnLnNpemVGaWVsZCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c1JhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFsYXllci5jb25maWcuc2l6ZUZpZWxkfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIHRleHQgbGFiZWwgKi99XG4gICAgICAgICAgPFRleHRMYWJlbFBhbmVsXG4gICAgICAgICAgICBmaWVsZHM9e3Zpc0NvbmZpZ3VyYXRvclByb3BzLmZpZWxkc31cbiAgICAgICAgICAgIHVwZGF0ZUxheWVyVGV4dExhYmVsPXt0aGlzLnByb3BzLnVwZGF0ZUxheWVyVGV4dExhYmVsfVxuICAgICAgICAgICAgdGV4dExhYmVsPXtsYXllci5jb25maWcudGV4dExhYmVsfVxuICAgICAgICAgICAgY29sb3JQYWxldHRlPXt2aXNDb25maWd1cmF0b3JQcm9wcy5jb2xvclBhbGV0dGV9XG4gICAgICAgICAgICBzZXRDb2xvclBhbGV0dGVVST17dmlzQ29uZmlndXJhdG9yUHJvcHMuc2V0Q29sb3JQYWxldHRlVUl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlckNsdXN0ZXJMYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzXG4gICAgfSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLmNvbG9yJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8QWdnclNjYWxlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZz17bGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMub25DaGFuZ2VWaXNDb25maWd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7bGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuY29sb3JBZ2dyZWdhdGlvbi5jb25kaXRpb24obGF5ZXIuY29uZmlnKSA/IChcbiAgICAgICAgICAgICAgICA8QWdncmVnYXRpb25UeXBlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jb2xvckFnZ3JlZ2F0aW9ufVxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIENsdXN0ZXIgUmFkaXVzICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIucmFkaXVzJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jbHVzdGVyUmFkaXVzfSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c1JhbmdlfSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlckhlYXRtYXBMYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzXG4gICAgfSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLmNvbG9yJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICB7LyogUmFkaXVzICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIucmFkaXVzJ30+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXN9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgey8qIFdlaWdodCAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLndlaWdodCd9PlxuICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMud2VpZ2h0fVxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlckdyaWRMYXllckNvbmZpZyhwcm9wcykge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckFnZ3JlZ2F0aW9uTGF5ZXJDb25maWcocHJvcHMpO1xuICAgIH1cblxuICAgIF9yZW5kZXJIZXhhZ29uTGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJBZ2dyZWdhdGlvbkxheWVyQ29uZmlnKHByb3BzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyQWdncmVnYXRpb25MYXllckNvbmZpZyh7XG4gICAgICBsYXllcixcbiAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzXG4gICAgfSkge1xuICAgICAgY29uc3Qge2NvbmZpZ30gPSBsYXllcjtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdmlzQ29uZmlnOiB7ZW5hYmxlM2R9XG4gICAgICB9ID0gY29uZmlnO1xuICAgICAgY29uc3QgZWxldmF0aW9uQnlEZXNjcmlwdGlvbiA9ICdsYXllci5lbGV2YXRpb25CeURlc2NyaXB0aW9uJztcbiAgICAgIGNvbnN0IGNvbG9yQnlEZXNjcmlwdGlvbiA9ICdsYXllci5jb2xvckJ5RGVzY3JpcHRpb24nO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICAgICAgey8qIENvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIuY29sb3InfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxBZ2dyU2NhbGVTZWxlY3RvclxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlVmlzQ29uZmlnPXtsYXllckNoYW5uZWxDb25maWdQcm9wcy5vbkNoYW5nZVZpc0NvbmZpZ31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5jb2xvckFnZ3JlZ2F0aW9uLmNvbmRpdGlvbihsYXllci5jb25maWcpID8gKFxuICAgICAgICAgICAgICAgIDxBZ2dyZWdhdGlvblR5cGVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmNvbG9yQWdncmVnYXRpb259XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj17Y29sb3JCeURlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5wZXJjZW50aWxlICYmXG4gICAgICAgICAgICAgIGxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnBlcmNlbnRpbGUuY29uZGl0aW9uKGxheWVyLmNvbmZpZykgPyAoXG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnBlcmNlbnRpbGV9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIENlbGwgc2l6ZSAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLnJhZGl1cyd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mud29ybGRVbml0U2l6ZX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5jb3ZlcmFnZX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogRWxldmF0aW9uICovfVxuICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5lbmFibGUzZCA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbmFibGUzZH1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVsZXZhdGlvblNjYWxlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD1cImxheWVyVmlzQ29uZmlncy5oZWlnaHRNdWx0aXBsaWVyXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e2VsZXZhdGlvbkJ5RGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWVuYWJsZTNkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEFnZ3JTY2FsZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZz17bGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMub25DaGFuZ2VWaXNDb25maWd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuaGVpZ2h0UmFuZ2VcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAge2xheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVBZ2dyZWdhdGlvbi5jb25kaXRpb24obGF5ZXIuY29uZmlnKSA/IChcbiAgICAgICAgICAgICAgICAgIDxBZ2dyZWdhdGlvblR5cGVTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZUFnZ3JlZ2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIHtsYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25QZXJjZW50aWxlLmNvbmRpdGlvbihsYXllci5jb25maWcpID8gKFxuICAgICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uUGVyY2VudGlsZX1cbiAgICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogU2hhbiBtb3ZlIHRoZXNlIGludG8gbGF5ZXIgY2xhc3NcbiAgICBfcmVuZGVySGV4YWdvbklkTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5jb2xvcid9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvciB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBDb3ZlcmFnZSAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLmNvdmVyYWdlJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICB7IWxheWVyLmNvbmZpZy5jb3ZlcmFnZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmNvdmVyYWdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmNvdmVyYWdlUmFuZ2V9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY292ZXJhZ2V9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogaGVpZ2h0ICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZW5hYmxlM2R9XG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uU2NhbGV9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnNpemVSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuaGVpZ2h0UmFuZ2VcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJBcmNMYXllckNvbmZpZyhhcmdzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyTGluZUxheWVyQ29uZmlnKGFyZ3MpO1xuICAgIH1cblxuICAgIF9yZW5kZXJMaW5lTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogQ29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYXllci5jb2xvcid9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPEFyY0xheWVyQ29sb3JTZWxlY3RvclxuICAgICAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgICAgICBzZXRDb2xvclVJPXtsYXllckNvbmZpZ3VyYXRvclByb3BzLnNldENvbG9yVUl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VDb25maWc9e2xheWVyQ29uZmlndXJhdG9yUHJvcHMub25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VWaXNDb25maWc9e3Zpc0NvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zb3VyY2VDb2xvcn1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIHRoaWNrbmVzcyAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLnN0cm9rZSd9IGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWxheWVyLmNvbmZpZy5zaXplRmllbGR9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50aGlja25lc3N9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc2l6ZX1cbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBlbGV2YXRpb24gc2NhbGUgKi99XG4gICAgICAgICAge2xheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVsZXZhdGlvblNjYWxlID8gKFxuICAgICAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9XCJsYXllclZpc0NvbmZpZ3MuZWxldmF0aW9uU2NhbGVcIiBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJUcmlwTGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNoYW5uZWxDb25maWdQcm9wc1xuICAgIH0pIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWV0YToge2ZlYXR1cmVUeXBlcyA9IHt9fVxuICAgICAgfSA9IGxheWVyO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICAgICAgey8qIENvbG9yICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIuY29sb3InfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlIFdpZHRoICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gbGFiZWw9XCJsYXllci5zdHJva2VXaWR0aFwiIGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogVHJhaWwgTGVuZ3RoKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIHsuLi4oZmVhdHVyZVR5cGVzLnBvbHlnb24gPyBsYXllci52aXNDb25maWdTZXR0aW5ncy5zdHJva2VkIDoge30pfVxuICAgICAgICAgICAgbGFiZWw9XCJsYXllci50cmFpbExlbmd0aFwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cImxheWVyLnRyYWlsTGVuZ3RoRGVzY3JpcHRpb25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRyYWlsTGVuZ3RofVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICA8L1N0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfcmVuZGVyR2VvanNvbkxheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1ldGE6IHtmZWF0dXJlVHlwZXMgPSB7fX0sXG4gICAgICAgIGNvbmZpZzoge3Zpc0NvbmZpZ31cbiAgICAgIH0gPSBsYXllcjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBGaWxsIENvbG9yICovfVxuICAgICAgICAgIHtmZWF0dXJlVHlwZXMucG9seWdvbiB8fCBmZWF0dXJlVHlwZXMucG9pbnQgPyAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZmlsbGVkfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuZmlsbENvbG9yXCJcbiAgICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvciB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvciB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLm9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHsvKiBzdHJva2UgY29sb3IgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zdHJva2VkfVxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgbGFiZWw9XCJsYXllci5zdHJva2VDb2xvclwiXG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gY2hhbm5lbD1cInN0cm9rZUNvbG9yXCIgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZU9wYWNpdHl9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlIFdpZHRoICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICB7Li4uKGZlYXR1cmVUeXBlcy5wb2x5Z29uID8gbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZCA6IHt9KX1cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuc3Ryb2tlV2lkdGhcIlxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnNpemVGaWVsZCA/IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplUmFuZ2V9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MudGhpY2tuZXNzfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogRWxldmF0aW9uICovfVxuICAgICAgICAgIHtmZWF0dXJlVHlwZXMucG9seWdvbiA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZTNkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXZpc0NvbmZpZy5maWxsZWR9XG4gICAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uU2NhbGV9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU3dpdGNoIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLndpcmVmcmFtZX0gLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHsvKiBSYWRpdXMgKi99XG4gICAgICAgICAge2ZlYXR1cmVUeXBlcy5wb2ludCA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIucmFkaXVzJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICAgIHshbGF5ZXIuY29uZmlnLnJhZGl1c0ZpZWxkID8gKFxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXN9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17Qm9vbGVhbihsYXllci5jb25maWcucmFkaXVzRmllbGQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c1JhbmdlfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFsYXllci5jb25maWcucmFkaXVzRmllbGR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5yYWRpdXN9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlcjNETGF5ZXJDb25maWcoe2xheWVyLCB2aXNDb25maWd1cmF0b3JQcm9wc30pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLjNETW9kZWwnfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGFjY2VwdD1cIi5nbGIsLmdsdGZcIlxuICAgICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmZpbGVzICYmIGUudGFyZ2V0LmZpbGVzWzBdKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGUudGFyZ2V0LmZpbGVzWzBdKTtcbiAgICAgICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlKHtzY2VuZWdyYXBoOiB1cmx9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLjNETW9kZWxPcHRpb25zJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplU2NhbGV9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmFuZ2xlWH1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuYW5nbGVZfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5hbmdsZVp9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJTMkxheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbmZpZzoge3Zpc0NvbmZpZ31cbiAgICAgIH0gPSBsYXllcjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmZpbGxlZH1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuZmlsbENvbG9yXCJcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvciB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBTdHJva2UgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zdHJva2VkfVxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgbGFiZWw9XCJsYXllci5zdHJva2VDb2xvclwiXG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gY2hhbm5lbD1cInN0cm9rZUNvbG9yXCIgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlIFdpZHRoICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gbGFiZWw9XCJsYXllci5zdHJva2VXaWR0aFwiIGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIEVsZXZhdGlvbiAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZTNkfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyF2aXNDb25maWcuZmlsbGVkfVxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5oZWlnaHR9XG4gICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZX1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBsYWJlbD1cImxheWVyVmlzQ29uZmlncy5lbGV2YXRpb25TY2FsZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmhlaWdodFJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD1cImxheWVyVmlzQ29uZmlncy5oZWlnaHRSYW5nZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTd2l0Y2ggey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mud2lyZWZyYW1lfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtsYXllciwgZGF0YXNldHMsIHVwZGF0ZUxheWVyQ29uZmlnLCBsYXllclR5cGVPcHRpb25zLCB1cGRhdGVMYXllclR5cGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtmaWVsZHMgPSBbXSwgZmllbGRQYWlycyA9IHVuZGVmaW5lZH0gPSBsYXllci5jb25maWcuZGF0YUlkXG4gICAgICAgID8gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF1cbiAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IHtjb25maWd9ID0gbGF5ZXI7XG5cbiAgICAgIGNvbnN0IHZpc0NvbmZpZ3VyYXRvclByb3BzID0gZ2V0VmlzQ29uZmlndXJhdG9yUHJvcHModGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllckNvbmZpZ3VyYXRvclByb3BzID0gZ2V0TGF5ZXJDb25maWd1cmF0b3JQcm9wcyh0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzID0gZ2V0TGF5ZXJDaGFubmVsQ29uZmlnUHJvcHModGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBkYXRhc2V0ID0gZ2V0TGF5ZXJEYXRhc2V0KGRhdGFzZXRzLCBsYXllcik7XG4gICAgICBjb25zdCByZW5kZXJUZW1wbGF0ZSA9IGxheWVyLnR5cGUgJiYgYF9yZW5kZXIke2NhcGl0YWxpemVGaXJzdExldHRlcihsYXllci50eXBlKX1MYXllckNvbmZpZ2A7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7bGF5ZXIubGF5ZXJJbmZvTW9kYWwgPyAoXG4gICAgICAgICAgICA8SG93VG9CdXR0b24gb25DbGljaz17KCkgPT4gdGhpcy5wcm9wcy5vcGVuTW9kYWwobGF5ZXIubGF5ZXJJbmZvTW9kYWwpfSAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICBsYWJlbD17J2xheWVyLmJhc2ljJ31cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlPXtPYmplY3Qua2V5cyhsYXllci5jb25maWcuY29sdW1ucykubGVuZ3RoID4gMH1cbiAgICAgICAgICAgIGV4cGFuZGVkPXshbGF5ZXIuaGFzQWxsQ29sdW1ucygpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMYXllclR5cGVTZWxlY3RvclxuICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgICAgbGF5ZXJUeXBlT3B0aW9ucz17bGF5ZXJUeXBlT3B0aW9uc31cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e3VwZGF0ZUxheWVyVHlwZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8TGF5ZXJWaXNpYmlsaXR5Qnlab29tXG4gICAgICAgICAgICAgIHVwZGF0ZUxheWVyQ29uZmlnPXt0aGlzLnByb3BzLnVwZGF0ZUxheWVyQ29uZmlnfVxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtsYXllckNvbmZpZ3VyYXRvclByb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxMYXllckFnZ3JlZ2F0aW9uUmVzb2x1dGlvbiBsYXllcj17bGF5ZXJ9IGRpc2FibGVkPXtsYXllckNvbmZpZ3VyYXRvclByb3BzLmRpc2FibGVkfSAvPlxuICAgICAgICAgICAge09iamVjdC5rZXlzKGRhdGFzZXRzKS5sZW5ndGggPiAxICYmIChcbiAgICAgICAgICAgICAgPFNvdXJjZURhdGFTZWxlY3RvclxuICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICBpZD17bGF5ZXIuaWR9XG4gICAgICAgICAgICAgICAgZGF0YUlkPXtjb25maWcuZGF0YUlkfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt2YWx1ZSA9PiB1cGRhdGVMYXllckNvbmZpZyh7ZGF0YUlkOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtPYmplY3Qua2V5cyhsYXllci5jb25maWcuY29sdW1ucykubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2x1bW5Db25maWdcbiAgICAgICAgICAgICAgICAgIGNvbHVtblBhaXJzPXtsYXllci5jb2x1bW5QYWlyc31cbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e2xheWVyLmNvbmZpZy5jb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgYXNzaWduQ29sdW1uUGFpcnM9e2xheWVyLmFzc2lnbkNvbHVtblBhaXJzLmJpbmQobGF5ZXIpfVxuICAgICAgICAgICAgICAgICAgYXNzaWduQ29sdW1uPXtsYXllci5hc3NpZ25Db2x1bW4uYmluZChsYXllcil9XG4gICAgICAgICAgICAgICAgICBjb2x1bW5MYWJlbHM9e2xheWVyLmNvbHVtbkxhYmVsc31cbiAgICAgICAgICAgICAgICAgIGZpZWxkcz17ZmllbGRzfVxuICAgICAgICAgICAgICAgICAgZmllbGRQYWlycz17ZmllbGRQYWlyc31cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyQ29uZmlnPXt1cGRhdGVMYXllckNvbmZpZ31cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHlwZT17dGhpcy5wcm9wcy51cGRhdGVMYXllclR5cGV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgIHt0aGlzW3JlbmRlclRlbXBsYXRlXSAmJlxuICAgICAgICAgICAgdGhpc1tyZW5kZXJUZW1wbGF0ZV0oe1xuICAgICAgICAgICAgICBsYXllcixcbiAgICAgICAgICAgICAgZGF0YXNldCxcbiAgICAgICAgICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICAgICAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLFxuICAgICAgICAgICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIExheWVyQ29uZmlndXJhdG9yO1xufVxuLypcbiAqIENvbXBvbmVudGl6ZSBjb25maWcgY29tcG9uZW50IGludG8gcHVyZSBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAqL1xuXG5jb25zdCBTdHlsZWRIb3dUb0J1dHRvbiA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDEycHg7XG4gIHRvcDogLTRweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBIb3dUb0J1dHRvbiA9ICh7b25DbGlja30pID0+IChcbiAgPFN0eWxlZEhvd1RvQnV0dG9uPlxuICAgIDxCdXR0b24gbGluayBzbWFsbCBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbGF5ZXJDb25maWd1cmF0aW9uLmhvd1RvJ30gLz5cbiAgICA8L0J1dHRvbj5cbiAgPC9TdHlsZWRIb3dUb0J1dHRvbj5cbik7XG5cbkxheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtDb2xvclNlbGVjdG9yRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeShDb2xvclNlbGVjdG9yKSB7XG4gIGNsYXNzIExheWVyQ29sb3JTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2xheWVyLCBvbkNoYW5nZSwgc2VsZWN0ZWRDb2xvciwgcHJvcGVydHkgPSAnY29sb3InLCBzZXRDb2xvclVJLCBmaWVsZHN9ID0gdGhpcy5wcm9wcztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJsYXllci5jb2xvclwiIC8+XG4gICAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICAgIDxDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICBmaWVsZHM9e2ZpZWxkc31cbiAgICAgICAgICAgIGNvbG9yU2V0cz17W1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogc2VsZWN0ZWRDb2xvciB8fCBsYXllci5jb25maWcuY29sb3IsXG4gICAgICAgICAgICAgICAgc2V0Q29sb3I6IHJnYlZhbHVlID0+IG9uQ2hhbmdlKHtbcHJvcGVydHldOiByZ2JWYWx1ZX0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF19XG4gICAgICAgICAgICBjb2xvclVJPXtsYXllci5jb25maWcuY29sb3JVSVtwcm9wZXJ0eV19XG4gICAgICAgICAgICBzZXRDb2xvclVJPXtuZXdDb25maWcgPT4gc2V0Q29sb3JVSShwcm9wZXJ0eSwgbmV3Q29uZmlnKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBMYXllckNvbG9yU2VsZWN0b3I7XG59XG5cbkFyY0xheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtDb2xvclNlbGVjdG9yRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gQXJjTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeShDb2xvclNlbGVjdG9yKSB7XG4gIGNsYXNzIEFyY0xheWVyQ29sb3JTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBsYXllcixcbiAgICAgICAgb25DaGFuZ2VDb25maWcsXG4gICAgICAgIG9uQ2hhbmdlVmlzQ29uZmlnLFxuICAgICAgICBwcm9wZXJ0eSA9ICdjb2xvcicsXG4gICAgICAgIHNldENvbG9yVUksXG4gICAgICAgIGZpZWxkc1xuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJsYXllci5jb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgPENvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgIGZpZWxkcz17ZmllbGRzfVxuICAgICAgICAgICAgY29sb3JTZXRzPXtbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yOiBsYXllci5jb25maWcuY29sb3IsXG4gICAgICAgICAgICAgICAgc2V0Q29sb3I6IHJnYlZhbHVlID0+IG9uQ2hhbmdlQ29uZmlnKHtjb2xvcjogcmdiVmFsdWV9KSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1NvdXJjZSdcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I6IGxheWVyLmNvbmZpZy52aXNDb25maWcudGFyZ2V0Q29sb3IgfHwgbGF5ZXIuY29uZmlnLmNvbG9yLFxuICAgICAgICAgICAgICAgIHNldENvbG9yOiByZ2JWYWx1ZSA9PiBvbkNoYW5nZVZpc0NvbmZpZyh7dGFyZ2V0Q29sb3I6IHJnYlZhbHVlfSksXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdUYXJnZXQnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF19XG4gICAgICAgICAgICBjb2xvclVJPXtsYXllci5jb25maWcuY29sb3JVSVtwcm9wZXJ0eV19XG4gICAgICAgICAgICBzZXRDb2xvclVJPXtuZXdDb25maWcgPT4gc2V0Q29sb3JVSShwcm9wZXJ0eSwgbmV3Q29uZmlnKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gQXJjTGF5ZXJDb2xvclNlbGVjdG9yO1xufVxuXG5MYXllckNvbG9yUmFuZ2VTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtDb2xvclNlbGVjdG9yRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3JGYWN0b3J5KENvbG9yU2VsZWN0b3IpIHtcbiAgY2xhc3MgTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbGF5ZXIsXG4gICAgICAgIG9uQ2hhbmdlLFxuICAgICAgICBjaGFubmVsID0gJ2NvbG9yJyxcbiAgICAgICAgc2V0Q29sb3JVSSxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICBoYW5kbGVDdXN0b21PblNlbGVjdEhleENvbHVtbiA9ICgpID0+IG51bGxcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3Qge3JhbmdlOiBwcm9wZXJ0eSwgZmllbGQsIHNjYWxlfSA9IGxheWVyLnZpc3VhbENoYW5uZWxzW2NoYW5uZWxdO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImxheWVyLmNvbG9yUmFuZ2VcIiAvPlxuICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICA8Q29sb3JTZWxlY3RvclxuICAgICAgICAgICAgZmllbGRzPXtmaWVsZHN9XG4gICAgICAgICAgICBjb2xvclNldHM9e1tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I6IGxheWVyLmNvbmZpZy52aXNDb25maWdbcHJvcGVydHldLFxuICAgICAgICAgICAgICAgIGlzUmFuZ2U6IHRydWUsXG4gICAgICAgICAgICAgICAgc2V0Q29sb3I6IGNvbG9yUmFuZ2UgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3Qge2NvbG9yTWFwfSA9IGxheWVyLmNvbmZpZy52aXNDb25maWdbcHJvcGVydHldO1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3JSYW5nZVVwZGF0ZWQgPSBjb2xvck1hcFxuICAgICAgICAgICAgICAgICAgICA/IGxheWVyLnVwZGF0ZUNvbG9yTWFwKHByb3BlcnR5LCBjb2xvck1hcCwgY29sb3JSYW5nZSlcbiAgICAgICAgICAgICAgICAgICAgOiBjb2xvclJhbmdlO1xuICAgICAgICAgICAgICAgICAgb25DaGFuZ2Uoe1twcm9wZXJ0eV06IGNvbG9yUmFuZ2VVcGRhdGVkfSk7XG4gICAgICAgICAgICAgICAgICBsYXllci52YWxpZGF0ZVNjYWxlKGNoYW5uZWwpOyAvLyBWYWxpZGF0ZSBzY2FsZSB0byBlbnN1cmUgdGhhdCBpdCBjaGFuZ2VzIGZyb20gYGlkZW50aXR5YCB0byB0aGUgY29ycmVjdCBvbmUuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdfVxuICAgICAgICAgICAgY29sb3JVST17bGF5ZXIuY29uZmlnLmNvbG9yVUlbcHJvcGVydHldfVxuICAgICAgICAgICAgc2V0Q29sb3JVST17bmV3Q29uZmlnID0+IHNldENvbG9yVUkocHJvcGVydHksIG5ld0NvbmZpZyl9XG4gICAgICAgICAgICBvblNlbGVjdEhleENvbG9yQ29sdW1uPXtjb2xvckNvbHVtbiA9PiB7XG4gICAgICAgICAgICAgIC8vIEl0J3MgZGVmaW5lZCBpbiBDTjogc2VlIHdvcmtzcGFjZS13d3cvc3JjL2ZlYXR1cmVzL2J1aWxkZXIvdWkvS2VwbGVyR2wvU2lkZVBhbmVsL0xheWVyUGFuZWwvTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IudHN4XG4gICAgICAgICAgICAgIGhhbmRsZUN1c3RvbU9uU2VsZWN0SGV4Q29sdW1uKGxheWVyLCBjb2xvckNvbHVtbik7XG5cbiAgICAgICAgICAgICAgbGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICAgICAgICAgIFtmaWVsZF06IHtcbiAgICAgICAgICAgICAgICAgIC4uLmxheWVyLmNvbmZpZ1tmaWVsZF0sXG4gICAgICAgICAgICAgICAgICBjb2xvckNvbHVtbjogY29sb3JDb2x1bW4/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICBjb2xvckNvbHVtbklkeDogY29sb3JDb2x1bW4/LmZpZWxkSWR4XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbc2NhbGVdOiBTQ0FMRV9UWVBFUy5pZGVudGl0eVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBvbkNoYW5nZSh7W3Byb3BlcnR5XTogaGV4Q29sb3JDdXN0b21QYWxldHRlfSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBMYXllckNvbG9yUmFuZ2VTZWxlY3Rvcjtcbn1cblxuQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtWaXNDb25maWdCeUZpZWxkU2VsZWN0b3JGYWN0b3J5XTtcbmV4cG9ydCBmdW5jdGlvbiBDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeShWaXNDb25maWdCeUZpZWxkU2VsZWN0b3IpIHtcbiAgY29uc3QgQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvciA9ICh7XG4gICAgbGF5ZXIsXG4gICAgY2hhbm5lbCxcbiAgICBvbkNoYW5nZSxcbiAgICBvbkNoYW5nZVZpc0NvbmZpZyxcbiAgICBmaWVsZHMsXG4gICAgZmllbGRzQWdncmVnYXRlZCxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBpc0xvYWRpbmdcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGNoYW5uZWxTY2FsZVR5cGUsXG4gICAgICBkb21haW4sXG4gICAgICBmaWVsZCxcbiAgICAgIGFnZ3JlZ2F0aW9uLFxuICAgICAga2V5LFxuICAgICAgcHJvcGVydHksXG4gICAgICByYW5nZSxcbiAgICAgIHNjYWxlLFxuICAgICAgZGVmYXVsdE1lYXN1cmUsXG4gICAgICBzdXBwb3J0ZWRGaWVsZFR5cGVzXG4gICAgfSA9IGNoYW5uZWw7XG4gICAgY29uc3QgY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMgPVxuICAgICAgc3VwcG9ydGVkRmllbGRUeXBlcyB8fCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFNbY2hhbm5lbFNjYWxlVHlwZV07XG4gICAgY29uc3Qgc3VwcG9ydGVkRmllbGRzID0gZmllbGRzLmZpbHRlcigoe3R5cGV9KSA9PiBjaGFubmVsU3VwcG9ydGVkRmllbGRUeXBlcy5pbmNsdWRlcyh0eXBlKSk7XG4gICAgY29uc3Qgc2NhbGVPcHRpb25zID0gbGF5ZXIuZ2V0U2NhbGVPcHRpb25zKGNoYW5uZWwua2V5KTtcbiAgICBjb25zdCBzaG93U2NhbGVDdXN0b21pemFibGUgPVxuICAgICAgY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuY29sb3IgJiZcbiAgICAgIHNjYWxlICYmXG4gICAgICBsYXllci5jb25maWdbc2NhbGVdICYmXG4gICAgICBCb29sZWFuKGxheWVyLmNvbmZpZ1tmaWVsZF0pICYmXG4gICAgICBzY2FsZU9wdGlvbnM/Lmxlbmd0aCA+IDA7XG4gICAgY29uc3Qgc2hvd1NjYWxlID0gQm9vbGVhbihcbiAgICAgICFzaG93U2NhbGVDdXN0b21pemFibGUgJiZcbiAgICAgICAgc2NhbGUgJiZcbiAgICAgICAgIWxheWVyLmlzQWdncmVnYXRlZCAmJlxuICAgICAgICBsYXllci5jb25maWdbc2NhbGVdICYmXG4gICAgICAgIHNjYWxlT3B0aW9ucz8ubGVuZ3RoID4gMVxuICAgICk7XG4gICAgY29uc3QgZGVmYXVsdERlc2NyaXB0aW9uID0gJ2xheWVyQ29uZmlndXJhdGlvbi5kZWZhdWx0RGVzY3JpcHRpb24nO1xuICAgIGNvbnN0IHZpc1JhbmdlID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1tyYW5nZV07XG4gICAgY29uc3QgYWdncmVnYXRvciA9IGxheWVyLmNvbmZpZy52aXNDb25maWdbYWdncmVnYXRpb25dO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaXNDb25maWdCeUZpZWxkU2VsZWN0b3JcbiAgICAgICAgY2hhbm5lbD17Y2hhbm5lbC5rZXl9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtkZXNjcmlwdGlvbiB8fCBkZWZhdWx0RGVzY3JpcHRpb259XG4gICAgICAgIGRvbWFpbj17bGF5ZXIuY29uZmlnW2RvbWFpbl19XG4gICAgICAgIGZpZWxkcz17c3VwcG9ydGVkRmllbGRzfVxuICAgICAgICBhZ2dyZWdhdG9yPXthZ2dyZWdhdG9yfVxuICAgICAgICBmaWVsZHNBZ2dyZWdhdGVkPXtmaWVsZHNBZ2dyZWdhdGVkfVxuICAgICAgICBpZD17bGF5ZXIuaWR9XG4gICAgICAgIGtleT17YCR7a2V5fS1jaGFubmVsLXNlbGVjdG9yYH1cbiAgICAgICAgcHJvcGVydHk9e3Byb3BlcnR5fVxuICAgICAgICBwbGFjZWhvbGRlcj17ZGVmYXVsdE1lYXN1cmUgfHwgJ3BsYWNlaG9sZGVyLnNlbGVjdEZpZWxkJ31cbiAgICAgICAgcmFuZ2U9e3Zpc1JhbmdlfVxuICAgICAgICBzY2FsZU9wdGlvbnM9e3NjYWxlT3B0aW9uc31cbiAgICAgICAgc2NhbGVUeXBlPXtzY2FsZSA/IGxheWVyLmNvbmZpZ1tzY2FsZV0gOiBudWxsfVxuICAgICAgICBzZWxlY3RlZEZpZWxkPXtsYXllci5jb25maWdbZmllbGRdfVxuICAgICAgICBzaG93U2NhbGU9e3Nob3dTY2FsZX1cbiAgICAgICAgc2hvd1NjYWxlQ3VzdG9taXphYmxlPXtzaG93U2NhbGVDdXN0b21pemFibGV9XG4gICAgICAgIHVwZGF0ZUZpZWxkPXt2YWwgPT4ge1xuICAgICAgICAgIGlmICh2aXNSYW5nZT8uY29sb3JNYXApIHtcbiAgICAgICAgICAgIG9uQ2hhbmdlVmlzQ29uZmlnKHtbcmFuZ2VdOiB7Li4udmlzUmFuZ2UsIGNvbG9yTWFwOiB1bmRlZmluZWR9fSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9uQ2hhbmdlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBbZmllbGRdOiB2YWwsXG4gICAgICAgICAgICAgIC4uLihmaWVsZHNBZ2dyZWdhdGVkICYmIHtcbiAgICAgICAgICAgICAgICB2aXNDb25maWc6IHtcbiAgICAgICAgICAgICAgICAgIC4uLmxheWVyLmNvbmZpZy52aXNDb25maWcsXG4gICAgICAgICAgICAgICAgICBbYWdncmVnYXRpb25dOiB2YWw/LnNlbGVjdGVkQWdncmVnYXRvclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBrZXlcbiAgICAgICAgICApO1xuICAgICAgICB9fVxuICAgICAgICB1cGRhdGVTY2FsZT17dmFsID0+IG9uQ2hhbmdlKHtbc2NhbGVdOiB2YWx9LCBrZXkpfVxuICAgICAgICB1cGRhdGVDdXN0b21QYWxldHRlPXsoY29sb3JNYXAsIHVpQ3VzdG9tU2NhbGVUeXBlKSA9PiB7XG4gICAgICAgICAgb25DaGFuZ2VWaXNDb25maWcoe1tyYW5nZV06IHsuLi52aXNSYW5nZSwgY29sb3JNYXAsIHVpQ3VzdG9tU2NhbGVUeXBlfX0pO1xuICAgICAgICB9fVxuICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gQ2hhbm5lbEJ5VmFsdWVTZWxlY3Rvcjtcbn1cblxuQWdnclNjYWxlU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yRmFjdG9yeV07XG5cbmZ1bmN0aW9uIEFnZ3JTY2FsZVNlbGVjdG9yRmFjdG9yeShDb2xvckRpbWVuc2lvblNjYWxlU2VsZWN0b3IpIHtcbiAgY2xhc3MgQWdnclNjYWxlU2VsZWN0b3IgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtjaGFubmVsLCBsYXllciwgb25DaGFuZ2UsIG9uQ2hhbmdlVmlzQ29uZmlnfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7c2NhbGUsIGtleSwgY2hhbm5lbFNjYWxlVHlwZSwgZG9tYWluLCByYW5nZX0gPSBjaGFubmVsO1xuICAgICAgY29uc3Qgc2NhbGVPcHRpb25zID0gbGF5ZXIuZ2V0U2NhbGVPcHRpb25zKGtleSk7XG4gICAgICBjb25zdCB2aXNSYW5nZSA9IGxheWVyLmNvbmZpZy52aXNDb25maWdbcmFuZ2VdO1xuICAgICAgY29uc3Qgc2hvd1NjYWxlQ3VzdG9taXphYmxlID1cbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZSA9PT0gQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkoc2NhbGVPcHRpb25zKSAmJlxuICAgICAgICBzY2FsZU9wdGlvbnMubGVuZ3RoID4gMDtcbiAgICAgIGNvbnN0IHNob3dTY2FsZSA9IEFycmF5LmlzQXJyYXkoc2NhbGVPcHRpb25zKSAmJiBzY2FsZU9wdGlvbnMubGVuZ3RoID4gMTtcblxuICAgICAgaWYgKHNob3dTY2FsZUN1c3RvbWl6YWJsZSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgPENvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3RvclxuICAgICAgICAgICAgICBsYWJlbD17YCR7a2V5fSBTY2FsZWB9XG4gICAgICAgICAgICAgIHNjYWxlVHlwZT17bGF5ZXIuY29uZmlnW3NjYWxlXX1cbiAgICAgICAgICAgICAgb3B0aW9ucz17c2NhbGVPcHRpb25zfVxuICAgICAgICAgICAgICBkb21haW49e2xheWVyLmNvbmZpZ1tkb21haW5dfVxuICAgICAgICAgICAgICByYW5nZT17dmlzUmFuZ2V9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXt2YWwgPT4gb25DaGFuZ2Uoe1tzY2FsZV06IHZhbH0sIGtleSl9XG4gICAgICAgICAgICAgIG9uU2V0Q3VzdG9tUGFsZXR0ZT17KGNvbG9yTWFwLCB1aUN1c3RvbVNjYWxlVHlwZSkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlVmlzQ29uZmlnKHtbcmFuZ2VdOiB7Li4udmlzUmFuZ2UsIGNvbG9yTWFwLCB1aUN1c3RvbVNjYWxlVHlwZX19KTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2hvd1NjYWxlKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPERpbWVuc2lvblNjYWxlU2VsZWN0b3JcbiAgICAgICAgICAgIGxhYmVsPXtgJHtrZXl9IFNjYWxlYH1cbiAgICAgICAgICAgIG9wdGlvbnM9e3NjYWxlT3B0aW9uc31cbiAgICAgICAgICAgIHNjYWxlVHlwZT17bGF5ZXIuY29uZmlnW3NjYWxlXX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXt2YWwgPT4gb25DaGFuZ2Uoe1tzY2FsZV06IHZhbH0sIGtleSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5qZWN0SW50bChBZ2dyU2NhbGVTZWxlY3Rvcik7XG59XG5cbmV4cG9ydCBjb25zdCBBZ2dyZWdhdGlvblR5cGVTZWxlY3RvciA9ICh7bGF5ZXIsIGNoYW5uZWwsIG9uQ2hhbmdlfSkgPT4ge1xuICBjb25zdCB7ZmllbGQsIGFnZ3JlZ2F0aW9uLCBrZXl9ID0gY2hhbm5lbDtcbiAgY29uc3Qgc2VsZWN0ZWRGaWVsZCA9IGxheWVyLmNvbmZpZ1tmaWVsZF07XG4gIGNvbnN0IHt2aXNDb25maWd9ID0gbGF5ZXIuY29uZmlnO1xuXG4gIC8vIGFnZ3JlZ2F0aW9uIHNob3VsZCBvbmx5IGJlIHNlbGVjdGFibGUgd2hlbiBmaWVsZCBpcyBzZWxlY3RlZFxuICBjb25zdCBhZ2dyZWdhdGlvbk9wdGlvbnMgPSBsYXllci5nZXRBZ2dyZWdhdGlvbk9wdGlvbnMoa2V5KTtcblxuICByZXR1cm4gKFxuICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgPFBhbmVsTGFiZWw+XG4gICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbGF5ZXIuYWdncmVnYXRlQnknfSB2YWx1ZXM9e3tmaWVsZDogc2VsZWN0ZWRGaWVsZC5uYW1lfX0gLz5cbiAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgIDxJdGVtU2VsZWN0b3JcbiAgICAgICAgc2VsZWN0ZWRJdGVtcz17dmlzQ29uZmlnW2FnZ3JlZ2F0aW9uXX1cbiAgICAgICAgb3B0aW9ucz17YWdncmVnYXRpb25PcHRpb25zfVxuICAgICAgICBtdWx0aVNlbGVjdD17ZmFsc2V9XG4gICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT5cbiAgICAgICAgICBvbkNoYW5nZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmlzQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgLi4ubGF5ZXIuY29uZmlnLnZpc0NvbmZpZyxcbiAgICAgICAgICAgICAgICBbYWdncmVnYXRpb25dOiB2YWx1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2hhbm5lbC5rZXlcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICApO1xufTtcblxuLyogZXNsaW50LWVuYWJsZSBtYXgtcGFyYW1zICovXG4iXX0=