@kepler.gl/utils 3.1.2 → 3.1.4

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.
@@ -34,6 +34,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
34
34
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
35
35
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
36
36
  var _constants = require("@kepler.gl/constants");
37
+ var _commonUtils = require("@kepler.gl/common-utils");
37
38
  var _d3Color = require("d3-color");
38
39
  var _d3Interpolate = require("d3-interpolate");
39
40
  var _utils = require("./utils");
@@ -243,7 +244,7 @@ function replaceColorsInColorRange(colorRange, newColors) {
243
244
  */
244
245
  function sortCustomPaletteColor(customPalette, oldIndex, newIndex) {
245
246
  var colors = customPalette.colors;
246
- var newColors = (0, _utils.arrayMove)(colors, oldIndex, newIndex);
247
+ var newColors = (0, _commonUtils.arrayMove)(colors, oldIndex, newIndex);
247
248
  var update = replaceColorsInColorRange(customPalette, newColors);
248
249
 
249
250
  // @ts-ignore
@@ -458,4 +459,4 @@ function initializeCustomPalette(colorRange, colorMap) {
458
459
  }
459
460
  return customPalette;
460
461
  }
461
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9kM0NvbG9yIiwiX2QzSW50ZXJwb2xhdGUiLCJfdXRpbHMiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZXhjbHVkZWQiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImhleFRvUmdiIiwiaGV4IiwicmVzdWx0IiwiaXNIZXhDb2xvciIsInBhcnNlSW50IiwiZyIsImIiLCJleGVjIiwiUGFkTnVtIiwiYyIsInRvU3RyaW5nIiwiY29uY2F0IiwicmdiVG9IZXgiLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheTIiLCJtYXAiLCJuIiwiam9pbiIsInRvVXBwZXJDYXNlIiwiaGFzQ29sb3JNYXAiLCJjb2xvclJhbmdlIiwiQXJyYXkiLCJpc0FycmF5IiwiY29sb3JNYXAiLCJCb29sZWFuIiwiY3JlYXRlTGluZWFyR3JhZGllbnQiLCJkaXJlY3Rpb24iLCJjb2xvcnMiLCJzdGVwIiwicGFyc2VGbG9hdCIsInRvRml4ZWQiLCJiYW5kcyIsInJnYiIsImluZGV4IiwiY29sb3JNYXliZVRvUkdCIiwiY29sb3IiLCJpc1JnYkNvbG9yIiwicmdiT2JqIiwiZDNSZ2IiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImV2ZXJ5Iiwibm9ybWFsaXplQ29sb3IiLCJjb21wb25lbnQiLCJjb2xvck1heWJlVG9IZXgiLCJyZ2JDb2xvciIsImludGVycG9sYXRlSGV4IiwiaGV4MSIsImhleDIiLCJpbnRlcnBvbGF0ZSIsImFkZE5ld0NhdGVnb3JpY2FsU3RlcEF0SW5kZXgiLCJuZXdDb2xvciIsIm5ld0NvbG9yTWFwIiwiX3JlZjMiLCJfcmVmNCIsInZhbCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJhcnJheUluc2VydCIsImFkZE5ld1F1YW50YXRpdmVDb2xvckJyZWFrQXRJbmRleCIsIm5ld0NvbG9ycyIsImkiLCJicmVha3MiLCJjbSIsInNsaWNlIiwibmV3VmFsdWUiLCJuZXdCcmVha3MiLCJ1bmRlZmluZWQiLCJhZGRDdXN0b21QYWxldHRlQ29sb3IiLCJjdXN0b21QYWxldHRlIiwidXBkYXRlIiwidHlwZSIsInJlcGxhY2VDb2xvcnNJbkNvbG9yUmFuZ2UiLCJvbGRDb2xvcnMiLCJ1cGRhdGVkIiwiY29sb3JMZWdlbmRzIiwicmVkdWNlIiwiYWNjdSIsImtleSIsImNvbG9ySWR4IiwiZmluZEluZGV4Iiwic29ydEN1c3RvbVBhbGV0dGVDb2xvciIsIm9sZEluZGV4IiwibmV3SW5kZXgiLCJhcnJheU1vdmUiLCJyZW1vdmVDdXN0b21QYWxldHRlQ29sb3IiLCJvbGRWYWx1ZSIsInNwbGljZSIsImNvbG9yTWFwSW5kZXgiLCJ1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IiLCJyZXZlcnNlQ29sb3JSYW5nZSIsInJldmVyc2VkIiwicmV2ZXJzZSIsInBhbGV0dGVJc0NvbG9yQmxpbmRTYWZlIiwicGFsZXR0ZSIsImNvbG9yQmxpbmRTYWZlIiwiaXNRdWFQYWxldHRlIiwiUEFMRVRURV9UWVBFUyIsIlFVQSIsInBhbGV0dGVJc1N0ZXBzIiwic3RlcHMiLCJtYXhTdGVwIiwicGFsZXR0ZUlzVHlwZSIsInVwZGF0ZUNvbG9yUmFuZ2VCeU1hdGNoaW5nUGFsZXR0ZSIsImN1cnJlbnRDb2xvclJhbmdlIiwiY29uZmlnIiwibWF0Y2hpbmdQYWxldHRlIiwiS0VQTEVSX0NPTE9SX1BBTEVUVEVTIiwiYmVzdE1hdGNoIiwiZmluZCIsInAiLCJuYW1lIiwidXBkYXRlQ29sb3JSYW5nZUJ5U2VsZWN0ZWRQYWxldHRlIiwiQ29uc29sZSIsIndhcm4iLCJ1cGRhdGVDdXN0b21Db2xvclJhbmdlQnlDb2xvclVJIiwib2xkQ29sb3JSYW5nZSIsImNvbG9yQ29uZmlnIiwiY2F0ZWdvcnkiLCJjb2xvclBhbGV0dGUiLCJfY29sb3JQYWxldHRlVG9Db2xvclIiLCJjb2xvclBhbGV0dGVUb0NvbG9yUmFuZ2UiLCJuZXdDb2xvclJhbmdlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsIlViZXJOYW1lUmVnZXgiLCJSZWdFeHAiLCJDb2xvckJyZXdlclJlZ2V4IiwiY29sb3JSYW5nZUJhY2t3YXJkQ29tcGF0aWJpbGl0eSIsInRyaW1OYW1lIiwiX2NvbG9yUmFuZ2UkbmFtZSIsIm1hdGNoTmFtZSIsIm1hdGNoIiwidHJpbSIsIl9jb2xvclJhbmdlJG5hbWUyIiwicmVwbGFjZSIsImluaXRpYWxpemVDdXN0b21QYWxldHRlIiwiREVGQVVMVF9DVVNUT01fUEFMRVRURSIsIlNDQUxFX1RZUEVTIiwiY3VzdG9tT3JkaW5hbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xvci11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBDYXRlZ29yaWNhbFBhbGV0dGUsXG4gIENvbG9yUGFsZXR0ZSxcbiAgREVGQVVMVF9DVVNUT01fUEFMRVRURSxcbiAgY29sb3JQYWxldHRlVG9Db2xvclJhbmdlXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIENvbG9yTWFwLFxuICBDb2xvclJhbmdlLFxuICBDb2xvclJhbmdlQ29uZmlnLFxuICBIZXhDb2xvcixcbiAgUkdCQUNvbG9yLFxuICBSR0JDb2xvclxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7cmdiIGFzIGQzUmdifSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge2ludGVycG9sYXRlfSBmcm9tICdkMy1pbnRlcnBvbGF0ZSc7XG5pbXBvcnQge2FycmF5SW5zZXJ0LCBhcnJheU1vdmV9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuaW1wb3J0IHtLRVBMRVJfQ09MT1JfUEFMRVRURVMsIFBBTEVUVEVfVFlQRVMsIFNDQUxFX1RZUEVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbi8qKlxuICogZ2V0IHIgZyBiIGZyb20gaGV4IGNvZGVcbiAqXG4gKiBAcGFyYW0gaGV4XG4gKiBAcmV0dXJucyBhcnJheSBvZiByIGcgYnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhleFRvUmdiKGhleDogc3RyaW5nKTogUkdCQ29sb3Ige1xuICBjb25zdCByZXN1bHQgPSBpc0hleENvbG9yKGhleCk7XG5cbiAgaWYgKCFyZXN1bHQpIHtcbiAgICByZXR1cm4gWzAsIDAsIDBdO1xuICB9XG5cbiAgY29uc3QgciA9IHBhcnNlSW50KHJlc3VsdFsxXSwgMTYpO1xuICBjb25zdCBnID0gcGFyc2VJbnQocmVzdWx0WzJdLCAxNik7XG4gIGNvbnN0IGIgPSBwYXJzZUludChyZXN1bHRbM10sIDE2KTtcblxuICByZXR1cm4gW3IsIGcsIGJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIZXhDb2xvcihoZXg6IHN0cmluZyk6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwge1xuICBjb25zdCByZXN1bHQgPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBQYWROdW0oYykge1xuICBjb25zdCBoZXggPSBjLnRvU3RyaW5nKDE2KTtcbiAgcmV0dXJuIGhleC5sZW5ndGggPT09IDEgPyBgMCR7aGV4fWAgOiBoZXg7XG59XG5cbi8qKlxuICogZ2V0IGhleCBmcm9tIHIgZyBiXG4gKlxuICogQHBhcmFtIHJnYlxuICogQHJldHVybnMgaGV4IHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmdiVG9IZXgoW3IsIGcsIGJdOiBSR0JDb2xvciB8IFJHQkFDb2xvcik6IEhleENvbG9yIHtcbiAgcmV0dXJuIGAjJHtbciwgZywgYl0ubWFwKG4gPT4gUGFkTnVtKG4pKS5qb2luKCcnKX1gLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8qKlxuICogV2hldGhlciBjb2xvciByYW5nZSBoYXMgY3VzdG9tIGNvbG9yIG1hcFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzQ29sb3JNYXAoY29sb3JSYW5nZTogQ29sb3JSYW5nZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShjb2xvclJhbmdlLmNvbG9yTWFwKSAmJiBCb29sZWFuKGNvbG9yUmFuZ2UuY29sb3JNYXAubGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBnaXZlbiBhIGxpc3Qgb2YgcmdiIGFycmF5cyBpdCB3aWxsIGdlbmVyYXRlIGEgbGluZWFyIGdyYWRpZW50IGNzcyBydWxlXG4gKiBAcGFyYW0gZGlyZWN0aW9uXG4gKiBAcGFyYW0gY29sb3JzXG4gKiBAcmV0dXJuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaW5lYXJHcmFkaWVudChkaXJlY3Rpb246IHN0cmluZywgY29sb3JzOiBSR0JDb2xvcltdKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RlcCA9IHBhcnNlRmxvYXQoKDEwMC4wIC8gY29sb3JzLmxlbmd0aCkudG9GaXhlZCgyKSk7XG4gIGNvbnN0IGJhbmRzID0gY29sb3JzLm1hcCgocmdiLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBgcmdiYSgke3JnYi5qb2luKCcsJyl9LCAxKSAke3N0ZXAgKiBpbmRleH0lLCByZ2JhKCR7cmdiLmpvaW4oJywnKX0sIDEpICR7XG4gICAgICBzdGVwICogKGluZGV4ICsgMSlcbiAgICB9JWA7XG4gIH0pO1xuXG4gIHJldHVybiBgbGluZWFyLWdyYWRpZW50KHRvICR7ZGlyZWN0aW9ufSwgJHtiYW5kcy5qb2luKCcsJyl9KWA7XG59XG5cbi8qKlxuICogQ29udmVydCBjb2xvciB0byBSR0JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yTWF5YmVUb1JHQihjb2xvcjogdW5rbm93bik6IFJHQkNvbG9yIHwgbnVsbCB7XG4gIGlmIChpc1JnYkNvbG9yKGNvbG9yKSkge1xuICAgIHJldHVybiBjb2xvciBhcyBSR0JDb2xvcjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgY29sb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgcmdiT2JqID0gZDNSZ2IoY29sb3IpO1xuICAgIGlmIChOdW1iZXIuaXNGaW5pdGUocmdiT2JqPy5yKSAmJiBOdW1iZXIuaXNGaW5pdGUocmdiT2JqPy5nKSAmJiBOdW1iZXIuaXNGaW5pdGUocmdiT2JqPy5iKSkge1xuICAgICAgcmV0dXJuIFtyZ2JPYmouciwgcmdiT2JqLmcsIHJnYk9iai5iXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGNvbG9yIGlzIHJnYlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmdiQ29sb3IoY29sb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgY29sb3IgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoY29sb3IpICYmXG4gICAgICBjb2xvci5sZW5ndGggPT09IDMgJiZcbiAgICAgIGNvbG9yLmV2ZXJ5KG4gPT4gTnVtYmVyLmlzRmluaXRlKG4pICYmIG4gPD0gMjU1ICYmIG4gPj0gMClcbiAgKTtcbn1cblxuLyoqXG4gKiBUYWtlIGNvbG9yIHZhbHVlcyBpbiAwLTI1NSByYW5nZSBhbmQgbWFwIHRvIFswLCAxXVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQ29sb3IoY29sb3I6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICByZXR1cm4gY29sb3IubWFwKGNvbXBvbmVudCA9PiBjb21wb25lbnQgLyAyNTUuMCk7XG59XG5cbi8qKlxuICogQ29udmVydCBjb2xvciB0byBIZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yTWF5YmVUb0hleChjb2xvcjogdW5rbm93bik6IEhleENvbG9yIHtcbiAgY29uc3QgcmdiQ29sb3IgPSBjb2xvck1heWJlVG9SR0IoY29sb3IpO1xuICBpZiAocmdiQ29sb3IpIHJldHVybiByZ2JUb0hleChyZ2JDb2xvcik7XG4gIHJldHVybiAnIzAwMDAwMCc7XG59XG5cbi8qKlxuICogQ29udmVydCBjb2xvciB0byBIZXhcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJwb2xhdGVIZXgoaGV4MTogSGV4Q29sb3IsIGhleDI6IEhleENvbG9yKTogSGV4Q29sb3Ige1xuICByZXR1cm4gZDNSZ2IoaW50ZXJwb2xhdGUoaGV4MSwgaGV4MikoMC41KSkuaGV4KCkudG9VcHBlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gYWRkTmV3Q2F0ZWdvcmljYWxTdGVwQXRJbmRleChjb2xvck1hcCwgaW5kZXgsIG5ld0NvbG9yKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShjb2xvck1hcCkgfHwgIWNvbG9yTWFwLmxlbmd0aCkge1xuICAgIHJldHVybiBjb2xvck1hcDtcbiAgfVxuXG4gIGxldCBuZXdDb2xvck1hcCA9IGNvbG9yTWFwLm1hcCgoW3ZhbCwgY10pID0+IFtBcnJheS5pc0FycmF5KHZhbCkgPyBbLi4udmFsXSA6IHZhbCwgY10pO1xuICBuZXdDb2xvck1hcCA9IGFycmF5SW5zZXJ0KG5ld0NvbG9yTWFwLCBpbmRleCArIDEsIFtudWxsLCBuZXdDb2xvcl0pO1xuXG4gIHJldHVybiBuZXdDb2xvck1hcDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZE5ld1F1YW50YXRpdmVDb2xvckJyZWFrQXRJbmRleChjb2xvck1hcCwgaW5kZXgsIG5ld0NvbG9ycykge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29sb3JNYXApIHx8ICFjb2xvck1hcC5sZW5ndGgpIHtcbiAgICByZXR1cm4gY29sb3JNYXA7XG4gIH1cblxuICBpZiAoY29sb3JNYXAubGVuZ3RoIDwgMikge1xuICAgIC8vIGxlc3MgdGhlbiAyLCBhZGQgMSBhdCBlbmRcbiAgICAvLyBob3dldmVyIHNob3VsZG4ndCBhbGxvdyBkZWxldGUgd2hlbiB0aGVyZSBhcmUgMlxuICAgIHJldHVybiBuZXdDb2xvcnMubWFwKChjLCBpKSA9PiAoaSA9PT0gMCA/IGNvbG9yTWFwW2ldIDogW251bGwsIGNdKSk7XG4gIH1cblxuICAvLyBicmVha3Mgc2hvdWxkIGJlIDEgbGVzcyB0aGFuIGNvbG9yc1xuICBjb25zdCBicmVha3MgPSBjb2xvck1hcC5tYXAoY20gPT4gY21bMF0pLnNsaWNlKDAsIGNvbG9yTWFwLmxlbmd0aCAtIDEpO1xuXG4gIC8vIGluc2VydCBuZXcgYnJlYWtcbiAgY29uc3QgbmV3VmFsdWUgPVxuICAgIGluZGV4ID49IGJyZWFrcy5sZW5ndGggLSAxXG4gICAgICA/IGJyZWFrc1ticmVha3MubGVuZ3RoIC0gMV0gK1xuICAgICAgICAoYnJlYWtzLmxlbmd0aCA+IDEgPyBicmVha3NbYnJlYWtzLmxlbmd0aCAtIDFdIC0gYnJlYWtzW2JyZWFrcy5sZW5ndGggLSAyXSA6IDApXG4gICAgICA6IChicmVha3NbaW5kZXhdICsgYnJlYWtzW2luZGV4ICsgMV0pIC8gMjtcblxuICBjb25zdCBuZXdCcmVha3MgPSBhcnJheUluc2VydChicmVha3MsIGluZGV4ICsgMSwgbmV3VmFsdWUpO1xuXG4gIC8vIGFzaWduIGJyZWFrcyB0byBjb2xvclxuICByZXR1cm4gbmV3Q29sb3JzLm1hcCgoYywgaSkgPT5cbiAgICBpID09PSBuZXdDb2xvcnMubGVuZ3RoIC0gMSA/IFtudWxsLCBjXSA6IFtuZXdCcmVha3NbaV0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiBuZXdCcmVha3NbaV0sIGNdXG4gICk7XG59XG5cbi8qKlxuICogQWRkIGEgbmV3IGNvbG9yIHRvIGN1c3RvbSBwYWxldHRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRDdXN0b21QYWxldHRlQ29sb3IoY3VzdG9tUGFsZXR0ZTogQ29sb3JSYW5nZSwgaW5kZXg6IG51bWJlcik6IENvbG9yUmFuZ2Uge1xuICBjb25zdCB7Y29sb3JzLCBjb2xvck1hcH0gPSBjdXN0b21QYWxldHRlO1xuICBjb25zdCB1cGRhdGU6IFBhcnRpYWw8Q29sb3JSYW5nZT4gPSB7fTtcblxuICBjb25zdCBuZXdDb2xvciA9XG4gICAgaW5kZXggPT09IGNvbG9ycy5sZW5ndGggLSAxID8gY29sb3JzW2luZGV4XSA6IGludGVycG9sYXRlSGV4KGNvbG9yc1tpbmRleF0sIGNvbG9yc1tpbmRleCArIDFdKTtcblxuICB1cGRhdGUuY29sb3JzID0gYXJyYXlJbnNlcnQoY29sb3JzLCBpbmRleCArIDEsIG5ld0NvbG9yKTtcblxuICAvLyBhZGQgY29sb3IgdG8gY29sb3JNYXBcbiAgaWYgKGNvbG9yTWFwKSB7XG4gICAgdXBkYXRlLmNvbG9yTWFwID1cbiAgICAgIGN1c3RvbVBhbGV0dGUudHlwZSA9PT0gJ2N1c3RvbU9yZGluYWwnXG4gICAgICAgID8gYWRkTmV3Q2F0ZWdvcmljYWxTdGVwQXRJbmRleChjb2xvck1hcCwgaW5kZXgsIG5ld0NvbG9yKVxuICAgICAgICA6IGFkZE5ld1F1YW50YXRpdmVDb2xvckJyZWFrQXRJbmRleChjb2xvck1hcCwgaW5kZXgsIHVwZGF0ZS5jb2xvcnMpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5jdXN0b21QYWxldHRlLFxuICAgIC4uLnVwZGF0ZVxuICB9O1xufVxuXG5mdW5jdGlvbiByZXBsYWNlQ29sb3JzSW5Db2xvclJhbmdlKGNvbG9yUmFuZ2UsIG5ld0NvbG9ycykge1xuICBjb25zdCBvbGRDb2xvcnMgPSBjb2xvclJhbmdlLmNvbG9ycztcbiAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAuLi5jb2xvclJhbmdlLFxuICAgIGNvbG9yczogbmV3Q29sb3JzXG4gIH07XG5cbiAgLy8gdXBkYXRlIGNvbG9yIG1hcFxuICAvLyBrZWVwIHZhbHVlLCByZXBsYWNlIGNvbG9yXG4gIGlmIChBcnJheS5pc0FycmF5KHVwZGF0ZWQuY29sb3JNYXApKSB7XG4gICAgdXBkYXRlZC5jb2xvck1hcCA9IHVwZGF0ZWQuY29sb3JNYXAubWFwKChjbSwgaSkgPT4gW2NtWzBdLCBuZXdDb2xvcnNbaV1dKTtcbiAgfVxuICAvLyB1cGRhdGUgY29sb3JsZWdlbmRzXG4gIC8vIGtlZXAgdmFsdWUsIHJlcGxhY2UgY29sb3JcbiAgaWYgKHVwZGF0ZWQuY29sb3JMZWdlbmRzKSB7XG4gICAgdXBkYXRlZC5jb2xvckxlZ2VuZHMgPSBPYmplY3Qua2V5cyh1cGRhdGVkLmNvbG9yTGVnZW5kcykucmVkdWNlKChhY2N1LCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IGNvbG9ySWR4ID0gb2xkQ29sb3JzLmZpbmRJbmRleChjID0+IGMgPT09IGtleSk7XG4gICAgICBjb25zdCBuZXdDb2xvciA9IG5ld0NvbG9yc1tjb2xvcklkeF07XG5cbiAgICAgIHJldHVybiBuZXdDb2xvclxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICBbbmV3Q29sb3JdOiB1cGRhdGVkLmNvbG9yTGVnZW5kc1trZXldXG4gICAgICAgICAgfVxuICAgICAgICA6IGFjY3U7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZWQ7XG59XG5cbi8qKlxuICogU29ydCBjdXN0b20gcGFsZXR0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydEN1c3RvbVBhbGV0dGVDb2xvcihcbiAgY3VzdG9tUGFsZXR0ZTogQ29sb3JSYW5nZSxcbiAgb2xkSW5kZXg6IG51bWJlcixcbiAgbmV3SW5kZXg6IG51bWJlclxuKTogQ29sb3JSYW5nZSB7XG4gIGNvbnN0IHtjb2xvcnN9ID0gY3VzdG9tUGFsZXR0ZTtcblxuICBjb25zdCBuZXdDb2xvcnMgPSBhcnJheU1vdmUoY29sb3JzLCBvbGRJbmRleCwgbmV3SW5kZXgpO1xuICBjb25zdCB1cGRhdGUgPSByZXBsYWNlQ29sb3JzSW5Db2xvclJhbmdlKGN1c3RvbVBhbGV0dGUsIG5ld0NvbG9ycyk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4ge1xuICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgLi4udXBkYXRlXG4gIH07XG59XG5cbi8qKlxuICogcmVtb3ZlIGEgY29sb3IgaW4gY3VzdG9tIHBhbGV0dGUgYXQgaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlOiBDb2xvclJhbmdlLCBpbmRleDogbnVtYmVyKTogQ29sb3JSYW5nZSB7XG4gIGNvbnN0IHtjb2xvcnMsIGNvbG9yTWFwLCBjb2xvckxlZ2VuZHN9ID0gY3VzdG9tUGFsZXR0ZTtcbiAgY29uc3Qgb2xkVmFsdWUgPSBjb2xvcnNbaW5kZXhdO1xuICBjb25zdCB1cGRhdGU6IFBhcnRpYWw8Q29sb3JSYW5nZT4gPSB7fTtcbiAgdXBkYXRlLmNvbG9ycyA9IFsuLi5jb2xvcnNdO1xuXG4gIGlmICh1cGRhdGUuY29sb3JzLmxlbmd0aCA+IDEpIHtcbiAgICB1cGRhdGUuY29sb3JzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cbiAgLy8gdXBkYXRlIGNvbG9yIG1hcFxuICBpZiAoQXJyYXkuaXNBcnJheShjb2xvck1hcCkpIHtcbiAgICAvLyBmaW5kIGNvbG9yTWFwIGluZGV4XG4gICAgY29uc3QgY29sb3JNYXBJbmRleCA9IGNvbG9yTWFwLmZpbmRJbmRleChjbSA9PiBjbVsxXSA9PT0gb2xkVmFsdWUpO1xuICAgIGlmIChjb2xvck1hcEluZGV4ID49IDApIHtcbiAgICAgIHVwZGF0ZS5jb2xvck1hcCA9IFsuLi5jb2xvck1hcF07XG4gICAgICB1cGRhdGUuY29sb3JNYXAuc3BsaWNlKGNvbG9yTWFwSW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuICAvLyB1cGRhdGUgY29sb3IgbGVnZW5kXG4gIGlmIChjb2xvckxlZ2VuZHM/LltvbGRWYWx1ZV0pIHtcbiAgICB1cGRhdGUuY29sb3JMZWdlbmRzID0gey4uLmNvbG9yTGVnZW5kc307XG4gICAgZGVsZXRlIHVwZGF0ZS5jb2xvckxlZ2VuZHNbb2xkVmFsdWVdO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5jdXN0b21QYWxldHRlLFxuICAgIC4uLnVwZGF0ZVxuICB9O1xufVxuXG4vKipcbiAqIFVwZGF0ZSBhIGNvbG9yIGluIGN1c3RvbSBwYWxldHRlIGF0IGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IoXG4gIGN1c3RvbVBhbGV0dGU6IENvbG9yUmFuZ2UsXG4gIGluZGV4OiBudW1iZXIsXG4gIG5ld1ZhbHVlOiBIZXhDb2xvclxuKTogQ29sb3JSYW5nZSB7XG4gIGNvbnN0IHtjb2xvcnN9ID0gY3VzdG9tUGFsZXR0ZTtcbiAgY29uc3QgaGV4ID0gbmV3VmFsdWUudG9VcHBlckNhc2UoKTtcbiAgY29uc3QgbmV3Q29sb3JzID0gWy4uLmNvbG9yc107XG4gIG5ld0NvbG9yc1tpbmRleF0gPSBoZXg7XG5cbiAgY29uc3QgdXBkYXRlID0gcmVwbGFjZUNvbG9yc0luQ29sb3JSYW5nZShjdXN0b21QYWxldHRlLCBuZXdDb2xvcnMpO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIHtcbiAgICAuLi5jdXN0b21QYWxldHRlLFxuICAgIC4uLnVwZGF0ZVxuICB9O1xufVxuXG4vKipcbiAqIEdldCBhIHJldmVyc2VkIGNvbG9yUmFuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VDb2xvclJhbmdlKHJldmVyc2VkOiBib29sZWFuLCBjb2xvclJhbmdlOiBDb2xvclJhbmdlKTogQ29sb3JSYW5nZSB7XG4gIGNvbnN0IG5ld0NvbG9ycyA9IGNvbG9yUmFuZ2U/LmNvbG9ycy5zbGljZSgpLnJldmVyc2UoKTtcbiAgY29uc3QgdXBkYXRlZCA9IHJlcGxhY2VDb2xvcnNJbkNvbG9yUmFuZ2UoY29sb3JSYW5nZSwgbmV3Q29sb3JzKTtcbiAgdXBkYXRlZC5yZXZlcnNlZCA9IHJldmVyc2VkO1xuXG4gIHJldHVybiB1cGRhdGVkO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgcGFsZXR0ZSBtYXRjaGVzIGN1cnJlbnQgQ29sb3JCbGluZFNhZmUgY29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWxldHRlSXNDb2xvckJsaW5kU2FmZShwYWxldHRlOiBDb2xvclBhbGV0dGUsIGNvbG9yQmxpbmRTYWZlOiBib29sZWFuKSB7XG4gIHJldHVybiAhY29sb3JCbGluZFNhZmUgfHwgKGNvbG9yQmxpbmRTYWZlICYmIHBhbGV0dGUuY29sb3JCbGluZFNhZmUpO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgcGFsZXR0ZSBtYXRjaGVzIGN1cnJlbnQgc3RlcHMgY29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1F1YVBhbGV0dGUocGFsZXR0ZTogQ29sb3JQYWxldHRlKTogcGFsZXR0ZSBpcyBDYXRlZ29yaWNhbFBhbGV0dGUge1xuICByZXR1cm4gcGFsZXR0ZS50eXBlID09PSBQQUxFVFRFX1RZUEVTLlFVQTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHBhbGV0dGUgbWF0Y2hlcyBjdXJyZW50IHN0ZXBzIGNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFsZXR0ZUlzU3RlcHMocGFsZXR0ZTogQ29sb3JQYWxldHRlLCBzdGVwczogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAhaXNRdWFQYWxldHRlKHBhbGV0dGUpIHx8IHBhbGV0dGUubWF4U3RlcCA+PSBzdGVwcztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHBhbGV0dGUgbWF0Y2hlcyBjdXJyZW50IHR5cGUgY29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWxldHRlSXNUeXBlKHBhbGV0dGU6IENvbG9yUGFsZXR0ZSwgdHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlID09PSAnYWxsJyB8fCB0eXBlID09PSBwYWxldHRlLnR5cGU7XG59XG4vKipcbiAqIEZpbmQgYmVzdCBtYXRjaCBwYWxldHRlIGJhc2VkIG9uIGNvbmZpZywgdXBkYXRlIGNvbG9yIHJhbmdlIGJ5IGl0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDb2xvclJhbmdlQnlNYXRjaGluZ1BhbGV0dGUoXG4gIGN1cnJlbnRDb2xvclJhbmdlOiBDb2xvclJhbmdlLFxuICBjb25maWc6IENvbG9yUmFuZ2VDb25maWdcbik6IENvbG9yUmFuZ2Uge1xuICBjb25zdCB7c3RlcHMsIGNvbG9yQmxpbmRTYWZlLCB0eXBlfSA9IGNvbmZpZztcblxuICBjb25zdCBtYXRjaGluZ1BhbGV0dGUgPSBLRVBMRVJfQ09MT1JfUEFMRVRURVMuZmlsdGVyKFxuICAgIHBhbGV0dGUgPT5cbiAgICAgIC8vIHBhbGV0dGUgbWF0Y2ggdHlwZVxuICAgICAgcGFsZXR0ZUlzVHlwZShwYWxldHRlLCB0eXBlKSAmJlxuICAgICAgLy8gcGFsZXR0ZSBoYXMgc2FtZSBzdGVwXG4gICAgICBwYWxldHRlSXNTdGVwcyhwYWxldHRlLCBzdGVwcykgJiZcbiAgICAgIC8vIHBhbGV0dGUgaXMgY29sb3JCbGluZFNhZmVcbiAgICAgIHBhbGV0dGVJc0NvbG9yQmxpbmRTYWZlKHBhbGV0dGUsIGNvbG9yQmxpbmRTYWZlKVxuICApO1xuXG4gIGNvbnN0IGJlc3RNYXRjaCA9IG1hdGNoaW5nUGFsZXR0ZS5sZW5ndGhcbiAgICA/IG1hdGNoaW5nUGFsZXR0ZS5maW5kKHAgPT4gcC5uYW1lID09PSBjdXJyZW50Q29sb3JSYW5nZS5uYW1lKSB8fCBtYXRjaGluZ1BhbGV0dGVbMF1cbiAgICA6IG51bGw7XG5cbiAgaWYgKGJlc3RNYXRjaCkge1xuICAgIHJldHVybiB1cGRhdGVDb2xvclJhbmdlQnlTZWxlY3RlZFBhbGV0dGUoY3VycmVudENvbG9yUmFuZ2UsIGJlc3RNYXRjaCwgY29uZmlnKTtcbiAgfVxuICAvLyB3ZSBkbyBub3RoaW5nXG4gIENvbnNvbGUud2FybihcbiAgICBgd2UgY2FudCBmaW5kIGFueSBwcmVzZXQgcGFsZXR0ZSBtYXRjaGVzIHJlcXVpcm1lbnRzOiBzdGVwcz0ke3N0ZXBzfSAmJiBjb2xvckJsaW5kU2FmZT0ke2NvbG9yQmxpbmRTYWZlfWBcbiAgKTtcblxuICByZXR1cm4gY3VycmVudENvbG9yUmFuZ2U7XG59XG5cbi8qKlxuICogVXBkYXRlIGN1c3RvbSBwYWxldHRlIHdoZW4gcmV2ZXJzZSB0aGUgY29sb3JzIGluIGN1c3RvbSBwYWxldHRlLCBzaW5jZSBjaGFuZ2luZyAnc3RlcHMnLFxuICogJ2NvbG9yQmluZFNhZmUnLCAndHlwZScgc2hvdWxkIGZhbGwgYmFjayB0byBwcmVkZWZpbmVkIHBhbGV0dGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDdXN0b21Db2xvclJhbmdlQnlDb2xvclVJKFxuICBvbGRDb2xvclJhbmdlOiBDb2xvclJhbmdlLFxuICBjb2xvckNvbmZpZzogQ29sb3JSYW5nZUNvbmZpZ1xuKTogQ29sb3JSYW5nZSB7XG4gIGNvbnN0IHtyZXZlcnNlZH0gPSBjb2xvckNvbmZpZztcbiAgY29uc3QgY29sb3JzID0gb2xkQ29sb3JSYW5nZS5jb2xvcnM7XG4gIC8vIGZvciBjdXN0b20gcGFsZXR0ZSwgb25lIGNhbiBvbmx5ICdyZXZlcnNlJyB0aGUgY29sb3JzIGluIGN1c3RvbSBwYWxldHRlLlxuICBjb2xvcnMucmV2ZXJzZSgpO1xuXG4gIGNvbnN0IGNvbG9yUmFuZ2UgPSB7XG4gICAgbmFtZTogb2xkQ29sb3JSYW5nZS5uYW1lLFxuICAgIHR5cGU6IG9sZENvbG9yUmFuZ2UudHlwZSxcbiAgICBjYXRlZ29yeTogb2xkQ29sb3JSYW5nZS5jYXRlZ29yeSxcbiAgICBjb2xvcnMsXG4gICAgLi4uKHJldmVyc2VkID8ge3JldmVyc2VkfSA6IHt9KSxcbiAgICAuLi4ob2xkQ29sb3JSYW5nZS5jb2xvck1hcCA/IHtjb2xvck1hcDogb2xkQ29sb3JSYW5nZS5jb2xvck1hcH0gOiB7fSksXG4gICAgLi4uKG9sZENvbG9yUmFuZ2UuY29sb3JMZWdlbmRzID8ge2NvbG9yTGVnZW5kczogb2xkQ29sb3JSYW5nZS5jb2xvckxlZ2VuZHN9IDoge30pXG4gIH07XG5cbiAgcmV0dXJuIHJlcGxhY2VDb2xvcnNJbkNvbG9yUmFuZ2UoY29sb3JSYW5nZSwgY29sb3JSYW5nZS5jb2xvcnMpO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBjb2xvciByYW5nZSBhZnRlciBzZWxlY3RpbmcgYSBwYWxldHRlIGZyb20gY29sb3IgcmFuZ2Ugc2VsZWN0b2VyXG4gKiBDb3B5IG92ZXIgY29sb3JNYXAgYW5kIGNvbG9yTGVnZW5kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlQ29sb3JSYW5nZUJ5U2VsZWN0ZWRQYWxldHRlKG9sZENvbG9yUmFuZ2UsIGNvbG9yUGFsZXR0ZSwgY29sb3JDb25maWcpIHtcbiAgY29uc3Qge2NvbG9yczogbmV3Q29sb3JzLCAuLi5uZXdDb2xvclJhbmdlfSA9IGNvbG9yUGFsZXR0ZVRvQ29sb3JSYW5nZShjb2xvclBhbGV0dGUsIGNvbG9yQ29uZmlnKTtcblxuICBjb25zdCBjb2xvclJhbmdlID0ge1xuICAgIGNvbG9yczogb2xkQ29sb3JSYW5nZS5jb2xvcnMsXG4gICAgLi4ubmV3Q29sb3JSYW5nZSxcbiAgICAuLi4ob2xkQ29sb3JSYW5nZS5jb2xvck1hcCA/IHtjb2xvck1hcDogb2xkQ29sb3JSYW5nZS5jb2xvck1hcH0gOiB7fSksXG4gICAgLi4uKG9sZENvbG9yUmFuZ2UuY29sb3JMZWdlbmRzID8ge2NvbG9yTGVnZW5kczogb2xkQ29sb3JSYW5nZS5jb2xvckxlZ2VuZHN9IDoge30pXG4gIH07XG5cbiAgcmV0dXJuIHJlcGxhY2VDb2xvcnNJbkNvbG9yUmFuZ2UoY29sb3JSYW5nZSwgbmV3Q29sb3JzKTtcbn1cblxuY29uc3QgVWJlck5hbWVSZWdleCA9IG5ldyBSZWdFeHAoL14oW0EtWmEteiBdKSsvZyk7XG5jb25zdCBDb2xvckJyZXdlclJlZ2V4ID0gbmV3IFJlZ0V4cCgvXkNvbG9yQnJld2VyIChbQS1aYS16MS05XSkrL2cpO1xuXG4vKipcbiAqIGNvbnZlcnQgc2F2ZWQgY29sb3JSYW5nZSB0byBjb2xvclBhbGV0dGUgb2JqZXZ0IHR5cGUvbmFtZS9jYXRlZ29yeS9pc0NvbG9yQmxpbmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yUmFuZ2VCYWNrd2FyZENvbXBhdGliaWxpdHkoY29sb3JSYW5nZTogQ29sb3JSYW5nZSk6IENvbG9yUmFuZ2Uge1xuICBpZiAoIWNvbG9yUmFuZ2UgfHwgY29sb3JSYW5nZS50eXBlID09PSAnY3VzdG9tJyB8fCBjb2xvclJhbmdlLmNvbG9yTWFwKSB7XG4gICAgLy8gZG9uJ3QgZG8gYW55dGhpbmcgdG8gY3VzdG9tIGNvbG9yIHBhbGV0dGUsIG9yIHBhbGV0dGUgd2l0aCBjdXN0b20gYnJlYWtzXG4gICAgcmV0dXJuIGNvbG9yUmFuZ2U7XG4gIH1cbiAgbGV0IHRyaW1OYW1lO1xuICBpZiAoY29sb3JSYW5nZS5jYXRlZ29yeSA9PT0gJ1ViZXInKSB7XG4gICAgY29uc3QgbWF0Y2hOYW1lID0gKGNvbG9yUmFuZ2UubmFtZSA/PyAnJykubWF0Y2goVWJlck5hbWVSZWdleCk7XG4gICAgdHJpbU5hbWUgPSBtYXRjaE5hbWUgPyBtYXRjaE5hbWVbMF0udHJpbSgpIDogbnVsbDtcbiAgICAvLyBtYXRjaCBVYmVyIFZpeiBRdWFsaXRhdGl2ZSAxLjQgLT4gVWJlciBWaXogUXVhbGl0YXRpdmVcbiAgfSBlbHNlIGlmIChjb2xvclJhbmdlLmNhdGVnb3J5ID09PSAnQ29sb3JCcmV3ZXInKSB7XG4gICAgY29uc3QgbWF0Y2hOYW1lID0gKGNvbG9yUmFuZ2UubmFtZSA/PyAnJykubWF0Y2goQ29sb3JCcmV3ZXJSZWdleCk7XG4gICAgdHJpbU5hbWUgPSBtYXRjaE5hbWUgPyBtYXRjaE5hbWVbMF0ucmVwbGFjZSgnQ29sb3JCcmV3ZXIgJywgJycpLnRyaW0oKSA6IG51bGw7XG4gIH1cblxuICBpZiAodHJpbU5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGluZ1BhbGV0dGUgPSBLRVBMRVJfQ09MT1JfUEFMRVRURVMuZmluZChwID0+IHAubmFtZSA9PT0gdHJpbU5hbWUpO1xuICAgIGlmIChtYXRjaGluZ1BhbGV0dGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbG9yUmFuZ2UsXG4gICAgICAgIG5hbWU6IHRyaW1OYW1lLFxuICAgICAgICB0eXBlOiBtYXRjaGluZ1BhbGV0dGU/LnR5cGUsXG4gICAgICAgIGNhdGVnb3J5OiBtYXRjaGluZ1BhbGV0dGUuY2F0ZWdvcnlcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbG9yUmFuZ2U7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBjdXN0b20gcGFsZXR0ZSBmcm9tIGN1cnJlbnQgc3RhbmRhcmQgY29sb3IgcmFuZ2Ugb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplQ3VzdG9tUGFsZXR0ZShjb2xvclJhbmdlOiBDb2xvclJhbmdlLCBjb2xvck1hcD86IENvbG9yTWFwKTogQ29sb3JSYW5nZSB7XG4gIC8vIFRPRE86IGNoZWNrIG9uIGBpc1JldmVyc2VkYCBrZXksIHdoZXRoZXIgd2UgY2FuIHJlbW92ZSBpdCBoZXJlXG4gIGNvbnN0IGN1c3RvbVBhbGV0dGUgPSB7XG4gICAgLi4uY29sb3JSYW5nZSxcbiAgICBuYW1lOiBERUZBVUxUX0NVU1RPTV9QQUxFVFRFLm5hbWUsXG4gICAgdHlwZTogREVGQVVMVF9DVVNUT01fUEFMRVRURS50eXBlLFxuICAgIGNhdGVnb3J5OiBERUZBVUxUX0NVU1RPTV9QQUxFVFRFLmNhdGVnb3J5LFxuICAgIC4uLihjb2xvck1hcCA/IHtjb2xvck1hcH0gOiB7fSlcbiAgfTtcblxuICAvLyBvbmx5IGN1c3RvbVBhbGV0dGUuY29sb3JzIGFyZSBuZWVkZWQgZm9yIGN1c3RvbSBwYWxldHRlIGVkaXRvciB3aXRoIGN1c3RvbSBvcmRpbmFsIHNjYWxlXG4gIGlmICghY29sb3JNYXAgJiYgY29sb3JSYW5nZS50eXBlID09PSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsKSB7XG4gICAgZGVsZXRlIGN1c3RvbVBhbGV0dGUuY29sb3JNYXA7XG4gIH1cbiAgcmV0dXJuIGN1c3RvbVBhbGV0dGU7XG59XG4iXSwibWFwcGluZ3MiOiI7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Q0FBQ0UsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJO0lBQ2pEO0VBQ0YsQ0FBQyxNQUFNLElBQUkvRyxVQUFVLENBQUNpRyxRQUFRLEtBQUssYUFBYSxFQUFFO0lBQUEsSUFBQWUsaUJBQUE7SUFDaEQsSUFBTUgsVUFBUyxHQUFHLEVBQUFHLGlCQUFBLEdBQUNoSCxVQUFVLENBQUMwRixJQUFJLGNBQUFzQixpQkFBQSxjQUFBQSxpQkFBQSxHQUFJLEVBQUUsRUFBRUYsS0FBSyxDQUFDTCxnQkFBZ0IsQ0FBQztJQUNqRUUsUUFBUSxHQUFHRSxVQUFTLEdBQUdBLFVBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0ksT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQ0YsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJO0VBQy9FO0VBRUEsSUFBSUosUUFBUSxFQUFFO0lBQ1osSUFBTXRCLGVBQWUsR0FBR0MsZ0NBQXFCLENBQUNFLElBQUksQ0FBQyxVQUFBQyxDQUFDO01BQUEsT0FBSUEsQ0FBQyxDQUFDQyxJQUFJLEtBQUtpQixRQUFRO0lBQUEsRUFBQztJQUM1RSxJQUFJdEIsZUFBZSxFQUFFO01BQ25CLE9BQUFsSCxhQUFBLENBQUFBLGFBQUEsS0FDSzZCLFVBQVU7UUFDYjBGLElBQUksRUFBRWlCLFFBQVE7UUFDZHpELElBQUksRUFBRW1DLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFbkMsSUFBSTtRQUMzQitDLFFBQVEsRUFBRVosZUFBZSxDQUFDWTtNQUFRO0lBRXRDO0VBQ0Y7RUFFQSxPQUFPakcsVUFBVTtBQUNuQjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTa0gsdUJBQXVCQSxDQUFDbEgsVUFBc0IsRUFBRUcsUUFBbUIsRUFBYztFQUMvRjtFQUNBLElBQU02QyxhQUFhLEdBQUE3RSxhQUFBLENBQUFBLGFBQUEsS0FDZDZCLFVBQVU7SUFDYjBGLElBQUksRUFBRXlCLGlDQUFzQixDQUFDekIsSUFBSTtJQUNqQ3hDLElBQUksRUFBRWlFLGlDQUFzQixDQUFDakUsSUFBSTtJQUNqQytDLFFBQVEsRUFBRWtCLGlDQUFzQixDQUFDbEI7RUFBUSxHQUNyQzlGLFFBQVEsR0FBRztJQUFDQSxRQUFRLEVBQVJBO0VBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUMvQjs7RUFFRDtFQUNBLElBQUksQ0FBQ0EsUUFBUSxJQUFJSCxVQUFVLENBQUNrRCxJQUFJLEtBQUtrRSxzQkFBVyxDQUFDQyxhQUFhLEVBQUU7SUFDOUQsT0FBT3JFLGFBQWEsQ0FBQzdDLFFBQVE7RUFDL0I7RUFDQSxPQUFPNkMsYUFBYTtBQUN0QiIsImlnbm9yZUxpc3QiOltdfQ==
462
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9jb21tb25VdGlscyIsIl9kM0NvbG9yIiwiX2QzSW50ZXJwb2xhdGUiLCJfdXRpbHMiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZXhjbHVkZWQiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImhleFRvUmdiIiwiaGV4IiwicmVzdWx0IiwiaXNIZXhDb2xvciIsInBhcnNlSW50IiwiZyIsImIiLCJleGVjIiwiUGFkTnVtIiwiYyIsInRvU3RyaW5nIiwiY29uY2F0IiwicmdiVG9IZXgiLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheTIiLCJtYXAiLCJuIiwiam9pbiIsInRvVXBwZXJDYXNlIiwiaGFzQ29sb3JNYXAiLCJjb2xvclJhbmdlIiwiQXJyYXkiLCJpc0FycmF5IiwiY29sb3JNYXAiLCJCb29sZWFuIiwiY3JlYXRlTGluZWFyR3JhZGllbnQiLCJkaXJlY3Rpb24iLCJjb2xvcnMiLCJzdGVwIiwicGFyc2VGbG9hdCIsInRvRml4ZWQiLCJiYW5kcyIsInJnYiIsImluZGV4IiwiY29sb3JNYXliZVRvUkdCIiwiY29sb3IiLCJpc1JnYkNvbG9yIiwicmdiT2JqIiwiZDNSZ2IiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImV2ZXJ5Iiwibm9ybWFsaXplQ29sb3IiLCJjb21wb25lbnQiLCJjb2xvck1heWJlVG9IZXgiLCJyZ2JDb2xvciIsImludGVycG9sYXRlSGV4IiwiaGV4MSIsImhleDIiLCJpbnRlcnBvbGF0ZSIsImFkZE5ld0NhdGVnb3JpY2FsU3RlcEF0SW5kZXgiLCJuZXdDb2xvciIsIm5ld0NvbG9yTWFwIiwiX3JlZjMiLCJfcmVmNCIsInZhbCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJhcnJheUluc2VydCIsImFkZE5ld1F1YW50YXRpdmVDb2xvckJyZWFrQXRJbmRleCIsIm5ld0NvbG9ycyIsImkiLCJicmVha3MiLCJjbSIsInNsaWNlIiwibmV3VmFsdWUiLCJuZXdCcmVha3MiLCJ1bmRlZmluZWQiLCJhZGRDdXN0b21QYWxldHRlQ29sb3IiLCJjdXN0b21QYWxldHRlIiwidXBkYXRlIiwidHlwZSIsInJlcGxhY2VDb2xvcnNJbkNvbG9yUmFuZ2UiLCJvbGRDb2xvcnMiLCJ1cGRhdGVkIiwiY29sb3JMZWdlbmRzIiwicmVkdWNlIiwiYWNjdSIsImtleSIsImNvbG9ySWR4IiwiZmluZEluZGV4Iiwic29ydEN1c3RvbVBhbGV0dGVDb2xvciIsIm9sZEluZGV4IiwibmV3SW5kZXgiLCJhcnJheU1vdmUiLCJyZW1vdmVDdXN0b21QYWxldHRlQ29sb3IiLCJvbGRWYWx1ZSIsInNwbGljZSIsImNvbG9yTWFwSW5kZXgiLCJ1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IiLCJyZXZlcnNlQ29sb3JSYW5nZSIsInJldmVyc2VkIiwicmV2ZXJzZSIsInBhbGV0dGVJc0NvbG9yQmxpbmRTYWZlIiwicGFsZXR0ZSIsImNvbG9yQmxpbmRTYWZlIiwiaXNRdWFQYWxldHRlIiwiUEFMRVRURV9UWVBFUyIsIlFVQSIsInBhbGV0dGVJc1N0ZXBzIiwic3RlcHMiLCJtYXhTdGVwIiwicGFsZXR0ZUlzVHlwZSIsInVwZGF0ZUNvbG9yUmFuZ2VCeU1hdGNoaW5nUGFsZXR0ZSIsImN1cnJlbnRDb2xvclJhbmdlIiwiY29uZmlnIiwibWF0Y2hpbmdQYWxldHRlIiwiS0VQTEVSX0NPTE9SX1BBTEVUVEVTIiwiYmVzdE1hdGNoIiwiZmluZCIsInAiLCJuYW1lIiwidXBkYXRlQ29sb3JSYW5nZUJ5U2VsZWN0ZWRQYWxldHRlIiwiQ29uc29sZSIsIndhcm4iLCJ1cGRhdGVDdXN0b21Db2xvclJhbmdlQnlDb2xvclVJIiwib2xkQ29sb3JSYW5nZSIsImNvbG9yQ29uZmlnIiwiY2F0ZWdvcnkiLCJjb2xvclBhbGV0dGUiLCJfY29sb3JQYWxldHRlVG9Db2xvclIiLCJjb2xvclBhbGV0dGVUb0NvbG9yUmFuZ2UiLCJuZXdDb2xvclJhbmdlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsIlViZXJOYW1lUmVnZXgiLCJSZWdFeHAiLCJDb2xvckJyZXdlclJlZ2V4IiwiY29sb3JSYW5nZUJhY2t3YXJkQ29tcGF0aWJpbGl0eSIsInRyaW1OYW1lIiwiX2NvbG9yUmFuZ2UkbmFtZSIsIm1hdGNoTmFtZSIsIm1hdGNoIiwidHJpbSIsIl9jb2xvclJhbmdlJG5hbWUyIiwicmVwbGFjZSIsImluaXRpYWxpemVDdXN0b21QYWxldHRlIiwiREVGQVVMVF9DVVNUT01fUEFMRVRURSIsIlNDQUxFX1RZUEVTIiwiY3VzdG9tT3JkaW5hbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xvci11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBDYXRlZ29yaWNhbFBhbGV0dGUsXG4gIENvbG9yUGFsZXR0ZSxcbiAgREVGQVVMVF9DVVNUT01fUEFMRVRURSxcbiAgY29sb3JQYWxldHRlVG9Db2xvclJhbmdlXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7YXJyYXlNb3ZlfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge1xuICBDb2xvck1hcCxcbiAgQ29sb3JSYW5nZSxcbiAgQ29sb3JSYW5nZUNvbmZpZyxcbiAgSGV4Q29sb3IsXG4gIFJHQkFDb2xvcixcbiAgUkdCQ29sb3Jcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge3JnYiBhcyBkM1JnYn0gZnJvbSAnZDMtY29sb3InO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZX0gZnJvbSAnZDMtaW50ZXJwb2xhdGUnO1xuaW1wb3J0IHthcnJheUluc2VydH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge0tFUExFUl9DT0xPUl9QQUxFVFRFUywgUEFMRVRURV9UWVBFUywgU0NBTEVfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuLyoqXG4gKiBnZXQgciBnIGIgZnJvbSBoZXggY29kZVxuICpcbiAqIEBwYXJhbSBoZXhcbiAqIEByZXR1cm5zIGFycmF5IG9mIHIgZyBic1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGV4VG9SZ2IoaGV4OiBzdHJpbmcpOiBSR0JDb2xvciB7XG4gIGNvbnN0IHJlc3VsdCA9IGlzSGV4Q29sb3IoaGV4KTtcblxuICBpZiAoIXJlc3VsdCkge1xuICAgIHJldHVybiBbMCwgMCwgMF07XG4gIH1cblxuICBjb25zdCByID0gcGFyc2VJbnQocmVzdWx0WzFdLCAxNik7XG4gIGNvbnN0IGcgPSBwYXJzZUludChyZXN1bHRbMl0sIDE2KTtcbiAgY29uc3QgYiA9IHBhcnNlSW50KHJlc3VsdFszXSwgMTYpO1xuXG4gIHJldHVybiBbciwgZywgYl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hleENvbG9yKGhleDogc3RyaW5nKTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCB7XG4gIGNvbnN0IHJlc3VsdCA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIFBhZE51bShjKSB7XG4gIGNvbnN0IGhleCA9IGMudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gaGV4Lmxlbmd0aCA9PT0gMSA/IGAwJHtoZXh9YCA6IGhleDtcbn1cblxuLyoqXG4gKiBnZXQgaGV4IGZyb20gciBnIGJcbiAqXG4gKiBAcGFyYW0gcmdiXG4gKiBAcmV0dXJucyBoZXggc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZ2JUb0hleChbciwgZywgYl06IFJHQkNvbG9yIHwgUkdCQUNvbG9yKTogSGV4Q29sb3Ige1xuICByZXR1cm4gYCMke1tyLCBnLCBiXS5tYXAobiA9PiBQYWROdW0obikpLmpvaW4oJycpfWAudG9VcHBlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGNvbG9yIHJhbmdlIGhhcyBjdXN0b20gY29sb3IgbWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNDb2xvck1hcChjb2xvclJhbmdlOiBDb2xvclJhbmdlKTogYm9vbGVhbiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGNvbG9yUmFuZ2UuY29sb3JNYXApICYmIEJvb2xlYW4oY29sb3JSYW5nZS5jb2xvck1hcC5sZW5ndGgpO1xufVxuXG4vKipcbiAqIGdpdmVuIGEgbGlzdCBvZiByZ2IgYXJyYXlzIGl0IHdpbGwgZ2VuZXJhdGUgYSBsaW5lYXIgZ3JhZGllbnQgY3NzIHJ1bGVcbiAqIEBwYXJhbSBkaXJlY3Rpb25cbiAqIEBwYXJhbSBjb2xvcnNcbiAqIEByZXR1cm5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpbmVhckdyYWRpZW50KGRpcmVjdGlvbjogc3RyaW5nLCBjb2xvcnM6IFJHQkNvbG9yW10pOiBzdHJpbmcge1xuICBjb25zdCBzdGVwID0gcGFyc2VGbG9hdCgoMTAwLjAgLyBjb2xvcnMubGVuZ3RoKS50b0ZpeGVkKDIpKTtcbiAgY29uc3QgYmFuZHMgPSBjb2xvcnMubWFwKChyZ2IsIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIGByZ2JhKCR7cmdiLmpvaW4oJywnKX0sIDEpICR7c3RlcCAqIGluZGV4fSUsIHJnYmEoJHtyZ2Iuam9pbignLCcpfSwgMSkgJHtcbiAgICAgIHN0ZXAgKiAoaW5kZXggKyAxKVxuICAgIH0lYDtcbiAgfSk7XG5cbiAgcmV0dXJuIGBsaW5lYXItZ3JhZGllbnQodG8gJHtkaXJlY3Rpb259LCAke2JhbmRzLmpvaW4oJywnKX0pYDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yIHRvIFJHQlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JNYXliZVRvUkdCKGNvbG9yOiB1bmtub3duKTogUkdCQ29sb3IgfCBudWxsIHtcbiAgaWYgKGlzUmdiQ29sb3IoY29sb3IpKSB7XG4gICAgcmV0dXJuIGNvbG9yIGFzIFJHQkNvbG9yO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCByZ2JPYmogPSBkM1JnYihjb2xvcik7XG4gICAgaWYgKE51bWJlci5pc0Zpbml0ZShyZ2JPYmo/LnIpICYmIE51bWJlci5pc0Zpbml0ZShyZ2JPYmo/LmcpICYmIE51bWJlci5pc0Zpbml0ZShyZ2JPYmo/LmIpKSB7XG4gICAgICByZXR1cm4gW3JnYk9iai5yLCByZ2JPYmouZywgcmdiT2JqLmJdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgY29sb3IgaXMgcmdiXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZ2JDb2xvcihjb2xvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihcbiAgICBjb2xvciAmJlxuICAgICAgQXJyYXkuaXNBcnJheShjb2xvcikgJiZcbiAgICAgIGNvbG9yLmxlbmd0aCA9PT0gMyAmJlxuICAgICAgY29sb3IuZXZlcnkobiA9PiBOdW1iZXIuaXNGaW5pdGUobikgJiYgbiA8PSAyNTUgJiYgbiA+PSAwKVxuICApO1xufVxuXG4vKipcbiAqIFRha2UgY29sb3IgdmFsdWVzIGluIDAtMjU1IHJhbmdlIGFuZCBtYXAgdG8gWzAsIDFdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVDb2xvcihjb2xvcjogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gIHJldHVybiBjb2xvci5tYXAoY29tcG9uZW50ID0+IGNvbXBvbmVudCAvIDI1NS4wKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yIHRvIEhleFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JNYXliZVRvSGV4KGNvbG9yOiB1bmtub3duKTogSGV4Q29sb3Ige1xuICBjb25zdCByZ2JDb2xvciA9IGNvbG9yTWF5YmVUb1JHQihjb2xvcik7XG4gIGlmIChyZ2JDb2xvcikgcmV0dXJuIHJnYlRvSGV4KHJnYkNvbG9yKTtcbiAgcmV0dXJuICcjMDAwMDAwJztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yIHRvIEhleFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnBvbGF0ZUhleChoZXgxOiBIZXhDb2xvciwgaGV4MjogSGV4Q29sb3IpOiBIZXhDb2xvciB7XG4gIHJldHVybiBkM1JnYihpbnRlcnBvbGF0ZShoZXgxLCBoZXgyKSgwLjUpKS5oZXgoKS50b1VwcGVyQ2FzZSgpO1xufVxuXG5mdW5jdGlvbiBhZGROZXdDYXRlZ29yaWNhbFN0ZXBBdEluZGV4KGNvbG9yTWFwLCBpbmRleCwgbmV3Q29sb3IpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbG9yTWFwKSB8fCAhY29sb3JNYXAubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG5cbiAgbGV0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChbdmFsLCBjXSkgPT4gW0FycmF5LmlzQXJyYXkodmFsKSA/IFsuLi52YWxdIDogdmFsLCBjXSk7XG4gIG5ld0NvbG9yTWFwID0gYXJyYXlJbnNlcnQobmV3Q29sb3JNYXAsIGluZGV4ICsgMSwgW251bGwsIG5ld0NvbG9yXSk7XG5cbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTmV3UXVhbnRhdGl2ZUNvbG9yQnJlYWtBdEluZGV4KGNvbG9yTWFwLCBpbmRleCwgbmV3Q29sb3JzKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShjb2xvck1hcCkgfHwgIWNvbG9yTWFwLmxlbmd0aCkge1xuICAgIHJldHVybiBjb2xvck1hcDtcbiAgfVxuXG4gIGlmIChjb2xvck1hcC5sZW5ndGggPCAyKSB7XG4gICAgLy8gbGVzcyB0aGVuIDIsIGFkZCAxIGF0IGVuZFxuICAgIC8vIGhvd2V2ZXIgc2hvdWxkbid0IGFsbG93IGRlbGV0ZSB3aGVuIHRoZXJlIGFyZSAyXG4gICAgcmV0dXJuIG5ld0NvbG9ycy5tYXAoKGMsIGkpID0+IChpID09PSAwID8gY29sb3JNYXBbaV0gOiBbbnVsbCwgY10pKTtcbiAgfVxuXG4gIC8vIGJyZWFrcyBzaG91bGQgYmUgMSBsZXNzIHRoYW4gY29sb3JzXG4gIGNvbnN0IGJyZWFrcyA9IGNvbG9yTWFwLm1hcChjbSA9PiBjbVswXSkuc2xpY2UoMCwgY29sb3JNYXAubGVuZ3RoIC0gMSk7XG5cbiAgLy8gaW5zZXJ0IG5ldyBicmVha1xuICBjb25zdCBuZXdWYWx1ZSA9XG4gICAgaW5kZXggPj0gYnJlYWtzLmxlbmd0aCAtIDFcbiAgICAgID8gYnJlYWtzW2JyZWFrcy5sZW5ndGggLSAxXSArXG4gICAgICAgIChicmVha3MubGVuZ3RoID4gMSA/IGJyZWFrc1ticmVha3MubGVuZ3RoIC0gMV0gLSBicmVha3NbYnJlYWtzLmxlbmd0aCAtIDJdIDogMClcbiAgICAgIDogKGJyZWFrc1tpbmRleF0gKyBicmVha3NbaW5kZXggKyAxXSkgLyAyO1xuXG4gIGNvbnN0IG5ld0JyZWFrcyA9IGFycmF5SW5zZXJ0KGJyZWFrcywgaW5kZXggKyAxLCBuZXdWYWx1ZSk7XG5cbiAgLy8gYXNpZ24gYnJlYWtzIHRvIGNvbG9yXG4gIHJldHVybiBuZXdDb2xvcnMubWFwKChjLCBpKSA9PlxuICAgIGkgPT09IG5ld0NvbG9ycy5sZW5ndGggLSAxID8gW251bGwsIGNdIDogW25ld0JyZWFrc1tpXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IG5ld0JyZWFrc1tpXSwgY11cbiAgKTtcbn1cblxuLyoqXG4gKiBBZGQgYSBuZXcgY29sb3IgdG8gY3VzdG9tIHBhbGV0dGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEN1c3RvbVBhbGV0dGVDb2xvcihjdXN0b21QYWxldHRlOiBDb2xvclJhbmdlLCBpbmRleDogbnVtYmVyKTogQ29sb3JSYW5nZSB7XG4gIGNvbnN0IHtjb2xvcnMsIGNvbG9yTWFwfSA9IGN1c3RvbVBhbGV0dGU7XG4gIGNvbnN0IHVwZGF0ZTogUGFydGlhbDxDb2xvclJhbmdlPiA9IHt9O1xuXG4gIGNvbnN0IG5ld0NvbG9yID1cbiAgICBpbmRleCA9PT0gY29sb3JzLmxlbmd0aCAtIDEgPyBjb2xvcnNbaW5kZXhdIDogaW50ZXJwb2xhdGVIZXgoY29sb3JzW2luZGV4XSwgY29sb3JzW2luZGV4ICsgMV0pO1xuXG4gIHVwZGF0ZS5jb2xvcnMgPSBhcnJheUluc2VydChjb2xvcnMsIGluZGV4ICsgMSwgbmV3Q29sb3IpO1xuXG4gIC8vIGFkZCBjb2xvciB0byBjb2xvck1hcFxuICBpZiAoY29sb3JNYXApIHtcbiAgICB1cGRhdGUuY29sb3JNYXAgPVxuICAgICAgY3VzdG9tUGFsZXR0ZS50eXBlID09PSAnY3VzdG9tT3JkaW5hbCdcbiAgICAgICAgPyBhZGROZXdDYXRlZ29yaWNhbFN0ZXBBdEluZGV4KGNvbG9yTWFwLCBpbmRleCwgbmV3Q29sb3IpXG4gICAgICAgIDogYWRkTmV3UXVhbnRhdGl2ZUNvbG9yQnJlYWtBdEluZGV4KGNvbG9yTWFwLCBpbmRleCwgdXBkYXRlLmNvbG9ycyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgLi4udXBkYXRlXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VDb2xvcnNJbkNvbG9yUmFuZ2UoY29sb3JSYW5nZSwgbmV3Q29sb3JzKSB7XG4gIGNvbnN0IG9sZENvbG9ycyA9IGNvbG9yUmFuZ2UuY29sb3JzO1xuICBjb25zdCB1cGRhdGVkID0ge1xuICAgIC4uLmNvbG9yUmFuZ2UsXG4gICAgY29sb3JzOiBuZXdDb2xvcnNcbiAgfTtcblxuICAvLyB1cGRhdGUgY29sb3IgbWFwXG4gIC8vIGtlZXAgdmFsdWUsIHJlcGxhY2UgY29sb3JcbiAgaWYgKEFycmF5LmlzQXJyYXkodXBkYXRlZC5jb2xvck1hcCkpIHtcbiAgICB1cGRhdGVkLmNvbG9yTWFwID0gdXBkYXRlZC5jb2xvck1hcC5tYXAoKGNtLCBpKSA9PiBbY21bMF0sIG5ld0NvbG9yc1tpXV0pO1xuICB9XG4gIC8vIHVwZGF0ZSBjb2xvcmxlZ2VuZHNcbiAgLy8ga2VlcCB2YWx1ZSwgcmVwbGFjZSBjb2xvclxuICBpZiAodXBkYXRlZC5jb2xvckxlZ2VuZHMpIHtcbiAgICB1cGRhdGVkLmNvbG9yTGVnZW5kcyA9IE9iamVjdC5rZXlzKHVwZGF0ZWQuY29sb3JMZWdlbmRzKS5yZWR1Y2UoKGFjY3UsIGtleSkgPT4ge1xuICAgICAgY29uc3QgY29sb3JJZHggPSBvbGRDb2xvcnMuZmluZEluZGV4KGMgPT4gYyA9PT0ga2V5KTtcbiAgICAgIGNvbnN0IG5ld0NvbG9yID0gbmV3Q29sb3JzW2NvbG9ySWR4XTtcblxuICAgICAgcmV0dXJuIG5ld0NvbG9yXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAgIFtuZXdDb2xvcl06IHVwZGF0ZWQuY29sb3JMZWdlbmRzW2tleV1cbiAgICAgICAgICB9XG4gICAgICAgIDogYWNjdTtcbiAgICB9LCB7fSk7XG4gIH1cblxuICByZXR1cm4gdXBkYXRlZDtcbn1cblxuLyoqXG4gKiBTb3J0IGN1c3RvbSBwYWxldHRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yKFxuICBjdXN0b21QYWxldHRlOiBDb2xvclJhbmdlLFxuICBvbGRJbmRleDogbnVtYmVyLFxuICBuZXdJbmRleDogbnVtYmVyXG4pOiBDb2xvclJhbmdlIHtcbiAgY29uc3Qge2NvbG9yc30gPSBjdXN0b21QYWxldHRlO1xuXG4gIGNvbnN0IG5ld0NvbG9ycyA9IGFycmF5TW92ZShjb2xvcnMsIG9sZEluZGV4LCBuZXdJbmRleCk7XG4gIGNvbnN0IHVwZGF0ZSA9IHJlcGxhY2VDb2xvcnNJbkNvbG9yUmFuZ2UoY3VzdG9tUGFsZXR0ZSwgbmV3Q29sb3JzKTtcblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiB7XG4gICAgLi4uY3VzdG9tUGFsZXR0ZSxcbiAgICAuLi51cGRhdGVcbiAgfTtcbn1cblxuLyoqXG4gKiByZW1vdmUgYSBjb2xvciBpbiBjdXN0b20gcGFsZXR0ZSBhdCBpbmRleFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ3VzdG9tUGFsZXR0ZUNvbG9yKGN1c3RvbVBhbGV0dGU6IENvbG9yUmFuZ2UsIGluZGV4OiBudW1iZXIpOiBDb2xvclJhbmdlIHtcbiAgY29uc3Qge2NvbG9ycywgY29sb3JNYXAsIGNvbG9yTGVnZW5kc30gPSBjdXN0b21QYWxldHRlO1xuICBjb25zdCBvbGRWYWx1ZSA9IGNvbG9yc1tpbmRleF07XG4gIGNvbnN0IHVwZGF0ZTogUGFydGlhbDxDb2xvclJhbmdlPiA9IHt9O1xuICB1cGRhdGUuY29sb3JzID0gWy4uLmNvbG9yc107XG5cbiAgaWYgKHVwZGF0ZS5jb2xvcnMubGVuZ3RoID4gMSkge1xuICAgIHVwZGF0ZS5jb2xvcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuICAvLyB1cGRhdGUgY29sb3IgbWFwXG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yTWFwKSkge1xuICAgIC8vIGZpbmQgY29sb3JNYXAgaW5kZXhcbiAgICBjb25zdCBjb2xvck1hcEluZGV4ID0gY29sb3JNYXAuZmluZEluZGV4KGNtID0+IGNtWzFdID09PSBvbGRWYWx1ZSk7XG4gICAgaWYgKGNvbG9yTWFwSW5kZXggPj0gMCkge1xuICAgICAgdXBkYXRlLmNvbG9yTWFwID0gWy4uLmNvbG9yTWFwXTtcbiAgICAgIHVwZGF0ZS5jb2xvck1hcC5zcGxpY2UoY29sb3JNYXBJbmRleCwgMSk7XG4gICAgfVxuICB9XG4gIC8vIHVwZGF0ZSBjb2xvciBsZWdlbmRcbiAgaWYgKGNvbG9yTGVnZW5kcz8uW29sZFZhbHVlXSkge1xuICAgIHVwZGF0ZS5jb2xvckxlZ2VuZHMgPSB7Li4uY29sb3JMZWdlbmRzfTtcbiAgICBkZWxldGUgdXBkYXRlLmNvbG9yTGVnZW5kc1tvbGRWYWx1ZV07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgLi4udXBkYXRlXG4gIH07XG59XG5cbi8qKlxuICogVXBkYXRlIGEgY29sb3IgaW4gY3VzdG9tIHBhbGV0dGUgYXQgaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUN1c3RvbVBhbGV0dGVDb2xvcihcbiAgY3VzdG9tUGFsZXR0ZTogQ29sb3JSYW5nZSxcbiAgaW5kZXg6IG51bWJlcixcbiAgbmV3VmFsdWU6IEhleENvbG9yXG4pOiBDb2xvclJhbmdlIHtcbiAgY29uc3Qge2NvbG9yc30gPSBjdXN0b21QYWxldHRlO1xuICBjb25zdCBoZXggPSBuZXdWYWx1ZS50b1VwcGVyQ2FzZSgpO1xuICBjb25zdCBuZXdDb2xvcnMgPSBbLi4uY29sb3JzXTtcbiAgbmV3Q29sb3JzW2luZGV4XSA9IGhleDtcblxuICBjb25zdCB1cGRhdGUgPSByZXBsYWNlQ29sb3JzSW5Db2xvclJhbmdlKGN1c3RvbVBhbGV0dGUsIG5ld0NvbG9ycyk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4ge1xuICAgIC4uLmN1c3RvbVBhbGV0dGUsXG4gICAgLi4udXBkYXRlXG4gIH07XG59XG5cbi8qKlxuICogR2V0IGEgcmV2ZXJzZWQgY29sb3JSYW5nZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV2ZXJzZUNvbG9yUmFuZ2UocmV2ZXJzZWQ6IGJvb2xlYW4sIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2UpOiBDb2xvclJhbmdlIHtcbiAgY29uc3QgbmV3Q29sb3JzID0gY29sb3JSYW5nZT8uY29sb3JzLnNsaWNlKCkucmV2ZXJzZSgpO1xuICBjb25zdCB1cGRhdGVkID0gcmVwbGFjZUNvbG9yc0luQ29sb3JSYW5nZShjb2xvclJhbmdlLCBuZXdDb2xvcnMpO1xuICB1cGRhdGVkLnJldmVyc2VkID0gcmV2ZXJzZWQ7XG5cbiAgcmV0dXJuIHVwZGF0ZWQ7XG59XG5cbi8qKlxuICogV2hldGhlciBwYWxldHRlIG1hdGNoZXMgY3VycmVudCBDb2xvckJsaW5kU2FmZSBjb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhbGV0dGVJc0NvbG9yQmxpbmRTYWZlKHBhbGV0dGU6IENvbG9yUGFsZXR0ZSwgY29sb3JCbGluZFNhZmU6IGJvb2xlYW4pIHtcbiAgcmV0dXJuICFjb2xvckJsaW5kU2FmZSB8fCAoY29sb3JCbGluZFNhZmUgJiYgcGFsZXR0ZS5jb2xvckJsaW5kU2FmZSk7XG59XG5cbi8qKlxuICogV2hldGhlciBwYWxldHRlIG1hdGNoZXMgY3VycmVudCBzdGVwcyBjb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUXVhUGFsZXR0ZShwYWxldHRlOiBDb2xvclBhbGV0dGUpOiBwYWxldHRlIGlzIENhdGVnb3JpY2FsUGFsZXR0ZSB7XG4gIHJldHVybiBwYWxldHRlLnR5cGUgPT09IFBBTEVUVEVfVFlQRVMuUVVBO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgcGFsZXR0ZSBtYXRjaGVzIGN1cnJlbnQgc3RlcHMgY29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWxldHRlSXNTdGVwcyhwYWxldHRlOiBDb2xvclBhbGV0dGUsIHN0ZXBzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuICFpc1F1YVBhbGV0dGUocGFsZXR0ZSkgfHwgcGFsZXR0ZS5tYXhTdGVwID49IHN0ZXBzO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgcGFsZXR0ZSBtYXRjaGVzIGN1cnJlbnQgdHlwZSBjb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhbGV0dGVJc1R5cGUocGFsZXR0ZTogQ29sb3JQYWxldHRlLCB0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGUgPT09ICdhbGwnIHx8IHR5cGUgPT09IHBhbGV0dGUudHlwZTtcbn1cbi8qKlxuICogRmluZCBiZXN0IG1hdGNoIHBhbGV0dGUgYmFzZWQgb24gY29uZmlnLCB1cGRhdGUgY29sb3IgcmFuZ2UgYnkgaXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUNvbG9yUmFuZ2VCeU1hdGNoaW5nUGFsZXR0ZShcbiAgY3VycmVudENvbG9yUmFuZ2U6IENvbG9yUmFuZ2UsXG4gIGNvbmZpZzogQ29sb3JSYW5nZUNvbmZpZ1xuKTogQ29sb3JSYW5nZSB7XG4gIGNvbnN0IHtzdGVwcywgY29sb3JCbGluZFNhZmUsIHR5cGV9ID0gY29uZmlnO1xuXG4gIGNvbnN0IG1hdGNoaW5nUGFsZXR0ZSA9IEtFUExFUl9DT0xPUl9QQUxFVFRFUy5maWx0ZXIoXG4gICAgcGFsZXR0ZSA9PlxuICAgICAgLy8gcGFsZXR0ZSBtYXRjaCB0eXBlXG4gICAgICBwYWxldHRlSXNUeXBlKHBhbGV0dGUsIHR5cGUpICYmXG4gICAgICAvLyBwYWxldHRlIGhhcyBzYW1lIHN0ZXBcbiAgICAgIHBhbGV0dGVJc1N0ZXBzKHBhbGV0dGUsIHN0ZXBzKSAmJlxuICAgICAgLy8gcGFsZXR0ZSBpcyBjb2xvckJsaW5kU2FmZVxuICAgICAgcGFsZXR0ZUlzQ29sb3JCbGluZFNhZmUocGFsZXR0ZSwgY29sb3JCbGluZFNhZmUpXG4gICk7XG5cbiAgY29uc3QgYmVzdE1hdGNoID0gbWF0Y2hpbmdQYWxldHRlLmxlbmd0aFxuICAgID8gbWF0Y2hpbmdQYWxldHRlLmZpbmQocCA9PiBwLm5hbWUgPT09IGN1cnJlbnRDb2xvclJhbmdlLm5hbWUpIHx8IG1hdGNoaW5nUGFsZXR0ZVswXVxuICAgIDogbnVsbDtcblxuICBpZiAoYmVzdE1hdGNoKSB7XG4gICAgcmV0dXJuIHVwZGF0ZUNvbG9yUmFuZ2VCeVNlbGVjdGVkUGFsZXR0ZShjdXJyZW50Q29sb3JSYW5nZSwgYmVzdE1hdGNoLCBjb25maWcpO1xuICB9XG4gIC8vIHdlIGRvIG5vdGhpbmdcbiAgQ29uc29sZS53YXJuKFxuICAgIGB3ZSBjYW50IGZpbmQgYW55IHByZXNldCBwYWxldHRlIG1hdGNoZXMgcmVxdWlybWVudHM6IHN0ZXBzPSR7c3RlcHN9ICYmIGNvbG9yQmxpbmRTYWZlPSR7Y29sb3JCbGluZFNhZmV9YFxuICApO1xuXG4gIHJldHVybiBjdXJyZW50Q29sb3JSYW5nZTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgY3VzdG9tIHBhbGV0dGUgd2hlbiByZXZlcnNlIHRoZSBjb2xvcnMgaW4gY3VzdG9tIHBhbGV0dGUsIHNpbmNlIGNoYW5naW5nICdzdGVwcycsXG4gKiAnY29sb3JCaW5kU2FmZScsICd0eXBlJyBzaG91bGQgZmFsbCBiYWNrIHRvIHByZWRlZmluZWQgcGFsZXR0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUN1c3RvbUNvbG9yUmFuZ2VCeUNvbG9yVUkoXG4gIG9sZENvbG9yUmFuZ2U6IENvbG9yUmFuZ2UsXG4gIGNvbG9yQ29uZmlnOiBDb2xvclJhbmdlQ29uZmlnXG4pOiBDb2xvclJhbmdlIHtcbiAgY29uc3Qge3JldmVyc2VkfSA9IGNvbG9yQ29uZmlnO1xuICBjb25zdCBjb2xvcnMgPSBvbGRDb2xvclJhbmdlLmNvbG9ycztcbiAgLy8gZm9yIGN1c3RvbSBwYWxldHRlLCBvbmUgY2FuIG9ubHkgJ3JldmVyc2UnIHRoZSBjb2xvcnMgaW4gY3VzdG9tIHBhbGV0dGUuXG4gIGNvbG9ycy5yZXZlcnNlKCk7XG5cbiAgY29uc3QgY29sb3JSYW5nZSA9IHtcbiAgICBuYW1lOiBvbGRDb2xvclJhbmdlLm5hbWUsXG4gICAgdHlwZTogb2xkQ29sb3JSYW5nZS50eXBlLFxuICAgIGNhdGVnb3J5OiBvbGRDb2xvclJhbmdlLmNhdGVnb3J5LFxuICAgIGNvbG9ycyxcbiAgICAuLi4ocmV2ZXJzZWQgPyB7cmV2ZXJzZWR9IDoge30pLFxuICAgIC4uLihvbGRDb2xvclJhbmdlLmNvbG9yTWFwID8ge2NvbG9yTWFwOiBvbGRDb2xvclJhbmdlLmNvbG9yTWFwfSA6IHt9KSxcbiAgICAuLi4ob2xkQ29sb3JSYW5nZS5jb2xvckxlZ2VuZHMgPyB7Y29sb3JMZWdlbmRzOiBvbGRDb2xvclJhbmdlLmNvbG9yTGVnZW5kc30gOiB7fSlcbiAgfTtcblxuICByZXR1cm4gcmVwbGFjZUNvbG9yc0luQ29sb3JSYW5nZShjb2xvclJhbmdlLCBjb2xvclJhbmdlLmNvbG9ycyk7XG59XG5cbi8qKlxuICogVXBkYXRlIGNvbG9yIHJhbmdlIGFmdGVyIHNlbGVjdGluZyBhIHBhbGV0dGUgZnJvbSBjb2xvciByYW5nZSBzZWxlY3RvZXJcbiAqIENvcHkgb3ZlciBjb2xvck1hcCBhbmQgY29sb3JMZWdlbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDb2xvclJhbmdlQnlTZWxlY3RlZFBhbGV0dGUob2xkQ29sb3JSYW5nZSwgY29sb3JQYWxldHRlLCBjb2xvckNvbmZpZykge1xuICBjb25zdCB7Y29sb3JzOiBuZXdDb2xvcnMsIC4uLm5ld0NvbG9yUmFuZ2V9ID0gY29sb3JQYWxldHRlVG9Db2xvclJhbmdlKGNvbG9yUGFsZXR0ZSwgY29sb3JDb25maWcpO1xuXG4gIGNvbnN0IGNvbG9yUmFuZ2UgPSB7XG4gICAgY29sb3JzOiBvbGRDb2xvclJhbmdlLmNvbG9ycyxcbiAgICAuLi5uZXdDb2xvclJhbmdlLFxuICAgIC4uLihvbGRDb2xvclJhbmdlLmNvbG9yTWFwID8ge2NvbG9yTWFwOiBvbGRDb2xvclJhbmdlLmNvbG9yTWFwfSA6IHt9KSxcbiAgICAuLi4ob2xkQ29sb3JSYW5nZS5jb2xvckxlZ2VuZHMgPyB7Y29sb3JMZWdlbmRzOiBvbGRDb2xvclJhbmdlLmNvbG9yTGVnZW5kc30gOiB7fSlcbiAgfTtcblxuICByZXR1cm4gcmVwbGFjZUNvbG9yc0luQ29sb3JSYW5nZShjb2xvclJhbmdlLCBuZXdDb2xvcnMpO1xufVxuXG5jb25zdCBVYmVyTmFtZVJlZ2V4ID0gbmV3IFJlZ0V4cCgvXihbQS1aYS16IF0pKy9nKTtcbmNvbnN0IENvbG9yQnJld2VyUmVnZXggPSBuZXcgUmVnRXhwKC9eQ29sb3JCcmV3ZXIgKFtBLVphLXoxLTldKSsvZyk7XG5cbi8qKlxuICogY29udmVydCBzYXZlZCBjb2xvclJhbmdlIHRvIGNvbG9yUGFsZXR0ZSBvYmpldnQgdHlwZS9uYW1lL2NhdGVnb3J5L2lzQ29sb3JCbGluZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JSYW5nZUJhY2t3YXJkQ29tcGF0aWJpbGl0eShjb2xvclJhbmdlOiBDb2xvclJhbmdlKTogQ29sb3JSYW5nZSB7XG4gIGlmICghY29sb3JSYW5nZSB8fCBjb2xvclJhbmdlLnR5cGUgPT09ICdjdXN0b20nIHx8IGNvbG9yUmFuZ2UuY29sb3JNYXApIHtcbiAgICAvLyBkb24ndCBkbyBhbnl0aGluZyB0byBjdXN0b20gY29sb3IgcGFsZXR0ZSwgb3IgcGFsZXR0ZSB3aXRoIGN1c3RvbSBicmVha3NcbiAgICByZXR1cm4gY29sb3JSYW5nZTtcbiAgfVxuICBsZXQgdHJpbU5hbWU7XG4gIGlmIChjb2xvclJhbmdlLmNhdGVnb3J5ID09PSAnVWJlcicpIHtcbiAgICBjb25zdCBtYXRjaE5hbWUgPSAoY29sb3JSYW5nZS5uYW1lID8/ICcnKS5tYXRjaChVYmVyTmFtZVJlZ2V4KTtcbiAgICB0cmltTmFtZSA9IG1hdGNoTmFtZSA/IG1hdGNoTmFtZVswXS50cmltKCkgOiBudWxsO1xuICAgIC8vIG1hdGNoIFViZXIgVml6IFF1YWxpdGF0aXZlIDEuNCAtPiBVYmVyIFZpeiBRdWFsaXRhdGl2ZVxuICB9IGVsc2UgaWYgKGNvbG9yUmFuZ2UuY2F0ZWdvcnkgPT09ICdDb2xvckJyZXdlcicpIHtcbiAgICBjb25zdCBtYXRjaE5hbWUgPSAoY29sb3JSYW5nZS5uYW1lID8/ICcnKS5tYXRjaChDb2xvckJyZXdlclJlZ2V4KTtcbiAgICB0cmltTmFtZSA9IG1hdGNoTmFtZSA/IG1hdGNoTmFtZVswXS5yZXBsYWNlKCdDb2xvckJyZXdlciAnLCAnJykudHJpbSgpIDogbnVsbDtcbiAgfVxuXG4gIGlmICh0cmltTmFtZSkge1xuICAgIGNvbnN0IG1hdGNoaW5nUGFsZXR0ZSA9IEtFUExFUl9DT0xPUl9QQUxFVFRFUy5maW5kKHAgPT4gcC5uYW1lID09PSB0cmltTmFtZSk7XG4gICAgaWYgKG1hdGNoaW5nUGFsZXR0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY29sb3JSYW5nZSxcbiAgICAgICAgbmFtZTogdHJpbU5hbWUsXG4gICAgICAgIHR5cGU6IG1hdGNoaW5nUGFsZXR0ZT8udHlwZSxcbiAgICAgICAgY2F0ZWdvcnk6IG1hdGNoaW5nUGFsZXR0ZS5jYXRlZ29yeVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29sb3JSYW5nZTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGN1c3RvbSBwYWxldHRlIGZyb20gY3VycmVudCBzdGFuZGFyZCBjb2xvciByYW5nZSBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVDdXN0b21QYWxldHRlKGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2UsIGNvbG9yTWFwPzogQ29sb3JNYXApOiBDb2xvclJhbmdlIHtcbiAgLy8gVE9ETzogY2hlY2sgb24gYGlzUmV2ZXJzZWRgIGtleSwgd2hldGhlciB3ZSBjYW4gcmVtb3ZlIGl0IGhlcmVcbiAgY29uc3QgY3VzdG9tUGFsZXR0ZSA9IHtcbiAgICAuLi5jb2xvclJhbmdlLFxuICAgIG5hbWU6IERFRkFVTFRfQ1VTVE9NX1BBTEVUVEUubmFtZSxcbiAgICB0eXBlOiBERUZBVUxUX0NVU1RPTV9QQUxFVFRFLnR5cGUsXG4gICAgY2F0ZWdvcnk6IERFRkFVTFRfQ1VTVE9NX1BBTEVUVEUuY2F0ZWdvcnksXG4gICAgLi4uKGNvbG9yTWFwID8ge2NvbG9yTWFwfSA6IHt9KVxuICB9O1xuXG4gIC8vIG9ubHkgY3VzdG9tUGFsZXR0ZS5jb2xvcnMgYXJlIG5lZWRlZCBmb3IgY3VzdG9tIHBhbGV0dGUgZWRpdG9yIHdpdGggY3VzdG9tIG9yZGluYWwgc2NhbGVcbiAgaWYgKCFjb2xvck1hcCAmJiBjb2xvclJhbmdlLnR5cGUgPT09IFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWwpIHtcbiAgICBkZWxldGUgY3VzdG9tUGFsZXR0ZS5jb2xv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
@@ -106,8 +106,8 @@ export interface DataContainerInterface {
106
106
  * @param options Specify start and end row indices that should be mapped.
107
107
  * @returns A new array with each element being the result of the func callback.
108
108
  */
109
- mapIndex(func: ({ index: number }: {
110
- index: any;
109
+ mapIndex(func: ({ index }: {
110
+ index: number;
111
111
  }, dataContainer: DataContainerInterface) => any, options?: RangeOptions): any[];
112
112
  /**
113
113
  * Returns the value of the first row in the provided data container that satisfies the provided testing function.
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGEtY29udGFpbmVyLWludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1Byb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YVJvdywgU2hhcmVkUm93T3B0aW9uc30gZnJvbSAnLi9kYXRhLXJvdyc7XG5cbi8qKlxuICogU3BlY2lmaWVzIGEgcmFuZ2Ugb2Ygcm93cyBvZiBhIGRhdGEgY29udGFpbmVyIHRoYXQgc2hvdWxkIGJlIHByb2Nlc3NlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUmFuZ2VPcHRpb25zID0ge1xuICBzdGFydD86IG51bWJlcjtcbiAgZW5kPzogbnVtYmVyO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUNvbnRhaW5lckludGVyZmFjZSB7XG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBkYXRhIGNvbnRhaW5lciB3aXRoIG5ldyBkYXRhLlxuICAgKiBAcGFyYW0gdXBkYXRlRGF0YSB1cGRhdGVkIGRhdGEsIGUuZy4gZm9yIGFycm93IGRhdGEgY29udGFpbmVyLCBpdCdzIGFuIGFycmF5IG9mIGFycm93IGNvbHVtbnM7IGZvciByb3cgZGF0YSBjb250YWluZXIsIGl0J3MgYW4gYXJyYXkgb2Ygcm93cy5cbiAgICovXG4gIHVwZGF0ZT8odXBkYXRlRGF0YTogYW55W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygcm93cyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIE51bWJlciBvZiByb3dzIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICovXG4gIG51bVJvd3MoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICovXG4gIG51bUNvbHVtbnMoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgdGhlIHNwZWNpZmllZCBjZWxsIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIHJvd0luZGV4IFJvdyBpbmRleC5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgVmFsdWUgYXQgdGhlIHNwZWNpZmllZCBjZWxsLlxuICAgKi9cbiAgdmFsdWVBdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYW55O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByb3cgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICogQHBhcmFtIHJvd0luZGV4IFJvdyBpbmRleC5cbiAgICogQHBhcmFtIHNoYXJlZFJvdyBQYXNzZWQgcm93IGlzIGZpbGxlZCB3aXRoIGNvbnRlbnRzIGZyb20gdGhlIHNwZWNpZmllZCBpbmRleCBhbmQgcmV0dXJuZWQgd2l0aG91dCBleHRyYSByb3cgYWxsb2NhdGlvbnMuXG4gICAqIEByZXR1cm5zIEEgcm93IG9iamVjdC5cbiAgICovXG4gIHJvdyhyb3dJbmRleDogbnVtYmVyLCBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zKTogRGF0YVJvdztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3BlY2lmaWVkIHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkuXG4gICAqIEBwYXJhbSByb3dJbmRleCBSb3cgaW5kZXguXG4gICAqIEByZXR1cm5zIFRoZSBzcGVjaWZpZWQgcm93IHJlcHJlc2VudGVkIGFzIGFuIGFycmF5LlxuICAgKi9cbiAgcm93QXNBcnJheShyb3dJbmRleDogbnVtYmVyKTogYW55W107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gc2VxdWVudGlhbGx5IGFjY2VzcyBhbGwgcm93cyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgSW5kaWNhdGVzIHRoYXQgYSB0ZW1wb3Jhcnkgcm93IG9iamVjdCBzaG91bGQgYmUgdXNlZC5cbiAgICogSWYgZW5hYmxlZCwgdGhlIHJldHVybmVkIHJvdyBvYmplY3QgaXMgc2hhcmVkIGJldHdlZW4gY2FsbHNcbiAgICogYW5kIG11c3RuJ3QgYmUgc3RvcmVkIHdpdGhvdXQgY2xvbmluZy5cbiAgICogUGFzc2VkIHJvdyBpcyBmaWxsZWQgd2l0aCBjb250ZW50cyBvZiB0aGUgc3BlY2lmaWVkIHJvdyBhbmQgcmV0dXJuZWQgb24gZWFjaCBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIEFuIGl0ZXJhdG9yIHRvIHNlcXVlbnRpYWxseSBhY2Nlc3MgYWxsIHJvd3MgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKi9cbiAgcm93cyhzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zKTogR2VuZXJhdG9yPERhdGFSb3csIHZvaWQsIGFueT47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gc2VxdWVudGlhbGx5IGFjY2VzcyBhbGwgdmFsdWVzIGluIHRoZSBzcGVjaWZpZWQgY29sdW1uIG9mIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgQW4gaXRlcmF0b3IgdG8gYWxsIHZhbHVlcyBpbiB0aGUgc3BlY2lmaWVkIGNvbHVtbiBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqL1xuICBjb2x1bW4oY29sdW1uSW5kZXg6IG51bWJlcik6IEdlbmVyYXRvcjxhbnksIHZvaWQsIGFueT47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvbHVtbiBvYmplY3QgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgVGhlIGNvbHVtbiBvYmplY3QgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICovXG4gIGdldENvbHVtbj8oY29sdW1uSW5kZXg6IG51bWJlcik6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZpZWxkIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuICAgKiBAcGFyYW0gY29sdW1uSW5kZXggQ29sdW1uIGluZGV4LlxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgb2JqZWN0IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAqL1xuICBnZXRGaWVsZD8oY29sdW1uSW5kZXg6IG51bWJlcik6IFByb3RvRGF0YXNldEZpZWxkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGRhdGEgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGRhdGEgb2JqZWN0LlxuICAgKi9cbiAgZ2V0VGFibGU/KCk6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY29udGVudHMgb2YgdGhlIGRhdGEgY29udGFpbmVyIGFzIGEgdHdvLWRpbWVuc2lvbmFsIGFycmF5LlxuICAgKiBAcmV0dXJucyBEYXRhLlxuICAgKi9cbiAgZmxhdHRlbkRhdGEoKTogYW55W11bXTtcblxuICAvKipcbiAgICogR2VuZXJhdGVzIGFuIGFycmF5IG9mIGluZGljZXMgd2hlcmUgZWFjaCBpbmRleCByZXByZXNlbnRzIGEgcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaW5kaWNlcy5cbiAgICovXG4gIGdldFBsYWluSW5kZXgoKTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYXJyYXkgcG9wdWxhdGVkIHdpdGggdGhlIHJlc3VsdHMgb2YgY2FsbGluZyB0aGUgcHJvdmlkZWQgY2FsbGJhY2tcbiAgICogb24gZXZlcnkgcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGZ1bmMgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czpcbiAgICogLSByb3c6IFRoZSBjdXJyZW50IHJvdyBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKiAtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgU3BlY2lmeSBzdGFydCBhbmQgZW5kIHJvdyBpbmRpY2VzIHRoYXQgc2hvdWxkIGJlIG1hcHBlZC5cbiAgICogQHJldHVybnMgQSBuZXcgYXJyYXkgd2l0aCBlYWNoIGVsZW1lbnQgYmVpbmcgdGhlIHJlc3VsdCBvZiB0aGUgZnVuYyBjYWxsYmFjay5cbiAgICovXG4gIG1hcChcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBhbnksXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9ucyxcbiAgICBvcHRpb25zPzogUmFuZ2VPcHRpb25zXG4gICk6IGFueVtdO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5IHBvcHVsYXRlZCB3aXRoIHRoZSByZXN1bHRzIG9mIGNhbGxpbmcgdGhlIHByb3ZpZGVkIGNhbGxiYWNrLlxuICAgKiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIGZvciBldmVyeSByb3cgaW4gdGhlIGRhdGFzZXQsIGJ1dCBvbmx5IHtpbmRleH0gb2JqZWN0IGlzIHBhc3NlZC5cbiAgICogQHBhcmFtIGZ1bmMgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBvcHRpb25zIFNwZWNpZnkgc3RhcnQgYW5kIGVuZCByb3cgaW5kaWNlcyB0aGF0IHNob3VsZCBiZSBtYXBwZWQuXG4gICAqIEByZXR1cm5zIEEgbmV3IGFycmF5IHdpdGggZWFjaCBlbGVtZW50IGJlaW5nIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmMgY2FsbGJhY2suXG4gICAqL1xuICBtYXBJbmRleChcbiAgICBmdW5jOiAoe2luZGV4OiBudW1iZXJ9LCBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBhbnksXG4gICAgb3B0aW9ucz86IFJhbmdlT3B0aW9uc1xuICApOiBhbnlbXTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IHJvdyBpbiB0aGUgcHJvdmlkZWQgZGF0YSBjb250YWluZXIgdGhhdCBzYXRpc2ZpZXMgdGhlIHByb3ZpZGVkIHRlc3RpbmcgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBmdW5jIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZWFjaCB2YWx1ZSBpbiB0aGUgYXJyYXkuXG4gICAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czpcbiAgICogLSByb3c6IFRoZSBjdXJyZW50IHJvdyBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKiAtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHJldHVybnMgRmlyc3QgbWF0Y2hpbmcgcm93IG9yIHVuZGVmaW5lZCBpZiBubyByb3dzIHNhdGlzZnkgdGhlIHRlc3RpbmcgZnVuY3Rpb24uXG4gICAqL1xuICBmaW5kKFxuICAgIGZ1bmM6IChyb3c6IERhdGFSb3csIGluZGV4OiBudW1iZXIpID0+IGFueSxcbiAgICBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zXG4gICk6IERhdGFSb3cgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgcmVkdWNlciBmdW5jdGlvbiBvbiBlYWNoIGVsZW1lbnQgb2YgdGhlIGRhdGEgY29udGFpbmVyLCByZXN1bHRpbmcgaW4gc2luZ2xlIG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIGZ1bmMgQSBmdW5jdGlvbiB0byBleGVjdXRlIG9uIGVhY2ggcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOlxuICAgKiAtIGFjYzogVGhlIGFjY3VtdWxhdG9yIGFjY3VtdWxhdGVzIGZ1bmMncyByZXR1cm4gdmFsdWVzLlxuICAgKiAtIHJvdzogVGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIC0gaW5kZXg6IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCByb3cgYmVpbmcgcHJvY2Vzc2VkIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGluaXRpYWxWYWx1ZSBBIHZhbHVlIHRvIHVzZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGZpcnN0IGNhbGwgb2YgdGhlIGZ1bmMuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHJldHVybnMgVGhlIHNpbmdsZSB2YWx1ZSB0aGF0IHJlc3VsdHMgZnJvbSB0aGUgcmVkdWN0aW9uLlxuICAgKi9cbiAgcmVkdWNlKFxuICAgIGZ1bmM6IChhY2M6IGFueSwgcm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBhbnksXG4gICAgaW5pdGlhbFZhbHVlOiBhbnksXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBhbnk7XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGEtY29udGFpbmVyLWludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1Byb3RvRGF0YXNldEZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YVJvdywgU2hhcmVkUm93T3B0aW9uc30gZnJvbSAnLi9kYXRhLXJvdyc7XG5cbi8qKlxuICogU3BlY2lmaWVzIGEgcmFuZ2Ugb2Ygcm93cyBvZiBhIGRhdGEgY29udGFpbmVyIHRoYXQgc2hvdWxkIGJlIHByb2Nlc3NlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUmFuZ2VPcHRpb25zID0ge1xuICBzdGFydD86IG51bWJlcjtcbiAgZW5kPzogbnVtYmVyO1xufTtcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUNvbnRhaW5lckludGVyZmFjZSB7XG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBkYXRhIGNvbnRhaW5lciB3aXRoIG5ldyBkYXRhLlxuICAgKiBAcGFyYW0gdXBkYXRlRGF0YSB1cGRhdGVkIGRhdGEsIGUuZy4gZm9yIGFycm93IGRhdGEgY29udGFpbmVyLCBpdCdzIGFuIGFycmF5IG9mIGFycm93IGNvbHVtbnM7IGZvciByb3cgZGF0YSBjb250YWluZXIsIGl0J3MgYW4gYXJyYXkgb2Ygcm93cy5cbiAgICovXG4gIHVwZGF0ZT8odXBkYXRlRGF0YTogYW55W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygcm93cyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIE51bWJlciBvZiByb3dzIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICovXG4gIG51bVJvd3MoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEByZXR1cm5zIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICovXG4gIG51bUNvbHVtbnMoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgdGhlIHNwZWNpZmllZCBjZWxsIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIHJvd0luZGV4IFJvdyBpbmRleC5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgVmFsdWUgYXQgdGhlIHNwZWNpZmllZCBjZWxsLlxuICAgKi9cbiAgdmFsdWVBdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYW55O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSByb3cgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICogQHBhcmFtIHJvd0luZGV4IFJvdyBpbmRleC5cbiAgICogQHBhcmFtIHNoYXJlZFJvdyBQYXNzZWQgcm93IGlzIGZpbGxlZCB3aXRoIGNvbnRlbnRzIGZyb20gdGhlIHNwZWNpZmllZCBpbmRleCBhbmQgcmV0dXJuZWQgd2l0aG91dCBleHRyYSByb3cgYWxsb2NhdGlvbnMuXG4gICAqIEByZXR1cm5zIEEgcm93IG9iamVjdC5cbiAgICovXG4gIHJvdyhyb3dJbmRleDogbnVtYmVyLCBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zKTogRGF0YVJvdztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3BlY2lmaWVkIHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkuXG4gICAqIEBwYXJhbSByb3dJbmRleCBSb3cgaW5kZXguXG4gICAqIEByZXR1cm5zIFRoZSBzcGVjaWZpZWQgcm93IHJlcHJlc2VudGVkIGFzIGFuIGFycmF5LlxuICAgKi9cbiAgcm93QXNBcnJheShyb3dJbmRleDogbnVtYmVyKTogYW55W107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gc2VxdWVudGlhbGx5IGFjY2VzcyBhbGwgcm93cyBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgSW5kaWNhdGVzIHRoYXQgYSB0ZW1wb3Jhcnkgcm93IG9iamVjdCBzaG91bGQgYmUgdXNlZC5cbiAgICogSWYgZW5hYmxlZCwgdGhlIHJldHVybmVkIHJvdyBvYmplY3QgaXMgc2hhcmVkIGJldHdlZW4gY2FsbHNcbiAgICogYW5kIG11c3RuJ3QgYmUgc3RvcmVkIHdpdGhvdXQgY2xvbmluZy5cbiAgICogUGFzc2VkIHJvdyBpcyBmaWxsZWQgd2l0aCBjb250ZW50cyBvZiB0aGUgc3BlY2lmaWVkIHJvdyBhbmQgcmV0dXJuZWQgb24gZWFjaCBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIEFuIGl0ZXJhdG9yIHRvIHNlcXVlbnRpYWxseSBhY2Nlc3MgYWxsIHJvd3MgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKi9cbiAgcm93cyhzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zKTogR2VuZXJhdG9yPERhdGFSb3csIHZvaWQsIGFueT47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gc2VxdWVudGlhbGx5IGFjY2VzcyBhbGwgdmFsdWVzIGluIHRoZSBzcGVjaWZpZWQgY29sdW1uIG9mIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgQW4gaXRlcmF0b3IgdG8gYWxsIHZhbHVlcyBpbiB0aGUgc3BlY2lmaWVkIGNvbHVtbiBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqL1xuICBjb2x1bW4oY29sdW1uSW5kZXg6IG51bWJlcik6IEdlbmVyYXRvcjxhbnksIHZvaWQsIGFueT47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvbHVtbiBvYmplY3QgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICogQHBhcmFtIGNvbHVtbkluZGV4IENvbHVtbiBpbmRleC5cbiAgICogQHJldHVybnMgVGhlIGNvbHVtbiBvYmplY3QgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICovXG4gIGdldENvbHVtbj8oY29sdW1uSW5kZXg6IG51bWJlcik6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZpZWxkIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4LlxuICAgKiBAcGFyYW0gY29sdW1uSW5kZXggQ29sdW1uIGluZGV4LlxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgb2JqZWN0IGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXG4gICAqL1xuICBnZXRGaWVsZD8oY29sdW1uSW5kZXg6IG51bWJlcik6IFByb3RvRGF0YXNldEZpZWxkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGRhdGEgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIGRhdGEgb2JqZWN0LlxuICAgKi9cbiAgZ2V0VGFibGU/KCk6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY29udGVudHMgb2YgdGhlIGRhdGEgY29udGFpbmVyIGFzIGEgdHdvLWRpbWVuc2lvbmFsIGFycmF5LlxuICAgKiBAcmV0dXJucyBEYXRhLlxuICAgKi9cbiAgZmxhdHRlbkRhdGEoKTogYW55W11bXTtcblxuICAvKipcbiAgICogR2VuZXJhdGVzIGFuIGFycmF5IG9mIGluZGljZXMgd2hlcmUgZWFjaCBpbmRleCByZXByZXNlbnRzIGEgcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgaW5kaWNlcy5cbiAgICovXG4gIGdldFBsYWluSW5kZXgoKTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYXJyYXkgcG9wdWxhdGVkIHdpdGggdGhlIHJlc3VsdHMgb2YgY2FsbGluZyB0aGUgcHJvdmlkZWQgY2FsbGJhY2tcbiAgICogb24gZXZlcnkgcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGZ1bmMgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIFRoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czpcbiAgICogLSByb3c6IFRoZSBjdXJyZW50IHJvdyBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKiAtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgU3BlY2lmeSBzdGFydCBhbmQgZW5kIHJvdyBpbmRpY2VzIHRoYXQgc2hvdWxkIGJlIG1hcHBlZC5cbiAgICogQHJldHVybnMgQSBuZXcgYXJyYXkgd2l0aCBlYWNoIGVsZW1lbnQgYmVpbmcgdGhlIHJlc3VsdCBvZiB0aGUgZnVuYyBjYWxsYmFjay5cbiAgICovXG4gIG1hcChcbiAgICBmdW5jOiAocm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBhbnksXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9ucyxcbiAgICBvcHRpb25zPzogUmFuZ2VPcHRpb25zXG4gICk6IGFueVtdO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5IHBvcHVsYXRlZCB3aXRoIHRoZSByZXN1bHRzIG9mIGNhbGxpbmcgdGhlIHByb3ZpZGVkIGNhbGxiYWNrLlxuICAgKiBUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIGZvciBldmVyeSByb3cgaW4gdGhlIGRhdGFzZXQsIGJ1dCBvbmx5IHtpbmRleH0gb2JqZWN0IGlzIHBhc3NlZC5cbiAgICogQHBhcmFtIGZ1bmMgQ2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IHJvdyBvZiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBvcHRpb25zIFNwZWNpZnkgc3RhcnQgYW5kIGVuZCByb3cgaW5kaWNlcyB0aGF0IHNob3VsZCBiZSBtYXBwZWQuXG4gICAqIEByZXR1cm5zIEEgbmV3IGFycmF5IHdpdGggZWFjaCBlbGVtZW50IGJlaW5nIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmMgY2FsbGJhY2suXG4gICAqL1xuICBtYXBJbmRleChcbiAgICBmdW5jOiAoe2luZGV4fToge2luZGV4OiBudW1iZXJ9LCBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBhbnksXG4gICAgb3B0aW9ucz86IFJhbmdlT3B0aW9uc1xuICApOiBhbnlbXTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IHJvdyBpbiB0aGUgcHJvdmlkZWQgZGF0YSBjb250YWluZXIgdGhhdCBzYXRpc2ZpZXMgdGhlIHByb3ZpZGVkIHRlc3RpbmcgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBmdW5jIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZWFjaCB2YWx1ZSBpbiB0aGUgYXJyYXkuXG4gICAqIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czpcbiAgICogLSByb3c6IFRoZSBjdXJyZW50IHJvdyBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIGRhdGEgY29udGFpbmVyLlxuICAgKiAtIGluZGV4OiBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHJldHVybnMgRmlyc3QgbWF0Y2hpbmcgcm93IG9yIHVuZGVmaW5lZCBpZiBubyByb3dzIHNhdGlzZnkgdGhlIHRlc3RpbmcgZnVuY3Rpb24uXG4gICAqL1xuICBmaW5kKFxuICAgIGZ1bmM6IChyb3c6IERhdGFSb3csIGluZGV4OiBudW1iZXIpID0+IGFueSxcbiAgICBzaGFyZWRSb3c/OiBTaGFyZWRSb3dPcHRpb25zXG4gICk6IERhdGFSb3cgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIGEgcmVkdWNlciBmdW5jdGlvbiBvbiBlYWNoIGVsZW1lbnQgb2YgdGhlIGRhdGEgY29udGFpbmVyLCByZXN1bHRpbmcgaW4gc2luZ2xlIG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIGZ1bmMgQSBmdW5jdGlvbiB0byBleGVjdXRlIG9uIGVhY2ggcm93IGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOlxuICAgKiAtIGFjYzogVGhlIGFjY3VtdWxhdG9yIGFjY3VtdWxhdGVzIGZ1bmMncyByZXR1cm4gdmFsdWVzLlxuICAgKiAtIHJvdzogVGhlIGN1cnJlbnQgcm93IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgZGF0YSBjb250YWluZXIuXG4gICAqIC0gaW5kZXg6IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCByb3cgYmVpbmcgcHJvY2Vzc2VkIGluIHRoZSBkYXRhIGNvbnRhaW5lci5cbiAgICogQHBhcmFtIGluaXRpYWxWYWx1ZSBBIHZhbHVlIHRvIHVzZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGZpcnN0IGNhbGwgb2YgdGhlIGZ1bmMuXG4gICAqIEBwYXJhbSBzaGFyZWRSb3cgVHJ1dGh5IHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc2hhcmVkIHJvdyBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuXG4gICAqIE1ha2Ugc3VyZSB0aGUgZnVuYyBjYWxsYmFjayBkb2Vzbid0IHN0b3JlIHRoZSByb3cgb2JqZWN0IGluIHN1Y2ggY2FzZSxcbiAgICogYW5kIGNsb25lIHRoZSByb3cgaW4gY2FzZSB5b3UgbmVlZCB0byBzdG9yZSBpdC5cbiAgICogQHJldHVybnMgVGhlIHNpbmdsZSB2YWx1ZSB0aGF0IHJlc3VsdHMgZnJvbSB0aGUgcmVkdWN0aW9uLlxuICAgKi9cbiAgcmVkdWNlKFxuICAgIGZ1bmM6IChhY2M6IGFueSwgcm93OiBEYXRhUm93LCBpbmRleDogbnVtYmVyKSA9PiBhbnksXG4gICAgaW5pdGlhbFZhbHVlOiBhbnksXG4gICAgc2hhcmVkUm93PzogU2hhcmVkUm93T3B0aW9uc1xuICApOiBhbnk7XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -37,7 +37,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
37
37
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
38
38
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
39
39
  var _d3Array = require("d3-array");
40
- var _lodash = _interopRequireDefault(require("lodash.uniq"));
40
+ var _uniq = _interopRequireDefault(require("lodash/uniq"));
41
41
  var _moment = _interopRequireDefault(require("moment"));
42
42
  var _commonUtils = require("@kepler.gl/common-utils");
43
43
  var _constants = require("@kepler.gl/constants");
@@ -345,10 +345,10 @@ function colorMapToCategoricalColorBreaks(colorMap) {
345
345
  */
346
346
  function colorBreaksToCategoricalColorMap(colorBreaks) {
347
347
  // colorMap: [string | string[], hexstring]
348
- var colors = (0, _lodash["default"])(colorBreaks.map(function (cb) {
348
+ var colors = (0, _uniq["default"])(colorBreaks.map(function (cb) {
349
349
  return cb.data;
350
350
  }));
351
- var values = (0, _lodash["default"])(colorBreaks.map(function (cb) {
351
+ var values = (0, _uniq["default"])(colorBreaks.map(function (cb) {
352
352
  return cb.label;
353
353
  }));
354
354
  return getCategoricalColorMap(colors, values);
@@ -529,7 +529,7 @@ function addCategoricalValuesToColorMap(colorMap, items, index) {
529
529
  return [items, cm[1]];
530
530
  }
531
531
  var _currentUniqueValues = (0, _commonUtils.toArray)(cm[0]);
532
- var updatedUniqueValues = (0, _lodash["default"])(_currentUniqueValues.concat(items));
532
+ var updatedUniqueValues = (0, _uniq["default"])(_currentUniqueValues.concat(items));
533
533
  return [updatedUniqueValues, cm[1]];
534
534
  }
535
535
  // remove value from other colorMap
@@ -598,4 +598,4 @@ function initCustomPaletteByCustomScale(_ref9) {
598
598
  };
599
599
  return customPalette;
600
600
  }
601
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9tb21lbnQiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX2NvbG9yVXRpbHMiLCJfZGF0YVV0aWxzIiwiX2ZpbHRlclV0aWxzIiwiX3V0aWxzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJnZXRRdWFudGlsZURvbWFpbiIsImRhdGEiLCJ2YWx1ZUFjY2Vzc29yIiwic29ydEZ1bmMiLCJ2YWx1ZXMiLCJtYXAiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJzb3J0IiwiZ2V0T3JkaW5hbERvbWFpbiIsImRhdGFDb250YWluZXIiLCJtYXBJbmRleCIsInVuaXF1ZSIsImdldExpbmVhckRvbWFpbiIsInJhbmdlIiwiZXh0ZW50IiwiZCIsImkiLCJ1bmRlZmluZWQiLCJnZXRMb2dEb21haW4iLCJfZ2V0TGluZWFyRG9tYWluIiwiX2dldExpbmVhckRvbWFpbjIiLCJfc2xpY2VkVG9BcnJheTIiLCJkMCIsImQxIiwiaXNEb21haW5TdG9wcyIsImRvbWFpbiIsImlzUGxhaW5PYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJzdG9wcyIsInoiLCJpc0RvbWFpblF1YW50aWxlIiwicXVhbnRpbGVzIiwiZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMiLCJidWNrZXRzIiwidGhyZXNob2xkcyIsIk51bWJlciIsImlzRmluaXRlIiwicG9zaXRpb24iLCJkM1F1YW50aWxlIiwiZ2V0RG9tYWluU3RlcHNieVpvb20iLCJzdGVwcyIsImJpc2VjdExlZnQiLCJNYXRoIiwibWF4IiwiZ2V0U2NhbGVGdW5jdGlvbiIsInNjYWxlIiwiZml4ZWQiLCJzY2FsZUZ1bmN0aW9uIiwiU0NBTEVfRlVOQyIsInNjYWxlVHlwZSIsImdldFRocmVzaG9sZExhYmVscyIsImxhYmVsRm9ybWF0IiwiZ2VuTGVuZ3RoIiwiaW52ZXJ0IiwiaW52ZXJ0RXh0ZW50IiwiaW5wdXRzIiwicmV2ZXJzZUZvcm1hdE51bWJlciIsImxhYmVsIiwiY29uY2F0IiwiZ2V0U2NhbGVMYWJlbHMiLCJjdXN0b21TY2FsZUxhYmVsRm9ybWF0IiwibiIsImZvcm1hdE51bWJlciIsImdldFF1YW50TGVnZW5kcyIsInRocmVzaG9sZExhYmVsRm9ybWF0IiwidHlwZSIsImxhYmVscyIsImluZGV4IiwicmdiVG9IZXgiLCJnZXRPcmRpbmFsTGVnZW5kcyIsImRhdHVtIiwiaXNSZ2JDb2xvciIsImRlZmF1bHRGb3JtYXQiLCJnZXRUaW1lTGFiZWxGb3JtYXQiLCJmb3JtYXR0ZXIiLCJnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlciIsInZhbCIsIm1vbWVudCIsInV0YyIsImZvcm1hdCIsImdldFF1YW50TGFiZWxGb3JtYXQiLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJ0aW1lc3RhbXAiLCJpc051bWJlciIsImdldExlZ2VuZE9mU2NhbGUiLCJfcmVmIiwiYnlab29tIiwiU0NBTEVfVFlQRVMiLCJvcmRpbmFsIiwiY3VzdG9tT3JkaW5hbCIsInN0cmluZyIsImZvcm1hdExhYmVsIiwiZ2V0TGF5ZXJDb2xvclNjYWxlIiwiX3JlZjIiLCJsYXllciIsImdldENvbG9yU2NhbGUiLCJpbml0aWFsaXplTGF5ZXJDb2xvck1hcCIsInZpc3VhbENoYW5uZWwiLCJjb25maWciLCJ2aXNDb25maWciLCJmaWVsZCIsImNvbG9yQnJlYWtzIiwiY29sb3JCcmVha3NUb0NvbG9yTWFwIiwiZ2V0VmlzdWFsQ2hhbm5lbFNjYWxlQnlab29tIiwiX3JlZjMiLCJfc2NhbGUiLCJtYXBTdGF0ZSIsIl9sYXllciRtZXRhIiwibWV0YSIsImdldFpvb20iLCJ6b29tIiwiZ2V0Q2F0ZWdvcmljYWxDb2xvck1hcCIsImNvbG9ycyIsImNvbG9yVG9VbmlxdWVWYWx1ZXMiLCJ1bmlxdWVWYWx1ZXMiLCJsYXN0Q29sb3IiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiY29sb3JNYXAiLCJjb2xvciIsImNvbG9yTWFwVG9DYXRlZ29yaWNhbENvbG9yQnJlYWtzIiwiX3JlZjQiLCJfcmVmNSIsInZhbHVlIiwiY29sb3JCcmVha3NUb0NhdGVnb3JpY2FsQ29sb3JNYXAiLCJ1bmlxIiwiY2IiLCJjb2xvckJyZWFrIiwiY29sb3JNYXBUb0NvbG9yQnJlYWtzIiwiX3JlZjYiLCJfcmVmNyIsIkluZmluaXR5IiwiaXNOdW1lcmljQ29sb3JCcmVha3MiLCJCb29sZWFuIiwiZ2V0SGlzdG9ncmFtRG9tYWluIiwiX3JlZjgiLCJhZ2dyZWdhdGVkQmlucyIsImNvbHVtblN0YXRzIiwiZGF0YXNldCIsImZpZWxkVmFsdWVBY2Nlc3NvciIsImRvbWFpbk1pbiIsIlBPU0lUSVZFX0lORklOSVRZIiwiZG9tYWluTWF4IiwiTkVHQVRJVkVfSU5GSU5JVFkiLCJuVmFsaWQiLCJkb21haW5TdW0iLCJiaW4iLCJtZWFuIiwiYWxsSW5kZXhlcyIsIngiLCJoaXN0b2dyYW1NZWFuIiwicmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCIsIm5ld0NvbG9yTWFwIiwiY20iLCJzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgiLCJ1bmlxVmFsdWVEaWN0IiwiZnJvbUVudHJpZXMiLCJ0b0FycmF5IiwidiIsInJlc3QiLCJyZW1vdmVDYXRlZ29yaWNhbFZhbHVlRnJvbUNvbG9yTWFwIiwiaXRlbSIsImN1cnJlbnRVbmlxdWVWYWx1ZXMiLCJ1cGRhdGVkVW5pcXVlVmFsdWVzIiwiYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwIiwiaXRlbXMiLCJpbmNsdWRlcyIsImdldENhdGVnb3JpY2FsQ29sb3JTY2FsZSIsImNvbG9yRG9tYWluIiwiY29sb3JSYW5nZSIsInVzZVJnYiIsImNNYXAiLCJoZXhUb1JnYiIsInVua25vd24iLCJOT19WQUxVRV9DT0xPUiIsImluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSIsIl9yZWY5Iiwib3JkaW5hbERvbWFpbiIsImN1c3RvbVBhbGV0dGVOYW1lIiwibmFtZSIsInJldXNlQ29sb3JNYXAiLCJjdXN0b21QYWxldHRlIiwiY2F0ZWdvcnkiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YS1zY2FsZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2Jpc2VjdExlZnQsIHF1YW50aWxlU29ydGVkIGFzIGQzUXVhbnRpbGUsIGV4dGVudH0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZCwgdG9BcnJheX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVMsIFNDQUxFX0ZVTkMsIFNDQUxFX1RZUEVTLCBOT19WQUxVRV9DT0xPUn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuLy8gaW1wb3J0IHtGaWx0ZXJQcm9wcywgS2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0ZWRCaW4sXG4gIENvbG9yTWFwLFxuICBDb2xvclJhbmdlLFxuICBIZXhDb2xvcixcbiAgS2VwbGVyTGF5ZXIgYXMgTGF5ZXIsXG4gIE1hcFN0YXRlLFxuICBWaXN1YWxDaGFubmVsLFxuICBWaXN1YWxDaGFubmVsRG9tYWluLFxuICBSR0JDb2xvcixcbiAgUkdCQUNvbG9yLFxuICBDb2xvclVJLFxuICBGaWVsZFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtpc1JnYkNvbG9yLCByZ2JUb0hleCwgaGV4VG9SZ2J9IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5pbXBvcnQge2Zvcm1hdE51bWJlciwgaXNOdW1iZXIsIHJldmVyc2VGb3JtYXROdW1iZXIsIHVuaXF1ZX0gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7Z2V0VGltZVdpZGdldEhpbnRGb3JtYXR0ZXJ9IGZyb20gJy4vZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIENvbG9yQnJlYWsgPSB7XG4gIGRhdGE6IEhleENvbG9yO1xuICBsYWJlbDogc3RyaW5nO1xuICByYW5nZTogbnVtYmVyW107XG4gIGlucHV0czogbnVtYmVyW107XG59O1xuZXhwb3J0IHR5cGUgQ29sb3JCcmVha09yZGluYWwgPSB7XG4gIGRhdGE6IEhleENvbG9yO1xuICBsYWJlbDogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBudW1iZXJbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBEM1NjYWxlRnVuY3Rpb24gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+ICYgKCh4OiBhbnkpID0+IGFueSk7XG5cbi8vIFRPRE8gaXNvbGF0ZSB0eXBlcyAtIGRlcGVuZHMgb24gQGtlcGxlci5nbC9sYXllcnNcbnR5cGUgRmlsdGVyUHJvcHMgPSBhbnk7XG50eXBlIEtlcGxlclRhYmxlID0gYW55O1xuXG5leHBvcnQgdHlwZSBMYWJlbEZvcm1hdCA9IChuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpID0+IHN0cmluZztcbnR5cGUgZGF0YVZhbHVlQWNjZXNzb3IgPSA8VD4ocGFyYW06IFQpID0+IFQ7XG50eXBlIGRhdGFDb250YWluZXJWYWx1ZUFjY2Vzc29yID0gKGQ6IHtpbmRleDogbnVtYmVyfSwgZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IGFueTtcbnR5cGUgc29ydCA9IChhOiBhbnksIGI6IGFueSkgPT4gYW55O1xuLyoqXG4gKiByZXR1cm4gcXVhbnRpbGUgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWFudGlsZURvbWFpbihcbiAgZGF0YTogYW55W10sXG4gIHZhbHVlQWNjZXNzb3I/OiBkYXRhVmFsdWVBY2Nlc3NvcixcbiAgc29ydEZ1bmM/OiBzb3J0XG4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHZhbHVlcyA9IHR5cGVvZiB2YWx1ZUFjY2Vzc29yID09PSAnZnVuY3Rpb24nID8gZGF0YS5tYXAodmFsdWVBY2Nlc3NvcikgOiBkYXRhO1xuXG4gIHJldHVybiB2YWx1ZXMuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCkuc29ydChzb3J0RnVuYyk7XG59XG5cbi8qKlxuICogcmV0dXJuIG9yZGluYWwgZG9tYWluIGZvciBhIGRhdGEgY29udGFpbmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcmRpbmFsRG9tYWluKFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICB2YWx1ZUFjY2Vzc29yOiBkYXRhQ29udGFpbmVyVmFsdWVBY2Nlc3NvclxuKTogc3RyaW5nW10ge1xuICBjb25zdCB2YWx1ZXMgPSBkYXRhQ29udGFpbmVyLm1hcEluZGV4KHZhbHVlQWNjZXNzb3IpO1xuXG4gIHJldHVybiB1bmlxdWUodmFsdWVzKS5maWx0ZXIobm90TnVsbG9yVW5kZWZpbmVkKS5zb3J0KCk7XG59XG5cbi8qKlxuICogcmV0dXJuIGxpbmVhciBkb21haW4gZm9yIGFuIGFycmF5IG9mIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmVhckRvbWFpbihcbiAgZGF0YTogbnVtYmVyW10sXG4gIHZhbHVlQWNjZXNzb3I/OiBkYXRhVmFsdWVBY2Nlc3NvclxuKTogW251bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IHJhbmdlID0gdHlwZW9mIHZhbHVlQWNjZXNzb3IgPT09ICdmdW5jdGlvbicgPyBleHRlbnQoZGF0YSwgdmFsdWVBY2Nlc3NvcikgOiBleHRlbnQoZGF0YSk7XG4gIHJldHVybiByYW5nZS5tYXAoKGQ6IHVuZGVmaW5lZCB8IG51bWJlciwgaTogbnVtYmVyKSA9PiAoZCA9PT0gdW5kZWZpbmVkID8gaSA6IGQpKSBhcyBbXG4gICAgbnVtYmVyLFxuICAgIG51bWJlclxuICBdO1xufVxuXG4vKipcbiAqIHJldHVybiBsaW5lYXIgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhLiBBIGxvZyBzY2FsZSBkb21haW4gY2Fubm90IGNvbnRhaW4gMFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nRG9tYWluKGRhdGE6IGFueVtdLCB2YWx1ZUFjY2Vzc29yOiBkYXRhVmFsdWVBY2Nlc3Nvcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCBbZDAsIGQxXSA9IGdldExpbmVhckRvbWFpbihkYXRhLCB2YWx1ZUFjY2Vzc29yKTtcbiAgcmV0dXJuIFtkMCA9PT0gMCA/IDFlLTUgOiBkMCwgZDFdO1xufVxuXG5leHBvcnQgdHlwZSBEb21haW5TdG9wcyA9IHtcbiAgc3RvcHM6IG51bWJlcltdO1xuICB6OiBudW1iZXJbXTtcbn07XG5cbi8qKlxuICogd2hldGhlciBmaWVsZCBkb21haW4gaXMgc3RvcHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRG9tYWluU3RvcHMoZG9tYWluOiB1bmtub3duKTogZG9tYWluIGlzIERvbWFpblN0b3BzIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoZG9tYWluKSAmJiBBcnJheS5pc0FycmF5KGRvbWFpbi5zdG9wcykgJiYgQXJyYXkuaXNBcnJheShkb21haW4ueik7XG59XG5cbmV4cG9ydCB0eXBlIERvbWFpblF1YW50aWxlcyA9IHtcbiAgcXVhbnRpbGVzOiBudW1iZXJbXTtcbiAgejogbnVtYmVyW107XG59O1xuXG4vKipcbiAqIHdoZXRoZXIgZmllbGQgZG9tYWluIGlzIHF1YW50aWxlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEb21haW5RdWFudGlsZShkb21haW46IGFueSk6IGRvbWFpbiBpcyBEb21haW5RdWFudGlsZXMge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdChkb21haW4pICYmIEFycmF5LmlzQXJyYXkoZG9tYWluLnF1YW50aWxlcykgJiYgQXJyYXkuaXNBcnJheShkb21haW4ueik7XG59XG5cbi8qKlxuICogZ2V0IHRoZSBkb21haW4gYXQgem9vbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMoXG4gIHF1YW50aWxlczogbnVtYmVyW10sXG4gIGJ1Y2tldHM6IG51bWJlclxuKTogKG51bWJlciB8IHVuZGVmaW5lZClbXSB7XG4gIGNvbnN0IHRocmVzaG9sZHMgPSBbXTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoYnVja2V0cykgfHwgYnVja2V0cyA8IDEpIHtcbiAgICByZXR1cm4gW3F1YW50aWxlc1swXSwgcXVhbnRpbGVzW3F1YW50aWxlcy5sZW5ndGggLSAxXV07XG4gIH1cbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBidWNrZXRzOyBpKyspIHtcbiAgICAvLyBwb3NpdGlvbiBpbiBzb3J0ZWQgYXJyYXlcbiAgICBjb25zdCBwb3NpdGlvbiA9IGkgLyBidWNrZXRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aHJlc2hvbGRzLnB1c2goZDNRdWFudGlsZShxdWFudGlsZXMsIHBvc2l0aW9uKSk7XG4gIH1cblxuICByZXR1cm4gdGhyZXNob2xkcztcbn1cblxuLyoqXG4gKiBnZXQgdGhlIGRvbWFpbiBhdCB6b29tXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb21haW5TdGVwc2J5Wm9vbShkb21haW46IGFueVtdLCBzdGVwczogbnVtYmVyW10sIHo6IG51bWJlcik6IGFueSB7XG4gIGNvbnN0IGkgPSBiaXNlY3RMZWZ0KHN0ZXBzLCB6KTtcblxuICBpZiAoc3RlcHNbaV0gPT09IHopIHtcbiAgICAvLyBJZiB6IGlzIGFuIGludGVnZXIgdmFsdWUgZXhhY3RseSBtYXRjaGluZyBhIHN0ZXAsIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBkb21haW5cbiAgICByZXR1cm4gZG9tYWluW2ldO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSBuZXh0IGNvYXJzZXN0IGRvbWFpblxuICByZXR1cm4gZG9tYWluW01hdGgubWF4KGkgLSAxLCAwKV07XG59XG5cbi8qKlxuICogR2V0IGQzIHNjYWxlIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUZ1bmN0aW9uKFxuICBzY2FsZTogc3RyaW5nLFxuICByYW5nZTogYW55W10gfCBJdGVyYWJsZUl0ZXJhdG9yPGFueT4sXG4gIGRvbWFpbjogKG51bWJlciB8IHVuZGVmaW5lZClbXSB8IHN0cmluZ1tdIHwgSXRlcmFibGVJdGVyYXRvcjxhbnk+LFxuICBmaXhlZD86IGJvb2xlYW5cbik6IEQzU2NhbGVGdW5jdGlvbiB7XG4gIGNvbnN0IHNjYWxlRnVuY3Rpb24gPSBTQ0FMRV9GVU5DW2ZpeGVkID8gJ2xpbmVhcicgOiBzY2FsZV0oKVxuICAgIC5kb21haW4oZG9tYWluKVxuICAgIC5yYW5nZShmaXhlZCA/IGRvbWFpbiA6IHJhbmdlKTtcbiAgc2NhbGVGdW5jdGlvbi5zY2FsZVR5cGUgPSBmaXhlZCA/ICdsaW5lYXInIDogc2NhbGU7XG4gIHJldHVybiBzY2FsZUZ1bmN0aW9uO1xufVxuXG4vKipcbiAqIEdldCB0aHJlc2hvbGQgc2NhbGUgY29sb3IgbGFiZWxzXG4gKi9cbmZ1bmN0aW9uIGdldFRocmVzaG9sZExhYmVscyhcbiAgc2NhbGU6IEQzU2NhbGVGdW5jdGlvbixcbiAgbGFiZWxGb3JtYXQ6IExhYmVsRm9ybWF0XG4pOiBPbWl0PENvbG9yQnJlYWssICdkYXRhJz5bXSB7XG4gIGNvbnN0IGdlbkxlbmd0aCA9IHNjYWxlLnJhbmdlKCkubGVuZ3RoO1xuICByZXR1cm4gc2NhbGUucmFuZ2UoKS5tYXAoKGQsIGkpID0+IHtcbiAgICBjb25zdCBpbnZlcnQgPSBzY2FsZS5pbnZlcnRFeHRlbnQoZCk7XG4gICAgY29uc3QgaW5wdXRzID0gW1xuICAgICAgaSA9PT0gMCA/IG51bGwgOiByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFswXSkpLFxuICAgICAgaSA9PT0gZ2VuTGVuZ3RoIC0gMSA/IG51bGwgOiByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFsxXSkpXG4gICAgXTtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gcmF3IHZhbHVlXG4gICAgICByYW5nZTogaW52ZXJ0LFxuICAgICAgLy8gZm9ybWF0dGVkIHZhbHVlXG4gICAgICBpbnB1dHMsXG4gICAgICBsYWJlbDpcbiAgICAgICAgaSA9PT0gMFxuICAgICAgICAgID8gYExlc3MgdGhhbiAke2xhYmVsRm9ybWF0KGludmVydFsxXSl9YFxuICAgICAgICAgIDogaSA9PT0gZ2VuTGVuZ3RoIC0gMVxuICAgICAgICAgID8gYCR7bGFiZWxGb3JtYXQoaW52ZXJ0WzBdKX0gb3IgbW9yZWBcbiAgICAgICAgICA6IGAke2xhYmVsRm9ybWF0KGludmVydFswXSl9IHRvICR7bGFiZWxGb3JtYXQoaW52ZXJ0WzFdKX1gXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGxpbmVhciAvIHF1YW50IHNjYWxlIGNvbG9yIGxhYmVsc1xuICovXG5mdW5jdGlvbiBnZXRTY2FsZUxhYmVscyhcbiAgc2NhbGU6IEQzU2NhbGVGdW5jdGlvbixcbiAgbGFiZWxGb3JtYXQ6IExhYmVsRm9ybWF0XG4pOiBPbWl0PENvbG9yQnJlYWssICdkYXRhJz5bXSB7XG4gIHJldHVybiBzY2FsZS5yYW5nZSgpLm1hcChkID0+IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgaW52ZXJ0ID0gc2NhbGUuaW52ZXJ0RXh0ZW50KGQpO1xuICAgIGNvbnN0IGlucHV0cyA9IFtcbiAgICAgIHJldmVyc2VGb3JtYXROdW1iZXIobGFiZWxGb3JtYXQoaW52ZXJ0WzBdKSksXG4gICAgICByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFsxXSkpXG4gICAgXTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogYCR7bGFiZWxGb3JtYXQoaW52ZXJ0WzBdKX0gdG8gJHtsYWJlbEZvcm1hdChpbnZlcnRbMV0pfWAsXG4gICAgICAvLyByYXcgdmFsdWVcbiAgICAgIHJhbmdlOiBpbnZlcnQsXG4gICAgICAvLyBmb3JtYXR0ZWQgdmFsdWVcbiAgICAgIGlucHV0c1xuICAgIH07XG4gIH0pO1xufVxuXG5jb25zdCBjdXN0b21TY2FsZUxhYmVsRm9ybWF0ID0gbiA9PiAobiA/IGZvcm1hdE51bWJlcihuLCAncmVhbCcpIDogJ25vIHZhbHVlJyk7XG4vKipcbiAqIEdldCBsaW5lYXIgLyBxdWFudCBzY2FsZSBjb2xvciBicmVha3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFF1YW50TGVnZW5kcyhzY2FsZTogRDNTY2FsZUZ1bmN0aW9uLCBsYWJlbEZvcm1hdDogTGFiZWxGb3JtYXQpOiBDb2xvckJyZWFrW10ge1xuICBpZiAodHlwZW9mIHNjYWxlLmludmVydEV4dGVudCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCB0aHJlc2hvbGRMYWJlbEZvcm1hdCA9IChuLCB0eXBlKSA9PlxuICAgIG4gJiYgbGFiZWxGb3JtYXQgPyBsYWJlbEZvcm1hdChuKSA6IG4gPyBmb3JtYXROdW1iZXIobiwgdHlwZSkgOiAnbm8gdmFsdWUnO1xuICBjb25zdCBsYWJlbHMgPVxuICAgIHNjYWxlLnNjYWxlVHlwZSA9PT0gJ3RocmVzaG9sZCdcbiAgICAgID8gZ2V0VGhyZXNob2xkTGFiZWxzKHNjYWxlLCB0aHJlc2hvbGRMYWJlbEZvcm1hdClcbiAgICAgIDogc2NhbGUuc2NhbGVUeXBlID09PSAnY3VzdG9tJ1xuICAgICAgPyBnZXRUaHJlc2hvbGRMYWJlbHMoc2NhbGUsIGN1c3RvbVNjYWxlTGFiZWxGb3JtYXQpXG4gICAgICA6IGdldFNjYWxlTGFiZWxzKHNjYWxlLCBsYWJlbEZvcm1hdCk7XG5cbiAgY29uc3QgZGF0YSA9IHNjYWxlLnJhbmdlKCk7XG5cbiAgcmV0dXJuIGxhYmVscy5tYXAoKGxhYmVsLCBpbmRleCkgPT4gKHtcbiAgICBkYXRhOiBBcnJheS5pc0FycmF5KGRhdGFbaW5kZXhdKSA/IHJnYlRvSGV4KGRhdGFbaW5kZXhdKSA6IGRhdGFbaW5kZXhdLFxuICAgIC4uLmxhYmVsXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBHZXQgb3JkaW5hbCBjb2xvciBzY2FsZSBsZWdlbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcmRpbmFsTGVnZW5kcyhzY2FsZTogRDNTY2FsZUZ1bmN0aW9uKTogQ29sb3JCcmVha09yZGluYWxbXSB7XG4gIGNvbnN0IGRvbWFpbiA9IHNjYWxlLmRvbWFpbigpO1xuICBjb25zdCBsYWJlbHMgPSBzY2FsZS5kb21haW4oKTtcbiAgY29uc3QgZGF0YSA9IGRvbWFpbi5tYXAoc2NhbGUpO1xuXG4gIHJldHVybiBkYXRhLm1hcCgoZGF0dW0sIGluZGV4KSA9PiAoe1xuICAgIGRhdGE6IGlzUmdiQ29sb3IoZGF0dW0pID8gcmdiVG9IZXgoZGF0dW0pIDogZGF0dW0sXG4gICAgbGFiZWw6IGxhYmVsc1tpbmRleF1cbiAgfSkpO1xufVxuXG5jb25zdCBkZWZhdWx0Rm9ybWF0ID0gZCA9PiBkO1xuXG5jb25zdCBnZXRUaW1lTGFiZWxGb3JtYXQgPSBkb21haW4gPT4ge1xuICBjb25zdCBmb3JtYXR0ZXIgPSBnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlcihkb21haW4pO1xuICByZXR1cm4gdmFsID0+IG1vbWVudC51dGModmFsKS5mb3JtYXQoZm9ybWF0dGVyKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWFudExhYmVsRm9ybWF0KGRvbWFpbiwgZmllbGRUeXBlKSB7XG4gIC8vIHF1YW50IHNjYWxlIGNhbiBvbmx5IGJlIGFzc2lnbmVkIHRvIGxpbmVhciBGaWVsZHM6IHJlYWwsIHRpbWVzdGFtcCwgaW50ZWdlclxuICByZXR1cm4gZmllbGRUeXBlID09PSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wXG4gICAgPyBnZXRUaW1lTGFiZWxGb3JtYXQoZG9tYWluKVxuICAgIDogIWZpZWxkVHlwZVxuICAgID8gZGVmYXVsdEZvcm1hdFxuICAgIDogbiA9PiAoaXNOdW1iZXIobikgPyBmb3JtYXROdW1iZXIobiwgZmllbGRUeXBlKSA6ICdubyB2YWx1ZScpO1xufVxuXG4vKipcbiAqIEdldCBsZWdlbmRzIGZvciBzY2FsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGVnZW5kT2ZTY2FsZSh7XG4gIHNjYWxlLFxuICBzY2FsZVR5cGUsXG4gIGxhYmVsRm9ybWF0LFxuICBmaWVsZFR5cGVcbn06IHtcbiAgc2NhbGU/OiBEM1NjYWxlRnVuY3Rpb24gfCBudWxsO1xuICBzY2FsZVR5cGU6IHN0cmluZztcbiAgbGFiZWxGb3JtYXQ/OiBMYWJlbEZvcm1hdDtcbiAgZmllbGRUeXBlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xufSk6IENvbG9yQnJlYWtbXSB8IENvbG9yQnJlYWtPcmRpbmFsW10ge1xuICBpZiAoIXNjYWxlIHx8IHNjYWxlLmJ5Wm9vbSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoXG4gICAgc2NhbGVUeXBlID09PSBTQ0FMRV9UWVBFUy5vcmRpbmFsIHx8XG4gICAgc2NhbGVUeXBlID09PSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsIHx8XG4gICAgZmllbGRUeXBlID09PSBBTExfRklFTERfVFlQRVMuc3RyaW5nXG4gICkge1xuICAgIHJldHVybiBnZXRPcmRpbmFsTGVnZW5kcyhzY2FsZSk7XG4gIH1cblxuICBjb25zdCBmb3JtYXRMYWJlbCA9IGxhYmVsRm9ybWF0IHx8IGdldFF1YW50TGFiZWxGb3JtYXQoc2NhbGUuZG9tYWluKCksIGZpZWxkVHlwZSk7XG5cbiAgcmV0dXJuIGdldFF1YW50TGVnZW5kcyhzY2FsZSwgZm9ybWF0TGFiZWwpO1xufVxuXG4vKipcbiAqIEdldCBjb2xvciBzY2FsZSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJDb2xvclNjYWxlKHtcbiAgcmFuZ2UsXG4gIGRvbWFpbixcbiAgc2NhbGVUeXBlLFxuICBsYXllclxufToge1xuICByYW5nZTogQ29sb3JSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGRvbWFpbjogVmlzdWFsQ2hhbm5lbERvbWFpbjtcbiAgc2NhbGVUeXBlOiBzdHJpbmc7XG4gIGxheWVyOiBMYXllcjtcbiAgaXNGaXhlZD86IGJvb2xlYW47XG59KTogRDNTY2FsZUZ1bmN0aW9uIHwgbnVsbCB7XG4gIGlmIChyYW5nZSAmJiBkb21haW4gJiYgc2NhbGVUeXBlKSB7XG4gICAgcmV0dXJuIGxheWVyLmdldENvbG9yU2NhbGUoc2NhbGVUeXBlLCBkb21haW4sIHJhbmdlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yUmFuZ2UuY29sb3JNYXAgaW50byBjb2xvciBicmVha3MgVUkgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVMYXllckNvbG9yTWFwKGxheWVyOiBMYXllciwgdmlzdWFsQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbCk6IENvbG9yTWFwIHtcbiAgY29uc3QgZG9tYWluID0gbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWwuZG9tYWluXTtcbiAgY29uc3QgcmFuZ2UgPSBsYXllci5jb25maWcudmlzQ29uZmlnW3Zpc3VhbENoYW5uZWwucmFuZ2VdO1xuICBjb25zdCBzY2FsZVR5cGUgPSBsYXllci5jb25maWdbdmlzdWFsQ2hhbm5lbC5zY2FsZV07XG4gIGNvbnN0IGZpZWxkID0gbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWwuZmllbGRdO1xuXG4gIGNvbnN0IHNjYWxlID0gZ2V0TGF5ZXJDb2xvclNjYWxlKHtcbiAgICByYW5nZSxcbiAgICBkb21haW4sXG4gICAgc2NhbGVUeXBlLFxuICAgIGxheWVyXG4gIH0pO1xuXG4gIGNvbnN0IGNvbG9yQnJlYWtzID0gZ2V0TGVnZW5kT2ZTY2FsZSh7XG4gICAgc2NhbGU6IHNjYWxlPy5ieVpvb20gPyBzY2FsZSgwKSA6IHNjYWxlLFxuICAgIHNjYWxlVHlwZSxcbiAgICBmaWVsZFR5cGU6IGZpZWxkLnR5cGVcbiAgfSk7XG4gIHJldHVybiBjb2xvckJyZWFrc1RvQ29sb3JNYXAoY29sb3JCcmVha3MpO1xufVxuXG4vKipcbiAqIEdldCB2aXN1YWwgY2hhbmVsIHNjYWxlIGZ1bmN0aW9uIGlmIGl0J3MgYmFzZWQgb24gem9vbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzdWFsQ2hhbm5lbFNjYWxlQnlab29tKHtcbiAgc2NhbGUsXG4gIGxheWVyLFxuICBtYXBTdGF0ZVxufToge1xuICBzY2FsZTogRDNTY2FsZUZ1bmN0aW9uIHwgbnVsbDtcbiAgbGF5ZXI6IExheWVyO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xufSk6IEQzU2NhbGVGdW5jdGlvbiB8IG51bGwge1xuICBpZiAoc2NhbGU/LmJ5Wm9vbSkge1xuICAgIGNvbnN0IHogPSBsYXllci5tZXRhPy5nZXRab29tID8gbGF5ZXIubWV0YS5nZXRab29tKG1hcFN0YXRlKSA6IG1hcFN0YXRlPy56b29tO1xuICAgIHNjYWxlID0gTnVtYmVyLmlzRmluaXRlKHopID8gc2NhbGUoeikgOiBudWxsO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuLyoqXG4gKiBHZXQgY2F0ZWdvcmljYWwgY29sb3JNYXAgZnJvbSBjb2xvcnMgYW5kIGRvbWFpbiAodW5pcXVlIHZhbHVlcylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhdGVnb3JpY2FsQ29sb3JNYXAoXG4gIGNvbG9yczogc3RyaW5nW10sXG4gIGRvbWFpbjogKHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIHwgbnVtYmVyW10gfCBudWxsKVtdXG4pOiBhbnkge1xuICAvLyBjb2xvck1hcDogW3N0cmluZyB8IHN0cmluZ1tdLCBoZXhzdHJpbmddXG4gIGNvbnN0IGNvbG9yVG9VbmlxdWVWYWx1ZXMgPSB7fTtcbiAgY29uc3QgdW5pcXVlVmFsdWVzID0gdW5pcXVlKGRvbWFpbikuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCkuc29ydCgpO1xuICAvLyBlYWNoIHVuaXF1ZSB2YWx1ZSBhc3NpZ24gdG8gYSBjb2xvciwgdGhlIHJlc3QgdW5pcXVlIHZhbHVlcyBhc3NpZ24gdG8gbGFzdCBjb2xvclxuICBjb25zdCBsYXN0Q29sb3IgPSBjb2xvcnNbY29sb3JzLmxlbmd0aCAtIDFdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXF1ZVZhbHVlcy5sZW5ndGg7ICsraSkge1xuICAgIGlmIChpIDwgY29sb3JzLmxlbmd0aCkge1xuICAgICAgY29sb3JUb1VuaXF1ZVZhbHVlc1tjb2xvcnNbaV1dID0gdW5pcXVlVmFsdWVzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2xvclRvVW5pcXVlVmFsdWVzW2xhc3RDb2xvcl0gPSBbXG4gICAgICAgIC4uLihBcnJheS5pc0FycmF5KGNvbG9yVG9VbmlxdWVWYWx1ZXNbbGFzdENvbG9yXSlcbiAgICAgICAgICA/IGNvbG9yVG9VbmlxdWVWYWx1ZXNbbGFzdENvbG9yXVxuICAgICAgICAgIDogW2NvbG9yVG9VbmlxdWVWYWx1ZXNbbGFzdENvbG9yXV0pLFxuICAgICAgICB1bmlxdWVWYWx1ZXNbaV1cbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY29sb3JNYXAgPSBjb2xvcnMubWFwKGNvbG9yID0+IHtcbiAgICBpZiAoY29sb3IgaW4gY29sb3JUb1VuaXF1ZVZhbHVlcykge1xuICAgICAgcmV0dXJuIFtjb2xvclRvVW5pcXVlVmFsdWVzW2NvbG9yXSwgY29sb3JdO1xuICAgIH1cbiAgICByZXR1cm4gW251bGwsIGNvbG9yXTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbG9yTWFwO1xufVxuXG4vKipcbiAqIEdldCBjYXRlZ29yaWNhbCBjb2xvckJyZWFrcyBmcm9tIGNvbG9yTWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyhcbiAgY29sb3JNYXA/OiBDb2xvck1hcCB8IG51bGxcbik6IENvbG9yQnJlYWtPcmRpbmFsW10gfCBudWxsIHtcbiAgaWYgKCFjb2xvck1hcCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGNvbG9yQnJlYWtzID0gY29sb3JNYXAubWFwKChbdmFsdWUsIGNvbG9yXSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBjb2xvcixcbiAgICAgIGxhYmVsOiB2YWx1ZVxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiBjb2xvckJyZWFrcztcbn1cblxuLyoqXG4gKiBjcmVhdGUgY2F0ZWdvcmljYWwgY29sb3JNYXAgZnJvbSBjb2xvckJyZWFrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JCcmVha3NUb0NhdGVnb3JpY2FsQ29sb3JNYXAoY29sb3JCcmVha3M6IENvbG9yQnJlYWtPcmRpbmFsW10pOiBDb2xvck1hcCB7XG4gIC8vIGNvbG9yTWFwOiBbc3RyaW5nIHwgc3RyaW5nW10sIGhleHN0cmluZ11cbiAgY29uc3QgY29sb3JzID0gdW5pcShjb2xvckJyZWFrcy5tYXAoY2IgPT4gY2IuZGF0YSkpO1xuICBjb25zdCB2YWx1ZXMgPSB1bmlxKGNvbG9yQnJlYWtzLm1hcChjYiA9PiBjYi5sYWJlbCkpO1xuXG4gIHJldHVybiBnZXRDYXRlZ29yaWNhbENvbG9yTWFwKGNvbG9ycywgdmFsdWVzKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yIGJyZWFrcyBVSSBpbnB1dCBpbnRvIGNvbG9yUmFuZ2UuY29sb3JNYXBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yQnJlYWtzVG9Db2xvck1hcChjb2xvckJyZWFrczogQ29sb3JCcmVha1tdIHwgQ29sb3JCcmVha09yZGluYWxbXSk6IENvbG9yTWFwIHtcbiAgY29uc3QgY29sb3JNYXAgPSBjb2xvckJyZWFrcy5tYXAoKGNvbG9yQnJlYWssIGkpID0+IHtcbiAgICAvLyBbdmFsdWUsIGhleF1cbiAgICByZXR1cm4gW1xuICAgICAgY29sb3JCcmVhay5pbnB1dHNcbiAgICAgICAgPyBpID09PSBjb2xvckJyZWFrcy5sZW5ndGggLSAxXG4gICAgICAgICAgPyBudWxsIC8vIGxhc3RcbiAgICAgICAgICA6IGNvbG9yQnJlYWsuaW5wdXRzWzFdXG4gICAgICAgIDogY29sb3JCcmVhay5sYWJlbCxcbiAgICAgIGNvbG9yQnJlYWsuZGF0YVxuICAgIF07XG4gIH0pO1xuXG4gIC8vIEB0cy1pZ25vcmUgdHVwbGVcbiAgcmV0dXJuIGNvbG9yTWFwO1xufVxuXG4vKipcbiAqIENvbnZlcnQgY29sb3JSYW5nZS5jb2xvck1hcCBpbnRvIGNvbG9yIGJyZWFrcyBVSSBpbnB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JNYXBUb0NvbG9yQnJlYWtzKGNvbG9yTWFwPzogQ29sb3JNYXAgfCBudWxsKTogQ29sb3JCcmVha1tdIHwgbnVsbCB7XG4gIGlmICghY29sb3JNYXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBjb2xvckJyZWFrcyA9IGNvbG9yTWFwLm1hcCgoW3ZhbHVlLCBjb2xvcl0sIGkpID0+IHtcbiAgICBjb25zdCByYW5nZSA9XG4gICAgICBpID09PSAwXG4gICAgICAgID8gLy8gZmlyc3RcbiAgICAgICAgICBbLUluZmluaXR5LCB2YWx1ZV1cbiAgICAgICAgOiAvLyBsYXN0XG4gICAgICAgIGkgPT09IGNvbG9yTWFwLmxlbmd0aCAtIDFcbiAgICAgICAgPyBbY29sb3JNYXBbaSAtIDFdWzBdLCBJbmZpbml0eV1cbiAgICAgICAgOiAvLyBlbHNlXG4gICAgICAgICAgW2NvbG9yTWFwW2kgLSAxXVswXSwgdmFsdWVdO1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBjb2xvcixcbiAgICAgIHJhbmdlLFxuICAgICAgaW5wdXRzOiByYW5nZSxcbiAgICAgIGxhYmVsOlxuICAgICAgICAvLyBmaXJzdFxuICAgICAgICBpID09PSAwXG4gICAgICAgICAgPyBgTGVzcyB0aGFuICR7dmFsdWV9YFxuICAgICAgICAgIDogLy8gbGFzdFxuICAgICAgICAgIGkgPT09IGNvbG9yTWFwLmxlbmd0aCAtIDFcbiAgICAgICAgICA/IGAke2NvbG9yTWFwW2kgLSAxXVswXX0gb3IgbW9yZWBcbiAgICAgICAgICA6IGAke2NvbG9yTWFwW2kgLSAxXVswXX0gdG8gJHt2YWx1ZX1gXG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gQHRzLWlnbm9yZSBpbXBsZW1lbnQgY29udmVyc2lvbiBmb3Igb3JkaW5hbFxuICByZXR1cm4gY29sb3JCcmVha3M7XG59XG5cbi8qKlxuICogV2hldGhlciBjb2xvciBicmVha3MgaXMgZm9yIG51bWVyaWMgZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpY0NvbG9yQnJlYWtzKGNvbG9yQnJlYWtzOiB1bmtub3duKTogY29sb3JCcmVha3MgaXMgQ29sb3JCcmVha1tdIHtcbiAgcmV0dXJuIEJvb2xlYW4oQXJyYXkuaXNBcnJheShjb2xvckJyZWFrcykgJiYgY29sb3JCcmVha3MubGVuZ3RoICYmIGNvbG9yQnJlYWtzWzBdLmlucHV0cyk7XG59XG5cbi8vIHJldHVybiBkb21haW5NaW4sIGRvbWFpbk1heCwgaGlzdG9ncmFtTWVhblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhpc3RvZ3JhbURvbWFpbih7XG4gIGFnZ3JlZ2F0ZWRCaW5zLFxuICBjb2x1bW5TdGF0cyxcbiAgZGF0YXNldCxcbiAgZmllbGRWYWx1ZUFjY2Vzc29yXG59OiB7XG4gIGFnZ3JlZ2F0ZWRCaW5zPzogQWdncmVnYXRlZEJpbltdO1xuICBjb2x1bW5TdGF0cz86IEZpbHRlclByb3BzWydjb2x1bW5TdGF0cyddO1xuICBkYXRhc2V0PzogS2VwbGVyVGFibGU7XG4gIGZpZWxkVmFsdWVBY2Nlc3NvcjogKGlkeDogdW5rbm93bikgPT4gbnVtYmVyO1xufSkge1xuICBsZXQgZG9tYWluTWluID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICBsZXQgZG9tYWluTWF4ID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICBsZXQgblZhbGlkID0gMDtcbiAgbGV0IGRvbWFpblN1bSA9IDA7XG5cbiAgaWYgKGFnZ3JlZ2F0ZWRCaW5zKSB7XG4gICAgT2JqZWN0LnZhbHVlcyhhZ2dyZWdhdGVkQmlucykuZm9yRWFjaChiaW4gPT4ge1xuICAgICAgY29uc3QgdmFsID0gYmluLnZhbHVlO1xuICAgICAgaWYgKGlzTnVtYmVyKHZhbCkpIHtcbiAgICAgICAgaWYgKHZhbCA8IGRvbWFpbk1pbikgZG9tYWluTWluID0gdmFsO1xuICAgICAgICBpZiAodmFsID4gZG9tYWluTWF4KSBkb21haW5NYXggPSB2YWw7XG4gICAgICAgIGRvbWFpblN1bSArPSB2YWw7XG4gICAgICAgIG5WYWxpZCArPSAxO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmIChjb2x1bW5TdGF0cyAmJiBjb2x1bW5TdGF0cy5xdWFudGlsZXMgJiYgY29sdW1uU3RhdHMubWVhbikge1xuICAgICAgLy8gbm8gbmVlZCB0byByZWNhbGN1YXRlIG1pbi9tYXgvbWVhbiBpZiBpdHMgYWxyZWFkeSBpbiBjb2x1bW5TdGF0c1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgY29sdW1uU3RhdHMucXVhbnRpbGVzWzBdLnZhbHVlLFxuICAgICAgICBjb2x1bW5TdGF0cy5xdWFudGlsZXNbY29sdW1uU3RhdHMucXVhbnRpbGVzLmxlbmd0aCAtIDFdLnZhbHVlLFxuICAgICAgICBjb2x1bW5TdGF0cy5tZWFuXG4gICAgICBdO1xuICAgIH1cbiAgICBpZiAoZGF0YXNldCAmJiBmaWVsZFZhbHVlQWNjZXNzb3IpIHtcbiAgICAgIGRhdGFzZXQuYWxsSW5kZXhlcy5mb3JFYWNoKHggPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBmaWVsZFZhbHVlQWNjZXNzb3IoeCk7XG4gICAgICAgIGlmIChpc051bWJlcih2YWwpKSB7XG4gICAgICAgICAgaWYgKHZhbCA8IGRvbWFpbk1pbikgZG9tYWluTWluID0gdmFsO1xuICAgICAgICAgIGlmICh2YWwgPiBkb21haW5NYXgpIGRvbWFpbk1heCA9IHZhbDtcbiAgICAgICAgICBkb21haW5TdW0gKz0gdmFsO1xuICAgICAgICAgIG5WYWxpZCArPSAxO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgaGlzdG9ncmFtTWVhbiA9IG5WYWxpZCA+IDAgPyBkb21haW5TdW0gLyBuVmFsaWQgOiAwO1xuICByZXR1cm4gW25WYWxpZCA+IDAgPyBkb21haW5NaW4gOiAwLCBuVmFsaWQgPiAwID8gZG9tYWluTWF4IDogMCwgaGlzdG9ncmFtTWVhbl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4KGNvbG9yTWFwOiBDb2xvck1hcCwgaW5kZXg6IG51bWJlcik6IGFueSB7XG4gIGlmICghY29sb3JNYXApIHtcbiAgICByZXR1cm4gY29sb3JNYXA7XG4gIH1cbiAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5tYXAoKGNtLCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gW251bGwsIGNtWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIGNtO1xuICB9KTtcbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG4vKipcbiAqIHNlbGVjdCByZXN0IGNhdGVnb3JpY2FsIHZhbHVlcyBmb3IgYSBjb2xvck1hcCBieSBpdHMgaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleChcbiAgY29sb3JNYXA6IENvbG9yTWFwIHwgbnVsbCxcbiAgaW5kZXg6IG51bWJlcixcbiAgdW5pcXVlVmFsdWVzPzogbnVtYmVyW10gfCBzdHJpbmdbXVxuKTogQ29sb3JNYXAgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgaWYgKCFjb2xvck1hcCB8fCAhdW5pcXVlVmFsdWVzKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG5cbiAgLy8gZmluZCB1bmlxdWUgdmFsdWVzIHRoYXQgaGFzIG5vdCBiZWVuIHVzZWQgaW4gY3VycmVudCBjb2xvck1hcFxuICBjb25zdCB1bmlxVmFsdWVEaWN0ID0gT2JqZWN0LmZyb21FbnRyaWVzKHVuaXF1ZVZhbHVlcy5tYXAodmFsID0+IFt2YWwsIGZhbHNlXSkpO1xuICBjb2xvck1hcC5mb3JFYWNoKGNtID0+IHtcbiAgICB0b0FycmF5KGNtWzBdKS5mb3JFYWNoKHYgPT4ge1xuICAgICAgaWYgKHYpIHVuaXFWYWx1ZURpY3Rbdl0gPSB0cnVlO1xuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgcmVzdCA9IE9iamVjdC5rZXlzKHVuaXFWYWx1ZURpY3QpLmZpbHRlcih2ID0+ICF1bmlxVmFsdWVEaWN0W3ZdKTtcblxuICAvLyB1c2UgdGhlIG5vdCB1c2VkIHVuaXF1ZSB2YWx1ZXMgaW4gdGhlIHNlbGVjdGVkIGNvbG9yIG1hcFxuICBjb25zdCBuZXdDb2xvck1hcCA9IGNvbG9yTWFwLm1hcCgoY20sIGkpID0+IHtcbiAgICBpZiAoaSA9PT0gaW5kZXgpIHtcbiAgICAgIHJldHVybiBbWy4uLnJlc3QsIC4uLnRvQXJyYXkoY21bMF0pXSwgY21bMV1dO1xuICAgIH1cbiAgICByZXR1cm4gY207XG4gIH0pIGFzIENvbG9yTWFwO1xuXG4gIHJldHVybiBuZXdDb2xvck1hcDtcbn1cblxuLyoqXG4gKiByZW1vdmUgYSBjYXRlZ29yaWNhbCB2YWx1ZSBmcm9tIGEgY29sb3JNYXAgYnkgaXRzIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDYXRlZ29yaWNhbFZhbHVlRnJvbUNvbG9yTWFwKFxuICBjb2xvck1hcDogQ29sb3JNYXAgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBpdGVtOiBudW1iZXIgfCBzdHJpbmcsXG4gIGluZGV4OiBudW1iZXJcbik6IENvbG9yTWFwIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGlmICghY29sb3JNYXApIHtcbiAgICByZXR1cm4gY29sb3JNYXA7XG4gIH1cbiAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5tYXAoKGNtLCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICBpZiAoIWNtWzBdKSB7XG4gICAgICAgIHJldHVybiBbbnVsbCwgY21bMV1dO1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudFVuaXF1ZVZhbHVlcyA9IHRvQXJyYXkoY21bMF0pO1xuICAgICAgY29uc3QgdXBkYXRlZFVuaXF1ZVZhbHVlcyA9IGN1cnJlbnRVbmlxdWVWYWx1ZXMuZmlsdGVyKHYgPT4gdiAhPT0gaXRlbSk7XG4gICAgICByZXR1cm4gW3VwZGF0ZWRVbmlxdWVWYWx1ZXMsIGNtWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIGNtO1xuICB9KSBhcyBDb2xvck1hcDtcblxuICByZXR1cm4gbmV3Q29sb3JNYXA7XG59XG5cbi8qKlxuICogYWRkIGNhdGVnb3JpY2FsIHZhbHVlcyAoZnJvbSBtdWx0aXNlbCBkcm9wZG93bikgdG8gYSBjb2xvck1hcCBieSBpdHMgaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZENhdGVnb3JpY2FsVmFsdWVzVG9Db2xvck1hcChcbiAgY29sb3JNYXA6IENvbG9yTWFwLFxuICBpdGVtczogKHN0cmluZyB8IG51bWJlcilbXSxcbiAgaW5kZXg6IG51bWJlclxuKTogQ29sb3JNYXAge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG5cbiAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5tYXAoKGNtLCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICBpZiAoIWNtWzBdKSB7XG4gICAgICAgIHJldHVybiBbaXRlbXMsIGNtWzFdXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRVbmlxdWVWYWx1ZXMgPSB0b0FycmF5KGNtWzBdKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRVbmlxdWVWYWx1ZXMgPSB1bmlxKGN1cnJlbnRVbmlxdWVWYWx1ZXMuY29uY2F0KGl0ZW1zKSk7XG4gICAgICByZXR1cm4gW3VwZGF0ZWRVbmlxdWVWYWx1ZXMsIGNtWzFdXTtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIHZhbHVlIGZyb20gb3RoZXIgY29sb3JNYXBcbiAgICBjb25zdCBjdXJyZW50VW5pcXVlVmFsdWVzID0gY21bMF07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFVuaXF1ZVZhbHVlcykpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRVbmlxdWVWYWx1ZXM6IHN0cmluZ1tdIHwgbnVtYmVyW10gPSAoY3VycmVudFVuaXF1ZVZhbHVlcyBhcyBhbnlbXSkuZmlsdGVyKFxuICAgICAgICB2ID0+ICFpdGVtcy5pbmNsdWRlcyh2KVxuICAgICAgKTtcbiAgICAgIHJldHVybiBbdXBkYXRlZFVuaXF1ZVZhbHVlcywgY21bMV1dO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFVuaXF1ZVZhbHVlcyAmJiBpdGVtcy5pbmNsdWRlcyhjdXJyZW50VW5pcXVlVmFsdWVzKSkge1xuICAgICAgcmV0dXJuIFtudWxsLCBjbVsxXV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNtO1xuICB9KSBhcyBDb2xvck1hcDtcblxuICByZXR1cm4gbmV3Q29sb3JNYXA7XG59XG5cbi8qKlxuICogZ2V0IGEgY29sb3Igc2NhbGUgZnVuYyBmb3IgY2F0ZWdvcmljYWwgKGN1c3RvbSBvcmRpbmFsKSBzY2FsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2F0ZWdvcmljYWxDb2xvclNjYWxlKFxuICBjb2xvckRvbWFpbjogbnVtYmVyW10gfCBzdHJpbmdbXSxcbiAgY29sb3JSYW5nZTogQ29sb3JSYW5nZSxcbiAgdXNlUmdiID0gdHJ1ZVxuKTogKGNhdGVnb3J5VmFsdWU6IHN0cmluZyB8IG51bWJlcikgPT4gUkdCQ29sb3IgfCBSR0JBQ29sb3Ige1xuICBjb25zdCBjTWFwID0gY29sb3JSYW5nZS5jb2xvck1hcFxuICAgID8gY29sb3JSYW5nZS5jb2xvck1hcFxuICAgIDogZ2V0Q2F0ZWdvcmljYWxDb2xvck1hcChjb2xvclJhbmdlLmNvbG9ycywgY29sb3JEb21haW4pO1xuXG4gIGNvbnN0IHJhbmdlOiBudW1iZXJbXVtdID0gW107XG4gIGNvbnN0IGRvbWFpbjogc3RyaW5nW10gPSBbXTtcbiAgY01hcC5mb3JFYWNoKGNtID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjbVswXSkpIHtcbiAgICAgIGNtWzBdLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgZG9tYWluLnB1c2godmFsKTtcbiAgICAgICAgcmFuZ2UucHVzaCh1c2VSZ2IgPyBoZXhUb1JnYihjbVsxXSkgOiBjbVsxXSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9tYWluLnB1c2goY21bMF0pO1xuICAgICAgcmFuZ2UucHVzaCh1c2VSZ2IgPyBoZXhUb1JnYihjbVsxXSkgOiBjbVsxXSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzY2FsZSA9IGdldFNjYWxlRnVuY3Rpb24oU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbCwgcmFuZ2UsIGRvbWFpbiwgZmFsc2UpO1xuICBzY2FsZS51bmtub3duKE5PX1ZBTFVFX0NPTE9SKTtcbiAgcmV0dXJuIHNjYWxlIGFzIGFueTtcbn1cblxuLyoqXG4gKiBpbml0aWFsaXplIGN1c3RvbVBhbGV0dGUgYnkgY3VzdG9tIHNjYWxlIG9yIGN1c3RvbU9yZGluYWwgc2NhbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSh7XG4gIHNjYWxlLFxuICBmaWVsZCxcbiAgb3JkaW5hbERvbWFpbixcbiAgcmFuZ2UsXG4gIGNvbG9yQnJlYWtzXG59OiB7XG4gIHNjYWxlOiBzdHJpbmc7XG4gIGZpZWxkOiBGaWVsZDtcbiAgb3JkaW5hbERvbWFpbj86IG51bWJlcltdIHwgc3RyaW5nW107XG4gIHJhbmdlOiBDb2xvclJhbmdlO1xuICBjb2xvckJyZWFrczogQ29sb3JCcmVha09yZGluYWxbXSB8IG51bGw7XG59KTogQ29sb3JVSVsnY3VzdG9tUGFsZXR0ZSddIHtcbiAgY29uc3QgY3VzdG9tUGFsZXR0ZU5hbWUgPSBgY29sb3IuY3VzdG9tUGFsZXR0ZS4ke3NjYWxlfS4ke2ZpZWxkLm5hbWV9YDtcbiAgLy8gcmV1c2UgcmFuZ2UuY29sb3JNYXAgaWYgdGhlIGZpZWxkIGFuZCBzY2FsZSBub3QgY2hhbmdlZFxuICBjb25zdCByZXVzZUNvbG9yTWFwID0gcmFuZ2UuY29sb3JNYXAgJiYgcmFuZ2UubmFtZSA9PT0gY3VzdG9tUGFsZXR0ZU5hbWUgJiYgcmFuZ2UudHlwZSA9PT0gc2NhbGU7XG4gIGNvbnN0IGNvbG9yTWFwID0gcmV1c2VDb2xvck1hcFxuICAgID8gcmFuZ2UuY29sb3JNYXBcbiAgICA6IHNjYWxlID09PSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsICYmIG9yZGluYWxEb21haW5cbiAgICA/IGdldENhdGVnb3JpY2FsQ29sb3JNYXAocmFuZ2UuY29sb3JzLCBvcmRpbmFsRG9tYWluKVxuICAgIDogY29sb3JCcmVha3MgJiYgaXNOdW1lcmljQ29sb3JCcmVha3MoY29sb3JCcmVha3MpXG4gICAgPyBjb2xvckJyZWFrc1RvQ29sb3JNYXAoY29sb3JCcmVha3MpXG4gICAgOiBudWxsO1xuICBjb25zdCBjb2xvcnMgPSByZXVzZUNvbG9yTWFwID8gcmFuZ2UuY29sb3JzIDogY29sb3JNYXAgPyBjb2xvck1hcC5tYXAoY20gPT4gY21bMV0pIDogcmFuZ2UuY29sb3JzO1xuXG4gIC8vIHVwZGF0ZSBjdXN0b20gYnJlYWtzXG4gIGNvbnN0IGN1c3RvbVBhbGV0dGU6IENvbG9yVUlbJ2N1c3RvbVBhbGV0dGUnXSA9IHtcbiAgICBjYXRlZ29yeTogJ0N1c3RvbScsXG4gICAgbmFtZTogY3VzdG9tUGFsZXR0ZU5hbWUsXG4gICAgdHlwZTogc2NhbGUsXG4gICAgY29sb3JNYXAsXG4gICAgY29sb3JzOiBjb2xvcnMgfHwgW11cbiAgfTtcblxuICByZXR1cm4gY3VzdG9tUGFsZXR0ZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFpQkEsSUFBQU0sV0FBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsWUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBVCxPQUFBO0FBQXNDLFNBQUFVLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQs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QyxzQkFBVyxDQUFDRSxhQUFhLEVBQUU5RSxLQUFLLEVBQUVZLE1BQU0sRUFBRSxLQUFLLENBQUM7RUFDL0VxQixLQUFLLENBQUNnSSxPQUFPLENBQUNDLHlCQUFjLENBQUM7RUFDN0IsT0FBT2pJLEtBQUs7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTa0ksOEJBQThCQSxDQUFBQyxLQUFBLEVBWWpCO0VBQUEsSUFYM0JuSSxLQUFLLEdBQUFtSSxLQUFBLENBQUxuSSxLQUFLO0lBQ0x3RCxLQUFLLEdBQUEyRSxLQUFBLENBQUwzRSxLQUFLO0lBQ0w0RSxhQUFhLEdBQUFELEtBQUEsQ0FBYkMsYUFBYTtJQUNickssS0FBSyxHQUFBb0ssS0FBQSxDQUFMcEssS0FBSztJQUNMMEYsV0FBVyxHQUFBMEUsS0FBQSxDQUFYMUUsV0FBVztFQVFYLElBQU00RSxpQkFBaUIsMEJBQUF4SCxNQUFBLENBQTBCYixLQUFLLE9BQUFhLE1BQUEsQ0FBSTJDLEtBQUssQ0FBQzhFLElBQUksQ0FBRTtFQUN0RTtFQUNBLElBQU1DLGFBQWEsR0FBR3hLLEtBQUssQ0FBQzBHLFFBQVEsSUFBSTFHLEtBQUssQ0FBQ3VLLElBQUksS0FBS0QsaUJBQWlCLElBQUl0SyxLQUFLLENBQUNxRCxJQUFJLEtBQUtwQixLQUFLO0VBQ2hHLElBQU15RSxRQUFRLEdBQUc4RCxhQUFhLEdBQzFCeEssS0FBSyxDQUFDMEcsUUFBUSxHQUNkekUsS0FBSyxLQUFLMkMsc0JBQVcsQ0FBQ0UsYUFBYSxJQUFJdUYsYUFBYSxHQUNwRGpFLHNCQUFzQixDQUFDcEcsS0FBSyxDQUFDcUcsTUFBTSxFQUFFZ0UsYUFBYSxDQUFDLEdBQ25EM0UsV0FBVyxJQUFJOEIsb0JBQW9CLENBQUM5QixXQUFXLENBQUMsR0FDaERDLHFCQUFxQixDQUFDRCxXQUFXLENBQUMsR0FDbEMsSUFBSTtFQUNSLElBQU1XLE1BQU0sR0FBR21FLGFBQWEsR0FBR3hLLEtBQUssQ0FBQ3FHLE1BQU0sR0FBR0ssUUFBUSxHQUFHQSxRQUFRLENBQUNsSCxHQUFHLENBQUMsVUFBQXFKLEVBQUU7SUFBQSxPQUFJQSxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQUEsRUFBQyxHQUFHN0ksS0FBSyxDQUFDcUcsTUFBTTs7RUFFakc7RUFDQSxJQUFNb0UsYUFBdUMsR0FBRztJQUM5Q0MsUUFBUSxFQUFFLFFBQVE7SUFDbEJILElBQUksRUFBRUQsaUJBQWlCO0lBQ3ZCakgsSUFBSSxFQUFFcEIsS0FBSztJQUNYeUUsUUFBUSxFQUFSQSxRQUFRO0lBQ1JMLE1BQU0sRUFBRUEsTUFBTSxJQUFJO0VBQ3BCLENBQUM7RUFFRCxPQUFPb0UsYUFBYTtBQUN0QiIsImlnbm9yZUxpc3QiOltdfQ==
601
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfdW5pcSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbW9tZW50IiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50cyIsIl9jb2xvclV0aWxzIiwiX2RhdGFVdGlscyIsIl9maWx0ZXJVdGlscyIsIl91dGlscyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZ2V0UXVhbnRpbGVEb21haW4iLCJkYXRhIiwidmFsdWVBY2Nlc3NvciIsInNvcnRGdW5jIiwidmFsdWVzIiwibWFwIiwibm90TnVsbG9yVW5kZWZpbmVkIiwic29ydCIsImdldE9yZGluYWxEb21haW4iLCJkYXRhQ29udGFpbmVyIiwibWFwSW5kZXgiLCJ1bmlxdWUiLCJnZXRMaW5lYXJEb21haW4iLCJyYW5nZSIsImV4dGVudCIsImQiLCJpIiwidW5kZWZpbmVkIiwiZ2V0TG9nRG9tYWluIiwiX2dldExpbmVhckRvbWFpbiIsIl9nZXRMaW5lYXJEb21haW4yIiwiX3NsaWNlZFRvQXJyYXkyIiwiZDAiLCJkMSIsImlzRG9tYWluU3RvcHMiLCJkb21haW4iLCJpc1BsYWluT2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5Iiwic3RvcHMiLCJ6IiwiaXNEb21haW5RdWFudGlsZSIsInF1YW50aWxlcyIsImdldFRocmVzaG9sZHNGcm9tUXVhbnRpbGVzIiwiYnVja2V0cyIsInRocmVzaG9sZHMiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInBvc2l0aW9uIiwiZDNRdWFudGlsZSIsImdldERvbWFpblN0ZXBzYnlab29tIiwic3RlcHMiLCJiaXNlY3RMZWZ0IiwiTWF0aCIsIm1heCIsImdldFNjYWxlRnVuY3Rpb24iLCJzY2FsZSIsImZpeGVkIiwic2NhbGVGdW5jdGlvbiIsIlNDQUxFX0ZVTkMiLCJzY2FsZVR5cGUiLCJnZXRUaHJlc2hvbGRMYWJlbHMiLCJsYWJlbEZvcm1hdCIsImdlbkxlbmd0aCIsImludmVydCIsImludmVydEV4dGVudCIsImlucHV0cyIsInJldmVyc2VGb3JtYXROdW1iZXIiLCJsYWJlbCIsImNvbmNhdCIsImdldFNjYWxlTGFiZWxzIiwiY3VzdG9tU2NhbGVMYWJlbEZvcm1hdCIsIm4iLCJmb3JtYXROdW1iZXIiLCJnZXRRdWFudExlZ2VuZHMiLCJ0aHJlc2hvbGRMYWJlbEZvcm1hdCIsInR5cGUiLCJsYWJlbHMiLCJpbmRleCIsInJnYlRvSGV4IiwiZ2V0T3JkaW5hbExlZ2VuZHMiLCJkYXR1bSIsImlzUmdiQ29sb3IiLCJkZWZhdWx0Rm9ybWF0IiwiZ2V0VGltZUxhYmVsRm9ybWF0IiwiZm9ybWF0dGVyIiwiZ2V0VGltZVdpZGdldEhpbnRGb3JtYXR0ZXIiLCJ2YWwiLCJtb21lbnQiLCJ1dGMiLCJmb3JtYXQiLCJnZXRRdWFudExhYmVsRm9ybWF0IiwiZmllbGRUeXBlIiwiQUxMX0ZJRUxEX1RZUEVTIiwidGltZXN0YW1wIiwiaXNOdW1iZXIiLCJnZXRMZWdlbmRPZlNjYWxlIiwiX3JlZiIsImJ5Wm9vbSIsIlNDQUxFX1RZUEVTIiwib3JkaW5hbCIsImN1c3RvbU9yZGluYWwiLCJzdHJpbmciLCJmb3JtYXRMYWJlbCIsImdldExheWVyQ29sb3JTY2FsZSIsIl9yZWYyIiwibGF5ZXIiLCJnZXRDb2xvclNjYWxlIiwiaW5pdGlhbGl6ZUxheWVyQ29sb3JNYXAiLCJ2aXN1YWxDaGFubmVsIiwiY29uZmlnIiwidmlzQ29uZmlnIiwiZmllbGQiLCJjb2xvckJyZWFrcyIsImNvbG9yQnJlYWtzVG9Db2xvck1hcCIsImdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSIsIl9yZWYzIiwiX3NjYWxlIiwibWFwU3RhdGUiLCJfbGF5ZXIkbWV0YSIsIm1ldGEiLCJnZXRab29tIiwiem9vbSIsImdldENhdGVnb3JpY2FsQ29sb3JNYXAiLCJjb2xvcnMiLCJjb2xvclRvVW5pcXVlVmFsdWVzIiwidW5pcXVlVmFsdWVzIiwibGFzdENvbG9yIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNvbG9yTWFwIiwiY29sb3IiLCJjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyIsIl9yZWY0IiwiX3JlZjUiLCJ2YWx1ZSIsImNvbG9yQnJlYWtzVG9DYXRlZ29yaWNhbENvbG9yTWFwIiwidW5pcSIsImNiIiwiY29sb3JCcmVhayIsImNvbG9yTWFwVG9Db2xvckJyZWFrcyIsIl9yZWY2IiwiX3JlZjciLCJJbmZpbml0eSIsImlzTnVtZXJpY0NvbG9yQnJlYWtzIiwiQm9vbGVhbiIsImdldEhpc3RvZ3JhbURvbWFpbiIsIl9yZWY4IiwiYWdncmVnYXRlZEJpbnMiLCJjb2x1bW5TdGF0cyIsImRhdGFzZXQiLCJmaWVsZFZhbHVlQWNjZXNzb3IiLCJkb21haW5NaW4iLCJQT1NJVElWRV9JTkZJTklUWSIsImRvbWFpbk1heCIsIk5FR0FUSVZFX0lORklOSVRZIiwiblZhbGlkIiwiZG9tYWluU3VtIiwiYmluIiwibWVhbiIsImFsbEluZGV4ZXMiLCJ4IiwiaGlzdG9ncmFtTWVhbiIsInJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgiLCJuZXdDb2xvck1hcCIsImNtIiwic2VsZWN0UmVzdENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4IiwidW5pcVZhbHVlRGljdCIsImZyb21FbnRyaWVzIiwidG9BcnJheSIsInYiLCJyZXN0IiwicmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcCIsIml0ZW0iLCJjdXJyZW50VW5pcXVlVmFsdWVzIiwidXBkYXRlZFVuaXF1ZVZhbHVlcyIsImFkZENhdGVnb3JpY2FsVmFsdWVzVG9Db2xvck1hcCIsIml0ZW1zIiwiaW5jbHVkZXMiLCJnZXRDYXRlZ29yaWNhbENvbG9yU2NhbGUiLCJjb2xvckRvbWFpbiIsImNvbG9yUmFuZ2UiLCJ1c2VSZ2IiLCJjTWFwIiwiaGV4VG9SZ2IiLCJ1bmtub3duIiwiTk9fVkFMVUVfQ09MT1IiLCJpbml0Q3VzdG9tUGFsZXR0ZUJ5Q3VzdG9tU2NhbGUiLCJfcmVmOSIsIm9yZGluYWxEb21haW4iLCJjdXN0b21QYWxldHRlTmFtZSIsIm5hbWUiLCJyZXVzZUNvbG9yTWFwIiwiY3VzdG9tUGFsZXR0ZSIsImNhdGVnb3J5Il0sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGEtc2NhbGUtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtiaXNlY3RMZWZ0LCBxdWFudGlsZVNvcnRlZCBhcyBkM1F1YW50aWxlLCBleHRlbnR9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC91bmlxJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWQsIHRvQXJyYXl9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7QUxMX0ZJRUxEX1RZUEVTLCBTQ0FMRV9GVU5DLCBTQ0FMRV9UWVBFUywgTk9fVkFMVUVfQ09MT1J9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbi8vIGltcG9ydCB7RmlsdGVyUHJvcHMsIEtlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge1xuICBBZ2dyZWdhdGVkQmluLFxuICBDb2xvck1hcCxcbiAgQ29sb3JSYW5nZSxcbiAgSGV4Q29sb3IsXG4gIEtlcGxlckxheWVyIGFzIExheWVyLFxuICBNYXBTdGF0ZSxcbiAgVmlzdWFsQ2hhbm5lbCxcbiAgVmlzdWFsQ2hhbm5lbERvbWFpbixcbiAgUkdCQ29sb3IsXG4gIFJHQkFDb2xvcixcbiAgQ29sb3JVSSxcbiAgRmllbGRcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7aXNSZ2JDb2xvciwgcmdiVG9IZXgsIGhleFRvUmdifSBmcm9tICcuL2NvbG9yLXV0aWxzJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuaW1wb3J0IHtmb3JtYXROdW1iZXIsIGlzTnVtYmVyLCByZXZlcnNlRm9ybWF0TnVtYmVyLCB1bmlxdWV9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQge2dldFRpbWVXaWRnZXRIaW50Rm9ybWF0dGVyfSBmcm9tICcuL2ZpbHRlci11dGlscyc7XG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBDb2xvckJyZWFrID0ge1xuICBkYXRhOiBIZXhDb2xvcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgcmFuZ2U6IG51bWJlcltdO1xuICBpbnB1dHM6IG51bWJlcltdO1xufTtcbmV4cG9ydCB0eXBlIENvbG9yQnJlYWtPcmRpbmFsID0ge1xuICBkYXRhOiBIZXhDb2xvcjtcbiAgbGFiZWw6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIHwgbnVtYmVyW10gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgRDNTY2FsZUZ1bmN0aW9uID0gUmVjb3JkPHN0cmluZywgYW55PiAmICgoeDogYW55KSA9PiBhbnkpO1xuXG4vLyBUT0RPIGlzb2xhdGUgdHlwZXMgLSBkZXBlbmRzIG9uIEBrZXBsZXIuZ2wvbGF5ZXJzXG50eXBlIEZpbHRlclByb3BzID0gYW55O1xudHlwZSBLZXBsZXJUYWJsZSA9IGFueTtcblxuZXhwb3J0IHR5cGUgTGFiZWxGb3JtYXQgPSAobjogbnVtYmVyLCB0eXBlPzogc3RyaW5nKSA9PiBzdHJpbmc7XG50eXBlIGRhdGFWYWx1ZUFjY2Vzc29yID0gPFQ+KHBhcmFtOiBUKSA9PiBUO1xudHlwZSBkYXRhQ29udGFpbmVyVmFsdWVBY2Nlc3NvciA9IChkOiB7aW5kZXg6IG51bWJlcn0sIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBhbnk7XG50eXBlIHNvcnQgPSAoYTogYW55LCBiOiBhbnkpID0+IGFueTtcbi8qKlxuICogcmV0dXJuIHF1YW50aWxlIGRvbWFpbiBmb3IgYW4gYXJyYXkgb2YgZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVhbnRpbGVEb21haW4oXG4gIGRhdGE6IGFueVtdLFxuICB2YWx1ZUFjY2Vzc29yPzogZGF0YVZhbHVlQWNjZXNzb3IsXG4gIHNvcnRGdW5jPzogc29ydFxuKTogbnVtYmVyW10ge1xuICBjb25zdCB2YWx1ZXMgPSB0eXBlb2YgdmFsdWVBY2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJyA/IGRhdGEubWFwKHZhbHVlQWNjZXNzb3IpIDogZGF0YTtcblxuICByZXR1cm4gdmFsdWVzLmZpbHRlcihub3ROdWxsb3JVbmRlZmluZWQpLnNvcnQoc29ydEZ1bmMpO1xufVxuXG4vKipcbiAqIHJldHVybiBvcmRpbmFsIGRvbWFpbiBmb3IgYSBkYXRhIGNvbnRhaW5lclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JkaW5hbERvbWFpbihcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgdmFsdWVBY2Nlc3NvcjogZGF0YUNvbnRhaW5lclZhbHVlQWNjZXNzb3Jcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgdmFsdWVzID0gZGF0YUNvbnRhaW5lci5tYXBJbmRleCh2YWx1ZUFjY2Vzc29yKTtcblxuICByZXR1cm4gdW5pcXVlKHZhbHVlcykuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCkuc29ydCgpO1xufVxuXG4vKipcbiAqIHJldHVybiBsaW5lYXIgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5lYXJEb21haW4oXG4gIGRhdGE6IG51bWJlcltdLFxuICB2YWx1ZUFjY2Vzc29yPzogZGF0YVZhbHVlQWNjZXNzb3Jcbik6IFtudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCByYW5nZSA9IHR5cGVvZiB2YWx1ZUFjY2Vzc29yID09PSAnZnVuY3Rpb24nID8gZXh0ZW50KGRhdGEsIHZhbHVlQWNjZXNzb3IpIDogZXh0ZW50KGRhdGEpO1xuICByZXR1cm4gcmFuZ2UubWFwKChkOiB1bmRlZmluZWQgfCBudW1iZXIsIGk6IG51bWJlcikgPT4gKGQgPT09IHVuZGVmaW5lZCA/IGkgOiBkKSkgYXMgW1xuICAgIG51bWJlcixcbiAgICBudW1iZXJcbiAgXTtcbn1cblxuLyoqXG4gKiByZXR1cm4gbGluZWFyIGRvbWFpbiBmb3IgYW4gYXJyYXkgb2YgZGF0YS4gQSBsb2cgc2NhbGUgZG9tYWluIGNhbm5vdCBjb250YWluIDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ0RvbWFpbihkYXRhOiBhbnlbXSwgdmFsdWVBY2Nlc3NvcjogZGF0YVZhbHVlQWNjZXNzb3IpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgY29uc3QgW2QwLCBkMV0gPSBnZXRMaW5lYXJEb21haW4oZGF0YSwgdmFsdWVBY2Nlc3Nvcik7XG4gIHJldHVybiBbZDAgPT09IDAgPyAxZS01IDogZDAsIGQxXTtcbn1cblxuZXhwb3J0IHR5cGUgRG9tYWluU3RvcHMgPSB7XG4gIHN0b3BzOiBudW1iZXJbXTtcbiAgejogbnVtYmVyW107XG59O1xuXG4vKipcbiAqIHdoZXRoZXIgZmllbGQgZG9tYWluIGlzIHN0b3BzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RvbWFpblN0b3BzKGRvbWFpbjogdW5rbm93bik6IGRvbWFpbiBpcyBEb21haW5TdG9wcyB7XG4gIHJldHVybiBpc1BsYWluT2JqZWN0KGRvbWFpbikgJiYgQXJyYXkuaXNBcnJheShkb21haW4uc3RvcHMpICYmIEFycmF5LmlzQXJyYXkoZG9tYWluLnopO1xufVxuXG5leHBvcnQgdHlwZSBEb21haW5RdWFudGlsZXMgPSB7XG4gIHF1YW50aWxlczogbnVtYmVyW107XG4gIHo6IG51bWJlcltdO1xufTtcblxuLyoqXG4gKiB3aGV0aGVyIGZpZWxkIGRvbWFpbiBpcyBxdWFudGlsZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRG9tYWluUXVhbnRpbGUoZG9tYWluOiBhbnkpOiBkb21haW4gaXMgRG9tYWluUXVhbnRpbGVzIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoZG9tYWluKSAmJiBBcnJheS5pc0FycmF5KGRvbWFpbi5xdWFudGlsZXMpICYmIEFycmF5LmlzQXJyYXkoZG9tYWluLnopO1xufVxuXG4vKipcbiAqIGdldCB0aGUgZG9tYWluIGF0IHpvb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRocmVzaG9sZHNGcm9tUXVhbnRpbGVzKFxuICBxdWFudGlsZXM6IG51bWJlcltdLFxuICBidWNrZXRzOiBudW1iZXJcbik6IChudW1iZXIgfCB1bmRlZmluZWQpW10ge1xuICBjb25zdCB0aHJlc2hvbGRzID0gW107XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKGJ1Y2tldHMpIHx8IGJ1Y2tldHMgPCAxKSB7XG4gICAgcmV0dXJuIFtxdWFudGlsZXNbMF0sIHF1YW50aWxlc1txdWFudGlsZXMubGVuZ3RoIC0gMV1dO1xuICB9XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYnVja2V0czsgaSsrKSB7XG4gICAgLy8gcG9zaXRpb24gaW4gc29ydGVkIGFycmF5XG4gICAgY29uc3QgcG9zaXRpb24gPSBpIC8gYnVja2V0cztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhyZXNob2xkcy5wdXNoKGQzUXVhbnRpbGUocXVhbnRpbGVzLCBwb3NpdGlvbikpO1xuICB9XG5cbiAgcmV0dXJuIHRocmVzaG9sZHM7XG59XG5cbi8qKlxuICogZ2V0IHRoZSBkb21haW4gYXQgem9vbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RG9tYWluU3RlcHNieVpvb20oZG9tYWluOiBhbnlbXSwgc3RlcHM6IG51bWJlcltdLCB6OiBudW1iZXIpOiBhbnkge1xuICBjb25zdCBpID0gYmlzZWN0TGVmdChzdGVwcywgeik7XG5cbiAgaWYgKHN0ZXBzW2ldID09PSB6KSB7XG4gICAgLy8gSWYgeiBpcyBhbiBpbnRlZ2VyIHZhbHVlIGV4YWN0bHkgbWF0Y2hpbmcgYSBzdGVwLCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgZG9tYWluXG4gICAgcmV0dXJuIGRvbWFpbltpXTtcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgbmV4dCBjb2Fyc2VzdCBkb21haW5cbiAgcmV0dXJuIGRvbWFpbltNYXRoLm1heChpIC0gMSwgMCldO1xufVxuXG4vKipcbiAqIEdldCBkMyBzY2FsZSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVGdW5jdGlvbihcbiAgc2NhbGU6IHN0cmluZyxcbiAgcmFuZ2U6IGFueVtdIHwgSXRlcmFibGVJdGVyYXRvcjxhbnk+LFxuICBkb21haW46IChudW1iZXIgfCB1bmRlZmluZWQpW10gfCBzdHJpbmdbXSB8IEl0ZXJhYmxlSXRlcmF0b3I8YW55PixcbiAgZml4ZWQ/OiBib29sZWFuXG4pOiBEM1NjYWxlRnVuY3Rpb24ge1xuICBjb25zdCBzY2FsZUZ1bmN0aW9uID0gU0NBTEVfRlVOQ1tmaXhlZCA/ICdsaW5lYXInIDogc2NhbGVdKClcbiAgICAuZG9tYWluKGRvbWFpbilcbiAgICAucmFuZ2UoZml4ZWQgPyBkb21haW4gOiByYW5nZSk7XG4gIHNjYWxlRnVuY3Rpb24uc2NhbGVUeXBlID0gZml4ZWQgPyAnbGluZWFyJyA6IHNjYWxlO1xuICByZXR1cm4gc2NhbGVGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBHZXQgdGhyZXNob2xkIHNjYWxlIGNvbG9yIGxhYmVsc1xuICovXG5mdW5jdGlvbiBnZXRUaHJlc2hvbGRMYWJlbHMoXG4gIHNjYWxlOiBEM1NjYWxlRnVuY3Rpb24sXG4gIGxhYmVsRm9ybWF0OiBMYWJlbEZvcm1hdFxuKTogT21pdDxDb2xvckJyZWFrLCAnZGF0YSc+W10ge1xuICBjb25zdCBnZW5MZW5ndGggPSBzY2FsZS5yYW5nZSgpLmxlbmd0aDtcbiAgcmV0dXJuIHNjYWxlLnJhbmdlKCkubWFwKChkLCBpKSA9PiB7XG4gICAgY29uc3QgaW52ZXJ0ID0gc2NhbGUuaW52ZXJ0RXh0ZW50KGQpO1xuICAgIGNvbnN0IGlucHV0cyA9IFtcbiAgICAgIGkgPT09IDAgPyBudWxsIDogcmV2ZXJzZUZvcm1hdE51bWJlcihsYWJlbEZvcm1hdChpbnZlcnRbMF0pKSxcbiAgICAgIGkgPT09IGdlbkxlbmd0aCAtIDEgPyBudWxsIDogcmV2ZXJzZUZvcm1hdE51bWJlcihsYWJlbEZvcm1hdChpbnZlcnRbMV0pKVxuICAgIF07XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIHJhdyB2YWx1ZVxuICAgICAgcmFuZ2U6IGludmVydCxcbiAgICAgIC8vIGZvcm1hdHRlZCB2YWx1ZVxuICAgICAgaW5wdXRzLFxuICAgICAgbGFiZWw6XG4gICAgICAgIGkgPT09IDBcbiAgICAgICAgICA/IGBMZXNzIHRoYW4gJHtsYWJlbEZvcm1hdChpbnZlcnRbMV0pfWBcbiAgICAgICAgICA6IGkgPT09IGdlbkxlbmd0aCAtIDFcbiAgICAgICAgICA/IGAke2xhYmVsRm9ybWF0KGludmVydFswXSl9IG9yIG1vcmVgXG4gICAgICAgICAgOiBgJHtsYWJlbEZvcm1hdChpbnZlcnRbMF0pfSB0byAke2xhYmVsRm9ybWF0KGludmVydFsxXSl9YFxuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBsaW5lYXIgLyBxdWFudCBzY2FsZSBjb2xvciBsYWJlbHNcbiAqL1xuZnVuY3Rpb24gZ2V0U2NhbGVMYWJlbHMoXG4gIHNjYWxlOiBEM1NjYWxlRnVuY3Rpb24sXG4gIGxhYmVsRm9ybWF0OiBMYWJlbEZvcm1hdFxuKTogT21pdDxDb2xvckJyZWFrLCAnZGF0YSc+W10ge1xuICByZXR1cm4gc2NhbGUucmFuZ2UoKS5tYXAoZCA9PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGludmVydCA9IHNjYWxlLmludmVydEV4dGVudChkKTtcbiAgICBjb25zdCBpbnB1dHMgPSBbXG4gICAgICByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFswXSkpLFxuICAgICAgcmV2ZXJzZUZvcm1hdE51bWJlcihsYWJlbEZvcm1hdChpbnZlcnRbMV0pKVxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGAke2xhYmVsRm9ybWF0KGludmVydFswXSl9IHRvICR7bGFiZWxGb3JtYXQoaW52ZXJ0WzFdKX1gLFxuICAgICAgLy8gcmF3IHZhbHVlXG4gICAgICByYW5nZTogaW52ZXJ0LFxuICAgICAgLy8gZm9ybWF0dGVkIHZhbHVlXG4gICAgICBpbnB1dHNcbiAgICB9O1xuICB9KTtcbn1cblxuY29uc3QgY3VzdG9tU2NhbGVMYWJlbEZvcm1hdCA9IG4gPT4gKG4gPyBmb3JtYXROdW1iZXIobiwgJ3JlYWwnKSA6ICdubyB2YWx1ZScpO1xuLyoqXG4gKiBHZXQgbGluZWFyIC8gcXVhbnQgc2NhbGUgY29sb3IgYnJlYWtzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWFudExlZ2VuZHMoc2NhbGU6IEQzU2NhbGVGdW5jdGlvbiwgbGFiZWxGb3JtYXQ6IExhYmVsRm9ybWF0KTogQ29sb3JCcmVha1tdIHtcbiAgaWYgKHR5cGVvZiBzY2FsZS5pbnZlcnRFeHRlbnQgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgdGhyZXNob2xkTGFiZWxGb3JtYXQgPSAobiwgdHlwZSkgPT5cbiAgICBuICYmIGxhYmVsRm9ybWF0ID8gbGFiZWxGb3JtYXQobikgOiBuID8gZm9ybWF0TnVtYmVyKG4sIHR5cGUpIDogJ25vIHZhbHVlJztcbiAgY29uc3QgbGFiZWxzID1cbiAgICBzY2FsZS5zY2FsZVR5cGUgPT09ICd0aHJlc2hvbGQnXG4gICAgICA/IGdldFRocmVzaG9sZExhYmVscyhzY2FsZSwgdGhyZXNob2xkTGFiZWxGb3JtYXQpXG4gICAgICA6IHNjYWxlLnNjYWxlVHlwZSA9PT0gJ2N1c3RvbSdcbiAgICAgID8gZ2V0VGhyZXNob2xkTGFiZWxzKHNjYWxlLCBjdXN0b21TY2FsZUxhYmVsRm9ybWF0KVxuICAgICAgOiBnZXRTY2FsZUxhYmVscyhzY2FsZSwgbGFiZWxGb3JtYXQpO1xuXG4gIGNvbnN0IGRhdGEgPSBzY2FsZS5yYW5nZSgpO1xuXG4gIHJldHVybiBsYWJlbHMubWFwKChsYWJlbCwgaW5kZXgpID0+ICh7XG4gICAgZGF0YTogQXJyYXkuaXNBcnJheShkYXRhW2luZGV4XSkgPyByZ2JUb0hleChkYXRhW2luZGV4XSkgOiBkYXRhW2luZGV4XSxcbiAgICAuLi5sYWJlbFxuICB9KSk7XG59XG5cbi8qKlxuICogR2V0IG9yZGluYWwgY29sb3Igc2NhbGUgbGVnZW5kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JkaW5hbExlZ2VuZHMoc2NhbGU6IEQzU2NhbGVGdW5jdGlvbik6IENvbG9yQnJlYWtPcmRpbmFsW10ge1xuICBjb25zdCBkb21haW4gPSBzY2FsZS5kb21haW4oKTtcbiAgY29uc3QgbGFiZWxzID0gc2NhbGUuZG9tYWluKCk7XG4gIGNvbnN0IGRhdGEgPSBkb21haW4ubWFwKHNjYWxlKTtcblxuICByZXR1cm4gZGF0YS5tYXAoKGRhdHVtLCBpbmRleCkgPT4gKHtcbiAgICBkYXRhOiBpc1JnYkNvbG9yKGRhdHVtKSA/IHJnYlRvSGV4KGRhdHVtKSA6IGRhdHVtLFxuICAgIGxhYmVsOiBsYWJlbHNbaW5kZXhdXG4gIH0pKTtcbn1cblxuY29uc3QgZGVmYXVsdEZvcm1hdCA9IGQgPT4gZDtcblxuY29uc3QgZ2V0VGltZUxhYmVsRm9ybWF0ID0gZG9tYWluID0+IHtcbiAgY29uc3QgZm9ybWF0dGVyID0gZ2V0VGltZVdpZGdldEhpbnRGb3JtYXR0ZXIoZG9tYWluKTtcbiAgcmV0dXJuIHZhbCA9PiBtb21lbnQudXRjKHZhbCkuZm9ybWF0KGZvcm1hdHRlcik7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVhbnRMYWJlbEZvcm1hdChkb21haW4sIGZpZWxkVHlwZSkge1xuICAvLyBxdWFudCBzY2FsZSBjYW4gb25seSBiZSBhc3NpZ25lZCB0byBsaW5lYXIgRmllbGRzOiByZWFsLCB0aW1lc3RhbXAsIGludGVnZXJcbiAgcmV0dXJuIGZpZWxkVHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcFxuICAgID8gZ2V0VGltZUxhYmVsRm9ybWF0KGRvbWFpbilcbiAgICA6ICFmaWVsZFR5cGVcbiAgICA/IGRlZmF1bHRGb3JtYXRcbiAgICA6IG4gPT4gKGlzTnVtYmVyKG4pID8gZm9ybWF0TnVtYmVyKG4sIGZpZWxkVHlwZSkgOiAnbm8gdmFsdWUnKTtcbn1cblxuLyoqXG4gKiBHZXQgbGVnZW5kcyBmb3Igc2NhbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExlZ2VuZE9mU2NhbGUoe1xuICBzY2FsZSxcbiAgc2NhbGVUeXBlLFxuICBsYWJlbEZvcm1hdCxcbiAgZmllbGRUeXBlXG59OiB7XG4gIHNjYWxlPzogRDNTY2FsZUZ1bmN0aW9uIHwgbnVsbDtcbiAgc2NhbGVUeXBlOiBzdHJpbmc7XG4gIGxhYmVsRm9ybWF0PzogTGFiZWxGb3JtYXQ7XG4gIGZpZWxkVHlwZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbn0pOiBDb2xvckJyZWFrW10gfCBDb2xvckJyZWFrT3JkaW5hbFtdIHtcbiAgaWYgKCFzY2FsZSB8fCBzY2FsZS5ieVpvb20pIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgaWYgKFxuICAgIHNjYWxlVHlwZSA9PT0gU0NBTEVfVFlQRVMub3JkaW5hbCB8fFxuICAgIHNjYWxlVHlwZSA9PT0gU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbCB8fFxuICAgIGZpZWxkVHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ1xuICApIHtcbiAgICByZXR1cm4gZ2V0T3JkaW5hbExlZ2VuZHMoc2NhbGUpO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0TGFiZWwgPSBsYWJlbEZvcm1hdCB8fCBnZXRRdWFudExhYmVsRm9ybWF0KHNjYWxlLmRvbWFpbigpLCBmaWVsZFR5cGUpO1xuXG4gIHJldHVybiBnZXRRdWFudExlZ2VuZHMoc2NhbGUsIGZvcm1hdExhYmVsKTtcbn1cblxuLyoqXG4gKiBHZXQgY29sb3Igc2NhbGUgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVyQ29sb3JTY2FsZSh7XG4gIHJhbmdlLFxuICBkb21haW4sXG4gIHNjYWxlVHlwZSxcbiAgbGF5ZXJcbn06IHtcbiAgcmFuZ2U6IENvbG9yUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBkb21haW46IFZpc3VhbENoYW5uZWxEb21haW47XG4gIHNjYWxlVHlwZTogc3RyaW5nO1xuICBsYXllcjogTGF5ZXI7XG4gIGlzRml4ZWQ/OiBib29sZWFuO1xufSk6IEQzU2NhbGVGdW5jdGlvbiB8IG51bGwge1xuICBpZiAocmFuZ2UgJiYgZG9tYWluICYmIHNjYWxlVHlwZSkge1xuICAgIHJldHVybiBsYXllci5nZXRDb2xvclNjYWxlKHNjYWxlVHlwZSwgZG9tYWluLCByYW5nZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ29udmVydCBjb2xvclJhbmdlLmNvbG9yTWFwIGludG8gY29sb3IgYnJlYWtzIFVJIGlucHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplTGF5ZXJDb2xvck1hcChsYXllcjogTGF5ZXIsIHZpc3VhbENoYW5uZWw6IFZpc3VhbENoYW5uZWwpOiBDb2xvck1hcCB7XG4gIGNvbnN0IGRvbWFpbiA9IGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsLmRvbWFpbl07XG4gIGNvbnN0IHJhbmdlID0gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1t2aXN1YWxDaGFubmVsLnJhbmdlXTtcbiAgY29uc3Qgc2NhbGVUeXBlID0gbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWwuc2NhbGVdO1xuICBjb25zdCBmaWVsZCA9IGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsLmZpZWxkXTtcblxuICBjb25zdCBzY2FsZSA9IGdldExheWVyQ29sb3JTY2FsZSh7XG4gICAgcmFuZ2UsXG4gICAgZG9tYWluLFxuICAgIHNjYWxlVHlwZSxcbiAgICBsYXllclxuICB9KTtcblxuICBjb25zdCBjb2xvckJyZWFrcyA9IGdldExlZ2VuZE9mU2NhbGUoe1xuICAgIHNjYWxlOiBzY2FsZT8uYnlab29tID8gc2NhbGUoMCkgOiBzY2FsZSxcbiAgICBzY2FsZVR5cGUsXG4gICAgZmllbGRUeXBlOiBmaWVsZC50eXBlXG4gIH0pO1xuICByZXR1cm4gY29sb3JCcmVha3NUb0NvbG9yTWFwKGNvbG9yQnJlYWtzKTtcbn1cblxuLyoqXG4gKiBHZXQgdmlzdWFsIGNoYW5lbCBzY2FsZSBmdW5jdGlvbiBpZiBpdCdzIGJhc2VkIG9uIHpvb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSh7XG4gIHNjYWxlLFxuICBsYXllcixcbiAgbWFwU3RhdGVcbn06IHtcbiAgc2NhbGU6IEQzU2NhbGVGdW5jdGlvbiB8IG51bGw7XG4gIGxheWVyOiBMYXllcjtcbiAgbWFwU3RhdGU/OiBNYXBTdGF0ZTtcbn0pOiBEM1NjYWxlRnVuY3Rpb24gfCBudWxsIHtcbiAgaWYgKHNjYWxlPy5ieVpvb20pIHtcbiAgICBjb25zdCB6ID0gbGF5ZXIubWV0YT8uZ2V0Wm9vbSA/IGxheWVyLm1ldGEuZ2V0Wm9vbShtYXBTdGF0ZSkgOiBtYXBTdGF0ZT8uem9vbTtcbiAgICBzY2FsZSA9IE51bWJlci5pc0Zpbml0ZSh6KSA/IHNjYWxlKHopIDogbnVsbDtcbiAgfVxuICByZXR1cm4gc2NhbGU7XG59XG5cbi8qKlxuICogR2V0IGNhdGVnb3JpY2FsIGNvbG9yTWFwIGZyb20gY29sb3JzIGFuZCBkb21haW4gKHVuaXF1ZSB2YWx1ZXMpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYXRlZ29yaWNhbENvbG9yTWFwKFxuICBjb2xvcnM6IHN0cmluZ1tdLFxuICBkb21haW46IChzdHJpbmcgfCBudW1iZXIgfCBzdHJpbmdbXSB8IG51bWJlcltdIHwgbnVsbClbXVxuKTogYW55IHtcbiAgLy8gY29sb3JNYXA6IFtzdHJpbmcgfCBzdHJpbmdbXSwgaGV4c3RyaW5nXVxuICBjb25zdCBjb2xvclRvVW5pcXVlVmFsdWVzID0ge307XG4gIGNvbnN0IHVuaXF1ZVZhbHVlcyA9IHVuaXF1ZShkb21haW4pLmZpbHRlcihub3ROdWxsb3JVbmRlZmluZWQpLnNvcnQoKTtcbiAgLy8gZWFjaCB1bmlxdWUgdmFsdWUgYXNzaWduIHRvIGEgY29sb3IsIHRoZSByZXN0IHVuaXF1ZSB2YWx1ZXMgYXNzaWduIHRvIGxhc3QgY29sb3JcbiAgY29uc3QgbGFzdENvbG9yID0gY29sb3JzW2NvbG9ycy5sZW5ndGggLSAxXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB1bmlxdWVWYWx1ZXMubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoaSA8IGNvbG9ycy5sZW5ndGgpIHtcbiAgICAgIGNvbG9yVG9VbmlxdWVWYWx1ZXNbY29sb3JzW2ldXSA9IHVuaXF1ZVZhbHVlc1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sb3JUb1VuaXF1ZVZhbHVlc1tsYXN0Q29sb3JdID0gW1xuICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShjb2xvclRvVW5pcXVlVmFsdWVzW2xhc3RDb2xvcl0pXG4gICAgICAgICAgPyBjb2xvclRvVW5pcXVlVmFsdWVzW2xhc3RDb2xvcl1cbiAgICAgICAgICA6IFtjb2xvclRvVW5pcXVlVmFsdWVzW2xhc3RDb2xvcl1dKSxcbiAgICAgICAgdW5pcXVlVmFsdWVzW2ldXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbG9yTWFwID0gY29sb3JzLm1hcChjb2xvciA9PiB7XG4gICAgaWYgKGNvbG9yIGluIGNvbG9yVG9VbmlxdWVWYWx1ZXMpIHtcbiAgICAgIHJldHVybiBbY29sb3JUb1VuaXF1ZVZhbHVlc1tjb2xvcl0sIGNvbG9yXTtcbiAgICB9XG4gICAgcmV0dXJuIFtudWxsLCBjb2xvcl07XG4gIH0pO1xuXG4gIHJldHVybiBjb2xvck1hcDtcbn1cblxuLyoqXG4gKiBHZXQgY2F0ZWdvcmljYWwgY29sb3JCcmVha3MgZnJvbSBjb2xvck1hcFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MoXG4gIGNvbG9yTWFwPzogQ29sb3JNYXAgfCBudWxsXG4pOiBDb2xvckJyZWFrT3JkaW5hbFtdIHwgbnVsbCB7XG4gIGlmICghY29sb3JNYXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBjb2xvckJyZWFrcyA9IGNvbG9yTWFwLm1hcCgoW3ZhbHVlLCBjb2xvcl0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogY29sb3IsXG4gICAgICBsYWJlbDogdmFsdWVcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4gY29sb3JCcmVha3M7XG59XG5cbi8qKlxuICogY3JlYXRlIGNhdGVnb3JpY2FsIGNvbG9yTWFwIGZyb20gY29sb3JCcmVha3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yQnJlYWtzVG9DYXRlZ29yaWNhbENvbG9yTWFwKGNvbG9yQnJlYWtzOiBDb2xvckJyZWFrT3JkaW5hbFtdKTogQ29sb3JNYXAge1xuICAvLyBjb2xvck1hcDogW3N0cmluZyB8IHN0cmluZ1tdLCBoZXhzdHJpbmddXG4gIGNvbnN0IGNvbG9ycyA9IHVuaXEoY29sb3JCcmVha3MubWFwKGNiID0+IGNiLmRhdGEpKTtcbiAgY29uc3QgdmFsdWVzID0gdW5pcShjb2xvckJyZWFrcy5tYXAoY2IgPT4gY2IubGFiZWwpKTtcblxuICByZXR1cm4gZ2V0Q2F0ZWdvcmljYWxDb2xvck1hcChjb2xvcnMsIHZhbHVlcyk7XG59XG5cbi8qKlxuICogQ29udmVydCBjb2xvciBicmVha3MgVUkgaW5wdXQgaW50byBjb2xvclJhbmdlLmNvbG9yTWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xvckJyZWFrc1RvQ29sb3JNYXAoY29sb3JCcmVha3M6IENvbG9yQnJlYWtbXSB8IENvbG9yQnJlYWtPcmRpbmFsW10pOiBDb2xvck1hcCB7XG4gIGNvbnN0IGNvbG9yTWFwID0gY29sb3JCcmVha3MubWFwKChjb2xvckJyZWFrLCBpKSA9PiB7XG4gICAgLy8gW3ZhbHVlLCBoZXhdXG4gICAgcmV0dXJuIFtcbiAgICAgIGNvbG9yQnJlYWsuaW5wdXRzXG4gICAgICAgID8gaSA9PT0gY29sb3JCcmVha3MubGVuZ3RoIC0gMVxuICAgICAgICAgID8gbnVsbCAvLyBsYXN0XG4gICAgICAgICAgOiBjb2xvckJyZWFrLmlucHV0c1sxXVxuICAgICAgICA6IGNvbG9yQnJlYWsubGFiZWwsXG4gICAgICBjb2xvckJyZWFrLmRhdGFcbiAgICBdO1xuICB9KTtcblxuICAvLyBAdHMtaWdub3JlIHR1cGxlXG4gIHJldHVybiBjb2xvck1hcDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yUmFuZ2UuY29sb3JNYXAgaW50byBjb2xvciBicmVha3MgVUkgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yTWFwVG9Db2xvckJyZWFrcyhjb2xvck1hcD86IENvbG9yTWFwIHwgbnVsbCk6IENvbG9yQnJlYWtbXSB8IG51bGwge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgY29sb3JCcmVha3MgPSBjb2xvck1hcC5tYXAoKFt2YWx1ZSwgY29sb3JdLCBpKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPVxuICAgICAgaSA9PT0gMFxuICAgICAgICA/IC8vIGZpcnN0XG4gICAgICAgICAgWy1JbmZpbml0eSwgdmFsdWVdXG4gICAgICAgIDogLy8gbGFzdFxuICAgICAgICBpID09PSBjb2xvck1hcC5sZW5ndGggLSAxXG4gICAgICAgID8gW2NvbG9yTWFwW2kgLSAxXVswXSwgSW5maW5pdHldXG4gICAgICAgIDogLy8gZWxzZVxuICAgICAgICAgIFtjb2xvck1hcFtpIC0gMV1bMF0sIHZhbHVlXTtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogY29sb3IsXG4gICAgICByYW5nZSxcbiAgICAgIGlucHV0czogcmFuZ2UsXG4gICAgICBsYWJlbDpcbiAgICAgICAgLy8gZmlyc3RcbiAgICAgICAgaSA9PT0gMFxuICAgICAgICAgID8gYExlc3MgdGhhbiAke3ZhbHVlfWBcbiAgICAgICAgICA6IC8vIGxhc3RcbiAgICAgICAgICBpID09PSBjb2xvck1hcC5sZW5ndGggLSAxXG4gICAgICAgICAgPyBgJHtjb2xvck1hcFtpIC0gMV1bMF19IG9yIG1vcmVgXG4gICAgICAgICAgOiBgJHtjb2xvck1hcFtpIC0gMV1bMF19IHRvICR7dmFsdWV9YFxuICAgIH07XG4gIH0pO1xuXG4gIC8vIEB0cy1pZ25vcmUgaW1wbGVtZW50IGNvbnZlcnNpb24gZm9yIG9yZGluYWxcbiAgcmV0dXJuIGNvbG9yQnJlYWtzO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgY29sb3IgYnJlYWtzIGlzIGZvciBudW1lcmljIGZpZWxkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNDb2xvckJyZWFrcyhjb2xvckJyZWFrczogdW5rbm93bik6IGNvbG9yQnJlYWtzIGlzIENvbG9yQnJlYWtbXSB7XG4gIHJldHVybiBCb29sZWFuKEFycmF5LmlzQXJyYXkoY29sb3JCcmVha3MpICYmIGNvbG9yQnJlYWtzLmxlbmd0aCAmJiBjb2xvckJyZWFrc1swXS5pbnB1dHMpO1xufVxuXG4vLyByZXR1cm4gZG9tYWluTWluLCBkb21haW5NYXgsIGhpc3RvZ3JhbU1lYW5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaXN0b2dyYW1Eb21haW4oe1xuICBhZ2dyZWdhdGVkQmlucyxcbiAgY29sdW1uU3RhdHMsXG4gIGRhdGFzZXQsXG4gIGZpZWxkVmFsdWVBY2Nlc3NvclxufToge1xuICBhZ2dyZWdhdGVkQmlucz86IEFnZ3JlZ2F0ZWRCaW5bXTtcbiAgY29sdW1uU3RhdHM/OiBGaWx0ZXJQcm9wc1snY29sdW1uU3RhdHMnXTtcbiAgZGF0YXNldD86IEtlcGxlclRhYmxlO1xuICBmaWVsZFZhbHVlQWNjZXNzb3I6IChpZHg6IHVua25vd24pID0+IG51bWJlcjtcbn0pIHtcbiAgbGV0IGRvbWFpbk1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgbGV0IGRvbWFpbk1heCA9IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcbiAgbGV0IG5WYWxpZCA9IDA7XG4gIGxldCBkb21haW5TdW0gPSAwO1xuXG4gIGlmIChhZ2dyZWdhdGVkQmlucykge1xuICAgIE9iamVjdC52YWx1ZXMoYWdncmVnYXRlZEJpbnMpLmZvckVhY2goYmluID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IGJpbi52YWx1ZTtcbiAgICAgIGlmIChpc051bWJlcih2YWwpKSB7XG4gICAgICAgIGlmICh2YWwgPCBkb21haW5NaW4pIGRvbWFpbk1pbiA9IHZhbDtcbiAgICAgICAgaWYgKHZhbCA+IGRvbWFpbk1heCkgZG9tYWluTWF4ID0gdmFsO1xuICAgICAgICBkb21haW5TdW0gKz0gdmFsO1xuICAgICAgICBuVmFsaWQgKz0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoY29sdW1uU3RhdHMgJiYgY29sdW1uU3RhdHMucXVhbnRpbGVzICYmIGNvbHVtblN0YXRzLm1lYW4pIHtcbiAgICAgIC8vIG5vIG5lZWQgdG8gcmVjYWxjdWF0ZSBtaW4vbWF4L21lYW4gaWYgaXRzIGFscmVhZHkgaW4gY29sdW1uU3RhdHNcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNvbHVtblN0YXRzLnF1YW50aWxlc1swXS52YWx1ZSxcbiAgICAgICAgY29sdW1uU3RhdHMucXVhbnRpbGVzW2NvbHVtblN0YXRzLnF1YW50aWxlcy5sZW5ndGggLSAxXS52YWx1ZSxcbiAgICAgICAgY29sdW1uU3RhdHMubWVhblxuICAgICAgXTtcbiAgICB9XG4gICAgaWYgKGRhdGFzZXQgJiYgZmllbGRWYWx1ZUFjY2Vzc29yKSB7XG4gICAgICBkYXRhc2V0LmFsbEluZGV4ZXMuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gZmllbGRWYWx1ZUFjY2Vzc29yKHgpO1xuICAgICAgICBpZiAoaXNOdW1iZXIodmFsKSkge1xuICAgICAgICAgIGlmICh2YWwgPCBkb21haW5NaW4pIGRvbWFpbk1pbiA9IHZhbDtcbiAgICAgICAgICBpZiAodmFsID4gZG9tYWluTWF4KSBkb21haW5NYXggPSB2YWw7XG4gICAgICAgICAgZG9tYWluU3VtICs9IHZhbDtcbiAgICAgICAgICBuVmFsaWQgKz0gMTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGhpc3RvZ3JhbU1lYW4gPSBuVmFsaWQgPiAwID8gZG9tYWluU3VtIC8gblZhbGlkIDogMDtcbiAgcmV0dXJuIFtuVmFsaWQgPiAwID8gZG9tYWluTWluIDogMCwgblZhbGlkID4gMCA/IGRvbWFpbk1heCA6IDAsIGhpc3RvZ3JhbU1lYW5dO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleChjb2xvck1hcDogQ29sb3JNYXAsIGluZGV4OiBudW1iZXIpOiBhbnkge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgcmV0dXJuIFtudWxsLCBjbVsxXV07XG4gICAgfVxuICAgIHJldHVybiBjbTtcbiAgfSk7XG4gIHJldHVybiBuZXdDb2xvck1hcDtcbn1cblxuLyoqXG4gKiBzZWxlY3QgcmVzdCBjYXRlZ29yaWNhbCB2YWx1ZXMgZm9yIGEgY29sb3JNYXAgYnkgaXRzIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgoXG4gIGNvbG9yTWFwOiBDb2xvck1hcCB8IG51bGwsXG4gIGluZGV4OiBudW1iZXIsXG4gIHVuaXF1ZVZhbHVlcz86IG51bWJlcltdIHwgc3RyaW5nW11cbik6IENvbG9yTWFwIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIGlmICghY29sb3JNYXAgfHwgIXVuaXF1ZVZhbHVlcykge1xuICAgIHJldHVybiBjb2xvck1hcDtcbiAgfVxuXG4gIC8vIGZpbmQgdW5pcXVlIHZhbHVlcyB0aGF0IGhhcyBub3QgYmVlbiB1c2VkIGluIGN1cnJlbnQgY29sb3JNYXBcbiAgY29uc3QgdW5pcVZhbHVlRGljdCA9IE9iamVjdC5mcm9tRW50cmllcyh1bmlxdWVWYWx1ZXMubWFwKHZhbCA9PiBbdmFsLCBmYWxzZV0pKTtcbiAgY29sb3JNYXAuZm9yRWFjaChjbSA9PiB7XG4gICAgdG9BcnJheShjbVswXSkuZm9yRWFjaCh2ID0+IHtcbiAgICAgIGlmICh2KSB1bmlxVmFsdWVEaWN0W3ZdID0gdHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IHJlc3QgPSBPYmplY3Qua2V5cyh1bmlxVmFsdWVEaWN0KS5maWx0ZXIodiA9PiAhdW5pcVZhbHVlRGljdFt2XSk7XG5cbiAgLy8gdXNlIHRoZSBub3QgdXNlZCB1bmlxdWUgdmFsdWVzIGluIHRoZSBzZWxlY3RlZCBjb2xvciBtYXBcbiAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5tYXAoKGNtLCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gW1suLi5yZXN0LCAuLi50b0FycmF5KGNtWzBdKV0sIGNtWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIGNtO1xuICB9KSBhcyBDb2xvck1hcDtcblxuICByZXR1cm4gbmV3Q29sb3JNYXA7XG59XG5cbi8qKlxuICogcmVtb3ZlIGEgY2F0ZWdvcmljYWwgdmFsdWUgZnJvbSBhIGNvbG9yTWFwIGJ5IGl0cyBpbmRleFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcChcbiAgY29sb3JNYXA6IENvbG9yTWFwIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgaXRlbTogbnVtYmVyIHwgc3RyaW5nLFxuICBpbmRleDogbnVtYmVyXG4pOiBDb2xvck1hcCB8IG51bGwgfCB1bmRlZmluZWQge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgaWYgKCFjbVswXSkge1xuICAgICAgICByZXR1cm4gW251bGwsIGNtWzFdXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRVbmlxdWVWYWx1ZXMgPSB0b0FycmF5KGNtWzBdKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRVbmlxdWVWYWx1ZXMgPSBjdXJyZW50VW5pcXVlVmFsdWVzLmZpbHRlcih2ID0+IHYgIT09IGl0ZW0pO1xuICAgICAgcmV0dXJuIFt1cGRhdGVkVW5pcXVlVmFsdWVzLCBjbVsxXV07XG4gICAgfVxuICAgIHJldHVybiBjbTtcbiAgfSkgYXMgQ29sb3JNYXA7XG5cbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG4vKipcbiAqIGFkZCBjYXRlZ29yaWNhbCB2YWx1ZXMgKGZyb20gbXVsdGlzZWwgZHJvcGRvd24pIHRvIGEgY29sb3JNYXAgYnkgaXRzIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAoXG4gIGNvbG9yTWFwOiBDb2xvck1hcCxcbiAgaXRlbXM6IChzdHJpbmcgfCBudW1iZXIpW10sXG4gIGluZGV4OiBudW1iZXJcbik6IENvbG9yTWFwIHtcbiAgaWYgKCFjb2xvck1hcCkge1xuICAgIHJldHVybiBjb2xvck1hcDtcbiAgfVxuXG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgaWYgKCFjbVswXSkge1xuICAgICAgICByZXR1cm4gW2l0ZW1zLCBjbVsxXV07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50VW5pcXVlVmFsdWVzID0gdG9BcnJheShjbVswXSk7XG4gICAgICBjb25zdCB1cGRhdGVkVW5pcXVlVmFsdWVzID0gdW5pcShjdXJyZW50VW5pcXVlVmFsdWVzLmNvbmNhdChpdGVtcykpO1xuICAgICAgcmV0dXJuIFt1cGRhdGVkVW5pcXVlVmFsdWVzLCBjbVsxXV07XG4gICAgfVxuICAgIC8vIHJlbW92ZSB2YWx1ZSBmcm9tIG90aGVyIGNvbG9yTWFwXG4gICAgY29uc3QgY3VycmVudFVuaXF1ZVZhbHVlcyA9IGNtWzBdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRVbmlxdWVWYWx1ZXMpKSB7XG4gICAgICBjb25zdCB1cGRhdGVkVW5pcXVlVmFsdWVzOiBzdHJpbmdbXSB8IG51bWJlcltdID0gKGN1cnJlbnRVbmlxdWVWYWx1ZXMgYXMgYW55W10pLmZpbHRlcihcbiAgICAgICAgdiA9PiAhaXRlbXMuaW5jbHVkZXModilcbiAgICAgICk7XG4gICAgICByZXR1cm4gW3VwZGF0ZWRVbmlxdWVWYWx1ZXMsIGNtWzFdXTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRVbmlxdWVWYWx1ZXMgJiYgaXRlbXMuaW5jbHVkZXMoY3VycmVudFVuaXF1ZVZhbHVlcykpIHtcbiAgICAgIHJldHVybiBbbnVsbCwgY21bMV1dO1xuICAgIH1cblxuICAgIHJldHVybiBjbTtcbiAgfSkgYXMgQ29sb3JNYXA7XG5cbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG4vKipcbiAqIGdldCBhIGNvbG9yIHNjYWxlIGZ1bmMgZm9yIGNhdGVnb3JpY2FsIChjdXN0b20gb3JkaW5hbCkgc2NhbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhdGVnb3JpY2FsQ29sb3JTY2FsZShcbiAgY29sb3JEb21haW46IG51bWJlcltdIHwgc3RyaW5nW10sXG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2UsXG4gIHVzZVJnYiA9IHRydWVcbik6IChjYXRlZ29yeVZhbHVlOiBzdHJpbmcgfCBudW1iZXIpID0+IFJHQkNvbG9yIHwgUkdCQUNvbG9yIHtcbiAgY29uc3QgY01hcCA9IGNvbG9yUmFuZ2UuY29sb3JNYXBcbiAgICA/IGNvbG9yUmFuZ2UuY29sb3JNYXBcbiAgICA6IGdldENhdGVnb3JpY2FsQ29sb3JNYXAoY29sb3JSYW5nZS5jb2xvcnMsIGNvbG9yRG9tYWluKTtcblxuICBjb25zdCByYW5nZTogbnVtYmVyW11bXSA9IFtdO1xuICBjb25zdCBkb21haW46IHN0cmluZ1tdID0gW107XG4gIGNNYXAuZm9yRWFjaChjbSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY21bMF0pKSB7XG4gICAgICBjbVswXS5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgIGRvbWFpbi5wdXNoKHZhbCk7XG4gICAgICAgIHJhbmdlLnB1c2godXNlUmdiID8gaGV4VG9SZ2IoY21bMV0pIDogY21bMV0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvbWFpbi5wdXNoKGNtWzBdKTtcbiAgICAgIHJhbmdlLnB1c2godXNlUmdiID8gaGV4VG9SZ2IoY21bMV0pIDogY21bMV0pO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgc2NhbGUgPSBnZXRTY2FsZUZ1bmN0aW9uKFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWwsIHJhbmdlLCBkb21haW4sIGZhbHNlKTtcbiAgc2NhbGUudW5rbm93bihOT19WQUxVRV9DT0xPUik7XG4gIHJldHVybiBzY2FsZSBhcyBhbnk7XG59XG5cbi8qKlxuICogaW5pdGlhbGl6ZSBjdXN0b21QYWxldHRlIGJ5IGN1c3RvbSBzY2FsZSBvciBjdXN0b21PcmRpbmFsIHNjYWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0Q3VzdG9tUGFsZXR0ZUJ5Q3VzdG9tU2NhbGUoe1xuICBzY2FsZSxcbiAgZmllbGQsXG4gIG9yZGluYWxEb21haW4sXG4gIHJhbmdlLFxuICBjb2xvckJyZWFrc1xufToge1xuICBzY2FsZTogc3RyaW5nO1xuICBmaWVsZDogRmllbGQ7XG4gIG9yZGluYWxEb21haW4/OiBudW1iZXJbXSB8IHN0cmluZ1tdO1xuICByYW5nZTogQ29sb3JSYW5nZTtcbiAgY29sb3JCcmVha3M6IENvbG9yQnJlYWtPcmRpbmFsW10gfCBudWxsO1xufSk6IENvbG9yVUlbJ2N1c3RvbVBhbGV0dGUnXSB7XG4gIGNvbnN0IGN1c3RvbVBhbGV0dGVOYW1lID0gYGNvbG9yLmN1c3RvbVBhbGV0dGUuJHtzY2FsZX0uJHtmaWVsZC5uYW1lfWA7XG4gIC8vIHJldXNlIHJhbmdlLmNvbG9yTWFwIGlmIHRoZSBmaWVsZCBhbmQgc2NhbGUgbm90IGNoYW5nZWRcbiAgY29uc3QgcmV1c2VDb2xvck1hcCA9IHJhbmdlLmNvbG9yTWFwICYmIHJhbmdlLm5hbWUgPT09IGN1c3RvbVBhbGV0dGVOYW1lICYmIHJhbmdlLnR5cGUgPT09IHNjYWxlO1xuICBjb25zdCBjb2xvck1hcCA9IHJldXNlQ29sb3JNYXBcbiAgICA/IHJhbmdlLmNvbG9yTWFwXG4gICAgOiBzY2FsZSA9PT0gU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbCAmJiBvcmRpbmFsRG9tYWluXG4gICAgPyBnZXRDYXRlZ29yaWNhbENvbG9yTWFwKHJhbmdlLmNvbG9ycywgb3JkaW5hbERvbWFpbilcbiAgICA6IGNvbG9yQnJlYWtzICYmIGlzTnVtZXJpY0NvbG9yQnJlYWtzKGNvbG9yQnJlYWtzKVxuICAgID8gY29sb3JCcmVha3NUb0NvbG9yTWFwKGNvbG9yQnJlYWtzKVxuICAgIDogbnVsbDtcbiAgY29uc3QgY29sb3JzID0gcmV1c2VDb2xvck1hcCA/IHJhbmdlLmNvbG9ycyA6IGNvbG9yTWFwID8gY29sb3JNYXAubWFwKGNtID0+IGNtWzFdKSA6IHJhbmdlLmNvbG9ycztcblxuICAvLyB1cGRhdGUgY3VzdG9tIGJyZWFrc1xuICBjb25zdCBjdXN0b21QYWxldHRlOiBDb2xvclVJWydjdXN0b21QYWxldHRlJ10gPSB7XG4gICAgY2F0ZWdvcnk6ICdDdXN0b20nLFxuICAgIG5hbWU6IGN1c3RvbVBhbGV0dGVOYW1lLFxuICAgIHR5cGU6IHNjYWxlLFxuICAgIGNvbG9yTWFwLFxuICAgIGNvbG9yczogY29sb3JzIHx8IFtdXG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbVBhbGV0dGU7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBaUJBLElBQUFNLFdBQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFlBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLE1BQUEsR0FBQVQsT0FBQTtBQUFzQyxTQUFBVSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsT0FBQWEsT0FBQSxXQUFBZCxDQUFBLFFBQUFlLGdCQUFBLGFBQUFoQixDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxDQUFBRCxDQUFBLFNBQUFFLE1BQUEsQ0FBQWMseUJBQUEsR0FBQWQsTUFBQSxDQUFBZSxnQkFBQSxDQUFBbEIsQ0FBQSxFQUFBRyxNQUFBLENBQUFjLHlCQUFBLENBQUFmLENBQUEsS0FBQUgsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsR0FBQWEsT0FBQSxXQUFBZCxDQUFBLElBQUFFLE1BQUEsQ0FBQWdCLGNBQUEsQ0FBQW5CLENBQUEsRUFBQUMsQ0FBQSxFQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFOLENBQUEsRUFBQUQsQ0FBQSxpQkFBQUQsQ0FBQSxJQTdCdEM7QUFDQTtBQVFBO0FBbUNBOztBQVFBO0FBQ0E7QUFDQTtBQUNPLFNBQVNvQixpQkFBaUJBLENBQy9CQyxJQUFXLEVBQ1hDLGFBQWlDLEVBQ2pDQyxRQUFlLEVBQ0w7RUFDVixJQUFNQyxNQUFNLEdBQUcsT0FBT0YsYUFBYSxLQUFLLFVBQVUsR0FBR0QsSUFBSSxDQUFDSSxHQUFHLENBQUNILGFBQWEsQ0FBQyxHQUFHRCxJQUFJO0VBRW5GLE9BQU9HLE1BQU0sQ0FBQ2pCLE1BQU0sQ0FBQ21CLCtCQUFrQixDQUFDLENBQUNDLElBQUksQ0FBQ0osUUFBUSxDQUFDO0FBQ3pEOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNLLGdCQUFnQkEsQ0FDOUJDLGFBQXFDLEVBQ3JDUCxhQUF5QyxFQUMvQjtFQUNWLElBQU1FLE1BQU0sR0FBR0ssYUFBYSxDQUFDQyxRQUFRLENBQUNSLGFBQWEsQ0FBQztFQUVwRCxPQUFPLElBQUFTLGlCQUFNLEVBQUNQLE1BQU0sQ0FBQyxDQUFDakIsTUFBTSxDQUFDbUIsK0JBQWtCLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7QUFDekQ7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU0ssZUFBZUEsQ0FDN0JYLElBQWMsRUFDZEMsYUFBaUMsRUFDZjtFQUNsQixJQUFNVyxLQUFLLEdBQUcsT0FBT1gsYUFBYSxLQUFLLFVBQVUsR0FBRyxJQUFBWSxlQUFNLEVBQUNiLElBQUksRUFBRUMsYUFBYSxDQUFDLEdBQUcsSUFBQVksZUFBTSxFQUFDYixJQUFJLENBQUM7RUFDOUYsT0FBT1ksS0FBSyxDQUFDUixHQUFHLENBQUMsVUFBQ1UsQ0FBcUIsRUFBRUMsQ0FBUztJQUFBLE9BQU1ELENBQUMsS0FBS0UsU0FBUyxHQUFHRCxDQUFDLEdBQUdELENBQUM7RUFBQSxDQUFDLENBQUM7QUFJbkY7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU0csWUFBWUEsQ0FBQ2pCLElBQVcsRUFBRUMsYUFBZ0MsRUFBb0I7RUFDNUYsSUFBQWlCLGdCQUFBLEdBQWlCUCxlQUFlLENBQUNYLElBQUksRUFBRUMsYUFBYSxDQUFDO0lBQUFrQixpQkFBQSxPQUFBQyxlQUFBLGFBQUFGLGdCQUFBO0lBQTlDRyxFQUFFLEdBQUFGLGlCQUFBO0lBQUVHLEVBQUUsR0FBQUgsaUJBQUE7RUFDYixPQUFPLENBQUNFLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHQSxFQUFFLEVBQUVDLEVBQUUsQ0FBQztBQUNuQztBQU9BO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGFBQWFBLENBQUNDLE1BQWUsRUFBeUI7RUFDcEUsT0FBTyxJQUFBQyxvQkFBYSxFQUFDRCxNQUFNLENBQUMsSUFBSUUsS0FBSyxDQUFDQyxPQUFPLENBQUNILE1BQU0sQ0FBQ0ksS0FBSyxDQUFDLElBQUlGLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxNQUFNLENBQUNLLENBQUMsQ0FBQztBQUN4RjtBQU9BO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGdCQUFnQkEsQ0FBQ04sTUFBVyxFQUE2QjtFQUN2RSxPQUFPLElBQUFDLG9CQUFhLEVBQUNELE1BQU0sQ0FBQyxJQUFJRSxLQUFLLENBQUNDLE9BQU8sQ0FBQ0gsTUFBTSxDQUFDTyxTQUFTLENBQUMsSUFBSUwsS0FBSyxDQUFDQyxPQUFPLENBQUNILE1BQU0sQ0FBQ0ssQ0FBQyxDQUFDO0FBQzVGOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNHLDBCQUEwQkEsQ0FDeENELFNBQW1CLEVBQ25CRSxPQUFlLEVBQ1M7RUFDeEIsSUFBTUMsVUFBVSxHQUFHLEVBQUU7RUFDckIsSUFBSSxDQUFDQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsT0FBTyxDQUFDLElBQUlBLE9BQU8sR0FBRyxDQUFDLEVBQUU7SUFDNUMsT0FBTyxDQUFDRixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUVBLFNBQVMsQ0FBQ0EsU0FBUyxDQUFDdEMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0VBQ3hEO0VBQ0EsS0FBSyxJQUFJc0IsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHa0IsT0FBTyxFQUFFbEIsQ0FBQyxFQUFFLEVBQUU7SUFDaEM7SUFDQSxJQUFNc0IsUUFBUSxHQUFHdEIsQ0FBQyxHQUFHa0IsT0FBTztJQUM1QjtJQUNBQyxVQUFVLENBQUM3QyxJQUFJLENBQUMsSUFBQWlELHVCQUFVLEVBQUNQLFNBQVMsRUFBRU0sUUFBUSxDQUFDLENBQUM7RUFDbEQ7RUFFQSxPQUFPSCxVQUFVO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNLLG9CQUFvQkEsQ0FBQ2YsTUFBYSxFQUFFZ0IsS0FBZSxFQUFFWCxDQUFTLEVBQU87RUFDbkYsSUFBTWQsQ0FBQyxHQUFHLElBQUEwQixtQkFBVSxFQUFDRCxLQUFLLEVBQUVYLENBQUMsQ0FBQztFQUU5QixJQUFJVyxLQUFLLENBQUN6QixDQUFDLENBQUMsS0FBS2MsQ0FBQyxFQUFFO0lBQ2xCO0lBQ0EsT0FBT0wsTUFBTSxDQUFDVCxDQUFDLENBQUM7RUFDbEI7RUFDQTtFQUNBLE9BQU9TLE1BQU0sQ0FBQ2tCLElBQUksQ0FBQ0MsR0FBRyxDQUFDNUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTNkIsZ0JBQWdCQSxDQUM5QkMsS0FBYSxFQUNiakMsS0FBb0MsRUFDcENZLE1BQWlFLEVBQ2pFc0IsS0FBZSxFQUNFO0VBQ2pCLElBQU1DLGFBQWEsR0FBR0MscUJBQVUsQ0FBQ0YsS0FBSyxHQUFHLFFBQVEsR0FBR0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUN6RHJCLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLENBQ2RaLEtBQUssQ0FBQ2tDLEtBQUssR0FBR3RCLE1BQU0sR0FBR1osS0FBSyxDQUFDO0VBQ2hDbUMsYUFBYSxDQUFDRSxTQUFTLEdBQUdILEtBQUssR0FBRyxRQUFRLEdBQUdELEtBQUs7RUFDbEQsT0FBT0UsYUFBYTtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTRyxrQkFBa0JBLENBQ3pCTCxLQUFzQixFQUN0Qk0sV0FBd0IsRUFDSTtFQUM1QixJQUFNQyxTQUFTLEdBQUdQLEtBQUssQ0FBQ2pDLEtBQUssQ0FBQyxDQUFDLENBQUNuQixNQUFNO0VBQ3RDLE9BQU9vRCxLQUFLLENBQUNqQyxLQUFLLENBQUMsQ0FBQyxDQUFDUixHQUFHLENBQUMsVUFBQ1UsQ0FBQyxFQUFFQyxDQUFDLEVBQUs7SUFDakMsSUFBTXNDLE1BQU0sR0FBR1IsS0FBSyxDQUFDUyxZQUFZLENBQUN4QyxDQUFDLENBQUM7SUFDcEMsSUFBTXlDLE1BQU0sR0FBRyxDQUNieEMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBQXlDLDhCQUFtQixFQUFDTCxXQUFXLENBQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzVEdEMsQ0FBQyxLQUFLcUMsU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBQUksOEJBQW1CLEVBQUNMLFdBQVcsQ0FBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDekU7SUFDRCxPQUFPO01BQ0w7TUFDQXpDLEtBQUssRUFBRXlDLE1BQU07TUFDYjtNQUNBRSxNQUFNLEVBQU5BLE1BQU07TUFDTkUsS0FBSyxFQUNIMUMsQ0FBQyxLQUFLLENBQUMsZ0JBQUEyQyxNQUFBLENBQ1VQLFdBQVcsQ0FBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQ25DdEMsQ0FBQyxLQUFLcUMsU0FBUyxHQUFHLENBQUMsTUFBQU0sTUFBQSxDQUNoQlAsV0FBVyxDQUFDRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQUFLLE1BQUEsQ0FDdEJQLFdBQVcsQ0FBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQUFLLE1BQUEsQ0FBT1AsV0FBVyxDQUFDRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVNNLGNBQWNBLENBQ3JCZCxLQUFzQixFQUN0Qk0sV0FBd0IsRUFDSTtFQUM1QixPQUFPTixLQUFLLENBQUNqQyxLQUFLLENBQUMsQ0FBQyxDQUFDUixHQUFHLENBQUMsVUFBQVUsQ0FBQyxFQUFJO0lBQzVCO0lBQ0EsSUFBTXVDLE1BQU0sR0FBR1IsS0FBSyxDQUFDUyxZQUFZLENBQUN4QyxDQUFDLENBQUM7SUFDcEMsSUFBTXlDLE1BQU0sR0FBRyxDQUNiLElBQUFDLDhCQUFtQixFQUFDTCxXQUFXLENBQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzNDLElBQUFHLDhCQUFtQixFQUFDTCxXQUFXLENBQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzVDO0lBRUQsT0FBTztNQUNMSSxLQUFLLEtBQUFDLE1BQUEsQ0FBS1AsV0FBVyxDQUFDRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBQUssTUFBQSxDQUFPUCxXQUFXLENBQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFO01BQy9EO01BQ0F6QyxLQUFLLEVBQUV5QyxNQUFNO01BQ2I7TUFDQUUsTUFBTSxFQUFOQTtJQUNGLENBQUM7RUFDSCxDQUFDLENBQUM7QUFDSjtBQUVBLElBQU1LLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUdDLENBQUM7RUFBQSxPQUFLQSxDQUFDLEdBQUcsSUFBQUMsdUJBQVksRUFBQ0QsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLFVBQVU7QUFBQSxDQUFDO0FBQzlFO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLGVBQWVBLENBQUNsQixLQUFzQixFQUFFTSxXQUF3QixFQUFnQjtFQUM5RixJQUFJLE9BQU9OLEtBQUssQ0FBQ1MsWUFBWSxLQUFLLFVBQVUsRUFBRTtJQUM1QyxPQUFPLEVBQUU7RUFDWDtFQUNBLElBQU1VLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlILENBQUMsRUFBRUksSUFBSTtJQUFBLE9BQ25DSixDQUFDLElBQUlWLFdBQVcsR0FBR0EsV0FBVyxDQUFDVSxDQUFDLENBQUMsR0FBR0EsQ0FBQyxHQUFHLElBQUFDLHVCQUFZLEVBQUNELENBQUMsRUFBRUksSUFBSSxDQUFDLEdBQUcsVUFBVTtFQUFBO0VBQzVFLElBQU1DLE1BQU0sR0FDVnJCLEtBQUssQ0FBQ0ksU0FBUyxLQUFLLFdBQVcsR0FDM0JDLGtCQUFrQixDQUFDTCxLQUFLLEVBQUVtQixvQkFBb0IsQ0FBQyxHQUMvQ25CLEtBQUssQ0FBQ0ksU0FBUyxLQUFLLFFBQVEsR0FDNUJDLGtCQUFrQixDQUFDTCxLQUFLLEVBQUVlLHNCQUFzQixDQUFDLEdBQ2pERCxjQUFjLENBQUNkLEtBQUssRUFBRU0sV0FBVyxDQUFDO0VBRXhDLElBQU1uRCxJQUFJLEdBQUc2QyxLQUFLLENBQUNqQyxLQUFLLENBQUMsQ0FBQztFQUUxQixPQUFPc0QsTUFBTSxDQUFDOUQsR0FBRyxDQUFDLFVBQUNxRCxLQUFLLEVBQUVVLEtBQUs7SUFBQSxPQUFBNUUsYUFBQTtNQUM3QlMsSUFBSSxFQUFFMEIsS0FBSyxDQUFDQyxPQUFPLENBQUMzQixJQUFJLENBQUNtRSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUFDLG9CQUFRLEVBQUNwRSxJQUFJLENBQUNtRSxLQUFLLENBQUMsQ0FBQyxHQUFHbkUsSUFBSSxDQUFDbUUsS0FBSztJQUFDLEdBQ25FVixLQUFLO0VBQUEsQ0FDUixDQUFDO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU1ksaUJBQWlCQSxDQUFDeEIsS0FBc0IsRUFBdUI7RUFDN0UsSUFBTXJCLE1BQU0sR0FBR3FCLEtBQUssQ0FBQ3JCLE1BQU0sQ0FBQyxDQUFDO0VBQzdCLElBQU0wQyxNQUFNLEdBQUdyQixLQUFLLENBQUNyQixNQUFNLENBQUMsQ0FBQztFQUM3QixJQUFNeEIsSUFBSSxHQUFHd0IsTUFBTSxDQUFDcEIsR0FBRyxDQUFDeUMsS0FBSyxDQUFDO0VBRTlCLE9BQU83QyxJQUFJLENBQUNJLEdBQUcsQ0FBQyxVQUFDa0UsS0FBSyxFQUFFSCxLQUFLO0lBQUEsT0FBTTtNQUNqQ25FLElBQUksRUFBRSxJQUFBdUUsc0JBQVUsRUFBQ0QsS0FBSyxDQUFDLEdBQUcsSUFBQUYsb0JBQVEsRUFBQ0UsS0FBSyxDQUFDLEdBQUdBLEtBQUs7TUFDakRiLEtBQUssRUFBRVMsTUFBTSxDQUFDQyxLQUFLO0lBQ3JCLENBQUM7RUFBQSxDQUFDLENBQUM7QUFDTDtBQUVBLElBQU1LLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBRzFELENBQUM7RUFBQSxPQUFJQSxDQUFDO0FBQUE7QUFFNUIsSUFBTTJELGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUdqRCxNQUFNLEVBQUk7RUFDbkMsSUFBTWtELFNBQVMsR0FBRyxJQUFBQyx1Q0FBMEIsRUFBQ25ELE1BQU0sQ0FBQztFQUNwRCxPQUFPLFVBQUFvRCxHQUFHO0lBQUEsT0FBSUMsa0JBQU0sQ0FBQ0MsR0FBRyxDQUFDRixHQUFHLENBQUMsQ0FBQ0csTUFBTSxDQUFDTCxTQUFTLENBQUM7RUFBQTtBQUNqRCxDQUFDO0FBRU0sU0FBU00sbUJBQW1CQSxDQUFDeEQsTUFBTSxFQUFFeUQsU0FBUyxFQUFFO0VBQ3JEO0VBQ0EsT0FBT0EsU0FBUyxLQUFLQywwQkFBZSxDQUFDQyxTQUFTLEdBQzFDVixrQkFBa0IsQ0FBQ2pELE1BQU0sQ0FBQyxHQUMxQixDQUFDeUQsU0FBUyxHQUNWVCxhQUFhLEdBQ2IsVUFBQVgsQ0FBQztJQUFBLE9BQUssSUFBQXVCLG1CQUFRLEVBQUN2QixDQUFDLENBQUMsR0FBRyxJQUFBQyx1QkFBWSxFQUFDRCxDQUFDLEVBQUVvQixTQUFTLENBQUMsR0FBRyxVQUFVO0VBQUEsQ0FBQztBQUNsRTs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSSxnQkFBZ0JBLENBQUFDLElBQUEsRUFVTztFQUFBLElBVHJDekMsS0FBSyxHQUFBeUMsSUFBQSxDQUFMekMsS0FBSztJQUNMSSxTQUFTLEdBQUFxQyxJQUFBLENBQVRyQyxTQUFTO0lBQ1RFLFdBQVcsR0FBQW1DLElBQUEsQ0FBWG5DLFdBQVc7SUFDWDhCLFNBQVMsR0FBQUssSUFBQSxDQUFUTCxTQUFTO0VBT1QsSUFBSSxDQUFDcEMsS0FBSyxJQUFJQSxLQUFLLENBQUMwQyxNQUFNLEVBQUU7SUFDMUIsT0FBTyxFQUFFO0VBQ1g7RUFDQSxJQUNFdEMsU0FBUyxLQUFLdUMsc0JBQVcsQ0FBQ0MsT0FBTyxJQUNqQ3hDLFNBQVMsS0FBS3VDLHNCQUFXLENBQUNFLGFBQWEsSUFDdkNULFNBQVMsS0FBS0MsMEJBQWUsQ0FBQ1MsTUFBTSxFQUNwQztJQUNBLE9BQU90QixpQkFBaUIsQ0FBQ3hCLEtBQUssQ0FBQztFQUNqQztFQUVBLElBQU0rQyxXQUFXLEdBQUd6QyxXQUFXLElBQUk2QixtQkFBbUIsQ0FBQ25DLEtBQUssQ0FBQ3JCLE1BQU0sQ0FBQyxDQUFDLEVBQUV5RCxTQUFTLENBQUM7RUFFakYsT0FBT2xCLGVBQWUsQ0FBQ2xCLEtBQUssRUFBRStDLFdBQVcsQ0FBQztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyxrQkFBa0JBLENBQUFDLEtBQUEsRUFXUDtFQUFBLElBVnpCbEYsS0FBSyxHQUFBa0YsS0FBQSxDQUFMbEYsS0FBSztJQUNMWSxNQUFNLEdBQUFzRSxLQUFBLENBQU50RSxNQUFNO0lBQ055QixTQUFTLEdBQUE2QyxLQUFBLENBQVQ3QyxTQUFTO0lBQ1Q4QyxLQUFLLEdBQUFELEtBQUEsQ0FBTEMsS0FBSztFQVFMLElBQUluRixLQUFLLElBQUlZLE1BQU0sSUFBSXlCLFNBQVMsRUFBRTtJQUNoQyxPQUFPOEMsS0FBSyxDQUFDQyxhQUFhLENBQUMvQyxTQUFTLEVBQUV6QixNQUFNLEVBQUVaLEtBQUssQ0FBQztFQUN0RDtFQUNBLE9BQU8sSUFBSTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNxRix1QkFBdUJBLENBQUNGLEtBQVksRUFBRUcsYUFBNEIsRUFBWTtFQUM1RixJQUFNMUUsTUFBTSxHQUFHdUUsS0FBSyxDQUFDSSxNQUFNLENBQUNELGFBQWEsQ0FBQzFFLE1BQU0sQ0FBQztFQUNqRCxJQUFNWixLQUFLLEdBQUdtRixLQUFLLENBQUNJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDRixhQUFhLENBQUN0RixLQUFLLENBQUM7RUFDekQsSUFBTXFDLFNBQVMsR0FBRzhDLEtBQUssQ0FBQ0ksTUFBTSxDQUFDRCxhQUFhLENBQUNyRCxLQUFLLENBQUM7RUFDbkQsSUFBTXdELEtBQUssR0FBR04sS0FBSyxDQUFDSSxNQUFNLENBQUNELGFBQWEsQ0FBQ0csS0FBSyxDQUFDO0VBRS9DLElBQU14RCxLQUFLLEdBQUdnRCxrQkFBa0IsQ0FBQztJQUMvQmpGLEtBQUssRUFBTEEsS0FBSztJQUNMWSxNQUFNLEVBQU5BLE1BQU07SUFDTnlCLFNBQVMsRUFBVEEsU0FBUztJQUNUOEMsS0FBSyxFQUFMQTtFQUNGLENBQUMsQ0FBQztFQUVGLElBQU1PLFdBQVcsR0FBR2pCLGdCQUFnQixDQUFDO0lBQ25DeEMsS0FBSyxFQUFFQSxLQUFLLGFBQUxBLEtBQUssZUFBTEEsS0FBSyxDQUFFMEMsTUFBTSxHQUFHMUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxLQUFLO0lBQ3ZDSSxTQUFTLEVBQVRBLFNBQVM7SUFDVGdDLFNBQVMsRUFBRW9CLEtBQUssQ0FBQ3BDO0VBQ25CLENBQUMsQ0FBQztFQUNGLE9BQU9zQyxxQkFBcUIsQ0FBQ0QsV0FBVyxDQUFDO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLDJCQUEyQkEsQ0FBQUMsS0FBQSxFQVFoQjtFQUFBLElBQUFDLE1BQUE7RUFBQSxJQVB6QjdELEtBQUssR0FBQTRELEtBQUEsQ0FBTDVELEtBQUs7SUFDTGtELEtBQUssR0FBQVUsS0FBQSxDQUFMVixLQUFLO0lBQ0xZLFFBQVEsR0FBQUYsS0FBQSxDQUFSRSxRQUFRO0VBTVIsS0FBQUQsTUFBQSxHQUFJN0QsS0FBSyxjQUFBNkQsTUFBQSxlQUFMQSxNQUFBLENBQU9uQixNQUFNLEVBQUU7SUFBQSxJQUFBcUIsV0FBQTtJQUNqQixJQUFNL0UsQ0FBQyxHQUFHLENBQUErRSxXQUFBLEdBQUFiLEtBQUssQ0FBQ2MsSUFBSSxjQUFBRCxXQUFBLGVBQVZBLFdBQUEsQ0FBWUUsT0FBTyxHQUFHZixLQUFLLENBQUNjLElBQUksQ0FBQ0MsT0FBTyxDQUFDSCxRQUFRLENBQUMsR0FBR0EsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVJLElBQUk7SUFDN0VsRSxLQUFLLEdBQUdWLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDUCxDQUFDLENBQUMsR0FBR2dCLEtBQUssQ0FBQ2hCLENBQUMsQ0FBQyxHQUFHLElBQUk7RUFDOUM7RUFDQSxPQUFPZ0IsS0FBSztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNtRSxzQkFBc0JBLENBQ3BDQyxNQUFnQixFQUNoQnpGLE1BQXdELEVBQ25EO0VBQ0w7RUFDQSxJQUFNMEYsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0VBQzlCLElBQU1DLFlBQVksR0FBRyxJQUFBekcsaUJBQU0sRUFBQ2MsTUFBTSxDQUFDLENBQUN0QyxNQUFNLENBQUNtQiwrQkFBa0IsQ0FBQyxDQUFDQyxJQUFJLENBQUMsQ0FBQztFQUNyRTtFQUNBLElBQU04RyxTQUFTLEdBQUdILE1BQU0sQ0FBQ0EsTUFBTSxDQUFDeEgsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUMzQyxLQUFLLElBQUlzQixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdvRyxZQUFZLENBQUMxSCxNQUFNLEVBQUUsRUFBRXNCLENBQUMsRUFBRTtJQUM1QyxJQUFJQSxDQUFDLEdBQUdrRyxNQUFNLENBQUN4SCxNQUFNLEVBQUU7TUFDckJ5SCxtQkFBbUIsQ0FBQ0QsTUFBTSxDQUFDbEcsQ0FBQyxDQUFDLENBQUMsR0FBR29HLFlBQVksQ0FBQ3BHLENBQUMsQ0FBQztJQUNsRCxDQUFDLE1BQU07TUFDTG1HLG1CQUFtQixDQUFDRSxTQUFTLENBQUMsTUFBQTFELE1BQUEsS0FBQTJELG1CQUFBLGFBQ3hCM0YsS0FBSyxDQUFDQyxPQUFPLENBQUN1RixtQkFBbUIsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsR0FDN0NGLG1CQUFtQixDQUFDRSxTQUFTLENBQUMsR0FDOUIsQ0FBQ0YsbUJBQW1CLENBQUNFLFNBQVMsQ0FBQyxDQUFDLElBQ3BDRCxZQUFZLENBQUNwRyxDQUFDLENBQUMsRUFDaEI7SUFDSDtFQUNGO0VBRUEsSUFBTXVHLFFBQVEsR0FBR0wsTUFBTSxDQUFDN0csR0FBRyxDQUFDLFVBQUFtSCxLQUFLLEVBQUk7SUFDbkMsSUFBSUEsS0FBSyxJQUFJTCxtQkFBbUIsRUFBRTtNQUNoQyxPQUFPLENBQUNBLG1CQUFtQixDQUFDSyxLQUFLLENBQUMsRUFBRUEsS0FBSyxDQUFDO0lBQzVDO0lBQ0EsT0FBTyxDQUFDLElBQUksRUFBRUEsS0FBSyxDQUFDO0VBQ3RCLENBQUMsQ0FBQztFQUVGLE9BQU9ELFFBQVE7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU0UsZ0NBQWdDQSxDQUM5Q0YsUUFBMEIsRUFDRTtFQUM1QixJQUFJLENBQUNBLFFBQVEsRUFBRTtJQUNiLE9BQU8sSUFBSTtFQUNiO0VBQ0EsSUFBTWhCLFdBQVcsR0FBR2dCLFFBQVEsQ0FBQ2xILEdBQUcsQ0FBQyxVQUFBcUgsS0FBQSxFQUFvQjtJQUFBLElBQUFDLEtBQUEsT0FBQXRHLGVBQUEsYUFBQXFHLEtBQUE7TUFBbEJFLEtBQUssR0FBQUQsS0FBQTtNQUFFSCxLQUFLLEdBQUFHLEtBQUE7SUFDN0MsT0FBTztNQUNMMUgsSUFBSSxFQUFFdUgsS0FBSztNQUNYOUQsS0FBSyxFQUFFa0U7SUFDVCxDQUFDO0VBQ0gsQ0FBQyxDQUFDO0VBRUYsT0FBT3JCLFdBQVc7QUFDcEI7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU3NCLGdDQUFnQ0EsQ0FBQ3RCLFdBQWdDLEVBQVk7RUFDM0Y7RUFDQSxJQUFNVyxNQUFNLEdBQUcsSUFBQVksZ0JBQUksRUFBQ3ZCLFdBQVcsQ0FBQ2xHLEdBQUcsQ0FBQyxVQUFBMEgsRUFBRTtJQUFBLE9BQUlBLEVBQUUsQ0FBQzlILElBQUk7RUFBQSxFQUFDLENBQUM7RUFDbkQsSUFBTUcsTUFBTSxHQUFHLElBQUEwSCxnQkFBSSxFQUFDdkIsV0FBVyxDQUFDbEcsR0FBRyxDQUFDLFVBQUEwSCxFQUFFO0lBQUEsT0FBSUEsRUFBRSxDQUFDckUsS0FBSztFQUFBLEVBQUMsQ0FBQztFQUVwRCxPQUFPdUQsc0JBQXNCLENBQUNDLE1BQU0sRUFBRTlHLE1BQU0sQ0FBQztBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTb0cscUJBQXFCQSxDQUFDRCxXQUErQyxFQUFZO0VBQy9GLElBQU1nQixRQUFRLEdBQUdoQixXQUFXLENBQUNsRyxHQUFHLENBQUMsVUFBQzJILFVBQVUsRUFBRWhILENBQUMsRUFBSztJQUNsRDtJQUNBLE9BQU8sQ0FDTGdILFVBQVUsQ0FBQ3hFLE1BQU0sR0FDYnhDLENBQUMsS0FBS3VGLFdBQVcsQ0FBQzdHLE1BQU0sR0FBRyxDQUFDLEdBQzFCLElBQUksQ0FBQztJQUFBLEVBQ0xzSSxVQUFVLENBQUN4RSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQ3RCd0UsVUFBVSxDQUFDdEUsS0FBSyxFQUNwQnNFLFVBQVUsQ0FBQy9ILElBQUksQ0FDaEI7RUFDSCxDQUFDLENBQUM7O0VBRUY7RUFDQSxPQUFPc0gsUUFBUTtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTVSxxQkFBcUJBLENBQUNWLFFBQTBCLEVBQXVCO0VBQ3JGLElBQUksQ0FBQ0EsUUFBUSxFQUFFO0lBQ2IsT0FBTyxJQUFJO0VBQ2I7RUFDQSxJQUFNaEIsV0FBVyxHQUFHZ0IsUUFBUSxDQUFDbEgsR0FBRyxDQUFDLFVBQUE2SCxLQUFBLEVBQWlCbEgsQ0FBQyxFQUFLO0lBQUEsSUFBQW1ILEtBQUEsT0FBQTlHLGVBQUEsYUFBQTZHLEtBQUE7TUFBckJOLEtBQUssR0FBQU8sS0FBQTtNQUFFWCxLQUFLLEdBQUFXLEtBQUE7SUFDN0MsSUFBTXRILEtBQUssR0FDVEcsQ0FBQyxLQUFLLENBQUM7SUFDSDtJQUNBLENBQUMsQ0FBQ29ILFFBQVEsRUFBRVIsS0FBSyxDQUFDO0lBQ2xCO0lBQ0Y1RyxDQUFDLEtBQUt1RyxRQUFRLENBQUM3SCxNQUFNLEdBQUcsQ0FBQyxHQUN2QixDQUFDNkgsUUFBUSxDQUFDdkcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFb0gsUUFBUSxDQUFDO0lBQzlCO0lBQ0EsQ0FBQ2IsUUFBUSxDQUFDdkcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFNEcsS0FBSyxDQUFDO0lBQ2pDLE9BQU87TUFDTDNILElBQUksRUFBRXVILEtBQUs7TUFDWDNHLEtBQUssRUFBTEEsS0FBSztNQUNMMkMsTUFBTSxFQUFFM0MsS0FBSztNQUNiNkMsS0FBSztNQUNIO01BQ0ExQyxDQUFDLEtBQUssQ0FBQyxnQkFBQTJDLE1BQUEsQ0FDVWlFLEtBQUs7TUFDbEI7TUFDRjVHLENBQUMsS0FBS3VHLFFBQVEsQ0FBQzdILE1BQU0sR0FBRyxDQUFDLE1BQUFpRSxNQUFBLENBQ3BCNEQsUUFBUSxDQUFDdkcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBQTJDLE1BQUEsQ0FDbEI0RCxRQUFRLENBQUN2RyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQUEyQyxNQUFBLENBQU9pRSxLQUFLO0lBQ3pDLENBQUM7RUFDSCxDQUFDLENBQUM7O0VBRUY7RUFDQSxPQUFPckIsV0FBVztBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTOEIsb0JBQW9CQSxDQUFDOUIsV0FBb0IsRUFBK0I7RUFDdEYsT0FBTytCLE9BQU8sQ0FBQzNHLEtBQUssQ0FBQ0MsT0FBTyxDQUFDMkUsV0FBVyxDQUFDLElBQUlBLFdBQVcsQ0FBQzdHLE1BQU0sSUFBSTZHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9DLE1BQU0sQ0FBQztBQUMzRjs7QUFFQTtBQUNPLFNBQVMrRSxrQkFBa0JBLENBQUFDLEtBQUEsRUFVL0I7RUFBQSxJQVREQyxjQUFjLEdBQUFELEtBQUEsQ0FBZEMsY0FBYztJQUNkQyxXQUFXLEdBQUFGLEtBQUEsQ0FBWEUsV0FBVztJQUNYQyxPQUFPLEdBQUFILEtBQUEsQ0FBUEcsT0FBTztJQUNQQyxrQkFBa0IsR0FBQUosS0FBQSxDQUFsQkksa0JBQWtCO0VBT2xCLElBQUlDLFNBQVMsR0FBR3pHLE1BQU0sQ0FBQzBHLGlCQUFpQjtFQUN4QyxJQUFJQyxTQUFTLEdBQUczRyxNQUFNLENBQUM0RyxpQkFBaUI7RUFDeEMsSUFBSUMsTUFBTSxHQUFHLENBQUM7RUFDZCxJQUFJQyxTQUFTLEdBQUcsQ0FBQztFQUVqQixJQUFJVCxjQUFjLEVBQUU7SUFDbEIxSixNQUFNLENBQUNxQixNQUFNLENBQUNxSSxjQUFjLENBQUMsQ0FBQzlJLE9BQU8sQ0FBQyxVQUFBd0osR0FBRyxFQUFJO01BQzNDLElBQU10RSxHQUFHLEdBQUdzRSxHQUFHLENBQUN2QixLQUFLO01BQ3JCLElBQUksSUFBQXZDLG1CQUFRLEVBQUNSLEdBQUcsQ0FBQyxFQUFFO1FBQ2pCLElBQUlBLEdBQUcsR0FBR2dFLFNBQVMsRUFBRUEsU0FBUyxHQUFHaEUsR0FBRztRQUNwQyxJQUFJQSxHQUFHLEdBQUdrRSxTQUFTLEVBQUVBLFNBQVMsR0FBR2xFLEdBQUc7UUFDcENxRSxTQUFTLElBQUlyRSxHQUFHO1FBQ2hCb0UsTUFBTSxJQUFJLENBQUM7TUFDYjtJQUNGLENBQUMsQ0FBQztFQUNKLENBQUMsTUFBTTtJQUNMLElBQUlQLFdBQVcsSUFBSUEsV0FBVyxDQUFDMUcsU0FBUyxJQUFJMEcsV0FBVyxDQUFDVSxJQUFJLEVBQUU7TUFDNUQ7TUFDQSxPQUFPLENBQ0xWLFdBQVcsQ0FBQzFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzRGLEtBQUssRUFDOUJjLFdBQVcsQ0FBQzFHLFNBQVMsQ0FBQzBHLFdBQVcsQ0FBQzFHLFNBQVMsQ0FBQ3RDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ2tJLEtBQUssRUFDN0RjLFdBQVcsQ0FBQ1UsSUFBSSxDQUNqQjtJQUNIO0lBQ0EsSUFBSVQsT0FBTyxJQUFJQyxrQkFBa0IsRUFBRTtNQUNqQ0QsT0FBTyxDQUFDVSxVQUFVLENBQUMxSixPQUFPLENBQUMsVUFBQTJKLENBQUMsRUFBSTtRQUM5QixJQUFNekUsR0FBRyxHQUFHK0Qsa0JBQWtCLENBQUNVLENBQUMsQ0FBQztRQUNqQyxJQUFJLElBQUFqRSxtQkFBUSxFQUFDUixHQUFHLENBQUMsRUFBRTtVQUNqQixJQUFJQSxHQUFHLEdBQUdnRSxTQUFTLEVBQUVBLFNBQVMsR0FBR2hFLEdBQUc7VUFDcEMsSUFBSUEsR0FBRyxHQUFHa0UsU0FBUyxFQUFFQSxTQUFTLEdBQUdsRSxHQUFHO1VBQ3BDcUUsU0FBUyxJQUFJckUsR0FBRztVQUNoQm9FLE1BQU0sSUFBSSxDQUFDO1FBQ2I7TUFDRixDQUFDLENBQUM7SUFDSjtFQUNGO0VBQ0EsSUFBTU0sYUFBYSxHQUFHTixNQUFNLEdBQUcsQ0FBQyxHQUFHQyxTQUFTLEdBQUdELE1BQU0sR0FBRyxDQUFDO0VBQ3pELE9BQU8sQ0FBQ0EsTUFBTSxHQUFHLENBQUMsR0FBR0osU0FBUyxHQUFHLENBQUMsRUFBRUksTUFBTSxHQUFHLENBQUMsR0FBR0YsU0FBUyxHQUFHLENBQUMsRUFBRVEsYUFBYSxDQUFDO0FBQ2hGO0FBRU8sU0FBU0MsK0JBQStCQSxDQUFDakMsUUFBa0IsRUFBRW5ELEtBQWEsRUFBTztFQUN0RixJQUFJLENBQUNtRCxRQUFRLEVBQUU7SUFDYixPQUFPQSxRQUFRO0VBQ2pCO0VBQ0EsSUFBTWtDLFdBQVcsR0FBR2xDLFFBQVEsQ0FBQ2xILEdBQUcsQ0FBQyxVQUFDcUosRUFBRSxFQUFFMUksQ0FBQyxFQUFLO0lBQzFDLElBQUlBLENBQUMsS0FBS29ELEtBQUssRUFBRTtNQUNmLE9BQU8sQ0FBQyxJQUFJLEVBQUVzRixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEI7SUFDQSxPQUFPQSxFQUFFO0VBQ1gsQ0FBQyxDQUFDO0VBQ0YsT0FBT0QsV0FBVztBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxvQ0FBb0NBLENBQ2xEcEMsUUFBeUIsRUFDekJuRCxLQUFhLEVBQ2JnRCxZQUFrQyxFQUNMO0VBQzdCLElBQUksQ0FBQ0csUUFBUSxJQUFJLENBQUNILFlBQVksRUFBRTtJQUM5QixPQUFPRyxRQUFRO0VBQ2pCOztFQUVBO0VBQ0EsSUFBTXFDLGFBQWEsR0FBRzdLLE1BQU0sQ0FBQzhLLFdBQVcsQ0FBQ3pDLFlBQVksQ0FBQy9HLEdBQUcsQ0FBQyxVQUFBd0UsR0FBRztJQUFBLE9BQUksQ0FBQ0EsR0FBRyxFQUFFLEtBQUssQ0FBQztFQUFBLEVBQUMsQ0FBQztFQUMvRTBDLFFBQVEsQ0FBQzVILE9BQU8sQ0FBQyxVQUFBK0osRUFBRSxFQUFJO0lBQ3JCLElBQUFJLG9CQUFPLEVBQUNKLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDL0osT0FBTyxDQUFDLFVBQUFvSyxDQUFDLEVBQUk7TUFDMUIsSUFBSUEsQ0FBQyxFQUFFSCxhQUFhLENBQUNHLENBQUMsQ0FBQyxHQUFHLElBQUk7SUFDaEMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBQ0YsSUFBTUMsSUFBSSxHQUFHakwsTUFBTSxDQUFDQyxJQUFJLENBQUM0SyxhQUFhLENBQUMsQ0FBQ3pLLE1BQU0sQ0FBQyxVQUFBNEssQ0FBQztJQUFBLE9BQUksQ0FBQ0gsYUFBYSxDQUFDRyxDQUFDLENBQUM7RUFBQSxFQUFDOztFQUV0RTtFQUNBLElBQU1OLFdBQVcsR0FBR2xDLFFBQVEsQ0FBQ2xILEdBQUcsQ0FBQyxVQUFDcUosRUFBRSxFQUFFMUksQ0FBQyxFQUFLO0lBQzFDLElBQUlBLENBQUMsS0FBS29ELEtBQUssRUFBRTtNQUNmLE9BQU8sSUFBQVQsTUFBQSxLQUFBMkQsbUJBQUEsYUFBSzBDLElBQUksT0FBQTFDLG1CQUFBLGFBQUssSUFBQXdDLG9CQUFPLEVBQUNKLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFHQSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUM7SUFDQSxPQUFPQSxFQUFFO0VBQ1gsQ0FBQyxDQUFhO0VBRWQsT0FBT0QsV0FBVztBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTUSxrQ0FBa0NBLENBQ2hEMUMsUUFBcUMsRUFDckMyQyxJQUFxQixFQUNyQjlGLEtBQWEsRUFDZ0I7RUFDN0IsSUFBSSxDQUFDbUQsUUFBUSxFQUFFO0lBQ2IsT0FBT0EsUUFBUTtFQUNqQjtFQUNBLElBQU1rQyxXQUFXLEdBQUdsQyxRQUFRLENBQUNsSCxHQUFHLENBQUMsVUFBQ3FKLEVBQUUsRUFBRTFJLENBQUMsRUFBSztJQUMxQyxJQUFJQSxDQUFDLEtBQUtvRCxLQUFLLEVBQUU7TUFDZixJQUFJLENBQUNzRixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsSUFBSSxFQUFFQSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDdEI7TUFDQSxJQUFNUyxtQkFBbUIsR0FBRyxJQUFBTCxvQkFBTyxFQUFDSixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDMUMsSUFBTVUsbUJBQW1CLEdBQUdELG1CQUFtQixDQUFDaEwsTUFBTSxDQUFDLFVBQUE0SyxDQUFDO1FBQUEsT0FBSUEsQ0FBQyxLQUFLRyxJQUFJO01BQUEsRUFBQztNQUN2RSxPQUFPLENBQUNFLG1CQUFtQixFQUFFVixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckM7SUFDQSxPQUFPQSxFQUFFO0VBQ1gsQ0FBQyxDQUFhO0VBRWQsT0FBT0QsV0FBVztBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTWSw4QkFBOEJBLENBQzVDOUMsUUFBa0IsRUFDbEIrQyxLQUEwQixFQUMxQmxHLEtBQWEsRUFDSDtFQUNWLElBQUksQ0FBQ21ELFFBQVEsRUFBRTtJQUNiLE9BQU9BLFFBQVE7RUFDakI7RUFFQSxJQUFNa0MsV0FBVyxHQUFHbEMsUUFBUSxDQUFDbEgsR0FBRyxDQUFDLFVBQUNxSixFQUFFLEVBQUUxSSxDQUFDLEVBQUs7SUFDMUMsSUFBSUEsQ0FBQyxLQUFLb0QsS0FBSyxFQUFFO01BQ2YsSUFBSSxDQUFDc0YsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDWSxLQUFLLEVBQUVaLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUN2QjtNQUNBLElBQU1TLG9CQUFtQixHQUFHLElBQUFMLG9CQUFPLEVBQUNKLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUMxQyxJQUFNVSxtQkFBbUIsR0FBRyxJQUFBdEMsZ0JBQUksRUFBQ3FDLG9CQUFtQixDQUFDeEcsTUFBTSxDQUFDMkcsS0FBSyxDQUFDLENBQUM7TUFDbkUsT0FBTyxDQUFDRixtQkFBbUIsRUFBRVYsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDO0lBQ0E7SUFDQSxJQUFNUyxtQkFBbUIsR0FBR1QsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxJQUFJL0gsS0FBSyxDQUFDQyxPQUFPLENBQUN1SSxtQkFBbUIsQ0FBQyxFQUFFO01BQ3RDLElBQU1DLG9CQUF3QyxHQUFJRCxtQkFBbUIsQ0FBV2hMLE1BQU0sQ0FDcEYsVUFBQTRLLENBQUM7UUFBQSxPQUFJLENBQUNPLEtBQUssQ0FBQ0MsUUFBUSxDQUFDUixDQUFDLENBQUM7TUFBQSxDQUN6QixDQUFDO01BQ0QsT0FBTyxDQUFDSyxvQkFBbUIsRUFBRVYsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsTUFBTSxJQUFJUyxtQkFBbUIsSUFBSUcsS0FBSyxDQUFDQyxRQUFRLENBQUNKLG1CQUFtQixDQUFDLEVBQUU7TUFDckUsT0FBTyxDQUFDLElBQUksRUFBRVQsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCO0lBRUEsT0FBT0EsRUFBRTtFQUNYLENBQUMsQ0FBYTtFQUVkLE9BQU9ELFdBQVc7QUFDcEI7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU2Usd0JBQXdCQSxDQUN0Q0MsV0FBZ0MsRUFDaENDLFVBQXNCLEVBRW9DO0VBQUEsSUFEMURDLE1BQU0sR0FBQWxMLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUF3QixTQUFBLEdBQUF4QixTQUFBLE1BQUcsSUFBSTtFQUViLElBQU1tTCxJQUFJLEdBQUdGLFVBQVUsQ0FBQ25ELFFBQVEsR0FDNUJtRCxVQUFVLENBQUNuRCxRQUFRLEdBQ25CTixzQkFBc0IsQ0FBQ3lELFVBQVUsQ0FBQ3hELE1BQU0sRUFBRXVELFdBQVcsQ0FBQztFQUUxRCxJQUFNNUosS0FBaUIsR0FBRyxFQUFFO0VBQzVCLElBQU1ZLE1BQWdCLEdBQUcsRUFBRTtFQUMzQm1KLElBQUksQ0FBQ2pMLE9BQU8sQ0FBQyxVQUFBK0osRUFBRSxFQUFJO0lBQ2pCLElBQUkvSCxLQUFLLENBQUNDLE9BQU8sQ0FBQzhILEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ3hCQSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMvSixPQUFPLENBQUMsVUFBQWtGLEdBQUcsRUFBSTtRQUNuQnBELE1BQU0sQ0FBQ25DLElBQUksQ0FBQ3VGLEdBQUcsQ0FBQztRQUNoQmhFLEtBQUssQ0FBQ3ZCLElBQUksQ0FBQ3FMLE1BQU0sR0FBRyxJQUFBRSxvQkFBUSxFQUFDbkIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdBLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUM5QyxDQUFDLENBQUM7SUFDSixDQUFDLE1BQU07TUFDTGpJLE1BQU0sQ0FBQ25DLElBQUksQ0FBQ29LLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUNsQjdJLEtBQUssQ0FBQ3ZCLElBQUksQ0FBQ3FMLE1BQU0sR0FBRyxJQUFBRSxvQkFBUSxFQUFDbkIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdBLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QztFQUNGLENBQUMsQ0FBQztFQUVGLElBQU01RyxLQUFLLEdBQUdELGdCQUFnQixDQUFDNEMsc0JBQVcsQ0FBQ0UsYUFBYSxFQUFFOUUsS0FBSyxFQUFFWSxNQUFNLEVBQUUsS0FBSyxDQUFDO0VBQy9FcUIsS0FBSyxDQUFDZ0ksT0FBTyxDQUFDQyx5QkFBYyxDQUFDO0VBQzdCLE9BQU9qSSxLQUFLO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU2tJLDhCQUE4QkEsQ0FBQUMsS0FBQSxFQVlqQjtFQUFBLElBWDNCbkksS0FBSyxHQUFBbUksS0FBQSxDQUFMbkksS0FBSztJQUNMd0QsS0FBSyxHQUFBMkUsS0FBQSxDQUFMM0UsS0FBSztJQUNMNEUsYUFBYSxHQUFBRCxLQUFBLENBQWJDLGFBQWE7SUFDYnJLLEtBQUssR0FBQW9LLEtBQUEsQ0FBTHBLLEtBQUs7SUFDTDBGLFdBQVcsR0FBQTBFLEtBQUEsQ0FBWDFFLFdBQVc7RUFRWCxJQUFNNEUsaUJBQWlCLDBCQUFBeEgsTUFBQSxDQUEwQmIsS0FBSyxPQUFBYSxNQUFBLENBQUkyQyxLQUFLLENBQUM4RSxJQUFJLENBQUU7RUFDdEU7RUFDQSxJQUFNQyxhQUFhLEdBQUd4SyxLQUFLLENBQUMwRyxRQUFRLElBQUkxRyxLQUFLLENBQUN1SyxJQUFJLEtBQUtELGlCQUFpQixJQUFJdEssS0FBSyxDQUFDcUQsSUFBSSxLQUFLcEIsS0FBSztFQUNoRyxJQUFNeUUsUUFBUSxHQUFHOEQsYUFBYSxHQUMxQnhLLEtBQUssQ0FBQzBHLFFBQVEsR0FDZHpFLEtBQUssS0FBSzJDLHNCQUFXLENBQUNFLGFBQWEsSUFBSXVGLGFBQWEsR0FDcERqRSxzQkFBc0IsQ0FBQ3BHLEtBQUssQ0FBQ3FHLE1BQU0sRUFBRWdFLGFBQWEsQ0FBQyxHQUNuRDNFLFdBQVcsSUFBSThCLG9CQUFvQixDQUFDOUIsV0FBVyxDQUFDLEdBQ2hEQyxxQkFBcUIsQ0FBQ0QsV0FBVyxDQUFDLEdBQ2xDLElBQUk7RUFDUixJQUFNVyxNQUFNLEdBQUdtRSxhQUFhLEdBQUd4SyxLQUFLLENBQUNxRyxNQUFNLEdBQUdLLFFBQVEsR0FBR0EsUUFBUSxDQUFDbEgsR0FBRyxDQUFDLFVBQUFxSixFQUFFO0lBQUEsT0FBSUEsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUFBLEVBQUMsR0FBRzdJLEtBQUssQ0FBQ3FHLE1BQU07O0VBRWpHO0VBQ0EsSUFBTW9FLGFBQXVDLEdBQUc7SUFDOUNDLFFBQVEsRUFBRSxRQUFRO0lBQ2xCSCxJQUFJLEVBQUVELGlCQUFpQjtJQUN2QmpILElBQUksRUFBRXBCLEtBQUs7SUFDWHlFLFFBQVEsRUFBUkEsUUFBUTtJQUNSTCxNQUFNLEVBQUVBLE1BQU0sSUFBSTtFQUNwQixDQUFDO0VBRUQsT0FBT29FLGFBQWE7QUFDdEIiLCJpZ25vcmVMaXN0IjpbXX0=