@kepler.gl/utils 3.1.0-alpha.3 → 3.1.0-alpha.5

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.
package/dist/plot.js CHANGED
@@ -17,6 +17,7 @@ exports.getRangeFilterBins = getRangeFilterBins;
17
17
  exports.getTimeBins = getTimeBins;
18
18
  exports.getValueAggrFunc = void 0;
19
19
  exports.histogramFromDomain = histogramFromDomain;
20
+ exports.histogramFromOrdinal = histogramFromOrdinal;
20
21
  exports.histogramFromThreshold = histogramFromThreshold;
21
22
  exports.histogramFromValues = histogramFromValues;
22
23
  exports.isPercentField = isPercentField;
@@ -111,6 +112,27 @@ function histogramFromValues(values, numBins, valueAccessor) {
111
112
  return (0, _dataUtils.isNumber)(x0) && (0, _dataUtils.isNumber)(x1);
112
113
  });
113
114
  }
115
+ function histogramFromOrdinal(domain, values, valueAccessor) {
116
+ // @ts-expect-error to typed to expect strings
117
+ var getBins = (0, _d3Array.histogram)().thresholds(domain);
118
+ if (valueAccessor) {
119
+ // @ts-expect-error to typed to expect strings
120
+ getBins.value(valueAccessor);
121
+ }
122
+
123
+ // @ts-expect-error null values aren't expected
124
+ var bins = getBins(values);
125
+
126
+ // @ts-ignore d3-array types doesn't match
127
+ return bins.map(function (bin) {
128
+ return {
129
+ count: bin.length,
130
+ indexes: bin,
131
+ x0: bin.x0,
132
+ x1: bin.x0
133
+ };
134
+ });
135
+ }
114
136
 
