@carto/kepler.gl 0.0.84 → 0.0.85

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.
@@ -50,7 +50,7 @@ var _d3Array = require("d3-array");
50
50
  var _keymirror = _interopRequireDefault(require("keymirror"));
51
51
  var _console = require("global/console");
52
52
  var _get = _interopRequireDefault(require("lodash/get"));
53
- var _isequal = _interopRequireDefault(require("lodash/isequal"));
53
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
54
54
  var _booleanWithin = _interopRequireDefault(require("@turf/boolean-within"));
55
55
  var _helpers = require("@turf/helpers");
56
56
  var _decimal = require("decimal.js");
@@ -1050,7 +1050,7 @@ function validateFiltersUpdateDatasets(state) {
1050
1050
  validatedFilter = _datasetIds$reduce.filter,
1051
1051
  applyToDatasets = _datasetIds$reduce.applyToDatasets,
1052
1052
  augmentedDatasets = _datasetIds$reduce.augmentedDatasets;
1053
- if (validatedFilter && (0, _isequal["default"])(datasetIds, applyToDatasets)) {
1053
+ if (validatedFilter && (0, _isEqual["default"])(datasetIds, applyToDatasets)) {
1054
1054
  validated.push(validatedFilter);
1055
1055
  updatedDatasets = _objectSpread(_objectSpread({}, updatedDatasets), augmentedDatasets);
1056
1056
  }
@@ -1078,4 +1078,4 @@ function getIntervalBins(filter) {
1078
1078
  var values = Object.values(bins);
1079
1079
  return values[0] ? values[0][interval] : null;
1080
1080
  }
1081
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zb2xlIiwiX2dldCIsIl9pc2VxdWFsIiwiX2Jvb2xlYW5XaXRoaW4iLCJfaGVscGVycyIsIl9kZWNpbWFsIiwiX2RlZmF1bHRTZXR0aW5ncyIsIl9kYXRhVXRpbHMiLCJTY2FsZVV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdHlwZXMiLCJfdXRpbHMiLCJfaDNVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlRpbWVzdGFtcFN0ZXBNYXAiLCJleHBvcnRzIiwibWF4Iiwic3RlcCIsIk51bWJlciIsIlBPU0lUSVZFX0lORklOSVRZIiwiaGlzdG9ncmFtQmlucyIsImVubGFyZ2VkSGlzdG9ncmFtQmlucyIsImR1cmF0aW9uU2Vjb25kIiwiZHVyYXRpb25NaW51dGUiLCJkdXJhdGlvbkhvdXIiLCJkdXJhdGlvbkRheSIsImR1cmF0aW9uV2VlayIsImR1cmF0aW9uWWVhciIsIlBMT1RfVFlQRVMiLCJrZXlNaXJyb3IiLCJoaXN0b2dyYW0iLCJsaW5lQ2hhcnQiLCJGSUxURVJfVVBEQVRFUl9QUk9QUyIsImRhdGFJZCIsIm5hbWUiLCJsYXllcklkIiwiTElNSVRFRF9GSUxURVJfRUZGRUNUX1BST1BTIiwiU3VwcG9ydGVkUGxvdFR5cGUiLCJGSUxURVJfVFlQRVMiLCJ0aW1lUmFuZ2UiLCJBTExfRklFTERfVFlQRVMiLCJpbnRlZ2VyIiwicmVhbCIsInJhbmdlIiwiRklMVEVSX0NPTVBPTkVOVFMiLCJzZWxlY3QiLCJtdWx0aVNlbGVjdCIsInBvbHlnb24iLCJERUZBVUxUX0ZJTFRFUl9TVFJVQ1RVUkUiLCJmcmVlemUiLCJpZCIsImZpeGVkRG9tYWluIiwiZW5sYXJnZWQiLCJpc0FuaW1hdGluZyIsImFuaW1hdGlvbldpbmRvdyIsIkFOSU1BVElPTl9XSU5ET1ciLCJmcmVlIiwic3BlZWQiLCJ0eXBlIiwiZmllbGRJZHgiLCJkb21haW4iLCJ2YWx1ZSIsInBsb3RUeXBlIiwieUF4aXMiLCJpbnRlcnZhbCIsImdwdSIsIkZJTFRFUl9JRF9MRU5HVEgiLCJMQVlFUl9GSUxURVJTIiwiZ2V0RGVmYXVsdEZpbHRlciIsInRvQXJyYXkiLCJnZW5lcmF0ZUhhc2hJZCIsInNob3VsZEFwcGx5RmlsdGVyIiwiZGF0YXNldElkIiwiZGF0YUlkcyIsImluY2x1ZGVzIiwidmFsaWRhdGVQb2x5Z29uRmlsdGVyIiwiZGF0YXNldCIsImxheWVycyIsImZhaWxlZCIsImlzVmFsaWRGaWx0ZXJWYWx1ZSIsImlzVmFsaWREYXRhc2V0IiwibGF5ZXIiLCJmaW5kIiwibCIsImZpbHRlclZhbGlkYXRvcnMiLCJ2YWxpZGF0ZUZpbHRlciIsImZpbHRlckRhdGFJZCIsImZpbHRlckRhdGFzZXRJbmRleCIsImluZGV4T2YiLCJpbml0aWFsaXplRmlsdGVyIiwiZmllbGROYW1lIiwiX2FwcGx5RmlsdGVyRmllbGROYW1lIiwiYXBwbHlGaWx0ZXJGaWVsZE5hbWUiLCJtZXJnZURvbWFpbiIsInVwZGF0ZWRGaWx0ZXIiLCJ1cGRhdGVkRGF0YXNldCIsImFkanVzdFZhbHVlVG9GaWx0ZXJEb21haW4iLCJ2YWxpZGF0ZUZpbHRlcllBeGlzIiwidmFsaWRhdGVGaWx0ZXJXaXRoRGF0YSIsImZpZWxkcyIsIl9maWx0ZXIiLCJtYXRjaGVkQXhpcyIsIl9yZWYiLCJnZXRGaWx0ZXJQbG90IiwiZ2V0RmlsdGVyUHJvcHMiLCJmaWVsZCIsImZpZWxkRG9tYWluIiwiZmlsdGVyUHJvcHMiLCJmaWVsZFR5cGUiLCJ0eXBlT3B0aW9ucyIsInN0cmluZyIsImRhdGUiLCJ0aW1lc3RhbXAiLCJnZXRQb2x5Z29uRmlsdGVyRnVuY3RvciIsImRhdGFDb250YWluZXIiLCJnZXRQb3NpdGlvbiIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJMQVlFUl9UWVBFUyIsInBvaW50IiwiaWNvbiIsImRhdGEiLCJwb3MiLCJldmVyeSIsImlzRmluaXRlIiwiaXNJblBvbHlnb24iLCJhcmMiLCJsaW5lIiwiaGV4YWdvbklkIiwiZGF0YVRvRmVhdHVyZSIsImNlbnRyb2lkcyIsImNlbnRyb2lkIiwiaW5kZXgiLCJoM0lzVmFsaWQiLCJnZXRDZW50cm9pZCIsImdldEZpbHRlckZ1bmN0aW9uIiwidmFsdWVBY2Nlc3NvciIsImRlZmF1bHRGdW5jIiwiZCIsImlzSW5SYW5nZSIsIm1hcHBlZFZhbHVlIiwiYWNjZXNzb3IiLCJBcnJheSIsImlzQXJyYXkiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJsYXllckZpbHRlckZ1bmN0aW9ucyIsIm1hcCIsImNvbmZpZyIsImZpbHRlckZ1bmMiLCJ1cGRhdGVGaWx0ZXJEYXRhSWQiLCJmaWx0ZXJEYXRhQnlGaWx0ZXJUeXBlcyIsIl9yZWYyIiwiZHluYW1pY0RvbWFpbkZpbHRlcnMiLCJjcHVGaWx0ZXJzIiwiZmlsdGVyRnVuY3MiLCJmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIiwiZmlsdGVyZWRJbmRleCIsImZpbHRlckNvbnRleHQiLCJmaWx0ZXJGdW5jQ2FsbGVyIiwibnVtUm93cyIsIm1hdGNoRm9yRG9tYWluIiwibWF0Y2hGb3JSZW5kZXIiLCJnZXRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJzIiwib3B0IiwidW5kZWZpbmVkIiwiZmlsdGVyUmVjb3JkIiwiZHluYW1pY0RvbWFpbiIsImNwdSIsImYiLCJpZ25vcmVEb21haW4iLCJjcHVPbmx5IiwiZGlmZkZpbHRlcnMiLCJvbGRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJDaGFuZ2VkIiwiZW50cmllcyIsIl9yZWYzIiwiX3JlZjQiLCJfc2xpY2VkVG9BcnJheTIiLCJyZWNvcmQiLCJpdGVtcyIsIm9sZEZpbHRlciIsInByb3AiLCJjb25jYXQiLCJfcmVmNSIsIm5vdE51bGxvclVuZGVmaW5lZCIsImZpbHRlcmVkVmFsdWUiLCJnZXROdW1lcmljRmllbGREb21haW4iLCJtYXBJbmRleCIsImdldExpbmVhckRvbWFpbiIsImRpZmYiLCJnZXROdW1lcmljU3RlcFNpemUiLCJmb3JtYXROdW1iZXJCeVN0ZXAiLCJfZ2V0SGlzdG9ncmFtIiwiZ2V0SGlzdG9ncmFtIiwiZW5sYXJnZWRIaXN0b2dyYW0iLCJNYXRoIiwiYWJzIiwieCIsImV4cG9uZW50aWFsRm9ybSIsInRvRXhwb25lbnRpYWwiLCJleHBvbmVudCIsInBhcnNlRmxvYXQiLCJzcGxpdCIsIkRlY2ltYWwiLCJwb3ciLCJ0b051bWJlciIsImdldFRpbWVzdGFtcEZpZWxkRG9tYWluIiwiZGVmYXVsdFRpbWVGb3JtYXQiLCJnZXRUaW1lV2lkZ2V0VGl0bGVGb3JtYXR0ZXIiLCJlbnRyeSIsIl9nZXRIaXN0b2dyYW0yIiwiaGlzdG9ncmFtQ29uc3RydWN0IiwiYmlucyIsImQzSGlzdG9ncmFtIiwidGhyZXNob2xkcyIsInRpY2tzIiwiYmluIiwiY291bnQiLCJ4MCIsIngxIiwidmFsIiwiYm91bmQiLCJmbG9vciIsImNlaWwiLCJib29sZWFuV2l0aGluIiwidHVyZlBvaW50IiwiaXNWYWxpZFRpbWVEb21haW4iLCJnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlciIsInYiLCJpc05hTiIsIkJvb2xlYW4iLCJpbnB1dCIsImNvb3JkaW5hdGVzIiwiX2ZpbHRlciRtYXBwZWRWYWx1ZSIsImdldENvbHVtbkZpZWxkSWR4IiwiQ29uc29sZSIsIndhcm4iLCJzZXJpZXMiLCJyb3ciLCJyb3dJbmRleCIsInkiLCJ2YWx1ZUF0IiwiX3JlZjYiLCJzb3J0IiwiYiIsImFzY2VuZGluZyIsInlEb21haW4iLCJleHRlbnQiLCJ4RG9tYWluIiwiZ2V0RGVmYXVsdEZpbHRlclBsb3RUeXBlIiwiZmlsdGVyUGxvdFR5cGVzIiwiYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyIsImRhdGFzZXRJZHMiLCJkYXRhc2V0cyIsInJlZHVjZSIsImFjYyIsImxheWVyc1RvRmlsdGVyIiwiYXBwbGllZEZpbHRlcnMiLCJ0YWJsZSIsImZpbHRlclRhYmxlIiwib3B0aW9uIiwiZmllbGRJbmRleCIsImdldENvbHVtbkZpbHRlclByb3BzIiwibmV3RmlsdGVyIiwibWVyZ2VGaWx0ZXJEb21haW5TdGVwIiwiYXNzaWduIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNvbWJpbmVkRG9tYWluIiwidW5pcXVlIiwiZmVhdHVyZVRvRmlsdGVyVmFsdWUiLCJmZWF0dXJlIiwiZmlsdGVySWQiLCJwcm9wZXJ0aWVzIiwiZ2V0RmlsdGVySWRJbkZlYXR1cmUiLCJnZW5lcmF0ZVBvbHlnb25GaWx0ZXIiLCJsYWJlbCIsImlzVmlzaWJsZSIsImZpbHRlckRhdGFzZXRDUFUiLCJzdGF0ZSIsImRhdGFzZXRGaWx0ZXJzIiwiY3B1RmlsdGVyZWREYXRhc2V0IiwiZmlsdGVyVGFibGVDUFUiLCJ2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0cyIsImZpbHRlcnNUb1ZhbGlkYXRlIiwidmFsaWRhdGVkIiwidXBkYXRlZERhdGFzZXRzIiwiX2RhdGFzZXRJZHMkcmVkdWNlIiwiX3ZhbGlkYXRlRmlsdGVyV2l0aERhIiwiYXVnbWVudGVkRGF0YXNldHMiLCJhcHBseVRvRGF0YXNldHMiLCJ2YWxpZGF0ZWRGaWx0ZXIiLCJpc0VxdWFsIiwiZ2V0SW50ZXJ2YWxCaW5zIiwiX2ZpbHRlciRwbG90VHlwZSIsInZhbHVlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9maWx0ZXItdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHthc2NlbmRpbmcsIGV4dGVudCwgaGlzdG9ncmFtIGFzIGQzSGlzdG9ncmFtLCB0aWNrc30gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IGtleU1pcnJvciBmcm9tICdrZXltaXJyb3InO1xuaW1wb3J0IHtjb25zb2xlIGFzIENvbnNvbGV9IGZyb20gJ2dsb2JhbC9jb25zb2xlJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNlcXVhbCc7XG5cbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCB7cG9pbnQgYXMgdHVyZlBvaW50fSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7RGVjaW1hbH0gZnJvbSAnZGVjaW1hbC5qcyc7XG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFUywgRklMVEVSX1RZUEVTLCBBTklNQVRJT05fV0lORE9XfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZCwgdW5pcXVlLCB0aW1lVG9Vbml4TWlsbGl9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQgKiBhcyBTY2FsZVV0aWxzIGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5pbXBvcnQge0xBWUVSX1RZUEVTfSBmcm9tICdsYXllcnMvdHlwZXMnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZCwgc2V0LCB0b0FycmF5fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7Z2V0Q2VudHJvaWQsIGgzSXNWYWxpZH0gZnJvbSAnbGF5ZXJzL2gzLWhleGFnb24tbGF5ZXIvaDMtdXRpbHMnO1xuXG5pbXBvcnQge1xuICBGaWx0ZXIsXG4gIEZpbHRlckJhc2UsXG4gIFBvbHlnb25GaWx0ZXIsXG4gIERhdGFzZXRzLFxuICBGaWVsZERvbWFpbixcbiAgVGltZVJhbmdlRmllbGREb21haW4sXG4gIEhpc3RvZ3JhbUJpbixcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVZhbHVlLFxuICBWaXNTdGF0ZSxcbiAgTGluZUNoYXJ0LFxuICBUaW1lUmFuZ2VGaWx0ZXIsXG4gIFJhbmdlRmllbGREb21haW5cbn0gZnJvbSAnLi4vcmVkdWNlcnMvdmlzLXN0YXRlLXVwZGF0ZXJzJztcbmltcG9ydCBLZXBsZXJUYWJsZSwge0ZpZWxkLCBGaWx0ZXJSZWNvcmQsIEZpbHRlckRhdGFzZXRPcHR9IGZyb20gJy4vdGFibGUtdXRpbHMva2VwbGVyLXRhYmxlJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ2xheWVycyc7XG5pbXBvcnQge1BhcnNlZEZpbHRlcn0gZnJvbSAnc2NoZW1hcyc7XG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJy4vdGFibGUtdXRpbHMvZGF0YS1jb250YWluZXItaW50ZXJmYWNlJztcbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJ2Nsb3VkLXByb3ZpZGVycyc7XG5pbXBvcnQge0VudHJpZXN9IGZyb20gJ3JlZHVjZXJzJztcblxuZXhwb3J0IHR5cGUgRmlsdGVyUmVzdWx0ID0ge1xuICBmaWx0ZXJlZEluZGV4Rm9yRG9tYWluPzogbnVtYmVyW107XG4gIGZpbHRlcmVkSW5kZXg/OiBudW1iZXJbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlckNoYW5nZWQgPSB7XG4gIFtrZXkgaW4ga2V5b2YgRmlsdGVyUmVjb3JkXToge1xuICAgIFtrZXk6IHN0cmluZ106ICdhZGRlZCcgfCAnZGVsZXRlZCcgfCAnbmFtZV9jaGFuZ2VkJyB8ICd2YWx1ZV9jaGFuZ2VkJyB8ICdkYXRhSWRfY2hhbmdlZCc7XG4gIH0gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgZGF0YVZhbHVlQWNjZXNzb3IgPSAoZGF0YToge2luZGV4OiBudW1iZXJ9KSA9PiBudW1iZXIgfCBudWxsO1xuXG5leHBvcnQgY29uc3QgVGltZXN0YW1wU3RlcE1hcCA9IFtcbiAge21heDogMSwgc3RlcDogMC4wNX0sXG4gIHttYXg6IDEwLCBzdGVwOiAwLjF9LFxuICB7bWF4OiAxMDAsIHN0ZXA6IDF9LFxuICB7bWF4OiA1MDAsIHN0ZXA6IDV9LFxuICB7bWF4OiAxMDAwLCBzdGVwOiAxMH0sXG4gIHttYXg6IDUwMDAsIHN0ZXA6IDUwfSxcbiAge21heDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBzdGVwOiAxMDAwfVxuXTtcblxuZXhwb3J0IGNvbnN0IGhpc3RvZ3JhbUJpbnMgPSAzMDtcbmV4cG9ydCBjb25zdCBlbmxhcmdlZEhpc3RvZ3JhbUJpbnMgPSAxMDA7XG5cbmNvbnN0IGR1cmF0aW9uU2Vjb25kID0gMTAwMDtcbmNvbnN0IGR1cmF0aW9uTWludXRlID0gZHVyYXRpb25TZWNvbmQgKiA2MDtcbmNvbnN0IGR1cmF0aW9uSG91ciA9IGR1cmF0aW9uTWludXRlICogNjA7XG5jb25zdCBkdXJhdGlvbkRheSA9IGR1cmF0aW9uSG91ciAqIDI0O1xuY29uc3QgZHVyYXRpb25XZWVrID0gZHVyYXRpb25EYXkgKiA3O1xuY29uc3QgZHVyYXRpb25ZZWFyID0gZHVyYXRpb25EYXkgKiAzNjU7XG5cbmV4cG9ydCBjb25zdCBQTE9UX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgaGlzdG9ncmFtOiBudWxsLFxuICBsaW5lQ2hhcnQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRklMVEVSX1VQREFURVJfUFJPUFMgPSBrZXlNaXJyb3Ioe1xuICBkYXRhSWQ6IG51bGwsXG4gIG5hbWU6IG51bGwsXG4gIGxheWVySWQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTElNSVRFRF9GSUxURVJfRUZGRUNUX1BST1BTID0ga2V5TWlycm9yKHtcbiAgW0ZJTFRFUl9VUERBVEVSX1BST1BTLm5hbWVdOiBudWxsXG59KTtcbi8qKlxuICogTWF4IG51bWJlciBvZiBmaWx0ZXIgdmFsdWUgYnVmZmVycyB0aGF0IGRlY2suZ2wgcHJvdmlkZXNcbiAqL1xuXG5jb25zdCBTdXBwb3J0ZWRQbG90VHlwZSA9IHtcbiAgW0ZJTFRFUl9UWVBFUy50aW1lUmFuZ2VdOiB7XG4gICAgZGVmYXVsdDogJ2hpc3RvZ3JhbScsXG4gICAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogJ2xpbmVDaGFydCcsXG4gICAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogJ2xpbmVDaGFydCdcbiAgfSxcbiAgW0ZJTFRFUl9UWVBFUy5yYW5nZV06IHtcbiAgICBkZWZhdWx0OiAnaGlzdG9ncmFtJyxcbiAgICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiAnbGluZUNoYXJ0JyxcbiAgICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiAnbGluZUNoYXJ0J1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklMVEVSX0NPTVBPTkVOVFMgPSB7XG4gIFtGSUxURVJfVFlQRVMuc2VsZWN0XTogJ1NpbmdsZVNlbGVjdEZpbHRlcicsXG4gIFtGSUxURVJfVFlQRVMubXVsdGlTZWxlY3RdOiAnTXVsdGlTZWxlY3RGaWx0ZXInLFxuICBbRklMVEVSX1RZUEVTLnRpbWVSYW5nZV06ICdUaW1lUmFuZ2VGaWx0ZXInLFxuICBbRklMVEVSX1RZUEVTLnJhbmdlXTogJ1JhbmdlRmlsdGVyJyxcbiAgW0ZJTFRFUl9UWVBFUy5wb2x5Z29uXTogJ1BvbHlnb25GaWx0ZXInXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GSUxURVJfU1RSVUNUVVJFID0ge1xuICBkYXRhSWQ6IFtdLCAvLyBbc3RyaW5nXVxuICBmcmVlemU6IGZhbHNlLFxuICBpZDogbnVsbCxcblxuICAvLyB0aW1lIHJhbmdlIGZpbHRlciBzcGVjaWZpY1xuICBmaXhlZERvbWFpbjogZmFsc2UsXG4gIGVubGFyZ2VkOiBmYWxzZSxcbiAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICBhbmltYXRpb25XaW5kb3c6IEFOSU1BVElPTl9XSU5ET1cuZnJlZSxcbiAgc3BlZWQ6IDEsXG5cbiAgLy8gZmllbGQgc3BlY2lmaWNcbiAgbmFtZTogW10sIC8vIHN0cmluZ1xuICB0eXBlOiBudWxsLFxuICBmaWVsZElkeDogW10sIC8vIFtpbnRlZ2VyXVxuICBkb21haW46IG51bGwsXG4gIHZhbHVlOiBudWxsLFxuXG4gIC8vIHBsb3RcbiAgcGxvdFR5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtLFxuICB5QXhpczogbnVsbCxcbiAgaW50ZXJ2YWw6IG51bGwsXG5cbiAgLy8gbW9kZVxuICBncHU6IGZhbHNlXG59O1xuXG5leHBvcnQgY29uc3QgRklMVEVSX0lEX0xFTkdUSCA9IDQ7XG5cbmV4cG9ydCBjb25zdCBMQVlFUl9GSUxURVJTID0gW0ZJTFRFUl9UWVBFUy5wb2x5Z29uXTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBmaWx0ZXIgd2l0aCBhIGRhdGFzZXQgaWQgYXMgZGF0YUlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0RmlsdGVyKGRhdGFJZDogc3RyaW5nIHwgbnVsbCB8IHN0cmluZ1tdKTogRmlsdGVyQmFzZSB7XG4gIHJldHVybiB7XG4gICAgLi4uREVGQVVMVF9GSUxURVJfU1RSVUNUVVJFLFxuICAgIC8vIHN0b3JlIGl0IGFzIGRhdGFJZCBhbmQgaXQgY291bGQgYmUgb25lIG9yIG1hbnlcbiAgICBkYXRhSWQ6IHRvQXJyYXkoZGF0YUlkKSxcbiAgICBpZDogZ2VuZXJhdGVIYXNoSWQoRklMVEVSX0lEX0xFTkdUSClcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGZpbHRlciBpcyB2YWxpZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gZGF0YUlkXG4gKiBAcGFyYW0gIGZpbHRlciB0byB2YWxpZGF0ZVxuICogQHBhcmFtICBkYXRhc2V0SWQgaWQgdG8gdmFsaWRhdGUgZmlsdGVyIGFnYWluc3RcbiAqIEByZXR1cm4gdHJ1ZSBpZiBhIGZpbHRlciBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRBcHBseUZpbHRlcihmaWx0ZXI6IEZpbHRlciwgZGF0YXNldElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgZGF0YUlkcyA9IHRvQXJyYXkoZmlsdGVyLmRhdGFJZCk7XG4gIHJldHVybiBkYXRhSWRzLmluY2x1ZGVzKGRhdGFzZXRJZCkgJiYgZmlsdGVyLnZhbHVlICE9PSBudWxsO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhbmQgbW9kaWZpZXMgcG9seWdvbiBmaWx0ZXIgc3RydWN0dXJlXG4gKiBAcGFyYW0gZGF0YXNldFxuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIGxheWVyc1xuICogQHJldHVybiAtIHtmaWx0ZXIsIGRhdGFzZXR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVBvbHlnb25GaWx0ZXIoXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlLFxuICBmaWx0ZXI6IFBvbHlnb25GaWx0ZXIsXG4gIGxheWVyczogTGF5ZXJbXVxuKToge2ZpbHRlcjogUG9seWdvbkZpbHRlciB8IG51bGw7IGRhdGFzZXQ6IEtlcGxlclRhYmxlfSB7XG4gIGNvbnN0IGZhaWxlZCA9IHtkYXRhc2V0LCBmaWx0ZXI6IG51bGx9O1xuICBjb25zdCB7dmFsdWUsIGxheWVySWQsIHR5cGUsIGRhdGFJZH0gPSBmaWx0ZXI7XG5cbiAgaWYgKCFsYXllcklkIHx8ICFpc1ZhbGlkRmlsdGVyVmFsdWUodHlwZSwgdmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIGNvbnN0IGlzVmFsaWREYXRhc2V0ID0gZGF0YUlkLmluY2x1ZGVzKGRhdGFzZXQuaWQpO1xuXG4gIGlmICghaXNWYWxpZERhdGFzZXQpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgY29uc3QgbGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGxheWVySWQuaW5jbHVkZXMobC5pZCkpO1xuXG4gIGlmICghbGF5ZXIpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmaWx0ZXI6IHtcbiAgICAgIC4uLmZpbHRlcixcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIGZpZWxkSWR4OiBbXVxuICAgIH0sXG4gICAgZGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIEN1c3RvbSBmaWx0ZXIgdmFsaWRhdG9yc1xuICovXG5jb25zdCBmaWx0ZXJWYWxpZGF0b3JzID0ge1xuICBbRklMVEVSX1RZUEVTLnBvbHlnb25dOiB2YWxpZGF0ZVBvbHlnb25GaWx0ZXJcbn07XG5cbi8qKlxuICogRGVmYXVsdCB2YWxpZGF0ZSBmaWx0ZXIgZnVuY3Rpb25cbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmlsdGVyKFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZSxcbiAgZmlsdGVyOiBQYXJzZWRGaWx0ZXJcbik6IHtmaWx0ZXI6IEZpbHRlciB8IG51bGw7IGRhdGFzZXQ6IEtlcGxlclRhYmxlfSB7XG4gIC8vIG1hdGNoIGZpbHRlci5kYXRhSWRcbiAgY29uc3QgZmFpbGVkID0ge2RhdGFzZXQsIGZpbHRlcjogbnVsbH07XG4gIGNvbnN0IGZpbHRlckRhdGFJZCA9IHRvQXJyYXkoZmlsdGVyLmRhdGFJZCk7XG5cbiAgY29uc3QgZmlsdGVyRGF0YXNldEluZGV4ID0gZmlsdGVyRGF0YUlkLmluZGV4T2YoZGF0YXNldC5pZCk7XG4gIGlmIChmaWx0ZXJEYXRhc2V0SW5kZXggPCAwKSB7XG4gICAgLy8gdGhlIGN1cnJlbnQgZmlsdGVyIGlzIG5vdCBtYXBwZWQgYWdhaW5zdCB0aGUgY3VycmVudCBkYXRhc2V0XG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3QgaW5pdGlhbGl6ZUZpbHRlcjogRmlsdGVyID0ge1xuICAgIC4uLmdldERlZmF1bHRGaWx0ZXIoZmlsdGVyLmRhdGFJZCksXG4gICAgLi4uZmlsdGVyLFxuICAgIGRhdGFJZDogZmlsdGVyRGF0YUlkLFxuICAgIG5hbWU6IHRvQXJyYXkoZmlsdGVyLm5hbWUpXG4gIH07XG5cbiAgY29uc3QgZmllbGROYW1lID0gaW5pdGlhbGl6ZUZpbHRlci5uYW1lW2ZpbHRlckRhdGFzZXRJbmRleF07XG4gIGNvbnN0IHtmaWx0ZXI6IHVwZGF0ZWRGaWx0ZXIsIGRhdGFzZXQ6IHVwZGF0ZWREYXRhc2V0fSA9IGFwcGx5RmlsdGVyRmllbGROYW1lKFxuICAgIGluaXRpYWxpemVGaWx0ZXIsXG4gICAgZGF0YXNldCxcbiAgICBmaWVsZE5hbWUsXG4gICAgZmlsdGVyRGF0YXNldEluZGV4LFxuICAgIHttZXJnZURvbWFpbjogdHJ1ZX1cbiAgKTtcblxuICBpZiAoIXVwZGF0ZWRGaWx0ZXIpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgdXBkYXRlZEZpbHRlci52YWx1ZSA9IGFkanVzdFZhbHVlVG9GaWx0ZXJEb21haW4oZmlsdGVyLnZhbHVlLCB1cGRhdGVkRmlsdGVyKTtcbiAgdXBkYXRlZEZpbHRlci5lbmxhcmdlZCA9XG4gICAgdHlwZW9mIGZpbHRlci5lbmxhcmdlZCA9PT0gJ2Jvb2xlYW4nID8gZmlsdGVyLmVubGFyZ2VkIDogdXBkYXRlZEZpbHRlci5lbmxhcmdlZDtcblxuICBpZiAodXBkYXRlZEZpbHRlci52YWx1ZSA9PT0gbnVsbCkge1xuICAgIC8vIGNhbm5vdCBhZGp1c3Qgc2F2ZWQgdmFsdWUgdG8gZmlsdGVyXG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZmlsdGVyOiB2YWxpZGF0ZUZpbHRlcllBeGlzKHVwZGF0ZWRGaWx0ZXIsIHVwZGF0ZWREYXRhc2V0KSxcbiAgICBkYXRhc2V0OiB1cGRhdGVkRGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNhdmVkIGZpbHRlciBjb25maWcgd2l0aCBuZXcgZGF0YSxcbiAqIGNhbGN1bGF0ZSBkb21haW4gYW5kIGZpZWxkSWR4IGJhc2VkIG5ldyBmaWVsZHMgYW5kIGRhdGFcbiAqXG4gKiBAcGFyYW0gZGF0YXNldFxuICogQHBhcmFtIGZpbHRlciAtIGZpbHRlciB0byBiZSB2YWxpZGF0ZVxuICogQHBhcmFtIGxheWVycyAtIGxheWVyc1xuICogQHJldHVybiB2YWxpZGF0ZWQgZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcldpdGhEYXRhKFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZSxcbiAgZmlsdGVyOiBQYXJzZWRGaWx0ZXIsXG4gIGxheWVyczogTGF5ZXJbXVxuKToge2ZpbHRlcjogRmlsdGVyOyBkYXRhc2V0OiBLZXBsZXJUYWJsZX0ge1xuICByZXR1cm4gZmlsdGVyLnR5cGUgJiYgZmlsdGVyVmFsaWRhdG9ycy5oYXNPd25Qcm9wZXJ0eShmaWx0ZXIudHlwZSlcbiAgICA/IGZpbHRlclZhbGlkYXRvcnNbZmlsdGVyLnR5cGVdKGRhdGFzZXQsIGZpbHRlciwgbGF5ZXJzKVxuICAgIDogdmFsaWRhdGVGaWx0ZXIoZGF0YXNldCwgZmlsdGVyKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBZQXhpc1xuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIGRhdGFzZXRcbiAqIEByZXR1cm4geyp9XG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlRmlsdGVyWUF4aXMoZmlsdGVyLCBkYXRhc2V0KSB7XG4gIC8vIFRPRE86IHZhbGlkYXRlIHlBeGlzIGFnYWluc3Qgb3RoZXIgZGF0YXNldHNcblxuICBjb25zdCB7ZmllbGRzfSA9IGRhdGFzZXQ7XG4gIGNvbnN0IHt5QXhpc30gPSBmaWx0ZXI7XG4gIC8vIFRPRE86IHZhbGlkYXRlIHlBeGlzIGFnYWluc3Qgb3RoZXIgZGF0YXNldHNcbiAgaWYgKHlBeGlzKSB7XG4gICAgY29uc3QgbWF0Y2hlZEF4aXMgPSBmaWVsZHMuZmluZCgoe25hbWUsIHR5cGV9KSA9PiBuYW1lID09PSB5QXhpcy5uYW1lICYmIHR5cGUgPT09IHlBeGlzLnR5cGUpO1xuXG4gICAgZmlsdGVyID0gbWF0Y2hlZEF4aXNcbiAgICAgID8ge1xuICAgICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgICB5QXhpczogbWF0Y2hlZEF4aXMsXG4gICAgICAgICAgLi4uZ2V0RmlsdGVyUGxvdCh7Li4uZmlsdGVyLCB5QXhpczogbWF0Y2hlZEF4aXN9LCBkYXRhc2V0KVxuICAgICAgICB9XG4gICAgICA6IGZpbHRlcjtcbiAgfVxuXG4gIHJldHVybiBmaWx0ZXI7XG59XG5cbi8qKlxuICogR2V0IGRlZmF1bHQgZmlsdGVyIHByb3AgYmFzZWQgb24gZmllbGQgdHlwZVxuICpcbiAqIEBwYXJhbSBmaWVsZFxuICogQHBhcmFtIGZpZWxkRG9tYWluXG4gKiBAcmV0dXJucyBkZWZhdWx0IGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyUHJvcHMoXG4gIGZpZWxkOiBGaWVsZCxcbiAgZmllbGREb21haW46IEZpZWxkRG9tYWluXG4pOiBQYXJ0aWFsPEZpbHRlcj4gJiB7ZmllbGRUeXBlOiBzdHJpbmd9IHtcbiAgY29uc3QgZmlsdGVyUHJvcHMgPSB7XG4gICAgLi4uZmllbGREb21haW4sXG4gICAgZmllbGRUeXBlOiBmaWVsZC50eXBlXG4gIH07XG5cbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgICAgIHZhbHVlOiBmaWVsZERvbWFpbi5kb21haW4sXG4gICAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5yYW5nZSxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICB0eXBlT3B0aW9uczogW0ZJTFRFUl9UWVBFUy5yYW5nZV0sXG4gICAgICAgIGdwdTogdHJ1ZVxuICAgICAgfTtcblxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW46XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5maWx0ZXJQcm9wcyxcbiAgICAgICAgdHlwZTogRklMVEVSX1RZUEVTLnNlbGVjdCxcbiAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgIGdwdTogZmFsc2VcbiAgICAgIH07XG5cbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuZGF0ZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMubXVsdGlTZWxlY3QsXG4gICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgZ3B1OiBmYWxzZVxuICAgICAgfTtcblxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMudGltZVJhbmdlLFxuICAgICAgICBlbmxhcmdlZDogdHJ1ZSxcbiAgICAgICAgZml4ZWREb21haW46IHRydWUsXG4gICAgICAgIHZhbHVlOiBmaWx0ZXJQcm9wcy5kb21haW4sXG4gICAgICAgIGdwdTogdHJ1ZVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4ge307XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldFBvbHlnb25GaWx0ZXJGdW5jdG9yID0gKGxheWVyLCBmaWx0ZXIsIGRhdGFDb250YWluZXIpID0+IHtcbiAgY29uc3QgZ2V0UG9zaXRpb24gPSBsYXllci5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuXG4gIHN3aXRjaCAobGF5ZXIudHlwZSkge1xuICAgIGNhc2UgTEFZRVJfVFlQRVMucG9pbnQ6XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5pY29uOlxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihkYXRhKTtcbiAgICAgICAgcmV0dXJuIHBvcy5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmIGlzSW5Qb2x5Z29uKHBvcywgZmlsdGVyLnZhbHVlKTtcbiAgICAgIH07XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5hcmM6XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5saW5lOlxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihkYXRhKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFtwb3NbMF0sIHBvc1sxXV0sXG4gICAgICAgICAgICBbcG9zWzNdLCBwb3NbNF1dXG4gICAgICAgICAgXS5ldmVyeShwb2ludCA9PiBpc0luUG9seWdvbihwb2ludCwgZmlsdGVyLnZhbHVlKSlcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5oZXhhZ29uSWQ6XG4gICAgICBpZiAobGF5ZXIuZGF0YVRvRmVhdHVyZSAmJiBsYXllci5kYXRhVG9GZWF0dXJlLmNlbnRyb2lkcykge1xuICAgICAgICByZXR1cm4gZGF0YSA9PiB7XG4gICAgICAgICAgLy8gbnVsbCBvciBnZXRDZW50cm9pZCh7aWR9KVxuICAgICAgICAgIGNvbnN0IGNlbnRyb2lkID0gbGF5ZXIuZGF0YVRvRmVhdHVyZS5jZW50cm9pZHNbZGF0YS5pbmRleF07XG4gICAgICAgICAgcmV0dXJuIGNlbnRyb2lkICYmIGlzSW5Qb2x5Z29uKGNlbnRyb2lkLCBmaWx0ZXIudmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGdldFBvc2l0aW9uKGRhdGEpO1xuICAgICAgICBpZiAoIWgzSXNWYWxpZChpZCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9zID0gZ2V0Q2VudHJvaWQoe2lkfSk7XG4gICAgICAgIHJldHVybiBwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJiBpc0luUG9seWdvbihwb3MsIGZpbHRlci52YWx1ZSk7XG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gKCkgPT4gdHJ1ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBAcGFyYW0gcGFyYW0gQW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIHJvdyByZWNvcmQuXG4gKiBAcGFyYW0gcGFyYW0uaW5kZXggSW5kZXggb2YgdGhlIHJvdyBpbiBkYXRhIGNvbnRhaW5lci5cbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSB0byBrZWVwIHRoZSBlbGVtZW50LCBvciBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbnR5cGUgZmlsdGVyRnVuY3Rpb24gPSAoZGF0YToge2luZGV4OiBudW1iZXJ9KSA9PiBib29sZWFuO1xuLyoqXG4gKiBAcGFyYW0gZmllbGQgZGF0YXNldCBGaWVsZFxuICogQHBhcmFtIGRhdGFJZCBEYXRhc2V0IGlkXG4gKiBAcGFyYW0gZmlsdGVyIEZpbHRlciBvYmplY3RcbiAqIEBwYXJhbSBsYXllcnMgbGlzdCBvZiBsYXllcnMgdG8gZmlsdGVyIHVwb25cbiAqIEBwYXJhbSBkYXRhQ29udGFpbmVyIERhdGEgY29udGFpbmVyXG4gKiBAcmV0dXJuIGZpbHRlckZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJGdW5jdGlvbihcbiAgZmllbGQ6IEZpZWxkIHwgbnVsbCxcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIGZpbHRlcjogRmlsdGVyLFxuICBsYXllcnM6IExheWVyW10sXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2Vcbik6IGZpbHRlckZ1bmN0aW9uIHtcbiAgLy8gZmllbGQgY291bGQgYmUgbnVsbCBpbiBwb2x5Z29uIGZpbHRlclxuICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gZmllbGQgPyBmaWVsZC52YWx1ZUFjY2Vzc29yIDogZGF0YSA9PiBudWxsO1xuICBjb25zdCBkZWZhdWx0RnVuYyA9IGQgPT4gdHJ1ZTtcblxuICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMucmFuZ2U6XG4gICAgICByZXR1cm4gZGF0YSA9PiBpc0luUmFuZ2UodmFsdWVBY2Nlc3NvcihkYXRhKSwgZmlsdGVyLnZhbHVlKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdDpcbiAgICAgIHJldHVybiBkYXRhID0+IGZpbHRlci52YWx1ZS5pbmNsdWRlcyh2YWx1ZUFjY2Vzc29yKGRhdGEpKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5zZWxlY3Q6XG4gICAgICByZXR1cm4gZGF0YSA9PiB2YWx1ZUFjY2Vzc29yKGRhdGEpID09PSBmaWx0ZXIudmFsdWU7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMudGltZVJhbmdlOlxuICAgICAgaWYgKCFmaWVsZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEZ1bmM7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXBwZWRWYWx1ZSA9IGdldChmaWVsZCwgWydmaWx0ZXJQcm9wcycsICdtYXBwZWRWYWx1ZSddKTtcbiAgICAgIGNvbnN0IGFjY2Vzc29yID0gQXJyYXkuaXNBcnJheShtYXBwZWRWYWx1ZSlcbiAgICAgICAgPyBkYXRhID0+IG1hcHBlZFZhbHVlW2RhdGEuaW5kZXhdXG4gICAgICAgIDogZGF0YSA9PiB0aW1lVG9Vbml4TWlsbGkodmFsdWVBY2Nlc3NvcihkYXRhKSwgZmllbGQuZm9ybWF0KTtcbiAgICAgIHJldHVybiBkYXRhID0+IGlzSW5SYW5nZShhY2Nlc3NvcihkYXRhKSwgZmlsdGVyLnZhbHVlKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5wb2x5Z29uOlxuICAgICAgaWYgKCFsYXllcnMgfHwgIWxheWVycy5sZW5ndGggfHwgIWZpbHRlci5sYXllcklkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RnVuYztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxheWVyRmlsdGVyRnVuY3Rpb25zID0gZmlsdGVyLmxheWVySWRcbiAgICAgICAgLm1hcChpZCA9PiBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IGlkKSlcbiAgICAgICAgLmZpbHRlcihsID0+IGwgJiYgbC5jb25maWcuZGF0YUlkID09PSBkYXRhSWQpXG4gICAgICAgIC5tYXAobGF5ZXIgPT4gZ2V0UG9seWdvbkZpbHRlckZ1bmN0b3IobGF5ZXIsIGZpbHRlciwgZGF0YUNvbnRhaW5lcikpO1xuXG4gICAgICByZXR1cm4gZGF0YSA9PiBsYXllckZpbHRlckZ1bmN0aW9ucy5ldmVyeShmaWx0ZXJGdW5jID0+IGZpbHRlckZ1bmMoZGF0YSkpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGVmYXVsdEZ1bmM7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUZpbHRlckRhdGFJZChkYXRhSWQ6IHN0cmluZyk6IEZpbHRlckJhc2Uge1xuICByZXR1cm4gZ2V0RGVmYXVsdEZpbHRlcihkYXRhSWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyRGF0YUJ5RmlsdGVyVHlwZXMoXG4gIHtcbiAgICBkeW5hbWljRG9tYWluRmlsdGVycyxcbiAgICBjcHVGaWx0ZXJzLFxuICAgIGZpbHRlckZ1bmNzXG4gIH06IHtcbiAgICBkeW5hbWljRG9tYWluRmlsdGVyczogRmlsdGVyW10gfCBudWxsO1xuICAgIGNwdUZpbHRlcnM6IEZpbHRlcltdIHwgbnVsbDtcbiAgICBmaWx0ZXJGdW5jczoge1xuICAgICAgW2tleTogc3RyaW5nXTogZmlsdGVyRnVuY3Rpb247XG4gICAgfTtcbiAgfSxcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZVxuKTogRmlsdGVyUmVzdWx0IHtcbiAgY29uc3QgZmlsdGVyZWRJbmRleEZvckRvbWFpbjogbnVtYmVyW10gPSBbXTtcbiAgY29uc3QgZmlsdGVyZWRJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICBjb25zdCBmaWx0ZXJDb250ZXh0ID0ge2luZGV4OiAtMSwgZGF0YUNvbnRhaW5lcn07XG4gIGNvbnN0IGZpbHRlckZ1bmNDYWxsZXIgPSAoZmlsdGVyOiBGaWx0ZXIpID0+IGZpbHRlckZ1bmNzW2ZpbHRlci5pZF0oZmlsdGVyQ29udGV4dCk7XG5cbiAgY29uc3QgbnVtUm93cyA9IGRhdGFDb250YWluZXIubnVtUm93cygpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVJvd3M7ICsraSkge1xuICAgIGZpbHRlckNvbnRleHQuaW5kZXggPSBpO1xuXG4gICAgY29uc3QgbWF0Y2hGb3JEb21haW4gPSBkeW5hbWljRG9tYWluRmlsdGVycyAmJiBkeW5hbWljRG9tYWluRmlsdGVycy5ldmVyeShmaWx0ZXJGdW5jQ2FsbGVyKTtcbiAgICBpZiAobWF0Y2hGb3JEb21haW4pIHtcbiAgICAgIGZpbHRlcmVkSW5kZXhGb3JEb21haW4ucHVzaChmaWx0ZXJDb250ZXh0LmluZGV4KTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaEZvclJlbmRlciA9IGNwdUZpbHRlcnMgJiYgY3B1RmlsdGVycy5ldmVyeShmaWx0ZXJGdW5jQ2FsbGVyKTtcbiAgICBpZiAobWF0Y2hGb3JSZW5kZXIpIHtcbiAgICAgIGZpbHRlcmVkSW5kZXgucHVzaChmaWx0ZXJDb250ZXh0LmluZGV4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLihkeW5hbWljRG9tYWluRmlsdGVycyA/IHtmaWx0ZXJlZEluZGV4Rm9yRG9tYWlufSA6IHt9KSxcbiAgICAuLi4oY3B1RmlsdGVycyA/IHtmaWx0ZXJlZEluZGV4fSA6IHt9KVxuICB9O1xufVxuXG4vKipcbiAqIEdldCBhIHJlY29yZCBvZiBmaWx0ZXJzIGJhc2VkIG9uIGRvbWFpbiB0eXBlIGFuZCBncHUgLyBjcHVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlclJlY29yZChcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIGZpbHRlcnM6IEZpbHRlcltdLFxuICBvcHQ6IEZpbHRlckRhdGFzZXRPcHQgPSB7fVxuKTogRmlsdGVyUmVjb3JkIHtcbiAgY29uc3QgZmlsdGVyUmVjb3JkOiBGaWx0ZXJSZWNvcmQgPSB7XG4gICAgZHluYW1pY0RvbWFpbjogW10sXG4gICAgZml4ZWREb21haW46IFtdLFxuICAgIGNwdTogW10sXG4gICAgZ3B1OiBbXVxuICB9O1xuXG4gIGZpbHRlcnMuZm9yRWFjaChmID0+IHtcbiAgICBpZiAoaXNWYWxpZEZpbHRlclZhbHVlKGYudHlwZSwgZi52YWx1ZSkgJiYgdG9BcnJheShmLmRhdGFJZCkuaW5jbHVkZXMoZGF0YUlkKSkge1xuICAgICAgKGYuZml4ZWREb21haW4gfHwgb3B0Lmlnbm9yZURvbWFpblxuICAgICAgICA/IGZpbHRlclJlY29yZC5maXhlZERvbWFpblxuICAgICAgICA6IGZpbHRlclJlY29yZC5keW5hbWljRG9tYWluXG4gICAgICApLnB1c2goZik7XG5cbiAgICAgIChmLmdwdSAmJiAhb3B0LmNwdU9ubHkgPyBmaWx0ZXJSZWNvcmQuZ3B1IDogZmlsdGVyUmVjb3JkLmNwdSkucHVzaChmKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmaWx0ZXJSZWNvcmQ7XG59XG5cbi8qKlxuICogQ29tcGFyZSBmaWx0ZXIgcmVjb3JkcyB0byBnZXQgd2hhdCBoYXMgY2hhbmdlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZkZpbHRlcnMoXG4gIGZpbHRlclJlY29yZDogRmlsdGVyUmVjb3JkLFxuICBvbGRGaWx0ZXJSZWNvcmQ6IEZpbHRlclJlY29yZCB8IHt9ID0ge31cbik6IEZpbHRlckNoYW5nZWQge1xuICBsZXQgZmlsdGVyQ2hhbmdlZDogUGFydGlhbDxGaWx0ZXJDaGFuZ2VkPiA9IHt9O1xuXG4gIChPYmplY3QuZW50cmllcyhmaWx0ZXJSZWNvcmQpIGFzIEVudHJpZXM8RmlsdGVyUmVjb3JkPikuZm9yRWFjaCgoW3JlY29yZCwgaXRlbXNdKSA9PiB7XG4gICAgaXRlbXMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgY29uc3Qgb2xkRmlsdGVyOiBGaWx0ZXIgPSAob2xkRmlsdGVyUmVjb3JkW3JlY29yZF0gfHwgW10pLmZpbmQoXG4gICAgICAgIChmOiBGaWx0ZXIpID0+IGYuaWQgPT09IGZpbHRlci5pZFxuICAgICAgKTtcblxuICAgICAgaWYgKCFvbGRGaWx0ZXIpIHtcbiAgICAgICAgLy8gYWRkZWRcbiAgICAgICAgZmlsdGVyQ2hhbmdlZCA9IHNldChbcmVjb3JkLCBmaWx0ZXIuaWRdLCAnYWRkZWQnLCBmaWx0ZXJDaGFuZ2VkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNoZWNrICB3aGF0IGhhcyBjaGFuZ2VkXG4gICAgICAgIFsnbmFtZScsICd2YWx1ZScsICdkYXRhSWQnXS5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgIGlmIChmaWx0ZXJbcHJvcF0gIT09IG9sZEZpbHRlcltwcm9wXSkge1xuICAgICAgICAgICAgZmlsdGVyQ2hhbmdlZCA9IHNldChbcmVjb3JkLCBmaWx0ZXIuaWRdLCBgJHtwcm9wfV9jaGFuZ2VkYCwgZmlsdGVyQ2hhbmdlZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIChvbGRGaWx0ZXJSZWNvcmRbcmVjb3JkXSB8fCBbXSkuZm9yRWFjaCgob2xkRmlsdGVyOiBGaWx0ZXIpID0+IHtcbiAgICAgIC8vIGRlbGV0ZWRcbiAgICAgIGlmICghaXRlbXMuZmluZChmID0+IGYuaWQgPT09IG9sZEZpbHRlci5pZCkpIHtcbiAgICAgICAgZmlsdGVyQ2hhbmdlZCA9IHNldChbcmVjb3JkLCBvbGRGaWx0ZXIuaWRdLCAnZGVsZXRlZCcsIGZpbHRlckNoYW5nZWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gey4uLntkeW5hbWljRG9tYWluOiBudWxsLCBmaXhlZERvbWFpbjogbnVsbCwgY3B1OiBudWxsLCBncHU6IG51bGx9LCAuLi5maWx0ZXJDaGFuZ2VkfTtcbn1cbi8qKlxuICogQ2FsbCBieSBwYXJzaW5nIGZpbHRlcnMgZnJvbSBVUkxcbiAqIENoZWNrIGlmIHZhbHVlIG9mIGZpbHRlciB3aXRoaW4gZmlsdGVyIGRvbWFpbiwgaWYgbm90IGFkanVzdCBpdCB0byBtYXRjaFxuICogZmlsdGVyIGRvbWFpblxuICpcbiAqIEByZXR1cm5zIHZhbHVlIC0gYWRqdXN0ZWQgdmFsdWUgdG8gbWF0Y2ggZmlsdGVyIG9yIG51bGwgdG8gcmVtb3ZlIGZpbHRlclxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VmFsdWVUb0ZpbHRlckRvbWFpbih2YWx1ZTogRmlsdGVyWyd2YWx1ZSddLCB7ZG9tYWluLCB0eXBlfSkge1xuICBpZiAoIWRvbWFpbiB8fCAhdHlwZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRklMVEVSX1RZUEVTLnJhbmdlOlxuICAgIGNhc2UgRklMVEVSX1RZUEVTLnRpbWVSYW5nZTpcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgdmFsdWUubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgIHJldHVybiBkb21haW4ubWFwKGQgPT4gZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZS5tYXAoKGQsIGkpID0+IChub3ROdWxsb3JVbmRlZmluZWQoZCkgJiYgaXNJblJhbmdlKGQsIGRvbWFpbikgPyBkIDogZG9tYWluW2ldKSk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdDpcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyZWRWYWx1ZSA9IHZhbHVlLmZpbHRlcihkID0+IGRvbWFpbi5pbmNsdWRlcyhkKSk7XG4gICAgICByZXR1cm4gZmlsdGVyZWRWYWx1ZS5sZW5ndGggPyBmaWx0ZXJlZFZhbHVlIDogW107XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5zZWxlY3Q6XG4gICAgICByZXR1cm4gZG9tYWluLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogdHJ1ZTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbi8qKlxuICogQ2FsY3VsYXRlIG51bWVyaWMgZG9tYWluIGFuZCBzdWl0YWJsZSBzdGVwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROdW1lcmljRmllbGREb21haW4oXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHZhbHVlQWNjZXNzb3I6IGRhdGFWYWx1ZUFjY2Vzc29yXG4pOiBSYW5nZUZpZWxkRG9tYWluIHtcbiAgbGV0IGRvbWFpbjogW251bWJlciwgbnVtYmVyXSA9IFswLCAxXTtcbiAgbGV0IHN0ZXAgPSAwLjE7XG5cbiAgY29uc3QgbWFwcGVkVmFsdWUgPSBkYXRhQ29udGFpbmVyLm1hcEluZGV4KHZhbHVlQWNjZXNzb3IpO1xuXG4gIGlmIChkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA+IDEpIHtcbiAgICBkb21haW4gPSBTY2FsZVV0aWxzLmdldExpbmVhckRvbWFpbihtYXBwZWRWYWx1ZSk7XG4gICAgY29uc3QgZGlmZiA9IGRvbWFpblsxXSAtIGRvbWFpblswXTtcblxuICAgIC8vIGluIGNhc2UgZXF1YWwgZG9tYWluLCBbOTYsIDk2XSwgd2hpY2ggd2lsbCBicmVhayBxdWFudGl6ZSBzY2FsZVxuICAgIGlmICghZGlmZikge1xuICAgICAgZG9tYWluWzFdID0gZG9tYWluWzBdICsgMTtcbiAgICB9XG5cbiAgICBzdGVwID0gZ2V0TnVtZXJpY1N0ZXBTaXplKGRpZmYpIHx8IHN0ZXA7XG4gICAgZG9tYWluWzBdID0gZm9ybWF0TnVtYmVyQnlTdGVwKGRvbWFpblswXSwgc3RlcCwgJ2Zsb29yJyk7XG4gICAgZG9tYWluWzFdID0gZm9ybWF0TnVtYmVyQnlTdGVwKGRvbWFpblsxXSwgc3RlcCwgJ2NlaWwnKTtcbiAgfVxuXG4gIGNvbnN0IHtoaXN0b2dyYW0sIGVubGFyZ2VkSGlzdG9ncmFtfSA9IGdldEhpc3RvZ3JhbShkb21haW4sIG1hcHBlZFZhbHVlKTtcblxuICByZXR1cm4ge2RvbWFpbiwgc3RlcCwgaGlzdG9ncmFtLCBlbmxhcmdlZEhpc3RvZ3JhbX07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHN0ZXAgc2l6ZSBmb3IgcmFuZ2UgYW5kIHRpbWVyYW5nZSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE51bWVyaWNTdGVwU2l6ZShkaWZmOiBudW1iZXIpOiBudW1iZXIge1xuICBkaWZmID0gTWF0aC5hYnMoZGlmZik7XG5cbiAgaWYgKGRpZmYgPiAxMDApIHtcbiAgICByZXR1cm4gMTtcbiAgfSBlbHNlIGlmIChkaWZmID4gMykge1xuICAgIHJldHVybiAwLjAxO1xuICB9IGVsc2UgaWYgKGRpZmYgPiAxKSB7XG4gICAgcmV0dXJuIDAuMDAxO1xuICB9XG4gIC8vIFRyeSB0byBnZXQgYXQgbGVhc3QgMTAwMCBzdGVwcyAtIGFuZCBrZWVwIHRoZSBzdGVwIHNpemUgYmVsb3cgdGhhdCBvZlxuICAvLyB0aGUgKGRpZmYgPiAxKSBjYXNlLlxuICBjb25zdCB4ID0gZGlmZiAvIDEwMDA7XG4gIC8vIEZpbmQgdGhlIGV4cG9uZW50IGFuZCB0cnVuY2F0ZSB0byAxMCB0byB0aGUgcG93ZXIgb2YgdGhhdCBleHBvbmVudFxuXG4gIGNvbnN0IGV4cG9uZW50aWFsRm9ybSA9IHgudG9FeHBvbmVudGlhbCgpO1xuICBjb25zdCBleHBvbmVudCA9IHBhcnNlRmxvYXQoZXhwb25lbnRpYWxGb3JtLnNwbGl0KCdlJylbMV0pO1xuXG4gIC8vIEdldHRpbmcgcmVhZHkgZm9yIG5vZGUgMTJcbiAgLy8gdGhpcyBpcyB3aHkgd2UgbmVlZCBkZWNpbWFsLmpzXG4gIC8vIE1hdGgucG93KDEwLCAtNSkgPSAwLjAwMDAwOTk5OTk5OTk5OTk5OTk5OVxuICAvLyB0aGUgYWJvdmUgcmVzdWx0IHNob3dzIGluIGJyb3dzZXIgYW5kIG5vZGUgMTBcbiAgLy8gbm9kZSAxMiBiZWhhdmVzIGNvcnJlY3RseVxuICByZXR1cm4gbmV3IERlY2ltYWwoMTApLnBvdyhleHBvbmVudCkudG9OdW1iZXIoKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGltZXN0YW1wIGRvbWFpbiBhbmQgc3VpdGFibGUgc3RlcFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZXN0YW1wRmllbGREb21haW4oXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHZhbHVlQWNjZXNzb3I6IGRhdGFWYWx1ZUFjY2Vzc29yXG4pOiBUaW1lUmFuZ2VGaWVsZERvbWFpbiB7XG4gIC8vIHRvIGF2b2lkIGNvbnZlcnRpbmcgc3RyaW5nIGZvcm1hdCB0aW1lIHRvIGVwb2NoXG4gIC8vIGV2ZXJ5IHRpbWUgd2UgY29tcGFyZSB3ZSBzdG9yZSBhIHZhbHVlIG1hcHBlZCB0byBpbnQgaW4gZmlsdGVyIGRvbWFpblxuXG4gIGNvbnN0IG1hcHBlZFZhbHVlID0gZGF0YUNvbnRhaW5lci5tYXBJbmRleCh2YWx1ZUFjY2Vzc29yKTtcbiAgY29uc3QgZG9tYWluID0gU2NhbGVVdGlscy5nZXRMaW5lYXJEb21haW4obWFwcGVkVmFsdWUpO1xuICBjb25zdCBkZWZhdWx0VGltZUZvcm1hdCA9IGdldFRpbWVXaWRnZXRUaXRsZUZvcm1hdHRlcihkb21haW4pO1xuXG4gIGxldCBzdGVwID0gMC4wMTtcblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuICBjb25zdCBlbnRyeSA9IFRpbWVzdGFtcFN0ZXBNYXAuZmluZChmID0+IGYubWF4ID49IGRpZmYpO1xuICBpZiAoZW50cnkpIHtcbiAgICBzdGVwID0gZW50cnkuc3RlcDtcbiAgfVxuXG4gIGNvbnN0IHtoaXN0b2dyYW0sIGVubGFyZ2VkSGlzdG9ncmFtfSA9IGdldEhpc3RvZ3JhbShkb21haW4sIG1hcHBlZFZhbHVlKTtcblxuICByZXR1cm4ge1xuICAgIGRvbWFpbixcbiAgICBzdGVwLFxuICAgIG1hcHBlZFZhbHVlLFxuICAgIGhpc3RvZ3JhbSxcbiAgICBlbmxhcmdlZEhpc3RvZ3JhbSxcbiAgICBkZWZhdWx0VGltZUZvcm1hdFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtQ29uc3RydWN0KFxuICBkb21haW46IFtudW1iZXIsIG51bWJlcl0sXG4gIG1hcHBlZFZhbHVlOiAoTWlsbGlzZWNvbmQgfCBudW1iZXIpW10sXG4gIGJpbnM6IG51bWJlclxuKTogSGlzdG9ncmFtQmluW10ge1xuICByZXR1cm4gZDNIaXN0b2dyYW0oKVxuICAgIC50aHJlc2hvbGRzKHRpY2tzKGRvbWFpblswXSwgZG9tYWluWzFdLCBiaW5zKSlcbiAgICAuZG9tYWluKGRvbWFpbikobWFwcGVkVmFsdWUpXG4gICAgLm1hcChiaW4gPT4gKHtcbiAgICAgIGNvdW50OiBiaW4ubGVuZ3RoLFxuICAgICAgeDA6IGJpbi54MCxcbiAgICAgIHgxOiBiaW4ueDFcbiAgICB9KSk7XG59XG4vKipcbiAqIENhbGN1bGF0ZSBoaXN0b2dyYW0gZnJvbSBkb21haW4gYW5kIGFycmF5IG9mIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlzdG9ncmFtKFxuICBkb21haW46IFtudW1iZXIsIG51bWJlcl0sXG4gIG1hcHBlZFZhbHVlOiAoTWlsbGlzZWNvbmQgfCBudW1iZXIpW11cbik6IHtoaXN0b2dyYW06IEhpc3RvZ3JhbUJpbltdOyBlbmxhcmdlZEhpc3RvZ3JhbTogSGlzdG9ncmFtQmluW119IHtcbiAgY29uc3QgaGlzdG9ncmFtID0gaGlzdG9ncmFtQ29uc3RydWN0KGRvbWFpbiwgbWFwcGVkVmFsdWUsIGhpc3RvZ3JhbUJpbnMpO1xuICBjb25zdCBlbmxhcmdlZEhpc3RvZ3JhbSA9IGhpc3RvZ3JhbUNvbnN0cnVjdChkb21haW4sIG1hcHBlZFZhbHVlLCBlbmxhcmdlZEhpc3RvZ3JhbUJpbnMpO1xuXG4gIHJldHVybiB7aGlzdG9ncmFtLCBlbmxhcmdlZEhpc3RvZ3JhbX07XG59XG5cbi8qKlxuICogcm91bmQgbnVtYmVyIGJhc2VkIG9uIHN0ZXBcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gdmFsXG4gKiBAcGFyYW0ge051bWJlcn0gc3RlcFxuICogQHBhcmFtIHtzdHJpbmd9IGJvdW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSByb3VuZGVkIG51bWJlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TnVtYmVyQnlTdGVwKHZhbDogbnVtYmVyLCBzdGVwOiBudW1iZXIsIGJvdW5kOiAnZmxvb3InIHwgJ2NlaWwnKTogbnVtYmVyIHtcbiAgaWYgKGJvdW5kID09PSAnZmxvb3InKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IodmFsICogKDEgLyBzdGVwKSkgLyAoMSAvIHN0ZXApO1xuICB9XG5cbiAgcmV0dXJuIE1hdGguY2VpbCh2YWwgKiAoMSAvIHN0ZXApKSAvICgxIC8gc3RlcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0luUmFuZ2UodmFsOiBhbnksIGRvbWFpbjogbnVtYmVyW10pOiBib29sZWFuIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGRvbWFpbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdmFsID49IGRvbWFpblswXSAmJiB2YWwgPD0gZG9tYWluWzFdO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIHBvaW50IGlzIHdpdGhpbiB0aGUgcHJvdmlkZWQgcG9seWdvblxuICpcbiAqIEBwYXJhbSBwb2ludCBhcyBpbnB1dCBzZWFyY2ggW2xhdCwgbG5nXVxuICogQHBhcmFtIHBvbHlnb24gUG9pbnRzIG11c3QgYmUgd2l0aGluIHRoZXNlIChNdWx0aSlQb2x5Z29uKHMpXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJblBvbHlnb24ocG9pbnQ6IG51bWJlcltdLCBwb2x5Z29uOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIGJvb2xlYW5XaXRoaW4odHVyZlBvaW50KHBvaW50KSwgcG9seWdvbik7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRpbWVEb21haW4oZG9tYWluKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGRvbWFpbikgJiYgZG9tYWluLmV2ZXJ5KE51bWJlci5pc0Zpbml0ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZVdpZGdldFRpdGxlRm9ybWF0dGVyKGRvbWFpbjogW251bWJlciwgbnVtYmVyXSk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoIWlzVmFsaWRUaW1lRG9tYWluKGRvbWFpbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGRpZmYgPSBkb21haW5bMV0gLSBkb21haW5bMF07XG5cbiAgLy8gTG9jYWwgYXdhcmUgZm9ybWF0c1xuICAvLyBodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvcGFyc2luZy9zdHJpbmctZm9ybWF0XG4gIHJldHVybiBkaWZmID4gZHVyYXRpb25ZZWFyID8gJ0wnIDogZGlmZiA+IGR1cmF0aW9uRGF5ID8gJ0wgTFQnIDogJ0wgTFRTJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVXaWRnZXRIaW50Rm9ybWF0dGVyKGRvbWFpbjogW251bWJlciwgbnVtYmVyXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghaXNWYWxpZFRpbWVEb21haW4oZG9tYWluKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuICByZXR1cm4gZGlmZiA+IGR1cmF0aW9uV2Vla1xuICAgID8gJ0wnXG4gICAgOiBkaWZmID4gZHVyYXRpb25EYXlcbiAgICA/ICdMIExUJ1xuICAgIDogZGlmZiA+IGR1cmF0aW9uSG91clxuICAgID8gJ0xUJ1xuICAgIDogJ0xUUyc7XG59XG5cbi8qKlxuICogU2FuaXR5IGNoZWNrIG9uIGZpbHRlcnMgdG8gcHJlcGFyZSBmb3Igc2F2ZVxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEZpbHRlclZhbHVlKHR5cGU6IHN0cmluZyB8IG51bGwsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKCF0eXBlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRklMVEVSX1RZUEVTLnNlbGVjdDpcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2U7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5yYW5nZTpcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy50aW1lUmFuZ2U6XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkodiA9PiB2ICE9PSBudWxsICYmICFpc05hTih2KSk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdDpcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBCb29sZWFuKHZhbHVlLmxlbmd0aCk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5pbnB1dDpcbiAgICAgIHJldHVybiBCb29sZWFuKHZhbHVlLmxlbmd0aCk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5wb2x5Z29uOlxuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXQodmFsdWUsIFsnZ2VvbWV0cnknLCAnY29vcmRpbmF0ZXMnXSk7XG4gICAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSAmJiB2YWx1ZS5pZCAmJiBjb29yZGluYXRlcyk7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlclBsb3QoXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZVxuKToge2xpbmVDaGFydDogTGluZUNoYXJ0OyB5QXhzOiBGaWVsZH0gfCB7fSB7XG4gIGlmIChmaWx0ZXIucGxvdFR5cGUgPT09IFBMT1RfVFlQRVMuaGlzdG9ncmFtIHx8ICFmaWx0ZXIueUF4aXMpIHtcbiAgICAvLyBoaXN0b2dyYW0gc2hvdWxkIGJlIGNhbGN1bGF0ZWQgd2hlbiBjcmVhdGUgZmlsdGVyXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3Qge21hcHBlZFZhbHVlID0gW119ID0gZmlsdGVyO1xuICBjb25zdCB7eUF4aXN9ID0gZmlsdGVyO1xuICBjb25zdCBmaWVsZElkeCA9IGRhdGFzZXQuZ2V0Q29sdW1uRmllbGRJZHgoeUF4aXMubmFtZSk7XG4gIGlmIChmaWVsZElkeCA8IDApIHtcbiAgICBDb25zb2xlLndhcm4oYHlBeGlzICR7eUF4aXMubmFtZX0gZG9lcyBub3QgZXhpc3QgaW4gZGF0YXNldGApO1xuICAgIHJldHVybiB7bGluZUNoYXJ0OiB7fSwgeUF4aXN9O1xuICB9XG5cbiAgLy8gcmV0dXJuIGxpbmVDaGFydFxuICBjb25zdCBzZXJpZXMgPSBkYXRhc2V0LmRhdGFDb250YWluZXJcbiAgICAubWFwKFxuICAgICAgKHJvdywgcm93SW5kZXgpID0+ICh7XG4gICAgICAgIHg6IG1hcHBlZFZhbHVlW3Jvd0luZGV4XSxcbiAgICAgICAgeTogcm93LnZhbHVlQXQoZmllbGRJZHgpXG4gICAgICB9KSxcbiAgICAgIHRydWVcbiAgICApXG4gICAgLmZpbHRlcigoe3gsIHl9KSA9PiBOdW1iZXIuaXNGaW5pdGUoeCkgJiYgTnVtYmVyLmlzRmluaXRlKHkpKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhc2NlbmRpbmcoYS54LCBiLngpKTtcblxuICBjb25zdCB5RG9tYWluID0gZXh0ZW50KHNlcmllcywgZCA9PiBkLnkpO1xuICBjb25zdCB4RG9tYWluID0gW3Nlcmllc1swXS54LCBzZXJpZXNbc2VyaWVzLmxlbmd0aCAtIDFdLnhdO1xuXG4gIHJldHVybiB7bGluZUNoYXJ0OiB7c2VyaWVzLCB5RG9tYWluLCB4RG9tYWlufSwgeUF4aXN9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEZpbHRlclBsb3RUeXBlKGZpbHRlcjogRmlsdGVyKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGZpbHRlclBsb3RUeXBlczogdHlwZW9mIFN1cHBvcnRlZFBsb3RUeXBlW2tleW9mIHR5cGVvZiBTdXBwb3J0ZWRQbG90VHlwZV0gfCBudWxsID1cbiAgICBmaWx0ZXIudHlwZSAmJiBTdXBwb3J0ZWRQbG90VHlwZVtmaWx0ZXIudHlwZV07XG4gIGlmICghZmlsdGVyUGxvdFR5cGVzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIWZpbHRlci55QXhpcykge1xuICAgIHJldHVybiBmaWx0ZXJQbG90VHlwZXMuZGVmYXVsdDtcbiAgfVxuXG4gIHJldHVybiBmaWx0ZXJQbG90VHlwZXNbZmlsdGVyLnlBeGlzLnR5cGVdIHx8IG51bGw7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhc2V0SWRzIGxpc3Qgb2YgZGF0YXNldCBpZHMgdG8gYmUgZmlsdGVyZWRcbiAqIEBwYXJhbSBkYXRhc2V0cyBhbGwgZGF0YXNldHNcbiAqIEBwYXJhbSBmaWx0ZXJzIGFsbCBmaWx0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gZGF0YXNldHNcbiAqIEByZXR1cm4gZGF0YXNldHMgLSBuZXcgdXBkYXRlZCBkYXRhc2V0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyhcbiAgZGF0YXNldElkczogc3RyaW5nW10sXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgZmlsdGVyczogRmlsdGVyW10sXG4gIGxheWVycz86IExheWVyW11cbik6IERhdGFzZXRzIHtcbiAgY29uc3QgZGF0YUlkcyA9IHRvQXJyYXkoZGF0YXNldElkcyk7XG4gIHJldHVybiBkYXRhSWRzLnJlZHVjZSgoYWNjLCBkYXRhSWQpID0+IHtcbiAgICBjb25zdCBsYXllcnNUb0ZpbHRlciA9IChsYXllcnMgfHwgW10pLmZpbHRlcihsID0+IGwuY29uZmlnLmRhdGFJZCA9PT0gZGF0YUlkKTtcbiAgICBjb25zdCBhcHBsaWVkRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKGQgPT4gc2hvdWxkQXBwbHlGaWx0ZXIoZCwgZGF0YUlkKSk7XG4gICAgY29uc3QgdGFibGUgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtkYXRhSWRdOiB0YWJsZS5maWx0ZXJUYWJsZShhcHBsaWVkRmlsdGVycywgbGF5ZXJzVG9GaWx0ZXIsIHt9KVxuICAgIH07XG4gIH0sIGRhdGFzZXRzKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgbmV3IGZpZWxkIG5hbWUgdmFsdWUgdG8gZmllbHRlciBhbmQgdXBkYXRlIGJvdGggZmlsdGVyIGFuZCBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyIC0gdG8gYmUgYXBwbGllZCB0aGUgbmV3IGZpZWxkIG5hbWUgb25cbiAqIEBwYXJhbSBkYXRhc2V0IC0gZGF0YXNldCB0aGUgZmllbGQgYmVsb25ncyB0b1xuICogQHBhcmFtIGZpZWxkTmFtZSAtIGZpZWxkLm5hbWVcbiAqIEBwYXJhbSBmaWx0ZXJEYXRhc2V0SW5kZXggLSBmaWVsZC5uYW1lXG4gKiBAcGFyYW0gb3B0aW9uXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldHN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlckZpZWxkTmFtZShcbiAgZmlsdGVyOiBGaWx0ZXIsXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgZmlsdGVyRGF0YXNldEluZGV4ID0gMCxcbiAgb3B0aW9uPzoge21lcmdlRG9tYWluOiBib29sZWFufVxuKToge1xuICBmaWx0ZXI6IEZpbHRlciB8IG51bGw7XG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlO1xufSB7XG4gIC8vIHVzaW5nIGZpbHRlckRhdGFzZXRJbmRleCB3ZSBjYW4gZmlsdGVyIG9ubHkgdGhlIHNwZWNpZmllZCBkYXRhc2V0XG4gIGNvbnN0IG1lcmdlRG9tYWluID0gb3B0aW9uICYmIG9wdGlvbi5oYXNPd25Qcm9wZXJ0eSgnbWVyZ2VEb21haW4nKSA/IG9wdGlvbi5tZXJnZURvbWFpbiA6IGZhbHNlO1xuXG4gIGNvbnN0IGZpZWxkSW5kZXggPSBkYXRhc2V0LmdldENvbHVtbkZpZWxkSWR4KGZpZWxkTmFtZSk7XG4gIC8vIGlmIG5vIGZpZWxkIHdpdGggc2FtZSBuYW1lIGlzIGZvdW5kLCBtb3ZlIHRvIHRoZSBuZXh0IGRhdGFzZXRzXG4gIGlmIChmaWVsZEluZGV4ID09PSAtMSkge1xuICAgIC8vIHRocm93IG5ldyBFcnJvcihgZmllbGRJbmRleCBub3QgZm91bmQuIERhdGFzZXQgbXVzdCBjb250YWluIGEgcHJvcGVydHkgd2l0aCBuYW1lOiAke2ZpZWxkTmFtZX1gKTtcbiAgICByZXR1cm4ge2ZpbHRlcjogbnVsbCwgZGF0YXNldH07XG4gIH1cblxuICAvLyBUT0RPOiB2YWxpZGF0ZSBmaWVsZCB0eXBlXG4gIGNvbnN0IGZpbHRlclByb3BzID0gZGF0YXNldC5nZXRDb2x1bW5GaWx0ZXJQcm9wcyhmaWVsZE5hbWUpO1xuXG4gIGNvbnN0IG5ld0ZpbHRlciA9IHtcbiAgICAuLi4obWVyZ2VEb21haW4gPyBtZXJnZUZpbHRlckRvbWFpblN0ZXAoZmlsdGVyLCBmaWx0ZXJQcm9wcykgOiB7Li4uZmlsdGVyLCAuLi5maWx0ZXJQcm9wc30pLFxuICAgIG5hbWU6IE9iamVjdC5hc3NpZ24oWy4uLnRvQXJyYXkoZmlsdGVyLm5hbWUpXSwge1tmaWx0ZXJEYXRhc2V0SW5kZXhdOiBmaWVsZE5hbWV9KSxcbiAgICBmaWVsZElkeDogT2JqZWN0LmFzc2lnbihbLi4udG9BcnJheShmaWx0ZXIuZmllbGRJZHgpXSwge1xuICAgICAgW2ZpbHRlckRhdGFzZXRJbmRleF06IGZpZWxkSW5kZXhcbiAgICB9KSxcbiAgICAvLyBUT0RPLCBzaW5jZSB3ZSBhbGxvdyB0byBhZGQgbXVsdGlwbGUgZmllbGRzIHRvIGEgZmlsdGVyIHdlIGNhbiBubyBsb25nZXIgZnJlZXplIHRoZSBmaWx0ZXJcbiAgICBmcmVlemU6IHRydWVcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGZpbHRlcjogbmV3RmlsdGVyLFxuICAgIGRhdGFzZXRcbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBvbmUgZmlsdGVyIHdpdGggb3RoZXIgZmlsdGVyIHByb3AgZG9tYWluXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUZpbHRlckRvbWFpblN0ZXAoZmlsdGVyOiBGaWx0ZXIsIGZpbHRlclByb3BzPzogYW55KTogRmlsdGVyIHwgbnVsbCB7XG4gIGlmICghZmlsdGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIWZpbHRlclByb3BzKSB7XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGlmICgoZmlsdGVyLmZpZWxkVHlwZSAmJiBmaWx0ZXIuZmllbGRUeXBlICE9PSBmaWx0ZXJQcm9wcy5maWVsZFR5cGUpIHx8ICFmaWx0ZXJQcm9wcy5kb21haW4pIHtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWREb21haW4gPSAhZmlsdGVyLmRvbWFpblxuICAgID8gZmlsdGVyUHJvcHMuZG9tYWluXG4gICAgOiBbLi4uKGZpbHRlci5kb21haW4gfHwgW10pLCAuLi4oZmlsdGVyUHJvcHMuZG9tYWluIHx8IFtdKV0uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gIGNvbnN0IG5ld0ZpbHRlciA9IHtcbiAgICAuLi5maWx0ZXIsXG4gICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgZG9tYWluOiBbY29tYmluZWREb21haW5bMF0sIGNvbWJpbmVkRG9tYWluW2NvbWJpbmVkRG9tYWluLmxlbmd0aCAtIDFdXVxuICB9O1xuXG4gIHN3aXRjaCAoZmlsdGVyUHJvcHMuZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuc3RyaW5nOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICAgIGRvbWFpbjogdW5pcXVlKGNvbWJpbmVkRG9tYWluKS5zb3J0KClcbiAgICAgIH07XG5cbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA6XG4gICAgICBjb25zdCBzdGVwID1cbiAgICAgICAgKGZpbHRlciBhcyBUaW1lUmFuZ2VGaWx0ZXIpLnN0ZXAgPCBmaWx0ZXJQcm9wcy5zdGVwXG4gICAgICAgICAgPyAoZmlsdGVyIGFzIFRpbWVSYW5nZUZpbHRlcikuc3RlcFxuICAgICAgICAgIDogZmlsdGVyUHJvcHMuc3RlcDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubmV3RmlsdGVyLFxuICAgICAgICBzdGVwXG4gICAgICB9O1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG5ld0ZpbHRlcjtcbiAgfVxufVxuLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbi8qKlxuICogR2VuZXJhdGVzIHBvbHlnb24gZmlsdGVyXG4gKi9cbmV4cG9ydCBjb25zdCBmZWF0dXJlVG9GaWx0ZXJWYWx1ZSA9IChcbiAgZmVhdHVyZTogRmVhdHVyZSxcbiAgZmlsdGVySWQ6IHN0cmluZyxcbiAgcHJvcGVydGllcz86IHt9XG4pOiBGZWF0dXJlVmFsdWUgPT4gKHtcbiAgLi4uZmVhdHVyZSxcbiAgaWQ6IGZlYXR1cmUuaWQsXG4gIHByb3BlcnRpZXM6IHtcbiAgICAuLi5mZWF0dXJlLnByb3BlcnRpZXMsXG4gICAgLi4ucHJvcGVydGllcyxcbiAgICBmaWx0ZXJJZFxuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbHRlcklkSW5GZWF0dXJlID0gKGY6IEZlYXR1cmVWYWx1ZSk6IHN0cmluZyA9PiBnZXQoZiwgWydwcm9wZXJ0aWVzJywgJ2ZpbHRlcklkJ10pO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBwb2x5Z29uIGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQb2x5Z29uRmlsdGVyKGxheWVyczogTGF5ZXJbXSwgZmVhdHVyZTogRmVhdHVyZSk6IFBvbHlnb25GaWx0ZXIge1xuICBjb25zdCBkYXRhSWQgPSBsYXllcnMubWFwKGwgPT4gbC5jb25maWcuZGF0YUlkKS5maWx0ZXIobm90TnVsbG9yVW5kZWZpbmVkKTtcbiAgY29uc3QgbGF5ZXJJZCA9IGxheWVycy5tYXAobCA9PiBsLmlkKTtcbiAgY29uc3QgbmFtZSA9IGxheWVycy5tYXAobCA9PiBsLmNvbmZpZy5sYWJlbCk7XG4gIGNvbnN0IGZpbHRlciA9IGdldERlZmF1bHRGaWx0ZXIoZGF0YUlkKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5maWx0ZXIsXG4gICAgZml4ZWREb21haW46IHRydWUsXG4gICAgdHlwZTogRklMVEVSX1RZUEVTLnBvbHlnb24sXG4gICAgbmFtZSxcbiAgICBsYXllcklkLFxuICAgIHZhbHVlOiBmZWF0dXJlVG9GaWx0ZXJWYWx1ZShmZWF0dXJlLCBmaWx0ZXIuaWQsIHtpc1Zpc2libGU6IHRydWV9KVxuICB9O1xufVxuXG4vKipcbiAqIFJ1biBmaWx0ZXIgZW50aXJlbHkgb24gQ1BVXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJEYXRhc2V0Q1BVKHN0YXRlOiBWaXNTdGF0ZSwgZGF0YUlkOiBzdHJpbmcpOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IGRhdGFzZXRGaWx0ZXJzID0gc3RhdGUuZmlsdGVycy5maWx0ZXIoZiA9PiBmLmRhdGFJZC5pbmNsdWRlcyhkYXRhSWQpKTtcbiAgY29uc3QgZGF0YXNldCA9IHN0YXRlLmRhdGFzZXRzW2RhdGFJZF07XG5cbiAgaWYgKCFkYXRhc2V0KSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgY3B1RmlsdGVyZWREYXRhc2V0ID0gZGF0YXNldC5maWx0ZXJUYWJsZUNQVShkYXRhc2V0RmlsdGVycywgc3RhdGUubGF5ZXJzKTtcblxuICByZXR1cm4gc2V0KFsnZGF0YXNldHMnLCBkYXRhSWRdLCBjcHVGaWx0ZXJlZERhdGFzZXQsIHN0YXRlKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBwYXJzZWQgZmlsdGVycyB3aXRoIGRhdGFzZXRzIGFuZCBhZGQgZmlsdGVyUHJvcHMgdG8gZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmlsdGVyc1VwZGF0ZURhdGFzZXRzKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGZpbHRlcnNUb1ZhbGlkYXRlOiBQYXJzZWRGaWx0ZXJbXSA9IFtdXG4pOiB7XG4gIHZhbGlkYXRlZDogRmlsdGVyW107XG4gIGZhaWxlZDogRmlsdGVyW107XG4gIHVwZGF0ZWREYXRhc2V0czogRGF0YXNldHM7XG59IHtcbiAgLy8gVE9ETyBCZXR0ZXIgVHlwaW5ncyBoZXJlXG4gIGNvbnN0IHZhbGlkYXRlZDogYW55W10gPSBbXTtcbiAgY29uc3QgZmFpbGVkOiBhbnlbXSA9IFtdO1xuICBjb25zdCB7ZGF0YXNldHN9ID0gc3RhdGU7XG4gIGxldCB1cGRhdGVkRGF0YXNldHMgPSBkYXRhc2V0cztcblxuICAvLyBtZXJnZSBmaWx0ZXJzXG4gIGZpbHRlcnNUb1ZhbGlkYXRlLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAvLyB3ZSBjYW4gb25seSBsb29rIGZvciBkYXRhc2V0cyBkZWZpbmUgaW4gdGhlIGZpbHRlciBkYXRhSWRcbiAgICBjb25zdCBkYXRhc2V0SWRzID0gdG9BcnJheShmaWx0ZXIuZGF0YUlkKTtcblxuICAgIC8vIHdlIGNhbiBtZXJnZSBhIGZpbHRlciBvbmx5IGlmIGFsbCBkYXRhc2V0cyBpbiBmaWx0ZXIuZGF0YUlkIGFyZSBsb2FkZWRcbiAgICBpZiAoZGF0YXNldElkcy5ldmVyeShkID0+IGRhdGFzZXRzW2RdKSkge1xuICAgICAgLy8gYWxsIGRhdGFzZXRJZHMgaW4gZmlsdGVyIG11c3QgYmUgcHJlc2VudCB0aGUgc3RhdGUgZGF0YXNldHNcbiAgICAgIGNvbnN0IHtmaWx0ZXI6IHZhbGlkYXRlZEZpbHRlciwgYXBwbHlUb0RhdGFzZXRzLCBhdWdtZW50ZWREYXRhc2V0c30gPSBkYXRhc2V0SWRzLnJlZHVjZShcbiAgICAgICAgKGFjYywgZGF0YXNldElkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YXNldCA9IHVwZGF0ZWREYXRhc2V0c1tkYXRhc2V0SWRdO1xuICAgICAgICAgIGNvbnN0IGxheWVycyA9IHN0YXRlLmxheWVycy5maWx0ZXIobCA9PiBsLmNvbmZpZy5kYXRhSWQgPT09IGRhdGFzZXQuaWQpO1xuICAgICAgICAgIGNvbnN0IHtmaWx0ZXI6IHVwZGF0ZWRGaWx0ZXIsIGRhdGFzZXQ6IHVwZGF0ZWREYXRhc2V0fSA9IHZhbGlkYXRlRmlsdGVyV2l0aERhdGEoXG4gICAgICAgICAgICBhY2MuYXVnbWVudGVkRGF0YXNldHNbZGF0YXNldElkXSB8fCBkYXRhc2V0LFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgbGF5ZXJzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICh1cGRhdGVkRmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgIC8vIG1lcmdlIGZpbHRlciBwcm9wc1xuICAgICAgICAgICAgICBmaWx0ZXI6IGFjYy5maWx0ZXJcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYWNjLmZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgLi4ubWVyZ2VGaWx0ZXJEb21haW5TdGVwKGFjYywgdXBkYXRlZEZpbHRlcilcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVwZGF0ZWRGaWx0ZXIsXG5cbiAgICAgICAgICAgICAgYXBwbHlUb0RhdGFzZXRzOiBbLi4uYWNjLmFwcGx5VG9EYXRhc2V0cywgZGF0YXNldElkXSxcblxuICAgICAgICAgICAgICBhdWdtZW50ZWREYXRhc2V0czoge1xuICAgICAgICAgICAgICAgIC4uLmFjYy5hdWdtZW50ZWREYXRhc2V0cyxcbiAgICAgICAgICAgICAgICBbZGF0YXNldElkXTogdXBkYXRlZERhdGFzZXRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmlsdGVyOiBudWxsLFxuICAgICAgICAgIGFwcGx5VG9EYXRhc2V0czogW10sXG4gICAgICAgICAgYXVnbWVudGVkRGF0YXNldHM6IHt9XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZWRGaWx0ZXIgJiYgaXNFcXVhbChkYXRhc2V0SWRzLCBhcHBseVRvRGF0YXNldHMpKSB7XG4gICAgICAgIHZhbGlkYXRlZC5wdXNoKHZhbGlkYXRlZEZpbHRlcik7XG4gICAgICAgIHVwZGF0ZWREYXRhc2V0cyA9IHtcbiAgICAgICAgICAuLi51cGRhdGVkRGF0YXNldHMsXG4gICAgICAgICAgLi4uYXVnbWVudGVkRGF0YXNldHNcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmFpbGVkLnB1c2goZmlsdGVyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7dmFsaWRhdGVkLCBmYWlsZWQsIHVwZGF0ZWREYXRhc2V0c307XG59XG5cbi8qKlxuICogUmV0cmlldmUgaW50ZXJ2YWwgYmlucyBmb3IgdGltZSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVydmFsQmlucyhmaWx0ZXI6IFRpbWVSYW5nZUZpbHRlcikge1xuICBjb25zdCB7Ymluc30gPSBmaWx0ZXI7XG4gIGNvbnN0IGludGVydmFsID0gZmlsdGVyLnBsb3RUeXBlPy5pbnRlcnZhbDtcbiAgaWYgKCFpbnRlcnZhbCB8fCAhYmlucyB8fCBPYmplY3Qua2V5cyhiaW5zKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKGJpbnMpO1xuICByZXR1cm4gdmFsdWVzWzBdID8gdmFsdWVzWzBdW2ludGVydmFsXSA6IG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxJQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBTSxjQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxnQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsVUFBQSxHQUFBQyx1QkFBQSxDQUFBWixPQUFBO0FBQ0EsSUFBQWEsTUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsTUFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsUUFBQSxHQUFBZixPQUFBO0FBQXdFLFNBQUFnQix5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxL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QixXQUFBdFIsZ0JBQUEsaUJBQ3ZCNkQsU0FBUyxFQUFHdUIsY0FBYztZQUM1QjtVQUVMO1VBRUEsT0FBT2lLLEdBQUc7UUFDWixDQUFDLEVBQ0Q7VUFDRTdQLE1BQU0sRUFBRSxJQUFJO1VBQ1orUixlQUFlLEVBQUUsRUFBRTtVQUNuQkQsaUJBQWlCLEVBQUUsQ0FBQztRQUN0QixDQUNGLENBQUM7UUFyQ2NFLGVBQWUsR0FBQUosa0JBQUEsQ0FBdkI1UixNQUFNO1FBQW1CK1IsZUFBZSxHQUFBSCxrQkFBQSxDQUFmRyxlQUFlO1FBQUVELGlCQUFpQixHQUFBRixrQkFBQSxDQUFqQkUsaUJBQWlCO01BdUNsRSxJQUFJRSxlQUFlLElBQUksSUFBQUMsbUJBQU8sRUFBQ3ZDLFVBQVUsRUFBRXFDLGVBQWUsQ0FBQyxFQUFFO1FBQzNETCxTQUFTLENBQUN4UixJQUFJLENBQUM4UixlQUFlLENBQUM7UUFDL0JMLGVBQWUsR0FBQXZSLGFBQUEsQ0FBQUEsYUFBQSxLQUNWdVIsZUFBZSxHQUNmRyxpQkFBaUIsQ0FDckI7TUFDSDtJQUNGLENBQUMsTUFBTTtNQUNMbk4sTUFBTSxDQUFDekUsSUFBSSxDQUFDRixNQUFNLENBQUM7SUFDckI7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPO0lBQUMwUixTQUFTLEVBQVRBLFNBQVM7SUFBRS9NLE1BQU0sRUFBTkEsTUFBTTtJQUFFZ04sZUFBZSxFQUFmQTtFQUFlLENBQUM7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU08sZUFBZUEsQ0FBQ2xTLE1BQXVCLEVBQUU7RUFBQSxJQUFBbVMsZ0JBQUE7RUFDdkQsSUFBT2pGLElBQUksR0FBSWxOLE1BQU0sQ0FBZGtOLElBQUk7RUFDWCxJQUFNckosUUFBUSxJQUFBc08sZ0JBQUEsR0FBR25TLE1BQU0sQ0FBQzJELFFBQVEsY0FBQXdPLGdCQUFBLHVCQUFmQSxnQkFBQSxDQUFpQnRPLFFBQVE7RUFDMUMsSUFBSSxDQUFDQSxRQUFRLElBQUksQ0FBQ3FKLElBQUksSUFBSTlOLE1BQU0sQ0FBQ1MsSUFBSSxDQUFDcU4sSUFBSSxDQUFDLENBQUM1TSxNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQ3hELE9BQU8sSUFBSTtFQUNiO0VBQ0EsSUFBTThSLE1BQU0sR0FBR2hULE1BQU0sQ0FBQ2dULE1BQU0sQ0FBQ2xGLElBQUksQ0FBQztFQUNsQyxPQUFPa0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHQSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUN2TyxRQUFRLENBQUMsR0FBRyxJQUFJO0FBQy9DIiwiaWdub3JlTGlzdCI6W119
1081
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jb25zb2xlIiwiX2dldCIsIl9pc0VxdWFsIiwiX2Jvb2xlYW5XaXRoaW4iLCJfaGVscGVycyIsIl9kZWNpbWFsIiwiX2RlZmF1bHRTZXR0aW5ncyIsIl9kYXRhVXRpbHMiLCJTY2FsZVV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdHlwZXMiLCJfdXRpbHMiLCJfaDNVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlRpbWVzdGFtcFN0ZXBNYXAiLCJleHBvcnRzIiwibWF4Iiwic3RlcCIsIk51bWJlciIsIlBPU0lUSVZFX0lORklOSVRZIiwiaGlzdG9ncmFtQmlucyIsImVubGFyZ2VkSGlzdG9ncmFtQmlucyIsImR1cmF0aW9uU2Vjb25kIiwiZHVyYXRpb25NaW51dGUiLCJkdXJhdGlvbkhvdXIiLCJkdXJhdGlvbkRheSIsImR1cmF0aW9uV2VlayIsImR1cmF0aW9uWWVhciIsIlBMT1RfVFlQRVMiLCJrZXlNaXJyb3IiLCJoaXN0b2dyYW0iLCJsaW5lQ2hhcnQiLCJGSUxURVJfVVBEQVRFUl9QUk9QUyIsImRhdGFJZCIsIm5hbWUiLCJsYXllcklkIiwiTElNSVRFRF9GSUxURVJfRUZGRUNUX1BST1BTIiwiU3VwcG9ydGVkUGxvdFR5cGUiLCJGSUxURVJfVFlQRVMiLCJ0aW1lUmFuZ2UiLCJBTExfRklFTERfVFlQRVMiLCJpbnRlZ2VyIiwicmVhbCIsInJhbmdlIiwiRklMVEVSX0NPTVBPTkVOVFMiLCJzZWxlY3QiLCJtdWx0aVNlbGVjdCIsInBvbHlnb24iLCJERUZBVUxUX0ZJTFRFUl9TVFJVQ1RVUkUiLCJmcmVlemUiLCJpZCIsImZpeGVkRG9tYWluIiwiZW5sYXJnZWQiLCJpc0FuaW1hdGluZyIsImFuaW1hdGlvbldpbmRvdyIsIkFOSU1BVElPTl9XSU5ET1ciLCJmcmVlIiwic3BlZWQiLCJ0eXBlIiwiZmllbGRJZHgiLCJkb21haW4iLCJ2YWx1ZSIsInBsb3RUeXBlIiwieUF4aXMiLCJpbnRlcnZhbCIsImdwdSIsIkZJTFRFUl9JRF9MRU5HVEgiLCJMQVlFUl9GSUxURVJTIiwiZ2V0RGVmYXVsdEZpbHRlciIsInRvQXJyYXkiLCJnZW5lcmF0ZUhhc2hJZCIsInNob3VsZEFwcGx5RmlsdGVyIiwiZGF0YXNldElkIiwiZGF0YUlkcyIsImluY2x1ZGVzIiwidmFsaWRhdGVQb2x5Z29uRmlsdGVyIiwiZGF0YXNldCIsImxheWVycyIsImZhaWxlZCIsImlzVmFsaWRGaWx0ZXJWYWx1ZSIsImlzVmFsaWREYXRhc2V0IiwibGF5ZXIiLCJmaW5kIiwibCIsImZpbHRlclZhbGlkYXRvcnMiLCJ2YWxpZGF0ZUZpbHRlciIsImZpbHRlckRhdGFJZCIsImZpbHRlckRhdGFzZXRJbmRleCIsImluZGV4T2YiLCJpbml0aWFsaXplRmlsdGVyIiwiZmllbGROYW1lIiwiX2FwcGx5RmlsdGVyRmllbGROYW1lIiwiYXBwbHlGaWx0ZXJGaWVsZE5hbWUiLCJtZXJnZURvbWFpbiIsInVwZGF0ZWRGaWx0ZXIiLCJ1cGRhdGVkRGF0YXNldCIsImFkanVzdFZhbHVlVG9GaWx0ZXJEb21haW4iLCJ2YWxpZGF0ZUZpbHRlcllBeGlzIiwidmFsaWRhdGVGaWx0ZXJXaXRoRGF0YSIsImZpZWxkcyIsIl9maWx0ZXIiLCJtYXRjaGVkQXhpcyIsIl9yZWYiLCJnZXRGaWx0ZXJQbG90IiwiZ2V0RmlsdGVyUHJvcHMiLCJmaWVsZCIsImZpZWxkRG9tYWluIiwiZmlsdGVyUHJvcHMiLCJmaWVsZFR5cGUiLCJ0eXBlT3B0aW9ucyIsInN0cmluZyIsImRhdGUiLCJ0aW1lc3RhbXAiLCJnZXRQb2x5Z29uRmlsdGVyRnVuY3RvciIsImRhdGFDb250YWluZXIiLCJnZXRQb3NpdGlvbiIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJMQVlFUl9UWVBFUyIsInBvaW50IiwiaWNvbiIsImRhdGEiLCJwb3MiLCJldmVyeSIsImlzRmluaXRlIiwiaXNJblBvbHlnb24iLCJhcmMiLCJsaW5lIiwiaGV4YWdvbklkIiwiZGF0YVRvRmVhdHVyZSIsImNlbnRyb2lkcyIsImNlbnRyb2lkIiwiaW5kZXgiLCJoM0lzVmFsaWQiLCJnZXRDZW50cm9pZCIsImdldEZpbHRlckZ1bmN0aW9uIiwidmFsdWVBY2Nlc3NvciIsImRlZmF1bHRGdW5jIiwiZCIsImlzSW5SYW5nZSIsIm1hcHBlZFZhbHVlIiwiYWNjZXNzb3IiLCJBcnJheSIsImlzQXJyYXkiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJsYXllckZpbHRlckZ1bmN0aW9ucyIsIm1hcCIsImNvbmZpZyIsImZpbHRlckZ1bmMiLCJ1cGRhdGVGaWx0ZXJEYXRhSWQiLCJmaWx0ZXJEYXRhQnlGaWx0ZXJUeXBlcyIsIl9yZWYyIiwiZHluYW1pY0RvbWFpbkZpbHRlcnMiLCJjcHVGaWx0ZXJzIiwiZmlsdGVyRnVuY3MiLCJmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIiwiZmlsdGVyZWRJbmRleCIsImZpbHRlckNvbnRleHQiLCJmaWx0ZXJGdW5jQ2FsbGVyIiwibnVtUm93cyIsIm1hdGNoRm9yRG9tYWluIiwibWF0Y2hGb3JSZW5kZXIiLCJnZXRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJzIiwib3B0IiwidW5kZWZpbmVkIiwiZmlsdGVyUmVjb3JkIiwiZHluYW1pY0RvbWFpbiIsImNwdSIsImYiLCJpZ25vcmVEb21haW4iLCJjcHVPbmx5IiwiZGlmZkZpbHRlcnMiLCJvbGRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJDaGFuZ2VkIiwiZW50cmllcyIsIl9yZWYzIiwiX3JlZjQiLCJfc2xpY2VkVG9BcnJheTIiLCJyZWNvcmQiLCJpdGVtcyIsIm9sZEZpbHRlciIsInByb3AiLCJjb25jYXQiLCJfcmVmNSIsIm5vdE51bGxvclVuZGVmaW5lZCIsImZpbHRlcmVkVmFsdWUiLCJnZXROdW1lcmljRmllbGREb21haW4iLCJtYXBJbmRleCIsImdldExpbmVhckRvbWFpbiIsImRpZmYiLCJnZXROdW1lcmljU3RlcFNpemUiLCJmb3JtYXROdW1iZXJCeVN0ZXAiLCJfZ2V0SGlzdG9ncmFtIiwiZ2V0SGlzdG9ncmFtIiwiZW5sYXJnZWRIaXN0b2dyYW0iLCJNYXRoIiwiYWJzIiwieCIsImV4cG9uZW50aWFsRm9ybSIsInRvRXhwb25lbnRpYWwiLCJleHBvbmVudCIsInBhcnNlRmxvYXQiLCJzcGxpdCIsIkRlY2ltYWwiLCJwb3ciLCJ0b051bWJlciIsImdldFRpbWVzdGFtcEZpZWxkRG9tYWluIiwiZGVmYXVsdFRpbWVGb3JtYXQiLCJnZXRUaW1lV2lkZ2V0VGl0bGVGb3JtYXR0ZXIiLCJlbnRyeSIsIl9nZXRIaXN0b2dyYW0yIiwiaGlzdG9ncmFtQ29uc3RydWN0IiwiYmlucyIsImQzSGlzdG9ncmFtIiwidGhyZXNob2xkcyIsInRpY2tzIiwiYmluIiwiY291bnQiLCJ4MCIsIngxIiwidmFsIiwiYm91bmQiLCJmbG9vciIsImNlaWwiLCJib29sZWFuV2l0aGluIiwidHVyZlBvaW50IiwiaXNWYWxpZFRpbWVEb21haW4iLCJnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlciIsInYiLCJpc05hTiIsIkJvb2xlYW4iLCJpbnB1dCIsImNvb3JkaW5hdGVzIiwiX2ZpbHRlciRtYXBwZWRWYWx1ZSIsImdldENvbHVtbkZpZWxkSWR4IiwiQ29uc29sZSIsIndhcm4iLCJzZXJpZXMiLCJyb3ciLCJyb3dJbmRleCIsInkiLCJ2YWx1ZUF0IiwiX3JlZjYiLCJzb3J0IiwiYiIsImFzY2VuZGluZyIsInlEb21haW4iLCJleHRlbnQiLCJ4RG9tYWluIiwiZ2V0RGVmYXVsdEZpbHRlclBsb3RUeXBlIiwiZmlsdGVyUGxvdFR5cGVzIiwiYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyIsImRhdGFzZXRJZHMiLCJkYXRhc2V0cyIsInJlZHVjZSIsImFjYyIsImxheWVyc1RvRmlsdGVyIiwiYXBwbGllZEZpbHRlcnMiLCJ0YWJsZSIsImZpbHRlclRhYmxlIiwib3B0aW9uIiwiZmllbGRJbmRleCIsImdldENvbHVtbkZpbHRlclByb3BzIiwibmV3RmlsdGVyIiwibWVyZ2VGaWx0ZXJEb21haW5TdGVwIiwiYXNzaWduIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNvbWJpbmVkRG9tYWluIiwidW5pcXVlIiwiZmVhdHVyZVRvRmlsdGVyVmFsdWUiLCJmZWF0dXJlIiwiZmlsdGVySWQiLCJwcm9wZXJ0aWVzIiwiZ2V0RmlsdGVySWRJbkZlYXR1cmUiLCJnZW5lcmF0ZVBvbHlnb25GaWx0ZXIiLCJsYWJlbCIsImlzVmlzaWJsZSIsImZpbHRlckRhdGFzZXRDUFUiLCJzdGF0ZSIsImRhdGFzZXRGaWx0ZXJzIiwiY3B1RmlsdGVyZWREYXRhc2V0IiwiZmlsdGVyVGFibGVDUFUiLCJ2YWxpZGF0ZUZpbHRlcnNVcGRhdGVEYXRhc2V0cyIsImZpbHRlcnNUb1ZhbGlkYXRlIiwidmFsaWRhdGVkIiwidXBkYXRlZERhdGFzZXRzIiwiX2RhdGFzZXRJZHMkcmVkdWNlIiwiX3ZhbGlkYXRlRmlsdGVyV2l0aERhIiwiYXVnbWVudGVkRGF0YXNldHMiLCJhcHBseVRvRGF0YXNldHMiLCJ2YWxpZGF0ZWRGaWx0ZXIiLCJpc0VxdWFsIiwiZ2V0SW50ZXJ2YWxCaW5zIiwiX2ZpbHRlciRwbG90VHlwZSIsInZhbHVlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9maWx0ZXItdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHthc2NlbmRpbmcsIGV4dGVudCwgaGlzdG9ncmFtIGFzIGQzSGlzdG9ncmFtLCB0aWNrc30gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IGtleU1pcnJvciBmcm9tICdrZXltaXJyb3InO1xuaW1wb3J0IHtjb25zb2xlIGFzIENvbnNvbGV9IGZyb20gJ2dsb2JhbC9jb25zb2xlJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5cbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCB7cG9pbnQgYXMgdHVyZlBvaW50fSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7RGVjaW1hbH0gZnJvbSAnZGVjaW1hbC5qcyc7XG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFUywgRklMVEVSX1RZUEVTLCBBTklNQVRJT05fV0lORE9XfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZCwgdW5pcXVlLCB0aW1lVG9Vbml4TWlsbGl9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQgKiBhcyBTY2FsZVV0aWxzIGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5pbXBvcnQge0xBWUVSX1RZUEVTfSBmcm9tICdsYXllcnMvdHlwZXMnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZCwgc2V0LCB0b0FycmF5fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7Z2V0Q2VudHJvaWQsIGgzSXNWYWxpZH0gZnJvbSAnbGF5ZXJzL2gzLWhleGFnb24tbGF5ZXIvaDMtdXRpbHMnO1xuXG5pbXBvcnQge1xuICBGaWx0ZXIsXG4gIEZpbHRlckJhc2UsXG4gIFBvbHlnb25GaWx0ZXIsXG4gIERhdGFzZXRzLFxuICBGaWVsZERvbWFpbixcbiAgVGltZVJhbmdlRmllbGREb21haW4sXG4gIEhpc3RvZ3JhbUJpbixcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVZhbHVlLFxuICBWaXNTdGF0ZSxcbiAgTGluZUNoYXJ0LFxuICBUaW1lUmFuZ2VGaWx0ZXIsXG4gIFJhbmdlRmllbGREb21haW5cbn0gZnJvbSAnLi4vcmVkdWNlcnMvdmlzLXN0YXRlLXVwZGF0ZXJzJztcbmltcG9ydCBLZXBsZXJUYWJsZSwge0ZpZWxkLCBGaWx0ZXJSZWNvcmQsIEZpbHRlckRhdGFzZXRPcHR9IGZyb20gJy4vdGFibGUtdXRpbHMva2VwbGVyLXRhYmxlJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ2xheWVycyc7XG5pbXBvcnQge1BhcnNlZEZpbHRlcn0gZnJvbSAnc2NoZW1hcyc7XG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJy4vdGFibGUtdXRpbHMvZGF0YS1jb250YWluZXItaW50ZXJmYWNlJztcbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJ2Nsb3VkLXByb3ZpZGVycyc7XG5pbXBvcnQge0VudHJpZXN9IGZyb20gJ3JlZHVjZXJzJztcblxuZXhwb3J0IHR5cGUgRmlsdGVyUmVzdWx0ID0ge1xuICBmaWx0ZXJlZEluZGV4Rm9yRG9tYWluPzogbnVtYmVyW107XG4gIGZpbHRlcmVkSW5kZXg/OiBudW1iZXJbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlckNoYW5nZWQgPSB7XG4gIFtrZXkgaW4ga2V5b2YgRmlsdGVyUmVjb3JkXToge1xuICAgIFtrZXk6IHN0cmluZ106ICdhZGRlZCcgfCAnZGVsZXRlZCcgfCAnbmFtZV9jaGFuZ2VkJyB8ICd2YWx1ZV9jaGFuZ2VkJyB8ICdkYXRhSWRfY2hhbmdlZCc7XG4gIH0gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgZGF0YVZhbHVlQWNjZXNzb3IgPSAoZGF0YToge2luZGV4OiBudW1iZXJ9KSA9PiBudW1iZXIgfCBudWxsO1xuXG5leHBvcnQgY29uc3QgVGltZXN0YW1wU3RlcE1hcCA9IFtcbiAge21heDogMSwgc3RlcDogMC4wNX0sXG4gIHttYXg6IDEwLCBzdGVwOiAwLjF9LFxuICB7bWF4OiAxMDAsIHN0ZXA6IDF9LFxuICB7bWF4OiA1MDAsIHN0ZXA6IDV9LFxuICB7bWF4OiAxMDAwLCBzdGVwOiAxMH0sXG4gIHttYXg6IDUwMDAsIHN0ZXA6IDUwfSxcbiAge21heDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBzdGVwOiAxMDAwfVxuXTtcblxuZXhwb3J0IGNvbnN0IGhpc3RvZ3JhbUJpbnMgPSAzMDtcbmV4cG9ydCBjb25zdCBlbmxhcmdlZEhpc3RvZ3JhbUJpbnMgPSAxMDA7XG5cbmNvbnN0IGR1cmF0aW9uU2Vjb25kID0gMTAwMDtcbmNvbnN0IGR1cmF0aW9uTWludXRlID0gZHVyYXRpb25TZWNvbmQgKiA2MDtcbmNvbnN0IGR1cmF0aW9uSG91ciA9IGR1cmF0aW9uTWludXRlICogNjA7XG5jb25zdCBkdXJhdGlvbkRheSA9IGR1cmF0aW9uSG91ciAqIDI0O1xuY29uc3QgZHVyYXRpb25XZWVrID0gZHVyYXRpb25EYXkgKiA3O1xuY29uc3QgZHVyYXRpb25ZZWFyID0gZHVyYXRpb25EYXkgKiAzNjU7XG5cbmV4cG9ydCBjb25zdCBQTE9UX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgaGlzdG9ncmFtOiBudWxsLFxuICBsaW5lQ2hhcnQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRklMVEVSX1VQREFURVJfUFJPUFMgPSBrZXlNaXJyb3Ioe1xuICBkYXRhSWQ6IG51bGwsXG4gIG5hbWU6IG51bGwsXG4gIGxheWVySWQ6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTElNSVRFRF9GSUxURVJfRUZGRUNUX1BST1BTID0ga2V5TWlycm9yKHtcbiAgW0ZJTFRFUl9VUERBVEVSX1BST1BTLm5hbWVdOiBudWxsXG59KTtcbi8qKlxuICogTWF4IG51bWJlciBvZiBmaWx0ZXIgdmFsdWUgYnVmZmVycyB0aGF0IGRlY2suZ2wgcHJvdmlkZXNcbiAqL1xuXG5jb25zdCBTdXBwb3J0ZWRQbG90VHlwZSA9IHtcbiAgW0ZJTFRFUl9UWVBFUy50aW1lUmFuZ2VdOiB7XG4gICAgZGVmYXVsdDogJ2hpc3RvZ3JhbScsXG4gICAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogJ2xpbmVDaGFydCcsXG4gICAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogJ2xpbmVDaGFydCdcbiAgfSxcbiAgW0ZJTFRFUl9UWVBFUy5yYW5nZV06IHtcbiAgICBkZWZhdWx0OiAnaGlzdG9ncmFtJyxcbiAgICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiAnbGluZUNoYXJ0JyxcbiAgICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiAnbGluZUNoYXJ0J1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklMVEVSX0NPTVBPTkVOVFMgPSB7XG4gIFtGSUxURVJfVFlQRVMuc2VsZWN0XTogJ1NpbmdsZVNlbGVjdEZpbHRlcicsXG4gIFtGSUxURVJfVFlQRVMubXVsdGlTZWxlY3RdOiAnTXVsdGlTZWxlY3RGaWx0ZXInLFxuICBbRklMVEVSX1RZUEVTLnRpbWVSYW5nZV06ICdUaW1lUmFuZ2VGaWx0ZXInLFxuICBbRklMVEVSX1RZUEVTLnJhbmdlXTogJ1JhbmdlRmlsdGVyJyxcbiAgW0ZJTFRFUl9UWVBFUy5wb2x5Z29uXTogJ1BvbHlnb25GaWx0ZXInXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GSUxURVJfU1RSVUNUVVJFID0ge1xuICBkYXRhSWQ6IFtdLCAvLyBbc3RyaW5nXVxuICBmcmVlemU6IGZhbHNlLFxuICBpZDogbnVsbCxcblxuICAvLyB0aW1lIHJhbmdlIGZpbHRlciBzcGVjaWZpY1xuICBmaXhlZERvbWFpbjogZmFsc2UsXG4gIGVubGFyZ2VkOiBmYWxzZSxcbiAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICBhbmltYXRpb25XaW5kb3c6IEFOSU1BVElPTl9XSU5ET1cuZnJlZSxcbiAgc3BlZWQ6IDEsXG5cbiAgLy8gZmllbGQgc3BlY2lmaWNcbiAgbmFtZTogW10sIC8vIHN0cmluZ1xuICB0eXBlOiBudWxsLFxuICBmaWVsZElkeDogW10sIC8vIFtpbnRlZ2VyXVxuICBkb21haW46IG51bGwsXG4gIHZhbHVlOiBudWxsLFxuXG4gIC8vIHBsb3RcbiAgcGxvdFR5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtLFxuICB5QXhpczogbnVsbCxcbiAgaW50ZXJ2YWw6IG51bGwsXG5cbiAgLy8gbW9kZVxuICBncHU6IGZhbHNlXG59O1xuXG5leHBvcnQgY29uc3QgRklMVEVSX0lEX0xFTkdUSCA9IDQ7XG5cbmV4cG9ydCBjb25zdCBMQVlFUl9GSUxURVJTID0gW0ZJTFRFUl9UWVBFUy5wb2x5Z29uXTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBmaWx0ZXIgd2l0aCBhIGRhdGFzZXQgaWQgYXMgZGF0YUlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0RmlsdGVyKGRhdGFJZDogc3RyaW5nIHwgbnVsbCB8IHN0cmluZ1tdKTogRmlsdGVyQmFzZSB7XG4gIHJldHVybiB7XG4gICAgLi4uREVGQVVMVF9GSUxURVJfU1RSVUNUVVJFLFxuICAgIC8vIHN0b3JlIGl0IGFzIGRhdGFJZCBhbmQgaXQgY291bGQgYmUgb25lIG9yIG1hbnlcbiAgICBkYXRhSWQ6IHRvQXJyYXkoZGF0YUlkKSxcbiAgICBpZDogZ2VuZXJhdGVIYXNoSWQoRklMVEVSX0lEX0xFTkdUSClcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIGZpbHRlciBpcyB2YWxpZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gZGF0YUlkXG4gKiBAcGFyYW0gIGZpbHRlciB0byB2YWxpZGF0ZVxuICogQHBhcmFtICBkYXRhc2V0SWQgaWQgdG8gdmFsaWRhdGUgZmlsdGVyIGFnYWluc3RcbiAqIEByZXR1cm4gdHJ1ZSBpZiBhIGZpbHRlciBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRBcHBseUZpbHRlcihmaWx0ZXI6IEZpbHRlciwgZGF0YXNldElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgZGF0YUlkcyA9IHRvQXJyYXkoZmlsdGVyLmRhdGFJZCk7XG4gIHJldHVybiBkYXRhSWRzLmluY2x1ZGVzKGRhdGFzZXRJZCkgJiYgZmlsdGVyLnZhbHVlICE9PSBudWxsO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhbmQgbW9kaWZpZXMgcG9seWdvbiBmaWx0ZXIgc3RydWN0dXJlXG4gKiBAcGFyYW0gZGF0YXNldFxuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIGxheWVyc1xuICogQHJldHVybiAtIHtmaWx0ZXIsIGRhdGFzZXR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVBvbHlnb25GaWx0ZXIoXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlLFxuICBmaWx0ZXI6IFBvbHlnb25GaWx0ZXIsXG4gIGxheWVyczogTGF5ZXJbXVxuKToge2ZpbHRlcjogUG9seWdvbkZpbHRlciB8IG51bGw7IGRhdGFzZXQ6IEtlcGxlclRhYmxlfSB7XG4gIGNvbnN0IGZhaWxlZCA9IHtkYXRhc2V0LCBmaWx0ZXI6IG51bGx9O1xuICBjb25zdCB7dmFsdWUsIGxheWVySWQsIHR5cGUsIGRhdGFJZH0gPSBmaWx0ZXI7XG5cbiAgaWYgKCFsYXllcklkIHx8ICFpc1ZhbGlkRmlsdGVyVmFsdWUodHlwZSwgdmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIGNvbnN0IGlzVmFsaWREYXRhc2V0ID0gZGF0YUlkLmluY2x1ZGVzKGRhdGFzZXQuaWQpO1xuXG4gIGlmICghaXNWYWxpZERhdGFzZXQpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgY29uc3QgbGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGxheWVySWQuaW5jbHVkZXMobC5pZCkpO1xuXG4gIGlmICghbGF5ZXIpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmaWx0ZXI6IHtcbiAgICAgIC4uLmZpbHRlcixcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIGZpZWxkSWR4OiBbXVxuICAgIH0sXG4gICAgZGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIEN1c3RvbSBmaWx0ZXIgdmFsaWRhdG9yc1xuICovXG5jb25zdCBmaWx0ZXJWYWxpZGF0b3JzID0ge1xuICBbRklMVEVSX1RZUEVTLnBvbHlnb25dOiB2YWxpZGF0ZVBvbHlnb25GaWx0ZXJcbn07XG5cbi8qKlxuICogRGVmYXVsdCB2YWxpZGF0ZSBmaWx0ZXIgZnVuY3Rpb25cbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmlsdGVyKFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZSxcbiAgZmlsdGVyOiBQYXJzZWRGaWx0ZXJcbik6IHtmaWx0ZXI6IEZpbHRlciB8IG51bGw7IGRhdGFzZXQ6IEtlcGxlclRhYmxlfSB7XG4gIC8vIG1hdGNoIGZpbHRlci5kYXRhSWRcbiAgY29uc3QgZmFpbGVkID0ge2RhdGFzZXQsIGZpbHRlcjogbnVsbH07XG4gIGNvbnN0IGZpbHRlckRhdGFJZCA9IHRvQXJyYXkoZmlsdGVyLmRhdGFJZCk7XG5cbiAgY29uc3QgZmlsdGVyRGF0YXNldEluZGV4ID0gZmlsdGVyRGF0YUlkLmluZGV4T2YoZGF0YXNldC5pZCk7XG4gIGlmIChmaWx0ZXJEYXRhc2V0SW5kZXggPCAwKSB7XG4gICAgLy8gdGhlIGN1cnJlbnQgZmlsdGVyIGlzIG5vdCBtYXBwZWQgYWdhaW5zdCB0aGUgY3VycmVudCBkYXRhc2V0XG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3QgaW5pdGlhbGl6ZUZpbHRlcjogRmlsdGVyID0ge1xuICAgIC4uLmdldERlZmF1bHRGaWx0ZXIoZmlsdGVyLmRhdGFJZCksXG4gICAgLi4uZmlsdGVyLFxuICAgIGRhdGFJZDogZmlsdGVyRGF0YUlkLFxuICAgIG5hbWU6IHRvQXJyYXkoZmlsdGVyLm5hbWUpXG4gIH07XG5cbiAgY29uc3QgZmllbGROYW1lID0gaW5pdGlhbGl6ZUZpbHRlci5uYW1lW2ZpbHRlckRhdGFzZXRJbmRleF07XG4gIGNvbnN0IHtmaWx0ZXI6IHVwZGF0ZWRGaWx0ZXIsIGRhdGFzZXQ6IHVwZGF0ZWREYXRhc2V0fSA9IGFwcGx5RmlsdGVyRmllbGROYW1lKFxuICAgIGluaXRpYWxpemVGaWx0ZXIsXG4gICAgZGF0YXNldCxcbiAgICBmaWVsZE5hbWUsXG4gICAgZmlsdGVyRGF0YXNldEluZGV4LFxuICAgIHttZXJnZURvbWFpbjogdHJ1ZX1cbiAgKTtcblxuICBpZiAoIXVwZGF0ZWRGaWx0ZXIpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgdXBkYXRlZEZpbHRlci52YWx1ZSA9IGFkanVzdFZhbHVlVG9GaWx0ZXJEb21haW4oZmlsdGVyLnZhbHVlLCB1cGRhdGVkRmlsdGVyKTtcbiAgdXBkYXRlZEZpbHRlci5lbmxhcmdlZCA9XG4gICAgdHlwZW9mIGZpbHRlci5lbmxhcmdlZCA9PT0gJ2Jvb2xlYW4nID8gZmlsdGVyLmVubGFyZ2VkIDogdXBkYXRlZEZpbHRlci5lbmxhcmdlZDtcblxuICBpZiAodXBkYXRlZEZpbHRlci52YWx1ZSA9PT0gbnVsbCkge1xuICAgIC8vIGNhbm5vdCBhZGp1c3Qgc2F2ZWQgdmFsdWUgdG8gZmlsdGVyXG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZmlsdGVyOiB2YWxpZGF0ZUZpbHRlcllBeGlzKHVwZGF0ZWRGaWx0ZXIsIHVwZGF0ZWREYXRhc2V0KSxcbiAgICBkYXRhc2V0OiB1cGRhdGVkRGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNhdmVkIGZpbHRlciBjb25maWcgd2l0aCBuZXcgZGF0YSxcbiAqIGNhbGN1bGF0ZSBkb21haW4gYW5kIGZpZWxkSWR4IGJhc2VkIG5ldyBmaWVsZHMgYW5kIGRhdGFcbiAqXG4gKiBAcGFyYW0gZGF0YXNldFxuICogQHBhcmFtIGZpbHRlciAtIGZpbHRlciB0byBiZSB2YWxpZGF0ZVxuICogQHBhcmFtIGxheWVycyAtIGxheWVyc1xuICogQHJldHVybiB2YWxpZGF0ZWQgZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcldpdGhEYXRhKFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZSxcbiAgZmlsdGVyOiBQYXJzZWRGaWx0ZXIsXG4gIGxheWVyczogTGF5ZXJbXVxuKToge2ZpbHRlcjogRmlsdGVyOyBkYXRhc2V0OiBLZXBsZXJUYWJsZX0ge1xuICByZXR1cm4gZmlsdGVyLnR5cGUgJiYgZmlsdGVyVmFsaWRhdG9ycy5oYXNPd25Qcm9wZXJ0eShmaWx0ZXIudHlwZSlcbiAgICA/IGZpbHRlclZhbGlkYXRvcnNbZmlsdGVyLnR5cGVdKGRhdGFzZXQsIGZpbHRlciwgbGF5ZXJzKVxuICAgIDogdmFsaWRhdGVGaWx0ZXIoZGF0YXNldCwgZmlsdGVyKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBZQXhpc1xuICogQHBhcmFtIGZpbHRlclxuICogQHBhcmFtIGRhdGFzZXRcbiAqIEByZXR1cm4geyp9XG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlRmlsdGVyWUF4aXMoZmlsdGVyLCBkYXRhc2V0KSB7XG4gIC8vIFRPRE86IHZhbGlkYXRlIHlBeGlzIGFnYWluc3Qgb3RoZXIgZGF0YXNldHNcblxuICBjb25zdCB7ZmllbGRzfSA9IGRhdGFzZXQ7XG4gIGNvbnN0IHt5QXhpc30gPSBmaWx0ZXI7XG4gIC8vIFRPRE86IHZhbGlkYXRlIHlBeGlzIGFnYWluc3Qgb3RoZXIgZGF0YXNldHNcbiAgaWYgKHlBeGlzKSB7XG4gICAgY29uc3QgbWF0Y2hlZEF4aXMgPSBmaWVsZHMuZmluZCgoe25hbWUsIHR5cGV9KSA9PiBuYW1lID09PSB5QXhpcy5uYW1lICYmIHR5cGUgPT09IHlBeGlzLnR5cGUpO1xuXG4gICAgZmlsdGVyID0gbWF0Y2hlZEF4aXNcbiAgICAgID8ge1xuICAgICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgICB5QXhpczogbWF0Y2hlZEF4aXMsXG4gICAgICAgICAgLi4uZ2V0RmlsdGVyUGxvdCh7Li4uZmlsdGVyLCB5QXhpczogbWF0Y2hlZEF4aXN9LCBkYXRhc2V0KVxuICAgICAgICB9XG4gICAgICA6IGZpbHRlcjtcbiAgfVxuXG4gIHJldHVybiBmaWx0ZXI7XG59XG5cbi8qKlxuICogR2V0IGRlZmF1bHQgZmlsdGVyIHByb3AgYmFzZWQgb24gZmllbGQgdHlwZVxuICpcbiAqIEBwYXJhbSBmaWVsZFxuICogQHBhcmFtIGZpZWxkRG9tYWluXG4gKiBAcmV0dXJucyBkZWZhdWx0IGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsdGVyUHJvcHMoXG4gIGZpZWxkOiBGaWVsZCxcbiAgZmllbGREb21haW46IEZpZWxkRG9tYWluXG4pOiBQYXJ0aWFsPEZpbHRlcj4gJiB7ZmllbGRUeXBlOiBzdHJpbmd9IHtcbiAgY29uc3QgZmlsdGVyUHJvcHMgPSB7XG4gICAgLi4uZmllbGREb21haW4sXG4gICAgZmllbGRUeXBlOiBmaWVsZC50eXBlXG4gIH07XG5cbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgICAgIHZhbHVlOiBmaWVsZERvbWFpbi5kb21haW4sXG4gICAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5yYW5nZSxcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICB0eXBlT3B0aW9uczogW0ZJTFRFUl9UWVBFUy5yYW5nZV0sXG4gICAgICAgIGdwdTogdHJ1ZVxuICAgICAgfTtcblxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW46XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5maWx0ZXJQcm9wcyxcbiAgICAgICAgdHlwZTogRklMVEVSX1RZUEVTLnNlbGVjdCxcbiAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgIGdwdTogZmFsc2VcbiAgICAgIH07XG5cbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuZGF0ZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMubXVsdGlTZWxlY3QsXG4gICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgZ3B1OiBmYWxzZVxuICAgICAgfTtcblxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMudGltZVJhbmdlLFxuICAgICAgICBlbmxhcmdlZDogdHJ1ZSxcbiAgICAgICAgZml4ZWREb21haW46IHRydWUsXG4gICAgICAgIHZhbHVlOiBmaWx0ZXJQcm9wcy5kb21haW4sXG4gICAgICAgIGdwdTogdHJ1ZVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4ge307XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldFBvbHlnb25GaWx0ZXJGdW5jdG9yID0gKGxheWVyLCBmaWx0ZXIsIGRhdGFDb250YWluZXIpID0+IHtcbiAgY29uc3QgZ2V0UG9zaXRpb24gPSBsYXllci5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuXG4gIHN3aXRjaCAobGF5ZXIudHlwZSkge1xuICAgIGNhc2UgTEFZRVJfVFlQRVMucG9pbnQ6XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5pY29uOlxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihkYXRhKTtcbiAgICAgICAgcmV0dXJuIHBvcy5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmIGlzSW5Qb2x5Z29uKHBvcywgZmlsdGVyLnZhbHVlKTtcbiAgICAgIH07XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5hcmM6XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5saW5lOlxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihkYXRhKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFtwb3NbMF0sIHBvc1sxXV0sXG4gICAgICAgICAgICBbcG9zWzNdLCBwb3NbNF1dXG4gICAgICAgICAgXS5ldmVyeShwb2ludCA9PiBpc0luUG9seWdvbihwb2ludCwgZmlsdGVyLnZhbHVlKSlcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5oZXhhZ29uSWQ6XG4gICAgICBpZiAobGF5ZXIuZGF0YVRvRmVhdHVyZSAmJiBsYXllci5kYXRhVG9GZWF0dXJlLmNlbnRyb2lkcykge1xuICAgICAgICByZXR1cm4gZGF0YSA9PiB7XG4gICAgICAgICAgLy8gbnVsbCBvciBnZXRDZW50cm9pZCh7aWR9KVxuICAgICAgICAgIGNvbnN0IGNlbnRyb2lkID0gbGF5ZXIuZGF0YVRvRmVhdHVyZS5jZW50cm9pZHNbZGF0YS5pbmRleF07XG4gICAgICAgICAgcmV0dXJuIGNlbnRyb2lkICYmIGlzSW5Qb2x5Z29uKGNlbnRyb2lkLCBmaWx0ZXIudmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGdldFBvc2l0aW9uKGRhdGEpO1xuICAgICAgICBpZiAoIWgzSXNWYWxpZChpZCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9zID0gZ2V0Q2VudHJvaWQoe2lkfSk7XG4gICAgICAgIHJldHVybiBwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJiBpc0luUG9seWdvbihwb3MsIGZpbHRlci52YWx1ZSk7XG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gKCkgPT4gdHJ1ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBAcGFyYW0gcGFyYW0gQW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIHJvdyByZWNvcmQuXG4gKiBAcGFyYW0gcGFyYW0uaW5kZXggSW5kZXggb2YgdGhlIHJvdyBpbiBkYXRhIGNvbnRhaW5lci5cbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSB0byBrZWVwIHRoZSBlbGVtZW50LCBvciBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbnR5cGUgZmlsdGVyRnVuY3Rpb24gPSAoZGF0YToge2luZGV4OiBudW1iZXJ9KSA9PiBib29sZWFuO1xuLyoqXG4gKiBAcGFyYW0gZmllbGQgZGF0YXNldCBGaWVsZFxuICogQHBhcmFtIGRhdGFJZCBEYXRhc2V0IGlkXG4gKiBAcGFyYW0gZmlsdGVyIEZpbHRlciBvYmplY3RcbiAqIEBwYXJhbSBsYXllcnMgbGlzdCBvZiBsYXllcnMgdG8gZmlsdGVyIHVwb25cbiAqIEBwYXJhbSBkYXRhQ29udGFpbmVyIERhdGEgY29udGFpbmVyXG4gKiBAcmV0dXJuIGZpbHRlckZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJGdW5jdGlvbihcbiAgZmllbGQ6IEZpZWxkIHwgbnVsbCxcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIGZpbHRlcjogRmlsdGVyLFxuICBsYXllcnM6IExheWVyW10sXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2Vcbik6IGZpbHRlckZ1bmN0aW9uIHtcbiAgLy8gZmllbGQgY291bGQgYmUgbnVsbCBpbiBwb2x5Z29uIGZpbHRlclxuICBjb25zdCB2YWx1ZUFjY2Vzc29yID0gZmllbGQgPyBmaWVsZC52YWx1ZUFjY2Vzc29yIDogZGF0YSA9PiBudWxsO1xuICBjb25zdCBkZWZhdWx0RnVuYyA9IGQgPT4gdHJ1ZTtcblxuICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMucmFuZ2U6XG4gICAgICByZXR1cm4gZGF0YSA9PiBpc0luUmFuZ2UodmFsdWVBY2Nlc3NvcihkYXRhKSwgZmlsdGVyLnZhbHVlKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdDpcbiAgICAgIHJldHVybiBkYXRhID0+IGZpbHRlci52YWx1ZS5pbmNsdWRlcyh2YWx1ZUFjY2Vzc29yKGRhdGEpKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5zZWxlY3Q6XG4gICAgICByZXR1cm4gZGF0YSA9PiB2YWx1ZUFjY2Vzc29yKGRhdGEpID09PSBmaWx0ZXIudmFsdWU7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMudGltZVJhbmdlOlxuICAgICAgaWYgKCFmaWVsZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEZ1bmM7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXBwZWRWYWx1ZSA9IGdldChmaWVsZCwgWydmaWx0ZXJQcm9wcycsICdtYXBwZWRWYWx1ZSddKTtcbiAgICAgIGNvbnN0IGFjY2Vzc29yID0gQXJyYXkuaXNBcnJheShtYXBwZWRWYWx1ZSlcbiAgICAgICAgPyBkYXRhID0+IG1hcHBlZFZhbHVlW2RhdGEuaW5kZXhdXG4gICAgICAgIDogZGF0YSA9PiB0aW1lVG9Vbml4TWlsbGkodmFsdWVBY2Nlc3NvcihkYXRhKSwgZmllbGQuZm9ybWF0KTtcbiAgICAgIHJldHVybiBkYXRhID0+IGlzSW5SYW5nZShhY2Nlc3NvcihkYXRhKSwgZmlsdGVyLnZhbHVlKTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5wb2x5Z29uOlxuICAgICAgaWYgKCFsYXllcnMgfHwgIWxheWVycy5sZW5ndGggfHwgIWZpbHRlci5sYXllcklkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RnVuYztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxheWVyRmlsdGVyRnVuY3Rpb25zID0gZmlsdGVyLmxheWVySWRcbiAgICAgICAgLm1hcChpZCA9PiBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IGlkKSlcbiAgICAgICAgLmZpbHRlcihsID0+IGwgJiYgbC5jb25maWcuZGF0YUlkID09PSBkYXRhSWQpXG4gICAgICAgIC5tYXAobGF5ZXIgPT4gZ2V0UG9seWdvbkZpbHRlckZ1bmN0b3IobGF5ZXIsIGZpbHRlciwgZGF0YUNvbnRhaW5lcikpO1xuXG4gICAgICByZXR1cm4gZGF0YSA9PiBsYXllckZpbHRlckZ1bmN0aW9ucy5ldmVyeShmaWx0ZXJGdW5jID0+IGZpbHRlckZ1bmMoZGF0YSkpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGVmYXVsdEZ1bmM7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUZpbHRlckRhdGFJZChkYXRhSWQ6IHN0cmluZyk6IEZpbHRlckJhc2Uge1xuICByZXR1cm4gZ2V0RGVmYXVsdEZpbHRlcihkYXRhSWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyRGF0YUJ5RmlsdGVyVHlwZXMoXG4gIHtcbiAgICBkeW5hbWljRG9tYWluRmlsdGVycyxcbiAgICBjcHVGaWx0ZXJzLFxuICAgIGZpbHRlckZ1bmNzXG4gIH06IHtcbiAgICBkeW5hbWljRG9tYWluRmlsdGVyczogRmlsdGVyW10gfCBudWxsO1xuICAgIGNwdUZpbHRlcnM6IEZpbHRlcltdIHwgbnVsbDtcbiAgICBmaWx0ZXJGdW5jczoge1xuICAgICAgW2tleTogc3RyaW5nXTogZmlsdGVyRnVuY3Rpb247XG4gICAgfTtcbiAgfSxcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZVxuKTogRmlsdGVyUmVzdWx0IHtcbiAgY29uc3QgZmlsdGVyZWRJbmRleEZvckRvbWFpbjogbnVtYmVyW10gPSBbXTtcbiAgY29uc3QgZmlsdGVyZWRJbmRleDogbnVtYmVyW10gPSBbXTtcblxuICBjb25zdCBmaWx0ZXJDb250ZXh0ID0ge2luZGV4OiAtMSwgZGF0YUNvbnRhaW5lcn07XG4gIGNvbnN0IGZpbHRlckZ1bmNDYWxsZXIgPSAoZmlsdGVyOiBGaWx0ZXIpID0+IGZpbHRlckZ1bmNzW2ZpbHRlci5pZF0oZmlsdGVyQ29udGV4dCk7XG5cbiAgY29uc3QgbnVtUm93cyA9IGRhdGFDb250YWluZXIubnVtUm93cygpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVJvd3M7ICsraSkge1xuICAgIGZpbHRlckNvbnRleHQuaW5kZXggPSBpO1xuXG4gICAgY29uc3QgbWF0Y2hGb3JEb21haW4gPSBkeW5hbWljRG9tYWluRmlsdGVycyAmJiBkeW5hbWljRG9tYWluRmlsdGVycy5ldmVyeShmaWx0ZXJGdW5jQ2FsbGVyKTtcbiAgICBpZiAobWF0Y2hGb3JEb21haW4pIHtcbiAgICAgIGZpbHRlcmVkSW5kZXhGb3JEb21haW4ucHVzaChmaWx0ZXJDb250ZXh0LmluZGV4KTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaEZvclJlbmRlciA9IGNwdUZpbHRlcnMgJiYgY3B1RmlsdGVycy5ldmVyeShmaWx0ZXJGdW5jQ2FsbGVyKTtcbiAgICBpZiAobWF0Y2hGb3JSZW5kZXIpIHtcbiAgICAgIGZpbHRlcmVkSW5kZXgucHVzaChmaWx0ZXJDb250ZXh0LmluZGV4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLihkeW5hbWljRG9tYWluRmlsdGVycyA/IHtmaWx0ZXJlZEluZGV4Rm9yRG9tYWlufSA6IHt9KSxcbiAgICAuLi4oY3B1RmlsdGVycyA/IHtmaWx0ZXJlZEluZGV4fSA6IHt9KVxuICB9O1xufVxuXG4vKipcbiAqIEdldCBhIHJlY29yZCBvZiBmaWx0ZXJzIGJhc2VkIG9uIGRvbWFpbiB0eXBlIGFuZCBncHUgLyBjcHVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlclJlY29yZChcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIGZpbHRlcnM6IEZpbHRlcltdLFxuICBvcHQ6IEZpbHRlckRhdGFzZXRPcHQgPSB7fVxuKTogRmlsdGVyUmVjb3JkIHtcbiAgY29uc3QgZmlsdGVyUmVjb3JkOiBGaWx0ZXJSZWNvcmQgPSB7XG4gICAgZHluYW1pY0RvbWFpbjogW10sXG4gICAgZml4ZWREb21haW46IFtdLFxuICAgIGNwdTogW10sXG4gICAgZ3B1OiBbXVxuICB9O1xuXG4gIGZpbHRlcnMuZm9yRWFjaChmID0+IHtcbiAgICBpZiAoaXNWYWxpZEZpbHRlclZhbHVlKGYudHlwZSwgZi52YWx1ZSkgJiYgdG9BcnJheShmLmRhdGFJZCkuaW5jbHVkZXMoZGF0YUlkKSkge1xuICAgICAgKGYuZml4ZWREb21haW4gfHwgb3B0Lmlnbm9yZURvbWFpblxuICAgICAgICA/IGZpbHRlclJlY29yZC5maXhlZERvbWFpblxuICAgICAgICA6IGZpbHRlclJlY29yZC5keW5hbWljRG9tYWluXG4gICAgICApLnB1c2goZik7XG5cbiAgICAgIChmLmdwdSAmJiAhb3B0LmNwdU9ubHkgPyBmaWx0ZXJSZWNvcmQuZ3B1IDogZmlsdGVyUmVjb3JkLmNwdSkucHVzaChmKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmaWx0ZXJSZWNvcmQ7XG59XG5cbi8qKlxuICogQ29tcGFyZSBmaWx0ZXIgcmVjb3JkcyB0byBnZXQgd2hhdCBoYXMgY2hhbmdlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZkZpbHRlcnMoXG4gIGZpbHRlclJlY29yZDogRmlsdGVyUmVjb3JkLFxuICBvbGRGaWx0ZXJSZWNvcmQ6IEZpbHRlclJlY29yZCB8IHt9ID0ge31cbik6IEZpbHRlckNoYW5nZWQge1xuICBsZXQgZmlsdGVyQ2hhbmdlZDogUGFydGlhbDxGaWx0ZXJDaGFuZ2VkPiA9IHt9O1xuXG4gIChPYmplY3QuZW50cmllcyhmaWx0ZXJSZWNvcmQpIGFzIEVudHJpZXM8RmlsdGVyUmVjb3JkPikuZm9yRWFjaCgoW3JlY29yZCwgaXRlbXNdKSA9PiB7XG4gICAgaXRlbXMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgY29uc3Qgb2xkRmlsdGVyOiBGaWx0ZXIgPSAob2xkRmlsdGVyUmVjb3JkW3JlY29yZF0gfHwgW10pLmZpbmQoXG4gICAgICAgIChmOiBGaWx0ZXIpID0+IGYuaWQgPT09IGZpbHRlci5pZFxuICAgICAgKTtcblxuICAgICAgaWYgKCFvbGRGaWx0ZXIpIHtcbiAgICAgICAgLy8gYWRkZWRcbiAgICAgICAgZmlsdGVyQ2hhbmdlZCA9IHNldChbcmVjb3JkLCBmaWx0ZXIuaWRdLCAnYWRkZWQnLCBmaWx0ZXJDaGFuZ2VkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNoZWNrICB3aGF0IGhhcyBjaGFuZ2VkXG4gICAgICAgIFsnbmFtZScsICd2YWx1ZScsICdkYXRhSWQnXS5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICAgIGlmIChmaWx0ZXJbcHJvcF0gIT09IG9sZEZpbHRlcltwcm9wXSkge1xuICAgICAgICAgICAgZmlsdGVyQ2hhbmdlZCA9IHNldChbcmVjb3JkLCBmaWx0ZXIuaWRdLCBgJHtwcm9wfV9jaGFuZ2VkYCwgZmlsdGVyQ2hhbmdlZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIChvbGRGaWx0ZXJSZWNvcmRbcmVjb3JkXSB8fCBbXSkuZm9yRWFjaCgob2xkRmlsdGVyOiBGaWx0ZXIpID0+IHtcbiAgICAgIC8vIGRlbGV0ZWRcbiAgICAgIGlmICghaXRlbXMuZmluZChmID0+IGYuaWQgPT09IG9sZEZpbHRlci5pZCkpIHtcbiAgICAgICAgZmlsdGVyQ2hhbmdlZCA9IHNldChbcmVjb3JkLCBvbGRGaWx0ZXIuaWRdLCAnZGVsZXRlZCcsIGZpbHRlckNoYW5nZWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gey4uLntkeW5hbWljRG9tYWluOiBudWxsLCBmaXhlZERvbWFpbjogbnVsbCwgY3B1OiBudWxsLCBncHU6IG51bGx9LCAuLi5maWx0ZXJDaGFuZ2VkfTtcbn1cbi8qKlxuICogQ2FsbCBieSBwYXJzaW5nIGZpbHRlcnMgZnJvbSBVUkxcbiAqIENoZWNrIGlmIHZhbHVlIG9mIGZpbHRlciB3aXRoaW4gZmlsdGVyIGRvbWFpbiwgaWYgbm90IGFkanVzdCBpdCB0byBtYXRjaFxuICogZmlsdGVyIGRvbWFpblxuICpcbiAqIEByZXR1cm5zIHZhbHVlIC0gYWRqdXN0ZWQgdmFsdWUgdG8gbWF0Y2ggZmlsdGVyIG9yIG51bGwgdG8gcmVtb3ZlIGZpbHRlclxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VmFsdWVUb0ZpbHRlckRvbWFpbih2YWx1ZTogRmlsdGVyWyd2YWx1ZSddLCB7ZG9tYWluLCB0eXBlfSkge1xuICBpZiAoIWRvbWFpbiB8fCAhdHlwZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRklMVEVSX1RZUEVTLnJhbmdlOlxuICAgIGNhc2UgRklMVEVSX1RZUEVTLnRpbWVSYW5nZTpcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgdmFsdWUubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgIHJldHVybiBkb21haW4ubWFwKGQgPT4gZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZS5tYXAoKGQsIGkpID0+IChub3ROdWxsb3JVbmRlZmluZWQoZCkgJiYgaXNJblJhbmdlKGQsIGRvbWFpbikgPyBkIDogZG9tYWluW2ldKSk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdDpcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyZWRWYWx1ZSA9IHZhbHVlLmZpbHRlcihkID0+IGRvbWFpbi5pbmNsdWRlcyhkKSk7XG4gICAgICByZXR1cm4gZmlsdGVyZWRWYWx1ZS5sZW5ndGggPyBmaWx0ZXJlZFZhbHVlIDogW107XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5zZWxlY3Q6XG4gICAgICByZXR1cm4gZG9tYWluLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogdHJ1ZTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbi8qKlxuICogQ2FsY3VsYXRlIG51bWVyaWMgZG9tYWluIGFuZCBzdWl0YWJsZSBzdGVwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROdW1lcmljRmllbGREb21haW4oXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHZhbHVlQWNjZXNzb3I6IGRhdGFWYWx1ZUFjY2Vzc29yXG4pOiBSYW5nZUZpZWxkRG9tYWluIHtcbiAgbGV0IGRvbWFpbjogW251bWJlciwgbnVtYmVyXSA9IFswLCAxXTtcbiAgbGV0IHN0ZXAgPSAwLjE7XG5cbiAgY29uc3QgbWFwcGVkVmFsdWUgPSBkYXRhQ29udGFpbmVyLm1hcEluZGV4KHZhbHVlQWNjZXNzb3IpO1xuXG4gIGlmIChkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA+IDEpIHtcbiAgICBkb21haW4gPSBTY2FsZVV0aWxzLmdldExpbmVhckRvbWFpbihtYXBwZWRWYWx1ZSk7XG4gICAgY29uc3QgZGlmZiA9IGRvbWFpblsxXSAtIGRvbWFpblswXTtcblxuICAgIC8vIGluIGNhc2UgZXF1YWwgZG9tYWluLCBbOTYsIDk2XSwgd2hpY2ggd2lsbCBicmVhayBxdWFudGl6ZSBzY2FsZVxuICAgIGlmICghZGlmZikge1xuICAgICAgZG9tYWluWzFdID0gZG9tYWluWzBdICsgMTtcbiAgICB9XG5cbiAgICBzdGVwID0gZ2V0TnVtZXJpY1N0ZXBTaXplKGRpZmYpIHx8IHN0ZXA7XG4gICAgZG9tYWluWzBdID0gZm9ybWF0TnVtYmVyQnlTdGVwKGRvbWFpblswXSwgc3RlcCwgJ2Zsb29yJyk7XG4gICAgZG9tYWluWzFdID0gZm9ybWF0TnVtYmVyQnlTdGVwKGRvbWFpblsxXSwgc3RlcCwgJ2NlaWwnKTtcbiAgfVxuXG4gIGNvbnN0IHtoaXN0b2dyYW0sIGVubGFyZ2VkSGlzdG9ncmFtfSA9IGdldEhpc3RvZ3JhbShkb21haW4sIG1hcHBlZFZhbHVlKTtcblxuICByZXR1cm4ge2RvbWFpbiwgc3RlcCwgaGlzdG9ncmFtLCBlbmxhcmdlZEhpc3RvZ3JhbX07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHN0ZXAgc2l6ZSBmb3IgcmFuZ2UgYW5kIHRpbWVyYW5nZSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE51bWVyaWNTdGVwU2l6ZShkaWZmOiBudW1iZXIpOiBudW1iZXIge1xuICBkaWZmID0gTWF0aC5hYnMoZGlmZik7XG5cbiAgaWYgKGRpZmYgPiAxMDApIHtcbiAgICByZXR1cm4gMTtcbiAgfSBlbHNlIGlmIChkaWZmID4gMykge1xuICAgIHJldHVybiAwLjAxO1xuICB9IGVsc2UgaWYgKGRpZmYgPiAxKSB7XG4gICAgcmV0dXJuIDAuMDAxO1xuICB9XG4gIC8vIFRyeSB0byBnZXQgYXQgbGVhc3QgMTAwMCBzdGVwcyAtIGFuZCBrZWVwIHRoZSBzdGVwIHNpemUgYmVsb3cgdGhhdCBvZlxuICAvLyB0aGUgKGRpZmYgPiAxKSBjYXNlLlxuICBjb25zdCB4ID0gZGlmZiAvIDEwMDA7XG4gIC8vIEZpbmQgdGhlIGV4cG9uZW50IGFuZCB0cnVuY2F0ZSB0byAxMCB0byB0aGUgcG93ZXIgb2YgdGhhdCBleHBvbmVudFxuXG4gIGNvbnN0IGV4cG9uZW50aWFsRm9ybSA9IHgudG9FeHBvbmVudGlhbCgpO1xuICBjb25zdCBleHBvbmVudCA9IHBhcnNlRmxvYXQoZXhwb25lbnRpYWxGb3JtLnNwbGl0KCdlJylbMV0pO1xuXG4gIC8vIEdldHRpbmcgcmVhZHkgZm9yIG5vZGUgMTJcbiAgLy8gdGhpcyBpcyB3aHkgd2UgbmVlZCBkZWNpbWFsLmpzXG4gIC8vIE1hdGgucG93KDEwLCAtNSkgPSAwLjAwMDAwOTk5OTk5OTk5OTk5OTk5OVxuICAvLyB0aGUgYWJvdmUgcmVzdWx0IHNob3dzIGluIGJyb3dzZXIgYW5kIG5vZGUgMTBcbiAgLy8gbm9kZSAxMiBiZWhhdmVzIGNvcnJlY3RseVxuICByZXR1cm4gbmV3IERlY2ltYWwoMTApLnBvdyhleHBvbmVudCkudG9OdW1iZXIoKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGltZXN0YW1wIGRvbWFpbiBhbmQgc3VpdGFibGUgc3RlcFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZXN0YW1wRmllbGREb21haW4oXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHZhbHVlQWNjZXNzb3I6IGRhdGFWYWx1ZUFjY2Vzc29yXG4pOiBUaW1lUmFuZ2VGaWVsZERvbWFpbiB7XG4gIC8vIHRvIGF2b2lkIGNvbnZlcnRpbmcgc3RyaW5nIGZvcm1hdCB0aW1lIHRvIGVwb2NoXG4gIC8vIGV2ZXJ5IHRpbWUgd2UgY29tcGFyZSB3ZSBzdG9yZSBhIHZhbHVlIG1hcHBlZCB0byBpbnQgaW4gZmlsdGVyIGRvbWFpblxuXG4gIGNvbnN0IG1hcHBlZFZhbHVlID0gZGF0YUNvbnRhaW5lci5tYXBJbmRleCh2YWx1ZUFjY2Vzc29yKTtcbiAgY29uc3QgZG9tYWluID0gU2NhbGVVdGlscy5nZXRMaW5lYXJEb21haW4obWFwcGVkVmFsdWUpO1xuICBjb25zdCBkZWZhdWx0VGltZUZvcm1hdCA9IGdldFRpbWVXaWRnZXRUaXRsZUZvcm1hdHRlcihkb21haW4pO1xuXG4gIGxldCBzdGVwID0gMC4wMTtcblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuICBjb25zdCBlbnRyeSA9IFRpbWVzdGFtcFN0ZXBNYXAuZmluZChmID0+IGYubWF4ID49IGRpZmYpO1xuICBpZiAoZW50cnkpIHtcbiAgICBzdGVwID0gZW50cnkuc3RlcDtcbiAgfVxuXG4gIGNvbnN0IHtoaXN0b2dyYW0sIGVubGFyZ2VkSGlzdG9ncmFtfSA9IGdldEhpc3RvZ3JhbShkb21haW4sIG1hcHBlZFZhbHVlKTtcblxuICByZXR1cm4ge1xuICAgIGRvbWFpbixcbiAgICBzdGVwLFxuICAgIG1hcHBlZFZhbHVlLFxuICAgIGhpc3RvZ3JhbSxcbiAgICBlbmxhcmdlZEhpc3RvZ3JhbSxcbiAgICBkZWZhdWx0VGltZUZvcm1hdFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGlzdG9ncmFtQ29uc3RydWN0KFxuICBkb21haW46IFtudW1iZXIsIG51bWJlcl0sXG4gIG1hcHBlZFZhbHVlOiAoTWlsbGlzZWNvbmQgfCBudW1iZXIpW10sXG4gIGJpbnM6IG51bWJlclxuKTogSGlzdG9ncmFtQmluW10ge1xuICByZXR1cm4gZDNIaXN0b2dyYW0oKVxuICAgIC50aHJlc2hvbGRzKHRpY2tzKGRvbWFpblswXSwgZG9tYWluWzFdLCBiaW5zKSlcbiAgICAuZG9tYWluKGRvbWFpbikobWFwcGVkVmFsdWUpXG4gICAgLm1hcChiaW4gPT4gKHtcbiAgICAgIGNvdW50OiBiaW4ubGVuZ3RoLFxuICAgICAgeDA6IGJpbi54MCxcbiAgICAgIHgxOiBiaW4ueDFcbiAgICB9KSk7XG59XG4vKipcbiAqIENhbGN1bGF0ZSBoaXN0b2dyYW0gZnJvbSBkb21haW4gYW5kIGFycmF5IG9mIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlzdG9ncmFtKFxuICBkb21haW46IFtudW1iZXIsIG51bWJlcl0sXG4gIG1hcHBlZFZhbHVlOiAoTWlsbGlzZWNvbmQgfCBudW1iZXIpW11cbik6IHtoaXN0b2dyYW06IEhpc3RvZ3JhbUJpbltdOyBlbmxhcmdlZEhpc3RvZ3JhbTogSGlzdG9ncmFtQmluW119IHtcbiAgY29uc3QgaGlzdG9ncmFtID0gaGlzdG9ncmFtQ29uc3RydWN0KGRvbWFpbiwgbWFwcGVkVmFsdWUsIGhpc3RvZ3JhbUJpbnMpO1xuICBjb25zdCBlbmxhcmdlZEhpc3RvZ3JhbSA9IGhpc3RvZ3JhbUNvbnN0cnVjdChkb21haW4sIG1hcHBlZFZhbHVlLCBlbmxhcmdlZEhpc3RvZ3JhbUJpbnMpO1xuXG4gIHJldHVybiB7aGlzdG9ncmFtLCBlbmxhcmdlZEhpc3RvZ3JhbX07XG59XG5cbi8qKlxuICogcm91bmQgbnVtYmVyIGJhc2VkIG9uIHN0ZXBcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gdmFsXG4gKiBAcGFyYW0ge051bWJlcn0gc3RlcFxuICogQHBhcmFtIHtzdHJpbmd9IGJvdW5kXG4gKiBAcmV0dXJucyB7TnVtYmVyfSByb3VuZGVkIG51bWJlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TnVtYmVyQnlTdGVwKHZhbDogbnVtYmVyLCBzdGVwOiBudW1iZXIsIGJvdW5kOiAnZmxvb3InIHwgJ2NlaWwnKTogbnVtYmVyIHtcbiAgaWYgKGJvdW5kID09PSAnZmxvb3InKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IodmFsICogKDEgLyBzdGVwKSkgLyAoMSAvIHN0ZXApO1xuICB9XG5cbiAgcmV0dXJuIE1hdGguY2VpbCh2YWwgKiAoMSAvIHN0ZXApKSAvICgxIC8gc3RlcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0luUmFuZ2UodmFsOiBhbnksIGRvbWFpbjogbnVtYmVyW10pOiBib29sZWFuIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGRvbWFpbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdmFsID49IGRvbWFpblswXSAmJiB2YWwgPD0gZG9tYWluWzFdO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIHBvaW50IGlzIHdpdGhpbiB0aGUgcHJvdmlkZWQgcG9seWdvblxuICpcbiAqIEBwYXJhbSBwb2ludCBhcyBpbnB1dCBzZWFyY2ggW2xhdCwgbG5nXVxuICogQHBhcmFtIHBvbHlnb24gUG9pbnRzIG11c3QgYmUgd2l0aGluIHRoZXNlIChNdWx0aSlQb2x5Z29uKHMpXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJblBvbHlnb24ocG9pbnQ6IG51bWJlcltdLCBwb2x5Z29uOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIGJvb2xlYW5XaXRoaW4odHVyZlBvaW50KHBvaW50KSwgcG9seWdvbik7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRpbWVEb21haW4oZG9tYWluKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGRvbWFpbikgJiYgZG9tYWluLmV2ZXJ5KE51bWJlci5pc0Zpbml0ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZVdpZGdldFRpdGxlRm9ybWF0dGVyKGRvbWFpbjogW251bWJlciwgbnVtYmVyXSk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoIWlzVmFsaWRUaW1lRG9tYWluKGRvbWFpbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGRpZmYgPSBkb21haW5bMV0gLSBkb21haW5bMF07XG5cbiAgLy8gTG9jYWwgYXdhcmUgZm9ybWF0c1xuICAvLyBodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvcGFyc2luZy9zdHJpbmctZm9ybWF0XG4gIHJldHVybiBkaWZmID4gZHVyYXRpb25ZZWFyID8gJ0wnIDogZGlmZiA+IGR1cmF0aW9uRGF5ID8gJ0wgTFQnIDogJ0wgTFRTJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVXaWRnZXRIaW50Rm9ybWF0dGVyKGRvbWFpbjogW251bWJlciwgbnVtYmVyXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghaXNWYWxpZFRpbWVEb21haW4oZG9tYWluKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuICByZXR1cm4gZGlmZiA+IGR1cmF0aW9uV2Vla1xuICAgID8gJ0wnXG4gICAgOiBkaWZmID4gZHVyYXRpb25EYXlcbiAgICA/ICdMIExUJ1xuICAgIDogZGlmZiA+IGR1cmF0aW9uSG91clxuICAgID8gJ0xUJ1xuICAgIDogJ0xUUyc7XG59XG5cbi8qKlxuICogU2FuaXR5IGNoZWNrIG9uIGZpbHRlcnMgdG8gcHJlcGFyZSBmb3Igc2F2ZVxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEZpbHRlclZhbHVlKHR5cGU6IHN0cmluZyB8IG51bGwsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKCF0eXBlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRklMVEVSX1RZUEVTLnNlbGVjdDpcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2U7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5yYW5nZTpcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy50aW1lUmFuZ2U6XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkodiA9PiB2ICE9PSBudWxsICYmICFpc05hTih2KSk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdDpcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBCb29sZWFuKHZhbHVlLmxlbmd0aCk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5pbnB1dDpcbiAgICAgIHJldHVybiBCb29sZWFuKHZhbHVlLmxlbmd0aCk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5wb2x5Z29uOlxuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXQodmFsdWUsIFsnZ2VvbWV0cnknLCAnY29vcmRpbmF0ZXMnXSk7XG4gICAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSAmJiB2YWx1ZS5pZCAmJiBjb29yZGluYXRlcyk7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlclBsb3QoXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhc2V0OiBLZXBsZXJUYWJsZVxuKToge2xpbmVDaGFydDogTGluZUNoYXJ0OyB5QXhzOiBGaWVsZH0gfCB7fSB7XG4gIGlmIChmaWx0ZXIucGxvdFR5cGUgPT09IFBMT1RfVFlQRVMuaGlzdG9ncmFtIHx8ICFmaWx0ZXIueUF4aXMpIHtcbiAgICAvLyBoaXN0b2dyYW0gc2hvdWxkIGJlIGNhbGN1bGF0ZWQgd2hlbiBjcmVhdGUgZmlsdGVyXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3Qge21hcHBlZFZhbHVlID0gW119ID0gZmlsdGVyO1xuICBjb25zdCB7eUF4aXN9ID0gZmlsdGVyO1xuICBjb25zdCBmaWVsZElkeCA9IGRhdGFzZXQuZ2V0Q29sdW1uRmllbGRJZHgoeUF4aXMubmFtZSk7XG4gIGlmIChmaWVsZElkeCA8IDApIHtcbiAgICBDb25zb2xlLndhcm4oYHlBeGlzICR7eUF4aXMubmFtZX0gZG9lcyBub3QgZXhpc3QgaW4gZGF0YXNldGApO1xuICAgIHJldHVybiB7bGluZUNoYXJ0OiB7fSwgeUF4aXN9O1xuICB9XG5cbiAgLy8gcmV0dXJuIGxpbmVDaGFydFxuICBjb25zdCBzZXJpZXMgPSBkYXRhc2V0LmRhdGFDb250YWluZXJcbiAgICAubWFwKFxuICAgICAgKHJvdywgcm93SW5kZXgpID0+ICh7XG4gICAgICAgIHg6IG1hcHBlZFZhbHVlW3Jvd0luZGV4XSxcbiAgICAgICAgeTogcm93LnZhbHVlQXQoZmllbGRJZHgpXG4gICAgICB9KSxcbiAgICAgIHRydWVcbiAgICApXG4gICAgLmZpbHRlcigoe3gsIHl9KSA9PiBOdW1iZXIuaXNGaW5pdGUoeCkgJiYgTnVtYmVyLmlzRmluaXRlKHkpKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhc2NlbmRpbmcoYS54LCBiLngpKTtcblxuICBjb25zdCB5RG9tYWluID0gZXh0ZW50KHNlcmllcywgZCA9PiBkLnkpO1xuICBjb25zdCB4RG9tYWluID0gW3Nlcmllc1swXS54LCBzZXJpZXNbc2VyaWVzLmxlbmd0aCAtIDFdLnhdO1xuXG4gIHJldHVybiB7bGluZUNoYXJ0OiB7c2VyaWVzLCB5RG9tYWluLCB4RG9tYWlufSwgeUF4aXN9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEZpbHRlclBsb3RUeXBlKGZpbHRlcjogRmlsdGVyKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGZpbHRlclBsb3RUeXBlczogdHlwZW9mIFN1cHBvcnRlZFBsb3RUeXBlW2tleW9mIHR5cGVvZiBTdXBwb3J0ZWRQbG90VHlwZV0gfCBudWxsID1cbiAgICBmaWx0ZXIudHlwZSAmJiBTdXBwb3J0ZWRQbG90VHlwZVtmaWx0ZXIudHlwZV07XG4gIGlmICghZmlsdGVyUGxvdFR5cGVzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIWZpbHRlci55QXhpcykge1xuICAgIHJldHVybiBmaWx0ZXJQbG90VHlwZXMuZGVmYXVsdDtcbiAgfVxuXG4gIHJldHVybiBmaWx0ZXJQbG90VHlwZXNbZmlsdGVyLnlBeGlzLnR5cGVdIHx8IG51bGw7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhc2V0SWRzIGxpc3Qgb2YgZGF0YXNldCBpZHMgdG8gYmUgZmlsdGVyZWRcbiAqIEBwYXJhbSBkYXRhc2V0cyBhbGwgZGF0YXNldHNcbiAqIEBwYXJhbSBmaWx0ZXJzIGFsbCBmaWx0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gZGF0YXNldHNcbiAqIEByZXR1cm4gZGF0YXNldHMgLSBuZXcgdXBkYXRlZCBkYXRhc2V0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyhcbiAgZGF0YXNldElkczogc3RyaW5nW10sXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyxcbiAgZmlsdGVyczogRmlsdGVyW10sXG4gIGxheWVycz86IExheWVyW11cbik6IERhdGFzZXRzIHtcbiAgY29uc3QgZGF0YUlkcyA9IHRvQXJyYXkoZGF0YXNldElkcyk7XG4gIHJldHVybiBkYXRhSWRzLnJlZHVjZSgoYWNjLCBkYXRhSWQpID0+IHtcbiAgICBjb25zdCBsYXllcnNUb0ZpbHRlciA9IChsYXllcnMgfHwgW10pLmZpbHRlcihsID0+IGwuY29uZmlnLmRhdGFJZCA9PT0gZGF0YUlkKTtcbiAgICBjb25zdCBhcHBsaWVkRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKGQgPT4gc2hvdWxkQXBwbHlGaWx0ZXIoZCwgZGF0YUlkKSk7XG4gICAgY29uc3QgdGFibGUgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtkYXRhSWRdOiB0YWJsZS5maWx0ZXJUYWJsZShhcHBsaWVkRmlsdGVycywgbGF5ZXJzVG9GaWx0ZXIsIHt9KVxuICAgIH07XG4gIH0sIGRhdGFzZXRzKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgbmV3IGZpZWxkIG5hbWUgdmFsdWUgdG8gZmllbHRlciBhbmQgdXBkYXRlIGJvdGggZmlsdGVyIGFuZCBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyIC0gdG8gYmUgYXBwbGllZCB0aGUgbmV3IGZpZWxkIG5hbWUgb25cbiAqIEBwYXJhbSBkYXRhc2V0IC0gZGF0YXNldCB0aGUgZmllbGQgYmVsb25ncyB0b1xuICogQHBhcmFtIGZpZWxkTmFtZSAtIGZpZWxkLm5hbWVcbiAqIEBwYXJhbSBmaWx0ZXJEYXRhc2V0SW5kZXggLSBmaWVsZC5uYW1lXG4gKiBAcGFyYW0gb3B0aW9uXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldHN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlckZpZWxkTmFtZShcbiAgZmlsdGVyOiBGaWx0ZXIsXG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgZmlsdGVyRGF0YXNldEluZGV4ID0gMCxcbiAgb3B0aW9uPzoge21lcmdlRG9tYWluOiBib29sZWFufVxuKToge1xuICBmaWx0ZXI6IEZpbHRlciB8IG51bGw7XG4gIGRhdGFzZXQ6IEtlcGxlclRhYmxlO1xufSB7XG4gIC8vIHVzaW5nIGZpbHRlckRhdGFzZXRJbmRleCB3ZSBjYW4gZmlsdGVyIG9ubHkgdGhlIHNwZWNpZmllZCBkYXRhc2V0XG4gIGNvbnN0IG1lcmdlRG9tYWluID0gb3B0aW9uICYmIG9wdGlvbi5oYXNPd25Qcm9wZXJ0eSgnbWVyZ2VEb21haW4nKSA/IG9wdGlvbi5tZXJnZURvbWFpbiA6IGZhbHNlO1xuXG4gIGNvbnN0IGZpZWxkSW5kZXggPSBkYXRhc2V0LmdldENvbHVtbkZpZWxkSWR4KGZpZWxkTmFtZSk7XG4gIC8vIGlmIG5vIGZpZWxkIHdpdGggc2FtZSBuYW1lIGlzIGZvdW5kLCBtb3ZlIHRvIHRoZSBuZXh0IGRhdGFzZXRzXG4gIGlmIChmaWVsZEluZGV4ID09PSAtMSkge1xuICAgIC8vIHRocm93IG5ldyBFcnJvcihgZmllbGRJbmRleCBub3QgZm91bmQuIERhdGFzZXQgbXVzdCBjb250YWluIGEgcHJvcGVydHkgd2l0aCBuYW1lOiAke2ZpZWxkTmFtZX1gKTtcbiAgICByZXR1cm4ge2ZpbHRlcjogbnVsbCwgZGF0YXNldH07XG4gIH1cblxuICAvLyBUT0RPOiB2YWxpZGF0ZSBmaWVsZCB0eXBlXG4gIGNvbnN0IGZpbHRlclByb3BzID0gZGF0YXNldC5nZXRDb2x1bW5GaWx0ZXJQcm9wcyhmaWVsZE5hbWUpO1xuXG4gIGNvbnN0IG5ld0ZpbHRlciA9IHtcbiAgICAuLi4obWVyZ2VEb21haW4gPyBtZXJnZUZpbHRlckRvbWFpblN0ZXAoZmlsdGVyLCBmaWx0ZXJQcm9wcykgOiB7Li4uZmlsdGVyLCAuLi5maWx0ZXJQcm9wc30pLFxuICAgIG5hbWU6IE9iamVjdC5hc3NpZ24oWy4uLnRvQXJyYXkoZmlsdGVyLm5hbWUpXSwge1tmaWx0ZXJEYXRhc2V0SW5kZXhdOiBmaWVsZE5hbWV9KSxcbiAgICBmaWVsZElkeDogT2JqZWN0LmFzc2lnbihbLi4udG9BcnJheShmaWx0ZXIuZmllbGRJZHgpXSwge1xuICAgICAgW2ZpbHRlckRhdGFzZXRJbmRleF06IGZpZWxkSW5kZXhcbiAgICB9KSxcbiAgICAvLyBUT0RPLCBzaW5jZSB3ZSBhbGxvdyB0byBhZGQgbXVsdGlwbGUgZmllbGRzIHRvIGEgZmlsdGVyIHdlIGNhbiBubyBsb25nZXIgZnJlZXplIHRoZSBmaWx0ZXJcbiAgICBmcmVlemU6IHRydWVcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGZpbHRlcjogbmV3RmlsdGVyLFxuICAgIGRhdGFzZXRcbiAgfTtcbn1cblxuLyoqXG4gKiBNZXJnZSBvbmUgZmlsdGVyIHdpdGggb3RoZXIgZmlsdGVyIHByb3AgZG9tYWluXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUZpbHRlckRvbWFpblN0ZXAoZmlsdGVyOiBGaWx0ZXIsIGZpbHRlclByb3BzPzogYW55KTogRmlsdGVyIHwgbnVsbCB7XG4gIGlmICghZmlsdGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIWZpbHRlclByb3BzKSB7XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGlmICgoZmlsdGVyLmZpZWxkVHlwZSAmJiBmaWx0ZXIuZmllbGRUeXBlICE9PSBmaWx0ZXJQcm9wcy5maWVsZFR5cGUpIHx8ICFmaWx0ZXJQcm9wcy5kb21haW4pIHtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWREb21haW4gPSAhZmlsdGVyLmRvbWFpblxuICAgID8gZmlsdGVyUHJvcHMuZG9tYWluXG4gICAgOiBbLi4uKGZpbHRlci5kb21haW4gfHwgW10pLCAuLi4oZmlsdGVyUHJvcHMuZG9tYWluIHx8IFtdKV0uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gIGNvbnN0IG5ld0ZpbHRlciA9IHtcbiAgICAuLi5maWx0ZXIsXG4gICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgZG9tYWluOiBbY29tYmluZWREb21haW5bMF0sIGNvbWJpbmVkRG9tYWluW2NvbWJpbmVkRG9tYWluLmxlbmd0aCAtIDFdXVxuICB9O1xuXG4gIHN3aXRjaCAoZmlsdGVyUHJvcHMuZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuc3RyaW5nOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICAgIGRvbWFpbjogdW5pcXVlKGNvbWJpbmVkRG9tYWluKS5zb3J0KClcbiAgICAgIH07XG5cbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA6XG4gICAgICBjb25zdCBzdGVwID1cbiAgICAgICAgKGZpbHRlciBhcyBUaW1lUmFuZ2VGaWx0ZXIpLnN0ZXAgPCBmaWx0ZXJQcm9wcy5zdGVwXG4gICAgICAgICAgPyAoZmlsdGVyIGFzIFRpbWVSYW5nZUZpbHRlcikuc3RlcFxuICAgICAgICAgIDogZmlsdGVyUHJvcHMuc3RlcDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubmV3RmlsdGVyLFxuICAgICAgICBzdGVwXG4gICAgICB9O1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG5ld0ZpbHRlcjtcbiAgfVxufVxuLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbi8qKlxuICogR2VuZXJhdGVzIHBvbHlnb24gZmlsdGVyXG4gKi9cbmV4cG9ydCBjb25zdCBmZWF0dXJlVG9GaWx0ZXJWYWx1ZSA9IChcbiAgZmVhdHVyZTogRmVhdHVyZSxcbiAgZmlsdGVySWQ6IHN0cmluZyxcbiAgcHJvcGVydGllcz86IHt9XG4pOiBGZWF0dXJlVmFsdWUgPT4gKHtcbiAgLi4uZmVhdHVyZSxcbiAgaWQ6IGZlYXR1cmUuaWQsXG4gIHByb3BlcnRpZXM6IHtcbiAgICAuLi5mZWF0dXJlLnByb3BlcnRpZXMsXG4gICAgLi4ucHJvcGVydGllcyxcbiAgICBmaWx0ZXJJZFxuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbHRlcklkSW5GZWF0dXJlID0gKGY6IEZlYXR1cmVWYWx1ZSk6IHN0cmluZyA9PiBnZXQoZiwgWydwcm9wZXJ0aWVzJywgJ2ZpbHRlcklkJ10pO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBwb2x5Z29uIGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQb2x5Z29uRmlsdGVyKGxheWVyczogTGF5ZXJbXSwgZmVhdHVyZTogRmVhdHVyZSk6IFBvbHlnb25GaWx0ZXIge1xuICBjb25zdCBkYXRhSWQgPSBsYXllcnMubWFwKGwgPT4gbC5jb25maWcuZGF0YUlkKS5maWx0ZXIobm90TnVsbG9yVW5kZWZpbmVkKTtcbiAgY29uc3QgbGF5ZXJJZCA9IGxheWVycy5tYXAobCA9PiBsLmlkKTtcbiAgY29uc3QgbmFtZSA9IGxheWVycy5tYXAobCA9PiBsLmNvbmZpZy5sYWJlbCk7XG4gIGNvbnN0IGZpbHRlciA9IGdldERlZmF1bHRGaWx0ZXIoZGF0YUlkKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5maWx0ZXIsXG4gICAgZml4ZWREb21haW46IHRydWUsXG4gICAgdHlwZTogRklMVEVSX1RZUEVTLnBvbHlnb24sXG4gICAgbmFtZSxcbiAgICBsYXllcklkLFxuICAgIHZhbHVlOiBmZWF0dXJlVG9GaWx0ZXJWYWx1ZShmZWF0dXJlLCBmaWx0ZXIuaWQsIHtpc1Zpc2libGU6IHRydWV9KVxuICB9O1xufVxuXG4vKipcbiAqIFJ1biBmaWx0ZXIgZW50aXJlbHkgb24gQ1BVXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJEYXRhc2V0Q1BVKHN0YXRlOiBWaXNTdGF0ZSwgZGF0YUlkOiBzdHJpbmcpOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IGRhdGFzZXRGaWx0ZXJzID0gc3RhdGUuZmlsdGVycy5maWx0ZXIoZiA9PiBmLmRhdGFJZC5pbmNsdWRlcyhkYXRhSWQpKTtcbiAgY29uc3QgZGF0YXNldCA9IHN0YXRlLmRhdGFzZXRzW2RhdGFJZF07XG5cbiAgaWYgKCFkYXRhc2V0KSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgY3B1RmlsdGVyZWREYXRhc2V0ID0gZGF0YXNldC5maWx0ZXJUYWJsZUNQVShkYXRhc2V0RmlsdGVycywgc3RhdGUubGF5ZXJzKTtcblxuICByZXR1cm4gc2V0KFsnZGF0YXNldHMnLCBkYXRhSWRdLCBjcHVGaWx0ZXJlZERhdGFzZXQsIHN0YXRlKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBwYXJzZWQgZmlsdGVycyB3aXRoIGRhdGFzZXRzIGFuZCBhZGQgZmlsdGVyUHJvcHMgdG8gZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmlsdGVyc1VwZGF0ZURhdGFzZXRzKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGZpbHRlcnNUb1ZhbGlkYXRlOiBQYXJzZWRGaWx0ZXJbXSA9IFtdXG4pOiB7XG4gIHZhbGlkYXRlZDogRmlsdGVyW107XG4gIGZhaWxlZDogRmlsdGVyW107XG4gIHVwZGF0ZWREYXRhc2V0czogRGF0YXNldHM7XG59IHtcbiAgLy8gVE9ETyBCZXR0ZXIgVHlwaW5ncyBoZXJlXG4gIGNvbnN0IHZhbGlkYXRlZDogYW55W10gPSBbXTtcbiAgY29uc3QgZmFpbGVkOiBhbnlbXSA9IFtdO1xuICBjb25zdCB7ZGF0YXNldHN9ID0gc3RhdGU7XG4gIGxldCB1cGRhdGVkRGF0YXNldHMgPSBkYXRhc2V0cztcblxuICAvLyBtZXJnZSBmaWx0ZXJzXG4gIGZpbHRlcnNUb1ZhbGlkYXRlLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAvLyB3ZSBjYW4gb25seSBsb29rIGZvciBkYXRhc2V0cyBkZWZpbmUgaW4gdGhlIGZpbHRlciBkYXRhSWRcbiAgICBjb25zdCBkYXRhc2V0SWRzID0gdG9BcnJheShmaWx0ZXIuZGF0YUlkKTtcblxuICAgIC8vIHdlIGNhbiBtZXJnZSBhIGZpbHRlciBvbmx5IGlmIGFsbCBkYXRhc2V0cyBpbiBmaWx0ZXIuZGF0YUlkIGFyZSBsb2FkZWRcbiAgICBpZiAoZGF0YXNldElkcy5ldmVyeShkID0+IGRhdGFzZXRzW2RdKSkge1xuICAgICAgLy8gYWxsIGRhdGFzZXRJZHMgaW4gZmlsdGVyIG11c3QgYmUgcHJlc2VudCB0aGUgc3RhdGUgZGF0YXNldHNcbiAgICAgIGNvbnN0IHtmaWx0ZXI6IHZhbGlkYXRlZEZpbHRlciwgYXBwbHlUb0RhdGFzZXRzLCBhdWdtZW50ZWREYXRhc2V0c30gPSBkYXRhc2V0SWRzLnJlZHVjZShcbiAgICAgICAgKGFjYywgZGF0YXNldElkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YXNldCA9IHVwZGF0ZWREYXRhc2V0c1tkYXRhc2V0SWRdO1xuICAgICAgICAgIGNvbnN0IGxheWVycyA9IHN0YXRlLmxheWVycy5maWx0ZXIobCA9PiBsLmNvbmZpZy5kYXRhSWQgPT09IGRhdGFzZXQuaWQpO1xuICAgICAgICAgIGNvbnN0IHtmaWx0ZXI6IHVwZGF0ZWRGaWx0ZXIsIGRhdGFzZXQ6IHVwZGF0ZWREYXRhc2V0fSA9IHZhbGlkYXRlRmlsdGVyV2l0aERhdGEoXG4gICAgICAgICAgICBhY2MuYXVnbWVudGVkRGF0YXNldHNbZGF0YXNldElkXSB8fCBkYXRhc2V0LFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgbGF5ZXJzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICh1cGRhdGVkRmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgIC8vIG1lcmdlIGZpbHRlciBwcm9wc1xuICAgICAgICAgICAgICBmaWx0ZXI6IGFjYy5maWx0ZXJcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYWNjLmZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgLi4ubWVyZ2VGaWx0ZXJEb21haW5TdGVwKGFjYywgdXBkYXRlZEZpbHRlcilcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVwZGF0ZWRGaWx0ZXIsXG5cbiAgICAgICAgICAgICAgYXBwbHlUb0RhdGFzZXRzOiBbLi4uYWNjLmFwcGx5VG9EYXRhc2V0cywgZGF0YXNldElkXSxcblxuICAgICAgICAgICAgICBhdWdtZW50ZWREYXRhc2V0czoge1xuICAgICAgICAgICAgICAgIC4uLmFjYy5hdWdtZW50ZWREYXRhc2V0cyxcbiAgICAgICAgICAgICAgICBbZGF0YXNldElkXTogdXBkYXRlZERhdGFzZXRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmlsdGVyOiBudWxsLFxuICAgICAgICAgIGFwcGx5VG9EYXRhc2V0czogW10sXG4gICAgICAgICAgYXVnbWVudGVkRGF0YXNldHM6IHt9XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGlmICh2YWxpZGF0ZWRGaWx0ZXIgJiYgaXNFcXVhbChkYXRhc2V0SWRzLCBhcHBseVRvRGF0YXNldHMpKSB7XG4gICAgICAgIHZhbGlkYXRlZC5wdXNoKHZhbGlkYXRlZEZpbHRlcik7XG4gICAgICAgIHVwZGF0ZWREYXRhc2V0cyA9IHtcbiAgICAgICAgICAuLi51cGRhdGVkRGF0YXNldHMsXG4gICAgICAgICAgLi4uYXVnbWVudGVkRGF0YXNldHNcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmFpbGVkLnB1c2goZmlsdGVyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7dmFsaWRhdGVkLCBmYWlsZWQsIHVwZGF0ZWREYXRhc2V0c307XG59XG5cbi8qKlxuICogUmV0cmlldmUgaW50ZXJ2YWwgYmlucyBmb3IgdGltZSBmaWx0ZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVydmFsQmlucyhmaWx0ZXI6IFRpbWVSYW5nZUZpbHRlcikge1xuICBjb25zdCB7Ymluc30gPSBmaWx0ZXI7XG4gIGNvbnN0IGludGVydmFsID0gZmlsdGVyLnBsb3RUeXBlPy5pbnRlcnZhbDtcbiAgaWYgKCFpbnRlcnZhbCB8fCAhYmlucyB8fCBPYmplY3Qua2V5cyhiaW5zKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKGJpbnMpO1xuICByZXR1cm4gdmFsdWVzWzBdID8gdmFsdWVzWzBdW2ludGVydmFsXSA6IG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxJQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBTSxjQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxnQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsVUFBQSxHQUFBQyx1QkFBQSxDQUFBWixPQUFBO0FBQ0EsSUFBQWEsTUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsTUFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsUUFBQSxHQUFBZixPQUFBO0FBQXdFLFNBQUFnQix5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUwsd0JBQUFLLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUcsQ0FBQSxLQUFBQSxDQUFBLENBQUFWLEdBQUEsSUFBQVUsQ0FBQSxDQUFBQyxHQUFBLElBQUFQLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUcsQ0FBQSxJQUFBVCxDQUFBLENBQUFNLENBQUEsSUFBQWQsQ0FBQSxDQUFBYyxDQUFBLFlBQUFOLENBQUEsY0FBQVIsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWUsR0FBQSxDQUFBbEIsQ0FBQSxFQUFBUSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBVyxRQUFBbkIsQ0FBQSxFQUFBRSxDQUFBLFFBQUFDLENBQUEsR0FBQVEsTUFBQSxDQUFBUyxJQUFBLENBQUFwQixDQUFBLE9BQUFXLE1BQUEsQ0FBQVUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBWCxNQUFBLENBQUFVLHFCQUFBLENBQUFyQixDQUFBLEdBQUFFLENBQUEsS0FBQW9CLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFyQixDQUFBLFdBQUFTLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWIsQ0FBQSxFQUFBRSxDQUFBLEVBQUFzQixVQUFBLE9BQUFyQixDQUFBLENBQUFzQixJQUFBLENBQUFDLEtBQUEsQ0FBQXZCLENBQUEsRUFBQW1CLENBQUEsWUFBQW5CLENBQUE7QUFBQSxTQUFBd0IsY0FBQTNCLENBQUEsYUFBQUUsQ0FBQSxNQUFBQSxDQUFBLEdBQUEwQixTQUFBLENBQUFDLE1BQUEsRUFBQTNCLENBQUEsVUFBQUMsQ0FBQSxXQUFBeUIsU0FBQSxDQUFBMUIsQ0FBQSxJQUFBMEIsU0FBQSxDQUFBMUIsQ0FBQSxRQUFBQSxDQUFBLE9BQUFpQixPQUFBLENBQUFSLE1BQUEsQ0FBQVIsQ0FBQSxPQUFBMkIsT0FBQSxXQUFBNUIsQ0FBQSxRQUFBNkIsZ0JBQUEsYUFBQS9CLENBQUEsRUFBQUUsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQVMsTUFBQSxDQUFBcUIseUJBQUEsR0FBQXJCLE1BQUEsQ0FBQXNCLGdCQUFBLENBQUFqQyxDQUFBLEVBQUFXLE1BQUEsQ0FBQXFCLHlCQUFBLENBQUE3QixDQUFBLEtBQUFnQixPQUFBLENBQUFSLE1BQUEsQ0FBQVIsQ0FBQSxHQUFBMkIsT0FBQSxXQUFBNUIsQ0FBQSxJQUFBUyxNQUFBLENBQUFDLGNBQUEsQ0FBQVosQ0FBQSxFQUFBRSxDQUFBLEVBQUFTLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQVYsQ0FBQSxFQUFBRCxDQUFBLGlCQUFBRixDQUFBLElBbEN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXFETyxJQUFNa0MsZ0JBQWdCLEdBQUFDLE9BQUEsQ0FBQUQsZ0JBQUEsR0FBRyxDQUM5QjtFQUFDRSxHQUFHLEVBQUUsQ0FBQztFQUFFQyxJQUFJLEVBQUU7QUFBSSxDQUFDLEVBQ3BCO0VBQUNELEdBQUcsRUFBRSxFQUFFO0VBQUVDLElBQUksRUFBRTtBQUFHLENBQUMsRUFDcEI7RUFBQ0QsR0FBRyxFQUFFLEdBQUc7RUFBRUMsSUFBSSxFQUFFO0FBQUMsQ0FBQyxFQUNuQjtFQUFDRCxHQUFHLEVBQUUsR0FBRztFQUFFQyxJQUFJLEVBQUU7QUFBQyxDQUFDLEVBQ25CO0VBQUNELEdBQUcsRUFBRSxJQUFJO0VBQUVDLElBQUksRUFBRTtBQUFFLENBQUMsRUFDckI7RUFBQ0QsR0FBRyxFQUFFLElBQUk7RUFBRUMsSUFBSSxFQUFFO0FBQUUsQ0FBQyxFQUNyQjtFQUFDRCxHQUFHLEVBQUVFLE1BQU0sQ0FBQ0MsaUJBQWlCO0VBQUVGLElBQUksRUFBRTtBQUFJLENBQUMsQ0FDNUM7QUFFTSxJQUFNRyxhQUFhLEdBQUFMLE9BQUEsQ0FBQUssYUFBQSxHQUFHLEVBQUU7QUFDeEIsSUFBTUMscUJBQXFCLEdBQUFOLE9BQUEsQ0FBQU0scUJBQUEsR0FBRyxHQUFHO0FBRXhDLElBQU1DLGNBQWMsR0FBRyxJQUFJO0FBQzNCLElBQU1DLGNBQWMsR0FBR0QsY0FBYyxHQUFHLEVBQUU7QUFDMUMsSUFBTUUsWUFBWSxHQUFHRCxjQUFjLEdBQUcsRUFBRTtBQUN4QyxJQUFNRSxXQUFXLEdBQUdELFlBQVksR0FBRyxFQUFFO0FBQ3JDLElBQU1FLFlBQVksR0FBR0QsV0FBVyxHQUFHLENBQUM7QUFDcEMsSUFBTUUsWUFBWSxHQUFHRixXQUFXLEdBQUcsR0FBRztBQUUvQixJQUFNRyxVQUFVLEdBQUFiLE9BQUEsQ0FBQWEsVUFBQSxHQUFHLElBQUFDLHFCQUFTLEVBQUM7RUFDbENDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLFNBQVMsRUFBRTtBQUNiLENBQUMsQ0FBQztBQUVLLElBQU1DLG9CQUFvQixHQUFBakIsT0FBQSxDQUFBaUIsb0JBQUEsR0FBRyxJQUFBSCxxQkFBUyxFQUFDO0VBQzVDSSxNQUFNLEVBQUUsSUFBSTtFQUNaQyxJQUFJLEVBQUUsSUFBSTtFQUNWQyxPQUFPLEVBQUU7QUFDWCxDQUFDLENBQUM7QUFFSyxJQUFNQywyQkFBMkIsR0FBQXJCLE9BQUEsQ0FBQXFCLDJCQUFBLEdBQUcsSUFBQVAscUJBQVMsTUFBQWxCLGdCQUFBLGlCQUNqRHFCLG9CQUFvQixDQUFDRSxJQUFJLEVBQUcsSUFBSSxDQUNsQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBOztBQUVBLElBQU1HLGlCQUFpQixPQUFBMUIsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUNwQjJCLDZCQUFZLENBQUNDLFNBQVMsTUFBQTVCLGdCQUFBLGlCQUFBQSxnQkFBQTtFQUNyQixXQUFTO0FBQVcsR0FDbkI2QixnQ0FBZSxDQUFDQyxPQUFPLEVBQUcsV0FBVyxHQUNyQ0QsZ0NBQWUsQ0FBQ0UsSUFBSSxFQUFHLFdBQVcsSUFFcENKLDZCQUFZLENBQUNLLEtBQUssTUFBQWhDLGdCQUFBLGlCQUFBQSxnQkFBQTtFQUNqQixXQUFTO0FBQVcsR0FDbkI2QixnQ0FBZSxDQUFDQyxPQUFPLEVBQUcsV0FBVyxHQUNyQ0QsZ0NBQWUsQ0FBQ0UsSUFBSSxFQUFHLFdBQVcsRUFFdEM7QUFFTSxJQUFNRSxpQkFBaUIsR0FBQTdCLE9BQUEsQ0FBQTZCLGlCQUFBLE9BQUFqQyxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFBQUEsZ0JBQUEsaUJBQzNCMkIsNkJBQVksQ0FBQ08sTUFBTSxFQUFHLG9CQUFvQixHQUMxQ1AsNkJBQVksQ0FBQ1EsV0FBVyxFQUFHLG1CQUFtQixHQUM5Q1IsNkJBQVksQ0FBQ0MsU0FBUyxFQUFHLGlCQUFpQixHQUMxQ0QsNkJBQVksQ0FBQ0ssS0FBSyxFQUFHLGFBQWEsR0FDbENMLDZCQUFZLENBQUNTLE9BQU8sRUFBRyxlQUFlLENBQ3hDO0FBRU0sSUFBTUMsd0JBQXdCLEdBQUFqQyxPQUFBLENBQUFpQyx3QkFBQSxHQUFHO0VBQ3RDZixNQUFNLEVBQUUsRUFBRTtFQUFFO0VBQ1pnQixNQUFNLEVBQUUsS0FBSztFQUNiQyxFQUFFLEVBQUUsSUFBSTtFQUVSO0VBQ0FDLFdBQVcsRUFBRSxLQUFLO0VBQ2xCQyxRQUFRLEVBQUUsS0FBSztFQUNmQyxXQUFXLEVBQUUsS0FBSztFQUNsQkMsZUFBZSxFQUFFQyxpQ0FBZ0IsQ0FBQ0MsSUFBSTtFQUN0Q0MsS0FBSyxFQUFFLENBQUM7RUFFUjtFQUNBdkIsSUFBSSxFQUFFLEVBQUU7RUFBRTtFQUNWd0IsSUFBSSxFQUFFLElBQUk7RUFDVkMsUUFBUSxFQUFFLEVBQUU7RUFBRTtFQUNkQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxLQUFLLEVBQUUsSUFBSTtFQUVYO0VBQ0FDLFFBQVEsRUFBRWxDLFVBQVUsQ0FBQ0UsU0FBUztFQUM5QmlDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLFFBQVEsRUFBRSxJQUFJO0VBRWQ7RUFDQUMsR0FBRyxFQUFFO0FBQ1AsQ0FBQztBQUVNLElBQU1DLGdCQUFnQixHQUFBbkQsT0FBQSxDQUFBbUQsZ0JBQUEsR0FBRyxDQUFDO0FBRTFCLElBQU1DLGFBQWEsR0FBQXBELE9BQUEsQ0FBQW9ELGFBQUEsR0FBRyxDQUFDN0IsNkJBQVksQ0FBQ1MsT0FBTyxDQUFDOztBQUVuRDtBQUNBO0FBQ0E7QUFDTyxTQUFTcUIsZ0JBQWdCQSxDQUFDbkMsTUFBZ0MsRUFBYztFQUM3RSxPQUFBMUIsYUFBQSxDQUFBQSxhQUFBLEtBQ0t5Qyx3QkFBd0I7SUFDM0I7SUFDQWYsTUFBTSxFQUFFLElBQUFvQyxjQUFPLEVBQUNwQyxNQUFNLENBQUM7SUFDdkJpQixFQUFFLEVBQUUsSUFBQW9CLHFCQUFjLEVBQUNKLGdCQUFnQjtFQUFDO0FBRXhDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNLLGlCQUFpQkEsQ0FBQ3BFLE1BQWMsRUFBRXFFLFNBQWlCLEVBQVc7RUFDNUUsSUFBTUMsT0FBTyxHQUFHLElBQUFKLGNBQU8sRUFBQ2xFLE1BQU0sQ0FBQzhCLE1BQU0sQ0FBQztFQUN0QyxPQUFPd0MsT0FBTyxDQUFDQyxRQUFRLENBQUNGLFNBQVMsQ0FBQyxJQUFJckUsTUFBTSxDQUFDMEQsS0FBSyxLQUFLLElBQUk7QUFDN0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTYyxxQkFBcUJBLENBQ25DQyxPQUFvQixFQUNwQnpFLE1BQXFCLEVBQ3JCMEUsTUFBZSxFQUN1QztFQUN0RCxJQUFNQyxNQUFNLEdBQUc7SUFBQ0YsT0FBTyxFQUFQQSxPQUFPO0lBQUV6RSxNQUFNLEVBQUU7RUFBSSxDQUFDO0VBQ3RDLElBQU8wRCxLQUFLLEdBQTJCMUQsTUFBTSxDQUF0QzBELEtBQUs7SUFBRTFCLE9BQU8sR0FBa0JoQyxNQUFNLENBQS9CZ0MsT0FBTztJQUFFdUIsSUFBSSxHQUFZdkQsTUFBTSxDQUF0QnVELElBQUk7SUFBRXpCLE1BQU0sR0FBSTlCLE1BQU0sQ0FBaEI4QixNQUFNO0VBRW5DLElBQUksQ0FBQ0UsT0FBTyxJQUFJLENBQUM0QyxrQkFBa0IsQ0FBQ3JCLElBQUksRUFBRUcsS0FBSyxDQUFDLEVBQUU7SUFDaEQsT0FBT2lCLE1BQU07RUFDZjtFQUVBLElBQU1FLGNBQWMsR0FBRy9DLE1BQU0sQ0FBQ3lDLFFBQVEsQ0FBQ0UsT0FBTyxDQUFDMUIsRUFBRSxDQUFDO0VBRWxELElBQUksQ0FBQzhCLGNBQWMsRUFBRTtJQUNuQixPQUFPRixNQUFNO0VBQ2Y7RUFFQSxJQUFNRyxLQUFLLEdBQUdKLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLFVBQUFDLENBQUM7SUFBQSxPQUFJaEQsT0FBTyxDQUFDdUMsUUFBUSxDQUFDUyxDQUFDLENBQUNqQyxFQUFFLENBQUM7RUFBQSxFQUFDO0VBRXRELElBQUksQ0FBQytCLEtBQUssRUFBRTtJQUNWLE9BQU9ILE1BQU07RUFDZjtFQUVBLE9BQU87SUFDTDNFLE1BQU0sRUFBQUksYUFBQSxDQUFBQSxhQUFBLEtBQ0RKLE1BQU07TUFDVDhDLE1BQU0sRUFBRSxJQUFJO01BQ1pVLFFBQVEsRUFBRTtJQUFFLEVBQ2I7SUFDRGlCLE9BQU8sRUFBUEE7RUFDRixDQUFDO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBTVEsZ0JBQWdCLE9BQUF6RSxnQkFBQSxpQkFDbkIyQiw2QkFBWSxDQUFDUyxPQUFPLEVBQUc0QixxQkFBcUIsQ0FDOUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU1UsY0FBY0EsQ0FDNUJULE9BQW9CLEVBQ3BCekUsTUFBb0IsRUFDMkI7RUFDL0M7RUFDQSxJQUFNMkUsTUFBTSxHQUFHO0lBQUNGLE9BQU8sRUFBUEEsT0FBTztJQUFFekUsTUFBTSxFQUFFO0VBQUksQ0FBQztFQUN0QyxJQUFNbUYsWUFBWSxHQUFHLElBQUFqQixjQUFPLEVBQUNsRSxNQUFNLENBQUM4QixNQUFNLENBQUM7RUFFM0MsSUFBTXNELGtCQUFrQixHQUFHRCxZQUFZLENBQUNFLE9BQU8sQ0FBQ1osT0FBTyxDQUFDMUIsRUFBRSxDQUFDO0VBQzNELElBQUlxQyxrQkFBa0IsR0FBRyxDQUFDLEVBQUU7SUFDMUI7SUFDQSxPQUFPVCxNQUFNO0VBQ2Y7O0VBRUE7RUFDQSxJQUFNVyxnQkFBd0IsR0FBQWxGLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQ3pCNkQsZ0JBQWdCLENBQUNqRSxNQUFNLENBQUM4QixNQUFNLENBQUMsR0FDL0I5QixNQUFNO0lBQ1Q4QixNQUFNLEVBQUVxRCxZQUFZO0lBQ3BCcEQsSUFBSSxFQUFFLElBQUFtQyxjQUFPLEVBQUNsRSxNQUFNLENBQUMrQixJQUFJO0VBQUMsRUFDM0I7RUFFRCxJQUFNd0QsU0FBUyxHQUFHRCxnQkFBZ0IsQ0FBQ3ZELElBQUksQ0FBQ3FELGtCQUFrQixDQUFDO0VBQzNELElBQUFJLHFCQUFBLEdBQXlEQyxvQkFBb0IsQ0FDM0VILGdCQUFnQixFQUNoQmIsT0FBTyxFQUNQYyxTQUFTLEVBQ1RILGtCQUFrQixFQUNsQjtNQUFDTSxXQUFXLEVBQUU7SUFBSSxDQUNwQixDQUFDO0lBTmNDLGFBQWEsR0FBQUgscUJBQUEsQ0FBckJ4RixNQUFNO0lBQTBCNEYsY0FBYyxHQUFBSixxQkFBQSxDQUF2QmYsT0FBTztFQVFyQyxJQUFJLENBQUNrQixhQUFhLEVBQUU7SUFDbEIsT0FBT2hCLE1BQU07RUFDZjtFQUVBZ0IsYUFBYSxDQUFDakMsS0FBSyxHQUFHbUMseUJBQXlCLENBQUM3RixNQUFNLENBQUMwRCxLQUFLLEVBQUVpQyxhQUFhLENBQUM7RUFDNUVBLGFBQWEsQ0FBQzFDLFFBQVEsR0FDcEIsT0FBT2pELE1BQU0sQ0FBQ2lELFFBQVEsS0FBSyxTQUFTLEdBQUdqRCxNQUFNLENBQUNpRCxRQUFRLEdBQUcwQyxhQUFhLENBQUMxQyxRQUFRO0VBRWpGLElBQUkwQyxhQUFhLENBQUNqQyxLQUFLLEtBQUssSUFBSSxFQUFFO0lBQ2hDO0lBQ0EsT0FBT2lCLE1BQU07RUFDZjtFQUVBLE9BQU87SUFDTDNFLE1BQU0sRUFBRThGLG1CQUFtQixDQUFDSCxhQUFhLEVBQUVDLGNBQWMsQ0FBQztJQUMxRG5CLE9BQU8sRUFBRW1CO0VBQ1gsQ0FBQztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNHLHNCQUFzQkEsQ0FDcEN0QixPQUFvQixFQUNwQnpFLE1BQW9CLEVBQ3BCMEUsTUFBZSxFQUN5QjtFQUN4QyxPQUFPMUUsTUFBTSxDQUFDdUQsSUFBSSxJQUFJMEIsZ0JBQWdCLENBQUN6RixjQUFjLENBQUNRLE1BQU0sQ0FBQ3VELElBQUksQ0FBQyxHQUM5RDBCLGdCQUFnQixDQUFDakYsTUFBTSxDQUFDdUQsSUFBSSxDQUFDLENBQUNrQixPQUFPLEVBQUV6RSxNQUFNLEVBQUUwRSxNQUFNLENBQUMsR0FDdERRLGNBQWMsQ0FBQ1QsT0FBTyxFQUFFekUsTUFBTSxDQUFDO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM4RixtQkFBbUJBLENBQUM5RixNQUFNLEVBQUV5RSxPQUFPLEVBQUU7RUFDNUM7O0VBRUEsSUFBT3VCLE1BQU0sR0FBSXZCLE9BQU8sQ0FBakJ1QixNQUFNO0VBQ2IsSUFBQUMsT0FBQSxHQUFnQmpHLE1BQU07SUFBZjRELEtBQUssR0FBQXFDLE9BQUEsQ0FBTHJDLEtBQUs7RUFDWjtFQUNBLElBQUlBLEtBQUssRUFBRTtJQUNULElBQU1zQyxXQUFXLEdBQUdGLE1BQU0sQ0FBQ2pCLElBQUksQ0FBQyxVQUFBb0IsSUFBQTtNQUFBLElBQUVwRSxJQUFJLEdBQUFvRSxJQUFBLENBQUpwRSxJQUFJO1FBQUV3QixJQUFJLEdBQUE0QyxJQUFBLENBQUo1QyxJQUFJO01BQUEsT0FBTXhCLElBQUksS0FBSzZCLEtBQUssQ0FBQzdCLElBQUksSUFBSXdCLElBQUksS0FBS0ssS0FBSyxDQUFDTCxJQUFJO0lBQUEsRUFBQztJQUU3RnZELE1BQU0sR0FBR2tHLFdBQVcsR0FBQTlGLGFBQUEsQ0FBQUEsYUFBQSxLQUVYSixNQUFNO01BQ1Q0RCxLQUFLLEVBQUVzQztJQUFXLEdBQ2ZFLGFBQWEsQ0FBQWhHLGFBQUEsQ0FBQUEsYUFBQSxLQUFLSixNQUFNO01BQUU0RCxLQUFLLEVBQUVzQztJQUFXLElBQUd6QixPQUFPLENBQUMsSUFFNUR6RSxNQUFNO0VBQ1o7RUFFQSxPQUFPQSxNQUFNO0FBQ2Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTcUcsY0FBY0EsQ0FDNUJDLEtBQVksRUFDWkMsV0FBd0IsRUFDZTtFQUN2QyxJQUFNQyxXQUFXLEdBQUFwRyxhQUFBLENBQUFBLGFBQUEsS0FDWm1HLFdBQVc7SUFDZEUsU0FBUyxFQUFFSCxLQUFLLENBQUMvQztFQUFJLEVBQ3RCO0VBRUQsUUFBUStDLEtBQUssQ0FBQy9DLElBQUk7SUFDaEIsS0FBS2xCLGdDQUFlLENBQUNFLElBQUk7SUFDekIsS0FBS0YsZ0NBQWUsQ0FBQ0MsT0FBTztNQUMxQixPQUFBbEMsYUFBQSxDQUFBQSxhQUFBLEtBQ0tvRyxXQUFXO1FBQ2Q5QyxLQUFLLEVBQUU2QyxXQUFXLENBQUM5QyxNQUFNO1FBQ3pCRixJQUFJLEVBQUVwQiw2QkFBWSxDQUFDSyxLQUFLO1FBQ3hCO1FBQ0FrRSxXQUFXLEVBQUUsQ0FBQ3ZFLDZCQUFZLENBQUNLLEtBQUssQ0FBQztRQUNqQ3NCLEdBQUcsRUFBRTtNQUFJO0lBR2IsS0FBS3pCLGdDQUFlLFdBQVE7TUFDMUIsT0FBQWpDLGFBQUEsQ0FBQUEsYUFBQSxLQUNLb0csV0FBVztRQUNkakQsSUFBSSxFQUFFcEIsNkJBQVksQ0FBQ08sTUFBTTtRQUN6QmdCLEtBQUssRUFBRSxJQUFJO1FBQ1hJLEdBQUcsRUFBRTtNQUFLO0lBR2QsS0FBS3pCLGdDQUFlLENBQUNzRSxNQUFNO0lBQzNCLEtBQUt0RSxnQ0FBZSxDQUFDdUUsSUFBSTtNQUN2QixPQUFBeEcsYUFBQSxDQUFBQSxhQUFBLEtBQ0tvRyxXQUFXO1FBQ2RqRCxJQUFJLEVBQUVwQiw2QkFBWSxDQUFDUSxXQUFXO1FBQzlCZSxLQUFLLEVBQUUsRUFBRTtRQUNUSSxHQUFHLEVBQUU7TUFBSztJQUdkLEtBQUt6QixnQ0FBZSxDQUFDd0UsU0FBUztNQUM1QixPQUFBekcsYUFBQSxDQUFBQSxhQUFBLEtBQ0tvRyxXQUFXO1FBQ2RqRCxJQUFJLEVBQUVwQiw2QkFBWSxDQUFDQyxTQUFTO1FBQzVCYSxRQUFRLEVBQUUsSUFBSTtRQUNkRCxXQUFXLEVBQUUsSUFBSTtRQUNqQlUsS0FBSyxFQUFFOEMsV0FBVyxDQUFDL0MsTUFBTTtRQUN6QkssR0FBRyxFQUFFO01BQUk7SUFHYjtNQUNFO01BQ0EsT0FBTyxDQUFDLENBQUM7RUFDYjtBQUNGO0FBRU8sSUFBTWdELHVCQUF1QixHQUFBbEcsT0FBQSxDQUFBa0csdUJBQUEsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFJaEMsS0FBSyxFQUFFOUUsTUFBTSxFQUFFK0csYUFBYSxFQUFLO0VBQ3ZFLElBQU1DLFdBQVcsR0FBR2xDLEtBQUssQ0FBQ21DLG1CQUFtQixDQUFDRixhQUFhLENBQUM7RUFFNUQsUUFBUWpDLEtBQUssQ0FBQ3ZCLElBQUk7SUFDaEIsS0FBSzJELGtCQUFXLENBQUNDLEtBQUs7SUFDdEIsS0FBS0Qsa0JBQVcsQ0FBQ0UsSUFBSTtNQUNuQixPQUFPLFVBQUFDLElBQUksRUFBSTtRQUNiLElBQU1DLEdBQUcsR0FBR04sV0FBVyxDQUFDSyxJQUFJLENBQUM7UUFDN0IsT0FBT0MsR0FBRyxDQUFDQyxLQUFLLENBQUN4RyxNQUFNLENBQUN5RyxRQUFRLENBQUMsSUFBSUMsV0FBVyxDQUFDSCxHQUFHLEVBQUV0SCxNQUFNLENBQUMwRCxLQUFLLENBQUM7TUFDckUsQ0FBQztJQUNILEtBQUt3RCxrQkFBVyxDQUFDUSxHQUFHO0lBQ3BCLEtBQUtSLGtCQUFXLENBQUNTLElBQUk7TUFDbkIsT0FBTyxVQUFBTixJQUFJLEVBQUk7UUFDYixJQUFNQyxHQUFHLEdBQUdOLFdBQVcsQ0FBQ0ssSUFBSSxDQUFDO1FBQzdCLE9BQ0VDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDeEcsTUFBTSxDQUFDeUcsUUFBUSxDQUFDLElBQzFCLENBQ0UsQ0FBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDaEIsQ0FBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQ0MsS0FBSyxDQUFDLFVBQUFKLEtBQUs7VUFBQSxPQUFJTSxXQUFXLENBQUNOLEtBQUssRUFBRW5ILE1BQU0sQ0FBQzBELEtBQUssQ0FBQztRQUFBLEVBQUM7TUFFdEQsQ0FBQztJQUNILEtBQUt3RCxrQkFBVyxDQUFDVSxTQUFTO01BQ3hCLElBQUk5QyxLQUFLLENBQUMrQyxhQUFhLElBQUkvQyxLQUFLLENBQUMrQyxhQUFhLENBQUNDLFNBQVMsRUFBRTtRQUN4RCxPQUFPLFVBQUFULElBQUksRUFBSTtVQUNiO1VBQ0EsSUFBTVUsUUFBUSxHQUFHakQsS0FBSyxDQUFDK0MsYUFBYSxDQUFDQyxTQUFTLENBQUNULElBQUksQ0FBQ1csS0FBSyxDQUFDO1VBQzFELE9BQU9ELFFBQVEsSUFBSU4sV0FBVyxDQUFDTSxRQUFRLEVBQUUvSCxNQUFNLENBQUMwRCxLQUFLLENBQUM7UUFDeEQsQ0FBQztNQUNIO01BQ0EsT0FBTyxVQUFBMkQsSUFBSSxFQUFJO1FBQ2IsSUFBTXRFLEVBQUUsR0FBR2lFLFdBQVcsQ0FBQ0ssSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFBWSxrQkFBUyxFQUFDbEYsRUFBRSxDQUFDLEVBQUU7VUFDbEIsT0FBTyxLQUFLO1FBQ2Q7UUFDQSxJQUFNdUUsR0FBRyxHQUFHLElBQUFZLG9CQUFXLEVBQUM7VUFBQ25GLEVBQUUsRUFBRkE7UUFBRSxDQUFDLENBQUM7UUFDN0IsT0FBT3VFLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDeEcsTUFBTSxDQUFDeUcsUUFBUSxDQUFDLElBQUlDLFdBQVcsQ0FBQ0gsR0FBRyxFQUFFdEgsTUFBTSxDQUFDMEQsS0FBSyxDQUFDO01BQ3JFLENBQUM7SUFDSDtNQUNFLE9BQU87UUFBQSxPQUFNLElBQUk7TUFBQTtFQUNyQjtBQUNGLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU3lFLGlCQUFpQkEsQ0FDL0I3QixLQUFtQixFQUNuQnhFLE1BQWMsRUFDZDlCLE1BQWMsRUFDZDBFLE1BQWUsRUFDZnFDLGFBQXFDLEVBQ3JCO0VBQ2hCO0VBQ0EsSUFBTXFCLGFBQWEsR0FBRzlCLEtBQUssR0FBR0EsS0FBSyxDQUFDOEIsYUFBYSxHQUFHLFVBQUFmLElBQUk7SUFBQSxPQUFJLElBQUk7RUFBQTtFQUNoRSxJQUFNZ0IsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUdDLENBQUM7SUFBQSxPQUFJLElBQUk7RUFBQTtFQUU3QixRQUFRdEksTUFBTSxDQUFDdUQsSUFBSTtJQUNqQixLQUFLcEIsNkJBQVksQ0FBQ0ssS0FBSztNQUNyQixPQUFPLFVBQUE2RSxJQUFJO1FBQUEsT0FBSWtCLFNBQVMsQ0FBQ0gsYUFBYSxDQUFDZixJQUFJLENBQUMsRUFBRXJILE1BQU0sQ0FBQzBELEtBQUssQ0FBQztNQUFBO0lBQzdELEtBQUt2Qiw2QkFBWSxDQUFDUSxXQUFXO01BQzNCLE9BQU8sVUFBQTBFLElBQUk7UUFBQSxPQUFJckgsTUFBTSxDQUFDMEQsS0FBSyxDQUFDYSxRQUFRLENBQUM2RCxhQUFhLENBQUNmLElBQUksQ0FBQyxDQUFDO01BQUE7SUFDM0QsS0FBS2xGLDZCQUFZLENBQUNPLE1BQU07TUFDdEIsT0FBTyxVQUFBMkUsSUFBSTtRQUFBLE9BQUllLGFBQWEsQ0FBQ2YsSUFBSSxDQUFDLEtBQUtySCxNQUFNLENBQUMwRCxLQUFLO01BQUE7SUFDckQsS0FBS3ZCLDZCQUFZLENBQUNDLFNBQVM7TUFDekIsSUFBSSxDQUFDa0UsS0FBSyxFQUFFO1FBQ1YsT0FBTytCLFdBQVc7TUFDcEI7TUFDQSxJQUFNRyxXQUFXLEdBQUcsSUFBQXhKLGVBQUcsRUFBQ3NILEtBQUssRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztNQUM5RCxJQUFNbUMsUUFBUSxHQUFHQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0gsV0FBVyxDQUFDLEdBQ3ZDLFVBQUFuQixJQUFJO1FBQUEsT0FBSW1CLFdBQVcsQ0FBQ25CLElBQUksQ0FBQ1csS0FBSyxDQUFDO01BQUEsSUFDL0IsVUFBQVgsSUFBSTtRQUFBLE9BQUksSUFBQXVCLDBCQUFlLEVBQUNSLGFBQWEsQ0FBQ2YsSUFBSSxDQUFDLEVBQUVmLEtBQUssQ0FBQ3VDLE1BQU0sQ0FBQztNQUFBO01BQzlELE9BQU8sVUFBQXhCLElBQUk7UUFBQSxPQUFJa0IsU0FBUyxDQUFDRSxRQUFRLENBQUNwQixJQUFJLENBQUMsRUFBRXJILE1BQU0sQ0FBQzBELEtBQUssQ0FBQztNQUFBO0lBQ3hELEtBQUt2Qiw2QkFBWSxDQUFDUyxPQUFPO01BQ3ZCLElBQUksQ0FBQzhCLE1BQU0sSUFBSSxDQUFDQSxNQUFNLENBQUNwRSxNQUFNLElBQUksQ0FBQ04sTUFBTSxDQUFDZ0MsT0FBTyxFQUFFO1FBQ2hELE9BQU9xRyxXQUFXO01BQ3BCO01BQ0EsSUFBTVMsb0JBQW9CLEdBQUc5SSxNQUFNLENBQUNnQyxPQUFPLENBQ3hDK0csR0FBRyxDQUFDLFVBQUFoRyxFQUFFO1FBQUEsT0FBSTJCLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDLFVBQUFDLENBQUM7VUFBQSxPQUFJQSxDQUFDLENBQUNqQyxFQUFFLEtBQUtBLEVBQUU7UUFBQSxFQUFDO01BQUEsRUFBQyxDQUN4Qy9DLE1BQU0sQ0FBQyxVQUFBZ0YsQ0FBQztRQUFBLE9BQUlBLENBQUMsSUFBSUEsQ0FBQyxDQUFDZ0UsTUFBTSxDQUFDbEgsTUFBTSxLQUFLQSxNQUFNO01BQUEsRUFBQyxDQUM1Q2lILEdBQUcsQ0FBQyxVQUFBakUsS0FBSztRQUFBLE9BQUlnQyx1QkFBdUIsQ0FBQ2hDLEtBQUssRUFBRTlFLE1BQU0sRUFBRStHLGFBQWEsQ0FBQztNQUFBLEVBQUM7TUFFdEUsT0FBTyxVQUFBTSxJQUFJO1FBQUEsT0FBSXlCLG9CQUFvQixDQUFDdkIsS0FBSyxDQUFDLFVBQUEwQixVQUFVO1VBQUEsT0FBSUEsVUFBVSxDQUFDNUIsSUFBSSxDQUFDO1FBQUEsRUFBQztNQUFBO0lBQzNFO01BQ0UsT0FBT2dCLFdBQVc7RUFDdEI7QUFDRjtBQUVPLFNBQVNhLGtCQUFrQkEsQ0FBQ3BILE1BQWMsRUFBYztFQUM3RCxPQUFPbUMsZ0JBQWdCLENBQUNuQyxNQUFNLENBQUM7QUFDakM7QUFFTyxTQUFTcUgsdUJBQXVCQSxDQUFBQyxLQUFBLEVBWXJDckMsYUFBcUMsRUFDdkI7RUFBQSxJQVhac0Msb0JBQW9CLEdBQUFELEtBQUEsQ0FBcEJDLG9CQUFvQjtJQUNwQkMsVUFBVSxHQUFBRixLQUFBLENBQVZFLFVBQVU7SUFDVkMsV0FBVyxHQUFBSCxLQUFBLENBQVhHLFdBQVc7RUFVYixJQUFNQyxzQkFBZ0MsR0FBRyxFQUFFO0VBQzNDLElBQU1DLGFBQXVCLEdBQUcsRUFBRTtFQUVsQyxJQUFNQyxhQUFhLEdBQUc7SUFBQzFCLEtBQUssRUFBRSxDQUFDLENBQUM7SUFBRWpCLGFBQWEsRUFBYkE7RUFBYSxDQUFDO0VBQ2hELElBQU00QyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFJM0osTUFBYztJQUFBLE9BQUt1SixXQUFXLENBQUN2SixNQUFNLENBQUMrQyxFQUFFLENBQUMsQ0FBQzJHLGFBQWEsQ0FBQztFQUFBO0VBRWxGLElBQU1FLE9BQU8sR0FBRzdDLGFBQWEsQ0FBQzZDLE9BQU8sQ0FBQyxDQUFDO0VBQ3ZDLEtBQUssSUFBSWxLLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR2tLLE9BQU8sRUFBRSxFQUFFbEssQ0FBQyxFQUFFO0lBQ2hDZ0ssYUFBYSxDQUFDMUIsS0FBSyxHQUFHdEksQ0FBQztJQUV2QixJQUFNbUssY0FBYyxHQUFHUixvQkFBb0IsSUFBSUEsb0JBQW9CLENBQUM5QixLQUFLLENBQUNvQyxnQkFBZ0IsQ0FBQztJQUMzRixJQUFJRSxjQUFjLEVBQUU7TUFDbEJMLHNCQUFzQixDQUFDdEosSUFBSSxDQUFDd0osYUFBYSxDQUFDMUIsS0FBSyxDQUFDO0lBQ2xEO0lBRUEsSUFBTThCLGNBQWMsR0FBR1IsVUFBVSxJQUFJQSxVQUFVLENBQUMvQixLQUFLLENBQUNvQyxnQkFBZ0IsQ0FBQztJQUN2RSxJQUFJRyxjQUFjLEVBQUU7TUFDbEJMLGFBQWEsQ0FBQ3ZKLElBQUksQ0FBQ3dKLGFBQWEsQ0FBQzFCLEtBQUssQ0FBQztJQUN6QztFQUNGO0VBRUEsT0FBQTVILGFBQUEsQ0FBQUEsYUFBQSxLQUNNaUosb0JBQW9CLEdBQUc7SUFBQ0csc0JBQXNCLEVBQXRCQTtFQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3BERixVQUFVLEdBQUc7SUFBQ0csYUFBYSxFQUFiQTtFQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFekM7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU00sZUFBZUEsQ0FDN0JqSSxNQUFjLEVBQ2RrSSxPQUFpQixFQUVIO0VBQUEsSUFEZEMsR0FBcUIsR0FBQTVKLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUE2SixTQUFBLEdBQUE3SixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBRTFCLElBQU04SixZQUEwQixHQUFHO0lBQ2pDQyxhQUFhLEVBQUUsRUFBRTtJQUNqQnBILFdBQVcsRUFBRSxFQUFFO0lBQ2ZxSCxHQUFHLEVBQUUsRUFBRTtJQUNQdkcsR0FBRyxFQUFFO0VBQ1AsQ0FBQztFQUVEa0csT0FBTyxDQUFDekosT0FBTyxDQUFDLFVBQUErSixDQUFDLEVBQUk7SUFDbkIsSUFBSTFGLGtCQUFrQixDQUFDMEYsQ0FBQyxDQUFDL0csSUFBSSxFQUFFK0csQ0FBQyxDQUFDNUcsS0FBSyxDQUFDLElBQUksSUFBQVEsY0FBTyxFQUFDb0csQ0FBQyxDQUFDeEksTUFBTSxDQUFDLENBQUN5QyxRQUFRLENBQUN6QyxNQUFNLENBQUMsRUFBRTtNQUM3RSxDQUFDd0ksQ0FBQyxDQUFDdEgsV0FBVyxJQUFJaUgsR0FBRyxDQUFDTSxZQUFZLEdBQzlCSixZQUFZLENBQUNuSCxXQUFXLEdBQ3hCbUgsWUFBWSxDQUFDQyxhQUFhLEVBQzVCbEssSUFBSSxDQUFDb0ssQ0FBQyxDQUFDO01BRVQsQ0FBQ0EsQ0FBQyxDQUFDeEcsR0FBRyxJQUFJLENBQUNtRyxHQUFHLENBQUNPLE9BQU8sR0FBR0wsWUFBWSxDQUFDckcsR0FBRyxHQUFHcUcsWUFBWSxDQUFDRSxHQUFHLEVBQUVuSyxJQUFJLENBQUNvSyxDQUFDLENBQUM7SUFDdkU7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPSCxZQUFZO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNNLFdBQVdBLENBQ3pCTixZQUEwQixFQUVYO0VBQUEsSUFEZk8sZUFBa0MsR0FBQXJLLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUE2SixTQUFBLEdBQUE3SixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBRXZDLElBQUlzSyxhQUFxQyxHQUFHLENBQUMsQ0FBQztFQUU3Q3ZMLE1BQU0sQ0FBQ3dMLE9BQU8sQ0FBQ1QsWUFBWSxDQUFDLENBQTJCNUosT0FBTyxDQUFDLFVBQUFzSyxLQUFBLEVBQXFCO0lBQUEsSUFBQUMsS0FBQSxPQUFBQyxlQUFBLGFBQUFGLEtBQUE7TUFBbkJHLE1BQU0sR0FBQUYsS0FBQTtNQUFFRyxLQUFLLEdBQUFILEtBQUE7SUFDN0VHLEtBQUssQ0FBQzFLLE9BQU8sQ0FBQyxVQUFBUCxNQUFNLEVBQUk7TUFDdEIsSUFBTWtMLFNBQWlCLEdBQUcsQ0FBQ1IsZUFBZSxDQUFDTSxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUVqRyxJQUFJLENBQzVELFVBQUN1RixDQUFTO1FBQUEsT0FBS0EsQ0FBQyxDQUFDdkgsRUFBRSxLQUFLL0MsTUFBTSxDQUFDK0MsRUFBRTtNQUFBLENBQ25DLENBQUM7TUFFRCxJQUFJLENBQUNtSSxTQUFTLEVBQUU7UUFDZDtRQUNBUCxhQUFhLEdBQUcsSUFBQWhMLFVBQUcsRUFBQyxDQUFDcUwsTUFBTSxFQUFFaEwsTUFBTSxDQUFDK0MsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFNEgsYUFBYSxDQUFDO01BQ2xFLENBQUMsTUFBTTtRQUNMO1FBQ0EsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDcEssT0FBTyxDQUFDLFVBQUE0SyxJQUFJLEVBQUk7VUFDMUMsSUFBSW5MLE1BQU0sQ0FBQ21MLElBQUksQ0FBQyxLQUFLRCxTQUFTLENBQUNDLElBQUksQ0FBQyxFQUFFO1lBQ3BDUixhQUFhLEdBQUcsSUFBQWhMLFVBQUcsRUFBQyxDQUFDcUwsTUFBTSxFQUFFaEwsTUFBTSxDQUFDK0MsRUFBRSxDQUFDLEtBQUFxSSxNQUFBLENBQUtELElBQUksZUFBWVIsYUFBYSxDQUFDO1VBQzVFO1FBQ0YsQ0FBQyxDQUFDO01BQ0o7SUFDRixDQUFDLENBQUM7SUFFRixDQUFDRCxlQUFlLENBQUNNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRXpLLE9BQU8sQ0FBQyxVQUFDMkssU0FBaUIsRUFBSztNQUM3RDtNQUNBLElBQUksQ0FBQ0QsS0FBSyxDQUFDbEcsSUFBSSxDQUFDLFVBQUF1RixDQUFDO1FBQUEsT0FBSUEsQ0FBQyxDQUFDdkgsRUFBRSxLQUFLbUksU0FBUyxDQUFDbkksRUFBRTtNQUFBLEVBQUMsRUFBRTtRQUMzQzRILGFBQWEsR0FBRyxJQUFBaEwsVUFBRyxFQUFDLENBQUNxTCxNQUFNLEVBQUVFLFNBQVMsQ0FBQ25JLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTRILGFBQWEsQ0FBQztNQUN2RTtJQUNGLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUVGLE9BQUF2SyxhQUFBLENBQUFBLGFBQUEsS0FBVztJQUFDZ0ssYUFBYSxFQUFFLElBQUk7SUFBRXBILFdBQVcsRUFBRSxJQUFJO0lBQUVxSCxHQUFHLEVBQUUsSUFBSTtJQUFFdkcsR0FBRyxFQUFFO0VBQUksQ0FBQyxHQUFLNkcsYUFBYTtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTOUUseUJBQXlCQSxDQUFDbkMsS0FBc0IsRUFBQTJILEtBQUEsRUFBa0I7RUFBQSxJQUFmNUgsTUFBTSxHQUFBNEgsS0FBQSxDQUFONUgsTUFBTTtJQUFFRixJQUFJLEdBQUE4SCxLQUFBLENBQUo5SCxJQUFJO0VBQzdFLElBQUksQ0FBQ0UsTUFBTSxJQUFJLENBQUNGLElBQUksRUFBRTtJQUNwQixPQUFPLEtBQUs7RUFDZDtFQUVBLFFBQVFBLElBQUk7SUFDVixLQUFLcEIsNkJBQVksQ0FBQ0ssS0FBSztJQUN2QixLQUFLTCw2QkFBWSxDQUFDQyxTQUFTO01BQ3pCLElBQUksQ0FBQ3NHLEtBQUssQ0FBQ0MsT0FBTyxDQUFDakYsS0FBSyxDQUFDLElBQUlBLEtBQUssQ0FBQ3BELE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDL0MsT0FBT21ELE1BQU0sQ0FBQ3NGLEdBQUcsQ0FBQyxVQUFBVCxDQUFDO1VBQUEsT0FBSUEsQ0FBQztRQUFBLEVBQUM7TUFDM0I7TUFFQSxPQUFPNUUsS0FBSyxDQUFDcUYsR0FBRyxDQUFDLFVBQUNULENBQUMsRUFBRTVJLENBQUM7UUFBQSxPQUFNLElBQUE0TCw2QkFBa0IsRUFBQ2hELENBQUMsQ0FBQyxJQUFJQyxTQUFTLENBQUNELENBQUMsRUFBRTdFLE1BQU0sQ0FBQyxHQUFHNkUsQ0FBQyxHQUFHN0UsTUFBTSxDQUFDL0QsQ0FBQyxDQUFDO01BQUEsQ0FBQyxDQUFDO0lBRTdGLEtBQUt5Qyw2QkFBWSxDQUFDUSxXQUFXO01BQzNCLElBQUksQ0FBQytGLEtBQUssQ0FBQ0MsT0FBTyxDQUFDakYsS0FBSyxDQUFDLEVBQUU7UUFDekIsT0FBTyxFQUFFO01BQ1g7TUFDQSxJQUFNNkgsYUFBYSxHQUFHN0gsS0FBSyxDQUFDMUQsTUFBTSxDQUFDLFVBQUFzSSxDQUFDO1FBQUEsT0FBSTdFLE1BQU0sQ0FBQ2MsUUFBUSxDQUFDK0QsQ0FBQyxDQUFDO01BQUEsRUFBQztNQUMzRCxPQUFPaUQsYUFBYSxDQUFDakwsTUFBTSxHQUFHaUwsYUFBYSxHQUFHLEVBQUU7SUFFbEQsS0FBS3BKLDZCQUFZLENBQUNPLE1BQU07TUFDdEIsT0FBT2UsTUFBTSxDQUFDYyxRQUFRLENBQUNiLEtBQUssQ0FBQyxHQUFHQSxLQUFLLEdBQUcsSUFBSTtJQUU5QztNQUNFLE9BQU8sSUFBSTtFQUNmO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTOEgscUJBQXFCQSxDQUNuQ3pFLGFBQXFDLEVBQ3JDcUIsYUFBZ0MsRUFDZDtFQUNsQixJQUFJM0UsTUFBd0IsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7RUFDckMsSUFBSTNDLElBQUksR0FBRyxHQUFHO0VBRWQsSUFBTTBILFdBQVcsR0FBR3pCLGFBQWEsQ0FBQzBFLFFBQVEsQ0FBQ3JELGFBQWEsQ0FBQztFQUV6RCxJQUFJckIsYUFBYSxDQUFDNkMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDL0JuRyxNQUFNLEdBQUd0RixVQUFVLENBQUN1TixlQUFlLENBQUNsRCxXQUFXLENBQUM7SUFDaEQsSUFBTW1ELElBQUksR0FBR2xJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBR0EsTUFBTSxDQUFDLENBQUMsQ0FBQzs7SUFFbEM7SUFDQSxJQUFJLENBQUNrSSxJQUFJLEVBQUU7TUFDVGxJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBR0EsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0I7SUFFQTNDLElBQUksR0FBRzhLLGtCQUFrQixDQUFDRCxJQUFJLENBQUMsSUFBSTdLLElBQUk7SUFDdkMyQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUdvSSxrQkFBa0IsQ0FBQ3BJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTNDLElBQUksRUFBRSxPQUFPLENBQUM7SUFDeEQyQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUdvSSxrQkFBa0IsQ0FBQ3BJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTNDLElBQUksRUFBRSxNQUFNLENBQUM7RUFDekQ7RUFFQSxJQUFBZ0wsYUFBQSxHQUF1Q0MsWUFBWSxDQUFDdEksTUFBTSxFQUFFK0UsV0FBVyxDQUFDO0lBQWpFN0csU0FBUyxHQUFBbUssYUFBQSxDQUFUbkssU0FBUztJQUFFcUssaUJBQWlCLEdBQUFGLGFBQUEsQ0FBakJFLGlCQUFpQjtFQUVuQyxPQUFPO0lBQUN2SSxNQUFNLEVBQU5BLE1BQU07SUFBRTNDLElBQUksRUFBSkEsSUFBSTtJQUFFYSxTQUFTLEVBQVRBLFNBQVM7SUFBRXFLLGlCQUFpQixFQUFqQkE7RUFBaUIsQ0FBQztBQUNyRDs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSixrQkFBa0JBLENBQUNELElBQVksRUFBVTtFQUN2REEsSUFBSSxHQUFHTSxJQUFJLENBQUNDLEdBQUcsQ0FBQ1AsSUFBSSxDQUFDO0VBRXJCLElBQUlBLElBQUksR0FBRyxHQUFHLEVBQUU7SUFDZCxPQUFPLENBQUM7RUFDVixDQUFDLE1BQU0sSUFBSUEsSUFBSSxHQUFHLENBQUMsRUFBRTtJQUNuQixPQUFPLElBQUk7RUFDYixDQUFDLE1BQU0sSUFBSUEsSUFBSSxHQUFHLENBQUMsRUFBRTtJQUNuQixPQUFPLEtBQUs7RUFDZDtFQUNBO0VBQ0E7RUFDQSxJQUFNUSxDQUFDLEdBQUdSLElBQUksR0FBRyxJQUFJO0VBQ3JCOztFQUVBLElBQU1TLGVBQWUsR0FBR0QsQ0FBQyxDQUFDRSxhQUFhLENBQUMsQ0FBQztFQUN6QyxJQUFNQyxRQUFRLEdBQUdDLFVBQVUsQ0FBQ0gsZUFBZSxDQUFDSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0VBRTFEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPQUFPLElBQUlDLGdCQUFPLENBQUMsRUFBRSxDQUFDLENBQUNDLEdBQUcsQ0FBQ0osUUFBUSxDQUFDLENBQUNLLFFBQVEsQ0FBQyxDQUFDO0FBQ2pEOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLHVCQUF1QkEsQ0FDckM3RixhQUFxQyxFQUNyQ3FCLGFBQWdDLEVBQ1Y7RUFDdEI7RUFDQTs7RUFFQSxJQUFNSSxXQUFXLEdBQUd6QixhQUFhLENBQUMwRSxRQUFRLENBQUNyRCxhQUFhLENBQUM7RUFDekQsSUFBTTNFLE1BQU0sR0FBR3RGLFVBQVUsQ0FBQ3VOLGVBQWUsQ0FBQ2xELFdBQVcsQ0FBQztFQUN0RCxJQUFNcUUsaUJBQWlCLEdBQUdDLDJCQUEyQixDQUFDckosTUFBTSxDQUFDO0VBRTdELElBQUkzQyxJQUFJLEdBQUcsSUFBSTtFQUVmLElBQU02SyxJQUFJLEdBQUdsSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUdBLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFDbEMsSUFBTXNKLEtBQUssR0FBR3BNLGdCQUFnQixDQUFDb0UsSUFBSSxDQUFDLFVBQUF1RixDQUFDO0lBQUEsT0FBSUEsQ0FBQyxDQUFDekosR0FBRyxJQUFJOEssSUFBSTtFQUFBLEVBQUM7RUFDdkQsSUFBSW9CLEtBQUssRUFBRTtJQUNUak0sSUFBSSxHQUFHaU0sS0FBSyxDQUFDak0sSUFBSTtFQUNuQjtFQUVBLElBQUFrTSxjQUFBLEdBQXVDakIsWUFBWSxDQUFDdEksTUFBTSxFQUFFK0UsV0FBVyxDQUFDO0lBQWpFN0csU0FBUyxHQUFBcUwsY0FBQSxDQUFUckwsU0FBUztJQUFFcUssaUJBQWlCLEdBQUFnQixjQUFBLENBQWpCaEIsaUJBQWlCO0VBRW5DLE9BQU87SUFDTHZJLE1BQU0sRUFBTkEsTUFBTTtJQUNOM0MsSUFBSSxFQUFKQSxJQUFJO0lBQ0owSCxXQUFXLEVBQVhBLFdBQVc7SUFDWDdHLFNBQVMsRUFBVEEsU0FBUztJQUNUcUssaUJBQWlCLEVBQWpCQSxpQkFBaUI7SUFDakJhLGlCQUFpQixFQUFqQkE7RUFDRixDQUFDO0FBQ0g7QUFFTyxTQUFTSSxrQkFBa0JBLENBQ2hDeEosTUFBd0IsRUFDeEIrRSxXQUFxQyxFQUNyQzBFLElBQVksRUFDSTtFQUNoQixPQUFPLElBQUFDLGtCQUFXLEVBQUMsQ0FBQyxDQUNqQkMsVUFBVSxDQUFDLElBQUFDLGNBQUssRUFBQzVKLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRUEsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFeUosSUFBSSxDQUFDLENBQUMsQ0FDN0N6SixNQUFNLENBQUNBLE1BQU0sQ0FBQyxDQUFDK0UsV0FBVyxDQUFDLENBQzNCTyxHQUFHLENBQUMsVUFBQXVFLEdBQUc7SUFBQSxPQUFLO01BQ1hDLEtBQUssRUFBRUQsR0FBRyxDQUFDaE4sTUFBTTtNQUNqQmtOLEVBQUUsRUFBRUYsR0FBRyxDQUFDRSxFQUFFO01BQ1ZDLEVBQUUsRUFBRUgsR0FBRyxDQUFDRztJQUNWLENBQUM7RUFBQSxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVMxQixZQUFZQSxDQUMxQnRJLE1BQXdCLEVBQ3hCK0UsV0FBcUMsRUFDMkI7RUFDaEUsSUFBTTdHLFNBQVMsR0FBR3NMLGtCQUFrQixDQUFDeEosTUFBTSxFQUFFK0UsV0FBVyxFQUFFdkgsYUFBYSxDQUFDO0VBQ3hFLElBQU0rSyxpQkFBaUIsR0FBR2lCLGtCQUFrQixDQUFDeEosTUFBTSxFQUFFK0UsV0FBVyxFQUFFdEgscUJBQXFCLENBQUM7RUFFeEYsT0FBTztJQUFDUyxTQUFTLEVBQVRBLFNBQVM7SUFBRXFLLGlCQUFpQixFQUFqQkE7RUFBaUIsQ0FBQztBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0gsa0JBQWtCQSxDQUFDNkIsR0FBVyxFQUFFNU0sSUFBWSxFQUFFNk0sS0FBdUIsRUFBVTtFQUM3RixJQUFJQSxLQUFLLEtBQUssT0FBTyxFQUFFO0lBQ3JCLE9BQU8xQixJQUFJLENBQUMyQixLQUFLLENBQUNGLEdBQUcsSUFBSSxDQUFDLEdBQUc1TSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBR0EsSUFBSSxDQUFDO0VBQ2xEO0VBRUEsT0FBT21MLElBQUksQ0FBQzRCLElBQUksQ0FBQ0gsR0FBRyxJQUFJLENBQUMsR0FBRzVNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHQSxJQUFJLENBQUM7QUFDakQ7QUFFTyxTQUFTeUgsU0FBU0EsQ0FBQ21GLEdBQVEsRUFBRWpLLE1BQWdCLEVBQVc7RUFDN0QsSUFBSSxDQUFDaUYsS0FBSyxDQUFDQyxPQUFPLENBQUNsRixNQUFNLENBQUMsRUFBRTtJQUMxQixPQUFPLEtBQUs7RUFDZDtFQUVBLE9BQU9pSyxHQUFHLElBQUlqSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUlpSyxHQUFHLElBQUlqSyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU2dFLFdBQVdBLENBQUNOLEtBQWUsRUFBRXZFLE9BQVksRUFBVztFQUNsRSxPQUFPLElBQUFrTCx5QkFBYSxFQUFDLElBQUFDLGNBQVMsRUFBQzVHLEtBQUssQ0FBQyxFQUFFdkUsT0FBTyxDQUFDO0FBQ2pEO0FBQ08sU0FBU29MLGlCQUFpQkEsQ0FBQ3ZLLE1BQU0sRUFBRTtFQUN4QyxPQUFPaUYsS0FBSyxDQUFDQyxPQUFPLENBQUNsRixNQUFNLENBQUMsSUFBSUEsTUFBTSxDQUFDOEQsS0FBSyxDQUFDeEcsTUFBTSxDQUFDeUcsUUFBUSxDQUFDO0FBQy9EO0FBQ08sU0FBU3NGLDJCQUEyQkEsQ0FBQ3JKLE1BQXdCLEVBQWlCO0VBQ25GLElBQUksQ0FBQ3VLLGlCQUFpQixDQUFDdkssTUFBTSxDQUFDLEVBQUU7SUFDOUIsT0FBTyxJQUFJO0VBQ2I7RUFFQSxJQUFNa0ksSUFBSSxHQUFHbEksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHQSxNQUFNLENBQUMsQ0FBQyxDQUFDOztFQUVsQztFQUNBO0VBQ0EsT0FBT2tJLElBQUksR0FBR25LLFlBQVksR0FBRyxHQUFHLEdBQUdtSyxJQUFJLEdBQUdySyxXQUFXLEdBQUcsTUFBTSxHQUFHLE9BQU87QUFDMUU7QUFFTyxTQUFTMk0sMEJBQTBCQSxDQUFDeEssTUFBd0IsRUFBc0I7RUFDdkYsSUFBSSxDQUFDdUssaUJBQWlCLENBQUN2SyxNQUFNLENBQUMsRUFBRTtJQUM5QixPQUFPeUcsU0FBUztFQUNsQjtFQUVBLElBQU15QixJQUFJLEdBQUdsSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUdBLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFDbEMsT0FBT2tJLElBQUksR0FBR3BLLFlBQVksR0FDdEIsR0FBRyxHQUNIb0ssSUFBSSxHQUFHckssV0FBVyxHQUNsQixNQUFNLEdBQ05xSyxJQUFJLEdBQUd0SyxZQUFZLEdBQ25CLElBQUksR0FDSixLQUFLO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTdUQsa0JBQWtCQSxDQUFDckIsSUFBbUIsRUFBRUcsS0FBVSxFQUFXO0VBQzNFLElBQUksQ0FBQ0gsSUFBSSxFQUFFO0lBQ1QsT0FBTyxLQUFLO0VBQ2Q7RUFDQSxRQUFRQSxJQUFJO0lBQ1YsS0FBS3BCLDZCQUFZLENBQUNPLE1BQU07TUFDdEIsT0FBT2dCLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBSyxLQUFLO0lBRTFDLEtBQUt2Qiw2QkFBWSxDQUFDSyxLQUFLO0lBQ3ZCLEtBQUtMLDZCQUFZLENBQUNDLFNBQVM7TUFDekIsT0FBT3NHLEtBQUssQ0FBQ0MsT0FBTyxDQUFDakYsS0FBSyxDQUFDLElBQUlBLEtBQUssQ0FBQzZELEtBQUssQ0FBQyxVQUFBMkcsQ0FBQztRQUFBLE9BQUlBLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQ0MsS0FBSyxDQUFDRCxDQUFDLENBQUM7TUFBQSxFQUFDO0lBRTFFLEtBQUsvTCw2QkFBWSxDQUFDUSxXQUFXO01BQzNCLE9BQU8rRixLQUFLLENBQUNDLE9BQU8sQ0FBQ2pGLEtBQUssQ0FBQyxJQUFJMEssT0FBTyxDQUFDMUssS0FBSyxDQUFDcEQsTUFBTSxDQUFDO0lBRXRELEtBQUs2Qiw2QkFBWSxDQUFDa00sS0FBSztNQUNyQixPQUFPRCxPQUFPLENBQUMxSyxLQUFLLENBQUNwRCxNQUFNLENBQUM7SUFFOUIsS0FBSzZCLDZCQUFZLENBQUNTLE9BQU87TUFDdkIsSUFBTTBMLFdBQVcsR0FBRyxJQUFBdFAsZUFBRyxFQUFDMEUsS0FBSyxFQUFFLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO01BQzNELE9BQU8wSyxPQUFPLENBQUMxSyxLQUFLLElBQUlBLEtBQUssQ0FBQ1gsRUFBRSxJQUFJdUwsV0FBVyxDQUFDO0lBRWxEO01BQ0UsT0FBTyxJQUFJO0VBQ2Y7QUFDRjtBQUVPLFNBQVNsSSxhQUFhQSxDQUMzQnBHLE1BQWMsRUFDZHlFLE9BQW9CLEVBQ3NCO0VBQzFDLElBQUl6RSxNQUFNLENBQUMyRCxRQUFRLEtBQUtsQyxVQUFVLENBQUNFLFNBQVMsSUFBSSxDQUFDM0IsTUFBTSxDQUFDNEQsS0FBSyxFQUFFO0lBQzdEO0lBQ0EsT0FBTyxDQUFDLENBQUM7RUFDWDtFQUVBLElBQUEySyxtQkFBQSxHQUEyQnZPLE1BQU0sQ0FBMUJ3SSxXQUFXO0lBQVhBLFdBQVcsR0FBQStGLG1CQUFBLGNBQUcsRUFBRSxHQUFBQSxtQkFBQTtFQUN2QixJQUFPM0ssS0FBSyxHQUFJNUQsTUFBTSxDQUFmNEQsS0FBSztFQUNaLElBQU1KLFFBQVEsR0FBR2lCLE9BQU8sQ0FBQytKLGlCQUFpQixDQUFDNUssS0FBSyxDQUFDN0IsSUFBSSxDQUFDO0VBQ3RELElBQUl5QixRQUFRLEdBQUcsQ0FBQyxFQUFFO0lBQ2hCaUwsZ0JBQU8sQ0FBQ0MsSUFBSSxVQUFBdEQsTUFBQSxDQUFVeEgsS0FBSyxDQUFDN0IsSUFBSSwrQkFBNEIsQ0FBQztJQUM3RCxPQUFPO01BQUNILFNBQVMsRUFBRSxDQUFDLENBQUM7TUFBRWdDLEtBQUssRUFBTEE7SUFBSyxDQUFDO0VBQy9COztFQUVBO0VBQ0EsSUFBTStLLE1BQU0sR0FBR2xLLE9BQU8sQ0FBQ3NDLGFBQWEsQ0FDakNnQyxHQUFHLENBQ0YsVUFBQzZGLEdBQUcsRUFBRUMsUUFBUTtJQUFBLE9BQU07TUFDbEIxQyxDQUFDLEVBQUUzRCxXQUFXLENBQUNxRyxRQUFRLENBQUM7TUFDeEJDLENBQUMsRUFBRUYsR0FBRyxDQUFDRyxPQUFPLENBQUN2TCxRQUFRO0lBQ3pCLENBQUM7RUFBQSxDQUFDLEVBQ0YsSUFDRixDQUFDLENBQ0F4RCxNQUFNLENBQUMsVUFBQWdQLEtBQUE7SUFBQSxJQUFFN0MsQ0FBQyxHQUFBNkMsS0FBQSxDQUFEN0MsQ0FBQztNQUFFMkMsQ0FBQyxHQUFBRSxLQUFBLENBQURGLENBQUM7SUFBQSxPQUFNL04sTUFBTSxDQUFDeUcsUUFBUSxDQUFDMkUsQ0FBQyxDQUFDLElBQUlwTCxNQUFNLENBQUN5RyxRQUFRLENBQUNzSCxDQUFDLENBQUM7RUFBQSxFQUFDLENBQzVERyxJQUFJLENBQUMsVUFBQzlQLENBQUMsRUFBRStQLENBQUM7SUFBQSxPQUFLLElBQUFDLGtCQUFTLEVBQUNoUSxDQUFDLENBQUNnTixDQUFDLEVBQUUrQyxDQUFDLENBQUMvQyxDQUFDLENBQUM7RUFBQSxFQUFDO0VBRXRDLElBQU1pRCxPQUFPLEdBQUcsSUFBQUMsZUFBTSxFQUFDVixNQUFNLEVBQUUsVUFBQXJHLENBQUM7SUFBQSxPQUFJQSxDQUFDLENBQUN3RyxDQUFDO0VBQUEsRUFBQztFQUN4QyxJQUFNUSxPQUFPLEdBQUcsQ0FBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDeEMsQ0FBQyxFQUFFd0MsTUFBTSxDQUFDQSxNQUFNLENBQUNyTyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM2TCxDQUFDLENBQUM7RUFFMUQsT0FBTztJQUFDdkssU0FBUyxFQUFFO01BQUMrTSxNQUFNLEVBQU5BLE1BQU07TUFBRVMsT0FBTyxFQUFQQSxPQUFPO01BQUVFLE9BQU8sRUFBUEE7SUFBTyxDQUFDO0lBQUUxTCxLQUFLLEVBQUxBO0VBQUssQ0FBQztBQUN2RDtBQUVPLFNBQVMyTCx3QkFBd0JBLENBQUN2UCxNQUFjLEVBQWlCO0VBQ3RFLElBQU13UCxlQUFnRixHQUNwRnhQLE1BQU0sQ0FBQ3VELElBQUksSUFBSXJCLGlCQUFpQixDQUFDbEMsTUFBTSxDQUFDdUQsSUFBSSxDQUFDO0VBQy9DLElBQUksQ0FBQ2lNLGVBQWUsRUFBRTtJQUNwQixPQUFPLElBQUk7RUFDYjtFQUVBLElBQUksQ0FBQ3hQLE1BQU0sQ0FBQzRELEtBQUssRUFBRTtJQUNqQixPQUFPNEwsZUFBZSxXQUFRO0VBQ2hDO0VBRUEsT0FBT0EsZUFBZSxDQUFDeFAsTUFBTSxDQUFDNEQsS0FBSyxDQUFDTCxJQUFJLENBQUMsSUFBSSxJQUFJO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU2tNLHNCQUFzQkEsQ0FDcENDLFVBQW9CLEVBQ3BCQyxRQUFrQixFQUNsQjNGLE9BQWlCLEVBQ2pCdEYsTUFBZ0IsRUFDTjtFQUNWLElBQU1KLE9BQU8sR0FBRyxJQUFBSixjQUFPLEVBQUN3TCxVQUFVLENBQUM7RUFDbkMsT0FBT3BMLE9BQU8sQ0FBQ3NMLE1BQU0sQ0FBQyxVQUFDQyxHQUFHLEVBQUUvTixNQUFNLEVBQUs7SUFDckMsSUFBTWdPLGNBQWMsR0FBRyxDQUFDcEwsTUFBTSxJQUFJLEVBQUUsRUFBRTFFLE1BQU0sQ0FBQyxVQUFBZ0YsQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQ2dFLE1BQU0sQ0FBQ2xILE1BQU0sS0FBS0EsTUFBTTtJQUFBLEVBQUM7SUFDN0UsSUFBTWlPLGNBQWMsR0FBRy9GLE9BQU8sQ0FBQ2hLLE1BQU0sQ0FBQyxVQUFBc0ksQ0FBQztNQUFBLE9BQUlsRSxpQkFBaUIsQ0FBQ2tFLENBQUMsRUFBRXhHLE1BQU0sQ0FBQztJQUFBLEVBQUM7SUFDeEUsSUFBTWtPLEtBQUssR0FBR0wsUUFBUSxDQUFDN04sTUFBTSxDQUFDO0lBRTlCLE9BQUExQixhQUFBLENBQUFBLGFBQUEsS0FDS3lQLEdBQUcsV0FBQXJQLGdCQUFBLGlCQUNMc0IsTUFBTSxFQUFHa08sS0FBSyxDQUFDQyxXQUFXLENBQUNGLGNBQWMsRUFBRUQsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBRW5FLENBQUMsRUFBRUgsUUFBUSxDQUFDO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU2xLLG9CQUFvQkEsQ0FDbEN6RixNQUFjLEVBQ2R5RSxPQUFvQixFQUNwQmMsU0FBaUIsRUFNakI7RUFBQSxJQUxBSCxrQkFBa0IsR0FBQS9FLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUE2SixTQUFBLEdBQUE3SixTQUFBLE1BQUcsQ0FBQztFQUFBLElBQ3RCNlAsTUFBK0IsR0FBQTdQLFNBQUEsQ0FBQUMsTUFBQSxPQUFBRCxTQUFBLE1BQUE2SixTQUFBO0VBSy9CO0VBQ0EsSUFBTXhFLFdBQVcsR0FBR3dLLE1BQU0sSUFBSUEsTUFBTSxDQUFDMVEsY0FBYyxDQUFDLGFBQWEsQ0FBQyxHQUFHMFEsTUFBTSxDQUFDeEssV0FBVyxHQUFHLEtBQUs7RUFFL0YsSUFBTXlLLFVBQVUsR0FBRzFMLE9BQU8sQ0FBQytKLGlCQUFpQixDQUFDakosU0FBUyxDQUFDO0VBQ3ZEO0VBQ0EsSUFBSTRLLFVBQVUsS0FBSyxDQUFDLENBQUMsRUFBRTtJQUNyQjtJQUNBLE9BQU87TUFBQ25RLE1BQU0sRUFBRSxJQUFJO01BQUV5RSxPQUFPLEVBQVBBO0lBQU8sQ0FBQztFQUNoQzs7RUFFQTtFQUNBLElBQU0rQixXQUFXLEdBQUcvQixPQUFPLENBQUMyTCxvQkFBb0IsQ0FBQzdLLFNBQVMsQ0FBQztFQUUzRCxJQUFNOEssU0FBUyxHQUFBalEsYUFBQSxDQUFBQSxhQUFBLEtBQ1RzRixXQUFXLEdBQUc0SyxxQkFBcUIsQ0FBQ3RRLE1BQU0sRUFBRXdHLFdBQVcsQ0FBQyxHQUFBcEcsYUFBQSxDQUFBQSxhQUFBLEtBQU9KLE1BQU0sR0FBS3dHLFdBQVcsQ0FBQztJQUMxRnpFLElBQUksRUFBRTNDLE1BQU0sQ0FBQ21SLE1BQU0sS0FBQUMsbUJBQUEsYUFBSyxJQUFBdE0sY0FBTyxFQUFDbEUsTUFBTSxDQUFDK0IsSUFBSSxDQUFDLE9BQUF2QixnQkFBQSxpQkFBSzRFLGtCQUFrQixFQUFHRyxTQUFTLENBQUMsQ0FBQztJQUNqRi9CLFFBQVEsRUFBRXBFLE1BQU0sQ0FBQ21SLE1BQU0sS0FBQUMsbUJBQUEsYUFBSyxJQUFBdE0sY0FBTyxFQUFDbEUsTUFBTSxDQUFDd0QsUUFBUSxDQUFDLE9BQUFoRCxnQkFBQSxpQkFDakQ0RSxrQkFBa0IsRUFBRytLLFVBQVUsQ0FDakMsQ0FBQztJQUNGO0lBQ0FyTixNQUFNLEVBQUU7RUFBSSxFQUNiO0VBRUQsT0FBTztJQUNMOUMsTUFBTSxFQUFFcVEsU0FBUztJQUNqQjVMLE9BQU8sRUFBUEE7RUFDRixDQUFDO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTNkwscUJBQXFCQSxDQUFDdFEsTUFBYyxFQUFFd0csV0FBaUIsRUFBaUI7RUFDdEYsSUFBSSxDQUFDeEcsTUFBTSxFQUFFO0lBQ1gsT0FBTyxJQUFJO0VBQ2I7RUFFQSxJQUFJLENBQUN3RyxXQUFXLEVBQUU7SUFDaEIsT0FBT3hHLE1BQU07RUFDZjtFQUVBLElBQUtBLE1BQU0sQ0FBQ3lHLFNBQVMsSUFBSXpHLE1BQU0sQ0FBQ3lHLFNBQVMsS0FBS0QsV0FBVyxDQUFDQyxTQUFTLElBQUssQ0FBQ0QsV0FBVyxDQUFDL0MsTUFBTSxFQUFFO0lBQzNGLE9BQU96RCxNQUFNO0VBQ2Y7RUFFQSxJQUFNeVEsY0FBYyxHQUFHLENBQUN6USxNQUFNLENBQUN5RCxNQUFNLEdBQ2pDK0MsV0FBVyxDQUFDL0MsTUFBTSxHQUNsQixHQUFBMkgsTUFBQSxLQUFBb0YsbUJBQUEsYUFBS3hRLE1BQU0sQ0FBQ3lELE1BQU0sSUFBSSxFQUFFLE9BQUErTSxtQkFBQSxhQUFPaEssV0FBVyxDQUFDL0MsTUFBTSxJQUFJLEVBQUUsR0FBR3dMLElBQUksQ0FBQyxVQUFDOVAsQ0FBQyxFQUFFK1AsQ0FBQztJQUFBLE9BQUsvUCxDQUFDLEdBQUcrUCxDQUFDO0VBQUEsRUFBQztFQUVuRixJQUFNbUIsU0FBUyxHQUFBalEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDVkosTUFBTSxHQUNOd0csV0FBVztJQUNkL0MsTUFBTSxFQUFFLENBQUNnTixjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUVBLGNBQWMsQ0FBQ0EsY0FBYyxDQUFDblEsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUFDLEVBQ3ZFO0VBRUQsUUFBUWtHLFdBQVcsQ0FBQ0MsU0FBUztJQUMzQixLQUFLcEUsZ0NBQWUsQ0FBQ3NFLE1BQU07SUFDM0IsS0FBS3RFLGdDQUFlLENBQUN1RSxJQUFJO01BQ3ZCLE9BQUF4RyxhQUFBLENBQUFBLGFBQUEsS0FDS2lRLFNBQVM7UUFDWjVNLE1BQU0sRUFBRSxJQUFBaU4saUJBQU0sRUFBQ0QsY0FBYyxDQUFDLENBQUN4QixJQUFJLENBQUM7TUFBQztJQUd6QyxLQUFLNU0sZ0NBQWUsQ0FBQ3dFLFNBQVM7TUFDNUIsSUFBTS9GLElBQUksR0FDUGQsTUFBTSxDQUFxQmMsSUFBSSxHQUFHMEYsV0FBVyxDQUFDMUYsSUFBSSxHQUM5Q2QsTUFBTSxDQUFxQmMsSUFBSSxHQUNoQzBGLFdBQVcsQ0FBQzFGLElBQUk7TUFFdEIsT0FBQVYsYUFBQSxDQUFBQSxhQUFBLEtBQ0tpUSxTQUFTO1FBQ1p2UCxJQUFJLEVBQUpBO01BQUk7SUFFUixLQUFLdUIsZ0NBQWUsQ0FBQ0UsSUFBSTtJQUN6QixLQUFLRixnQ0FBZSxDQUFDQyxPQUFPO0lBQzVCO01BQ0UsT0FBTytOLFNBQVM7RUFDcEI7QUFDRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPLElBQU1NLG9CQUFvQixHQUFBL1AsT0FBQSxDQUFBK1Asb0JBQUEsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUMvQkMsT0FBZ0IsRUFDaEJDLFFBQWdCLEVBQ2hCQyxVQUFlO0VBQUEsT0FBQTFRLGFBQUEsQ0FBQUEsYUFBQSxLQUVad1EsT0FBTztJQUNWN04sRUFBRSxFQUFFNk4sT0FBTyxDQUFDN04sRUFBRTtJQUNkK04sVUFBVSxFQUFBMVEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDTHdRLE9BQU8sQ0FBQ0UsVUFBVSxHQUNsQkEsVUFBVTtNQUNiRCxRQUFRLEVBQVJBO0lBQVE7RUFDVDtBQUFBLENBQ0Q7QUFFSyxJQUFNRSxvQkFBb0IsR0FBQW5RLE9BQUEsQ0FBQW1RLG9CQUFBLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSXpHLENBQWU7RUFBQSxPQUFhLElBQUF0TCxlQUFHLEVBQUNzTCxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFBQTs7QUFFbkc7QUFDQTtBQUNBO0FBQ08sU0FBUzBHLHFCQUFxQkEsQ0FBQ3RNLE1BQWUsRUFBRWtNLE9BQWdCLEVBQWlCO0VBQ3RGLElBQU05TyxNQUFNLEdBQUc0QyxNQUFNLENBQUNxRSxHQUFHLENBQUMsVUFBQS9ELENBQUM7SUFBQSxPQUFJQSxDQUFDLENBQUNnRSxNQUFNLENBQUNsSCxNQUFNO0VBQUEsRUFBQyxDQUFDOUIsTUFBTSxDQUFDc0wsNkJBQWtCLENBQUM7RUFDMUUsSUFBTXRKLE9BQU8sR0FBRzBDLE1BQU0sQ0FBQ3FFLEdBQUcsQ0FBQyxVQUFBL0QsQ0FBQztJQUFBLE9BQUlBLENBQUMsQ0FBQ2pDLEVBQUU7RUFBQSxFQUFDO0VBQ3JDLElBQU1oQixJQUFJLEdBQUcyQyxNQUFNLENBQUNxRSxHQUFHLENBQUMsVUFBQS9ELENBQUM7SUFBQSxPQUFJQSxDQUFDLENBQUNnRSxNQUFNLENBQUNpSSxLQUFLO0VBQUEsRUFBQztFQUM1QyxJQUFNalIsTUFBTSxHQUFHaUUsZ0JBQWdCLENBQUNuQyxNQUFNLENBQUM7RUFDdkMsT0FBQTFCLGFBQUEsQ0FBQUEsYUFBQSxLQUNLSixNQUFNO0lBQ1RnRCxXQUFXLEVBQUUsSUFBSTtJQUNqQk8sSUFBSSxFQUFFcEIsNkJBQVksQ0FBQ1MsT0FBTztJQUMxQmIsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLE9BQU8sRUFBUEEsT0FBTztJQUNQMEIsS0FBSyxFQUFFaU4sb0JBQW9CLENBQUNDLE9BQU8sRUFBRTVRLE1BQU0sQ0FBQytDLEVBQUUsRUFBRTtNQUFDbU8sU0FBUyxFQUFFO0lBQUksQ0FBQztFQUFDO0FBRXRFOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGdCQUFnQkEsQ0FBQ0MsS0FBZSxFQUFFdFAsTUFBYyxFQUFZO0VBQzFFLElBQU11UCxjQUFjLEdBQUdELEtBQUssQ0FBQ3BILE9BQU8sQ0FBQ2hLLE1BQU0sQ0FBQyxVQUFBc0ssQ0FBQztJQUFBLE9BQUlBLENBQUMsQ0FBQ3hJLE1BQU0sQ0FBQ3lDLFFBQVEsQ0FBQ3pDLE1BQU0sQ0FBQztFQUFBLEVBQUM7RUFDM0UsSUFBTTJDLE9BQU8sR0FBRzJNLEtBQUssQ0FBQ3pCLFFBQVEsQ0FBQzdOLE1BQU0sQ0FBQztFQUV0QyxJQUFJLENBQUMyQyxPQUFPLEVBQUU7SUFDWixPQUFPMk0sS0FBSztFQUNkO0VBRUEsSUFBTUUsa0JBQWtCLEdBQUc3TSxPQUFPLENBQUM4TSxjQUFjLENBQUNGLGNBQWMsRUFBRUQsS0FBSyxDQUFDMU0sTUFBTSxDQUFDO0VBRS9FLE9BQU8sSUFBQS9FLFVBQUcsRUFBQyxDQUFDLFVBQVUsRUFBRW1DLE1BQU0sQ0FBQyxFQUFFd1Asa0JBQWtCLEVBQUVGLEtBQUssQ0FBQztBQUM3RDs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSSw2QkFBNkJBLENBQzNDSixLQUFlLEVBTWY7RUFBQSxJQUxBSyxpQkFBaUMsR0FBQXBSLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUE2SixTQUFBLEdBQUE3SixTQUFBLE1BQUcsRUFBRTtFQU10QztFQUNBLElBQU1xUixTQUFnQixHQUFHLEVBQUU7RUFDM0IsSUFBTS9NLE1BQWEsR0FBRyxFQUFFO0VBQ3hCLElBQU9nTCxRQUFRLEdBQUl5QixLQUFLLENBQWpCekIsUUFBUTtFQUNmLElBQUlnQyxlQUFlLEdBQUdoQyxRQUFROztFQUU5QjtFQUNBOEIsaUJBQWlCLENBQUNsUixPQUFPLENBQUMsVUFBQVAsTUFBTSxFQUFJO0lBQ2xDO0lBQ0EsSUFBTTBQLFVBQVUsR0FBRyxJQUFBeEwsY0FBTyxFQUFDbEUsTUFBTSxDQUFDOEIsTUFBTSxDQUFDOztJQUV6QztJQUNBLElBQUk0TixVQUFVLENBQUNuSSxLQUFLLENBQUMsVUFBQWUsQ0FBQztNQUFBLE9BQUlxSCxRQUFRLENBQUNySCxDQUFDLENBQUM7SUFBQSxFQUFDLEVBQUU7TUFDdEM7TUFDQSxJQUFBc0osa0JBQUEsR0FBc0VsQyxVQUFVLENBQUNFLE1BQU0sQ0FDckYsVUFBQ0MsR0FBRyxFQUFFeEwsU0FBUyxFQUFLO1VBQ2xCLElBQU1JLE9BQU8sR0FBR2tOLGVBQWUsQ0FBQ3ROLFNBQVMsQ0FBQztVQUMxQyxJQUFNSyxNQUFNLEdBQUcwTSxLQUFLLENBQUMxTSxNQUFNLENBQUMxRSxNQUFNLENBQUMsVUFBQWdGLENBQUM7WUFBQSxPQUFJQSxDQUFDLENBQUNnRSxNQUFNLENBQUNsSCxNQUFNLEtBQUsyQyxPQUFPLENBQUMxQixFQUFFO1VBQUEsRUFBQztVQUN2RSxJQUFBOE8scUJBQUEsR0FBeUQ5TCxzQkFBc0IsQ0FDN0U4SixHQUFHLENBQUNpQyxpQkFBaUIsQ0FBQ3pOLFNBQVMsQ0FBQyxJQUFJSSxPQUFPLEVBQzNDekUsTUFBTSxFQUNOMEUsTUFDRixDQUFDO1lBSmNpQixhQUFhLEdBQUFrTSxxQkFBQSxDQUFyQjdSLE1BQU07WUFBMEI0RixjQUFjLEdBQUFpTSxxQkFBQSxDQUF2QnBOLE9BQU87VUFNckMsSUFBSWtCLGFBQWEsRUFBRTtZQUNqQixPQUFBdkYsYUFBQSxDQUFBQSxhQUFBLEtBQ0t5UCxHQUFHO2NBQ047Y0FDQTdQLE1BQU0sRUFBRTZQLEdBQUcsQ0FBQzdQLE1BQU0sR0FBQUksYUFBQSxDQUFBQSxhQUFBLEtBRVR5UCxHQUFHLENBQUM3UCxNQUFNLEdBQ1ZzUSxxQkFBcUIsQ0FBQ1QsR0FBRyxFQUFFbEssYUFBYSxDQUFDLElBRTlDQSxhQUFhO2NBRWpCb00sZUFBZSxLQUFBM0csTUFBQSxLQUFBb0YsbUJBQUEsYUFBTVgsR0FBRyxDQUFDa0MsZUFBZSxJQUFFMU4sU0FBUyxFQUFDO2NBRXBEeU4saUJBQWlCLEVBQUExUixhQUFBLENBQUFBLGFBQUEsS0FDWnlQLEdBQUcsQ0FBQ2lDLGlCQUFpQixXQUFBdFIsZ0JBQUEsaUJBQ3ZCNkQsU0FBUyxFQUFHdUIsY0FBYztZQUM1QjtVQUVMO1VBRUEsT0FBT2lLLEdBQUc7UUFDWixDQUFDLEVBQ0Q7VUFDRTdQLE1BQU0sRUFBRSxJQUFJO1VBQ1orUixlQUFlLEVBQUUsRUFBRTtVQUNuQkQsaUJBQWlCLEVBQUUsQ0FBQztRQUN0QixDQUNGLENBQUM7UUFyQ2NFLGVBQWUsR0FBQUosa0JBQUEsQ0FBdkI1UixNQUFNO1FBQW1CK1IsZUFBZSxHQUFBSCxrQkFBQSxDQUFmRyxlQUFlO1FBQUVELGlCQUFpQixHQUFBRixrQkFBQSxDQUFqQkUsaUJBQWlCO01BdUNsRSxJQUFJRSxlQUFlLElBQUksSUFBQUMsbUJBQU8sRUFBQ3ZDLFVBQVUsRUFBRXFDLGVBQWUsQ0FBQyxFQUFFO1FBQzNETCxTQUFTLENBQUN4UixJQUFJLENBQUM4UixlQUFlLENBQUM7UUFDL0JMLGVBQWUsR0FBQXZSLGFBQUEsQ0FBQUEsYUFBQSxLQUNWdVIsZUFBZSxHQUNmRyxpQkFBaUIsQ0FDckI7TUFDSDtJQUNGLENBQUMsTUFBTTtNQUNMbk4sTUFBTSxDQUFDekUsSUFBSSxDQUFDRixNQUFNLENBQUM7SUFDckI7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPO0lBQUMwUixTQUFTLEVBQVRBLFNBQVM7SUFBRS9NLE1BQU0sRUFBTkEsTUFBTTtJQUFFZ04sZUFBZSxFQUFmQTtFQUFlLENBQUM7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU08sZUFBZUEsQ0FBQ2xTLE1BQXVCLEVBQUU7RUFBQSxJQUFBbVMsZ0JBQUE7RUFDdkQsSUFBT2pGLElBQUksR0FBSWxOLE1BQU0sQ0FBZGtOLElBQUk7RUFDWCxJQUFNckosUUFBUSxJQUFBc08sZ0JBQUEsR0FBR25TLE1BQU0sQ0FBQzJELFFBQVEsY0FBQXdPLGdCQUFBLHVCQUFmQSxnQkFBQSxDQUFpQnRPLFFBQVE7RUFDMUMsSUFBSSxDQUFDQSxRQUFRLElBQUksQ0FBQ3FKLElBQUksSUFBSTlOLE1BQU0sQ0FBQ1MsSUFBSSxDQUFDcU4sSUFBSSxDQUFDLENBQUM1TSxNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQ3hELE9BQU8sSUFBSTtFQUNiO0VBQ0EsSUFBTThSLE1BQU0sR0FBR2hULE1BQU0sQ0FBQ2dULE1BQU0sQ0FBQ2xGLElBQUksQ0FBQztFQUNsQyxPQUFPa0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHQSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUN2TyxRQUFRLENBQUMsR0FBRyxJQUFJO0FBQy9DIiwiaWdub3JlTGlzdCI6W119
@@ -13,7 +13,7 @@ exports.mergeLayerGroupVisibility = mergeLayerGroupVisibility;
13
13
  exports.scaleMapStyleByResolution = scaleMapStyleByResolution;
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
  var _memoize = _interopRequireDefault(require("lodash/memoize"));
16
- var _clonedeep = _interopRequireDefault(require("lodash/clonedeep"));
16
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
17
17
  var _defaultSettings = require("../../constants/default-settings");
18
18
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
19
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // Copyright (c) 2022 Uber Technologies, Inc.
@@ -171,7 +171,7 @@ function scaleMapStyleByResolution(mapboxStyle, scale) {
171
171
  // @ts-ignore
172
172
  var labelLayerFilter = labelLayerGroup.filter;
173
173
  var zoomOffset = Math.log2(scale);
174
- var copyStyle = (0, _clonedeep["default"])(mapboxStyle);
174
+ var copyStyle = (0, _cloneDeep["default"])(mapboxStyle);
175
175
  (copyStyle.layers || []).forEach(function (d) {
176
176
  // edit minzoom and maxzoom
177
177
  if (d.maxzoom) {
@@ -210,4 +210,4 @@ function mergeLayerGroupVisibility(defaultLayerGroup, currentLayerGroup) {
210
210
  return _objectSpread(_objectSpread({}, accu), currentLayerGroup.hasOwnProperty(key) ? (0, _defineProperty2["default"])({}, key, currentLayerGroup[key]) : {});
211
211
  }, defaultLayerGroup);
212
212
  }
213
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWVtb2l6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2Nsb25lZGVlcCIsIl9kZWZhdWx0U2V0dGluZ3MiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1hcFVybFJnIiwiaHR0cFJnIiwiZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5IiwiX3JlZiIsIl9yZWYkbGF5ZXJHcm91cHMiLCJsYXllckdyb3VwcyIsInJlZHVjZSIsImFjY3UiLCJsYXllciIsInNsdWciLCJkZWZhdWx0VmlzaWJpbGl0eSIsInJlc29sdmVyIiwiX3JlZjIiLCJpZCIsIm1hcFN0eWxlIiwiX3JlZjIkdmlzaWJsZUxheWVyR3JvIiwidmlzaWJsZUxheWVyR3JvdXBzIiwiY29uY2F0IiwiZCIsInNvcnQiLCJqb2luIiwiZWRpdFRvcE1hcFN0eWxlIiwiZXhwb3J0cyIsIm1lbW9pemUiLCJfcmVmMyIsInZpc2libGVGaWx0ZXJzIiwibGciLCJtYXAiLCJmaWx0ZXJlZExheWVycyIsInN0eWxlIiwibGF5ZXJzIiwic29tZSIsIm1hdGNoIiwiZWRpdEJvdHRvbU1hcFN0eWxlIiwiX3JlZjQiLCJpbnZpc2libGVGaWx0ZXJzIiwiZXZlcnkiLCJpc1ZhbGlkU3R5bGVVcmwiLCJ1cmwiLCJCb29sZWFuIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsInN0eWxlVXJsIiwiYWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJzdGFydHNXaXRoIiwic3R5bGVJZCIsInJlcGxhY2UiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiZ2V0U3R5bGVJbWFnZUljb24iLCJfcmVmNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX3JlZjUkbWFwYm94QXBpVXJsIiwiX3JlZjUkbWFwU3RhdGUiLCJtYXBTdGF0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsIl9yZWY1JG1hcFciLCJtYXBXIiwiX3JlZjUkbWFwSCIsIm1hcEgiLCJzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uIiwibWFwYm94U3R5bGUiLCJzY2FsZSIsImxhYmVsTGF5ZXJHcm91cCIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwiZmluZCIsImxhYmVsTGF5ZXJGaWx0ZXIiLCJ6b29tT2Zmc2V0IiwiTWF0aCIsImxvZzIiLCJjb3B5U3R5bGUiLCJjbG9uZURlZXAiLCJtYXh6b29tIiwibWF4IiwibWluem9vbSIsImxheW91dCIsIkFycmF5IiwiaXNBcnJheSIsInN0b3BzIiwic3RvcCIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJkZWZhdWx0TGF5ZXJHcm91cCIsImN1cnJlbnRMYXllckdyb3VwIiwia2V5IiwiaGFzT3duUHJvcGVydHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC1nbC1zdHlsZS1lZGl0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoL21lbW9pemUnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVkZWVwJztcbmltcG9ydCB7REVGQVVMVF9MQVlFUl9HUk9VUFMsIERFRkFVTFRfTUFQQk9YX0FQSV9VUkx9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7QmFzZU1hcFN0eWxlLCBMYXllckdyb3VwLCBNYXBTdGF0ZX0gZnJvbSAncmVkdWNlcnMnO1xuXG5jb25zdCBtYXBVcmxSZyA9IC9ebWFwYm94OlxcL1xcL3N0eWxlc1xcL1stYS16MC05XXsyLDI1Nn1cXC9bLWEtejAtOV17MiwyNTZ9LztcbmNvbnN0IGh0dHBSZyA9IC9eKD89KGh0dHA6fGh0dHBzOikpLztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSh7bGF5ZXJHcm91cHMgPSBbXX06IHtsYXllckdyb3VwczogTGF5ZXJHcm91cFtdfSkge1xuICByZXR1cm4gbGF5ZXJHcm91cHMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllcikgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuc2x1Z106IGxheWVyLmRlZmF1bHRWaXNpYmlsaXR5XG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuY29uc3QgcmVzb2x2ZXIgPSAoe1xuICBpZCxcbiAgbWFwU3R5bGUsXG4gIHZpc2libGVMYXllckdyb3VwcyA9IHt9XG59OiB7XG4gIGlkPzogc3RyaW5nO1xuICBtYXBTdHlsZTogQmFzZU1hcFN0eWxlO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufSB8IGZhbHNlO1xufSkgPT5cbiAgYCR7aWR9OiR7T2JqZWN0LmtleXModmlzaWJsZUxheWVyR3JvdXBzKVxuICAgIC5maWx0ZXIoZCA9PiB2aXNpYmxlTGF5ZXJHcm91cHNbZF0pXG4gICAgLnNvcnQoKVxuICAgIC5qb2luKCctJyl9YDtcblxuLyoqXG4gKiBFZGl0IHByZXNldCBtYXAgc3R5bGUgdG8ga2VlcCBvbmx5IHZpc2libGUgbGF5ZXJzXG4gKlxuICogQHBhcmFtIG1hcFN0eWxlIC0gcHJlc2V0IG1hcCBzdHlsZVxuICogQHBhcmFtIHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIHRvcCBtYXBcbiAqIEByZXR1cm5zIHRvcCBtYXAgc3R5bGVcbiAqL1xuZXhwb3J0IGNvbnN0IGVkaXRUb3BNYXBTdHlsZSA9IG1lbW9pemUoXG4gICh7XG4gICAgbWFwU3R5bGUsXG4gICAgdmlzaWJsZUxheWVyR3JvdXBzXG4gIH06IHtcbiAgICBtYXBTdHlsZTogQmFzZU1hcFN0eWxlO1xuICAgIHZpc2libGVMYXllckdyb3Vwczoge1tpZDogc3RyaW5nXTogTGF5ZXJHcm91cCB8IGJvb2xlYW59IHwgZmFsc2U7XG4gIH0pID0+IHtcbiAgICBjb25zdCB2aXNpYmxlRmlsdGVycyA9IChtYXBTdHlsZS5sYXllckdyb3VwcyB8fCBbXSlcbiAgICAgIC5maWx0ZXIobGcgPT4gdmlzaWJsZUxheWVyR3JvdXBzW2xnLnNsdWddKVxuICAgICAgLm1hcChsZyA9PiBsZy5maWx0ZXIpO1xuXG4gICAgLy8gaWYgdG9wIG1hcFxuICAgIC8vIGtlZXAgb25seSB2aXNpYmxlIGxheWVyc1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBjb25zdCBmaWx0ZXJlZExheWVycyA9IG1hcFN0eWxlLnN0eWxlLmxheWVycy5maWx0ZXIobGF5ZXIgPT5cbiAgICAgIHZpc2libGVGaWx0ZXJzLnNvbWUobWF0Y2ggPT4gbWF0Y2gobGF5ZXIpKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWFwU3R5bGUuc3R5bGUsXG4gICAgICBsYXllcnM6IGZpbHRlcmVkTGF5ZXJzXG4gICAgfTtcbiAgfSxcbiAgcmVzb2x2ZXJcbik7XG5cbi8qKlxuICogRWRpdCBwcmVzZXQgbWFwIHN0eWxlIHRvIGZpbHRlciBvdXQgaW52aXNpYmxlIGxheWVyc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZSAtIHByZXNldCBtYXAgc3R5bGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB2aXNpYmxlTGF5ZXJHcm91cHMgLSB2aXNpYmxlIGxheWVycyBvZiBib3R0b20gbWFwXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBib3R0b20gbWFwIHN0eWxlXG4gKi9cbmV4cG9ydCBjb25zdCBlZGl0Qm90dG9tTWFwU3R5bGUgPSBtZW1vaXplKCh7aWQsIG1hcFN0eWxlLCB2aXNpYmxlTGF5ZXJHcm91cHN9KSA9PiB7XG4gIGNvbnN0IGludmlzaWJsZUZpbHRlcnMgPSAobWFwU3R5bGUubGF5ZXJHcm91cHMgfHwgW10pXG4gICAgLmZpbHRlcihsZyA9PiAhdmlzaWJsZUxheWVyR3JvdXBzW2xnLnNsdWddKVxuICAgIC5tYXAobGcgPT4gbGcuZmlsdGVyKTtcblxuICAvLyBpZiBib3R0b20gbWFwXG4gIC8vIGZpbHRlciBvdXQgaW52aXNpYmxlIGxheWVyc1xuICBjb25zdCBmaWx0ZXJlZExheWVycyA9IG1hcFN0eWxlLnN0eWxlLmxheWVycy5maWx0ZXIobGF5ZXIgPT5cbiAgICBpbnZpc2libGVGaWx0ZXJzLmV2ZXJ5KG1hdGNoID0+ICFtYXRjaChsYXllcikpXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tYXBTdHlsZS5zdHlsZSxcbiAgICBsYXllcnM6IGZpbHRlcmVkTGF5ZXJzXG4gIH07XG59LCByZXNvbHZlcik7XG5cbi8vIHZhbGlkIHN0eWxlIHVybFxuLy8gbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnlsMDNrcDF0dWwyc21mNXYydGJkZDRcbi8vIGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzIGFuZCBkYXNoZXMgb25seS5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU3R5bGVVcmwodXJsKSB7XG4gIHJldHVybiB0eXBlb2YgdXJsID09PSAnc3RyaW5nJyAmJiBCb29sZWFuKHVybC5tYXRjaChtYXBVcmxSZykgfHwgdXJsLm1hdGNoKGh0dHBSZykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3R5bGVEb3dubG9hZFVybChzdHlsZVVybCwgYWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCkge1xuICBpZiAoc3R5bGVVcmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgcmV0dXJuIHN0eWxlVXJsO1xuICB9XG5cbiAgLy8gbWFwYm94Oi8vc3R5bGVzL2pja3IvY2poY2wwbHh2MTNkaTJycGZveXRkYmR5alxuICBpZiAoc3R5bGVVcmwuc3RhcnRzV2l0aCgnbWFwYm94Oi8vc3R5bGVzJykpIHtcbiAgICBjb25zdCBzdHlsZUlkID0gc3R5bGVVcmwucmVwbGFjZSgnbWFwYm94Oi8vc3R5bGVzLycsICcnKTtcblxuICAgIC8vIGh0dHBzOi8vYXBpLm1hcGJveC5jb20vc3R5bGVzL3YxL2hlc2hhbjAxMzEvY2pnMWJmdW1vMWN3bTJybHJqeGtpbmZndz9wbHVnaW5OYW1lPUtlcGxlcmdsJmFjY2Vzc190b2tlbj08dG9rZW4+XG4gICAgcmV0dXJuIGAke21hcGJveEFwaVVybCB8fFxuICAgICAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTH0vc3R5bGVzL3YxLyR7c3R5bGVJZH0/cGx1Z2luTmFtZT1LZXBsZXJnbCZhY2Nlc3NfdG9rZW49JHthY2Nlc3NUb2tlbn1gO1xuICB9XG5cbiAgLy8gc3R5bGUgdXJsIG5vdCByZWNvZ25pemVkXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIHN0YXRpYyBtYXAgaW1hZ2UgZnJvbSBzdHlsZSBVcmwgdG8gYmUgdXNlZCBhcyBpY29uXG4gKiBAcGFyYW0gcGFyYW1cbiAqIEBwYXJhbSBwYXJhbS5zdHlsZVVybFxuICogQHBhcmFtIHBhcmFtLm1hcGJveEFwaUFjY2Vzc1Rva2VuXG4gKiBAcGFyYW0gcGFyYW0ubWFwYm94QXBpVXJsXG4gKiBAcGFyYW0gcGFyYW0ubWFwU3RhdGVcbiAqIEBwYXJhbSBwYXJhbS5tYXBXXG4gKiBAcGFyYW0gcGFyYW0ubWFwSFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3R5bGVJbWFnZUljb24oe1xuICBzdHlsZVVybCxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybCA9IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIG1hcFN0YXRlID0ge1xuICAgIGxvbmdpdHVkZTogLTEyMi4zMzkxLFxuICAgIGxhdGl0dWRlOiAzNy43OTIyLFxuICAgIHpvb206IDlcbiAgfSxcbiAgbWFwVyA9IDQwMCxcbiAgbWFwSCA9IDMwMFxufToge1xuICBzdHlsZVVybDogc3RyaW5nO1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIG1hcFN0YXRlPzogUGFydGlhbDxNYXBTdGF0ZT47XG4gIG1hcFc/OiBudW1iZXI7XG4gIG1hcEg/OiBudW1iZXI7XG59KSB7XG4gIGNvbnN0IHN0eWxlSWQgPSBzdHlsZVVybC5yZXBsYWNlKCdtYXBib3g6Ly9zdHlsZXMvJywgJycpO1xuXG4gIHJldHVybiAoXG4gICAgYCR7bWFwYm94QXBpVXJsfS9zdHlsZXMvdjEvJHtzdHlsZUlkfS9zdGF0aWMvYCArXG4gICAgYCR7bWFwU3RhdGUubG9uZ2l0dWRlfSwke21hcFN0YXRlLmxhdGl0dWRlfSwke21hcFN0YXRlLnpvb219LDAsMC9gICtcbiAgICBgJHttYXBXfXgke21hcEh9YCArXG4gICAgYD9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn0mbG9nbz1mYWxzZSZhdHRyaWJ1dGlvbj1mYWxzZWBcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24obWFwYm94U3R5bGUsIHNjYWxlKSB7XG4gIGlmIChzY2FsZSAhPT0gMSAmJiBtYXBib3hTdHlsZSkge1xuICAgIGNvbnN0IGxhYmVsTGF5ZXJHcm91cCA9IERFRkFVTFRfTEFZRVJfR1JPVVBTLmZpbmQobGcgPT4gbGcuc2x1ZyA9PT0gJ2xhYmVsJyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHtmaWx0ZXI6IGxhYmVsTGF5ZXJGaWx0ZXJ9ID0gbGFiZWxMYXllckdyb3VwO1xuICAgIGNvbnN0IHpvb21PZmZzZXQgPSBNYXRoLmxvZzIoc2NhbGUpO1xuXG4gICAgY29uc3QgY29weVN0eWxlID0gY2xvbmVEZWVwKG1hcGJveFN0eWxlKTtcbiAgICAoY29weVN0eWxlLmxheWVycyB8fCBbXSkuZm9yRWFjaChkID0+IHtcbiAgICAgIC8vIGVkaXQgbWluem9vbSBhbmQgbWF4em9vbVxuICAgICAgaWYgKGQubWF4em9vbSkge1xuICAgICAgICBkLm1heHpvb20gPSBNYXRoLm1heChkLm1heHpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGQubWluem9vbSkge1xuICAgICAgICBkLm1pbnpvb20gPSBNYXRoLm1heChkLm1pbnpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgLy8gZWRpdCB0ZXh0IHNpemVcbiAgICAgIGlmIChsYWJlbExheWVyRmlsdGVyKGQpKSB7XG4gICAgICAgIGlmIChkLmxheW91dCAmJiBkLmxheW91dFsndGV4dC1zaXplJ10gJiYgQXJyYXkuaXNBcnJheShkLmxheW91dFsndGV4dC1zaXplJ10uc3RvcHMpKSB7XG4gICAgICAgICAgZC5sYXlvdXRbJ3RleHQtc2l6ZSddLnN0b3BzLmZvckVhY2goc3RvcCA9PiB7XG4gICAgICAgICAgICAvLyB6b29tXG4gICAgICAgICAgICBzdG9wWzBdID0gTWF0aC5tYXgoc3RvcFswXSArIHpvb21PZmZzZXQsIDEpO1xuICAgICAgICAgICAgLy8gc2l6ZVxuICAgICAgICAgICAgc3RvcFsxXSAqPSBzY2FsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvcHlTdHlsZTtcbiAgfVxuXG4gIHJldHVybiBtYXBib3hTdHlsZTtcbn1cblxuLyoqXG4gKiBXaGVuIHN3aXRjaCB0byBhIG5ldyBzdHlsZSwgdHJ5IHRvIGtlZXAgY3VycmVudCBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBieSBtZXJnaW5nIGRlZmF1bHQgYW5kIGN1cnJlbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0TGF5ZXJHcm91cFxuICogQHBhcmFtIHtPYmplY3R9IGN1cnJlbnRMYXllckdyb3VwXG4gKiBAcmV0dXJuIHtPYmplY3R9IG1lcmdlZExheWVyR3JvdXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5KGRlZmF1bHRMYXllckdyb3VwLCBjdXJyZW50TGF5ZXJHcm91cCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVmYXVsdExheWVyR3JvdXApLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLihjdXJyZW50TGF5ZXJHcm91cC5oYXNPd25Qcm9wZXJ0eShrZXkpID8ge1trZXldOiBjdXJyZW50TGF5ZXJHcm91cFtrZXldfSA6IHt9KVxuICAgIH0pLFxuICAgIGRlZmF1bHRMYXllckdyb3VwXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFBd0YsU0FBQUcsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFnQixjQUFBLENBQUFuQixDQUFBLEVBQUFDLENBQUEsRUFBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBTixDQUFBLEVBQUFELENBQUEsaUJBQUFELENBQUEsSUF0QnhGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBT0EsSUFBTW9CLFFBQVEsR0FBRyx3REFBd0Q7QUFDekUsSUFBTUMsTUFBTSxHQUFHLHFCQUFxQjtBQUU3QixTQUFTQyw4QkFBOEJBLENBQUFDLElBQUEsRUFBa0Q7RUFBQSxJQUFBQyxnQkFBQSxHQUFBRCxJQUFBLENBQWhERSxXQUFXO0lBQVhBLFdBQVcsR0FBQUQsZ0JBQUEsY0FBRyxFQUFFLEdBQUFBLGdCQUFBO0VBQzlELE9BQU9DLFdBQVcsQ0FBQ0MsTUFBTSxDQUN2QixVQUFDQyxJQUFJLEVBQUVDLEtBQUs7SUFBQSxPQUFBaEIsYUFBQSxDQUFBQSxhQUFBLEtBQ1BlLElBQUksV0FBQVgsZ0JBQUEsaUJBQ05ZLEtBQUssQ0FBQ0MsSUFBSSxFQUFHRCxLQUFLLENBQUNFLGlCQUFpQjtFQUFBLENBQ3JDLEVBQ0YsQ0FBQyxDQUNILENBQUM7QUFDSDtBQUVBLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFBQyxLQUFBO0VBQUEsSUFDWkMsRUFBRSxHQUFBRCxLQUFBLENBQUZDLEVBQUU7SUFDRkMsUUFBUSxHQUFBRixLQUFBLENBQVJFLFFBQVE7SUFBQUMscUJBQUEsR0FBQUgsS0FBQSxDQUNSSSxrQkFBa0I7SUFBbEJBLGtCQUFrQixHQUFBRCxxQkFBQSxjQUFHLENBQUMsQ0FBQyxHQUFBQSxxQkFBQTtFQUFBLFVBQUFFLE1BQUEsQ0FNcEJKLEVBQUUsT0FBQUksTUFBQSxDQUFJbEMsTUFBTSxDQUFDQyxJQUFJLENBQUNnQyxrQkFBa0IsQ0FBQyxDQUNyQzdCLE1BQU0sQ0FBQyxVQUFBK0IsQ0FBQztJQUFBLE9BQUlGLGtCQUFrQixDQUFDRSxDQUFDLENBQUM7RUFBQSxFQUFDLENBQ2xDQyxJQUFJLENBQUMsQ0FBQyxDQUNOQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQUEsQ0FBRTs7QUFFaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxlQUFlLEdBQUFDLE9BQUEsQ0FBQUQsZUFBQSxHQUFHLElBQUFFLG1CQUFPLEVBQ3BDLFVBQUFDLEtBQUEsRUFNTTtFQUFBLElBTEpWLFFBQVEsR0FBQVUsS0FBQSxDQUFSVixRQUFRO0lBQ1JFLGtCQUFrQixHQUFBUSxLQUFBLENBQWxCUixrQkFBa0I7RUFLbEIsSUFBTVMsY0FBYyxHQUFHLENBQUNYLFFBQVEsQ0FBQ1QsV0FBVyxJQUFJLEVBQUUsRUFDL0NsQixNQUFNLENBQUMsVUFBQXVDLEVBQUU7SUFBQSxPQUFJVixrQkFBa0IsQ0FBQ1UsRUFBRSxDQUFDakIsSUFBSSxDQUFDO0VBQUEsRUFBQyxDQUN6Q2tCLEdBQUcsQ0FBQyxVQUFBRCxFQUFFO0lBQUEsT0FBSUEsRUFBRSxDQUFDdkMsTUFBTTtFQUFBLEVBQUM7O0VBRXZCO0VBQ0E7RUFDQTtFQUNBLElBQU15QyxjQUFjLEdBQUdkLFFBQVEsQ0FBQ2UsS0FBSyxDQUFDQyxNQUFNLENBQUMzQyxNQUFNLENBQUMsVUFBQXFCLEtBQUs7SUFBQSxPQUN2RGlCLGNBQWMsQ0FBQ00sSUFBSSxDQUFDLFVBQUFDLEtBQUs7TUFBQSxPQUFJQSxLQUFLLENBQUN4QixLQUFLLENBQUM7SUFBQSxFQUFDO0VBQUEsQ0FDNUMsQ0FBQztFQUVELE9BQUFoQixhQUFBLENBQUFBLGFBQUEsS0FDS3NCLFFBQVEsQ0FBQ2UsS0FBSztJQUNqQkMsTUFBTSxFQUFFRjtFQUFjO0FBRTFCLENBQUMsRUFDRGpCLFFBQ0YsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1zQixrQkFBa0IsR0FBQVgsT0FBQSxDQUFBVyxrQkFBQSxHQUFHLElBQUFWLG1CQUFPLEVBQUMsVUFBQVcsS0FBQSxFQUF3QztFQUFBLElBQXRDckIsRUFBRSxHQUFBcUIsS0FBQSxDQUFGckIsRUFBRTtJQUFFQyxRQUFRLEdBQUFvQixLQUFBLENBQVJwQixRQUFRO0lBQUVFLGtCQUFrQixHQUFBa0IsS0FBQSxDQUFsQmxCLGtCQUFrQjtFQUMxRSxJQUFNbUIsZ0JBQWdCLEdBQUcsQ0FBQ3JCLFFBQVEsQ0FBQ1QsV0FBVyxJQUFJLEVBQUUsRUFDakRsQixNQUFNLENBQUMsVUFBQXVDLEVBQUU7SUFBQSxPQUFJLENBQUNWLGtCQUFrQixDQUFDVSxFQUFFLENBQUNqQixJQUFJLENBQUM7RUFBQSxFQUFDLENBQzFDa0IsR0FBRyxDQUFDLFVBQUFELEVBQUU7SUFBQSxPQUFJQSxFQUFFLENBQUN2QyxNQUFNO0VBQUEsRUFBQzs7RUFFdkI7RUFDQTtFQUNBLElBQU15QyxjQUFjLEdBQUdkLFFBQVEsQ0FBQ2UsS0FBSyxDQUFDQyxNQUFNLENBQUMzQyxNQUFNLENBQUMsVUFBQXFCLEtBQUs7SUFBQSxPQUN2RDJCLGdCQUFnQixDQUFDQyxLQUFLLENBQUMsVUFBQUosS0FBSztNQUFBLE9BQUksQ0FBQ0EsS0FBSyxDQUFDeEIsS0FBSyxDQUFDO0lBQUEsRUFBQztFQUFBLENBQ2hELENBQUM7RUFFRCxPQUFBaEIsYUFBQSxDQUFBQSxhQUFBLEtBQ0tzQixRQUFRLENBQUNlLEtBQUs7SUFDakJDLE1BQU0sRUFBRUY7RUFBYztBQUUxQixDQUFDLEVBQUVqQixRQUFRLENBQUM7O0FBRVo7QUFDQTtBQUNBO0FBQ08sU0FBUzBCLGVBQWVBLENBQUNDLEdBQUcsRUFBRTtFQUNuQyxPQUFPLE9BQU9BLEdBQUcsS0FBSyxRQUFRLElBQUlDLE9BQU8sQ0FBQ0QsR0FBRyxDQUFDTixLQUFLLENBQUNoQyxRQUFRLENBQUMsSUFBSXNDLEdBQUcsQ0FBQ04sS0FBSyxDQUFDL0IsTUFBTSxDQUFDLENBQUM7QUFDckY7QUFFTyxTQUFTdUMsbUJBQW1CQSxDQUFDQyxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsWUFBWSxFQUFFO0VBQ3ZFLElBQUlGLFFBQVEsQ0FBQ0csVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQy9CLE9BQU9ILFFBQVE7RUFDakI7O0VBRUE7RUFDQSxJQUFJQSxRQUFRLENBQUNHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO0lBQzFDLElBQU1DLE9BQU8sR0FBR0osUUFBUSxDQUFDSyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDOztJQUV4RDtJQUNBLFVBQUE3QixNQUFBLENBQVUwQixZQUFZLElBQ3BCSSx1Q0FBc0IsaUJBQUE5QixNQUFBLENBQWM0QixPQUFPLHdDQUFBNUIsTUFBQSxDQUFxQ3lCLFdBQVc7RUFDL0Y7O0VBRUE7RUFDQSxPQUFPLElBQUk7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNNLGlCQUFpQkEsQ0FBQUMsS0FBQSxFQWtCOUI7RUFBQSxJQWpCRFIsUUFBUSxHQUFBUSxLQUFBLENBQVJSLFFBQVE7SUFDUlMsb0JBQW9CLEdBQUFELEtBQUEsQ0FBcEJDLG9CQUFvQjtJQUFBQyxrQkFBQSxHQUFBRixLQUFBLENBQ3BCTixZQUFZO0lBQVpBLFlBQVksR0FBQVEsa0JBQUEsY0FBR0osdUNBQXNCLEdBQUFJLGtCQUFBO0lBQUFDLGNBQUEsR0FBQUgsS0FBQSxDQUNyQ0ksUUFBUTtJQUFSQSxRQUFRLEdBQUFELGNBQUEsY0FBRztNQUNURSxTQUFTLEVBQUUsQ0FBQyxRQUFRO01BQ3BCQyxRQUFRLEVBQUUsT0FBTztNQUNqQkMsSUFBSSxFQUFFO0lBQ1IsQ0FBQyxHQUFBSixjQUFBO0lBQUFLLFVBQUEsR0FBQVIsS0FBQSxDQUNEUyxJQUFJO0lBQUpBLElBQUksR0FBQUQsVUFBQSxjQUFHLEdBQUcsR0FBQUEsVUFBQTtJQUFBRSxVQUFBLEdBQUFWLEtBQUEsQ0FDVlcsSUFBSTtJQUFKQSxJQUFJLEdBQUFELFVBQUEsY0FBRyxHQUFHLEdBQUFBLFVBQUE7RUFTVixJQUFNZCxPQUFPLEdBQUdKLFFBQVEsQ0FBQ0ssT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztFQUV4RCxPQUNFLEdBQUE3QixNQUFBLENBQUcwQixZQUFZLGlCQUFBMUIsTUFBQSxDQUFjNEIsT0FBTyxtQkFBQTVCLE1BQUEsQ0FDakNvQyxRQUFRLENBQUNDLFNBQVMsT0FBQXJDLE1BQUEsQ0FBSW9DLFFBQVEsQ0FBQ0UsUUFBUSxPQUFBdEMsTUFBQSxDQUFJb0MsUUFBUSxDQUFDRyxJQUFJLFVBQU8sTUFBQXZDLE1BQUEsQ0FDL0R5QyxJQUFJLE9BQUF6QyxNQUFBLENBQUkyQyxJQUFJLENBQUUsb0JBQUEzQyxNQUFBLENBQ0FpQyxvQkFBb0Isa0NBQStCO0FBRXhFO0FBRU8sU0FBU1cseUJBQXlCQSxDQUFDQyxXQUFXLEVBQUVDLEtBQUssRUFBRTtFQUM1RCxJQUFJQSxLQUFLLEtBQUssQ0FBQyxJQUFJRCxXQUFXLEVBQUU7SUFDOUIsSUFBTUUsZUFBZSxHQUFHQyxxQ0FBb0IsQ0FBQ0MsSUFBSSxDQUFDLFVBQUF4QyxFQUFFO01BQUEsT0FBSUEsRUFBRSxDQUFDakIsSUFBSSxLQUFLLE9BQU87SUFBQSxFQUFDO0lBQzVFO0lBQ0EsSUFBZTBELGdCQUFnQixHQUFJSCxlQUFlLENBQTNDN0UsTUFBTTtJQUNiLElBQU1pRixVQUFVLEdBQUdDLElBQUksQ0FBQ0MsSUFBSSxDQUFDUCxLQUFLLENBQUM7SUFFbkMsSUFBTVEsU0FBUyxHQUFHLElBQUFDLHFCQUFTLEVBQUNWLFdBQVcsQ0FBQztJQUN4QyxDQUFDUyxTQUFTLENBQUN6QyxNQUFNLElBQUksRUFBRSxFQUFFbkMsT0FBTyxDQUFDLFVBQUF1QixDQUFDLEVBQUk7TUFDcEM7TUFDQSxJQUFJQSxDQUFDLENBQUN1RCxPQUFPLEVBQUU7UUFDYnZELENBQUMsQ0FBQ3VELE9BQU8sR0FBR0osSUFBSSxDQUFDSyxHQUFHLENBQUN4RCxDQUFDLENBQUN1RCxPQUFPLEdBQUdMLFVBQVUsRUFBRSxDQUFDLENBQUM7TUFDakQ7TUFFQSxJQUFJbEQsQ0FBQyxDQUFDeUQsT0FBTyxFQUFFO1FBQ2J6RCxDQUFDLENBQUN5RCxPQUFPLEdBQUdOLElBQUksQ0FBQ0ssR0FBRyxDQUFDeEQsQ0FBQyxDQUFDeUQsT0FBTyxHQUFHUCxVQUFVLEVBQUUsQ0FBQyxDQUFDO01BQ2pEOztNQUVBO01BQ0EsSUFBSUQsZ0JBQWdCLENBQUNqRCxDQUFDLENBQUMsRUFBRTtRQUN2QixJQUFJQSxDQUFDLENBQUMwRCxNQUFNLElBQUkxRCxDQUFDLENBQUMwRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDNUQsQ0FBQyxDQUFDMEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDRyxLQUFLLENBQUMsRUFBRTtVQUNuRjdELENBQUMsQ0FBQzBELE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQ0csS0FBSyxDQUFDcEYsT0FBTyxDQUFDLFVBQUFxRixJQUFJLEVBQUk7WUFDMUM7WUFDQUEsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHWCxJQUFJLENBQUNLLEdBQUcsQ0FBQ00sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHWixVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzNDO1lBQ0FZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSWpCLEtBQUs7VUFDbEIsQ0FBQyxDQUFDO1FBQ0o7TUFDRjtJQUNGLENBQUMsQ0FBQztJQUVGLE9BQU9RLFNBQVM7RUFDbEI7RUFFQSxPQUFPVCxXQUFXO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU21CLHlCQUF5QkEsQ0FBQ0MsaUJBQWlCLEVBQUVDLGlCQUFpQixFQUFFO0VBQzlFLE9BQU9wRyxNQUFNLENBQUNDLElBQUksQ0FBQ2tHLGlCQUFpQixDQUFDLENBQUM1RSxNQUFNLENBQzFDLFVBQUNDLElBQUksRUFBRTZFLEdBQUc7SUFBQSxPQUFBNUYsYUFBQSxDQUFBQSxhQUFBLEtBQ0xlLElBQUksR0FDSDRFLGlCQUFpQixDQUFDRSxjQUFjLENBQUNELEdBQUcsQ0FBQyxPQUFBeEYsZ0JBQUEsaUJBQUt3RixHQUFHLEVBQUdELGlCQUFpQixDQUFDQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7RUFBQSxDQUNoRixFQUNGRixpQkFDRixDQUFDO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=
213
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWVtb2l6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2Nsb25lRGVlcCIsIl9kZWZhdWx0U2V0dGluZ3MiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1hcFVybFJnIiwiaHR0cFJnIiwiZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5IiwiX3JlZiIsIl9yZWYkbGF5ZXJHcm91cHMiLCJsYXllckdyb3VwcyIsInJlZHVjZSIsImFjY3UiLCJsYXllciIsInNsdWciLCJkZWZhdWx0VmlzaWJpbGl0eSIsInJlc29sdmVyIiwiX3JlZjIiLCJpZCIsIm1hcFN0eWxlIiwiX3JlZjIkdmlzaWJsZUxheWVyR3JvIiwidmlzaWJsZUxheWVyR3JvdXBzIiwiY29uY2F0IiwiZCIsInNvcnQiLCJqb2luIiwiZWRpdFRvcE1hcFN0eWxlIiwiZXhwb3J0cyIsIm1lbW9pemUiLCJfcmVmMyIsInZpc2libGVGaWx0ZXJzIiwibGciLCJtYXAiLCJmaWx0ZXJlZExheWVycyIsInN0eWxlIiwibGF5ZXJzIiwic29tZSIsIm1hdGNoIiwiZWRpdEJvdHRvbU1hcFN0eWxlIiwiX3JlZjQiLCJpbnZpc2libGVGaWx0ZXJzIiwiZXZlcnkiLCJpc1ZhbGlkU3R5bGVVcmwiLCJ1cmwiLCJCb29sZWFuIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsInN0eWxlVXJsIiwiYWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJzdGFydHNXaXRoIiwic3R5bGVJZCIsInJlcGxhY2UiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiZ2V0U3R5bGVJbWFnZUljb24iLCJfcmVmNSIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwiX3JlZjUkbWFwYm94QXBpVXJsIiwiX3JlZjUkbWFwU3RhdGUiLCJtYXBTdGF0ZSIsImxvbmdpdHVkZSIsImxhdGl0dWRlIiwiem9vbSIsIl9yZWY1JG1hcFciLCJtYXBXIiwiX3JlZjUkbWFwSCIsIm1hcEgiLCJzY2FsZU1hcFN0eWxlQnlSZXNvbHV0aW9uIiwibWFwYm94U3R5bGUiLCJzY2FsZSIsImxhYmVsTGF5ZXJHcm91cCIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwiZmluZCIsImxhYmVsTGF5ZXJGaWx0ZXIiLCJ6b29tT2Zmc2V0IiwiTWF0aCIsImxvZzIiLCJjb3B5U3R5bGUiLCJjbG9uZURlZXAiLCJtYXh6b29tIiwibWF4IiwibWluem9vbSIsImxheW91dCIsIkFycmF5IiwiaXNBcnJheSIsInN0b3BzIiwic3RvcCIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJkZWZhdWx0TGF5ZXJHcm91cCIsImN1cnJlbnRMYXllckdyb3VwIiwia2V5IiwiaGFzT3duUHJvcGVydHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC1nbC1zdHlsZS1lZGl0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoL21lbW9pemUnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCB7REVGQVVMVF9MQVlFUl9HUk9VUFMsIERFRkFVTFRfTUFQQk9YX0FQSV9VUkx9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7QmFzZU1hcFN0eWxlLCBMYXllckdyb3VwLCBNYXBTdGF0ZX0gZnJvbSAncmVkdWNlcnMnO1xuXG5jb25zdCBtYXBVcmxSZyA9IC9ebWFwYm94OlxcL1xcL3N0eWxlc1xcL1stYS16MC05XXsyLDI1Nn1cXC9bLWEtejAtOV17MiwyNTZ9LztcbmNvbnN0IGh0dHBSZyA9IC9eKD89KGh0dHA6fGh0dHBzOikpLztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSh7bGF5ZXJHcm91cHMgPSBbXX06IHtsYXllckdyb3VwczogTGF5ZXJHcm91cFtdfSkge1xuICByZXR1cm4gbGF5ZXJHcm91cHMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllcikgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuc2x1Z106IGxheWVyLmRlZmF1bHRWaXNpYmlsaXR5XG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuY29uc3QgcmVzb2x2ZXIgPSAoe1xuICBpZCxcbiAgbWFwU3R5bGUsXG4gIHZpc2libGVMYXllckdyb3VwcyA9IHt9XG59OiB7XG4gIGlkPzogc3RyaW5nO1xuICBtYXBTdHlsZTogQmFzZU1hcFN0eWxlO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufSB8IGZhbHNlO1xufSkgPT5cbiAgYCR7aWR9OiR7T2JqZWN0LmtleXModmlzaWJsZUxheWVyR3JvdXBzKVxuICAgIC5maWx0ZXIoZCA9PiB2aXNpYmxlTGF5ZXJHcm91cHNbZF0pXG4gICAgLnNvcnQoKVxuICAgIC5qb2luKCctJyl9YDtcblxuLyoqXG4gKiBFZGl0IHByZXNldCBtYXAgc3R5bGUgdG8ga2VlcCBvbmx5IHZpc2libGUgbGF5ZXJzXG4gKlxuICogQHBhcmFtIG1hcFN0eWxlIC0gcHJlc2V0IG1hcCBzdHlsZVxuICogQHBhcmFtIHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIHRvcCBtYXBcbiAqIEByZXR1cm5zIHRvcCBtYXAgc3R5bGVcbiAqL1xuZXhwb3J0IGNvbnN0IGVkaXRUb3BNYXBTdHlsZSA9IG1lbW9pemUoXG4gICh7XG4gICAgbWFwU3R5bGUsXG4gICAgdmlzaWJsZUxheWVyR3JvdXBzXG4gIH06IHtcbiAgICBtYXBTdHlsZTogQmFzZU1hcFN0eWxlO1xuICAgIHZpc2libGVMYXllckdyb3Vwczoge1tpZDogc3RyaW5nXTogTGF5ZXJHcm91cCB8IGJvb2xlYW59IHwgZmFsc2U7XG4gIH0pID0+IHtcbiAgICBjb25zdCB2aXNpYmxlRmlsdGVycyA9IChtYXBTdHlsZS5sYXllckdyb3VwcyB8fCBbXSlcbiAgICAgIC5maWx0ZXIobGcgPT4gdmlzaWJsZUxheWVyR3JvdXBzW2xnLnNsdWddKVxuICAgICAgLm1hcChsZyA9PiBsZy5maWx0ZXIpO1xuXG4gICAgLy8gaWYgdG9wIG1hcFxuICAgIC8vIGtlZXAgb25seSB2aXNpYmxlIGxheWVyc1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBjb25zdCBmaWx0ZXJlZExheWVycyA9IG1hcFN0eWxlLnN0eWxlLmxheWVycy5maWx0ZXIobGF5ZXIgPT5cbiAgICAgIHZpc2libGVGaWx0ZXJzLnNvbWUobWF0Y2ggPT4gbWF0Y2gobGF5ZXIpKVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWFwU3R5bGUuc3R5bGUsXG4gICAgICBsYXllcnM6IGZpbHRlcmVkTGF5ZXJzXG4gICAgfTtcbiAgfSxcbiAgcmVzb2x2ZXJcbik7XG5cbi8qKlxuICogRWRpdCBwcmVzZXQgbWFwIHN0eWxlIHRvIGZpbHRlciBvdXQgaW52aXNpYmxlIGxheWVyc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZSAtIHByZXNldCBtYXAgc3R5bGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB2aXNpYmxlTGF5ZXJHcm91cHMgLSB2aXNpYmxlIGxheWVycyBvZiBib3R0b20gbWFwXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBib3R0b20gbWFwIHN0eWxlXG4gKi9cbmV4cG9ydCBjb25zdCBlZGl0Qm90dG9tTWFwU3R5bGUgPSBtZW1vaXplKCh7aWQsIG1hcFN0eWxlLCB2aXNpYmxlTGF5ZXJHcm91cHN9KSA9PiB7XG4gIGNvbnN0IGludmlzaWJsZUZpbHRlcnMgPSAobWFwU3R5bGUubGF5ZXJHcm91cHMgfHwgW10pXG4gICAgLmZpbHRlcihsZyA9PiAhdmlzaWJsZUxheWVyR3JvdXBzW2xnLnNsdWddKVxuICAgIC5tYXAobGcgPT4gbGcuZmlsdGVyKTtcblxuICAvLyBpZiBib3R0b20gbWFwXG4gIC8vIGZpbHRlciBvdXQgaW52aXNpYmxlIGxheWVyc1xuICBjb25zdCBmaWx0ZXJlZExheWVycyA9IG1hcFN0eWxlLnN0eWxlLmxheWVycy5maWx0ZXIobGF5ZXIgPT5cbiAgICBpbnZpc2libGVGaWx0ZXJzLmV2ZXJ5KG1hdGNoID0+ICFtYXRjaChsYXllcikpXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tYXBTdHlsZS5zdHlsZSxcbiAgICBsYXllcnM6IGZpbHRlcmVkTGF5ZXJzXG4gIH07XG59LCByZXNvbHZlcik7XG5cbi8vIHZhbGlkIHN0eWxlIHVybFxuLy8gbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnlsMDNrcDF0dWwyc21mNXYydGJkZDRcbi8vIGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzIGFuZCBkYXNoZXMgb25seS5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU3R5bGVVcmwodXJsKSB7XG4gIHJldHVybiB0eXBlb2YgdXJsID09PSAnc3RyaW5nJyAmJiBCb29sZWFuKHVybC5tYXRjaChtYXBVcmxSZykgfHwgdXJsLm1hdGNoKGh0dHBSZykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3R5bGVEb3dubG9hZFVybChzdHlsZVVybCwgYWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCkge1xuICBpZiAoc3R5bGVVcmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgcmV0dXJuIHN0eWxlVXJsO1xuICB9XG5cbiAgLy8gbWFwYm94Oi8vc3R5bGVzL2pja3IvY2poY2wwbHh2MTNkaTJycGZveXRkYmR5alxuICBpZiAoc3R5bGVVcmwuc3RhcnRzV2l0aCgnbWFwYm94Oi8vc3R5bGVzJykpIHtcbiAgICBjb25zdCBzdHlsZUlkID0gc3R5bGVVcmwucmVwbGFjZSgnbWFwYm94Oi8vc3R5bGVzLycsICcnKTtcblxuICAgIC8vIGh0dHBzOi8vYXBpLm1hcGJveC5jb20vc3R5bGVzL3YxL2hlc2hhbjAxMzEvY2pnMWJmdW1vMWN3bTJybHJqeGtpbmZndz9wbHVnaW5OYW1lPUtlcGxlcmdsJmFjY2Vzc190b2tlbj08dG9rZW4+XG4gICAgcmV0dXJuIGAke21hcGJveEFwaVVybCB8fFxuICAgICAgREVGQVVMVF9NQVBCT1hfQVBJX1VSTH0vc3R5bGVzL3YxLyR7c3R5bGVJZH0/cGx1Z2luTmFtZT1LZXBsZXJnbCZhY2Nlc3NfdG9rZW49JHthY2Nlc3NUb2tlbn1gO1xuICB9XG5cbiAgLy8gc3R5bGUgdXJsIG5vdCByZWNvZ25pemVkXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIHN0YXRpYyBtYXAgaW1hZ2UgZnJvbSBzdHlsZSBVcmwgdG8gYmUgdXNlZCBhcyBpY29uXG4gKiBAcGFyYW0gcGFyYW1cbiAqIEBwYXJhbSBwYXJhbS5zdHlsZVVybFxuICogQHBhcmFtIHBhcmFtLm1hcGJveEFwaUFjY2Vzc1Rva2VuXG4gKiBAcGFyYW0gcGFyYW0ubWFwYm94QXBpVXJsXG4gKiBAcGFyYW0gcGFyYW0ubWFwU3RhdGVcbiAqIEBwYXJhbSBwYXJhbS5tYXBXXG4gKiBAcGFyYW0gcGFyYW0ubWFwSFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3R5bGVJbWFnZUljb24oe1xuICBzdHlsZVVybCxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybCA9IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIG1hcFN0YXRlID0ge1xuICAgIGxvbmdpdHVkZTogLTEyMi4zMzkxLFxuICAgIGxhdGl0dWRlOiAzNy43OTIyLFxuICAgIHpvb206IDlcbiAgfSxcbiAgbWFwVyA9IDQwMCxcbiAgbWFwSCA9IDMwMFxufToge1xuICBzdHlsZVVybDogc3RyaW5nO1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIG1hcFN0YXRlPzogUGFydGlhbDxNYXBTdGF0ZT47XG4gIG1hcFc/OiBudW1iZXI7XG4gIG1hcEg/OiBudW1iZXI7XG59KSB7XG4gIGNvbnN0IHN0eWxlSWQgPSBzdHlsZVVybC5yZXBsYWNlKCdtYXBib3g6Ly9zdHlsZXMvJywgJycpO1xuXG4gIHJldHVybiAoXG4gICAgYCR7bWFwYm94QXBpVXJsfS9zdHlsZXMvdjEvJHtzdHlsZUlkfS9zdGF0aWMvYCArXG4gICAgYCR7bWFwU3RhdGUubG9uZ2l0dWRlfSwke21hcFN0YXRlLmxhdGl0dWRlfSwke21hcFN0YXRlLnpvb219LDAsMC9gICtcbiAgICBgJHttYXBXfXgke21hcEh9YCArXG4gICAgYD9hY2Nlc3NfdG9rZW49JHttYXBib3hBcGlBY2Nlc3NUb2tlbn0mbG9nbz1mYWxzZSZhdHRyaWJ1dGlvbj1mYWxzZWBcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlTWFwU3R5bGVCeVJlc29sdXRpb24obWFwYm94U3R5bGUsIHNjYWxlKSB7XG4gIGlmIChzY2FsZSAhPT0gMSAmJiBtYXBib3hTdHlsZSkge1xuICAgIGNvbnN0IGxhYmVsTGF5ZXJHcm91cCA9IERFRkFVTFRfTEFZRVJfR1JPVVBTLmZpbmQobGcgPT4gbGcuc2x1ZyA9PT0gJ2xhYmVsJyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHtmaWx0ZXI6IGxhYmVsTGF5ZXJGaWx0ZXJ9ID0gbGFiZWxMYXllckdyb3VwO1xuICAgIGNvbnN0IHpvb21PZmZzZXQgPSBNYXRoLmxvZzIoc2NhbGUpO1xuXG4gICAgY29uc3QgY29weVN0eWxlID0gY2xvbmVEZWVwKG1hcGJveFN0eWxlKTtcbiAgICAoY29weVN0eWxlLmxheWVycyB8fCBbXSkuZm9yRWFjaChkID0+IHtcbiAgICAgIC8vIGVkaXQgbWluem9vbSBhbmQgbWF4em9vbVxuICAgICAgaWYgKGQubWF4em9vbSkge1xuICAgICAgICBkLm1heHpvb20gPSBNYXRoLm1heChkLm1heHpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGQubWluem9vbSkge1xuICAgICAgICBkLm1pbnpvb20gPSBNYXRoLm1heChkLm1pbnpvb20gKyB6b29tT2Zmc2V0LCAxKTtcbiAgICAgIH1cblxuICAgICAgLy8gZWRpdCB0ZXh0IHNpemVcbiAgICAgIGlmIChsYWJlbExheWVyRmlsdGVyKGQpKSB7XG4gICAgICAgIGlmIChkLmxheW91dCAmJiBkLmxheW91dFsndGV4dC1zaXplJ10gJiYgQXJyYXkuaXNBcnJheShkLmxheW91dFsndGV4dC1zaXplJ10uc3RvcHMpKSB7XG4gICAgICAgICAgZC5sYXlvdXRbJ3RleHQtc2l6ZSddLnN0b3BzLmZvckVhY2goc3RvcCA9PiB7XG4gICAgICAgICAgICAvLyB6b29tXG4gICAgICAgICAgICBzdG9wWzBdID0gTWF0aC5tYXgoc3RvcFswXSArIHpvb21PZmZzZXQsIDEpO1xuICAgICAgICAgICAgLy8gc2l6ZVxuICAgICAgICAgICAgc3RvcFsxXSAqPSBzY2FsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvcHlTdHlsZTtcbiAgfVxuXG4gIHJldHVybiBtYXBib3hTdHlsZTtcbn1cblxuLyoqXG4gKiBXaGVuIHN3aXRjaCB0byBhIG5ldyBzdHlsZSwgdHJ5IHRvIGtlZXAgY3VycmVudCBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBieSBtZXJnaW5nIGRlZmF1bHQgYW5kIGN1cnJlbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0TGF5ZXJHcm91cFxuICogQHBhcmFtIHtPYmplY3R9IGN1cnJlbnRMYXllckdyb3VwXG4gKiBAcmV0dXJuIHtPYmplY3R9IG1lcmdlZExheWVyR3JvdXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUxheWVyR3JvdXBWaXNpYmlsaXR5KGRlZmF1bHRMYXllckdyb3VwLCBjdXJyZW50TGF5ZXJHcm91cCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVmYXVsdExheWVyR3JvdXApLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIC4uLihjdXJyZW50TGF5ZXJHcm91cC5oYXNPd25Qcm9wZXJ0eShrZXkpID8ge1trZXldOiBjdXJyZW50TGF5ZXJHcm91cFtrZXldfSA6IHt9KVxuICAgIH0pLFxuICAgIGRlZmF1bHRMYXllckdyb3VwXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFGLE9BQUE7QUFBd0YsU0FBQUcsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElB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