@carto/kepler.gl 0.0.69-alpha.hackathon-3dtiles → 0.0.69-alpha.hackathon-3dtiles.2

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.
@@ -86,13 +86,53 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
86
86
 
87
87
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
88
88
 
89
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
90
+
91
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
92
+
93
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
94
+
89
95
  var GOOGLE_MAPS_API_KEY = 'AIzaSyCpvQymc5wjSYIsxy3RV1widM3p3h78CAk';
96
+ var h = 0;
90
97
  var tiles3d = new _geoLayers.Tile3DLayer({
91
98
  id: 'google-3d-tiles',
92
99
  data: 'https://tile.googleapis.com/v1/3dtiles/root.json',
93
100
  onTilesetLoad: function onTilesetLoad(tileset3d) {
94
101
  // tileset3d.options.maximumScreenSpaceError = 4;
95
102
  tileset3d._onTileLoadError = function () {};
103
+
104
+ tileset3d.options.onTraversalComplete = function (selectedTiles) {
105
+ // Do not show tiles which are many layers too low in resolution (avoids artifacts)
106
+ var maxDepth = 0;
107
+
108
+ var _iterator = _createForOfIteratorHelper(selectedTiles),
109
+ _step;
110
+
111
+ try {
112
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
113
+ var depth = _step.value.depth;
114
+ if (depth > maxDepth) maxDepth = depth;
115
+ }
116
+ } catch (err) {
117
+ _iterator.e(err);
118
+ } finally {
119
+ _iterator.f();
120
+ }
121
+
122
+ var filtered = selectedTiles.filter(function (t) {
123
+ return t.depth > maxDepth - 4;
124
+ }); // Hacky way to obtain height above sea level to improve controls
125
+
126
+ if (filtered.length) {
127
+ h = filtered.map(function (t) {
128
+ return t.boundingBox[0][2];
129
+ }).reduce(function (a, n) {
130
+ return a + n;
131
+ }) / filtered.length;
132
+ }
133
+
134
+ return filtered;
135
+ };
96
136
  },
97
137
  loadOptions: {
98
138
  fetch: {
@@ -313,6 +353,8 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
313
353
  // after we have received proper dimensions from observeDimensions
314
354
 
315
355
  var next = _objectSpread(_objectSpread({}, width > 0 && height > 0 ? viewState : restViewState), {}, {
356
+ // Only works with Mapbox basemap (Google ignores this)
357
+ position: [0, 0, h],
316
358
  // enabling transition in two maps may lead to endless update loops
317
359
  transitionDuration: primary ? TRANSITION_DURATION : 0
318
360
  });
@@ -469,8 +511,10 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
469
511
  }));
470
512
  }
471
513
 
