parse-server 9.6.0-alpha.51 → 9.6.0-alpha.52

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.
Files changed (2) hide show
  1. package/lib/Auth.js +8 -2
  2. package/package.json +1 -1
package/lib/Auth.js CHANGED
@@ -463,7 +463,13 @@ const findUsersWithAuthData = async (config, authData, beforeFind, currentUserAu
463
463
  const storedProviderData = currentUserAuthData?.[provider];
464
464
  const incomingKeys = Object.keys(providerAuthData || {});
465
465
  const isUnchanged = storedProviderData && incomingKeys.length > 0 && !incomingKeys.some(key => !(0, _util.isDeepStrictEqual)(providerAuthData[key], storedProviderData[key]));
466
- const adapter = config.authDataManager.getValidatorForProvider(provider)?.adapter;
466
+ const validatorConfig = config.authDataManager.getValidatorForProvider(provider);
467
+ // Skip database query for unconfigured providers to avoid unindexed collection scans;
468
+ // the provider will be rejected later in handleAuthDataValidation with UNSUPPORTED_SERVICE
469
+ if (!validatorConfig?.validator) {
470
+ return null;
471
+ }
472
+ const adapter = validatorConfig.adapter;
467
473
  if (beforeFind && typeof adapter?.beforeFind === 'function' && !isUnchanged) {
468
474
  await adapter.beforeFind(providerAuthData);
469
475
  }
@@ -678,4 +684,4 @@ module.exports = {
678
684
  checkIfUserHasProvidedConfiguredProvidersForLogin,
679
685
  handleAuthDataValidation
680
686
  };
681
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfdHJpZ2dlcnMiLCJfbG9nZ2VyIiwiX2xydUNhY2hlIiwiX1Jlc3RRdWVyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzdFdyaXRlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2UiLCJBdXRoIiwiY29uZmlnIiwiY2FjaGVDb250cm9sbGVyIiwidW5kZWZpbmVkIiwiaXNNYXN0ZXIiLCJpc01haW50ZW5hbmNlIiwiaXNSZWFkT25seSIsInVzZXIiLCJpbnN0YWxsYXRpb25JZCIsInVzZXJSb2xlcyIsImZldGNoZWRSb2xlcyIsInJvbGVQcm9taXNlIiwicHJvdG90eXBlIiwiaXNVbmF1dGhlbnRpY2F0ZWQiLCJtYXN0ZXIiLCJtYWludGVuYW5jZSIsInJlYWRPbmx5Iiwibm9ib2R5IiwidGhyb3R0bGUiLCJMUlUiLCJtYXgiLCJ0dGwiLCJzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5Iiwic2Vzc2lvbiIsInJlc2V0QWZ0ZXIiLCJzZXNzaW9uTGVuZ3RoIiwibGFzdFVwZGF0ZWQiLCJEYXRlIiwidXBkYXRlZEF0Iiwic2tpcFJhbmdlIiwic2V0VGltZSIsImdldFRpbWUiLCJyZW5ld1Nlc3Npb25JZk5lZWRlZCIsInNlc3Npb25Ub2tlbiIsImV4dGVuZFNlc3Npb25PblVzZSIsImdldCIsInNldCIsInF1ZXJ5IiwiUmVzdFF1ZXJ5IiwibWV0aG9kIiwiTWV0aG9kIiwiYXV0aCIsInJ1bkJlZm9yZUZpbmQiLCJjbGFzc05hbWUiLCJyZXN0V2hlcmUiLCJyZXN0T3B0aW9ucyIsImxpbWl0IiwicmVzdWx0cyIsImV4ZWN1dGUiLCJleHBpcmVzQXQiLCJnZW5lcmF0ZVNlc3Npb25FeHBpcmVzQXQiLCJSZXN0V3JpdGUiLCJvYmplY3RJZCIsIl9lbmNvZGUiLCJjb2RlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwibG9nZ2VyIiwiZXJyb3IiLCJnZXRBdXRoRm9yU2Vzc2lvblRva2VuIiwiY2FjaGVkIiwiY2FjaGVkRXhwaXJlc0F0IiwidXNlckpTT04iLCJkZWwiLCJJTlZBTElEX1NFU1NJT05fVE9LRU4iLCJjYWNoZWRVc2VyIiwiT2JqZWN0IiwiZnJvbUpTT04iLCJQcm9taXNlIiwicmVzb2x2ZSIsImluY2x1ZGUiLCJRdWVyeSIsIlNlc3Npb24iLCJlcXVhbFRvIiwiZmluZCIsInVzZU1hc3RlcktleSIsIm1hcCIsIm9iaiIsInRvSlNPTiIsImxlbmd0aCIsIm5vdyIsImlzbyIsInN0YXJ0c1dpdGgiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJwYXNzd29yZCIsInB1dCIsInRvSVNPU3RyaW5nIiwidXNlck9iamVjdCIsImdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4iLCJfc2Vzc2lvbl90b2tlbiIsInRoZW4iLCJyZXNwb25zZSIsImdldFVzZXJSb2xlcyIsIl9sb2FkUm9sZXMiLCJnZXRSb2xlc0ZvclVzZXIiLCJ1c2VycyIsIl9fdHlwZSIsImlkIiwiZWFjaCIsInJlc3VsdCIsInB1c2giLCJSb2xlIiwiY2FjaGVkUm9sZXMiLCJyb2xlIiwiY2FjaGVSb2xlcyIsInJvbGVzTWFwIiwicmVkdWNlIiwibSIsInIiLCJuYW1lcyIsIm5hbWUiLCJpZHMiLCJyb2xlTmFtZXMiLCJfZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMiLCJBcnJheSIsImNsZWFyUm9sZUNhY2hlIiwiZ2V0Um9sZXNCeUlkcyIsImlucyIsImNvbnRhaW5lZEluIiwicm9sZXMiLCIkaW4iLCJyb2xlSURzIiwicXVlcmllZFJvbGVzIiwiZmlsdGVyIiwicm9sZUlEIiwid2FzUXVlcmllZCIsIlNldCIsInJlc3VsdE1hcCIsIm1lbW8iLCJjb25jYXQiLCJmaW5kVXNlcnNXaXRoQXV0aERhdGEiLCJhdXRoRGF0YSIsImJlZm9yZUZpbmQiLCJjdXJyZW50VXNlckF1dGhEYXRhIiwicHJvdmlkZXJzIiwia2V5cyIsInF1ZXJpZXMiLCJhbGwiLCJwcm92aWRlciIsInByb3ZpZGVyQXV0aERhdGEiLCJzdG9yZWRQcm92aWRlckRhdGEiLCJpbmNvbWluZ0tleXMiLCJpc1VuY2hhbmdlZCIsInNvbWUiLCJrZXkiLCJpc0RlZXBTdHJpY3RFcXVhbCIsImFkYXB0ZXIiLCJhdXRoRGF0YU1hbmFnZXIiLCJnZXRWYWxpZGF0b3JGb3JQcm92aWRlciIsIklOVkFMSURfVkFMVUUiLCJ2YWxpZFF1ZXJpZXMiLCJkYXRhYmFzZSIsIiRvciIsImhhc011dGF0ZWRBdXRoRGF0YSIsInVzZXJBdXRoRGF0YSIsIm11dGF0ZWRBdXRoRGF0YSIsImZvckVhY2giLCJwcm92aWRlckRhdGEiLCJ1c2VyUHJvdmlkZXJBdXRoRGF0YSIsImhhc0NoYW5nZXMiLCJjaGVja0lmVXNlckhhc1Byb3ZpZGVkQ29uZmlndXJlZFByb3ZpZGVyc0ZvckxvZ2luIiwicmVxIiwic2F2ZWRVc2VyUHJvdmlkZXJzIiwidmFsaWRhdG9yIiwiQm9vbGVhbiIsImhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlciIsInBvbGljeSIsImFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQiLCJoYXNQcm92aWRlZEF0TGVhc3RPbmVBZGRpdGlvbmFsUHJvdmlkZXIiLCJyZXF1ZXN0T2JqZWN0IiwiaXAiLCJjYWxsIiwiT1RIRVJfQ0FVU0UiLCJqb2luIiwiaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uIiwiZm91bmRVc2VyIiwiVXNlciIsImdldFVzZXJJZCIsImZldGNoIiwidXBkYXRlZE9iamVjdCIsImJ1aWxkUGFyc2VPYmplY3RzIiwiZ2V0UmVxdWVzdE9iamVjdCIsImFjYyIsImF1dGhEYXRhUmVzcG9uc2UiLCJhdXRoS2V5cyIsInNvcnQiLCJhdXRoUHJvdmlkZXIiLCJlbmFibGVkIiwiVU5TVVBQT1JURURfU0VSVklDRSIsInZhbGlkYXRpb25SZXN1bHQiLCJ0cmlnZ2VyTmFtZSIsImRvTm90U2F2ZSIsInNhdmUiLCJlcnIiLCJyZXNvbHZlRXJyb3IiLCJTQ1JJUFRfRkFJTEVEIiwibWVzc2FnZSIsInVzZXJTdHJpbmciLCJkYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsImF1dGhlbnRpY2F0aW9uU3RlcCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvQXV0aC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKTtcbmltcG9ydCB7IGlzRGVlcFN0cmljdEVxdWFsIH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBnZXRSZXF1ZXN0T2JqZWN0LCByZXNvbHZlRXJyb3IgfSBmcm9tICcuL3RyaWdnZXJzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IExSVUNhY2hlIGFzIExSVSB9IGZyb20gJ2xydS1jYWNoZSc7XG5pbXBvcnQgUmVzdFF1ZXJ5IGZyb20gJy4vUmVzdFF1ZXJ5JztcbmltcG9ydCBSZXN0V3JpdGUgZnJvbSAnLi9SZXN0V3JpdGUnO1xuXG4vLyBBbiBBdXRoIG9iamVjdCB0ZWxscyB5b3Ugd2hvIGlzIHJlcXVlc3Rpbmcgc29tZXRoaW5nIGFuZCB3aGV0aGVyXG4vLyB0aGUgbWFzdGVyIGtleSB3YXMgdXNlZC5cbi8vIHVzZXJPYmplY3QgaXMgYSBQYXJzZS5Vc2VyIGFuZCBjYW4gYmUgbnVsbCBpZiB0aGVyZSdzIG5vIHVzZXIuXG5mdW5jdGlvbiBBdXRoKHtcbiAgY29uZmlnLFxuICBjYWNoZUNvbnRyb2xsZXIgPSB1bmRlZmluZWQsXG4gIGlzTWFzdGVyID0gZmFsc2UsXG4gIGlzTWFpbnRlbmFuY2UgPSBmYWxzZSxcbiAgaXNSZWFkT25seSA9IGZhbHNlLFxuICB1c2VyLFxuICBpbnN0YWxsYXRpb25JZCxcbn0pIHtcbiAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyID0gY2FjaGVDb250cm9sbGVyIHx8IChjb25maWcgJiYgY29uZmlnLmNhY2hlQ29udHJvbGxlcik7XG4gIHRoaXMuaW5zdGFsbGF0aW9uSWQgPSBpbnN0YWxsYXRpb25JZDtcbiAgdGhpcy5pc01hc3RlciA9IGlzTWFzdGVyO1xuICB0aGlzLmlzTWFpbnRlbmFuY2UgPSBpc01haW50ZW5hbmNlO1xuICB0aGlzLnVzZXIgPSB1c2VyO1xuICB0aGlzLmlzUmVhZE9ubHkgPSBpc1JlYWRPbmx5O1xuXG4gIC8vIEFzc3VtaW5nIGEgdXNlcnMgcm9sZXMgd29uJ3QgY2hhbmdlIGR1cmluZyBhIHNpbmdsZSByZXF1ZXN0LCB3ZSdsbFxuICAvLyBvbmx5IGxvYWQgdGhlbSBvbmNlLlxuICB0aGlzLnVzZXJSb2xlcyA9IFtdO1xuICB0aGlzLmZldGNoZWRSb2xlcyA9IGZhbHNlO1xuICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcbn1cblxuLy8gV2hldGhlciB0aGlzIGF1dGggY291bGQgcG9zc2libHkgbW9kaWZ5IHRoZSBnaXZlbiB1c2VyIGlkLlxuLy8gSXQgc3RpbGwgY291bGQgYmUgZm9yYmlkZGVuIHZpYSBBQ0xzIGV2ZW4gaWYgdGhpcyByZXR1cm5zIHRydWUuXG5BdXRoLnByb3RvdHlwZS5pc1VuYXV0aGVudGljYXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaXNNYXN0ZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMuaXNNYWludGVuYW5jZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGhpcy51c2VyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbWFzdGVyLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBtYXN0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYXN0ZXI6IHRydWUgfSk7XG59XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG1haW50ZW5hbmNlLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBtYWludGVuYW5jZShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01haW50ZW5hbmNlOiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBtYXN0ZXItbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIHJlYWRPbmx5KGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFzdGVyOiB0cnVlLCBpc1JlYWRPbmx5OiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBub2JvZHktbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIG5vYm9keShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01hc3RlcjogZmFsc2UgfSk7XG59XG5cbmNvbnN0IHRocm90dGxlID0gbmV3IExSVSh7XG4gIG1heDogMTAwMDAsXG4gIHR0bDogNTAwLFxufSk7XG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHNlc3Npb24gc2hvdWxkIGJlIHVwZGF0ZWQgYmFzZWQgb24gbGFzdCB1cGRhdGUgdGltZSAmIHNlc3Npb24gbGVuZ3RoLlxuICovXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5KGNvbmZpZywgc2Vzc2lvbikge1xuICBjb25zdCByZXNldEFmdGVyID0gY29uZmlnLnNlc3Npb25MZW5ndGggLyAyO1xuICBjb25zdCBsYXN0VXBkYXRlZCA9IG5ldyBEYXRlKHNlc3Npb24/LnVwZGF0ZWRBdCk7XG4gIGNvbnN0IHNraXBSYW5nZSA9IG5ldyBEYXRlKCk7XG4gIHNraXBSYW5nZS5zZXRUaW1lKHNraXBSYW5nZS5nZXRUaW1lKCkgLSByZXNldEFmdGVyICogMTAwMCk7XG4gIHJldHVybiBsYXN0VXBkYXRlZCA8PSBza2lwUmFuZ2U7XG59XG5cbmNvbnN0IHJlbmV3U2Vzc2lvbklmTmVlZGVkID0gYXN5bmMgKHsgY29uZmlnLCBzZXNzaW9uLCBzZXNzaW9uVG9rZW4gfSkgPT4ge1xuICBpZiAoIWNvbmZpZz8uZXh0ZW5kU2Vzc2lvbk9uVXNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0aHJvdHRsZS5nZXQoc2Vzc2lvblRva2VuKSkge1xuICAgIHJldHVybjtcbiAgfVxuICB0aHJvdHRsZS5zZXQoc2Vzc2lvblRva2VuLCB0cnVlKTtcbiAgdHJ5IHtcbiAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBhdXRoOiBtYXN0ZXIoY29uZmlnKSxcbiAgICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogJ19TZXNzaW9uJyxcbiAgICAgICAgcmVzdFdoZXJlOiB7IHNlc3Npb25Ub2tlbiB9LFxuICAgICAgICByZXN0T3B0aW9uczogeyBsaW1pdDogMSB9LFxuICAgICAgfSk7XG4gICAgICBjb25zdCB7IHJlc3VsdHMgfSA9IGF3YWl0IHF1ZXJ5LmV4ZWN1dGUoKTtcbiAgICAgIHNlc3Npb24gPSByZXN1bHRzWzBdO1xuICAgIH1cblxuICAgIGlmICghc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeShjb25maWcsIHNlc3Npb24pIHx8ICFzZXNzaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGV4cGlyZXNBdCA9IGNvbmZpZy5nZW5lcmF0ZVNlc3Npb25FeHBpcmVzQXQoKTtcbiAgICBhd2FpdCBuZXcgUmVzdFdyaXRlKFxuICAgICAgY29uZmlnLFxuICAgICAgbWFzdGVyKGNvbmZpZyksXG4gICAgICAnX1Nlc3Npb24nLFxuICAgICAgeyBvYmplY3RJZDogc2Vzc2lvbi5vYmplY3RJZCB9LFxuICAgICAgeyBleHBpcmVzQXQ6IFBhcnNlLl9lbmNvZGUoZXhwaXJlc0F0KSB9XG4gICAgKS5leGVjdXRlKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZT8uY29kZSAhPT0gUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCkge1xuICAgICAgbG9nZ2VyLmVycm9yKCdDb3VsZCBub3QgdXBkYXRlIHNlc3Npb24gZXhwaXJ5OiAnLCBlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gQXV0aCBvYmplY3RcbmNvbnN0IGdldEF1dGhGb3JTZXNzaW9uVG9rZW4gPSBhc3luYyBmdW5jdGlvbiAoe1xuICBjb25maWcsXG4gIGNhY2hlQ29udHJvbGxlcixcbiAgc2Vzc2lvblRva2VuLFxuICBpbnN0YWxsYXRpb25JZCxcbn0pIHtcbiAgY2FjaGVDb250cm9sbGVyID0gY2FjaGVDb250cm9sbGVyIHx8IChjb25maWcgJiYgY29uZmlnLmNhY2hlQ29udHJvbGxlcik7XG4gIGlmIChjYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZUNvbnRyb2xsZXIudXNlci5nZXQoc2Vzc2lvblRva2VuKTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICBjb25zdCB7IGV4cGlyZXNBdDogY2FjaGVkRXhwaXJlc0F0LCAuLi51c2VySlNPTiB9ID0gY2FjaGVkO1xuICAgICAgaWYgKGNhY2hlZEV4cGlyZXNBdCAmJiBuZXcgRGF0ZShjYWNoZWRFeHBpcmVzQXQpIDwgbmV3IERhdGUoKSkge1xuICAgICAgICBjYWNoZUNvbnRyb2xsZXIudXNlci5kZWwoc2Vzc2lvblRva2VuKTtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ1Nlc3Npb24gdG9rZW4gaXMgZXhwaXJlZC4nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhY2hlZFVzZXIgPSBQYXJzZS5PYmplY3QuZnJvbUpTT04odXNlckpTT04pO1xuICAgICAgcmVuZXdTZXNzaW9uSWZOZWVkZWQoeyBjb25maWcsIHNlc3Npb25Ub2tlbiB9KTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgIG5ldyBBdXRoKHtcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgY2FjaGVDb250cm9sbGVyLFxuICAgICAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgICAgICBpbnN0YWxsYXRpb25JZCxcbiAgICAgICAgICB1c2VyOiBjYWNoZWRVc2VyLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBsZXQgcmVzdWx0cztcbiAgaWYgKGNvbmZpZykge1xuICAgIGNvbnN0IHJlc3RPcHRpb25zID0ge1xuICAgICAgbGltaXQ6IDEsXG4gICAgICBpbmNsdWRlOiAndXNlcicsXG4gICAgfTtcbiAgICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgICBjb25maWcsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGF1dGg6IG1hc3Rlcihjb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1Nlc3Npb24nLFxuICAgICAgcmVzdFdoZXJlOiB7IHNlc3Npb25Ub2tlbiB9LFxuICAgICAgcmVzdE9wdGlvbnMsXG4gICAgfSk7XG4gICAgcmVzdWx0cyA9IChhd2FpdCBxdWVyeS5leGVjdXRlKCkpLnJlc3VsdHM7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0cyA9IChcbiAgICAgIGF3YWl0IG5ldyBQYXJzZS5RdWVyeShQYXJzZS5TZXNzaW9uKVxuICAgICAgICAubGltaXQoMSlcbiAgICAgICAgLmluY2x1ZGUoJ3VzZXInKVxuICAgICAgICAuZXF1YWxUbygnc2Vzc2lvblRva2VuJywgc2Vzc2lvblRva2VuKVxuICAgICAgICAuZmluZCh7IHVzZU1hc3RlcktleTogdHJ1ZSB9KVxuICAgICkubWFwKG9iaiA9PiBvYmoudG9KU09OKCkpO1xuICB9XG5cbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAxIHx8ICFyZXN1bHRzWzBdWyd1c2VyJ10pIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gIH1cbiAgY29uc3Qgc2Vzc2lvbiA9IHJlc3VsdHNbMF07XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCksXG4gICAgZXhwaXJlc0F0ID0gc2Vzc2lvbi5leHBpcmVzQXQgPyBuZXcgRGF0ZShzZXNzaW9uLmV4cGlyZXNBdC5pc28pIDogdW5kZWZpbmVkO1xuICBpZiAoZXhwaXJlc0F0IDwgbm93KSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ1Nlc3Npb24gdG9rZW4gaXMgZXhwaXJlZC4nKTtcbiAgfVxuICBjb25zdCBvYmogPSBzZXNzaW9uLnVzZXI7XG5cbiAgaWYgKHR5cGVvZiBvYmpbJ29iamVjdElkJ10gPT09ICdzdHJpbmcnICYmIG9ialsnb2JqZWN0SWQnXS5zdGFydHNXaXRoKCdyb2xlOicpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUiwgJ0ludmFsaWQgb2JqZWN0IElELicpO1xuICB9XG5cbiAgZGVsZXRlIG9iai5wYXNzd29yZDtcbiAgb2JqWydjbGFzc05hbWUnXSA9ICdfVXNlcic7XG4gIG9ialsnc2Vzc2lvblRva2VuJ10gPSBzZXNzaW9uVG9rZW47XG4gIGlmIChjYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjYWNoZUNvbnRyb2xsZXIudXNlci5wdXQoc2Vzc2lvblRva2VuLCB7IC4uLm9iaiwgZXhwaXJlc0F0OiBleHBpcmVzQXQ/LnRvSVNPU3RyaW5nKCkgfSk7XG4gIH1cbiAgcmVuZXdTZXNzaW9uSWZOZWVkZWQoeyBjb25maWcsIHNlc3Npb24sIHNlc3Npb25Ub2tlbiB9KTtcbiAgY29uc3QgdXNlck9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihvYmopO1xuICByZXR1cm4gbmV3IEF1dGgoe1xuICAgIGNvbmZpZyxcbiAgICBjYWNoZUNvbnRyb2xsZXIsXG4gICAgaXNNYXN0ZXI6IGZhbHNlLFxuICAgIGluc3RhbGxhdGlvbklkLFxuICAgIHVzZXI6IHVzZXJPYmplY3QsXG4gIH0pO1xufTtcblxudmFyIGdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4gPSBhc3luYyBmdW5jdGlvbiAoeyBjb25maWcsIHNlc3Npb25Ub2tlbiwgaW5zdGFsbGF0aW9uSWQgfSkge1xuICB2YXIgcmVzdE9wdGlvbnMgPSB7XG4gICAgbGltaXQ6IDEsXG4gIH07XG4gIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gIHZhciBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICBjb25maWcsXG4gICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgY2xhc3NOYW1lOiAnX1VzZXInLFxuICAgIHJlc3RXaGVyZTogeyBfc2Vzc2lvbl90b2tlbjogc2Vzc2lvblRva2VuIH0sXG4gICAgcmVzdE9wdGlvbnMsXG4gIH0pO1xuICByZXR1cm4gcXVlcnkuZXhlY3V0ZSgpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgIHZhciByZXN1bHRzID0gcmVzcG9uc2UucmVzdWx0cztcbiAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdpbnZhbGlkIGxlZ2FjeSBzZXNzaW9uIHRva2VuJyk7XG4gICAgfVxuICAgIGNvbnN0IG9iaiA9IHJlc3VsdHNbMF07XG5cbiAgICBpZiAodHlwZW9mIG9ialsnb2JqZWN0SWQnXSA9PT0gJ3N0cmluZycgJiYgb2JqWydvYmplY3RJZCddLnN0YXJ0c1dpdGgoJ3JvbGU6JykpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlRFUk5BTF9TRVJWRVJfRVJST1IsICdJbnZhbGlkIG9iamVjdCBJRC4nKTtcbiAgICB9XG5cbiAgICBvYmouY2xhc3NOYW1lID0gJ19Vc2VyJztcbiAgICBjb25zdCB1c2VyT2JqZWN0ID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKG9iaik7XG4gICAgcmV0dXJuIG5ldyBBdXRoKHtcbiAgICAgIGNvbmZpZyxcbiAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgIGluc3RhbGxhdGlvbklkLFxuICAgICAgdXNlcjogdXNlck9iamVjdCxcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIHJvbGUgbmFtZXNcbkF1dGgucHJvdG90eXBlLmdldFVzZXJSb2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaXNNYXN0ZXIgfHwgdGhpcy5pc01haW50ZW5hbmNlIHx8ICF0aGlzLnVzZXIpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgfVxuICBpZiAodGhpcy5mZXRjaGVkUm9sZXMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudXNlclJvbGVzKTtcbiAgfVxuICBpZiAodGhpcy5yb2xlUHJvbWlzZSkge1xuICAgIHJldHVybiB0aGlzLnJvbGVQcm9taXNlO1xuICB9XG4gIHRoaXMucm9sZVByb21pc2UgPSB0aGlzLl9sb2FkUm9sZXMoKTtcbiAgcmV0dXJuIHRoaXMucm9sZVByb21pc2U7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5nZXRSb2xlc0ZvclVzZXIgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIC8vU3RhY2sgYWxsIFBhcnNlLlJvbGVcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICBpZiAodGhpcy5jb25maWcpIHtcbiAgICBjb25zdCByZXN0V2hlcmUgPSB7XG4gICAgICB1c2Vyczoge1xuICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnX1VzZXInLFxuICAgICAgICBvYmplY3RJZDogdGhpcy51c2VyLmlkLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBhdXRoOiBtYXN0ZXIodGhpcy5jb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgcmVzdFdoZXJlLFxuICAgIH0pO1xuICAgIGF3YWl0IHF1ZXJ5LmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQpKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuUm9sZSlcbiAgICAgIC5lcXVhbFRvKCd1c2VycycsIHRoaXMudXNlcilcbiAgICAgIC5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0LnRvSlNPTigpKSwgeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBJdGVyYXRlcyB0aHJvdWdoIHRoZSByb2xlIHRyZWUgYW5kIGNvbXBpbGVzIGEgdXNlcidzIHJvbGVzXG5BdXRoLnByb3RvdHlwZS5fbG9hZFJvbGVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCBjYWNoZWRSb2xlcyA9IGF3YWl0IHRoaXMuY2FjaGVDb250cm9sbGVyLnJvbGUuZ2V0KHRoaXMudXNlci5pZCk7XG4gICAgaWYgKGNhY2hlZFJvbGVzICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZmV0Y2hlZFJvbGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMudXNlclJvbGVzID0gY2FjaGVkUm9sZXM7XG4gICAgICByZXR1cm4gY2FjaGVkUm9sZXM7XG4gICAgfVxuICB9XG5cbiAgLy8gRmlyc3QgZ2V0IHRoZSByb2xlIGlkcyB0aGlzIHVzZXIgaXMgZGlyZWN0bHkgYSBtZW1iZXIgb2ZcbiAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZ2V0Um9sZXNGb3JVc2VyKCk7XG4gIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICB0aGlzLnVzZXJSb2xlcyA9IFtdO1xuICAgIHRoaXMuZmV0Y2hlZFJvbGVzID0gdHJ1ZTtcbiAgICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcblxuICAgIHRoaXMuY2FjaGVSb2xlcygpO1xuICAgIHJldHVybiB0aGlzLnVzZXJSb2xlcztcbiAgfVxuXG4gIGNvbnN0IHJvbGVzTWFwID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKG0sIHIpID0+IHtcbiAgICAgIG0ubmFtZXMucHVzaChyLm5hbWUpO1xuICAgICAgbS5pZHMucHVzaChyLm9iamVjdElkKTtcbiAgICAgIHJldHVybiBtO1xuICAgIH0sXG4gICAgeyBpZHM6IFtdLCBuYW1lczogW10gfVxuICApO1xuXG4gIC8vIHJ1biB0aGUgcmVjdXJzaXZlIGZpbmRpbmdcbiAgY29uc3Qgcm9sZU5hbWVzID0gYXdhaXQgdGhpcy5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMocm9sZXNNYXAuaWRzLCByb2xlc01hcC5uYW1lcyk7XG4gIHRoaXMudXNlclJvbGVzID0gcm9sZU5hbWVzLm1hcChyID0+IHtcbiAgICByZXR1cm4gJ3JvbGU6JyArIHI7XG4gIH0pO1xuICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gIHRoaXMucm9sZVByb21pc2UgPSBudWxsO1xuICB0aGlzLmNhY2hlUm9sZXMoKTtcbiAgcmV0dXJuIHRoaXMudXNlclJvbGVzO1xufTtcblxuQXV0aC5wcm90b3R5cGUuY2FjaGVSb2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLmNhY2hlQ29udHJvbGxlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0aGlzLmNhY2hlQ29udHJvbGxlci5yb2xlLnB1dCh0aGlzLnVzZXIuaWQsIEFycmF5KC4uLnRoaXMudXNlclJvbGVzKSk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuY2xlYXJSb2xlQ2FjaGUgPSBmdW5jdGlvbiAoc2Vzc2lvblRva2VuKSB7XG4gIGlmICghdGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIucm9sZS5kZWwodGhpcy51c2VyLmlkKTtcbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIudXNlci5kZWwoc2Vzc2lvblRva2VuKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5nZXRSb2xlc0J5SWRzID0gYXN5bmMgZnVuY3Rpb24gKGlucykge1xuICBjb25zdCByZXN1bHRzID0gW107XG4gIC8vIEJ1aWxkIGFuIE9SIHF1ZXJ5IGFjcm9zcyBhbGwgcGFyZW50Um9sZXNcbiAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgIGF3YWl0IG5ldyBQYXJzZS5RdWVyeShQYXJzZS5Sb2xlKVxuICAgICAgLmNvbnRhaW5lZEluKFxuICAgICAgICAncm9sZXMnLFxuICAgICAgICBpbnMubWFwKGlkID0+IHtcbiAgICAgICAgICBjb25zdCByb2xlID0gbmV3IFBhcnNlLk9iamVjdChQYXJzZS5Sb2xlKTtcbiAgICAgICAgICByb2xlLmlkID0gaWQ7XG4gICAgICAgICAgcmV0dXJuIHJvbGU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdC50b0pTT04oKSksIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJvbGVzID0gaW5zLm1hcChpZCA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgICBvYmplY3RJZDogaWQsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc3RXaGVyZSA9IHsgcm9sZXM6IHsgJGluOiByb2xlcyB9IH07XG4gICAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGF1dGg6IG1hc3Rlcih0aGlzLmNvbmZpZyksXG4gICAgICBjbGFzc05hbWU6ICdfUm9sZScsXG4gICAgICByZXN0V2hlcmUsXG4gICAgfSk7XG4gICAgYXdhaXQgcXVlcnkuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdCkpO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gR2l2ZW4gYSBsaXN0IG9mIHJvbGVJZHMsIGZpbmQgYWxsIHRoZSBwYXJlbnQgcm9sZXMsIHJldHVybnMgYSBwcm9taXNlIHdpdGggYWxsIG5hbWVzXG5BdXRoLnByb3RvdHlwZS5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMgPSBmdW5jdGlvbiAocm9sZUlEcywgbmFtZXMgPSBbXSwgcXVlcmllZFJvbGVzID0ge30pIHtcbiAgY29uc3QgaW5zID0gcm9sZUlEcy5maWx0ZXIocm9sZUlEID0+IHtcbiAgICBjb25zdCB3YXNRdWVyaWVkID0gcXVlcmllZFJvbGVzW3JvbGVJRF0gIT09IHRydWU7XG4gICAgcXVlcmllZFJvbGVzW3JvbGVJRF0gPSB0cnVlO1xuICAgIHJldHVybiB3YXNRdWVyaWVkO1xuICB9KTtcblxuICAvLyBhbGwgcm9sZXMgYXJlIGFjY291bnRlZCBmb3IsIHJldHVybiB0aGUgbmFtZXNcbiAgaWYgKGlucy5sZW5ndGggPT0gMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoWy4uLm5ldyBTZXQobmFtZXMpXSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5nZXRSb2xlc0J5SWRzKGlucylcbiAgICAudGhlbihyZXN1bHRzID0+IHtcbiAgICAgIC8vIE5vdGhpbmcgZm91bmRcbiAgICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuYW1lcyk7XG4gICAgICB9XG4gICAgICAvLyBNYXAgdGhlIHJlc3VsdHMgd2l0aCBhbGwgSWRzIGFuZCBuYW1lc1xuICAgICAgY29uc3QgcmVzdWx0TWFwID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAgIChtZW1vLCByb2xlKSA9PiB7XG4gICAgICAgICAgbWVtby5uYW1lcy5wdXNoKHJvbGUubmFtZSk7XG4gICAgICAgICAgbWVtby5pZHMucHVzaChyb2xlLm9iamVjdElkKTtcbiAgICAgICAgICByZXR1cm4gbWVtbztcbiAgICAgICAgfSxcbiAgICAgICAgeyBpZHM6IFtdLCBuYW1lczogW10gfVxuICAgICAgKTtcbiAgICAgIC8vIHN0b3JlIHRoZSBuZXcgZm91bmQgbmFtZXNcbiAgICAgIG5hbWVzID0gbmFtZXMuY29uY2F0KHJlc3VsdE1hcC5uYW1lcyk7XG4gICAgICAvLyBmaW5kIHRoZSBuZXh0IG9uZXMsIGNpcmN1bGFyIHJvbGVzIHdpbGwgYmUgY3V0XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMocmVzdWx0TWFwLmlkcywgbmFtZXMsIHF1ZXJpZWRSb2xlcyk7XG4gICAgfSlcbiAgICAudGhlbihuYW1lcyA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFsuLi5uZXcgU2V0KG5hbWVzKV0pO1xuICAgIH0pO1xufTtcblxuY29uc3QgZmluZFVzZXJzV2l0aEF1dGhEYXRhID0gYXN5bmMgKGNvbmZpZywgYXV0aERhdGEsIGJlZm9yZUZpbmQsIGN1cnJlbnRVc2VyQXV0aERhdGEpID0+IHtcbiAgY29uc3QgcHJvdmlkZXJzID0gT2JqZWN0LmtleXMoYXV0aERhdGEpO1xuXG4gIGNvbnN0IHF1ZXJpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcm92aWRlcnMubWFwKGFzeW5jIHByb3ZpZGVyID0+IHtcbiAgICAgIGNvbnN0IHByb3ZpZGVyQXV0aERhdGEgPSBhdXRoRGF0YVtwcm92aWRlcl07XG5cbiAgICAgIC8vIFNraXAgcHJvdmlkZXJzIGJlaW5nIHVubGlua2VkIChudWxsIHZhbHVlKVxuICAgICAgaWYgKHByb3ZpZGVyQXV0aERhdGEgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIFNraXAgYmVmb3JlRmluZCBvbmx5IHdoZW4gaW5jb21pbmcgZGF0YSBpcyBjb25maXJtZWQgdW5jaGFuZ2VkIGZyb20gc3RvcmVkIGRhdGEuXG4gICAgICAvLyBUaGlzIGhhbmRsZXMgZWNob2VkLWJhY2sgYXV0aERhdGEgZnJvbSBhZnRlckZpbmQgKGUuZy4gY2xpZW50IHNlbmRzIGJhY2sgeyBpZDogJ3gnIH1cbiAgICAgIC8vIGFsb25nc2lkZSBhIHByb3ZpZGVyIHVubGluaykuIE9uIGxvZ2luL3NpZ251cCwgY3VycmVudFVzZXJBdXRoRGF0YSBpcyB1bmRlZmluZWQgc29cbiAgICAgIC8vIGJlZm9yZUZpbmQgYWx3YXlzIHJ1bnMsIHByZXNlcnZpbmcgaXQgYXMgdGhlIHNlY3VyaXR5IGdhdGUgZm9yIG1pc3NpbmcgY3JlZGVudGlhbHMuXG4gICAgICBjb25zdCBzdG9yZWRQcm92aWRlckRhdGEgPSBjdXJyZW50VXNlckF1dGhEYXRhPy5bcHJvdmlkZXJdO1xuICAgICAgY29uc3QgaW5jb21pbmdLZXlzID0gT2JqZWN0LmtleXMocHJvdmlkZXJBdXRoRGF0YSB8fCB7fSk7XG4gICAgICBjb25zdCBpc1VuY2hhbmdlZCA9IHN0b3JlZFByb3ZpZGVyRGF0YSAmJiBpbmNvbWluZ0tleXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAhaW5jb21pbmdLZXlzLnNvbWUoa2V5ID0+ICFpc0RlZXBTdHJpY3RFcXVhbChwcm92aWRlckF1dGhEYXRhW2tleV0sIHN0b3JlZFByb3ZpZGVyRGF0YVtrZXldKSk7XG5cbiAgICAgIGNvbnN0IGFkYXB0ZXIgPSBjb25maWcuYXV0aERhdGFNYW5hZ2VyLmdldFZhbGlkYXRvckZvclByb3ZpZGVyKHByb3ZpZGVyKT8uYWRhcHRlcjtcbiAgICAgIGlmIChiZWZvcmVGaW5kICYmIHR5cGVvZiBhZGFwdGVyPy5iZWZvcmVGaW5kID09PSAnZnVuY3Rpb24nICYmICFpc1VuY2hhbmdlZCkge1xuICAgICAgICBhd2FpdCBhZGFwdGVyLmJlZm9yZUZpbmQocHJvdmlkZXJBdXRoRGF0YSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghcHJvdmlkZXJBdXRoRGF0YT8uaWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgcHJvdmlkZXJBdXRoRGF0YS5pZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfVkFMVUUsIGBJbnZhbGlkIGF1dGhEYXRhIGlkIGZvciBwcm92aWRlciAnJHtwcm92aWRlcn0nLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBbYGF1dGhEYXRhLiR7cHJvdmlkZXJ9LmlkYF06IHByb3ZpZGVyQXV0aERhdGEuaWQgfTtcbiAgICB9KVxuICApO1xuXG4gIC8vIEZpbHRlciBvdXQgbnVsbCBxdWVyaWVzXG4gIGNvbnN0IHZhbGlkUXVlcmllcyA9IHF1ZXJpZXMuZmlsdGVyKHF1ZXJ5ID0+IHF1ZXJ5ICE9PSBudWxsKTtcblxuICBpZiAoIXZhbGlkUXVlcmllcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBQZXJmb3JtIGRhdGFiYXNlIHF1ZXJ5XG4gIHJldHVybiBjb25maWcuZGF0YWJhc2UuZmluZCgnX1VzZXInLCB7ICRvcjogdmFsaWRRdWVyaWVzIH0sIHsgbGltaXQ6IDIgfSk7XG59O1xuXG5jb25zdCBoYXNNdXRhdGVkQXV0aERhdGEgPSAoYXV0aERhdGEsIHVzZXJBdXRoRGF0YSkgPT4ge1xuICBpZiAoIXVzZXJBdXRoRGF0YSkgeyByZXR1cm4geyBoYXNNdXRhdGVkQXV0aERhdGE6IHRydWUsIG11dGF0ZWRBdXRoRGF0YTogYXV0aERhdGEgfTsgfVxuICBjb25zdCBtdXRhdGVkQXV0aERhdGEgPSB7fTtcbiAgT2JqZWN0LmtleXMoYXV0aERhdGEpLmZvckVhY2gocHJvdmlkZXIgPT4ge1xuICAgIC8vIEFub255bW91cyBwcm92aWRlciBpcyBub3QgaGFuZGxlZCB0aGlzIHdheVxuICAgIGlmIChwcm92aWRlciA9PT0gJ2Fub255bW91cycpIHsgcmV0dXJuOyB9XG4gICAgY29uc3QgcHJvdmlkZXJEYXRhID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgIGNvbnN0IHVzZXJQcm92aWRlckF1dGhEYXRhID0gdXNlckF1dGhEYXRhW3Byb3ZpZGVyXTtcblxuICAgIC8vIElmIHVubGlua2luZyAoc2V0dGluZyB0byBudWxsKSwgY29uc2lkZXIgaXQgbXV0YXRlZFxuICAgIGlmIChwcm92aWRlckRhdGEgPT09IG51bGwpIHtcbiAgICAgIG11dGF0ZWRBdXRoRGF0YVtwcm92aWRlcl0gPSBwcm92aWRlckRhdGE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgcHJvdmlkZXIgZG9lc24ndCBleGlzdCBpbiBzdG9yZWQgZGF0YSwgaXQncyBuZXdcbiAgICBpZiAoIXVzZXJQcm92aWRlckF1dGhEYXRhKSB7XG4gICAgICBtdXRhdGVkQXV0aERhdGFbcHJvdmlkZXJdID0gcHJvdmlkZXJEYXRhO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGluY29taW5nIGRhdGEgcmVwcmVzZW50cyBhY3R1YWwgY2hhbmdlcyB2cyBqdXN0IGVjaG9pbmcgYmFja1xuICAgIC8vIHdoYXQgYWZ0ZXJGaW5kIHJldHVybmVkLiBJZiBpbmNvbWluZyBkYXRhIGlzIGEgc3Vic2V0IG9mIHN0b3JlZCBkYXRhXG4gICAgLy8gKGFsbCBpbmNvbWluZyBmaWVsZHMgbWF0Y2ggc3RvcmVkIHZhbHVlcyksIGl0J3Mgbm90IG11dGF0ZWQuXG4gICAgLy8gSWYgaW5jb21pbmcgZGF0YSBoYXMgZGlmZmVyZW50IHZhbHVlcyBvciBmaWVsZHMgbm90IGluIHN0b3JlZCBkYXRhLCBpdCdzIG11dGF0ZWQuXG4gICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIGFmdGVyRmluZCBzdHJpcHMgc2Vuc2l0aXZlIGZpZWxkcyBsaWtlICdjb2RlJzpcbiAgICAvLyAtIEluY29taW5nOiB7IGlkOiAneCcgfSwgU3RvcmVkOiB7IGlkOiAneCcsIGNvZGU6ICdzZWNyZXQnIH0gLT4gTk9UIG11dGF0ZWQgKHN1YnNldClcbiAgICAvLyAtIEluY29taW5nOiB7IGlkOiAneCcsIHRva2VuOiAnbmV3JyB9LCBTdG9yZWQ6IHsgaWQ6ICd4JywgdG9rZW46ICdvbGQnIH0gLT4gTVVUQVRFRFxuICAgIGNvbnN0IGluY29taW5nS2V5cyA9IE9iamVjdC5rZXlzKHByb3ZpZGVyRGF0YSB8fCB7fSk7XG4gICAgY29uc3QgaGFzQ2hhbmdlcyA9IGluY29taW5nS2V5cy5zb21lKGtleSA9PiB7XG4gICAgICByZXR1cm4gIWlzRGVlcFN0cmljdEVxdWFsKHByb3ZpZGVyRGF0YVtrZXldLCB1c2VyUHJvdmlkZXJBdXRoRGF0YVtrZXldKTtcbiAgICB9KTtcblxuICAgIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgICBtdXRhdGVkQXV0aERhdGFbcHJvdmlkZXJdID0gcHJvdmlkZXJEYXRhO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhc011dGF0ZWRBdXRoRGF0YSA9IE9iamVjdC5rZXlzKG11dGF0ZWRBdXRoRGF0YSkubGVuZ3RoICE9PSAwO1xuICByZXR1cm4geyBoYXNNdXRhdGVkQXV0aERhdGEsIG11dGF0ZWRBdXRoRGF0YSB9O1xufTtcblxuY29uc3QgY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbiA9IChcbiAgcmVxID0ge30sXG4gIGF1dGhEYXRhID0ge30sXG4gIHVzZXJBdXRoRGF0YSA9IHt9LFxuICBjb25maWdcbikgPT4ge1xuICBjb25zdCBzYXZlZFVzZXJQcm92aWRlcnMgPSBPYmplY3Qua2V5cyh1c2VyQXV0aERhdGEpXG4gICAgLm1hcChwcm92aWRlciA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0b3IgPSBjb25maWcuYXV0aERhdGFNYW5hZ2VyLmdldFZhbGlkYXRvckZvclByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgICAgIGlmICghdmFsaWRhdG9yIHx8ICF2YWxpZGF0b3IuYWRhcHRlcikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG5hbWU6IHByb3ZpZGVyLCBhZGFwdGVyOiB2YWxpZGF0b3IuYWRhcHRlciB9O1xuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKTtcblxuICBjb25zdCBoYXNQcm92aWRlZEFTb2xvUHJvdmlkZXIgPSBzYXZlZFVzZXJQcm92aWRlcnMuc29tZShcbiAgICBwcm92aWRlciA9PlxuICAgICAgcHJvdmlkZXIgJiYgcHJvdmlkZXIuYWRhcHRlciAmJiBwcm92aWRlci5hZGFwdGVyLnBvbGljeSA9PT0gJ3NvbG8nICYmIGF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdXG4gICk7XG5cbiAgLy8gU29sbyBwcm92aWRlcnMgY2FuIGJlIGNvbnNpZGVyZWQgYXMgc2FmZSwgc28gd2UgZG8gbm90IGhhdmUgdG8gY2hlY2sgaWYgdGhlIHVzZXIgbmVlZHNcbiAgLy8gdG8gcHJvdmlkZSBhbiBhZGRpdGlvbmFsIHByb3ZpZGVyIHRvIGxvZ2luLiBBbiBhdXRoIGFkYXB0ZXIgd2l0aCBcInNvbG9cIiAobGlrZSB3ZWJhdXRobikgbWVhbnNcbiAgLy8gbm8gXCJhZGRpdGlvbmFsXCIgYXV0aCBuZWVkcyB0byBiZSBwcm92aWRlZCB0byBsb2dpbiAobGlrZSBPVFAsIE1GQSlcbiAgaWYgKGhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQgPSBbXTtcbiAgY29uc3QgaGFzUHJvdmlkZWRBdExlYXN0T25lQWRkaXRpb25hbFByb3ZpZGVyID0gc2F2ZWRVc2VyUHJvdmlkZXJzLnNvbWUocHJvdmlkZXIgPT4ge1xuICAgIGxldCBwb2xpY3kgPSBwcm92aWRlci5hZGFwdGVyLnBvbGljeTtcbiAgICBpZiAodHlwZW9mIHBvbGljeSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVxdWVzdE9iamVjdCA9IHtcbiAgICAgICAgaXA6IHJlcS5jb25maWcuaXAsXG4gICAgICAgIHVzZXI6IHJlcS5hdXRoLnVzZXIsXG4gICAgICAgIG1hc3RlcjogcmVxLmF1dGguaXNNYXN0ZXIsXG4gICAgICB9O1xuICAgICAgcG9saWN5ID0gcG9saWN5LmNhbGwocHJvdmlkZXIuYWRhcHRlciwgcmVxdWVzdE9iamVjdCwgdXNlckF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdKTtcbiAgICB9XG4gICAgaWYgKHBvbGljeSA9PT0gJ2FkZGl0aW9uYWwnKSB7XG4gICAgICBpZiAoYXV0aERhdGFbcHJvdmlkZXIubmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBQdXNoIG1pc3NpbmcgcHJvdmlkZXIgZm9yIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZC5wdXNoKHByb3ZpZGVyLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGlmIChoYXNQcm92aWRlZEF0TGVhc3RPbmVBZGRpdGlvbmFsUHJvdmlkZXIgfHwgIWFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgIGBNaXNzaW5nIGFkZGl0aW9uYWwgYXV0aERhdGEgJHthZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kLmpvaW4oJywnKX1gXG4gICk7XG59O1xuXG4vLyBWYWxpZGF0ZSBlYWNoIGF1dGhEYXRhIHN0ZXAtYnktc3RlcCBhbmQgcmV0dXJuIHRoZSBwcm92aWRlciByZXNwb25zZXNcbmNvbnN0IGhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbiA9IGFzeW5jIChhdXRoRGF0YSwgcmVxLCBmb3VuZFVzZXIpID0+IHtcbiAgbGV0IHVzZXI7XG4gIGlmIChmb3VuZFVzZXIpIHtcbiAgICB1c2VyID0gUGFyc2UuVXNlci5mcm9tSlNPTih7IGNsYXNzTmFtZTogJ19Vc2VyJywgLi4uZm91bmRVc2VyIH0pO1xuICAgIC8vIEZpbmQgdXNlciBieSBzZXNzaW9uIGFuZCBjdXJyZW50IG9iamVjdElkOyBvbmx5IHBhc3MgdXNlciBpZiBpdCdzIHRoZSBjdXJyZW50IHVzZXIgb3IgbWFzdGVyIGtleSBpcyBwcm92aWRlZFxuICB9IGVsc2UgaWYgKFxuICAgIChyZXEuYXV0aCAmJlxuICAgICAgcmVxLmF1dGgudXNlciAmJlxuICAgICAgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIHJlcS5nZXRVc2VySWQoKSA9PT0gcmVxLmF1dGgudXNlci5pZCkgfHxcbiAgICAocmVxLmF1dGggJiYgcmVxLmF1dGguaXNNYXN0ZXIgJiYgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiYgcmVxLmdldFVzZXJJZCgpKVxuICApIHtcbiAgICB1c2VyID0gbmV3IFBhcnNlLlVzZXIoKTtcbiAgICB1c2VyLmlkID0gcmVxLmF1dGguaXNNYXN0ZXIgPyByZXEuZ2V0VXNlcklkKCkgOiByZXEuYXV0aC51c2VyLmlkO1xuICAgIGF3YWl0IHVzZXIuZmV0Y2goeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH1cblxuICBjb25zdCB7IHVwZGF0ZWRPYmplY3QgfSA9IHJlcS5idWlsZFBhcnNlT2JqZWN0cygpO1xuICBjb25zdCByZXF1ZXN0T2JqZWN0ID0gZ2V0UmVxdWVzdE9iamVjdCh1bmRlZmluZWQsIHJlcS5hdXRoLCB1cGRhdGVkT2JqZWN0LCB1c2VyLCByZXEuY29uZmlnKTtcbiAgLy8gUGVyZm9ybSB2YWxpZGF0aW9uIGFzIHN0ZXAtYnktc3RlcCBwaXBlbGluZSBmb3IgYmV0dGVyIGVycm9yIGNvbnNpc3RlbmN5XG4gIC8vIGFuZCBhbHNvIHRvIGF2b2lkIHRvIHRyaWdnZXIgYSBwcm92aWRlciAobGlrZSBPVFAgU01TKSBpZiBhbm90aGVyIG9uZSBmYWlsc1xuICBjb25zdCBhY2MgPSB7IGF1dGhEYXRhOiB7fSwgYXV0aERhdGFSZXNwb25zZToge30gfTtcbiAgY29uc3QgYXV0aEtleXMgPSBPYmplY3Qua2V5cyhhdXRoRGF0YSkuc29ydCgpO1xuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIGF1dGhLZXlzKSB7XG4gICAgbGV0IG1ldGhvZCA9ICcnO1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXV0aERhdGFbcHJvdmlkZXJdID09PSBudWxsKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSBudWxsO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgdmFsaWRhdG9yIH0gPSByZXEuY29uZmlnLmF1dGhEYXRhTWFuYWdlci5nZXRWYWxpZGF0b3JGb3JQcm92aWRlcihwcm92aWRlcikgfHwge307XG4gICAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSAocmVxLmNvbmZpZy5hdXRoIHx8IHt9KVtwcm92aWRlcl0gfHwge307XG4gICAgICBpZiAoIXZhbGlkYXRvciB8fCBhdXRoUHJvdmlkZXIuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgIFBhcnNlLkVycm9yLlVOU1VQUE9SVEVEX1NFUlZJQ0UsXG4gICAgICAgICAgJ1RoaXMgYXV0aGVudGljYXRpb24gbWV0aG9kIGlzIHVuc3VwcG9ydGVkLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdmFsaWRhdG9yKGF1dGhEYXRhW3Byb3ZpZGVyXSwgcmVxLCB1c2VyLCByZXF1ZXN0T2JqZWN0KTtcbiAgICAgIG1ldGhvZCA9IHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC5tZXRob2Q7XG4gICAgICByZXF1ZXN0T2JqZWN0LnRyaWdnZXJOYW1lID0gbWV0aG9kO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC52YWxpZGF0b3IpIHtcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRpb25SZXN1bHQudmFsaWRhdG9yKCk7XG4gICAgICB9XG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhW3Byb3ZpZGVyXSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKHZhbGlkYXRpb25SZXN1bHQpLmxlbmd0aCkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhUmVzcG9uc2VbcHJvdmlkZXJdID0gdmFsaWRhdGlvblJlc3VsdC5yZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIC8vIFNvbWUgYXV0aCBwcm92aWRlcnMgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gd2lsbCBhdm9pZCB0byByZXBsYWNlIGF1dGhEYXRhIGFscmVhZHkgc3RvcmVkXG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQuZG9Ob3RTYXZlKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSB2YWxpZGF0aW9uUmVzdWx0LnNhdmUgfHwgYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZSA9IHJlc29sdmVFcnJvcihlcnIsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCxcbiAgICAgICAgbWVzc2FnZTogJ0F1dGggZmFpbGVkLiBVbmtub3duIGVycm9yLicsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPVxuICAgICAgICByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHJlcS5kYXRhLm9iamVjdElkIHx8IHVuZGVmaW5lZDtcbiAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgYEZhaWxlZCBydW5uaW5nIGF1dGggc3RlcCAke21ldGhvZH0gZm9yICR7cHJvdmlkZXJ9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aCBFcnJvcjogYCArXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSksXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRoZW50aWNhdGlvblN0ZXA6IG1ldGhvZCxcbiAgICAgICAgICBlcnJvcjogZSxcbiAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgIHByb3ZpZGVyLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjYztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBdXRoLFxuICBtYXN0ZXIsXG4gIG1haW50ZW5hbmNlLFxuICBub2JvZHksXG4gIHJlYWRPbmx5LFxuICBzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5LFxuICBnZXRBdXRoRm9yU2Vzc2lvblRva2VuLFxuICBnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuLFxuICBmaW5kVXNlcnNXaXRoQXV0aERhdGEsXG4gIGhhc011dGF0ZWRBdXRoRGF0YSxcbiAgY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbixcbiAgaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFELHNCQUFBLENBQUFMLE9BQUE7QUFBb0MsU0FBQUssdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFOcEMsTUFBTUcsS0FBSyxHQUFHVixPQUFPLENBQUMsWUFBWSxDQUFDO0FBUW5DO0FBQ0E7QUFDQTtBQUNBLFNBQVNXLElBQUlBLENBQUM7RUFDWkMsTUFBTTtFQUNOQyxlQUFlLEdBQUdDLFNBQVM7RUFDM0JDLFFBQVEsR0FBRyxLQUFLO0VBQ2hCQyxhQUFhLEdBQUcsS0FBSztFQUNyQkMsVUFBVSxHQUFHLEtBQUs7RUFDbEJDLElBQUk7RUFDSkM7QUFDRixDQUFDLEVBQUU7RUFDRCxJQUFJLENBQUNQLE1BQU0sR0FBR0EsTUFBTTtFQUNwQixJQUFJLENBQUNDLGVBQWUsR0FBR0EsZUFBZSxJQUFLRCxNQUFNLElBQUlBLE1BQU0sQ0FBQ0MsZUFBZ0I7RUFDNUUsSUFBSSxDQUFDTSxjQUFjLEdBQUdBLGNBQWM7RUFDcEMsSUFBSSxDQUFDSixRQUFRLEdBQUdBLFFBQVE7RUFDeEIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBLGFBQWE7RUFDbEMsSUFBSSxDQUFDRSxJQUFJLEdBQUdBLElBQUk7RUFDaEIsSUFBSSxDQUFDRCxVQUFVLEdBQUdBLFVBQVU7O0VBRTVCO0VBQ0E7RUFDQSxJQUFJLENBQUNHLFNBQVMsR0FBRyxFQUFFO0VBQ25CLElBQUksQ0FBQ0Ms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
687
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfdHJpZ2dlcnMiLCJfbG9nZ2VyIiwiX2xydUNhY2hlIiwiX1Jlc3RRdWVyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzdFdyaXRlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2UiLCJBdXRoIiwiY29uZmlnIiwiY2FjaGVDb250cm9sbGVyIiwidW5kZWZpbmVkIiwiaXNNYXN0ZXIiLCJpc01haW50ZW5hbmNlIiwiaXNSZWFkT25seSIsInVzZXIiLCJpbnN0YWxsYXRpb25JZCIsInVzZXJSb2xlcyIsImZldGNoZWRSb2xlcyIsInJvbGVQcm9taXNlIiwicHJvdG90eXBlIiwiaXNVbmF1dGhlbnRpY2F0ZWQiLCJtYXN0ZXIiLCJtYWludGVuYW5jZSIsInJlYWRPbmx5Iiwibm9ib2R5IiwidGhyb3R0bGUiLCJMUlUiLCJtYXgiLCJ0dGwiLCJzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5Iiwic2Vzc2lvbiIsInJlc2V0QWZ0ZXIiLCJzZXNzaW9uTGVuZ3RoIiwibGFzdFVwZGF0ZWQiLCJEYXRlIiwidXBkYXRlZEF0Iiwic2tpcFJhbmdlIiwic2V0VGltZSIsImdldFRpbWUiLCJyZW5ld1Nlc3Npb25JZk5lZWRlZCIsInNlc3Npb25Ub2tlbiIsImV4dGVuZFNlc3Npb25PblVzZSIsImdldCIsInNldCIsInF1ZXJ5IiwiUmVzdFF1ZXJ5IiwibWV0aG9kIiwiTWV0aG9kIiwiYXV0aCIsInJ1bkJlZm9yZUZpbmQiLCJjbGFzc05hbWUiLCJyZXN0V2hlcmUiLCJyZXN0T3B0aW9ucyIsImxpbWl0IiwicmVzdWx0cyIsImV4ZWN1dGUiLCJleHBpcmVzQXQiLCJnZW5lcmF0ZVNlc3Npb25FeHBpcmVzQXQiLCJSZXN0V3JpdGUiLCJvYmplY3RJZCIsIl9lbmNvZGUiLCJjb2RlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwibG9nZ2VyIiwiZXJyb3IiLCJnZXRBdXRoRm9yU2Vzc2lvblRva2VuIiwiY2FjaGVkIiwiY2FjaGVkRXhwaXJlc0F0IiwidXNlckpTT04iLCJkZWwiLCJJTlZBTElEX1NFU1NJT05fVE9LRU4iLCJjYWNoZWRVc2VyIiwiT2JqZWN0IiwiZnJvbUpTT04iLCJQcm9taXNlIiwicmVzb2x2ZSIsImluY2x1ZGUiLCJRdWVyeSIsIlNlc3Npb24iLCJlcXVhbFRvIiwiZmluZCIsInVzZU1hc3RlcktleSIsIm1hcCIsIm9iaiIsInRvSlNPTiIsImxlbmd0aCIsIm5vdyIsImlzbyIsInN0YXJ0c1dpdGgiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJwYXNzd29yZCIsInB1dCIsInRvSVNPU3RyaW5nIiwidXNlck9iamVjdCIsImdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4iLCJfc2Vzc2lvbl90b2tlbiIsInRoZW4iLCJyZXNwb25zZSIsImdldFVzZXJSb2xlcyIsIl9sb2FkUm9sZXMiLCJnZXRSb2xlc0ZvclVzZXIiLCJ1c2VycyIsIl9fdHlwZSIsImlkIiwiZWFjaCIsInJlc3VsdCIsInB1c2giLCJSb2xlIiwiY2FjaGVkUm9sZXMiLCJyb2xlIiwiY2FjaGVSb2xlcyIsInJvbGVzTWFwIiwicmVkdWNlIiwibSIsInIiLCJuYW1lcyIsIm5hbWUiLCJpZHMiLCJyb2xlTmFtZXMiLCJfZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMiLCJBcnJheSIsImNsZWFyUm9sZUNhY2hlIiwiZ2V0Um9sZXNCeUlkcyIsImlucyIsImNvbnRhaW5lZEluIiwicm9sZXMiLCIkaW4iLCJyb2xlSURzIiwicXVlcmllZFJvbGVzIiwiZmlsdGVyIiwicm9sZUlEIiwid2FzUXVlcmllZCIsIlNldCIsInJlc3VsdE1hcCIsIm1lbW8iLCJjb25jYXQiLCJmaW5kVXNlcnNXaXRoQXV0aERhdGEiLCJhdXRoRGF0YSIsImJlZm9yZUZpbmQiLCJjdXJyZW50VXNlckF1dGhEYXRhIiwicHJvdmlkZXJzIiwia2V5cyIsInF1ZXJpZXMiLCJhbGwiLCJwcm92aWRlciIsInByb3ZpZGVyQXV0aERhdGEiLCJzdG9yZWRQcm92aWRlckRhdGEiLCJpbmNvbWluZ0tleXMiLCJpc1VuY2hhbmdlZCIsInNvbWUiLCJrZXkiLCJpc0RlZXBTdHJpY3RFcXVhbCIsInZhbGlkYXRvckNvbmZpZyIsImF1dGhEYXRhTWFuYWdlciIsImdldFZhbGlkYXRvckZvclByb3ZpZGVyIiwidmFsaWRhdG9yIiwiYWRhcHRlciIsIklOVkFMSURfVkFMVUUiLCJ2YWxpZFF1ZXJpZXMiLCJkYXRhYmFzZSIsIiRvciIsImhhc011dGF0ZWRBdXRoRGF0YSIsInVzZXJBdXRoRGF0YSIsIm11dGF0ZWRBdXRoRGF0YSIsImZvckVhY2giLCJwcm92aWRlckRhdGEiLCJ1c2VyUHJvdmlkZXJBdXRoRGF0YSIsImhhc0NoYW5nZXMiLCJjaGVja0lmVXNlckhhc1Byb3ZpZGVkQ29uZmlndXJlZFByb3ZpZGVyc0ZvckxvZ2luIiwicmVxIiwic2F2ZWRVc2VyUHJvdmlkZXJzIiwiQm9vbGVhbiIsImhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlciIsInBvbGljeSIsImFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQiLCJoYXNQcm92aWRlZEF0TGVhc3RPbmVBZGRpdGlvbmFsUHJvdmlkZXIiLCJyZXF1ZXN0T2JqZWN0IiwiaXAiLCJjYWxsIiwiT1RIRVJfQ0FVU0UiLCJqb2luIiwiaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uIiwiZm91bmRVc2VyIiwiVXNlciIsImdldFVzZXJJZCIsImZldGNoIiwidXBkYXRlZE9iamVjdCIsImJ1aWxkUGFyc2VPYmplY3RzIiwiZ2V0UmVxdWVzdE9iamVjdCIsImFjYyIsImF1dGhEYXRhUmVzcG9uc2UiLCJhdXRoS2V5cyIsInNvcnQiLCJhdXRoUHJvdmlkZXIiLCJlbmFibGVkIiwiVU5TVVBQT1JURURfU0VSVklDRSIsInZhbGlkYXRpb25SZXN1bHQiLCJ0cmlnZ2VyTmFtZSIsImRvTm90U2F2ZSIsInNhdmUiLCJlcnIiLCJyZXNvbHZlRXJyb3IiLCJTQ1JJUFRfRkFJTEVEIiwibWVzc2FnZSIsInVzZXJTdHJpbmciLCJkYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsImF1dGhlbnRpY2F0aW9uU3RlcCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvQXV0aC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKTtcbmltcG9ydCB7IGlzRGVlcFN0cmljdEVxdWFsIH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBnZXRSZXF1ZXN0T2JqZWN0LCByZXNvbHZlRXJyb3IgfSBmcm9tICcuL3RyaWdnZXJzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IExSVUNhY2hlIGFzIExSVSB9IGZyb20gJ2xydS1jYWNoZSc7XG5pbXBvcnQgUmVzdFF1ZXJ5IGZyb20gJy4vUmVzdFF1ZXJ5JztcbmltcG9ydCBSZXN0V3JpdGUgZnJvbSAnLi9SZXN0V3JpdGUnO1xuXG4vLyBBbiBBdXRoIG9iamVjdCB0ZWxscyB5b3Ugd2hvIGlzIHJlcXVlc3Rpbmcgc29tZXRoaW5nIGFuZCB3aGV0aGVyXG4vLyB0aGUgbWFzdGVyIGtleSB3YXMgdXNlZC5cbi8vIHVzZXJPYmplY3QgaXMgYSBQYXJzZS5Vc2VyIGFuZCBjYW4gYmUgbnVsbCBpZiB0aGVyZSdzIG5vIHVzZXIuXG5mdW5jdGlvbiBBdXRoKHtcbiAgY29uZmlnLFxuICBjYWNoZUNvbnRyb2xsZXIgPSB1bmRlZmluZWQsXG4gIGlzTWFzdGVyID0gZmFsc2UsXG4gIGlzTWFpbnRlbmFuY2UgPSBmYWxzZSxcbiAgaXNSZWFkT25seSA9IGZhbHNlLFxuICB1c2VyLFxuICBpbnN0YWxsYXRpb25JZCxcbn0pIHtcbiAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyID0gY2FjaGVDb250cm9sbGVyIHx8IChjb25maWcgJiYgY29uZmlnLmNhY2hlQ29udHJvbGxlcik7XG4gIHRoaXMuaW5zdGFsbGF0aW9uSWQgPSBpbnN0YWxsYXRpb25JZDtcbiAgdGhpcy5pc01hc3RlciA9IGlzTWFzdGVyO1xuICB0aGlzLmlzTWFpbnRlbmFuY2UgPSBpc01haW50ZW5hbmNlO1xuICB0aGlzLnVzZXIgPSB1c2VyO1xuICB0aGlzLmlzUmVhZE9ubHkgPSBpc1JlYWRPbmx5O1xuXG4gIC8vIEFzc3VtaW5nIGEgdXNlcnMgcm9sZXMgd29uJ3QgY2hhbmdlIGR1cmluZyBhIHNpbmdsZSByZXF1ZXN0LCB3ZSdsbFxuICAvLyBvbmx5IGxvYWQgdGhlbSBvbmNlLlxuICB0aGlzLnVzZXJSb2xlcyA9IFtdO1xuICB0aGlzLmZldGNoZWRSb2xlcyA9IGZhbHNlO1xuICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcbn1cblxuLy8gV2hldGhlciB0aGlzIGF1dGggY291bGQgcG9zc2libHkgbW9kaWZ5IHRoZSBnaXZlbiB1c2VyIGlkLlxuLy8gSXQgc3RpbGwgY291bGQgYmUgZm9yYmlkZGVuIHZpYSBBQ0xzIGV2ZW4gaWYgdGhpcyByZXR1cm5zIHRydWUuXG5BdXRoLnByb3RvdHlwZS5pc1VuYXV0aGVudGljYXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaXNNYXN0ZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMuaXNNYWludGVuYW5jZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGhpcy51c2VyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbWFzdGVyLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBtYXN0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYXN0ZXI6IHRydWUgfSk7XG59XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG1haW50ZW5hbmNlLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBtYWludGVuYW5jZShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01haW50ZW5hbmNlOiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBtYXN0ZXItbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIHJlYWRPbmx5KGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFzdGVyOiB0cnVlLCBpc1JlYWRPbmx5OiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBub2JvZHktbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIG5vYm9keShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01hc3RlcjogZmFsc2UgfSk7XG59XG5cbmNvbnN0IHRocm90dGxlID0gbmV3IExSVSh7XG4gIG1heDogMTAwMDAsXG4gIHR0bDogNTAwLFxufSk7XG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHNlc3Npb24gc2hvdWxkIGJlIHVwZGF0ZWQgYmFzZWQgb24gbGFzdCB1cGRhdGUgdGltZSAmIHNlc3Npb24gbGVuZ3RoLlxuICovXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5KGNvbmZpZywgc2Vzc2lvbikge1xuICBjb25zdCByZXNldEFmdGVyID0gY29uZmlnLnNlc3Npb25MZW5ndGggLyAyO1xuICBjb25zdCBsYXN0VXBkYXRlZCA9IG5ldyBEYXRlKHNlc3Npb24/LnVwZGF0ZWRBdCk7XG4gIGNvbnN0IHNraXBSYW5nZSA9IG5ldyBEYXRlKCk7XG4gIHNraXBSYW5nZS5zZXRUaW1lKHNraXBSYW5nZS5nZXRUaW1lKCkgLSByZXNldEFmdGVyICogMTAwMCk7XG4gIHJldHVybiBsYXN0VXBkYXRlZCA8PSBza2lwUmFuZ2U7XG59XG5cbmNvbnN0IHJlbmV3U2Vzc2lvbklmTmVlZGVkID0gYXN5bmMgKHsgY29uZmlnLCBzZXNzaW9uLCBzZXNzaW9uVG9rZW4gfSkgPT4ge1xuICBpZiAoIWNvbmZpZz8uZXh0ZW5kU2Vzc2lvbk9uVXNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0aHJvdHRsZS5nZXQoc2Vzc2lvblRva2VuKSkge1xuICAgIHJldHVybjtcbiAgfVxuICB0aHJvdHRsZS5zZXQoc2Vzc2lvblRva2VuLCB0cnVlKTtcbiAgdHJ5IHtcbiAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBhdXRoOiBtYXN0ZXIoY29uZmlnKSxcbiAgICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogJ19TZXNzaW9uJyxcbiAgICAgICAgcmVzdFdoZXJlOiB7IHNlc3Npb25Ub2tlbiB9LFxuICAgICAgICByZXN0T3B0aW9uczogeyBsaW1pdDogMSB9LFxuICAgICAgfSk7XG4gICAgICBjb25zdCB7IHJlc3VsdHMgfSA9IGF3YWl0IHF1ZXJ5LmV4ZWN1dGUoKTtcbiAgICAgIHNlc3Npb24gPSByZXN1bHRzWzBdO1xuICAgIH1cblxuICAgIGlmICghc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeShjb25maWcsIHNlc3Npb24pIHx8ICFzZXNzaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGV4cGlyZXNBdCA9IGNvbmZpZy5nZW5lcmF0ZVNlc3Npb25FeHBpcmVzQXQoKTtcbiAgICBhd2FpdCBuZXcgUmVzdFdyaXRlKFxuICAgICAgY29uZmlnLFxuICAgICAgbWFzdGVyKGNvbmZpZyksXG4gICAgICAnX1Nlc3Npb24nLFxuICAgICAgeyBvYmplY3RJZDogc2Vzc2lvbi5vYmplY3RJZCB9LFxuICAgICAgeyBleHBpcmVzQXQ6IFBhcnNlLl9lbmNvZGUoZXhwaXJlc0F0KSB9XG4gICAgKS5leGVjdXRlKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZT8uY29kZSAhPT0gUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCkge1xuICAgICAgbG9nZ2VyLmVycm9yKCdDb3VsZCBub3QgdXBkYXRlIHNlc3Npb24gZXhwaXJ5OiAnLCBlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gQXV0aCBvYmplY3RcbmNvbnN0IGdldEF1dGhGb3JTZXNzaW9uVG9rZW4gPSBhc3luYyBmdW5jdGlvbiAoe1xuICBjb25maWcsXG4gIGNhY2hlQ29udHJvbGxlcixcbiAgc2Vzc2lvblRva2VuLFxuICBpbnN0YWxsYXRpb25JZCxcbn0pIHtcbiAgY2FjaGVDb250cm9sbGVyID0gY2FjaGVDb250cm9sbGVyIHx8IChjb25maWcgJiYgY29uZmlnLmNhY2hlQ29udHJvbGxlcik7XG4gIGlmIChjYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZUNvbnRyb2xsZXIudXNlci5nZXQoc2Vzc2lvblRva2VuKTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICBjb25zdCB7IGV4cGlyZXNBdDogY2FjaGVkRXhwaXJlc0F0LCAuLi51c2VySlNPTiB9ID0gY2FjaGVkO1xuICAgICAgaWYgKGNhY2hlZEV4cGlyZXNBdCAmJiBuZXcgRGF0ZShjYWNoZWRFeHBpcmVzQXQpIDwgbmV3IERhdGUoKSkge1xuICAgICAgICBjYWNoZUNvbnRyb2xsZXIudXNlci5kZWwoc2Vzc2lvblRva2VuKTtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ1Nlc3Npb24gdG9rZW4gaXMgZXhwaXJlZC4nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNhY2hlZFVzZXIgPSBQYXJzZS5PYmplY3QuZnJvbUpTT04odXNlckpTT04pO1xuICAgICAgcmVuZXdTZXNzaW9uSWZOZWVkZWQoeyBjb25maWcsIHNlc3Npb25Ub2tlbiB9KTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgIG5ldyBBdXRoKHtcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgY2FjaGVDb250cm9sbGVyLFxuICAgICAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgICAgICBpbnN0YWxsYXRpb25JZCxcbiAgICAgICAgICB1c2VyOiBjYWNoZWRVc2VyLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBsZXQgcmVzdWx0cztcbiAgaWYgKGNvbmZpZykge1xuICAgIGNvbnN0IHJlc3RPcHRpb25zID0ge1xuICAgICAgbGltaXQ6IDEsXG4gICAgICBpbmNsdWRlOiAndXNlcicsXG4gICAgfTtcbiAgICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgICBjb25maWcsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGF1dGg6IG1hc3Rlcihjb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1Nlc3Npb24nLFxuICAgICAgcmVzdFdoZXJlOiB7IHNlc3Npb25Ub2tlbiB9LFxuICAgICAgcmVzdE9wdGlvbnMsXG4gICAgfSk7XG4gICAgcmVzdWx0cyA9IChhd2FpdCBxdWVyeS5leGVjdXRlKCkpLnJlc3VsdHM7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0cyA9IChcbiAgICAgIGF3YWl0IG5ldyBQYXJzZS5RdWVyeShQYXJzZS5TZXNzaW9uKVxuICAgICAgICAubGltaXQoMSlcbiAgICAgICAgLmluY2x1ZGUoJ3VzZXInKVxuICAgICAgICAuZXF1YWxUbygnc2Vzc2lvblRva2VuJywgc2Vzc2lvblRva2VuKVxuICAgICAgICAuZmluZCh7IHVzZU1hc3RlcktleTogdHJ1ZSB9KVxuICAgICkubWFwKG9iaiA9PiBvYmoudG9KU09OKCkpO1xuICB9XG5cbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAxIHx8ICFyZXN1bHRzWzBdWyd1c2VyJ10pIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gIH1cbiAgY29uc3Qgc2Vzc2lvbiA9IHJlc3VsdHNbMF07XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCksXG4gICAgZXhwaXJlc0F0ID0gc2Vzc2lvbi5leHBpcmVzQXQgPyBuZXcgRGF0ZShzZXNzaW9uLmV4cGlyZXNBdC5pc28pIDogdW5kZWZpbmVkO1xuICBpZiAoZXhwaXJlc0F0IDwgbm93KSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ1Nlc3Npb24gdG9rZW4gaXMgZXhwaXJlZC4nKTtcbiAgfVxuICBjb25zdCBvYmogPSBzZXNzaW9uLnVzZXI7XG5cbiAgaWYgKHR5cGVvZiBvYmpbJ29iamVjdElkJ10gPT09ICdzdHJpbmcnICYmIG9ialsnb2JqZWN0SWQnXS5zdGFydHNXaXRoKCdyb2xlOicpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUiwgJ0ludmFsaWQgb2JqZWN0IElELicpO1xuICB9XG5cbiAgZGVsZXRlIG9iai5wYXNzd29yZDtcbiAgb2JqWydjbGFzc05hbWUnXSA9ICdfVXNlcic7XG4gIG9ialsnc2Vzc2lvblRva2VuJ10gPSBzZXNzaW9uVG9rZW47XG4gIGlmIChjYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjYWNoZUNvbnRyb2xsZXIudXNlci5wdXQoc2Vzc2lvblRva2VuLCB7IC4uLm9iaiwgZXhwaXJlc0F0OiBleHBpcmVzQXQ/LnRvSVNPU3RyaW5nKCkgfSk7XG4gIH1cbiAgcmVuZXdTZXNzaW9uSWZOZWVkZWQoeyBjb25maWcsIHNlc3Npb24sIHNlc3Npb25Ub2tlbiB9KTtcbiAgY29uc3QgdXNlck9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihvYmopO1xuICByZXR1cm4gbmV3IEF1dGgoe1xuICAgIGNvbmZpZyxcbiAgICBjYWNoZUNvbnRyb2xsZXIsXG4gICAgaXNNYXN0ZXI6IGZhbHNlLFxuICAgIGluc3RhbGxhdGlvbklkLFxuICAgIHVzZXI6IHVzZXJPYmplY3QsXG4gIH0pO1xufTtcblxudmFyIGdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4gPSBhc3luYyBmdW5jdGlvbiAoeyBjb25maWcsIHNlc3Npb25Ub2tlbiwgaW5zdGFsbGF0aW9uSWQgfSkge1xuICB2YXIgcmVzdE9wdGlvbnMgPSB7XG4gICAgbGltaXQ6IDEsXG4gIH07XG4gIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gIHZhciBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICBjb25maWcsXG4gICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgY2xhc3NOYW1lOiAnX1VzZXInLFxuICAgIHJlc3RXaGVyZTogeyBfc2Vzc2lvbl90b2tlbjogc2Vzc2lvblRva2VuIH0sXG4gICAgcmVzdE9wdGlvbnMsXG4gIH0pO1xuICByZXR1cm4gcXVlcnkuZXhlY3V0ZSgpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgIHZhciByZXN1bHRzID0gcmVzcG9uc2UucmVzdWx0cztcbiAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdpbnZhbGlkIGxlZ2FjeSBzZXNzaW9uIHRva2VuJyk7XG4gICAgfVxuICAgIGNvbnN0IG9iaiA9IHJlc3VsdHNbMF07XG5cbiAgICBpZiAodHlwZW9mIG9ialsnb2JqZWN0SWQnXSA9PT0gJ3N0cmluZycgJiYgb2JqWydvYmplY3RJZCddLnN0YXJ0c1dpdGgoJ3JvbGU6JykpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlRFUk5BTF9TRVJWRVJfRVJST1IsICdJbnZhbGlkIG9iamVjdCBJRC4nKTtcbiAgICB9XG5cbiAgICBvYmouY2xhc3NOYW1lID0gJ19Vc2VyJztcbiAgICBjb25zdCB1c2VyT2JqZWN0ID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKG9iaik7XG4gICAgcmV0dXJuIG5ldyBBdXRoKHtcbiAgICAgIGNvbmZpZyxcbiAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgIGluc3RhbGxhdGlvbklkLFxuICAgICAgdXNlcjogdXNlck9iamVjdCxcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIHJvbGUgbmFtZXNcbkF1dGgucHJvdG90eXBlLmdldFVzZXJSb2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaXNNYXN0ZXIgfHwgdGhpcy5pc01haW50ZW5hbmNlIHx8ICF0aGlzLnVzZXIpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgfVxuICBpZiAodGhpcy5mZXRjaGVkUm9sZXMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudXNlclJvbGVzKTtcbiAgfVxuICBpZiAodGhpcy5yb2xlUHJvbWlzZSkge1xuICAgIHJldHVybiB0aGlzLnJvbGVQcm9taXNlO1xuICB9XG4gIHRoaXMucm9sZVByb21pc2UgPSB0aGlzLl9sb2FkUm9sZXMoKTtcbiAgcmV0dXJuIHRoaXMucm9sZVByb21pc2U7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5nZXRSb2xlc0ZvclVzZXIgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIC8vU3RhY2sgYWxsIFBhcnNlLlJvbGVcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICBpZiAodGhpcy5jb25maWcpIHtcbiAgICBjb25zdCByZXN0V2hlcmUgPSB7XG4gICAgICB1c2Vyczoge1xuICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnX1VzZXInLFxuICAgICAgICBvYmplY3RJZDogdGhpcy51c2VyLmlkLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBhdXRoOiBtYXN0ZXIodGhpcy5jb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgcmVzdFdoZXJlLFxuICAgIH0pO1xuICAgIGF3YWl0IHF1ZXJ5LmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQpKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuUm9sZSlcbiAgICAgIC5lcXVhbFRvKCd1c2VycycsIHRoaXMudXNlcilcbiAgICAgIC5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0LnRvSlNPTigpKSwgeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBJdGVyYXRlcyB0aHJvdWdoIHRoZSByb2xlIHRyZWUgYW5kIGNvbXBpbGVzIGEgdXNlcidzIHJvbGVzXG5BdXRoLnByb3RvdHlwZS5fbG9hZFJvbGVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCBjYWNoZWRSb2xlcyA9IGF3YWl0IHRoaXMuY2FjaGVDb250cm9sbGVyLnJvbGUuZ2V0KHRoaXMudXNlci5pZCk7XG4gICAgaWYgKGNhY2hlZFJvbGVzICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZmV0Y2hlZFJvbGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMudXNlclJvbGVzID0gY2FjaGVkUm9sZXM7XG4gICAgICByZXR1cm4gY2FjaGVkUm9sZXM7XG4gICAgfVxuICB9XG5cbiAgLy8gRmlyc3QgZ2V0IHRoZSByb2xlIGlkcyB0aGlzIHVzZXIgaXMgZGlyZWN0bHkgYSBtZW1iZXIgb2ZcbiAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZ2V0Um9sZXNGb3JVc2VyKCk7XG4gIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICB0aGlzLnVzZXJSb2xlcyA9IFtdO1xuICAgIHRoaXMuZmV0Y2hlZFJvbGVzID0gdHJ1ZTtcbiAgICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcblxuICAgIHRoaXMuY2FjaGVSb2xlcygpO1xuICAgIHJldHVybiB0aGlzLnVzZXJSb2xlcztcbiAgfVxuXG4gIGNvbnN0IHJvbGVzTWFwID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKG0sIHIpID0+IHtcbiAgICAgIG0ubmFtZXMucHVzaChyLm5hbWUpO1xuICAgICAgbS5pZHMucHVzaChyLm9iamVjdElkKTtcbiAgICAgIHJldHVybiBtO1xuICAgIH0sXG4gICAgeyBpZHM6IFtdLCBuYW1lczogW10gfVxuICApO1xuXG4gIC8vIHJ1biB0aGUgcmVjdXJzaXZlIGZpbmRpbmdcbiAgY29uc3Qgcm9sZU5hbWVzID0gYXdhaXQgdGhpcy5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMocm9sZXNNYXAuaWRzLCByb2xlc01hcC5uYW1lcyk7XG4gIHRoaXMudXNlclJvbGVzID0gcm9sZU5hbWVzLm1hcChyID0+IHtcbiAgICByZXR1cm4gJ3JvbGU6JyArIHI7XG4gIH0pO1xuICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gIHRoaXMucm9sZVByb21pc2UgPSBudWxsO1xuICB0aGlzLmNhY2hlUm9sZXMoKTtcbiAgcmV0dXJuIHRoaXMudXNlclJvbGVzO1xufTtcblxuQXV0aC5wcm90b3R5cGUuY2FjaGVSb2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLmNhY2hlQ29udHJvbGxlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0aGlzLmNhY2hlQ29udHJvbGxlci5yb2xlLnB1dCh0aGlzLnVzZXIuaWQsIEFycmF5KC4uLnRoaXMudXNlclJvbGVzKSk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuY2xlYXJSb2xlQ2FjaGUgPSBmdW5jdGlvbiAoc2Vzc2lvblRva2VuKSB7XG4gIGlmICghdGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIucm9sZS5kZWwodGhpcy51c2VyLmlkKTtcbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIudXNlci5kZWwoc2Vzc2lvblRva2VuKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5nZXRSb2xlc0J5SWRzID0gYXN5bmMgZnVuY3Rpb24gKGlucykge1xuICBjb25zdCByZXN1bHRzID0gW107XG4gIC8vIEJ1aWxkIGFuIE9SIHF1ZXJ5IGFjcm9zcyBhbGwgcGFyZW50Um9sZXNcbiAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgIGF3YWl0IG5ldyBQYXJzZS5RdWVyeShQYXJzZS5Sb2xlKVxuICAgICAgLmNvbnRhaW5lZEluKFxuICAgICAgICAncm9sZXMnLFxuICAgICAgICBpbnMubWFwKGlkID0+IHtcbiAgICAgICAgICBjb25zdCByb2xlID0gbmV3IFBhcnNlLk9iamVjdChQYXJzZS5Sb2xlKTtcbiAgICAgICAgICByb2xlLmlkID0gaWQ7XG4gICAgICAgICAgcmV0dXJuIHJvbGU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdC50b0pTT04oKSksIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJvbGVzID0gaW5zLm1hcChpZCA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgICBvYmplY3RJZDogaWQsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc3RXaGVyZSA9IHsgcm9sZXM6IHsgJGluOiByb2xlcyB9IH07XG4gICAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGF1dGg6IG1hc3Rlcih0aGlzLmNvbmZpZyksXG4gICAgICBjbGFzc05hbWU6ICdfUm9sZScsXG4gICAgICByZXN0V2hlcmUsXG4gICAgfSk7XG4gICAgYXdhaXQgcXVlcnkuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdCkpO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gR2l2ZW4gYSBsaXN0IG9mIHJvbGVJZHMsIGZpbmQgYWxsIHRoZSBwYXJlbnQgcm9sZXMsIHJldHVybnMgYSBwcm9taXNlIHdpdGggYWxsIG5hbWVzXG5BdXRoLnByb3RvdHlwZS5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMgPSBmdW5jdGlvbiAocm9sZUlEcywgbmFtZXMgPSBbXSwgcXVlcmllZFJvbGVzID0ge30pIHtcbiAgY29uc3QgaW5zID0gcm9sZUlEcy5maWx0ZXIocm9sZUlEID0+IHtcbiAgICBjb25zdCB3YXNRdWVyaWVkID0gcXVlcmllZFJvbGVzW3JvbGVJRF0gIT09IHRydWU7XG4gICAgcXVlcmllZFJvbGVzW3JvbGVJRF0gPSB0cnVlO1xuICAgIHJldHVybiB3YXNRdWVyaWVkO1xuICB9KTtcblxuICAvLyBhbGwgcm9sZXMgYXJlIGFjY291bnRlZCBmb3IsIHJldHVybiB0aGUgbmFtZXNcbiAgaWYgKGlucy5sZW5ndGggPT0gMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoWy4uLm5ldyBTZXQobmFtZXMpXSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5nZXRSb2xlc0J5SWRzKGlucylcbiAgICAudGhlbihyZXN1bHRzID0+IHtcbiAgICAgIC8vIE5vdGhpbmcgZm91bmRcbiAgICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuYW1lcyk7XG4gICAgICB9XG4gICAgICAvLyBNYXAgdGhlIHJlc3VsdHMgd2l0aCBhbGwgSWRzIGFuZCBuYW1lc1xuICAgICAgY29uc3QgcmVzdWx0TWFwID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAgIChtZW1vLCByb2xlKSA9PiB7XG4gICAgICAgICAgbWVtby5uYW1lcy5wdXNoKHJvbGUubmFtZSk7XG4gICAgICAgICAgbWVtby5pZHMucHVzaChyb2xlLm9iamVjdElkKTtcbiAgICAgICAgICByZXR1cm4gbWVtbztcbiAgICAgICAgfSxcbiAgICAgICAgeyBpZHM6IFtdLCBuYW1lczogW10gfVxuICAgICAgKTtcbiAgICAgIC8vIHN0b3JlIHRoZSBuZXcgZm91bmQgbmFtZXNcbiAgICAgIG5hbWVzID0gbmFtZXMuY29uY2F0KHJlc3VsdE1hcC5uYW1lcyk7XG4gICAgICAvLyBmaW5kIHRoZSBuZXh0IG9uZXMsIGNpcmN1bGFyIHJvbGVzIHdpbGwgYmUgY3V0XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMocmVzdWx0TWFwLmlkcywgbmFtZXMsIHF1ZXJpZWRSb2xlcyk7XG4gICAgfSlcbiAgICAudGhlbihuYW1lcyA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFsuLi5uZXcgU2V0KG5hbWVzKV0pO1xuICAgIH0pO1xufTtcblxuY29uc3QgZmluZFVzZXJzV2l0aEF1dGhEYXRhID0gYXN5bmMgKGNvbmZpZywgYXV0aERhdGEsIGJlZm9yZUZpbmQsIGN1cnJlbnRVc2VyQXV0aERhdGEpID0+IHtcbiAgY29uc3QgcHJvdmlkZXJzID0gT2JqZWN0LmtleXMoYXV0aERhdGEpO1xuXG4gIGNvbnN0IHF1ZXJpZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcm92aWRlcnMubWFwKGFzeW5jIHByb3ZpZGVyID0+IHtcbiAgICAgIGNvbnN0IHByb3ZpZGVyQXV0aERhdGEgPSBhdXRoRGF0YVtwcm92aWRlcl07XG5cbiAgICAgIC8vIFNraXAgcHJvdmlkZXJzIGJlaW5nIHVubGlua2VkIChudWxsIHZhbHVlKVxuICAgICAgaWYgKHByb3ZpZGVyQXV0aERhdGEgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIFNraXAgYmVmb3JlRmluZCBvbmx5IHdoZW4gaW5jb21pbmcgZGF0YSBpcyBjb25maXJtZWQgdW5jaGFuZ2VkIGZyb20gc3RvcmVkIGRhdGEuXG4gICAgICAvLyBUaGlzIGhhbmRsZXMgZWNob2VkLWJhY2sgYXV0aERhdGEgZnJvbSBhZnRlckZpbmQgKGUuZy4gY2xpZW50IHNlbmRzIGJhY2sgeyBpZDogJ3gnIH1cbiAgICAgIC8vIGFsb25nc2lkZSBhIHByb3ZpZGVyIHVubGluaykuIE9uIGxvZ2luL3NpZ251cCwgY3VycmVudFVzZXJBdXRoRGF0YSBpcyB1bmRlZmluZWQgc29cbiAgICAgIC8vIGJlZm9yZUZpbmQgYWx3YXlzIHJ1bnMsIHByZXNlcnZpbmcgaXQgYXMgdGhlIHNlY3VyaXR5IGdhdGUgZm9yIG1pc3NpbmcgY3JlZGVudGlhbHMuXG4gICAgICBjb25zdCBzdG9yZWRQcm92aWRlckRhdGEgPSBjdXJyZW50VXNlckF1dGhEYXRhPy5bcHJvdmlkZXJdO1xuICAgICAgY29uc3QgaW5jb21pbmdLZXlzID0gT2JqZWN0LmtleXMocHJvdmlkZXJBdXRoRGF0YSB8fCB7fSk7XG4gICAgICBjb25zdCBpc1VuY2hhbmdlZCA9IHN0b3JlZFByb3ZpZGVyRGF0YSAmJiBpbmNvbWluZ0tleXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAhaW5jb21pbmdLZXlzLnNvbWUoa2V5ID0+ICFpc0RlZXBTdHJpY3RFcXVhbChwcm92aWRlckF1dGhEYXRhW2tleV0sIHN0b3JlZFByb3ZpZGVyRGF0YVtrZXldKSk7XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRvckNvbmZpZyA9IGNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgLy8gU2tpcCBkYXRhYmFzZSBxdWVyeSBmb3IgdW5jb25maWd1cmVkIHByb3ZpZGVycyB0byBhdm9pZCB1bmluZGV4ZWQgY29sbGVjdGlvbiBzY2FucztcbiAgICAgIC8vIHRoZSBwcm92aWRlciB3aWxsIGJlIHJlamVjdGVkIGxhdGVyIGluIGhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbiB3aXRoIFVOU1VQUE9SVEVEX1NFUlZJQ0VcbiAgICAgIGlmICghdmFsaWRhdG9yQ29uZmlnPy52YWxpZGF0b3IpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBhZGFwdGVyID0gdmFsaWRhdG9yQ29uZmlnLmFkYXB0ZXI7XG4gICAgICBpZiAoYmVmb3JlRmluZCAmJiB0eXBlb2YgYWRhcHRlcj8uYmVmb3JlRmluZCA9PT0gJ2Z1bmN0aW9uJyAmJiAhaXNVbmNoYW5nZWQpIHtcbiAgICAgICAgYXdhaXQgYWRhcHRlci5iZWZvcmVGaW5kKHByb3ZpZGVyQXV0aERhdGEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXByb3ZpZGVyQXV0aERhdGE/LmlkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHByb3ZpZGVyQXV0aERhdGEuaWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1ZBTFVFLCBgSW52YWxpZCBhdXRoRGF0YSBpZCBmb3IgcHJvdmlkZXIgJyR7cHJvdmlkZXJ9Jy5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgW2BhdXRoRGF0YS4ke3Byb3ZpZGVyfS5pZGBdOiBwcm92aWRlckF1dGhEYXRhLmlkIH07XG4gICAgfSlcbiAgKTtcblxuICAvLyBGaWx0ZXIgb3V0IG51bGwgcXVlcmllc1xuICBjb25zdCB2YWxpZFF1ZXJpZXMgPSBxdWVyaWVzLmZpbHRlcihxdWVyeSA9PiBxdWVyeSAhPT0gbnVsbCk7XG5cbiAgaWYgKCF2YWxpZFF1ZXJpZXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gUGVyZm9ybSBkYXRhYmFzZSBxdWVyeVxuICByZXR1cm4gY29uZmlnLmRhdGFiYXNlLmZpbmQoJ19Vc2VyJywgeyAkb3I6IHZhbGlkUXVlcmllcyB9LCB7IGxpbWl0OiAyIH0pO1xufTtcblxuY29uc3QgaGFzTXV0YXRlZEF1dGhEYXRhID0gKGF1dGhEYXRhLCB1c2VyQXV0aERhdGEpID0+IHtcbiAgaWYgKCF1c2VyQXV0aERhdGEpIHsgcmV0dXJuIHsgaGFzTXV0YXRlZEF1dGhEYXRhOiB0cnVlLCBtdXRhdGVkQXV0aERhdGE6IGF1dGhEYXRhIH07IH1cbiAgY29uc3QgbXV0YXRlZEF1dGhEYXRhID0ge307XG4gIE9iamVjdC5rZXlzKGF1dGhEYXRhKS5mb3JFYWNoKHByb3ZpZGVyID0+IHtcbiAgICAvLyBBbm9ueW1vdXMgcHJvdmlkZXIgaXMgbm90IGhhbmRsZWQgdGhpcyB3YXlcbiAgICBpZiAocHJvdmlkZXIgPT09ICdhbm9ueW1vdXMnKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHByb3ZpZGVyRGF0YSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICBjb25zdCB1c2VyUHJvdmlkZXJBdXRoRGF0YSA9IHVzZXJBdXRoRGF0YVtwcm92aWRlcl07XG5cbiAgICAvLyBJZiB1bmxpbmtpbmcgKHNldHRpbmcgdG8gbnVsbCksIGNvbnNpZGVyIGl0IG11dGF0ZWRcbiAgICBpZiAocHJvdmlkZXJEYXRhID09PSBudWxsKSB7XG4gICAgICBtdXRhdGVkQXV0aERhdGFbcHJvdmlkZXJdID0gcHJvdmlkZXJEYXRhO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIHByb3ZpZGVyIGRvZXNuJ3QgZXhpc3QgaW4gc3RvcmVkIGRhdGEsIGl0J3MgbmV3XG4gICAgaWYgKCF1c2VyUHJvdmlkZXJBdXRoRGF0YSkge1xuICAgICAgbXV0YXRlZEF1dGhEYXRhW3Byb3ZpZGVyXSA9IHByb3ZpZGVyRGF0YTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBpbmNvbWluZyBkYXRhIHJlcHJlc2VudHMgYWN0dWFsIGNoYW5nZXMgdnMganVzdCBlY2hvaW5nIGJhY2tcbiAgICAvLyB3aGF0IGFmdGVyRmluZCByZXR1cm5lZC4gSWYgaW5jb21pbmcgZGF0YSBpcyBhIHN1YnNldCBvZiBzdG9yZWQgZGF0YVxuICAgIC8vIChhbGwgaW5jb21pbmcgZmllbGRzIG1hdGNoIHN0b3JlZCB2YWx1ZXMpLCBpdCdzIG5vdCBtdXRhdGVkLlxuICAgIC8vIElmIGluY29taW5nIGRhdGEgaGFzIGRpZmZlcmVudCB2YWx1ZXMgb3IgZmllbGRzIG5vdCBpbiBzdG9yZWQgZGF0YSwgaXQncyBtdXRhdGVkLlxuICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBhZnRlckZpbmQgc3RyaXBzIHNlbnNpdGl2ZSBmaWVsZHMgbGlrZSAnY29kZSc6XG4gICAgLy8gLSBJbmNvbWluZzogeyBpZDogJ3gnIH0sIFN0b3JlZDogeyBpZDogJ3gnLCBjb2RlOiAnc2VjcmV0JyB9IC0+IE5PVCBtdXRhdGVkIChzdWJzZXQpXG4gICAgLy8gLSBJbmNvbWluZzogeyBpZDogJ3gnLCB0b2tlbjogJ25ldycgfSwgU3RvcmVkOiB7IGlkOiAneCcsIHRva2VuOiAnb2xkJyB9IC0+IE1VVEFURURcbiAgICBjb25zdCBpbmNvbWluZ0tleXMgPSBPYmplY3Qua2V5cyhwcm92aWRlckRhdGEgfHwge30pO1xuICAgIGNvbnN0IGhhc0NoYW5nZXMgPSBpbmNvbWluZ0tleXMuc29tZShrZXkgPT4ge1xuICAgICAgcmV0dXJuICFpc0RlZXBTdHJpY3RFcXVhbChwcm92aWRlckRhdGFba2V5XSwgdXNlclByb3ZpZGVyQXV0aERhdGFba2V5XSk7XG4gICAgfSk7XG5cbiAgICBpZiAoaGFzQ2hhbmdlcykge1xuICAgICAgbXV0YXRlZEF1dGhEYXRhW3Byb3ZpZGVyXSA9IHByb3ZpZGVyRGF0YTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYXNNdXRhdGVkQXV0aERhdGEgPSBPYmplY3Qua2V5cyhtdXRhdGVkQXV0aERhdGEpLmxlbmd0aCAhPT0gMDtcbiAgcmV0dXJuIHsgaGFzTXV0YXRlZEF1dGhEYXRhLCBtdXRhdGVkQXV0aERhdGEgfTtcbn07XG5cbmNvbnN0IGNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4gPSAoXG4gIHJlcSA9IHt9LFxuICBhdXRoRGF0YSA9IHt9LFxuICB1c2VyQXV0aERhdGEgPSB7fSxcbiAgY29uZmlnXG4pID0+IHtcbiAgY29uc3Qgc2F2ZWRVc2VyUHJvdmlkZXJzID0gT2JqZWN0LmtleXModXNlckF1dGhEYXRhKVxuICAgIC5tYXAocHJvdmlkZXIgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gY29uZmlnLmF1dGhEYXRhTWFuYWdlci5nZXRWYWxpZGF0b3JGb3JQcm92aWRlcihwcm92aWRlcik7XG4gICAgICBpZiAoIXZhbGlkYXRvciB8fCAhdmFsaWRhdG9yLmFkYXB0ZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4geyBuYW1lOiBwcm92aWRlciwgYWRhcHRlcjogdmFsaWRhdG9yLmFkYXB0ZXIgfTtcbiAgICB9KVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgY29uc3QgaGFzUHJvdmlkZWRBU29sb1Byb3ZpZGVyID0gc2F2ZWRVc2VyUHJvdmlkZXJzLnNvbWUoXG4gICAgcHJvdmlkZXIgPT5cbiAgICAgIHByb3ZpZGVyICYmIHByb3ZpZGVyLmFkYXB0ZXIgJiYgcHJvdmlkZXIuYWRhcHRlci5wb2xpY3kgPT09ICdzb2xvJyAmJiBhdXRoRGF0YVtwcm92aWRlci5uYW1lXVxuICApO1xuXG4gIC8vIFNvbG8gcHJvdmlkZXJzIGNhbiBiZSBjb25zaWRlcmVkIGFzIHNhZmUsIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGNoZWNrIGlmIHRoZSB1c2VyIG5lZWRzXG4gIC8vIHRvIHByb3ZpZGUgYW4gYWRkaXRpb25hbCBwcm92aWRlciB0byBsb2dpbi4gQW4gYXV0aCBhZGFwdGVyIHdpdGggXCJzb2xvXCIgKGxpa2Ugd2ViYXV0aG4pIG1lYW5zXG4gIC8vIG5vIFwiYWRkaXRpb25hbFwiIGF1dGggbmVlZHMgdG8gYmUgcHJvdmlkZWQgdG8gbG9naW4gKGxpa2UgT1RQLCBNRkEpXG4gIGlmIChoYXNQcm92aWRlZEFTb2xvUHJvdmlkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kID0gW107XG4gIGNvbnN0IGhhc1Byb3ZpZGVkQXRMZWFzdE9uZUFkZGl0aW9uYWxQcm92aWRlciA9IHNhdmVkVXNlclByb3ZpZGVycy5zb21lKHByb3ZpZGVyID0+IHtcbiAgICBsZXQgcG9saWN5ID0gcHJvdmlkZXIuYWRhcHRlci5wb2xpY3k7XG4gICAgaWYgKHR5cGVvZiBwb2xpY3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3RPYmplY3QgPSB7XG4gICAgICAgIGlwOiByZXEuY29uZmlnLmlwLFxuICAgICAgICB1c2VyOiByZXEuYXV0aC51c2VyLFxuICAgICAgICBtYXN0ZXI6IHJlcS5hdXRoLmlzTWFzdGVyLFxuICAgICAgfTtcbiAgICAgIHBvbGljeSA9IHBvbGljeS5jYWxsKHByb3ZpZGVyLmFkYXB0ZXIsIHJlcXVlc3RPYmplY3QsIHVzZXJBdXRoRGF0YVtwcm92aWRlci5uYW1lXSk7XG4gICAgfVxuICAgIGlmIChwb2xpY3kgPT09ICdhZGRpdGlvbmFsJykge1xuICAgICAgaWYgKGF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUHVzaCBtaXNzaW5nIHByb3ZpZGVyIGZvciBlcnJvciBtZXNzYWdlXG4gICAgICAgIGFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQucHVzaChwcm92aWRlci5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBpZiAoaGFzUHJvdmlkZWRBdExlYXN0T25lQWRkaXRpb25hbFByb3ZpZGVyIHx8ICFhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kLmxlbmd0aCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICBQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSxcbiAgICBgTWlzc2luZyBhZGRpdGlvbmFsIGF1dGhEYXRhICR7YWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZC5qb2luKCcsJyl9YFxuICApO1xufTtcblxuLy8gVmFsaWRhdGUgZWFjaCBhdXRoRGF0YSBzdGVwLWJ5LXN0ZXAgYW5kIHJldHVybiB0aGUgcHJvdmlkZXIgcmVzcG9uc2VzXG5jb25zdCBoYW5kbGVBdXRoRGF0YVZhbGlkYXRpb24gPSBhc3luYyAoYXV0aERhdGEsIHJlcSwgZm91bmRVc2VyKSA9PiB7XG4gIGxldCB1c2VyO1xuICBpZiAoZm91bmRVc2VyKSB7XG4gICAgdXNlciA9IFBhcnNlLlVzZXIuZnJvbUpTT04oeyBjbGFzc05hbWU6ICdfVXNlcicsIC4uLmZvdW5kVXNlciB9KTtcbiAgICAvLyBGaW5kIHVzZXIgYnkgc2Vzc2lvbiBhbmQgY3VycmVudCBvYmplY3RJZDsgb25seSBwYXNzIHVzZXIgaWYgaXQncyB0aGUgY3VycmVudCB1c2VyIG9yIG1hc3RlciBrZXkgaXMgcHJvdmlkZWRcbiAgfSBlbHNlIGlmIChcbiAgICAocmVxLmF1dGggJiZcbiAgICAgIHJlcS5hdXRoLnVzZXIgJiZcbiAgICAgIHR5cGVvZiByZXEuZ2V0VXNlcklkID09PSAnZnVuY3Rpb24nICYmXG4gICAgICByZXEuZ2V0VXNlcklkKCkgPT09IHJlcS5hdXRoLnVzZXIuaWQpIHx8XG4gICAgKHJlcS5hdXRoICYmIHJlcS5hdXRoLmlzTWFzdGVyICYmIHR5cGVvZiByZXEuZ2V0VXNlcklkID09PSAnZnVuY3Rpb24nICYmIHJlcS5nZXRVc2VySWQoKSlcbiAgKSB7XG4gICAgdXNlciA9IG5ldyBQYXJzZS5Vc2VyKCk7XG4gICAgdXNlci5pZCA9IHJlcS5hdXRoLmlzTWFzdGVyID8gcmVxLmdldFVzZXJJZCgpIDogcmVxLmF1dGgudXNlci5pZDtcbiAgICBhd2FpdCB1c2VyLmZldGNoKHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9XG5cbiAgY29uc3QgeyB1cGRhdGVkT2JqZWN0IH0gPSByZXEuYnVpbGRQYXJzZU9iamVjdHMoKTtcbiAgY29uc3QgcmVxdWVzdE9iamVjdCA9IGdldFJlcXVlc3RPYmplY3QodW5kZWZpbmVkLCByZXEuYXV0aCwgdXBkYXRlZE9iamVjdCwgdXNlciwgcmVxLmNvbmZpZyk7XG4gIC8vIFBlcmZvcm0gdmFsaWRhdGlvbiBhcyBzdGVwLWJ5LXN0ZXAgcGlwZWxpbmUgZm9yIGJldHRlciBlcnJvciBjb25zaXN0ZW5jeVxuICAvLyBhbmQgYWxzbyB0byBhdm9pZCB0byB0cmlnZ2VyIGEgcHJvdmlkZXIgKGxpa2UgT1RQIFNNUykgaWYgYW5vdGhlciBvbmUgZmFpbHNcbiAgY29uc3QgYWNjID0geyBhdXRoRGF0YToge30sIGF1dGhEYXRhUmVzcG9uc2U6IHt9IH07XG4gIGNvbnN0IGF1dGhLZXlzID0gT2JqZWN0LmtleXMoYXV0aERhdGEpLnNvcnQoKTtcbiAgZm9yIChjb25zdCBwcm92aWRlciBvZiBhdXRoS2V5cykge1xuICAgIGxldCBtZXRob2QgPSAnJztcbiAgICB0cnkge1xuICAgICAgaWYgKGF1dGhEYXRhW3Byb3ZpZGVyXSA9PT0gbnVsbCkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gbnVsbDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCB7IHZhbGlkYXRvciB9ID0gcmVxLmNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpIHx8IHt9O1xuICAgICAgY29uc3QgYXV0aFByb3ZpZGVyID0gKHJlcS5jb25maWcuYXV0aCB8fCB7fSlbcHJvdmlkZXJdIHx8IHt9O1xuICAgICAgaWYgKCF2YWxpZGF0b3IgfHwgYXV0aFByb3ZpZGVyLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICBQYXJzZS5FcnJvci5VTlNVUFBPUlRFRF9TRVJWSUNFLFxuICAgICAgICAgICdUaGlzIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpcyB1bnN1cHBvcnRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBsZXQgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRvcihhdXRoRGF0YVtwcm92aWRlcl0sIHJlcSwgdXNlciwgcmVxdWVzdE9iamVjdCk7XG4gICAgICBtZXRob2QgPSB2YWxpZGF0aW9uUmVzdWx0ICYmIHZhbGlkYXRpb25SZXN1bHQubWV0aG9kO1xuICAgICAgcmVxdWVzdE9iamVjdC50cmlnZ2VyTmFtZSA9IG1ldGhvZDtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0ICYmIHZhbGlkYXRpb25SZXN1bHQudmFsaWRhdG9yKSB7XG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB2YWxpZGF0aW9uUmVzdWx0LnZhbGlkYXRvcigpO1xuICAgICAgfVxuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSBhdXRoRGF0YVtwcm92aWRlcl07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFPYmplY3Qua2V5cyh2YWxpZGF0aW9uUmVzdWx0KS5sZW5ndGgpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhW3Byb3ZpZGVyXSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVJlc3BvbnNlW3Byb3ZpZGVyXSA9IHZhbGlkYXRpb25SZXN1bHQucmVzcG9uc2U7XG4gICAgICB9XG4gICAgICAvLyBTb21lIGF1dGggcHJvdmlkZXJzIGFmdGVyIGluaXRpYWxpemF0aW9uIHdpbGwgYXZvaWQgdG8gcmVwbGFjZSBhdXRoRGF0YSBhbHJlYWR5IHN0b3JlZFxuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LmRvTm90U2F2ZSkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gdmFsaWRhdGlvblJlc3VsdC5zYXZlIHx8IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGUgPSByZXNvbHZlRXJyb3IoZXJyLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsXG4gICAgICAgIG1lc3NhZ2U6ICdBdXRoIGZhaWxlZC4gVW5rbm93biBlcnJvci4nLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB1c2VyU3RyaW5nID1cbiAgICAgICAgcmVxLmF1dGggJiYgcmVxLmF1dGgudXNlciA/IHJlcS5hdXRoLnVzZXIuaWQgOiByZXEuZGF0YS5vYmplY3RJZCB8fCB1bmRlZmluZWQ7XG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgIGBGYWlsZWQgcnVubmluZyBhdXRoIHN0ZXAgJHttZXRob2R9IGZvciAke3Byb3ZpZGVyfSBmb3IgdXNlciAke3VzZXJTdHJpbmd9IHdpdGggRXJyb3I6IGAgK1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGUpLFxuICAgICAgICB7XG4gICAgICAgICAgYXV0aGVudGljYXRpb25TdGVwOiBtZXRob2QsXG4gICAgICAgICAgZXJyb3I6IGUsXG4gICAgICAgICAgdXNlcjogdXNlclN0cmluZyxcbiAgICAgICAgICBwcm92aWRlcixcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBhY2M7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQXV0aCxcbiAgbWFzdGVyLFxuICBtYWludGVuYW5jZSxcbiAgbm9ib2R5LFxuICByZWFkT25seSxcbiAgc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeSxcbiAgZ2V0QXV0aEZvclNlc3Npb25Ub2tlbixcbiAgZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbixcbiAgZmluZFVzZXJzV2l0aEF1dGhEYXRhLFxuICBoYXNNdXRhdGVkQXV0aERhdGEsXG4gIGNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4sXG4gIGhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbixcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQ0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBRCxzQkFBQSxDQUFBTCxPQUFBO0FBQW9DLFNBQUFLLHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBTnBDLE1BQU1HLEtBQUssR0FBR1YsT0FBTyxDQUFDLFlBQVksQ0FBQztBQVFuQztBQUNBO0FBQ0E7QUFDQSxTQUFTVyxJQUFJQSxDQUFDO0VBQ1pDLE1BQU07RUFDTkMsZUFBZSxHQUFHQyxTQUFTO0VBQzNCQyxRQUFRLEdBQUcsS0FBSztFQUNoQkMsYUFBYSxHQUFHLEtBQUs7RUFDckJDLFVBQVUsR0FBRyxLQUFLO0VBQ2xCQyxJQUFJO0VBQ0pDO0FBQ0YsQ0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-server",
3
- "version": "9.6.0-alpha.51",
3
+ "version": "9.6.0-alpha.52",
4
4
  "description": "An express module providing a Parse-compatible API server",
5
5
  "main": "lib/index.js",
6
6
  "repository": {