Comparing version 1.0.0 to 1.0.1
@@ -24,12 +24,15 @@ "use strict"; | ||
/** | ||
* Renders help for a specific context, and its parent contexts, to a string. | ||
* Renders help for a specific context, and its parent contexts, to a string. This function is | ||
* passed into the selected command's `action()` as a property called `help()` so that a command | ||
* can render its own help output. | ||
* | ||
* @param {Context} ctx - The context to render help. | ||
* @param {Object} [opts] - Various options to pass into `generateHelp()`. | ||
* @returns {String} | ||
*/ | ||
async function renderHelp(ctx) { | ||
async function renderHelp(ctx, opts) { | ||
const file = ctx.get('helpTemplateFile', _path.default.resolve(__dirname, '..', '..', 'templates', 'help.tpl')); | ||
log(`Rendering help template: ${highlight(file)}`); | ||
return (0, _template.renderFile)(file, await ctx.generateHelp()); | ||
return (0, _template.renderFile)(file, await ctx.generateHelp(opts)); | ||
} | ||
@@ -44,4 +47,19 @@ /** | ||
var _default = { | ||
/** | ||
* Indicates this command is the built-in cli-kit help command so that if the CLI instance this | ||
* command belongs to gets added to another CLI instance, we don't copy it over. | ||
* @type {Boolean} | ||
*/ | ||
clikitHelp: true, | ||
/** | ||
* While this is a command, we don't want to show it since we already show the `--help` flag. | ||
* @type {Boolean} | ||
*/ | ||
hidden: true, | ||
/** | ||
* Output the help as JSON. Neato. | ||
* @type {Object} | ||
*/ | ||
options: { | ||
@@ -58,3 +76,4 @@ '--json': null | ||
* @param {Error} [params.err] - An error object in the event an error occurred. | ||
* @param {Function} params.exit - A function that sets the exit code. | ||
* @param {Function} params.exitCode - A function that sets the exit code. | ||
* @param {Array.<String>} [params.parentContextNames] - An array of parent context names. | ||
* @param {String} [params.unknownCommand] - The name of the unknown command. | ||
@@ -71,2 +90,3 @@ * @param {Array.<Error>} [params.warnings] - A list of warnings (error objects). | ||
exitCode, | ||
parentContextNames, | ||
warnings | ||
@@ -97,2 +117,3 @@ } = {}) { | ||
err, | ||
parentContextNames, | ||
warnings | ||
@@ -155,2 +176,2 @@ }); // check if we should error if passed an invalid command | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1hbmRzL2hlbHAuanMiXSwibmFtZXMiOlsibG9nIiwiaGlnaGxpZ2h0IiwiZGVidWciLCJzdHlsZXMiLCJyZW5kZXJIZWxwIiwiY3R4IiwiZmlsZSIsImdldCIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwiZ2VuZXJhdGVIZWxwIiwiY2xpa2l0SGVscCIsImhpZGRlbiIsIm9wdGlvbnMiLCJhY3Rpb24iLCJfIiwiYXJndiIsImNvbnNvbGUiLCJjb250ZXh0cyIsImVyciIsImV4aXRDb2RlIiwid2FybmluZ3MiLCJmb3JtYXRFcnJvciIsInR5cGUiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJjb2RlIiwibWVzc2FnZSIsImpzb24iLCJtZXRhIiwic3RhY2siLCJoZWxwIiwibGVuZ3RoIiwidW5rbm93bkNvbW1hbmQiLCJFcnJvciIsImxldmVuc2h0ZWluIiwicmVxdWlyZSIsInN1Z2dlc3Rpb25zIiwiY29tbWFuZHMiLCJlbnRyaWVzIiwibWFwIiwiY21kIiwiZGVzYyIsImRpc3QiLCJmaWx0ZXIiLCJzIiwic29ydCIsImEiLCJiIiwiciIsImxvY2FsZUNvbXBhcmUiLCJlcnJvciIsIkFycmF5IiwiaXNBcnJheSIsIl9zdGRvdXQiLCJfc3RkZXJyIiwid3JpdGUiLCJKU09OIiwic3RyaW5naWZ5IiwiaGVhZGVyIiwiZm9vdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUNBOztBQUVBOzs7O0FBRUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVUsb0JBQU0sY0FBTixDQUFoQjtBQUNBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFnQkMsZUFBTUMsTUFBNUI7QUFFQTs7Ozs7OztBQU1PLGVBQWVDLFVBQWYsQ0FBMEJDLEdBQTFCLEVBQStCO0FBQ3JDLFFBQU1DLElBQUksR0FBR0QsR0FBRyxDQUFDRSxHQUFKLENBQVEsa0JBQVIsRUFBNEJDLGNBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixJQUE5QixFQUFv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QUFDNEIsTUFBVixFQUFrQjtBQUNqQjVCLFVBQUFBLElBQUksQ0FBQzRCLE1BQUwsR0FBYyxJQUFkO0FBQ0E7O0FBQ0QsWUFBSSxDQUFDNUIsSUFBSSxDQUFDNkIsTUFBVixFQUFrQjtBQUNqQjdCLFVBQUFBLElBQUksQ0FBQzZCLE1BQUwsR0FBYyxJQUFkO0FBQ0EsU0FYSyxDQWFOOzs7QUFDQSxTQUFDekMsR0FBRyxHQUFHb0MsT0FBSCxHQUFhRCxPQUFqQixFQUEwQkUsS0FBMUIsQ0FBZ0MsMEJBQVduRCxJQUFYLEVBQWlCMEIsSUFBakIsQ0FBaEM7QUFDQSxPQWhEMEIsQ0FrRDNCOzs7QUFDQVgsTUFBQUEsUUFBUSxDQUFDRCxHQUFHLEdBQUcsQ0FBSCxHQUFPZixHQUFHLENBQUNFLEdBQUosQ0FBUSxjQUFSLENBQVgsQ0FBUixDQW5EMkIsQ0FxRDNCO0FBQ0E7O0FBQ0E7QUFDQTtBQUNEOztBQTdGYSxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnIGZyb20gJy4uL2xpYi9kZWJ1Zyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgcmVuZGVyRmlsZSB9IGZyb20gJy4uL3JlbmRlci90ZW1wbGF0ZSc7XG5cbmNvbnN0IHsgbG9nIH0gPSBkZWJ1ZygnY2xpLWtpdDpoZWxwJyk7XG5jb25zdCB7IGhpZ2hsaWdodCB9ID0gZGVidWcuc3R5bGVzO1xuXG4vKipcbiAqIFJlbmRlcnMgaGVscCBmb3IgYSBzcGVjaWZpYyBjb250ZXh0LCBhbmQgaXRzIHBhcmVudCBjb250ZXh0cywgdG8gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtDb250ZXh0fSBjdHggLSBUaGUgY29udGV4dCB0byByZW5kZXIgaGVscC5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJIZWxwKGN0eCkge1xuXHRjb25zdCBmaWxlID0gY3R4LmdldCgnaGVscFRlbXBsYXRlRmlsZScsIHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICd0ZW1wbGF0ZXMnLCAnaGVscC50cGwnKSk7XG5cdGxvZyhgUmVuZGVyaW5nIGhlbHAgdGVtcGxhdGU6ICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXHRyZXR1cm4gcmVuZGVyRmlsZShmaWxlLCBhd2FpdCBjdHguZ2VuZXJhdGVIZWxwKCkpO1xufVxuXG4vKipcbiAqIFRoZSBidWlsdC1pbiBoZWxwIGNvbW1hbmQgcGFyYW1ldGVycy5cbiAqXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG5leHBvcnQgZGVmYXVsdCB7XG5cdGNsaWtpdEhlbHA6IHRydWUsXG5cblx0aGlkZGVuOiB0cnVlLFxuXG5cdG9wdGlvbnM6IHtcblx0XHQnLS1qc29uJzogbnVsbFxuXHR9LFxuXG5cdC8qKlxuXHQgKiBFeGVjdXRlcyB0aGUgaGVscCBjb21tYW5kLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gVmFyaW91cyBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtcy5hcmd2XSAtIFRoZSBwYXJzZWQgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtBcnJheS48Q29udGV4dD59IHBhcmFtcy5jb250ZXh0cyAtIFRoZSBzdGFjayBvZiBjb250ZXh0cyBmb3VuZCBkdXJpbmcgcGFyc2luZy5cblx0ICogQHBhcmFtIHtFcnJvcn0gW3BhcmFtcy5lcnJdIC0gQW4gZXJyb3Igb2JqZWN0IGluIHRoZSBldmVudCBhbiBlcnJvciBvY2N1cnJlZC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1zLmV4aXQgLSBBIGZ1bmN0aW9uIHRoYXQgc2V0cyB0aGUgZXhpdCBjb2RlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy51bmtub3duQ29tbWFuZF0gLSBUaGUgbmFtZSBvZiB0aGUgdW5rbm93biBjb21tYW5kLlxuXHQgKiBAcGFyYW0ge0FycmF5LjxFcnJvcj59IFtwYXJhbXMud2FybmluZ3NdIC0gQSBsaXN0IG9mIHdhcm5pbmdzIChlcnJvciBvYmplY3RzKS5cblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqL1xuXHRhc3luYyBhY3Rpb24oeyBfID0gW10sIGFyZ3YgPSB7fSwgY29uc29sZSwgY29udGV4dHMsIGVyciwgZXhpdENvZGUsIHdhcm5pbmdzIH0gPSB7fSkge1xuXHRcdGV4aXRDb2RlKCshIWVycik7IC8vIDA9c3VjY2VzcywgMT1lcnJvclxuXG5cdFx0Y29uc3QgZm9ybWF0RXJyb3IgPSBlcnIgPT4ge1xuXHRcdFx0Y29uc3QgdHlwZSA9IGVyciAmJiBlcnIuY29uc3RydWN0b3IgJiYgZXJyLmNvbnN0cnVjdG9yLm5hbWUgfHwgbnVsbDtcblx0XHRcdHJldHVybiBlcnIgPyB7XG5cdFx0XHRcdGNvZGU6ICAgIGVyci5jb2RlLFxuXHRcdFx0XHRtZXNzYWdlOiAhYXJndi5qc29uICYmIHR5cGUgPyBgJHt0eXBlfTogJHtlcnIubWVzc2FnZX1gIDogZXJyLm1lc3NhZ2UsXG5cdFx0XHRcdG1ldGE6ICAgIGVyci5tZXRhLFxuXHRcdFx0XHRzdGFjazogICBlcnIuc3RhY2ssXG5cdFx0XHRcdHR5cGVcblx0XHRcdH0gOiBudWxsO1xuXHRcdH07XG5cblx0XHQvLyBza2lwIHRoZSBidWlsdC1pbiBoZWxwIGNvbW1hbmQgYW5kIGZpbmQgdGhlIGZpcnN0IGNvbnRleHRcblx0XHRmb3IgKGNvbnN0IGN0eCBvZiBjb250ZXh0cykge1xuXHRcdFx0Ly8gd2UgZG9uJ3QgZGlzcGxheSBoZWxwIGZvciB0aGUgaGVscCBjb21tYW5kXG5cdFx0XHRpZiAoY3R4LmNsaWtpdEhlbHApIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGdlbmVyYXRlIHRoZSBoZWxwIG9iamVjdFxuXHRcdFx0Y29uc3QgaGVscCA9IGF3YWl0IGN0eC5nZW5lcmF0ZUhlbHAoeyBlcnIsIHdhcm5pbmdzIH0pO1xuXG5cdFx0XHQvLyBjaGVjayBpZiB3ZSBzaG91bGQgZXJyb3IgaWYgcGFzc2VkIGFuIGludmFsaWQgY29tbWFuZFxuXHRcdFx0aWYgKCFlcnIgJiYgXy5sZW5ndGggJiYgKGN0eC5nZXQoJ2Vycm9ySWZVbmtub3duQ29tbWFuZCcpIHx8IGFyZ3YuaGVscCkpIHtcblx0XHRcdFx0Y29uc3QgdW5rbm93bkNvbW1hbmQgPSBfWzBdO1xuXHRcdFx0XHRlcnIgPSBuZXcgRXJyb3IoYFVua25vd24gY29tbWFuZCBcIiR7dW5rbm93bkNvbW1hbmR9XCJgKTtcblxuXHRcdFx0XHRjb25zdCBsZXZlbnNodGVpbiA9IHJlcXVpcmUoJ2Zhc3QtbGV2ZW5zaHRlaW4nKTtcblx0XHRcdFx0aGVscC5zdWdnZXN0aW9ucyA9IGhlbHAuY29tbWFuZHMuZW50cmllc1xuXHRcdFx0XHRcdC5tYXAoY21kID0+ICh7IG5hbWU6IGNtZC5uYW1lLCBkZXNjOiBjbWQuZGVzYywgZGlzdDogbGV2ZW5zaHRlaW4uZ2V0KHVua25vd25Db21tYW5kLCBjbWQubmFtZSkgfSkpXG5cdFx0XHRcdFx0LmZpbHRlcihzID0+IHMuZGlzdCA8PSAyKVxuXHRcdFx0XHRcdC5zb3J0KChhLCBiKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCByID0gYS5kaXN0IC0gYi5kaXN0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIHIgIT09IDAgPyByIDogYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0aGVscC5lcnJvciA9IGZvcm1hdEVycm9yKGVycik7XG5cdFx0XHRoZWxwLndhcm5pbmdzID0gQXJyYXkuaXNBcnJheSh3YXJuaW5ncykgPyB3YXJuaW5ncy5tYXAoZm9ybWF0RXJyb3IpIDogbnVsbDtcblxuXHRcdFx0Y29uc3QgeyBfc3Rkb3V0LCBfc3RkZXJyIH0gPSBjb25zb2xlO1xuXG5cdFx0XHQvLyBwcmludCB0aGUgaGVscCBvdXRwdXRcblx0XHRcdGlmIChhcmd2Lmpzb24pIHtcblx0XHRcdFx0X3N0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeShoZWxwLCBudWxsLCAnICAnKSk7XG5cdFx0XHRcdF9zdGRvdXQud3JpdGUoJ1xcbicpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZmlsZSA9IGN0eC5nZXQoJ2hlbHBUZW1wbGF0ZUZpbGUnLCBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAndGVtcGxhdGVzJywgJ2hlbHAudHBsJykpO1xuXHRcdFx0XHRsb2coYFJlbmRlcmluZyBoZWxwIHRlbXBsYXRlOiAke2hpZ2hsaWdodChmaWxlKX1gKTtcblxuXHRcdFx0XHQvLyBvbmx5IGNvbW1hbmRzIGhhdmUgYSBoZWFkZXIgYW5kIGZvb3RlciwgYnV0IENMSSBpbnN0YW5jZXMgZG8gbm90IGFuZCB0aHVzIHdlXG5cdFx0XHRcdC8vIG5lZWQgdG8gZGVmaW5lIHRoZW0gdG8gbWFrZSB0aGUgdGVtcGxhdGUgaGFwcHlcblx0XHRcdFx0aWYgKCFoZWxwLmhlYWRlcikge1xuXHRcdFx0XHRcdGhlbHAuaGVhZGVyID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWhlbHAuZm9vdGVyKSB7XG5cdFx0XHRcdFx0aGVscC5mb290ZXIgPSBudWxsO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gZGV0ZXJtaW5lIHRoZSBvdXRwdXQgc3RyZWFtXG5cdFx0XHRcdChlcnIgPyBfc3RkZXJyIDogX3N0ZG91dCkud3JpdGUocmVuZGVyRmlsZShmaWxlLCBoZWxwKSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCB0aGUgZXhpdCBjb2RlXG5cdFx0XHRleGl0Q29kZShlcnIgPyAxIDogY3R4LmdldCgnaGVscEV4aXRDb2RlJykpO1xuXG5cdFx0XHQvLyB3ZSBvbmx5IGxvb3AgdW50aWwgd2UgaGl0IHRoZSBmaXJzdCB2YWxpZCBjb250ZXh0Li4uIGdlbmVyYXRlSGVscCgpIHdpbGwgcmVjdXJzZVxuXHRcdFx0Ly8gcGFyZW50IGNvbnRleHRzIGZvciB1c1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG59O1xuIl0sImZpbGUiOiJjb21tYW5kcy9oZWxwLmpzIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1hbmRzL2hlbHAuanMiXSwibmFtZXMiOlsibG9nIiwiaGlnaGxpZ2h0IiwiZGVidWciLCJzdHlsZXMiLCJyZW5kZXJIZWxwIiwiY3R4Iiwib3B0cyIsImZpbGUiLCJnZXQiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsImdlbmVyYXRlSGVscCIsImNsaWtpdEhlbHAiLCJoaWRkZW4iLCJvcHRpb25zIiwiYWN0aW9uIiwiXyIsImFyZ3YiLCJjb25zb2xlIiwiY29udGV4dHMiLCJlcnIiLCJleGl0Q29kZSIsInBhcmVudENvbnRleHROYW1lcyIsIndhcm5pbmdzIiwiZm9ybWF0RXJyb3IiLCJ0eXBlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiY29kZSIsIm1lc3NhZ2UiLCJqc29uIiwibWV0YSIsInN0YWNrIiwiaGVscCIsImxlbmd0aCIsInVua25vd25Db21tYW5kIiwiRXJyb3IiLCJsZXZlbnNodGVpbiIsInJlcXVpcmUiLCJzdWdnZXN0aW9ucyIsImNvbW1hbmRzIiwiZW50cmllcyIsIm1hcCIsImNtZCIsImRlc2MiLCJkaXN0IiwiZmlsdGVyIiwicyIsInNvcnQiLCJhIiwiYiIsInIiLCJsb2NhbGVDb21wYXJlIiwiZXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJfc3Rkb3V0IiwiX3N0ZGVyciIsIndyaXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsImhlYWRlciIsImZvb3RlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFVLG9CQUFNLGNBQU4sQ0FBaEI7QUFDQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBZ0JDLGVBQU1DLE1BQTVCO0FBRUE7Ozs7Ozs7Ozs7QUFTTyxlQUFlQyxVQUFmLENBQTBCQyxHQUExQixFQUErQkMsSUFBL0IsRUFBcUM7QUFDM0MsUUFBTUMsSUFBSSxHQUFHRixHQUFHLENBQUNHLEdBQUosQ0FBUSxrQkFBUixFQUE0QkMsY0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCLElBQXhCLEVBQThCLElBQTlCLEVBQW9DLFdBQXBDLEVBQWlELFVBQWpELENBQTVCLENBQWI7QUFDQVgsRUFBQUEsR0FBRyxDQUFFLDRCQUEyQkMsU0FBUyxDQUFDTSxJQUFELENBQU8sRUFBN0MsQ0FBSDtBQUNBLFNBQU8sMEJBQVdBLElBQVgsRUFBaUIsTUFBTUYsR0FBRyxDQUFDTyxZQUFKLENBQWlCTixJQUFqQixDQUF2QixDQUFQO0FBQ0E7QUFFRDs7Ozs7OztlQUtlO0FBQ2Q7Ozs7O0FBS0FPLEVBQUFBLFVBQVUsRUFBRSxJQU5FOztBQVFkOzs7O0FBSUFDLEVBQUFBLE1BQU0sRUFBRSxJQVpNOztBQWNkOzs7O0FBSUFDLEVBQUFBLE9BQU8sRUFBRTtBQUNSLGNBQVU7QUFERixHQWxCSzs7QUFzQmQ7Ozs7Ozs7Ozs7Ozs7QUFhQSxRQUFNQyxNQUFOLENBQWE7QUFBRUMsSUFBQUEsQ0FBQyxHQUFHLEVBQU47QUFBVUMsSUFBQUEsSUFBSSxHQUFHLEVBQWpCO0FBQXFCQyxJQUFBQSxPQUFyQjtBQUE4QkMsSUFBQUEsUUFBOUI7QUFBd0NDLElBQUFBLEdBQXhDO0FBQTZDQyxJQUFBQSxRQUE3QztBQUF1REMsSUFBQUEsa0JBQXZEO0FBQTJFQyxJQUFBQTtBQUEzRSxNQUF3RixFQUFyRyxFQUF5RztBQUN4R0YsSUFBQUEsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDRCxHQUFKLENBQVIsQ0FEd0csQ0FDdEY7O0FBRWxCLFVBQU1JLFdBQVcsR0FBR0osR0FBRyxJQUFJO0FBQzFCLFlBQU1LLElBQUksR0FBR0wsR0FBRyxJQUFJQSxHQUFHLENBQUNNLFdBQVgsSUFBMEJOLEdBQUcsQ0FBQ00sV0FBSixDQUFnQkMsSUFBMUMsSUFBa0QsSUFBL0Q7QUFDQSxhQUFPUCxHQUFHLEdBQUc7QUFDWlEsUUFBQUEsSUFBSSxFQUFLUixHQUFHLENBQUNRLElBREQ7QUFFWkMsUUFBQUEsT0FBTyxFQUFFLENBQUNaLElBQUksQ0FBQ2EsSUFBTixJQUFjTCxJQUFkLEdBQXNCLEdBQUVBLElBQUssS0FBSUwsR0FBRyxDQUFDUyxPQUFRLEVBQTdDLEdBQWlEVCxHQUFHLENBQUNTLE9BRmxEO0FBR1pFLFFBQUFBLElBQUksRUFBS1gsR0FBRyxDQUFDVyxJQUhEO0FBSVpDLFFBQUFBLEtBQUssRUFBSVosR0FBRyxDQUFDWSxLQUpEO0FBS1pQLFFBQUFBO0FBTFksT0FBSCxHQU1OLElBTko7QUFPQSxLQVRELENBSHdHLENBY3hHOzs7QUFDQSxTQUFLLE1BQU1yQixHQUFYLElBQWtCZSxRQUFsQixFQUE0QjtBQUMzQjtBQUNBLFVBQUlmLEdBQUcsQ0FBQ1EsVUFBUixFQUFvQjtBQUNuQjtBQUNBLE9BSjBCLENBTTNCOzs7QUFDQSxZQUFNcUIsSUFBSSxHQUFHLE1BQU03QixHQUFHLENBQUNPLFlBQUosQ0FBaUI7QUFBRVMsUUFBQUEsR0FBRjtBQUFPRSxRQUFBQSxrQkFBUDtBQUEyQkMsUUFBQUE7QUFBM0IsT0FBakIsQ0FBbkIsQ0FQMkIsQ0FTM0I7O0FBQ0EsVUFBSSxDQUFDSCxHQUFELElBQVFKLENBQUMsQ0FBQ2tCLE1BQVYsS0FBcUI5QixHQUFHLENBQUNHLEdBQUosQ0FBUSx1QkFBUixLQUFvQ1UsSUFBSSxDQUFDZ0IsSUFBOUQsQ0FBSixFQUF5RTtBQUN4RSxjQUFNRSxjQUFjLEdBQUduQixDQUFDLENBQUMsQ0FBRCxDQUF4QjtBQUNBSSxRQUFBQSxHQUFHLEdBQUcsSUFBSWdCLEtBQUosQ0FBVyxvQkFBbUJELGNBQWUsR0FBN0MsQ0FBTjs7QUFFQSxjQUFNRSxXQUFXLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUEzQjs7QUFDQUwsUUFBQUEsSUFBSSxDQUFDTSxXQUFMLEdBQW1CTixJQUFJLENBQUNPLFFBQUwsQ0FBY0MsT0FBZCxDQUNqQkMsR0FEaUIsQ0FDYkMsR0FBRyxLQUFLO0FBQUVoQixVQUFBQSxJQUFJLEVBQUVnQixHQUFHLENBQUNoQixJQUFaO0FBQWtCaUIsVUFBQUEsSUFBSSxFQUFFRCxHQUFHLENBQUNDLElBQTVCO0FBQWtDQyxVQUFBQSxJQUFJLEVBQUVSLFdBQVcsQ0FBQzlCLEdBQVosQ0FBZ0I0QixjQUFoQixFQUFnQ1EsR0FBRyxDQUFDaEIsSUFBcEM7QUFBeEMsU0FBTCxDQURVLEVBRWpCbUIsTUFGaUIsQ0FFVkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNGLElBQUYsSUFBVSxDQUZMLEVBR2pCRyxJQUhpQixDQUdaLENBQUNDLENBQUQsRUFBSUMsQ0FBSixLQUFVO0FBQ2YsZ0JBQU1DLENBQUMsR0FBR0YsQ0FBQyxDQUFDSixJQUFGLEdBQVNLLENBQUMsQ0FBQ0wsSUFBckI7QUFDQSxpQkFBT00sQ0FBQyxLQUFLLENBQU4sR0FBVUEsQ0FBVixHQUFjRixDQUFDLENBQUN0QixJQUFGLENBQU95QixhQUFQLENBQXFCRixDQUFDLENBQUN2QixJQUF2QixDQUFyQjtBQUNBLFNBTmlCLENBQW5CO0FBT0E7O0FBRURNLE1BQUFBLElBQUksQ0FBQ29CLEtBQUwsR0FBYTdCLFdBQVcsQ0FBQ0osR0FBRCxDQUF4QjtBQUNBYSxNQUFBQSxJQUFJLENBQUNWLFFBQUwsR0FBZ0IrQixLQUFLLENBQUNDLE9BQU4sQ0FBY2hDLFFBQWQsSUFBMEJBLFFBQVEsQ0FBQ21CLEdBQVQsQ0FBYWxCLFdBQWIsQ0FBMUIsR0FBc0QsSUFBdEU7QUFFQSxZQUFNO0FBQUVnQyxRQUFBQSxPQUFGO0FBQVdDLFFBQUFBO0FBQVgsVUFBdUJ2QyxPQUE3QixDQTNCMkIsQ0E2QjNCOztBQUNBLFVBQUlELElBQUksQ0FBQ2EsSUFBVCxFQUFlO0FBQ2QwQixRQUFBQSxPQUFPLENBQUNFLEtBQVIsQ0FBY0MsSUFBSSxDQUFDQyxTQUFMLENBQWUzQixJQUFmLEVBQXFCLElBQXJCLEVBQTJCLElBQTNCLENBQWQ7O0FBQ0F1QixRQUFBQSxPQUFPLENBQUNFLEtBQVIsQ0FBYyxJQUFkO0FBQ0EsT0FIRCxNQUdPO0FBQ04sY0FBTXBELElBQUksR0FBR0YsR0FBRyxDQUFDRyxHQUFKLENBQVEsa0JBQVIsRUFBNEJDLGNBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixJQUE5QixFQUFvQyxXQUFwQyxFQUFpRCxVQUFqRCxDQUE1QixDQUFiO0FBQ0FYLFFBQUFBLEdBQUcsQ0FBRSw0QkFBMkJDLFNBQVMsQ0FBQ00sSUFBRCxDQUFPLEVBQTdDLENBQUgsQ0FGTSxDQUlOO0FBQ0E7O0FBQ0EsWUFBSSxDQUFDMkIsSUFBSSxDQUFDNEIsTUFBVixFQUFrQjtBQUNqQjVCLFVBQUFBLElBQUksQ0FBQzRCLE1BQUwsR0FBYyxJQUFkO0FBQ0E7O0FBQ0QsWUFBSSxDQUFDNUIsSUFBSSxDQUFDNkIsTUFBVixFQUFrQjtBQUNqQjdCLFVBQUFBLElBQUksQ0FBQzZCLE1BQUwsR0FBYyxJQUFkO0FBQ0EsU0FYSyxDQWFOOzs7QUFDQSxTQUFDMUMsR0FBRyxHQUFHcUMsT0FBSCxHQUFhRCxPQUFqQixFQUEwQkUsS0FBMUIsQ0FBZ0MsMEJBQVdwRCxJQUFYLEVBQWlCMkIsSUFBakIsQ0FBaEM7QUFDQSxPQWhEMEIsQ0FrRDNCOzs7QUFDQVosTUFBQUEsUUFBUSxDQUFDRCxHQUFHLEdBQUcsQ0FBSCxHQUFPaEIsR0FBRyxDQUFDRyxHQUFKLENBQVEsY0FBUixDQUFYLENBQVIsQ0FuRDJCLENBcUQzQjtBQUNBOztBQUNBO0FBQ0E7QUFDRDs7QUEzR2EsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICcuLi9saWIvZGVidWcnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IHJlbmRlckZpbGUgfSBmcm9tICcuLi9yZW5kZXIvdGVtcGxhdGUnO1xuXG5jb25zdCB7IGxvZyB9ID0gZGVidWcoJ2NsaS1raXQ6aGVscCcpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IGRlYnVnLnN0eWxlcztcblxuLyoqXG4gKiBSZW5kZXJzIGhlbHAgZm9yIGEgc3BlY2lmaWMgY29udGV4dCwgYW5kIGl0cyBwYXJlbnQgY29udGV4dHMsIHRvIGEgc3RyaW5nLiBUaGlzIGZ1bmN0aW9uIGlzXG4gKiBwYXNzZWQgaW50byB0aGUgc2VsZWN0ZWQgY29tbWFuZCdzIGBhY3Rpb24oKWAgYXMgYSBwcm9wZXJ0eSBjYWxsZWQgYGhlbHAoKWAgc28gdGhhdCBhIGNvbW1hbmRcbiAqIGNhbiByZW5kZXIgaXRzIG93biBoZWxwIG91dHB1dC5cbiAqXG4gKiBAcGFyYW0ge0NvbnRleHR9IGN0eCAtIFRoZSBjb250ZXh0IHRvIHJlbmRlciBoZWxwLlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucyB0byBwYXNzIGludG8gYGdlbmVyYXRlSGVscCgpYC5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJIZWxwKGN0eCwgb3B0cykge1xuXHRjb25zdCBmaWxlID0gY3R4LmdldCgnaGVscFRlbXBsYXRlRmlsZScsIHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICd0ZW1wbGF0ZXMnLCAnaGVscC50cGwnKSk7XG5cdGxvZyhgUmVuZGVyaW5nIGhlbHAgdGVtcGxhdGU6ICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXHRyZXR1cm4gcmVuZGVyRmlsZShmaWxlLCBhd2FpdCBjdHguZ2VuZXJhdGVIZWxwKG9wdHMpKTtcbn1cblxuLyoqXG4gKiBUaGUgYnVpbHQtaW4gaGVscCBjb21tYW5kIHBhcmFtZXRlcnMuXG4gKlxuICogQHR5cGUge09iamVjdH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQge1xuXHQvKipcblx0ICogSW5kaWNhdGVzIHRoaXMgY29tbWFuZCBpcyB0aGUgYnVpbHQtaW4gY2xpLWtpdCBoZWxwIGNvbW1hbmQgc28gdGhhdCBpZiB0aGUgQ0xJIGluc3RhbmNlIHRoaXNcblx0ICogY29tbWFuZCBiZWxvbmdzIHRvIGdldHMgYWRkZWQgdG8gYW5vdGhlciBDTEkgaW5zdGFuY2UsIHdlIGRvbid0IGNvcHkgaXQgb3Zlci5cblx0ICogQHR5cGUge0Jvb2xlYW59XG5cdCAqL1xuXHRjbGlraXRIZWxwOiB0cnVlLFxuXG5cdC8qKlxuXHQgKiBXaGlsZSB0aGlzIGlzIGEgY29tbWFuZCwgd2UgZG9uJ3Qgd2FudCB0byBzaG93IGl0IHNpbmNlIHdlIGFscmVhZHkgc2hvdyB0aGUgYC0taGVscGAgZmxhZy5cblx0ICogQHR5cGUge0Jvb2xlYW59XG5cdCAqL1xuXHRoaWRkZW46IHRydWUsXG5cblx0LyoqXG5cdCAqIE91dHB1dCB0aGUgaGVscCBhcyBKU09OLiBOZWF0by5cblx0ICogQHR5cGUge09iamVjdH1cblx0ICovXG5cdG9wdGlvbnM6IHtcblx0XHQnLS1qc29uJzogbnVsbFxuXHR9LFxuXG5cdC8qKlxuXHQgKiBFeGVjdXRlcyB0aGUgaGVscCBjb21tYW5kLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gVmFyaW91cyBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtcy5hcmd2XSAtIFRoZSBwYXJzZWQgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtBcnJheS48Q29udGV4dD59IHBhcmFtcy5jb250ZXh0cyAtIFRoZSBzdGFjayBvZiBjb250ZXh0cyBmb3VuZCBkdXJpbmcgcGFyc2luZy5cblx0ICogQHBhcmFtIHtFcnJvcn0gW3BhcmFtcy5lcnJdIC0gQW4gZXJyb3Igb2JqZWN0IGluIHRoZSBldmVudCBhbiBlcnJvciBvY2N1cnJlZC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1zLmV4aXRDb2RlIC0gQSBmdW5jdGlvbiB0aGF0IHNldHMgdGhlIGV4aXQgY29kZS5cblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW3BhcmFtcy5wYXJlbnRDb250ZXh0TmFtZXNdIC0gQW4gYXJyYXkgb2YgcGFyZW50IGNvbnRleHQgbmFtZXMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLnVua25vd25Db21tYW5kXSAtIFRoZSBuYW1lIG9mIHRoZSB1bmtub3duIGNvbW1hbmQuXG5cdCAqIEBwYXJhbSB7QXJyYXkuPEVycm9yPn0gW3BhcmFtcy53YXJuaW5nc10gLSBBIGxpc3Qgb2Ygd2FybmluZ3MgKGVycm9yIG9iamVjdHMpLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICovXG5cdGFzeW5jIGFjdGlvbih7IF8gPSBbXSwgYXJndiA9IHt9LCBjb25zb2xlLCBjb250ZXh0cywgZXJyLCBleGl0Q29kZSwgcGFyZW50Q29udGV4dE5hbWVzLCB3YXJuaW5ncyB9ID0ge30pIHtcblx0XHRleGl0Q29kZSgrISFlcnIpOyAvLyAwPXN1Y2Nlc3MsIDE9ZXJyb3JcblxuXHRcdGNvbnN0IGZvcm1hdEVycm9yID0gZXJyID0+IHtcblx0XHRcdGNvbnN0IHR5cGUgPSBlcnIgJiYgZXJyLmNvbnN0cnVjdG9yICYmIGVyci5jb25zdHJ1Y3Rvci5uYW1lIHx8IG51bGw7XG5cdFx0XHRyZXR1cm4gZXJyID8ge1xuXHRcdFx0XHRjb2RlOiAgICBlcnIuY29kZSxcblx0XHRcdFx0bWVzc2FnZTogIWFyZ3YuanNvbiAmJiB0eXBlID8gYCR7dHlwZX06ICR7ZXJyLm1lc3NhZ2V9YCA6IGVyci5tZXNzYWdlLFxuXHRcdFx0XHRtZXRhOiAgICBlcnIubWV0YSxcblx0XHRcdFx0c3RhY2s6ICAgZXJyLnN0YWNrLFxuXHRcdFx0XHR0eXBlXG5cdFx0XHR9IDogbnVsbDtcblx0XHR9O1xuXG5cdFx0Ly8gc2tpcCB0aGUgYnVpbHQtaW4gaGVscCBjb21tYW5kIGFuZCBmaW5kIHRoZSBmaXJzdCBjb250ZXh0XG5cdFx0Zm9yIChjb25zdCBjdHggb2YgY29udGV4dHMpIHtcblx0XHRcdC8vIHdlIGRvbid0IGRpc3BsYXkgaGVscCBmb3IgdGhlIGhlbHAgY29tbWFuZFxuXHRcdFx0aWYgKGN0eC5jbGlraXRIZWxwKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBnZW5lcmF0ZSB0aGUgaGVscCBvYmplY3Rcblx0XHRcdGNvbnN0IGhlbHAgPSBhd2FpdCBjdHguZ2VuZXJhdGVIZWxwKHsgZXJyLCBwYXJlbnRDb250ZXh0TmFtZXMsIHdhcm5pbmdzIH0pO1xuXG5cdFx0XHQvLyBjaGVjayBpZiB3ZSBzaG91bGQgZXJyb3IgaWYgcGFzc2VkIGFuIGludmFsaWQgY29tbWFuZFxuXHRcdFx0aWYgKCFlcnIgJiYgXy5sZW5ndGggJiYgKGN0eC5nZXQoJ2Vycm9ySWZVbmtub3duQ29tbWFuZCcpIHx8IGFyZ3YuaGVscCkpIHtcblx0XHRcdFx0Y29uc3QgdW5rbm93bkNvbW1hbmQgPSBfWzBdO1xuXHRcdFx0XHRlcnIgPSBuZXcgRXJyb3IoYFVua25vd24gY29tbWFuZCBcIiR7dW5rbm93bkNvbW1hbmR9XCJgKTtcblxuXHRcdFx0XHRjb25zdCBsZXZlbnNodGVpbiA9IHJlcXVpcmUoJ2Zhc3QtbGV2ZW5zaHRlaW4nKTtcblx0XHRcdFx0aGVscC5zdWdnZXN0aW9ucyA9IGhlbHAuY29tbWFuZHMuZW50cmllc1xuXHRcdFx0XHRcdC5tYXAoY21kID0+ICh7IG5hbWU6IGNtZC5uYW1lLCBkZXNjOiBjbWQuZGVzYywgZGlzdDogbGV2ZW5zaHRlaW4uZ2V0KHVua25vd25Db21tYW5kLCBjbWQubmFtZSkgfSkpXG5cdFx0XHRcdFx0LmZpbHRlcihzID0+IHMuZGlzdCA8PSAyKVxuXHRcdFx0XHRcdC5zb3J0KChhLCBiKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCByID0gYS5kaXN0IC0gYi5kaXN0O1xuXHRcdFx0XHRcdFx0cmV0dXJuIHIgIT09IDAgPyByIDogYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0aGVscC5lcnJvciA9IGZvcm1hdEVycm9yKGVycik7XG5cdFx0XHRoZWxwLndhcm5pbmdzID0gQXJyYXkuaXNBcnJheSh3YXJuaW5ncykgPyB3YXJuaW5ncy5tYXAoZm9ybWF0RXJyb3IpIDogbnVsbDtcblxuXHRcdFx0Y29uc3QgeyBfc3Rkb3V0LCBfc3RkZXJyIH0gPSBjb25zb2xlO1xuXG5cdFx0XHQvLyBwcmludCB0aGUgaGVscCBvdXRwdXRcblx0XHRcdGlmIChhcmd2Lmpzb24pIHtcblx0XHRcdFx0X3N0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeShoZWxwLCBudWxsLCAnICAnKSk7XG5cdFx0XHRcdF9zdGRvdXQud3JpdGUoJ1xcbicpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZmlsZSA9IGN0eC5nZXQoJ2hlbHBUZW1wbGF0ZUZpbGUnLCBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAndGVtcGxhdGVzJywgJ2hlbHAudHBsJykpO1xuXHRcdFx0XHRsb2coYFJlbmRlcmluZyBoZWxwIHRlbXBsYXRlOiAke2hpZ2hsaWdodChmaWxlKX1gKTtcblxuXHRcdFx0XHQvLyBvbmx5IGNvbW1hbmRzIGhhdmUgYSBoZWFkZXIgYW5kIGZvb3RlciwgYnV0IENMSSBpbnN0YW5jZXMgZG8gbm90IGFuZCB0aHVzIHdlXG5cdFx0XHRcdC8vIG5lZWQgdG8gZGVmaW5lIHRoZW0gdG8gbWFrZSB0aGUgdGVtcGxhdGUgaGFwcHlcblx0XHRcdFx0aWYgKCFoZWxwLmhlYWRlcikge1xuXHRcdFx0XHRcdGhlbHAuaGVhZGVyID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWhlbHAuZm9vdGVyKSB7XG5cdFx0XHRcdFx0aGVscC5mb290ZXIgPSBudWxsO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gZGV0ZXJtaW5lIHRoZSBvdXRwdXQgc3RyZWFtXG5cdFx0XHRcdChlcnIgPyBfc3RkZXJyIDogX3N0ZG91dCkud3JpdGUocmVuZGVyRmlsZShmaWxlLCBoZWxwKSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCB0aGUgZXhpdCBjb2RlXG5cdFx0XHRleGl0Q29kZShlcnIgPyAxIDogY3R4LmdldCgnaGVscEV4aXRDb2RlJykpO1xuXG5cdFx0XHQvLyB3ZSBvbmx5IGxvb3AgdW50aWwgd2UgaGl0IHRoZSBmaXJzdCB2YWxpZCBjb250ZXh0Li4uIGdlbmVyYXRlSGVscCgpIHdpbGwgcmVjdXJzZVxuXHRcdFx0Ly8gcGFyZW50IGNvbnRleHRzIGZvciB1c1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG59O1xuIl0sImZpbGUiOiJjb21tYW5kcy9oZWxwLmpzIn0= |
@@ -154,2 +154,3 @@ "use strict"; | ||
* | ||
* @param {Object} [opts] - Various parameters. | ||
* @returns {Promise<Object>} | ||
@@ -160,3 +161,3 @@ * @access private | ||
generateHelp() { | ||
generateHelp(opts = {}) { | ||
return this.hook('generateHelp', results => { | ||
@@ -245,3 +246,9 @@ const scopes = []; | ||
const usage = results.contexts.slice(); | ||
const usage = []; | ||
if (Array.isArray(opts.parentContextNames)) { | ||
usage.push.apply(usage, opts.parentContextNames); | ||
} | ||
usage.push.apply(usage, results.contexts.slice()); | ||
results.commands.count && usage.push('<command>'); | ||
@@ -422,2 +429,2 @@ results.options.count && usage.push('[options]'); | ||
exports.default = Context; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb250ZXh0LmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwiQ29udGV4dCIsIkhvb2tFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJwYXJhbXMiLCJpbml0IiwiYXJndW1lbnQiLCJhcmciLCJhcmdzIiwiYWRkIiwicmV2IiwiY29tbWFuZCIsImNtZCIsImNtZHMiLCJjb21tYW5kcyIsIm5hbWUiLCJyZWdpc3RlciIsImV4dGVuc2lvbiIsImV4dCIsImV4dHMiLCJleHRlbnNpb25zIiwiZ2VuZXJhdGVIZWxwIiwiaG9vayIsInJlc3VsdHMiLCJzY29wZXMiLCJjdHgiLCJwdXNoIiwidGl0bGUiLCJvcHRpb25zIiwiY29udGV4dHMiLCJ1bnNoaWZ0IiwicGFyZW50IiwibG9uZ3MiLCJTZXQiLCJzaG9ydHMiLCJqIiwibGVuZ3RoIiwiT2JqZWN0IiwidmFsdWVzIiwiZ3JvdXBzIiwiaSIsImxvbmciLCJzaG9ydCIsIm51a2UiLCJoYXMiLCJjb3VudCIsInNwbGljZSIsImRlc2MiLCJTdHJpbmciLCJ0cmltIiwicmVwbGFjZSIsImMiLCJ0b0xvY2FsZVVwcGVyQ2FzZSIsImVudHJpZXMiLCJhcHBseSIsImRlZmF1bHRDb21tYW5kIiwiZGVmYXVsdCIsImFyZ3VtZW50cyIsInJlZHVjZSIsInAiLCJ1c2FnZSIsInNsaWNlIiwibWFwIiwibXVsdGlwbGUiLCJyZXF1aXJlZCIsInRleHQiLCJqb2luIiwiZXJyb3IiLCJ1bmRlZmluZWQiLCJzdWdnZXN0aW9ucyIsIndhcm5pbmdzIiwiZ2V0IiwiZGVmYXVsdFZhbHVlIiwidmFsdWUiLCJjbGlraXQiLCJFIiwiSU5WQUxJRF9BUkdVTUVOVCIsInNjb3BlIiwiQXJndW1lbnRMaXN0IiwiYmFubmVyIiwiQ29tbWFuZE1hcCIsIkV4dGVuc2lvbk1hcCIsImxvb2t1cCIsIkxvb2t1cCIsIk9wdGlvbk1hcCIsInRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cyIsIm9wdGlvbiIsImZvcm1hdCIsIm9wdHMiLCJvcHQiLCJhbGlhcyIsInZpc2libGUiLCJhbGlhc2VzIiwicHJvcCIsIml0IiwiZGVzdCIsImtleXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFVLG9CQUFNLGlCQUFOLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxlQUFNQyxNQUE1QjtBQUVBOzs7Ozs7O0FBTWUsTUFBTUMsT0FBTixTQUFzQkMsb0JBQXRCLENBQWtDO0FBQ2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFNLEdBQUcsRUFBVixFQUFjO0FBQ3hCO0FBQ0Esa0NBQW1CLElBQW5CLEVBQXlCLFNBQXpCO0FBQ0EsU0FBS0MsSUFBTCxDQUFVRCxNQUFWO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7O0FBVUFFLEVBQUFBLFFBQVEsQ0FBQ0MsR0FBRCxFQUFNO0FBQ2IsU0FBS0MsSUFBTCxDQUFVQyxHQUFWLENBQWNGLEdBQWQ7QUFDQSxTQUFLRyxHQUFMO0FBQ0EsV0FBTyxJQUFQO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0FBYUFDLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNUixNQUFOLEVBQWM7QUFDcEIsVUFBTVMsSUFBSSxHQUFHLEtBQUtDLFFBQUwsQ0FBY0wsR0FBZCxDQUFrQkcsR0FBbEIsRUFBdUJSLE1BQXZCLENBQWI7O0FBQ0EsU0FBSyxNQUFNUSxHQUFYLElBQWtCQyxJQUFsQixFQUF3QjtBQUN2QmhCLE1BQUFBLEdBQUcsQ0FBRSxtQkFBa0JDLFNBQVMsQ0FBQ2MsR0FBRyxDQUFDRyxJQUFMLENBQVcsRUFBeEMsQ0FBSDtBQUNBLFdBQUtDLFFBQUwsQ0FBY0osR0FBZDtBQUNBOztBQUNELFNBQUtGLEdBQUw7QUFDQSxXQUFPLElBQVA7QUFDQTtB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TUFBTCxDQUFZYSxJQUFaLEVBQWtCTCxLQUFsQixJQUEyQkksRUFBM0I7QUFDQTtBQUNEO0FBQ0Q7QUFDRDs7QUFqVytDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFyZ3VtZW50TGlzdCBmcm9tICcuL2FyZ3VtZW50LWxpc3QnO1xuaW1wb3J0IENvbW1hbmRNYXAgZnJvbSAnLi9jb21tYW5kLW1hcCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnLi4vbGliL2RlYnVnJztcbmltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IEV4dGVuc2lvbk1hcCBmcm9tICcuL2V4dGVuc2lvbi1tYXAnO1xuaW1wb3J0IEhvb2tFbWl0dGVyIGZyb20gJ2hvb2stZW1pdHRlcic7XG5pbXBvcnQgTG9va3VwIGZyb20gJy4vbG9va3VwJztcbmltcG9ydCBPcHRpb25NYXAgZnJvbSAnLi9vcHRpb24tbWFwJztcblxuaW1wb3J0IHsgZGVjbGFyZUNMSUtpdENsYXNzIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5jb25zdCB7IGxvZyB9ID0gZGVidWcoJ2NsaS1raXQ6Y29udGV4dCcpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IGRlYnVnLnN0eWxlcztcblxuLyoqXG4gKiBEZWZpbmVzIGEgY29udGV4dCB0aGF0IGNvbnRhaW5zIGNvbW1hbmRzLCBvcHRpb25zLCBhbmQgYXJncy4gU2VydmVzIGFzIHRoZVxuICogYmFzZSBjbGFzcyBmb3IgYENMSWAgYW5kIGBDb250ZXh0YCBvYmplY3RzLlxuICpcbiAqIEBleHRlbmRzIHtIb29rRW1pdHRlcn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGV4dCBleHRlbmRzIEhvb2tFbWl0dGVyIHtcblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBjb250ZXh0IGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxDb250ZXh0fSBbcGFyYW1zXSAtIFZhcmlvdXMgcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEFyZ3VtZW50fEFyZ3VtZW50TGlzdHxBcnJheTxPYmplY3R8U3RyaW5nfEFyZ3VtZW50Pn0gW3BhcmFtcy5hcmdzXSAtXG5cdCAqIEFuIG9iamVjdCBvZiBhcmd1bWVudCBuYW1lcyB0byBhcmd1bWVudCBkZXNjcmlwdG9ycywgYW4gYXJndW1lbnQgbmFtZSwgYW4gYEFyZ3VtZW50YFxuXHQgKiBpbnN0YW5jZSwgYW4gYEFyZ3VtZW50TGlzdGAgaW5zdGFuY2UsIG9yIGFycmF5IG9mIG9iamVjdCBkZXNjcmlwdG9ycywgYXJndW1lbnQgbmFtZXMsIGFuZFxuXHQgKiBgQXJndW1lbnRgIGluc3RhbmNlcy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLmNhbWVsQ2FzZT10cnVlXSAtIENhbWVsIGNhc2Ugb3B0aW9uIG5hbWVzLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8Q29tbWFuZHxDb21tYW5kTWFwfEFycmF5LjxPYmplY3R8U3RyaW5nfENvbW1hbmQ+fSBbcGFyYW1zLmNvbW1hbmRzXSAtXG5cdCAqIEFuIG9iamVjdCB1c2VkIGZvciBgQ29tbWFuZGAgY29uc3RydWN0b3IgcGFyYW1zLCBhIHBhdGggdG8gYSBkaXJlY3Rvcnkgb3IgYSBgLmpzYCBmaWxlLCBhXG5cdCAqIGBDb21tYW5kYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIE1heSBhbHNvIGJlIGEgYENvbW1hbmRNYXBgIGluc3RhbmNlLiBJZlxuXHQgKiBgY21kYCBpcyBhIGBTdHJpbmdgIGFuZCBgcGFyYW1zYCBpcyBwcmVzZW50LCB0aGVuIGl0IHdpbGwgdHJlYXQgYGNtZGAgYXMgdGhlIGNvbW1hbmQgbmFtZSxcblx0ICogbm90IGEgZmlsZSBwYXRoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5kZXNjXSAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgQ0xJIG9yIGNvbW1hbmQgZGlzcGxheWVkIGluIHRoZSBoZWxwXG5cdCAqIG91dHB1dC4gSWYgY29udGV4dCBpcyBhIGNvbW1hbmQgd2l0aCBhIGhlbHAgaGVhZGVyIGRlZmluZWQsIHRoaXMgZGVzY3JpcHRpb24gaXMgbm90XG5cdCAqIGRpc3BsYXllZC5cblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBbcGFyYW1zLmV4dGVuc2lvbnNdIC1cblx0ICogQW4gb2JqZWN0IG9mIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gcGF0aHMgb3IgaW5zdGFuY2VzLCBhbiBleHRlbnNpb24gcGF0aCwgYW5cblx0ICogYEV4dGVuc2lvbmAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBBbiBleHRlbnNpb24gcGF0aCBtYXkgYmUgYSBkaXJlY3Rvcnlcblx0ICogY29udGFpbmluZyBhIE5vZGUuanMgbW9kdWxlLCBhIHBhdGggdG8gYSBgLmpzYCBmaWxlLCBvciB0aGUgbmFtZSBvZiBhIGV4ZWN1dGFibGUuIE1heSBhbHNvXG5cdCAqIGJlIGFuIGBFeHRlbnNpb25NYXBgIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5uYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBjb250ZXh0IHN1Y2ggYXMgdGhlIHByb2dyYW0gb3IgdGhlIGNvbW1hbmRcblx0ICogbmFtZS5cblx0ICogQHBhcmFtIHtPYmplY3R8T3B0aW9ufE9wdGlvbk1hcHxBcnJheTxPYmplY3R8T3B0aW9ufFN0cmluZz59IFtwYXJhbXMub3B0aW9uc10gLSBBbiBvYmplY3Qgb2Zcblx0ICogZm9ybWF0IHRvIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtcywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIGBPcHRpb25gXG5cdCAqIGNvbnN0cnVjdG9yIHBhcmFtcyBhbmQgYE9wdGlvbmAgaW5zdGFuY2VzIGdyb3VwZWQgYnkgYFN0cmluZ2AgbGFiZWxzLlxuXHQgKiBAcGFyYW0ge0NvbnRleHR9IFtwYXJhbXMucGFyZW50XSAtIFRoZSBwYXJlbnQgY29udGV4dC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMudGl0bGVdIC0gVGhlIGNvbnRleHQgdGl0bGUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHM9ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIGFueSBhcmd1bWVudCBpc1xuXHQgKiBlbmNvdW50ZXJlZCBkdXJpbmcgcGFyc2luZyB0aGF0IHJlc2VtYmxlcyBhIG9wdGlvbiB0aGF0IGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGFkZCBpdFxuXHQgKiB1bnRvdWNoZWQgdG8gYF9gIGFzIGFuIGFyZ3VtZW50IGFzIHdlbGwgYXMgdG8gYGFyZ3ZgIGFzIGEgYm9vbGVhbiBmbGFnLiBXaGVuIGBmYWxzZWAsIGl0IHdpbGxcblx0ICogb25seSBhZGQgdGhlIGFyZ3VtZW50IHRvIGBhcmd2YCBhcyBhIGJvb2xlYW4gZmxhZy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKHBhcmFtcyA9IHt9KSB7XG5cdFx0c3VwZXIoKTtcblx0XHRkZWNsYXJlQ0xJS2l0Q2xhc3ModGhpcywgJ0NvbnRleHQnKTtcblx0XHR0aGlzLmluaXQocGFyYW1zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIGFyZ3VtZW50IHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEFyZ3VtZW50fEFyZ3VtZW50TGlzdHxBcnJheTxPYmplY3R8U3RyaW5nfEFyZ3VtZW50Pn0gYXJnIC0gQW4gb2JqZWN0XG5cdCAqIG9mIGFyZ3VtZW50IG5hbWVzIHRvIGFyZ3VtZW50IGRlc2NyaXB0b3JzLCBhbiBhcmd1bWVudCBuYW1lLCBhbiBgQXJndW1lbnRgIGluc3RhbmNlLCBhblxuXHQgKiBgQXJndW1lbnRMaXN0YCBpbnN0YW5jZSwgb3IgYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzLCBhcmd1bWVudCBuYW1lcywgYW5kIGBBcmd1bWVudGBcblx0ICogaW5zdGFuY2VzLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFyZ3VtZW50KGFyZykge1xuXHRcdHRoaXMuYXJncy5hZGQoYXJnKTtcblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBjb21tYW5kIHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfENvbW1hbmR8Q29tbWFuZE1hcHxBcnJheS48T2JqZWN0fFN0cmluZ3xDb21tYW5kPn0gY21kIC0gQW4gb2JqZWN0XG5cdCAqIHVzZWQgZm9yIGBDb21tYW5kYCBjb25zdHJ1Y3RvciBwYXJhbXMsIGEgcGF0aCB0byBhIGRpcmVjdG9yeSBvciBhIGAuanNgIGZpbGUsIGEgYENvbW1hbmRgXG5cdCAqIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gTWF5IGFsc28gYmUgYSBgQ29tbWFuZE1hcGAgaW5zdGFuY2UuIElmIGBjbWRgIGlzIGFcblx0ICogYFN0cmluZ2AgYW5kIGBwYXJhbXNgIGlzIHByZXNlbnQsIHRoZW4gaXQgd2lsbCB0cmVhdCBgY21kYCBhcyB0aGUgY29tbWFuZCBuYW1lLCBub3QgYSBmaWxlXG5cdCAqIHBhdGguXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSAtIFdoZW4gYGNtZGAgaXMgdGhlIGNvbW1hbmQgbmFtZSwgdGhlbiB0aGlzIGlzIHRoZSBvcHRpb25zIHRvIHBhc3Ncblx0ICogaW50byB0aGUgYENvbW1hbmRgIGNvbnN0cnVjdG9yLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbW1hbmQoY21kLCBwYXJhbXMpIHtcblx0XHRjb25zdCBjbWRzID0gdGhpcy5jb21tYW5kcy5hZGQoY21kLCBwYXJhbXMpO1xuXHRcdGZvciAoY29uc3QgY21kIG9mIGNtZHMpIHtcblx0XHRcdGxvZyhgQWRkaW5nIGNvbW1hbmQ6ICR7aGlnaGxpZ2h0KGNtZC5uYW1lKX1gKTtcblx0XHRcdHRoaXMucmVnaXN0ZXIoY21kKTtcblx0XHR9XG5cdFx0dGhpcy5yZXYrKztcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYW4gZXh0ZXJuYWwgcGFja2FnZSBhcyBhIGNvbW1hbmQgY29udGV4dCB0aGF0IGludm9rZXMgdGhlIHBhY2thZ2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ3xFeHRlbnNpb258RXh0ZW5zaW9uTWFwfEFycmF5LjxTdHJpbmd8RXh0ZW5zaW9uPn0gZXh0IC0gQW4gb2JqZWN0IG9mXG5cdCAqIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gcGF0aHMgb3IgaW5zdGFuY2VzLCBhbiBleHRlbnNpb24gcGF0aCwgYW4gYEV4dGVuc2lvbmAgaW5zdGFuY2UsXG5cdCAqIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBBbiBleHRlbnNpb24gcGF0aCBtYXkgYmUgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhIE5vZGUuanNcblx0ICogbW9kdWxlLCBhIHBhdGggdG8gYSBgLmpzYCBmaWxlLCBvciB0aGUgbmFtZSBvZiBhIGV4ZWN1dGFibGUuIE1heSBhbHNvIGJlIGFuIGBFeHRlbnNpb25NYXBgXG5cdCAqIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW25hbWVdIC0gVGhlIGV4dGVuc2lvbiBuYW1lIHVzZWQgZm9yIHRoZSBjb250ZXh0IG5hbWUuIElmIG5vdCBzZXQsIGl0IHdpbGxcblx0ICogYXR0ZW1wdCB0byBmaW5kIGEgYHBhY2thZ2UuanNvbmAgd2l0aCBhIGBjbGkta2l0Lm5hbWVgIHZhbHVlLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGV4dGVuc2lvbihleHQsIG5hbWUpIHtcblx0XHRjb25zdCBleHRzID0gdGhpcy5leHRlbnNpb25zLmFkZChleHQsIG5hbWUpO1xuXHRcdGZvciAoY29uc3QgZXh0IG9mIGV4dHMpIHtcblx0XHRcdGxvZyhgQWRkaW5nIGV4dGVuc2lvbjogJHtoaWdobGlnaHQoZXh0Lm5hbWUpfWApO1xuXHRcdFx0dGhpcy5yZWdpc3RlcihleHQpO1xuXHRcdH1cblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbmRlcnMgdGhlIGhlbHAgc2NyZWVuIGZvciB0aGlzIGNvbnRleHQgaW5jbHVkaW5nIHRoZSBwYXJlbnQgY29udGV4dHMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0Z2VuZXJhdGVIZWxwKCkge1xuXHRcdHJldHVybiB0aGlzLmhvb2soJ2dlbmVyYXRlSGVscCcsIHJlc3VsdHMgPT4ge1xuXHRcdFx0Y29uc3Qgc2NvcGVzID0gW107XG5cdFx0XHRsZXQgY3R4ID0gdGhpcztcblxuXHRcdFx0d2hpbGUgKGN0eCkge1xuXHRcdFx0XHRzY29wZXMucHVzaCh7XG5cdFx0XHRcdFx0dGl0bGU6IGAke2N0eC50aXRsZX0gb3B0aW9uc2AsXG5cdFx0XHRcdFx0bmFtZTogY3R4Lm5hbWUsXG5cdFx0XHRcdFx0Li4uY3R4Lm9wdGlvbnMuZ2VuZXJhdGVIZWxwKClcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJlc3VsdHMuY29udGV4dHMudW5zaGlmdChjdHgubmFtZSk7XG5cdFx0XHRcdGN0eCA9IGN0eC5wYXJlbnQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHJlbW92ZSBkdXBsaWNhdGUgb3B0aW9uc1xuXHRcdFx0Y29uc3QgbG9uZ3MgPSBuZXcgU2V0KCk7XG5cdFx0XHRjb25zdCBzaG9ydHMgPSBuZXcgU2V0KCk7XG5cdFx0XHRsZXQgaiA9IHNjb3Blcy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoai0tKSB7XG5cdFx0XHRcdGZvciAoY29uc3Qgb3B0aW9ucyBvZiBPYmplY3QudmFsdWVzKHNjb3Blc1tqXS5ncm91cHMpKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB7IGxvbmcsIHNob3J0IH0gPSBvcHRpb25zW2ldO1xuXHRcdFx0XHRcdFx0bGV0IG51a2UgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGlmIChsb25nICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChsb25ncy5oYXMobG9uZykpIHtcblx0XHRcdFx0XHRcdFx0XHRudWtlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRsb25ncy5hZGQobG9uZyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChzaG9ydCAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoc2hvcnRzLmhhcyhzaG9ydCkpIHtcblx0XHRcdFx0XHRcdFx0XHRudWtlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRzaG9ydHMuYWRkKHNob3J0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG51a2UpIHtcblx0XHRcdFx0XHRcdFx0c2NvcGVzW2pdLmNvdW50LS07XG5cdFx0XHRcdFx0XHRcdG9wdGlvbnMuc3BsaWNlKGktLSwgMSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCB0aGUgZGVzY3JpcHRpb25cblx0XHRcdHJlc3VsdHMuZGVzYyA9IHRoaXMuZGVzYyA/IFN0cmluZyh0aGlzLmRlc2MpLnRyaW0oKS5yZXBsYWNlKC9eXFx3LywgYyA9PiBjLnRvTG9jYWxlVXBwZXJDYXNlKCkpIDogbnVsbDtcblxuXHRcdFx0Ly8gc2V0IHRoZSBjb21tYW5kc1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcyA9IHtcblx0XHRcdFx0dGl0bGU6IHRoaXMucGFyZW50ID8gYCR7dGhpcy50aXRsZX0gY29tbWFuZHNgIDogJ0NvbW1hbmRzJyxcblx0XHRcdFx0Li4udGhpcy5jb21tYW5kcy5nZW5lcmF0ZUhlbHAoKVxuXHRcdFx0fTtcblxuXHRcdFx0Y29uc3QgZXh0ID0gdGhpcy5leHRlbnNpb25zLmdlbmVyYXRlSGVscCgpO1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcy5jb3VudCArPSBleHQuY291bnQ7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmVudHJpZXMucHVzaC5hcHBseShyZXN1bHRzLmNvbW1hbmRzLmVudHJpZXMsIGV4dC5lbnRyaWVzKTtcblxuXHRcdFx0Ly8gdXBkYXRlIHRoZSBkZWZhdWx0IGNvbW1hbmRcblx0XHRcdGlmICh0aGlzLmRlZmF1bHRDb21tYW5kKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgY21kIG9mIHJlc3VsdHMuY29tbWFuZHMuZW50cmllcykge1xuXHRcdFx0XHRcdGlmIChjbWQubmFtZSA9PT0gdGhpcy5kZWZhdWx0Q29tbWFuZCkge1xuXHRcdFx0XHRcdFx0Y21kLmRlZmF1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCB0aGUgYXJndW1lbnRzXG5cdFx0XHRyZXN1bHRzLmFyZ3VtZW50cyA9IHtcblx0XHRcdFx0dGl0bGU6IHRoaXMucGFyZW50ID8gYCR7dGhpcy50aXRsZX0gYXJndW1lbnRzYCA6ICdBcmd1bWVudHMnLFxuXHRcdFx0XHQuLi50aGlzLmFyZ3MuZ2VuZXJhdGVIZWxwKClcblx0XHRcdH07XG5cblx0XHRcdC8vIHNldCB0aGUgb3B0aW9uc1xuXHRcdFx0cmVzdWx0cy5vcHRpb25zID0ge1xuXHRcdFx0XHRjb3VudDogc2NvcGVzLnJlZHVjZSgocCwgYykgPT4gcCArIGMuY291bnQsIDApLFxuXHRcdFx0XHRzY29wZXNcblx0XHRcdH07XG5cblx0XHRcdC8vIHNldCB0aGUgdXNhZ2UgbGluZVxuXHRcdFx0Y29uc3QgdXNhZ2UgPSByZXN1bHRzLmNvbnRleHRzLnNsaWNlKCk7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmNvdW50ICYmIHVzYWdlLnB1c2goJzxjb21tYW5kPicpO1xuXHRcdFx0cmVzdWx0cy5vcHRpb25zLmNvdW50ICYmIHVzYWdlLnB1c2goJ1tvcHRpb25zXScpO1xuXHRcdFx0dXNhZ2UucHVzaC5hcHBseSh1c2FnZSwgcmVzdWx0cy5hcmd1bWVudHMuZW50cmllcy5tYXAoYXJnID0+IHtcblx0XHRcdFx0Y29uc3QgbmFtZSA9IGA8JHthcmcubmFtZX0ke2FyZy5tdWx0aXBsZSA/ICcuLi4nIDogJyd9PmA7XG5cdFx0XHRcdHJldHVybiBhcmcucmVxdWlyZWQgPyBuYW1lIDogYFske25hbWV9XWA7XG5cdFx0XHR9KSk7XG5cdFx0XHRyZXN1bHRzLnVzYWdlID0ge1xuXHRcdFx0XHR0aXRsZTogJ1VzYWdlJyxcblx0XHRcdFx0dGV4dDogdXNhZ2Uuam9pbignICcpXG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9KSh7XG5cdFx0XHRjb250ZXh0czogW10sXG5cdFx0XHRlcnJvcjogdW5kZWZpbmVkLFxuXHRcdFx0c3VnZ2VzdGlvbnM6IFtdLFxuXHRcdFx0d2FybmluZ3M6IHVuZGVmaW5lZFxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNjYW4gcGFyZW50IGNvbnRleHRzIHRvIGZpbmQgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSBpbiB0aGUgdG9wLW1vc3QgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZS5cblx0ICogQHBhcmFtIHsqfSBkZWZhdWx0VmFsdWUgLSBBIGRlZmF1bHQgdmFsdWUgaWYgbm8gdmFsdWUgaXMgZm91bmQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGdldChuYW1lLCBkZWZhdWx0VmFsdWUpIHtcblx0XHRsZXQgdmFsdWUgPSB0aGlzW25hbWVdO1xuXHRcdGZvciAobGV0IHAgPSB0aGlzLnBhcmVudDsgcDsgcCA9IHAucGFyZW50KSB7XG5cdFx0XHR2YWx1ZSA9IHAuZ2V0KG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGlzIGNvbnRleHQgd2l0aCBwYXJhbXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fENvbnRleHR9IHBhcmFtcyAtIFZhcmlvdXMgcGFyYW1ldGVyc1xuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGluaXQocGFyYW1zKSB7XG5cdFx0aWYgKCFwYXJhbXMgfHwgdHlwZW9mIHBhcmFtcyAhPT0gJ29iamVjdCcgfHwgKHBhcmFtcy5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgIXBhcmFtcy5jbGlraXQuaGFzKCdDb250ZXh0JykpKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIHBhcmFtZXRlcnMgdG8gYmUgYW4gb2JqZWN0IG9yIENvbnRleHQnLCB7IG5hbWU6ICdwYXJhbXMnLCBzY29wZTogJ0NvbnRleHQuaW5pdCcsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcy5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgIXBhcmFtcy5jbGlraXQuaGFzKCdDb250ZXh0JykpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhbiBvYmplY3Qgb3IgQ29udGV4dCcsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29udGV4dC5pbml0JywgdmFsdWU6IHBhcmFtcyB9KTtcblx0XHR9XG5cblx0XHR0aGlzLmFyZ3MgICAgICAgPSBuZXcgQXJndW1lbnRMaXN0KCksXG5cdFx0dGhpcy5iYW5uZXIgICAgID0gcGFyYW1zLmJhbm5lcjtcblx0XHR0aGlzLmNvbW1hbmRzICAgPSBuZXcgQ29tbWFuZE1hcCgpLFxuXHRcdHRoaXMuZGVzYyAgICAgICA9IHBhcmFtcy5kZXNjO1xuXHRcdHRoaXMuZXh0ZW5zaW9ucyA9IG5ldyBFeHRlbnNpb25NYXAoKSxcblx0XHR0aGlzLmxvb2t1cCAgICAgPSBuZXcgTG9va3VwKCksXG5cdFx0dGhpcy5uYW1lICAgICAgID0gcGFyYW1zLm5hbWU7XG5cdFx0dGhpcy5vcHRpb25zICAgID0gbmV3IE9wdGlvbk1hcCgpO1xuXHRcdHRoaXMucGFyZW50ICAgICA9IHBhcmFtcy5wYXJlbnQ7XG5cdFx0dGhpcy5yZXYgICAgICAgID0gMDtcblx0XHR0aGlzLnRpdGxlICAgICAgPSBwYXJhbXMudGl0bGUgfHwgcGFyYW1zLm5hbWU7XG5cdFx0dGhpcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHMgPSAhIXBhcmFtcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHM7XG5cblx0XHRwYXJhbXMuYXJncyAgICAgICAmJiB0aGlzLmFyZ3VtZW50KHBhcmFtcy5hcmdzKTtcblx0XHRwYXJhbXMuY29tbWFuZHMgICAmJiB0aGlzLmNvbW1hbmQocGFyYW1zLmNvbW1hbmRzKTtcblx0XHRwYXJhbXMuZXh0ZW5zaW9ucyAmJiB0aGlzLmV4dGVuc2lvbihwYXJhbXMuZXh0ZW5zaW9ucyk7XG5cdFx0cGFyYW1zLm9wdGlvbnMgICAgJiYgdGhpcy5vcHRpb24ocGFyYW1zLm9wdGlvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gb3B0aW9uIHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fE9wdGlvbnxPcHRpb25NYXB8QXJyYXk8T2JqZWN0fE9wdGlvbnxTdHJpbmc+fSBmb3JtYXQgLSBBbiBvcHRpb25cblx0ICogZm9ybWF0LCBhbiBvYmplY3Qgb2YgZm9ybWF0IHRvIG9wdGlvbiBkZXNjcmlwdGlvbnMsIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtcyBvciBgT3B0aW9uYFxuXHQgKiBpbnN0YW5jZXMsIGFuIGBPcHRpb25gIGluc3RhbmNlLCBhbiBgT3B0aW9uTWFwYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgYE9wdGlvbmBcblx0ICogY29uc3RydWN0b3IgcGFyYW1zIGFuZCBgT3B0aW9uYCBpbnN0YW5jZXMgZ3JvdXBlZCBieSBgU3RyaW5nYCBsYWJlbHMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fE9wdGlvbnxTdHJpbmd9IFtwYXJhbXNdIC0gV2hlbiBgZm9ybWF0YCBpcyBhIGZvcm1hdCBzdHJpbmcsIHRoZW4gdGhpc1xuXHQgKiBhcmd1bWVudCBpcyBlaXRoZXIgYE9wdGlvbmAgY29uc3RydWN0b3IgcGFyYW1ldGVycywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIG9yIGFuIG9wdGlvblxuXHQgKiBkZXNjcmlwdGlvbi5cblx0ICogQHJldHVybnMge0NvbnRleHR9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nKTsgLy8gZm9ybWF0IGZsYWdcblx0ICogICBjdHgub3B0aW9uKCctLWZvbycsICdlbmFibGVzIGZvbyBtb2RlJyk7IC8vIGZvcm1hdCB3aXRoIGRlc2NyaXB0aW9uXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nLCB7IGRlc2M6ICdlbmFibGVzIGZvbyBtb2RlJyB9KTsgLy8gZm9ybWF0IHdpdGggT3B0aW9uIGN0b3IgcGFyYW1zXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IG51bGwgfSk7IC8vIG9iamVjdCB3aXRoIGZvcm1hdCBmbGFnXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IHsgZGVzYzogJ2VuYWJsZXMgZm9vIG1vZGUnIH0gfSk7IC8vIG9iamVjdCB3aXRoIE9wdGlvbiBjdG9yIHBhcmFtc1xuXHQgKiAgIGN0eC5vcHRpb24oeyAnLS1mb28nOiBuZXcgT3B0aW9uKCkgfSk7IC8vIG9iamVjdCBvZiBgT3B0aW9uYCBpbnN0YW5jZVxuXHQgKiAgIGN0eC5vcHRpb24obmV3IE9wdGlvbignLS1mb28nKSk7IC8vIGBPcHRpb25gIGluc3RhbmNlXG5cdCAqICAgY3R4Lm9wdGlvbihuZXcgT3B0aW9uTWFwKCkpOyAvLyBgT3B0aW9uTWFwYCBmcm9tIGFub3RoZXIgaW5zdGFuY2Vcblx0ICogICBjdHgub3B0aW9uKFsgJ1NvbWUgR3JvdXAnLCBuZXcgT3B0aW9uKCctLWZvbycpLCAnQW5vdGhlciBHcm91cCcsIHsgJy0tYmFyJzogbnVsbCB9IF0pOyAvLyBhbiBhcnJheSBvZiBncm91cGVkIG9wdGlvbnNcblx0ICovXG5cdG9wdGlvbihmb3JtYXQsIHBhcmFtcykge1xuXHRcdGNvbnN0IG9wdHMgPSB0aGlzLm9wdGlvbnMuYWRkKGZvcm1hdCwgcGFyYW1zKTtcblxuXHRcdGZvciAoY29uc3Qgb3B0IG9mIG9wdHMpIHtcblx0XHRcdG9wdC5wYXJlbnQgPSB0aGlzO1xuXG5cdFx0XHRpZiAob3B0LmxvbmcpIHtcblx0XHRcdFx0dGhpcy5sb29rdXAubG9uZ1tvcHQubG9uZ10gPSBvcHQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvcHQuc2hvcnQpIHtcblx0XHRcdFx0dGhpcy5sb29rdXAuc2hvcnRbb3B0LnNob3J0XSA9IG9wdDtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCBbIGFsaWFzLCB2aXNpYmxlIF0gb2YgT2JqZWN0LmVudHJpZXMob3B0LmFsaWFzZXMubG9uZykpIHtcblx0XHRcdFx0aWYgKHZpc2libGUpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cC5sb25nW2FsaWFzXSA9IG9wdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IFsgYWxpYXMsIHZpc2libGUgXSBvZiBPYmplY3QuZW50cmllcyhvcHQuYWxpYXNlcy5zaG9ydCkpIHtcblx0XHRcdFx0aWYgKHZpc2libGUpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cC5zaG9ydFthbGlhc10gPSBvcHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLnJldisrO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2NhbiBwYXJlbnQgY29udGV4dHMgdG8gZmluZCB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGluIHRoZSBib3R0b20tbW9zdCBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lLlxuXHQgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSAtIEEgZGVmYXVsdCB2YWx1ZSBpZiBubyB2YWx1ZSBpcyBmb3VuZC5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cHJvcChuYW1lLCBkZWZhdWx0VmFsdWUpIHtcblx0XHRsZXQgdmFsdWUgPSB0aGlzW25hbWVdO1xuXHRcdGZvciAobGV0IHAgPSB0aGlzLnBhcmVudDsgdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBwOyBwID0gcC5wYXJlbnQpIHtcblx0XHRcdHZhbHVlID0gcC5wcm9wKG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSBjb21tYW5kIG9yIGV4dGVuc2lvbiB0byBhZGQgdG8gdGhlIGxvb2t1cC5cblx0ICpcblx0ICogQHBhcmFtIHtDb21tYW5kfEV4dGVuc2lvbn0gaXQgLSBUaGUgY29tbWFuZCBvciBleHRlbnNpb24gaW5zdGFuY2UuXG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cmVnaXN0ZXIoaXQpIHtcblx0XHRjb25zdCBkZXN0ID0gaXQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJykgPyAnZXh0ZW5zaW9ucycgOiAnY29tbWFuZHMnO1xuXHRcdGl0LnBhcmVudCA9IHRoaXM7XG5cdFx0dGhpcy5sb29rdXBbZGVzdF1baXQubmFtZV0gPSBpdDtcblxuXHRcdGlmIChpdC5hbGlhc2VzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGFsaWFzIG9mIE9iamVjdC5rZXlzKGl0LmFsaWFzZXMpKSB7XG5cdFx0XHRcdGlmICghdGhpc1tkZXN0XS5oYXMoYWxpYXMpKSB7XG5cdFx0XHRcdFx0dGhpcy5sb29rdXBbZGVzdF1bYWxpYXNdID0gaXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdLCJmaWxlIjoicGFyc2VyL2NvbnRleHQuanMifQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb250ZXh0LmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwiQ29udGV4dCIsIkhvb2tFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJwYXJhbXMiLCJpbml0IiwiYXJndW1lbnQiLCJhcmciLCJhcmdzIiwiYWRkIiwicmV2IiwiY29tbWFuZCIsImNtZCIsImNtZHMiLCJjb21tYW5kcyIsIm5hbWUiLCJyZWdpc3RlciIsImV4dGVuc2lvbiIsImV4dCIsImV4dHMiLCJleHRlbnNpb25zIiwiZ2VuZXJhdGVIZWxwIiwib3B0cyIsImhvb2siLCJyZXN1bHRzIiwic2NvcGVzIiwiY3R4IiwicHVzaCIsInRpdGxlIiwib3B0aW9ucyIsImNvbnRleHRzIiwidW5zaGlmdCIsInBhcmVudCIsImxvbmdzIiwiU2V0Iiwic2hvcnRzIiwiaiIsImxlbmd0aCIsIk9iamVjdCIsInZhbHVlcyIsImdyb3VwcyIsImkiLCJsb25nIiwic2hvcnQiLCJudWtlIiwiaGFzIiwiY291bnQiLCJzcGxpY2UiLCJkZXNjIiwiU3RyaW5nIiwidHJpbSIsInJlcGxhY2UiLCJjIiwidG9Mb2NhbGVVcHBlckNhc2UiLCJlbnRyaWVzIiwiYXBwbHkiLCJkZWZhdWx0Q29tbWFuZCIsImRlZmF1bHQiLCJhcmd1bWVudHMiLCJyZWR1Y2UiLCJwIiwidXNhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJwYXJlbnRDb250ZXh0TmFtZXMiLCJzbGljZSIsIm1hcCIsIm11bHRpcGxlIiwicmVxdWlyZWQiLCJ0ZXh0Iiwiam9pbiIsImVycm9yIiwidW5kZWZpbmVkIiwic3VnZ2VzdGlvbnMiLCJ3YXJuaW5ncyIsImdldCIsImRlZmF1bHRWYWx1ZSIsInZhbHVlIiwiY2xpa2l0IiwiRSIsIklOVkFMSURfQVJHVU1FTlQiLCJzY29wZSIsIkFyZ3VtZW50TGlzdCIsImJhbm5lciIsIkNvbW1hbmRNYXAiLCJFeHRlbnNpb25NYXAiLCJsb29rdXAiLCJMb29rdXAiLCJPcHRpb25NYXAiLCJ0cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHMiLCJvcHRpb24iLCJmb3JtYXQiLCJvcHQiLCJhbGlhcyIsInZpc2libGUiLCJhbGlhc2VzIiwicHJvcCIsIml0IiwiZGVzdCIsImtleXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFVLG9CQUFNLGlCQUFOLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxlQUFNQyxNQUE1QjtBQUVBOzs7Ozs7O0FBTWUsTUFBTUMsT0FBTixTQUFzQkMsb0JBQXRCLENBQWtDO0FBQ2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFNLEdBQUcsRUFBVixFQUFjO0FBQ3hCO0FBQ0Esa0NBQW1CLElBQW5CLEVBQXlCLFNBQXpCO0FBQ0EsU0FBS0MsSUFBTCxDQUFVRCxNQUFWO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7O0FBVUFFLEVBQUFBLFFBQVEsQ0FBQ0MsR0FBRCxFQUFNO0FBQ2IsU0FBS0MsSUFBTCxDQUFVQyxHQUFWLENBQWNGLEdBQWQ7QUFDQSxTQUFLRyxHQUFMO0FBQ0EsV0FBTyxJQUFQO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0FBYUFDLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNUixNQUFOLEVBQWM7QUFDcEIsVUFBTVMsSUFBSSxHQUFHLEtBQUtDLFFBQUwsQ0FBY0wsR0FBZCxDQUFrQkcsR0FBbEIsRUFBdUJSLE1BQXZCLENBQWI7O0FBQ0EsU0FBSyxNQUFNUSxHQUFYLElBQWtCQyxJQUFsQixFQUF3QjtBQUN2QmhCLE1BQUFBLEdBQUcsQ0FBRSxtQkFBa0JDLFNBQVMsQ0FBQ2MsR0FBRyxDQUFDRyxJQUFMLENBQVcsRUFBeEMsQ0FBSDtBQUNBLFdBQUtDLFFBQUwsQ0FBY0osR0FBZDtBQUNB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QSxFQUFFLENBQUNqRSxNQUFILEdBQVksSUFBWjtBQUNBLFNBQUtzRCxNQUFMLENBQVlZLElBQVosRUFBa0JELEVBQUUsQ0FBQ2xGLElBQXJCLElBQTZCa0YsRUFBN0I7O0FBRUEsUUFBSUEsRUFBRSxDQUFDRixPQUFQLEVBQWdCO0FBQ2YsV0FBSyxNQUFNRixLQUFYLElBQW9CdkQsTUFBTSxDQUFDNkQsSUFBUCxDQUFZRixFQUFFLENBQUNGLE9BQWYsQ0FBcEIsRUFBNkM7QUFDNUMsWUFBSSxDQUFDLEtBQUtHLElBQUwsRUFBV3JELEdBQVgsQ0FBZWdELEtBQWYsQ0FBTCxFQUE0QjtBQUMzQixlQUFLUCxNQUFMLENBQVlZLElBQVosRUFBa0JMLEtBQWxCLElBQTJCSSxFQUEzQjtBQUNBO0FBQ0Q7QUFDRDtBQUNEOztBQXRXK0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXJndW1lbnRMaXN0IGZyb20gJy4vYXJndW1lbnQtbGlzdCc7XG5pbXBvcnQgQ29tbWFuZE1hcCBmcm9tICcuL2NvbW1hbmQtbWFwJztcbmltcG9ydCBkZWJ1ZyBmcm9tICcuLi9saWIvZGVidWcnO1xuaW1wb3J0IEUgZnJvbSAnLi4vbGliL2Vycm9ycyc7XG5pbXBvcnQgRXh0ZW5zaW9uTWFwIGZyb20gJy4vZXh0ZW5zaW9uLW1hcCc7XG5pbXBvcnQgSG9va0VtaXR0ZXIgZnJvbSAnaG9vay1lbWl0dGVyJztcbmltcG9ydCBMb29rdXAgZnJvbSAnLi9sb29rdXAnO1xuaW1wb3J0IE9wdGlvbk1hcCBmcm9tICcuL29wdGlvbi1tYXAnO1xuXG5pbXBvcnQgeyBkZWNsYXJlQ0xJS2l0Q2xhc3MgfSBmcm9tICcuLi9saWIvdXRpbCc7XG5cbmNvbnN0IHsgbG9nIH0gPSBkZWJ1ZygnY2xpLWtpdDpjb250ZXh0Jyk7XG5jb25zdCB7IGhpZ2hsaWdodCB9ID0gZGVidWcuc3R5bGVzO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb250ZXh0IHRoYXQgY29udGFpbnMgY29tbWFuZHMsIG9wdGlvbnMsIGFuZCBhcmdzLiBTZXJ2ZXMgYXMgdGhlXG4gKiBiYXNlIGNsYXNzIGZvciBgQ0xJYCBhbmQgYENvbnRleHRgIG9iamVjdHMuXG4gKlxuICogQGV4dGVuZHMge0hvb2tFbWl0dGVyfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgSG9va0VtaXR0ZXIge1xuXHQvKipcblx0ICogQ29uc3RydWN0cyBhIGNvbnRleHQgaW5zdGFuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fENvbnRleHR9IFtwYXJhbXNdIC0gVmFyaW91cyBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8QXJndW1lbnR8QXJndW1lbnRMaXN0fEFycmF5PE9iamVjdHxTdHJpbmd8QXJndW1lbnQ+fSBbcGFyYW1zLmFyZ3NdIC1cblx0ICogQW4gb2JqZWN0IG9mIGFyZ3VtZW50IG5hbWVzIHRvIGFyZ3VtZW50IGRlc2NyaXB0b3JzLCBhbiBhcmd1bWVudCBuYW1lLCBhbiBgQXJndW1lbnRgXG5cdCAqIGluc3RhbmNlLCBhbiBgQXJndW1lbnRMaXN0YCBpbnN0YW5jZSwgb3IgYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzLCBhcmd1bWVudCBuYW1lcywgYW5kXG5cdCAqIGBBcmd1bWVudGAgaW5zdGFuY2VzLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMuY2FtZWxDYXNlPXRydWVdIC0gQ2FtZWwgY2FzZSBvcHRpb24gbmFtZXMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ3xDb21tYW5kfENvbW1hbmRNYXB8QXJyYXkuPE9iamVjdHxTdHJpbmd8Q29tbWFuZD59IFtwYXJhbXMuY29tbWFuZHNdIC1cblx0ICogQW4gb2JqZWN0IHVzZWQgZm9yIGBDb21tYW5kYCBjb25zdHJ1Y3RvciBwYXJhbXMsIGEgcGF0aCB0byBhIGRpcmVjdG9yeSBvciBhIGAuanNgIGZpbGUsIGFcblx0ICogYENvbW1hbmRgIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gTWF5IGFsc28gYmUgYSBgQ29tbWFuZE1hcGAgaW5zdGFuY2UuIElmXG5cdCAqIGBjbWRgIGlzIGEgYFN0cmluZ2AgYW5kIGBwYXJhbXNgIGlzIHByZXNlbnQsIHRoZW4gaXQgd2lsbCB0cmVhdCBgY21kYCBhcyB0aGUgY29tbWFuZCBuYW1lLFxuXHQgKiBub3QgYSBmaWxlIHBhdGguXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLmRlc2NdIC0gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBDTEkgb3IgY29tbWFuZCBkaXNwbGF5ZWQgaW4gdGhlIGhlbHBcblx0ICogb3V0cHV0LiBJZiBjb250ZXh0IGlzIGEgY29tbWFuZCB3aXRoIGEgaGVscCBoZWFkZXIgZGVmaW5lZCwgdGhpcyBkZXNjcmlwdGlvbiBpcyBub3Rcblx0ICogZGlzcGxheWVkLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8RXh0ZW5zaW9ufEV4dGVuc2lvbk1hcHxBcnJheS48U3RyaW5nfEV4dGVuc2lvbj59IFtwYXJhbXMuZXh0ZW5zaW9uc10gLVxuXHQgKiBBbiBvYmplY3Qgb2YgZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBwYXRocyBvciBpbnN0YW5jZXMsIGFuIGV4dGVuc2lvbiBwYXRoLCBhblxuXHQgKiBgRXh0ZW5zaW9uYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIEFuIGV4dGVuc2lvbiBwYXRoIG1heSBiZSBhIGRpcmVjdG9yeVxuXHQgKiBjb250YWluaW5nIGEgTm9kZS5qcyBtb2R1bGUsIGEgcGF0aCB0byBhIGAuanNgIGZpbGUsIG9yIHRoZSBuYW1lIG9mIGEgZXhlY3V0YWJsZS4gTWF5IGFsc29cblx0ICogYmUgYW4gYEV4dGVuc2lvbk1hcGAgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLm5hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGNvbnRleHQgc3VjaCBhcyB0aGUgcHJvZ3JhbSBvciB0aGUgY29tbWFuZFxuXHQgKiBuYW1lLlxuXHQgKiBAcGFyYW0ge09iamVjdHxPcHRpb258T3B0aW9uTWFwfEFycmF5PE9iamVjdHxPcHRpb258U3RyaW5nPn0gW3BhcmFtcy5vcHRpb25zXSAtIEFuIG9iamVjdCBvZlxuXHQgKiBmb3JtYXQgdG8gYE9wdGlvbmAgY29uc3RydWN0b3IgcGFyYW1zLCBhbiBgT3B0aW9uYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgYE9wdGlvbmBcblx0ICogY29uc3RydWN0b3IgcGFyYW1zIGFuZCBgT3B0aW9uYCBpbnN0YW5jZXMgZ3JvdXBlZCBieSBgU3RyaW5nYCBsYWJlbHMuXG5cdCAqIEBwYXJhbSB7Q29udGV4dH0gW3BhcmFtcy5wYXJlbnRdIC0gVGhlIHBhcmVudCBjb250ZXh0LlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy50aXRsZV0gLSBUaGUgY29udGV4dCB0aXRsZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLnRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cz1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgYW55IGFyZ3VtZW50IGlzXG5cdCAqIGVuY291bnRlcmVkIGR1cmluZyBwYXJzaW5nIHRoYXQgcmVzZW1ibGVzIGEgb3B0aW9uIHRoYXQgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYWRkIGl0XG5cdCAqIHVudG91Y2hlZCB0byBgX2AgYXMgYW4gYXJndW1lbnQgYXMgd2VsbCBhcyB0byBgYXJndmAgYXMgYSBib29sZWFuIGZsYWcuIFdoZW4gYGZhbHNlYCwgaXQgd2lsbFxuXHQgKiBvbmx5IGFkZCB0aGUgYXJndW1lbnQgdG8gYGFyZ3ZgIGFzIGEgYm9vbGVhbiBmbGFnLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3IocGFyYW1zID0ge30pIHtcblx0XHRzdXBlcigpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnQ29udGV4dCcpO1xuXHRcdHRoaXMuaW5pdChwYXJhbXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gYXJndW1lbnQgdG8gdGhpcyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8QXJndW1lbnR8QXJndW1lbnRMaXN0fEFycmF5PE9iamVjdHxTdHJpbmd8QXJndW1lbnQ+fSBhcmcgLSBBbiBvYmplY3Rcblx0ICogb2YgYXJndW1lbnQgbmFtZXMgdG8gYXJndW1lbnQgZGVzY3JpcHRvcnMsIGFuIGFyZ3VtZW50IG5hbWUsIGFuIGBBcmd1bWVudGAgaW5zdGFuY2UsIGFuXG5cdCAqIGBBcmd1bWVudExpc3RgIGluc3RhbmNlLCBvciBhcnJheSBvZiBvYmplY3QgZGVzY3JpcHRvcnMsIGFyZ3VtZW50IG5hbWVzLCBhbmQgYEFyZ3VtZW50YFxuXHQgKiBpbnN0YW5jZXMuXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXJndW1lbnQoYXJnKSB7XG5cdFx0dGhpcy5hcmdzLmFkZChhcmcpO1xuXHRcdHRoaXMucmV2Kys7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGNvbW1hbmQgdG8gdGhpcyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8Q29tbWFuZHxDb21tYW5kTWFwfEFycmF5LjxPYmplY3R8U3RyaW5nfENvbW1hbmQ+fSBjbWQgLSBBbiBvYmplY3Rcblx0ICogdXNlZCBmb3IgYENvbW1hbmRgIGNvbnN0cnVjdG9yIHBhcmFtcywgYSBwYXRoIHRvIGEgZGlyZWN0b3J5IG9yIGEgYC5qc2AgZmlsZSwgYSBgQ29tbWFuZGBcblx0ICogaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBNYXkgYWxzbyBiZSBhIGBDb21tYW5kTWFwYCBpbnN0YW5jZS4gSWYgYGNtZGAgaXMgYVxuXHQgKiBgU3RyaW5nYCBhbmQgYHBhcmFtc2AgaXMgcHJlc2VudCwgdGhlbiBpdCB3aWxsIHRyZWF0IGBjbWRgIGFzIHRoZSBjb21tYW5kIG5hbWUsIG5vdCBhIGZpbGVcblx0ICogcGF0aC5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIC0gV2hlbiBgY21kYCBpcyB0aGUgY29tbWFuZCBuYW1lLCB0aGVuIHRoaXMgaXMgdGhlIG9wdGlvbnMgdG8gcGFzc1xuXHQgKiBpbnRvIHRoZSBgQ29tbWFuZGAgY29uc3RydWN0b3IuXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29tbWFuZChjbWQsIHBhcmFtcykge1xuXHRcdGNvbnN0IGNtZHMgPSB0aGlzLmNvbW1hbmRzLmFkZChjbWQsIHBhcmFtcyk7XG5cdFx0Zm9yIChjb25zdCBjbWQgb2YgY21kcykge1xuXHRcdFx0bG9nKGBBZGRpbmcgY29tbWFuZDogJHtoaWdobGlnaHQoY21kLm5hbWUpfWApO1xuXHRcdFx0dGhpcy5yZWdpc3RlcihjbWQpO1xuXHRcdH1cblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhbiBleHRlcm5hbCBwYWNrYWdlIGFzIGEgY29tbWFuZCBjb250ZXh0IHRoYXQgaW52b2tlcyB0aGUgcGFja2FnZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBleHQgLSBBbiBvYmplY3Qgb2Zcblx0ICogZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBwYXRocyBvciBpbnN0YW5jZXMsIGFuIGV4dGVuc2lvbiBwYXRoLCBhbiBgRXh0ZW5zaW9uYCBpbnN0YW5jZSxcblx0ICogb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIEFuIGV4dGVuc2lvbiBwYXRoIG1heSBiZSBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEgTm9kZS5qc1xuXHQgKiBtb2R1bGUsIGEgcGF0aCB0byBhIGAuanNgIGZpbGUsIG9yIHRoZSBuYW1lIG9mIGEgZXhlY3V0YWJsZS4gTWF5IGFsc28gYmUgYW4gYEV4dGVuc2lvbk1hcGBcblx0ICogaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZV0gLSBUaGUgZXh0ZW5zaW9uIG5hbWUgdXNlZCBmb3IgdGhlIGNvbnRleHQgbmFtZS4gSWYgbm90IHNldCwgaXQgd2lsbFxuXHQgKiBhdHRlbXB0IHRvIGZpbmQgYSBgcGFja2FnZS5qc29uYCB3aXRoIGEgYGNsaS1raXQubmFtZWAgdmFsdWUuXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0ZXh0ZW5zaW9uKGV4dCwgbmFtZSkge1xuXHRcdGNvbnN0IGV4dHMgPSB0aGlzLmV4dGVuc2lvbnMuYWRkKGV4dCwgbmFtZSk7XG5cdFx0Zm9yIChjb25zdCBleHQgb2YgZXh0cykge1xuXHRcdFx0bG9nKGBBZGRpbmcgZXh0ZW5zaW9uOiAke2hpZ2hsaWdodChleHQubmFtZSl9YCk7XG5cdFx0XHR0aGlzLnJlZ2lzdGVyKGV4dCk7XG5cdFx0fVxuXHRcdHRoaXMucmV2Kys7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVuZGVycyB0aGUgaGVscCBzY3JlZW4gZm9yIHRoaXMgY29udGV4dCBpbmNsdWRpbmcgdGhlIHBhcmVudCBjb250ZXh0cy5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgcGFyYW1ldGVycy5cblx0ICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRnZW5lcmF0ZUhlbHAob3B0cyA9IHt9KSB7XG5cdFx0cmV0dXJuIHRoaXMuaG9vaygnZ2VuZXJhdGVIZWxwJywgcmVzdWx0cyA9PiB7XG5cdFx0XHRjb25zdCBzY29wZXMgPSBbXTtcblx0XHRcdGxldCBjdHggPSB0aGlzO1xuXG5cdFx0XHR3aGlsZSAoY3R4KSB7XG5cdFx0XHRcdHNjb3Blcy5wdXNoKHtcblx0XHRcdFx0XHR0aXRsZTogYCR7Y3R4LnRpdGxlfSBvcHRpb25zYCxcblx0XHRcdFx0XHRuYW1lOiBjdHgubmFtZSxcblx0XHRcdFx0XHQuLi5jdHgub3B0aW9ucy5nZW5lcmF0ZUhlbHAoKVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmVzdWx0cy5jb250ZXh0cy51bnNoaWZ0KGN0eC5uYW1lKTtcblx0XHRcdFx0Y3R4ID0gY3R4LnBhcmVudDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gcmVtb3ZlIGR1cGxpY2F0ZSBvcHRpb25zXG5cdFx0XHRjb25zdCBsb25ncyA9IG5ldyBTZXQoKTtcblx0XHRcdGNvbnN0IHNob3J0cyA9IG5ldyBTZXQoKTtcblx0XHRcdGxldCBqID0gc2NvcGVzLmxlbmd0aDtcblx0XHRcdHdoaWxlIChqLS0pIHtcblx0XHRcdFx0Zm9yIChjb25zdCBvcHRpb25zIG9mIE9iamVjdC52YWx1ZXMoc2NvcGVzW2pdLmdyb3VwcykpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdGNvbnN0IHsgbG9uZywgc2hvcnQgfSA9IG9wdGlvbnNbaV07XG5cdFx0XHRcdFx0XHRsZXQgbnVrZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0aWYgKGxvbmcgIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGxvbmdzLmhhcyhsb25nKSkge1xuXHRcdFx0XHRcdFx0XHRcdG51a2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGxvbmdzLmFkZChsb25nKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKHNob3J0ICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChzaG9ydHMuaGFzKHNob3J0KSkge1xuXHRcdFx0XHRcdFx0XHRcdG51a2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHNob3J0cy5hZGQoc2hvcnQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAobnVrZSkge1xuXHRcdFx0XHRcdFx0XHRzY29wZXNbal0uY291bnQtLTtcblx0XHRcdFx0XHRcdFx0b3B0aW9ucy5zcGxpY2UoaS0tLCAxKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IHRoZSBkZXNjcmlwdGlvblxuXHRcdFx0cmVzdWx0cy5kZXNjID0gdGhpcy5kZXNjID8gU3RyaW5nKHRoaXMuZGVzYykudHJpbSgpLnJlcGxhY2UoL15cXHcvLCBjID0+IGMudG9Mb2NhbGVVcHBlckNhc2UoKSkgOiBudWxsO1xuXG5cdFx0XHQvLyBzZXQgdGhlIGNvbW1hbmRzXG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzID0ge1xuXHRcdFx0XHR0aXRsZTogdGhpcy5wYXJlbnQgPyBgJHt0aGlzLnRpdGxlfSBjb21tYW5kc2AgOiAnQ29tbWFuZHMnLFxuXHRcdFx0XHQuLi50aGlzLmNvbW1hbmRzLmdlbmVyYXRlSGVscCgpXG5cdFx0XHR9O1xuXG5cdFx0XHRjb25zdCBleHQgPSB0aGlzLmV4dGVuc2lvbnMuZ2VuZXJhdGVIZWxwKCk7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmNvdW50ICs9IGV4dC5jb3VudDtcblx0XHRcdHJlc3VsdHMuY29tbWFuZHMuZW50cmllcy5wdXNoLmFwcGx5KHJlc3VsdHMuY29tbWFuZHMuZW50cmllcywgZXh0LmVudHJpZXMpO1xuXG5cdFx0XHQvLyB1cGRhdGUgdGhlIGRlZmF1bHQgY29tbWFuZFxuXHRcdFx0aWYgKHRoaXMuZGVmYXVsdENvbW1hbmQpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBjbWQgb2YgcmVzdWx0cy5jb21tYW5kcy5lbnRyaWVzKSB7XG5cdFx0XHRcdFx0aWYgKGNtZC5uYW1lID09PSB0aGlzLmRlZmF1bHRDb21tYW5kKSB7XG5cdFx0XHRcdFx0XHRjbWQuZGVmYXVsdCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IHRoZSBhcmd1bWVudHNcblx0XHRcdHJlc3VsdHMuYXJndW1lbnRzID0ge1xuXHRcdFx0XHR0aXRsZTogdGhpcy5wYXJlbnQgPyBgJHt0aGlzLnRpdGxlfSBhcmd1bWVudHNgIDogJ0FyZ3VtZW50cycsXG5cdFx0XHRcdC4uLnRoaXMuYXJncy5nZW5lcmF0ZUhlbHAoKVxuXHRcdFx0fTtcblxuXHRcdFx0Ly8gc2V0IHRoZSBvcHRpb25zXG5cdFx0XHRyZXN1bHRzLm9wdGlvbnMgPSB7XG5cdFx0XHRcdGNvdW50OiBzY29wZXMucmVkdWNlKChwLCBjKSA9PiBwICsgYy5jb3VudCwgMCksXG5cdFx0XHRcdHNjb3Blc1xuXHRcdFx0fTtcblxuXHRcdFx0Ly8gc2V0IHRoZSB1c2FnZSBsaW5lXG5cdFx0XHRjb25zdCB1c2FnZSA9IFtdO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkob3B0cy5wYXJlbnRDb250ZXh0TmFtZXMpKSB7XG5cdFx0XHRcdHVzYWdlLnB1c2guYXBwbHkodXNhZ2UsIG9wdHMucGFyZW50Q29udGV4dE5hbWVzKTtcblx0XHRcdH1cblx0XHRcdHVzYWdlLnB1c2guYXBwbHkodXNhZ2UsIHJlc3VsdHMuY29udGV4dHMuc2xpY2UoKSk7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmNvdW50ICYmIHVzYWdlLnB1c2goJzxjb21tYW5kPicpO1xuXHRcdFx0cmVzdWx0cy5vcHRpb25zLmNvdW50ICYmIHVzYWdlLnB1c2goJ1tvcHRpb25zXScpO1xuXHRcdFx0dXNhZ2UucHVzaC5hcHBseSh1c2FnZSwgcmVzdWx0cy5hcmd1bWVudHMuZW50cmllcy5tYXAoYXJnID0+IHtcblx0XHRcdFx0Y29uc3QgbmFtZSA9IGA8JHthcmcubmFtZX0ke2FyZy5tdWx0aXBsZSA/ICcuLi4nIDogJyd9PmA7XG5cdFx0XHRcdHJldHVybiBhcmcucmVxdWlyZWQgPyBuYW1lIDogYFske25hbWV9XWA7XG5cdFx0XHR9KSk7XG5cdFx0XHRyZXN1bHRzLnVzYWdlID0ge1xuXHRcdFx0XHR0aXRsZTogJ1VzYWdlJyxcblx0XHRcdFx0dGV4dDogdXNhZ2Uuam9pbignICcpXG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9KSh7XG5cdFx0XHRjb250ZXh0czogW10sXG5cdFx0XHRlcnJvcjogdW5kZWZpbmVkLFxuXHRcdFx0c3VnZ2VzdGlvbnM6IFtdLFxuXHRcdFx0d2FybmluZ3M6IHVuZGVmaW5lZFxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNjYW4gcGFyZW50IGNvbnRleHRzIHRvIGZpbmQgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSBpbiB0aGUgdG9wLW1vc3QgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZS5cblx0ICogQHBhcmFtIHsqfSBkZWZhdWx0VmFsdWUgLSBBIGRlZmF1bHQgdmFsdWUgaWYgbm8gdmFsdWUgaXMgZm91bmQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGdldChuYW1lLCBkZWZhdWx0VmFsdWUpIHtcblx0XHRsZXQgdmFsdWUgPSB0aGlzW25hbWVdO1xuXHRcdGZvciAobGV0IHAgPSB0aGlzLnBhcmVudDsgcDsgcCA9IHAucGFyZW50KSB7XG5cdFx0XHR2YWx1ZSA9IHAuZ2V0KG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGlzIGNvbnRleHQgd2l0aCBwYXJhbXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fENvbnRleHR9IHBhcmFtcyAtIFZhcmlvdXMgcGFyYW1ldGVyc1xuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGluaXQocGFyYW1zKSB7XG5cdFx0aWYgKCFwYXJhbXMgfHwgdHlwZW9mIHBhcmFtcyAhPT0gJ29iamVjdCcgfHwgKHBhcmFtcy5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgIXBhcmFtcy5jbGlraXQuaGFzKCdDb250ZXh0JykpKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIHBhcmFtZXRlcnMgdG8gYmUgYW4gb2JqZWN0IG9yIENvbnRleHQnLCB7IG5hbWU6ICdwYXJhbXMnLCBzY29wZTogJ0NvbnRleHQuaW5pdCcsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcy5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgIXBhcmFtcy5jbGlraXQuaGFzKCdDb250ZXh0JykpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhbiBvYmplY3Qgb3IgQ29udGV4dCcsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29udGV4dC5pbml0JywgdmFsdWU6IHBhcmFtcyB9KTtcblx0XHR9XG5cblx0XHR0aGlzLmFyZ3MgICAgICAgPSBuZXcgQXJndW1lbnRMaXN0KCksXG5cdFx0dGhpcy5iYW5uZXIgICAgID0gcGFyYW1zLmJhbm5lcjtcblx0XHR0aGlzLmNvbW1hbmRzICAgPSBuZXcgQ29tbWFuZE1hcCgpLFxuXHRcdHRoaXMuZGVzYyAgICAgICA9IHBhcmFtcy5kZXNjO1xuXHRcdHRoaXMuZXh0ZW5zaW9ucyA9IG5ldyBFeHRlbnNpb25NYXAoKSxcblx0XHR0aGlzLmxvb2t1cCAgICAgPSBuZXcgTG9va3VwKCksXG5cdFx0dGhpcy5uYW1lICAgICAgID0gcGFyYW1zLm5hbWU7XG5cdFx0dGhpcy5vcHRpb25zICAgID0gbmV3IE9wdGlvbk1hcCgpO1xuXHRcdHRoaXMucGFyZW50ICAgICA9IHBhcmFtcy5wYXJlbnQ7XG5cdFx0dGhpcy5yZXYgICAgICAgID0gMDtcblx0XHR0aGlzLnRpdGxlICAgICAgPSBwYXJhbXMudGl0bGUgfHwgcGFyYW1zLm5hbWU7XG5cdFx0dGhpcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHMgPSAhIXBhcmFtcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHM7XG5cblx0XHRwYXJhbXMuYXJncyAgICAgICAmJiB0aGlzLmFyZ3VtZW50KHBhcmFtcy5hcmdzKTtcblx0XHRwYXJhbXMuY29tbWFuZHMgICAmJiB0aGlzLmNvbW1hbmQocGFyYW1zLmNvbW1hbmRzKTtcblx0XHRwYXJhbXMuZXh0ZW5zaW9ucyAmJiB0aGlzLmV4dGVuc2lvbihwYXJhbXMuZXh0ZW5zaW9ucyk7XG5cdFx0cGFyYW1zLm9wdGlvbnMgICAgJiYgdGhpcy5vcHRpb24ocGFyYW1zLm9wdGlvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gb3B0aW9uIHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fE9wdGlvbnxPcHRpb25NYXB8QXJyYXk8T2JqZWN0fE9wdGlvbnxTdHJpbmc+fSBmb3JtYXQgLSBBbiBvcHRpb25cblx0ICogZm9ybWF0LCBhbiBvYmplY3Qgb2YgZm9ybWF0IHRvIG9wdGlvbiBkZXNjcmlwdGlvbnMsIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtcyBvciBgT3B0aW9uYFxuXHQgKiBpbnN0YW5jZXMsIGFuIGBPcHRpb25gIGluc3RhbmNlLCBhbiBgT3B0aW9uTWFwYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgYE9wdGlvbmBcblx0ICogY29uc3RydWN0b3IgcGFyYW1zIGFuZCBgT3B0aW9uYCBpbnN0YW5jZXMgZ3JvdXBlZCBieSBgU3RyaW5nYCBsYWJlbHMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fE9wdGlvbnxTdHJpbmd9IFtwYXJhbXNdIC0gV2hlbiBgZm9ybWF0YCBpcyBhIGZvcm1hdCBzdHJpbmcsIHRoZW4gdGhpc1xuXHQgKiBhcmd1bWVudCBpcyBlaXRoZXIgYE9wdGlvbmAgY29uc3RydWN0b3IgcGFyYW1ldGVycywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIG9yIGFuIG9wdGlvblxuXHQgKiBkZXNjcmlwdGlvbi5cblx0ICogQHJldHVybnMge0NvbnRleHR9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nKTsgLy8gZm9ybWF0IGZsYWdcblx0ICogICBjdHgub3B0aW9uKCctLWZvbycsICdlbmFibGVzIGZvbyBtb2RlJyk7IC8vIGZvcm1hdCB3aXRoIGRlc2NyaXB0aW9uXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nLCB7IGRlc2M6ICdlbmFibGVzIGZvbyBtb2RlJyB9KTsgLy8gZm9ybWF0IHdpdGggT3B0aW9uIGN0b3IgcGFyYW1zXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IG51bGwgfSk7IC8vIG9iamVjdCB3aXRoIGZvcm1hdCBmbGFnXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IHsgZGVzYzogJ2VuYWJsZXMgZm9vIG1vZGUnIH0gfSk7IC8vIG9iamVjdCB3aXRoIE9wdGlvbiBjdG9yIHBhcmFtc1xuXHQgKiAgIGN0eC5vcHRpb24oeyAnLS1mb28nOiBuZXcgT3B0aW9uKCkgfSk7IC8vIG9iamVjdCBvZiBgT3B0aW9uYCBpbnN0YW5jZVxuXHQgKiAgIGN0eC5vcHRpb24obmV3IE9wdGlvbignLS1mb28nKSk7IC8vIGBPcHRpb25gIGluc3RhbmNlXG5cdCAqICAgY3R4Lm9wdGlvbihuZXcgT3B0aW9uTWFwKCkpOyAvLyBgT3B0aW9uTWFwYCBmcm9tIGFub3RoZXIgaW5zdGFuY2Vcblx0ICogICBjdHgub3B0aW9uKFsgJ1NvbWUgR3JvdXAnLCBuZXcgT3B0aW9uKCctLWZvbycpLCAnQW5vdGhlciBHcm91cCcsIHsgJy0tYmFyJzogbnVsbCB9IF0pOyAvLyBhbiBhcnJheSBvZiBncm91cGVkIG9wdGlvbnNcblx0ICovXG5cdG9wdGlvbihmb3JtYXQsIHBhcmFtcykge1xuXHRcdGNvbnN0IG9wdHMgPSB0aGlzLm9wdGlvbnMuYWRkKGZvcm1hdCwgcGFyYW1zKTtcblxuXHRcdGZvciAoY29uc3Qgb3B0IG9mIG9wdHMpIHtcblx0XHRcdG9wdC5wYXJlbnQgPSB0aGlzO1xuXG5cdFx0XHRpZiAob3B0LmxvbmcpIHtcblx0XHRcdFx0dGhpcy5sb29rdXAubG9uZ1tvcHQubG9uZ10gPSBvcHQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvcHQuc2hvcnQpIHtcblx0XHRcdFx0dGhpcy5sb29rdXAuc2hvcnRbb3B0LnNob3J0XSA9IG9wdDtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCBbIGFsaWFzLCB2aXNpYmxlIF0gb2YgT2JqZWN0LmVudHJpZXMob3B0LmFsaWFzZXMubG9uZykpIHtcblx0XHRcdFx0aWYgKHZpc2libGUpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cC5sb25nW2FsaWFzXSA9IG9wdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IFsgYWxpYXMsIHZpc2libGUgXSBvZiBPYmplY3QuZW50cmllcyhvcHQuYWxpYXNlcy5zaG9ydCkpIHtcblx0XHRcdFx0aWYgKHZpc2libGUpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cC5zaG9ydFthbGlhc10gPSBvcHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLnJldisrO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2NhbiBwYXJlbnQgY29udGV4dHMgdG8gZmluZCB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGluIHRoZSBib3R0b20tbW9zdCBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lLlxuXHQgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSAtIEEgZGVmYXVsdCB2YWx1ZSBpZiBubyB2YWx1ZSBpcyBmb3VuZC5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cHJvcChuYW1lLCBkZWZhdWx0VmFsdWUpIHtcblx0XHRsZXQgdmFsdWUgPSB0aGlzW25hbWVdO1xuXHRcdGZvciAobGV0IHAgPSB0aGlzLnBhcmVudDsgdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBwOyBwID0gcC5wYXJlbnQpIHtcblx0XHRcdHZhbHVlID0gcC5wcm9wKG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSBjb21tYW5kIG9yIGV4dGVuc2lvbiB0byBhZGQgdG8gdGhlIGxvb2t1cC5cblx0ICpcblx0ICogQHBhcmFtIHtDb21tYW5kfEV4dGVuc2lvbn0gaXQgLSBUaGUgY29tbWFuZCBvciBleHRlbnNpb24gaW5zdGFuY2UuXG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cmVnaXN0ZXIoaXQpIHtcblx0XHRjb25zdCBkZXN0ID0gaXQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJykgPyAnZXh0ZW5zaW9ucycgOiAnY29tbWFuZHMnO1xuXHRcdGl0LnBhcmVudCA9IHRoaXM7XG5cdFx0dGhpcy5sb29rdXBbZGVzdF1baXQubmFtZV0gPSBpdDtcblxuXHRcdGlmIChpdC5hbGlhc2VzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGFsaWFzIG9mIE9iamVjdC5rZXlzKGl0LmFsaWFzZXMpKSB7XG5cdFx0XHRcdGlmICghdGhpc1tkZXN0XS5oYXMoYWxpYXMpKSB7XG5cdFx0XHRcdFx0dGhpcy5sb29rdXBbZGVzdF1bYWxpYXNdID0gaXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdLCJmaWxlIjoicGFyc2VyL2NvbnRleHQuanMifQ== |
@@ -308,3 +308,3 @@ "use strict"; | ||
if (typeof ctx === 'function') { | ||
ctx = await ctx(); | ||
ctx = await ctx(this); | ||
} | ||
@@ -326,5 +326,5 @@ | ||
this.aliases = ctx.aliases; | ||
this.banner = ctx.banner; | ||
this.camelCase = ctx.camelCase; | ||
this.defaultCommand = ctx.defaultCommand; | ||
this.remoteHelp = ctx.remoteHelp; | ||
this.treatUnknownOptionsAsArguments = ctx.treatUnknownOptionsAsArguments; | ||
@@ -334,2 +334,3 @@ this.version = ctx.version; | ||
args: ctx.args, | ||
banner: ctx.banner, | ||
commands: ctx.commands, | ||
@@ -399,2 +400,2 @@ desc: this.desc || ctx.desc, | ||
exports.default = Extension; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9leHRlbnNpb24uanMiXSwibmFtZXMiOlsibG9nIiwid2FybiIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwiRXh0ZW5zaW9uIiwiQ29tbWFuZCIsImNvbnN0cnVjdG9yIiwicGF0aE9yUGFyYW1zIiwicGFyYW1zIiwicGF0aCIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwibmFtZSIsInNjb3BlIiwidmFsdWUiLCJlcnIiLCJleGUiLCJwa2ciLCJhY3Rpb24iLCJlIiwicm9vdCIsIkVycm9yIiwiSU5WQUxJRF9FWFRFTlNJT04iLCJKU09OIiwic3RyaW5naWZ5IiwibWFpbiIsImRlc2MiLCJqc29uIiwiZGVzY3JpcHRpb24iLCJhbGlhc2VzIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5jbHVkZXMiLCJwdXNoIiwiYmluIiwicHJpbWFyeSIsIk9iamVjdCIsImVudHJpZXMiLCJtZXNzYWdlIiwic3RkZXJyIiwiZ2V0Iiwic3RhY2siLCJwIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsInRyaW0iLCJsaW5lIiwic3BsaXQiLCJ3cml0ZSIsImxvYWQiLCJsb2FkZWQiLCJjbGlraXQiLCJwcm9jZXNzIiwiZXhlY1BhdGgiLCJfX2FyZ3YiLCJjbWQiLCJ0ZXJtaW5hbCIsImFyZ3MiLCJzbGljZSIsImZpbmRJbmRleCIsImFyZyIsInR5cGUiLCJleHRlbnNpb24iLCJpIiwibGVuIiwibGVuZ3RoIiwiYXBwbHkiLCJpbnB1dCIsInNwYXduRm4iLCJzcGF3biIsImN3ZCIsIl9wYXRoIiwiZGlybmFtZSIsInJlcXVpcmUiLCJyZXNvbHZlIiwibGFzdCIsImZzIiwiZXhpc3RzU3luYyIsImpvaW4iLCJzdGF0dXMiLCJjaGlsZCIsInN0ZG91dCIsIm9uIiwiZGF0YSIsInRvU3RyaW5nIiwiUHJvbWlzZSIsImNvZGUiLCJOT19FWEVDVVRBQkxFIiwiY3R4IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJpc0NMSUtpdEV4dGVuc2lvbiIsImJhbm5lciIsImNhbWVsQ2FzZSIsImRlZmF1bHRDb21tYW5kIiwidHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzIiwidmVyc2lvbiIsImluaXQiLCJjb21tYW5kcyIsImV4dGVuc2lvbnMiLCJvcHRpb25zIiwicGFyZW50IiwidGl0bGUiLCJ2ZXJzaW9uT3B0aW9uIiwibG9va3VwIiwibG9uZyIsImNhbGxiYWNrIiwiZXhpdENvZGUiLCJvcHRzIiwibmV4dCIsInBhcnNlciIsImhlbHBDb21tYW5kIiwic2NoZW1hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUEsR0FBRjtBQUFPQyxFQUFBQTtBQUFQLElBQWdCLG9CQUFNLG1CQUFOLENBQXRCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxlQUFNQyxNQUE1QjtBQUVBOzs7Ozs7QUFLZSxNQUFNQyxTQUFOLFNBQXdCQyxnQkFBeEIsQ0FBZ0M7QUFDOUM7Ozs7OztBQU9BOzs7Ozs7Ozs7Ozs7O0FBYUFDLEVBQUFBLFdBQVcsQ0FBQ0MsWUFBRCxFQUFlQyxNQUFmLEVBQXVCO0FBQ2pDLFFBQUlDLElBQUksR0FBRyxJQUFYOztBQUVBLFFBQUksT0FBT0YsWUFBUCxLQUF3QixRQUE1QixFQUFzQztBQUNyQ0UsTUFBQUEsSUFBSSxHQUFHRixZQUFQOztBQUNBLFVBQUksQ0FBQ0MsTUFBTCxFQUFhO0FBQ1pBLFFBQUFBLE1BQU0sR0FBRyxFQUFUO0FBQ0E7QUFDRCxLQUxELE1BS08sSUFBSUQsWUFBWSxJQUFJLE9BQU9BLFlBQVAsS0FBd0IsUUFBNUMsRUFBc0Q7QUFDNUQsT0FBQztBQUFFRSxRQUFBQTtBQUFGLFVBQVdELE1BQU0sR0FBR0QsWUFBckI7QUFDQTs7QUFFRCxRQUFJLENBQUNFLElBQUQsSUFBUyxPQUFPQSxJQUFQLEtBQWdCLFFBQTdCLEVBQXVDO0FBQ3RDLFlBQU1DLGdCQUFFQyxnQkFBRixDQUFtQiw2Q0FBbkIsRUFBa0U7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LFFBQVEsQ0FBQyxDQUFELENBQVI7QUFDQSxtQkFBTyxLQUFQO0FBQ0E7QUFDRCxTQVZEO0FBV0E7O0FBRUQsVUFBSSxPQUFPbkIsR0FBRyxDQUFDdEUsTUFBWCxLQUFzQixVQUExQixFQUFzQztBQUNyQyxhQUFLQSxNQUFMLEdBQWNzRSxHQUFHLENBQUN0RSxNQUFsQjtBQUNBLE9BRkQsTUFFTztBQUNOLGFBQUtBLE1BQUwsR0FBYzRGLE1BQU0sSUFBSTtBQUN2QixjQUFJLEtBQUtoQixjQUFMLEtBQXdCLE1BQXhCLElBQWtDLENBQUMsS0FBS3RELEdBQUwsQ0FBUyxNQUFULENBQXZDLEVBQXlEO0FBQ3hELGtCQUFNZSxHQUFHLEdBQUcsS0FBS3VDLGNBQUwsSUFBdUIsS0FBS0ksUUFBTCxDQUFjLEtBQUtKLGNBQW5CLENBQW5DOztBQUNBLGdCQUFJdkMsR0FBSixFQUFTO0FBQ1IscUJBQU9BLEdBQUcsQ0FBQ3JDLE1BQUosQ0FBVzRGLE1BQVgsQ0FBUDtBQUNBO0FBQ0Q7O0FBQ0QsaUJBQU9DLGNBQVk3RixNQUFaLENBQW1CNEYsTUFBbkIsQ0FBUDtBQUNBLFNBUkQ7QUFTQTtBQUNEO0FBQ0Q7QUFFRDs7Ozs7Ozs7QUFNQUUsRUFBQUEsTUFBTSxHQUFHO0FBQ1IsV0FBTyxFQUNOLEdBQUcsTUFBTUEsTUFESDtBQUVOdkcsTUFBQUEsSUFBSSxFQUFFLEtBQUtBO0FBRkwsS0FBUDtBQUlBOztBQTVTNkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbWFuZCBmcm9tICcuL2NvbW1hbmQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJy4uL2xpYi9kZWJ1Zyc7XG5pbXBvcnQgRSBmcm9tICcuLi9saWIvZXJyb3JzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgaGVscENvbW1hbmQgZnJvbSAnLi4vY29tbWFuZHMvaGVscCc7XG5pbXBvcnQgX3BhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IGRlY2xhcmVDTElLaXRDbGFzcywgZmlsZW5hbWUsIGZpbmRQYWNrYWdlLCBpc0V4ZWN1dGFibGUgfSBmcm9tICcuLi9saWIvdXRpbCc7XG5pbXBvcnQgeyBzcGF3biwgc3Bhd25TeW5jIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5cbmNvbnN0IHsgbG9nLCB3YXJuIH0gPSBkZWJ1ZygnY2xpLWtpdDpleHRlbnNpb24nKTtcbmNvbnN0IHsgaGlnaGxpZ2h0IH0gPSBkZWJ1Zy5zdHlsZXM7XG5cbi8qKlxuICogRGVmaW5lcyBhIG5hbWVzcGFjZSB0aGF0IHdyYXBzIGFuIGV4dGVybmFsIHByb2dyYW0gb3Igc2NyaXB0LlxuICpcbiAqIEBleHRlbmRzIHtDb21tYW5kfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHRlbnNpb24gZXh0ZW5kcyBDb21tYW5kIHtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgaWYgdGhpcyBleHRlbnNpb24gaXMgYSBjbGkta2l0IGV4dGVuc2lvbi4gSXQgc2hhbGwgcmVtYWluIGBmYWxzZWAgZm9yIG5hdGl2ZVxuXHQgKiBiaW5hcmllcyBhbmQgbm9uLWNsaS1raXQgQ0xJJ3MuXG5cdCAqIEB0eXBlIHtCb29sZWFufVxuXHQgKi9cblx0aXNDTElLaXRFeHRlbnNpb24gPSBmYWxzZTtcblxuXHQvKipcblx0ICogRGV0ZWN0cyB0aGUgZXh0ZW5zaW9uIGRlZmluZWQgaW4gdGhlIHNwZWNpZmllZCBwYXRoIGFuZCBpbml0aWFsaXplcyBpdC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBwYXRoT3JQYXJhbXMgLSBUaGUgcGF0aCB0byB0aGUgZXh0ZW5zaW9uIG9yIGEgcGFyYW1zIG9iamVjdC4gSWYgdGhlXG5cdCAqIHBhdGggaXMgYSBOb2RlLmpzIHBhY2thZ2Ugd2l0aCBhIGBwYWNrYWdlLmpzb25gIGNvbnRhaW5pbmcgYSBgXCJjbGkta2l0XCJgIHByb3BlcnR5LCBpdCB3aWxsXG5cdCAqIG1lcmdlIHRoZSBleHRlcm5hbCBjbGkta2l0IGNvbnRleHQgdHJlZSBpbnRvIHRoaXMgbmFtZXNwYWNlLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtc10gLSBWYXJpb3VzIHBhcmFtZXRlcnMgd2hlbiBgZXh0ZW5zaW9uUGF0aGAgaXMgYSBgU3RyaW5nYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMubmFtZV0gLSBUaGUgZXh0ZW5zaW9uIG5hbWUuIElmIG5vdCBzZXQsIGl0IHdpbGwgbG9hZCBpdCBmcm9tIHRoZVxuXHQgKiBleHRlbnNpb24ncyBgcGFja2FnZS5qc29uYCBvciB0aGUgZmlsZW5hbWUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLnBhdGhdIC0gVGhlIHBhdGggdG8gYW4gZXhlY3V0YWJsZSwgYSBKYXZhU2NyaXB0IGZpbGUsIG9yIE5vZGUuanNcblx0ICogcGFja2FnZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKHBhdGhPclBhcmFtcywgcGFyYW1zKSB7XG5cdFx0bGV0IHBhdGggPSBudWxsO1xuXG5cdFx0aWYgKHR5cGVvZiBwYXRoT3JQYXJhbXMgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRwYXRoID0gcGF0aE9yUGFyYW1zO1xuXHRcdFx0aWYgKCFwYXJhbXMpIHtcblx0XHRcdFx0cGFyYW1zID0ge307XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChwYXRoT3JQYXJhbXMgJiYgdHlwZW9mIHBhdGhPclBhcmFtcyA9PT0gJ29iamVjdCcpIHtcblx0XHRcdCh7IHBhdGggfSA9IHBhcmFtcyA9IHBhdGhPclBhcmFtcyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFwYXRoIHx8IHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBhbiBleHRlbnNpb24gcGF0aCBvciBwYXJhbXMgb2JqZWN0JywgeyBuYW1lOiAncGF0aE9yUGFyYW1zJywgc2NvcGU6ICdFeHRlbnNpb24uY29uc3RydWN0b3InLCB2YWx1ZTogcGF0aE9yUGFyYW1zIH0pO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgcGFyYW1zICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBleHRlbnNpb24gcGFyYW1zIHRvIGJlIGFuIG9iamVjdCBvciBDb250ZXh0JywgeyBuYW1lOiAncGFyYW1zJywgc2NvcGU6ICdFeHRlbnNpb24uY29uc3RydWN0b3InLCB2YWx1ZTogcGFyYW1zIH0pO1xuXHRcdH1cblxuXHRcdGxldCB7IG5hbWUgfSA9IHBhcmFtcztcblx0XHRsZXQgZXJyO1xuXHRcdGxldCBleGU7XG5cdFx0bGV0IHBrZztcblxuXHRcdC8vIHdlIGFsd2F5cyBpbXBsZW1lbnQgb3VyIG93biBhY3Rpb25cblx0XHRkZWxldGUgcGFyYW1zLmFjdGlvbjtcblxuXHRcdC8vIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZXh0ZW5zaW9uIGlzIGEgYmluYXJ5IG9yIGlmIGl0J3MgYSBOb2RlIHBhY2thZ2Vcblx0XHR0cnkge1xuXHRcdFx0ZXhlID0gaXNFeGVjdXRhYmxlKHBhdGgpO1xuXHRcdFx0aWYgKCFuYW1lKSB7XG5cdFx0XHRcdG5hbWUgPSBmaWxlbmFtZShleGVbMF0pO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdC8vIG1heWJlIGEgTm9kZSBwYWNrYWdlP1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRwa2cgPSBmaW5kUGFja2FnZShwYXRoKTtcblx0XHRcdFx0XHRpZiAoIXBrZy5yb290KSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfRVhURU5TSU9OKGBJbnZhbGlkIGV4dGVuc2lvbjogVW5hYmxlIHRvIGZpbmQgZXhlY3V0YWJsZSwgc2NyaXB0LCBvciBwYWNrYWdlOiAke3R5cGVvZiBwYXRoID09PSAnc3RyaW5nJyA/IGBcIiR7cGF0aH1cImAgOiBKU09OLnN0cmluZ2lmeShwYXRoKX1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghcGtnLm1haW4pIHtcblx0XHRcdFx0XHR0aHJvdyBFLklOVkFMSURfRVhURU5TSU9OKGBJbnZhbGlkIGV4dGVuc2lvbjogVW5hYmxlIHRvIGZpbmQgZXh0ZW5zaW9uJ3MgbWFpbiBmaWxlOiAke3R5cGVvZiBwYXRoID09PSAnc3RyaW5nJyA/IGBcIiR7cGF0aH1cImAgOiBKU09OLnN0cmluZ2lmeShwYXRoKX1gKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghcGFyYW1zLmRlc2MpIHtcblx0XHRcdFx0XHRwYXJhbXMuZGVzYyA9IHBrZy5qc29uLmRlc2NyaXB0aW9uO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFuYW1lKSB7XG5cdFx0XHRcdFx0bmFtZSA9IHBrZy5qc29uLm5hbWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBpbml0IHRoZSBhbGlhc2VzIHdpdGggYW55IGFsaWFzZXMgZnJvbSB0aGUgcGFja2FnZS5qc29uXG5cdFx0XHRcdHBhcmFtcy5hbGlhc2VzID0gQXJyYXkuaXNBcnJheShwa2cuanNvbi5hbGlhc2VzKSA/IHBrZy5qc29uLmFsaWFzZXMgOiBbXTtcblxuXHRcdFx0XHQvLyBpZiB0aGUgbmFtZSBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgb25lIGluIHRoZSBwYWNrYWdlLmpzb24sIGFkZCBpdCB0byB0aGUgYWxpYXNlc1xuXHRcdFx0XHRpZiAocGFyYW1zLm5hbWUgJiYgcGFyYW1zLm5hbWUgIT09IHBrZy5qc29uLm5hbWUgJiYgIXBhcmFtcy5hbGlhc2VzLmluY2x1ZGVzKHBhcmFtcy5uYW1lKSkge1xuXHRcdFx0XHRcdHBhcmFtcy5hbGlhc2VzLnB1c2gocGFyYW1zLm5hbWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gaWYgdGhlIHBhY2thZ2UgaGFzIGEgYmluIHNjcmlwdCB0aGF0IG1hdGNoZXMgdGhlIHBhY2thZ2UgbmFtZSwgdGhlbiBhZGQgYW55IG90aGVyXG5cdFx0XHRcdC8vIGJpbiBuYW1lIHRoYXQgYWxpYXNlcyB0aGUgcGFja2FnZSBuYW1lZCBiaW5cblx0XHRcdFx0aWYgKHBrZy5qc29uLmJpbikge1xuXHRcdFx0XHRcdGNvbnN0IHByaW1hcnkgPSBwa2cuanNvbi5iaW5bcGtnLmpzb24ubmFtZV07XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBbIG5hbWUsIGJpbiBdIG9mIE9iamVjdC5lbnRyaWVzKHBrZy5qc29uLmJpbikpIHtcblx0XHRcdFx0XHRcdGlmIChiaW4gPT09IHByaW1hcnkgJiYgIXBhcmFtcy5hbGlhc2VzLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRcdFx0XHRcdHBhcmFtcy5hbGlhc2VzLnB1c2gobmFtZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGVyciA9IGU7XG5cdFx0XHRcdHdhcm4oZXJyLm1lc3NhZ2UpO1xuXHRcdFx0XHR3YXJuKCdGb3VuZCBiYWQgZXh0ZW5zaW9uLCBjcmVhdGluZyBlcnJvciBhY3Rpb24nKTtcblxuXHRcdFx0XHRwYXJhbXMuYWN0aW9uID0gKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHsgc3RkZXJyIH0gPSB0aGlzLmdldCgndGVybWluYWwnKTtcblx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRsZXQgeyBzdGFjayB9ID0gZXJyO1xuXHRcdFx0XHRcdFx0Y29uc3QgcCA9IHN0YWNrLmluZGV4T2YoJ1xcblxcbicpO1xuXHRcdFx0XHRcdFx0aWYgKHAgIT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdHN0YWNrID0gc3RhY2suc3Vic3RyaW5nKDAsIHApLnRyaW0oKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGZvciAoY29uc3QgbGluZSBvZiBzdGFjay5zcGxpdCgnXFxuJykpIHtcblx0XHRcdFx0XHRcdFx0c3RkZXJyLndyaXRlKGAgICR7bGluZX1cXG5gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c3RkZXJyLndyaXRlKGBJbnZhbGlkIGV4dGVuc2lvbjogJHtwa2cuanNvbi5uYW1lfVxcbmApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRzdXBlcihuYW1lIHx8IGZpbGVuYW1lKHBhdGgpLCBwYXJhbXMpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnRXh0ZW5zaW9uJyk7XG5cblx0XHR0aGlzLmVyciAgICA9IGVycjtcblx0XHR0aGlzLmV4ZSAgICA9IGV4ZTtcblx0XHR0aGlzLnBhdGggICA9IHBhdGg7XG5cdFx0dGhpcy5wa2cgICAgPSBwa2c7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgdGhlIGV4dGVuc2lvbi5cblx0ICpcblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBsb2FkKCkge1xuXHRcdGlmICh0aGlzLmxvYWRlZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmxvYWRlZCA9IHRydWU7XG5cblx0XHRsZXQgeyBleGUsIHBrZyB9ID0gdGhpcztcblxuXHRcdC8vIGlmIHdlIGhhdmUgYSBKYXZhU2NyaXB0IGZpbGUgb3IgTm9kZSBwYWNrYWdlLCBidXQgbm90IGEgY2xpLWtpdCBlbmFibGVkIG9uZSwgdGhlbiB3aXJlXG5cdFx0Ly8gaXQgdXAgdG8gc3Bhd24gTm9kZVxuXHRcdGlmIChwa2cgJiYgcGtnLnJvb3QgJiYgIXBrZy5jbGlraXQpIHtcblx0XHRcdGV4ZSA9IHRoaXMuZXhlID0gWyBwcm9jZXNzLmV4ZWNQYXRoLCBwa2cubWFpbiBdO1xuXHRcdH1cblxuXHRcdGlmIChleGUpIHtcblx0XHRcdHRoaXMuYWN0aW9uID0gYXN5bmMgKHsgX19hcmd2LCBjbWQsIHRlcm1pbmFsIH0pID0+IHtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5leGUpKSB7XG5cdFx0XHRcdFx0Y29uc3QgZXhlID0gdGhpcy5leGVbMF07XG5cdFx0XHRcdFx0Y29uc3QgYXJncyA9IHRoaXMuZXhlLnNsaWNlKDEpO1xuXHRcdFx0XHRcdGNvbnN0IHAgPSBfX2FyZ3YuZmluZEluZGV4KGFyZyA9PiBhcmcgJiYgYXJnLnR5cGUgPT09ICdleHRlbnNpb24nICYmIGFyZy5leHRlbnNpb24gPT09IGNtZCk7XG5cblx0XHRcdFx0XHRpZiAocCAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSBwICsgMSwgbGVuID0gX19hcmd2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGFyZ3MucHVzaC5hcHBseShhcmdzLCBfX2FyZ3ZbaV0uaW5wdXQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGxldCBzcGF3bkZuID0gc3Bhd247XG5cblx0XHRcdFx0XHQvLyBjaGVjayBpZiBub2RlLXB0eSBleGlzdHMgYW5kIHRoYXQgaXQncyBjb21waWxlZCBmb3IgdGhpcyB2ZXJzaW9uIG9mIE5vZGUuanNcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0bGV0IGN3ZCA9IF9wYXRoLmRpcm5hbWUocmVxdWlyZS5yZXNvbHZlKCdub2RlLXB0eS1wcmVidWlsdC1tdWx0aWFyY2gnKSk7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCBsYXN0OyBjd2QgIT09IGxhc3QgJiYgIWZzLmV4aXN0c1N5bmMoX3BhdGguam9pbihjd2QsICdwYWNrYWdlLmpzb24nKSk7IGxhc3QgPSBjd2QsIGN3ZCA9IF9wYXRoLmRpcm5hbWUoY3dkKSkge31cblxuXHRcdFx0XHRcdFx0Y29uc3QgeyBzdGF0dXMgfSA9IHNwYXduU3luYyhwcm9jZXNzLmV4ZWNQYXRoLCBbXG5cdFx0XHRcdFx0XHRcdCctZScsXG5cdFx0XHRcdFx0XHRcdCd0cnkgeyByZXF1aXJlKFxcJ25vZGUtcHR5LXByZWJ1aWx0LW11bHRpYXJjaFxcJykgfSBjYXRjaCAoZSkgeyBwcm9jZXNzLmV4aXQoZS5tZXNzYWdlLmluY2x1ZGVzKFxcJ05PREVfTU9EVUxFX1ZFUlNJT05cXCcpID8gMiA6IDEpIH0nXG5cdFx0XHRcdFx0XHRdLCB7IGN3ZCB9KTtcblxuXHRcdFx0XHRcdFx0aWYgKHN0YXR1cyAhPT0gMSkge1xuXHRcdFx0XHRcdFx0XHQvLyBub2RlLXB0eSBleGlzdHMhXG5cdFx0XHRcdFx0XHRcdGlmIChzdGF0dXMgPT09IDIpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyBidXQgaXQncyB0aGUgd3JvbmcgTm9kZSB2ZXJzaW9uLCByZWJ1aWxkXG5cdFx0XHRcdFx0XHRcdFx0d2Fybihgbm9kZS1wdHkgYnVpbHQgZm9yIGRpZmZlcmVudCBOb2RlIHZlcnNpb24sIHJlYnVpbGRpbmc6ICR7aGlnaGxpZ2h0KGN3ZCl9YCk7XG5cdFx0XHRcdFx0XHRcdFx0c3Bhd25TeW5jKCducG0nLCBbICdyZWJ1aWxkJyBdLCB7IGN3ZCB9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRzcGF3bkZuID0gcmVxdWlyZSgnbm9kZS1wdHktcHJlYnVpbHQtbXVsdGlhcmNoJykuc3Bhd247XG5cdFx0XHRcdFx0XHR9XG5cblxuXHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdC8vIG5vdCBpbnN0YWxsZWRcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBzcGF3biB0aGUgcHJvY2Vzc1xuXHRcdFx0XHRcdGxvZyhgUnVubmluZzogJHtoaWdobGlnaHQoYCR7ZXhlfSAke2FyZ3Muam9pbignICcpfWApfWApO1xuXHRcdFx0XHRcdGNvbnN0IGNoaWxkID0gc3Bhd25GbihleGUsIGFyZ3MpO1xuXHRcdFx0XHRcdGlmIChzcGF3bkZuID09PSBzcGF3bikge1xuXHRcdFx0XHRcdFx0Ly8gaWYgd2UncmUgdXNpbmcgdGhlIGJ1aWx0LWluIHNwYXduLCB0aGVuIHdlIG5lZWQgdG8gbWFudWFsbHkgc3RyZWFtIHRoZVxuXHRcdFx0XHRcdFx0Ly8gc3RkaW8gb3V0cHV0IGluc3RlYWQgb2YgcGlwZSgpIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0aGUgY2hpbGQgcHJvY2Vzc1xuXHRcdFx0XHRcdFx0Ly8gdG8gY2xvc2UgdGhlIHRlcm1pbmFsIHN0cmVhbXNcblx0XHRcdFx0XHRcdGNoaWxkLnN0ZG91dC5vbignZGF0YScsIGRhdGEgPT4gdGVybWluYWwuc3Rkb3V0LndyaXRlKGRhdGEudG9TdHJpbmcoKSkpO1xuXHRcdFx0XHRcdFx0Y2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgZGF0YSA9PiB0ZXJtaW5hbC5zdGRlcnIud3JpdGUoZGF0YS50b1N0cmluZygpKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNoaWxkLm9uKCdkYXRhJywgdGVybWluYWwuc3Rkb3V0LndyaXRlKTtcblx0XHRcdFx0XHRhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGNoaWxkLm9uKCdjbG9zZScsIChjb2RlID0gMCkgPT4gcmVzb2x2ZSh7IGNvZGUgfSkpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aHJvdyBFLk5PX0VYRUNVVEFCTEUoYEV4dGVuc2lvbiBcIiR7dGhpcy5uYW1lfVwiIGhhcyBubyBleGVjdXRhYmxlIWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0fSBlbHNlIGlmIChwa2cgJiYgcGtnLmNsaWtpdCkge1xuXHRcdFx0Ly8gd2UgaGF2ZSBhIE5vZGUgcGFja2FnZSwgc28gcmVxdWlyZSBpdCBhbmQgc2VlIHdoYXQgd2UgaGF2ZVxuXHRcdFx0bG9nKGBSZXF1aXJpbmcgJHtoaWdobGlnaHQocGtnLm1haW4pfWApO1xuXG5cdFx0XHRsZXQgY3R4O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y3R4ID0gcmVxdWlyZShwa2cubWFpbik7XG5cdFx0XHRcdGlmICghY3R4IHx8ICh0eXBlb2YgY3R4ICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgY3R4ICE9PSAnZnVuY3Rpb24nKSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignRXh0ZW5zaW9uIG11c3QgZXhwb3J0IGFuIG9iamVjdCBvciBmdW5jdGlvbicpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0VYVEVOU0lPTihgQmFkIGV4dGVuc2lvbiBcIiR7dGhpcy5uYW1lfVwiOiAke2Vyci5tZXNzYWdlfWAsIHsgbmFtZTogdGhpcy5uYW1lLCBwYXRoOiB0aGlzLCBzY29wZTogJ0V4dGVuc2lvbi5sb2FkJywgdmFsdWU6IGVyciB9KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gaWYgdGhpcyBpcyBhbiBFUzYgbW9kdWxlLCBncmFiIHRoZSBkZWZhdWx0IGV4cG9ydFxuXHRcdFx0aWYgKGN0eC5fX2VzTW9kdWxlKSB7XG5cdFx0XHRcdGN0eCA9IGN0eC5kZWZhdWx0O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBpZiB0aGUgZXhwb3J0IHdhcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IG5vdyB0byBnZXQgaXRzIENMSSBkZWZpbml0aW9uXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAodHlwZW9mIGN0eCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdGN0eCA9IGF3YWl0IGN0eCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFjdHggfHwgdHlwZW9mIGN0eCAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0V4dGVuc2lvbiBkb2VzIG5vdCByZXNvbHZlIGFuIG9iamVjdCcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0VYVEVOU0lPTihgQmFkIGV4dGVuc2lvbiBcIiR7dGhpcy5uYW1lfVwiOiAke2Vyci5tZXNzYWdlfWAsIHsgbmFtZTogdGhpcy5uYW1lLCBwYXRoOiB0aGlzLCBzY29wZTogJ0V4dGVuc2lvbi5sb2FkJywgdmFsdWU6IGVyciB9KTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5pc0NMSUtpdEV4dGVuc2lvbiA9IHRydWU7XG5cblx0XHRcdHRoaXMuYWxpYXNlcyAgICAgICAgPSBjdHguYWxpYXNlcztcblx0XHRcdHRoaXMuYmFubmVyICAgICAgICAgPSBjdHguYmFubmVyO1xuXHRcdFx0dGhpcy5jYW1lbENhc2UgICAgICA9IGN0eC5jYW1lbENhc2U7XG5cdFx0XHR0aGlzLmRlZmF1bHRDb21tYW5kID0gY3R4LmRlZmF1bHRDb21tYW5kO1xuXHRcdFx0dGhpcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHMgPSBjdHgudHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzO1xuXHRcdFx0dGhpcy52ZXJzaW9uICAgICAgICA9IGN0eC52ZXJzaW9uO1xuXG5cdFx0XHR0aGlzLmluaXQoe1xuXHRcdFx0XHRhcmdzOiAgICAgICBjdHguYXJncyxcblx0XHRcdFx0Y29tbWFuZHM6ICAgY3R4LmNvbW1hbmRzLFxuXHRcdFx0XHRkZXNjOiAgICAgICB0aGlzLmRlc2MgfHwgY3R4LmRlc2MsXG5cdFx0XHRcdGV4dGVuc2lvbnM6IGN0eC5leHRlbnNpb25zLFxuXHRcdFx0XHRuYW1lOiAgICAgICB0aGlzLm5hbWUgfHwgY3R4Lm5hbWUsXG5cdFx0XHRcdG9wdGlvbnM6ICAgIGN0eC5vcHRpb25zLFxuXHRcdFx0XHRwYXJlbnQ6ICAgICB0aGlzLnBhcmVudCxcblx0XHRcdFx0dGl0bGU6ICAgICAgY3R4LnRpdGxlICE9PSAnR2xvYmFsJyAmJiBjdHgudGl0bGUgfHwgdGhpcy5uYW1lXG5cdFx0XHR9KTtcblxuXHRcdFx0Y29uc3QgdmVyc2lvbk9wdGlvbiA9IHRoaXMudmVyc2lvbiAmJiB0aGlzLmxvb2t1cC5sb25nLnZlcnNpb247XG5cdFx0XHRpZiAodmVyc2lvbk9wdGlvbiAmJiB0eXBlb2YgdmVyc2lvbk9wdGlvbi5jYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHR2ZXJzaW9uT3B0aW9uLmNhbGxiYWNrID0gYXN5bmMgKHsgZXhpdENvZGUsIG9wdHMsIG5leHQgfSkgPT4ge1xuXHRcdFx0XHRcdGlmIChhd2FpdCBuZXh0KCkpIHtcblx0XHRcdFx0XHRcdGxldCB2ZXJzaW9uID0gdGhpcy52ZXJzaW9uO1xuXHRcdFx0XHRcdFx0aWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb24gPSBhd2FpdCB2ZXJzaW9uKG9wdHMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0KG9wdHMudGVybWluYWwgfHwgdGhpcy5nZXQoJ3Rlcm1pbmFsJykpLnN0ZG91dC53cml0ZShgJHt2ZXJzaW9ufVxcbmApO1xuXHRcdFx0XHRcdFx0ZXhpdENvZGUoMCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodHlwZW9mIGN0eC5hY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0dGhpcy5hY3Rpb24gPSBjdHguYWN0aW9uO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5hY3Rpb24gPSBwYXJzZXIgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLmRlZmF1bHRDb21tYW5kICE9PSAnaGVscCcgfHwgIXRoaXMuZ2V0KCdoZWxwJykpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGNtZCA9IHRoaXMuZGVmYXVsdENvbW1hbmQgJiYgdGhpcy5jb21tYW5kc1t0aGlzLmRlZmF1bHRDb21tYW5kXTtcblx0XHRcdFx0XHRcdGlmIChjbWQpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGNtZC5hY3Rpb24ocGFyc2VyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIGhlbHBDb21tYW5kLmFjdGlvbihwYXJzZXIpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBzY2hlbWEgZm9yIHRoaXMgZXh0ZW5zaW9uIGFuZCBhbGwgY2hpbGQgY29udGV4dHMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzY2hlbWEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLnN1cGVyLnNjaGVtYSxcblx0XHRcdHBhdGg6IHRoaXMucGF0aFxuXHRcdH07XG5cdH1cbn1cbiJdLCJmaWxlIjoicGFyc2VyL2V4dGVuc2lvbi5qcyJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9leHRlbnNpb24uanMiXSwibmFtZXMiOlsibG9nIiwid2FybiIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwiRXh0ZW5zaW9uIiwiQ29tbWFuZCIsImNvbnN0cnVjdG9yIiwicGF0aE9yUGFyYW1zIiwicGFyYW1zIiwicGF0aCIsIkUiLCJJTlZBTElEX0FSR1VNRU5UIiwibmFtZSIsInNjb3BlIiwidmFsdWUiLCJlcnIiLCJleGUiLCJwa2ciLCJhY3Rpb24iLCJlIiwicm9vdCIsIkVycm9yIiwiSU5WQUxJRF9FWFRFTlNJT04iLCJKU09OIiwic3RyaW5naWZ5IiwibWFpbiIsImRlc2MiLCJqc29uIiwiZGVzY3JpcHRpb24iLCJhbGlhc2VzIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5jbHVkZXMiLCJwdXNoIiwiYmluIiwicHJpbWFyeSIsIk9iamVjdCIsImVudHJpZXMiLCJtZXNzYWdlIiwic3RkZXJyIiwiZ2V0Iiwic3RhY2siLCJwIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsInRyaW0iLCJsaW5lIiwic3BsaXQiLCJ3cml0ZSIsImxvYWQiLCJsb2FkZWQiLCJjbGlraXQiLCJwcm9jZXNzIiwiZXhlY1BhdGgiLCJfX2FyZ3YiLCJjbWQiLCJ0ZXJtaW5hbCIsImFyZ3MiLCJzbGljZSIsImZpbmRJbmRleCIsImFyZyIsInR5cGUiLCJleHRlbnNpb24iLCJpIiwibGVuIiwibGVuZ3RoIiwiYXBwbHkiLCJpbnB1dCIsInNwYXduRm4iLCJzcGF3biIsImN3ZCIsIl9wYXRoIiwiZGlybmFtZSIsInJlcXVpcmUiLCJyZXNvbHZlIiwibGFzdCIsImZzIiwiZXhpc3RzU3luYyIsImpvaW4iLCJzdGF0dXMiLCJjaGlsZCIsInN0ZG91dCIsIm9uIiwiZGF0YSIsInRvU3RyaW5nIiwiUHJvbWlzZSIsImNvZGUiLCJOT19FWEVDVVRBQkxFIiwiY3R4IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJpc0NMSUtpdEV4dGVuc2lvbiIsImNhbWVsQ2FzZSIsImRlZmF1bHRDb21tYW5kIiwicmVtb3RlSGVscCIsInRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cyIsInZlcnNpb24iLCJpbml0IiwiYmFubmVyIiwiY29tbWFuZHMiLCJleHRlbnNpb25zIiwib3B0aW9ucyIsInBhcmVudCIsInRpdGxlIiwidmVyc2lvbk9wdGlvbiIsImxvb2t1cCIsImxvbmciLCJjYWxsYmFjayIsImV4aXRDb2RlIiwib3B0cyIsIm5leHQiLCJwYXJzZXIiLCJoZWxwQ29tbWFuZCIsInNjaGVtYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBLEdBQUY7QUFBT0MsRUFBQUE7QUFBUCxJQUFnQixvQkFBTSxtQkFBTixDQUF0QjtBQUNBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFnQkMsZUFBTUMsTUFBNUI7QUFFQTs7Ozs7O0FBS2UsTUFBTUMsU0FBTixTQUF3QkMsZ0JBQXhCLENBQWdDO0FBQzlDOzs7Ozs7QUFPQTs7Ozs7Ozs7Ozs7OztBQWFBQyxFQUFBQSxXQUFXLENBQUNDLFlBQUQsRUFBZUMsTUFBZixFQUF1QjtBQUNqQyxRQUFJQyxJQUFJLEdBQUcsSUFBWDs7QUFFQSxRQUFJLE9BQU9GLFlBQVAsS0FBd0IsUUFBNUIsRUFBc0M7QUFDckNFLE1BQUFBLElBQUksR0FBR0YsWUFBUDs7QUFDQSxVQUFJLENBQUNDLE1BQUwsRUFBYTtBQUNaQSxRQUFBQSxNQUFNLEdBQUcsRUFBVDtBQUNBO0FBQ0QsS0FMRCxNQUtPLElBQUlELFlBQVksSUFBSSxPQUFPQSxZQUFQLEtBQXdCLFFBQTVDLEVBQXNEO0FBQzVELE9BQUM7QUFBRUUsUUFBQUE7QUFBRixVQUFXRCxNQUFNLEdBQUdELFlBQXJCO0FBQ0E7O0FBRUQsUUFBSSxDQUFDRSxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNQyxnQkFBRUMsZ0JBQUYsQ0FBbUIs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QUF3Q3lDLE1BQXhDLENBQStDakMsS0FBL0MsQ0FBc0QsR0FBRWdELE9BQVEsSUFBaEU7QUFDQVksWUFBQUEsUUFBUSxDQUFDLENBQUQsQ0FBUjtBQUNBLG1CQUFPLEtBQVA7QUFDQTtBQUNELFNBVkQ7QUFXQTs7QUFFRCxVQUFJLE9BQU9wQixHQUFHLENBQUN0RSxNQUFYLEtBQXNCLFVBQTFCLEVBQXNDO0FBQ3JDLGFBQUtBLE1BQUwsR0FBY3NFLEdBQUcsQ0FBQ3RFLE1BQWxCO0FBQ0EsT0FGRCxNQUVPO0FBQ04sYUFBS0EsTUFBTCxHQUFjNkYsTUFBTSxJQUFJO0FBQ3ZCLGNBQUksS0FBS2xCLGNBQUwsS0FBd0IsTUFBeEIsSUFBa0MsQ0FBQyxLQUFLckQsR0FBTCxDQUFTLE1BQVQsQ0FBdkMsRUFBeUQ7QUFDeEQsa0JBQU1lLEdBQUcsR0FBRyxLQUFLc0MsY0FBTCxJQUF1QixLQUFLTSxRQUFMLENBQWMsS0FBS04sY0FBbkIsQ0FBbkM7O0FBQ0EsZ0JBQUl0QyxHQUFKLEVBQVM7QUFDUixxQkFBT0EsR0FBRyxDQUFDckMsTUFBSixDQUFXNkYsTUFBWCxDQUFQO0FBQ0E7QUFDRDs7QUFDRCxpQkFBT0MsY0FBWTlGLE1BQVosQ0FBbUI2RixNQUFuQixDQUFQO0FBQ0EsU0FSRDtBQVNBO0FBQ0Q7QUFDRDtBQUVEOzs7Ozs7OztBQU1BRSxFQUFBQSxNQUFNLEdBQUc7QUFDUixXQUFPLEVBQ04sR0FBRyxNQUFNQSxNQURIO0FBRU54RyxNQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFGTCxLQUFQO0FBSUE7O0FBN1M2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tYW5kIGZyb20gJy4vY29tbWFuZCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnLi4vbGliL2RlYnVnJztcbmltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBoZWxwQ29tbWFuZCBmcm9tICcuLi9jb21tYW5kcy9oZWxwJztcbmltcG9ydCBfcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgZGVjbGFyZUNMSUtpdENsYXNzLCBmaWxlbmFtZSwgZmluZFBhY2thZ2UsIGlzRXhlY3V0YWJsZSB9IGZyb20gJy4uL2xpYi91dGlsJztcbmltcG9ydCB7IHNwYXduLCBzcGF3blN5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcblxuY29uc3QgeyBsb2csIHdhcm4gfSA9IGRlYnVnKCdjbGkta2l0OmV4dGVuc2lvbicpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IGRlYnVnLnN0eWxlcztcblxuLyoqXG4gKiBEZWZpbmVzIGEgbmFtZXNwYWNlIHRoYXQgd3JhcHMgYW4gZXh0ZXJuYWwgcHJvZ3JhbSBvciBzY3JpcHQuXG4gKlxuICogQGV4dGVuZHMge0NvbW1hbmR9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4dGVuc2lvbiBleHRlbmRzIENvbW1hbmQge1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBpZiB0aGlzIGV4dGVuc2lvbiBpcyBhIGNsaS1raXQgZXh0ZW5zaW9uLiBJdCBzaGFsbCByZW1haW4gYGZhbHNlYCBmb3IgbmF0aXZlXG5cdCAqIGJpbmFyaWVzIGFuZCBub24tY2xpLWtpdCBDTEkncy5cblx0ICogQHR5cGUge0Jvb2xlYW59XG5cdCAqL1xuXHRpc0NMSUtpdEV4dGVuc2lvbiA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBEZXRlY3RzIHRoZSBleHRlbnNpb24gZGVmaW5lZCBpbiB0aGUgc3BlY2lmaWVkIHBhdGggYW5kIGluaXRpYWxpemVzIGl0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IHBhdGhPclBhcmFtcyAtIFRoZSBwYXRoIHRvIHRoZSBleHRlbnNpb24gb3IgYSBwYXJhbXMgb2JqZWN0LiBJZiB0aGVcblx0ICogcGF0aCBpcyBhIE5vZGUuanMgcGFja2FnZSB3aXRoIGEgYHBhY2thZ2UuanNvbmAgY29udGFpbmluZyBhIGBcImNsaS1raXRcImAgcHJvcGVydHksIGl0IHdpbGxcblx0ICogbWVyZ2UgdGhlIGV4dGVybmFsIGNsaS1raXQgY29udGV4dCB0cmVlIGludG8gdGhpcyBuYW1lc3BhY2UuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSAtIFZhcmlvdXMgcGFyYW1ldGVycyB3aGVuIGBleHRlbnNpb25QYXRoYCBpcyBhIGBTdHJpbmdgLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5uYW1lXSAtIFRoZSBleHRlbnNpb24gbmFtZS4gSWYgbm90IHNldCwgaXQgd2lsbCBsb2FkIGl0IGZyb20gdGhlXG5cdCAqIGV4dGVuc2lvbidzIGBwYWNrYWdlLmpzb25gIG9yIHRoZSBmaWxlbmFtZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMucGF0aF0gLSBUaGUgcGF0aCB0byBhbiBleGVjdXRhYmxlLCBhIEphdmFTY3JpcHQgZmlsZSwgb3IgTm9kZS5qc1xuXHQgKiBwYWNrYWdlLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3IocGF0aE9yUGFyYW1zLCBwYXJhbXMpIHtcblx0XHRsZXQgcGF0aCA9IG51bGw7XG5cblx0XHRpZiAodHlwZW9mIHBhdGhPclBhcmFtcyA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHBhdGggPSBwYXRoT3JQYXJhbXM7XG5cdFx0XHRpZiAoIXBhcmFtcykge1xuXHRcdFx0XHRwYXJhbXMgPSB7fTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHBhdGhPclBhcmFtcyAmJiB0eXBlb2YgcGF0aE9yUGFyYW1zID09PSAnb2JqZWN0Jykge1xuXHRcdFx0KHsgcGF0aCB9ID0gcGFyYW1zID0gcGF0aE9yUGFyYW1zKTtcblx0XHR9XG5cblx0XHRpZiAoIXBhdGggfHwgdHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGFuIGV4dGVuc2lvbiBwYXRoIG9yIHBhcmFtcyBvYmplY3QnLCB7IG5hbWU6ICdwYXRoT3JQYXJhbXMnLCBzY29wZTogJ0V4dGVuc2lvbi5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwYXRoT3JQYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGV4dGVuc2lvbiBwYXJhbXMgdG8gYmUgYW4gb2JqZWN0IG9yIENvbnRleHQnLCB7IG5hbWU6ICdwYXJhbXMnLCBzY29wZTogJ0V4dGVuc2lvbi5jb25zdHJ1Y3RvcicsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0bGV0IHsgbmFtZSB9ID0gcGFyYW1zO1xuXHRcdGxldCBlcnI7XG5cdFx0bGV0IGV4ZTtcblx0XHRsZXQgcGtnO1xuXG5cdFx0Ly8gd2UgYWx3YXlzIGltcGxlbWVudCBvdXIgb3duIGFjdGlvblxuXHRcdGRlbGV0ZSBwYXJhbXMuYWN0aW9uO1xuXG5cdFx0Ly8gd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBleHRlbnNpb24gaXMgYSBiaW5hcnkgb3IgaWYgaXQncyBhIE5vZGUgcGFja2FnZVxuXHRcdHRyeSB7XG5cdFx0XHRleGUgPSBpc0V4ZWN1dGFibGUocGF0aCk7XG5cdFx0XHRpZiAoIW5hbWUpIHtcblx0XHRcdFx0bmFtZSA9IGZpbGVuYW1lKGV4ZVswXSk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Ly8gbWF5YmUgYSBOb2RlIHBhY2thZ2U/XG5cdFx0XHR0cnkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHBrZyA9IGZpbmRQYWNrYWdlKHBhdGgpO1xuXHRcdFx0XHRcdGlmICghcGtnLnJvb3QpIHtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdHRocm93IEUuSU5WQUxJRF9FWFRFTlNJT04oYEludmFsaWQgZXh0ZW5zaW9uOiBVbmFibGUgdG8gZmluZCBleGVjdXRhYmxlLCBzY3JpcHQsIG9yIHBhY2thZ2U6ICR7dHlwZW9mIHBhdGggPT09ICdzdHJpbmcnID8gYFwiJHtwYXRofVwiYCA6IEpTT04uc3RyaW5naWZ5KHBhdGgpfWApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFwa2cubWFpbikge1xuXHRcdFx0XHRcdHRocm93IEUuSU5WQUxJRF9FWFRFTlNJT04oYEludmFsaWQgZXh0ZW5zaW9uOiBVbmFibGUgdG8gZmluZCBleHRlbnNpb24ncyBtYWluIGZpbGU6ICR7dHlwZW9mIHBhdGggPT09ICdzdHJpbmcnID8gYFwiJHtwYXRofVwiYCA6IEpTT04uc3RyaW5naWZ5KHBhdGgpfWApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFwYXJhbXMuZGVzYykge1xuXHRcdFx0XHRcdHBhcmFtcy5kZXNjID0gcGtnLmpzb24uZGVzY3JpcHRpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIW5hbWUpIHtcblx0XHRcdFx0XHRuYW1lID0gcGtnLmpzb24ubmFtZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGluaXQgdGhlIGFsaWFzZXMgd2l0aCBhbnkgYWxpYXNlcyBmcm9tIHRoZSBwYWNrYWdlLmpzb25cblx0XHRcdFx0cGFyYW1zLmFsaWFzZXMgPSBBcnJheS5pc0FycmF5KHBrZy5qc29uLmFsaWFzZXMpID8gcGtnLmpzb24uYWxpYXNlcyA6IFtdO1xuXG5cdFx0XHRcdC8vIGlmIHRoZSBuYW1lIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBvbmUgaW4gdGhlIHBhY2thZ2UuanNvbiwgYWRkIGl0IHRvIHRoZSBhbGlhc2VzXG5cdFx0XHRcdGlmIChwYXJhbXMubmFtZSAmJiBwYXJhbXMubmFtZSAhPT0gcGtnLmpzb24ubmFtZSAmJiAhcGFyYW1zLmFsaWFzZXMuaW5jbHVkZXMocGFyYW1zLm5hbWUpKSB7XG5cdFx0XHRcdFx0cGFyYW1zLmFsaWFzZXMucHVzaChwYXJhbXMubmFtZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBpZiB0aGUgcGFja2FnZSBoYXMgYSBiaW4gc2NyaXB0IHRoYXQgbWF0Y2hlcyB0aGUgcGFja2FnZSBuYW1lLCB0aGVuIGFkZCBhbnkgb3RoZXJcblx0XHRcdFx0Ly8gYmluIG5hbWUgdGhhdCBhbGlhc2VzIHRoZSBwYWNrYWdlIG5hbWVkIGJpblxuXHRcdFx0XHRpZiAocGtnLmpzb24uYmluKSB7XG5cdFx0XHRcdFx0Y29uc3QgcHJpbWFyeSA9IHBrZy5qc29uLmJpbltwa2cuanNvbi5uYW1lXTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IFsgbmFtZSwgYmluIF0gb2YgT2JqZWN0LmVudHJpZXMocGtnLmpzb24uYmluKSkge1xuXHRcdFx0XHRcdFx0aWYgKGJpbiA9PT0gcHJpbWFyeSAmJiAhcGFyYW1zLmFsaWFzZXMuaW5jbHVkZXMobmFtZSkpIHtcblx0XHRcdFx0XHRcdFx0cGFyYW1zLmFsaWFzZXMucHVzaChuYW1lKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0ZXJyID0gZTtcblx0XHRcdFx0d2FybihlcnIubWVzc2FnZSk7XG5cdFx0XHRcdHdhcm4oJ0ZvdW5kIGJhZCBleHRlbnNpb24sIGNyZWF0aW5nIGVycm9yIGFjdGlvbicpO1xuXG5cdFx0XHRcdHBhcmFtcy5hY3Rpb24gPSAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgeyBzdGRlcnIgfSA9IHRoaXMuZ2V0KCd0ZXJtaW5hbCcpO1xuXHRcdFx0XHRcdGlmIChlcnIpIHtcblx0XHRcdFx0XHRcdGxldCB7IHN0YWNrIH0gPSBlcnI7XG5cdFx0XHRcdFx0XHRjb25zdCBwID0gc3RhY2suaW5kZXhPZignXFxuXFxuJyk7XG5cdFx0XHRcdFx0XHRpZiAocCAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0c3RhY2sgPSBzdGFjay5zdWJzdHJpbmcoMCwgcCkudHJpbSgpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCBsaW5lIG9mIHN0YWNrLnNwbGl0KCdcXG4nKSkge1xuXHRcdFx0XHRcdFx0XHRzdGRlcnIud3JpdGUoYCAgJHtsaW5lfVxcbmApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdGRlcnIud3JpdGUoYEludmFsaWQgZXh0ZW5zaW9uOiAke3BrZy5qc29uLm5hbWV9XFxuYCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHN1cGVyKG5hbWUgfHwgZmlsZW5hbWUocGF0aCksIHBhcmFtcyk7XG5cdFx0ZGVjbGFyZUNMSUtpdENsYXNzKHRoaXMsICdFeHRlbnNpb24nKTtcblxuXHRcdHRoaXMuZXJyICAgID0gZXJyO1xuXHRcdHRoaXMuZXhlICAgID0gZXhlO1xuXHRcdHRoaXMucGF0aCAgID0gcGF0aDtcblx0XHR0aGlzLnBrZyAgICA9IHBrZztcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyB0aGUgZXh0ZW5zaW9uLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvYWQoKSB7XG5cdFx0aWYgKHRoaXMubG9hZGVkKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMubG9hZGVkID0gdHJ1ZTtcblxuXHRcdGxldCB7IGV4ZSwgcGtnIH0gPSB0aGlzO1xuXG5cdFx0Ly8gaWYgd2UgaGF2ZSBhIEphdmFTY3JpcHQgZmlsZSBvciBOb2RlIHBhY2thZ2UsIGJ1dCBub3QgYSBjbGkta2l0IGVuYWJsZWQgb25lLCB0aGVuIHdpcmVcblx0XHQvLyBpdCB1cCB0byBzcGF3biBOb2RlXG5cdFx0aWYgKHBrZyAmJiBwa2cucm9vdCAmJiAhcGtnLmNsaWtpdCkge1xuXHRcdFx0ZXhlID0gdGhpcy5leGUgPSBbIHByb2Nlc3MuZXhlY1BhdGgsIHBrZy5tYWluIF07XG5cdFx0fVxuXG5cdFx0aWYgKGV4ZSkge1xuXHRcdFx0dGhpcy5hY3Rpb24gPSBhc3luYyAoeyBfX2FyZ3YsIGNtZCwgdGVybWluYWwgfSkgPT4ge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmV4ZSkpIHtcblx0XHRcdFx0XHRjb25zdCBleGUgPSB0aGlzLmV4ZVswXTtcblx0XHRcdFx0XHRjb25zdCBhcmdzID0gdGhpcy5leGUuc2xpY2UoMSk7XG5cdFx0XHRcdFx0Y29uc3QgcCA9IF9fYXJndi5maW5kSW5kZXgoYXJnID0+IGFyZyAmJiBhcmcudHlwZSA9PT0gJ2V4dGVuc2lvbicgJiYgYXJnLmV4dGVuc2lvbiA9PT0gY21kKTtcblxuXHRcdFx0XHRcdGlmIChwICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHAgKyAxLCBsZW4gPSBfX2FyZ3YubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0YXJncy5wdXNoLmFwcGx5KGFyZ3MsIF9fYXJndltpXS5pbnB1dCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bGV0IHNwYXduRm4gPSBzcGF3bjtcblxuXHRcdFx0XHRcdC8vIGNoZWNrIGlmIG5vZGUtcHR5IGV4aXN0cyBhbmQgdGhhdCBpdCdzIGNvbXBpbGVkIGZvciB0aGlzIHZlcnNpb24gb2YgTm9kZS5qc1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRsZXQgY3dkID0gX3BhdGguZGlybmFtZShyZXF1aXJlLnJlc29sdmUoJ25vZGUtcHR5LXByZWJ1aWx0LW11bHRpYXJjaCcpKTtcblx0XHRcdFx0XHRcdGZvciAobGV0IGxhc3Q7IGN3ZCAhPT0gbGFzdCAmJiAhZnMuZXhpc3RzU3luYyhfcGF0aC5qb2luKGN3ZCwgJ3BhY2thZ2UuanNvbicpKTsgbGFzdCA9IGN3ZCwgY3dkID0gX3BhdGguZGlybmFtZShjd2QpKSB7fVxuXG5cdFx0XHRcdFx0XHRjb25zdCB7IHN0YXR1cyB9ID0gc3Bhd25TeW5jKHByb2Nlc3MuZXhlY1BhdGgsIFtcblx0XHRcdFx0XHRcdFx0Jy1lJyxcblx0XHRcdFx0XHRcdFx0J3RyeSB7IHJlcXVpcmUoXFwnbm9kZS1wdHktcHJlYnVpbHQtbXVsdGlhcmNoXFwnKSB9IGNhdGNoIChlKSB7IHByb2Nlc3MuZXhpdChlLm1lc3NhZ2UuaW5jbHVkZXMoXFwnTk9ERV9NT0RVTEVfVkVSU0lPTlxcJykgPyAyIDogMSkgfSdcblx0XHRcdFx0XHRcdF0sIHsgY3dkIH0pO1xuXG5cdFx0XHRcdFx0XHRpZiAoc3RhdHVzICE9PSAxKSB7XG5cdFx0XHRcdFx0XHRcdC8vIG5vZGUtcHR5IGV4aXN0cyFcblx0XHRcdFx0XHRcdFx0aWYgKHN0YXR1cyA9PT0gMikge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGJ1dCBpdCdzIHRoZSB3cm9uZyBOb2RlIHZlcnNpb24sIHJlYnVpbGRcblx0XHRcdFx0XHRcdFx0XHR3YXJuKGBub2RlLXB0eSBidWlsdCBmb3IgZGlmZmVyZW50IE5vZGUgdmVyc2lvbiwgcmVidWlsZGluZzogJHtoaWdobGlnaHQoY3dkKX1gKTtcblx0XHRcdFx0XHRcdFx0XHRzcGF3blN5bmMoJ25wbScsIFsgJ3JlYnVpbGQnIF0sIHsgY3dkIH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHNwYXduRm4gPSByZXF1aXJlKCdub2RlLXB0eS1wcmVidWlsdC1tdWx0aWFyY2gnKS5zcGF3bjtcblx0XHRcdFx0XHRcdH1cblxuXG5cdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0Ly8gbm90IGluc3RhbGxlZFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIHNwYXduIHRoZSBwcm9jZXNzXG5cdFx0XHRcdFx0bG9nKGBSdW5uaW5nOiAke2hpZ2hsaWdodChgJHtleGV9ICR7YXJncy5qb2luKCcgJyl9YCl9YCk7XG5cdFx0XHRcdFx0Y29uc3QgY2hpbGQgPSBzcGF3bkZuKGV4ZSwgYXJncyk7XG5cdFx0XHRcdFx0aWYgKHNwYXduRm4gPT09IHNwYXduKSB7XG5cdFx0XHRcdFx0XHQvLyBpZiB3ZSdyZSB1c2luZyB0aGUgYnVpbHQtaW4gc3Bhd24sIHRoZW4gd2UgbmVlZCB0byBtYW51YWxseSBzdHJlYW0gdGhlXG5cdFx0XHRcdFx0XHQvLyBzdGRpbyBvdXRwdXQgaW5zdGVhZCBvZiBwaXBlKCkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRoZSBjaGlsZCBwcm9jZXNzXG5cdFx0XHRcdFx0XHQvLyB0byBjbG9zZSB0aGUgdGVybWluYWwgc3RyZWFtc1xuXHRcdFx0XHRcdFx0Y2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgZGF0YSA9PiB0ZXJtaW5hbC5zdGRvdXQud3JpdGUoZGF0YS50b1N0cmluZygpKSk7XG5cdFx0XHRcdFx0XHRjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCBkYXRhID0+IHRlcm1pbmFsLnN0ZGVyci53cml0ZShkYXRhLnRvU3RyaW5nKCkpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2hpbGQub24oJ2RhdGEnLCB0ZXJtaW5hbC5zdGRvdXQud3JpdGUpO1xuXHRcdFx0XHRcdGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gY2hpbGQub24oJ2Nsb3NlJywgKGNvZGUgPSAwKSA9PiByZXNvbHZlKHsgY29kZSB9KSkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRocm93IEUuTk9fRVhFQ1VUQUJMRShgRXh0ZW5zaW9uIFwiJHt0aGlzLm5hbWV9XCIgaGFzIG5vIGV4ZWN1dGFibGUhYCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHR9IGVsc2UgaWYgKHBrZyAmJiBwa2cuY2xpa2l0KSB7XG5cdFx0XHQvLyB3ZSBoYXZlIGEgTm9kZSBwYWNrYWdlLCBzbyByZXF1aXJlIGl0IGFuZCBzZWUgd2hhdCB3ZSBoYXZlXG5cdFx0XHRsb2coYFJlcXVpcmluZyAke2hpZ2hsaWdodChwa2cubWFpbil9YCk7XG5cblx0XHRcdGxldCBjdHg7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjdHggPSByZXF1aXJlKHBrZy5tYWluKTtcblx0XHRcdFx0aWYgKCFjdHggfHwgKHR5cGVvZiBjdHggIT09ICdvYmplY3QnICYmIHR5cGVvZiBjdHggIT09ICdmdW5jdGlvbicpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdFeHRlbnNpb24gbXVzdCBleHBvcnQgYW4gb2JqZWN0IG9yIGZ1bmN0aW9uJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfRVhURU5TSU9OKGBCYWQgZXh0ZW5zaW9uIFwiJHt0aGlzLm5hbWV9XCI6ICR7ZXJyLm1lc3NhZ2V9YCwgeyBuYW1lOiB0aGlzLm5hbWUsIHBhdGg6IHRoaXMsIHNjb3BlOiAnRXh0ZW5zaW9uLmxvYWQnLCB2YWx1ZTogZXJyIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBpZiB0aGlzIGlzIGFuIEVTNiBtb2R1bGUsIGdyYWIgdGhlIGRlZmF1bHQgZXhwb3J0XG5cdFx0XHRpZiAoY3R4Ll9fZXNNb2R1bGUpIHtcblx0XHRcdFx0Y3R4ID0gY3R4LmRlZmF1bHQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGlmIHRoZSBleHBvcnQgd2FzIGEgZnVuY3Rpb24sIGNhbGwgaXQgbm93IHRvIGdldCBpdHMgQ0xJIGRlZmluaXRpb25cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgY3R4ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y3R4ID0gYXdhaXQgY3R4KHRoaXMpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFjdHggfHwgdHlwZW9mIGN0eCAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0V4dGVuc2lvbiBkb2VzIG5vdCByZXNvbHZlIGFuIG9iamVjdCcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0VYVEVOU0lPTihgQmFkIGV4dGVuc2lvbiBcIiR7dGhpcy5uYW1lfVwiOiAke2Vyci5tZXNzYWdlfWAsIHsgbmFtZTogdGhpcy5uYW1lLCBwYXRoOiB0aGlzLCBzY29wZTogJ0V4dGVuc2lvbi5sb2FkJywgdmFsdWU6IGVyciB9KTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5pc0NMSUtpdEV4dGVuc2lvbiA9IHRydWU7XG5cblx0XHRcdHRoaXMuYWxpYXNlcyAgICAgICAgPSBjdHguYWxpYXNlcztcblx0XHRcdHRoaXMuY2FtZWxDYXNlICAgICAgPSBjdHguY2FtZWxDYXNlO1xuXHRcdFx0dGhpcy5kZWZhdWx0Q29tbWFuZCA9IGN0eC5kZWZhdWx0Q29tbWFuZDtcblx0XHRcdHRoaXMucmVtb3RlSGVscCAgICAgPSBjdHgucmVtb3RlSGVscDtcblx0XHRcdHRoaXMudHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzID0gY3R4LnRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cztcblx0XHRcdHRoaXMudmVyc2lvbiAgICAgICAgPSBjdHgudmVyc2lvbjtcblxuXHRcdFx0dGhpcy5pbml0KHtcblx0XHRcdFx0YXJnczogICAgICAgY3R4LmFyZ3MsXG5cdFx0XHRcdGJhbm5lcjogICAgIGN0eC5iYW5uZXIsXG5cdFx0XHRcdGNvbW1hbmRzOiAgIGN0eC5jb21tYW5kcyxcblx0XHRcdFx0ZGVzYzogICAgICAgdGhpcy5kZXNjIHx8IGN0eC5kZXNjLFxuXHRcdFx0XHRleHRlbnNpb25zOiBjdHguZXh0ZW5zaW9ucyxcblx0XHRcdFx0bmFtZTogICAgICAgdGhpcy5uYW1lIHx8IGN0eC5uYW1lLFxuXHRcdFx0XHRvcHRpb25zOiAgICBjdHgub3B0aW9ucyxcblx0XHRcdFx0cGFyZW50OiAgICAgdGhpcy5wYXJlbnQsXG5cdFx0XHRcdHRpdGxlOiAgICAgIGN0eC50aXRsZSAhPT0gJ0dsb2JhbCcgJiYgY3R4LnRpdGxlIHx8IHRoaXMubmFtZVxuXHRcdFx0fSk7XG5cblx0XHRcdGNvbnN0IHZlcnNpb25PcHRpb24gPSB0aGlzLnZlcnNpb24gJiYgdGhpcy5sb29rdXAubG9uZy52ZXJzaW9uO1xuXHRcdFx0aWYgKHZlcnNpb25PcHRpb24gJiYgdHlwZW9mIHZlcnNpb25PcHRpb24uY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0dmVyc2lvbk9wdGlvbi5jYWxsYmFjayA9IGFzeW5jICh7IGV4aXRDb2RlLCBvcHRzLCBuZXh0IH0pID0+IHtcblx0XHRcdFx0XHRpZiAoYXdhaXQgbmV4dCgpKSB7XG5cdFx0XHRcdFx0XHRsZXQgdmVyc2lvbiA9IHRoaXMudmVyc2lvbjtcblx0XHRcdFx0XHRcdGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uID0gYXdhaXQgdmVyc2lvbihvcHRzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdChvcHRzLnRlcm1pbmFsIHx8IHRoaXMuZ2V0KCd0ZXJtaW5hbCcpKS5zdGRvdXQud3JpdGUoYCR7dmVyc2lvbn1cXG5gKTtcblx0XHRcdFx0XHRcdGV4aXRDb2RlKDApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHR5cGVvZiBjdHguYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdHRoaXMuYWN0aW9uID0gY3R4LmFjdGlvbjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuYWN0aW9uID0gcGFyc2VyID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5kZWZhdWx0Q29tbWFuZCAhPT0gJ2hlbHAnIHx8ICF0aGlzLmdldCgnaGVscCcpKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjbWQgPSB0aGlzLmRlZmF1bHRDb21tYW5kICYmIHRoaXMuY29tbWFuZHNbdGhpcy5kZWZhdWx0Q29tbWFuZF07XG5cdFx0XHRcdFx0XHRpZiAoY21kKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBjbWQuYWN0aW9uKHBhcnNlcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBoZWxwQ29tbWFuZC5hY3Rpb24ocGFyc2VyKTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgc2NoZW1hIGZvciB0aGlzIGV4dGVuc2lvbiBhbmQgYWxsIGNoaWxkIGNvbnRleHRzLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2NoZW1hKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5zdXBlci5zY2hlbWEsXG5cdFx0XHRwYXRoOiB0aGlzLnBhdGhcblx0XHR9O1xuXHR9XG59XG4iXSwiZmlsZSI6InBhcnNlci9leHRlbnNpb24uanMifQ== |
{ | ||
"name": "cli-kit", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"description": "Everything you need to create awesome command line interfaces", | ||
@@ -45,3 +45,3 @@ "main": "./dist/index.js", | ||
"fs-extra": "^9.0.0", | ||
"hook-emitter": "^4.0.2", | ||
"hook-emitter": "^4.1.0", | ||
"lodash.camelcase": "^4.3.0", | ||
@@ -51,3 +51,3 @@ "pkg-dir": "^4.2.0", | ||
"semver": "^7.3.2", | ||
"snooplogg": "^2.3.3", | ||
"snooplogg": "^3.0.0", | ||
"source-map-support": "^0.5.19", | ||
@@ -71,3 +71,3 @@ "which": "^2.0.2", | ||
"esdoc-standard-plugin": "^1.0.0", | ||
"eslint": "^6.8.0", | ||
"eslint": "^7.0.0", | ||
"eslint-plugin-chai-expect": "^2.1.0", | ||
@@ -74,0 +74,0 @@ "eslint-plugin-mocha": "^6.3.0", |
Sorry, the diff of this file is too big to display
556986
6012
+ Addedchalk@4.1.2(transitive)
+ Addedsnooplogg@3.0.2(transitive)
+ Addedsupports-color@8.1.1(transitive)
- Removedchalk@3.0.0(transitive)
- Removedsnooplogg@2.3.3(transitive)
Updatedhook-emitter@^4.1.0
Updatedsnooplogg@^3.0.0