472
- if (mapStyle.styleType === 'tiles3d') {
473
- // Inject 3D tiles when blank Google map style detected
514
+ if (mapStyle.styleType === 'voyager' && Object.values(mapStyle.visibleLayerGroups).filter(function (x) {
515
+ return x;
516
+ }).length === 0) {
517
+ // Inject 3D tiles when map style is Voyager without layers (hack until UI is built)
474
518
  deckGlLayers = deckGlLayers.filter(function (l) {
475
519
  return Boolean(l && l.clone);
476
520
  }).map(function (l) {
@@ -726,4 +770,4 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
726
770
  MapContainer.displayName = 'MapContainer';
727
771
  return MapContainer;
728
772
  }
729
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiR09PR0xFX01BUFNfQVBJX0tFWSIsInRpbGVzM2QiLCJUaWxlM0RMYXllciIsImlkIiwiZGF0YSIsIm9uVGlsZXNldExvYWQiLCJ0aWxlc2V0M2QiLCJfb25UaWxlTG9hZEVycm9yIiwibG9hZE9wdGlvbnMiLCJmZXRjaCIsImhlYWRlcnMiLCJvcGVyYXRpb24iLCJ0ZXJyYWluRXh0ZW5zaW9uIiwiVGVycmFpbkV4dGVuc2lvbiIsInRyYWNrZXJzIiwiUEVSRl9ERUJVRyIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwiaW5jbHVkZXMiLCJkcmF3Q291bnQiLCJ2aWV3cG9ydENoYW5nZUNvdW50IiwiTGF5ZXIiLCJUaWxlTGF5ZXIiLCJNQVBfU1RZTEUiLCJjb250YWluZXIiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsInBvaW50ZXJFdmVudHMiLCJNQVBCT1hHTF9TVFlMRV9VUERBVEUiLCJNQVBCT1hHTF9SRU5ERVIiLCJUUkFOU0lUSU9OX0RVUkFUSU9OIiwiQXR0cmlidXRpb24iLCJNYXBDb250YWluZXJGYWN0b3J5IiwiZGVwcyIsIk1hcFBvcG92ZXJGYWN0b3J5IiwiTWFwQ29udHJvbEZhY3RvcnkiLCJFZGl0b3JGYWN0b3J5IiwiTWFwUG9wb3ZlciIsIk1hcENvbnRyb2wiLCJFZGl0b3IiLCJNYXBDb250YWluZXIiLCJwcm9wcyIsImRpbWVuc2lvbnMiLCJwcmltYXJ5IiwiaXNFeHBvcnQiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJsYXllcnMiLCJsYXllckRhdGEiLCJtYXBMYXllcnMiLCJsYXllck9yZGVyIiwicG9wdXBTZXR0aW5ncyIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInBvcHVwU2V0dGluZ3NTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImZpbHRlciIsImYiLCJ0eXBlIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsImxheWVyT3JkZXJTZWxlY3RvciIsImxheWVyc1RvUmVuZGVyU2VsZWN0b3IiLCJnZW5lcmF0ZU1hcGJveExheWVycyIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsImlkeCIsImNvbG9yRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJsYXllcklkIiwiaW5kZXgiLCJtYXBJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwIiwicHJldmlvdXNMYXllcnMiLCJfdXBkYXRlTWFwYm94TGF5ZXJzIiwib25NYXBTdHlsZUxvYWRlZCIsIl9tYXAiLCJtYXBib3giLCJnZXRNYXAiLCJvbiIsIl9vbk1hcGJveFN0eWxlVXBkYXRlIiwib25NYXBSZW5kZXIiLCJnZXRNYXBib3hSZWYiLCJnbCIsImxheWVyQmxlbmRpbmciLCJlcnJvciIsImxheWVyIiwibWVzc2FnZSIsInNldFN0YXRlIiwiY29udGV4dExvc3QiLCJlcnJvck1lc3NhZ2UiLCJub3RpZmljYXRpb25JZCIsIl9kZWNrR0xFcnJvcnNFbGFwc2VkIiwibGFzdFNob3duIiwiRGF0ZSIsIm5vdyIsIlRIUk9UVExFX05PVElGSUNBVElPTl9USU1FIiwidWlTdGF0ZUFjdGlvbnMiLCJhZGROb3RpZmljYXRpb24iLCJ2aWV3U3RhdGUiLCJpbmNyZW1lbnQiLCJyZXN0Vmlld1N0YXRlIiwibmV4dCIsInRyYW5zaXRpb25EdXJhdGlvbiIsIm9uVmlld1N0YXRlQ2hhbmdlIiwicGFuZWxJZCIsInRvZ2dsZU1hcENvbnRyb2wiLCJfZGVjayIsIl9yZWYiLCJfaGFzUmVuZGVyZWQiLCJfbW91c2VQb3NpdGlvbiIsImN1cnJlbnQiLCJfaGFuZGxlUmVzaXplIiwic3RhdGUiLCJvZmYiLCJvbkRlY2tJbml0aWFsaXplZCIsImxheWVyc1RvUmVuZGVyIiwidmlld3BvcnQiLCJsbmdMYXQiLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJ4IiwieSIsImxheWVyc0ZvckRlY2siLCJtYXBTdGF0ZSIsIm1hcFN0eWxlIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJtYXNrUG9seWdvbiIsImRlY2tHbExheWVycyIsImRlY2tHbFByb3BzIiwibGVuZ3RoIiwiZGF0YUxheWVycyIsInNsaWNlIiwicmV2ZXJzZSIsInJlZHVjZSIsIm92ZXJsYXlzIiwibGF5ZXJDYWxsYmFja3MiLCJvblNldExheWVyRG9tYWluIiwidmFsIiwiX29uTGF5ZXJTZXREb21haW4iLCJsYXllck92ZXJsYXkiLCJjb25jYXQiLCJsYXllcnNPblRvcCIsInB1c2giLCJTb2xpZFBvbHlnb25MYXllciIsIk1BU0tfTEFZRVJfSUQiLCJPUEVSQVRJT04iLCJNQVNLIiwiZGF0YUNvbXBhcmF0b3IiLCJvbGREYXRhIiwiZ2V0UG9seWdvbiIsImQiLCJnZXRGaWxsQ29sb3IiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJUaHJlZURCdWlsZGluZ0xheWVyIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsInVwZGF0ZVRyaWdnZXJzIiwic3R5bGVUeXBlIiwibCIsIkJvb2xlYW4iLCJjbG9uZSIsIm1hcCIsImV4dGVuc2lvbnMiLCJoYXNSZW5kZXJlZCIsInJlc2V0SGFzUmVuZGVyZWQiLCJfb25WaWV3cG9ydENoYW5nZSIsIm9wdHMiLCJfb25CZWZvcmVSZW5kZXIiLCJvbkxheWVySG92ZXIiLCJlIiwiX29uRGVja0Vycm9yIiwiY29tcCIsImRlY2siLCJfb25EZWNrSW5pdGlhbGl6ZWQiLCJpc05hTiIsInZpc2liaWxpdHlCeVpvb20iLCJtaW4iLCJtYXgiLCJjdXJyZW50Wm9vbVJhbmdlIiwiTWF0aCIsInJvdW5kIiwiem9vbSIsIm1hcGJveExheWVycyIsIm1hcGJveExheWVyc1NlbGVjdG9yIiwiT2JqZWN0Iiwia2V5cyIsImlzU3R5bGVMb2FkZWQiLCJNYXBDb21wb25lbnQiLCJkYXRhc2V0cyIsIm1hcENvbnRyb2xzIiwibG9jYWxlIiwiaW50ZXJhY3Rpb25Db25maWciLCJlZGl0b3IiLCJsYXllcnNGb3JEZWNrU2VsZWN0b3IiLCJtYXBQcm9wcyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsInRyYW5zZm9ybVJlcXVlc3QiLCJpc0VkaXQiLCJtYXBEcmF3IiwiYWN0aXZlIiwiaGFzR2VvY29kZXJMYXllciIsImZpbmQiLCJHRU9DT0RFUl9MQVlFUl9JRCIsImlzU3BsaXQiLCJtb3VzZVBvc2l0aW9uIiwiTE9DQUxFX0NPREVTIiwiZHJhZ1JvdGF0ZSIsInJlYWRPbmx5Iiwic2NhbGUiLCJnZW9jb2RlciIsImVuYWJsZWQiLCJ0b2dnbGVQZXJzcGVjdGl2ZSIsInRvZ2dsZVNwbGl0TWFwIiwiX2hhbmRsZU1hcFRvZ2dsZUxheWVyIiwiX3RvZ2dsZU1hcENvbnRyb2wiLCJzZXRFZGl0b3JNb2RlIiwic2V0TG9jYWxlIiwidG9nZ2xlRWRpdG9yVmlzaWJpbGl0eSIsIl9zZXRNYXBib3hNYXAiLCJib3R0b21NYXBTdHlsZSIsImhvdmVySW5mbyIsInVuZGVmaW5lZCIsImV2dCIsInBvaW50IiwiX3JlbmRlckRlY2tPdmVybGF5IiwiX3JlbmRlck1hcGJveE92ZXJsYXlzIiwicG9seWdvbkZpbHRlcnMiLCJkZWxldGVGZWF0dXJlIiwic2V0U2VsZWN0ZWRGZWF0dXJlIiwic2V0RmVhdHVyZXMiLCJzZXRQb2x5Z29uRmlsdGVyTGF5ZXIiLCJ2aXNpYmxlIiwidG9wTWFwU3R5bGUiLCJfcmVuZGVyTWFwUG9wb3ZlciIsImdsb2JlIiwiX3JlbmRlck1hcCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJhcnJheU9mIiwiYW55IiwiYm9vbCIsImNsaWNrZWQiLCJvbk1hcFRvZ2dsZUxheWVyIiwiZnVuYyIsIm51bWJlciIsIk1hcGJveEdMTWFwIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFVTSxJQW5CRjtBQW1CUTtBQUN6QnBDLElBQUFBLFFBQVEsRUFBRThCLHNCQUFVTSxJQXBCSDtBQXFCakI1TSxJQUFBQSxRQUFRLEVBQUVzTSxzQkFBVU0sSUFyQkg7QUFzQmpCQyxJQUFBQSxPQUFPLEVBQUVQLHNCQUFVQyxNQXRCRjtBQXVCakJsQixJQUFBQSxTQUFTLEVBQUVpQixzQkFBVUMsTUF2Qko7QUF3QmpCbE0sSUFBQUEsU0FBUyxFQUFFaU0sc0JBQVVDLE1BeEJKO0FBeUJqQk8sSUFBQUEsZ0JBQWdCLEVBQUVSLHNCQUFVUyxJQXpCWDtBQTBCakI1SyxJQUFBQSxnQkFBZ0IsRUFBRW1LLHNCQUFVUyxJQTFCWDtBQTJCakJ0SyxJQUFBQSxXQUFXLEVBQUU2SixzQkFBVVMsSUEzQk47QUE0QmpCckssSUFBQUEsWUFBWSxFQUFFNEosc0JBQVVTLElBNUJQO0FBNkJqQmpMLElBQUFBLEtBQUssRUFBRXdLLHNCQUFVVSxNQTdCQTtBQThCakJ6TSxJQUFBQSxhQUFhLEVBQUUrTCxzQkFBVUM7QUE5QlIsR0FGcUQ7QUFBQSxtQ0FDcEUzTSxZQURvRSxrQkFtQ2xEO0FBQ3BCd0osSUFBQUEsWUFBWSxFQUFFNkQsc0JBRE07QUFFcEJ2SCxJQUFBQSxXQUFXLEVBQUUsRUFGTztBQUdwQjVELElBQUFBLEtBQUssRUFBRSxDQUhhO0FBSXBCL0IsSUFBQUEsT0FBTyxFQUFFO0FBSlcsR0FuQ2tEO0FBeWdCMUVILEVBQUFBLFlBQVksQ0FBQ3NOLFdBQWIsR0FBMkIsY0FBM0I7QUFFQSxTQUFPdE4sWUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBNYXBib3hHTE1hcCBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IERlY2tHTCBmcm9tICdAZGVjay5nbC9yZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge09QRVJBVElPTiwgTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtTb2xpZFBvbHlnb25MYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7VGlsZUxheWVyfSBmcm9tICdAZGVjay5nbC9nZW8tbGF5ZXJzJztcbmltcG9ydCB7ZXJyb3JOb3RpZmljYXRpb259IGZyb20gJ3V0aWxzL25vdGlmaWNhdGlvbnMtdXRpbHMnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgTWFwUG9wb3ZlckZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9tYXAvbWFwLXBvcG92ZXInO1xuaW1wb3J0IE1hcENvbnRyb2xGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvbWFwL21hcC1jb250cm9sJztcbmltcG9ydCB7U3R5bGVkTWFwQ29udGFpbmVyLCBTdHlsZWRBdHRyYnV0aW9ufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBFZGl0b3JGYWN0b3J5IGZyb20gJy4vZWRpdG9yL2VkaXRvcic7XG5cbi8vIHV0aWxzXG5pbXBvcnQge2dlbmVyYXRlTWFwYm94TGF5ZXJzLCB1cGRhdGVNYXBib3hMYXllcnN9IGZyb20gJ2xheWVycy9tYXBib3gtdXRpbHMnO1xuaW1wb3J0IHtzZXRMYXllckJsZW5kaW5nfSBmcm9tICd1dGlscy9nbC11dGlscyc7XG5pbXBvcnQge3RyYW5zZm9ybVJlcXVlc3R9IGZyb20gJ3V0aWxzL21hcC1zdHlsZS11dGlscy9tYXBib3gtdXRpbHMnO1xuaW1wb3J0IHtyZW5kZXJEZWNrR2xMYXllciwgcHJlcGFyZUxheWVyc1RvUmVuZGVyLCBwcmVwYXJlTGF5ZXJzRm9yRGVja30gZnJvbSAndXRpbHMvbGF5ZXItdXRpbHMnO1xuXG4vLyBkZWZhdWx0LXNldHRpbmdzXG5pbXBvcnQgVGhyZWVEQnVpbGRpbmdMYXllciBmcm9tICdkZWNrZ2wtbGF5ZXJzLzNkLWJ1aWxkaW5nLWxheWVyLzNkLWJ1aWxkaW5nLWxheWVyJztcbmltcG9ydCB7XG4gIEZJTFRFUl9UWVBFUyxcbiAgR0VPQ09ERVJfTEFZRVJfSUQsXG4gIE1BU0tfTEFZRVJfSUQsXG4gIFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FXG59IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuaW1wb3J0IHtvYnNlcnZlRGltZW5zaW9ucywgdW5vYnNlcnZlRGltZW5zaW9uc30gZnJvbSAnLi4vdXRpbHMvb2JzZXJ2ZS1kaW1lbnNpb25zJztcbmltcG9ydCB7TE9DQUxFX0NPREVTfSBmcm9tICdsb2NhbGl6YXRpb24vbG9jYWxlcyc7XG5cbi8vIDNEIHRpbGVzXG5pbXBvcnQge19UZXJyYWluRXh0ZW5zaW9uIGFzIFRlcnJhaW5FeHRlbnNpb259IGZyb20gJ0BkZWNrLmdsL2V4dGVuc2lvbnMnO1xuaW1wb3J0IHtUaWxlM0RMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5cbmNvbnN0IEdPT0dMRV9NQVBTX0FQSV9LRVkgPSAnQUl6YVN5Q3B2UXltYzV3alNZSXN4eTNSVjF3aWRNM3AzaDc4Q0FrJztcblxuY29uc3QgdGlsZXMzZCA9IG5ldyBUaWxlM0RMYXllcih7XG4gIGlkOiAnZ29vZ2xlLTNkLXRpbGVzJyxcbiAgZGF0YTogJ2h0dHBzOi8vdGlsZS5nb29nbGVhcGlzLmNvbS92MS8zZHRpbGVzL3Jvb3QuanNvbicsXG4gIG9uVGlsZXNldExvYWQ6IHRpbGVzZXQzZCA9PiB7XG4gICAgLy8gdGlsZXNldDNkLm9wdGlvbnMubWF4aW11bVNjcmVlblNwYWNlRXJyb3IgPSA0O1xuICAgIHRpbGVzZXQzZC5fb25UaWxlTG9hZEVycm9yID0gKCkgPT4ge307XG4gIH0sXG4gIGxvYWRPcHRpb25zOiB7XG4gICAgZmV0Y2g6IHtoZWFkZXJzOiB7J1gtR09PRy1BUEktS0VZJzogR09PR0xFX01BUFNfQVBJX0tFWX19XG4gIH0sXG4gIC8vIEB0cy1pZ25vcmVcbiAgb3BlcmF0aW9uOiAndGVycmFpbitkcmF3JyAvLyBSZXF1aXJlZCB0byBlbmFibGUgZHJhcGluZyBvZiBvdGhlciBsYXllcnNcbn0pO1xuY29uc3QgdGVycmFpbkV4dGVuc2lvbiA9IG5ldyBUZXJyYWluRXh0ZW5zaW9uKCk7XG5cbi8vIFBlcmZvcm1hbmNlIGRlYnVnZ2luZ1xuaW1wb3J0IHtjcmVhdGVUcmFja2VyLCBjcmVhdGVMYXllclVwZGF0ZVRyYWNrZXIsIHJlbmRlclBlcmZvcm1hbmNlU3RhdHN9IGZyb20gJy4vcGVyZm9ybWFuY2UnO1xuY29uc3QgdHJhY2tlcnMgPSB7fTtcbmNvbnN0IFBFUkZfREVCVUcgPSB3aW5kb3c/LmxvY2F0aW9uPy5zZWFyY2g/LmluY2x1ZGVzKCdQRVJGX0RFQlVHJyk7XG5pZiAoUEVSRl9ERUJVRykge1xuICB0cmFja2Vycy5kcmF3Q291bnQgPSBjcmVhdGVUcmFja2VyKCdkcmF3cycpO1xuICB0cmFja2Vycy52aWV3cG9ydENoYW5nZUNvdW50ID0gY3JlYXRlVHJhY2tlcigndmlld3BvcnQgY2hhbmdlcycpO1xuICBjcmVhdGVMYXllclVwZGF0ZVRyYWNrZXIoJ3N0YXRlIHVwZGF0ZXMnLCBbTGF5ZXIsIFRpbGVMYXllcl0pO1xufVxuXG4vKiogQHR5cGUge3tba2V5OiBzdHJpbmddOiBSZWFjdC5DU1NQcm9wZXJ0aWVzfX0gKi9cbmNvbnN0IE1BUF9TVFlMRSA9IHtcbiAgY29udGFpbmVyOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJ1xuICB9LFxuICB0b3A6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6ICcwcHgnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnXG4gIH1cbn07XG5cbmNvbnN0IE1BUEJPWEdMX1NUWUxFX1VQREFURSA9ICdzdHlsZS5sb2FkJztcbmNvbnN0IE1BUEJPWEdMX1JFTkRFUiA9ICdyZW5kZXInO1xuY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDA7XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGlvbiA9ICgpID0+IChcbiAgPFN0eWxlZEF0dHJidXRpb24+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbG9nb1wiPlxuICAgICAgQmFzZW1hcCBieTpcbiAgICAgIDxhXG4gICAgICAgIGNsYXNzTmFtZT1cIm1hcGJveGdsLWN0cmwtbG9nb1wiXG4gICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9cIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTWFwYm94IGxvZ29cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1saW5rXCI+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly9rZXBsZXIuZ2wvcG9saWN5L1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkga2VwbGVyLmdsIHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vYWJvdXQvbWFwcy9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIE1hcGJveCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkgT3BlblN0cmVldE1hcCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL21hcC1mZWVkYmFjay9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIDxzdHJvbmc+SW1wcm92ZSB0aGlzIG1hcDwvc3Ryb25nPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L1N0eWxlZEF0dHJidXRpb24+XG4pO1xuXG5NYXBDb250YWluZXJGYWN0b3J5LmRlcHMgPSBbTWFwUG9wb3ZlckZhY3RvcnksIE1hcENvbnRyb2xGYWN0b3J5LCBFZGl0b3JGYWN0b3J5XTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFwQ29udGFpbmVyRmFjdG9yeShNYXBQb3BvdmVyLCBNYXBDb250cm9sLCBFZGl0b3IpIHtcbiAgY2xhc3MgTWFwQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgLy8gcmVxdWlyZWRcbiAgICAgIGRhdGFzZXRzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaW50ZXJhY3Rpb25Db25maWc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyQmxlbmRpbmc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyT3JkZXI6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllckRhdGE6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllcnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBmaWx0ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcENvbnRyb2xzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdHlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIG1hcGJveEFwaVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHZpc1N0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGVBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICB1aVN0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gICAgICAvLyBvcHRpb25hbFxuICAgICAgcHJpbWFyeTogUHJvcFR5cGVzLmJvb2wsIC8vIHByaW1hcnkgb25lIHdpbGwgYmUgcmVwb3J0aW5nIGl0cyBzaXplIHRvIGFwcFN0YXRlXG4gICAgICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBpc0V4cG9ydDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBjbGlja2VkOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaG92ZXJJbmZvOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgbWFwTGF5ZXJzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgb25NYXBUb2dnbGVMYXllcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbk1hcFN0eWxlTG9hZGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIG9uTWFwUmVuZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGdldE1hcGJveFJlZjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIHBvcHVwU2V0dGluZ3M6IFByb3BUeXBlcy5vYmplY3RcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIE1hcENvbXBvbmVudDogTWFwYm94R0xNYXAsXG4gICAgICBkZWNrR2xQcm9wczoge30sXG4gICAgICBpbmRleDogMCxcbiAgICAgIHByaW1hcnk6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IHtcbiAgICAgICAgLy8gW2xheWVycy5pZF06IG1hcGJveExheWVyQ29uZmlnXG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9kZWNrID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZiA9IGNyZWF0ZVJlZigpO1xuXG4gICAgICAvLyBSZW5kZXIgbGltaXRpbmcgbWVjaGFuaXNtXG4gICAgICB0aGlzLl9oYXNSZW5kZXJlZCA9IGNyZWF0ZVJlZigpO1xuICAgICAgdGhpcy5fbW91c2VQb3NpdGlvbiA9IGNyZWF0ZVJlZigpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb250ZXh0TG9zdDogZmFsc2V9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIC8vIHVuYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgaWYgKHRoaXMuX21hcCkge1xuICAgICAgICB0aGlzLl9tYXAub2ZmKE1BUEJPWEdMX1NUWUxFX1VQREFURSk7XG4gICAgICAgIHRoaXMuX21hcC5vZmYoTUFQQk9YR0xfUkVOREVSKTtcbiAgICAgIH1cbiAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpc0V4cG9ydH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHByaW1hcnkpIHtcbiAgICAgICAgY29uc3Qge21hcFN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIWlzRXhwb3J0ICYmIGRpbWVuc2lvbnMgJiYgZGltZW5zaW9ucy53aWR0aCA+IDAgJiYgZGltZW5zaW9ucy5oZWlnaHQgPiAwKSB7XG4gICAgICAgICAgbWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcChkaW1lbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBsYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVycztcbiAgICBsYXllckRhdGFTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVyRGF0YTtcbiAgICBtYXBMYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcExheWVycztcbiAgICBsYXllck9yZGVyU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllck9yZGVyO1xuICAgIHBvcHVwU2V0dGluZ3NTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnBvcHVwU2V0dGluZ3M7XG5cbiAgICBsYXllcnNUb1JlbmRlclNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwTGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLnBvcHVwU2V0dGluZ3NTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNUb1JlbmRlclxuICAgICk7XG4gICAgbGF5ZXJzRm9yRGVja1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNGb3JEZWNrXG4gICAgKTtcbiAgICBmaWx0ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5maWx0ZXJzO1xuICAgIHBvbHlnb25GaWx0ZXJzID0gY3JlYXRlU2VsZWN0b3IodGhpcy5maWx0ZXJzU2VsZWN0b3IsIGZpbHRlcnMgPT5cbiAgICAgIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi50eXBlID09PSBGSUxURVJfVFlQRVMucG9seWdvbilcbiAgICApO1xuXG4gICAgbWFwYm94TGF5ZXJzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllck9yZGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IsXG4gICAgICBnZW5lcmF0ZU1hcGJveExheWVyc1xuICAgICk7XG5cbiAgICAvKiBjb21wb25lbnQgcHJpdmF0ZSBmdW5jdGlvbnMgKi9cbiAgICBfb25DbG9zZU1hcFBvcG92ZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5vbkxheWVyQ2xpY2sobnVsbCk7XG4gICAgfTtcblxuICAgIF9vbkxheWVyU2V0RG9tYWluID0gKGlkeCwgY29sb3JEb21haW4pID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLmxheWVyQ29uZmlnQ2hhbmdlKHRoaXMucHJvcHMubGF5ZXJzW2lkeF0sIHtcbiAgICAgICAgY29sb3JEb21haW5cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfaGFuZGxlTWFwVG9nZ2xlTGF5ZXIgPSBsYXllcklkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleDogbWFwSW5kZXggPSAwLCB2aXNTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgIHZpc1N0YXRlQWN0aW9ucy50b2dnbGVMYXllckZvck1hcChtYXBJbmRleCwgbGF5ZXJJZCk7XG4gICAgfTtcblxuICAgIF9vbk1hcGJveFN0eWxlVXBkYXRlID0gKCkgPT4ge1xuICAgICAgLy8gZm9yY2UgcmVmcmVzaCBtYXBib3hnbCBsYXllcnNcbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7fTtcbiAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQodGhpcy5fbWFwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3NldE1hcGJveE1hcCA9IG1hcGJveCA9PiB7XG4gICAgICBpZiAoIXRoaXMuX21hcCAmJiBtYXBib3gpIHtcbiAgICAgICAgdGhpcy5fbWFwID0gbWFwYm94LmdldE1hcCgpO1xuICAgICAgICAvLyBpIG5vdGljZWQgaW4gY2VydGFpbiBjb250ZXh0IHdlIGRvbid0IGFjY2VzcyB0aGUgYWN0dWFsIG1hcCBlbGVtZW50XG4gICAgICAgIGlmICghdGhpcy5fbWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1NUWUxFX1VQREFURSwgdGhpcy5fb25NYXBib3hTdHlsZVVwZGF0ZSk7XG5cbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1JFTkRFUiwgKCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbk1hcFJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFJlbmRlcih0aGlzLl9tYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmdldE1hcGJveFJlZikge1xuICAgICAgICAvLyBUaGUgcGFyZW50IGNvbXBvbmVudCBjYW4gZ2FpbiBhY2Nlc3MgdG8gb3VyIE1hcGJveEdsTWFwIGJ5XG4gICAgICAgIC8vIHByb3ZpZGluZyB0aGlzIGNhbGxiYWNrLiBOb3RlIHRoYXQgJ21hcGJveCcgd2lsbCBiZSBudWxsIHdoZW4gdGhlXG4gICAgICAgIC8vIHJlZiBpcyB1bnNldCAoZS5nLiB3aGVuIGEgc3BsaXQgbWFwIGlzIGNsb3NlZCkuXG4gICAgICAgIHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKG1hcGJveCwgdGhpcy5wcm9wcy5pbmRleCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vbkRlY2tJbml0aWFsaXplZChnbCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCh0aGlzLl9kZWNrLCBnbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX29uQmVmb3JlUmVuZGVyID0gKHtnbH0pID0+IHtcbiAgICAgIHNldExheWVyQmxlbmRpbmcoZ2wsIHRoaXMucHJvcHMubGF5ZXJCbGVuZGluZyk7XG4gICAgfTtcblxuICAgIF9vbkRlY2tFcnJvciA9IChlcnJvciwgbGF5ZXIpID0+IHtcbiAgICAgIGlmIChlcnJvcj8ubWVzc2FnZSA9PT0gJ1dlYkdMIGNvbnRleHQgaXMgbG9zdCcpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29udGV4dExvc3Q6IHRydWV9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3IgaW4gZGVjay5nbDogJHtlcnJvcj8ubWVzc2FnZX0gaW4gJHtsYXllcj8uaWR9YDtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbklkID0gYCR7bGF5ZXI/LmlkfS0ke2Vycm9yPy5tZXNzYWdlfWA7XG5cbiAgICAgIC8vIFRocm90dGxlIGVycm9yIG5vdGlmaWNhdGlvbnMsIGFzIFJlYWN0IGRvZXNuJ3QgbGlrZSB0b28gbWFueSBzdGF0ZSBjaGFuZ2VzIGZyb20gaGVyZS5cbiAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWQgPSB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkIHx8IHt9O1xuICAgICAgY29uc3QgbGFzdFNob3duID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF07XG4gICAgICBpZiAoIWxhc3RTaG93biB8fCBsYXN0U2hvd24gPCBEYXRlLm5vdygpIC0gVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUpIHtcbiAgICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF0gPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgZXJyb3Igbm90aWZpY2F0aW9uIG9yIHVwZGF0ZSBleGlzdGluZyBvbmUgd2l0aCBzYW1lIGlkLlxuICAgICAgICAvLyBVcGRhdGUgaXMgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIG9yZGVyIG9mIG5vdGlmaWNhdGlvbnMgYXMgdGhleSBwcm9iYWJseSBhcmUgZ29pbmcgdG8gXCJqdW1wXCIgYmFzZWQgb24gb3JkZXIgb2YgZXJyb3JzLlxuICAgICAgICBjb25zdCB7dWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgdWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uKFxuICAgICAgICAgIGVycm9yTm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGlkOiBub3RpZmljYXRpb25JZFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb25zICovXG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcFBvcG92ZXIobGF5ZXJzVG9SZW5kZXIpIHtcbiAgICAgIC8vIE92ZXJyaWRlbiBpbiBCdWlsZGVyOiBmZWF0dXJlcy9idWlsZGVyL3VpL0tlcGxlckdsL01hcENvbnRhaW5lci9NYXBDb250YWluZXIudHN4XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICAgIF9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpIHtcbiAgICAgIGNvbnN0IHNjcmVlbkNvb3JkID0gIXZpZXdwb3J0IHx8ICFsbmdMYXQgPyBudWxsIDogdmlld3BvcnQucHJvamVjdChsbmdMYXQpO1xuICAgICAgcmV0dXJuIHNjcmVlbkNvb3JkICYmIHt4OiBzY3JlZW5Db29yZFswXSwgeTogc2NyZWVuQ29vcmRbMV19O1xuICAgIH1cblxuICAgIF9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICBsYXllck9yZGVyLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFza1BvbHlnb25cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgdHJhY2tlcnMuZHJhd0NvdW50Py5pbmNyZW1lbnQoKTtcblxuICAgICAgLy8gaW5pdGlhbGlzZSBsYXllcnMgZnJvbSBwcm9wcyBpZiBleGlzdHNcbiAgICAgIGxldCBkZWNrR2xMYXllcnMgPSB0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnMgfHwgW107XG5cbiAgICAgIC8vIHdhaXQgdW50aWwgZGF0YSBpcyByZWFkeSBiZWZvcmUgcmVuZGVyIGRhdGEgbGF5ZXJzXG4gICAgICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gbGFzdCBsYXllciByZW5kZXIgZmlyc3RcbiAgICAgICAgY29uc3QgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAuZmlsdGVyKGlkeCA9PiBsYXllcnNGb3JEZWNrW2xheWVyc1tpZHhdLmlkXSlcbiAgICAgICAgICAucmVkdWNlKChvdmVybGF5cywgaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXllckNhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgICAgb25TZXRMYXllckRvbWFpbjogdmFsID0+IHRoaXMuX29uTGF5ZXJTZXREb21haW4oaWR4LCB2YWwpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIodGhpcy5wcm9wcywgbGF5ZXJDYWxsYmFja3MsIGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICAgICAgfSwgW10pO1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KGRhdGFMYXllcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5kZWNrR2xQcm9wcz8ubGF5ZXJzT25Ub3ApIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzID0gZGVja0dsTGF5ZXJzLmNvbmNhdCh0aGlzLnByb3BzLmRlY2tHbFByb3BzLmxheWVyc09uVG9wKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hc2tQb2x5Z29uKSB7XG4gICAgICAgIGRlY2tHbExheWVycy5wdXNoKFxuICAgICAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgICAgICBpZDogTUFTS19MQVlFUl9JRCxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogT1BFUkFUSU9OLk1BU0ssXG4gICAgICAgICAgICBkYXRhOiBbbWFza1BvbHlnb25dLFxuICAgICAgICAgICAgZGF0YUNvbXBhcmF0b3I6IChkYXRhLCBvbGREYXRhKSA9PiBkYXRhWzBdID09PSBvbGREYXRhWzBdLFxuICAgICAgICAgICAgZ2V0UG9seWdvbjogZCA9PiBkLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NSwgMjU1XVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBTdHlsZS52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hcFN0eWxlLnN0eWxlVHlwZSA9PT0gJ3RpbGVzM2QnKSB7XG4gICAgICAgIC8vIEluamVjdCAzRCB0aWxlcyB3aGVuIGJsYW5rIEdvb2dsZSBtYXAgc3R5bGUgZGV0ZWN0ZWRcbiAgICAgICAgZGVja0dsTGF5ZXJzID0gZGVja0dsTGF5ZXJzXG4gICAgICAgICAgLmZpbHRlcihsID0+IEJvb2xlYW4obCAmJiBsLmNsb25lKSlcbiAgICAgICAgICAubWFwKGwgPT4gbC5jbG9uZSh7ZXh0ZW5zaW9uczogWy4uLmwucHJvcHMuZXh0ZW5zaW9ucywgdGVycmFpbkV4dGVuc2lvbl19KSk7XG4gICAgICAgIGRlY2tHbExheWVycy5wdXNoKHRpbGVzM2QuY2xvbmUoKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIExpbWl0IHJlbmRlcnNcbiAgICAgIGNvbnN0IGhhc1JlbmRlcmVkID0gdGhpcy5faGFzUmVuZGVyZWQ7XG4gICAgICBjb25zdCByZXNldEhhc1JlbmRlcmVkID0gKCkgPT4gKGhhc1JlbmRlcmVkLmN1cnJlbnQgPSBmYWxzZSk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RGVja0dMXG4gICAgICAgICAgY29udHJvbGxlcj17dHJ1ZX1cbiAgICAgICAgICB7Li4udGhpcy5wcm9wcy5kZWNrR2xQcm9wc31cbiAgICAgICAgICB2aWV3U3RhdGU9e21hcFN0YXRlfVxuICAgICAgICAgIG9uVmlld1N0YXRlQ2hhbmdlPXsoe3ZpZXdTdGF0ZX0pID0+IHtcbiAgICAgICAgICAgIC8vIExpbWl0IHVwZGF0ZXMgKHByZXZlbnRzIGZyZWV6ZXMgd2hlbiBkZXYgdG9vbHMgb3BlbilcbiAgICAgICAgICAgIGlmICghaGFzUmVuZGVyZWQuY3VycmVudCAmJiB2aWV3U3RhdGUud2lkdGggPiAxICYmIHZpZXdTdGF0ZS5oZWlnaHQgPiAxKSB7XG4gICAgICAgICAgICAgIGhhc1JlbmRlcmVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLl9vblZpZXdwb3J0Q2hhbmdlKHZpZXdTdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBpZD1cImRlZmF1bHQtZGVja2dsLW92ZXJsYXlcIlxuICAgICAgICAgIGxheWVycz17ZGVja0dsTGF5ZXJzfVxuICAgICAgICAgIG9uQmVmb3JlUmVuZGVyPXtvcHRzID0+IHtcbiAgICAgICAgICAgIHJlc2V0SGFzUmVuZGVyZWQoKTtcbiAgICAgICAgICAgIHRoaXMuX29uQmVmb3JlUmVuZGVyKG9wdHMpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ib3Zlcj17dmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJIb3Zlcn1cbiAgICAgICAgICBvbkNsaWNrPXt2aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrfVxuICAgICAgICAgIG9uRXJyb3I9e2UgPT4ge1xuICAgICAgICAgICAgZGVidWdnZXI7XG4gICAgICAgICAgICB0aGlzLl9vbkRlY2tFcnJvcihlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIHJlZj17Y29tcCA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcCAmJiBjb21wLmRlY2sgJiYgY29tcC5kZWNrICE9PSB0aGlzLl9kZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2RlY2sgPSBjb21wLmRlY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbldlYkdMSW5pdGlhbGl6ZWQ9e2dsID0+IHRoaXMuX29uRGVja0luaXRpYWxpemVkKGdsKX1cbiAgICAgICAgICBsYXllckZpbHRlcj17KHtsYXllciwgdmlld3BvcnR9KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGlzTmFOKGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1pbikgfHxcbiAgICAgICAgICAgICAgaXNOYU4obGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbT8ubWF4KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY3VycmVudFpvb21SYW5nZSA9IE1hdGgucm91bmQobWFwU3RhdGUuem9vbSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20ubWluIDw9IGN1cnJlbnRab29tUmFuZ2UgJiZcbiAgICAgICAgICAgICAgbGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbS5tYXggPj0gY3VycmVudFpvb21SYW5nZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlTWFwYm94TGF5ZXJzKCkge1xuICAgICAgY29uc3QgbWFwYm94TGF5ZXJzID0gdGhpcy5tYXBib3hMYXllcnNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGlmICghT2JqZWN0LmtleXMobWFwYm94TGF5ZXJzKS5sZW5ndGggJiYgIU9iamVjdC5rZXlzKHRoaXMucHJldmlvdXNMYXllcnMpLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZU1hcGJveExheWVycyh0aGlzLl9tYXAsIG1hcGJveExheWVycywgdGhpcy5wcmV2aW91c0xheWVycyk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSBtYXBib3hMYXllcnM7XG4gICAgfVxuXG4gICAgX3JlbmRlck1hcGJveE92ZXJsYXlzKCkge1xuICAgICAgaWYgKHRoaXMuX21hcCAmJiB0aGlzLl9tYXAuaXNTdHlsZUxvYWRlZCgpKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9vblZpZXdwb3J0Q2hhbmdlID0gdmlld1N0YXRlID0+IHtcbiAgICAgIHRyYWNrZXJzLnZpZXdwb3J0Q2hhbmdlQ291bnQ/LmluY3JlbWVudCgpO1xuICAgICAgY29uc3Qge3dpZHRoLCBoZWlnaHQsIC4uLnJlc3RWaWV3U3RhdGV9ID0gdmlld1N0YXRlO1xuICAgICAgY29uc3Qge3ByaW1hcnksIGlzRXhwb3J0fSA9IHRoaXMucHJvcHM7XG4gICAgICAvLyByZWFjdC1tYXAtZ2wgc2VuZHMgMCwwIGRpbWVuc2lvbnMgZHVyaW5nIGluaXRpYWxpemF0aW9uXG4gICAgICAvLyBhZnRlciB3ZSBoYXZlIHJlY2VpdmVkIHByb3BlciBkaW1lbnNpb25zIGZyb20gb2JzZXJ2ZURpbWVuc2lvbnNcbiAgICAgIGNvbnN0IG5leHQgPSB7XG4gICAgICAgIC4uLih3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCA/IHZpZXdTdGF0ZSA6IHJlc3RWaWV3U3RhdGUpLFxuICAgICAgICAvLyBlbmFibGluZyB0cmFuc2l0aW9uIGluIHR3byBtYXBzIG1heSBsZWFkIHRvIGVuZGxlc3MgdXBkYXRlIGxvb3BzXG4gICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogcHJpbWFyeSA/IFRSQU5TSVRJT05fRFVSQVRJT04gOiAwXG4gICAgICB9O1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uVmlld1N0YXRlQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UobmV4dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFeHBvcnQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5tYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwKG5leHQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdG9nZ2xlTWFwQ29udHJvbCA9IHBhbmVsSWQgPT4ge1xuICAgICAgY29uc3Qge2luZGV4LCB1aVN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuXG4gICAgICB1aVN0YXRlQWN0aW9ucy50b2dnbGVNYXBDb250cm9sKHBhbmVsSWQsIGluZGV4KTtcbiAgICB9O1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXAoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbWFwU3RhdGVBY3Rpb25zLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIE1hcENvbXBvbmVudCxcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcENvbnRyb2xzLFxuICAgICAgICBpc0V4cG9ydCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgcHJpbWFyeVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJzRm9yRGVjayA9IHRoaXMubGF5ZXJzRm9yRGVja1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBtYXBQcm9wcyA9IHtcbiAgICAgICAgLi4ubWFwU3RhdGUsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIHRyYW5zZm9ybVJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGlzRWRpdCA9IChtYXBDb250cm9scy5tYXBEcmF3IHx8IHt9KS5hY3RpdmU7XG5cbiAgICAgIGNvbnN0IGhhc0dlb2NvZGVyTGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IEdFT0NPREVSX0xBWUVSX0lEKTtcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBCb29sZWFuKG1hcFN0YXRlLmlzU3BsaXQpO1xuICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHRoaXMuX21vdXNlUG9zaXRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPE1hcENvbnRyb2xcbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXM9e09iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e3ByaW1hcnl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgc2NhbGU9e21hcFN0YXRlLnNjYWxlIHx8IDF9XG4gICAgICAgICAgICB0b3A9e2ludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgPyA1MiA6IDB9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVQZXJzcGVjdGl2ZT17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVBlcnNwZWN0aXZlfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwfVxuICAgICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17dGhpcy5faGFuZGxlTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2w9e3RoaXMuX3RvZ2dsZU1hcENvbnRyb2x9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TWFwQ29tcG9uZW50XG4gICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICBrZXk9XCJib3R0b21cIlxuICAgICAgICAgICAgcmVmPXt0aGlzLl9zZXRNYXBib3hNYXB9XG4gICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUuYm90dG9tTWFwU3R5bGV9XG4gICAgICAgICAgICBnZXRDdXJzb3I9e3RoaXMucHJvcHMuaG92ZXJJbmZvID8gKCkgPT4gJ3BvaW50ZXInIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgb25Nb3VzZU1vdmU9e2V2dCA9PiB7XG4gICAgICAgICAgICAgIC8vIFNlbmRpbmcgbW91c2UgbW92ZSB1cGRhdGVzIHZpYSBSZWR1eCBpcyBleHBlbnNpdmUuIFN0b3JlXG4gICAgICAgICAgICAgIC8vIGxvY2FsbHkgYW5kIHJlbHkgb24gZGVjay5nbCB0byBkcml2ZSByZW5kZXIgdXBkYXRlc1xuICAgICAgICAgICAgICAvLyBTZWUgQnVpbGRlcjogZmVhdHVyZXMvYnVpbGRlci91aS9LZXBsZXJHbC9NYXBDb250YWluZXIvTWFwQ29udGFpbmVyLnRzeFxuICAgICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmN1cnJlbnQgPSB7bW91c2VQb3NpdGlvbjogZXZ0LnBvaW50fTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge1BFUkZfREVCVUcgJiYgcmVuZGVyUGVyZm9ybWFuY2VTdGF0cygpfVxuICAgICAgICAgICAge3RoaXMuX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spfVxuICAgICAgICAgICAge3RoaXMuX3JlbmRlck1hcGJveE92ZXJsYXlzKCl9XG4gICAgICAgICAgICA8RWRpdG9yXG4gICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgZmlsdGVycz17dGhpcy5wb2x5Z29uRmlsdGVycyh0aGlzLnByb3BzKX1cbiAgICAgICAgICAgICAgaXNFbmFibGVkPXtpc0VkaXR9XG4gICAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgICBsYXllcnNUb1JlbmRlcj17bGF5ZXJzVG9SZW5kZXJ9XG4gICAgICAgICAgICAgIG9uRGVsZXRlRmVhdHVyZT17dmlzU3RhdGVBY3Rpb25zLmRlbGV0ZUZlYXR1cmV9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXt2aXNTdGF0ZUFjdGlvbnMuc2V0U2VsZWN0ZWRGZWF0dXJlfVxuICAgICAgICAgICAgICBvblVwZGF0ZT17dmlzU3RhdGVBY3Rpb25zLnNldEZlYXR1cmVzfVxuICAgICAgICAgICAgICBvblRvZ2dsZVBvbHlnb25GaWx0ZXI9e3Zpc1N0YXRlQWN0aW9ucy5zZXRQb2x5Z29uRmlsdGVyTGF5ZXJ9XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogaXNFZGl0ID8gJ2FsbCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogZWRpdG9yLnZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTWFwQ29tcG9uZW50PlxuICAgICAgICAgIHttYXBTdHlsZS50b3BNYXBTdHlsZSB8fCBoYXNHZW9jb2RlckxheWVyID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17TUFQX1NUWUxFLnRvcH0+XG4gICAgICAgICAgICAgIDxNYXBDb21wb25lbnQgey4uLm1hcFByb3BzfSBrZXk9XCJ0b3BcIiBtYXBTdHlsZT17bWFwU3R5bGUudG9wTWFwU3R5bGV9PlxuICAgICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheSh7W0dFT0NPREVSX0xBWUVSX0lEXTogdHJ1ZX0pfVxuICAgICAgICAgICAgICA8L01hcENvbXBvbmVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBQb3BvdmVyKGxheWVyc1RvUmVuZGVyKX1cbiAgICAgICAgICB7IWlzU3BsaXQgfHwgaW5kZXggPT09IDEgPyA8QXR0cmlidXRpb24gLz4gOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge21hcFN0YXRlLCBtYXBTdHlsZX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTWFwQ29udGFpbmVyIHJlZj17dGhpcy5fcmVmfSBzdHlsZT17TUFQX1NUWUxFLmNvbnRhaW5lcn0gZ2xvYmU9e21hcFN0YXRlLmdsb2JlfT5cbiAgICAgICAgICB7bWFwU3R5bGUuYm90dG9tTWFwU3R5bGUgJiYgdGhpcy5fcmVuZGVyTWFwKCl9XG4gICAgICAgIDwvU3R5bGVkTWFwQ29udGFpbmVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBNYXBDb250YWluZXIuZGlzcGxheU5hbWUgPSAnTWFwQ29udGFpbmVyJztcblxuICByZXR1cm4gTWFwQ29udGFpbmVyO1xufVxuIl19
773
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiR09PR0xFX01BUFNfQVBJX0tFWSIsImgiLCJ0aWxlczNkIiwiVGlsZTNETGF5ZXIiLCJpZCIsImRhdGEiLCJvblRpbGVzZXRMb2FkIiwidGlsZXNldDNkIiwiX29uVGlsZUxvYWRFcnJvciIsIm9wdGlvbnMiLCJvblRyYXZlcnNhbENvbXBsZXRlIiwic2VsZWN0ZWRUaWxlcyIsIm1heERlcHRoIiwiZGVwdGgiLCJmaWx0ZXJlZCIsImZpbHRlciIsInQiLCJsZW5ndGgiLCJtYXAiLCJib3VuZGluZ0JveCIsInJlZHVjZSIsImEiLCJuIiwibG9hZE9wdGlvbnMiLCJmZXRjaCIsImhlYWRlcnMiLCJvcGVyYXRpb24iLCJ0ZXJyYWluRXh0ZW5zaW9uIiwiVGVycmFpbkV4dGVuc2lvbiIsInRyYWNrZXJzIiwiUEVSRl9ERUJVRyIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwiaW5jbHVkZXMiLCJkcmF3Q291bnQiLCJ2aWV3cG9ydENoYW5nZUNvdW50IiwiTGF5ZXIiLCJUaWxlTGF5ZXIiLCJNQVBfU1RZTEUiLCJjb250YWluZXIiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsInBvaW50ZXJFdmVudHMiLCJNQVBCT1hHTF9TVFlMRV9VUERBVEUiLCJNQVBCT1hHTF9SRU5ERVIiLCJUUkFOU0lUSU9OX0RVUkFUSU9OIiwiQXR0cmlidXRpb24iLCJNYXBDb250YWluZXJGYWN0b3J5IiwiZGVwcyIsIk1hcFBvcG92ZXJGYWN0b3J5IiwiTWFwQ29udHJvbEZhY3RvcnkiLCJFZGl0b3JGYWN0b3J5IiwiTWFwUG9wb3ZlciIsIk1hcENvbnRyb2wiLCJFZGl0b3IiLCJNYXBDb250YWluZXIiLCJwcm9wcyIsImRpbWVuc2lvbnMiLCJwcmltYXJ5IiwiaXNFeHBvcnQiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJsYXllcnMiLCJsYXllckRhdGEiLCJtYXBMYXllcnMiLCJsYXllck9yZGVyIiwicG9wdXBTZXR0aW5ncyIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInBvcHVwU2V0dGluZ3NTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImYiLCJ0eXBlIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsImxheWVyT3JkZXJTZWxlY3RvciIsImxheWVyc1RvUmVuZGVyU2VsZWN0b3IiLCJnZW5lcmF0ZU1hcGJveExheWVycyIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsImlkeCIsImNvbG9yRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJsYXllcklkIiwiaW5kZXgiLCJtYXBJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwIiwicHJldmlvdXNMYXllcnMiLCJfdXBkYXRlTWFwYm94TGF5ZXJzIiwib25NYXBTdHlsZUxvYWRlZCIsIl9tYXAiLCJtYXBib3giLCJnZXRNYXAiLCJvbiIsIl9vbk1hcGJveFN0eWxlVXBkYXRlIiwib25NYXBSZW5kZXIiLCJnZXRNYXBib3hSZWYiLCJnbCIsImxheWVyQmxlbmRpbmciLCJlcnJvciIsImxheWVyIiwibWVzc2FnZSIsInNldFN0YXRlIiwiY29udGV4dExvc3QiLCJlcnJvck1lc3NhZ2UiLCJub3RpZmljYXRpb25JZCIsIl9kZWNrR0xFcnJvcnNFbGFwc2VkIiwibGFzdFNob3duIiwiRGF0ZSIsIm5vdyIsIlRIUk9UVExFX05PVElGSUNBVElPTl9USU1FIiwidWlTdGF0ZUFjdGlvbnMiLCJhZGROb3RpZmljYXRpb24iLCJ2aWV3U3RhdGUiLCJpbmNyZW1lbnQiLCJyZXN0Vmlld1N0YXRlIiwibmV4dCIsInRyYW5zaXRpb25EdXJhdGlvbiIsIm9uVmlld1N0YXRlQ2hhbmdlIiwicGFuZWxJZCIsInRvZ2dsZU1hcENvbnRyb2wiLCJfZGVjayIsIl9yZWYiLCJfaGFzUmVuZGVyZWQiLCJfbW91c2VQb3NpdGlvbiIsImN1cnJlbnQiLCJfaGFuZGxlUmVzaXplIiwic3RhdGUiLCJvZmYiLCJvbkRlY2tJbml0aWFsaXplZCIsImxheWVyc1RvUmVuZGVyIiwidmlld3BvcnQiLCJsbmdMYXQiLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJ4IiwieSIsImxheWVyc0ZvckRlY2siLCJtYXBTdGF0ZSIsIm1hcFN0eWxlIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJtYXNrUG9seWdvbiIsImRlY2tHbExheWVycyIsImRlY2tHbFByb3BzIiwiZGF0YUxheWVycyIsInNsaWNlIiwicmV2ZXJzZSIsIm92ZXJsYXlzIiwibGF5ZXJDYWxsYmFja3MiLCJvblNldExheWVyRG9tYWluIiwidmFsIiwiX29uTGF5ZXJTZXREb21haW4iLCJsYXllck92ZXJsYXkiLCJjb25jYXQiLCJsYXllcnNPblRvcCIsInB1c2giLCJTb2xpZFBvbHlnb25MYXllciIsIk1BU0tfTEFZRVJfSUQiLCJPUEVSQVRJT04iLCJNQVNLIiwiZGF0YUNvbXBhcmF0b3IiLCJvbGREYXRhIiwiZ2V0UG9seWdvbiIsImQiLCJnZXRGaWxsQ29sb3IiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJUaHJlZURCdWlsZGluZ0xheWVyIiwidGhyZWVEQnVpbGRpbmdDb2xvciIsInVwZGF0ZVRyaWdnZXJzIiwic3R5bGVUeXBlIiwiT2JqZWN0IiwidmFsdWVzIiwibCIsIkJvb2xlYW4iLCJjbG9uZSIsImV4dGVuc2lvbnMiLCJoYXNSZW5kZXJlZCIsInJlc2V0SGFzUmVuZGVyZWQiLCJfb25WaWV3cG9ydENoYW5nZSIsIm9wdHMiLCJfb25CZWZvcmVSZW5kZXIiLCJvbkxheWVySG92ZXIiLCJlIiwiX29uRGVja0Vycm9yIiwiY29tcCIsImRlY2siLCJfb25EZWNrSW5pdGlhbGl6ZWQiLCJpc05hTiIsInZpc2liaWxpdHlCeVpvb20iLCJtaW4iLCJtYXgiLCJjdXJyZW50Wm9vbVJhbmdlIiwiTWF0aCIsInJvdW5kIiwiem9vbSIsIm1hcGJveExheWVycyIsIm1hcGJveExheWVyc1NlbGVjdG9yIiwia2V5cyIsImlzU3R5bGVMb2FkZWQiLCJNYXBDb21wb25lbnQiLCJkYXRhc2V0cyIsIm1hcENvbnRyb2xzIiwibG9jYWxlIiwiaW50ZXJhY3Rpb25Db25maWciLCJlZGl0b3IiLCJsYXllcnNGb3JEZWNrU2VsZWN0b3IiLCJtYXBQcm9wcyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsInRyYW5zZm9ybVJlcXVlc3QiLCJpc0VkaXQiLCJtYXBEcmF3IiwiYWN0aXZlIiwiaGFzR2VvY29kZXJMYXllciIsImZpbmQiLCJHRU9DT0RFUl9MQVlFUl9JRCIsImlzU3BsaXQiLCJtb3VzZVBvc2l0aW9uIiwiTE9DQUxFX0NPREVTIiwiZHJhZ1JvdGF0ZSIsInJlYWRPbmx5Iiwic2NhbGUiLCJnZW9jb2RlciIsImVuYWJsZWQiLCJ0b2dnbGVQZXJzcGVjdGl2ZSIsInRvZ2dsZVNwbGl0TWFwIiwiX2hhbmRsZU1hcFRvZ2dsZUxheWVyIiwiX3RvZ2dsZU1hcENvbnRyb2wiLCJzZXRFZGl0b3JNb2RlIiwic2V0TG9jYWxlIiwidG9nZ2xlRWRpdG9yVmlzaWJpbGl0eSIsIl9zZXRNYXBib3hNYXAiLCJib3R0b21NYXBTdHlsZSIsImhvdmVySW5mbyIsInVuZGVmaW5lZCIsImV2dCIsInBvaW50IiwiX3JlbmRlckRlY2tPdmVybGF5IiwiX3JlbmRlck1hcGJveE92ZXJsYXlzIiwicG9seWdvbkZpbHRlcnMiLCJkZWxldGVGZWF0dXJlIiwic2V0U2VsZWN0ZWRGZWF0dXJlIiwic2V0RmVhdHVyZXMiLCJzZXRQb2x5Z29uRmlsdGVyTGF5ZXIiLCJ2aXNpYmxlIiwidG9wTWFwU3R5bGUiLCJfcmVuZGVyTWFwUG9wb3ZlciIsImdsb2JlIiwiX3JlbmRlck1hcCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJhcnJheU9mIiwiYW55IiwiYm9vbCIsImNsaWNrZWQiLCJvbk1hcFRvZ2dsZUxheWVyIiwiZnVuYyIsIm51bWJlciIsIk1hcGJveEdMTWFwIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUVBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQU9BOztBQUNBOztBQUdBOztBQXFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbENBLElBQU1BLG1CQUFtQixHQUFHLHlDQUE1QjtBQUVBLElBQUlDLENBQUMsR0FBRyxDQUFSO0FBQ0EsSUFBTUMsT0FBTyxHQUFHLElBQUlDLHNCQUFKLENBQWdCO0FBQzlCQyxFQUFBQSxFQUFFLEVBQUUsaUJBRDBCO0FBRTlCQyxFQUFBQSxJQUFJLEVBQUUsa0RBRndCO0FBRzlCQyxFQUFBQSxhQUFhLEVBQUUsdUJBQUFDLFNBQVMsRUFBSTtBQUMxQjtBQUNBQSxJQUFBQSxTQUFTLENBQUNDLGdCQUFWLEdBQTZCLFlBQU0sQ0FBRSxDQUFyQzs7QUFDQUQsSUFBQUEsU0FBUyxDQUFDRSxPQUFWLENBQWtCQyxtQkFBbEIsR0FBd0MsVUFBQUMsYUFBYSxFQUFJO0FBQ3ZEO0FBQ0EsVUFBSUMsUUFBUSxHQUFHLENBQWY7O0FBRnVELGlEQUdqQ0QsYUFIaUM7QUFBQTs7QUFBQTtBQUd2RCw0REFBcUM7QUFBQSxjQUF6QkUsS0FBeUIsZUFBekJBLEtBQXlCO0FBQ25DLGNBQUlBLEtBQUssR0FBR0QsUUFBWixFQUFzQkEsUUFBUSxHQUFHQyxLQUFYO0FBQ3ZCO0FBTHNEO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBTXZELFVBQU1DLFFBQVEsR0FBR0gsYUFBYSxDQUFDSSxNQUFkLENBQXFCLFVBQUFDLENBQUM7QUFBQSxlQUFJQSxDQUFDLENBQUNILEtBQUYsR0FBVUQsUUFBUSxHQUFHLENBQXpCO0FB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Ly9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8vIGxpYnJhcmllc1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgTWFwYm94R0xNYXAgZnJvbSAncmVhY3QtbWFwLWdsJztcbmltcG9ydCBEZWNrR0wgZnJvbSAnQGRlY2suZ2wvcmVhY3QnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IHtPUEVSQVRJT04sIExheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U29saWRQb2x5Z29uTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge1RpbGVMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5pbXBvcnQge2Vycm9yTm90aWZpY2F0aW9ufSBmcm9tICd1dGlscy9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IE1hcFBvcG92ZXJGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvbWFwL21hcC1wb3BvdmVyJztcbmltcG9ydCBNYXBDb250cm9sRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL21hcC9tYXAtY29udHJvbCc7XG5pbXBvcnQge1N0eWxlZE1hcENvbnRhaW5lciwgU3R5bGVkQXR0cmJ1dGlvbn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgRWRpdG9yRmFjdG9yeSBmcm9tICcuL2VkaXRvci9lZGl0b3InO1xuXG4vLyB1dGlsc1xuaW1wb3J0IHtnZW5lcmF0ZU1hcGJveExheWVycywgdXBkYXRlTWFwYm94TGF5ZXJzfSBmcm9tICdsYXllcnMvbWFwYm94LXV0aWxzJztcbmltcG9ydCB7c2V0TGF5ZXJCbGVuZGluZ30gZnJvbSAndXRpbHMvZ2wtdXRpbHMnO1xuaW1wb3J0IHt0cmFuc2Zvcm1SZXF1ZXN0fSBmcm9tICd1dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LXV0aWxzJztcbmltcG9ydCB7cmVuZGVyRGVja0dsTGF5ZXIsIHByZXBhcmVMYXllcnNUb1JlbmRlciwgcHJlcGFyZUxheWVyc0ZvckRlY2t9IGZyb20gJ3V0aWxzL2xheWVyLXV0aWxzJztcblxuLy8gZGVmYXVsdC1zZXR0aW5nc1xuaW1wb3J0IFRocmVlREJ1aWxkaW5nTGF5ZXIgZnJvbSAnZGVja2dsLWxheWVycy8zZC1idWlsZGluZy1sYXllci8zZC1idWlsZGluZy1sYXllcic7XG5pbXBvcnQge1xuICBGSUxURVJfVFlQRVMsXG4gIEdFT0NPREVSX0xBWUVSX0lELFxuICBNQVNLX0xBWUVSX0lELFxuICBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRVxufSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmltcG9ydCB7b2JzZXJ2ZURpbWVuc2lvbnMsIHVub2JzZXJ2ZURpbWVuc2lvbnN9IGZyb20gJy4uL3V0aWxzL29ic2VydmUtZGltZW5zaW9ucyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnbG9jYWxpemF0aW9uL2xvY2FsZXMnO1xuXG4vLyAzRCB0aWxlc1xuaW1wb3J0IHtfVGVycmFpbkV4dGVuc2lvbiBhcyBUZXJyYWluRXh0ZW5zaW9ufSBmcm9tICdAZGVjay5nbC9leHRlbnNpb25zJztcbmltcG9ydCB7VGlsZTNETGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuXG5jb25zdCBHT09HTEVfTUFQU19BUElfS0VZID0gJ0FJemFTeUNwdlF5bWM1d2pTWUlzeHkzUlYxd2lkTTNwM2g3OENBayc7XG5cbmxldCBoID0gMDtcbmNvbnN0IHRpbGVzM2QgPSBuZXcgVGlsZTNETGF5ZXIoe1xuICBpZDogJ2dvb2dsZS0zZC10aWxlcycsXG4gIGRhdGE6ICdodHRwczovL3RpbGUuZ29vZ2xlYXBpcy5jb20vdjEvM2R0aWxlcy9yb290Lmpzb24nLFxuICBvblRpbGVzZXRMb2FkOiB0aWxlc2V0M2QgPT4ge1xuICAgIC8vIHRpbGVzZXQzZC5vcHRpb25zLm1heGltdW1TY3JlZW5TcGFjZUVycm9yID0gNDtcbiAgICB0aWxlc2V0M2QuX29uVGlsZUxvYWRFcnJvciA9ICgpID0+IHt9O1xuICAgIHRpbGVzZXQzZC5vcHRpb25zLm9uVHJhdmVyc2FsQ29tcGxldGUgPSBzZWxlY3RlZFRpbGVzID0+IHtcbiAgICAgIC8vIERvIG5vdCBzaG93IHRpbGVzIHdoaWNoIGFyZSBtYW55IGxheWVycyB0b28gbG93IGluIHJlc29sdXRpb24gKGF2b2lkcyBhcnRpZmFjdHMpXG4gICAgICBsZXQgbWF4RGVwdGggPSAwO1xuICAgICAgZm9yIChjb25zdCB7ZGVwdGh9IG9mIHNlbGVjdGVkVGlsZXMpIHtcbiAgICAgICAgaWYgKGRlcHRoID4gbWF4RGVwdGgpIG1heERlcHRoID0gZGVwdGg7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IHNlbGVjdGVkVGlsZXMuZmlsdGVyKHQgPT4gdC5kZXB0aCA+IG1heERlcHRoIC0gNCk7XG5cbiAgICAgIC8vIEhhY2t5IHdheSB0byBvYnRhaW4gaGVpZ2h0IGFib3ZlIHNlYSBsZXZlbCB0byBpbXByb3ZlIGNvbnRyb2xzXG4gICAgICBpZiAoZmlsdGVyZWQubGVuZ3RoKSB7XG4gICAgICAgIGggPSBmaWx0ZXJlZC5tYXAodCA9PiB0LmJvdW5kaW5nQm94WzBdWzJdKS5yZWR1Y2UoKGEsIG4pID0+IGEgKyBuKSAvIGZpbHRlcmVkLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgIH07XG4gIH0sXG4gIGxvYWRPcHRpb25zOiB7XG4gICAgZmV0Y2g6IHtoZWFkZXJzOiB7J1gtR09PRy1BUEktS0VZJzogR09PR0xFX01BUFNfQVBJX0tFWX19XG4gIH0sXG4gIC8vIEB0cy1pZ25vcmVcbiAgb3BlcmF0aW9uOiAndGVycmFpbitkcmF3JyAvLyBSZXF1aXJlZCB0byBlbmFibGUgZHJhcGluZyBvZiBvdGhlciBsYXllcnNcbn0pO1xuY29uc3QgdGVycmFpbkV4dGVuc2lvbiA9IG5ldyBUZXJyYWluRXh0ZW5zaW9uKCk7XG5cbi8vIFBlcmZvcm1hbmNlIGRlYnVnZ2luZ1xuaW1wb3J0IHtjcmVhdGVUcmFja2VyLCBjcmVhdGVMYXllclVwZGF0ZVRyYWNrZXIsIHJlbmRlclBlcmZvcm1hbmNlU3RhdHN9IGZyb20gJy4vcGVyZm9ybWFuY2UnO1xuY29uc3QgdHJhY2tlcnMgPSB7fTtcbmNvbnN0IFBFUkZfREVCVUcgPSB3aW5kb3c/LmxvY2F0aW9uPy5zZWFyY2g/LmluY2x1ZGVzKCdQRVJGX0RFQlVHJyk7XG5pZiAoUEVSRl9ERUJVRykge1xuICB0cmFja2Vycy5kcmF3Q291bnQgPSBjcmVhdGVUcmFja2VyKCdkcmF3cycpO1xuICB0cmFja2Vycy52aWV3cG9ydENoYW5nZUNvdW50ID0gY3JlYXRlVHJhY2tlcigndmlld3BvcnQgY2hhbmdlcycpO1xuICBjcmVhdGVMYXllclVwZGF0ZVRyYWNrZXIoJ3N0YXRlIHVwZGF0ZXMnLCBbTGF5ZXIsIFRpbGVMYXllcl0pO1xufVxuXG4vKiogQHR5cGUge3tba2V5OiBzdHJpbmddOiBSZWFjdC5DU1NQcm9wZXJ0aWVzfX0gKi9cbmNvbnN0IE1BUF9TVFlMRSA9IHtcbiAgY29udGFpbmVyOiB7XG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJ1xuICB9LFxuICB0b3A6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6ICcwcHgnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnXG4gIH1cbn07XG5cbmNvbnN0IE1BUEJPWEdMX1NUWUxFX1VQREFURSA9ICdzdHlsZS5sb2FkJztcbmNvbnN0IE1BUEJPWEdMX1JFTkRFUiA9ICdyZW5kZXInO1xuY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDA7XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGlvbiA9ICgpID0+IChcbiAgPFN0eWxlZEF0dHJidXRpb24+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbG9nb1wiPlxuICAgICAgQmFzZW1hcCBieTpcbiAgICAgIDxhXG4gICAgICAgIGNsYXNzTmFtZT1cIm1hcGJveGdsLWN0cmwtbG9nb1wiXG4gICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9cIlxuICAgICAgICBhcmlhLWxhYmVsPVwiTWFwYm94IGxvZ29cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1saW5rXCI+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly9rZXBsZXIuZ2wvcG9saWN5L1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkga2VwbGVyLmdsIHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vYWJvdXQvbWFwcy9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIE1hcGJveCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkgT3BlblN0cmVldE1hcCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL21hcC1mZWVkYmFjay9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIDxzdHJvbmc+SW1wcm92ZSB0aGlzIG1hcDwvc3Ryb25nPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L1N0eWxlZEF0dHJidXRpb24+XG4pO1xuXG5NYXBDb250YWluZXJGYWN0b3J5LmRlcHMgPSBbTWFwUG9wb3ZlckZhY3RvcnksIE1hcENvbnRyb2xGYWN0b3J5LCBFZGl0b3JGYWN0b3J5XTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFwQ29udGFpbmVyRmFjdG9yeShNYXBQb3BvdmVyLCBNYXBDb250cm9sLCBFZGl0b3IpIHtcbiAgY2xhc3MgTWFwQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgLy8gcmVxdWlyZWRcbiAgICAgIGRhdGFzZXRzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaW50ZXJhY3Rpb25Db25maWc6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyQmxlbmRpbmc6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyT3JkZXI6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllckRhdGE6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBsYXllcnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBmaWx0ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcENvbnRyb2xzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdHlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIG1hcGJveEFwaVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHZpc1N0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGVBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICB1aVN0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gICAgICAvLyBvcHRpb25hbFxuICAgICAgcHJpbWFyeTogUHJvcFR5cGVzLmJvb2wsIC8vIHByaW1hcnkgb25lIHdpbGwgYmUgcmVwb3J0aW5nIGl0cyBzaXplIHRvIGFwcFN0YXRlXG4gICAgICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBpc0V4cG9ydDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBjbGlja2VkOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaG92ZXJJbmZvOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgbWFwTGF5ZXJzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgb25NYXBUb2dnbGVMYXllcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbk1hcFN0eWxlTG9hZGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIG9uTWFwUmVuZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGdldE1hcGJveFJlZjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIHBvcHVwU2V0dGluZ3M6IFByb3BUeXBlcy5vYmplY3RcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIE1hcENvbXBvbmVudDogTWFwYm94R0xNYXAsXG4gICAgICBkZWNrR2xQcm9wczoge30sXG4gICAgICBpbmRleDogMCxcbiAgICAgIHByaW1hcnk6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IHtcbiAgICAgICAgLy8gW2xheWVycy5pZF06IG1hcGJveExheWVyQ29uZmlnXG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9kZWNrID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZiA9IGNyZWF0ZVJlZigpO1xuXG4gICAgICAvLyBSZW5kZXIgbGltaXRpbmcgbWVjaGFuaXNtXG4gICAgICB0aGlzLl9oYXNSZW5kZXJlZCA9IGNyZWF0ZVJlZigpO1xuICAgICAgdGhpcy5fbW91c2VQb3NpdGlvbiA9IGNyZWF0ZVJlZigpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb250ZXh0TG9zdDogZmFsc2V9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIC8vIHVuYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgaWYgKHRoaXMuX21hcCkge1xuICAgICAgICB0aGlzLl9tYXAub2ZmKE1BUEJPWEdMX1NUWUxFX1VQREFURSk7XG4gICAgICAgIHRoaXMuX21hcC5vZmYoTUFQQk9YR0xfUkVOREVSKTtcbiAgICAgIH1cbiAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpc0V4cG9ydH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHByaW1hcnkpIHtcbiAgICAgICAgY29uc3Qge21hcFN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIWlzRXhwb3J0ICYmIGRpbWVuc2lvbnMgJiYgZGltZW5zaW9ucy53aWR0aCA+IDAgJiYgZGltZW5zaW9ucy5oZWlnaHQgPiAwKSB7XG4gICAgICAgICAgbWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcChkaW1lbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBsYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVycztcbiAgICBsYXllckRhdGFTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVyRGF0YTtcbiAgICBtYXBMYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcExheWVycztcbiAgICBsYXllck9yZGVyU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllck9yZGVyO1xuICAgIHBvcHVwU2V0dGluZ3NTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnBvcHVwU2V0dGluZ3M7XG5cbiAgICBsYXllcnNUb1JlbmRlclNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwTGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLnBvcHVwU2V0dGluZ3NTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNUb1JlbmRlclxuICAgICk7XG4gICAgbGF5ZXJzRm9yRGVja1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNGb3JEZWNrXG4gICAgKTtcbiAgICBmaWx0ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5maWx0ZXJzO1xuICAgIHBvbHlnb25GaWx0ZXJzID0gY3JlYXRlU2VsZWN0b3IodGhpcy5maWx0ZXJzU2VsZWN0b3IsIGZpbHRlcnMgPT5cbiAgICAgIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi50eXBlID09PSBGSUxURVJfVFlQRVMucG9seWdvbilcbiAgICApO1xuXG4gICAgbWFwYm94TGF5ZXJzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllck9yZGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IsXG4gICAgICBnZW5lcmF0ZU1hcGJveExheWVyc1xuICAgICk7XG5cbiAgICAvKiBjb21wb25lbnQgcHJpdmF0ZSBmdW5jdGlvbnMgKi9cbiAgICBfb25DbG9zZU1hcFBvcG92ZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5vbkxheWVyQ2xpY2sobnVsbCk7XG4gICAgfTtcblxuICAgIF9vbkxheWVyU2V0RG9tYWluID0gKGlkeCwgY29sb3JEb21haW4pID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLmxheWVyQ29uZmlnQ2hhbmdlKHRoaXMucHJvcHMubGF5ZXJzW2lkeF0sIHtcbiAgICAgICAgY29sb3JEb21haW5cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfaGFuZGxlTWFwVG9nZ2xlTGF5ZXIgPSBsYXllcklkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleDogbWFwSW5kZXggPSAwLCB2aXNTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgIHZpc1N0YXRlQWN0aW9ucy50b2dnbGVMYXllckZvck1hcChtYXBJbmRleCwgbGF5ZXJJZCk7XG4gICAgfTtcblxuICAgIF9vbk1hcGJveFN0eWxlVXBkYXRlID0gKCkgPT4ge1xuICAgICAgLy8gZm9yY2UgcmVmcmVzaCBtYXBib3hnbCBsYXllcnNcbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7fTtcbiAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQodGhpcy5fbWFwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3NldE1hcGJveE1hcCA9IG1hcGJveCA9PiB7XG4gICAgICBpZiAoIXRoaXMuX21hcCAmJiBtYXBib3gpIHtcbiAgICAgICAgdGhpcy5fbWFwID0gbWFwYm94LmdldE1hcCgpO1xuICAgICAgICAvLyBpIG5vdGljZWQgaW4gY2VydGFpbiBjb250ZXh0IHdlIGRvbid0IGFjY2VzcyB0aGUgYWN0dWFsIG1hcCBlbGVtZW50XG4gICAgICAgIGlmICghdGhpcy5fbWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1NUWUxFX1VQREFURSwgdGhpcy5fb25NYXBib3hTdHlsZVVwZGF0ZSk7XG5cbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1JFTkRFUiwgKCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbk1hcFJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFJlbmRlcih0aGlzLl9tYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmdldE1hcGJveFJlZikge1xuICAgICAgICAvLyBUaGUgcGFyZW50IGNvbXBvbmVudCBjYW4gZ2FpbiBhY2Nlc3MgdG8gb3VyIE1hcGJveEdsTWFwIGJ5XG4gICAgICAgIC8vIHByb3ZpZGluZyB0aGlzIGNhbGxiYWNrLiBOb3RlIHRoYXQgJ21hcGJveCcgd2lsbCBiZSBudWxsIHdoZW4gdGhlXG4gICAgICAgIC8vIHJlZiBpcyB1bnNldCAoZS5nLiB3aGVuIGEgc3BsaXQgbWFwIGlzIGNsb3NlZCkuXG4gICAgICAgIHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKG1hcGJveCwgdGhpcy5wcm9wcy5pbmRleCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vbkRlY2tJbml0aWFsaXplZChnbCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCh0aGlzLl9kZWNrLCBnbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX29uQmVmb3JlUmVuZGVyID0gKHtnbH0pID0+IHtcbiAgICAgIHNldExheWVyQmxlbmRpbmcoZ2wsIHRoaXMucHJvcHMubGF5ZXJCbGVuZGluZyk7XG4gICAgfTtcblxuICAgIF9vbkRlY2tFcnJvciA9IChlcnJvciwgbGF5ZXIpID0+IHtcbiAgICAgIGlmIChlcnJvcj8ubWVzc2FnZSA9PT0gJ1dlYkdMIGNvbnRleHQgaXMgbG9zdCcpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29udGV4dExvc3Q6IHRydWV9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3IgaW4gZGVjay5nbDogJHtlcnJvcj8ubWVzc2FnZX0gaW4gJHtsYXllcj8uaWR9YDtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbklkID0gYCR7bGF5ZXI/LmlkfS0ke2Vycm9yPy5tZXNzYWdlfWA7XG5cbiAgICAgIC8vIFRocm90dGxlIGVycm9yIG5vdGlmaWNhdGlvbnMsIGFzIFJlYWN0IGRvZXNuJ3QgbGlrZSB0b28gbWFueSBzdGF0ZSBjaGFuZ2VzIGZyb20gaGVyZS5cbiAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWQgPSB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkIHx8IHt9O1xuICAgICAgY29uc3QgbGFzdFNob3duID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF07XG4gICAgICBpZiAoIWxhc3RTaG93biB8fCBsYXN0U2hvd24gPCBEYXRlLm5vdygpIC0gVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUpIHtcbiAgICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF0gPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgZXJyb3Igbm90aWZpY2F0aW9uIG9yIHVwZGF0ZSBleGlzdGluZyBvbmUgd2l0aCBzYW1lIGlkLlxuICAgICAgICAvLyBVcGRhdGUgaXMgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIG9yZGVyIG9mIG5vdGlmaWNhdGlvbnMgYXMgdGhleSBwcm9iYWJseSBhcmUgZ29pbmcgdG8gXCJqdW1wXCIgYmFzZWQgb24gb3JkZXIgb2YgZXJyb3JzLlxuICAgICAgICBjb25zdCB7dWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgdWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uKFxuICAgICAgICAgIGVycm9yTm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGlkOiBub3RpZmljYXRpb25JZFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb25zICovXG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcFBvcG92ZXIobGF5ZXJzVG9SZW5kZXIpIHtcbiAgICAgIC8vIE92ZXJyaWRlbiBpbiBCdWlsZGVyOiBmZWF0dXJlcy9idWlsZGVyL3VpL0tlcGxlckdsL01hcENvbnRhaW5lci9NYXBDb250YWluZXIudHN4XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICAgIF9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpIHtcbiAgICAgIGNvbnN0IHNjcmVlbkNvb3JkID0gIXZpZXdwb3J0IHx8ICFsbmdMYXQgPyBudWxsIDogdmlld3BvcnQucHJvamVjdChsbmdMYXQpO1xuICAgICAgcmV0dXJuIHNjcmVlbkNvb3JkICYmIHt4OiBzY3JlZW5Db29yZFswXSwgeTogc2NyZWVuQ29vcmRbMV19O1xuICAgIH1cblxuICAgIF9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICBsYXllck9yZGVyLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFza1BvbHlnb25cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgdHJhY2tlcnMuZHJhd0NvdW50Py5pbmNyZW1lbnQoKTtcblxuICAgICAgLy8gaW5pdGlhbGlzZSBsYXllcnMgZnJvbSBwcm9wcyBpZiBleGlzdHNcbiAgICAgIGxldCBkZWNrR2xMYXllcnMgPSB0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnMgfHwgW107XG5cbiAgICAgIC8vIHdhaXQgdW50aWwgZGF0YSBpcyByZWFkeSBiZWZvcmUgcmVuZGVyIGRhdGEgbGF5ZXJzXG4gICAgICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gbGFzdCBsYXllciByZW5kZXIgZmlyc3RcbiAgICAgICAgY29uc3QgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAuZmlsdGVyKGlkeCA9PiBsYXllcnNGb3JEZWNrW2xheWVyc1tpZHhdLmlkXSlcbiAgICAgICAgICAucmVkdWNlKChvdmVybGF5cywgaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXllckNhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgICAgb25TZXRMYXllckRvbWFpbjogdmFsID0+IHRoaXMuX29uTGF5ZXJTZXREb21haW4oaWR4LCB2YWwpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIodGhpcy5wcm9wcywgbGF5ZXJDYWxsYmFja3MsIGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICAgICAgfSwgW10pO1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KGRhdGFMYXllcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5kZWNrR2xQcm9wcz8ubGF5ZXJzT25Ub3ApIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzID0gZGVja0dsTGF5ZXJzLmNvbmNhdCh0aGlzLnByb3BzLmRlY2tHbFByb3BzLmxheWVyc09uVG9wKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hc2tQb2x5Z29uKSB7XG4gICAgICAgIGRlY2tHbExheWVycy5wdXNoKFxuICAgICAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgICAgICBpZDogTUFTS19MQVlFUl9JRCxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogT1BFUkFUSU9OLk1BU0ssXG4gICAgICAgICAgICBkYXRhOiBbbWFza1BvbHlnb25dLFxuICAgICAgICAgICAgZGF0YUNvbXBhcmF0b3I6IChkYXRhLCBvbGREYXRhKSA9PiBkYXRhWzBdID09PSBvbGREYXRhWzBdLFxuICAgICAgICAgICAgZ2V0UG9seWdvbjogZCA9PiBkLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NSwgMjU1XVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBTdHlsZS52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBtYXBTdHlsZS5zdHlsZVR5cGUgPT09ICd2b3lhZ2VyJyAmJlxuICAgICAgICBPYmplY3QudmFsdWVzKG1hcFN0eWxlLnZpc2libGVMYXllckdyb3VwcykuZmlsdGVyKHggPT4geCkubGVuZ3RoID09PSAwXG4gICAgICApIHtcbiAgICAgICAgLy8gSW5qZWN0IDNEIHRpbGVzIHdoZW4gbWFwIHN0eWxlIGlzIFZveWFnZXIgd2l0aG91dCBsYXllcnMgKGhhY2sgdW50aWwgVUkgaXMgYnVpbHQpXG4gICAgICAgIGRlY2tHbExheWVycyA9IGRlY2tHbExheWVyc1xuICAgICAgICAgIC5maWx0ZXIobCA9PiBCb29sZWFuKGwgJiYgbC5jbG9uZSkpXG4gICAgICAgICAgLm1hcChsID0+IGwuY2xvbmUoe2V4dGVuc2lvbnM6IFsuLi5sLnByb3BzLmV4dGVuc2lvbnMsIHRlcnJhaW5FeHRlbnNpb25dfSkpO1xuICAgICAgICBkZWNrR2xMYXllcnMucHVzaCh0aWxlczNkLmNsb25lKCkpO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW1pdCByZW5kZXJzXG4gICAgICBjb25zdCBoYXNSZW5kZXJlZCA9IHRoaXMuX2hhc1JlbmRlcmVkO1xuICAgICAgY29uc3QgcmVzZXRIYXNSZW5kZXJlZCA9ICgpID0+IChoYXNSZW5kZXJlZC5jdXJyZW50ID0gZmFsc2UpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERlY2tHTFxuICAgICAgICAgIGNvbnRyb2xsZXI9e3RydWV9XG4gICAgICAgICAgey4uLnRoaXMucHJvcHMuZGVja0dsUHJvcHN9XG4gICAgICAgICAgdmlld1N0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICBvblZpZXdTdGF0ZUNoYW5nZT17KHt2aWV3U3RhdGV9KSA9PiB7XG4gICAgICAgICAgICAvLyBMaW1pdCB1cGRhdGVzIChwcmV2ZW50cyBmcmVlemVzIHdoZW4gZGV2IHRvb2xzIG9wZW4pXG4gICAgICAgICAgICBpZiAoIWhhc1JlbmRlcmVkLmN1cnJlbnQgJiYgdmlld1N0YXRlLndpZHRoID4gMSAmJiB2aWV3U3RhdGUuaGVpZ2h0ID4gMSkge1xuICAgICAgICAgICAgICBoYXNSZW5kZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5fb25WaWV3cG9ydENoYW5nZSh2aWV3U3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgaWQ9XCJkZWZhdWx0LWRlY2tnbC1vdmVybGF5XCJcbiAgICAgICAgICBsYXllcnM9e2RlY2tHbExheWVyc31cbiAgICAgICAgICBvbkJlZm9yZVJlbmRlcj17b3B0cyA9PiB7XG4gICAgICAgICAgICByZXNldEhhc1JlbmRlcmVkKCk7XG4gICAgICAgICAgICB0aGlzLl9vbkJlZm9yZVJlbmRlcihvcHRzKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uSG92ZXI9e3Zpc1N0YXRlQWN0aW9ucy5vbkxheWVySG92ZXJ9XG4gICAgICAgICAgb25DbGljaz17dmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJDbGlja31cbiAgICAgICAgICBvbkVycm9yPXtlID0+IHtcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xuICAgICAgICAgICAgdGhpcy5fb25EZWNrRXJyb3IoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e2NvbXAgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbXAgJiYgY29tcC5kZWNrICYmIGNvbXAuZGVjayAhPT0gdGhpcy5fZGVjaykge1xuICAgICAgICAgICAgICB0aGlzLl9kZWNrID0gY29tcC5kZWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25XZWJHTEluaXRpYWxpemVkPXtnbCA9PiB0aGlzLl9vbkRlY2tJbml0aWFsaXplZChnbCl9XG4gICAgICAgICAgbGF5ZXJGaWx0ZXI9eyh7bGF5ZXIsIHZpZXdwb3J0fSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBpc05hTihsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tPy5taW4pIHx8XG4gICAgICAgICAgICAgIGlzTmFOKGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1heClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRab29tUmFuZ2UgPSBNYXRoLnJvdW5kKG1hcFN0YXRlLnpvb20pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tLm1pbiA8PSBjdXJyZW50Wm9vbVJhbmdlICYmXG4gICAgICAgICAgICAgIGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20ubWF4ID49IGN1cnJlbnRab29tUmFuZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3VwZGF0ZU1hcGJveExheWVycygpIHtcbiAgICAgIGNvbnN0IG1hcGJveExheWVycyA9IHRoaXMubWFwYm94TGF5ZXJzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKG1hcGJveExheWVycykubGVuZ3RoICYmICFPYmplY3Qua2V5cyh0aGlzLnByZXZpb3VzTGF5ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVNYXBib3hMYXllcnModGhpcy5fbWFwLCBtYXBib3hMYXllcnMsIHRoaXMucHJldmlvdXNMYXllcnMpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0gbWFwYm94TGF5ZXJzO1xuICAgIH1cblxuICAgIF9yZW5kZXJNYXBib3hPdmVybGF5cygpIHtcbiAgICAgIGlmICh0aGlzLl9tYXAgJiYgdGhpcy5fbWFwLmlzU3R5bGVMb2FkZWQoKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfb25WaWV3cG9ydENoYW5nZSA9IHZpZXdTdGF0ZSA9PiB7XG4gICAgICB0cmFja2Vycy52aWV3cG9ydENoYW5nZUNvdW50Py5pbmNyZW1lbnQoKTtcbiAgICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0LCAuLi5yZXN0Vmlld1N0YXRlfSA9IHZpZXdTdGF0ZTtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpc0V4cG9ydH0gPSB0aGlzLnByb3BzO1xuICAgICAgLy8gcmVhY3QtbWFwLWdsIHNlbmRzIDAsMCBkaW1lbnNpb25zIGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgICAgLy8gYWZ0ZXIgd2UgaGF2ZSByZWNlaXZlZCBwcm9wZXIgZGltZW5zaW9ucyBmcm9tIG9ic2VydmVEaW1lbnNpb25zXG4gICAgICBjb25zdCBuZXh0ID0ge1xuICAgICAgICAuLi4od2lkdGggPiAwICYmIGhlaWdodCA+IDAgPyB2aWV3U3RhdGUgOiByZXN0Vmlld1N0YXRlKSxcbiAgICAgICAgLy8gT25seSB3b3JrcyB3aXRoIE1hcGJveCBiYXNlbWFwIChHb29nbGUgaWdub3JlcyB0aGlzKVxuICAgICAgICBwb3NpdGlvbjogWzAsIDAsIGhdLFxuICAgICAgICAvLyBlbmFibGluZyB0cmFuc2l0aW9uIGluIHR3byBtYXBzIG1heSBsZWFkIHRvIGVuZGxlc3MgdXBkYXRlIGxvb3BzXG4gICAgICAgIHRyYW5zaXRpb25EdXJhdGlvbjogcHJpbWFyeSA/IFRSQU5TSVRJT05fRFVSQVRJT04gOiAwXG4gICAgICB9O1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uVmlld1N0YXRlQ2hhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UobmV4dCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFeHBvcnQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5tYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwKG5leHQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdG9nZ2xlTWFwQ29udHJvbCA9IHBhbmVsSWQgPT4ge1xuICAgICAgY29uc3Qge2luZGV4LCB1aVN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuXG4gICAgICB1aVN0YXRlQWN0aW9ucy50b2dnbGVNYXBDb250cm9sKHBhbmVsSWQsIGluZGV4KTtcbiAgICB9O1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXAoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbWFwU3RhdGVBY3Rpb25zLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIE1hcENvbXBvbmVudCxcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcENvbnRyb2xzLFxuICAgICAgICBpc0V4cG9ydCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgcHJpbWFyeVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJzRm9yRGVjayA9IHRoaXMubGF5ZXJzRm9yRGVja1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBtYXBQcm9wcyA9IHtcbiAgICAgICAgLi4ubWFwU3RhdGUsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIHRyYW5zZm9ybVJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGlzRWRpdCA9IChtYXBDb250cm9scy5tYXBEcmF3IHx8IHt9KS5hY3RpdmU7XG5cbiAgICAgIGNvbnN0IGhhc0dlb2NvZGVyTGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IEdFT0NPREVSX0xBWUVSX0lEKTtcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBCb29sZWFuKG1hcFN0YXRlLmlzU3BsaXQpO1xuICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHRoaXMuX21vdXNlUG9zaXRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPE1hcENvbnRyb2xcbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXM9e09iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e3ByaW1hcnl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgc2NhbGU9e21hcFN0YXRlLnNjYWxlIHx8IDF9XG4gICAgICAgICAgICB0b3A9e2ludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgPyA1MiA6IDB9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVQZXJzcGVjdGl2ZT17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVBlcnNwZWN0aXZlfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwfVxuICAgICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17dGhpcy5faGFuZGxlTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2w9e3RoaXMuX3RvZ2dsZU1hcENvbnRyb2x9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TWFwQ29tcG9uZW50XG4gICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICBrZXk9XCJib3R0b21cIlxuICAgICAgICAgICAgcmVmPXt0aGlzLl9zZXRNYXBib3hNYXB9XG4gICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUuYm90dG9tTWFwU3R5bGV9XG4gICAgICAgICAgICBnZXRDdXJzb3I9e3RoaXMucHJvcHMuaG92ZXJJbmZvID8gKCkgPT4gJ3BvaW50ZXInIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgb25Nb3VzZU1vdmU9e2V2dCA9PiB7XG4gICAgICAgICAgICAgIC8vIFNlbmRpbmcgbW91c2UgbW92ZSB1cGRhdGVzIHZpYSBSZWR1eCBpcyBleHBlbnNpdmUuIFN0b3JlXG4gICAgICAgICAgICAgIC8vIGxvY2FsbHkgYW5kIHJlbHkgb24gZGVjay5nbCB0byBkcml2ZSByZW5kZXIgdXBkYXRlc1xuICAgICAgICAgICAgICAvLyBTZWUgQnVpbGRlcjogZmVhdHVyZXMvYnVpbGRlci91aS9LZXBsZXJHbC9NYXBDb250YWluZXIvTWFwQ29udGFpbmVyLnRzeFxuICAgICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmN1cnJlbnQgPSB7bW91c2VQb3NpdGlvbjogZXZ0LnBvaW50fTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge1BFUkZfREVCVUcgJiYgcmVuZGVyUGVyZm9ybWFuY2VTdGF0cygpfVxuICAgICAgICAgICAge3RoaXMuX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spfVxuICAgICAgICAgICAge3RoaXMuX3JlbmRlck1hcGJveE92ZXJsYXlzKCl9XG4gICAgICAgICAgICA8RWRpdG9yXG4gICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgZmlsdGVycz17dGhpcy5wb2x5Z29uRmlsdGVycyh0aGlzLnByb3BzKX1cbiAgICAgICAgICAgICAgaXNFbmFibGVkPXtpc0VkaXR9XG4gICAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgICBsYXllcnNUb1JlbmRlcj17bGF5ZXJzVG9SZW5kZXJ9XG4gICAgICAgICAgICAgIG9uRGVsZXRlRmVhdHVyZT17dmlzU3RhdGVBY3Rpb25zLmRlbGV0ZUZlYXR1cmV9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXt2aXNTdGF0ZUFjdGlvbnMuc2V0U2VsZWN0ZWRGZWF0dXJlfVxuICAgICAgICAgICAgICBvblVwZGF0ZT17dmlzU3RhdGVBY3Rpb25zLnNldEZlYXR1cmVzfVxuICAgICAgICAgICAgICBvblRvZ2dsZVBvbHlnb25GaWx0ZXI9e3Zpc1N0YXRlQWN0aW9ucy5zZXRQb2x5Z29uRmlsdGVyTGF5ZXJ9XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogaXNFZGl0ID8gJ2FsbCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogZWRpdG9yLnZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvTWFwQ29tcG9uZW50PlxuICAgICAgICAgIHttYXBTdHlsZS50b3BNYXBTdHlsZSB8fCBoYXNHZW9jb2RlckxheWVyID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17TUFQX1NUWUxFLnRvcH0+XG4gICAgICAgICAgICAgIDxNYXBDb21wb25lbnQgey4uLm1hcFByb3BzfSBrZXk9XCJ0b3BcIiBtYXBTdHlsZT17bWFwU3R5bGUudG9wTWFwU3R5bGV9PlxuICAgICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheSh7W0dFT0NPREVSX0xBWUVSX0lEXTogdHJ1ZX0pfVxuICAgICAgICAgICAgICA8L01hcENvbXBvbmVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBQb3BvdmVyKGxheWVyc1RvUmVuZGVyKX1cbiAgICAgICAgICB7IWlzU3BsaXQgfHwgaW5kZXggPT09IDEgPyA8QXR0cmlidXRpb24gLz4gOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge21hcFN0YXRlLCBtYXBTdHlsZX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTWFwQ29udGFpbmVyIHJlZj17dGhpcy5fcmVmfSBzdHlsZT17TUFQX1NUWUxFLmNvbnRhaW5lcn0gZ2xvYmU9e21hcFN0YXRlLmdsb2JlfT5cbiAgICAgICAgICB7bWFwU3R5bGUuYm90dG9tTWFwU3R5bGUgJiYgdGhpcy5fcmVuZGVyTWFwKCl9XG4gICAgICAgIDwvU3R5bGVkTWFwQ29udGFpbmVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBNYXBDb250YWluZXIuZGlzcGxheU5hbWUgPSAnTWFwQ29udGFpbmVyJztcblxuICByZXR1cm4gTWFwQ29udGFpbmVyO1xufVxuIl19
@@ -134,7 +134,7 @@ var KEPLER_GL_NAME = 'kepler.gl'; // __PACKAGE_VERSION__ is automatically inject
134
134
  // an empty string which will allow us to retrieve the latest umd version
135
135
 
136
136
  exports.KEPLER_GL_NAME = KEPLER_GL_NAME;
137
- var KEPLER_GL_VERSION = "0.0.69-alpha.hackathon-3dtiles";
137
+ var KEPLER_GL_VERSION = "0.0.69-alpha.hackathon-3dtiles.2";
138
138
  exports.KEPLER_GL_VERSION = KEPLER_GL_VERSION;
139
139
  var KEPLER_GL_WEBSITE = 'http://kepler.gl/';
140
140
  exports.KEPLER_GL_WEBSITE = KEPLER_GL_WEBSITE;
@@ -899,4 +899,4 @@ var ZOOM_LEVEL_LIMITS = {
899
899
  max: 21
900
900
  };
901
901
  exports.ZOOM_LEVEL_LIMITS = ZOOM_LEVEL_LIMITS;
902
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5qcyJdLCJuYW1lcyI6WyJBQ1RJT05fUFJFRklYIiwiQ0xPVURGUk9OVCIsIklDT05fUFJFRklYIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIkRBVEFfVEFCTEVfSUQiLCJERUxFVEVfREFUQV9JRCIsIkFERF9EQVRBX0lEIiwiRVhQT1JUX0lNQUdFX0lEIiwiRVhQT1JUX0RBVEFfSUQiLCJBRERfTUFQX1NUWUxFX0lEIiwiRVhQT1JUX01BUF9JRCIsIlNBVkVfTUFQX0lEIiwiT1ZFUldSSVRFX01BUF9JRCIsIlNIQVJFX01BUF9JRCIsIktFUExFUl9HTF9OQU1FIiwiS0VQTEVSX0dMX1ZFUlNJT04iLCJLRVBMRVJfR0xfV0VCU0lURSIsIkRJTUVOU0lPTlMiLCJzaWRlUGFuZWwiLCJ3aWR0aCIsIm1hcmdpbiIsInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCIsImhlYWRlckhlaWdodCIsIm1hcENvbnRyb2wiLCJwYWRkaW5nIiwiVEhFTUUiLCJsaWdodCIsImRhcmsiLCJiYXNlIiwiU0lERUJBUl9QQU5FTFMiLCJpZCIsImxhYmVsIiwiaWNvbkNvbXBvbmVudCIsIkxheWVycyIsIm9uQ2xpY2siLCJGaWx0ZXJGdW5uZWwiLCJDdXJzb3JDbGljayIsIlNldHRpbmdzIiwiUEFORUxTIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJzbHVnIiwiZmlsdGVyIiwibWF0Y2giLCJkZWZhdWx0VmlzaWJpbGl0eSIsIkRFRkFVTFRfTUFQX1NUWUxFUyIsInVybCIsImljb24iLCJsYXllckdyb3VwcyIsIkdFT0pTT05fRklFTERTIiwiZ2VvanNvbiIsIklDT05fRklFTERTIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJUUklQX0FSQ19GSUVMRFMiLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiRklMVEVSX1RZUEVTIiwicmFuZ2UiLCJzZWxlY3QiLCJpbnB1dCIsInRpbWVSYW5nZSIsIm11bHRpU2VsZWN0IiwicG9seWdvbiIsIlNDQUxFX1RZUEVTIiwib3JkaW5hbCIsInF1YW50aWxlIiwicXVhbnRpemUiLCJsaW5lYXIiLCJzcXJ0IiwibG9nIiwicG9pbnQiLCJjdXN0b20iLCJsb2dhcml0aG1pYyIsIlNDQUxFX0ZVTkMiLCJzY2FsZUxpbmVhciIsInNjYWxlUXVhbnRpemUiLCJzY2FsZVF1YW50aWxlIiwic2NhbGVPcmRpbmFsIiwic2NhbGVTcXJ0Iiwic2NhbGVMb2ciLCJzY2FsZVBvaW50Iiwic2NhbGVUaHJlc2hvbGQiLCJBTExfRklFTERfVFlQRVMiLCJkYXRlIiwiaW50ZWdlciIsInJlYWwiLCJzdHJpbmciLCJ0aW1lc3RhbXAiLCJTT1JUX09SREVSIiwiQVNDRU5ESU5HIiwiREVTQ0VORElORyIsIlVOU09SVCIsIlRBQkxFX09QVElPTiIsIlNPUlRfQVNDIiwiU09SVF9ERVMiLCJQSU4iLCJVTlBJTiIsIkNPUFkiLCJUQUJMRV9PUFRJT05fTElTVCIsInZhbHVlIiwiZGlzcGxheSIsIkFycm93VXAiLCJjb25kaXRpb24iLCJwcm9wcyIsInNvcnRNb2RlIiwiQXJyb3dEb3duIiwiQ2FuY2VsIiwiaXNTb3J0ZWQiLCJQaW4iLCJpc1Bpbm5lZCIsIkNsaXBib2FyZCIsIk9SQU5HRSIsIlBJTksiLCJQVVJQTEUiLCJCTFVFIiwiQkxVRTIiLCJCTFVFMyIsIkdSRUVOIiwiUkVEIiwiRklMRURfVFlQRV9ESVNQTEFZIiwiY29sb3IiLCJGSUVMRF9DT0xPUlMiLCJISUdITElHSF9DT0xPUl8zRCIsIkNIQU5ORUxfU0NBTEVTIiwicmFkaXVzIiwic2l6ZSIsImN1c3RvbU1hcmtlciIsImNvbG9yQWdnciIsInNpemVBZ2dyIiwiaWRlbnRpdHkiLCJBR0dSRUdBVElPTl9UWVBFUyIsImNvdW50IiwiYXZlcmFnZSIsIm1heGltdW0iLCJtaW5pbXVtIiwibWVkaWFuIiwic3RkZXYiLCJzdW0iLCJ2YXJpYW5jZSIsIm1vZGUiLCJjb3VudFVuaXF1ZSIsImFueVZhbHVlIiwiRklFTERfVFlQRVNfQUdHUkVHQVRPUlMiLCJGSUVMRF9BR0dSRUdBVE9SUyIsImRpc3BsYXlOYW1lIiwibGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyIsImxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zIiwib3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJub3RTdXBwb3J0ZWRTY2FsZU9wdHMiLCJub3RTdXBwb3J0QWdnck9wdHMiLCJERUZBVUxUX0FHR1JFR0FUSU9OIiwiRklFTERfT1BUUyIsInR5cGUiLCJzY2FsZSIsImZvcm1hdCIsImxlZ2VuZCIsImQiLCJ0b29sdGlwIiwiVE9PTFRJUF9GT1JNQVRfVFlQRVMiLCJOT05FIiwiREVDSU1BTCIsIlBFUkNFTlRBR0UiLCJEQVRFIiwiREFURV9USU1FIiwiQk9PTEVBTiIsIkNIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJhY2N1Iiwia2V5IiwiZnQiLCJsZW5ndGgiLCJERUZBVUxUX0xBWUVSX0NPTE9SIiwidHJpcEFyYyIsImJlZ2ludHJpcF9sYXQiLCJkcm9wb2ZmX2xhdCIsInJlcXVlc3RfbGF0IiwiREVGQVVMVF9UT09MVElQX0ZJRUxEUyIsIk5PX1ZBTFVFX0NPTE9SIiwiVU5LTk9XTl9DT0xPUiIsIkxBWUVSX0JMRU5ESU5HUyIsImFkZGl0aXZlIiwiYmxlbmRGdW5jIiwiYmxlbmRFcXVhdGlvbiIsIm5vcm1hbCIsInN1YnRyYWN0aXZlIiwiTUFYX0RFRkFVTFRfVE9PTFRJUFMiLCJSRVNPTFVUSU9OUyIsIk9ORV9YIiwiVFdPX1giLCJFWFBPUlRfSU1HX1JBVElPUyIsIlNDUkVFTiIsIkZPVVJfQllfVEhSRUUiLCJTSVhURUVOX0JZX05JTkUiLCJDVVNUT00iLCJFWFBPUlRfSU1HX1JBVElPX09QVElPTlMiLCJnZXRTaXplIiwic2NyZWVuVyIsInNjcmVlbkgiLCJoZWlnaHQiLCJoaWRkZW4iLCJtYXBXIiwibWFwSCIsIk1hdGgiLCJyb3VuZCIsIkVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TIiwiYXZhaWxhYmxlIiwiRVhQT1JUX0RBVEFfVFlQRSIsIkNTViIsIkVYUE9SVF9EQVRBX1RZUEVfT1BUSU9OUyIsInRvTG93ZXJDYXNlIiwiRVhQT1JUX01BUF9GT1JNQVRTIiwiSFRNTCIsIkpTT04iLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJSRUFEIiwiRURJVCIsIkVYUE9SVF9NQVBfRk9STUFUX09QVElPTlMiLCJlbnRyaWVzIiwibWFwIiwiZW50cnkiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TIiwiREVGQVVMVF9VVUlEX0NPVU5UIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwiaW5mbyIsImVycm9yIiwid2FybmluZyIsInN1Y2Nlc3MiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJnbG9iYWwiLCJmaWxlIiwiVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUiLCJCQVNFX1NQRUVEIiwiRlBTIiwiQU5JTUFUSU9OX1dJTkRPVyIsImZyZWUiLCJpbmNyZW1lbnRhbCIsImludGVydmFsIiwiREVGQVVMVF9USU1FX0ZPUk1BVCIsIlNQRUVEX0NPTlRST0xfUkFOR0UiLCJTUEVFRF9DT05UUk9MX1NURVAiLCJHRU9DT0RFUl9EQVRBU0VUX05BTUUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsIkdFT0NPREVSX0dFT19PRkZTRVQiLCJHRU9DT0RFUl9JQ09OX0NPTE9SIiwiR0VPQ09ERVJfSUNPTl9TSVpFIiwiRURJVE9SX01PREVTIiwiUkVBRF9PTkxZIiwiRWRpdG9yTW9kZXMiLCJEUkFXX1BPTFlHT04iLCJEUkFXX1JFQ1RBTkdMRSIsIkVESVRfVkVSVEVYIiwiRURJVE9SX0FWQUlMQUJMRV9MQVlFUlMiLCJMQVlFUl9UWVBFUyIsImhleGFnb24iLCJhcmMiLCJsaW5lIiwiaGV4YWdvbklkIiwiTUFYX0dQVV9GSUxURVJTIiwiTUFQX1RIVU1CTkFJTF9ESU1FTlNJT04iLCJNQVBfSU5GT19DSEFSQUNURVIiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiTE9BRElOR19NRVRIT0RTIiwidXBsb2FkIiwic3RvcmFnZSIsIkRBVEFTRVRfRk9STUFUUyIsInJvdyIsImNzdiIsImtlcGxlcmdsIiwiTUFQX0NPTlRST0xTIiwidmlzaWJsZUxheWVycyIsIm1hcExlZ2VuZCIsInRvZ2dsZTNkIiwic3BsaXRNYXAiLCJtYXBEcmF3IiwibWFwTG9jYWxlIiwiTUFTS19MQVlFUl9JRCIsIlpPT01fTEVWRUxfTElNSVRTIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFFQTs7QUFVQTs7QUFXQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUcsY0FBdEI7O0FBQ0EsSUFBTUMsVUFBVSxHQUFHLGlEQUFuQjs7QUFDQSxJQUFNQyxXQUFXLGFBQU1ELFVBQU4sYUFBakI7O0FBQ0EsSUFBTUUsc0JBQXNCLEdBQUcsd0JBQS9CLEMsQ0FFUDs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGFBQWEsR0FBRyxXQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsY0FBYyxHQUFHLFlBQXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxXQUFXLEdBQUcsU0FBcEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyxhQUF4QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsY0FBYyxHQUFHLFlBQXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBRyxhQUF6QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsYUFBYSxHQUFHLFdBQXRCO0FBQ1A7QUFDQTtBQUNBO0FB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QU1DLGVBQWUsR0FBRywyQkFBVTtBQUN2Q0MsRUFBQUEsR0FBRyxFQUFFLElBRGtDO0FBRXZDOU4sRUFBQUEsT0FBTyxFQUFFLElBRjhCO0FBR3ZDK04sRUFBQUEsR0FBRyxFQUFFLElBSGtDO0FBSXZDQyxFQUFBQSxRQUFRLEVBQUU7QUFKNkIsQ0FBVixDQUF4Qjs7QUFPQSxJQUFNQyxZQUFZLEdBQUcsMkJBQVU7QUFDcENDLEVBQUFBLGFBQWEsRUFBRSxJQURxQjtBQUVwQ0MsRUFBQUEsU0FBUyxFQUFFLElBRnlCO0FBR3BDQyxFQUFBQSxRQUFRLEVBQUUsSUFIMEI7QUFJcENDLEVBQUFBLFFBQVEsRUFBRSxJQUowQjtBQUtwQ0MsRUFBQUEsT0FBTyxFQUFFLElBTDJCO0FBTXBDQyxFQUFBQSxTQUFTLEVBQUU7QUFOeUIsQ0FBVixDQUFyQjs7QUFTQSxJQUFNQyxhQUFhLEdBQUcsWUFBdEI7O0FBRUEsSUFBTUMsaUJBQWlCLEdBQUc7QUFDL0JDLEVBQUFBLEdBQUcsRUFBRSxDQUQwQjtBQUUvQkMsRUFBQUEsR0FBRyxFQUFFO0FBRjBCLENBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IGtleU1pcnJvciBmcm9tICdrZXltaXJyb3InO1xuaW1wb3J0IHtFZGl0b3JNb2Rlc30gZnJvbSAncmVhY3QtbWFwLWdsLWRyYXcnO1xuXG5pbXBvcnQge1xuICBzY2FsZUxpbmVhcixcbiAgc2NhbGVRdWFudGl6ZSxcbiAgc2NhbGVRdWFudGlsZSxcbiAgc2NhbGVPcmRpbmFsLFxuICBzY2FsZVNxcnQsXG4gIHNjYWxlTG9nLFxuICBzY2FsZVBvaW50LFxuICBzY2FsZVRocmVzaG9sZFxufSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQge1xuICBMYXllcnMsXG4gIEZpbHRlckZ1bm5lbCxcbiAgU2V0dGluZ3MsXG4gIEN1cnNvckNsaWNrLFxuICBQaW4sXG4gIEFycm93RG93bixcbiAgQXJyb3dVcCxcbiAgQ2xpcGJvYXJkLFxuICBDYW5jZWxcbn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtnZXRIVE1MTWFwTW9kZVRpbGVVcmx9IGZyb20gJ3V0aWxzL3V0aWxzJztcbmltcG9ydCB7VE9PTFRJUF9GT1JNQVRfVFlQRVN9IGZyb20gJy4vdG9vbHRpcCc7XG5pbXBvcnQge0xBWUVSX1RZUEVTfSBmcm9tICdsYXllcnMvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX1BSRUZJWCA9ICdAQGtlcGxlci5nbC8nO1xuZXhwb3J0IGNvbnN0IENMT1VERlJPTlQgPSAnaHR0cHM6Ly9kMWEzZjRzcGF6enJwNC5jbG91ZGZyb250Lm5ldC9rZXBsZXIuZ2wnO1xuZXhwb3J0IGNvbnN0IElDT05fUFJFRklYID0gYCR7Q0xPVURGUk9OVH0vZ2VvZHVkZWA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCA9ICdodHRwczovL2FwaS5tYXBib3guY29tJztcblxuLy8gTW9kYWwgSWRzXG4vKipcbiAqIE1vZGFsIGlkOiBkYXRhIHRhYmxlXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBEQVRBX1RBQkxFX0lEID0gJ2RhdGFUYWJsZSc7XG4vKipcbiAqIE1vZGFsIGlkOiBkZWxldGUgZGF0YXNldCBjb25maXJtIGRpYWxvZ1xuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVMRVRFX0RBVEFfSUQgPSAnZGVsZXRlRGF0YSc7XG4vKipcbiAqIE1vZGFsIGlkOiBhZGQgZGF0YSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgQUREX0RBVEFfSUQgPSAnYWRkRGF0YSc7XG4vKipcbiAqIE1vZGFsIGlkOiBleHBvcnQgaW1hZ2UgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUFHRV9JRCA9ICdleHBvcnRJbWFnZSc7XG4vKipcbiAqIE1vZGFsIGlkOiBleHBvcnQgZGF0YSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfSUQgPSAnZXhwb3J0RGF0YSc7XG4vKipcbiAqIE1vZGFsIGlkOiBhZGQgY3VzdG9tIG1hcCBzdHlsZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgQUREX01BUF9TVFlMRV9JRCA9ICdhZGRNYXBTdHlsZSc7XG4vKipcbiAqIE1vZGFsIGlkOiBleHBvcnQgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0lEID0gJ2V4cG9ydE1hcCc7XG4vKipcbiAqIE1vZGFsIGlkOiBzYXZlIG1hcCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0FWRV9NQVBfSUQgPSAnc2F2ZU1hcCc7XG4vKipcbiAqIE1vZGFsIGlkOiBjb25maXJtIHRvIG92ZXJ3cml0ZSBzYXZlZCBtYXBcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IE9WRVJXUklURV9NQVBfSUQgPSAnb3ZlcndyaXRlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IHNoYXJlIG1hcCB1cmwgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IFNIQVJFX01BUF9JRCA9ICdzaGFyZU1hcCc7XG5cbmV4cG9ydCBjb25zdCBLRVBMRVJfR0xfTkFNRSA9ICdrZXBsZXIuZ2wnO1xuXG4vLyBfX1BBQ0tBR0VfVkVSU0lPTl9fIGlzIGF1dG9tYXRpY2FsbHkgaW5qZWN0ZWQgYnkgQmFiZWwvV2VicGFjayBkdXJpbmcgdGhlIGJ1aWxkaW5nIHByb2Nlc3Ncbi8vIFNpbmNlIHdlIGFyZSBpbmplY3RpbmcgdGhpcyBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3Mgd2l0aCBiYWJlbFxuLy8gd2hpbGUgZGV2ZWxvcGluZyBWRVJTSU9OIGlzIG5vdCBkZWZpbmVkLCB3ZSBjYXB0dXJlIHRoZSBleGNlcHRpb24gYW5kIHJldHVyblxuLy8gYW4gZW1wdHkgc3RyaW5nIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcmV0cmlldmUgdGhlIGxhdGVzdCB1bWQgdmVyc2lvblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9WRVJTSU9OID0gJ19fUEFDS0FHRV9WRVJTSU9OX18nO1xuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9XRUJTSVRFID0gJ2h0dHA6Ly9rZXBsZXIuZ2wvJztcblxuZXhwb3J0IGNvbnN0IERJTUVOU0lPTlMgPSB7XG4gIHNpZGVQYW5lbDoge1xuICAgIHdpZHRoOiAzMDAsXG4gICAgbWFyZ2luOiB7dG9wOiAyMCwgbGVmdDogMjAsIGJvdHRvbTogMzAsIHJpZ2h0OiAyMH0sXG4gICAgaGVhZGVySGVpZ2h0OiA5NlxuICB9LFxuICBtYXBDb250cm9sOiB7XG4gICAgd2lkdGg6IDE4NCxcbiAgICBwYWRkaW5nOiAxMlxuICB9XG59O1xuXG4vKipcbiAqIFRoZW1lIG5hbWUgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIGBLZXBsZXJHbGAgYHByb3AudGhlbWVgLlxuICogQXZhaWxhYmxlIHRoZW1lcyBhcmUgYFRIRU1FLmxpZ2h0YCBhbmQgYFRIRU1FLmRhcmtgLiBEZWZhdWx0IHRoZW1lIGlzIGBUSEVNRS5kYXJrYFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7b2JqZWN0fVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBjb25zdCBNYXAgPSAoKSA9PiA8S2VwbGVyR2wgdGhlbWU9e1RIRU1FLmxpZ2h0fSBpZD1cIm1hcFwiLz5cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgVEhFTUUgPSBrZXlNaXJyb3Ioe1xuICBsaWdodDogbnVsbCxcbiAgZGFyazogbnVsbCxcbiAgYmFzZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBTSURFQkFSX1BBTkVMUyA9IFtcbiAge1xuICAgIGlkOiAnbGF5ZXInLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMubGF5ZXInLFxuICAgIGljb25Db21wb25lbnQ6IExheWVycyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ZpbHRlcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5maWx0ZXInLFxuICAgIGljb25Db21wb25lbnQ6IEZpbHRlckZ1bm5lbCxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ludGVyYWN0aW9uJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmludGVyYWN0aW9uJyxcbiAgICBpY29uQ29tcG9uZW50OiBDdXJzb3JDbGljayxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ21hcCcsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5iYXNlbWFwJyxcbiAgICBpY29uQ29tcG9uZW50OiBTZXR0aW5ncyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH1cbl07XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmV4cG9ydCBjb25zdCBQQU5FTFMgPSBTSURFQkFSX1BBTkVMUztcblxuLy8gTUFQIFNUWUxFU1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9HUk9VUFMgPSBbXG4gIHtcbiAgICBzbHVnOiAnbGFiZWwnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0obGFiZWx8cGxhY2UtfHBvaS0pKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAncm9hZCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShyb2FkfHJhaWx3YXl8dHVubmVsfHN0cmVldHxicmlkZ2UpKSg/IS4qbGFiZWwpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICdib3JkZXInLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC9ib3JkZXJ8Ym91bmRhcmllcy8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2J1aWxkaW5nJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYnVpbGRpbmcvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3dhdGVyJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHdhdGVyfHN0cmVhbXxmZXJyeSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICdsYW5kJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHBhcmtzfGxhbmRjb3ZlcnxpbmR1c3RyaWFsfHNhbmR8aGlsbHNoYWRlKSkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJzNkIGJ1aWxkaW5nJyxcbiAgICBmaWx0ZXI6ICgpID0+IGZhbHNlLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBfU1RZTEVTID0gW1xuICB7XG4gICAgaWQ6ICdkYXJrJyxcbiAgICBsYWJlbDogJ0RhcmsnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jam9xYmJmNmw5azMwMnNsOTZ0eXZrYTA5JyxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9EQVJLX1YyLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTXG4gIH0sXG4gIHtcbiAgICBpZDogJ2xpZ2h0JyxcbiAgICBsYWJlbDogJ0xpZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pvcWI5ajMzOWsxZjJzbDl0NWljNWJuNCcsXG4gICAgaWNvbjogYCR7SUNPTl9QUkVGSVh9L1VCRVJfTElHSFRfVjIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFNcbiAgfSxcbiAge1xuICAgIGlkOiAnbXV0ZWQnLFxuICAgIGxhYmVsOiAnTXV0ZWQgTGlnaHQnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jamZ5bDAza3AxdHVsMnNtZjV2MnRiZGQ0JyxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9MSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQU1xuICB9LFxuICB7XG4gICAgaWQ6ICdtdXRlZF9uaWdodCcsXG4gICAgbGFiZWw6ICdNdXRlZCBOaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnhobGlrbWFqMWIyc295emV2bnl3Z3MnLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX01VVEVEX05JR0hULnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTXG4gIH0sXG4gIHtcbiAgICBpZDogJ3NhdGVsbGl0ZScsXG4gICAgbGFiZWw6ICdTYXRlbGxpdGUnLFxuICAgIHVybDogYG1hcGJveDovL3N0eWxlcy9tYXBib3gvc2F0ZWxsaXRlLXY5YCxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9TQVRFTExJVEUucG5nYFxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgR0VPSlNPTl9GSUVMRFMgPSB7XG4gIGdlb2pzb246IFsnX2dlb2pzb24nLCAnYWxsX3BvaW50cycsICdnZW9qc29uJ11cbn07XG5cbmV4cG9ydCBjb25zdCBJQ09OX0ZJRUxEUyA9IHtcbiAgaWNvbjogWydpY29uJ11cbn07XG5cbmV4cG9ydCBjb25zdCBUUklQX1BPSU5UX0ZJRUxEUyA9IFtcbiAgWydsYXQnLCAnbG5nJ10sXG4gIFsnbGF0JywgJ2xvbiddLFxuICBbJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZSddXG5dO1xuXG5leHBvcnQgY29uc3QgVFJJUF9BUkNfRklFTERTID0ge1xuICBsYXQwOiAnYmVnaW50cmlwJyxcbiAgbG5nMDogJ2JlZ2ludHJpcCcsXG4gIGxhdDE6ICdkcm9wb2ZmJyxcbiAgbG5nMTogJ2Ryb3BvZmYnXG59O1xuXG5leHBvcnQgY29uc3QgRklMVEVSX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgcmFuZ2U6IG51bGwsXG4gIHNlbGVjdDogbnVsbCxcbiAgaW5wdXQ6IG51bGwsXG4gIHRpbWVSYW5nZTogbnVsbCxcbiAgbXVsdGlTZWxlY3Q6IG51bGwsXG4gIHBvbHlnb246IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0NBTEVfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBvcmRpbmFsOiBudWxsLFxuICBxdWFudGlsZTogbnVsbCxcbiAgcXVhbnRpemU6IG51bGwsXG4gIGxpbmVhcjogbnVsbCxcbiAgc3FydDogbnVsbCxcbiAgbG9nOiBudWxsLFxuXG4gIC8vIG9yZGluYWwgZG9tYWluIHRvIGxpbmVhciByYW5nZVxuICBwb2ludDogbnVsbCxcbiAgY3VzdG9tOiBudWxsLFxuICAvLyBVSS1vbmx5IHR5cGUsIHJlc29sdmluZyBhcyBjdXN0b21cbiAgbG9nYXJpdGhtaWM6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0NBTEVfRlVOQyA9IHtcbiAgW1NDQUxFX1RZUEVTLmxpbmVhcl06IHNjYWxlTGluZWFyLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpemVdOiBzY2FsZVF1YW50aXplLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpbGVdOiBzY2FsZVF1YW50aWxlLFxuICBbU0NBTEVfVFlQRVMub3JkaW5hbF06IHNjYWxlT3JkaW5hbCxcbiAgW1NDQUxFX1RZUEVTLnNxcnRdOiBzY2FsZVNxcnQsXG4gIFtTQ0FMRV9UWVBFUy5sb2ddOiBzY2FsZUxvZyxcbiAgW1NDQUxFX1RZUEVTLnBvaW50XTogc2NhbGVQb2ludCxcbiAgW1NDQUxFX1RZUEVTLmN1c3RvbV06IHNjYWxlVGhyZXNob2xkXG59O1xuXG5leHBvcnQgY29uc3QgQUxMX0ZJRUxEX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgYm9vbGVhbjogbnVsbCxcbiAgZGF0ZTogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgaW50ZWdlcjogbnVsbCxcbiAgcmVhbDogbnVsbCxcbiAgc3RyaW5nOiBudWxsLFxuICB0aW1lc3RhbXA6IG51bGwsXG4gIHBvaW50OiBudWxsXG59KTtcblxuLy8gRGF0YSBUYWJsZVxuZXhwb3J0IGNvbnN0IFNPUlRfT1JERVIgPSBrZXlNaXJyb3Ioe1xuICBBU0NFTkRJTkc6IG51bGwsXG4gIERFU0NFTkRJTkc6IG51bGwsXG4gIFVOU09SVDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT04gPSBrZXlNaXJyb3Ioe1xuICBTT1JUX0FTQzogbnVsbCxcbiAgU09SVF9ERVM6IG51bGwsXG4gIFVOU09SVDogbnVsbCxcbiAgUElOOiBudWxsLFxuICBVTlBJTjogbnVsbCxcbiAgQ09QWTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05fTElTVCA9IFtcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9BU0MsXG4gICAgZGlzcGxheTogJ1NvcnQgQXNjZW5kaW5nJyxcbiAgICBpY29uOiBBcnJvd1VwLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246IEFycm93RG93bixcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLnNvcnRNb2RlICE9PSBTT1JUX09SREVSLkRFU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5TT1JULFxuICAgIGRpc3BsYXk6ICdVbnNvcnQgQ29sdW1uJyxcbiAgICBpY29uOiBDYW5jZWwsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5pc1NvcnRlZFxuICB9LFxuICB7dmFsdWU6IFRBQkxFX09QVElPTi5QSU4sIGRpc3BsYXk6ICdQaW4gQ29sdW1uJywgaWNvbjogUGluLCBjb25kaXRpb246IHByb3BzID0+ICFwcm9wcy5pc1Bpbm5lZH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlVOUElOLFxuICAgIGRpc3BsYXk6ICdVbnBpbiBDb2x1bW4nLFxuICAgIGljb246IENhbmNlbCxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzUGlubmVkXG4gIH0sXG4gIHt2YWx1ZTogVEFCTEVfT1BUSU9OLkNPUFksIGRpc3BsYXk6ICdDb3B5IENvbHVtbicsIGljb246IENsaXBib2FyZH1cbl07XG5cbmNvbnN0IE9SQU5HRSA9ICcyNDgsIDE5NCwgMjgnO1xuY29uc3QgUElOSyA9ICcyMzEsIDE4OSwgMTk0JztcbmNvbnN0IFBVUlBMRSA9ICcxNjAsIDEwNiwgMjA2JztcbmNvbnN0IEJMVUUgPSAnMTQwLCAyMTAsIDIwNSc7XG5jb25zdCBCTFVFMiA9ICcxMDYsIDE2MCwgMjA2JztcbmNvbnN0IEJMVUUzID0gJzAsIDE3MiwgMjM3JztcbmNvbnN0IEdSRUVOID0gJzEwNiwgMTYwLCA1Nic7XG5jb25zdCBSRUQgPSAnMjM3LCA4OCwgMTA2JztcblxuZXhwb3J0IGNvbnN0IEZJTEVEX1RZUEVfRElTUExBWSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIGxhYmVsOiAnYm9vbCcsXG4gICAgY29sb3I6IFBJTktcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXToge1xuICAgIGxhYmVsOiAnZGF0ZScsXG4gICAgY29sb3I6IFBVUlBMRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB7XG4gICAgbGFiZWw6ICdudW1iZXInLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXToge1xuICAgIGxhYmVsOiAnbnVtYmVyJyxcbiAgICBjb2xvcjogT1JBTkdFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIGxhYmVsOiAnc3RyaW5nJyxcbiAgICBjb2xvcjogQkxVRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICBsYWJlbDogJ3RpbWUnLFxuICAgIGNvbG9yOiBHUkVFTlxuICB9LFxuICAvLyBmaWVsZCBwYWlyc1xuICBbQUxMX0ZJRUxEX1RZUEVTLnBvaW50XToge1xuICAgIGxhYmVsOiAncG9pbnQnLFxuICAgIGNvbG9yOiBCTFVFM1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfQ09MT1JTID0ge1xuICBkZWZhdWx0OiBSRURcbn07XG5leHBvcnQgY29uc3QgSElHSExJR0hfQ09MT1JfM0QgPSBbMjU1LCAyNTUsIDI1NSwgNjBdO1xuZXhwb3J0IGNvbnN0IENIQU5ORUxfU0NBTEVTID0ga2V5TWlycm9yKHtcbiAgY29sb3I6IG51bGwsXG4gIHJhZGl1czogbnVsbCxcbiAgc2l6ZTogbnVsbCxcbiAgY3VzdG9tTWFya2VyOiBudWxsLFxuICBjb2xvckFnZ3I6IG51bGwsXG4gIHNpemVBZ2dyOiBudWxsLFxuICBpZGVudGl0eTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFUyA9IHtcbiAgLy8gZGVmYXVsdFxuICBjb3VudDogJ2NvdW50JyxcbiAgLy8gbGluZWFyXG4gIGF2ZXJhZ2U6ICdhdmVyYWdlJyxcbiAgbWF4aW11bTogJ21heGltdW0nLFxuICBtaW5pbXVtOiAnbWluaW11bScsXG4gIG1lZGlhbjogJ21lZGlhbicsXG4gIHN0ZGV2OiAnc3RkZXYnLFxuICBzdW06ICdzdW0nLFxuICB2YXJpYW5jZTogJ3ZhcmlhbmNlJyxcbiAgLy8gb3JkaW5hbFxuICBtb2RlOiAnbW9kZScsXG4gIGNvdW50VW5pcXVlOiAnY291bnQgdW5pcXVlJyxcbiAgYW55VmFsdWU6ICdhbnlfdmFsdWUnXG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfVFlQRVNfQUdHUkVHQVRPUlMgPSB7XG4gIGRhdGU6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGludGVnZXI6IFtcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5jb3VudCxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWluaW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VcbiAgXSxcbiAgcmVhbDogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmNvdW50LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZVxuICBdLFxuICBzdHJpbmc6IFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlLCBBR0dSRUdBVElPTl9UWVBFUy5hbnlWYWx1ZV0sXG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgcG9pbnQ6IG51bGxcbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9BR0dSRUdBVE9SUyA9IFtcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5jb3VudCxcbiAgICBkaXNwbGF5TmFtZTogJ0NPVU5UJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgZGlzcGxheU5hbWU6ICdBVkcnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBkaXNwbGF5TmFtZTogJ01BWCdcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIGRpc3BsYXlOYW1lOiAnTUlOJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIGRpc3BsYXlOYW1lOiAnU1RERVYnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMuc3VtLFxuICAgIGRpc3BsYXlOYW1lOiAnU1VNJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlLFxuICAgIGRpc3BsYXlOYW1lOiAnVkFSSUFOQ0UnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMubW9kZSxcbiAgICBkaXNwbGF5TmFtZTogJ01PREUnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMuYW55VmFsdWUsXG4gICAgZGlzcGxheU5hbWU6ICdBTlkgVkFMVUUnXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBsaW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW1NDQUxFX1RZUEVTLnNxcnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gIFtDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXJdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5pZGVudGl0eV06IFtdXG59O1xuXG5leHBvcnQgY29uc3QgbGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogW1NDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2VdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWluaW11bV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2XTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3VtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dXG4gIH0sXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2VdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWluaW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2XTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3VtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBvcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW1NDQUxFX1RZUEVTLnBvaW50XSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbU0NBTEVfVFlQRVMucG9pbnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY3VzdG9tTWFya2VyXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHldOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgLy8gW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5saW5lYXJdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hbnlWYWx1ZV06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRVbmlxdWVdOiBbXG4gICAgICBTQ0FMRV9UWVBFUy5xdWFudGl6ZSxcbiAgICAgIFNDQUxFX1RZUEVTLnF1YW50aWxlLFxuICAgICAgU0NBTEVfVFlQRVMuY3VzdG9tXG4gICAgXVxuICB9LFxuXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubW9kZV06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuYW55VmFsdWVdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRlZFNjYWxlT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmN1c3RvbU1hcmtlcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHldOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRBZ2dyT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHt9LFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7fVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGFnZ3JlZ2F0aW9uIGFyZSBiYXNlZCBvbiBvY3VudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BR0dSRUdBVElPTiA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dXG4gIH0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddXG4gIH1cbn07XG5cbi8qKlxuICogRGVmaW5lIHdoYXQgdHlwZSBvZiBzY2FsZSBvcGVyYXRpb24gaXMgYWxsb3dlZCBvbiBlYWNoIHR5cGUgb2YgZmllbGRzXG4gKi9cbmV4cG9ydCBjb25zdCBGSUVMRF9PUFRTID0ge1xuICBzdHJpbmc6IHtcbiAgICB0eXBlOiAnY2F0ZWdvcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICByZWFsOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5saW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTCxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgdGltZXN0YW1wOiB7XG4gICAgdHlwZTogJ3RpbWUnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUVcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIGludGVnZXI6IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBib29sZWFuOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5CT09MRUFOXVxuICAgIH1cbiAgfSxcbiAgZGF0ZToge1xuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFXVxuICAgIH1cbiAgfSxcbiAgZ2VvanNvbjoge1xuICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyA9IE9iamVjdC5rZXlzKENIQU5ORUxfU0NBTEVTKS5yZWR1Y2UoXG4gIChhY2N1LCBrZXkpID0+ICh7XG4gICAgLi4uYWNjdSxcbiAgICBba2V5XTogT2JqZWN0LmtleXMoRklFTERfT1BUUykuZmlsdGVyKGZ0ID0+IE9iamVjdC5rZXlzKEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0pLmxlbmd0aClcbiAgfSksXG4gIHt9XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFMgPSBbXTtcblxuZXhwb3J0IGNvbnN0IE5PX1ZBTFVFX0NPTE9SID0gWzAsIDAsIDAsIDBdO1xuZXhwb3J0IGNvbnN0IFVOS05PV05fQ09MT1IgPSBbMTM0LCAxNDEsIDE0NV07XG5cbmV4cG9ydCBjb25zdCBMQVlFUl9CTEVORElOR1MgPSB7XG4gIGFkZGl0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLmFkZGl0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246ICdGVU5DX0FERCdcbiAgfSxcbiAgbm9ybWFsOiB7XG4gICAgLy8gcmVmZXJlbmNlIHRvXG4gICAgLy8gaHR0cHM6Ly9saW1udS5jb20vd2ViZ2wtYmxlbmRpbmcteW91cmUtcHJvYmFibHktd3JvbmcvXG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLm5vcm1hbCcsXG4gICAgYmxlbmRGdW5jOiBbJ1NSQ19BTFBIQScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJywgJ09ORScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX0FERCcsICdGVU5DX0FERCddXG4gIH0sXG4gIHN1YnRyYWN0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLnN1YnRyYWN0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnT05FJywgJ09ORV9NSU5VU19EU1RfQ09MT1InLCAnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246IFsnRlVOQ19TVUJUUkFDVCcsICdGVU5DX0FERCddXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNQVhfREVGQVVMVF9UT09MVElQUyA9IDU7XG5cbmV4cG9ydCBjb25zdCBSRVNPTFVUSU9OUyA9IGtleU1pcnJvcih7XG4gIE9ORV9YOiBudWxsLFxuICBUV09fWDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPUyA9IGtleU1pcnJvcih7XG4gIFNDUkVFTjogbnVsbCxcbiAgRk9VUl9CWV9USFJFRTogbnVsbCxcbiAgU0lYVEVFTl9CWV9OSU5FOiBudWxsLFxuICBDVVNUT006IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLlNDUkVFTixcbiAgICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvT3JpZ2luYWxTY3JlZW4nLFxuICAgIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe3dpZHRoOiBzY3JlZW5XLCBoZWlnaHQ6IHNjcmVlbkh9KVxuICB9LFxuICB7XG4gICAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkNVU1RPTSxcbiAgICBoaWRkZW46IHRydWUsXG4gICAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpb0N1c3RvbScsXG4gICAgZ2V0U2l6ZTogKG1hcFcsIG1hcEgpID0+ICh7d2lkdGg6IG1hcFcsIGhlaWdodDogbWFwSH0pXG4gIH0sXG4gIHtcbiAgICBpZDogRVhQT1JUX0lNR19SQVRJT1MuRk9VUl9CWV9USFJFRSxcbiAgICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvNF8zJyxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjc1KVxuICAgIH0pXG4gIH0sXG4gIHtcbiAgICBpZDogRVhQT1JUX0lNR19SQVRJT1MuU0lYVEVFTl9CWV9OSU5FLFxuICAgIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW8xNl85JyxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjU2MjUpXG4gICAgfSlcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IFJFU09MVVRJT05TLk9ORV9YLFxuICAgIGxhYmVsOiAnMXgnLFxuICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICBzY2FsZTogMSxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBzY3JlZW5IXG4gICAgfSlcbiAgfSxcbiAge1xuICAgIGlkOiBSRVNPTFVUSU9OUy5UV09fWCxcbiAgICBsYWJlbDogJzJ4JyxcbiAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgc2NhbGU6IDIsXG4gICAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7XG4gICAgICB3aWR0aDogc2NyZWVuVyAqIDIsXG4gICAgICBoZWlnaHQ6IHNjcmVlbkggKiAyXG4gICAgfSlcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEUgPSBrZXlNaXJyb3Ioe1xuICBDU1Y6IG51bGxcbiAgLy8gU0hBUEVGSUxFOiBudWxsLFxuICAvLyBKU09OOiBudWxsLFxuICAvLyBHRU9KU09OOiBudWxsLFxuICAvLyBUT1BPSlNPTjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFX09QVElPTlMgPSBbXG4gIHtcbiAgICBpZDogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gICAgbGFiZWw6IEVYUE9SVF9EQVRBX1RZUEUuQ1NWLnRvTG93ZXJDYXNlKCksXG4gICAgYXZhaWxhYmxlOiB0cnVlXG4gIH1cbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlNIQVBFRklMRSxcbiAgLy8gICBsYWJlbDogJ3NoYXBlZmlsZScsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuSlNPTixcbiAgLy8gICBsYWJlbDogJ2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkdFT0pTT04sXG4gIC8vICAgbGFiZWw6ICdnZW9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5UT1BPSlNPTixcbiAgLy8gICBsYWJlbDogJ3RvcG9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH1cbl07XG5cbi8vIEV4cG9ydCBtYXAgdHlwZXNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICBIVE1MOiBudWxsLFxuICBKU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9IVE1MX01BUF9NT0RFUyA9IGtleU1pcnJvcih7XG4gIFJFQUQ6IG51bGwsXG4gIEVESVQ6IG51bGxcbn0pO1xuXG4vLyBFeHBvcnQgbWFwIG9wdGlvbnNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX01BUF9GT1JNQVRTKS5tYXAoZW50cnkgPT4gKHtcbiAgaWQ6IGVudHJ5WzBdLFxuICBsYWJlbDogZW50cnlbMV0udG9Mb3dlckNhc2UoKSxcbiAgYXZhaWxhYmxlOiB0cnVlXG59KSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX0hUTUxfTUFQX01PREVTKS5tYXAoZW50cnkgPT4gKHtcbiAgaWQ6IGVudHJ5WzBdLFxuICBsYWJlbDogYG1vZGFsLmV4cG9ydE1hcC5odG1sLiR7ZW50cnlbMV0udG9Mb3dlckNhc2UoKX1gLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIHVybDogZ2V0SFRNTE1hcE1vZGVUaWxlVXJsKGVudHJ5WzFdKVxufSkpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9VVUlEX0NPVU5UID0gNjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UgPSAnTUVTU0FHRV9OT1RfUFJPVklERUQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBpbmZvOiBudWxsLFxuICBlcnJvcjogbnVsbCxcbiAgd2FybmluZzogbnVsbCxcbiAgc3VjY2VzczogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MgPSBrZXlNaXJyb3Ioe1xuICBnbG9iYWw6IG51bGwsXG4gIGZpbGU6IG51bGxcbn0pO1xuXG4vLyBNaW5pbXVtIHRpbWUgYmV0d2VlbiBpZGVudGljYWwgbm90aWZpY2F0aW9ucyBhYm91dCBkZWNrLmdsIGVycm9yc1xuZXhwb3J0IGNvbnN0IFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FID0gMjUwMDtcblxuLy8gQW5pbWF0aW9uXG5leHBvcnQgY29uc3QgQkFTRV9TUEVFRCA9IDYwMDtcbmV4cG9ydCBjb25zdCBGUFMgPSA2MDtcblxuLyoqXG4gKiA0IEFuaW1hdGlvbiBXaW5kb3cgVHlwZXNcbiAqIDEuIGZyZWVcbiAqICB8LT4gIHwtPlxuICogQ3VycmVudCB0aW1lIGlzIGEgZml4ZWQgcmFuZ2UsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lcyBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHdpbmRvd1xuICogVGhlIGluY3JlbWVudCBpZCBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiAyLiBpbmNyZW1lbnRhbFxuICogfCAgICB8LT5cbiAqIFNhbWUgYXMgZnJlZSwgY3VycmVudCB0aW1lIGlzIGEgZ3Jvd2luZyByYW5nZSwgb25seSB0aGUgbWF4IHZhbHVlIG9mIHJhbmdlIGluY3JlbWVudCBkdXJpbmcgYW5pbWF0aW9uLlxuICogVGhlIGluY3JlbWVudCBpcyBhbHNvIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDMuIHBvaW50XG4gKiBvIC0+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LCBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBmcmFtZSBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHBvaW50XG4gKiBUaGUgaW5jcmVtZW50IGlzIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDQuIGludGVydmFsXG4gKiBvIH4+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LiBBbiBhcnJheSBvZiBzb3J0ZWQgdGltZSBzdGVwcyBuZWVkIHRvIGJlIHByb3ZpZGVkLlxuICogYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gYXQgYSBpbnRlcnZhbCB3aGVuIHRoZSBwb2ludCBqdW1wcyB0byB0aGUgbmV4dCBzdGVwXG4gKi9cbmV4cG9ydCBjb25zdCBBTklNQVRJT05fV0lORE9XID0ga2V5TWlycm9yKHtcbiAgZnJlZTogbnVsbCxcbiAgaW5jcmVtZW50YWw6IG51bGwsXG4gIHBvaW50OiBudWxsLFxuICBpbnRlcnZhbDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FX0ZPUk1BVCA9ICdNTS9ERC9ZWSBISDptbTpzc2EnO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfUkFOR0UgPSBbMCwgMTBdO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfU1RFUCA9IDAuMDAxO1xuXG4vLyBHZW9jb2RlclxuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0RBVEFTRVRfTkFNRSA9ICdnZW9jb2Rlcl9kYXRhc2V0JztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9MQVlFUl9JRCA9ICdnZW9jb2Rlcl9sYXllcic7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfR0VPX09GRlNFVCA9IDAuMDU7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9DT0xPUiA9IFsyNTUsIDAsIDBdO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0lDT05fU0laRSA9IDgwO1xuXG4vLyBXZSBjb3VsZCB1c2UgZGlyZWN0bHkgcmVhY3QtbWFwLWdsLWRyYXcgRWRpdG9yTW9kZSBidXQgdGhpcyB3b3VsZFxuLy8gY3JlYXRlIGEgZGlyZWN0IGRlcGVuZGVuY3kgd2l0aCByZWFjdC1tYXAtZ2wtZHJhd1xuLy8gQ3JlYXRlZCB0aGlzIG1hcCB0byBiZSBpbmRlcGVuZGVudCBmcm9tIHJlYWN0LW1hcC1nbC1kcmF3XG5leHBvcnQgY29uc3QgRURJVE9SX01PREVTID0ge1xuICBSRUFEX09OTFk6IEVkaXRvck1vZGVzLlJFQURfT05MWSxcbiAgRFJBV19QT0xZR09OOiBFZGl0b3JNb2Rlcy5EUkFXX1BPTFlHT04sXG4gIERSQVdfUkVDVEFOR0xFOiBFZGl0b3JNb2Rlcy5EUkFXX1JFQ1RBTkdMRSxcbiAgRURJVDogRWRpdG9yTW9kZXMuRURJVF9WRVJURVhcbn07XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfQVZBSUxBQkxFX0xBWUVSUyA9IFtcbiAgTEFZRVJfVFlQRVMucG9pbnQsXG4gIExBWUVSX1RZUEVTLmhleGFnb24sXG4gIExBWUVSX1RZUEVTLmFyYyxcbiAgTEFZRVJfVFlQRVMubGluZSxcbiAgTEFZRVJfVFlQRVMuaGV4YWdvbklkXG5dO1xuLy8gR1BVIEZpbHRlcmluZ1xuLyoqXG4gKiBNYXggbnVtYmVyIG9mIGZpbHRlciB2YWx1ZSBidWZmZXJzIHRoYXQgZGVjay5nbCBwcm92aWRlc1xuICovXG5leHBvcnQgY29uc3QgTUFYX0dQVV9GSUxURVJTID0gNDtcbmV4cG9ydCBjb25zdCBNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiA9IHtcbiAgd2lkdGg6IDMwMCxcbiAgaGVpZ2h0OiAyMDBcbn07XG5cbmV4cG9ydCBjb25zdCBNQVBfSU5GT19DSEFSQUNURVIgPSB7XG4gIHRpdGxlOiAxMDAsXG4gIGRlc2NyaXB0aW9uOiAxMDBcbn07XG5cbi8vIExvYWQgZGF0YVxuZXhwb3J0IGNvbnN0IExPQURJTkdfTUVUSE9EUyA9IGtleU1pcnJvcih7XG4gIHVwbG9hZDogbnVsbCxcbiAgc3RvcmFnZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBEQVRBU0VUX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICByb3c6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGNzdjogbnVsbCxcbiAga2VwbGVyZ2w6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBNQVNLX0xBWUVSX0lEID0gJ21hc2tfbGF5ZXInO1xuXG5leHBvcnQgY29uc3QgWk9PTV9MRVZFTF9MSU1JVFMgPSB7XG4gIG1pbjogMCxcbiAgbWF4OiAyMVxufTtcbiJdfQ==
902
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5qcyJdLCJuYW1lcyI6WyJBQ1RJT05fUFJFRklYIiwiQ0xPVURGUk9OVCIsIklDT05fUFJFRklYIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIkRBVEFfVEFCTEVfSUQiLCJERUxFVEVfREFUQV9JRCIsIkFERF9EQVRBX0lEIiwiRVhQT1JUX0lNQUdFX0lEIiwiRVhQT1JUX0RBVEFfSUQiLCJBRERfTUFQX1NUWUxFX0lEIiwiRVhQT1JUX01BUF9JRCIsIlNBVkVfTUFQX0lEIiwiT1ZFUldSSVRFX01BUF9JRCIsIlNIQVJFX01BUF9JRCIsIktFUExFUl9HTF9OQU1FIiwiS0VQTEVSX0dMX1ZFUlNJT04iLCJLRVBMRVJfR0xfV0VCU0lURSIsIkRJTUVOU0lPTlMiLCJzaWRlUGFuZWwiLCJ3aWR0aCIsIm1hcmdpbiIsInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCIsImhlYWRlckhlaWdodCIsIm1hcENvbnRyb2wiLCJwYWRkaW5nIiwiVEhFTUUiLCJsaWdodCIsImRhcmsiLCJiYXNlIiwiU0lERUJBUl9QQU5FTFMiLCJpZCIsImxhYmVsIiwiaWNvbkNvbXBvbmVudCIsIkxheWVycyIsIm9uQ2xpY2siLCJGaWx0ZXJGdW5uZWwiLCJDdXJzb3JDbGljayIsIlNldHRpbmdzIiwiUEFORUxTIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJzbHVnIiwiZmlsdGVyIiwibWF0Y2giLCJkZWZhdWx0VmlzaWJpbGl0eSIsIkRFRkFVTFRfTUFQX1NUWUxFUyIsInVybCIsImljb24iLCJsYXllckdyb3VwcyIsIkdFT0pTT05fRklFTERTIiwiZ2VvanNvbiIsIklDT05fRklFTERTIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJUUklQX0FSQ19GSUVMRFMiLCJsYXQwIiwibG5nMCIsImxhdDEiLCJsbmcxIiwiRklMVEVSX1RZUEVTIiwicmFuZ2UiLCJzZWxlY3QiLCJpbnB1dCIsInRpbWVSYW5nZSIsIm11bHRpU2VsZWN0IiwicG9seWdvbiIsIlNDQUxFX1RZUEVTIiwib3JkaW5hbCIsInF1YW50aWxlIiwicXVhbnRpemUiLCJsaW5lYXIiLCJzcXJ0IiwibG9nIiwicG9pbnQiLCJjdXN0b20iLCJsb2dhcml0aG1pYyIsIlNDQUxFX0ZVTkMiLCJzY2FsZUxpbmVhciIsInNjYWxlUXVhbnRpemUiLCJzY2FsZVF1YW50aWxlIiwic2NhbGVPcmRpbmFsIiwic2NhbGVTcXJ0Iiwic2NhbGVMb2ciLCJzY2FsZVBvaW50Iiwic2NhbGVUaHJlc2hvbGQiLCJBTExfRklFTERfVFlQRVMiLCJkYXRlIiwiaW50ZWdlciIsInJlYWwiLCJzdHJpbmciLCJ0aW1lc3RhbXAiLCJTT1JUX09SREVSIiwiQVNDRU5ESU5HIiwiREVTQ0VORElORyIsIlVOU09SVCIsIlRBQkxFX09QVElPTiIsIlNPUlRfQVNDIiwiU09SVF9ERVMiLCJQSU4iLCJVTlBJTiIsIkNPUFkiLCJUQUJMRV9PUFRJT05fTElTVCIsInZhbHVlIiwiZGlzcGxheSIsIkFycm93VXAiLCJjb25kaXRpb24iLCJwcm9wcyIsInNvcnRNb2RlIiwiQXJyb3dEb3duIiwiQ2FuY2VsIiwiaXNTb3J0ZWQiLCJQaW4iLCJpc1Bpbm5lZCIsIkNsaXBib2FyZCIsIk9SQU5HRSIsIlBJTksiLCJQVVJQTEUiLCJCTFVFIiwiQkxVRTIiLCJCTFVFMyIsIkdSRUVOIiwiUkVEIiwiRklMRURfVFlQRV9ESVNQTEFZIiwiY29sb3IiLCJGSUVMRF9DT0xPUlMiLCJISUdITElHSF9DT0xPUl8zRCIsIkNIQU5ORUxfU0NBTEVTIiwicmFkaXVzIiwic2l6ZSIsImN1c3RvbU1hcmtlciIsImNvbG9yQWdnciIsInNpemVBZ2dyIiwiaWRlbnRpdHkiLCJBR0dSRUdBVElPTl9UWVBFUyIsImNvdW50IiwiYXZlcmFnZSIsIm1heGltdW0iLCJtaW5pbXVtIiwibWVkaWFuIiwic3RkZXYiLCJzdW0iLCJ2YXJpYW5jZSIsIm1vZGUiLCJjb3VudFVuaXF1ZSIsImFueVZhbHVlIiwiRklFTERfVFlQRVNfQUdHUkVHQVRPUlMiLCJGSUVMRF9BR0dSRUdBVE9SUyIsImRpc3BsYXlOYW1lIiwibGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyIsImxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zIiwib3JkaW5hbEZpZWxkU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJub3RTdXBwb3J0ZWRTY2FsZU9wdHMiLCJub3RTdXBwb3J0QWdnck9wdHMiLCJERUZBVUxUX0FHR1JFR0FUSU9OIiwiRklFTERfT1BUUyIsInR5cGUiLCJzY2FsZSIsImZvcm1hdCIsImxlZ2VuZCIsImQiLCJ0b29sdGlwIiwiVE9PTFRJUF9GT1JNQVRfVFlQRVMiLCJOT05FIiwiREVDSU1BTCIsIlBFUkNFTlRBR0UiLCJEQVRFIiwiREFURV9USU1FIiwiQk9PTEVBTiIsIkNIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJhY2N1Iiwia2V5IiwiZnQiLCJsZW5ndGgiLCJERUZBVUxUX0xBWUVSX0NPTE9SIiwidHJpcEFyYyIsImJlZ2ludHJpcF9sYXQiLCJkcm9wb2ZmX2xhdCIsInJlcXVlc3RfbGF0IiwiREVGQVVMVF9UT09MVElQX0ZJRUxEUyIsIk5PX1ZBTFVFX0NPTE9SIiwiVU5LTk9XTl9DT0xPUiIsIkxBWUVSX0JMRU5ESU5HUyIsImFkZGl0aXZlIiwiYmxlbmRGdW5jIiwiYmxlbmRFcXVhdGlvbiIsIm5vcm1hbCIsInN1YnRyYWN0aXZlIiwiTUFYX0RFRkFVTFRfVE9PTFRJUFMiLCJSRVNPTFVUSU9OUyIsIk9ORV9YIiwiVFdPX1giLCJFWFBPUlRfSU1HX1JBVElPUyIsIlNDUkVFTiIsIkZPVVJfQllfVEhSRUUiLCJTSVhURUVOX0JZX05JTkUiLCJDVVNUT00iLCJFWFBPUlRfSU1HX1JBVElPX09QVElPTlMiLCJnZXRTaXplIiwic2NyZWVuVyIsInNjcmVlbkgiLCJoZWlnaHQiLCJoaWRkZW4iLCJtYXBXIiwibWFwSCIsIk1hdGgiLCJyb3VuZCIsIkVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TIiwiYXZhaWxhYmxlIiwiRVhQT1JUX0RBVEFfVFlQRSIsIkNTViIsIkVYUE9SVF9EQVRBX1RZUEVfT1BUSU9OUyIsInRvTG93ZXJDYXNlIiwiRVhQT1JUX01BUF9GT1JNQVRTIiwiSFRNTCIsIkpTT04iLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJSRUFEIiwiRURJVCIsIkVYUE9SVF9NQVBfRk9STUFUX09QVElPTlMiLCJlbnRyaWVzIiwibWFwIiwiZW50cnkiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TIiwiREVGQVVMVF9VVUlEX0NPVU5UIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUVTU0FHRSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwiaW5mbyIsImVycm9yIiwid2FybmluZyIsInN1Y2Nlc3MiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJnbG9iYWwiLCJmaWxlIiwiVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUiLCJCQVNFX1NQRUVEIiwiRlBTIiwiQU5JTUFUSU9OX1dJTkRPVyIsImZyZWUiLCJpbmNyZW1lbnRhbCIsImludGVydmFsIiwiREVGQVVMVF9USU1FX0ZPUk1BVCIsIlNQRUVEX0NPTlRST0xfUkFOR0UiLCJTUEVFRF9DT05UUk9MX1NURVAiLCJHRU9DT0RFUl9EQVRBU0VUX05BTUUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsIkdFT0NPREVSX0dFT19PRkZTRVQiLCJHRU9DT0RFUl9JQ09OX0NPTE9SIiwiR0VPQ09ERVJfSUNPTl9TSVpFIiwiRURJVE9SX01PREVTIiwiUkVBRF9PTkxZIiwiRWRpdG9yTW9kZXMiLCJEUkFXX1BPTFlHT04iLCJEUkFXX1JFQ1RBTkdMRSIsIkVESVRfVkVSVEVYIiwiRURJVE9SX0FWQUlMQUJMRV9MQVlFUlMiLCJMQVlFUl9UWVBFUyIsImhleGFnb24iLCJhcmMiLCJsaW5lIiwiaGV4YWdvbklkIiwiTUFYX0dQVV9GSUxURVJTIiwiTUFQX1RIVU1CTkFJTF9ESU1FTlNJT04iLCJNQVBfSU5GT19DSEFSQUNURVIiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiTE9BRElOR19NRVRIT0RTIiwidXBsb2FkIiwic3RvcmFnZSIsIkRBVEFTRVRfRk9STUFUUyIsInJvdyIsImNzdiIsImtlcGxlcmdsIiwiTUFQX0NPTlRST0xTIiwidmlzaWJsZUxheWVycyIsIm1hcExlZ2VuZCIsInRvZ2dsZTNkIiwic3BsaXRNYXAiLCJtYXBEcmF3IiwibWFwTG9jYWxlIiwiTUFTS19MQVlFUl9JRCIsIlpPT01fTEVWRUxfTElNSVRTIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFFQTs7QUFVQTs7QUFXQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUcsY0FBdEI7O0FBQ0EsSUFBTUMsVUFBVSxHQUFHLGlEQUFuQjs7QUFDQSxJQUFNQyxXQUFXLGFBQU1ELFVBQU4sYUFBakI7O0FBQ0EsSUFBTUUsc0JBQXNCLEdBQUcsd0JBQS9CLEMsQ0FFUDs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGFBQWEsR0FBRyxXQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsY0FBYyxHQUFHLFlBQXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxXQUFXLEdBQUcsU0FBcEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyxhQUF4QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsY0FBYyxHQUFHLFlBQXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBRyxhQUF6QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsYUFBYSxHQUFHLFdBQXRCO0FBQ1A7QUFDQTtBQUNBO0FB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QU1DLGVBQWUsR0FBRywyQkFBVTtBQUN2Q0MsRUFBQUEsR0FBRyxFQUFFLElBRGtDO0FBRXZDOU4sRUFBQUEsT0FBTyxFQUFFLElBRjhCO0FBR3ZDK04sRUFBQUEsR0FBRyxFQUFFLElBSGtDO0FBSXZDQyxFQUFBQSxRQUFRLEVBQUU7QUFKNkIsQ0FBVixDQUF4Qjs7QUFPQSxJQUFNQyxZQUFZLEdBQUcsMkJBQVU7QUFDcENDLEVBQUFBLGFBQWEsRUFBRSxJQURxQjtBQUVwQ0MsRUFBQUEsU0FBUyxFQUFFLElBRnlCO0FBR3BDQyxFQUFBQSxRQUFRLEVBQUUsSUFIMEI7QUFJcENDLEVBQUFBLFFBQVEsRUFBRSxJQUowQjtBQUtwQ0MsRUFBQUEsT0FBTyxFQUFFLElBTDJCO0FBTXBDQyxFQUFBQSxTQUFTLEVBQUU7QUFOeUIsQ0FBVixDQUFyQjs7QUFTQSxJQUFNQyxhQUFhLEdBQUcsWUFBdEI7O0FBRUEsSUFBTUMsaUJBQWlCLEdBQUc7QUFDL0JDLEVBQUFBLEdBQUcsRUFBRSxDQUQwQjtBQUUvQkMsRUFBQUEsR0FBRyxFQUFFO0FBRjBCLENBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IGtleU1pcnJvciBmcm9tICdrZXltaXJyb3InO1xuaW1wb3J0IHtFZGl0b3JNb2Rlc30gZnJvbSAncmVhY3QtbWFwLWdsLWRyYXcnO1xuXG5pbXBvcnQge1xuICBzY2FsZUxpbmVhcixcbiAgc2NhbGVRdWFudGl6ZSxcbiAgc2NhbGVRdWFudGlsZSxcbiAgc2NhbGVPcmRpbmFsLFxuICBzY2FsZVNxcnQsXG4gIHNjYWxlTG9nLFxuICBzY2FsZVBvaW50LFxuICBzY2FsZVRocmVzaG9sZFxufSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQge1xuICBMYXllcnMsXG4gIEZpbHRlckZ1bm5lbCxcbiAgU2V0dGluZ3MsXG4gIEN1cnNvckNsaWNrLFxuICBQaW4sXG4gIEFycm93RG93bixcbiAgQXJyb3dVcCxcbiAgQ2xpcGJvYXJkLFxuICBDYW5jZWxcbn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtnZXRIVE1MTWFwTW9kZVRpbGVVcmx9IGZyb20gJ3V0aWxzL3V0aWxzJztcbmltcG9ydCB7VE9PTFRJUF9GT1JNQVRfVFlQRVN9IGZyb20gJy4vdG9vbHRpcCc7XG5pbXBvcnQge0xBWUVSX1RZUEVTfSBmcm9tICdsYXllcnMvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX1BSRUZJWCA9ICdAQGtlcGxlci5nbC8nO1xuZXhwb3J0IGNvbnN0IENMT1VERlJPTlQgPSAnaHR0cHM6Ly9kMWEzZjRzcGF6enJwNC5jbG91ZGZyb250Lm5ldC9rZXBsZXIuZ2wnO1xuZXhwb3J0IGNvbnN0IElDT05fUFJFRklYID0gYCR7Q0xPVURGUk9OVH0vZ2VvZHVkZWA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCA9ICdodHRwczovL2FwaS5tYXBib3guY29tJztcblxuLy8gTW9kYWwgSWRzXG4vKipcbiAqIE1vZGFsIGlkOiBkYXRhIHRhYmxlXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBEQVRBX1RBQkxFX0lEID0gJ2RhdGFUYWJsZSc7XG4vKipcbiAqIE1vZGFsIGlkOiBkZWxldGUgZGF0YXNldCBjb25maXJtIGRpYWxvZ1xuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVMRVRFX0RBVEFfSUQgPSAnZGVsZXRlRGF0YSc7XG4vKipcbiAqIE1vZGFsIGlkOiBhZGQgZGF0YSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgQUREX0RBVEFfSUQgPSAnYWRkRGF0YSc7XG4vKipcbiAqIE1vZGFsIGlkOiBleHBvcnQgaW1hZ2UgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUFHRV9JRCA9ICdleHBvcnRJbWFnZSc7XG4vKipcbiAqIE1vZGFsIGlkOiBleHBvcnQgZGF0YSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfSUQgPSAnZXhwb3J0RGF0YSc7XG4vKipcbiAqIE1vZGFsIGlkOiBhZGQgY3VzdG9tIG1hcCBzdHlsZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgQUREX01BUF9TVFlMRV9JRCA9ICdhZGRNYXBTdHlsZSc7XG4vKipcbiAqIE1vZGFsIGlkOiBleHBvcnQgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0lEID0gJ2V4cG9ydE1hcCc7XG4vKipcbiAqIE1vZGFsIGlkOiBzYXZlIG1hcCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0FWRV9NQVBfSUQgPSAnc2F2ZU1hcCc7XG4vKipcbiAqIE1vZGFsIGlkOiBjb25maXJtIHRvIG92ZXJ3cml0ZSBzYXZlZCBtYXBcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IE9WRVJXUklURV9NQVBfSUQgPSAnb3ZlcndyaXRlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IHNoYXJlIG1hcCB1cmwgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IFNIQVJFX01BUF9JRCA9ICdzaGFyZU1hcCc7XG5cbmV4cG9ydCBjb25zdCBLRVBMRVJfR0xfTkFNRSA9ICdrZXBsZXIuZ2wnO1xuXG4vLyBfX1BBQ0tBR0VfVkVSU0lPTl9fIGlzIGF1dG9tYXRpY2FsbHkgaW5qZWN0ZWQgYnkgQmFiZWwvV2VicGFjayBkdXJpbmcgdGhlIGJ1aWxkaW5nIHByb2Nlc3Ncbi8vIFNpbmNlIHdlIGFyZSBpbmplY3RpbmcgdGhpcyBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3Mgd2l0aCBiYWJlbFxuLy8gd2hpbGUgZGV2ZWxvcGluZyBWRVJTSU9OIGlzIG5vdCBkZWZpbmVkLCB3ZSBjYXB0dXJlIHRoZSBleGNlcHRpb24gYW5kIHJldHVyblxuLy8gYW4gZW1wdHkgc3RyaW5nIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcmV0cmlldmUgdGhlIGxhdGVzdCB1bWQgdmVyc2lvblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9WRVJTSU9OID0gJ19fUEFDS0FHRV9WRVJTSU9OX18nO1xuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9XRUJTSVRFID0gJ2h0dHA6Ly9rZXBsZXIuZ2wvJztcblxuZXhwb3J0IGNvbnN0IERJTUVOU0lPTlMgPSB7XG4gIHNpZGVQYW5lbDoge1xuICAgIHdpZHRoOiAzMDAsXG4gICAgbWFyZ2luOiB7dG9wOiAyMCwgbGVmdDogMjAsIGJvdHRvbTogMzAsIHJpZ2h0OiAyMH0sXG4gICAgaGVhZGVySGVpZ2h0OiA5NlxuICB9LFxuICBtYXBDb250cm9sOiB7XG4gICAgd2lkdGg6IDE4NCxcbiAgICBwYWRkaW5nOiAxMlxuICB9XG59O1xuXG4vKipcbiAqIFRoZW1lIG5hbWUgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIGBLZXBsZXJHbGAgYHByb3AudGhlbWVgLlxuICogQXZhaWxhYmxlIHRoZW1lcyBhcmUgYFRIRU1FLmxpZ2h0YCBhbmQgYFRIRU1FLmRhcmtgLiBEZWZhdWx0IHRoZW1lIGlzIGBUSEVNRS5kYXJrYFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7b2JqZWN0fVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBjb25zdCBNYXAgPSAoKSA9PiA8S2VwbGVyR2wgdGhlbWU9e1RIRU1FLmxpZ2h0fSBpZD1cIm1hcFwiLz5cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgVEhFTUUgPSBrZXlNaXJyb3Ioe1xuICBsaWdodDogbnVsbCxcbiAgZGFyazogbnVsbCxcbiAgYmFzZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBTSURFQkFSX1BBTkVMUyA9IFtcbiAge1xuICAgIGlkOiAnbGF5ZXInLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMubGF5ZXInLFxuICAgIGljb25Db21wb25lbnQ6IExheWVycyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ZpbHRlcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5maWx0ZXInLFxuICAgIGljb25Db21wb25lbnQ6IEZpbHRlckZ1bm5lbCxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ludGVyYWN0aW9uJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmludGVyYWN0aW9uJyxcbiAgICBpY29uQ29tcG9uZW50OiBDdXJzb3JDbGljayxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ21hcCcsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5iYXNlbWFwJyxcbiAgICBpY29uQ29tcG9uZW50OiBTZXR0aW5ncyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH1cbl07XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmV4cG9ydCBjb25zdCBQQU5FTFMgPSBTSURFQkFSX1BBTkVMUztcblxuLy8gTUFQIFNUWUxFU1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9HUk9VUFMgPSBbXG4gIHtcbiAgICBzbHVnOiAnbGFiZWwnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0obGFiZWx8cGxhY2UtfHBvaS0pKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAncm9hZCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShyb2FkfHJhaWx3YXl8dHVubmVsfHN0cmVldHxicmlkZ2UpKSg/IS4qbGFiZWwpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICdib3JkZXInLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC9ib3JkZXJ8Ym91bmRhcmllcy8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2J1aWxkaW5nJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYnVpbGRpbmcvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3dhdGVyJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHdhdGVyfHN0cmVhbXxmZXJyeSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICdsYW5kJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHBhcmtzfGxhbmRjb3ZlcnxpbmR1c3RyaWFsfHNhbmR8aGlsbHNoYWRlKSkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJzNkIGJ1aWxkaW5nJyxcbiAgICBmaWx0ZXI6ICgpID0+IGZhbHNlLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBfU1RZTEVTID0gW1xuICB7XG4gICAgaWQ6ICdkYXJrJyxcbiAgICBsYWJlbDogJ0RhcmsnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jam9xYmJmNmw5azMwMnNsOTZ0eXZrYTA5JyxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9EQVJLX1YyLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTXG4gIH0sXG4gIHtcbiAgICBpZDogJ2xpZ2h0JyxcbiAgICBsYWJlbDogJ0xpZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pvcWI5ajMzOWsxZjJzbDl0NWljNWJuNCcsXG4gICAgaWNvbjogYCR7SUNPTl9QUkVGSVh9L1VCRVJfTElHSFRfVjIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFNcbiAgfSxcbiAge1xuICAgIGlkOiAnbXV0ZWQnLFxuICAgIGxhYmVsOiAnTXV0ZWQgTGlnaHQnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jamZ5bDAza3AxdHVsMnNtZjV2MnRiZGQ0JyxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9MSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQU1xuICB9LFxuICB7XG4gICAgaWQ6ICdtdXRlZF9uaWdodCcsXG4gICAgbGFiZWw6ICdNdXRlZCBOaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnhobGlrbWFqMWIyc295emV2bnl3Z3MnLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX01VVEVEX05JR0hULnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTXG4gIH0sXG4gIHtcbiAgICBpZDogJ3NhdGVsbGl0ZScsXG4gICAgbGFiZWw6ICdTYXRlbGxpdGUnLFxuICAgIHVybDogYG1hcGJveDovL3N0eWxlcy9tYXBib3gvc2F0ZWxsaXRlLXY5YCxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9TQVRFTExJVEUucG5nYFxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgR0VPSlNPTl9GSUVMRFMgPSB7XG4gIGdlb2pzb246IFsnX2dlb2pzb24nLCAnYWxsX3BvaW50cycsICdnZW9qc29uJ11cbn07XG5cbmV4cG9ydCBjb25zdCBJQ09OX0ZJRUxEUyA9IHtcbiAgaWNvbjogWydpY29uJ11cbn07XG5cbmV4cG9ydCBjb25zdCBUUklQX1BPSU5UX0ZJRUxEUyA9IFtcbiAgWydsYXQnLCAnbG5nJ10sXG4gIFsnbGF0JywgJ2xvbiddLFxuICBbJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZSddXG5dO1xuXG5leHBvcnQgY29uc3QgVFJJUF9BUkNfRklFTERTID0ge1xuICBsYXQwOiAnYmVnaW50cmlwJyxcbiAgbG5nMDogJ2JlZ2ludHJpcCcsXG4gIGxhdDE6ICdkcm9wb2ZmJyxcbiAgbG5nMTogJ2Ryb3BvZmYnXG59O1xuXG5leHBvcnQgY29uc3QgRklMVEVSX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgcmFuZ2U6IG51bGwsXG4gIHNlbGVjdDogbnVsbCxcbiAgaW5wdXQ6IG51bGwsXG4gIHRpbWVSYW5nZTogbnVsbCxcbiAgbXVsdGlTZWxlY3Q6IG51bGwsXG4gIHBvbHlnb246IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0NBTEVfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBvcmRpbmFsOiBudWxsLFxuICBxdWFudGlsZTogbnVsbCxcbiAgcXVhbnRpemU6IG51bGwsXG4gIGxpbmVhcjogbnVsbCxcbiAgc3FydDogbnVsbCxcbiAgbG9nOiBudWxsLFxuXG4gIC8vIG9yZGluYWwgZG9tYWluIHRvIGxpbmVhciByYW5nZVxuICBwb2ludDogbnVsbCxcbiAgY3VzdG9tOiBudWxsLFxuICAvLyBVSS1vbmx5IHR5cGUsIHJlc29sdmluZyBhcyBjdXN0b21cbiAgbG9nYXJpdGhtaWM6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0NBTEVfRlVOQyA9IHtcbiAgW1NDQUxFX1RZUEVTLmxpbmVhcl06IHNjYWxlTGluZWFyLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpemVdOiBzY2FsZVF1YW50aXplLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpbGVdOiBzY2FsZVF1YW50aWxlLFxuICBbU0NBTEVfVFlQRVMub3JkaW5hbF06IHNjYWxlT3JkaW5hbCxcbiAgW1NDQUxFX1RZUEVTLnNxcnRdOiBzY2FsZVNxcnQsXG4gIFtTQ0FMRV9UWVBFUy5sb2ddOiBzY2FsZUxvZyxcbiAgW1NDQUxFX1RZUEVTLnBvaW50XTogc2NhbGVQb2ludCxcbiAgW1NDQUxFX1RZUEVTLmN1c3RvbV06IHNjYWxlVGhyZXNob2xkXG59O1xuXG5leHBvcnQgY29uc3QgQUxMX0ZJRUxEX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgYm9vbGVhbjogbnVsbCxcbiAgZGF0ZTogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgaW50ZWdlcjogbnVsbCxcbiAgcmVhbDogbnVsbCxcbiAgc3RyaW5nOiBudWxsLFxuICB0aW1lc3RhbXA6IG51bGwsXG4gIHBvaW50OiBudWxsXG59KTtcblxuLy8gRGF0YSBUYWJsZVxuZXhwb3J0IGNvbnN0IFNPUlRfT1JERVIgPSBrZXlNaXJyb3Ioe1xuICBBU0NFTkRJTkc6IG51bGwsXG4gIERFU0NFTkRJTkc6IG51bGwsXG4gIFVOU09SVDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT04gPSBrZXlNaXJyb3Ioe1xuICBTT1JUX0FTQzogbnVsbCxcbiAgU09SVF9ERVM6IG51bGwsXG4gIFVOU09SVDogbnVsbCxcbiAgUElOOiBudWxsLFxuICBVTlBJTjogbnVsbCxcbiAgQ09QWTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05fTElTVCA9IFtcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9BU0MsXG4gICAgZGlzcGxheTogJ1NvcnQgQXNjZW5kaW5nJyxcbiAgICBpY29uOiBBcnJvd1VwLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246IEFycm93RG93bixcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLnNvcnRNb2RlICE9PSBTT1JUX09SREVSLkRFU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5TT1JULFxuICAgIGRpc3BsYXk6ICdVbnNvcnQgQ29sdW1uJyxcbiAgICBpY29uOiBDYW5jZWwsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5pc1NvcnRlZFxuICB9LFxuICB7dmFsdWU6IFRBQkxFX09QVElPTi5QSU4sIGRpc3BsYXk6ICdQaW4gQ29sdW1uJywgaWNvbjogUGluLCBjb25kaXRpb246IHByb3BzID0+ICFwcm9wcy5pc1Bpbm5lZH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlVOUElOLFxuICAgIGRpc3BsYXk6ICdVbnBpbiBDb2x1bW4nLFxuICAgIGljb246IENhbmNlbCxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzUGlubmVkXG4gIH0sXG4gIHt2YWx1ZTogVEFCTEVfT1BUSU9OLkNPUFksIGRpc3BsYXk6ICdDb3B5IENvbHVtbicsIGljb246IENsaXBib2FyZH1cbl07XG5cbmNvbnN0IE9SQU5HRSA9ICcyNDgsIDE5NCwgMjgnO1xuY29uc3QgUElOSyA9ICcyMzEsIDE4OSwgMTk0JztcbmNvbnN0IFBVUlBMRSA9ICcxNjAsIDEwNiwgMjA2JztcbmNvbnN0IEJMVUUgPSAnMTQwLCAyMTAsIDIwNSc7XG5jb25zdCBCTFVFMiA9ICcxMDYsIDE2MCwgMjA2JztcbmNvbnN0IEJMVUUzID0gJzAsIDE3MiwgMjM3JztcbmNvbnN0IEdSRUVOID0gJzEwNiwgMTYwLCA1Nic7XG5jb25zdCBSRUQgPSAnMjM3LCA4OCwgMTA2JztcblxuZXhwb3J0IGNvbnN0IEZJTEVEX1RZUEVfRElTUExBWSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIGxhYmVsOiAnYm9vbCcsXG4gICAgY29sb3I6IFBJTktcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXToge1xuICAgIGxhYmVsOiAnZGF0ZScsXG4gICAgY29sb3I6IFBVUlBMRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB7XG4gICAgbGFiZWw6ICdudW1iZXInLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXToge1xuICAgIGxhYmVsOiAnbnVtYmVyJyxcbiAgICBjb2xvcjogT1JBTkdFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIGxhYmVsOiAnc3RyaW5nJyxcbiAgICBjb2xvcjogQkxVRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICBsYWJlbDogJ3RpbWUnLFxuICAgIGNvbG9yOiBHUkVFTlxuICB9LFxuICAvLyBmaWVsZCBwYWlyc1xuICBbQUxMX0ZJRUxEX1RZUEVTLnBvaW50XToge1xuICAgIGxhYmVsOiAncG9pbnQnLFxuICAgIGNvbG9yOiBCTFVFM1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfQ09MT1JTID0ge1xuICBkZWZhdWx0OiBSRURcbn07XG5leHBvcnQgY29uc3QgSElHSExJR0hfQ09MT1JfM0QgPSBbMjU1LCAyNTUsIDI1NSwgNjBdO1xuZXhwb3J0IGNvbnN0IENIQU5ORUxfU0NBTEVTID0ga2V5TWlycm9yKHtcbiAgY29sb3I6IG51bGwsXG4gIHJhZGl1czogbnVsbCxcbiAgc2l6ZTogbnVsbCxcbiAgY3VzdG9tTWFya2VyOiBudWxsLFxuICBjb2xvckFnZ3I6IG51bGwsXG4gIHNpemVBZ2dyOiBudWxsLFxuICBpZGVudGl0eTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBBR0dSRUdBVElPTl9UWVBFUyA9IHtcbiAgLy8gZGVmYXVsdFxuICBjb3VudDogJ2NvdW50JyxcbiAgLy8gbGluZWFyXG4gIGF2ZXJhZ2U6ICdhdmVyYWdlJyxcbiAgbWF4aW11bTogJ21heGltdW0nLFxuICBtaW5pbXVtOiAnbWluaW11bScsXG4gIG1lZGlhbjogJ21lZGlhbicsXG4gIHN0ZGV2OiAnc3RkZXYnLFxuICBzdW06ICdzdW0nLFxuICB2YXJpYW5jZTogJ3ZhcmlhbmNlJyxcbiAgLy8gb3JkaW5hbFxuICBtb2RlOiAnbW9kZScsXG4gIGNvdW50VW5pcXVlOiAnY291bnQgdW5pcXVlJyxcbiAgYW55VmFsdWU6ICdhbnlfdmFsdWUnXG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfVFlQRVNfQUdHUkVHQVRPUlMgPSB7XG4gIGRhdGU6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGludGVnZXI6IFtcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5jb3VudCxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWluaW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VcbiAgXSxcbiAgcmVhbDogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmNvdW50LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZVxuICBdLFxuICBzdHJpbmc6IFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlLCBBR0dSRUdBVElPTl9UWVBFUy5hbnlWYWx1ZV0sXG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgcG9pbnQ6IG51bGxcbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9BR0dSRUdBVE9SUyA9IFtcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5jb3VudCxcbiAgICBkaXNwbGF5TmFtZTogJ0NPVU5UJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgZGlzcGxheU5hbWU6ICdBVkcnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBkaXNwbGF5TmFtZTogJ01BWCdcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIGRpc3BsYXlOYW1lOiAnTUlOJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIGRpc3BsYXlOYW1lOiAnU1RERVYnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMuc3VtLFxuICAgIGRpc3BsYXlOYW1lOiAnU1VNJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlLFxuICAgIGRpc3BsYXlOYW1lOiAnVkFSSUFOQ0UnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMubW9kZSxcbiAgICBkaXNwbGF5TmFtZTogJ01PREUnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMuYW55VmFsdWUsXG4gICAgZGlzcGxheU5hbWU6ICdBTlkgVkFMVUUnXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBsaW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW1NDQUxFX1RZUEVTLnNxcnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gIFtDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXJdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5pZGVudGl0eV06IFtdXG59O1xuXG5leHBvcnQgY29uc3QgbGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogW1NDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2VdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWluaW11bV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2XTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3VtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dXG4gIH0sXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2VdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWluaW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2XTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3VtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBvcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW1NDQUxFX1RZUEVTLnBvaW50XSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbU0NBTEVfVFlQRVMucG9pbnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY3VzdG9tTWFya2VyXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHldOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgLy8gW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5saW5lYXJdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hbnlWYWx1ZV06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRVbmlxdWVdOiBbXG4gICAgICBTQ0FMRV9UWVBFUy5xdWFudGl6ZSxcbiAgICAgIFNDQUxFX1RZUEVTLnF1YW50aWxlLFxuICAgICAgU0NBTEVfVFlQRVMuY3VzdG9tXG4gICAgXVxuICB9LFxuXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubW9kZV06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuYW55VmFsdWVdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRlZFNjYWxlT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmN1c3RvbU1hcmtlcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHldOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRBZ2dyT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHt9LFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7fVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGFnZ3JlZ2F0aW9uIGFyZSBiYXNlZCBvbiBvY3VudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BR0dSRUdBVElPTiA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dXG4gIH0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddXG4gIH1cbn07XG5cbi8qKlxuICogRGVmaW5lIHdoYXQgdHlwZSBvZiBzY2FsZSBvcGVyYXRpb24gaXMgYWxsb3dlZCBvbiBlYWNoIHR5cGUgb2YgZmllbGRzXG4gKi9cbmV4cG9ydCBjb25zdCBGSUVMRF9PUFRTID0ge1xuICBzdHJpbmc6IHtcbiAgICB0eXBlOiAnY2F0ZWdvcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICByZWFsOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5saW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTCxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgdGltZXN0YW1wOiB7XG4gICAgdHlwZTogJ3RpbWUnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUVcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIGludGVnZXI6IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBib29sZWFuOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5CT09MRUFOXVxuICAgIH1cbiAgfSxcbiAgZGF0ZToge1xuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFXVxuICAgIH1cbiAgfSxcbiAgZ2VvanNvbjoge1xuICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyA9IE9iamVjdC5rZXlzKENIQU5ORUxfU0NBTEVTKS5yZWR1Y2UoXG4gIChhY2N1LCBrZXkpID0+ICh7XG4gICAgLi4uYWNjdSxcbiAgICBba2V5XTogT2JqZWN0LmtleXMoRklFTERfT1BUUykuZmlsdGVyKGZ0ID0+IE9iamVjdC5rZXlzKEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0pLmxlbmd0aClcbiAgfSksXG4gIHt9XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFMgPSBbXTtcblxuZXhwb3J0IGNvbnN0IE5PX1ZBTFVFX0NPTE9SID0gWzAsIDAsIDAsIDBdO1xuZXhwb3J0IGNvbnN0IFVOS05PV05fQ09MT1IgPSBbMTM0LCAxNDEsIDE0NV07XG5cbmV4cG9ydCBjb25zdCBMQVlFUl9CTEVORElOR1MgPSB7XG4gIGFkZGl0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLmFkZGl0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246ICdGVU5DX0FERCdcbiAgfSxcbiAgbm9ybWFsOiB7XG4gICAgLy8gcmVmZXJlbmNlIHRvXG4gICAgLy8gaHR0cHM6Ly9saW1udS5jb20vd2ViZ2wtYmxlbmRpbmcteW91cmUtcHJvYmFibHktd3JvbmcvXG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLm5vcm1hbCcsXG4gICAgYmxlbmRGdW5jOiBbJ1NSQ19BTFBIQScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJywgJ09ORScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX0FERCcsICdGVU5DX0FERCddXG4gIH0sXG4gIHN1YnRyYWN0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLnN1YnRyYWN0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnT05FJywgJ09ORV9NSU5VU19EU1RfQ09MT1InLCAnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246IFsnRlVOQ19TVUJUUkFDVCcsICdGVU5DX0FERCddXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNQVhfREVGQVVMVF9UT09MVElQUyA9IDU7XG5cbmV4cG9ydCBjb25zdCBSRVNPTFVUSU9OUyA9IGtleU1pcnJvcih7XG4gIE9ORV9YOiBudWxsLFxuICBUV09fWDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPUyA9IGtleU1pcnJvcih7XG4gIFNDUkVFTjogbnVsbCxcbiAgRk9VUl9CWV9USFJFRTogbnVsbCxcbiAgU0lYVEVFTl9CWV9OSU5FOiBudWxsLFxuICBDVVNUT006IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLlNDUkVFTixcbiAgICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvT3JpZ2luYWxTY3JlZW4nLFxuICAgIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe3dpZHRoOiBzY3JlZW5XLCBoZWlnaHQ6IHNjcmVlbkh9KVxuICB9LFxuICB7XG4gICAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkNVU1RPTSxcbiAgICBoaWRkZW46IHRydWUsXG4gICAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpb0N1c3RvbScsXG4gICAgZ2V0U2l6ZTogKG1hcFcsIG1hcEgpID0+ICh7d2lkdGg6IG1hcFcsIGhlaWdodDogbWFwSH0pXG4gIH0sXG4gIHtcbiAgICBpZDogRVhQT1JUX0lNR19SQVRJT1MuRk9VUl9CWV9USFJFRSxcbiAgICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvNF8zJyxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjc1KVxuICAgIH0pXG4gIH0sXG4gIHtcbiAgICBpZDogRVhQT1JUX0lNR19SQVRJT1MuU0lYVEVFTl9CWV9OSU5FLFxuICAgIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW8xNl85JyxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjU2MjUpXG4gICAgfSlcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IFJFU09MVVRJT05TLk9ORV9YLFxuICAgIGxhYmVsOiAnMXgnLFxuICAgIGF2YWlsYWJsZTogdHJ1ZSxcbiAgICBzY2FsZTogMSxcbiAgICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgICAgaGVpZ2h0OiBzY3JlZW5IXG4gICAgfSlcbiAgfSxcbiAge1xuICAgIGlkOiBSRVNPTFVUSU9OUy5UV09fWCxcbiAgICBsYWJlbDogJzJ4JyxcbiAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgc2NhbGU6IDIsXG4gICAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7XG4gICAgICB3aWR0aDogc2NyZWVuVyAqIDIsXG4gICAgICBoZWlnaHQ6IHNjcmVlbkggKiAyXG4gICAgfSlcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEUgPSBrZXlNaXJyb3Ioe1xuICBDU1Y6IG51bGxcbiAgLy8gU0hBUEVGSUxFOiBudWxsLFxuICAvLyBKU09OOiBudWxsLFxuICAvLyBHRU9KU09OOiBudWxsLFxuICAvLyBUT1BPSlNPTjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFX09QVElPTlMgPSBbXG4gIHtcbiAgICBpZDogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gICAgbGFiZWw6IEVYUE9SVF9EQVRBX1RZUEUuQ1NWLnRvTG93ZXJDYXNlKCksXG4gICAgYXZhaWxhYmxlOiB0cnVlXG4gIH1cbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlNIQVBFRklMRSxcbiAgLy8gICBsYWJlbDogJ3NoYXBlZmlsZScsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuSlNPTixcbiAgLy8gICBsYWJlbDogJ2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkdFT0pTT04sXG4gIC8vICAgbGFiZWw6ICdnZW9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5UT1BPSlNPTixcbiAgLy8gICBsYWJlbDogJ3RvcG9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH1cbl07XG5cbi8vIEV4cG9ydCBtYXAgdHlwZXNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICBIVE1MOiBudWxsLFxuICBKU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9IVE1MX01BUF9NT0RFUyA9IGtleU1pcnJvcih7XG4gIFJFQUQ6IG51bGwsXG4gIEVESVQ6IG51bGxcbn0pO1xuXG4vLyBFeHBvcnQgbWFwIG9wdGlvbnNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX01BUF9GT1JNQVRTKS5tYXAoZW50cnkgPT4gKHtcbiAgaWQ6IGVudHJ5WzBdLFxuICBsYWJlbDogZW50cnlbMV0udG9Mb3dlckNhc2UoKSxcbiAgYXZhaWxhYmxlOiB0cnVlXG59KSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX0hUTUxfTUFQX01PREVTKS5tYXAoZW50cnkgPT4gKHtcbiAgaWQ6IGVudHJ5WzBdLFxuICBsYWJlbDogYG1vZGFsLmV4cG9ydE1hcC5odG1sLiR7ZW50cnlbMV0udG9Mb3dlckNhc2UoKX1gLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIHVybDogZ2V0SFRNTE1hcE1vZGVUaWxlVXJsKGVudHJ5WzFdKVxufSkpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9VVUlEX0NPVU5UID0gNjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UgPSAnTUVTU0FHRV9OT1RfUFJPVklERUQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBpbmZvOiBudWxsLFxuICBlcnJvcjogbnVsbCxcbiAgd2FybmluZzogbnVsbCxcbiAgc3VjY2VzczogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MgPSBrZXlNaXJyb3Ioe1xuICBnbG9iYWw6IG51bGwsXG4gIGZpbGU6IG51bGxcbn0pO1xuXG4vLyBNaW5pbXVtIHRpbWUgYmV0d2VlbiBpZGVudGljYWwgbm90aWZpY2F0aW9ucyBhYm91dCBkZWNrLmdsIGVycm9yc1xuZXhwb3J0IGNvbnN0IFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FID0gMjUwMDtcblxuLy8gQW5pbWF0aW9uXG5leHBvcnQgY29uc3QgQkFTRV9TUEVFRCA9IDYwMDtcbmV4cG9ydCBjb25zdCBGUFMgPSA2MDtcblxuLyoqXG4gKiA0IEFuaW1hdGlvbiBXaW5kb3cgVHlwZXNcbiAqIDEuIGZyZWVcbiAqICB8LT4gIHwtPlxuICogQ3VycmVudCB0aW1lIGlzIGEgZml4ZWQgcmFuZ2UsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lcyBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHdpbmRvd1xuICogVGhlIGluY3JlbWVudCBpZCBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiAyLiBpbmNyZW1lbnRhbFxuICogfCAgICB8LT5cbiAqIFNhbWUgYXMgZnJlZSwgY3VycmVudCB0aW1lIGlzIGEgZ3Jvd2luZyByYW5nZSwgb25seSB0aGUgbWF4IHZhbHVlIG9mIHJhbmdlIGluY3JlbWVudCBkdXJpbmcgYW5pbWF0aW9uLlxuICogVGhlIGluY3JlbWVudCBpcyBhbHNvIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDMuIHBvaW50XG4gKiBvIC0+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LCBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBmcmFtZSBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHBvaW50XG4gKiBUaGUgaW5jcmVtZW50IGlzIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDQuIGludGVydmFsXG4gKiBvIH4+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LiBBbiBhcnJheSBvZiBzb3J0ZWQgdGltZSBzdGVwcyBuZWVkIHRvIGJlIHByb3ZpZGVkLlxuICogYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gYXQgYSBpbnRlcnZhbCB3aGVuIHRoZSBwb2ludCBqdW1wcyB0byB0aGUgbmV4dCBzdGVwXG4gKi9cbmV4cG9ydCBjb25zdCBBTklNQVRJT05fV0lORE9XID0ga2V5TWlycm9yKHtcbiAgZnJlZTogbnVsbCxcbiAgaW5jcmVtZW50YWw6IG51bGwsXG4gIHBvaW50OiBudWxsLFxuICBpbnRlcnZhbDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FX0ZPUk1BVCA9ICdNTS9ERC9ZWSBISDptbTpzc2EnO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfUkFOR0UgPSBbMCwgMTBdO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfU1RFUCA9IDAuMDAxO1xuXG4vLyBHZW9jb2RlclxuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0RBVEFTRVRfTkFNRSA9ICdnZW9jb2Rlcl9kYXRhc2V0JztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9MQVlFUl9JRCA9ICdnZW9jb2Rlcl9sYXllcic7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfR0VPX09GRlNFVCA9IDAuMDU7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9DT0xPUiA9IFsyNTUsIDAsIDBdO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0lDT05fU0laRSA9IDgwO1xuXG4vLyBXZSBjb3VsZCB1c2UgZGlyZWN0bHkgcmVhY3QtbWFwLWdsLWRyYXcgRWRpdG9yTW9kZSBidXQgdGhpcyB3b3VsZFxuLy8gY3JlYXRlIGEgZGlyZWN0IGRlcGVuZGVuY3kgd2l0aCByZWFjdC1tYXAtZ2wtZHJhd1xuLy8gQ3JlYXRlZCB0aGlzIG1hcCB0byBiZSBpbmRlcGVuZGVudCBmcm9tIHJlYWN0LW1hcC1nbC1kcmF3XG5leHBvcnQgY29uc3QgRURJVE9SX01PREVTID0ge1xuICBSRUFEX09OTFk6IEVkaXRvck1vZGVzLlJFQURfT05MWSxcbiAgRFJBV19QT0xZR09OOiBFZGl0b3JNb2Rlcy5EUkFXX1BPTFlHT04sXG4gIERSQVdfUkVDVEFOR0xFOiBFZGl0b3JNb2Rlcy5EUkFXX1JFQ1RBTkdMRSxcbiAgRURJVDogRWRpdG9yTW9kZXMuRURJVF9WRVJURVhcbn07XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfQVZBSUxBQkxFX0xBWUVSUyA9IFtcbiAgTEFZRVJfVFlQRVMucG9pbnQsXG4gIExBWUVSX1RZUEVTLmhleGFnb24sXG4gIExBWUVSX1RZUEVTLmFyYyxcbiAgTEFZRVJfVFlQRVMubGluZSxcbiAgTEFZRVJfVFlQRVMuaGV4YWdvbklkXG5dO1xuLy8gR1BVIEZpbHRlcmluZ1xuLyoqXG4gKiBNYXggbnVtYmVyIG9mIGZpbHRlciB2YWx1ZSBidWZmZXJzIHRoYXQgZGVjay5nbCBwcm92aWRlc1xuICovXG5leHBvcnQgY29uc3QgTUFYX0dQVV9GSUxURVJTID0gNDtcbmV4cG9ydCBjb25zdCBNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiA9IHtcbiAgd2lkdGg6IDMwMCxcbiAgaGVpZ2h0OiAyMDBcbn07XG5cbmV4cG9ydCBjb25zdCBNQVBfSU5GT19DSEFSQUNURVIgPSB7XG4gIHRpdGxlOiAxMDAsXG4gIGRlc2NyaXB0aW9uOiAxMDBcbn07XG5cbi8vIExvYWQgZGF0YVxuZXhwb3J0IGNvbnN0IExPQURJTkdfTUVUSE9EUyA9IGtleU1pcnJvcih7XG4gIHVwbG9hZDogbnVsbCxcbiAgc3RvcmFnZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBEQVRBU0VUX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICByb3c6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGNzdjogbnVsbCxcbiAga2VwbGVyZ2w6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBNQVNLX0xBWUVSX0lEID0gJ21hc2tfbGF5ZXInO1xuXG5leHBvcnQgY29uc3QgWk9PTV9MRVZFTF9MSU1JVFMgPSB7XG4gIG1pbjogMCxcbiAgbWF4OiAyMVxufTtcbiJdfQ==
package/package.json CHANGED
@@ -2,18 +2,11 @@
2
2
  "name": "@carto/kepler.gl",
3
3
  "author": "CARTO",
4
4
  "homepage": "https://github.com/CartoDB/carto-kepler#readme",
5
- "version": "0.0.69-alpha.hackathon-3dtiles",
5
+ "version": "0.0.69-alpha.hackathon-3dtiles.2",
6
6
  "description": "kepler.gl is a webgl based application to visualize large scale location data in the browser",
7
7
  "license": "MIT",
8
8
  "main": "dist/index.js",
9
- "keywords": [
10
- "babel",
11
- "es6",
12
- "react",
13
- "webgl",
14
- "visualization",
15
- "deck.gl"
16
- ],
9
+ "keywords": ["babel", "es6", "react", "webgl", "visualization", "deck.gl"],
17
10
  "repository": {
18
11
  "type": "git",
19
12
  "url": "https://github.com/CartoDB/carto-kepler.git"
@@ -261,21 +254,13 @@
261
254
  "nyc": {
262
255
  "sourceMap": false,
263
256
  "instrument": false,
264
- "exclude": [
265
- "test/**/*.js",
266
- "src/tasks",
267
- "src/templates",
268
- "src/styles"
269
- ]
257
+ "exclude": ["test/**/*.js", "src/tasks", "src/templates", "src/styles"]
270
258
  },
271
259
  "engines": {
272
260
  "node": ">=12.0.0"
273
261
  },
274
- "maintainers": [
275
- "Shan He <heshan0131@gmail.com>",
276
- "Giuseppe Macri <gmacri@uber.com>"
277
- ],
262
+ "maintainers": ["Shan He <heshan0131@gmail.com>", "Giuseppe Macri <gmacri@uber.com>"],
278
263
  "volta": {
279
264
  "node": "12.19.0"
280
265
  }
281
- }
266
+ }
@@ -60,12 +60,28 @@ import {Tile3DLayer} from '@deck.gl/geo-layers';
60
60
 
61
61
  const GOOGLE_MAPS_API_KEY = 'AIzaSyCpvQymc5wjSYIsxy3RV1widM3p3h78CAk';
62
62
 
63
+ let h = 0;
63
64
  const tiles3d = new Tile3DLayer({
64
65
  id: 'google-3d-tiles',
65
66
  data: 'https://tile.googleapis.com/v1/3dtiles/root.json',
66
67
  onTilesetLoad: tileset3d => {
67
68
  // tileset3d.options.maximumScreenSpaceError = 4;
68
69
  tileset3d._onTileLoadError = () => {};
70
+ tileset3d.options.onTraversalComplete = selectedTiles => {
71
+ // Do not show tiles which are many layers too low in resolution (avoids artifacts)
72
+ let maxDepth = 0;
73
+ for (const {depth} of selectedTiles) {
74
+ if (depth > maxDepth) maxDepth = depth;
75
+ }
76
+ const filtered = selectedTiles.filter(t => t.depth > maxDepth - 4);
77
+
78
+ // Hacky way to obtain height above sea level to improve controls
79
+ if (filtered.length) {
80
+ h = filtered.map(t => t.boundingBox[0][2]).reduce((a, n) => a + n) / filtered.length;
81
+ }
82
+
83
+ return filtered;
84
+ };
69
85
  },
70
86
  loadOptions: {
71
87
  fetch: {headers: {'X-GOOG-API-KEY': GOOGLE_MAPS_API_KEY}}
@@ -425,8 +441,11 @@ export default function MapContainerFactory(MapPopover, MapControl, Editor) {
425
441
  );
426
442
  }
427
443
 
428
- if (mapStyle.styleType === 'tiles3d') {
429
- // Inject 3D tiles when blank Google map style detected
444
+ if (
445
+ mapStyle.styleType === 'voyager' &&
446
+ Object.values(mapStyle.visibleLayerGroups).filter(x => x).length === 0
447
+ ) {
448
+ // Inject 3D tiles when map style is Voyager without layers (hack until UI is built)
430
449
  deckGlLayers = deckGlLayers
431
450
  .filter(l => Boolean(l && l.clone))
432
451
  .map(l => l.clone({extensions: [...l.props.extensions, terrainExtension]}));
@@ -509,6 +528,8 @@ export default function MapContainerFactory(MapPopover, MapControl, Editor) {
509
528
  // after we have received proper dimensions from observeDimensions
510
529
  const next = {
511
530
  ...(width > 0 && height > 0 ? viewState : restViewState),
531
+ // Only works with Mapbox basemap (Google ignores this)
532
+ position: [0, 0, h],
512
533
  // enabling transition in two maps may lead to endless update loops
513
534
  transitionDuration: primary ? TRANSITION_DURATION : 0
514
535
  };