115
137
  /**
116
138
  *
@@ -612,4 +634,4 @@ function getDefaultPlotType(filter, datasets) {
612
634
  aggregation: _constants.AGGREGATION_TYPES.sum
613
635
  };
614
636
  }
615
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl90aW1lIiwiX21vbWVudCIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfZGF0YVV0aWxzIiwiX2FnZ3JlZ2F0aW9uIiwiX3N0cmluZ3MiLCJfZm9ybWF0IiwiX2NvbG9yVXRpbHMiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJoaXN0b2dyYW1Gcm9tVGhyZXNob2xkIiwidGhyZXNob2xkcyIsInZhbHVlcyIsInZhbHVlQWNjZXNzb3IiLCJmaWx0ZXJFbXB0eUJpbnMiLCJ1bmRlZmluZWQiLCJnZXRCaW5zIiwiZDNIaXN0b2dyYW0iLCJkb21haW4iLCJiaW5zIiwibWFwIiwiYmluIiwiY291bnQiLCJpbmRleGVzIiwieDAiLCJ4MSIsImIiLCJoaXN0b2dyYW1Gcm9tVmFsdWVzIiwibnVtQmlucyIsImlzTnVtYmVyIiwiaGlzdG9ncmFtRnJvbURvbWFpbiIsInRpY2tzIiwiZ2V0VGltZUJpbnMiLCJkYXRhc2V0cyIsImludGVydmFsIiwidGltZUJpbnMiLCJkYXRhSWQiLCJkYXRhSWRJZHgiLCJkYXRhc2V0IiwicnVuR3B1RmlsdGVyRm9yUGxvdCIsImJpbkJ5VGltZSIsIm1hcHBlZFZhbHVlIiwiZ2V0RmlsdGVyTWFwcGVkVmFsdWUiLCJpbnRlcnZhbEJpbnMiLCJnZXRCaW5UaHJlc2hvbGRzIiwiaWR4IiwidGltZUludGVydmFsIiwiaW50ZXJ2YWxUb0Z1bmN0aW9uIiwiX2RvbWFpbiIsIl9zbGljZWRUb0FycmF5MiIsInQwIiwidDEiLCJmbG9vciIsImdldFRpbWUiLCJjZWlsaW5nIiwiY2VpbCIsImR1cmF0aW9uRGF5IiwiYmluVGhyZXNob2xkcyIsInJhbmdlIiwibW9tZW50IiwidXRjIiwidmFsdWVPZiIsImxhc3RTdGVwIiwib2Zmc2V0Iiwic2tpcEluZGV4ZXMiLCJnZXRTa2lwSW5kZXhlcyIsIl9kYXRhc2V0JGdwdUZpbHRlciIsImdwdUZpbHRlciIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJmaWx0ZXJSYW5nZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJmaWx0ZXJlZEluZGV4IiwiZ2V0RmlsdGVyVmFsdWUiLCJkYXRhQ29udGFpbmVyIiwiYWxsQ2hhbm5lbHMiLCJfIiwiaSIsInNraXBBbGwiLCJpbmNsdWRlcyIsImZpbHRlckRhdGEiLCJnZXRGaWx0ZXJEYXRhRnVuYyIsImdwdUZpbHRlcnMiLCJ2YWx1ZUluZGV4IiwiZmluZEluZGV4IiwiaWQiLCJmaWx0ZXJDb2x1bW4iLCJyZWR1Y2UiLCJhY2N1IiwiaXRlbSIsInNraXBzIiwiaW5kZXgiLCJldmVyeSIsInZhbCIsInZhbGlkQmluIiwic25hcFRvTWFya3MiLCJtYXJrcyIsImJpc2VjdExlZnQiLCJub3JtYWxpemVWYWx1ZSIsIm1pblZhbHVlIiwic3RlcCIsInJvdW5kVmFsVG9TdGVwIiwiaXNQZXJjZW50RmllbGQiLCJmaWVsZCIsIm1ldGFkYXRhIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJ1cGRhdGVBZ2dyZWdhdGlvbkJ5RmllbGQiLCJhZ2dyZWdhdGlvbiIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiYXZlcmFnZSIsImdldEFncmVnYXRpb25UeXBlIiwiZ2V0QWdncmVnYXRpb25BY2Nlc3NvciIsImZpZWxkcyIsIm51bWVyYXRvcklkeCIsImRlbm9taW5hdG9ySWR4IiwiZ2V0TnVtZXJhdG9yIiwidmFsdWVBdCIsImdldERlbm9taW5hdG9yIiwiZ2V0VmFsdWVBZ2dyRnVuYyIsImV4cG9ydHMiLCJkYXRhc2V0RmllbGQiLCJmaW5kIiwiYWdncmVnYXRlIiwiZ2V0QWdncmVnYXRpb25PcHRpb3NuQmFzZWRPbkZpZWxkIiwiVElNRV9BR0dSRUdBVElPTiIsIl9yZWYiLCJzdW0iLCJnZXREZWx0YSIsInkiLCJsYXN0QmluIiwiZGVsdGEiLCJwY3QiLCJnZXRQY3RDaGFuZ2UiLCJ5MCIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0TGluZUNoYXJ0IiwiX3RpbWVCaW5zIiwieUF4aXMiLCJwbG90VHlwZSIsImxpbmVDaGFydCIsInNlcmllc0RhdGFJZCIsImlzRXF1YWwiLCJnZXRZVmFsdWUiLCJpbml0Iiwic2VyaWVzIiwieCIsInlEb21haW4iLCJleHRlbnQiLCJkIiwieERvbWFpbiIsInNwbGl0Iiwic3BsaXRTZXJpZXMiLCJhZ2dyTmFtZSIsIkFHR1JFR0FUSU9OX05BTUUiLCJ0aXRsZSIsImNvbmNhdCIsImZpZWxkVHlwZSIsInR5cGUiLCJhbGxUaW1lIiwibGluZXMiLCJ0ZW1wIiwibm90TnVsbG9yVW5kZWZpbmVkIiwibWFya2VycyIsImFkanVzdFZhbHVlVG9BbmltYXRpb25XaW5kb3ciLCJzdGF0ZSIsIl9maWx0ZXIkdmFsdWUiLCJ2YWx1ZTAiLCJ2YWx1ZTEiLCJhbmltYXRpb25XaW5kb3ciLCJnZXRJbml0aWFsSW50ZXJ2YWwiLCJkYXRhc2V0QmlucyIsInZhbDAiLCJ2YWwxIiwiQU5JTUFUSU9OX1dJTkRPVyIsImluZGV4T2YiLCJOYU4iLCJ1cGRhdGVkRmlsdGVyIiwiZ2V0RmlsdGVyUGxvdENvbG9yc0J5RGF0YUlkIiwib2xkQ29sb3JzQnlEYXRhSWQiLCJjb2xvcnNCeURhdGFJZCIsIl9pdGVyYXRvciIsIl9zdGVwIiwicmdiVG9IZXgiLCJjb2xvciIsImVyciIsInVwZGF0ZVRpbWVGaWx0ZXJQbG90VHlwZSIsIm5leHRGaWx0ZXIiLCJuZXh0UGxvdFR5cGUiLCJfdHlwZW9mMiIsImdldERlZmF1bHRQbG90VHlwZSIsIlBMT1RfVFlQRVMiLCJoaXN0b2dyYW0iLCJnZXRSYW5nZUZpbHRlckJpbnMiLCJhY2MiLCJkYXRhc2V0SWR4IiwiX2ZpbHRlciRiaW5zIiwiZmllbGROYW1lIiwiZ2V0Q29sdW1uRmllbGQiLCJ1cGRhdGVSYW5nZUZpbHRlclBsb3RUeXBlIiwiQklOUyIsImdldENoYXJ0VGl0bGUiLCJ5QXhpc05hbWUiLCJkaXNwbGF5TmFtZSIsImNhcGl0YWxpemVGaXJzdExldHRlciIsImRlZmF1bHRUaW1lRm9ybWF0IiwiZ2V0RGVmYXVsdFRpbWVGb3JtYXQiXSwic291cmNlcyI6WyIuLi9zcmMvcGxvdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2Jpc2VjdExlZnQsIGV4dGVudCwgaGlzdG9ncmFtIGFzIGQzSGlzdG9ncmFtLCB0aWNrc30gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoLmlzZXF1YWwnO1xuaW1wb3J0IHtnZXRGaWx0ZXJNYXBwZWRWYWx1ZSwgZ2V0SW5pdGlhbEludGVydmFsLCBpbnRlcnZhbFRvRnVuY3Rpb259IGZyb20gJy4vdGltZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBCaW4sXG4gIFRpbWVCaW5zLFxuICBNaWxsaXNlY29uZCxcbiAgVGltZVJhbmdlRmlsdGVyLFxuICBSYW5nZUZpbHRlcixcbiAgUGxvdFR5cGUsXG4gIEZpbHRlcixcbiAgTGluZUNoYXJ0LFxuICBGaWVsZCxcbiAgVmFsdWVPZixcbiAgTGluZURhdHVtXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7XG4gIEFOSU1BVElPTl9XSU5ET1csXG4gIEJJTlMsXG4gIGR1cmF0aW9uRGF5LFxuICBUSU1FX0FHR1JFR0FUSU9OLFxuICBBR0dSRUdBVElPTl9UWVBFUyxcbiAgUExPVF9UWVBFUyxcbiAgQWdncmVnYXRpb25UeXBlc1xufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7aXNOdW1iZXIsIHJvdW5kVmFsVG9TdGVwfSBmcm9tICcuL2RhdGEtdXRpbHMnO1xuaW1wb3J0IHthZ2dyZWdhdGUsIEFHR1JFR0FUSU9OX05BTUV9IGZyb20gJy4vYWdncmVnYXRpb24nO1xuaW1wb3J0IHtjYXBpdGFsaXplRmlyc3RMZXR0ZXJ9IGZyb20gJy4vc3RyaW5ncyc7XG5pbXBvcnQge2dldERlZmF1bHRUaW1lRm9ybWF0fSBmcm9tICcuL2Zvcm1hdCc7XG5pbXBvcnQge3JnYlRvSGV4fSBmcm9tICcuL2NvbG9yLXV0aWxzJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLic7XG5pbXBvcnQge0tlcGxlclRhYmxlTW9kZWx9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBUT0RPIGtlcGxlci10YWJsZSBtb2R1bGUgaXNuJ3QgYWNjZXNzaWJsZSBmcm9tIHV0aWxzLiBBZGQgY29tcGF0aWJsZSBpbnRlcmZhY2UgdG8gdHlwZXNcbnR5cGUgRGF0YXNldHMgPSBhbnk7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB0aHJlc2hvbGRzXG4gKiBAcGFyYW0gdmFsdWVzXG4gKiBAcGFyYW0gaW5kZXhlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtRnJvbVRocmVzaG9sZChcbiAgdGhyZXNob2xkczogbnVtYmVyW10sXG4gIHZhbHVlczogbnVtYmVyW10sXG4gIHZhbHVlQWNjZXNzb3I/OiAoZDogdW5rbm93bikgPT4gbnVtYmVyLFxuICBmaWx0ZXJFbXB0eUJpbnMgPSB0cnVlXG4pOiBCaW5bXSB7XG4gIGNvbnN0IGdldEJpbnMgPSBkM0hpc3RvZ3JhbSgpXG4gICAgLmRvbWFpbihbdGhyZXNob2xkc1swXSwgdGhyZXNob2xkc1t0aHJlc2hvbGRzLmxlbmd0aCAtIDFdXSlcbiAgICAudGhyZXNob2xkcyh0aHJlc2hvbGRzKTtcblxuICBpZiAodmFsdWVBY2Nlc3Nvcikge1xuICAgIGdldEJpbnMudmFsdWUodmFsdWVBY2Nlc3Nvcik7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGJpbnMgPSBnZXRCaW5zKHZhbHVlcykubWFwKGJpbiA9PiAoe1xuICAgIGNvdW50OiBiaW4ubGVuZ3RoLFxuICAgIGluZGV4ZXM6IGJpbixcbiAgICB4MDogYmluLngwLFxuICAgIHgxOiBiaW4ueDFcbiAgfSkpO1xuXG4gIC8vIGQzLWhpc3RvZ3JhbSBpZ25vcmVzIHRocmVzaG9sZCB2YWx1ZXMgb3V0c2lkZSB0aGUgZG9tYWluXG4gIC8vIFRoZSBmaXJzdCBiaW4ueDAgaXMgYWx3YXlzIGVxdWFsIHRvIHRoZSBtaW5pbXVtIGRvbWFpbiB2YWx1ZSwgYW5kIHRoZSBsYXN0IGJpbi54MSBpcyBhbHdheXMgZXF1YWwgdG8gdGhlIG1heGltdW0gZG9tYWluIHZhbHVlLlxuXG4gIC8vIGJpbnNbMF0ueDAgPSB0aHJlc2hvbGRzWzBdO1xuICAvLyBiaW5zW2JpbnMubGVuZ3RoIC0gMV0ueDEgPSB0aHJlc2hvbGRzW3RocmVzaG9sZHMubGVuZ3RoIC0gMV07XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gZmlsdGVyRW1wdHlCaW5zID8gYmlucy5maWx0ZXIoYiA9PiBiLmNvdW50ID4gMCkgOiBiaW5zO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gdmFsdWVzXG4gKiBAcGFyYW0gbnVtQmluc1xuICogQHBhcmFtIHZhbHVlQWNjZXNzb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhpc3RvZ3JhbUZyb21WYWx1ZXMoXG4gIHZhbHVlczogKE1pbGxpc2Vjb25kIHwgbnVsbCB8IG51bWJlcilbXSxcbiAgbnVtQmluczogbnVtYmVyLFxuICB2YWx1ZUFjY2Vzc29yPzogKGQ6IHVua25vd24pID0+IG51bWJlclxuKSB7XG4gIGNvbnN0IGdldEJpbnMgPSBkM0hpc3RvZ3JhbSgpLnRocmVzaG9sZHMobnVtQmlucyk7XG5cbiAgaWYgKHZhbHVlQWNjZXNzb3IpIHtcbiAgICBnZXRCaW5zLnZhbHVlKHZhbHVlQWNjZXNzb3IpO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZSBkMy1hcnJheSB0eXBlcyBkb2Vzbid0IG1hdGNoXG4gIHJldHVybiBnZXRCaW5zKHZhbHVlcylcbiAgICAubWFwKGJpbiA9PiAoe1xuICAgICAgY291bnQ6IGJpbi5sZW5ndGgsXG4gICAgICBpbmRleGVzOiBiaW4sXG4gICAgICB4MDogYmluLngwLFxuICAgICAgeDE6IGJpbi54MVxuICAgIH0pKVxuICAgIC5maWx0ZXIoYiA9PiB7XG4gICAgICBjb25zdCB7eDAsIHgxfSA9IGI7XG4gICAgICByZXR1cm4gaXNOdW1iZXIoeDApICYmIGlzTnVtYmVyKHgxKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGRvbWFpblxuICogQHBhcmFtIHZhbHVlc1xuICogQHBhcmFtIG51bUJpbnNcbiAqIEBwYXJhbSB2YWx1ZUFjY2Vzc29yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaXN0b2dyYW1Gcm9tRG9tYWluKFxuICBkb21haW46IFtudW1iZXIsIG51bWJlcl0sXG4gIHZhbHVlczogKE1pbGxpc2Vjb25kIHwgbnVsbCB8IG51bWJlcilbXSxcbiAgbnVtQmluczogbnVtYmVyLFxuICB2YWx1ZUFjY2Vzc29yPzogKGQ6IHVua25vd24pID0+IG51bWJlclxuKTogQmluW10ge1xuICBjb25zdCBnZXRCaW5zID0gZDNIaXN0b2dyYW0oKS50aHJlc2hvbGRzKHRpY2tzKGRvbWFpblswXSwgZG9tYWluWzFdLCBudW1CaW5zKSkuZG9tYWluKGRvbWFpbik7XG4gIGlmICh2YWx1ZUFjY2Vzc29yKSB7XG4gICAgZ2V0Qmlucy52YWx1ZSh2YWx1ZUFjY2Vzc29yKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmUgZDMtYXJyYXkgdHlwZXMgZG9lc24ndCBtYXRjaFxuICByZXR1cm4gZ2V0Qmlucyh2YWx1ZXMpLm1hcChiaW4gPT4gKHtcbiAgICBjb3VudDogYmluLmxlbmd0aCxcbiAgICBpbmRleGVzOiBiaW4sXG4gICAgeDA6IGJpbi54MCxcbiAgICB4MTogYmluLngxXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBpbnRlcnZhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZUJpbnMoXG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyLFxuICBkYXRhc2V0czogRGF0YXNldHMsXG4gIGludGVydmFsOiBQbG90VHlwZVsnaW50ZXJ2YWwnXVxuKTogVGltZUJpbnMge1xuICBsZXQgYmlucyA9IGZpbHRlci50aW1lQmlucyB8fCB7fTtcblxuICBmaWx0ZXIuZGF0YUlkLmZvckVhY2goKGRhdGFJZCwgZGF0YUlkSWR4KSA9PiB7XG4gICAgLy8gcmV1c2UgYmlucyBpZiBmaWx0ZXJEYXRhIGRpZCBub3QgY2hhbmdlXG4gICAgaWYgKGJpbnNbZGF0YUlkXSAmJiBiaW5zW2RhdGFJZF1baW50ZXJ2YWxdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgLy8gZG8gbm90IGFwcGx5IGN1cnJlbnQgZmlsdGVyXG4gICAgY29uc3QgaW5kZXhlcyA9IHJ1bkdwdUZpbHRlckZvclBsb3QoZGF0YXNldCwgZmlsdGVyKTtcblxuICAgIGJpbnMgPSB7XG4gICAgICAuLi5iaW5zLFxuICAgICAgW2RhdGFJZF06IHtcbiAgICAgICAgLi4uYmluc1tkYXRhSWRdLFxuICAgICAgICBbaW50ZXJ2YWxdOiBiaW5CeVRpbWUoaW5kZXhlcywgZGF0YXNldCwgaW50ZXJ2YWwsIGZpbHRlcilcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4gYmlucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbkJ5VGltZShpbmRleGVzLCBkYXRhc2V0LCBpbnRlcnZhbCwgZmlsdGVyKSB7XG4gIC8vIGdwdUZpbHRlcnMgbmVlZCB0byBiZSBhcHBseSB0byBmaWx0ZXJlZEluZGV4XG4gIGNvbnN0IG1hcHBlZFZhbHVlID0gZ2V0RmlsdGVyTWFwcGVkVmFsdWUoZGF0YXNldCwgZmlsdGVyKTtcbiAgaWYgKCFtYXBwZWRWYWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGludGVydmFsQmlucyA9IGdldEJpblRocmVzaG9sZHMoaW50ZXJ2YWwsIGZpbHRlci5kb21haW4pO1xuICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gaWR4ID0+IG1hcHBlZFZhbHVlW2lkeF07XG4gIGNvbnN0IGJpbnMgPSBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkKGludGVydmFsQmlucywgaW5kZXhlcywgdmFsdWVBY2Nlc3Nvcik7XG5cbiAgcmV0dXJuIGJpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCaW5UaHJlc2hvbGRzKGludGVydmFsOiBzdHJpbmcsIGRvbWFpbjogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHRpbWVJbnRlcnZhbCA9IGludGVydmFsVG9GdW5jdGlvbihpbnRlcnZhbCk7XG4gIGNvbnN0IFt0MCwgdDFdID0gZG9tYWluO1xuICBjb25zdCBmbG9vciA9IHRpbWVJbnRlcnZhbC5mbG9vcih0MCkuZ2V0VGltZSgpO1xuICBjb25zdCBjZWlsaW5nID0gdGltZUludGVydmFsLmNlaWwodDEpLmdldFRpbWUoKTtcblxuICBpZiAoIXRpbWVJbnRlcnZhbCkge1xuICAgIC8vIGlmIHRpbWUgaW50ZXJ2YWwgaXMgbm90IGRlZmluZWRcbiAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuXG4gICAgcmV0dXJuIFt0MCwgdDAgKyBkdXJhdGlvbkRheV07XG4gIH1cbiAgY29uc3QgYmluVGhyZXNob2xkcyA9IHRpbWVJbnRlcnZhbC5yYW5nZShmbG9vciwgY2VpbGluZyArIDEpLm1hcCh0ID0+IG1vbWVudC51dGModCkudmFsdWVPZigpKTtcbiAgY29uc3QgbGFzdFN0ZXAgPSBiaW5UaHJlc2hvbGRzW2JpblRocmVzaG9sZHMubGVuZ3RoIC0gMV07XG4gIGlmIChsYXN0U3RlcCA9PT0gdDEpIHtcbiAgICAvLyB3aGVuIGxhc3Qgc3RlcCBlcXVhbCB0byBkb21haW4gbWF4LCBhZGQgb25lIG1vcmUgc3RlcFxuICAgIGJpblRocmVzaG9sZHMucHVzaChtb21lbnQudXRjKHRpbWVJbnRlcnZhbC5vZmZzZXQobGFzdFN0ZXApKS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgcmV0dXJuIGJpblRocmVzaG9sZHM7XG59XG5cbi8qKlxuICogUnVuIEdQVSBmaWx0ZXIgb24gY3VycmVudCBmaWx0ZXIgcmVzdWx0IHRvIGdlbmVyYXRlIGluZGV4ZXMgZm9yIHBsb3RpbmcgY2hhcnRcbiAqIFNraXAgcnV1bmluZyBmb3IgdGhlIHNhbWUgZmllbGRcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5HcHVGaWx0ZXJGb3JQbG90PEsgZXh0ZW5kcyBLZXBsZXJUYWJsZU1vZGVsPEssIEw+LCBMPihcbiAgZGF0YXNldDogSyxcbiAgZmlsdGVyPzogRmlsdGVyXG4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHNraXBJbmRleGVzID0gZ2V0U2tpcEluZGV4ZXMoZGF0YXNldCwgZmlsdGVyKTtcblxuICBjb25zdCB7XG4gICAgZ3B1RmlsdGVyOiB7ZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycywgZmlsdGVyUmFuZ2UsIGZpbHRlclZhbHVlQWNjZXNzb3J9LFxuICAgIGZpbHRlcmVkSW5kZXhcbiAgfSA9IGRhdGFzZXQ7XG4gIGNvbnN0IGdldEZpbHRlclZhbHVlID0gZmlsdGVyVmFsdWVBY2Nlc3NvcihkYXRhc2V0LmRhdGFDb250YWluZXIpKCk7XG5cbiAgY29uc3QgYWxsQ2hhbm5lbHMgPSBPYmplY3Qua2V5cyhmaWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzKVxuICAgIC5tYXAoKF8sIGkpID0+IGkpXG4gICAgLmZpbHRlcihpID0+IE9iamVjdC52YWx1ZXMoZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycylbaV0pO1xuICBjb25zdCBza2lwQWxsID0gIWFsbENoYW5uZWxzLmZpbHRlcihpID0+ICFza2lwSW5kZXhlcy5pbmNsdWRlcyhpKSkubGVuZ3RoO1xuICBpZiAoc2tpcEFsbCkge1xuICAgIHJldHVybiBmaWx0ZXJlZEluZGV4O1xuICB9XG5cbiAgY29uc3QgZmlsdGVyRGF0YSA9IGdldEZpbHRlckRhdGFGdW5jKFxuICAgIGZpbHRlclJhbmdlLFxuICAgIGdldEZpbHRlclZhbHVlLFxuICAgIGRhdGFzZXQuZGF0YUNvbnRhaW5lcixcbiAgICBza2lwSW5kZXhlc1xuICApO1xuXG4gIHJldHVybiBmaWx0ZXJlZEluZGV4LmZpbHRlcihmaWx0ZXJEYXRhKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2tpcEluZGV4ZXMoZGF0YXNldCwgZmlsdGVyKSB7XG4gIC8vIGFycmF5IG9mIGdwdSBmaWx0ZXIgbmFtZXNcbiAgaWYgKCFmaWx0ZXIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgZ3B1RmlsdGVycyA9IE9iamVjdC52YWx1ZXMoZGF0YXNldC5ncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycykgYXMgKHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0gfCBudWxsKVtdO1xuICBjb25zdCB2YWx1ZUluZGV4ID0gZmlsdGVyLmRhdGFJZC5maW5kSW5kZXgoaWQgPT4gaWQgPT09IGRhdGFzZXQuaWQpO1xuICBjb25zdCBmaWx0ZXJDb2x1bW4gPSBmaWx0ZXIubmFtZVt2YWx1ZUluZGV4XTtcblxuICByZXR1cm4gZ3B1RmlsdGVycy5yZWR1Y2UoKGFjY3UsIGl0ZW0sIGlkeCkgPT4ge1xuICAgIGlmIChpdGVtICYmIGZpbHRlckNvbHVtbiA9PT0gaXRlbS5uYW1lKSB7XG4gICAgICBhY2N1LnB1c2goaWR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3U7XG4gIH0sIFtdIGFzIG51bWJlcltdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlckRhdGFGdW5jKFxuICBmaWx0ZXJSYW5nZSxcbiAgZ2V0RmlsdGVyVmFsdWUsXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHNraXBzXG4pIHtcbiAgcmV0dXJuIGluZGV4ID0+XG4gICAgZ2V0RmlsdGVyVmFsdWUoe2luZGV4fSkuZXZlcnkoXG4gICAgICAodmFsLCBpKSA9PiBza2lwcy5pbmNsdWRlcyhpKSB8fCAodmFsID49IGZpbHRlclJhbmdlW2ldWzBdICYmIHZhbCA8PSBmaWx0ZXJSYW5nZVtpXVsxXSlcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRCaW4oYikge1xuICByZXR1cm4gYi54MCAhPT0gdW5kZWZpbmVkICYmIGIueDEgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBVc2UgaW4gc2xpZGVyLCBnaXZlbiBhIG51bWJlciBhbmQgYW4gYXJyYXkgb2YgbnVtYmVycywgcmV0dXJuIHRoZSBuZWFycyBudW1iZXIgZnJvbSB0aGUgYXJyYXkuXG4gKiBUYWtlcyBhIHZhbHVlLCB0aW1lc3RlcHMgYW5kIHJldHVybiB0aGUgYWN0dWFsIHN0ZXAuXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc25hcFRvTWFya3ModmFsdWU6IG51bWJlciwgbWFya3M6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgLy8gYWx3YXlzIHVzZSBiaW4geDBcbiAgaWYgKCFtYXJrcy5sZW5ndGgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGxvb2tpbmcgYXQgdGhlIHVzYWdlIG51bGwgcmV0dXJuIHZhbHVlIGlzbid0IGV4cGVjdGVkIGFuZCByZXF1aXJlcyBleHRyYSBoYW5kbGluZyBpbiBhIGxvdCBvZiBwbGFjZXNcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBpID0gYmlzZWN0TGVmdChtYXJrcywgdmFsdWUpO1xuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBtYXJrc1tpXTtcbiAgfSBlbHNlIGlmIChpID09PSBtYXJrcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbWFya3NbaSAtIDFdO1xuICB9XG4gIGNvbnN0IGlkeCA9IG1hcmtzW2ldIC0gdmFsdWUgPCB2YWx1ZSAtIG1hcmtzW2kgLSAxXSA/IGkgOiBpIC0gMTtcbiAgcmV0dXJuIG1hcmtzW2lkeF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWwsIG1pblZhbHVlLCBzdGVwLCBtYXJrcykge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQZXJjZW50RmllbGQoZmllbGQpIHtcbiAgcmV0dXJuIGZpZWxkLm1ldGFkYXRhICYmIGZpZWxkLm1ldGFkYXRhLm51bWVyYXRvciAmJiBmaWVsZC5tZXRhZGF0YS5kZW5vbWluYXRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUFnZ3JlZ2F0aW9uQnlGaWVsZChmaWVsZDogRmllbGQsIGFnZ3JlZ2F0aW9uOiBWYWx1ZU9mPEFnZ3JlZ2F0aW9uVHlwZXM+KSB7XG4gIC8vIHNob3VsZG4ndCBhcHBseSBzdW0gdG8gcGVyY2VudCBmaWVsZSB0eXBlXG4gIC8vIGRlZmF1bHQgYWdncmVnYXRpb24gaXMgYXZlcmFnZVxuICByZXR1cm4gZmllbGQgJiYgaXNQZXJjZW50RmllbGQoZmllbGQpXG4gICAgPyBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXG4gICAgOiBhZ2dyZWdhdGlvbiB8fCBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlO1xufVxuXG5jb25zdCBnZXRBZ3JlZ2F0aW9uVHlwZSA9IChmaWVsZCwgYWdncmVnYXRpb24pID0+IHtcbiAgaWYgKGlzUGVyY2VudEZpZWxkKGZpZWxkKSkge1xuICAgIHJldHVybiAnbWVhbl9vZl9wZXJjZW50JztcbiAgfVxuICByZXR1cm4gYWdncmVnYXRpb247XG59O1xuXG5jb25zdCBnZXRBZ2dyZWdhdGlvbkFjY2Vzc29yID0gKGZpZWxkLCBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBmaWVsZHMpID0+IHtcbiAgaWYgKGlzUGVyY2VudEZpZWxkKGZpZWxkKSkge1xuICAgIGNvbnN0IG51bWVyYXRvcklkeCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWUgPT09IGZpZWxkLm1ldGFkYXRhLm51bWVyYXRvcik7XG4gICAgY29uc3QgZGVub21pbmF0b3JJZHggPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lID09PSBmaWVsZC5tZXRhZGF0YS5kZW5vbWluYXRvcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0TnVtZXJhdG9yOiBpID0+IGRhdGFDb250YWluZXIudmFsdWVBdChpLCBudW1lcmF0b3JJZHgpLFxuICAgICAgZ2V0RGVub21pbmF0b3I6IGkgPT4gZGF0YUNvbnRhaW5lci52YWx1ZUF0KGksIGRlbm9taW5hdG9ySWR4KVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gaSA9PiBmaWVsZC52YWx1ZUFjY2Vzc29yKHtpbmRleDogaX0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZhbHVlQWdnckZ1bmMgPSAoXG4gIGZpZWxkOiBGaWVsZCB8IHN0cmluZyB8IG51bGwsXG4gIGFnZ3JlZ2F0aW9uOiBzdHJpbmcsXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlTW9kZWw8YW55LCBhbnk+XG4pOiAoKGJpbjogQmluKSA9PiBudW1iZXIpID0+IHtcbiAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0O1xuXG4gIC8vIFRoZSBwYXNzZWQtaW4gZmllbGQgbWlnaHQgbm90IGhhdmUgYWxsIHRoZSBmaWVsZHMgc2V0IChlLmcuIHZhbHVlQWNjZXNzb3IpXG4gIGNvbnN0IGRhdGFzZXRGaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgIGYgPT4gZmllbGQgJiYgKGYubmFtZSA9PT0gZmllbGQgfHwgZi5uYW1lID09PSAoZmllbGQgYXMgRmllbGQpLm5hbWUpXG4gICk7XG5cbiAgcmV0dXJuIGRhdGFzZXRGaWVsZCAmJiBhZ2dyZWdhdGlvblxuICAgID8gYmluID0+XG4gICAgICAgIGFnZ3JlZ2F0ZShcbiAgICAgICAgICBiaW4uaW5kZXhlcyxcbiAgICAgICAgICBnZXRBZ3JlZ2F0aW9uVHlwZShkYXRhc2V0RmllbGQsIGFnZ3JlZ2F0aW9uKSxcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGNhbiByZXR1cm4ge2dldE51bWVyYXRvciwgZ2V0RGVub21pbmF0b3J9XG4gICAgICAgICAgZ2V0QWdncmVnYXRpb25BY2Nlc3NvcihkYXRhc2V0RmllbGQsIGRhdGFDb250YWluZXIsIGZpZWxkcylcbiAgICAgICAgKVxuICAgIDogYmluID0+IGJpbi5jb3VudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBZ2dyZWdhdGlvbk9wdGlvc25CYXNlZE9uRmllbGQgPSBmaWVsZCA9PiB7XG4gIGlmIChpc1BlcmNlbnRGaWVsZChmaWVsZCkpIHtcbiAgICAvLyBkb24ndCBzaG93IHN1bVxuICAgIHJldHVybiBUSU1FX0FHR1JFR0FUSU9OLmZpbHRlcigoe2lkfSkgPT4gaWQgIT09IEFHR1JFR0FUSU9OX1RZUEVTLnN1bSk7XG4gIH1cbiAgcmV0dXJuIFRJTUVfQUdHUkVHQVRJT047XG59O1xuXG5mdW5jdGlvbiBnZXREZWx0YShcbiAgYmluczogTGluZURhdHVtW10sXG4gIHk6IG51bWJlcixcbiAgaW50ZXJ2YWw6IFBsb3RUeXBlWydpbnRlcnZhbCddXG4pOiBQYXJ0aWFsPExpbmVEYXR1bT4gJiB7ZGVsdGE6ICdsYXN0JzsgcGN0OiBudW1iZXIgfCBudWxsfSB7XG4gIC8vIGlmIChXT1dbaW50ZXJ2YWxdKSByZXR1cm4gZ2V0V293KGJpbnMsIHksIGludGVydmFsKTtcbiAgY29uc3QgbGFzdEJpbiA9IGJpbnNbYmlucy5sZW5ndGggLSAxXTtcblxuICByZXR1cm4ge1xuICAgIGRlbHRhOiAnbGFzdCcsXG4gICAgcGN0OiBsYXN0QmluID8gZ2V0UGN0Q2hhbmdlKHksIGxhc3RCaW4ueSkgOiBudWxsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQY3RDaGFuZ2UoeTogdW5rbm93biwgeTA6IHVua25vd24pOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKE51bWJlci5pc0Zpbml0ZSh5KSAmJiBOdW1iZXIuaXNGaW5pdGUoeTApICYmIHkwICE9PSAwKSB7XG4gICAgcmV0dXJuICgoeSBhcyBudW1iZXIpIC0gKHkwIGFzIG51bWJlcikpIC8gKHkwIGFzIG51bWJlcik7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhc2V0c1xuICogQHBhcmFtIGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGluZUNoYXJ0KGRhdGFzZXRzOiBEYXRhc2V0cywgZmlsdGVyOiBGaWx0ZXIpOiBMaW5lQ2hhcnQge1xuICBjb25zdCB7ZGF0YUlkLCB5QXhpcywgcGxvdFR5cGUsIGxpbmVDaGFydH0gPSBmaWx0ZXI7XG4gIGNvbnN0IHthZ2dyZWdhdGlvbiwgaW50ZXJ2YWx9ID0gcGxvdFR5cGU7XG4gIGNvbnN0IHNlcmllc0RhdGFJZCA9IGRhdGFJZFswXTtcbiAgY29uc3QgYmlucyA9IChmaWx0ZXIgYXMgVGltZVJhbmdlRmlsdGVyKS50aW1lQmlucz8uW3Nlcmllc0RhdGFJZF0/LltpbnRlcnZhbF07XG5cbiAgaWYgKFxuICAgIGxpbmVDaGFydCAmJlxuICAgIGxpbmVDaGFydC5hZ2dyZWdhdGlvbiA9PT0gYWdncmVnYXRpb24gJiZcbiAgICBsaW5lQ2hhcnQuaW50ZXJ2YWwgPT09IGludGVydmFsICYmXG4gICAgbGluZUNoYXJ0LnlBeGlzID09PSB5QXhpcz8ubmFtZSAmJlxuICAgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHZhbGlkYXRlIGJpbnMgYmVjYXVzZSBvZiBjcm9zcyBmaWx0ZXIgZGF0YSBjaGFuZ2VzXG4gICAgaXNFcXVhbChiaW5zLCBsaW5lQ2hhcnQ/LmJpbnMpXG4gICkge1xuICAgIC8vIGRvbid0IHVwZGF0ZSBsaW5lQ2hhcnQgaWYgcGxvdFR5cGUgaGFzbid0IGNoYW5nZVxuICAgIHJldHVybiBsaW5lQ2hhcnQ7XG4gIH1cblxuICBjb25zdCBkYXRhc2V0ID0gZGF0YXNldHNbc2VyaWVzRGF0YUlkXTtcbiAgY29uc3QgZ2V0WVZhbHVlID0gZ2V0VmFsdWVBZ2dyRnVuYyh5QXhpcywgYWdncmVnYXRpb24sIGRhdGFzZXQpO1xuXG4gIGNvbnN0IGluaXQ6IExpbmVEYXR1bVtdID0gW107XG4gIGNvbnN0IHNlcmllcyA9IChiaW5zIHx8IFtdKS5yZWR1Y2UoKGFjY3UsIGJpbiwgaSkgPT4ge1xuICAgIGNvbnN0IHkgPSBnZXRZVmFsdWUoYmluKTtcbiAgICBjb25zdCBkZWx0YSA9IGdldERlbHRhKGFjY3UsIHksIGludGVydmFsKTtcbiAgICBhY2N1LnB1c2goe1xuICAgICAgeDogYmluLngwLFxuICAgICAgeSxcbiAgICAgIC4uLmRlbHRhXG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3U7XG4gIH0sIGluaXQpO1xuXG4gIGNvbnN0IHlEb21haW4gPSBleHRlbnQ8e3k6IGFueX0+KHNlcmllcywgZCA9PiBkLnkpO1xuICBjb25zdCB4RG9tYWluID0gYmlucyA/IFtiaW5zWzBdLngwLCBiaW5zW2JpbnMubGVuZ3RoIC0gMV0ueDFdIDogW107XG5cbiAgLy8gdHJlYXQgbWlzc2luZyBkYXRhIGFzIGFub3RoZXIgc2VyaWVzXG4gIGNvbnN0IHNwbGl0ID0gc3BsaXRTZXJpZXMoc2VyaWVzKTtcbiAgY29uc3QgYWdnck5hbWUgPSBBR0dSRUdBVElPTl9OQU1FW2FnZ3JlZ2F0aW9uXTtcblxuICByZXR1cm4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB5RG9tYWluLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB4RG9tYWluLFxuICAgIGludGVydmFsLFxuICAgIGFnZ3JlZ2F0aW9uLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXJpZXM6IHNwbGl0LFxuICAgIHRpdGxlOiBgJHthZ2dyTmFtZX0keycgb2YgJ30ke3lBeGlzID8geUF4aXMubmFtZSA6ICdDb3VudCd9YCxcbiAgICBmaWVsZFR5cGU6IHlBeGlzID8geUF4aXMudHlwZSA6ICdpbnRlZ2VyJyxcbiAgICB5QXhpczogeUF4aXMgPyB5QXhpcy5uYW1lIDogbnVsbCxcbiAgICBhbGxUaW1lOiB7XG4gICAgICB0aXRsZTogYEFsbCBUaW1lIEF2ZXJhZ2VgLFxuICAgICAgdmFsdWU6IGFnZ3JlZ2F0ZShzZXJpZXMsIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsIGQgPT4gZC55KVxuICAgIH0sXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBiaW5zIGlzIEJpbnNbXSwgbm90IGEgQmlucyBtYXAuIFJlZmFjdG9yIHRvIHVzZSBjb3JyZWN0IHR5cGVzLlxuICAgIGJpbnNcbiAgfTtcbn1cblxuLy8gc3BsaXQgaW50byBtdWx0aXBsZSBzZXJpZXMgd2hlbiBzZWUgbWlzc2luZyBkYXRhXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRTZXJpZXMoc2VyaWVzKSB7XG4gIGNvbnN0IGxpbmVzOiBhbnlbXSA9IFtdO1xuICBsZXQgdGVtcDogYW55W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBkID0gc2VyaWVzW2ldO1xuICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKGQueSkgJiYgdGVtcC5sZW5ndGgpIHtcbiAgICAgIC8vIGVuZHMgdGVtcFxuICAgICAgbGluZXMucHVzaCh0ZW1wKTtcbiAgICAgIHRlbXAgPSBbXTtcbiAgICB9IGVsc2UgaWYgKG5vdE51bGxvclVuZGVmaW5lZChkLnkpKSB7XG4gICAgICB0ZW1wLnB1c2goZCk7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHNlcmllcy5sZW5ndGggLSAxICYmIHRlbXAubGVuZ3RoKSB7XG4gICAgICBsaW5lcy5wdXNoKHRlbXApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1hcmtlcnMgPSBsaW5lcy5sZW5ndGggPiAxID8gc2VyaWVzLmZpbHRlcihkID0+IG5vdE51bGxvclVuZGVmaW5lZChkLnkpKSA6IFtdO1xuXG4gIHJldHVybiB7bGluZXMsIG1hcmtlcnN9O1xufVxuXG50eXBlIE1pblZpc1N0YXRlRm9yQW5pbWF0aW9uV2luZG93ID0ge1xuICBkYXRhc2V0czogRGF0YXNldHM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VmFsdWVUb0FuaW1hdGlvbldpbmRvdzxTIGV4dGVuZHMgTWluVmlzU3RhdGVGb3JBbmltYXRpb25XaW5kb3c+KFxuICBzdGF0ZTogUyxcbiAgZmlsdGVyOiBUaW1lUmFuZ2VGaWx0ZXJcbikge1xuICBjb25zdCB7XG4gICAgcGxvdFR5cGUsXG4gICAgdmFsdWU6IFt2YWx1ZTAsIHZhbHVlMV0sXG4gICAgYW5pbWF0aW9uV2luZG93XG4gIH0gPSBmaWx0ZXI7XG5cbiAgY29uc3QgaW50ZXJ2YWwgPSBwbG90VHlwZS5pbnRlcnZhbCB8fCBnZXRJbml0aWFsSW50ZXJ2YWwoZmlsdGVyLCBzdGF0ZS5kYXRhc2V0cyk7XG4gIGNvbnN0IGJpbnMgPSBnZXRUaW1lQmlucyhmaWx0ZXIsIHN0YXRlLmRhdGFzZXRzLCBpbnRlcnZhbCk7XG4gIGNvbnN0IGRhdGFzZXRCaW5zID0gYmlucyAmJiBPYmplY3Qua2V5cyhiaW5zKS5sZW5ndGggJiYgT2JqZWN0LnZhbHVlcyhiaW5zKVswXVtpbnRlcnZhbF07XG4gIGNvbnN0IHRocmVzaG9sZHMgPSAoZGF0YXNldEJpbnMgfHwgW10pLm1hcChiID0+IGIueDApO1xuXG4gIGxldCB2YWwwID0gdmFsdWUwO1xuICBsZXQgdmFsMSA9IHZhbHVlMTtcbiAgbGV0IGlkeDtcbiAgaWYgKGFuaW1hdGlvbldpbmRvdyA9PT0gQU5JTUFUSU9OX1dJTkRPVy5pbnRlcnZhbCkge1xuICAgIHZhbDAgPSBzbmFwVG9NYXJrcyh2YWx1ZTEsIHRocmVzaG9sZHMpO1xuICAgIGlkeCA9IHRocmVzaG9sZHMuaW5kZXhPZih2YWwwKTtcbiAgICB2YWwxID0gaWR4ID4gLTEgPyBkYXRhc2V0Qmluc1tpZHhdLngxIDogTmFOO1xuICB9IGVsc2Uge1xuICAgIC8vIGZpdCBjdXJyZW50IHZhbHVlIHRvIHdpbmRvd1xuICAgIHZhbDAgPSBzbmFwVG9NYXJrcyh2YWx1ZTAsIHRocmVzaG9sZHMpO1xuICAgIHZhbDEgPSBzbmFwVG9NYXJrcyh2YWx1ZTEsIHRocmVzaG9sZHMpO1xuXG4gICAgaWYgKHZhbDAgPT09IHZhbDEpIHtcbiAgICAgIGlkeCA9IHRocmVzaG9sZHMuaW5kZXhPZih2YWwwKTtcbiAgICAgIGlmIChpZHggPT09IHRocmVzaG9sZHMubGVuZ3RoIC0gMSkge1xuICAgICAgICB2YWwwID0gdGhyZXNob2xkc1tpZHggLSAxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbDEgPSB0aHJlc2hvbGRzW2lkeCArIDFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRGaWx0ZXIgPSB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHBsb3RUeXBlOiB7XG4gICAgICAuLi5maWx0ZXIucGxvdFR5cGUsXG4gICAgICBpbnRlcnZhbFxuICAgIH0sXG4gICAgdGltZUJpbnM6IGJpbnMsXG4gICAgdmFsdWU6IFt2YWwwLCB2YWwxXVxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVkRmlsdGVyO1xufVxuXG4vKipcbiAqIENyZWF0ZSBvciB1cGRhdGUgY29sb3JzIGZvciBhIGZpbHRlciBwbG90XG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBvbGRDb2xvcnNCeURhdGFJZFxuICovXG5mdW5jdGlvbiBnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQoZmlsdGVyLCBkYXRhc2V0cywgb2xkQ29sb3JzQnlEYXRhSWQpIHtcbiAgbGV0IGNvbG9yc0J5RGF0YUlkID0gb2xkQ29sb3JzQnlEYXRhSWQgfHwge307XG4gIGZvciAoY29uc3QgZGF0YUlkIG9mIGZpbHRlci5kYXRhSWQpIHtcbiAgICBpZiAoIWNvbG9yc0J5RGF0YUlkW2RhdGFJZF0gJiYgZGF0YXNldHNbZGF0YUlkXSkge1xuICAgICAgY29sb3JzQnlEYXRhSWQgPSB7XG4gICAgICAgIC4uLmNvbG9yc0J5RGF0YUlkLFxuICAgICAgICBbZGF0YUlkXTogcmdiVG9IZXgoZGF0YXNldHNbZGF0YUlkXS5jb2xvcilcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBjb2xvcnNCeURhdGFJZDtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIHBsb3RUeXBlXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBkYXRhSWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVRpbWVGaWx0ZXJQbG90VHlwZShcbiAgZmlsdGVyOiBUaW1lUmFuZ2VGaWx0ZXIsXG4gIHBsb3RUeXBlOiBUaW1lUmFuZ2VGaWx0ZXJbJ3Bsb3RUeXBlJ10sXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgZGF0YUlkPzogc3RyaW5nXG4pOiBUaW1lUmFuZ2VGaWx0ZXIge1xuICBsZXQgbmV4dEZpbHRlciA9IGZpbHRlcjtcbiAgbGV0IG5leHRQbG90VHlwZSA9IHBsb3RUeXBlO1xuICBpZiAodHlwZW9mIG5leHRQbG90VHlwZSAhPT0gJ29iamVjdCcgfHwgIW5leHRQbG90VHlwZS5hZ2dyZWdhdGlvbiB8fCAhbmV4dFBsb3RUeXBlLmludGVydmFsKSB7XG4gICAgbmV4dFBsb3RUeXBlID0gZ2V0RGVmYXVsdFBsb3RUeXBlKGZpbHRlciwgZGF0YXNldHMpO1xuICB9XG5cbiAgaWYgKGZpbHRlci5kYXRhSWQubGVuZ3RoID4gMSkge1xuICAgIG5leHRQbG90VHlwZSA9IHtcbiAgICAgIC4uLm5leHRQbG90VHlwZSxcbiAgICAgIGNvbG9yc0J5RGF0YUlkOiBnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQoZmlsdGVyLCBkYXRhc2V0cywgbmV4dFBsb3RUeXBlLmNvbG9yc0J5RGF0YUlkKVxuICAgIH07XG4gIH1cbiAgbmV4dEZpbHRlciA9IHtcbiAgICAuLi5uZXh0RmlsdGVyLFxuICAgIHBsb3RUeXBlOiBuZXh0UGxvdFR5cGVcbiAgfTtcblxuICBjb25zdCBiaW5zID0gZ2V0VGltZUJpbnMobmV4dEZpbHRlciwgZGF0YXNldHMsIG5leHRQbG90VHlwZS5pbnRlcnZhbCk7XG5cbiAgbmV4dEZpbHRlciA9IHtcbiAgICAuLi5uZXh0RmlsdGVyLFxuICAgIHRpbWVCaW5zOiBiaW5zXG4gIH07XG5cbiAgaWYgKHBsb3RUeXBlLnR5cGUgPT09IFBMT1RfVFlQRVMuaGlzdG9ncmFtKSB7XG4gICAgLy8gSGlzdG9ncmFtIGlzIGNhbGN1bGF0ZWQgYW5kIG1lbW9pemVkIGluIHRoZSBjaGFydCBpdHNlbGZcbiAgfSBlbHNlIGlmIChwbG90VHlwZS50eXBlID09PSBQTE9UX1RZUEVTLmxpbmVDaGFydCkge1xuICAgIC8vIHdlIHNob3VsZCBiZSBhYmxlIHRvIG1vdmUgdGhpcyBpbnRvIGl0cyBvd24gY29tcG9uZW50IHNvIHJlYWN0IHdpbGwgZG8gdGhlIHNoYWxsb3cgY29tcGFyaXNvbiBmb3IgdXMuXG4gICAgbmV4dEZpbHRlciA9IHtcbiAgICAgIC4uLm5leHRGaWx0ZXIsXG4gICAgICBsaW5lQ2hhcnQ6IGdldExpbmVDaGFydChkYXRhc2V0cywgbmV4dEZpbHRlcilcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG5leHRGaWx0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5nZUZpbHRlckJpbnMoZmlsdGVyLCBkYXRhc2V0cywgbnVtQmlucykge1xuICBjb25zdCB7ZG9tYWlufSA9IGZpbHRlcjtcbiAgaWYgKCFmaWx0ZXIuZGF0YUlkKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gZmlsdGVyLmRhdGFJZC5yZWR1Y2UoKGFjYywgZGF0YUlkLCBkYXRhc2V0SWR4KSA9PiB7XG4gICAgaWYgKGZpbHRlci5iaW5zPy5bZGF0YUlkXSkge1xuICAgICAgLy8gZG9uJ3QgcmVjYWxjdWxhdGUgYmluc1xuICAgICAgYWNjW2RhdGFJZF0gPSBmaWx0ZXIuYmluc1tkYXRhSWRdO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG4gICAgY29uc3QgZmllbGROYW1lID0gZmlsdGVyLm5hbWVbZGF0YXNldElkeF07XG4gICAgaWYgKGRhdGFJZCAmJiBmaWVsZE5hbWUpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuICAgICAgY29uc3QgZmllbGQgPSBkYXRhc2V0Py5nZXRDb2x1bW5GaWVsZChmaWVsZE5hbWUpO1xuICAgICAgaWYgKGRhdGFzZXQgJiYgZmllbGQpIHtcbiAgICAgICAgY29uc3QgaW5kZXhlcyA9IHJ1bkdwdUZpbHRlckZvclBsb3QoZGF0YXNldCwgZmlsdGVyKTtcbiAgICAgICAgY29uc3QgdmFsdWVBY2Nlc3NvciA9IGluZGV4ID0+IGZpZWxkLnZhbHVlQWNjZXNzb3Ioe2luZGV4fSk7XG4gICAgICAgIGFjY1tkYXRhSWRdID0gaGlzdG9ncmFtRnJvbURvbWFpbihkb21haW4sIGluZGV4ZXMsIG51bUJpbnMsIHZhbHVlQWNjZXNzb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVSYW5nZUZpbHRlclBsb3RUeXBlKFxuICBmaWx0ZXI6IFJhbmdlRmlsdGVyLFxuICBwbG90VHlwZTogUmFuZ2VGaWx0ZXJbJ3Bsb3RUeXBlJ10sXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgZGF0YUlkPzogc3RyaW5nXG4pOiBSYW5nZUZpbHRlciB7XG4gIGNvbnN0IG5leHRGaWx0ZXIgPSB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHBsb3RUeXBlXG4gIH07XG5cbiAgLy8gaWYgKGRhdGFJZCkge1xuICAvLyAgIC8vIGNsZWFyIGJpbnNcbiAgLy8gICBuZXh0RmlsdGVyID0ge1xuICAvLyAgICAgLi4ubmV4dEZpbHRlcixcbiAgLy8gICAgIGJpbnM6IHtcbiAgLy8gICAgICAgLi4ubmV4dEZpbHRlci5iaW5zLFxuICAvLyAgICAgICBbZGF0YUlkXTogbnVsbFxuICAvLyAgICAgfVxuICAvLyAgIH07XG4gIC8vIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmZpbHRlcixcbiAgICBwbG90VHlwZSxcbiAgICBiaW5zOiBnZXRSYW5nZUZpbHRlckJpbnMobmV4dEZpbHRlciwgZGF0YXNldHMsIEJJTlMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFydFRpdGxlKFxuICB5QXhpczoge2Rpc3BsYXlOYW1lPzogc3RyaW5nfSxcbiAgcGxvdFR5cGU6IHthZ2dyZWdhdGlvbjogc3RyaW5nfVxuKTogc3RyaW5nIHtcbiAgY29uc3QgeUF4aXNOYW1lID0geUF4aXM/LmRpc3BsYXlOYW1lO1xuICBjb25zdCB7YWdncmVnYXRpb259ID0gcGxvdFR5cGU7XG5cbiAgaWYgKHlBeGlzTmFtZSkge1xuICAgIHJldHVybiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoYCR7YWdncmVnYXRpb259ICR7eUF4aXNOYW1lfSBvdmVyIFRpbWVgKTtcbiAgfVxuXG4gIHJldHVybiBgQ291bnQgb2YgUm93cyBvdmVyIFRpbWVgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFBsb3RUeXBlKGZpbHRlciwgZGF0YXNldHMpIHtcbiAgY29uc3QgaW50ZXJ2YWwgPSBnZXRJbml0aWFsSW50ZXJ2YWwoZmlsdGVyLCBkYXRhc2V0cyk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lRm9ybWF0ID0gZ2V0RGVmYXVsdFRpbWVGb3JtYXQoaW50ZXJ2YWwpO1xuICByZXR1cm4ge1xuICAgIGludGVydmFsLFxuICAgIGRlZmF1bHRUaW1lRm9ybWF0LFxuICAgIHR5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtLFxuICAgIGFnZ3JlZ2F0aW9uOiBBR0dSRUdBVElPTl9UWVBFUy5zdW1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBY0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBVUEsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsWUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsUUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsT0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsV0FBQSxHQUFBWCxPQUFBO0FBQXVDLFNBQUFZLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FBQSxDQUFBTixDQUFBLE1BQUFFLENBQUEsR0FBQUssMkJBQUEsQ0FBQVAsQ0FBQSxNQUFBQyxDQUFBLElBQUFELENBQUEsdUJBQUFBLENBQUEsQ0FBQVEsTUFBQSxJQUFBTixDQUFBLEtBQUFGLENBQUEsR0FBQUUsQ0FBQSxPQUFBTyxFQUFBLE1BQUFDLENBQUEsWUFBQUEsRUFBQSxlQUFBQyxDQUFBLEVBQUFELENB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
637
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl90aW1lIiwiX21vbWVudCIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfZGF0YVV0aWxzIiwiX2FnZ3JlZ2F0aW9uIiwiX3N0cmluZ3MiLCJfZm9ybWF0IiwiX2NvbG9yVXRpbHMiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJoaXN0b2dyYW1Gcm9tVGhyZXNob2xkIiwidGhyZXNob2xkcyIsInZhbHVlcyIsInZhbHVlQWNjZXNzb3IiLCJmaWx0ZXJFbXB0eUJpbnMiLCJ1bmRlZmluZWQiLCJnZXRCaW5zIiwiZDNIaXN0b2dyYW0iLCJkb21haW4iLCJiaW5zIiwibWFwIiwiYmluIiwiY291bnQiLCJpbmRleGVzIiwieDAiLCJ4MSIsImIiLCJoaXN0b2dyYW1Gcm9tVmFsdWVzIiwibnVtQmlucyIsImlzTnVtYmVyIiwiaGlzdG9ncmFtRnJvbU9yZGluYWwiLCJoaXN0b2dyYW1Gcm9tRG9tYWluIiwidGlja3MiLCJnZXRUaW1lQmlucyIsImRhdGFzZXRzIiwiaW50ZXJ2YWwiLCJ0aW1lQmlucyIsImRhdGFJZCIsImRhdGFJZElkeCIsImRhdGFzZXQiLCJydW5HcHVGaWx0ZXJGb3JQbG90IiwiYmluQnlUaW1lIiwibWFwcGVkVmFsdWUiLCJnZXRGaWx0ZXJNYXBwZWRWYWx1ZSIsImludGVydmFsQmlucyIsImdldEJpblRocmVzaG9sZHMiLCJpZHgiLCJ0aW1lSW50ZXJ2YWwiLCJpbnRlcnZhbFRvRnVuY3Rpb24iLCJfZG9tYWluIiwiX3NsaWNlZFRvQXJyYXkyIiwidDAiLCJ0MSIsImZsb29yIiwiZ2V0VGltZSIsImNlaWxpbmciLCJjZWlsIiwiZHVyYXRpb25EYXkiLCJiaW5UaHJlc2hvbGRzIiwicmFuZ2UiLCJtb21lbnQiLCJ1dGMiLCJ2YWx1ZU9mIiwibGFzdFN0ZXAiLCJvZmZzZXQiLCJza2lwSW5kZXhlcyIsImdldFNraXBJbmRleGVzIiwiX2RhdGFzZXQkZ3B1RmlsdGVyIiwiZ3B1RmlsdGVyIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImZpbHRlclJhbmdlIiwiZmlsdGVyVmFsdWVBY2Nlc3NvciIsImZpbHRlcmVkSW5kZXgiLCJnZXRGaWx0ZXJWYWx1ZSIsImRhdGFDb250YWluZXIiLCJhbGxDaGFubmVscyIsIl8iLCJpIiwic2tpcEFsbCIsImluY2x1ZGVzIiwiZmlsdGVyRGF0YSIsImdldEZpbHRlckRhdGFGdW5jIiwiZ3B1RmlsdGVycyIsInZhbHVlSW5kZXgiLCJmaW5kSW5kZXgiLCJpZCIsImZpbHRlckNvbHVtbiIsInJlZHVjZSIsImFjY3UiLCJpdGVtIiwic2tpcHMiLCJpbmRleCIsImV2ZXJ5IiwidmFsIiwidmFsaWRCaW4iLCJzbmFwVG9NYXJrcyIsIm1hcmtzIiwiYmlzZWN0TGVmdCIsIm5vcm1hbGl6ZVZhbHVlIiwibWluVmFsdWUiLCJzdGVwIiwicm91bmRWYWxUb1N0ZXAiLCJpc1BlcmNlbnRGaWVsZCIsImZpZWxkIiwibWV0YWRhdGEiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsInVwZGF0ZUFnZ3JlZ2F0aW9uQnlGaWVsZCIsImFnZ3JlZ2F0aW9uIiwiQUdHUkVHQVRJT05fVFlQRVMiLCJhdmVyYWdlIiwiZ2V0QWdyZWdhdGlvblR5cGUiLCJnZXRBZ2dyZWdhdGlvbkFjY2Vzc29yIiwiZmllbGRzIiwibnVtZXJhdG9ySWR4IiwiZGVub21pbmF0b3JJZHgiLCJnZXROdW1lcmF0b3IiLCJ2YWx1ZUF0IiwiZ2V0RGVub21pbmF0b3IiLCJnZXRWYWx1ZUFnZ3JGdW5jIiwiZXhwb3J0cyIsImRhdGFzZXRGaWVsZCIsImZpbmQiLCJhZ2dyZWdhdGUiLCJnZXRBZ2dyZWdhdGlvbk9wdGlvc25CYXNlZE9uRmllbGQiLCJUSU1FX0FHR1JFR0FUSU9OIiwiX3JlZiIsInN1bSIsImdldERlbHRhIiwieSIsImxhc3RCaW4iLCJkZWx0YSIsInBjdCIsImdldFBjdENoYW5nZSIsInkwIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJnZXRMaW5lQ2hhcnQiLCJfdGltZUJpbnMiLCJ5QXhpcyIsInBsb3RUeXBlIiwibGluZUNoYXJ0Iiwic2VyaWVzRGF0YUlkIiwiaXNFcXVhbCIsImdldFlWYWx1ZSIsImluaXQiLCJzZXJpZXMiLCJ4IiwieURvbWFpbiIsImV4dGVudCIsImQiLCJ4RG9tYWluIiwic3BsaXQiLCJzcGxpdFNlcmllcyIsImFnZ3JOYW1lIiwiQUdHUkVHQVRJT05fTkFNRSIsInRpdGxlIiwiY29uY2F0IiwiZmllbGRUeXBlIiwidHlwZSIsImFsbFRpbWUiLCJsaW5lcyIsInRlbXAiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJtYXJrZXJzIiwiYWRqdXN0VmFsdWVUb0FuaW1hdGlvbldpbmRvdyIsInN0YXRlIiwiX2ZpbHRlciR2YWx1ZSIsInZhbHVlMCIsInZhbHVlMSIsImFuaW1hdGlvbldpbmRvdyIsImdldEluaXRpYWxJbnRlcnZhbCIsImRhdGFzZXRCaW5zIiwidmFsMCIsInZhbDEiLCJBTklNQVRJT05fV0lORE9XIiwiaW5kZXhPZiIsIk5hTiIsInVwZGF0ZWRGaWx0ZXIiLCJnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQiLCJvbGRDb2xvcnNCeURhdGFJZCIsImNvbG9yc0J5RGF0YUlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJyZ2JUb0hleCIsImNvbG9yIiwiZXJyIiwidXBkYXRlVGltZUZpbHRlclBsb3RUeXBlIiwibmV4dEZpbHRlciIsIm5leHRQbG90VHlwZSIsIl90eXBlb2YyIiwiZ2V0RGVmYXVsdFBsb3RUeXBlIiwiUExPVF9UWVBFUyIsImhpc3RvZ3JhbSIsImdldFJhbmdlRmlsdGVyQmlucyIsImFjYyIsImRhdGFzZXRJZHgiLCJfZmlsdGVyJGJpbnMiLCJmaWVsZE5hbWUiLCJnZXRDb2x1bW5GaWVsZCIsInVwZGF0ZVJhbmdlRmlsdGVyUGxvdFR5cGUiLCJCSU5TIiwiZ2V0Q2hhcnRUaXRsZSIsInlBeGlzTmFtZSIsImRpc3BsYXlOYW1lIiwiY2FwaXRhbGl6ZUZpcnN0TGV0dGVyIiwiZGVmYXVsdFRpbWVGb3JtYXQiLCJnZXREZWZhdWx0VGltZUZvcm1hdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wbG90LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7YmlzZWN0TGVmdCwgZXh0ZW50LCBoaXN0b2dyYW0gYXMgZDNIaXN0b2dyYW0sIHRpY2tzfSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2guaXNlcXVhbCc7XG5pbXBvcnQge2dldEZpbHRlck1hcHBlZFZhbHVlLCBnZXRJbml0aWFsSW50ZXJ2YWwsIGludGVydmFsVG9GdW5jdGlvbn0gZnJvbSAnLi90aW1lJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7XG4gIEJpbixcbiAgVGltZUJpbnMsXG4gIE1pbGxpc2Vjb25kLFxuICBUaW1lUmFuZ2VGaWx0ZXIsXG4gIFJhbmdlRmlsdGVyLFxuICBQbG90VHlwZSxcbiAgRmlsdGVyLFxuICBMaW5lQ2hhcnQsXG4gIEZpZWxkLFxuICBWYWx1ZU9mLFxuICBMaW5lRGF0dW1cbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtcbiAgQU5JTUFUSU9OX1dJTkRPVyxcbiAgQklOUyxcbiAgZHVyYXRpb25EYXksXG4gIFRJTUVfQUdHUkVHQVRJT04sXG4gIEFHR1JFR0FUSU9OX1RZUEVTLFxuICBQTE9UX1RZUEVTLFxuICBBZ2dyZWdhdGlvblR5cGVzXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtpc051bWJlciwgcm91bmRWYWxUb1N0ZXB9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQge2FnZ3JlZ2F0ZSwgQUdHUkVHQVRJT05fTkFNRX0gZnJvbSAnLi9hZ2dyZWdhdGlvbic7XG5pbXBvcnQge2NhcGl0YWxpemVGaXJzdExldHRlcn0gZnJvbSAnLi9zdHJpbmdzJztcbmltcG9ydCB7Z2V0RGVmYXVsdFRpbWVGb3JtYXR9IGZyb20gJy4vZm9ybWF0JztcbmltcG9ydCB7cmdiVG9IZXh9IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICcuJztcbmltcG9ydCB7S2VwbGVyVGFibGVNb2RlbH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIFRPRE8ga2VwbGVyLXRhYmxlIG1vZHVsZSBpc24ndCBhY2Nlc3NpYmxlIGZyb20gdXRpbHMuIEFkZCBjb21wYXRpYmxlIGludGVyZmFjZSB0byB0eXBlc1xudHlwZSBEYXRhc2V0cyA9IGFueTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHRocmVzaG9sZHNcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEBwYXJhbSBpbmRleGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkKFxuICB0aHJlc2hvbGRzOiBudW1iZXJbXSxcbiAgdmFsdWVzOiBudW1iZXJbXSxcbiAgdmFsdWVBY2Nlc3Nvcj86IChkOiB1bmtub3duKSA9PiBudW1iZXIsXG4gIGZpbHRlckVtcHR5QmlucyA9IHRydWVcbik6IEJpbltdIHtcbiAgY29uc3QgZ2V0QmlucyA9IGQzSGlzdG9ncmFtKClcbiAgICAuZG9tYWluKFt0aHJlc2hvbGRzWzBdLCB0aHJlc2hvbGRzW3RocmVzaG9sZHMubGVuZ3RoIC0gMV1dKVxuICAgIC50aHJlc2hvbGRzKHRocmVzaG9sZHMpO1xuXG4gIGlmICh2YWx1ZUFjY2Vzc29yKSB7XG4gICAgZ2V0Qmlucy52YWx1ZSh2YWx1ZUFjY2Vzc29yKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgYmlucyA9IGdldEJpbnModmFsdWVzKS5tYXAoYmluID0+ICh7XG4gICAgY291bnQ6IGJpbi5sZW5ndGgsXG4gICAgaW5kZXhlczogYmluLFxuICAgIHgwOiBiaW4ueDAsXG4gICAgeDE6IGJpbi54MVxuICB9KSk7XG5cbiAgLy8gZDMtaGlzdG9ncmFtIGlnbm9yZXMgdGhyZXNob2xkIHZhbHVlcyBvdXRzaWRlIHRoZSBkb21haW5cbiAgLy8gVGhlIGZpcnN0IGJpbi54MCBpcyBhbHdheXMgZXF1YWwgdG8gdGhlIG1pbmltdW0gZG9tYWluIHZhbHVlLCBhbmQgdGhlIGxhc3QgYmluLngxIGlzIGFsd2F5cyBlcXVhbCB0byB0aGUgbWF4aW11bSBkb21haW4gdmFsdWUuXG5cbiAgLy8gYmluc1swXS54MCA9IHRocmVzaG9sZHNbMF07XG4gIC8vIGJpbnNbYmlucy5sZW5ndGggLSAxXS54MSA9IHRocmVzaG9sZHNbdGhyZXNob2xkcy5sZW5ndGggLSAxXTtcblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBmaWx0ZXJFbXB0eUJpbnMgPyBiaW5zLmZpbHRlcihiID0+IGIuY291bnQgPiAwKSA6IGJpbnM7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEBwYXJhbSBudW1CaW5zXG4gKiBAcGFyYW0gdmFsdWVBY2Nlc3NvclxuICovXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtRnJvbVZhbHVlcyhcbiAgdmFsdWVzOiAoTWlsbGlzZWNvbmQgfCBudWxsIHwgbnVtYmVyKVtdLFxuICBudW1CaW5zOiBudW1iZXIsXG4gIHZhbHVlQWNjZXNzb3I/OiAoZDogbnVtYmVyKSA9PiBudW1iZXJcbikge1xuICBjb25zdCBnZXRCaW5zID0gZDNIaXN0b2dyYW0oKS50aHJlc2hvbGRzKG51bUJpbnMpO1xuXG4gIGlmICh2YWx1ZUFjY2Vzc29yKSB7XG4gICAgZ2V0Qmlucy52YWx1ZSh2YWx1ZUFjY2Vzc29yKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmUgZDMtYXJyYXkgdHlwZXMgZG9lc24ndCBtYXRjaFxuICByZXR1cm4gZ2V0Qmlucyh2YWx1ZXMpXG4gICAgLm1hcChiaW4gPT4gKHtcbiAgICAgIGNvdW50OiBiaW4ubGVuZ3RoLFxuICAgICAgaW5kZXhlczogYmluLFxuICAgICAgeDA6IGJpbi54MCxcbiAgICAgIHgxOiBiaW4ueDFcbiAgICB9KSlcbiAgICAuZmlsdGVyKGIgPT4ge1xuICAgICAgY29uc3Qge3gwLCB4MX0gPSBiO1xuICAgICAgcmV0dXJuIGlzTnVtYmVyKHgwKSAmJiBpc051bWJlcih4MSk7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoaXN0b2dyYW1Gcm9tT3JkaW5hbChcbiAgZG9tYWluOiBbc3RyaW5nXSxcbiAgdmFsdWVzOiAoTWlsbGlzZWNvbmQgfCBudWxsIHwgbnVtYmVyKVtdLFxuICB2YWx1ZUFjY2Vzc29yPzogKGQ6IHVua25vd24pID0+IHN0cmluZ1xuKTogQmluW10ge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIHRvIHR5cGVkIHRvIGV4cGVjdCBzdHJpbmdzXG4gIGNvbnN0IGdldEJpbnMgPSBkM0hpc3RvZ3JhbSgpLnRocmVzaG9sZHMoZG9tYWluKTtcbiAgaWYgKHZhbHVlQWNjZXNzb3IpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHRvIHR5cGVkIHRvIGV4cGVjdCBzdHJpbmdzXG4gICAgZ2V0Qmlucy52YWx1ZSh2YWx1ZUFjY2Vzc29yKTtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgbnVsbCB2YWx1ZXMgYXJlbid0IGV4cGVjdGVkXG4gIGNvbnN0IGJpbnMgPSBnZXRCaW5zKHZhbHVlcyk7XG5cbiAgLy8gQHRzLWlnbm9yZSBkMy1hcnJheSB0eXBlcyBkb2Vzbid0IG1hdGNoXG4gIHJldHVybiBiaW5zLm1hcChiaW4gPT4gKHtcbiAgICBjb3VudDogYmluLmxlbmd0aCxcbiAgICBpbmRleGVzOiBiaW4sXG4gICAgeDA6IGJpbi54MCxcbiAgICB4MTogYmluLngwXG4gIH0pKTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGRvbWFpblxuICogQHBhcmFtIHZhbHVlc1xuICogQHBhcmFtIG51bUJpbnNcbiAqIEBwYXJhbSB2YWx1ZUFjY2Vzc29yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaXN0b2dyYW1Gcm9tRG9tYWluKFxuICBkb21haW46IFtudW1iZXIsIG51bWJlcl0sXG4gIHZhbHVlczogKE1pbGxpc2Vjb25kIHwgbnVsbCB8IG51bWJlcilbXSxcbiAgbnVtQmluczogbnVtYmVyLFxuICB2YWx1ZUFjY2Vzc29yPzogKGQ6IHVua25vd24pID0+IG51bWJlclxuKTogQmluW10ge1xuICBjb25zdCBnZXRCaW5zID0gZDNIaXN0b2dyYW0oKS50aHJlc2hvbGRzKHRpY2tzKGRvbWFpblswXSwgZG9tYWluWzFdLCBudW1CaW5zKSkuZG9tYWluKGRvbWFpbik7XG4gIGlmICh2YWx1ZUFjY2Vzc29yKSB7XG4gICAgZ2V0Qmlucy52YWx1ZSh2YWx1ZUFjY2Vzc29yKTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmUgZDMtYXJyYXkgdHlwZXMgZG9lc24ndCBtYXRjaFxuICByZXR1cm4gZ2V0Qmlucyh2YWx1ZXMpLm1hcChiaW4gPT4gKHtcbiAgICBjb3VudDogYmluLmxlbmd0aCxcbiAgICBpbmRleGVzOiBiaW4sXG4gICAgeDA6IGJpbi54MCxcbiAgICB4MTogYmluLngxXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBpbnRlcnZhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZUJpbnMoXG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyLFxuICBkYXRhc2V0czogRGF0YXNldHMsXG4gIGludGVydmFsOiBQbG90VHlwZVsnaW50ZXJ2YWwnXVxuKTogVGltZUJpbnMge1xuICBsZXQgYmlucyA9IGZpbHRlci50aW1lQmlucyB8fCB7fTtcblxuICBmaWx0ZXIuZGF0YUlkLmZvckVhY2goKGRhdGFJZCwgZGF0YUlkSWR4KSA9PiB7XG4gICAgLy8gcmV1c2UgYmlucyBpZiBmaWx0ZXJEYXRhIGRpZCBub3QgY2hhbmdlXG4gICAgaWYgKGJpbnNbZGF0YUlkXSAmJiBiaW5zW2RhdGFJZF1baW50ZXJ2YWxdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgLy8gZG8gbm90IGFwcGx5IGN1cnJlbnQgZmlsdGVyXG4gICAgY29uc3QgaW5kZXhlcyA9IHJ1bkdwdUZpbHRlckZvclBsb3QoZGF0YXNldCwgZmlsdGVyKTtcblxuICAgIGJpbnMgPSB7XG4gICAgICAuLi5iaW5zLFxuICAgICAgW2RhdGFJZF06IHtcbiAgICAgICAgLi4uYmluc1tkYXRhSWRdLFxuICAgICAgICBbaW50ZXJ2YWxdOiBiaW5CeVRpbWUoaW5kZXhlcywgZGF0YXNldCwgaW50ZXJ2YWwsIGZpbHRlcilcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4gYmlucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbkJ5VGltZShpbmRleGVzLCBkYXRhc2V0LCBpbnRlcnZhbCwgZmlsdGVyKSB7XG4gIC8vIGdwdUZpbHRlcnMgbmVlZCB0byBiZSBhcHBseSB0byBmaWx0ZXJlZEluZGV4XG4gIGNvbnN0IG1hcHBlZFZhbHVlID0gZ2V0RmlsdGVyTWFwcGVkVmFsdWUoZGF0YXNldCwgZmlsdGVyKTtcbiAgaWYgKCFtYXBwZWRWYWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGludGVydmFsQmlucyA9IGdldEJpblRocmVzaG9sZHMoaW50ZXJ2YWwsIGZpbHRlci5kb21haW4pO1xuICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gaWR4ID0+IG1hcHBlZFZhbHVlW2lkeF07XG4gIGNvbnN0IGJpbnMgPSBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkKGludGVydmFsQmlucywgaW5kZXhlcywgdmFsdWVBY2Nlc3Nvcik7XG5cbiAgcmV0dXJuIGJpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCaW5UaHJlc2hvbGRzKGludGVydmFsOiBzdHJpbmcsIGRvbWFpbjogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHRpbWVJbnRlcnZhbCA9IGludGVydmFsVG9GdW5jdGlvbihpbnRlcnZhbCk7XG4gIGNvbnN0IFt0MCwgdDFdID0gZG9tYWluO1xuICBjb25zdCBmbG9vciA9IHRpbWVJbnRlcnZhbC5mbG9vcih0MCkuZ2V0VGltZSgpO1xuICBjb25zdCBjZWlsaW5nID0gdGltZUludGVydmFsLmNlaWwodDEpLmdldFRpbWUoKTtcblxuICBpZiAoIXRpbWVJbnRlcnZhbCkge1xuICAgIC8vIGlmIHRpbWUgaW50ZXJ2YWwgaXMgbm90IGRlZmluZWRcbiAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuXG4gICAgcmV0dXJuIFt0MCwgdDAgKyBkdXJhdGlvbkRheV07XG4gIH1cbiAgY29uc3QgYmluVGhyZXNob2xkcyA9IHRpbWVJbnRlcnZhbC5yYW5nZShmbG9vciwgY2VpbGluZyArIDEpLm1hcCh0ID0+IG1vbWVudC51dGModCkudmFsdWVPZigpKTtcbiAgY29uc3QgbGFzdFN0ZXAgPSBiaW5UaHJlc2hvbGRzW2JpblRocmVzaG9sZHMubGVuZ3RoIC0gMV07XG4gIGlmIChsYXN0U3RlcCA9PT0gdDEpIHtcbiAgICAvLyB3aGVuIGxhc3Qgc3RlcCBlcXVhbCB0byBkb21haW4gbWF4LCBhZGQgb25lIG1vcmUgc3RlcFxuICAgIGJpblRocmVzaG9sZHMucHVzaChtb21lbnQudXRjKHRpbWVJbnRlcnZhbC5vZmZzZXQobGFzdFN0ZXApKS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgcmV0dXJuIGJpblRocmVzaG9sZHM7XG59XG5cbi8qKlxuICogUnVuIEdQVSBmaWx0ZXIgb24gY3VycmVudCBmaWx0ZXIgcmVzdWx0IHRvIGdlbmVyYXRlIGluZGV4ZXMgZm9yIHBsb3RpbmcgY2hhcnRcbiAqIFNraXAgcnV1bmluZyBmb3IgdGhlIHNhbWUgZmllbGRcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5HcHVGaWx0ZXJGb3JQbG90PEsgZXh0ZW5kcyBLZXBsZXJUYWJsZU1vZGVsPEssIEw+LCBMPihcbiAgZGF0YXNldDogSyxcbiAgZmlsdGVyPzogRmlsdGVyXG4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHNraXBJbmRleGVzID0gZ2V0U2tpcEluZGV4ZXMoZGF0YXNldCwgZmlsdGVyKTtcblxuICBjb25zdCB7XG4gICAgZ3B1RmlsdGVyOiB7ZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycywgZmlsdGVyUmFuZ2UsIGZpbHRlclZhbHVlQWNjZXNzb3J9LFxuICAgIGZpbHRlcmVkSW5kZXhcbiAgfSA9IGRhdGFzZXQ7XG4gIGNvbnN0IGdldEZpbHRlclZhbHVlID0gZmlsdGVyVmFsdWVBY2Nlc3NvcihkYXRhc2V0LmRhdGFDb250YWluZXIpKCk7XG5cbiAgY29uc3QgYWxsQ2hhbm5lbHMgPSBPYmplY3Qua2V5cyhmaWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzKVxuICAgIC5tYXAoKF8sIGkpID0+IGkpXG4gICAgLmZpbHRlcihpID0+IE9iamVjdC52YWx1ZXMoZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycylbaV0pO1xuICBjb25zdCBza2lwQWxsID0gIWFsbENoYW5uZWxzLmZpbHRlcihpID0+ICFza2lwSW5kZXhlcy5pbmNsdWRlcyhpKSkubGVuZ3RoO1xuICBpZiAoc2tpcEFsbCkge1xuICAgIHJldHVybiBmaWx0ZXJlZEluZGV4O1xuICB9XG5cbiAgY29uc3QgZmlsdGVyRGF0YSA9IGdldEZpbHRlckRhdGFGdW5jKFxuICAgIGZpbHRlclJhbmdlLFxuICAgIGdldEZpbHRlclZhbHVlLFxuICAgIGRhdGFzZXQuZGF0YUNvbnRhaW5lcixcbiAgICBza2lwSW5kZXhlc1xuICApO1xuXG4gIHJldHVybiBmaWx0ZXJlZEluZGV4LmZpbHRlcihmaWx0ZXJEYXRhKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2tpcEluZGV4ZXMoZGF0YXNldCwgZmlsdGVyKSB7XG4gIC8vIGFycmF5IG9mIGdwdSBmaWx0ZXIgbmFtZXNcbiAgaWYgKCFmaWx0ZXIpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgZ3B1RmlsdGVycyA9IE9iamVjdC52YWx1ZXMoZGF0YXNldC5ncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycykgYXMgKHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0gfCBudWxsKVtdO1xuICBjb25zdCB2YWx1ZUluZGV4ID0gZmlsdGVyLmRhdGFJZC5maW5kSW5kZXgoaWQgPT4gaWQgPT09IGRhdGFzZXQuaWQpO1xuICBjb25zdCBmaWx0ZXJDb2x1bW4gPSBmaWx0ZXIubmFtZVt2YWx1ZUluZGV4XTtcblxuICByZXR1cm4gZ3B1RmlsdGVycy5yZWR1Y2UoKGFjY3UsIGl0ZW0sIGlkeCkgPT4ge1xuICAgIGlmIChpdGVtICYmIGZpbHRlckNvbHVtbiA9PT0gaXRlbS5uYW1lKSB7XG4gICAgICBhY2N1LnB1c2goaWR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3U7XG4gIH0sIFtdIGFzIG51bWJlcltdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlckRhdGFGdW5jKFxuICBmaWx0ZXJSYW5nZSxcbiAgZ2V0RmlsdGVyVmFsdWUsXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHNraXBzXG4pIHtcbiAgcmV0dXJuIGluZGV4ID0+XG4gICAgZ2V0RmlsdGVyVmFsdWUoe2luZGV4fSkuZXZlcnkoXG4gICAgICAodmFsLCBpKSA9PiBza2lwcy5pbmNsdWRlcyhpKSB8fCAodmFsID49IGZpbHRlclJhbmdlW2ldWzBdICYmIHZhbCA8PSBmaWx0ZXJSYW5nZVtpXVsxXSlcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRCaW4oYikge1xuICByZXR1cm4gYi54MCAhPT0gdW5kZWZpbmVkICYmIGIueDEgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBVc2UgaW4gc2xpZGVyLCBnaXZlbiBhIG51bWJlciBhbmQgYW4gYXJyYXkgb2YgbnVtYmVycywgcmV0dXJuIHRoZSBuZWFycyBudW1iZXIgZnJvbSB0aGUgYXJyYXkuXG4gKiBUYWtlcyBhIHZhbHVlLCB0aW1lc3RlcHMgYW5kIHJldHVybiB0aGUgYWN0dWFsIHN0ZXAuXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc25hcFRvTWFya3ModmFsdWU6IG51bWJlciwgbWFya3M6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgLy8gYWx3YXlzIHVzZSBiaW4geDBcbiAgaWYgKCFtYXJrcy5sZW5ndGgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGxvb2tpbmcgYXQgdGhlIHVzYWdlIG51bGwgcmV0dXJuIHZhbHVlIGlzbid0IGV4cGVjdGVkIGFuZCByZXF1aXJlcyBleHRyYSBoYW5kbGluZyBpbiBhIGxvdCBvZiBwbGFjZXNcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBpID0gYmlzZWN0TGVmdChtYXJrcywgdmFsdWUpO1xuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBtYXJrc1tpXTtcbiAgfSBlbHNlIGlmIChpID09PSBtYXJrcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbWFya3NbaSAtIDFdO1xuICB9XG4gIGNvbnN0IGlkeCA9IG1hcmtzW2ldIC0gdmFsdWUgPCB2YWx1ZSAtIG1hcmtzW2kgLSAxXSA/IGkgOiBpIC0gMTtcbiAgcmV0dXJuIG1hcmtzW2lkeF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWwsIG1pblZhbHVlLCBzdGVwLCBtYXJrcykge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQZXJjZW50RmllbGQoZmllbGQpIHtcbiAgcmV0dXJuIGZpZWxkLm1ldGFkYXRhICYmIGZpZWxkLm1ldGFkYXRhLm51bWVyYXRvciAmJiBmaWVsZC5tZXRhZGF0YS5kZW5vbWluYXRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUFnZ3JlZ2F0aW9uQnlGaWVsZChmaWVsZDogRmllbGQsIGFnZ3JlZ2F0aW9uOiBWYWx1ZU9mPEFnZ3JlZ2F0aW9uVHlwZXM+KSB7XG4gIC8vIHNob3VsZG4ndCBhcHBseSBzdW0gdG8gcGVyY2VudCBmaWVsZSB0eXBlXG4gIC8vIGRlZmF1bHQgYWdncmVnYXRpb24gaXMgYXZlcmFnZVxuICByZXR1cm4gZmllbGQgJiYgaXNQZXJjZW50RmllbGQoZmllbGQpXG4gICAgPyBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlXG4gICAgOiBhZ2dyZWdhdGlvbiB8fCBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlO1xufVxuXG5jb25zdCBnZXRBZ3JlZ2F0aW9uVHlwZSA9IChmaWVsZCwgYWdncmVnYXRpb24pID0+IHtcbiAgaWYgKGlzUGVyY2VudEZpZWxkKGZpZWxkKSkge1xuICAgIHJldHVybiAnbWVhbl9vZl9wZXJjZW50JztcbiAgfVxuICByZXR1cm4gYWdncmVnYXRpb247XG59O1xuXG5jb25zdCBnZXRBZ2dyZWdhdGlvbkFjY2Vzc29yID0gKGZpZWxkLCBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBmaWVsZHMpID0+IHtcbiAgaWYgKGlzUGVyY2VudEZpZWxkKGZpZWxkKSkge1xuICAgIGNvbnN0IG51bWVyYXRvcklkeCA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLm5hbWUgPT09IGZpZWxkLm1ldGFkYXRhLm51bWVyYXRvcik7XG4gICAgY29uc3QgZGVub21pbmF0b3JJZHggPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lID09PSBmaWVsZC5tZXRhZGF0YS5kZW5vbWluYXRvcik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0TnVtZXJhdG9yOiBpID0+IGRhdGFDb250YWluZXIudmFsdWVBdChpLCBudW1lcmF0b3JJZHgpLFxuICAgICAgZ2V0RGVub21pbmF0b3I6IGkgPT4gZGF0YUNvbnRhaW5lci52YWx1ZUF0KGksIGRlbm9taW5hdG9ySWR4KVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gaSA9PiBmaWVsZC52YWx1ZUFjY2Vzc29yKHtpbmRleDogaX0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFZhbHVlQWdnckZ1bmMgPSAoXG4gIGZpZWxkOiBGaWVsZCB8IHN0cmluZyB8IG51bGwsXG4gIGFnZ3JlZ2F0aW9uOiBzdHJpbmcsXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlTW9kZWw8YW55LCBhbnk+XG4pOiAoKGJpbjogQmluKSA9PiBudW1iZXIpID0+IHtcbiAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0O1xuXG4gIC8vIFRoZSBwYXNzZWQtaW4gZmllbGQgbWlnaHQgbm90IGhhdmUgYWxsIHRoZSBmaWVsZHMgc2V0IChlLmcuIHZhbHVlQWNjZXNzb3IpXG4gIGNvbnN0IGRhdGFzZXRGaWVsZCA9IGZpZWxkcy5maW5kKFxuICAgIGYgPT4gZmllbGQgJiYgKGYubmFtZSA9PT0gZmllbGQgfHwgZi5uYW1lID09PSAoZmllbGQgYXMgRmllbGQpLm5hbWUpXG4gICk7XG5cbiAgcmV0dXJuIGRhdGFzZXRGaWVsZCAmJiBhZ2dyZWdhdGlvblxuICAgID8gYmluID0+XG4gICAgICAgIGFnZ3JlZ2F0ZShcbiAgICAgICAgICBiaW4uaW5kZXhlcyxcbiAgICAgICAgICBnZXRBZ3JlZ2F0aW9uVHlwZShkYXRhc2V0RmllbGQsIGFnZ3JlZ2F0aW9uKSxcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGNhbiByZXR1cm4ge2dldE51bWVyYXRvciwgZ2V0RGVub21pbmF0b3J9XG4gICAgICAgICAgZ2V0QWdncmVnYXRpb25BY2Nlc3NvcihkYXRhc2V0RmllbGQsIGRhdGFDb250YWluZXIsIGZpZWxkcylcbiAgICAgICAgKVxuICAgIDogYmluID0+IGJpbi5jb3VudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBZ2dyZWdhdGlvbk9wdGlvc25CYXNlZE9uRmllbGQgPSBmaWVsZCA9PiB7XG4gIGlmIChpc1BlcmNlbnRGaWVsZChmaWVsZCkpIHtcbiAgICAvLyBkb24ndCBzaG93IHN1bVxuICAgIHJldHVybiBUSU1FX0FHR1JFR0FUSU9OLmZpbHRlcigoe2lkfSkgPT4gaWQgIT09IEFHR1JFR0FUSU9OX1RZUEVTLnN1bSk7XG4gIH1cbiAgcmV0dXJuIFRJTUVfQUdHUkVHQVRJT047XG59O1xuXG5mdW5jdGlvbiBnZXREZWx0YShcbiAgYmluczogTGluZURhdHVtW10sXG4gIHk6IG51bWJlcixcbiAgaW50ZXJ2YWw6IFBsb3RUeXBlWydpbnRlcnZhbCddXG4pOiBQYXJ0aWFsPExpbmVEYXR1bT4gJiB7ZGVsdGE6ICdsYXN0JzsgcGN0OiBudW1iZXIgfCBudWxsfSB7XG4gIC8vIGlmIChXT1dbaW50ZXJ2YWxdKSByZXR1cm4gZ2V0V293KGJpbnMsIHksIGludGVydmFsKTtcbiAgY29uc3QgbGFzdEJpbiA9IGJpbnNbYmlucy5sZW5ndGggLSAxXTtcblxuICByZXR1cm4ge1xuICAgIGRlbHRhOiAnbGFzdCcsXG4gICAgcGN0OiBsYXN0QmluID8gZ2V0UGN0Q2hhbmdlKHksIGxhc3RCaW4ueSkgOiBudWxsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQY3RDaGFuZ2UoeTogdW5rbm93biwgeTA6IHVua25vd24pOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKE51bWJlci5pc0Zpbml0ZSh5KSAmJiBOdW1iZXIuaXNGaW5pdGUoeTApICYmIHkwICE9PSAwKSB7XG4gICAgcmV0dXJuICgoeSBhcyBudW1iZXIpIC0gKHkwIGFzIG51bWJlcikpIC8gKHkwIGFzIG51bWJlcik7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhc2V0c1xuICogQHBhcmFtIGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGluZUNoYXJ0KGRhdGFzZXRzOiBEYXRhc2V0cywgZmlsdGVyOiBGaWx0ZXIpOiBMaW5lQ2hhcnQge1xuICBjb25zdCB7ZGF0YUlkLCB5QXhpcywgcGxvdFR5cGUsIGxpbmVDaGFydH0gPSBmaWx0ZXI7XG4gIGNvbnN0IHthZ2dyZWdhdGlvbiwgaW50ZXJ2YWx9ID0gcGxvdFR5cGU7XG4gIGNvbnN0IHNlcmllc0RhdGFJZCA9IGRhdGFJZFswXTtcbiAgY29uc3QgYmlucyA9IChmaWx0ZXIgYXMgVGltZVJhbmdlRmlsdGVyKS50aW1lQmlucz8uW3Nlcmllc0RhdGFJZF0/LltpbnRlcnZhbF07XG5cbiAgaWYgKFxuICAgIGxpbmVDaGFydCAmJlxuICAgIGxpbmVDaGFydC5hZ2dyZWdhdGlvbiA9PT0gYWdncmVnYXRpb24gJiZcbiAgICBsaW5lQ2hhcnQuaW50ZXJ2YWwgPT09IGludGVydmFsICYmXG4gICAgbGluZUNoYXJ0LnlBeGlzID09PSB5QXhpcz8ubmFtZSAmJlxuICAgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHZhbGlkYXRlIGJpbnMgYmVjYXVzZSBvZiBjcm9zcyBmaWx0ZXIgZGF0YSBjaGFuZ2VzXG4gICAgaXNFcXVhbChiaW5zLCBsaW5lQ2hhcnQ/LmJpbnMpXG4gICkge1xuICAgIC8vIGRvbid0IHVwZGF0ZSBsaW5lQ2hhcnQgaWYgcGxvdFR5cGUgaGFzbid0IGNoYW5nZVxuICAgIHJldHVybiBsaW5lQ2hhcnQ7XG4gIH1cblxuICBjb25zdCBkYXRhc2V0ID0gZGF0YXNldHNbc2VyaWVzRGF0YUlkXTtcbiAgY29uc3QgZ2V0WVZhbHVlID0gZ2V0VmFsdWVBZ2dyRnVuYyh5QXhpcywgYWdncmVnYXRpb24sIGRhdGFzZXQpO1xuXG4gIGNvbnN0IGluaXQ6IExpbmVEYXR1bVtdID0gW107XG4gIGNvbnN0IHNlcmllcyA9IChiaW5zIHx8IFtdKS5yZWR1Y2UoKGFjY3UsIGJpbiwgaSkgPT4ge1xuICAgIGNvbnN0IHkgPSBnZXRZVmFsdWUoYmluKTtcbiAgICBjb25zdCBkZWx0YSA9IGdldERlbHRhKGFjY3UsIHksIGludGVydmFsKTtcbiAgICBhY2N1LnB1c2goe1xuICAgICAgeDogYmluLngwLFxuICAgICAgeSxcbiAgICAgIC4uLmRlbHRhXG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3U7XG4gIH0sIGluaXQpO1xuXG4gIGNvbnN0IHlEb21haW4gPSBleHRlbnQ8e3k6IGFueX0+KHNlcmllcywgZCA9PiBkLnkpO1xuICBjb25zdCB4RG9tYWluID0gYmlucyA/IFtiaW5zWzBdLngwLCBiaW5zW2JpbnMubGVuZ3RoIC0gMV0ueDFdIDogW107XG5cbiAgLy8gdHJlYXQgbWlzc2luZyBkYXRhIGFzIGFub3RoZXIgc2VyaWVzXG4gIGNvbnN0IHNwbGl0ID0gc3BsaXRTZXJpZXMoc2VyaWVzKTtcbiAgY29uc3QgYWdnck5hbWUgPSBBR0dSRUdBVElPTl9OQU1FW2FnZ3JlZ2F0aW9uXTtcblxuICByZXR1cm4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB5RG9tYWluLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB4RG9tYWluLFxuICAgIGludGVydmFsLFxuICAgIGFnZ3JlZ2F0aW9uLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzZXJpZXM6IHNwbGl0LFxuICAgIHRpdGxlOiBgJHthZ2dyTmFtZX0keycgb2YgJ30ke3lBeGlzID8geUF4aXMubmFtZSA6ICdDb3VudCd9YCxcbiAgICBmaWVsZFR5cGU6IHlBeGlzID8geUF4aXMudHlwZSA6ICdpbnRlZ2VyJyxcbiAgICB5QXhpczogeUF4aXMgPyB5QXhpcy5uYW1lIDogbnVsbCxcbiAgICBhbGxUaW1lOiB7XG4gICAgICB0aXRsZTogYEFsbCBUaW1lIEF2ZXJhZ2VgLFxuICAgICAgdmFsdWU6IGFnZ3JlZ2F0ZShzZXJpZXMsIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsIGQgPT4gZC55KVxuICAgIH0sXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBiaW5zIGlzIEJpbnNbXSwgbm90IGEgQmlucyBtYXAuIFJlZmFjdG9yIHRvIHVzZSBjb3JyZWN0IHR5cGVzLlxuICAgIGJpbnNcbiAgfTtcbn1cblxuLy8gc3BsaXQgaW50byBtdWx0aXBsZSBzZXJpZXMgd2hlbiBzZWUgbWlzc2luZyBkYXRhXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRTZXJpZXMoc2VyaWVzKSB7XG4gIGNvbnN0IGxpbmVzOiBhbnlbXSA9IFtdO1xuICBsZXQgdGVtcDogYW55W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBkID0gc2VyaWVzW2ldO1xuICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKGQueSkgJiYgdGVtcC5sZW5ndGgpIHtcbiAgICAgIC8vIGVuZHMgdGVtcFxuICAgICAgbGluZXMucHVzaCh0ZW1wKTtcbiAgICAgIHRlbXAgPSBbXTtcbiAgICB9IGVsc2UgaWYgKG5vdE51bGxvclVuZGVmaW5lZChkLnkpKSB7XG4gICAgICB0ZW1wLnB1c2goZCk7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHNlcmllcy5sZW5ndGggLSAxICYmIHRlbXAubGVuZ3RoKSB7XG4gICAgICBsaW5lcy5wdXNoKHRlbXApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1hcmtlcnMgPSBsaW5lcy5sZW5ndGggPiAxID8gc2VyaWVzLmZpbHRlcihkID0+IG5vdE51bGxvclVuZGVmaW5lZChkLnkpKSA6IFtdO1xuXG4gIHJldHVybiB7bGluZXMsIG1hcmtlcnN9O1xufVxuXG50eXBlIE1pblZpc1N0YXRlRm9yQW5pbWF0aW9uV2luZG93ID0ge1xuICBkYXRhc2V0czogRGF0YXNldHM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VmFsdWVUb0FuaW1hdGlvbldpbmRvdzxTIGV4dGVuZHMgTWluVmlzU3RhdGVGb3JBbmltYXRpb25XaW5kb3c+KFxuICBzdGF0ZTogUyxcbiAgZmlsdGVyOiBUaW1lUmFuZ2VGaWx0ZXJcbikge1xuICBjb25zdCB7XG4gICAgcGxvdFR5cGUsXG4gICAgdmFsdWU6IFt2YWx1ZTAsIHZhbHVlMV0sXG4gICAgYW5pbWF0aW9uV2luZG93XG4gIH0gPSBmaWx0ZXI7XG5cbiAgY29uc3QgaW50ZXJ2YWwgPSBwbG90VHlwZS5pbnRlcnZhbCB8fCBnZXRJbml0aWFsSW50ZXJ2YWwoZmlsdGVyLCBzdGF0ZS5kYXRhc2V0cyk7XG4gIGNvbnN0IGJpbnMgPSBnZXRUaW1lQmlucyhmaWx0ZXIsIHN0YXRlLmRhdGFzZXRzLCBpbnRlcnZhbCk7XG4gIGNvbnN0IGRhdGFzZXRCaW5zID0gYmlucyAmJiBPYmplY3Qua2V5cyhiaW5zKS5sZW5ndGggJiYgT2JqZWN0LnZhbHVlcyhiaW5zKVswXVtpbnRlcnZhbF07XG4gIGNvbnN0IHRocmVzaG9sZHMgPSAoZGF0YXNldEJpbnMgfHwgW10pLm1hcChiID0+IGIueDApO1xuXG4gIGxldCB2YWwwID0gdmFsdWUwO1xuICBsZXQgdmFsMSA9IHZhbHVlMTtcbiAgbGV0IGlkeDtcbiAgaWYgKGFuaW1hdGlvbldpbmRvdyA9PT0gQU5JTUFUSU9OX1dJTkRPVy5pbnRlcnZhbCkge1xuICAgIHZhbDAgPSBzbmFwVG9NYXJrcyh2YWx1ZTEsIHRocmVzaG9sZHMpO1xuICAgIGlkeCA9IHRocmVzaG9sZHMuaW5kZXhPZih2YWwwKTtcbiAgICB2YWwxID0gaWR4ID4gLTEgPyBkYXRhc2V0Qmluc1tpZHhdLngxIDogTmFOO1xuICB9IGVsc2Uge1xuICAgIC8vIGZpdCBjdXJyZW50IHZhbHVlIHRvIHdpbmRvd1xuICAgIHZhbDAgPSBzbmFwVG9NYXJrcyh2YWx1ZTAsIHRocmVzaG9sZHMpO1xuICAgIHZhbDEgPSBzbmFwVG9NYXJrcyh2YWx1ZTEsIHRocmVzaG9sZHMpO1xuXG4gICAgaWYgKHZhbDAgPT09IHZhbDEpIHtcbiAgICAgIGlkeCA9IHRocmVzaG9sZHMuaW5kZXhPZih2YWwwKTtcbiAgICAgIGlmIChpZHggPT09IHRocmVzaG9sZHMubGVuZ3RoIC0gMSkge1xuICAgICAgICB2YWwwID0gdGhyZXNob2xkc1tpZHggLSAxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbDEgPSB0aHJlc2hvbGRzW2lkeCArIDFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHVwZGF0ZWRGaWx0ZXIgPSB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHBsb3RUeXBlOiB7XG4gICAgICAuLi5maWx0ZXIucGxvdFR5cGUsXG4gICAgICBpbnRlcnZhbFxuICAgIH0sXG4gICAgdGltZUJpbnM6IGJpbnMsXG4gICAgdmFsdWU6IFt2YWwwLCB2YWwxXVxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVkRmlsdGVyO1xufVxuXG4vKipcbiAqIENyZWF0ZSBvciB1cGRhdGUgY29sb3JzIGZvciBhIGZpbHRlciBwbG90XG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBvbGRDb2xvcnNCeURhdGFJZFxuICovXG5mdW5jdGlvbiBnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQoZmlsdGVyLCBkYXRhc2V0cywgb2xkQ29sb3JzQnlEYXRhSWQpIHtcbiAgbGV0IGNvbG9yc0J5RGF0YUlkID0gb2xkQ29sb3JzQnlEYXRhSWQgfHwge307XG4gIGZvciAoY29uc3QgZGF0YUlkIG9mIGZpbHRlci5kYXRhSWQpIHtcbiAgICBpZiAoIWNvbG9yc0J5RGF0YUlkW2RhdGFJZF0gJiYgZGF0YXNldHNbZGF0YUlkXSkge1xuICAgICAgY29sb3JzQnlEYXRhSWQgPSB7XG4gICAgICAgIC4uLmNvbG9yc0J5RGF0YUlkLFxuICAgICAgICBbZGF0YUlkXTogcmdiVG9IZXgoZGF0YXNldHNbZGF0YUlkXS5jb2xvcilcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBjb2xvcnNCeURhdGFJZDtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIHBsb3RUeXBlXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBkYXRhSWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVRpbWVGaWx0ZXJQbG90VHlwZShcbiAgZmlsdGVyOiBUaW1lUmFuZ2VGaWx0ZXIsXG4gIHBsb3RUeXBlOiBUaW1lUmFuZ2VGaWx0ZXJbJ3Bsb3RUeXBlJ10sXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgZGF0YUlkPzogc3RyaW5nXG4pOiBUaW1lUmFuZ2VGaWx0ZXIge1xuICBsZXQgbmV4dEZpbHRlciA9IGZpbHRlcjtcbiAgbGV0IG5leHRQbG90VHlwZSA9IHBsb3RUeXBlO1xuICBpZiAodHlwZW9mIG5leHRQbG90VHlwZSAhPT0gJ29iamVjdCcgfHwgIW5leHRQbG90VHlwZS5hZ2dyZWdhdGlvbiB8fCAhbmV4dFBsb3RUeXBlLmludGVydmFsKSB7XG4gICAgbmV4dFBsb3RUeXBlID0gZ2V0RGVmYXVsdFBsb3RUeXBlKGZpbHRlciwgZGF0YXNldHMpO1xuICB9XG5cbiAgaWYgKGZpbHRlci5kYXRhSWQubGVuZ3RoID4gMSkge1xuICAgIG5leHRQbG90VHlwZSA9IHtcbiAgICAgIC4uLm5leHRQbG90VHlwZSxcbiAgICAgIGNvbG9yc0J5RGF0YUlkOiBnZXRGaWx0ZXJQbG90Q29sb3JzQnlEYXRhSWQoZmlsdGVyLCBkYXRhc2V0cywgbmV4dFBsb3RUeXBlLmNvbG9yc0J5RGF0YUlkKVxuICAgIH07XG4gIH1cbiAgbmV4dEZpbHRlciA9IHtcbiAgICAuLi5uZXh0RmlsdGVyLFxuICAgIHBsb3RUeXBlOiBuZXh0UGxvdFR5cGVcbiAgfTtcblxuICBjb25zdCBiaW5zID0gZ2V0VGltZUJpbnMobmV4dEZpbHRlciwgZGF0YXNldHMsIG5leHRQbG90VHlwZS5pbnRlcnZhbCk7XG5cbiAgbmV4dEZpbHRlciA9IHtcbiAgICAuLi5uZXh0RmlsdGVyLFxuICAgIHRpbWVCaW5zOiBiaW5zXG4gIH07XG5cbiAgaWYgKHBsb3RUeXBlLnR5cGUgPT09IFBMT1RfVFlQRVMuaGlzdG9ncmFtKSB7XG4gICAgLy8gSGlzdG9ncmFtIGlzIGNhbGN1bGF0ZWQgYW5kIG1lbW9pemVkIGluIHRoZSBjaGFydCBpdHNlbGZcbiAgfSBlbHNlIGlmIChwbG90VHlwZS50eXBlID09PSBQTE9UX1RZUEVTLmxpbmVDaGFydCkge1xuICAgIC8vIHdlIHNob3VsZCBiZSBhYmxlIHRvIG1vdmUgdGhpcyBpbnRvIGl0cyBvd24gY29tcG9uZW50IHNvIHJlYWN0IHdpbGwgZG8gdGhlIHNoYWxsb3cgY29tcGFyaXNvbiBmb3IgdXMuXG4gICAgbmV4dEZpbHRlciA9IHtcbiAgICAgIC4uLm5leHRGaWx0ZXIsXG4gICAgICBsaW5lQ2hhcnQ6IGdldExpbmVDaGFydChkYXRhc2V0cywgbmV4dEZpbHRlcilcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG5leHRGaWx0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYW5nZUZpbHRlckJpbnMoZmlsdGVyLCBkYXRhc2V0cywgbnVtQmlucykge1xuICBjb25zdCB7ZG9tYWlufSA9IGZpbHRlcjtcbiAgaWYgKCFmaWx0ZXIuZGF0YUlkKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gZmlsdGVyLmRhdGFJZC5yZWR1Y2UoKGFjYywgZGF0YUlkLCBkYXRhc2V0SWR4KSA9PiB7XG4gICAgaWYgKGZpbHRlci5iaW5zPy5bZGF0YUlkXSkge1xuICAgICAgLy8gZG9uJ3QgcmVjYWxjdWxhdGUgYmluc1xuICAgICAgYWNjW2RhdGFJZF0gPSBmaWx0ZXIuYmluc1tkYXRhSWRdO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG4gICAgY29uc3QgZmllbGROYW1lID0gZmlsdGVyLm5hbWVbZGF0YXNldElkeF07XG4gICAgaWYgKGRhdGFJZCAmJiBmaWVsZE5hbWUpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuICAgICAgY29uc3QgZmllbGQgPSBkYXRhc2V0Py5nZXRDb2x1bW5GaWVsZChmaWVsZE5hbWUpO1xuICAgICAgaWYgKGRhdGFzZXQgJiYgZmllbGQpIHtcbiAgICAgICAgY29uc3QgaW5kZXhlcyA9IHJ1bkdwdUZpbHRlckZvclBsb3QoZGF0YXNldCwgZmlsdGVyKTtcbiAgICAgICAgY29uc3QgdmFsdWVBY2Nlc3NvciA9IGluZGV4ID0+IGZpZWxkLnZhbHVlQWNjZXNzb3Ioe2luZGV4fSk7XG4gICAgICAgIGFjY1tkYXRhSWRdID0gaGlzdG9ncmFtRnJvbURvbWFpbihkb21haW4sIGluZGV4ZXMsIG51bUJpbnMsIHZhbHVlQWNjZXNzb3IpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVSYW5nZUZpbHRlclBsb3RUeXBlKFxuICBmaWx0ZXI6IFJhbmdlRmlsdGVyLFxuICBwbG90VHlwZTogUmFuZ2VGaWx0ZXJbJ3Bsb3RUeXBlJ10sXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgZGF0YUlkPzogc3RyaW5nXG4pOiBSYW5nZUZpbHRlciB7XG4gIGNvbnN0IG5leHRGaWx0ZXIgPSB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHBsb3RUeXBlXG4gIH07XG5cbiAgLy8gaWYgKGRhdGFJZCkge1xuICAvLyAgIC8vIGNsZWFyIGJpbnNcbiAgLy8gICBuZXh0RmlsdGVyID0ge1xuICAvLyAgICAgLi4ubmV4dEZpbHRlcixcbiAgLy8gICAgIGJpbnM6IHtcbiAgLy8gICAgICAgLi4ubmV4dEZpbHRlci5iaW5zLFxuICAvLyAgICAgICBbZGF0YUlkXTogbnVsbFxuICAvLyAgICAgfVxuICAvLyAgIH07XG4gIC8vIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmZpbHRlcixcbiAgICBwbG90VHlwZSxcbiAgICBiaW5zOiBnZXRSYW5nZUZpbHRlckJpbnMobmV4dEZpbHRlciwgZGF0YXNldHMsIEJJTlMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFydFRpdGxlKHlBeGlzOiBGaWVsZCwgcGxvdFR5cGU6IFBsb3RUeXBlKTogc3RyaW5nIHtcbiAgY29uc3QgeUF4aXNOYW1lID0geUF4aXM/LmRpc3BsYXlOYW1lO1xuICBjb25zdCB7YWdncmVnYXRpb259ID0gcGxvdFR5cGU7XG5cbiAgaWYgKHlBeGlzTmFtZSkge1xuICAgIHJldHVybiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoYCR7YWdncmVnYXRpb259ICR7eUF4aXNOYW1lfSBvdmVyIFRpbWVgKTtcbiAgfVxuXG4gIHJldHVybiBgQ291bnQgb2YgUm93cyBvdmVyIFRpbWVgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFBsb3RUeXBlKGZpbHRlciwgZGF0YXNldHMpIHtcbiAgY29uc3QgaW50ZXJ2YWwgPSBnZXRJbml0aWFsSW50ZXJ2YWwoZmlsdGVyLCBkYXRhc2V0cyk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lRm9ybWF0ID0gZ2V0RGVmYXVsdFRpbWVGb3JtYXQoaW50ZXJ2YWwpO1xuICByZXR1cm4ge1xuICAgIGludGVydmFsLFxuICAgIGRlZmF1bHRUaW1lRm9ybWF0LFxuICAgIHR5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtLFxuICAgIGFnZ3JlZ2F0aW9uOiBBR0dSRUdBVElPTl9UWVBFUy5zdW1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FB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UUFDM0R3RyxHQUFHLENBQUM5SixNQUFNLENBQUMsR0FBR04sbUJBQW1CLENBQUNiLE1BQU0sRUFBRUssT0FBTyxFQUFFSyxPQUFPLEVBQUVmLGFBQWEsQ0FBQztNQUM1RTtJQUNGO0lBQ0EsT0FBT3NMLEdBQUc7RUFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDUjtBQUVPLFNBQVNLLHlCQUF5QkEsQ0FDdkMxTSxNQUFtQixFQUNuQjhJLFFBQWlDLEVBQ2pDMUcsUUFBa0IsRUFDbEJHLE1BQWUsRUFDRjtFQUNiLElBQU11SixVQUFVLEdBQUF6TCxhQUFBLENBQUFBLGFBQUEsS0FDWEwsTUFBTTtJQUNUOEksUUFBUSxFQUFSQTtFQUFRLEVBQ1Q7O0VBRUQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUEsT0FBQXpJLGFBQUEsQ0FBQUEsYUFBQSxLQUNLTCxNQUFNO0lBQ1Q4SSxRQUFRLEVBQVJBLFFBQVE7SUFDUnpILElBQUksRUFBRStLLGtCQUFrQixDQUFDTixVQUFVLEVBQUUxSixRQUFRLEVBQUV1SyxlQUFJO0VBQUM7QUFFeEQ7QUFFTyxTQUFTQyxhQUFhQSxDQUFDL0QsS0FBWSxFQUFFQyxRQUFrQixFQUFVO0VBQ3RFLElBQU0rRCxTQUFTLEdBQUdoRSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWlFLFdBQVc7RUFDcEMsSUFBT2hHLFdBQVcsR0FBSWdDLFFBQVEsQ0FBdkJoQyxXQUFXO0VBRWxCLElBQUkrRixTQUFTLEVBQUU7SUFDYixPQUFPLElBQUFFLDhCQUFxQixLQUFBaEQsTUFBQSxDQUFJakQsV0FBVyxPQUFBaUQsTUFBQSxDQUFJOEMsU0FBUyxlQUFZLENBQUM7RUFDdkU7RUFFQTtBQUNGO0FBRU8sU0FBU1osa0JBQWtCQSxDQUFDak0sTUFBTSxFQUFFb0MsUUFBUSxFQUFFO0VBQ25ELElBQU1DLFFBQVEsR0FBRyxJQUFBd0ksd0JBQWtCLEVBQUM3SyxNQUFNLEVBQUVvQyxRQUFRLENBQUM7RUFDckQsSUFBTTRLLGlCQUFpQixHQUFHLElBQUFDLDRCQUFvQixFQUFDNUssUUFBUSxDQUFDO0VBQ3hELE9BQU87SUFDTEEsUUFBUSxFQUFSQSxRQUFRO0lBQ1IySyxpQkFBaUIsRUFBakJBLGlCQUFpQjtJQUNqQi9DLElBQUksRUFBRWlDLHFCQUFVLENBQUNDLFNBQVM7SUFDMUJyRixXQUFXLEVBQUVDLDRCQUFpQixDQUFDa0I7RUFDakMsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
package/dist/utils.js CHANGED
@@ -199,8 +199,8 @@ function hasPortableWidth(breakPointValues) {
199
199
  return mobileWidth.matches;
200
200
  }
201
201
  function isTest() {
202
- var _process;
203
- return typeof process !== 'undefined' && ((_process = process) === null || _process === void 0 || (_process = _process.env) === null || _process === void 0 ? void 0 : _process.NODE_ENV) === 'test';
202
+ var _globalThis$process;
203
+ return ((_globalThis$process = globalThis.process) === null || _globalThis$process === void 0 || (_globalThis$process = _globalThis$process.env) === null || _globalThis$process === void 0 ? void 0 : _globalThis$process.NODE_ENV) === 'test';
204
204
  }
205
205
 
206
206
  /**
@@ -238,4 +238,4 @@ function arrayDifference(source) {
238
238
  }, initial);
239
239
  };
240
240
  }
241
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc3RyaW5ncyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZ2VuZXJhdGVIYXNoSWRGcm9tU3RyaW5nIiwic3RyIiwiaGFzaCIsImkiLCJjaHIiLCJsZW4iLCJ0b1N0cmluZyIsImNoYXJDb2RlQXQiLCJpc0Nocm9tZSIsIndpbmRvdyIsImNocm9tZSIsIndlYnN0b3JlIiwiY2FtZWxUb1RpdGxlIiwiYnJlYWtXb3JkIiwicmVwbGFjZSIsImNhcGl0YWxpemVGaXJzdExldHRlciIsImNhbWVsaXplIiwiZXhwb3J0cyIsIm1hdGNoIiwiaW5kZXgiLCJOdW1iZXIiLCJ0b0xvd2VyQ2FzZSIsInRvVXBwZXJDYXNlIiwiaW5zZXJ0VmFsdWUiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJzbGljZSIsImlzT2JqZWN0IiwiX3R5cGVvZjIiLCJpc1BsYWluT2JqZWN0Iiwic2V0UGF0aCIsIl9yZWYiLCJfcmVmMiIsIl90b0FycmF5MiIsIm5leHQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzZXQiLCJwYXRoIiwiREVGQVVMVF9FUlJPUl9NRVNTQUdFIiwiZ2V0RXJyb3IiLCJlcnIiLCJkZWZhdWx0TWVzc2FnZSIsInVuZGVmaW5lZCIsIkVycm9yIiwibWVzc2FnZSIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImFycmF5SW5zZXJ0IiwiYXJyIiwidmFsIiwiYXJyYXlNb3ZlTXV0YXRlIiwiYXJyYXkiLCJmcm9tIiwidG8iLCJzcGxpY2UiLCJhcnJheU1vdmUiLCJoYXNNb2JpbGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJtb2JpbGVXaWR0aCIsIm1hdGNoTWVkaWEiLCJwYWxtIiwibWF0Y2hlcyIsImhhc1BvcnRhYmxlV2lkdGgiLCJkZXNrIiwiaXNUZXN0IiwiX3Byb2Nlc3MiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJmaWx0ZXJPYmplY3RCeVByZWRpY2F0ZSIsInByZWRpY2F0ZSIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2MiLCJlbnRyeSIsImlzRnVuY3Rpb24iLCJmdW5jIiwiZmluZEJ5SWQiLCJpZCIsImZpbmQiLCJhIiwiYXJyYXlEaWZmZXJlbmNlIiwic291cmNlIiwiaW5pdGlhbCIsImNvbXBhcmUiLCJlbGVtZW50IiwiZm91bmRFbGVtZW50Il0sInNvdXJjZXMiOlsiLi4vc3JjL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB3aW5kb3cgZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQge2NhcGl0YWxpemVGaXJzdExldHRlcn0gZnJvbSAnLi9zdHJpbmdzJztcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGhhc2ggc3RyaW5nIGJhc2VkIG9uIHN0cmluZ1xuICogQHBhcmFtIHN0clxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSGFzaElkRnJvbVN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIGdlbmVyYXRlIGhhc2ggc3RyaW5nIGJhc2VkIG9uIHN0cmluZ1xuICBsZXQgaGFzaCA9IDA7XG4gIGxldCBpO1xuICBsZXQgY2hyO1xuICBsZXQgbGVuO1xuICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGhhc2gudG9TdHJpbmcoKTtcbiAgZm9yIChpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY2hyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgfVxuICByZXR1cm4gaGFzaC50b1N0cmluZygzNik7XG59XG5cbi8qKlxuICogRGV0ZWN0IGNocm9tZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0geWVzIG9yIG5vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Nocm9tZSgpOiBib29sZWFuIHtcbiAgLy8gQ2hyb21lIDErXG4gIHJldHVybiB3aW5kb3cuY2hyb21lICYmIHdpbmRvdy5jaHJvbWUud2Vic3RvcmU7XG59XG5cbi8qKlxuICogQ29udmVydCBjYW1lbCBzdHlsZSBuYW1lcyB0byB0aXRsZVxuICogc3Ryb2tlQ29sb3IgLT4gU3Ryb2tlIENvbG9yXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FtZWxUb1RpdGxlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYnJlYWtXb3JkID0gc3RyLnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpO1xuICByZXR1cm4gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGJyZWFrV29yZCk7XG59XG5cbi8qKlxuICogQ29udmVydCBuYW1lcyB0byBjYW1lbCBzdHlsZVxuICogU3Ryb2tlIENvbG9yIC0+IHN0cm9rZUNvbG9yXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3QgY2FtZWxpemUgPSAoc3RyOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyg/Ol5cXHd8W0EtWl18XFxiXFx3fFxccyspL2csIChtYXRjaCwgaW5kZXgpID0+IHtcbiAgICBpZiAoTnVtYmVyKG1hdGNoKSA9PT0gMCkgcmV0dXJuICcnOyAvLyBvciBpZiAoL1xccysvLnRlc3QobWF0Y2gpKSBmb3Igd2hpdGUgc3BhY2VzXG4gICAgcmV0dXJuIGluZGV4ID09PSAwID8gbWF0Y2gudG9Mb3dlckNhc2UoKSA6IG1hdGNoLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBpbW11dGFibHkgaW5zZXJ0IHZhbHVlIHRvIGFuIEFycmF5IG9yIE9iamVjdFxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IG9ialxuICogQHBhcmFtIHtOdW1iZXJ8U3RyaW5nfSBrZXlcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9XG4gKi9cbmV4cG9ydCBjb25zdCBpbnNlcnRWYWx1ZSA9IDxUIGV4dGVuZHMgYW55W10gfCBvYmplY3Q+KFxuICBvYmo6IFQsXG4gIGtleTogbnVtYmVyIHwgc3RyaW5nLFxuICB2YWx1ZTogYW55XG4pOiBUID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSAmJiB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbLi4ub2JqLnNsaWNlKDAsIGtleSksIHZhbHVlLCAuLi5vYmouc2xpY2Uoa2V5ICsgMSwgb2JqLmxlbmd0aCldIGFzIFQ7XG4gIH1cblxuICByZXR1cm4gey4uLm9iaiwgW2tleV06IHZhbHVlfTtcbn07XG5cbi8qKlxuICogY2hlY2sgaWYgdmFsdWUgaXMgYSBsb29zZSBvYmplY3QgaW5jbHVkaW5nIGEgcGxhaW4gb2JqZWN0LCBhcnJheSwgZnVuY3Rpb25cbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIHdoZXRoZXIgaXMgYW4gb2JqZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB5ZXMgb3Igbm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqOiB1bmtub3duKTogb2JqIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIG9iaiA9PT0gT2JqZWN0KG9iaikgJiYgdHlwZW9mIG9iaiAhPT0gJ2Z1bmN0aW9uJyAmJiAhQXJyYXkuaXNBcnJheShvYmopO1xufVxuXG5jb25zdCBzZXRQYXRoID0gPFQgZXh0ZW5kcyBhbnlbXSB8IG9iamVjdD4oXG4gIFtrZXksIC4uLm5leHRdOiAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICB2YWx1ZTogYW55LFxuICBvYmo6IG9iamVjdCB8IGFueVtdXG4pOiBUID0+IHtcbiAgLy8gaXMgT2JqZWN0IGFsbG93cyBqcyBvYmplY3QsIGFycmF5IGFuZCBmdW5jdGlvblxuICBpZiAoIWlzT2JqZWN0KG9iaikpIHtcbiAgICByZXR1cm4gb2JqIGFzIFQ7XG4gIH1cblxuICBpZiAobmV4dC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gaW5zZXJ0VmFsdWUob2JqLCBrZXksIHZhbHVlKSBhcyBUO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gaW5zZXJ0VmFsdWUoXG4gICAgb2JqLFxuICAgIGtleSxcbiAgICBzZXRQYXRoKG5leHQsIHZhbHVlLCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpID8gb2JqW2tleV0gOiB7fSlcbiAgKTtcbn07XG5cbi8qKlxuICogSW1tdXRhYmxlIHZlcnNpb24gb2YgXy5zZXRcbiAqIEBwYXJhbSB7QXJyYXk8U3RyaW5nfE51bWJlcj59IHBhdGhcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjb25zdCBzZXQgPSA8VCBleHRlbmRzIGFueVtdIHwgb2JqZWN0PihwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdLCB2YWx1ZTogYW55LCBvYmo6IFQpOiBUID0+XG4gIG9iaiA9PT0gbnVsbCA/IG9iaiA6IHNldFBhdGgocGF0aCwgdmFsdWUsIG9iaik7XG5cbnR5cGUgRXJyb3JPYmplY3QgPSB7XG4gIGVycm9yPzogYW55O1xuICBlcnI/OiBhbnk7XG4gIG1lc3NhZ2U/OiBhbnk7XG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFID0gJ1NvbWV0aGluZyB3ZW50IHdyb25nJztcblxuLyoqXG4gKiBHZXQgZXJyb3IgaW5mb3JtYXRpb24gb2YgdW5rbm93biB0eXBlXG4gKiBFeHRyYWN0cyBhcyBtdWNoIGh1bWFuIHJlYWRhYmxlIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlXG4gKiBFbnN1cmUgcmVzdWx0IGlzIGFuIEVycm9yIG9iamVjdCBzdWl0YWJsZSBmb3IgdGhyb3cgb3IgcHJvbWlzZSByZWplY3Rpb25cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSAgZXJyIC0gVW5rbm93biBlcnJvclxuICogQHJldHVybiB7c3RyaW5nfSAtIGh1bWFuIHJlYWRhYmxlIGVycm9yIG1zZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3IoXG4gIGVycj86IEVycm9yIHwgRXJyb3JPYmplY3QgfCBzdHJpbmcsXG4gIGRlZmF1bHRNZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0Vcbik6IHN0cmluZyB7XG4gIGlmICghZXJyKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRNZXNzYWdlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVycjtcbiAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHJldHVybiBlcnIubWVzc2FnZTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZXJyID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXJyLCAnbWVzc2FnZScpXG4gICAgICA/IGdldEVycm9yKGVyci5tZXNzYWdlKVxuICAgICAgOiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXJyLCAnZXJyb3InKVxuICAgICAgPyBnZXRFcnJvcihlcnIuZXJyb3IpXG4gICAgICA6IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlcnIsICdlcnInKVxuICAgICAgPyBnZXRFcnJvcihlcnIuZXJyKVxuICAgICAgOiBKU09OLnN0cmluZ2lmeShlcnIpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRNZXNzYWdlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlJbnNlcnQ8VD4oYXJyOiBUW10sIGluZGV4OiBudW1iZXIsIHZhbDogVCk6IFRbXSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuXG4gIHJldHVybiBbLi4uYXJyLnNsaWNlKDAsIGluZGV4KSwgdmFsLCAuLi5hcnIuc2xpY2UoaW5kZXgpXTtcbn1cblxuY29uc3QgYXJyYXlNb3ZlTXV0YXRlID0gKGFycmF5LCBmcm9tLCB0bykgPT4ge1xuICBhcnJheS5zcGxpY2UodG8gPCAwID8gYXJyYXkubGVuZ3RoICsgdG8gOiB0bywgMCwgYXJyYXkuc3BsaWNlKGZyb20sIDEpWzBdKTtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7YW55W119IGFycmF5XG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbVxuICogQHBhcmFtIHtudW1iZXJ9IHRvXG4gKiBAcmV0dXJucyB7YW55W119XG4gKi9cbmV4cG9ydCBjb25zdCBhcnJheU1vdmUgPSA8VD4oYXJyYXk6IFRbXSwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogVFtdID0+IHtcbiAgYXJyYXkgPSBhcnJheS5zbGljZSgpO1xuICBhcnJheU1vdmVNdXRhdGUoYXJyYXksIGZyb20sIHRvKTtcbiAgcmV0dXJuIGFycmF5O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc01vYmlsZVdpZHRoKGJyZWFrUG9pbnRWYWx1ZXM6IHtwYWxtOiBudW1iZXI7IGRlc2s6IG51bWJlcn0pOiBib29sZWFuIHtcbiAgY29uc3QgbW9iaWxlV2lkdGggPSB3aW5kb3cubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHticmVha1BvaW50VmFsdWVzLnBhbG19cHgpYCk7XG4gIHJldHVybiBtb2JpbGVXaWR0aC5tYXRjaGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzUG9ydGFibGVXaWR0aChicmVha1BvaW50VmFsdWVzOiB7cGFsbTogbnVtYmVyOyBkZXNrOiBudW1iZXJ9KTogYm9vbGVhbiB7XG4gIGNvbnN0IG1vYmlsZVdpZHRoID0gd2luZG93Lm1hdGNoTWVkaWEoYChtYXgtd2lkdGg6ICR7YnJlYWtQb2ludFZhbHVlcy5kZXNrfXB4KWApO1xuICByZXR1cm4gbW9iaWxlV2lkdGgubWF0Y2hlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVzdCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzPy5lbnY/Lk5PREVfRU5WID09PSAndGVzdCc7XG59XG5cbi8qKlxuICogRmlsdGVycyBhbiBvYmplY3QgYnkgYW4gYXJiaXRyYXJ5IHByZWRpY2F0ZVxuICogUmV0dXJucyBhIG5ldyBvYmplY3QgY29udGFpbmluZyBhbGwgZWxlbWVudHMgdGhhdCBtYXRjaCB0aGUgcHJlZGljYXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIE9iamVjdCB0byBiZSBmaWx0ZXJlZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFByZWRpY2F0ZSBieSB3aGljaCB0aGUgb2JqZWN0IHdpbGwgYmUgZmlsdGVyZWRcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJPYmplY3RCeVByZWRpY2F0ZShvYmosIHByZWRpY2F0ZSkge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKS5yZWR1Y2UoXG4gICAgKGFjYywgZW50cnkpID0+IChwcmVkaWNhdGUoZW50cnlbMF0sIGVudHJ5WzFdKSA/IHsuLi5hY2MsIFtlbnRyeVswXV06IGVudHJ5WzFdfSA6IGFjYyksXG4gICAge31cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24oZnVuYzogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQnlJZChpZDogc3RyaW5nKTogPFggZXh0ZW5kcyB7aWQ6IHN0cmluZ30+KGFycjogWFtdKSA9PiBYIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGFyciA9PiBhcnIuZmluZChhID0+IGEuaWQgPT09IGlkKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFycmF5IGRpZmZlcmVuY2UgZnJvbVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlEaWZmZXJlbmNlPFggZXh0ZW5kcyB7aWQ6IHN0cmluZ30+KHNvdXJjZTogWFtdKTogKGNvbXBhcmU6IFhbXSkgPT4gWFtdIHtcbiAgY29uc3QgaW5pdGlhbDogWFtdID0gW107XG4gIHJldHVybiBjb21wYXJlID0+XG4gICAgc291cmNlLnJlZHVjZSgoYWNjLCBlbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBmb3VuZEVsZW1lbnQgPSBmaW5kQnlJZChlbGVtZW50LmlkKShjb21wYXJlKTtcbiAgICAgIHJldHVybiBmb3VuZEVsZW1lbnQgPyBbLi4uYWNjLCBmb3VuZEVsZW1lbnRd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
241
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc3RyaW5ncyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZ2VuZXJhdGVIYXNoSWRGcm9tU3RyaW5nIiwic3RyIiwiaGFzaCIsImkiLCJjaHIiLCJsZW4iLCJ0b1N0cmluZyIsImNoYXJDb2RlQXQiLCJpc0Nocm9tZSIsIndpbmRvdyIsImNocm9tZSIsIndlYnN0b3JlIiwiY2FtZWxUb1RpdGxlIiwiYnJlYWtXb3JkIiwicmVwbGFjZSIsImNhcGl0YWxpemVGaXJzdExldHRlciIsImNhbWVsaXplIiwiZXhwb3J0cyIsIm1hdGNoIiwiaW5kZXgiLCJOdW1iZXIiLCJ0b0xvd2VyQ2FzZSIsInRvVXBwZXJDYXNlIiwiaW5zZXJ0VmFsdWUiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJzbGljZSIsImlzT2JqZWN0IiwiX3R5cGVvZjIiLCJpc1BsYWluT2JqZWN0Iiwic2V0UGF0aCIsIl9yZWYiLCJfcmVmMiIsIl90b0FycmF5MiIsIm5leHQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzZXQiLCJwYXRoIiwiREVGQVVMVF9FUlJPUl9NRVNTQUdFIiwiZ2V0RXJyb3IiLCJlcnIiLCJkZWZhdWx0TWVzc2FnZSIsInVuZGVmaW5lZCIsIkVycm9yIiwibWVzc2FnZSIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImFycmF5SW5zZXJ0IiwiYXJyIiwidmFsIiwiYXJyYXlNb3ZlTXV0YXRlIiwiYXJyYXkiLCJmcm9tIiwidG8iLCJzcGxpY2UiLCJhcnJheU1vdmUiLCJoYXNNb2JpbGVXaWR0aCIsImJyZWFrUG9pbnRWYWx1ZXMiLCJtb2JpbGVXaWR0aCIsIm1hdGNoTWVkaWEiLCJwYWxtIiwibWF0Y2hlcyIsImhhc1BvcnRhYmxlV2lkdGgiLCJkZXNrIiwiaXNUZXN0IiwiX2dsb2JhbFRoaXMkcHJvY2VzcyIsImdsb2JhbFRoaXMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJmaWx0ZXJPYmplY3RCeVByZWRpY2F0ZSIsInByZWRpY2F0ZSIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2MiLCJlbnRyeSIsImlzRnVuY3Rpb24iLCJmdW5jIiwiZmluZEJ5SWQiLCJpZCIsImZpbmQiLCJhIiwiYXJyYXlEaWZmZXJlbmNlIiwic291cmNlIiwiaW5pdGlhbCIsImNvbXBhcmUiLCJlbGVtZW50IiwiZm91bmRFbGVtZW50Il0sInNvdXJjZXMiOlsiLi4vc3JjL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB3aW5kb3cgZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQge2NhcGl0YWxpemVGaXJzdExldHRlcn0gZnJvbSAnLi9zdHJpbmdzJztcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGhhc2ggc3RyaW5nIGJhc2VkIG9uIHN0cmluZ1xuICogQHBhcmFtIHN0clxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSGFzaElkRnJvbVN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIGdlbmVyYXRlIGhhc2ggc3RyaW5nIGJhc2VkIG9uIHN0cmluZ1xuICBsZXQgaGFzaCA9IDA7XG4gIGxldCBpO1xuICBsZXQgY2hyO1xuICBsZXQgbGVuO1xuICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGhhc2gudG9TdHJpbmcoKTtcbiAgZm9yIChpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY2hyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgfVxuICByZXR1cm4gaGFzaC50b1N0cmluZygzNik7XG59XG5cbi8qKlxuICogRGV0ZWN0IGNocm9tZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0geWVzIG9yIG5vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Nocm9tZSgpOiBib29sZWFuIHtcbiAgLy8gQ2hyb21lIDErXG4gIHJldHVybiB3aW5kb3cuY2hyb21lICYmIHdpbmRvdy5jaHJvbWUud2Vic3RvcmU7XG59XG5cbi8qKlxuICogQ29udmVydCBjYW1lbCBzdHlsZSBuYW1lcyB0byB0aXRsZVxuICogc3Ryb2tlQ29sb3IgLT4gU3Ryb2tlIENvbG9yXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FtZWxUb1RpdGxlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgYnJlYWtXb3JkID0gc3RyLnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpO1xuICByZXR1cm4gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGJyZWFrV29yZCk7XG59XG5cbi8qKlxuICogQ29udmVydCBuYW1lcyB0byBjYW1lbCBzdHlsZVxuICogU3Ryb2tlIENvbG9yIC0+IHN0cm9rZUNvbG9yXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3QgY2FtZWxpemUgPSAoc3RyOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoLyg/Ol5cXHd8W0EtWl18XFxiXFx3fFxccyspL2csIChtYXRjaCwgaW5kZXgpID0+IHtcbiAgICBpZiAoTnVtYmVyKG1hdGNoKSA9PT0gMCkgcmV0dXJuICcnOyAvLyBvciBpZiAoL1xccysvLnRlc3QobWF0Y2gpKSBmb3Igd2hpdGUgc3BhY2VzXG4gICAgcmV0dXJuIGluZGV4ID09PSAwID8gbWF0Y2gudG9Mb3dlckNhc2UoKSA6IG1hdGNoLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBpbW11dGFibHkgaW5zZXJ0IHZhbHVlIHRvIGFuIEFycmF5IG9yIE9iamVjdFxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IG9ialxuICogQHBhcmFtIHtOdW1iZXJ8U3RyaW5nfSBrZXlcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9XG4gKi9cbmV4cG9ydCBjb25zdCBpbnNlcnRWYWx1ZSA9IDxUIGV4dGVuZHMgYW55W10gfCBvYmplY3Q+KFxuICBvYmo6IFQsXG4gIGtleTogbnVtYmVyIHwgc3RyaW5nLFxuICB2YWx1ZTogYW55XG4pOiBUID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSAmJiB0eXBlb2Yga2V5ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBbLi4ub2JqLnNsaWNlKDAsIGtleSksIHZhbHVlLCAuLi5vYmouc2xpY2Uoa2V5ICsgMSwgb2JqLmxlbmd0aCldIGFzIFQ7XG4gIH1cblxuICByZXR1cm4gey4uLm9iaiwgW2tleV06IHZhbHVlfTtcbn07XG5cbi8qKlxuICogY2hlY2sgaWYgdmFsdWUgaXMgYSBsb29zZSBvYmplY3QgaW5jbHVkaW5nIGEgcGxhaW4gb2JqZWN0LCBhcnJheSwgZnVuY3Rpb25cbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIHdoZXRoZXIgaXMgYW4gb2JqZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB5ZXMgb3Igbm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqOiB1bmtub3duKTogb2JqIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIG9iaiA9PT0gT2JqZWN0KG9iaikgJiYgdHlwZW9mIG9iaiAhPT0gJ2Z1bmN0aW9uJyAmJiAhQXJyYXkuaXNBcnJheShvYmopO1xufVxuXG5jb25zdCBzZXRQYXRoID0gPFQgZXh0ZW5kcyBhbnlbXSB8IG9iamVjdD4oXG4gIFtrZXksIC4uLm5leHRdOiAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICB2YWx1ZTogYW55LFxuICBvYmo6IG9iamVjdCB8IGFueVtdXG4pOiBUID0+IHtcbiAgLy8gaXMgT2JqZWN0IGFsbG93cyBqcyBvYmplY3QsIGFycmF5IGFuZCBmdW5jdGlvblxuICBpZiAoIWlzT2JqZWN0KG9iaikpIHtcbiAgICByZXR1cm4gb2JqIGFzIFQ7XG4gIH1cblxuICBpZiAobmV4dC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gaW5zZXJ0VmFsdWUob2JqLCBrZXksIHZhbHVlKSBhcyBUO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gaW5zZXJ0VmFsdWUoXG4gICAgb2JqLFxuICAgIGtleSxcbiAgICBzZXRQYXRoKG5leHQsIHZhbHVlLCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpID8gb2JqW2tleV0gOiB7fSlcbiAgKTtcbn07XG5cbi8qKlxuICogSW1tdXRhYmxlIHZlcnNpb24gb2YgXy5zZXRcbiAqIEBwYXJhbSB7QXJyYXk8U3RyaW5nfE51bWJlcj59IHBhdGhcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjb25zdCBzZXQgPSA8VCBleHRlbmRzIGFueVtdIHwgb2JqZWN0PihwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdLCB2YWx1ZTogYW55LCBvYmo6IFQpOiBUID0+XG4gIG9iaiA9PT0gbnVsbCA/IG9iaiA6IHNldFBhdGgocGF0aCwgdmFsdWUsIG9iaik7XG5cbnR5cGUgRXJyb3JPYmplY3QgPSB7XG4gIGVycm9yPzogYW55O1xuICBlcnI/OiBhbnk7XG4gIG1lc3NhZ2U/OiBhbnk7XG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFID0gJ1NvbWV0aGluZyB3ZW50IHdyb25nJztcblxuLyoqXG4gKiBHZXQgZXJyb3IgaW5mb3JtYXRpb24gb2YgdW5rbm93biB0eXBlXG4gKiBFeHRyYWN0cyBhcyBtdWNoIGh1bWFuIHJlYWRhYmxlIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlXG4gKiBFbnN1cmUgcmVzdWx0IGlzIGFuIEVycm9yIG9iamVjdCBzdWl0YWJsZSBmb3IgdGhyb3cgb3IgcHJvbWlzZSByZWplY3Rpb25cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSAgZXJyIC0gVW5rbm93biBlcnJvclxuICogQHJldHVybiB7c3RyaW5nfSAtIGh1bWFuIHJlYWRhYmxlIGVycm9yIG1zZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3IoXG4gIGVycj86IEVycm9yIHwgRXJyb3JPYmplY3QgfCBzdHJpbmcsXG4gIGRlZmF1bHRNZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0Vcbik6IHN0cmluZyB7XG4gIGlmICghZXJyKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRNZXNzYWdlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGVycjtcbiAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHJldHVybiBlcnIubWVzc2FnZTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZXJyID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXJyLCAnbWVzc2FnZScpXG4gICAgICA/IGdldEVycm9yKGVyci5tZXNzYWdlKVxuICAgICAgOiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXJyLCAnZXJyb3InKVxuICAgICAgPyBnZXRFcnJvcihlcnIuZXJyb3IpXG4gICAgICA6IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlcnIsICdlcnInKVxuICAgICAgPyBnZXRFcnJvcihlcnIuZXJyKVxuICAgICAgOiBKU09OLnN0cmluZ2lmeShlcnIpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRNZXNzYWdlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlJbnNlcnQ8VD4oYXJyOiBUW10sIGluZGV4OiBudW1iZXIsIHZhbDogVCk6IFRbXSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuXG4gIHJldHVybiBbLi4uYXJyLnNsaWNlKDAsIGluZGV4KSwgdmFsLCAuLi5hcnIuc2xpY2UoaW5kZXgpXTtcbn1cblxuY29uc3QgYXJyYXlNb3ZlTXV0YXRlID0gKGFycmF5LCBmcm9tLCB0bykgPT4ge1xuICBhcnJheS5zcGxpY2UodG8gPCAwID8gYXJyYXkubGVuZ3RoICsgdG8gOiB0bywgMCwgYXJyYXkuc3BsaWNlKGZyb20sIDEpWzBdKTtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7YW55W119IGFycmF5XG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbVxuICogQHBhcmFtIHtudW1iZXJ9IHRvXG4gKiBAcmV0dXJucyB7YW55W119XG4gKi9cbmV4cG9ydCBjb25zdCBhcnJheU1vdmUgPSA8VD4oYXJyYXk6IFRbXSwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogVFtdID0+IHtcbiAgYXJyYXkgPSBhcnJheS5zbGljZSgpO1xuICBhcnJheU1vdmVNdXRhdGUoYXJyYXksIGZyb20sIHRvKTtcbiAgcmV0dXJuIGFycmF5O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc01vYmlsZVdpZHRoKGJyZWFrUG9pbnRWYWx1ZXM6IHtwYWxtOiBudW1iZXI7IGRlc2s6IG51bWJlcn0pOiBib29sZWFuIHtcbiAgY29uc3QgbW9iaWxlV2lkdGggPSB3aW5kb3cubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHticmVha1BvaW50VmFsdWVzLnBhbG19cHgpYCk7XG4gIHJldHVybiBtb2JpbGVXaWR0aC5tYXRjaGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzUG9ydGFibGVXaWR0aChicmVha1BvaW50VmFsdWVzOiB7cGFsbTogbnVtYmVyOyBkZXNrOiBudW1iZXJ9KTogYm9vbGVhbiB7XG4gIGNvbnN0IG1vYmlsZVdpZHRoID0gd2luZG93Lm1hdGNoTWVkaWEoYChtYXgtd2lkdGg6ICR7YnJlYWtQb2ludFZhbHVlcy5kZXNrfXB4KWApO1xuICByZXR1cm4gbW9iaWxlV2lkdGgubWF0Y2hlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVzdCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcz8uZW52Py5OT0RFX0VOViA9PT0gJ3Rlc3QnO1xufVxuXG4vKipcbiAqIEZpbHRlcnMgYW4gb2JqZWN0IGJ5IGFuIGFyYml0cmFyeSBwcmVkaWNhdGVcbiAqIFJldHVybnMgYSBuZXcgb2JqZWN0IGNvbnRhaW5pbmcgYWxsIGVsZW1lbnRzIHRoYXQgbWF0Y2ggdGhlIHByZWRpY2F0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBPYmplY3QgdG8gYmUgZmlsdGVyZWRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBQcmVkaWNhdGUgYnkgd2hpY2ggdGhlIG9iamVjdCB3aWxsIGJlIGZpbHRlcmVkXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyT2JqZWN0QnlQcmVkaWNhdGUob2JqLCBwcmVkaWNhdGUpIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iaikucmVkdWNlKFxuICAgIChhY2MsIGVudHJ5KSA9PiAocHJlZGljYXRlKGVudHJ5WzBdLCBlbnRyeVsxXSkgPyB7Li4uYWNjLCBbZW50cnlbMF1dOiBlbnRyeVsxXX0gOiBhY2MpLFxuICAgIHt9XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKGZ1bmM6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBmdW5jID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEJ5SWQoaWQ6IHN0cmluZyk6IDxYIGV4dGVuZHMge2lkOiBzdHJpbmd9PihhcnI6IFhbXSkgPT4gWCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBhcnIgPT4gYXJyLmZpbmQoYSA9PiBhLmlkID09PSBpZCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhcnJheSBkaWZmZXJlbmNlIGZyb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5RGlmZmVyZW5jZTxYIGV4dGVuZHMge2lkOiBzdHJpbmd9Pihzb3VyY2U6IFhbXSk6IChjb21wYXJlOiBYW10pID0+IFhbXSB7XG4gIGNvbnN0IGluaXRpYWw6IFhbXSA9IFtdO1xuICByZXR1cm4gY29tcGFyZSA9PlxuICAgIHNvdXJjZS5yZWR1Y2UoKGFjYywgZWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgZm91bmRFbGVtZW50ID0gZmluZEJ5SWQoZWxlbWVudC5pZCkoY29tcGFyZSk7XG4gICAgICByZXR1cm4gZm91bmRFbGVtZW50ID8gWy4uLmFjYywgZm91bmRFbGVtZW50XSA6IGFjYztcbiAgICB9LCBpbml0aWFsKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFBZ0QsU0FBQUUsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFnQixjQUFBLENBQUFuQixDQUFBLEVBQUFDLENBQUEsRUFBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBTixDQUFBLEVBQUFELENBQUEsaUJBQUFELENBQUEsSUFKaEQ7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTb0Isd0JBQXdCQSxDQUFDQyxHQUFXLEVBQVU7RUFDNUQ7RUFDQSxJQUFJQyxJQUFJLEdBQUcsQ0FBQztFQUNaLElBQUlDLENBQUM7RUFDTCxJQUFJQyxHQUFHO0VBQ1AsSUFBSUMsR0FBRztFQUNQLElBQUlKLEdBQUcsQ0FBQ1AsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPUSxJQUFJLENBQUNJLFFBQVEsQ0FBQyxDQUFDO0VBQzVDLEtBQUtILENBQUMsR0FBRyxDQUFDLEVBQUVFLEdBQUcsR0FBR0osR0FBRyxDQUFDUCxNQUFNLEVBQUVTLENBQUMsR0FBR0UsR0FBRyxFQUFFRixDQUFDLEVBQUUsRUFBRTtJQUMxQ0MsR0FBRyxHQUFHSCxHQUFHLENBQUNNLFVBQVUsQ0FBQ0osQ0FBQyxDQUFDO0lBQ3ZCO0lBQ0FELElBQUksR0FBRyxDQUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJQSxJQUFJLEdBQUdFLEdBQUc7SUFDL0I7SUFDQUYsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQ2I7RUFDQSxPQUFPQSxJQUFJLENBQUNJLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDMUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxRQUFRQSxDQUFBLEVBQVk7RUFDbEM7RUFDQSxPQUFPQyxrQkFBTSxDQUFDQyxNQUFNLElBQUlELGtCQUFNLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUTtBQUNoRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyxZQUFZQSxDQUFDWCxHQUFXLEVBQVU7RUFDaEQsSUFBTVksU0FBUyxHQUFHWixHQUFHLENBQUNhLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO0VBQ2hELE9BQU8sSUFBQUMsOEJBQXFCLEVBQUNGLFNBQVMsQ0FBQztBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNRyxRQUFRLEdBQUFDLE9BQUEsQ0FBQUQsUUFBQSxHQUFHLFNBQVhBLFFBQVFBLENBQUlmLEdBQVcsRUFBYTtFQUMvQyxPQUFPQSxHQUFHLENBQUNhLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxVQUFDSSxLQUFLLEVBQUVDLEtBQUssRUFBSztJQUM5RCxJQUFJQyxNQUFNLENBQUNGLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLE9BQU9DLEtBQUssS0FBSyxDQUFDLEdBQUdELEtBQUssQ0FBQ0csV0FBVyxDQUFDLENBQUMsR0FBR0gsS0FBSyxDQUFDSSxXQUFXLENBQUMsQ0FBQztFQUNoRSxDQUFDLENBQUM7QUFDSixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsV0FBVyxHQUFBTixPQUFBLENBQUFNLFdBQUEsR0FBRyxTQUFkQSxXQUFXQSxDQUN0QkMsR0FBTSxFQUNOQyxHQUFvQixFQUNwQkMsS0FBVSxFQUNKO0VBQ04sSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNKLEdBQUcsQ0FBQyxJQUFJLE9BQU9DLEdBQUcsS0FBSyxRQUFRLEVBQUU7SUFDakQsVUFBQUksTUFBQSxLQUFBQyxtQkFBQSxhQUFXTixHQUFHLENBQUNPLEtBQUssQ0FBQyxDQUFDLEVBQUVOLEdBQUcsQ0FBQyxJQUFFQyxLQUFLLE9BQUFJLG1CQUFBLGFBQUtOLEdBQUcsQ0FBQ08sS0FBSyxDQUFDTixHQUFHLEdBQUcsQ0FBQyxFQUFFRCxHQUFHLENBQUM5QixNQUFNLENBQUM7RUFDeEU7RUFFQSxPQUFBRixhQUFBLENBQUFBLGFBQUEsS0FBV2dDLEdBQUcsV0FBQTVCLGdCQUFBLGlCQUFHNkIsR0FBRyxFQUFHQyxLQUFLO0FBQzlCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTTSxRQUFRQSxDQUFDTixLQUFLLEVBQVc7RUFDdkMsT0FBT0EsS0FBSyxLQUFLLElBQUksS0FBSyxJQUFBTyxRQUFBLGFBQU9QLEtBQUssTUFBSyxRQUFRLElBQUksT0FBT0EsS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUNyRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNRLGFBQWFBLENBQUNWLEdBQVksRUFBa0M7RUFDMUUsT0FBT0EsR0FBRyxLQUFLekMsTUFBTSxDQUFDeUMsR0FBRyxDQUFDLElBQUksT0FBT0EsR0FBRyxLQUFLLFVBQVUsSUFBSSxDQUFDRyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0osR0FBRyxDQUFDO0FBQ2hGO0FBRUEsSUFBTVcsUUFBTyxHQUFHLFNBQVZBLE9BQU9BLENBQUFDLElBQUEsRUFFWFYsS0FBVSxFQUNWRixHQUFtQixFQUNiO0VBQUEsSUFBQWEsS0FBQSxPQUFBQyxTQUFBLGFBQUFGLElBQUE7SUFITFgsR0FBRyxHQUFBWSxLQUFBO0lBQUtFLElBQUksR0FBQUYsS0FBQSxDQUFBTixLQUFBO0VBSWI7RUFDQSxJQUFJLENBQUNDLFFBQVEsQ0FBQ1IsR0FBRyxDQUFDLEVBQUU7SUFDbEIsT0FBT0EsR0FBRztFQUNaO0VBRUEsSUFBSWUsSUFBSSxDQUFDN0MsTUFBTSxLQUFLLENBQUMsRUFBRTtJQUNyQixPQUFPNkIsV0FBVyxDQUFDQyxHQUFHLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxDQUFDO0VBQ3JDOztFQUVBO0VBQ0EsT0FBT0gsV0FBVyxDQUNoQkMsR0FBRyxFQUNIQyxHQUFHLEVBQ0hVLFFBQU8sQ0FBQ0ksSUFBSSxFQUFFYixLQUFLLEVBQUUzQyxNQUFNLENBQUN5RCxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDbEIsR0FBRyxFQUFFQyxHQUFHLENBQUMsR0FBR0QsR0FBRyxDQUFDQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDckYsQ0FBQztBQUNILENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1rQixHQUFHLEdBQUExQixPQUFBLENBQUEwQixHQUFBLEdBQUcsU0FBTkEsR0FBR0EsQ0FBOEJDLElBQXlCLEVBQUVsQixLQUFVLEVBQUVGLEdBQU07RUFBQSxPQUN6RkEsR0FBRyxLQUFLLElBQUksR0FBR0EsR0FBRyxHQUFHVyxRQUFPLENBQUNTLElBQUksRUFBRWxCLEtBQUssRUFBRUYsR0FBRyxDQUFDO0FBQUE7QUFRekMsSUFBTXFCLHFCQUFxQixHQUFBNUIsT0FBQSxDQUFBNEIscUJBQUEsR0FBRyxzQkFBc0I7O0FBRTNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLFFBQVFBLENBQ3RCQyxHQUFrQyxFQUUxQjtFQUFBLElBRFJDLGNBQXNCLEdBQUF2RCxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBd0QsU0FBQSxHQUFBeEQsU0FBQSxNQUFHb0QscUJBQXFCO0VBRTlDLElBQUksQ0FBQ0UsR0FBRyxFQUFFO0lBQ1IsT0FBT0MsY0FBYztFQUN2QjtFQUVBLElBQUksT0FBT0QsR0FBRyxLQUFLLFFBQVEsRUFBRTtJQUMzQixPQUFPQSxHQUFHO0VBQ1osQ0FBQyxNQUFNLElBQUlBLEdBQUcsWUFBWUcsS0FBSyxFQUFFO0lBQy9CLE9BQU9ILEdBQUcsQ0FBQ0ksT0FBTztFQUNwQixDQUFDLE1BQU0sSUFBSSxJQUFBbEIsUUFBQSxhQUFPYyxHQUFHLE1BQUssUUFBUSxFQUFFO0lBQ2xDLE9BQU9oRSxNQUFNLENBQUN5RCxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSyxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQ3ZERCxRQUFRLENBQUNDLEdBQUcsQ0FBQ0ksT0FBTyxDQUFDLEdBQ3JCcEUsTUFBTSxDQUFDeUQsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ0ssR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUNsREQsUUFBUSxDQUFDQyxHQUFHLENBQUNLLEtBQUssQ0FBQyxHQUNuQnJFLE1BQU0sQ0FBQ3lELFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNLLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FDaERELFFBQVEsQ0FBQ0MsR0FBRyxDQUFDQSxHQUFHLENBQUMsR0FDakJNLElBQUksQ0FBQ0MsU0FBUyxDQUFDUCxHQUFHLENBQUM7RUFDekI7RUFFQSxPQUFPQyxjQUFjO0FBQ3ZCO0FBRU8sU0FBU08sV0FBV0EsQ0FBSUMsR0FBUSxFQUFFckMsS0FBYSxFQUFFc0MsR0FBTSxFQUFPO0VBQ25FLElBQUksQ0FBQzlCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDNEIsR0FBRyxDQUFDLEVBQUU7SUFDdkIsT0FBT0EsR0FBRztFQUNaO0VBRUEsVUFBQTNCLE1BQUEsS0FBQUMsbUJBQUEsYUFBVzBCLEdBQUcsQ0FBQ3pCLEtBQUssQ0FBQyxDQUFDLEVBQUVaLEtBQUssQ0FBQyxJQUFFc0MsR0FBRyxPQUFBM0IsbUJBQUEsYUFBSzBCLEdBQUcsQ0FBQ3pCLEtBQUssQ0FBQ1osS0FBSyxDQUFDO0FBQzFEO0FBRUEsSUFBTXVDLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSUMsS0FBSyxFQUFFQyxJQUFJLEVBQUVDLEVBQUUsRUFBSztFQUMzQ0YsS0FBSyxDQUFDRyxNQUFNLENBQUNELEVBQUUsR0FBRyxDQUFDLEdBQUdGLEtBQUssQ0FBQ2pFLE1BQU0sR0FBR21FLEVBQUUsR0FBR0EsRUFBRSxFQUFFLENBQUMsRUFBRUYsS0FBSyxDQUFDRyxNQUFNLENBQUNGLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUcsU0FBUyxHQUFBOUMsT0FBQSxDQUFBOEMsU0FBQSxHQUFHLFNBQVpBLFNBQVNBLENBQU9KLEtBQVUsRUFBRUMsSUFBWSxFQUFFQyxFQUFVLEVBQVU7RUFDekVGLEtBQUssR0FBR0EsS0FBSyxDQUFDNUIsS0FBSyxDQUFDLENBQUM7RUFDckIyQixlQUFlLENBQUNDLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxFQUFFLENBQUM7RUFDaEMsT0FBT0YsS0FBSztBQUNkLENBQUM7QUFFTSxTQUFTSyxjQUFjQSxDQUFDQyxnQkFBOEMsRUFBVztFQUN0RixJQUFNQyxXQUFXLEdBQUd6RCxrQkFBTSxDQUFDMEQsVUFBVSxnQkFBQXRDLE1BQUEsQ0FBZ0JvQyxnQkFBZ0IsQ0FBQ0csSUFBSSxRQUFLLENBQUM7RUFDaEYsT0FBT0YsV0FBVyxDQUFDRyxPQUFPO0FBQzVCO0FBRU8sU0FBU0MsZ0JBQWdCQSxDQUFDTCxnQkFBOEMsRUFBVztFQUN4RixJQUFNQyxXQUFXLEdBQUd6RCxrQkFBTSxDQUFDMEQsVUFBVSxnQkFBQXRDLE1BQUEsQ0FBZ0JvQyxnQkFBZ0IsQ0FBQ00sSUFBSSxRQUFLLENBQUM7RUFDaEYsT0FBT0wsV0FBVyxDQUFDRyxPQUFPO0FBQzVCO0FBRU8sU0FBU0csTUFBTUEsQ0FBQSxFQUFZO0VBQUEsSUFBQUMsbUJBQUE7RUFDaEMsT0FBTyxFQUFBQSxtQkFBQSxHQUFBQyxVQUFVLENBQUNDLE9BQU8sY0FBQUYsbUJBQUEsZ0JBQUFBLG1CQUFBLEdBQWxCQSxtQkFBQSxDQUFvQkcsR0FBRyxjQUFBSCxtQkFBQSx1QkFBdkJBLG1CQUFBLENBQXlCSSxRQUFRLE1BQUssTUFBTTtBQUNyRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLHVCQUF1QkEsQ0FBQ3RELEdBQUcsRUFBRXVELFNBQVMsRUFBRTtFQUN0RCxPQUFPaEcsTUFBTSxDQUFDaUcsT0FBTyxDQUFDeEQsR0FBRyxDQUFDLENBQUN5RCxNQUFNLENBQy9CLFVBQUNDLEdBQUcsRUFBRUMsS0FBSztJQUFBLE9BQU1KLFNBQVMsQ0FBQ0ksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQTNGLGFBQUEsQ0FBQUEsYUFBQSxLQUFPMEYsR0FBRyxXQUFBdEYsZ0JBQUEsaUJBQUd1RixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUdBLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSUQsR0FBRztFQUFBLENBQUMsRUFDdEYsQ0FBQyxDQUNILENBQUM7QUFDSDtBQUVPLFNBQVNFLFVBQVVBLENBQUNDLElBQWEsRUFBVztFQUNqRCxPQUFPLE9BQU9BLElBQUksS0FBSyxVQUFVO0FBQ25DO0FBRU8sU0FBU0MsUUFBUUEsQ0FBQ0MsRUFBVSxFQUF1RDtFQUN4RixPQUFPLFVBQUEvQixHQUFHO0lBQUEsT0FBSUEsR0FBRyxDQUFDZ0MsSUFBSSxDQUFDLFVBQUFDLENBQUM7TUFBQSxPQUFJQSxDQUFDLENBQUNGLEVBQUUsS0FBS0EsRUFBRTtJQUFBLEVBQUM7RUFBQTtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRyxlQUFlQSxDQUF5QkMsTUFBVyxFQUF5QjtFQUMxRixJQUFNQyxPQUFZLEdBQUcsRUFBRTtFQUN2QixPQUFPLFVBQUFDLE9BQU87SUFBQSxPQUNaRixNQUFNLENBQUNWLE1BQU0sQ0FBQyxVQUFDQyxHQUFHLEVBQUVZLE9BQU8sRUFBSztNQUM5QixJQUFNQyxZQUFZLEdBQUdULFFBQVEsQ0FBQ1EsT0FBTyxDQUFDUCxFQUFFLENBQUMsQ0FBQ00sT0FBTyxDQUFDO01BQ2xELE9BQU9FLFlBQVksTUFBQWxFLE1BQUEsS0FBQUMsbUJBQUEsYUFBT29ELEdBQUcsSUFBRWEsWUFBWSxLQUFJYixHQUFHO0lBQ3BELENBQUMsRUFBRVUsT0FBTyxDQUFDO0VBQUE7QUFDZiIsImlnbm9yZUxpc3QiOltdfQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/utils",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.0-alpha.3",
4
+ "version": "3.1.0-alpha.5",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -31,10 +31,10 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@deck.gl/core": "^8.9.27",
34
- "@dnd-kit/sortable": "^7.0.2",
35
- "@kepler.gl/common-utils": "3.1.0-alpha.3",
36
- "@kepler.gl/constants": "3.1.0-alpha.3",
37
- "@kepler.gl/types": "3.1.0-alpha.3",
34
+ "@dnd-kit/sortable": "^8.0.0",
35
+ "@kepler.gl/common-utils": "3.1.0-alpha.5",
36
+ "@kepler.gl/constants": "3.1.0-alpha.5",
37
+ "@kepler.gl/types": "3.1.0-alpha.5",
38
38
  "@luma.gl/constants": "^8.5.20",
39
39
  "@luma.gl/core": "^8.5.20",
40
40
  "@mapbox/geo-viewport": "^0.4.1",