@axway/amplify-auth-sdk
Advanced tools
Comparing version 2.0.2 to 2.0.3
@@ -266,6 +266,7 @@ "use strict"; | ||
const env = environments.resolve(opts.env || this.env); | ||
const name = !opts.env ? this.env : typeof opts.env === 'object' && opts.env.name || opts.env; | ||
const env = environments.resolve(name); | ||
if (!env) { | ||
throw _errors.default.INVALID_VALUE(`Invalid environment: ${opts.env || this.env}`); | ||
throw _errors.default.INVALID_VALUE(`Invalid environment: ${name}`); | ||
} | ||
@@ -309,2 +310,3 @@ | ||
log(`Using existing ${highlight(opts.authenticator.constructor.name)} authenticator`); | ||
return opts.authenticator; | ||
@@ -314,2 +316,3 @@ } | ||
if (typeof opts.username === 'string' && opts.username && typeof opts.password === 'string') { | ||
log(`Creating ${highlight('OwnerPassword')} authenticator`); | ||
return new _ownerPassword.default(opts); | ||
@@ -319,2 +322,3 @@ } | ||
if (typeof opts.clientSecret === 'string' && opts.clientSecret) { | ||
log(`Creating ${highlight('ClientSecret')} authenticator`); | ||
return new _clientSecret.default(opts); | ||
@@ -324,5 +328,7 @@ } | ||
if (typeof opts.secretFile === 'string' && opts.secretFile) { | ||
log(`Creating ${highlight('SignedJWT')} authenticator`); | ||
return new _signedJwt.default(opts); | ||
} | ||
log(`Creating ${highlight('PKCE')} authenticator`); | ||
return new _pkce.default(opts); | ||
@@ -361,2 +367,3 @@ } | ||
authenticator = this.createAuthenticator(opts); | ||
log(`Authenticator hash: ${highlight(authenticator.hash)}`); | ||
opts.hash = authenticator.hash; | ||
@@ -370,3 +377,3 @@ } | ||
for (const prop of ['baseUrl', 'clientId', 'realm', 'env']) { | ||
if (account.auth[prop] && opts[prop] !== account.auth[prop]) { | ||
if (account.auth[prop] && (prop !== 'env' && opts[prop] !== account.auth[prop] || prop === 'env' && opts[prop].name !== account.auth[prop].name)) { | ||
const from = prop === 'env' ? opts[prop].name : opts[prop]; | ||
@@ -383,10 +390,10 @@ const to = prop === 'env' ? account.auth[prop].name : account.auth[prop]; | ||
// refresh the access token if the refresh token is valid | ||
log(`Access token for account ${account.name || account.hash} is expired`); | ||
log(`Access token for account ${highlight(account.name || account.hash)} has expired`); | ||
if (account.auth.expires.refresh < Date.now()) { | ||
log(`Unable to refresh access token for account ${account.name || account.hash} because refresh token is also expired`); | ||
log(`Unable to refresh access token for account ${highlight(account.name || account.hash)} because refresh token is also expired`); | ||
return; | ||
} | ||
log(`Refreshing access token for account ${account.name || account.hash}`); | ||
log(`Refreshing access token for account ${highlight(account.name || account.hash)}`); | ||
return await authenticator.getToken(); | ||
@@ -562,2 +569,2 @@ } | ||
exports.Auth = exports.default = Auth; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkVycm9yIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJyZXF1aXJlIiwibG9nIiwiYWxlcnQiLCJoaWdobGlnaHQiLCJtYWdlbnRhIiwibm90ZSIsInNub29wbG9nZyIsInN0eWxlcyIsIkF1dGgiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJFIiwiSU5WQUxJRF9BUkdVTUVOVCIsIk9iamVjdCIsImRlZmluZVByb3BlcnRpZXMiLCJiYXNlVXJsIiwidmFsdWUiLCJjbGllbnRJZCIsImNsaWVudFNlY3JldCIsImVudiIsIm1lc3NhZ2VzIiwicGFzc3dvcmQiLCJyZWFsbSIsInNlY3JldEZpbGUiLCJzZXJ2aWNlQWNjb3VudCIsInVzZXJuYW1lIiwidG9rZW5TdG9yZSIsIlRva2VuU3RvcmUiLCJJTlZBTElEX1BBUkFNRVRFUiIsInRva2VuU3RvcmVUeXBlIiwidW5kZWZpbmVkIiwiU2VjdXJlU3RvcmUiLCJlIiwiY29kZSIsIlNFQ1VSRV9TVE9SRV9VTkFWQUlMQUJMRSIsIkZpbGVTdG9yZSIsIk1lbW9yeVN0b3JlIiwiYXBwbHlEZWZhdWx0cyIsImVudmlyb25tZW50cyIsInJlc29sdmUiLCJJTlZBTElEX1ZBTFVFIiwiY3JlYXRlQXV0aGVudGljYXRvciIsImF1dGhlbnRpY2F0b3IiLCJBdXRoZW50aWNhdG9yIiwiSU5WQUxJRF9BUlVHTUVOVCIsIk93bmVyUGFzc3dvcmQiLCJDbGllbnRTZWNyZXQiLCJTaWduZWRKV1QiLCJQS0NFIiwiZmluZCIsImFjY291bnROYW1lIiwiaGFzaCIsImFjY291bnQiLCJnZXQiLCJwcm9wIiwiYXV0aCIsImZyb20iLCJuYW1lIiwidG8iLCJleHBpcmVkIiwiZXhwaXJlcyIsInJlZnJlc2giLCJEYXRlIiwibm93IiwiZ2V0VG9rZW4iLCJnZXRJbmZvIiwibGlzdCIsImxvZ2luIiwibG9nb3V0IiwiYWNjb3VudHMiLCJhbGwiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJyZXZva2VkIiwiY2xlYXIiLCJkZWxldGUiLCJlbnRyeSIsInVybCIsInRva2VucyIsImlkX3Rva2VuIiwic3RhdHVzIiwicmVzcG9uc2VUeXBlIiwicmV0cnkiLCJlcnIiLCJzZXJ2ZXJJbmZvIiwid2VsbEtub3duIiwiYm9keSIsIm1lc3NhZ2UiLCJyZXNwb25zZSIsInN0YXR1c0NvZGUiLCJ1cGRhdGVBY2NvdW50Iiwic2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7QUFDQTs7Ozs7Ozs7Ozs7O0FBdkJBO0FBQ0EsSUFBSSxDQUFDQSxLQUFLLENBQUNDLGlCQUFYLEVBQThCO0FBQzdCQyxFQUFBQSxPQUFPLENBQUMsNkJBQUQsQ0FBUDtBQUNBOztBQXNCRCxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBVSx3QkFBVSxjQUFWLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxLQUFGO0FBQVNDLEVBQUFBLFNBQVQ7QUFBb0JDLEVBQUFBLE9BQXBCO0FBQTZCQyxFQUFBQTtBQUE3QixJQUFzQ0MsbUJBQVVDLE1BQXREO0FBRUE7Ozs7QUFHZSxNQUFNQyxJQUFOLENBQVc7QUFDekI7Ozs7Ozs7QUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQ0FDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHdDQWxDVixJQWtDVTs7QUFDdEIsUUFBSSxDQUFDQSxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNQyxnQkFBRUMsZ0JBQUYsQ0FBbUIsa0NBQW5CLENBQU47QUFDQTs7QUFFREMsSUFBQUEsTUFBTSxDQUFDQyxnQkFBUCxDQUF3QixJQUF4QixFQUE4QjtBQUM3QkMsTUFBQUEs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QUQsSUFBUSxPQUFPQSxHQUFQLEtBQWUsUUFBM0IsRUFBcUM7QUFDcEMsWUFBTW5FLGdCQUFFQyxnQkFBRixDQUFtQix1Q0FBbkIsQ0FBTjtBQUNBOztBQUVELFFBQUk7QUFDSFgsTUFBQUEsR0FBRyxDQUFFLHlCQUF3QjZFLEdBQUksS0FBOUIsQ0FBSDtBQUNBLGFBQU8sQ0FBQyxNQUFNLGtCQUFJQSxHQUFKLEVBQVM7QUFBRUksUUFBQUEsWUFBWSxFQUFFLE1BQWhCO0FBQXdCQyxRQUFBQSxLQUFLLEVBQUU7QUFBL0IsT0FBVCxDQUFQLEVBQXFESSxJQUE1RDtBQUNBLEtBSEQsQ0FHRSxPQUFPSCxHQUFQLEVBQVk7QUFDYixVQUFJQSxHQUFHLENBQUMzQixJQUFKLEtBQWEsWUFBakIsRUFBK0I7QUFDOUIyQixRQUFBQSxHQUFHLENBQUNJLE9BQUosR0FBZSxxQ0FBb0NKLEdBQUcsQ0FBQ0ssUUFBSixDQUFhQyxVQUFXLEdBQTNFO0FBQ0E7O0FBQ0QsWUFBTU4sR0FBTjtBQUNBO0FBQ0Q7QUFFRDs7Ozs7Ozs7O0FBT0EsUUFBTU8sYUFBTixDQUFvQnZDLE9BQXBCLEVBQTZCO0FBQzVCLFFBQUksS0FBSzFCLFVBQVQsRUFBcUI7QUFDcEIsWUFBTSxLQUFLQSxVQUFMLENBQWdCa0UsR0FBaEIsQ0FBb0J4QyxPQUFwQixDQUFOO0FBQ0E7QUFDRDs7QUFsWHdCIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAoIUVycm9yLnByZXBhcmVTdGFja1RyYWNlKSB7XG5cdHJlcXVpcmUoJ3NvdXJjZS1tYXAtc3VwcG9ydC9yZWdpc3RlcicpO1xufVxuXG5pbXBvcnQgRSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCBBdXRoZW50aWNhdG9yIGZyb20gJy4vYXV0aGVudGljYXRvcnMvYXV0aGVudGljYXRvcic7XG5pbXBvcnQgQ2xpZW50U2VjcmV0IGZyb20gJy4vYXV0aGVudGljYXRvcnMvY2xpZW50LXNlY3JldCc7XG5pbXBvcnQgT3duZXJQYXNzd29yZCBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL293bmVyLXBhc3N3b3JkJztcbmltcG9ydCBQS0NFIGZyb20gJy4vYXV0aGVudGljYXRvcnMvcGtjZSc7XG5pbXBvcnQgU2lnbmVkSldUIGZyb20gJy4vYXV0aGVudGljYXRvcnMvc2lnbmVkLWp3dCc7XG5cbmltcG9ydCBGaWxlU3RvcmUgZnJvbSAnLi9zdG9yZXMvZmlsZS1zdG9yZSc7XG5pbXBvcnQgTWVtb3J5U3RvcmUgZnJvbSAnLi9zdG9yZXMvbWVtb3J5LXN0b3JlJztcbmltcG9ydCBTZWN1cmVTdG9yZSBmcm9tICcuL3N0b3Jlcy9zZWN1cmUtc3RvcmUnO1xuaW1wb3J0IFRva2VuU3RvcmUgZnJvbSAnLi9zdG9yZXMvdG9rZW4tc3RvcmUnO1xuXG5pbXBvcnQgZ2V0RW5kcG9pbnRzIGZyb20gJy4vZW5kcG9pbnRzJztcbmltcG9ydCBnb3QgZnJvbSAnZ290JztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcblxuaW1wb3J0ICogYXMgZW52aXJvbm1lbnRzIGZyb20gJy4vZW52aXJvbm1lbnRzJztcbmltcG9ydCAqIGFzIHNlcnZlciBmcm9tICcuL3NlcnZlcic7XG5cbmNvbnN0IHsgbG9nIH0gPSBzbm9vcGxvZ2coJ2FtcGxpZnktYXV0aCcpO1xuY29uc3QgeyBhbGVydCwgaGlnaGxpZ2h0LCBtYWdlbnRhLCBub3RlIH0gPSBzbm9vcGxvZ2cuc3R5bGVzO1xuXG4vKipcbiAqIEF1dGhlbnRpY2F0ZXMgdGhlIG1hY2hpbmUgYW5kIHJldHJlaXZlcyB0aGUgYXV0aCB0b2tlbi5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXV0aCB7XG5cdC8qKlxuXHQgKiBUaGUgc3RvcmUgdG8gcGVyc2lzdCB0aGUgdG9rZW4uXG5cdCAqXG5cdCAqIEB0eXBlIHtUb2tlblN0b3JlfVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdHRva2VuU3RvcmUgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgYXV0aGVudGljYXRpb24gaW5zdGFuY2UgYnkgc2V0dGluZyB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhbmQgY3JlYXRpbmcgdGhlXG5cdCAqIHRva2VuIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuYmFzZVVybF0gLSBUaGUgYmFzZSBVUkwgdG8gdXNlIGZvciBhbGwgb3V0Z29pbmcgcmVxdWVzdHMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5jbGllbnRJZF0gLSBUaGUgY2xpZW50IGlkIHRvIHNwZWNpZnkgd2hlbiBhdXRoZW50aWNhdGluZy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNsaWVudFNlY3JldF0gLSBUaGUgc2VjcmV0IHRva2VuIHRvIHVzZSB0byBhdXRoZW50aWNhdGUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lbnY9cHJvZF0gLSBUaGUgZW52aXJvbm1lbnQgbmFtZS4gTXVzdCBiZSBgZGV2YCwgYHByZXByb2RgLCBvciBgcHJvZGAuXG5cdCAqIFRoZSBlbnZpcm9ubWVudCBpcyBhIHNob3J0aGFuZCB3YXkgb2Ygc3BlY2lmeWluZyBhIEF4d2F5IGRlZmF1bHQgYmFzZSBVUkwuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5ob21lRGlyXSAtIFRoZSBwYXRoIHRvIHRoZSBob21lIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBgbGliYFxuXHQgKiBkaXJlY3Rvcnkgd2hlcmUgYGtleXRhcmAgaXMgbG9jYXRlZC4gVGhpcyBvcHRpb24gaXMgcmVxdWlyZWQgd2hlbiBgdG9rZW5TdG9yZVR5cGVgIGlzIHNldCB0b1xuXHQgKiBgc2VjdXJlYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5wYXNzd29yZF0gLSBUaGUgcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHVzZXJuYW1lYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnJlYWxtXSAtIFRoZSBuYW1lIG9mIHRoZSByZWFsbSB0byBhdXRoZW50aWNhdGUgd2l0aC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnNlY3JldEZpbGVdIC0gVGhlIHBhdGggdG8gdGhlIGp3dCBzZWNyZXQgZmlsZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnNlY3VyZVNlcnZpY2VOYW1lPVwiQXh3YXkgQU1QTElGWSBBdXRoXCJdIC0gVGhlIG5hbWUgb2YgdGhlIGNvbnN1bWVyXG5cdCAqIHVzaW5nIHRoaXMgbGlicmFyeSB3aGVuIHVzaW5nIHRoZSBcInNlY3VyZVwiIHRva2VuIHN0b3JlLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLnNlcnZpY2VBY2NvdW50PWZhbHNlXSAtIFdoZW4gYHRydWVgLCBpbmRpY2F0ZXMgYXV0aGVudGljYXRpb24gaXMgYmVpbmdcblx0ICogcmVxdWVzdGVkIGJ5IGEgc2VydmljZSBpbnN0ZWFkIG9mIGEgdXNlci5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy50b2tlblJlZnJlc2hUaHJlc2hvbGQ9MF0gLSBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHRoZSBhY2Nlc3Ncblx0ICogdG9rZW4gZXhwaXJlcyBhbmQgc2hvdWxkIGJlIHJlZnJlc2hlZC5cblx0ICogQHBhcmFtIHtUb2tlblN0b3JlfSBbb3B0cy50b2tlblN0b3JlXSAtIEEgdG9rZW4gc3RvcmUgaW5zdGFuY2UgZm9yIHBlcnNpc3RpbmcgdGhlIHRva2Vucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnRva2VuU3RvcmVEaXJdIC0gVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgdG9rZW4gc3RvcmUgaXMgc2F2ZWQuIFJlcXVpcmVkXG5cdCAqIHdoZW4gdGhlIGB0b2tlblN0b3JlVHlwZWAgaXMgYHNlY3VyZWAgb3IgYGZpbGVgLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMudG9rZW5TdG9yZVR5cGU9c2VjdXJlXSAtIFRoZSB0eXBlIG9mIHN0b3JlIHRvIHBlcnNpc3QgdGhlIGFjY2VzcyB0b2tlbi5cblx0ICogUG9zc2libGUgdmFsdWVzIGluY2x1ZGU6IGBhdXRvYCwgYHNlY3VyZWAsIGBmaWxlYCwgb3IgYG1lbW9yeWAuIElmIHZhbHVlIGlzIGBhdXRvYCwgaXQgd2lsbFxuXHQgKiBhdHRlbXB0IHRvIHVzZSBgc2VjdXJlYCwgdGhlbiBgZmlsZWAsIHRoZW4gYG1lbW9yeWAuIElmIHNldCB0byBgbnVsbGAsIHRoZW4gaXQgd2lsbCBub3Rcblx0ICogcGVyc2lzdCB0aGUgYWNjZXNzIHRva2VuLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMudXNlcm5hbWVdIC0gVGhlIHVzZXJuYW1lIHVzZWQgdG8gYXV0aGVudGljYXRlLiBSZXF1aXJlcyBhIGBwYXNzd29yZGAuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHRpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywge1xuXHRcdFx0YmFzZVVybDogICAgICAgIHsgdmFsdWU6IG9wdHMuYmFzZVVybCB9LFxuXHRcdFx0Y2xpZW50SWQ6ICAgICAgIHsgdmFsdWU6IG9wdHMuY2xpZW50SWQgfSxcblx0XHRcdGNsaWVudFNlY3JldDogICB7IHZhbHVlOiBvcHRzLmNsaWVudFNlY3JldCB9LFxuXHRcdFx0ZW52OiAgICAgICAgICAgIHsgdmFsdWU6IG9wdHMuZW52IH0sXG5cdFx0XHRtZXNzYWdlczogICAgICAgeyB2YWx1ZTogb3B0cy5tZXNzYWdlcyB9LFxuXHRcdFx0cGFzc3dvcmQ6ICAgICAgIHsgdmFsdWU6IG9wdHMucGFzc3dvcmQgfSxcblx0XHRcdHJlYWxtOiAgICAgICAgICB7IHZhbHVlOiBvcHRzLnJlYWxtIH0sXG5cdFx0XHRzZWNyZXRGaWxlOiAgICAgeyB2YWx1ZTogb3B0cy5zZWNyZXRGaWxlIH0sXG5cdFx0XHRzZXJ2aWNlQWNjb3VudDogeyB2YWx1ZTogb3B0cy5zZXJ2aWNlQWNjb3VudCB9LFxuXHRcdFx0dXNlcm5hbWU6ICAgICAgIHsgdmFsdWU6IG9wdHMudXNlcm5hbWUgfVxuXHRcdH0pO1xuXG5cdFx0aWYgKG9wdHMudG9rZW5TdG9yZSkge1xuXHRcdFx0aWYgKCEob3B0cy50b2tlblN0b3JlIGluc3RhbmNlb2YgVG9rZW5TdG9yZSkpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX1BBUkFNRVRFUignRXhwZWN0ZWQgdGhlIHRva2VuIHN0b3JlIHRvIGJlIGEgXCJUb2tlblN0b3JlXCIgaW5zdGFuY2UnKTtcblx0XHRcdH1cblx0XHRcdHRoaXMudG9rZW5TdG9yZSA9IG9wdHMudG9rZW5TdG9yZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgdG9rZW5TdG9yZVR5cGUgPSBvcHRzLnRva2VuU3RvcmVUeXBlID09PSB1bmRlZmluZWQgPyAnc2VjdXJlJyA6IG9wdHMudG9rZW5TdG9yZVR5cGU7XG5cdFx0XHRzd2l0Y2ggKHRva2VuU3RvcmVUeXBlKSB7XG5cdFx0XHRcdGNhc2UgJ2F1dG8nOlxuXHRcdFx0XHRjYXNlICdzZWN1cmUnOlxuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRva2VuU3RvcmUgPSBuZXcgU2VjdXJlU3RvcmUob3B0cyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHQvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblx0XHRcdFx0XHRcdGlmICh0b2tlblN0b3JlVHlwZSA9PT0gJ2F1dG8nKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGxldCAnYXV0bycgZmFsbCB0aHJvdWdoXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGUuY29kZSA9PT0gJ0VSUl9LRVlUQVJfTk9UX0ZPVU5EJykge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBFLlNFQ1VSRV9TVE9SRV9VTkFWQUlMQUJMRSgnU2VjdXJlIHRva2VuIHN0b3JlIGlzIG5vdCBhdmFpbGFibGUuXFxuUGxlYXNlIHJlaW5zdGFsbCBvciByZWJ1aWxkIHRoaXMgYXBwbGljYXRpb24uJyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRjYXNlICdmaWxlJzpcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0dGhpcy50b2tlblN0b3JlID0gbmV3IEZpbGVTdG9yZShvcHRzKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHRcdFx0XHRcdFx0aWYgKHRva2VuU3RvcmVUeXBlID09PSAnYXV0bycgJiYgZS5jb2RlID09PSAnRVJSX01JU1NJTkdfUkVRVUlSRURfUEFSQU1FVEVSJykge1xuXHRcdFx0XHRcdFx0XHQvLyBsZXQgJ2F1dG8nIGZhbGwgdGhyb3VnaFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FzZSAnbWVtb3J5Jzpcblx0XHRcdFx0XHR0aGlzLnRva2VuU3RvcmUgPSBuZXcgTWVtb3J5U3RvcmUob3B0cyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEVuc3VyZXMgdGhlIG9wdGlvbnMgY29udGFpbnMgdGhlIGNvbmZpZ3VyYWJsZSBzZXR0aW5ncy4gVmFsaWRhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBjb2RlXG5cdCAqIHJlcXVpcmluZyB0aGUgdmFsdWVzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGFwcGx5RGVmYXVsdHMob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGVudiA9IGVudmlyb25tZW50cy5yZXNvbHZlKG9wdHMuZW52IHx8IHRoaXMuZW52KTtcblx0XHRpZiAoIWVudikge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX1ZBTFVFKGBJbnZhbGlkIGVudmlyb25tZW50OiAke29wdHMuZW52IHx8IHRoaXMuZW52fWApO1xuXHRcdH1cblxuXHRcdG9wdHMuYmFzZVVybCAgICAgICAgPSBvcHRzLmJhc2VVcmwgfHwgdGhpcy5iYXNlVXJsIHx8IGVudi5iYXNlVXJsO1xuXHRcdG9wdHMuY2xpZW50SWQgICAgICAgPSBvcHRzLmNsaWVudElkIHx8IHRoaXMuY2xpZW50SWQ7XG5cdFx0b3B0cy5jbGllbnRTZWNyZXQgICA9IG9wdHMuY2xpZW50U2VjcmV0IHx8IHRoaXMuY2xpZW50U2VjcmV0O1xuXHRcdG9wdHMuZW52ICAgICAgICAgICAgPSBlbnY7XG5cdFx0b3B0cy5tZXNzYWdlcyAgICAgICA9IG9wdHMubWVzc2FnZXMgfHwgdGhpcy5tZXNzYWdlcztcblx0XHRvcHRzLnBhc3N3b3JkICAgICAgID0gb3B0cy5wYXNzd29yZCB8fCB0aGlzLnBhc3N3b3JkO1xuXHRcdG9wdHMucmVhbG0gICAgICAgICAgPSBvcHRzLnJlYWxtIHx8IHRoaXMucmVhbG07XG5cdFx0b3B0cy5zZWNyZXRGaWxlICAgICA9IG9wdHMuc2VjcmV0RmlsZSB8fCB0aGlzLnNlY3JldEZpbGU7XG5cdFx0b3B0cy5zZXJ2aWNlQWNjb3VudCA9IG9wdHMuc2VydmljZUFjY291bnQgfHwgdGhpcy5zZXJ2aWNlQWNjb3VudDtcblx0XHRvcHRzLnRva2VuU3RvcmUgICAgID0gdGhpcy50b2tlblN0b3JlO1xuXHRcdG9wdHMudXNlcm5hbWUgICAgICAgPSBvcHRzLnVzZXJuYW1lIHx8IHRoaXMudXNlcm5hbWU7XG5cblx0XHRyZXR1cm4gb3B0cztcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGF1dGhldG5pY2F0b3IgYmFzZWQgb24gdGhlIHN1cHBsaWVkIG9wdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7QXV0aGVudGljYXRvcn0gW29wdHMuYXV0aGVudGljYXRvcl0gLSBBbiBhdXRoZW50aWNhdG9yIGluc3RhbmNlIHRvIHVzZS4gSWYgbm90XG5cdCAqIHNwZWNpZmllZCwgb25lIHdpbGwgYmUgYXV0by1zZWxlY3RlZCBiYXNlZCBvbiB0aGUgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNsaWVudFNlY3JldF0gLSBUaGUgc2VjcmV0IHRva2VuIHRvIHVzZSB0byBhdXRoZW50aWNhdGUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5wYXNzd29yZF0gLSBUaGUgcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHVzZXJuYW1lYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnNlY3JldEZpbGVdIC0gVGhlIHBhdGggdG8gdGhlIGp3dCBzZWNyZXQgZmlsZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5zZXJ2aWNlQWNjb3VudD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgaW5kaWNhdGVzIGF1dGhlbnRpY2F0aW9uIGlzIGJlaW5nXG5cdCAqIHJlcXVlc3RlZCBieSBhIHNlcnZpY2UgaW5zdGVhZCBvZiBhIHVzZXIuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy51c2VybmFtZV0gLSBUaGUgdXNlcm5hbWUgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHBhc3N3b3JkYC5cblx0ICogQHJldHVybnMge0F1dGhlbnRpY2F0b3J9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjcmVhdGVBdXRoZW50aWNhdG9yKG9wdHMgPSB7fSkge1xuXHRcdGlmIChvcHRzLmF1dGhlbnRpY2F0b3IpIHtcblx0XHRcdGlmICghKG9wdHMuYXV0aGVudGljYXRvciBpbnN0YW5jZW9mIEF1dGhlbnRpY2F0b3IpKSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUlVHTUVOVCgnRXhwZWN0ZWQgYXV0aGVudGljYXRvciB0byBiZSBhbiBBdXRoZW50aWNhdG9yIGluc3RhbmNlLicpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG9wdHMuYXV0aGVudGljYXRvcjtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIG9wdHMudXNlcm5hbWUgPT09ICdzdHJpbmcnICYmIG9wdHMudXNlcm5hbWUgJiYgdHlwZW9mIG9wdHMucGFzc3dvcmQgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gbmV3IE93bmVyUGFzc3dvcmQob3B0cyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBvcHRzLmNsaWVudFNlY3JldCA9PT0gJ3N0cmluZycgJiYgb3B0cy5jbGllbnRTZWNyZXQpIHtcblx0XHRcdHJldHVybiBuZXcgQ2xpZW50U2VjcmV0KG9wdHMpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygb3B0cy5zZWNyZXRGaWxlID09PSAnc3RyaW5nJyAmJiBvcHRzLnNlY3JldEZpbGUpIHtcblx0XHRcdHJldHVybiBuZXcgU2lnbmVkSldUKG9wdHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgUEtDRShvcHRzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGFjY2VzcyB0b2tlbi4gSWYgdGhlIGF1dGhlbnRpY2F0b3IgaXMgaW50ZXJhY3RpdmUgYW5kIHRoZSBhdXRoZW50aWNhdG9yIGhhcyBub3Rcblx0ICogeWV0IGF1dGhlbnRpY2F0ZWQgd2l0aCB0aGUgc2VydmVyLCBhbiBlcnJvciBpcyB0aHJvd24uXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ30gb3B0cyAtIFJlcXVpcmVkIG9wdGlvbnMgb3IgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgaGFzaCBvciBhY2NvdW50XG5cdCAqIG5hbWUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLmFjY291bnROYW1lIC0gVGhlIGFjY291bnQgbmFtZSB0byByZXRyaWV2ZS5cblx0ICogQHBhcmFtIHtBdXRoZW50aWNhdG9yfSBbb3B0cy5hdXRoZW50aWNhdG9yXSAtIEFuIGF1dGhlbnRpY2F0b3IgaW5zdGFuY2UgdG8gdXNlLiBJZiBub3Rcblx0ICogc3BlY2lmaWVkLCBvbmUgd2lsbCBiZSBhdXRvLXNlbGVjdGVkIGJhc2VkIG9uIHRoZSBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuYmFzZVVybF0gLSBUaGUgYmFzZSBVUkwgdG8gZmlsdGVyIGJ5LlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTw/T2JqZWN0Pn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGZpbmQob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCF0aGlzLnRva2VuU3RvcmUpIHtcblx0XHRcdGxvZygnQ2Fubm90IGdldCBhY2NvdW50LCBubyB0b2tlbiBzdG9yZScpO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0bGV0IGF1dGhlbnRpY2F0b3I7XG5cblx0XHRpZiAodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRvcHRzID0gdGhpcy5hcHBseURlZmF1bHRzKHsgYWNjb3VudE5hbWU6IG9wdHMsIGhhc2g6IG9wdHMgfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYXBwbHlEZWZhdWx0cyhvcHRzKTtcblx0XHRcdGF1dGhlbnRpY2F0b3IgPSB0aGlzLmNyZWF0ZUF1dGhlbnRpY2F0b3Iob3B0cyk7XG5cdFx0XHRvcHRzLmhhc2ggPSBhdXRoZW50aWNhdG9yLmhhc2g7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYWNjb3VudCA9IGF3YWl0IHRoaXMudG9rZW5TdG9yZS5nZXQob3B0cyk7XG5cblx0XHRpZiAoYWNjb3VudCkge1xuXHRcdFx0Ly8gY29weSBvdmVyIHRoZSBjb3JyZWN0IGF1dGggcGFyYW1zXG5cdFx0XHRmb3IgKGNvbnN0IHByb3Agb2YgWyAnYmFzZVVybCcsICdjbGllbnRJZCcsICdyZWFsbScsICdlbnYnIF0pIHtcblx0XHRcdFx0aWYgKGFjY291bnQuYXV0aFtwcm9wXSAmJiBvcHRzW3Byb3BdICE9PSBhY2NvdW50LmF1dGhbcHJvcF0pIHtcblx0XHRcdFx0XHRjb25zdCBmcm9tID0gcHJvcCA9PT0gJ2VudicgPyBvcHRzW3Byb3BdLm5hbWUgOiBvcHRzW3Byb3BdO1xuXHRcdFx0XHRcdGNvbnN0IHRvID0gcHJvcCA9PT0gJ2VudicgPyBhY2NvdW50LmF1dGhbcHJvcF0ubmFtZSA6IGFjY291bnQuYXV0aFtwcm9wXTtcblx0XHRcdFx0XHRsb2coYE92ZXJyaWRpbmcgXCIke3Byb3B9XCIgYXV0aCBwYXJhbSB3aXRoIGFjY291bnQnczogJHtmcm9tfSAtPiAke3RvfWApO1xuXHRcdFx0XHRcdG9wdHNbcHJvcF0gPSBhY2NvdW50LmF1dGhbcHJvcF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGF1dGhlbnRpY2F0b3IgPSB0aGlzLmNyZWF0ZUF1dGhlbnRpY2F0b3Iob3B0cyk7XG5cblx0XHRcdGlmIChhY2NvdW50LmF1dGguZXhwaXJlZCkge1xuXHRcdFx0XHQvLyByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gaWYgdGhlIHJlZnJlc2ggdG9rZW4gaXMgdmFsaWRcblx0XHRcdFx0bG9nKGBBY2Nlc3MgdG9rZW4gZm9yIGFjY291bnQgJHthY2NvdW50Lm5hbWUgfHwgYWNjb3VudC5oYXNofSBpcyBleHBpcmVkYCk7XG5cblx0XHRcdFx0aWYgKGFjY291bnQuYXV0aC5leHBpcmVzLnJlZnJlc2ggPCBEYXRlLm5vdygpKSB7XG5cdFx0XHRcdFx0bG9nKGBVbmFibGUgdG8gcmVmcmVzaCBhY2Nlc3MgdG9rZW4gZm9yIGFjY291bnQgJHthY2NvdW50Lm5hbWUgfHwgYWNjb3VudC5oYXNofSBiZWNhdXNlIHJlZnJlc2ggdG9rZW4gaXMgYWxzbyBleHBpcmVkYCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bG9nKGBSZWZyZXNoaW5nIGFjY2VzcyB0b2tlbiBmb3IgYWNjb3VudCAke2FjY291bnQubmFtZSB8fCBhY2NvdW50Lmhhc2h9YCk7XG5cdFx0XHRcdHJldHVybiBhd2FpdCBhdXRoZW50aWNhdG9yLmdldFRva2VuKCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBhd2FpdCBhdXRoZW50aWNhdG9yLmdldEluZm8oYWNjb3VudCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCB2YWxpZCBhY2Nlc3MgdG9rZW5zLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheT59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBsaXN0KCkge1xuXHRcdGlmICh0aGlzLnRva2VuU3RvcmUpIHtcblx0XHRcdHJldHVybiBhd2FpdCB0aGlzLnRva2VuU3RvcmUubGlzdCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gW107XG5cdH1cblxuXHQvKipcblx0ICogQXV0aGVudGljYXRlcyB1c2luZyB0aGUgY29uZmlndXJlZCBhdXRoZW50aWNhdG9yLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xBcnJheS48U3RyaW5nPn0gW29wdC5hcHBdIC0gU3BlY2lmeSB0aGUgYXBwIHRvIG9wZW4gdGhlIGB0YXJnZXRgIHdpdGgsIG9yIGFuXG5cdCAqIGFycmF5IHdpdGggdGhlIGFwcCBhbmQgYXBwIGFyZ3VtZW50cy5cblx0ICogQHBhcmFtIHtBdXRoZW50aWNhdG9yfSBbb3B0cy5hdXRoZW50aWNhdG9yXSAtIEFuIGF1dGhlbnRpY2F0b3IgaW5zdGFuY2UgdG8gdXNlLiBJZiBub3Rcblx0ICogc3BlY2lmaWVkLCBvbmUgd2lsbCBiZSBhdXRvLXNlbGVjdGVkIGJhc2VkIG9uIHRoZSBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuYmFzZVVybF0gLSBUaGUgYmFzZSBVUkwgdG8gdXNlIGZvciBhbGwgb3V0Z29pbmcgcmVxdWVzdHMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5jbGllbnRJZF0gLSBUaGUgY2xpZW50IGlkIHRvIHNwZWNpZnkgd2hlbiBhdXRoZW50aWNhdGluZy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNvZGVdIC0gVGhlIGF1dGhlbnRpY2F0aW9uIGNvZGUgZnJvbSBhIHN1Y2Nlc3NmdWwgaW50ZXJhY3RpdmUgbG9naW4uXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lbnY9cHJvZF0gLSBUaGUgZW52aXJvbm1lbnQgbmFtZS4gTXVzdCBiZSBgZGV2YCwgYHByZXByb2RgLCBvciBgcHJvZGAuXG5cdCAqIFRoZSBlbnZpcm9ubWVudCBpcyBhIHNob3J0aGFuZCB3YXkgb2Ygc3BlY2lmeWluZyBhIEF4d2F5IGRlZmF1bHQgYmFzZSBVUkwuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMubWFudWFsPWZhbHNlXSAtIFdoZW4gYHRydWVgLCBpdCB3aWxsIHJldHVybiB0aGUgYXV0aCBVUkwgaW5zdGVhZCBvZlxuXHQgKiBsYXVuY2hpbmcgdGhlIGF1dGggVVJMIGluIHRoZSBkZWZhdWx0IGJyb3dzZXIuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5yZWFsbV0gLSBUaGUgbmFtZSBvZiB0aGUgcmVhbG0gdG8gYXV0aGVudGljYXRlIHdpdGguXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy50aW1lb3V0XSAtIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHRpbWluZyBvdXQuXG5cdCAqIERlZmF1bHRzIHRvIHRoZSBgaW50ZXJhY3RpdmVMb2dpblRpbWVvdXRgIHByb3BlcnR5LlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLndhaXQ9ZmFsc2VdIC0gV2FpdCBmb3IgdGhlIG9wZW5lZCBhcHAgdG8gZXhpdCBiZWZvcmUgZnVsZmlsbGluZyB0aGVcblx0ICogcHJvbWlzZS4gSWYgYGZhbHNlYCBpdCdzIGZ1bGZpbGxlZCBpbW1lZGlhdGVseSB3aGVuIG9wZW5pbmcgdGhlIGFwcC5cblx0ICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn0gUmVzb2x2ZXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGFjY2VzcyB0b2tlbiwgYWNjb3VudCBuYW1lLCBhbmRcblx0ICogdXNlciBpbmZvLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbG9naW4ob3B0cyA9IHt9KSB7XG5cdFx0dGhpcy5hcHBseURlZmF1bHRzKG9wdHMpO1xuXHRcdGNvbnN0IGF1dGhlbnRpY2F0b3IgPSB0aGlzLmNyZWF0ZUF1dGhlbnRpY2F0b3Iob3B0cyk7XG5cdFx0cmV0dXJuIGF3YWl0IGF1dGhlbnRpY2F0b3IubG9naW4ob3B0cyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV2b2tlcyBhbGwgb3Igc3BlY2lmaWMgYXV0aGVudGljYXRlZCBhY2NvdW50cy5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBSZXF1aXJlZCBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fFN0cmluZ30gb3B0cy5hY2NvdW50cyAtIEEgbGlzdCBvZiBhY2NvdW50cyBuYW1lcy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBvcHRzLmFsbCAtIFdoZW4gYHRydWVgLCByZXZva2VzIGFsbCBhY2NvdW50cy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHVzZWQgdG8gZmlsdGVyIGFjY291bnRzLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheT59IFJlc29sdmVzIGEgbGlzdCBvZiByZXZva2VkIGNyZWRlbnRpYWxzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbG9nb3V0KHsgYWNjb3VudHMsIGFsbCwgYmFzZVVybCB9ID0ge30pIHtcblx0XHRpZiAoIXRoaXMudG9rZW5TdG9yZSkge1xuXHRcdFx0bG9nKCdObyB0b2tlbiBzdG9yZSwgcmV0dXJuaW5nIGVtcHR5IGFycmF5Jyk7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0aWYgKCFhbGwgJiYgdHlwZW9mIGFjY291bnRzICE9PSAnc3RyaW5nJyAmJiAhQXJyYXkuaXNBcnJheShhY2NvdW50cykpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgYWNjb3VudHMgdG8gYmUgXCJhbGxcIiBvciBhIGxpc3Qgb2YgYWNjb3VudHMnKTtcblx0XHR9XG5cblx0XHRpZiAoIWFsbCAmJiAhYWNjb3VudHMubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0bGV0IHJldm9rZWQ7XG5cdFx0aWYgKGFsbCkge1xuXHRcdFx0cmV2b2tlZCA9IGF3YWl0IHRoaXMudG9rZW5TdG9yZS5jbGVhcihiYXNlVXJsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV2b2tlZCA9IGF3YWl0IHRoaXMudG9rZW5TdG9yZS5kZWxldGUoYWNjb3VudHMsIGJhc2VVcmwpO1xuXHRcdH1cblxuXHRcdGlmIChBcnJheS5pc0FycmF5KHJldm9rZWQpKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGVudHJ5IG9mIHJldm9rZWQpIHtcblx0XHRcdFx0Y29uc3QgdXJsID0gYCR7Z2V0RW5kcG9pbnRzKGVudHJ5LmF1dGgpLmxvZ291dH0/aWRfdG9rZW5faGludD0ke2VudHJ5LmF1dGgudG9rZW5zLmlkX3Rva2VufWA7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBzdGF0dXMgfSA9IGF3YWl0IGdvdCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnanNvbicsIHJldHJ5OiAwIH0pO1xuXHRcdFx0XHRcdGxvZyhgU3VjY2Vzc2Z1bGx5IGxvZ2dlZCBvdXQgJHtoaWdobGlnaHQoZW50cnkubmFtZSl9ICR7bWFnZW50YShzdGF0dXMpfSAke25vdGUoYCgke2VudHJ5LmJhc2VVcmx9LCAke2VudHJ5LnJlYWxtfSlgKX1gKTtcblx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdFx0bG9nKGBGYWlsZWQgdG8gbG9nIG91dCAke2hpZ2hsaWdodChlbnRyeS5uYW1lKX0gJHthbGVydChlcnIuc3RhdHVzKX0gJHtub3RlKGAoJHtlbnRyeS5iYXNlVXJsfSwgJHtlbnRyeS5yZWFsbX0pYCl9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmV2b2tlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNjb3ZlcnMgYXZhaWxhYmxlIGVuZHBvaW50cyBiYXNlZCBvbiB0aGUgYXV0aGVudGljYXRpb24gc2VydmVyJ3MgT3BlbklEIGNvbmZpZ3VyYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5iYXNlVXJsXSAtIFRoZSBiYXNlIFVSTCB0byB1c2UgZm9yIGFsbCBvdXRnb2luZyByZXF1ZXN0cy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmVudj1wcm9kXSAtIFRoZSBlbnZpcm9ubWVudCBuYW1lLiBNdXN0IGJlIGBkZXZgLCBgcHJlcHJvZGAsIG9yIGBwcm9kYC5cblx0ICogVGhlIGVudmlyb25tZW50IGlzIGEgc2hvcnRoYW5kIHdheSBvZiBzcGVjaWZ5aW5nIGEgQXh3YXkgZGVmYXVsdCBiYXNlIFVSTC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnJlYWxtXSAtIFRoZSBuYW1lIG9mIHRoZSByZWFsbSB0byBhdXRoZW50aWNhdGUgd2l0aC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnVybF0gLSBBbiBvcHRpb25hbCBVUkwgdG8gZGlzY292ZXIgdGhlIGF2YWlsYWJsZSBlbmRwb2ludHMuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXJ2ZXJJbmZvKG9wdHMgPSB7fSkge1xuXHRcdHRoaXMuYXBwbHlEZWZhdWx0cyhvcHRzKTtcblxuXHRcdGxldCB7IHVybCB9ID0gb3B0cztcblxuXHRcdGlmICghdXJsKSB7XG5cdFx0XHR1cmwgPSBnZXRFbmRwb2ludHMob3B0cykud2VsbEtub3duO1xuXHRcdH1cblxuXHRcdGlmICghdXJsIHx8IHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIFVSTCB0byBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0bG9nKGBGZXRjaGluZyBzZXJ2ZXIgaW5mbzogJHt1cmx9Li4uYCk7XG5cdFx0XHRyZXR1cm4gKGF3YWl0IGdvdCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnanNvbicsIHJldHJ5OiAwIH0pKS5ib2R5O1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0aWYgKGVyci5uYW1lICE9PSAnUGFyc2VFcnJvcicpIHtcblx0XHRcdFx0ZXJyLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIGdldCBzZXJ2ZXIgaW5mbyAoc3RhdHVzICR7ZXJyLnJlc3BvbnNlLnN0YXR1c0NvZGV9KWA7XG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBlcnI7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgc3RvcmVkIGFjY291bnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBhY2NvdW50IC0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGFjY291bnQgaW5mby5cblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVBY2NvdW50KGFjY291bnQpIHtcblx0XHRpZiAodGhpcy50b2tlblN0b3JlKSB7XG5cdFx0XHRhd2FpdCB0aGlzLnRva2VuU3RvcmUuc2V0KGFjY291bnQpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQge1xuXHRBdXRoLFxuXG5cdEF1dGhlbnRpY2F0b3IsXG5cdENsaWVudFNlY3JldCxcblx0T3duZXJQYXNzd29yZCxcblx0UEtDRSxcblx0U2lnbmVkSldULFxuXG5cdEZpbGVTdG9yZSxcblx0TWVtb3J5U3RvcmUsXG5cdFNlY3VyZVN0b3JlLFxuXHRUb2tlblN0b3JlLFxuXG5cdGVudmlyb25tZW50cyxcblx0Z2V0RW5kcG9pbnRzLFxuXHRzZXJ2ZXJcbn07XG4iXSwiZmlsZSI6ImluZGV4LmpzIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkVycm9yIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJyZXF1aXJlIiwibG9nIiwiYWxlcnQiLCJoaWdobGlnaHQiLCJtYWdlbnRhIiwibm90ZSIsInNub29wbG9nZyIsInN0eWxlcyIsIkF1dGgiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJFIiwiSU5WQUxJRF9BUkdVTUVOVCIsIk9iamVjdCIsImRlZmluZVByb3BlcnRpZXMiLCJiYXNlVXJsIiwidmFsdWUiLCJjbGllbnRJZCIsImNsaWVudFNlY3JldCIsImVudiIsIm1lc3NhZ2VzIiwicGFzc3dvcmQiLCJyZWFsbSIsInNlY3JldEZpbGUiLCJzZXJ2aWNlQWNjb3VudCIsInVzZXJuYW1lIiwidG9rZW5TdG9yZSIsIlRva2VuU3RvcmUiLCJJTlZBTElEX1BBUkFNRVRFUiIsInRva2VuU3RvcmVUeXBlIiwidW5kZWZpbmVkIiwiU2VjdXJlU3RvcmUiLCJlIiwiY29kZSIsIlNFQ1VSRV9TVE9SRV9VTkFWQUlMQUJMRSIsIkZpbGVTdG9yZSIsIk1lbW9yeVN0b3JlIiwiYXBwbHlEZWZhdWx0cyIsIm5hbWUiLCJlbnZpcm9ubWVudHMiLCJyZXNvbHZlIiwiSU5WQUxJRF9WQUxVRSIsImNyZWF0ZUF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yIiwiQXV0aGVudGljYXRvciIsIklOVkFMSURfQVJVR01FTlQiLCJPd25lclBhc3N3b3JkIiwiQ2xpZW50U2VjcmV0IiwiU2lnbmVkSldUIiwiUEtDRSIsImZpbmQiLCJhY2NvdW50TmFtZSIsImhhc2giLCJhY2NvdW50IiwiZ2V0IiwicHJvcCIsImF1dGgiLCJmcm9tIiwidG8iLCJleHBpcmVkIiwiZXhwaXJlcyIsInJlZnJlc2giLCJEYXRlIiwibm93IiwiZ2V0VG9rZW4iLCJnZXRJbmZvIiwibGlzdCIsImxvZ2luIiwibG9nb3V0IiwiYWNjb3VudHMiLCJhbGwiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJyZXZva2VkIiwiY2xlYXIiLCJkZWxldGUiLCJlbnRyeSIsInVybCIsInRva2VucyIsImlkX3Rva2VuIiwic3RhdHVzIiwicmVzcG9uc2VUeXBlIiwicmV0cnkiLCJlcnIiLCJzZXJ2ZXJJbmZvIiwid2VsbEtub3duIiwiYm9keSIsIm1lc3NhZ2UiLCJyZXNwb25zZSIsInN0YXR1c0NvZGUiLCJ1cGRhdGVBY2NvdW50Iiwic2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7QUFDQTs7Ozs7Ozs7Ozs7O0FBdkJBO0FBQ0EsSUFBSSxDQUFDQSxLQUFLLENBQUNDLGlCQUFYLEVBQThCO0FBQzdCQyxFQUFBQSxPQUFPLENBQUMsNkJBQUQsQ0FBUDtBQUNBOztBQXNCRCxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBVSx3QkFBVSxjQUFWLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxLQUFGO0FBQVNDLEVBQUFBLFNBQVQ7QUFBb0JDLEVBQUFBLE9BQXBCO0FBQTZCQyxFQUFBQTtBQUE3QixJQUFzQ0MsbUJBQVVDLE1BQXREO0FBRUE7Ozs7QUFHZSxNQUFNQyxJQUFOLENBQVc7QUFDekI7Ozs7Ozs7QUFRQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQ0FDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHdDQWxDVixJQWtDVTs7QUFDdEIsUUFBSSxDQUFDQSxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNQyxnQkFBRUMsZ0JBQUYsQ0FBbUIsa0NBQW5CLENBQU47QUFDQTs7QUFFREMsSUFBQUEsTUFBTSxDQUFDQyxnQkFBUCxDQUF3QixJQUF4QixFQUE4QjtBQUM3QkMsTUFBQUEs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LEdBQUosRUFBUztBQUFFSSxRQUFBQSxZQUFZLEVBQUUsTUFBaEI7QUFBd0JDLFFBQUFBLEtBQUssRUFBRTtBQUEvQixPQUFULENBQVAsRUFBcURJLElBQTVEO0FBQ0EsS0FIRCxDQUdFLE9BQU9ILEdBQVAsRUFBWTtBQUNiLFVBQUlBLEdBQUcsQ0FBQzlDLElBQUosS0FBYSxZQUFqQixFQUErQjtBQUM5QjhDLFFBQUFBLEdBQUcsQ0FBQ0ksT0FBSixHQUFlLHFDQUFvQ0osR0FBRyxDQUFDSyxRQUFKLENBQWFDLFVBQVcsR0FBM0U7QUFDQTs7QUFDRCxZQUFNTixHQUFOO0FBQ0E7QUFDRDtBQUVEOzs7Ozs7Ozs7QUFPQSxRQUFNTyxhQUFOLENBQW9CdEMsT0FBcEIsRUFBNkI7QUFDNUIsUUFBSSxLQUFLM0IsVUFBVCxFQUFxQjtBQUNwQixZQUFNLEtBQUtBLFVBQUwsQ0FBZ0JrRSxHQUFoQixDQUFvQnZDLE9BQXBCLENBQU47QUFDQTtBQUNEOztBQXpYd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmICghRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UpIHtcblx0cmVxdWlyZSgnc291cmNlLW1hcC1zdXBwb3J0L3JlZ2lzdGVyJyk7XG59XG5cbmltcG9ydCBFIGZyb20gJy4vZXJyb3JzJztcblxuaW1wb3J0IEF1dGhlbnRpY2F0b3IgZnJvbSAnLi9hdXRoZW50aWNhdG9ycy9hdXRoZW50aWNhdG9yJztcbmltcG9ydCBDbGllbnRTZWNyZXQgZnJvbSAnLi9hdXRoZW50aWNhdG9ycy9jbGllbnQtc2VjcmV0JztcbmltcG9ydCBPd25lclBhc3N3b3JkIGZyb20gJy4vYXV0aGVudGljYXRvcnMvb3duZXItcGFzc3dvcmQnO1xuaW1wb3J0IFBLQ0UgZnJvbSAnLi9hdXRoZW50aWNhdG9ycy9wa2NlJztcbmltcG9ydCBTaWduZWRKV1QgZnJvbSAnLi9hdXRoZW50aWNhdG9ycy9zaWduZWQtand0JztcblxuaW1wb3J0IEZpbGVTdG9yZSBmcm9tICcuL3N0b3Jlcy9maWxlLXN0b3JlJztcbmltcG9ydCBNZW1vcnlTdG9yZSBmcm9tICcuL3N0b3Jlcy9tZW1vcnktc3RvcmUnO1xuaW1wb3J0IFNlY3VyZVN0b3JlIGZyb20gJy4vc3RvcmVzL3NlY3VyZS1zdG9yZSc7XG5pbXBvcnQgVG9rZW5TdG9yZSBmcm9tICcuL3N0b3Jlcy90b2tlbi1zdG9yZSc7XG5cbmltcG9ydCBnZXRFbmRwb2ludHMgZnJvbSAnLi9lbmRwb2ludHMnO1xuaW1wb3J0IGdvdCBmcm9tICdnb3QnO1xuaW1wb3J0IHNub29wbG9nZyBmcm9tICdzbm9vcGxvZ2cnO1xuXG5pbXBvcnQgKiBhcyBlbnZpcm9ubWVudHMgZnJvbSAnLi9lbnZpcm9ubWVudHMnO1xuaW1wb3J0ICogYXMgc2VydmVyIGZyb20gJy4vc2VydmVyJztcblxuY29uc3QgeyBsb2cgfSA9IHNub29wbG9nZygnYW1wbGlmeS1hdXRoJyk7XG5jb25zdCB7IGFsZXJ0LCBoaWdobGlnaHQsIG1hZ2VudGEsIG5vdGUgfSA9IHNub29wbG9nZy5zdHlsZXM7XG5cbi8qKlxuICogQXV0aGVudGljYXRlcyB0aGUgbWFjaGluZSBhbmQgcmV0cmVpdmVzIHRoZSBhdXRoIHRva2VuLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdXRoIHtcblx0LyoqXG5cdCAqIFRoZSBzdG9yZSB0byBwZXJzaXN0IHRoZSB0b2tlbi5cblx0ICpcblx0ICogQHR5cGUge1Rva2VuU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0dG9rZW5TdG9yZSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBhdXRoZW50aWNhdGlvbiBpbnN0YW5jZSBieSBzZXR0aW5nIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBjcmVhdGluZyB0aGVcblx0ICogdG9rZW4gc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5iYXNlVXJsXSAtIFRoZSBiYXNlIFVSTCB0byB1c2UgZm9yIGFsbCBvdXRnb2luZyByZXF1ZXN0cy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNsaWVudElkXSAtIFRoZSBjbGllbnQgaWQgdG8gc3BlY2lmeSB3aGVuIGF1dGhlbnRpY2F0aW5nLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuY2xpZW50U2VjcmV0XSAtIFRoZSBzZWNyZXQgdG9rZW4gdG8gdXNlIHRvIGF1dGhlbnRpY2F0ZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmVudj1wcm9kXSAtIFRoZSBlbnZpcm9ubWVudCBuYW1lLiBNdXN0IGJlIGBkZXZgLCBgcHJlcHJvZGAsIG9yIGBwcm9kYC5cblx0ICogVGhlIGVudmlyb25tZW50IGlzIGEgc2hvcnRoYW5kIHdheSBvZiBzcGVjaWZ5aW5nIGEgQXh3YXkgZGVmYXVsdCBiYXNlIFVSTC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmhvbWVEaXJdIC0gVGhlIHBhdGggdG8gdGhlIGhvbWUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGBsaWJgXG5cdCAqIGRpcmVjdG9yeSB3aGVyZSBga2V5dGFyYCBpcyBsb2NhdGVkLiBUaGlzIG9wdGlvbiBpcyByZXF1aXJlZCB3aGVuIGB0b2tlblN0b3JlVHlwZWAgaXMgc2V0IHRvXG5cdCAqIGBzZWN1cmVgLCB3aGljaCBpcyB0aGUgZGVmYXVsdC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnBhc3N3b3JkXSAtIFRoZSBwYXNzd29yZCB1c2VkIHRvIGF1dGhlbnRpY2F0ZS4gUmVxdWlyZXMgYSBgdXNlcm5hbWVgLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMucmVhbG1dIC0gVGhlIG5hbWUgb2YgdGhlIHJlYWxtIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuc2VjcmV0RmlsZV0gLSBUaGUgcGF0aCB0byB0aGUgand0IHNlY3JldCBmaWxlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuc2VjdXJlU2VydmljZU5hbWU9XCJBeHdheSBBTVBMSUZZIEF1dGhcIl0gLSBUaGUgbmFtZSBvZiB0aGUgY29uc3VtZXJcblx0ICogdXNpbmcgdGhpcyBsaWJyYXJ5IHdoZW4gdXNpbmcgdGhlIFwic2VjdXJlXCIgdG9rZW4gc3RvcmUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuc2VydmljZUFjY291bnQ9ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIGluZGljYXRlcyBhdXRoZW50aWNhdGlvbiBpcyBiZWluZ1xuXHQgKiByZXF1ZXN0ZWQgYnkgYSBzZXJ2aWNlIGluc3RlYWQgb2YgYSB1c2VyLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLnRva2VuUmVmcmVzaFRocmVzaG9sZD0wXSAtIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZWZvcmUgdGhlIGFjY2Vzc1xuXHQgKiB0b2tlbiBleHBpcmVzIGFuZCBzaG91bGQgYmUgcmVmcmVzaGVkLlxuXHQgKiBAcGFyYW0ge1Rva2VuU3RvcmV9IFtvcHRzLnRva2VuU3RvcmVdIC0gQSB0b2tlbiBzdG9yZSBpbnN0YW5jZSBmb3IgcGVyc2lzdGluZyB0aGUgdG9rZW5zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMudG9rZW5TdG9yZURpcl0gLSBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSB0b2tlbiBzdG9yZSBpcyBzYXZlZC4gUmVxdWlyZWRcblx0ICogd2hlbiB0aGUgYHRva2VuU3RvcmVUeXBlYCBpcyBgc2VjdXJlYCBvciBgZmlsZWAuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy50b2tlblN0b3JlVHlwZT1zZWN1cmVdIC0gVGhlIHR5cGUgb2Ygc3RvcmUgdG8gcGVyc2lzdCB0aGUgYWNjZXNzIHRva2VuLlxuXHQgKiBQb3NzaWJsZSB2YWx1ZXMgaW5jbHVkZTogYGF1dG9gLCBgc2VjdXJlYCwgYGZpbGVgLCBvciBgbWVtb3J5YC4gSWYgdmFsdWUgaXMgYGF1dG9gLCBpdCB3aWxsXG5cdCAqIGF0dGVtcHQgdG8gdXNlIGBzZWN1cmVgLCB0aGVuIGBmaWxlYCwgdGhlbiBgbWVtb3J5YC4gSWYgc2V0IHRvIGBudWxsYCwgdGhlbiBpdCB3aWxsIG5vdFxuXHQgKiBwZXJzaXN0IHRoZSBhY2Nlc3MgdG9rZW4uXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy51c2VybmFtZV0gLSBUaGUgdXNlcm5hbWUgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHBhc3N3b3JkYC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuXHRcdGlmICghb3B0cyB8fCB0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgb3B0aW9ucyB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG5cdFx0XHRiYXNlVXJsOiAgICAgICAgeyB2YWx1ZTogb3B0cy5iYXNlVXJsIH0sXG5cdFx0XHRjbGllbnRJZDogICAgICAgeyB2YWx1ZTogb3B0cy5jbGllbnRJZCB9LFxuXHRcdFx0Y2xpZW50U2VjcmV0OiAgIHsgdmFsdWU6IG9wdHMuY2xpZW50U2VjcmV0IH0sXG5cdFx0XHRlbnY6ICAgICAgICAgICAgeyB2YWx1ZTogb3B0cy5lbnYgfSxcblx0XHRcdG1lc3NhZ2VzOiAgICAgICB7IHZhbHVlOiBvcHRzLm1lc3NhZ2VzIH0sXG5cdFx0XHRwYXNzd29yZDogICAgICAgeyB2YWx1ZTogb3B0cy5wYXNzd29yZCB9LFxuXHRcdFx0cmVhbG06ICAgICAgICAgIHsgdmFsdWU6IG9wdHMucmVhbG0gfSxcblx0XHRcdHNlY3JldEZpbGU6ICAgICB7IHZhbHVlOiBvcHRzLnNlY3JldEZpbGUgfSxcblx0XHRcdHNlcnZpY2VBY2NvdW50OiB7IHZhbHVlOiBvcHRzLnNlcnZpY2VBY2NvdW50IH0sXG5cdFx0XHR1c2VybmFtZTogICAgICAgeyB2YWx1ZTogb3B0cy51c2VybmFtZSB9XG5cdFx0fSk7XG5cblx0XHRpZiAob3B0cy50b2tlblN0b3JlKSB7XG5cdFx0XHRpZiAoIShvcHRzLnRva2VuU3RvcmUgaW5zdGFuY2VvZiBUb2tlblN0b3JlKSkge1xuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfUEFSQU1FVEVSKCdFeHBlY3RlZCB0aGUgdG9rZW4gc3RvcmUgdG8gYmUgYSBcIlRva2VuU3RvcmVcIiBpbnN0YW5jZScpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy50b2tlblN0b3JlID0gb3B0cy50b2tlblN0b3JlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCB0b2tlblN0b3JlVHlwZSA9IG9wdHMudG9rZW5TdG9yZVR5cGUgPT09IHVuZGVmaW5lZCA/ICdzZWN1cmUnIDogb3B0cy50b2tlblN0b3JlVHlwZTtcblx0XHRcdHN3aXRjaCAodG9rZW5TdG9yZVR5cGUpIHtcblx0XHRcdFx0Y2FzZSAnYXV0byc6XG5cdFx0XHRcdGNhc2UgJ3NlY3VyZSc6XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdHRoaXMudG9rZW5TdG9yZSA9IG5ldyBTZWN1cmVTdG9yZShvcHRzKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHRcdFx0XHRcdFx0aWYgKHRva2VuU3RvcmVUeXBlID09PSAnYXV0bycpIHtcblx0XHRcdFx0XHRcdFx0Ly8gbGV0ICdhdXRvJyBmYWxsIHRocm91Z2hcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZS5jb2RlID09PSAnRVJSX0tFWVRBUl9OT1RfRk9VTkQnKSB7XG5cdFx0XHRcdFx0XHRcdHRocm93IEUuU0VDVVJFX1NUT1JFX1VOQVZBSUxBQkxFKCdTZWN1cmUgdG9rZW4gc3RvcmUgaXMgbm90IGF2YWlsYWJsZS5cXG5QbGVhc2UgcmVpbnN0YWxsIG9yIHJlYnVpbGQgdGhpcyBhcHBsaWNhdGlvbi4nKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdGNhc2UgJ2ZpbGUnOlxuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRva2VuU3RvcmUgPSBuZXcgRmlsZVN0b3JlKG9wdHMpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0LyogaXN0YW5idWwgaWdub3JlIGlmICovXG5cdFx0XHRcdFx0XHRpZiAodG9rZW5TdG9yZVR5cGUgPT09ICdhdXRvJyAmJiBlLmNvZGUgPT09ICdFUlJfTUlTU0lOR19SRVFVSVJFRF9QQVJBTUVURVInKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGxldCAnYXV0bycgZmFsbCB0aHJvdWdoXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRjYXNlICdtZW1vcnknOlxuXHRcdFx0XHRcdHRoaXMudG9rZW5TdG9yZSA9IG5ldyBNZW1vcnlTdG9yZShvcHRzKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRW5zdXJlcyB0aGUgb3B0aW9ucyBjb250YWlucyB0aGUgY29uZmlndXJhYmxlIHNldHRpbmdzLiBWYWxpZGF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIGNvZGVcblx0ICogcmVxdWlyaW5nIHRoZSB2YWx1ZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0YXBwbHlEZWZhdWx0cyhvcHRzID0ge30pIHtcblx0XHRpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIG9wdGlvbnMgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgbmFtZSA9ICFvcHRzLmVudiA/IHRoaXMuZW52IDogKHR5cGVvZiBvcHRzLmVudiA9PT0gJ29iamVjdCcgJiYgb3B0cy5lbnYubmFtZSB8fCBvcHRzLmVudik7XG5cdFx0Y29uc3QgZW52ID0gZW52aXJvbm1lbnRzLnJlc29sdmUobmFtZSk7XG5cdFx0aWYgKCFlbnYpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9WQUxVRShgSW52YWxpZCBlbnZpcm9ubWVudDogJHtuYW1lfWApO1xuXHRcdH1cblxuXHRcdG9wdHMuYmFzZVVybCAgICAgICAgPSBvcHRzLmJhc2VVcmwgfHwgdGhpcy5iYXNlVXJsIHx8IGVudi5iYXNlVXJsO1xuXHRcdG9wdHMuY2xpZW50SWQgICAgICAgPSBvcHRzLmNsaWVudElkIHx8IHRoaXMuY2xpZW50SWQ7XG5cdFx0b3B0cy5jbGllbnRTZWNyZXQgICA9IG9wdHMuY2xpZW50U2VjcmV0IHx8IHRoaXMuY2xpZW50U2VjcmV0O1xuXHRcdG9wdHMuZW52ICAgICAgICAgICAgPSBlbnY7XG5cdFx0b3B0cy5tZXNzYWdlcyAgICAgICA9IG9wdHMubWVzc2FnZXMgfHwgdGhpcy5tZXNzYWdlcztcblx0XHRvcHRzLnBhc3N3b3JkICAgICAgID0gb3B0cy5wYXNzd29yZCB8fCB0aGlzLnBhc3N3b3JkO1xuXHRcdG9wdHMucmVhbG0gICAgICAgICAgPSBvcHRzLnJlYWxtIHx8IHRoaXMucmVhbG07XG5cdFx0b3B0cy5zZWNyZXRGaWxlICAgICA9IG9wdHMuc2VjcmV0RmlsZSB8fCB0aGlzLnNlY3JldEZpbGU7XG5cdFx0b3B0cy5zZXJ2aWNlQWNjb3VudCA9IG9wdHMuc2VydmljZUFjY291bnQgfHwgdGhpcy5zZXJ2aWNlQWNjb3VudDtcblx0XHRvcHRzLnRva2VuU3RvcmUgICAgID0gdGhpcy50b2tlblN0b3JlO1xuXHRcdG9wdHMudXNlcm5hbWUgICAgICAgPSBvcHRzLnVzZXJuYW1lIHx8IHRoaXMudXNlcm5hbWU7XG5cblx0XHRyZXR1cm4gb3B0cztcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGF1dGhldG5pY2F0b3IgYmFzZWQgb24gdGhlIHN1cHBsaWVkIG9wdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7QXV0aGVudGljYXRvcn0gW29wdHMuYXV0aGVudGljYXRvcl0gLSBBbiBhdXRoZW50aWNhdG9yIGluc3RhbmNlIHRvIHVzZS4gSWYgbm90XG5cdCAqIHNwZWNpZmllZCwgb25lIHdpbGwgYmUgYXV0by1zZWxlY3RlZCBiYXNlZCBvbiB0aGUgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNsaWVudFNlY3JldF0gLSBUaGUgc2VjcmV0IHRva2VuIHRvIHVzZSB0byBhdXRoZW50aWNhdGUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5wYXNzd29yZF0gLSBUaGUgcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHVzZXJuYW1lYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnNlY3JldEZpbGVdIC0gVGhlIHBhdGggdG8gdGhlIGp3dCBzZWNyZXQgZmlsZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5zZXJ2aWNlQWNjb3VudD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgaW5kaWNhdGVzIGF1dGhlbnRpY2F0aW9uIGlzIGJlaW5nXG5cdCAqIHJlcXVlc3RlZCBieSBhIHNlcnZpY2UgaW5zdGVhZCBvZiBhIHVzZXIuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy51c2VybmFtZV0gLSBUaGUgdXNlcm5hbWUgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHBhc3N3b3JkYC5cblx0ICogQHJldHVybnMge0F1dGhlbnRpY2F0b3J9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjcmVhdGVBdXRoZW50aWNhdG9yKG9wdHMgPSB7fSkge1xuXHRcdGlmIChvcHRzLmF1dGhlbnRpY2F0b3IpIHtcblx0XHRcdGlmICghKG9wdHMuYXV0aGVudGljYXRvciBpbnN0YW5jZW9mIEF1dGhlbnRpY2F0b3IpKSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUlVHTUVOVCgnRXhwZWN0ZWQgYXV0aGVudGljYXRvciB0byBiZSBhbiBBdXRoZW50aWNhdG9yIGluc3RhbmNlLicpO1xuXHRcdFx0fVxuXHRcdFx0bG9nKGBVc2luZyBleGlzdGluZyAke2hpZ2hsaWdodChvcHRzLmF1dGhlbnRpY2F0b3IuY29uc3RydWN0b3IubmFtZSl9IGF1dGhlbnRpY2F0b3JgKTtcblx0XHRcdHJldHVybiBvcHRzLmF1dGhlbnRpY2F0b3I7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBvcHRzLnVzZXJuYW1lID09PSAnc3RyaW5nJyAmJiBvcHRzLnVzZXJuYW1lICYmIHR5cGVvZiBvcHRzLnBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuXHRcdFx0bG9nKGBDcmVhdGluZyAke2hpZ2hsaWdodCgnT3duZXJQYXNzd29yZCcpfSBhdXRoZW50aWNhdG9yYCk7XG5cdFx0XHRyZXR1cm4gbmV3IE93bmVyUGFzc3dvcmQob3B0cyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBvcHRzLmNsaWVudFNlY3JldCA9PT0gJ3N0cmluZycgJiYgb3B0cy5jbGllbnRTZWNyZXQpIHtcblx0XHRcdGxvZyhgQ3JlYXRpbmcgJHtoaWdobGlnaHQoJ0NsaWVudFNlY3JldCcpfSBhdXRoZW50aWNhdG9yYCk7XG5cdFx0XHRyZXR1cm4gbmV3IENsaWVudFNlY3JldChvcHRzKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIG9wdHMuc2VjcmV0RmlsZSA9PT0gJ3N0cmluZycgJiYgb3B0cy5zZWNyZXRGaWxlKSB7XG5cdFx0XHRsb2coYENyZWF0aW5nICR7aGlnaGxpZ2h0KCdTaWduZWRKV1QnKX0gYXV0aGVudGljYXRvcmApO1xuXHRcdFx0cmV0dXJuIG5ldyBTaWduZWRKV1Qob3B0cyk7XG5cdFx0fVxuXG5cdFx0bG9nKGBDcmVhdGluZyAke2hpZ2hsaWdodCgnUEtDRScpfSBhdXRoZW50aWNhdG9yYCk7XG5cdFx0cmV0dXJuIG5ldyBQS0NFKG9wdHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgYWNjZXNzIHRva2VuLiBJZiB0aGUgYXV0aGVudGljYXRvciBpcyBpbnRlcmFjdGl2ZSBhbmQgdGhlIGF1dGhlbnRpY2F0b3IgaGFzIG5vdFxuXHQgKiB5ZXQgYXV0aGVudGljYXRlZCB3aXRoIHRoZSBzZXJ2ZXIsIGFuIGVycm9yIGlzIHRocm93bi5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSBvcHRzIC0gUmVxdWlyZWQgb3B0aW9ucyBvciBhIHN0cmluZyBjb250YWluaW5nIHRoZSBoYXNoIG9yIGFjY291bnRcblx0ICogbmFtZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IG9wdHMuYWNjb3VudE5hbWUgLSBUaGUgYWNjb3VudCBuYW1lIHRvIHJldHJpZXZlLlxuXHQgKiBAcGFyYW0ge0F1dGhlbnRpY2F0b3J9IFtvcHRzLmF1dGhlbnRpY2F0b3JdIC0gQW4gYXV0aGVudGljYXRvciBpbnN0YW5jZSB0byB1c2UuIElmIG5vdFxuXHQgKiBzcGVjaWZpZWQsIG9uZSB3aWxsIGJlIGF1dG8tc2VsZWN0ZWQgYmFzZWQgb24gdGhlIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5iYXNlVXJsXSAtIFRoZSBiYXNlIFVSTCB0byBmaWx0ZXIgYnkuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPD9PYmplY3Q+fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZmluZChvcHRzID0ge30pIHtcblx0XHRpZiAoIXRoaXMudG9rZW5TdG9yZSkge1xuXHRcdFx0bG9nKCdDYW5ub3QgZ2V0IGFjY291bnQsIG5vIHRva2VuIHN0b3JlJyk7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRsZXQgYXV0aGVudGljYXRvcjtcblxuXHRcdGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIHtcblx0XHRcdG9wdHMgPSB0aGlzLmFwcGx5RGVmYXVsdHMoeyBhY2NvdW50TmFtZTogb3B0cywgaGFzaDogb3B0cyB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5hcHBseURlZmF1bHRzKG9wdHMpO1xuXHRcdFx0YXV0aGVudGljYXRvciA9IHRoaXMuY3JlYXRlQXV0aGVudGljYXRvcihvcHRzKTtcblx0XHRcdGxvZyhgQXV0aGVudGljYXRvciBoYXNoOiAke2hpZ2hsaWdodChhdXRoZW50aWNhdG9yLmhhc2gpfWApO1xuXHRcdFx0b3B0cy5oYXNoID0gYXV0aGVudGljYXRvci5oYXNoO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFjY291bnQgPSBhd2FpdCB0aGlzLnRva2VuU3RvcmUuZ2V0KG9wdHMpO1xuXG5cdFx0aWYgKGFjY291bnQpIHtcblx0XHRcdC8vIGNvcHkgb3ZlciB0aGUgY29ycmVjdCBhdXRoIHBhcmFtc1xuXHRcdFx0Zm9yIChjb25zdCBwcm9wIG9mIFsgJ2Jhc2VVcmwnLCAnY2xpZW50SWQnLCAncmVhbG0nLCAnZW52JyBdKSB7XG5cdFx0XHRcdGlmIChhY2NvdW50LmF1dGhbcHJvcF0gJiYgKChwcm9wICE9PSAnZW52JyAmJiBvcHRzW3Byb3BdICE9PSBhY2NvdW50LmF1dGhbcHJvcF0pIHx8IChwcm9wID09PSAnZW52JyAmJiBvcHRzW3Byb3BdLm5hbWUgIT09IGFjY291bnQuYXV0aFtwcm9wXS5uYW1lKSkpIHtcblx0XHRcdFx0XHRjb25zdCBmcm9tID0gcHJvcCA9PT0gJ2VudicgPyBvcHRzW3Byb3BdLm5hbWUgOiBvcHRzW3Byb3BdO1xuXHRcdFx0XHRcdGNvbnN0IHRvID0gcHJvcCA9PT0gJ2VudicgPyBhY2NvdW50LmF1dGhbcHJvcF0ubmFtZSA6IGFjY291bnQuYXV0aFtwcm9wXTtcblx0XHRcdFx0XHRsb2coYE92ZXJyaWRpbmcgXCIke3Byb3B9XCIgYXV0aCBwYXJhbSB3aXRoIGFjY291bnQnczogJHtmcm9tfSAtPiAke3RvfWApO1xuXHRcdFx0XHRcdG9wdHNbcHJvcF0gPSBhY2NvdW50LmF1dGhbcHJvcF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGF1dGhlbnRpY2F0b3IgPSB0aGlzLmNyZWF0ZUF1dGhlbnRpY2F0b3Iob3B0cyk7XG5cblx0XHRcdGlmIChhY2NvdW50LmF1dGguZXhwaXJlZCkge1xuXHRcdFx0XHQvLyByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gaWYgdGhlIHJlZnJlc2ggdG9rZW4gaXMgdmFsaWRcblx0XHRcdFx0bG9nKGBBY2Nlc3MgdG9rZW4gZm9yIGFjY291bnQgJHtoaWdobGlnaHQoYWNjb3VudC5uYW1lIHx8IGFjY291bnQuaGFzaCl9IGhhcyBleHBpcmVkYCk7XG5cblx0XHRcdFx0aWYgKGFjY291bnQuYXV0aC5leHBpcmVzLnJlZnJlc2ggPCBEYXRlLm5vdygpKSB7XG5cdFx0XHRcdFx0bG9nKGBVbmFibGUgdG8gcmVmcmVzaCBhY2Nlc3MgdG9rZW4gZm9yIGFjY291bnQgJHtoaWdobGlnaHQoYWNjb3VudC5uYW1lIHx8IGFjY291bnQuaGFzaCl9IGJlY2F1c2UgcmVmcmVzaCB0b2tlbiBpcyBhbHNvIGV4cGlyZWRgKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsb2coYFJlZnJlc2hpbmcgYWNjZXNzIHRva2VuIGZvciBhY2NvdW50ICR7aGlnaGxpZ2h0KGFjY291bnQubmFtZSB8fCBhY2NvdW50Lmhhc2gpfWApO1xuXHRcdFx0XHRyZXR1cm4gYXdhaXQgYXV0aGVudGljYXRvci5nZXRUb2tlbigpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gYXdhaXQgYXV0aGVudGljYXRvci5nZXRJbmZvKGFjY291bnQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgdmFsaWQgYWNjZXNzIHRva2Vucy5cblx0ICpcblx0ICogQHJldHVybnMge1Byb21pc2U8QXJyYXk+fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbGlzdCgpIHtcblx0XHRpZiAodGhpcy50b2tlblN0b3JlKSB7XG5cdFx0XHRyZXR1cm4gYXdhaXQgdGhpcy50b2tlblN0b3JlLmxpc3QoKTtcblx0XHR9XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEF1dGhlbnRpY2F0ZXMgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYXV0aGVudGljYXRvci5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd8QXJyYXkuPFN0cmluZz59IFtvcHQuYXBwXSAtIFNwZWNpZnkgdGhlIGFwcCB0byBvcGVuIHRoZSBgdGFyZ2V0YCB3aXRoLCBvciBhblxuXHQgKiBhcnJheSB3aXRoIHRoZSBhcHAgYW5kIGFwcCBhcmd1bWVudHMuXG5cdCAqIEBwYXJhbSB7QXV0aGVudGljYXRvcn0gW29wdHMuYXV0aGVudGljYXRvcl0gLSBBbiBhdXRoZW50aWNhdG9yIGluc3RhbmNlIHRvIHVzZS4gSWYgbm90XG5cdCAqIHNwZWNpZmllZCwgb25lIHdpbGwgYmUgYXV0by1zZWxlY3RlZCBiYXNlZCBvbiB0aGUgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHRvIHVzZSBmb3IgYWxsIG91dGdvaW5nIHJlcXVlc3RzLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuY2xpZW50SWRdIC0gVGhlIGNsaWVudCBpZCB0byBzcGVjaWZ5IHdoZW4gYXV0aGVudGljYXRpbmcuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5jb2RlXSAtIFRoZSBhdXRoZW50aWNhdGlvbiBjb2RlIGZyb20gYSBzdWNjZXNzZnVsIGludGVyYWN0aXZlIGxvZ2luLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZW52PXByb2RdIC0gVGhlIGVudmlyb25tZW50IG5hbWUuIE11c3QgYmUgYGRldmAsIGBwcmVwcm9kYCwgb3IgYHByb2RgLlxuXHQgKiBUaGUgZW52aXJvbm1lbnQgaXMgYSBzaG9ydGhhbmQgd2F5IG9mIHNwZWNpZnlpbmcgYSBBeHdheSBkZWZhdWx0IGJhc2UgVVJMLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLm1hbnVhbD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgaXQgd2lsbCByZXR1cm4gdGhlIGF1dGggVVJMIGluc3RlYWQgb2Zcblx0ICogbGF1bmNoaW5nIHRoZSBhdXRoIFVSTCBpbiB0aGUgZGVmYXVsdCBicm93c2VyLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMucmVhbG1dIC0gVGhlIG5hbWUgb2YgdGhlIHJlYWxtIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLlxuXHQgKiBAcGFyYW0ge051bWJlcn0gW29wdHMudGltZW91dF0gLSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSB0aW1pbmcgb3V0LlxuXHQgKiBEZWZhdWx0cyB0byB0aGUgYGludGVyYWN0aXZlTG9naW5UaW1lb3V0YCBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy53YWl0PWZhbHNlXSAtIFdhaXQgZm9yIHRoZSBvcGVuZWQgYXBwIHRvIGV4aXQgYmVmb3JlIGZ1bGZpbGxpbmcgdGhlXG5cdCAqIHByb21pc2UuIElmIGBmYWxzZWAgaXQncyBmdWxmaWxsZWQgaW1tZWRpYXRlbHkgd2hlbiBvcGVuaW5nIHRoZSBhcHAuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59IFJlc29sdmVzIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBhY2Nlc3MgdG9rZW4sIGFjY291bnQgbmFtZSwgYW5kXG5cdCAqIHVzZXIgaW5mby5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvZ2luKG9wdHMgPSB7fSkge1xuXHRcdHRoaXMuYXBwbHlEZWZhdWx0cyhvcHRzKTtcblx0XHRjb25zdCBhdXRoZW50aWNhdG9yID0gdGhpcy5jcmVhdGVBdXRoZW50aWNhdG9yKG9wdHMpO1xuXHRcdHJldHVybiBhd2FpdCBhdXRoZW50aWNhdG9yLmxvZ2luKG9wdHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldm9rZXMgYWxsIG9yIHNwZWNpZmljIGF1dGhlbnRpY2F0ZWQgYWNjb3VudHMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gUmVxdWlyZWQgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPnxTdHJpbmd9IG9wdHMuYWNjb3VudHMgLSBBIGxpc3Qgb2YgYWNjb3VudHMgbmFtZXMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gb3B0cy5hbGwgLSBXaGVuIGB0cnVlYCwgcmV2b2tlcyBhbGwgYWNjb3VudHMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5iYXNlVXJsXSAtIFRoZSBiYXNlIFVSTCB1c2VkIHRvIGZpbHRlciBhY2NvdW50cy5cblx0ICogQHJldHVybnMge1Byb21pc2U8QXJyYXk+fSBSZXNvbHZlcyBhIGxpc3Qgb2YgcmV2b2tlZCBjcmVkZW50aWFscy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvZ291dCh7IGFjY291bnRzLCBhbGwsIGJhc2VVcmwgfSA9IHt9KSB7XG5cdFx0aWYgKCF0aGlzLnRva2VuU3RvcmUpIHtcblx0XHRcdGxvZygnTm8gdG9rZW4gc3RvcmUsIHJldHVybmluZyBlbXB0eSBhcnJheScpO1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdGlmICghYWxsICYmIHR5cGVvZiBhY2NvdW50cyAhPT0gJ3N0cmluZycgJiYgIUFycmF5LmlzQXJyYXkoYWNjb3VudHMpKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGFjY291bnRzIHRvIGJlIFwiYWxsXCIgb3IgYSBsaXN0IG9mIGFjY291bnRzJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFhbGwgJiYgIWFjY291bnRzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdGxldCByZXZva2VkO1xuXHRcdGlmIChhbGwpIHtcblx0XHRcdHJldm9rZWQgPSBhd2FpdCB0aGlzLnRva2VuU3RvcmUuY2xlYXIoYmFzZVVybCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldm9rZWQgPSBhd2FpdCB0aGlzLnRva2VuU3RvcmUuZGVsZXRlKGFjY291bnRzLCBiYXNlVXJsKTtcblx0XHR9XG5cblx0XHRpZiAoQXJyYXkuaXNBcnJheShyZXZva2VkKSkge1xuXHRcdFx0Zm9yIChjb25zdCBlbnRyeSBvZiByZXZva2VkKSB7XG5cdFx0XHRcdGNvbnN0IHVybCA9IGAke2dldEVuZHBvaW50cyhlbnRyeS5hdXRoKS5sb2dvdXR9P2lkX3Rva2VuX2hpbnQ9JHtlbnRyeS5hdXRoLnRva2Vucy5pZF90b2tlbn1gO1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IHsgc3RhdHVzIH0gPSBhd2FpdCBnb3QodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2pzb24nLCByZXRyeTogMCB9KTtcblx0XHRcdFx0XHRsb2coYFN1Y2Nlc3NmdWxseSBsb2dnZWQgb3V0ICR7aGlnaGxpZ2h0KGVudHJ5Lm5hbWUpfSAke21hZ2VudGEoc3RhdHVzKX0gJHtub3RlKGAoJHtlbnRyeS5iYXNlVXJsfSwgJHtlbnRyeS5yZWFsbX0pYCl9YCk7XG5cdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdGxvZyhgRmFpbGVkIHRvIGxvZyBvdXQgJHtoaWdobGlnaHQoZW50cnkubmFtZSl9ICR7YWxlcnQoZXJyLnN0YXR1cyl9ICR7bm90ZShgKCR7ZW50cnkuYmFzZVVybH0sICR7ZW50cnkucmVhbG19KWApfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJldm9rZWQ7XG5cdH1cblxuXHQvKipcblx0ICogRGlzY292ZXJzIGF2YWlsYWJsZSBlbmRwb2ludHMgYmFzZWQgb24gdGhlIGF1dGhlbnRpY2F0aW9uIHNlcnZlcidzIE9wZW5JRCBjb25maWd1cmF0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuYmFzZVVybF0gLSBUaGUgYmFzZSBVUkwgdG8gdXNlIGZvciBhbGwgb3V0Z29pbmcgcmVxdWVzdHMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lbnY9cHJvZF0gLSBUaGUgZW52aXJvbm1lbnQgbmFtZS4gTXVzdCBiZSBgZGV2YCwgYHByZXByb2RgLCBvciBgcHJvZGAuXG5cdCAqIFRoZSBlbnZpcm9ubWVudCBpcyBhIHNob3J0aGFuZCB3YXkgb2Ygc3BlY2lmeWluZyBhIEF4d2F5IGRlZmF1bHQgYmFzZSBVUkwuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5yZWFsbV0gLSBUaGUgbmFtZSBvZiB0aGUgcmVhbG0gdG8gYXV0aGVudGljYXRlIHdpdGguXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy51cmxdIC0gQW4gb3B0aW9uYWwgVVJMIHRvIGRpc2NvdmVyIHRoZSBhdmFpbGFibGUgZW5kcG9pbnRzLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3Q+fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgc2VydmVySW5mbyhvcHRzID0ge30pIHtcblx0XHR0aGlzLmFwcGx5RGVmYXVsdHMob3B0cyk7XG5cblx0XHRsZXQgeyB1cmwgfSA9IG9wdHM7XG5cblx0XHRpZiAoIXVybCkge1xuXHRcdFx0dXJsID0gZ2V0RW5kcG9pbnRzKG9wdHMpLndlbGxLbm93bjtcblx0XHR9XG5cblx0XHRpZiAoIXVybCB8fCB0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBVUkwgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdGxvZyhgRmV0Y2hpbmcgc2VydmVyIGluZm86ICR7dXJsfS4uLmApO1xuXHRcdFx0cmV0dXJuIChhd2FpdCBnb3QodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2pzb24nLCByZXRyeTogMCB9KSkuYm9keTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdGlmIChlcnIubmFtZSAhPT0gJ1BhcnNlRXJyb3InKSB7XG5cdFx0XHRcdGVyci5tZXNzYWdlID0gYEZhaWxlZCB0byBnZXQgc2VydmVyIGluZm8gKHN0YXR1cyAke2Vyci5yZXNwb25zZS5zdGF0dXNDb2RlfSlgO1xuXHRcdFx0fVxuXHRcdFx0dGhyb3cgZXJyO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgdGhlIHN0b3JlZCBhY2NvdW50LlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gYWNjb3VudCAtIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBhY2NvdW50IGluZm8uXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgdXBkYXRlQWNjb3VudChhY2NvdW50KSB7XG5cdFx0aWYgKHRoaXMudG9rZW5TdG9yZSkge1xuXHRcdFx0YXdhaXQgdGhpcy50b2tlblN0b3JlLnNldChhY2NvdW50KTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IHtcblx0QXV0aCxcblxuXHRBdXRoZW50aWNhdG9yLFxuXHRDbGllbnRTZWNyZXQsXG5cdE93bmVyUGFzc3dvcmQsXG5cdFBLQ0UsXG5cdFNpZ25lZEpXVCxcblxuXHRGaWxlU3RvcmUsXG5cdE1lbW9yeVN0b3JlLFxuXHRTZWN1cmVTdG9yZSxcblx0VG9rZW5TdG9yZSxcblxuXHRlbnZpcm9ubWVudHMsXG5cdGdldEVuZHBvaW50cyxcblx0c2VydmVyXG59O1xuIl0sImZpbGUiOiJpbmRleC5qcyJ9 |
@@ -6,3 +6,2 @@ "use strict"; | ||
}); | ||
exports.handleRequestError = handleRequestError; | ||
exports.md5 = md5; | ||
@@ -14,65 +13,5 @@ exports.renderHTML = renderHTML; | ||
var _errors = _interopRequireDefault(require("./errors")); | ||
var _snooplogg = _interopRequireDefault(require("snooplogg")); | ||
var _http = require("http"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const { | ||
error, | ||
log | ||
} = (0, _snooplogg.default)('amplify-auth:util'); | ||
/** | ||
* Constructs an error from a failed fetch request, logs it, and returns it. | ||
* | ||
* @param {Object} params - Various parameters. | ||
* @param {String} params.label - The error label. | ||
* @param {Response} params.response - A fetch response object. | ||
* @param {Boolean} [params.optional] - When `true`, a failed request is logged, but not as an error. | ||
* @returns {Promise<Error>} | ||
*/ | ||
function handleRequestError({ | ||
label, | ||
response, | ||
optional | ||
}) { | ||
const meta = {}; | ||
let err = response.error; | ||
let { | ||
message, | ||
statusCode | ||
} = response; | ||
let status = meta.status = statusCode ? _http.STATUS_CODES[String(statusCode)] : 'Unknown error'; | ||
let details; | ||
meta.statusCode = statusCode; | ||
if (response instanceof Error) { | ||
meta.error = response; | ||
} | ||
try { | ||
const obj = JSON.parse(err || message); | ||
if (obj.error) { | ||
details = `${obj.error}${obj.error_description ? `: ${obj.error_description}` : ''}`; | ||
} else if (obj.description) { | ||
details = obj.description; | ||
} | ||
} catch (e) {// squelch | ||
} | ||
const msg = `${label}: ${statusCode ? `${statusCode} ` : ''}${details || err || message || status}`; | ||
if (optional) { | ||
log(msg); | ||
} else { | ||
error(msg); | ||
} | ||
return _errors.default.REQUEST_FAILED(msg, meta); | ||
} | ||
/** | ||
* Returns a hex encoded md5 hash of a string or object. | ||
@@ -83,4 +22,2 @@ * | ||
*/ | ||
function md5(it) { | ||
@@ -168,2 +105,2 @@ return _crypto.default.createHash('md5').update(typeof it === 'string' ? it : JSON.stringify(it)).digest('hex'); | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWwuanMiXSwibmFtZXMiOlsiZXJyb3IiLCJsb2ciLCJoYW5kbGVSZXF1ZXN0RXJyb3IiLCJsYWJlbCIsInJlc3BvbnNlIiwib3B0aW9uYWwiLCJtZXRhIiwiZXJyIiwibWVzc2FnZSIsInN0YXR1c0NvZGUiLCJzdGF0dXMiLCJTVEFUVVNfQ09ERVMiLCJTdHJpbmciLCJkZXRhaWxzIiwiRXJyb3IiLCJvYmoiLCJKU09OIiwicGFyc2UiLCJlcnJvcl9kZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwiZSIsIm1zZyIsIkUiLCJSRVFVRVNUX0ZBSUxFRCIsIm1kNSIsIml0IiwiY3J5cHRvIiwiY3JlYXRlSGFzaCIsInVwZGF0ZSIsInN0cmluZ2lmeSIsImRpZ2VzdCIsInJlbmRlckhUTUwiLCJjbHMiLCJ0aXRsZSIsInJlcGxhY2UiLCJwcmVwYXJlRm9ybSIsInBhcmFtcyIsImZvcm0iLCJVUkxTZWFyY2hQYXJhbXMiLCJwcm9wIiwiT2JqZWN0Iiwia2V5cyIsInNvcnQiLCJuYW1lIiwibSIsImkiLCJ0b0xvd2VyQ2FzZSIsImFwcGVuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOzs7O0FBRUEsTUFBTTtBQUFFQSxFQUFBQSxLQUFGO0FBQVNDLEVBQUFBO0FBQVQsSUFBaUIsd0JBQVUsbUJBQVYsQ0FBdkI7QUFFQTs7Ozs7Ozs7OztBQVNPLFNBQVNDLGtCQUFULENBQTRCO0FBQUVDLEVBQUFBLEtBQUY7QUFBU0MsRUFBQUEsUUFBVDtBQUFtQkMsRUFBQUE7QUFBbkIsQ0FBNUIsRUFBMkQ7QUFDakUsUUFBTUMsSUFBSSxHQUFHLEVBQWI7QUFDQSxNQUFJQyxHQUFHLEdBQUdILFFBQVEsQ0FBQ0osS0FBbkI7QUFDQSxNQUFJO0FBQUVRLElBQUFBLE9BQUY7QUFBV0MsSUFBQUE7QUFBWCxNQUEwQkwsUUFBOUI7QUFDQSxNQUFJTSxNQUFNLEdBQUdKLElBQUksQ0FBQ0ksTUFBTCxHQUFjRCxVQUFVLEdBQUdFLG1CQUFh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Q0QsU0FBT0YsSUFBUDtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IEUgZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHNub29wbG9nZyBmcm9tICdzbm9vcGxvZ2cnO1xuXG5pbXBvcnQgeyBTVEFUVVNfQ09ERVMgfSBmcm9tICdodHRwJztcblxuY29uc3QgeyBlcnJvciwgbG9nIH0gPSBzbm9vcGxvZ2coJ2FtcGxpZnktYXV0aDp1dGlsJyk7XG5cbi8qKlxuICogQ29uc3RydWN0cyBhbiBlcnJvciBmcm9tIGEgZmFpbGVkIGZldGNoIHJlcXVlc3QsIGxvZ3MgaXQsIGFuZCByZXR1cm5zIGl0LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBWYXJpb3VzIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0ge1N0cmluZ30gcGFyYW1zLmxhYmVsIC0gVGhlIGVycm9yIGxhYmVsLlxuICogQHBhcmFtIHtSZXNwb25zZX0gcGFyYW1zLnJlc3BvbnNlIC0gQSBmZXRjaCByZXNwb25zZSBvYmplY3QuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMub3B0aW9uYWxdIC0gV2hlbiBgdHJ1ZWAsIGEgZmFpbGVkIHJlcXVlc3QgaXMgbG9nZ2VkLCBidXQgbm90IGFzIGFuIGVycm9yLlxuICogQHJldHVybnMge1Byb21pc2U8RXJyb3I+fVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUmVxdWVzdEVycm9yKHsgbGFiZWwsIHJlc3BvbnNlLCBvcHRpb25hbCB9KSB7XG5cdGNvbnN0IG1ldGEgPSB7fTtcblx0bGV0IGVyciA9IHJlc3BvbnNlLmVycm9yO1xuXHRsZXQgeyBtZXNzYWdlLCBzdGF0dXNDb2RlIH0gPSByZXNwb25zZTtcblx0bGV0IHN0YXR1cyA9IG1ldGEuc3RhdHVzID0gc3RhdHVzQ29kZSA/IFNUQVRVU19DT0RFU1tTdHJpbmcoc3RhdHVzQ29kZSldIDogJ1Vua25vd24gZXJyb3InO1xuXHRsZXQgZGV0YWlscztcblxuXHRtZXRhLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuXHRpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdG1ldGEuZXJyb3IgPSByZXNwb25zZTtcblx0fVxuXG5cdHRyeSB7XG5cdFx0Y29uc3Qgb2JqID0gSlNPTi5wYXJzZShlcnIgfHwgbWVzc2FnZSk7XG5cdFx0aWYgKG9iai5lcnJvcikge1xuXHRcdFx0ZGV0YWlscyA9IGAke29iai5lcnJvcn0ke29iai5lcnJvcl9kZXNjcmlwdGlvbiA/IGA6ICR7b2JqLmVycm9yX2Rlc2NyaXB0aW9ufWAgOiAnJ31gO1xuXHRcdH0gZWxzZSBpZiAob2JqLmRlc2NyaXB0aW9uKSB7XG5cdFx0XHRkZXRhaWxzID0gb2JqLmRlc2NyaXB0aW9uO1xuXHRcdH1cblx0fSBjYXRjaCAoZSkge1xuXHRcdC8vIHNxdWVsY2hcblx0fVxuXG5cdGNvbnN0IG1zZyA9IGAke2xhYmVsfTogJHtzdGF0dXNDb2RlID8gYCR7c3RhdHVzQ29kZX0gYCA6ICcnfSR7ZGV0YWlscyB8fCBlcnIgfHwgbWVzc2FnZSB8fCBzdGF0dXN9YDtcblx0aWYgKG9wdGlvbmFsKSB7XG5cdFx0bG9nKG1zZyk7XG5cdH0gZWxzZSB7XG5cdFx0ZXJyb3IobXNnKTtcblx0fVxuXHRyZXR1cm4gRS5SRVFVRVNUX0ZBSUxFRChtc2csIG1ldGEpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBoZXggZW5jb2RlZCBtZDUgaGFzaCBvZiBhIHN0cmluZyBvciBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBpdCAtIFRoZSBvYmplY3QgdG8gc2VyaWFsaXplIGFuZCBoYXNoLlxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1kNShpdCkge1xuXHRyZXR1cm4gY3J5cHRvLmNyZWF0ZUhhc2goJ21kNScpLnVwZGF0ZSh0eXBlb2YgaXQgPT09ICdzdHJpbmcnID8gaXQgOiBKU09OLnN0cmluZ2lmeShpdCkpLmRpZ2VzdCgnaGV4Jyk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIEhUTUwgcGFnZSB3aXRoIGEgcGFuZWwgY29udGFpbmluZyBhIHRpdGxlIGFuZCBhIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHRpdGxlIC0gVGhlIHRpdGxlIHRvIGRpc3BsYXkuXG4gKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGluamVjdCBpbnRvIHRoZSBwYWdlLlxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckhUTUwoeyBjbHMsIG1lc3NhZ2UsIHRpdGxlIH0pIHtcblx0cmV0dXJuIGA8IWRvY3R5cGUgaHRtbD5cbjxodG1sPlxuPGhlYWQ+XG5cdDx0aXRsZT4ke3RpdGxlfTwvdGl0bGU+XG5cdDxzdHlsZT5cblx0Ym9keSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRjb2xvcjogIzMzMztcblx0XHRmb250LWZhbWlseTogXCJPcGVuIFNhbnNcIixcIkhlbHZldGljYSBOZXVlXCIsXCJBcmlhbFwiLHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAxNXB4O1xuXHR9XG5cblx0Ym9keSA+IGRpdiB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjY2JjYmNiO1xuXHRcdGJvcmRlci1yYWRpdXM6IDRweDtcblx0XHRtYXJnaW46IDMwcHggYXV0bztcblx0XHRwYWRkaW5nOiAyMHB4IDMwcHg7XG5cdFx0d2lkdGg6IDM2MHB4O1xuXHR9XG5cblx0LnN1Y2Nlc3MgPiBkaXYge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNkYWZmZGI7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgIzAwY2IwNjtcblx0XHRjb2xvcjogIzAwY2IwNjtcblx0fVxuXG5cdC5lcnJvciA+IGRpdiB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZGFkYTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjY2IwMDAwO1xuXHRcdGNvbG9yOiAjY2IwMDAwO1xuXHR9XG5cblx0aDEge1xuXHRcdGZvbnQtc2l6ZTogMjRweDtcblx0XHRmb250LXdlaWdodDogYm9sZDtcblx0fVxuXHQ8L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHkgY2xhc3M9XCIke2NscyB8fCAnJ31cIj5cblx0PGRpdj5cblx0XHQ8aDE+JHt0aXRsZX08L2gxPlxuXHRcdDxwPiR7U3RyaW5nKG1lc3NhZ2UpLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKX08L3A+XG5cdDwvZGl2PlxuPC9ib2R5PlxuPC9odG1sPmA7XG59XG5cbi8qKlxuICogQ29waWVzIGFsbCBwYXJhbXMgaW50byBhIG5ldyBvYmplY3QgYW5kIGNvbnZlcnRzIGNhbWVsY2FzZSBwcm9wZXJ0eSBuYW1lcyB0byB1bmRlcnNjb3JlIGNhc2UuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIFRoZSBxdWVyeSBzdHJpbmcgcGFyYW1ldGVycyB0byBzdHJpbmdpZnkuXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUZvcm0ocGFyYW1zKSB7XG5cdGNvbnN0IGZvcm0gPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cdGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyhwYXJhbXMpLnNvcnQoKSkge1xuXHRcdGNvbnN0IG5hbWUgPSBwcm9wLnJlcGxhY2UoL1tBLVpdL2csIChtLCBpKSA9PiBgJHtpID8gJ18nIDogJyd9JHttLnRvTG93ZXJDYXNlKCl9YCk7XG5cdFx0Zm9ybS5hcHBlbmQobmFtZSwgcGFyYW1zW3Byb3BdKTtcblx0fVxuXHRyZXR1cm4gZm9ybTtcbn1cbiJdLCJmaWxlIjoidXRpbC5qcyJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWwuanMiXSwibmFtZXMiOlsibWQ1IiwiaXQiLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwidXBkYXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsImRpZ2VzdCIsInJlbmRlckhUTUwiLCJjbHMiLCJtZXNzYWdlIiwidGl0bGUiLCJTdHJpbmciLCJyZXBsYWNlIiwicHJlcGFyZUZvcm0iLCJwYXJhbXMiLCJmb3JtIiwiVVJMU2VhcmNoUGFyYW1zIiwicHJvcCIsIk9iamVjdCIsImtleXMiLCJzb3J0IiwibmFtZSIsIm0iLCJpIiwidG9Mb3dlckNhc2UiLCJhcHBlbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7OztBQU1PLFNBQVNBLEdBQVQsQ0FBYUMsRUFBYixFQUFpQjtBQUN2QixTQUFPQyxnQkFBT0MsVUFBUCxDQUFrQixLQUFsQixFQUF5QkMsTUFBekIsQ0FBZ0MsT0FBT0gsRUFBUCxLQUFjLFFBQWQsR0FBeUJBLEVBQXpCLEdBQThCSSxJQUFJLENBQUNDLFNBQUwsQ0FBZUwsRUFBZixDQUE5RCxFQUFrRk0sTUFBbEYsQ0FBeUYsS0FBekYsQ0FBUDtBQUNBO0FBRUQ7Ozs7Ozs7OztBQU9PLFNBQVNDLFVBQVQsQ0FBb0I7QUFBRUMsRUFBQUEsR0FBRjtBQUFPQyxFQUFBQSxPQUFQO0FBQWdCQyxFQUFBQTtBQUFoQixDQUFwQixFQUE2QztBQUNuRCxTQUFROzs7VUFHQ0EsS0FBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBb0NERixHQUFHLElBQUksRUFBRzs7UUFFakJFLEtBQU07T0FDUEMsTUFBTSxDQUFDRixPQUFELENBQU4sQ0FBZ0JHLE9BQWhCLENBQXdCLElBQXhCLEVBQThCLE9BQTlCLEVBQXVDQSxPQUF2QyxDQUErQyxJQUEvQyxFQUFxRCxNQUFyRCxFQUE2REEsT0FBN0QsQ0FBcUUsSUFBckUsRUFBMkUsTUFBM0UsQ0FBbUY7OztRQTFDekY7QUE4Q0E7QUFFRDs7Ozs7Ozs7QUFNTyxTQUFTQyxXQUFULENBQXFCQyxNQUFyQixFQUE2QjtBQUNuQyxRQUFNQyxJQUFJLEdBQUcsSUFBSUMsZUFBSixFQUFiOztBQUNBLE9BQUssTUFBTUMsSUFBWCxJQUFtQkMsTUFBTSxDQUFDQyxJQUFQLENBQVlMLE1BQVosRUFBb0JNLElBQXBCLEVBQW5CLEVBQStDO0FBQzlDLFVBQU1DLElBQUksR0FBR0osSUFBSSxDQUFDTCxPQUFMLENBQWEsUUFBYixFQUF1QixDQUFDVSxDQUFELEVBQUlDLENBQUosS0FBVyxHQUFFQSxDQUFDLEdBQUcsR0FBSCxHQUFTLEVBQUcsR0FBRUQsQ0FBQyxDQUFDRSxXQUFGLEVBQWdCLEVBQW5FLENBQWI7QUFDQVQsSUFBQUEsSUFBSSxDQUFDVSxNQUFMLENBQVlKLElBQVosRUFBa0JQLE1BQU0sQ0FBQ0csSUFBRCxDQUF4QjtBQUNBOztBQUNELFNBQU9GLElBQVA7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuLyoqXG4gKiBSZXR1cm5zIGEgaGV4IGVuY29kZWQgbWQ1IGhhc2ggb2YgYSBzdHJpbmcgb3Igb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gaXQgLSBUaGUgb2JqZWN0IHRvIHNlcmlhbGl6ZSBhbmQgaGFzaC5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZDUoaXQpIHtcblx0cmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUodHlwZW9mIGl0ID09PSAnc3RyaW5nJyA/IGl0IDogSlNPTi5zdHJpbmdpZnkoaXQpKS5kaWdlc3QoJ2hleCcpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhbiBIVE1MIHBhZ2Ugd2l0aCBhIHBhbmVsIGNvbnRhaW5pbmcgYSB0aXRsZSBhbmQgYSBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0aXRsZSAtIFRoZSB0aXRsZSB0byBkaXNwbGF5LlxuICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSB0byBpbmplY3QgaW50byB0aGUgcGFnZS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJIVE1MKHsgY2xzLCBtZXNzYWdlLCB0aXRsZSB9KSB7XG5cdHJldHVybiBgPCFkb2N0eXBlIGh0bWw+XG48aHRtbD5cbjxoZWFkPlxuXHQ8dGl0bGU+JHt0aXRsZX08L3RpdGxlPlxuXHQ8c3R5bGU+XG5cdGJvZHkge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0Y29sb3I6ICMzMzM7XG5cdFx0Zm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCIsXCJIZWx2ZXRpY2EgTmV1ZVwiLFwiQXJpYWxcIixzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTVweDtcblx0fVxuXG5cdGJvZHkgPiBkaXYge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2NiY2JjYjtcblx0XHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdFx0bWFyZ2luOiAzMHB4IGF1dG87XG5cdFx0cGFkZGluZzogMjBweCAzMHB4O1xuXHRcdHdpZHRoOiAzNjBweDtcblx0fVxuXG5cdC5zdWNjZXNzID4gZGl2IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZGFmZmRiO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICMwMGNiMDY7XG5cdFx0Y29sb3I6ICMwMGNiMDY7XG5cdH1cblxuXHQuZXJyb3IgPiBkaXYge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmRhZGE7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2NiMDAwMDtcblx0XHRjb2xvcjogI2NiMDAwMDtcblx0fVxuXG5cdGgxIHtcblx0XHRmb250LXNpemU6IDI0cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdH1cblx0PC9zdHlsZT5cbjwvaGVhZD5cbjxib2R5IGNsYXNzPVwiJHtjbHMgfHwgJyd9XCI+XG5cdDxkaXY+XG5cdFx0PGgxPiR7dGl0bGV9PC9oMT5cblx0XHQ8cD4ke1N0cmluZyhtZXNzYWdlKS5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7Jyl9PC9wPlxuXHQ8L2Rpdj5cbjwvYm9keT5cbjwvaHRtbD5gO1xufVxuXG4vKipcbiAqIENvcGllcyBhbGwgcGFyYW1zIGludG8gYSBuZXcgb2JqZWN0IGFuZCBjb252ZXJ0cyBjYW1lbGNhc2UgcHJvcGVydHkgbmFtZXMgdG8gdW5kZXJzY29yZSBjYXNlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBUaGUgcXVlcnkgc3RyaW5nIHBhcmFtZXRlcnMgdG8gc3RyaW5naWZ5LlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVGb3JtKHBhcmFtcykge1xuXHRjb25zdCBmb3JtID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuXHRmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXMocGFyYW1zKS5zb3J0KCkpIHtcblx0XHRjb25zdCBuYW1lID0gcHJvcC5yZXBsYWNlKC9bQS1aXS9nLCAobSwgaSkgPT4gYCR7aSA/ICdfJyA6ICcnfSR7bS50b0xvd2VyQ2FzZSgpfWApO1xuXHRcdGZvcm0uYXBwZW5kKG5hbWUsIHBhcmFtc1twcm9wXSk7XG5cdH1cblx0cmV0dXJuIGZvcm07XG59XG4iXSwiZmlsZSI6InV0aWwuanMifQ== |
{ | ||
"name": "@axway/amplify-auth-sdk", | ||
"version": "2.0.2", | ||
"version": "2.0.3", | ||
"description": "Axway AMPLIFY authentication SDK for Node.js", | ||
@@ -25,5 +25,5 @@ "author": "Axway, Inc. <npmjs@appcelerator.com>", | ||
"fs-extra": "^9.0.0", | ||
"got": "^11.1.0", | ||
"got": "^11.1.4", | ||
"jws": "^4.0.0", | ||
"open": "^7.0.3", | ||
"open": "^7.0.4", | ||
"pluralize": "^8.0.0", | ||
@@ -30,0 +30,0 @@ "snooplogg": "^3.0.0", |
Sorry, the diff of this file is too big to display
1
304992
3339
Updatedgot@^11.1.4
Updatedopen@^7.0.4