@carto/kepler.gl 0.0.58 → 0.0.59-dynamic-aggr-point-layers.1

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.
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _reactIntl = require("react-intl");
13
+
14
+ // Copyright (c) 2022 Uber Technologies, Inc.
15
+ //
16
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
17
+ // of this software and associated documentation files (the "Software"), to deal
18
+ // in the Software without restriction, including without limitation the rights
19
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
20
+ // copies of the Software, and to permit persons to whom the Software is
21
+ // furnished to do so, subject to the following conditions:
22
+ //
23
+ // The above copyright notice and this permission notice shall be included in
24
+ // all copies or substantial portions of the Software.
25
+ //
26
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
32
+ // THE SOFTWARE.
33
+ CustomMarkerCategoriesSelectorFactory.deps = [];
34
+
35
+ function CustomMarkerCategoriesSelectorFactory() {
36
+ var CustomMarkerCategoriesSelector = function CustomMarkerCategoriesSelector() {
37
+ return /*#__PURE__*/_react["default"].createElement("div", null, "Component replaced by cloud native");
38
+ };
39
+
40
+ return (0, _reactIntl.injectIntl)(CustomMarkerCategoriesSelector);
41
+ }
42
+
43
+ var _default = CustomMarkerCategoriesSelectorFactory;
44
+ exports["default"] = _default;
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY3VzdG9tLW1hcmtlci1jYXRlZ29yaWVzLXNlbGVjdG9yLmpzIl0sIm5hbWVzIjpbIkN1c3RvbU1hcmtlckNhdGVnb3JpZXNTZWxlY3RvckZhY3RvcnkiLCJkZXBzIiwiQ3VzdG9tTWFya2VyQ2F0ZWdvcmllc1NlbGVjdG9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0FBLHFDQUFxQyxDQUFDQyxJQUF0QyxHQUE2QyxFQUE3Qzs7QUFDQSxTQUFTRCxxQ0FBVCxHQUFpRDtBQUMvQyxNQUFNRSw4QkFBOEIsR0FBRyxTQUFqQ0EsOEJBQWlDLEdBQU07QUFDM0Msd0JBQU8sa0ZBQVA7QUFDRCxHQUZEOztBQUlBLFNBQU8sMkJBQVdBLDhCQUFYLENBQVA7QUFDRDs7ZUFFY0YscUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtpbmplY3RJbnRsfSBmcm9tICdyZWFjdC1pbnRsJztcblxuQ3VzdG9tTWFya2VyQ2F0ZWdvcmllc1NlbGVjdG9yRmFjdG9yeS5kZXBzID0gW107XG5mdW5jdGlvbiBDdXN0b21NYXJrZXJDYXRlZ29yaWVzU2VsZWN0b3JGYWN0b3J5KCkge1xuICBjb25zdCBDdXN0b21NYXJrZXJDYXRlZ29yaWVzU2VsZWN0b3IgPSAoKSA9PiB7XG4gICAgcmV0dXJuIDxkaXY+Q29tcG9uZW50IHJlcGxhY2VkIGJ5IGNsb3VkIG5hdGl2ZTwvZGl2PjtcbiAgfTtcblxuICByZXR1cm4gaW5qZWN0SW50bChDdXN0b21NYXJrZXJDYXRlZ29yaWVzU2VsZWN0b3IpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21NYXJrZXJDYXRlZ29yaWVzU2VsZWN0b3JGYWN0b3J5O1xuIl19
@@ -119,6 +119,7 @@ exports.getLayerDataset = getLayerDataset;
119
119
  var getLayerConfiguratorProps = function getLayerConfiguratorProps(props) {
120
120
  return {
121
121
  layer: props.layer,
122
+ disabled: Boolean(props.disabled),
122
123
  fields: getLayerFields(props.datasets, props.layer),
123
124
  onChange: props.updateLayerConfig,
124
125
  setColorUI: props.updateLayerColorUI
@@ -580,9 +581,11 @@ function LayerConfiguratorFactory(SourceDataSelector, VisConfigSlider, TextLabel
580
581
  onSelect: updateLayerType
581
582
  }), /*#__PURE__*/_react["default"].createElement(LayerVisibilityByZoom, {
582
583
  updateLayerConfig: this.props.updateLayerConfig,
583
- layer: layer
584
+ layer: layer,
585
+ disabled: layerConfiguratorProps.disabled
584
586
  }), /*#__PURE__*/_react["default"].createElement(LayerAggregationResolution, {
585
- layer: layer
587
+ layer: layer,
588
+ disabled: layerConfiguratorProps.disabled
586
589
  }), Object.keys(datasets).length > 1 && /*#__PURE__*/_react["default"].createElement(SourceDataSelector, {
587
590
  datasets: datasets,
588
591
  id: layer.id,
@@ -973,4 +976,4 @@ var AggregationTypeSelector = function AggregationTypeSelector(_ref15) {
973
976
 
974
977
 
975
978
  exports.AggregationTypeSelector = AggregationTypeSelector;
976
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlndXJhdG9yLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlndXJhdG9yIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJwcm9wcyIsInRoZW1lIiwibGF5ZXJDb25maWd1cmF0b3JNYXJnaW4iLCJsYXllckNvbmZpZ3VyYXRvclBhZGRpbmciLCJsYXllckNvbmZpZ3VyYXRvckJvcmRlciIsImxheWVyQ29uZmlndXJhdG9yQm9yZGVyQ29sb3IiLCJTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciIsImdldExheWVyRmllbGRzIiwiZGF0YXNldHMiLCJsYXllciIsImNvbmZpZyIsImRhdGFJZCIsImZpZWxkcyIsImdldExheWVyRGF0YXNldCIsImdldExheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJvbkNoYW5nZSIsInVwZGF0ZUxheWVyQ29uZmlnIiwic2V0Q29sb3JVSSIsInVwZGF0ZUxheWVyQ29sb3JVSSIsImdldFZpc0NvbmZpZ3VyYXRvclByb3BzIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJnZXRMYXllckNoYW5uZWxDb25maWdQcm9wcyIsInVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyIsIm9uQ2hhbmdlVmlzQ29uZmlnIiwiTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5IiwiZGVwcyIsIlNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkiLCJWaXNDb25maWdTbGlkZXJGYWN0b3J5IiwiVGV4dExhYmVsUGFuZWxGYWN0b3J5IiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sdW1uQ29uZmlnRmFjdG9yeSIsIkxheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSIsIlZpc0NvbmZpZ1N3aXRjaEZhY3RvcnkiLCJBZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnkiLCJMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5IiwiTGF5ZXJBZ2dyZWdhdGlvblJlc29sdXRpb25GYWN0b3J5IiwiTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeSIsIkFyY0xheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkiLCJDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXBGYWN0b3J5IiwiU291cmNlRGF0YVNlbGVjdG9yIiwiVmlzQ29uZmlnU2xpZGVyIiwiVGV4dExhYmVsUGFuZWwiLCJMYXllckNvbmZpZ0dyb3VwIiwiQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvciIsIkxheWVyQ29sdW1uQ29uZmlnIiwiTGF5ZXJUeXBlU2VsZWN0b3IiLCJWaXNDb25maWdTd2l0Y2giLCJBZ2dyU2NhbGVTZWxlY3RvciIsIkxheWVyVmlzaWJpbGl0eUJ5Wm9vbSIsIkxheWVyQWdncmVnYXRpb25SZXNvbHV0aW9uIiwiTGF5ZXJDb2xvclNlbGVjdG9yIiwiTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IiLCJBcmNMYXllckNvbG9yU2VsZWN0b3IiLCJDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXAiLCJMYXllckNvbmZpZ3VyYXRvciIsIl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJ2aXNDb25maWdTZXR0aW5ncyIsImZpbGxlZCIsImxhYmVsIiwiY29sb3JGaWVsZCIsInZpc3VhbENoYW5uZWxzIiwiY29sb3IiLCJvcGFjaXR5IiwidHlwZSIsIkxBWUVSX1RZUEVTIiwicG9pbnQiLCJvdXRsaW5lIiwiQm9vbGVhbiIsInZpc0NvbmZpZyIsImN1c3RvbU1hcmtlcnMiLCJzdHJva2VDb2xvckZpZWxkIiwic3Ryb2tlQ29sb3IiLCJ0aGlja25lc3MiLCJzaXplRmllbGQiLCJyYWRpdXMiLCJyYWRpdXNSYW5nZSIsImZpeGVkUmFkaXVzIiwic2l6ZSIsInVwZGF0ZUxheWVyVGV4dExhYmVsIiwidGV4dExhYmVsIiwiY29sb3JQYWxldHRlIiwic2V0Q29sb3JQYWxldHRlVUkiLCJjb2xvckFnZ3JlZ2F0aW9uIiwiY29uZGl0aW9uIiwiY2x1c3RlclJhZGl1cyIsIndlaWdodCIsIl9yZW5kZXJBZ2dyZWdhdGlvbkxheWVyQ29uZmlnIiwiZW5hYmxlM2QiLCJlbGV2YXRpb25CeURlc2NyaXB0aW9uIiwiY29sb3JCeURlc2NyaXB0aW9uIiwicGVyY2VudGlsZSIsIndvcmxkVW5pdFNpemUiLCJjb3ZlcmFnZSIsImVsZXZhdGlvblNjYWxlIiwic2l6ZVJhbmdlIiwic2l6ZUFnZ3JlZ2F0aW9uIiwiZWxldmF0aW9uUGVyY2VudGlsZSIsImNvdmVyYWdlRmllbGQiLCJjb3ZlcmFnZVJhbmdlIiwiYXJncyIsIl9yZW5kZXJMaW5lTGF5ZXJDb25maWciLCJzb3VyY2VDb2xvciIsIm1ldGEiLCJmZWF0dXJlVHlwZXMiLCJwb2x5Z29uIiwic3Ryb2tlZCIsInRyYWlsTGVuZ3RoIiwic3Ryb2tlT3BhY2l0eSIsImhlaWdodCIsIndpcmVmcmFtZSIsInJhZGl1c0ZpZWxkIiwiZSIsInRhcmdldCIsImZpbGVzIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwic2NlbmVncmFwaCIsInNpemVTY2FsZSIsImFuZ2xlWCIsImFuZ2xlWSIsImFuZ2xlWiIsImhlaWdodFJhbmdlIiwibGF5ZXJUeXBlT3B0aW9ucyIsInVwZGF0ZUxheWVyVHlwZSIsImZpZWxkUGFpcnMiLCJ1bmRlZmluZWQiLCJkYXRhc2V0IiwicmVuZGVyVGVtcGxhdGUiLCJsYXllckluZm9Nb2RhbCIsIm9wZW5Nb2RhbCIsIk9iamVjdCIsImtleXMiLCJjb2x1bW5zIiwibGVuZ3RoIiwiaGFzQWxsQ29sdW1ucyIsImlkIiwidmFsdWUiLCJjb2x1bW5QYWlycyIsImFzc2lnbkNvbHVtblBhaXJzIiwiYmluZCIsImFzc2lnbkNvbHVtbiIsImNvbHVtbkxhYmVscyIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJhcnJheU9mIiwiYW55IiwiZnVuYyIsIlN0eWxlZEhvd1RvQnV0dG9uIiwiSG93VG9CdXR0b24iLCJvbkNsaWNrIiwiQ29sb3JTZWxlY3RvckZhY3RvcnkiLCJDb2xvclNlbGVjdG9yIiwic2VsZWN0ZWRDb2xvciIsInByb3BlcnR5Iiwic2V0Q29sb3IiLCJyZ2JWYWx1ZSIsImNvbG9yVUkiLCJuZXdDb25maWciLCJvbkNoYW5nZUNvbmZpZyIsInRhcmdldENvbG9yIiwiaXNSYW5nZSIsImNvbG9yUmFuZ2UiLCJjb2xvck1hcCIsImNvbG9yUmFuZ2VVcGRhdGVkIiwidXBkYXRlQ29sb3JNYXAiLCJWaXNDb25maWdCeUZpZWxkU2VsZWN0b3JGYWN0b3J5IiwiVmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yIiwiY2hhbm5lbCIsImZpZWxkc0FnZ3JlZ2F0ZWQiLCJkZXNjcmlwdGlvbiIsImlzTG9hZGluZyIsImNoYW5uZWxTY2FsZVR5cGUiLCJkb21haW4iLCJmaWVsZCIsImFnZ3JlZ2F0aW9uIiwia2V5IiwicmFuZ2UiLCJzY2FsZSIsImRlZmF1bHRNZWFzdXJlIiwic3VwcG9ydGVkRmllbGRUeXBlcyIsImNoYW5uZWxTdXBwb3J0ZWRGaWVsZFR5cGVzIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwic3VwcG9ydGVkRmllbGRzIiwiZmlsdGVyIiwiaW5jbHVkZXMiLCJzY2FsZU9wdGlvbnMiLCJnZXRTY2FsZU9wdGlvbnMiLCJzaG93U2NhbGVDdXN0b21pemFibGUiLCJDSEFOTkVMX1NDQUxFUyIsInNob3dTY2FsZSIsImlzQWdncmVnYXRlZCIsImRlZmF1bHREZXNjcmlwdGlvbiIsInZpc1JhbmdlIiwiYWdncmVnYXRvciIsInZhbCIsInNlbGVjdGVkQWdncmVnYXRvciIsInVpQ3VzdG9tU2NhbGVUeXBlIiwiQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yRmFjdG9yeSIsIkNvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3RvciIsImNvbG9yQWdnciIsIkFycmF5IiwiaXNBcnJheSIsIkFnZ3JlZ2F0aW9uVHlwZVNlbGVjdG9yIiwic2VsZWN0ZWRGaWVsZCIsImFnZ3JlZ2F0aW9uT3B0aW9ucyIsImdldEFnZ3JlZ2F0aW9uT3B0aW9ucyIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsR0FBR0MsNkJBQU9DLEdBQVAsQ0FBV0MsS0FBWCxDQUFpQjtBQUMvQ0MsRUFBQUEsU0FBUyxFQUFFO0FBRG9DLENBQWpCLENBQUgsOExBSWIsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZQyx1QkFBaEI7QUFBQSxDQUpRLEVBS2hCLFVBQUFGLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUUsd0JBQWhCO0FBQUEsQ0FMVyxFQU1aLFVBQUFILEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUcsdUJBQWhCO0FBQUEsQ0FOTyxFQU92QixVQUFBSixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlJLDRCQUFoQjtBQUFBLENBUGtCLENBQTdCOztBQVVBLElBQU1DLDZCQUE2QixHQUFHViw2QkFBT0MsR0FBUCxDQUFXQyxLQUFYLENBQWlCO0FBQ3JEQyxFQUFBQSxTQUFTLEVBQUU7QUFEMEMsQ0FBakIsQ0FBSCwrR0FBbkM7O0FBTU8sSUFBTVEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFDQyxRQUFELEVBQVdDLEtBQVg7QUFBQSxTQUM1QkEsS0FBSyxDQUFDQyxNQUFOLElBQWdCRixRQUFRLENB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MUNRLEdBRDBDO0FBRXJFLE1BQU00QixhQUFhLEdBQUcxTSxLQUFLLENBQUNDLE1BQU4sQ0FBYTJLLEtBQWIsQ0FBdEI7QUFGcUUsTUFHOUQ1RyxTQUg4RCxHQUdqRGhFLEtBQUssQ0FBQ0MsTUFIMkMsQ0FHOUQrRCxTQUg4RCxFQUtyRTs7QUFDQSxNQUFNMkksa0JBQWtCLEdBQUczTSxLQUFLLENBQUM0TSxxQkFBTixDQUE0QjlCLEdBQTVCLENBQTNCO0FBRUEsc0JBQ0UsZ0NBQUMsbUNBQUQscUJBQ0UsZ0NBQUMsNkJBQUQscUJBQ0UsZ0NBQUMsOEJBQUQ7QUFBa0IsSUFBQSxFQUFFLEVBQUUsbUJBQXRCO0FBQTJDLElBQUEsTUFBTSxFQUFFO0FBQUNGLE1BQUFBLEtBQUssRUFBRThCLGFBQWEsQ0FBQ0c7QUFBdEI7QUFBbkQsSUFERixDQURGLGVBSUUsZ0NBQUMsd0JBQUQ7QUFDRSxJQUFBLGFBQWEsRUFBRTdJLFNBQVMsQ0FBQzZHLFdBQUQsQ0FEMUI7QUFFRSxJQUFBLE9BQU8sRUFBRThCLGtCQUZYO0FBR0UsSUFBQSxXQUFXLEVBQUUsS0FIZjtBQUlFLElBQUEsVUFBVSxFQUFFLEtBSmQ7QUFLRSxJQUFBLFFBQVEsRUFBRSxrQkFBQXRFLEtBQUs7QUFBQSxhQUNiL0gsVUFBUSxDQUNOO0FBQ0UwRCxRQUFBQSxTQUFTLGtDQUNKaEUsS0FBSyxDQUFDQyxNQUFOLENBQWErRCxTQURULDRDQUVONkcsV0FGTSxFQUVReEMsS0FGUjtBQURYLE9BRE0sRUFPTmlDLE9BQU8sQ0FBQ1EsR0FQRixDQURLO0FBQUE7QUFMakIsSUFKRixDQURGO0FBd0JELENBaENNO0FBa0NQIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBGcmFnbWVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdsb2NhbGl6YXRpb24nO1xuXG5pbXBvcnQge0J1dHRvbiwgSW5wdXQsIFBhbmVsTGFiZWwsIFNpZGVQYW5lbFNlY3Rpb259IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBJdGVtU2VsZWN0b3IgZnJvbSAnY29tcG9uZW50cy9jb21tb24vaXRlbS1zZWxlY3Rvci9pdGVtLXNlbGVjdG9yJztcblxuaW1wb3J0IFZpc0NvbmZpZ0J5RmllbGRTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi92aXMtY29uZmlnLWJ5LWZpZWxkLXNlbGVjdG9yJztcbmltcG9ydCBMYXllckNvbHVtbkNvbmZpZ0ZhY3RvcnkgZnJvbSAnLi9sYXllci1jb2x1bW4tY29uZmlnJztcbmltcG9ydCBMYXllclR5cGVTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi9sYXllci10eXBlLXNlbGVjdG9yJztcbmltcG9ydCBMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5IGZyb20gJy4vbGF5ZXItdmlzaWJpbGl0eS1ieS16b29tJztcbmltcG9ydCBEaW1lbnNpb25TY2FsZVNlbGVjdG9yIGZyb20gJy4vZGltZW5zaW9uLXNjYWxlLXNlbGVjdG9yJztcbmltcG9ydCBTb3VyY2VEYXRhU2VsZWN0b3JGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9jb21tb24vc291cmNlLWRhdGEtc2VsZWN0b3InO1xuaW1wb3J0IFZpc0NvbmZpZ1N3aXRjaEZhY3RvcnkgZnJvbSAnLi92aXMtY29uZmlnLXN3aXRjaCc7XG5pbXBvcnQgVmlzQ29uZmlnU2xpZGVyRmFjdG9yeSBmcm9tICcuL3Zpcy1jb25maWctc2xpZGVyJztcbmltcG9ydCBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeSwge0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50fSBmcm9tICcuL2xheWVyLWNvbmZpZy1ncm91cCc7XG5pbXBvcnQgQ3VzdG9tTWFya2Vyc0NvbmZpZ0dyb3VwRmFjdG9yeSBmcm9tICcuL2N1c3RvbS1tYXJrZXJzLWNvbmZpZy1ncm91cCc7XG5pbXBvcnQgVGV4dExhYmVsUGFuZWxGYWN0b3J5IGZyb20gJy4vdGV4dC1sYWJlbC1wYW5lbCc7XG5cbmltcG9ydCB7Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyfSBmcm9tICd1dGlscy91dGlscyc7XG5cbmltcG9ydCB7Q0hBTk5FTF9TQ0FMRVMsIENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IHtMQVlFUl9UWVBFU30gZnJvbSAnbGF5ZXJzL3R5cGVzJztcbmltcG9ydCB7aW5qZWN0SW50bH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yRmFjdG9yeSBmcm9tICcuL2NvbG9yLWRpbWVuc2lvbi1zY2FsZS1zZWxlY3Rvcic7XG5pbXBvcnQgQ29sb3JTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi9jb2xvci1zZWxlY3Rvcic7XG5pbXBvcnQgTGF5ZXJBZ2dyZWdhdGlvblJlc29sdXRpb25GYWN0b3J5IGZyb20gJy4vbGF5ZXItYWdncmVnYXRpb24tcmVzb2x1dGlvbic7XG5cbmNvbnN0IFN0eWxlZExheWVyQ29uZmlndXJhdG9yID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLXBhbmVsX19jb25maWcnXG59KWBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlndXJhdG9yTWFyZ2lufTtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvclBhZGRpbmd9O1xuICBib3JkZXItbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvckJvcmRlcn0gZGFzaGVkXG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvckJvcmRlckNvbG9yfTtcbmA7XG5cbmNvbnN0IFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLXBhbmVsX19jb25maWdfX3Zpc3VhbEMtY29uZmlnJ1xufSlgXG4gIG1hcmdpbi10b3A6IDEycHg7XG5gO1xuXG5leHBvcnQgY29uc3QgZ2V0TGF5ZXJGaWVsZHMgPSAoZGF0YXNldHMsIGxheWVyKSA9PlxuICBsYXllci5jb25maWcgJiYgZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0gPyBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXS5maWVsZHMgOiBbXTtcblxuZXhwb3J0IGNvbnN0IGdldExheWVyRGF0YXNldCA9IChkYXRhc2V0cywgbGF5ZXIpID0+XG4gIGxheWVyLmNvbmZpZyAmJiBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXSA/IGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdIDogbnVsbDtcblxuZXhwb3J0IGNvbnN0IGdldExheWVyQ29uZmlndXJhdG9yUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyQ29uZmlnLFxuICBzZXRDb2xvclVJOiBwcm9wcy51cGRhdGVMYXllckNvbG9yVUlcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0VmlzQ29uZmlndXJhdG9yUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyVmlzQ29uZmlnLFxuICBzZXRDb2xvclVJOiBwcm9wcy51cGRhdGVMYXllckNvbG9yVUlcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0TGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyxcbiAgb25DaGFuZ2VWaXNDb25maWc6IHByb3BzLnVwZGF0ZUxheWVyVmlzQ29uZmlnXG59KTtcblxuTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5LmRlcHMgPSBbXG4gIFNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnksXG4gIFZpc0NvbmZpZ1NsaWRlckZhY3RvcnksXG4gIFRleHRMYWJlbFBhbmVsRmFjdG9yeSxcbiAgTGF5ZXJDb25maWdHcm91cEZhY3RvcnksXG4gIENoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllckNvbHVtbkNvbmZpZ0ZhY3RvcnksXG4gIExheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSxcbiAgVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSxcbiAgQWdnclNjYWxlU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5LFxuICBMYXllckFnZ3JlZ2F0aW9uUmVzb2x1dGlvbkZhY3RvcnksXG4gIExheWVyQ29sb3JTZWxlY3RvckZhY3RvcnksXG4gIExheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeSxcbiAgQXJjTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSxcbiAgQ3VzdG9tTWFya2Vyc0NvbmZpZ0dyb3VwRmFjdG9yeVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5KFxuICBTb3VyY2VEYXRhU2VsZWN0b3IsXG4gIFZpc0NvbmZpZ1NsaWRlcixcbiAgVGV4dExhYmVsUGFuZWwsXG4gIExheWVyQ29uZmlnR3JvdXAsXG4gIENoYW5uZWxCeVZhbHVlU2VsZWN0b3IsXG4gIExheWVyQ29sdW1uQ29uZmlnLFxuICBMYXllclR5cGVTZWxlY3RvcixcbiAgVmlzQ29uZmlnU3dpdGNoLFxuICBBZ2dyU2NhbGVTZWxlY3RvcixcbiAgTGF5ZXJWaXNpYmlsaXR5Qnlab29tLFxuICBMYXllckFnZ3JlZ2F0aW9uUmVzb2x1dGlvbixcbiAgTGF5ZXJDb2xvclNlbGVjdG9yLFxuICBMYXllckNvbG9yUmFuZ2VTZWxlY3RvcixcbiAgQXJjTGF5ZXJDb2xvclNlbGVjdG9yLFxuICBDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXBcbikge1xuICBjbGFzcyBMYXllckNvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIGxheWVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBkYXRhc2V0czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJUeXBlT3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIG9wZW5Nb2RhbDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZUxheWVyQ29uZmlnOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlTGF5ZXJUeXBlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlTGF5ZXJWaXNDb25maWc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllclZpc3VhbENoYW5uZWxDb25maWc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllckNvbG9yVUk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgICB9O1xuXG4gICAgX3JlbmRlclBvaW50TGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnKHByb3BzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVySWNvbkxheWVyQ29uZmlnKHByb3BzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2NhdHRlcnBsb3RMYXllckNvbmZpZyhwcm9wcyk7XG4gICAgfVxuXG4gICAgX3JlbmRlclNjYXR0ZXJwbG90TGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogRmlsbCBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLihsYXllci52aXNDb25maWdTZXR0aW5ncy5maWxsZWQgfHwge2xhYmVsOiAnbGF5ZXIuY29sb3InfSl9XG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7Lyogb3V0bGluZSBjb2xvciAqL31cbiAgICAgICAgICB7bGF5ZXIudHlwZSA9PT0gTEFZRVJfVFlQRVMucG9pbnQgPyAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3V0bGluZX1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgICAgICBkaXNhYmxlZD17Qm9vbGVhbihsYXllci5jb25maWcudmlzQ29uZmlnLmN1c3RvbU1hcmtlcnMpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnN0cm9rZUNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gcHJvcGVydHk9XCJzdHJva2VDb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yPXtsYXllci5jb25maWcudmlzQ29uZmlnLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgcHJvcGVydHk9XCJzdHJva2VDb2xvclwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50aGlja25lc3N9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWxheWVyLmNvbmZpZy52aXNDb25maWcub3V0bGluZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAge2xheWVyLnR5cGUgPT09IExBWUVSX1RZUEVTLnBvaW50ID8gKFxuICAgICAgICAgICAgPEN1c3RvbU1hcmtlcnNDb25maWdHcm91cFxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzPXt2aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHM9e2xheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHsvKiBSYWRpdXMgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIGxhYmVsPXtsYXllci5jb25maWcudmlzQ29uZmlnLmN1c3RvbU1hcmtlcnMgPyAnbGF5ZXIuc2l6ZScgOiAnbGF5ZXIucmFkaXVzJ31cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgeyFsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtCb29sZWFuKGxheWVyLmNvbmZpZy5zaXplRmllbGQpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXNSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshbGF5ZXIuY29uZmlnLnNpemVGaWVsZCB8fCBsYXllci5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1N3aXRjaFxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmZpeGVkUmFkaXVzfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2xheWVyLmNvbmZpZy52aXNDb25maWcuY3VzdG9tTWFya2Vyc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+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/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gcHJvcGVydHk9XCJzdHJva2VDb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZU9wYWNpdHl9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlIFdpZHRoICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICB7Li4uKGZlYXR1cmVUeXBlcy5wb2x5Z29uID8gbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZCA6IHt9KX1cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuc3Ryb2tlV2lkdGhcIlxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnNpemVGaWVsZCA/IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplUmFuZ2V9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MudGhpY2tuZXNzfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogRWxldmF0aW9uICovfVxuICAgICAgICAgIHtmZWF0dXJlVHlwZXMucG9seWdvbiA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZTNkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXZpc0NvbmZpZy5maWxsZWR9XG4gICAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uU2NhbGV9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU3dpdGNoIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLndpcmVmcmFtZX0gLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHsvKiBSYWRpdXMgKi99XG4gICAgICAgICAge2ZlYXR1cmVUeXBlcy5wb2ludCA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIucmFkaXVzJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICAgIHshbGF5ZXIuY29uZmlnLnJhZGl1c0ZpZWxkID8gKFxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXN9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17Qm9vbGVhbihsYXllci5jb25maWcucmFkaXVzRmllbGQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c1JhbmdlfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFsYXllci5jb25maWcucmFkaXVzRmllbGR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5yYWRpdXN9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlcjNETGF5ZXJDb25maWcoe2xheWVyLCB2aXNDb25maWd1cmF0b3JQcm9wc30pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLjNETW9kZWwnfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGFjY2VwdD1cIi5nbGIsLmdsdGZcIlxuICAgICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmZpbGVzICYmIGUudGFyZ2V0LmZpbGVzWzBdKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGUudGFyZ2V0LmZpbGVzWzBdKTtcbiAgICAgICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlKHtzY2VuZWdyYXBoOiB1cmx9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLjNETW9kZWxPcHRpb25zJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplU2NhbGV9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmFuZ2xlWH1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuYW5nbGVZfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5hbmdsZVp9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJTMkxheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbmZpZzoge3Zpc0NvbmZpZ31cbiAgICAgIH0gPSBsYXllcjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmZpbGxlZH1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuZmlsbENvbG9yXCJcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvciB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBTdHJva2UgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zdHJva2VkfVxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgbGFiZWw9XCJsYXllci5zdHJva2VDb2xvclwiXG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gcHJvcGVydHk9XCJzdHJva2VDb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlIFdpZHRoICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gbGFiZWw9XCJsYXllci5zdHJva2VXaWR0aFwiIGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIEVsZXZhdGlvbiAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZTNkfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyF2aXNDb25maWcuZmlsbGVkfVxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5oZWlnaHR9XG4gICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZX1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBsYWJlbD1cImxheWVyVmlzQ29uZmlncy5lbGV2YXRpb25TY2FsZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmhlaWdodFJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD1cImxheWVyVmlzQ29uZmlncy5oZWlnaHRSYW5nZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTd2l0Y2ggey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mud2lyZWZyYW1lfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtsYXllciwgZGF0YXNldHMsIHVwZGF0ZUxheWVyQ29uZmlnLCBsYXllclR5cGVPcHRpb25zLCB1cGRhdGVMYXllclR5cGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtmaWVsZHMgPSBbXSwgZmllbGRQYWlycyA9IHVuZGVmaW5lZH0gPSBsYXllci5jb25maWcuZGF0YUlkXG4gICAgICAgID8gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF1cbiAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IHtjb25maWd9ID0gbGF5ZXI7XG5cbiAgICAgIGNvbnN0IHZpc0NvbmZpZ3VyYXRvclByb3BzID0gZ2V0VmlzQ29uZmlndXJhdG9yUHJvcHModGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllckNvbmZpZ3VyYXRvclByb3BzID0gZ2V0TGF5ZXJDb25maWd1cmF0b3JQcm9wcyh0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzID0gZ2V0TGF5ZXJDaGFubmVsQ29uZmlnUHJvcHModGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBkYXRhc2V0ID0gZ2V0TGF5ZXJEYXRhc2V0KGRhdGFzZXRzLCBsYXllcik7XG4gICAgICBjb25zdCByZW5kZXJUZW1wbGF0ZSA9IGxheWVyLnR5cGUgJiYgYF9yZW5kZXIke2NhcGl0YWxpemVGaXJzdExldHRlcihsYXllci50eXBlKX1MYXllckNvbmZpZ2A7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7bGF5ZXIubGF5ZXJJbmZvTW9kYWwgPyAoXG4gICAgICAgICAgICA8SG93VG9CdXR0b24gb25DbGljaz17KCkgPT4gdGhpcy5wcm9wcy5vcGVuTW9kYWwobGF5ZXIubGF5ZXJJbmZvTW9kYWwpfSAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICBsYWJlbD17J2xheWVyLmJhc2ljJ31cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlPXtPYmplY3Qua2V5cyhsYXllci5jb25maWcuY29sdW1ucykubGVuZ3RoID4gMH1cbiAgICAgICAgICAgIGV4cGFuZGVkPXshbGF5ZXIuaGFzQWxsQ29sdW1ucygpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMYXllclR5cGVTZWxlY3RvclxuICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgICAgbGF5ZXJUeXBlT3B0aW9ucz17bGF5ZXJUeXBlT3B0aW9uc31cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e3VwZGF0ZUxheWVyVHlwZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8TGF5ZXJWaXNpYmlsaXR5Qnlab29tIHVwZGF0ZUxheWVyQ29uZmlnPXt0aGlzLnByb3BzLnVwZGF0ZUxheWVyQ29uZmlnfSBsYXllcj17bGF5ZXJ9IC8+XG4gICAgICAgICAgICA8TGF5ZXJBZ2dyZWdhdGlvblJlc29sdXRpb24gbGF5ZXI9e2xheWVyfSAvPlxuICAgICAgICAgICAge09iamVjdC5rZXlzKGRhdGFzZXRzKS5sZW5ndGggPiAxICYmIChcbiAgICAgICAgICAgICAgPFNvdXJjZURhdGFTZWxlY3RvclxuICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICBpZD17bGF5ZXIuaWR9XG4gICAgICAgICAgICAgICAgZGF0YUlkPXtjb25maWcuZGF0YUlkfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt2YWx1ZSA9PiB1cGRhdGVMYXllckNvbmZpZyh7ZGF0YUlkOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtPYmplY3Qua2V5cyhsYXllci5jb25maWcuY29sdW1ucykubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2x1bW5Db25maWdcbiAgICAgICAgICAgICAgICAgIGNvbHVtblBhaXJzPXtsYXllci5jb2x1bW5QYWlyc31cbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e2xheWVyLmNvbmZpZy5jb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgYXNzaWduQ29sdW1uUGFpcnM9e2xheWVyLmFzc2lnbkNvbHVtblBhaXJzLmJpbmQobGF5ZXIpfVxuICAgICAgICAgICAgICAgICAgYXNzaWduQ29sdW1uPXtsYXllci5hc3NpZ25Db2x1bW4uYmluZChsYXllcil9XG4gICAgICAgICAgICAgICAgICBjb2x1bW5MYWJlbHM9e2xheWVyLmNvbHVtbkxhYmVsc31cbiAgICAgICAgICAgICAgICAgIGZpZWxkcz17ZmllbGRzfVxuICAgICAgICAgICAgICAgICAgZmllbGRQYWlycz17ZmllbGRQYWlyc31cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyQ29uZmlnPXt1cGRhdGVMYXllckNvbmZpZ31cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHlwZT17dGhpcy5wcm9wcy51cGRhdGVMYXllclR5cGV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgIHt0aGlzW3JlbmRlclRlbXBsYXRlXSAmJlxuICAgICAgICAgICAgdGhpc1tyZW5kZXJUZW1wbGF0ZV0oe1xuICAgICAgICAgICAgICBsYXllcixcbiAgICAgICAgICAgICAgZGF0YXNldCxcbiAgICAgICAgICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICAgICAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLFxuICAgICAgICAgICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIExheWVyQ29uZmlndXJhdG9yO1xufVxuLypcbiAqIENvbXBvbmVudGl6ZSBjb25maWcgY29tcG9uZW50IGludG8gcHVyZSBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAqL1xuXG5jb25zdCBTdHlsZWRIb3dUb0J1dHRvbiA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDEycHg7XG4gIHRvcDogLTRweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBIb3dUb0J1dHRvbiA9ICh7b25DbGlja30pID0+IChcbiAgPFN0eWxlZEhvd1RvQnV0dG9uPlxuICAgIDxCdXR0b24gbGluayBzbWFsbCBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbGF5ZXJDb25maWd1cmF0aW9uLmhvd1RvJ30gLz5cbiAgICA8L0J1dHRvbj5cbiAgPC9TdHlsZWRIb3dUb0J1dHRvbj5cbik7XG5cbkxheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtDb2xvclNlbGVjdG9yRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeShDb2xvclNlbGVjdG9yKSB7XG4gIGNsYXNzIExheWVyQ29sb3JTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2xheWVyLCBvbkNoYW5nZSwgc2VsZWN0ZWRDb2xvciwgcHJvcGVydHkgPSAnY29sb3InLCBzZXRDb2xvclVJfSA9IHRoaXMucHJvcHM7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibGF5ZXIuY29sb3JcIiAvPlxuICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICA8Q29sb3JTZWxlY3RvclxuICAgICAgICAgICAgY29sb3JTZXRzPXtbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yOiBzZWxlY3RlZENvbG9yIHx8IGxheWVyLmNvbmZpZy5jb2xvcixcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogcmdiVmFsdWUgPT4gb25DaGFuZ2Uoe1twcm9wZXJ0eV06IHJnYlZhbHVlfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXX1cbiAgICAgICAgICAgIGNvbG9yVUk9e2xheWVyLmNvbmZpZy5jb2xvclVJW3Byb3BlcnR5XX1cbiAgICAgICAgICAgIHNldENvbG9yVUk9e25ld0NvbmZpZyA9PiBzZXRDb2xvclVJKHByb3BlcnR5LCBuZXdDb25maWcpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIExheWVyQ29sb3JTZWxlY3Rvcjtcbn1cblxuQXJjTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW0NvbG9yU2VsZWN0b3JGYWN0b3J5XTtcbmV4cG9ydCBmdW5jdGlvbiBBcmNMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5KENvbG9yU2VsZWN0b3IpIHtcbiAgY2xhc3MgQXJjTGF5ZXJDb2xvclNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bGF5ZXIsIG9uQ2hhbmdlQ29uZmlnLCBvbkNoYW5nZVZpc0NvbmZpZywgcHJvcGVydHkgPSAnY29sb3InLCBzZXRDb2xvclVJfSA9IHRoaXMucHJvcHM7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibGF5ZXIuY29sb3JSYW5nZVwiIC8+XG4gICAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICAgIDxDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICBjb2xvclNldHM9e1tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I6IGxheWVyLmNvbmZpZy5jb2xvcixcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogcmdiVmFsdWUgPT4gb25DaGFuZ2VDb25maWcoe2NvbG9yOiByZ2JWYWx1ZX0pLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnU291cmNlJ1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogbGF5ZXIuY29uZmlnLnZpc0NvbmZpZy50YXJnZXRDb2xvciB8fCBsYXllci5jb25maWcuY29sb3IsXG4gICAgICAgICAgICAgICAgc2V0Q29sb3I6IHJnYlZhbHVlID0+IG9uQ2hhbmdlVmlzQ29uZmlnKHt0YXJnZXRDb2xvcjogcmdiVmFsdWV9KSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RhcmdldCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXX1cbiAgICAgICAgICAgIGNvbG9yVUk9e2xheWVyLmNvbmZpZy5jb2xvclVJW3Byb3BlcnR5XX1cbiAgICAgICAgICAgIHNldENvbG9yVUk9e25ld0NvbmZpZyA9PiBzZXRDb2xvclVJKHByb3BlcnR5LCBuZXdDb25maWcpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBBcmNMYXllckNvbG9yU2VsZWN0b3I7XG59XG5cbkxheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW0NvbG9yU2VsZWN0b3JGYWN0b3J5XTtcbmV4cG9ydCBmdW5jdGlvbiBMYXllckNvbG9yUmFuZ2VTZWxlY3RvckZhY3RvcnkoQ29sb3JTZWxlY3Rvcikge1xuICBjbGFzcyBMYXllckNvbG9yUmFuZ2VTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2xheWVyLCBvbkNoYW5nZSwgcHJvcGVydHkgPSAnY29sb3JSYW5nZScsIHNldENvbG9yVUl9ID0gdGhpcy5wcm9wcztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJsYXllci5jb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgPENvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgIGNvbG9yU2V0cz17W1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV0sXG4gICAgICAgICAgICAgICAgaXNSYW5nZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogY29sb3JSYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB7Y29sb3JNYXB9ID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICBjb25zdCBjb2xvclJhbmdlVXBkYXRlZCA9IGNvbG9yTWFwXG4gICAgICAgICAgICAgICAgICAgID8gbGF5ZXIudXBkYXRlQ29sb3JNYXAocHJvcGVydHksIGNvbG9yTWFwLCBjb2xvclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IGNvbG9yUmFuZ2U7XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZSh7W3Byb3BlcnR5XTogY29sb3JSYW5nZVVwZGF0ZWR9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF19XG4gICAgICAgICAgICBjb2xvclVJPXtsYXllci5jb25maWcuY29sb3JVSVtwcm9wZXJ0eV19XG4gICAgICAgICAgICBzZXRDb2xvclVJPXtuZXdDb25maWcgPT4gc2V0Q29sb3JVSShwcm9wZXJ0eSwgbmV3Q29uZmlnKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3I7XG59XG5cbkNoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbVmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvckZhY3RvcnkoVmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yKSB7XG4gIGNvbnN0IENoYW5uZWxCeVZhbHVlU2VsZWN0b3IgPSAoe1xuICAgIGxheWVyLFxuICAgIGNoYW5uZWwsXG4gICAgb25DaGFuZ2UsXG4gICAgb25DaGFuZ2VWaXNDb25maWcsXG4gICAgZmllbGRzLFxuICAgIGZpZWxkc0FnZ3JlZ2F0ZWQsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgaXNMb2FkaW5nXG4gIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBjaGFubmVsU2NhbGVUeXBlLFxuICAgICAgZG9tYWluLFxuICAgICAgZmllbGQsXG4gICAgICBhZ2dyZWdhdGlvbixcbiAgICAgIGtleSxcbiAgICAgIHByb3BlcnR5LFxuICAgICAgcmFuZ2UsXG4gICAgICBzY2FsZSxcbiAgICAgIGRlZmF1bHRNZWFzdXJlLFxuICAgICAgc3VwcG9ydGVkRmllbGRUeXBlc1xuICAgIH0gPSBjaGFubmVsO1xuICAgIGNvbnN0IGNoYW5uZWxTdXBwb3J0ZWRGaWVsZFR5cGVzID1cbiAgICAgIHN1cHBvcnRlZEZpZWxkVHlwZXMgfHwgQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTW2NoYW5uZWxTY2FsZVR5cGVdO1xuICAgIGNvbnN0IHN1cHBvcnRlZEZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKHt0eXBlfSkgPT4gY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMuaW5jbHVkZXModHlwZSkpO1xuICAgIGNvbnN0IHNjYWxlT3B0aW9ucyA9IGxheWVyLmdldFNjYWxlT3B0aW9ucyhjaGFubmVsLmtleSk7XG4gICAgY29uc3Qgc2hvd1NjYWxlQ3VzdG9taXphYmxlID1cbiAgICAgIGNoYW5uZWxTY2FsZVR5cGUgPT09IENIQU5ORUxfU0NBTEVTLmNvbG9yICYmXG4gICAgICBzY2FsZSAmJlxuICAgICAgbGF5ZXIuY29uZmlnW3NjYWxlXSAmJlxuICAgICAgQm9vbGVhbihsYXllci5jb25maWdbZmllbGRdKSAmJlxuICAgICAgc2NhbGVPcHRpb25zPy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IHNob3dTY2FsZSA9IEJvb2xlYW4oXG4gICAgICAhc2hvd1NjYWxlQ3VzdG9taXphYmxlICYmXG4gICAgICAgIHNjYWxlICYmXG4gICAgICAgICFsYXllci5pc0FnZ3JlZ2F0ZWQgJiZcbiAgICAgICAgbGF5ZXIuY29uZmlnW3NjYWxlXSAmJlxuICAgICAgICBzY2FsZU9wdGlvbnM/Lmxlbmd0aCA+IDFcbiAgICApO1xuICAgIGNvbnN0IGRlZmF1bHREZXNjcmlwdGlvbiA9ICdsYXllckNvbmZpZ3VyYXRpb24uZGVmYXVsdERlc2NyaXB0aW9uJztcbiAgICBjb25zdCB2aXNSYW5nZSA9IGxheWVyLmNvbmZpZy52aXNDb25maWdbcmFuZ2VdO1xuICAgIGNvbnN0IGFnZ3JlZ2F0b3IgPSBsYXllci5jb25maWcudmlzQ29uZmlnW2FnZ3JlZ2F0aW9uXTtcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yXG4gICAgICAgIGNoYW5uZWw9e2NoYW5uZWwua2V5fVxuICAgICAgICBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb24gfHwgZGVmYXVsdERlc2NyaXB0aW9ufVxuICAgICAgICBkb21haW49e2xheWVyLmNvbmZpZ1tkb21haW5dfVxuICAgICAgICBmaWVsZHM9e3N1cHBvcnRlZEZpZWxkc31cbiAgICAgICAgYWdncmVnYXRvcj17YWdncmVnYXRvcn1cbiAgICAgICAgZmllbGRzQWdncmVnYXRlZD17ZmllbGRzQWdncmVnYXRlZH1cbiAgICAgICAgaWQ9e2xheWVyLmlkfVxuICAgICAgICBrZXk9e2Ake2tleX0tY2hhbm5lbC1zZWxlY3RvcmB9XG4gICAgICAgIHByb3BlcnR5PXtwcm9wZXJ0eX1cbiAgICAgICAgcGxhY2Vob2xkZXI9e2RlZmF1bHRNZWFzdXJlIHx8ICdwbGFjZWhvbGRlci5zZWxlY3RGaWVsZCd9XG4gICAgICAgIHJhbmdlPXt2aXNSYW5nZX1cbiAgICAgICAgc2NhbGVPcHRpb25zPXtzY2FsZU9wdGlvbnN9XG4gICAgICAgIHNjYWxlVHlwZT17c2NhbGUgPyBsYXllci5jb25maWdbc2NhbGVdIDogbnVsbH1cbiAgICAgICAgc2VsZWN0ZWRGaWVsZD17bGF5ZXIuY29uZmlnW2ZpZWxkXX1cbiAgICAgICAgc2hvd1NjYWxlPXtzaG93U2NhbGV9XG4gICAgICAgIHNob3dTY2FsZUN1c3RvbWl6YWJsZT17c2hvd1NjYWxlQ3VzdG9taXphYmxlfVxuICAgICAgICB1cGRhdGVGaWVsZD17dmFsID0+IHtcbiAgICAgICAgICBpZiAodmlzUmFuZ2U/LmNvbG9yTWFwKSB7XG4gICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZyh7W3JhbmdlXTogey4uLnZpc1JhbmdlLCBjb2xvck1hcDogdW5kZWZpbmVkfX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvbkNoYW5nZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgW2ZpZWxkXTogdmFsLFxuICAgICAgICAgICAgICAuLi4oZmllbGRzQWdncmVnYXRlZCAmJiB7XG4gICAgICAgICAgICAgICAgdmlzQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgICAuLi5sYXllci5jb25maWcudmlzQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgW2FnZ3JlZ2F0aW9uXTogdmFsPy5zZWxlY3RlZEFnZ3JlZ2F0b3JcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2V5XG4gICAgICAgICAgKTtcbiAgICAgICAgfX1cbiAgICAgICAgdXBkYXRlU2NhbGU9e3ZhbCA9PiBvbkNoYW5nZSh7W3NjYWxlXTogdmFsfSwga2V5KX1cbiAgICAgICAgdXBkYXRlQ3VzdG9tUGFsZXR0ZT17KGNvbG9yTWFwLCB1aUN1c3RvbVNjYWxlVHlwZSkgPT4ge1xuICAgICAgICAgIG9uQ2hhbmdlVmlzQ29uZmlnKHtbcmFuZ2VdOiB7Li4udmlzUmFuZ2UsIGNvbG9yTWFwLCB1aUN1c3RvbVNjYWxlVHlwZX19KTtcbiAgICAgICAgfX1cbiAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIENoYW5uZWxCeVZhbHVlU2VsZWN0b3I7XG59XG5cbkFnZ3JTY2FsZVNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW0NvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3RvckZhY3RvcnldO1xuXG5mdW5jdGlvbiBBZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnkoQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yKSB7XG4gIGNsYXNzIEFnZ3JTY2FsZVNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7Y2hhbm5lbCwgbGF5ZXIsIG9uQ2hhbmdlLCBvbkNoYW5nZVZpc0NvbmZpZ30gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3Qge3NjYWxlLCBrZXksIGNoYW5uZWxTY2FsZVR5cGUsIGRvbWFpbiwgcmFuZ2V9ID0gY2hhbm5lbDtcbiAgICAgIGNvbnN0IHNjYWxlT3B0aW9ucyA9IGxheWVyLmdldFNjYWxlT3B0aW9ucyhrZXkpO1xuICAgICAgY29uc3QgdmlzUmFuZ2UgPSBsYXllci5jb25maWcudmlzQ29uZmlnW3JhbmdlXTtcbiAgICAgIGNvbnN0IHNob3dTY2FsZUN1c3RvbWl6YWJsZSA9XG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGUgPT09IENIQU5ORUxfU0NBTEVTLmNvbG9yQWdnciAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KHNjYWxlT3B0aW9ucykgJiZcbiAgICAgICAgc2NhbGVPcHRpb25zLmxlbmd0aCA+IDA7XG4gICAgICBjb25zdCBzaG93U2NhbGUgPSBBcnJheS5pc0FycmF5KHNjYWxlT3B0aW9ucykgJiYgc2NhbGVPcHRpb25zLmxlbmd0aCA+IDE7XG5cbiAgICAgIGlmIChzaG93U2NhbGVDdXN0b21pemFibGUpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgIDxDb2xvckRpbWVuc2lvblNjYWxlU2VsZWN0b3JcbiAgICAgICAgICAgICAgbGFiZWw9e2Ake2tleX0gU2NhbGVgfVxuICAgICAgICAgICAgICBzY2FsZVR5cGU9e2xheWVyLmNvbmZpZ1tzY2FsZV19XG4gICAgICAgICAgICAgIG9wdGlvbnM9e3NjYWxlT3B0aW9uc31cbiAgICAgICAgICAgICAgZG9tYWluPXtsYXllci5jb25maWdbZG9tYWluXX1cbiAgICAgICAgICAgICAgcmFuZ2U9e3Zpc1JhbmdlfVxuICAgICAgICAgICAgICBvblNlbGVjdD17dmFsID0+IG9uQ2hhbmdlKHtbc2NhbGVdOiB2YWx9LCBrZXkpfVxuICAgICAgICAgICAgICBvblNldEN1c3RvbVBhbGV0dGU9eyhjb2xvck1hcCwgdWlDdXN0b21TY2FsZVR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZyh7W3JhbmdlXTogey4uLnZpc1JhbmdlLCBjb2xvck1hcCwgdWlDdXN0b21TY2FsZVR5cGV9fSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNob3dTY2FsZSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxEaW1lbnNpb25TY2FsZVNlbGVjdG9yXG4gICAgICAgICAgICBsYWJlbD17YCR7a2V5fSBTY2FsZWB9XG4gICAgICAgICAgICBvcHRpb25zPXtzY2FsZU9wdGlvbnN9XG4gICAgICAgICAgICBzY2FsZVR5cGU9e2xheWVyLmNvbmZpZ1tzY2FsZV19XG4gICAgICAgICAgICBvblNlbGVjdD17dmFsID0+IG9uQ2hhbmdlKHtbc2NhbGVdOiB2YWx9LCBrZXkpfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluamVjdEludGwoQWdnclNjYWxlU2VsZWN0b3IpO1xufVxuXG5leHBvcnQgY29uc3QgQWdncmVnYXRpb25UeXBlU2VsZWN0b3IgPSAoe2xheWVyLCBjaGFubmVsLCBvbkNoYW5nZX0pID0+IHtcbiAgY29uc3Qge2ZpZWxkLCBhZ2dyZWdhdGlvbiwga2V5fSA9IGNoYW5uZWw7XG4gIGNvbnN0IHNlbGVjdGVkRmllbGQgPSBsYXllci5jb25maWdbZmllbGRdO1xuICBjb25zdCB7dmlzQ29uZmlnfSA9IGxheWVyLmNvbmZpZztcblxuICAvLyBhZ2dyZWdhdGlvbiBzaG91bGQgb25seSBiZSBzZWxlY3RhYmxlIHdoZW4gZmllbGQgaXMgc2VsZWN0ZWRcbiAgY29uc3QgYWdncmVnYXRpb25PcHRpb25zID0gbGF5ZXIuZ2V0QWdncmVnYXRpb25PcHRpb25zKGtleSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J2xheWVyLmFnZ3JlZ2F0ZUJ5J30gdmFsdWVzPXt7ZmllbGQ6IHNlbGVjdGVkRmllbGQubmFtZX19IC8+XG4gICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICA8SXRlbVNlbGVjdG9yXG4gICAgICAgIHNlbGVjdGVkSXRlbXM9e3Zpc0NvbmZpZ1thZ2dyZWdhdGlvbl19XG4gICAgICAgIG9wdGlvbnM9e2FnZ3JlZ2F0aW9uT3B0aW9uc31cbiAgICAgICAgbXVsdGlTZWxlY3Q9e2ZhbHNlfVxuICAgICAgICBzZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+XG4gICAgICAgICAgb25DaGFuZ2UoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZpc0NvbmZpZzoge1xuICAgICAgICAgICAgICAgIC4uLmxheWVyLmNvbmZpZy52aXNDb25maWcsXG4gICAgICAgICAgICAgICAgW2FnZ3JlZ2F0aW9uXTogdmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoYW5uZWwua2V5XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgKTtcbn07XG5cbi8qIGVzbGludC1lbmFibGUgbWF4LXBhcmFtcyAqL1xuIl19
979
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlndXJhdG9yLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlndXJhdG9yIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJwcm9wcyIsInRoZW1lIiwibGF5ZXJDb25maWd1cmF0b3JNYXJnaW4iLCJsYXllckNvbmZpZ3VyYXRvclBhZGRpbmciLCJsYXllckNvbmZpZ3VyYXRvckJvcmRlciIsImxheWVyQ29uZmlndXJhdG9yQm9yZGVyQ29sb3IiLCJTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciIsImdldExheWVyRmllbGRzIiwiZGF0YXNldHMiLCJsYXllciIsImNvbmZpZyIsImRhdGFJZCIsImZpZWxkcyIsImdldExheWVyRGF0YXNldCIsImdldExheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJkaXNhYmxlZCIsIkJvb2xlYW4iLCJvbkNoYW5nZSIsInVwZGF0ZUxheWVyQ29uZmlnIiwic2V0Q29sb3JVSSIsInVwZGF0ZUxheWVyQ29sb3JVSSIsImdldFZpc0NvbmZpZ3VyYXRvclByb3BzIiwidXBkYXRlTGF5ZXJWaXNDb25maWciLCJnZXRMYXllckNoYW5uZWxDb25maWdQcm9wcyIsInVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyIsIm9uQ2hhbmdlVmlzQ29uZmlnIiwiTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5IiwiZGVwcyIsIlNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkiLCJWaXNDb25maWdTbGlkZXJGYWN0b3J5IiwiVGV4dExhYmVsUGFuZWxGYWN0b3J5IiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sdW1uQ29uZmlnRmFjdG9yeSIsIkxheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSIsIlZpc0NvbmZpZ1N3aXRjaEZhY3RvcnkiLCJBZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnkiLCJMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5IiwiTGF5ZXJBZ2dyZWdhdGlvblJlc29sdXRpb25GYWN0b3J5IiwiTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSIsIkxheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeSIsIkFyY0xheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkiLCJDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXBGYWN0b3J5IiwiU291cmNlRGF0YVNlbGVjdG9yIiwiVmlzQ29uZmlnU2xpZGVyIiwiVGV4dExhYmVsUGFuZWwiLCJMYXllckNvbmZpZ0dyb3VwIiwiQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvciIsIkxheWVyQ29sdW1uQ29uZmlnIiwiTGF5ZXJUeXBlU2VsZWN0b3IiLCJWaXNDb25maWdTd2l0Y2giLCJBZ2dyU2NhbGVTZWxlY3RvciIsIkxheWVyVmlzaWJpbGl0eUJ5Wm9vbSIsIkxheWVyQWdncmVnYXRpb25SZXNvbHV0aW9uIiwiTGF5ZXJDb2xvclNlbGVjdG9yIiwiTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IiLCJBcmNMYXllckNvbG9yU2VsZWN0b3IiLCJDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXAiLCJMYXllckNvbmZpZ3VyYXRvciIsIl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJ2aXNDb25maWdTZXR0aW5ncyIsImZpbGxlZCIsImxhYmVsIiwiY29sb3JGaWVsZCIsInZpc3VhbENoYW5uZWxzIiwiY29sb3IiLCJvcGFjaXR5IiwidHlwZSIsIkxBWUVSX1RZUEVTIiwicG9pbnQiLCJvdXRsaW5lIiwidmlzQ29uZmlnIiwiY3VzdG9tTWFya2VycyIsInN0cm9rZUNvbG9yRmllbGQiLCJzdHJva2VDb2xvciIsInRoaWNrbmVzcyIsInNpemVGaWVsZCIsInJhZGl1cyIsInJhZGl1c1JhbmdlIiwiZml4ZWRSYWRpdXMiLCJzaXplIiwidXBkYXRlTGF5ZXJUZXh0TGFiZWwiLCJ0ZXh0TGFiZWwiLCJjb2xvclBhbGV0dGUiLCJzZXRDb2xvclBhbGV0dGVVSSIsImNvbG9yQWdncmVnYXRpb24iLCJjb25kaXRpb24iLCJjbHVzdGVyUmFkaXVzIiwid2VpZ2h0IiwiX3JlbmRlckFnZ3JlZ2F0aW9uTGF5ZXJDb25maWciLCJlbmFibGUzZCIsImVsZXZhdGlvbkJ5RGVzY3JpcHRpb24iLCJjb2xvckJ5RGVzY3JpcHRpb24iLCJwZXJjZW50aWxlIiwid29ybGRVbml0U2l6ZSIsImNvdmVyYWdlIiwiZWxldmF0aW9uU2NhbGUiLCJzaXplUmFuZ2UiLCJzaXplQWdncmVnYXRpb24iLCJlbGV2YXRpb25QZXJjZW50aWxlIiwiY292ZXJhZ2VGaWVsZCIsImNvdmVyYWdlUmFuZ2UiLCJhcmdzIiwiX3JlbmRlckxpbmVMYXllckNvbmZpZyIsInNvdXJjZUNvbG9yIiwibWV0YSIsImZlYXR1cmVUeXBlcyIsInBvbHlnb24iLCJzdHJva2VkIiwidHJhaWxMZW5ndGgiLCJzdHJva2VPcGFjaXR5IiwiaGVpZ2h0Iiwid2lyZWZyYW1lIiwicmFkaXVzRmllbGQiLCJlIiwidGFyZ2V0IiwiZmlsZXMiLCJ1cmwiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJzY2VuZWdyYXBoIiwic2l6ZVNjYWxlIiwiYW5nbGVYIiwiYW5nbGVZIiwiYW5nbGVaIiwiaGVpZ2h0UmFuZ2UiLCJsYXllclR5cGVPcHRpb25zIiwidXBkYXRlTGF5ZXJUeXBlIiwiZmllbGRQYWlycyIsInVuZGVmaW5lZCIsImRhdGFzZXQiLCJyZW5kZXJUZW1wbGF0ZSIsImxheWVySW5mb01vZGFsIiwib3Blbk1vZGFsIiwiT2JqZWN0Iiwia2V5cyIsImNvbHVtbnMiLCJsZW5ndGgiLCJoYXNBbGxDb2x1bW5zIiwiaWQiLCJ2YWx1ZSIsImNvbHVtblBhaXJzIiwiYXNzaWduQ29sdW1uUGFpcnMiLCJiaW5kIiwiYXNzaWduQ29sdW1uIiwiY29sdW1uTGFiZWxzIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJhbnkiLCJmdW5jIiwiU3R5bGVkSG93VG9CdXR0b24iLCJIb3dUb0J1dHRvbiIsIm9uQ2xpY2siLCJDb2xvclNlbGVjdG9yRmFjdG9yeSIsIkNvbG9yU2VsZWN0b3IiLCJzZWxlY3RlZENvbG9yIiwicHJvcGVydHkiLCJzZXRDb2xvciIsInJnYlZhbHVlIiwiY29sb3JVSSIsIm5ld0NvbmZpZyIsIm9uQ2hhbmdlQ29uZmlnIiwidGFyZ2V0Q29sb3IiLCJpc1JhbmdlIiwiY29sb3JSYW5nZSIsImNvbG9yTWFwIiwiY29sb3JSYW5nZVVwZGF0ZWQiLCJ1cGRhdGVDb2xvck1hcCIsIlZpc0NvbmZpZ0J5RmllbGRTZWxlY3RvckZhY3RvcnkiLCJWaXNDb25maWdCeUZpZWxkU2VsZWN0b3IiLCJjaGFubmVsIiwiZmllbGRzQWdncmVnYXRlZCIsImRlc2NyaXB0aW9uIiwiaXNMb2FkaW5nIiwiY2hhbm5lbFNjYWxlVHlwZSIsImRvbWFpbiIsImZpZWxkIiwiYWdncmVnYXRpb24iLCJrZXkiLCJyYW5nZSIsInNjYWxlIiwiZGVmYXVsdE1lYXN1cmUiLCJzdXBwb3J0ZWRGaWVsZFR5cGVzIiwiY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMiLCJDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFMiLCJzdXBwb3J0ZWRGaWVsZHMiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsInNjYWxlT3B0aW9ucyIsImdldFNjYWxlT3B0aW9ucyIsInNob3dTY2FsZUN1c3RvbWl6YWJsZSIsIkNIQU5ORUxfU0NBTEVTIiwic2hvd1NjYWxlIiwiaXNBZ2dyZWdhdGVkIiwiZGVmYXVsdERlc2NyaXB0aW9uIiwidmlzUmFuZ2UiLCJhZ2dyZWdhdG9yIiwidmFsIiwic2VsZWN0ZWRBZ2dyZWdhdG9yIiwidWlDdXN0b21TY2FsZVR5cGUiLCJDb2xvckRpbWVuc2lvblNjYWxlU2VsZWN0b3JGYWN0b3J5IiwiQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yIiwiY29sb3JBZ2dyIiwiQXJyYXkiLCJpc0FycmF5IiwiQWdncmVnYXRpb25UeXBlU2VsZWN0b3IiLCJzZWxlY3RlZEZpZWxkIiwiYWdncmVnYXRpb25PcHRpb25zIiwiZ2V0QWdncmVnYXRpb25PcHRpb25zIiwibmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLHVCQUF1QixHQUFHQyw2QkFBT0MsR0FBUCxDQUFXQyxLQUFYLENBQWlCO0FBQy9DQyxFQUFBQSxTQUFTLEVBQUU7QUFEb0MsQ0FBakIsQ0FBSCw4TEFJYixVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlDLHVCQUFoQjtBQUFBLENBSlEsRUFLaEIsVUFBQUYsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZRSx3QkFBaEI7QUFBQSxDQUxXLEVBTVosVUFBQUgsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZRyx1QkFBaEI7QUFBQSxDQU5PLEVBT3ZCLFVBQUFKLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUksNEJBQWhCO0FBQUEsQ0FQa0IsQ0FBN0I7O0FBVUEsSUFBTUMsNkJBQTZCLEdBQUdWLDZCQUFPQyxHQUFQLENBQVdDLEtBQVgsQ0FBaUI7QUFDckRDLEVBQUFBLFNBQVMsRUFBRTtBQUQwQyxDQUFqQixDQUFILCtHQUFuQzs7QUFNTyxJQUFNUSxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQUNDLFFBQUQsRUFBV0MsS0FBWDtBQUFBLFNBQzVCQSxLQUFLLENBQUNDLE1BQU4sSUFB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dCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgRnJhZ21lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnbG9jYWxpemF0aW9uJztcblxuaW1wb3J0IHtCdXR0b24sIElucHV0LCBQYW5lbExhYmVsLCBTaWRlUGFuZWxTZWN0aW9ufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgSXRlbVNlbGVjdG9yIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2l0ZW0tc2VsZWN0b3IvaXRlbS1zZWxlY3Rvcic7XG5cbmltcG9ydCBWaXNDb25maWdCeUZpZWxkU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vdmlzLWNvbmZpZy1ieS1maWVsZC1zZWxlY3Rvcic7XG5pbXBvcnQgTGF5ZXJDb2x1bW5Db25maWdGYWN0b3J5IGZyb20gJy4vbGF5ZXItY29sdW1uLWNvbmZpZyc7XG5pbXBvcnQgTGF5ZXJUeXBlU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vbGF5ZXItdHlwZS1zZWxlY3Rvcic7XG5pbXBvcnQgTGF5ZXJWaXNpYmlsaXR5Qnlab29tRmFjdG9yeSBmcm9tICcuL2xheWVyLXZpc2liaWxpdHktYnktem9vbSc7XG5pbXBvcnQgRGltZW5zaW9uU2NhbGVTZWxlY3RvciBmcm9tICcuL2RpbWVuc2lvbi1zY2FsZS1zZWxlY3Rvcic7XG5pbXBvcnQgU291cmNlRGF0YVNlbGVjdG9yRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvY29tbW9uL3NvdXJjZS1kYXRhLXNlbGVjdG9yJztcbmltcG9ydCBWaXNDb25maWdTd2l0Y2hGYWN0b3J5IGZyb20gJy4vdmlzLWNvbmZpZy1zd2l0Y2gnO1xuaW1wb3J0IFZpc0NvbmZpZ1NsaWRlckZhY3RvcnkgZnJvbSAnLi92aXMtY29uZmlnLXNsaWRlcic7XG5pbXBvcnQgTGF5ZXJDb25maWdHcm91cEZhY3RvcnksIHtDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudH0gZnJvbSAnLi9sYXllci1jb25maWctZ3JvdXAnO1xuaW1wb3J0IEN1c3RvbU1hcmtlcnNDb25maWdHcm91cEZhY3RvcnkgZnJvbSAnLi9jdXN0b20tbWFya2Vycy1jb25maWctZ3JvdXAnO1xuaW1wb3J0IFRleHRMYWJlbFBhbmVsRmFjdG9yeSBmcm9tICcuL3RleHQtbGFiZWwtcGFuZWwnO1xuXG5pbXBvcnQge2NhcGl0YWxpemVGaXJzdExldHRlcn0gZnJvbSAndXRpbHMvdXRpbHMnO1xuXG5pbXBvcnQge0NIQU5ORUxfU0NBTEVTLCBDSEFOTkVMX1NDQUxFX1NVUFBPUlRFRF9GSUVMRFN9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7TEFZRVJfVFlQRVN9IGZyb20gJ2xheWVycy90eXBlcyc7XG5pbXBvcnQge2luamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IENvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi9jb2xvci1kaW1lbnNpb24tc2NhbGUtc2VsZWN0b3InO1xuaW1wb3J0IENvbG9yU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vY29sb3Itc2VsZWN0b3InO1xuaW1wb3J0IExheWVyQWdncmVnYXRpb25SZXNvbHV0aW9uRmFjdG9yeSBmcm9tICcuL2xheWVyLWFnZ3JlZ2F0aW9uLXJlc29sdXRpb24nO1xuXG5jb25zdCBTdHlsZWRMYXllckNvbmZpZ3VyYXRvciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdsYXllci1wYW5lbF9fY29uZmlnJ1xufSlgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ3VyYXRvck1hcmdpbn07XG4gIHBhZGRpbmc6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWd1cmF0b3JQYWRkaW5nfTtcbiAgYm9yZGVyLWxlZnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWd1cmF0b3JCb3JkZXJ9IGRhc2hlZFxuICAgICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWd1cmF0b3JCb3JkZXJDb2xvcn07XG5gO1xuXG5jb25zdCBTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdsYXllci1wYW5lbF9fY29uZmlnX192aXN1YWxDLWNvbmZpZydcbn0pYFxuICBtYXJnaW4tdG9wOiAxMnB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IGdldExheWVyRmllbGRzID0gKGRhdGFzZXRzLCBsYXllcikgPT5cbiAgbGF5ZXIuY29uZmlnICYmIGRhdGFzZXRzW2xheWVyLmNvbmZpZy5kYXRhSWRdID8gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0uZmllbGRzIDogW107XG5cbmV4cG9ydCBjb25zdCBnZXRMYXllckRhdGFzZXQgPSAoZGF0YXNldHMsIGxheWVyKSA9PlxuICBsYXllci5jb25maWcgJiYgZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF0gPyBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXSA6IG51bGw7XG5cbmV4cG9ydCBjb25zdCBnZXRMYXllckNvbmZpZ3VyYXRvclByb3BzID0gcHJvcHMgPT4gKHtcbiAgbGF5ZXI6IHByb3BzLmxheWVyLFxuICBkaXNhYmxlZDogQm9vbGVhbihwcm9wcy5kaXNhYmxlZCksXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyQ29uZmlnLFxuICBzZXRDb2xvclVJOiBwcm9wcy51cGRhdGVMYXllckNvbG9yVUlcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0VmlzQ29uZmlndXJhdG9yUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyVmlzQ29uZmlnLFxuICBzZXRDb2xvclVJOiBwcm9wcy51cGRhdGVMYXllckNvbG9yVUlcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0TGF5ZXJDaGFubmVsQ29uZmlnUHJvcHMgPSBwcm9wcyA9PiAoe1xuICBsYXllcjogcHJvcHMubGF5ZXIsXG4gIGZpZWxkczogZ2V0TGF5ZXJGaWVsZHMocHJvcHMuZGF0YXNldHMsIHByb3BzLmxheWVyKSxcbiAgb25DaGFuZ2U6IHByb3BzLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZyxcbiAgb25DaGFuZ2VWaXNDb25maWc6IHByb3BzLnVwZGF0ZUxheWVyVmlzQ29uZmlnXG59KTtcblxuTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5LmRlcHMgPSBbXG4gIFNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnksXG4gIFZpc0NvbmZpZ1NsaWRlckZhY3RvcnksXG4gIFRleHRMYWJlbFBhbmVsRmFjdG9yeSxcbiAgTGF5ZXJDb25maWdHcm91cEZhY3RvcnksXG4gIENoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllckNvbHVtbkNvbmZpZ0ZhY3RvcnksXG4gIExheWVyVHlwZVNlbGVjdG9yRmFjdG9yeSxcbiAgVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSxcbiAgQWdnclNjYWxlU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllclZpc2liaWxpdHlCeVpvb21GYWN0b3J5LFxuICBMYXllckFnZ3JlZ2F0aW9uUmVzb2x1dGlvbkZhY3RvcnksXG4gIExheWVyQ29sb3JTZWxlY3RvckZhY3RvcnksXG4gIExheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeSxcbiAgQXJjTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeSxcbiAgQ3VzdG9tTWFya2Vyc0NvbmZpZ0dyb3VwRmFjdG9yeVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5KFxuICBTb3VyY2VEYXRhU2VsZWN0b3IsXG4gIFZpc0NvbmZpZ1NsaWRlcixcbiAgVGV4dExhYmVsUGFuZWwsXG4gIExheWVyQ29uZmlnR3JvdXAsXG4gIENoYW5uZWxCeVZhbHVlU2VsZWN0b3IsXG4gIExheWVyQ29sdW1uQ29uZmlnLFxuICBMYXllclR5cGVTZWxlY3RvcixcbiAgVmlzQ29uZmlnU3dpdGNoLFxuICBBZ2dyU2NhbGVTZWxlY3RvcixcbiAgTGF5ZXJWaXNpYmlsaXR5Qnlab29tLFxuICBMYXllckFnZ3JlZ2F0aW9uUmVzb2x1dGlvbixcbiAgTGF5ZXJDb2xvclNlbGVjdG9yLFxuICBMYXllckNvbG9yUmFuZ2VTZWxlY3RvcixcbiAgQXJjTGF5ZXJDb2xvclNlbGVjdG9yLFxuICBDdXN0b21NYXJrZXJzQ29uZmlnR3JvdXBcbikge1xuICBjbGFzcyBMYXllckNvbmZpZ3VyYXRvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIGxheWVyOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBkYXRhc2V0czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJUeXBlT3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIG9wZW5Nb2RhbDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHVwZGF0ZUxheWVyQ29uZmlnOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlTGF5ZXJUeXBlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlTGF5ZXJWaXNDb25maWc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllclZpc3VhbENoYW5uZWxDb25maWc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB1cGRhdGVMYXllckNvbG9yVUk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgICB9O1xuXG4gICAgX3JlbmRlclBvaW50TGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnKHByb3BzKTtcbiAgICB9XG5cbiAgICBfcmVuZGVySWNvbkxheWVyQ29uZmlnKHByb3BzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVuZGVyU2NhdHRlcnBsb3RMYXllckNvbmZpZyhwcm9wcyk7XG4gICAgfVxuXG4gICAgX3JlbmRlclNjYXR0ZXJwbG90TGF5ZXJDb25maWcoe1xuICAgICAgbGF5ZXIsXG4gICAgICB2aXNDb25maWd1cmF0b3JQcm9wcyxcbiAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLFxuICAgICAgbGF5ZXJDb25maWd1cmF0b3JQcm9wc1xuICAgIH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7LyogRmlsbCBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLihsYXllci52aXNDb25maWdTZXR0aW5ncy5maWxsZWQgfHwge2xhYmVsOiAnbGF5ZXIuY29sb3InfSl9XG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuY29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3Igey4uLmxheWVyQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7Lyogb3V0bGluZSBjb2xvciAqL31cbiAgICAgICAgICB7bGF5ZXIudHlwZSA9PT0gTEFZRVJfVFlQRVMucG9pbnQgPyAoXG4gICAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3V0bGluZX1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgICAgICBkaXNhYmxlZD17Qm9vbGVhbihsYXllci5jb25maWcudmlzQ29uZmlnLmN1c3RvbU1hcmtlcnMpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnN0cm9rZUNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gcHJvcGVydHk9XCJzdHJva2VDb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yPXtsYXllci5jb25maWcudmlzQ29uZmlnLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgcHJvcGVydHk9XCJzdHJva2VDb2xvclwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy50aGlja25lc3N9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWxheWVyLmNvbmZpZy52aXNDb25maWcub3V0bGluZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAge2xheWVyLnR5cGUgPT09IExBWUVSX1RZUEVTLnBvaW50ID8gKFxuICAgICAgICAgICAgPEN1c3RvbU1hcmtlcnNDb25maWdHcm91cFxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzPXt2aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHM9e2xheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHsvKiBSYWRpdXMgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIGxhYmVsPXtsYXllci5jb25maWcudmlzQ29uZmlnLmN1c3RvbU1hcmtlcnMgPyAnbGF5ZXIuc2l6ZScgOiAnbGF5ZXIucmFkaXVzJ31cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAgeyFsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtCb29sZWFuKGxheWVyLmNvbmZpZy5zaXplRmllbGQpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXNSYW5nZX1cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXshbGF5ZXIuY29uZmlnLnNpemVGaWVsZCB8fCBsYXllci5jb25maWcudmlzQ29uZmlnLmZpeGVkUmFkaXVzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1N3aXRjaFxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmZpeGVkUmFkaXVzfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2xheWVyLmNvbmZpZy52aXNDb25maWcuY3VzdG9tTWFya2Vyc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+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/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gcHJvcGVydHk9XCJzdHJva2VDb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZU9wYWNpdHl9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlIFdpZHRoICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICB7Li4uKGZlYXR1cmVUeXBlcy5wb2x5Z29uID8gbGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZCA6IHt9KX1cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuc3Ryb2tlV2lkdGhcIlxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGF5ZXIuY29uZmlnLnNpemVGaWVsZCA/IChcbiAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplUmFuZ2V9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MudGhpY2tuZXNzfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogRWxldmF0aW9uICovfVxuICAgICAgICAgIHtmZWF0dXJlVHlwZXMucG9seWdvbiA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZTNkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IXZpc0NvbmZpZy5maWxsZWR9XG4gICAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZWxldmF0aW9uU2NhbGV9XG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5oZWlnaHR9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8VmlzQ29uZmlnU3dpdGNoIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLndpcmVmcmFtZX0gLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHsvKiBSYWRpdXMgKi99XG4gICAgICAgICAge2ZlYXR1cmVUeXBlcy5wb2ludCA/IChcbiAgICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIGxhYmVsPXsnbGF5ZXIucmFkaXVzJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICAgIHshbGF5ZXIuY29uZmlnLnJhZGl1c0ZpZWxkID8gKFxuICAgICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5yYWRpdXN9XG4gICAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17Qm9vbGVhbihsYXllci5jb25maWcucmFkaXVzRmllbGQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnJhZGl1c1JhbmdlfVxuICAgICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFsYXllci5jb25maWcucmFkaXVzRmllbGR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5yYWRpdXN9XG4gICAgICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3JlbmRlcjNETGF5ZXJDb25maWcoe2xheWVyLCB2aXNDb25maWd1cmF0b3JQcm9wc30pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxGcmFnbWVudD5cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLjNETW9kZWwnfSBjb2xsYXBzaWJsZT5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGFjY2VwdD1cIi5nbGIsLmdsdGZcIlxuICAgICAgICAgICAgICBvbkNoYW5nZT17ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0LmZpbGVzICYmIGUudGFyZ2V0LmZpbGVzWzBdKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGUudGFyZ2V0LmZpbGVzWzBdKTtcbiAgICAgICAgICAgICAgICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLm9uQ2hhbmdlKHtzY2VuZWdyYXBoOiB1cmx9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cCBsYWJlbD17J2xheWVyLjNETW9kZWxPcHRpb25zJ30gY29sbGFwc2libGU+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zaXplU2NhbGV9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmFuZ2xlWH1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuYW5nbGVZfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5hbmdsZVp9XG4gICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICApO1xuICAgIH1cblxuICAgIF9yZW5kZXJTMkxheWVyQ29uZmlnKHtcbiAgICAgIGxheWVyLFxuICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzLFxuICAgICAgbGF5ZXJDaGFubmVsQ29uZmlnUHJvcHNcbiAgICB9KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbmZpZzoge3Zpc0NvbmZpZ31cbiAgICAgIH0gPSBsYXllcjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZExheWVyVmlzdWFsQ29uZmlndXJhdG9yPlxuICAgICAgICAgIHsvKiBDb2xvciAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmZpbGxlZH1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGxhYmVsPVwibGF5ZXIuZmlsbENvbG9yXCJcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlXG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5jb2xvckZpZWxkID8gKFxuICAgICAgICAgICAgICA8TGF5ZXJDb2xvclJhbmdlU2VsZWN0b3Igey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvciB7Li4ubGF5ZXJDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuY29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5vcGFjaXR5fSB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9IC8+XG4gICAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICAgIHsvKiBTdHJva2UgKi99XG4gICAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5zdHJva2VkfVxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgbGFiZWw9XCJsYXllci5zdHJva2VDb2xvclwiXG4gICAgICAgICAgICBjb2xsYXBzaWJsZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsYXllci5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgICAgPExheWVyQ29sb3JSYW5nZVNlbGVjdG9yIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gcHJvcGVydHk9XCJzdHJva2VDb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxMYXllckNvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17bGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAgICAgICBwcm9wZXJ0eT1cInN0cm9rZUNvbG9yXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgY2hhbm5lbD17bGF5ZXIudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgICB7LyogU3Ryb2tlIFdpZHRoICovfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gbGFiZWw9XCJsYXllci5zdHJva2VXaWR0aFwiIGNvbGxhcHNpYmxlPlxuICAgICAgICAgICAge2xheWVyLmNvbmZpZy5zaXplRmllbGQgPyAoXG4gICAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD17ZmFsc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnRoaWNrbmVzc31cbiAgICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPENoYW5uZWxCeVZhbHVlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zaXplfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuXG4gICAgICAgICAgey8qIEVsZXZhdGlvbiAqL31cbiAgICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmVuYWJsZTNkfVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyF2aXNDb25maWcuZmlsbGVkfVxuICAgICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5oZWlnaHR9XG4gICAgICAgICAgICAgIHsuLi5sYXllckNoYW5uZWxDb25maWdQcm9wc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZX1cbiAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICBsYWJlbD1cImxheWVyVmlzQ29uZmlncy5lbGV2YXRpb25TY2FsZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU2xpZGVyXG4gICAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLmhlaWdodFJhbmdlfVxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBsYWJlbD1cImxheWVyVmlzQ29uZmlncy5oZWlnaHRSYW5nZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxWaXNDb25maWdTd2l0Y2ggey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mud2lyZWZyYW1lfSAvPlxuICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICAgIDwvU3R5bGVkTGF5ZXJWaXN1YWxDb25maWd1cmF0b3I+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtsYXllciwgZGF0YXNldHMsIHVwZGF0ZUxheWVyQ29uZmlnLCBsYXllclR5cGVPcHRpb25zLCB1cGRhdGVMYXllclR5cGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtmaWVsZHMgPSBbXSwgZmllbGRQYWlycyA9IHVuZGVmaW5lZH0gPSBsYXllci5jb25maWcuZGF0YUlkXG4gICAgICAgID8gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF1cbiAgICAgICAgOiB7fTtcbiAgICAgIGNvbnN0IHtjb25maWd9ID0gbGF5ZXI7XG5cbiAgICAgIGNvbnN0IHZpc0NvbmZpZ3VyYXRvclByb3BzID0gZ2V0VmlzQ29uZmlndXJhdG9yUHJvcHModGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllckNvbmZpZ3VyYXRvclByb3BzID0gZ2V0TGF5ZXJDb25maWd1cmF0b3JQcm9wcyh0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzID0gZ2V0TGF5ZXJDaGFubmVsQ29uZmlnUHJvcHModGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBkYXRhc2V0ID0gZ2V0TGF5ZXJEYXRhc2V0KGRhdGFzZXRzLCBsYXllcik7XG4gICAgICBjb25zdCByZW5kZXJUZW1wbGF0ZSA9IGxheWVyLnR5cGUgJiYgYF9yZW5kZXIke2NhcGl0YWxpemVGaXJzdExldHRlcihsYXllci50eXBlKX1MYXllckNvbmZpZ2A7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ3VyYXRvcj5cbiAgICAgICAgICB7bGF5ZXIubGF5ZXJJbmZvTW9kYWwgPyAoXG4gICAgICAgICAgICA8SG93VG9CdXR0b24gb25DbGljaz17KCkgPT4gdGhpcy5wcm9wcy5vcGVuTW9kYWwobGF5ZXIubGF5ZXJJbmZvTW9kYWwpfSAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwXG4gICAgICAgICAgICBsYWJlbD17J2xheWVyLmJhc2ljJ31cbiAgICAgICAgICAgIGNvbGxhcHNpYmxlPXtPYmplY3Qua2V5cyhsYXllci5jb25maWcuY29sdW1ucykubGVuZ3RoID4gMH1cbiAgICAgICAgICAgIGV4cGFuZGVkPXshbGF5ZXIuaGFzQWxsQ29sdW1ucygpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxMYXllclR5cGVTZWxlY3RvclxuICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgIGxheWVyPXtsYXllcn1cbiAgICAgICAgICAgICAgbGF5ZXJUeXBlT3B0aW9ucz17bGF5ZXJUeXBlT3B0aW9uc31cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e3VwZGF0ZUxheWVyVHlwZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8TGF5ZXJWaXNpYmlsaXR5Qnlab29tXG4gICAgICAgICAgICAgIHVwZGF0ZUxheWVyQ29uZmlnPXt0aGlzLnByb3BzLnVwZGF0ZUxheWVyQ29uZmlnfVxuICAgICAgICAgICAgICBsYXllcj17bGF5ZXJ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtsYXllckNvbmZpZ3VyYXRvclByb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxMYXllckFnZ3JlZ2F0aW9uUmVzb2x1dGlvbiBsYXllcj17bGF5ZXJ9IGRpc2FibGVkPXtsYXllckNvbmZpZ3VyYXRvclByb3BzLmRpc2FibGVkfSAvPlxuICAgICAgICAgICAge09iamVjdC5rZXlzKGRhdGFzZXRzKS5sZW5ndGggPiAxICYmIChcbiAgICAgICAgICAgICAgPFNvdXJjZURhdGFTZWxlY3RvclxuICAgICAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgICAgICBpZD17bGF5ZXIuaWR9XG4gICAgICAgICAgICAgICAgZGF0YUlkPXtjb25maWcuZGF0YUlkfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt2YWx1ZSA9PiB1cGRhdGVMYXllckNvbmZpZyh7ZGF0YUlkOiB2YWx1ZX0pfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtPYmplY3Qua2V5cyhsYXllci5jb25maWcuY29sdW1ucykubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgICA8TGF5ZXJDb2x1bW5Db25maWdcbiAgICAgICAgICAgICAgICAgIGNvbHVtblBhaXJzPXtsYXllci5jb2x1bW5QYWlyc31cbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e2xheWVyLmNvbmZpZy5jb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgYXNzaWduQ29sdW1uUGFpcnM9e2xheWVyLmFzc2lnbkNvbHVtblBhaXJzLmJpbmQobGF5ZXIpfVxuICAgICAgICAgICAgICAgICAgYXNzaWduQ29sdW1uPXtsYXllci5hc3NpZ25Db2x1bW4uYmluZChsYXllcil9XG4gICAgICAgICAgICAgICAgICBjb2x1bW5MYWJlbHM9e2xheWVyLmNvbHVtbkxhYmVsc31cbiAgICAgICAgICAgICAgICAgIGZpZWxkcz17ZmllbGRzfVxuICAgICAgICAgICAgICAgICAgZmllbGRQYWlycz17ZmllbGRQYWlyc31cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyQ29uZmlnPXt1cGRhdGVMYXllckNvbmZpZ31cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHlwZT17dGhpcy5wcm9wcy51cGRhdGVMYXllclR5cGV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Db25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9MYXllckNvbmZpZ0dyb3VwPlxuICAgICAgICAgIHt0aGlzW3JlbmRlclRlbXBsYXRlXSAmJlxuICAgICAgICAgICAgdGhpc1tyZW5kZXJUZW1wbGF0ZV0oe1xuICAgICAgICAgICAgICBsYXllcixcbiAgICAgICAgICAgICAgZGF0YXNldCxcbiAgICAgICAgICAgICAgdmlzQ29uZmlndXJhdG9yUHJvcHMsXG4gICAgICAgICAgICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLFxuICAgICAgICAgICAgICBsYXllckNvbmZpZ3VyYXRvclByb3BzXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ3VyYXRvcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIExheWVyQ29uZmlndXJhdG9yO1xufVxuLypcbiAqIENvbXBvbmVudGl6ZSBjb25maWcgY29tcG9uZW50IGludG8gcHVyZSBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAqL1xuXG5jb25zdCBTdHlsZWRIb3dUb0J1dHRvbiA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDEycHg7XG4gIHRvcDogLTRweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBIb3dUb0J1dHRvbiA9ICh7b25DbGlja30pID0+IChcbiAgPFN0eWxlZEhvd1RvQnV0dG9uPlxuICAgIDxCdXR0b24gbGluayBzbWFsbCBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbGF5ZXJDb25maWd1cmF0aW9uLmhvd1RvJ30gLz5cbiAgICA8L0J1dHRvbj5cbiAgPC9TdHlsZWRIb3dUb0J1dHRvbj5cbik7XG5cbkxheWVyQ29sb3JTZWxlY3RvckZhY3RvcnkuZGVwcyA9IFtDb2xvclNlbGVjdG9yRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeShDb2xvclNlbGVjdG9yKSB7XG4gIGNsYXNzIExheWVyQ29sb3JTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2xheWVyLCBvbkNoYW5nZSwgc2VsZWN0ZWRDb2xvciwgcHJvcGVydHkgPSAnY29sb3InLCBzZXRDb2xvclVJfSA9IHRoaXMucHJvcHM7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibGF5ZXIuY29sb3JcIiAvPlxuICAgICAgICAgIDwvUGFuZWxMYWJlbD5cbiAgICAgICAgICA8Q29sb3JTZWxlY3RvclxuICAgICAgICAgICAgY29sb3JTZXRzPXtbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yOiBzZWxlY3RlZENvbG9yIHx8IGxheWVyLmNvbmZpZy5jb2xvcixcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogcmdiVmFsdWUgPT4gb25DaGFuZ2Uoe1twcm9wZXJ0eV06IHJnYlZhbHVlfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXX1cbiAgICAgICAgICAgIGNvbG9yVUk9e2xheWVyLmNvbmZpZy5jb2xvclVJW3Byb3BlcnR5XX1cbiAgICAgICAgICAgIHNldENvbG9yVUk9e25ld0NvbmZpZyA9PiBzZXRDb2xvclVJKHByb3BlcnR5LCBuZXdDb25maWcpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIExheWVyQ29sb3JTZWxlY3Rvcjtcbn1cblxuQXJjTGF5ZXJDb2xvclNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW0NvbG9yU2VsZWN0b3JGYWN0b3J5XTtcbmV4cG9ydCBmdW5jdGlvbiBBcmNMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5KENvbG9yU2VsZWN0b3IpIHtcbiAgY2xhc3MgQXJjTGF5ZXJDb2xvclNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bGF5ZXIsIG9uQ2hhbmdlQ29uZmlnLCBvbkNoYW5nZVZpc0NvbmZpZywgcHJvcGVydHkgPSAnY29sb3InLCBzZXRDb2xvclVJfSA9IHRoaXMucHJvcHM7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibGF5ZXIuY29sb3JSYW5nZVwiIC8+XG4gICAgICAgICAgPC9QYW5lbExhYmVsPlxuICAgICAgICAgIDxDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICBjb2xvclNldHM9e1tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I6IGxheWVyLmNvbmZpZy5jb2xvcixcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogcmdiVmFsdWUgPT4gb25DaGFuZ2VDb25maWcoe2NvbG9yOiByZ2JWYWx1ZX0pLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnU291cmNlJ1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogbGF5ZXIuY29uZmlnLnZpc0NvbmZpZy50YXJnZXRDb2xvciB8fCBsYXllci5jb25maWcuY29sb3IsXG4gICAgICAgICAgICAgICAgc2V0Q29sb3I6IHJnYlZhbHVlID0+IG9uQ2hhbmdlVmlzQ29uZmlnKHt0YXJnZXRDb2xvcjogcmdiVmFsdWV9KSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1RhcmdldCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXX1cbiAgICAgICAgICAgIGNvbG9yVUk9e2xheWVyLmNvbmZpZy5jb2xvclVJW3Byb3BlcnR5XX1cbiAgICAgICAgICAgIHNldENvbG9yVUk9e25ld0NvbmZpZyA9PiBzZXRDb2xvclVJKHByb3BlcnR5LCBuZXdDb25maWcpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBBcmNMYXllckNvbG9yU2VsZWN0b3I7XG59XG5cbkxheWVyQ29sb3JSYW5nZVNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW0NvbG9yU2VsZWN0b3JGYWN0b3J5XTtcbmV4cG9ydCBmdW5jdGlvbiBMYXllckNvbG9yUmFuZ2VTZWxlY3RvckZhY3RvcnkoQ29sb3JTZWxlY3Rvcikge1xuICBjbGFzcyBMYXllckNvbG9yUmFuZ2VTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2xheWVyLCBvbkNoYW5nZSwgcHJvcGVydHkgPSAnY29sb3JSYW5nZScsIHNldENvbG9yVUl9ID0gdGhpcy5wcm9wcztcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJsYXllci5jb2xvclJhbmdlXCIgLz5cbiAgICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgPENvbG9yU2VsZWN0b3JcbiAgICAgICAgICAgIGNvbG9yU2V0cz17W1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcjogbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV0sXG4gICAgICAgICAgICAgICAgaXNSYW5nZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZXRDb2xvcjogY29sb3JSYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB7Y29sb3JNYXB9ID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICBjb25zdCBjb2xvclJhbmdlVXBkYXRlZCA9IGNvbG9yTWFwXG4gICAgICAgICAgICAgICAgICAgID8gbGF5ZXIudXBkYXRlQ29sb3JNYXAocHJvcGVydHksIGNvbG9yTWFwLCBjb2xvclJhbmdlKVxuICAgICAgICAgICAgICAgICAgICA6IGNvbG9yUmFuZ2U7XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZSh7W3Byb3BlcnR5XTogY29sb3JSYW5nZVVwZGF0ZWR9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF19XG4gICAgICAgICAgICBjb2xvclVJPXtsYXllci5jb25maWcuY29sb3JVSVtwcm9wZXJ0eV19XG4gICAgICAgICAgICBzZXRDb2xvclVJPXtuZXdDb25maWcgPT4gc2V0Q29sb3JVSShwcm9wZXJ0eSwgbmV3Q29uZmlnKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3I7XG59XG5cbkNoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5LmRlcHMgPSBbVmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yRmFjdG9yeV07XG5leHBvcnQgZnVuY3Rpb24gQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvckZhY3RvcnkoVmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yKSB7XG4gIGNvbnN0IENoYW5uZWxCeVZhbHVlU2VsZWN0b3IgPSAoe1xuICAgIGxheWVyLFxuICAgIGNoYW5uZWwsXG4gICAgb25DaGFuZ2UsXG4gICAgb25DaGFuZ2VWaXNDb25maWcsXG4gICAgZmllbGRzLFxuICAgIGZpZWxkc0FnZ3JlZ2F0ZWQsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgaXNMb2FkaW5nXG4gIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBjaGFubmVsU2NhbGVUeXBlLFxuICAgICAgZG9tYWluLFxuICAgICAgZmllbGQsXG4gICAgICBhZ2dyZWdhdGlvbixcbiAgICAgIGtleSxcbiAgICAgIHByb3BlcnR5LFxuICAgICAgcmFuZ2UsXG4gICAgICBzY2FsZSxcbiAgICAgIGRlZmF1bHRNZWFzdXJlLFxuICAgICAgc3VwcG9ydGVkRmllbGRUeXBlc1xuICAgIH0gPSBjaGFubmVsO1xuICAgIGNvbnN0IGNoYW5uZWxTdXBwb3J0ZWRGaWVsZFR5cGVzID1cbiAgICAgIHN1cHBvcnRlZEZpZWxkVHlwZXMgfHwgQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTW2NoYW5uZWxTY2FsZVR5cGVdO1xuICAgIGNvbnN0IHN1cHBvcnRlZEZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKHt0eXBlfSkgPT4gY2hhbm5lbFN1cHBvcnRlZEZpZWxkVHlwZXMuaW5jbHVkZXModHlwZSkpO1xuICAgIGNvbnN0IHNjYWxlT3B0aW9ucyA9IGxheWVyLmdldFNjYWxlT3B0aW9ucyhjaGFubmVsLmtleSk7XG4gICAgY29uc3Qgc2hvd1NjYWxlQ3VzdG9taXphYmxlID1cbiAgICAgIGNoYW5uZWxTY2FsZVR5cGUgPT09IENIQU5ORUxfU0NBTEVTLmNvbG9yICYmXG4gICAgICBzY2FsZSAmJlxuICAgICAgbGF5ZXIuY29uZmlnW3NjYWxlXSAmJlxuICAgICAgQm9vbGVhbihsYXllci5jb25maWdbZmllbGRdKSAmJlxuICAgICAgc2NhbGVPcHRpb25zPy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IHNob3dTY2FsZSA9IEJvb2xlYW4oXG4gICAgICAhc2hvd1NjYWxlQ3VzdG9taXphYmxlICYmXG4gICAgICAgIHNjYWxlICYmXG4gICAgICAgICFsYXllci5pc0FnZ3JlZ2F0ZWQgJiZcbiAgICAgICAgbGF5ZXIuY29uZmlnW3NjYWxlXSAmJlxuICAgICAgICBzY2FsZU9wdGlvbnM/Lmxlbmd0aCA+IDFcbiAgICApO1xuICAgIGNvbnN0IGRlZmF1bHREZXNjcmlwdGlvbiA9ICdsYXllckNvbmZpZ3VyYXRpb24uZGVmYXVsdERlc2NyaXB0aW9uJztcbiAgICBjb25zdCB2aXNSYW5nZSA9IGxheWVyLmNvbmZpZy52aXNDb25maWdbcmFuZ2VdO1xuICAgIGNvbnN0IGFnZ3JlZ2F0b3IgPSBsYXllci5jb25maWcudmlzQ29uZmlnW2FnZ3JlZ2F0aW9uXTtcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlzQ29uZmlnQnlGaWVsZFNlbGVjdG9yXG4gICAgICAgIGNoYW5uZWw9e2NoYW5uZWwua2V5fVxuICAgICAgICBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb24gfHwgZGVmYXVsdERlc2NyaXB0aW9ufVxuICAgICAgICBkb21haW49e2xheWVyLmNvbmZpZ1tkb21haW5dfVxuICAgICAgICBmaWVsZHM9e3N1cHBvcnRlZEZpZWxkc31cbiAgICAgICAgYWdncmVnYXRvcj17YWdncmVnYXRvcn1cbiAgICAgICAgZmllbGRzQWdncmVnYXRlZD17ZmllbGRzQWdncmVnYXRlZH1cbiAgICAgICAgaWQ9e2xheWVyLmlkfVxuICAgICAgICBrZXk9e2Ake2tleX0tY2hhbm5lbC1zZWxlY3RvcmB9XG4gICAgICAgIHByb3BlcnR5PXtwcm9wZXJ0eX1cbiAgICAgICAgcGxhY2Vob2xkZXI9e2RlZmF1bHRNZWFzdXJlIHx8ICdwbGFjZWhvbGRlci5zZWxlY3RGaWVsZCd9XG4gICAgICAgIHJhbmdlPXt2aXNSYW5nZX1cbiAgICAgICAgc2NhbGVPcHRpb25zPXtzY2FsZU9wdGlvbnN9XG4gICAgICAgIHNjYWxlVHlwZT17c2NhbGUgPyBsYXllci5jb25maWdbc2NhbGVdIDogbnVsbH1cbiAgICAgICAgc2VsZWN0ZWRGaWVsZD17bGF5ZXIuY29uZmlnW2ZpZWxkXX1cbiAgICAgICAgc2hvd1NjYWxlPXtzaG93U2NhbGV9XG4gICAgICAgIHNob3dTY2FsZUN1c3RvbWl6YWJsZT17c2hvd1NjYWxlQ3VzdG9taXphYmxlfVxuICAgICAgICB1cGRhdGVGaWVsZD17dmFsID0+IHtcbiAgICAgICAgICBpZiAodmlzUmFuZ2U/LmNvbG9yTWFwKSB7XG4gICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZyh7W3JhbmdlXTogey4uLnZpc1JhbmdlLCBjb2xvck1hcDogdW5kZWZpbmVkfX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvbkNoYW5nZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgW2ZpZWxkXTogdmFsLFxuICAgICAgICAgICAgICAuLi4oZmllbGRzQWdncmVnYXRlZCAmJiB7XG4gICAgICAgICAgICAgICAgdmlzQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgICAuLi5sYXllci5jb25maWcudmlzQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgW2FnZ3JlZ2F0aW9uXTogdmFsPy5zZWxlY3RlZEFnZ3JlZ2F0b3JcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2V5XG4gICAgICAgICAgKTtcbiAgICAgICAgfX1cbiAgICAgICAgdXBkYXRlU2NhbGU9e3ZhbCA9PiBvbkNoYW5nZSh7W3NjYWxlXTogdmFsfSwga2V5KX1cbiAgICAgICAgdXBkYXRlQ3VzdG9tUGFsZXR0ZT17KGNvbG9yTWFwLCB1aUN1c3RvbVNjYWxlVHlwZSkgPT4ge1xuICAgICAgICAgIG9uQ2hhbmdlVmlzQ29uZmlnKHtbcmFuZ2VdOiB7Li4udmlzUmFuZ2UsIGNvbG9yTWFwLCB1aUN1c3RvbVNjYWxlVHlwZX19KTtcbiAgICAgICAgfX1cbiAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIENoYW5uZWxCeVZhbHVlU2VsZWN0b3I7XG59XG5cbkFnZ3JTY2FsZVNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW0NvbG9yRGltZW5zaW9uU2NhbGVTZWxlY3RvckZhY3RvcnldO1xuXG5mdW5jdGlvbiBBZ2dyU2NhbGVTZWxlY3RvckZhY3RvcnkoQ29sb3JEaW1lbnNpb25TY2FsZVNlbGVjdG9yKSB7XG4gIGNsYXNzIEFnZ3JTY2FsZVNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7Y2hhbm5lbCwgbGF5ZXIsIG9uQ2hhbmdlLCBvbkNoYW5nZVZpc0NvbmZpZ30gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3Qge3NjYWxlLCBrZXksIGNoYW5uZWxTY2FsZVR5cGUsIGRvbWFpbiwgcmFuZ2V9ID0gY2hhbm5lbDtcbiAgICAgIGNvbnN0IHNjYWxlT3B0aW9ucyA9IGxheWVyLmdldFNjYWxlT3B0aW9ucyhrZXkpO1xuICAgICAgY29uc3QgdmlzUmFuZ2UgPSBsYXllci5jb25maWcudmlzQ29uZmlnW3JhbmdlXTtcbiAgICAgIGNvbnN0IHNob3dTY2FsZUN1c3RvbWl6YWJsZSA9XG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGUgPT09IENIQU5ORUxfU0NBTEVTLmNvbG9yQWdnciAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KHNjYWxlT3B0aW9ucykgJiZcbiAgICAgICAgc2NhbGVPcHRpb25zLmxlbmd0aCA+IDA7XG4gICAgICBjb25zdCBzaG93U2NhbGUgPSBBcnJheS5pc0FycmF5KHNjYWxlT3B0aW9ucykgJiYgc2NhbGVPcHRpb25zLmxlbmd0aCA+IDE7XG5cbiAgICAgIGlmIChzaG93U2NhbGVDdXN0b21pemFibGUpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgIDxDb2xvckRpbWVuc2lvblNjYWxlU2VsZWN0b3JcbiAgICAgICAgICAgICAgbGFiZWw9e2Ake2tleX0gU2NhbGVgfVxuICAgICAgICAgICAgICBzY2FsZVR5cGU9e2xheWVyLmNvbmZpZ1tzY2FsZV19XG4gICAgICAgICAgICAgIG9wdGlvbnM9e3NjYWxlT3B0aW9uc31cbiAgICAgICAgICAgICAgZG9tYWluPXtsYXllci5jb25maWdbZG9tYWluXX1cbiAgICAgICAgICAgICAgcmFuZ2U9e3Zpc1JhbmdlfVxuICAgICAgICAgICAgICBvblNlbGVjdD17dmFsID0+IG9uQ2hhbmdlKHtbc2NhbGVdOiB2YWx9LCBrZXkpfVxuICAgICAgICAgICAgICBvblNldEN1c3RvbVBhbGV0dGU9eyhjb2xvck1hcCwgdWlDdXN0b21TY2FsZVR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZVZpc0NvbmZpZyh7W3JhbmdlXTogey4uLnZpc1JhbmdlLCBjb2xvck1hcCwgdWlDdXN0b21TY2FsZVR5cGV9fSk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNob3dTY2FsZSkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxEaW1lbnNpb25TY2FsZVNlbGVjdG9yXG4gICAgICAgICAgICBsYWJlbD17YCR7a2V5fSBTY2FsZWB9XG4gICAgICAgICAgICBvcHRpb25zPXtzY2FsZU9wdGlvbnN9XG4gICAgICAgICAgICBzY2FsZVR5cGU9e2xheWVyLmNvbmZpZ1tzY2FsZV19XG4gICAgICAgICAgICBvblNlbGVjdD17dmFsID0+IG9uQ2hhbmdlKHtbc2NhbGVdOiB2YWx9LCBrZXkpfVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluamVjdEludGwoQWdnclNjYWxlU2VsZWN0b3IpO1xufVxuXG5leHBvcnQgY29uc3QgQWdncmVnYXRpb25UeXBlU2VsZWN0b3IgPSAoe2xheWVyLCBjaGFubmVsLCBvbkNoYW5nZX0pID0+IHtcbiAgY29uc3Qge2ZpZWxkLCBhZ2dyZWdhdGlvbiwga2V5fSA9IGNoYW5uZWw7XG4gIGNvbnN0IHNlbGVjdGVkRmllbGQgPSBsYXllci5jb25maWdbZmllbGRdO1xuICBjb25zdCB7dmlzQ29uZmlnfSA9IGxheWVyLmNvbmZpZztcblxuICAvLyBhZ2dyZWdhdGlvbiBzaG91bGQgb25seSBiZSBzZWxlY3RhYmxlIHdoZW4gZmllbGQgaXMgc2VsZWN0ZWRcbiAgY29uc3QgYWdncmVnYXRpb25PcHRpb25zID0gbGF5ZXIuZ2V0QWdncmVnYXRpb25PcHRpb25zKGtleSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgIDxQYW5lbExhYmVsPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J2xheWVyLmFnZ3JlZ2F0ZUJ5J30gdmFsdWVzPXt7ZmllbGQ6IHNlbGVjdGVkRmllbGQubmFtZX19IC8+XG4gICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICA8SXRlbVNlbGVjdG9yXG4gICAgICAgIHNlbGVjdGVkSXRlbXM9e3Zpc0NvbmZpZ1thZ2dyZWdhdGlvbl19XG4gICAgICAgIG9wdGlvbnM9e2FnZ3JlZ2F0aW9uT3B0aW9uc31cbiAgICAgICAgbXVsdGlTZWxlY3Q9e2ZhbHNlfVxuICAgICAgICBzZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+XG4gICAgICAgICAgb25DaGFuZ2UoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHZpc0NvbmZpZzoge1xuICAgICAgICAgICAgICAgIC4uLmxheWVyLmNvbmZpZy52aXNDb25maWcsXG4gICAgICAgICAgICAgICAgW2FnZ3JlZ2F0aW9uXTogdmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoYW5uZWwua2V5XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgKTtcbn07XG5cbi8qIGVzbGludC1lbmFibGUgbWF4LXBhcmFtcyAqL1xuIl19