New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

cli-kit

Package Overview
Dependencies
Maintainers
1
Versions
107
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cli-kit - npm Package Compare versions

Comparing version 1.0.1 to 1.1.0

CHANGELOG.md

15

dist/lib/ansi.js

@@ -9,2 +9,5 @@ "use strict";

exports.scroll = exports.esc = exports.erase = exports.custom = exports.cursor = exports.clear = exports.bel = void 0;
var _util = require("./util");
const bel = '\x07';

@@ -70,4 +73,12 @@ exports.bel = bel;

exec(command) {
return `\x1b]666;Exec=${(0, _util.encode)(command)}\x07`;
},
exit(code) {
return `\x1b]666;Exit=${code}\x07`;
},
keypress(key) {
return `\x1b]666;Keypress=${(0, _util.encode)(key)}\x07`;
}

@@ -78,3 +89,5 @@

custom.echo.re = /^\x1b\]666;Echo=(\w+)\x07$/;
custom.exec.re = /^\x1b\]666;Exec=(.+)\x07$/;
custom.exit.re = /^\x1b\]666;Exit=(\d+)\x07$/;
custom.keypress.re = /^\x1b\]666;Keypress=(.+)\x07$/;
const erase = {

@@ -131,2 +144,2 @@ down: '\x1b[J',

}
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9hbnNpLmpzIl0sIm5hbWVzIjpbImJlbCIsImNsZWFyIiwiY3Vyc29yIiwic2hvdyIsImhpZGUiLCJzYXZlIiwicmVzdG9yZSIsImdldCIsImhvbWUiLCJsZWZ0IiwiZG93biIsIm4iLCJ1cCIsImJhY2t3YXJkIiwiZm9yd2FyZCIsIm1vdmUiLCJkeCIsImR5IiwicyIsInRvIiwieCIsInkiLCJwb3NpdGlvbiIsIm5leHQiLCJyZXBlYXQiLCJNYXRoIiwiYWJzIiwicHJldiIsImN1c3RvbSIsImVjaG8iLCJlbmFibGVkIiwiZXhpdCIsImNvZGUiLCJyZSIsImVyYXNlIiwibGluZSIsImxpbmVzIiwiY291bnQiLCJzY3JlZW4iLCJ0b0VuZCIsInRvU3RhcnQiLCJlc2MiLCJzY3JvbGwiLCJsaW5rIiwidGV4dCIsInVybCIsInN0cmlwUmVnRXhwIiwic3RyaXAiLCJzdHIiLCJTdHJpbmciLCJyZXBsYWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFPLE1BQU1BLEdBQUcsR0FBRyxNQUFaOztBQUVBLE1BQU1DLEtBQUssR0FBRyxPQUFkOztBQUVBLE1BQU1DLE1BQU0sR0FBRztBQUNyQkMsRUFBQUEsSUFBSSxFQUFLLFdBRFk7QUFFckJDLEVBQUFBLElBQUksRUFBSyxXQUZZO0FBR3JCQyxFQUFBQSxJQUFJLEVBQUssT0FIWTtBQUlyQkMsRUFBQUEsT0FBTyxFQUFFLE9BSlk7QUFLckJDLEVBQUFBLEdBQUcsRUFBTSxTQUxZO0FBTXJCQyxFQUFBQSxJQUFJLEVBQUssUUFOWTtBQU9yQkMsRUFBQUEsSUFBSSxFQUFLLFFBUFk7O0FBU3JCQyxFQUFBQSxJQUFJLENBQUNDLENBQUMsR0FBRyxDQUFMLEVBQVM7QUFBRSxXQUFPQSxDQUFDLEdBQUksUUFBT0EsQ0FBRSxHQUFiLEdBQWtCLEVBQTFCO0FBQStCLEdBVHpCOztBQVVyQkMsRUFBQUEsRUFBRSxDQUFDRCxDQUFDLEdBQUcsQ0FBTCxFQUFXO0FBQUUsV0FBT0EsQ0FBQyxHQUFJLFFBQU9BLENBQUUs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QixFQUFsQztBQUNBLEdBVG1COztBQVVwQjZCLEVBQUFBLE1BQU0sRUFBRyxTQVZXO0FBV3BCQyxFQUFBQSxLQUFLLEVBQUksUUFYVztBQVlwQkMsRUFBQUEsT0FBTyxFQUFFLFNBWlc7QUFhcEI1QixFQUFBQSxFQUFFLEVBQU87QUFiVyxDQUFkOztBQWdCQSxNQUFNNkIsR0FBRyxHQUFHLE9BQVo7O0FBRUEsTUFBTUMsTUFBTSxHQUFHO0FBQ3JCaEMsRUFBQUEsSUFBSSxFQUFFLFFBRGU7QUFFckJFLEVBQUFBLEVBQUUsRUFBSTtBQUZlLENBQWY7QUFLUDs7Ozs7Ozs7OztBQU9PLFNBQVMrQixJQUFULENBQWNDLElBQWQsRUFBb0JDLEdBQXBCLEVBQXlCO0FBQy9CLFNBQVEsV0FBVUEsR0FBRyxJQUFJRCxJQUFLLE9BQU1BLElBQUssY0FBekM7QUFDQTs7QUFFRCxNQUFNRSxXQUFXLEdBQUcsa0JBQXBCO0FBRUE7Ozs7Ozs7QUFNTyxTQUFTQyxLQUFULENBQWVDLEdBQUcsR0FBRyxFQUFyQixFQUF5QjtBQUMvQixTQUFPQyxNQUFNLENBQUNELEdBQUQsQ0FBTixDQUFZRSxPQUFaLENBQW9CSixXQUFwQixFQUFpQyxFQUFqQyxDQUFQO0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYmVsID0gJ1xceDA3JztcblxuZXhwb3J0IGNvbnN0IGNsZWFyID0gJ1xceDFiYyc7XG5cbmV4cG9ydCBjb25zdCBjdXJzb3IgPSB7XG5cdHNob3c6ICAgICdcXHgxYls/MjVoJyxcblx0aGlkZTogICAgJ1xceDFiWz8yNWwnLFxuXHRzYXZlOiAgICAnXFx4MWI3Jyxcblx0cmVzdG9yZTogJ1xceDFiOCcsXG5cdGdldDogICAgICdcXHgxYls2bicsXG5cdGhvbWU6ICAgICdcXHgxYltIJyxcblx0bGVmdDogICAgJ1xceDFiW0cnLFxuXG5cdGRvd24obiA9IDEpICB7IHJldHVybiBuID8gYFxceDFiWyR7bn1CYCA6ICcnOyB9LFxuXHR1cChuID0gMSkgICAgeyByZXR1cm4gbiA/IGBcXHgxYlske259QWAgOiAnJzsgfSxcblxuXHRiYWNrd2FyZChuID0gMSkgIHsgcmV0dXJuIG4gPyBgXFx4MWJbJHtufURgIDogJyc7IH0sXG5cdGZvcndhcmQobiA9IDEpIHsgcmV0dXJuIG4gPyBgXFx4MWJbJHtufUNgIDogJyc7IH0sXG5cblx0bW92ZShkeCwgZHkpIHtcblx0XHRsZXQgcyA9IGR4ID8gYFxceDFiWyR7ZHggPiAwID8gYCR7ZHh9Q2AgOiBgJHstZHh9RGB9YCA6ICcnO1xuXHRcdGlmIChkeSkge1xuXHRcdFx0cyArPSBgXFx4MWJbJHtkeSA+IDAgPyBgJHtkeX1CYCA6IGAkey1keX1BYH1gO1xuXHRcdH1cblx0XHRyZXR1cm4gcztcblx0fSxcblx0dG8oeCwgeSkge1xuXHRcdHJldHVybiB5ID8gYFxceDFiWyR7eSArIDF9OyR7eCArIDF9SGAgOiBgXFx4MWJbJHt4ICsgMX1HYDtcblx0fSxcblxuXHRwb3NpdGlvbjogL15cXHgxYlxcWyhcXGQrKTsoXFxkKylSJC8sXG5cblx0bmV4dChuID0gMSkgeyByZXR1cm4gIW4gPyAnJyA6IChuIDwgMCA/ICdcXHgxYltGJyA6ICdcXHgxYltFJykucmVwZWF0KE1hdGguYWJzKG4pKTsgfSxcblx0cHJldihuID0gMSkgeyByZXR1cm4gIW4gPyAnJyA6IChuID4gMCA/ICdcXHgxYltGJyA6ICdcXHgxYltFJykucmVwZWF0KE1hdGguYWJzKG4pKTsgfVxufTtcblxuZXhwb3J0IGNvbnN0IGN1c3RvbSA9IHtcblx0ZWNobyhlbmFibGVkKSB7XG5cdFx0cmV0dXJuIGBcXHgxYl02NjY7RWNobz0ke2VuYWJsZWQgPyAnb24nIDogJ29mZid9XFx4MDdgO1xuXHR9LFxuXHRleGl0KGNvZGUpIHtcblx0XHRyZXR1cm4gYFxceDFiXTY2NjtFeGl0PSR7Y29kZX1cXHgwN2A7XG5cdH1cbn07XG5cbmN1c3RvbS5lY2hvLnJlID0gL15cXHgxYlxcXTY2NjtFY2hvPShcXHcrKVxceDA3JC87XG5jdXN0b20uZXhpdC5yZSA9IC9eXFx4MWJcXF02NjY7RXhpdD0oXFxkKylcXHgwNyQvO1xuXG5leHBvcnQgY29uc3QgZXJhc2UgPSB7XG5cdGRvd246ICAgICdcXHgxYltKJyxcblx0bGluZTogICAgJ1xceDFiWzJLJyxcblx0bGluZXMoY291bnQgPSAwKSB7XG5cdFx0bGV0IHMgPSAnJztcblx0XHR3aGlsZSAoY291bnQgPiAwKSB7XG5cdFx0XHRzICs9IHRoaXMubGluZSArICgtLWNvdW50ID8gY3Vyc29yLnVwKCkgOiAnJyk7XG5cdFx0fVxuXHRcdHJldHVybiBzID8gYCR7c30ke2N1cnNvci5sZWZ0fWAgOiAnJztcblx0fSxcblx0c2NyZWVuOiAgJ1xceDFiWzJKJyxcblx0dG9FbmQ6ICAgJ1xceDFiW0snLFxuXHR0b1N0YXJ0OiAnXFx4MWJbMUsnLFxuXHR1cDogICAgICAnXFx4MWJbMUonXG59O1xuXG5leHBvcnQgY29uc3QgZXNjID0gJ1xceDFiWyc7XG5cbmV4cG9ydCBjb25zdCBzY3JvbGwgPSB7XG5cdGRvd246ICdcXHgxYltUJyxcblx0dXA6ICAgJ1xceDFiW1MnXG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBoeXBlcmxpbmsgZm9yIHJlbmRlcmluZyBpbiBhIHRlcm1pbmFsLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBbdGV4dF0gLSBUaGUgY2xpY2thYmxlIHRleHQgdG8gZGlzcGxheS5cbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgLSBUaGUgbGluayBVUkwuXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGluayh0ZXh0LCB1cmwpIHtcblx0cmV0dXJuIGBcXHgxYl04Ozske3VybCB8fCB0ZXh0fVxceDA3JHt0ZXh0fVxceDFiXTg7O1xceDA3YDtcbn1cblxuY29uc3Qgc3RyaXBSZWdFeHAgPSAvXFx4MWJcXFsoOz9cXGQrKSttL2c7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwgYW5zaSBjb250cm9sIHNlcXVlbmNlcyBmcm9tIHRoZSBzcGVjaWZpZWQgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgLSBUaGUgc3RyaW5nIHRvIHN0cmlwLlxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwKHN0ciA9ICcnKSB7XG5cdHJldHVybiBTdHJpbmcoc3RyKS5yZXBsYWNlKHN0cmlwUmVnRXhwLCAnJyk7XG59XG4iXSwiZmlsZSI6ImxpYi9hbnNpLmpzIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9hbnNpLmpzIl0sIm5hbWVzIjpbImJlbCIsImNsZWFyIiwiY3Vyc29yIiwic2hvdyIsImhpZGUiLCJzYXZlIiwicmVzdG9yZSIsImdldCIsImhvbWUiLCJsZWZ0IiwiZG93biIsIm4iLCJ1cCIsImJhY2t3YXJkIiwiZm9yd2FyZCIsIm1vdmUiLCJkeCIsImR5IiwicyIsInRvIiwieCIsInkiLCJwb3NpdGlvbiIsIm5leHQiLCJyZXBlYXQiLCJNYXRoIiwiYWJzIiwicHJldiIsImN1c3RvbSIsImVjaG8iLCJlbmFibGVkIiwiZXhlYyIsImNvbW1hbmQiLCJleGl0IiwiY29kZSIsImtleXByZXNzIiwia2V5IiwicmUiLCJlcmFzZSIsImxpbmUiLCJsaW5lcyIsImNvdW50Iiwic2NyZWVuIiwidG9FbmQiLCJ0b1N0YXJ0IiwiZXNjIiwic2Nyb2xsIiwibGluayIsInRleHQiLCJ1cmwiLCJzdHJpcFJlZ0V4cCIsInN0cmlwIiwic3RyIiwiU3RyaW5nIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRU8sTUFBTUEsR0FBRyxHQUFHLE1BQVo7O0FBRUEsTUFBTUMsS0FBSyxHQUFHLE9BQWQ7O0FBRUEsTUFBTUMsTUFBTSxHQUFHO0FBQ3JCQyxFQUFBQSxJQUFJLEVBQUssV0FEWTtBQUVyQkMsRUFBQUEsSUFBSSxFQUFLLFdBRlk7QUFHckJDLEVBQUFBLElBQUksRUFBSyxPQUhZO0FBSXJCQyxFQUFBQSxPQUFPLEVBQUUsT0FKWTtBQUtyQkMsRUFBQUEsR0FBRyxFQUFNLFNBTFk7QUFNckJDLEVBQUFBLElBQUksRUFBSyxRQU5ZO0FBT3JCQyxFQUFBQSxJQUFJLEVBQUssUUFQWTs7QUFTckJDLEVBQUFBLElBQUksQ0FBQ0MsQ0FBQyxHQUFHLENBQUwsRUFBUztBQUFFLFdBQU9BLENBQUMsR0FBSSxRQUFPQSxDQUFFLEdBQWIsR0FBa0IsRUFBMUI7QUFBK0IsR0FUekI7O0FBVXJCQyxFQUFBQSxFQUFFLENBQUNELENBQUMsR0FBRyxD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dCBjb25zdCBiZWwgPSAnXFx4MDcnO1xuXG5leHBvcnQgY29uc3QgY2xlYXIgPSAnXFx4MWJjJztcblxuZXhwb3J0IGNvbnN0IGN1cnNvciA9IHtcblx0c2hvdzogICAgJ1xceDFiWz8yNWgnLFxuXHRoaWRlOiAgICAnXFx4MWJbPzI1bCcsXG5cdHNhdmU6ICAgICdcXHgxYjcnLFxuXHRyZXN0b3JlOiAnXFx4MWI4Jyxcblx0Z2V0OiAgICAgJ1xceDFiWzZuJyxcblx0aG9tZTogICAgJ1xceDFiW0gnLFxuXHRsZWZ0OiAgICAnXFx4MWJbRycsXG5cblx0ZG93bihuID0gMSkgIHsgcmV0dXJuIG4gPyBgXFx4MWJbJHtufUJgIDogJyc7IH0sXG5cdHVwKG4gPSAxKSAgICB7IHJldHVybiBuID8gYFxceDFiWyR7bn1BYCA6ICcnOyB9LFxuXG5cdGJhY2t3YXJkKG4gPSAxKSAgeyByZXR1cm4gbiA/IGBcXHgxYlske259RGAgOiAnJzsgfSxcblx0Zm9yd2FyZChuID0gMSkgeyByZXR1cm4gbiA/IGBcXHgxYlske259Q2AgOiAnJzsgfSxcblxuXHRtb3ZlKGR4LCBkeSkge1xuXHRcdGxldCBzID0gZHggPyBgXFx4MWJbJHtkeCA+IDAgPyBgJHtkeH1DYCA6IGAkey1keH1EYH1gIDogJyc7XG5cdFx0aWYgKGR5KSB7XG5cdFx0XHRzICs9IGBcXHgxYlske2R5ID4gMCA/IGAke2R5fUJgIDogYCR7LWR5fUFgfWA7XG5cdFx0fVxuXHRcdHJldHVybiBzO1xuXHR9LFxuXHR0byh4LCB5KSB7XG5cdFx0cmV0dXJuIHkgPyBgXFx4MWJbJHt5ICsgMX07JHt4ICsgMX1IYCA6IGBcXHgxYlske3ggKyAxfUdgO1xuXHR9LFxuXG5cdHBvc2l0aW9uOiAvXlxceDFiXFxbKFxcZCspOyhcXGQrKVIkLyxcblxuXHRuZXh0KG4gPSAxKSB7IHJldHVybiAhbiA/ICcnIDogKG4gPCAwID8gJ1xceDFiW0YnIDogJ1xceDFiW0UnKS5yZXBlYXQoTWF0aC5hYnMobikpOyB9LFxuXHRwcmV2KG4gPSAxKSB7IHJldHVybiAhbiA/ICcnIDogKG4gPiAwID8gJ1xceDFiW0YnIDogJ1xceDFiW0UnKS5yZXBlYXQoTWF0aC5hYnMobikpOyB9XG59O1xuXG5leHBvcnQgY29uc3QgY3VzdG9tID0ge1xuXHRlY2hvKGVuYWJsZWQpIHtcblx0XHRyZXR1cm4gYFxceDFiXTY2NjtFY2hvPSR7ZW5hYmxlZCA/ICdvbicgOiAnb2ZmJ31cXHgwN2A7XG5cdH0sXG5cdGV4ZWMoY29tbWFuZCkge1xuXHRcdHJldHVybiBgXFx4MWJdNjY2O0V4ZWM9JHtlbmNvZGUoY29tbWFuZCl9XFx4MDdgO1xuXHR9LFxuXHRleGl0KGNvZGUpIHtcblx0XHRyZXR1cm4gYFxceDFiXTY2NjtFeGl0PSR7Y29kZX1cXHgwN2A7XG5cdH0sXG5cdGtleXByZXNzKGtleSkge1xuXHRcdHJldHVybiBgXFx4MWJdNjY2O0tleXByZXNzPSR7ZW5jb2RlKGtleSl9XFx4MDdgO1xuXHR9XG59O1xuXG5jdXN0b20uZWNoby5yZSA9IC9eXFx4MWJcXF02NjY7RWNobz0oXFx3KylcXHgwNyQvO1xuY3VzdG9tLmV4ZWMucmUgPSAvXlxceDFiXFxdNjY2O0V4ZWM9KC4rKVxceDA3JC87XG5jdXN0b20uZXhpdC5yZSA9IC9eXFx4MWJcXF02NjY7RXhpdD0oXFxkKylcXHgwNyQvO1xuY3VzdG9tLmtleXByZXNzLnJlID0gL15cXHgxYlxcXTY2NjtLZXlwcmVzcz0oLispXFx4MDckLztcblxuZXhwb3J0IGNvbnN0IGVyYXNlID0ge1xuXHRkb3duOiAgICAnXFx4MWJbSicsXG5cdGxpbmU6ICAgICdcXHgxYlsySycsXG5cdGxpbmVzKGNvdW50ID0gMCkge1xuXHRcdGxldCBzID0gJyc7XG5cdFx0d2hpbGUgKGNvdW50ID4gMCkge1xuXHRcdFx0cyArPSB0aGlzLmxpbmUgKyAoLS1jb3VudCA/IGN1cnNvci51cCgpIDogJycpO1xuXHRcdH1cblx0XHRyZXR1cm4gcyA/IGAke3N9JHtjdXJzb3IubGVmdH1gIDogJyc7XG5cdH0sXG5cdHNjcmVlbjogICdcXHgxYlsySicsXG5cdHRvRW5kOiAgICdcXHgxYltLJyxcblx0dG9TdGFydDogJ1xceDFiWzFLJyxcblx0dXA6ICAgICAgJ1xceDFiWzFKJ1xufTtcblxuZXhwb3J0IGNvbnN0IGVzYyA9ICdcXHgxYlsnO1xuXG5leHBvcnQgY29uc3Qgc2Nyb2xsID0ge1xuXHRkb3duOiAnXFx4MWJbVCcsXG5cdHVwOiAgICdcXHgxYltTJ1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgaHlwZXJsaW5rIGZvciByZW5kZXJpbmcgaW4gYSB0ZXJtaW5hbC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gW3RleHRdIC0gVGhlIGNsaWNrYWJsZSB0ZXh0IHRvIGRpc3BsYXkuXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsIC0gVGhlIGxpbmsgVVJMLlxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpbmsodGV4dCwgdXJsKSB7XG5cdHJldHVybiBgXFx4MWJdODs7JHt1cmwgfHwgdGV4dH1cXHgwNyR7dGV4dH1cXHgxYl04OztcXHgwN2A7XG59XG5cbmNvbnN0IHN0cmlwUmVnRXhwID0gL1xceDFiXFxbKDs/XFxkKykrbS9nO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGFuc2kgY29udHJvbCBzZXF1ZW5jZXMgZnJvbSB0aGUgc3BlY2lmaWVkIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIC0gVGhlIHN0cmluZyB0byBzdHJpcC5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcChzdHIgPSAnJykge1xuXHRyZXR1cm4gU3RyaW5nKHN0cikucmVwbGFjZShzdHJpcFJlZ0V4cCwgJycpO1xufVxuIl0sImZpbGUiOiJsaWIvYW5zaS5qcyJ9

20

dist/lib/util.js

@@ -7,4 +7,4 @@ "use strict";

exports.declareCLIKitClass = declareCLIKitClass;
exports.decodeHeader = decodeHeader;
exports.encodeHeader = encodeHeader;
exports.decodeHeader = exports.decode = decode;
exports.encodeHeader = exports.encode = encode;
exports.filename = filename;

@@ -51,3 +51,3 @@ exports.findPackage = findPackage;

/**
* Decodes a header value.
* Decodes a value.
*

@@ -59,7 +59,8 @@ * @param {String} value - The value to decode.

function decodeHeader(value) {
function decode(value) {
return value === undefined || value === null ? '' : JSON.parse(Buffer.from(value, 'base64').toString('utf8'));
}
/**
* Encodes a JavaScript value using base64 for use in an HTTP header.
* Encodes a JavaScript value using base64.
*

@@ -69,7 +70,6 @@ * @param {*} it - A value to encode.

*/
function encodeHeader(it) {
function encode(it) {
return it === undefined || it === null ? it : Buffer.from(JSON.stringify(it), 'utf8').toString('base64');
}
/**

@@ -81,4 +81,2 @@ * Strips off the file extension and returns the filename.

*/
function filename(file) {

@@ -275,2 +273,2 @@ return _path.default.basename(file).replace(/\.[^.]+$/, '');

}
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlsLmpzIl0sIm5hbWVzIjpbImRlY2xhcmVDTElLaXRDbGFzcyIsIm9iaiIsIm5hbWUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsInZhbHVlIiwiU2V0IiwiY2xpa2l0IiwiZGVjb2RlSGVhZGVyIiwidW5kZWZpbmVkIiwiSlNPTiIsInBhcnNlIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwiZW5jb2RlSGVhZGVyIiwiaXQiLCJzdHJpbmdpZnkiLCJmaWxlbmFtZSIsImZpbGUiLCJwYXRoIiwiYmFzZW5hbWUiLCJyZXBsYWNlIiwiZmluZFBhY2thZ2UiLCJzZWFyY2hQYXRoIiwianNvbiIsIm1haW4iLCJyb290IiwicGtnRGlyIiwic3luYyIsInJlc29sdmUiLCJfX2Rpcm5hbWUiLCJ0ZXN0IiwiaXNGaWxlIiwiam9pbiIsImNvbnRlbnRzIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJlIiwiRSIsIklOVkFMSURfUEFDS0FHRV9KU09OIiwibWVzc2FnZSIsInNjb3BlIiwiYXNzaWduIiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsImRpcm5hbWUiLCJpc0V4ZWN1dGFibGUiLCJiaW4iLCJhcmdzIiwic3BsaXQiLCJzaGlmdCIsImVyciIsIndoaWNoIiwid3JhcCIsInN0ciIsIndpZHRoIiwiaW5kZW50IiwicmVwZWF0IiwibWFwIiwibGluZSIsImkiLCJqIiwiayIsImxlbmd0aCIsImNoYXJBdCIsInN1YnN0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFJQTs7Ozs7OztBQU9PLFNBQVNBLGtCQUFULENBQTRCQyxHQUE1QixFQUFpQ0MsSUFBakMsRUFBdUM7QUFDN0MsU0FBT0MsTUFBTSxDQUFDQyxjQUFQLENBQXNCSCxHQUF0QixFQUEyQixRQUEzQixFQUFxQztBQUMzQ0ksSUFBQUEsWUFBWSxFQUFFLElBRDZCO0FB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QUNBRixjQUFBQSxDQUFDLEdBQUdFLENBQUMsR0FBRyxDQUFSO0FBQ0FELGNBQUFBLENBQUMsR0FBRyxDQUFKO0FBQ0E7O0FBQ0Q7QUFDQTtBQUNEO0FBQ0Q7QUFDRDs7QUFFRCxXQUFPRixJQUFQO0FBQ0EsR0E1QkssRUE2QkwxQixJQTdCSyxDQTZCQSxJQTdCQSxDQUFQO0FBOEJBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFyZ3ZTcGxpdCBmcm9tICdhcmd2LXNwbGl0JztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgRSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBwa2dEaXIgZnJvbSAncGtnLWRpcic7XG5pbXBvcnQgd2hpY2ggZnJvbSAnd2hpY2gnO1xuXG5leHBvcnQgeyBwa2dEaXIgfTtcblxuLyoqXG4gKiBBZGRzIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBhbmQgYW55IGJhc2UgY2xhc3NlcyB0byBhbiBpbnRlcm5hbCBgY2xpa2l0YCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gVGhlIGNsaS1raXQgb2JqZWN0IGluc3RhbmNlIHRvIGVtYmVkIHRoZSBjbGFzcyBuYW1lLlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgY2xhc3MgbmFtZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlQ0xJS2l0Q2xhc3Mob2JqLCBuYW1lKSB7XG5cdHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAnY2xpa2l0Jywge1xuXHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHR2YWx1ZTogbmV3IFNldChbIG5hbWUsIC4uLihvYmouY2xpa2l0IHx8IFtdKSBdKVxuXHR9KTtcbn1cblxuLyoqXG4gKiBEZWNvZGVzIGEgaGVhZGVyIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBkZWNvZGUuXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUhlYWRlcih2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCA/ICcnIDogSlNPTi5wYXJzZShCdWZmZXIuZnJvbSh2YWx1ZSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGY4JykpO1xufVxuXG4vKipcbiAqIEVuY29kZXMgYSBKYXZhU2NyaXB0IHZhbHVlIHVzaW5nIGJhc2U2NCBmb3IgdXNlIGluIGFuIEhUVFAgaGVhZGVyLlxuICpcbiAqIEBwYXJhbSB7Kn0gaXQgLSBBIHZhbHVlIHRvIGVuY29kZS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVIZWFkZXIoaXQpIHtcblx0cmV0dXJuIGl0ID09PSB1bmRlZmluZWQgfHwgaXQgPT09IG51bGwgPyBpdCA6IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGl0KSwgJ3V0ZjgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG59XG5cbi8qKlxuICogU3RyaXBzIG9mZiB0aGUgZmlsZSBleHRlbnNpb24gYW5kIHJldHVybnMgdGhlIGZpbGVuYW1lLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIGZpbGUgdG8gZXh0cmFjdCB0aGUgZmlsZW5hbWUgZnJvbS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxlbmFtZShmaWxlKSB7XG5cdHJldHVybiBwYXRoLmJhc2VuYW1lKGZpbGUpLnJlcGxhY2UoL1xcLlteLl0rJC8sICcnKTtcbn1cblxuLyoqXG4gKiBTZWFyY2hlcyB0aGUgc3BlY2lmaWVkIHBhdGggZm9yIHRoZSBwYWNrYWdlIHJvb3QsIHRoZW4gcmV0dXJucyB0aGUgZGlyZWN0b3J5IGFuZCBwYXJzZWRcbiAqIGBwYWNrYWdlLmpzb25gLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWFyY2hQYXRoIC0gVGhlIHBhdGggdG8gc2VhcmNoLlxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQYWNrYWdlKHNlYXJjaFBhdGgpIHtcblx0bGV0IGNsaWtpdCA9IGZhbHNlO1xuXHRsZXQganNvbiA9IHt9O1xuXHRsZXQgbWFpbiA9IG51bGw7XG5cdGxldCByb290ID0gcGtnRGlyLnN5bmMoc2VhcmNoUGF0aCkgfHwgbnVsbDtcblxuXHQvLyBkb24ndCBsZXQgdGhlIHRlc3RzIHRoaW5rIHRoZXkgYXJlIGNsaS1raXRcblx0aWYgKHJvb3QgPT09IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicpKSB7XG5cdFx0cm9vdCA9IG51bGw7XG5cdH1cblxuXHRpZiAoL1xcLmpzJC8udGVzdChzZWFyY2hQYXRoKSAmJiBpc0ZpbGUoc2VhcmNoUGF0aCkpIHtcblx0XHRtYWluID0gc2VhcmNoUGF0aDtcblx0fVxuXG5cdGlmIChyb290KSB7XG5cdFx0Y29uc3QgZmlsZSA9IHBhdGguam9pbihyb290LCAncGFja2FnZS5qc29uJyk7XG5cdFx0bGV0IGNvbnRlbnRzO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnRlbnRzID0gZnMucmVhZEZpbGVTeW5jKGZpbGUsICd1dGY4Jyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Ly8gaXN0YW5idWwgaWdub3JlIG5leHRcblx0XHRcdHRocm93IEUuSU5WQUxJRF9QQUNLQUdFX0pTT04oYFVuYWJsZSB0byBvcGVuIHBhY2thZ2UuanNvbjogJHtlLm1lc3NhZ2V9YCwgeyBuYW1lOiAncGFja2FnZS5qc29uJywgc2NvcGU6ICd1dGlsLmZpbmRQYWNrYWdlJywgdmFsdWU6IGZpbGUgfSk7XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdGpzb24gPSBKU09OLnBhcnNlKGNvbnRlbnRzKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfUEFDS0FHRV9KU09OKGBGYWlsZWQgdG8gcGFyc2UgcGFja2FnZS5qc29uOiAke2UubWVzc2FnZX1gLCB7IGZpbGUsIG5hbWU6ICdwYWNrYWdlLmpzb24uYmFkJywgc2NvcGU6ICd1dGlsLmZpbmRQYWNrYWdlJywgdmFsdWU6IGNvbnRlbnRzIH0pO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YganNvbiAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9QQUNLQUdFX0pTT04oJ0ludmFsaWQgcGFja2FnZS5qc29uOiBleHBlY3RlZCBvYmplY3QnLCB7IGZpbGUsIG5hbWU6ICdwYWNrYWdlLmpzb24uaW52YWxpZCcsIHNjb3BlOiAndXRpbC5maW5kUGFja2FnZScsIHZhbHVlOiBqc29uIH0pO1xuXHRcdH1cblxuXHRcdGlmIChqc29uLmNsaWtpdCB8fCBqc29uWydjbGkta2l0J10pIHtcblx0XHRcdGNsaWtpdCA9IHRydWU7XG5cdFx0XHRPYmplY3QuYXNzaWduKGpzb24sIGpzb24uY2xpa2l0LCBqc29uWydjbGkta2l0J10pO1xuXHRcdH1cblxuXHRcdGlmICghbWFpbikge1xuXHRcdFx0aWYgKGpzb24ubWFpbikge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdG1haW4gPSBwYXRoLnJlc29sdmUocm9vdCwganNvbi5tYWluKTtcblx0XHRcdFx0XHRpZiAoZnMuc3RhdFN5bmMobWFpbikuaXNEaXJlY3RvcnkoKSkge1xuXHRcdFx0XHRcdFx0bWFpbiA9IHBhdGguam9pbihtYWluLCAnaW5kZXguanMnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRtYWluID0gcGF0aC5yZXNvbHZlKHJvb3QsIGAke2pzb24ubWFpbn0uanNgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bWFpbiA9IHBhdGgucmVzb2x2ZShyb290LCAnaW5kZXguanMnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFpc0ZpbGUobWFpbikpIHtcblx0XHRcdFx0bWFpbiA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHJvb3QgPSBtYWluID8gcGF0aC5kaXJuYW1lKG1haW4pIDogbnVsbDtcblx0fVxuXG5cdHJldHVybiB7IGNsaWtpdCwganNvbiwgbWFpbiwgcm9vdCB9O1xufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGRldGVybWluZSBpZiB0aGUgc3BlY2lmaWVkIHN0cmluZyBpcyBhbiBleGVjdXRhYmxlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBiaW4gLSBBbiBleGVjdXRhYmxlIG5hbWUsIHBhdGgsIG9yIGVudGlyZSBjb21tYW5kLlxuICogQHJldHVybnMge0FycmF5LjxTdHJpbmc+fVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFeGVjdXRhYmxlKGJpbikge1xuXHRsZXQgYXJncztcblxuXHR0cnkge1xuXHRcdGFyZ3MgPSBzcGxpdChiaW4pO1xuXHRcdGJpbiA9IGFyZ3Muc2hpZnQoKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0Ly8gdGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBidXQgaWYgaXQgZG9lcywganVzdCBmYWxsYmFjayB0byB0aGUgb3JpZ2luYWwgdmFsdWVcblx0fVxuXG5cdHJldHVybiBbXG5cdFx0d2hpY2guc3luYyhiaW4pLFxuXHRcdC4uLmFyZ3Ncblx0XTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGEgZmlsZSBleGlzdHMgYW5kIHRoYXQgaXQgaXMgaW5kZWVkIGEgZmlsZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbGUoZmlsZSkge1xuXHR0cnkge1xuXHRcdHJldHVybiBmcy5zdGF0U3luYyhmaWxlKS5pc0ZpbGUoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdC8vIHNxdWVsY2hcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogU3BsaXRzIGFuIGFyZ3YgKGFyZ3VtZW50IHZlY3Rvcikgc3RyaW5nLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaXMganVzdCBhIHdyYXBwZXIgYXJvdW5kIGFyZ3Ytc3BsaXQganVzdCBpbiBjYXNlIHdlIGV2ZXIgd2FudCB0byByZXBsYWNlIGl0LlxuICogaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYXJndi1zcGxpdC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaXQgLSBUaGUgYXJndiBzdHJpbmcgdG8gc3BsaXQuXG4gKiBAcmV0dXJucyB7QXJyYXkuPFN0cmluZz59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdChpdCkge1xuXHRyZXR1cm4gYXJndlNwbGl0KGl0KTtcbn1cblxuLyoqXG4gKiBJbnNlcnRzIGxpbmUgYnJlYWtzIGludG8gYSBzdHJpbmcgc28gdGhhdCB0aGUgdGV4dCBkb2VzIG5vdCBleGNlZWQgdGhlIHNwZWNpZmllZCB3aWR0aC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIC0gVGhlIHN0cmluZyB0byBsaW5lIHdyYXAuXG4gKiBAcGFyYW0ge051bWJlcn0gW3dpZHRoXSAtIFRoZSB3aWR0aCB0byBicmVhayB0aGUgbGluZXM7IGRlZmF1bHRzIHRvIHRoZSB0ZXJtaW5hbCB3aWR0aC5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbaW5kZW50XSAtIFRoZSBudW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCBuZXcgbGluZXMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcChzdHIsIHdpZHRoLCBpbmRlbnQpIHtcblx0aWYgKHdpZHRoIDw9IDApIHtcblx0XHRyZXR1cm4gc3RyO1xuXHR9XG5cblx0aW5kZW50ID0gJyAnLnJlcGVhdChpbmRlbnQgfHwgMCk7XG5cblx0cmV0dXJuIHN0clxuXHRcdC5zcGxpdCgvXFxyP1xcbi8pXG5cdFx0Lm1hcChsaW5lID0+IHtcblx0XHRcdGxldCBpID0gMDtcblx0XHRcdGxldCBqID0gMDtcblx0XHRcdGxldCBrO1xuXG5cdFx0XHQvLyByZW1vdmUgZXNjYXBlIGNoYXJhY3RlcnNcblx0XHRcdGxpbmUgPSBsaW5lLnJlcGxhY2UoL1xcdTAwMWJcXFtKL2csICcnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb250cm9sLXJlZ2V4XG5cblx0XHRcdHdoaWxlIChpIDwgbGluZS5sZW5ndGgpIHtcblx0XHRcdFx0aSsrO1xuXHRcdFx0XHRpZiAoKytqID49IHdpZHRoKSB7XG5cdFx0XHRcdFx0Ly8gYmFja3BlZGFsXG5cdFx0XHRcdFx0Zm9yIChrID0gaTsgayA+PSAwOyBrLS0pIHtcblx0XHRcdFx0XHRcdGlmICgvWyAsOyE/XS8udGVzdChsaW5lLmNoYXJBdChrKSkgfHwgKC9bLjpdLy50ZXN0KGxpbmUuY2hhckF0KGspKSAmJiAoayArIDEgPj0gbGluZS5sZW5ndGggfHwgL1sgXFx0XFxyXFxuXS8udGVzdChsaW5lLmNoYXJBdChrICsgMSkpKSkpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGsgKyAxIDwgbGluZS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRsaW5lID0gYCR7bGluZS5zdWJzdHJpbmcoMCwgayl9XFxuJHtpbmRlbnR9JHtsaW5lLnN1YnN0cmluZyhrICsgMSl9YDtcblx0XHRcdFx0XHRcdFx0XHRpID0gayArIDE7XG5cdFx0XHRcdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBsaW5lO1xuXHRcdH0pXG5cdFx0LmpvaW4oJ1xcbicpO1xufVxuIl0sImZpbGUiOiJsaWIvdXRpbC5qcyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlsLmpzIl0sIm5hbWVzIjpbImRlY2xhcmVDTElLaXRDbGFzcyIsIm9iaiIsIm5hbWUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsInZhbHVlIiwiU2V0IiwiY2xpa2l0IiwiZGVjb2RlIiwidW5kZWZpbmVkIiwiSlNPTiIsInBhcnNlIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwiZW5jb2RlIiwiaXQiLCJzdHJpbmdpZnkiLCJmaWxlbmFtZSIsImZpbGUiLCJwYXRoIiwiYmFzZW5hbWUiLCJyZXBsYWNlIiwiZmluZFBhY2thZ2UiLCJzZWFyY2hQYXRoIiwianNvbiIsIm1haW4iLCJyb290IiwicGtnRGlyIiwic3luYyIsInJlc29sdmUiLCJfX2Rpcm5hbWUiLCJ0ZXN0IiwiaXNGaWxlIiwiam9pbiIsImNvbnRlbnRzIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJlIiwiRSIsIklOVkFMSURfUEFDS0FHRV9KU09OIiwibWVzc2FnZSIsInNjb3BlIiwiYXNzaWduIiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsImRpcm5hbWUiLCJpc0V4ZWN1dGFibGUiLCJiaW4iLCJhcmdzIiwic3BsaXQiLCJzaGlmdCIsImVyciIsIndoaWNoIiwid3JhcCIsInN0ciIsIndpZHRoIiwiaW5kZW50IiwicmVwZWF0IiwibWFwIiwibGluZSIsImkiLCJqIiwiayIsImxlbmd0aCIsImNoYXJBdCIsInN1YnN0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFJQTs7Ozs7OztBQU9PLFNBQVNBLGtCQUFULENBQTRCQyxHQUE1QixFQUFpQ0MsSUFBakMsRUFBdUM7QUFDN0MsU0FBT0MsTUFBTSxDQUFDQyxjQUFQLENBQXNCSCxHQUF0QixFQUEyQixRQUEzQixFQUFxQztBQUMzQ0ksSUFBQUEsWUFBWSxFQUFFLElBRDZCO0FBRTNDQyxJQUFBQSxL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QyxHQUFHRSxDQUFDLEdBQUcsQ0FBUjtBQUNBRCxjQUFBQSxDQUFDLEdBQUcsQ0FBSjtBQUNBOztBQUNEO0FBQ0E7QUFDRDtBQUNEO0FBQ0Q7O0FBRUQsV0FBT0YsSUFBUDtBQUNBLEdBNUJLLEVBNkJMMUIsSUE3QkssQ0E2QkEsSUE3QkEsQ0FBUDtBQThCQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcmd2U3BsaXQgZnJvbSAnYXJndi1zcGxpdCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IEUgZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgcGtnRGlyIGZyb20gJ3BrZy1kaXInO1xuaW1wb3J0IHdoaWNoIGZyb20gJ3doaWNoJztcblxuZXhwb3J0IHsgcGtnRGlyIH07XG5cbi8qKlxuICogQWRkcyB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgYW5kIGFueSBiYXNlIGNsYXNzZXMgdG8gYW4gaW50ZXJuYWwgYGNsaWtpdGAgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIFRoZSBjbGkta2l0IG9iamVjdCBpbnN0YW5jZSB0byBlbWJlZCB0aGUgY2xhc3MgbmFtZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gVGhlIGNsYXNzIG5hbWUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZUNMSUtpdENsYXNzKG9iaiwgbmFtZSkge1xuXHRyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ2NsaWtpdCcsIHtcblx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0dmFsdWU6IG5ldyBTZXQoWyBuYW1lLCAuLi4ob2JqLmNsaWtpdCB8fCBbXSkgXSlcblx0fSk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBhIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBkZWNvZGUuXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZSh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCA/ICcnIDogSlNPTi5wYXJzZShCdWZmZXIuZnJvbSh2YWx1ZSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGY4JykpO1xufVxuXG5leHBvcnQgeyBkZWNvZGUgYXMgZGVjb2RlSGVhZGVyIH07XG5cbi8qKlxuICogRW5jb2RlcyBhIEphdmFTY3JpcHQgdmFsdWUgdXNpbmcgYmFzZTY0LlxuICpcbiAqIEBwYXJhbSB7Kn0gaXQgLSBBIHZhbHVlIHRvIGVuY29kZS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGUoaXQpIHtcblx0cmV0dXJuIGl0ID09PSB1bmRlZmluZWQgfHwgaXQgPT09IG51bGwgPyBpdCA6IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGl0KSwgJ3V0ZjgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG59XG5cbmV4cG9ydCB7IGVuY29kZSBhcyBlbmNvZGVIZWFkZXIgfTtcblxuLyoqXG4gKiBTdHJpcHMgb2ZmIHRoZSBmaWxlIGV4dGVuc2lvbiBhbmQgcmV0dXJucyB0aGUgZmlsZW5hbWUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgZmlsZSB0byBleHRyYWN0IHRoZSBmaWxlbmFtZSBmcm9tLlxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGVuYW1lKGZpbGUpIHtcblx0cmV0dXJuIHBhdGguYmFzZW5hbWUoZmlsZSkucmVwbGFjZSgvXFwuW14uXSskLywgJycpO1xufVxuXG4vKipcbiAqIFNlYXJjaGVzIHRoZSBzcGVjaWZpZWQgcGF0aCBmb3IgdGhlIHBhY2thZ2Ugcm9vdCwgdGhlbiByZXR1cm5zIHRoZSBkaXJlY3RvcnkgYW5kIHBhcnNlZFxuICogYHBhY2thZ2UuanNvbmAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHNlYXJjaFBhdGggLSBUaGUgcGF0aCB0byBzZWFyY2guXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFBhY2thZ2Uoc2VhcmNoUGF0aCkge1xuXHRsZXQgY2xpa2l0ID0gZmFsc2U7XG5cdGxldCBqc29uID0ge307XG5cdGxldCBtYWluID0gbnVsbDtcblx0bGV0IHJvb3QgPSBwa2dEaXIuc3luYyhzZWFyY2hQYXRoKSB8fCBudWxsO1xuXG5cdC8vIGRvbid0IGxldCB0aGUgdGVzdHMgdGhpbmsgdGhleSBhcmUgY2xpLWtpdFxuXHRpZiAocm9vdCA9PT0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJykpIHtcblx0XHRyb290ID0gbnVsbDtcblx0fVxuXG5cdGlmICgvXFwuanMkLy50ZXN0KHNlYXJjaFBhdGgpICYmIGlzRmlsZShzZWFyY2hQYXRoKSkge1xuXHRcdG1haW4gPSBzZWFyY2hQYXRoO1xuXHR9XG5cblx0aWYgKHJvb3QpIHtcblx0XHRjb25zdCBmaWxlID0gcGF0aC5qb2luKHJvb3QsICdwYWNrYWdlLmpzb24nKTtcblx0XHRsZXQgY29udGVudHM7XG5cblx0XHR0cnkge1xuXHRcdFx0Y29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHQvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXHRcdFx0dGhyb3cgRS5JTlZBTElEX1BBQ0tBR0VfSlNPTihgVW5hYmxlIHRvIG9wZW4gcGFja2FnZS5qc29uOiAke2UubWVzc2FnZX1gLCB7IG5hbWU6ICdwYWNrYWdlLmpzb24nLCBzY29wZTogJ3V0aWwuZmluZFBhY2thZ2UnLCB2YWx1ZTogZmlsZSB9KTtcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0anNvbiA9IEpTT04ucGFyc2UoY29udGVudHMpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9QQUNLQUdFX0pTT04oYEZhaWxlZCB0byBwYXJzZSBwYWNrYWdlLmpzb246ICR7ZS5tZXNzYWdlfWAsIHsgZmlsZSwgbmFtZTogJ3BhY2thZ2UuanNvbi5iYWQnLCBzY29wZTogJ3V0aWwuZmluZFBhY2thZ2UnLCB2YWx1ZTogY29udGVudHMgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBqc29uICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX1BBQ0tBR0VfSlNPTignSW52YWxpZCBwYWNrYWdlLmpzb246IGV4cGVjdGVkIG9iamVjdCcsIHsgZmlsZSwgbmFtZTogJ3BhY2thZ2UuanNvbi5pbnZhbGlkJywgc2NvcGU6ICd1dGlsLmZpbmRQYWNrYWdlJywgdmFsdWU6IGpzb24gfSk7XG5cdFx0fVxuXG5cdFx0aWYgKGpzb24uY2xpa2l0IHx8IGpzb25bJ2NsaS1raXQnXSkge1xuXHRcdFx0Y2xpa2l0ID0gdHJ1ZTtcblx0XHRcdE9iamVjdC5hc3NpZ24oanNvbiwganNvbi5jbGlraXQsIGpzb25bJ2NsaS1raXQnXSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFtYWluKSB7XG5cdFx0XHRpZiAoanNvbi5tYWluKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0bWFpbiA9IHBhdGgucmVzb2x2ZShyb290LCBqc29uLm1haW4pO1xuXHRcdFx0XHRcdGlmIChmcy5zdGF0U3luYyhtYWluKS5pc0RpcmVjdG9yeSgpKSB7XG5cdFx0XHRcdFx0XHRtYWluID0gcGF0aC5qb2luKG1haW4sICdpbmRleC5qcycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdG1haW4gPSBwYXRoLnJlc29sdmUocm9vdCwgYCR7anNvbi5tYWlufS5qc2ApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtYWluID0gcGF0aC5yZXNvbHZlKHJvb3QsICdpbmRleC5qcycpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWlzRmlsZShtYWluKSkge1xuXHRcdFx0XHRtYWluID0gbnVsbDtcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cm9vdCA9IG1haW4gPyBwYXRoLmRpcm5hbWUobWFpbikgOiBudWxsO1xuXHR9XG5cblx0cmV0dXJuIHsgY2xpa2l0LCBqc29uLCBtYWluLCByb290IH07XG59XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGlzIGFuIGV4ZWN1dGFibGUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGJpbiAtIEFuIGV4ZWN1dGFibGUgbmFtZSwgcGF0aCwgb3IgZW50aXJlIGNvbW1hbmQuXG4gKiBAcmV0dXJucyB7QXJyYXkuPFN0cmluZz59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4ZWN1dGFibGUoYmluKSB7XG5cdGxldCBhcmdzO1xuXG5cdHRyeSB7XG5cdFx0YXJncyA9IHNwbGl0KGJpbik7XG5cdFx0YmluID0gYXJncy5zaGlmdCgpO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyB0aGlzIHNob3VsZG4ndCBoYXBwZW4sIGJ1dCBpZiBpdCBkb2VzLCBqdXN0IGZhbGxiYWNrIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZVxuXHR9XG5cblx0cmV0dXJuIFtcblx0XHR3aGljaC5zeW5jKGJpbiksXG5cdFx0Li4uYXJnc1xuXHRdO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBmaWxlIGV4aXN0cyBhbmQgdGhhdCBpdCBpcyBpbmRlZWQgYSBmaWxlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsZShmaWxlKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIGZzLnN0YXRTeW5jKGZpbGUpLmlzRmlsZSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gc3F1ZWxjaFxuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBTcGxpdHMgYW4gYXJndiAoYXJndW1lbnQgdmVjdG9yKSBzdHJpbmcuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpcyBqdXN0IGEgd3JhcHBlciBhcm91bmQgYXJndi1zcGxpdCBqdXN0IGluIGNhc2Ugd2UgZXZlciB3YW50IHRvIHJlcGxhY2UgaXQuXG4gKiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9hcmd2LXNwbGl0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBpdCAtIFRoZSBhcmd2IHN0cmluZyB0byBzcGxpdC5cbiAqIEByZXR1cm5zIHtBcnJheS48U3RyaW5nPn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0KGl0KSB7XG5cdHJldHVybiBhcmd2U3BsaXQoaXQpO1xufVxuXG4vKipcbiAqIEluc2VydHMgbGluZSBicmVha3MgaW50byBhIHN0cmluZyBzbyB0aGF0IHRoZSB0ZXh0IGRvZXMgbm90IGV4Y2VlZCB0aGUgc3BlY2lmaWVkIHdpZHRoLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgLSBUaGUgc3RyaW5nIHRvIGxpbmUgd3JhcC5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbd2lkdGhdIC0gVGhlIHdpZHRoIHRvIGJyZWFrIHRoZSBsaW5lczsgZGVmYXVsdHMgdG8gdGhlIHRlcm1pbmFsIHdpZHRoLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtpbmRlbnRdIC0gVGhlIG51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IG5ldyBsaW5lcy5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cmFwKHN0ciwgd2lkdGgsIGluZGVudCkge1xuXHRpZiAod2lkdGggPD0gMCkge1xuXHRcdHJldHVybiBzdHI7XG5cdH1cblxuXHRpbmRlbnQgPSAnICcucmVwZWF0KGluZGVudCB8fCAwKTtcblxuXHRyZXR1cm4gc3RyXG5cdFx0LnNwbGl0KC9cXHI/XFxuLylcblx0XHQubWFwKGxpbmUgPT4ge1xuXHRcdFx0bGV0IGkgPSAwO1xuXHRcdFx0bGV0IGogPSAwO1xuXHRcdFx0bGV0IGs7XG5cblx0XHRcdC8vIHJlbW92ZSBlc2NhcGUgY2hhcmFjdGVyc1xuXHRcdFx0bGluZSA9IGxpbmUucmVwbGFjZSgvXFx1MDAxYlxcW0ovZywgJycpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcblxuXHRcdFx0d2hpbGUgKGkgPCBsaW5lLmxlbmd0aCkge1xuXHRcdFx0XHRpKys7XG5cdFx0XHRcdGlmICgrK2ogPj0gd2lkdGgpIHtcblx0XHRcdFx0XHQvLyBiYWNrcGVkYWxcblx0XHRcdFx0XHRmb3IgKGsgPSBpOyBrID49IDA7IGstLSkge1xuXHRcdFx0XHRcdFx0aWYgKC9bICw7IT9dLy50ZXN0KGxpbmUuY2hhckF0KGspKSB8fCAoL1suOl0vLnRlc3QobGluZS5jaGFyQXQoaykpICYmIChrICsgMSA+PSBsaW5lLmxlbmd0aCB8fCAvWyBcXHRcXHJcXG5dLy50ZXN0KGxpbmUuY2hhckF0KGsgKyAxKSkpKSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoayArIDEgPCBsaW5lLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdGxpbmUgPSBgJHtsaW5lLnN1YnN0cmluZygwLCBrKX1cXG4ke2luZGVudH0ke2xpbmUuc3Vic3RyaW5nKGsgKyAxKX1gO1xuXHRcdFx0XHRcdFx0XHRcdGkgPSBrICsgMTtcblx0XHRcdFx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGxpbmU7XG5cdFx0fSlcblx0XHQuam9pbignXFxuJyk7XG59XG4iXSwiZmlsZSI6ImxpYi91dGlsLmpzIn0=

@@ -313,10 +313,25 @@ "use strict";

this.args = new _argumentList.default(), this.banner = params.banner;
this.commands = new _commandMap.default(), this.desc = params.desc;
this.extensions = new _extensionMap.default(), this.lookup = new _lookup.default(), this.name = params.name;
this.args = new _argumentList.default();
this.autoHideBanner = params.autoHideBanner;
this.banner = params.banner;
this.commands = new _commandMap.default();
this.defaultCommand = params.defaultCommand;
this.desc = params.desc;
this.errorIfUnknownCommand = params.errorIfUnknownCommand;
this.extensions = new _extensionMap.default();
this.helpExitCode = params.helpExitCode;
this.helpTemplateFile = params.helpTemplateFile;
this.hideNoBannerOption = params.hideNoBannerOption;
this.hideNoColorOption = params.hideNoColorOption;
this.lookup = new _lookup.default();
this.name = params.name;
this.nodeVersion = params.nodeVersion;
this.options = new _optionMap.default();
this.parent = params.parent;
this.rev = 0;
this.showBannerForExternalCLIs = params.showBannerForExternalCLIs;
this.showHelpOnError = params.showHelpOnError;
this.title = params.title || params.name;
this.treatUnknownOptionsAsArguments = !!params.treatUnknownOptionsAsArguments;
this.version = params.version;
params.args && this.argument(params.args);

@@ -427,2 +442,2 @@ params.commands && this.command(params.commands);

exports.default = Context;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb250ZXh0LmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwiQ29udGV4dCIsIkhvb2tFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJwYXJhbXMiLCJpbml0IiwiYXJndW1lbnQiLCJhcmciLCJhcmdzIiwiYWRkIiwicmV2IiwiY29tbWFuZCIsImNtZCIsImNtZHMiLCJjb21tYW5kcyIsIm5hbWUiLCJyZWdpc3RlciIsImV4dGVuc2lvbiIsImV4dCIsImV4dHMiLCJleHRlbnNpb25zIiwiZ2VuZXJhdGVIZWxwIiwib3B0cyIsImhvb2siLCJyZXN1bHRzIiwic2NvcGVzIiwiY3R4IiwicHVzaCIsInRpdGxlIiwib3B0aW9ucyIsImNvbnRleHRzIiwidW5zaGlmdCIsInBhcmVudCIsImxvbmdzIiwiU2V0Iiwic2hvcnRzIiwiaiIsImxlbmd0aCIsIk9iamVjdCIsInZhbHVlcyIsImdyb3VwcyIsImkiLCJsb25nIiwic2hvcnQiLCJudWtlIiwiaGFzIiwiY291bnQiLCJzcGxpY2UiLCJkZXNjIiwiU3RyaW5nIiwidHJpbSIsInJlcGxhY2UiLCJjIiwidG9Mb2NhbGVVcHBlckNhc2UiLCJlbnRyaWVzIiwiYXBwbHkiLCJkZWZhdWx0Q29tbWFuZCIsImRlZmF1bHQiLCJhcmd1bWVudHMiLCJyZWR1Y2UiLCJwIiwidXNhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJwYXJlbnRDb250ZXh0TmFtZXMiLCJzbGljZSIsIm1hcCIsIm11bHRpcGxlIiwicmVxdWlyZWQiLCJ0ZXh0Iiwiam9pbiIsImVycm9yIiwidW5kZWZpbmVkIiwic3VnZ2VzdGlvbnMiLCJ3YXJuaW5ncyIsImdldCIsImRlZmF1bHRWYWx1ZSIsInZhbHVlIiwiY2xpa2l0IiwiRSIsIklOVkFMSURfQVJHVU1FTlQiLCJzY29wZSIsIkFyZ3VtZW50TGlzdCIsImJhbm5lciIsIkNvbW1hbmRNYXAiLCJFeHRlbnNpb25NYXAiLCJsb29rdXAiLCJMb29rdXAiLCJPcHRpb25NYXAiLCJ0cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHMiLCJvcHRpb24iLCJmb3JtYXQiLCJvcHQiLCJhbGlhcyIsInZpc2libGUiLCJhbGlhc2VzIiwicHJvcCIsIml0IiwiZGVzdCIsImtleXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFVLG9CQUFNLGlCQUFOLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxlQUFNQyxNQUE1QjtBQUVBOzs7Ozs7O0FBTWUsTUFBTUMsT0FBTixTQUFzQkMsb0JBQXRCLENBQWtDO0FBQ2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFNLEdBQUcsRUFBVixFQUFjO0FBQ3hCO0FBQ0Esa0NBQW1CLElBQW5CLEVBQXlCLFNBQXpCO0FBQ0EsU0FBS0MsSUFBTCxDQUFVRCxNQUFWO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7O0FBVUFFLEVBQUFBLFFBQVEsQ0FBQ0MsR0FBRCxFQUFNO0FBQ2IsU0FBS0MsSUFBTCxDQUFVQyxHQUFWLENBQWNGLEdBQWQ7QUFDQSxTQUFLRyxHQUFMO0FBQ0EsV0FBTyxJQUFQO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0FBYUFDLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNUixNQUFOLEVBQWM7QUFDcEIsVUFBTVMsSUFBSSxHQUFHLEtBQUtDLFFBQUwsQ0FBY0wsR0FBZCxDQUFrQkcsR0FBbEIsRUFBdUJSLE1BQXZCLENBQWI7O0FBQ0EsU0FBSyxNQUFNUSxHQUFYLElBQWtCQyxJQUFsQixFQUF3QjtBQUN2QmhCLE1BQUFBLEdBQUcsQ0FBRSxtQkFBa0JDLFNBQVMsQ0FBQ2MsR0FBRyxDQUFDRyxJQUFMLENBQVcsRUFBeEMsQ0FBSDtBQUNBLFdBQUtDLFFBQUwsQ0FBY0osR0FBZDtBQUNB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QSxFQUFFLENBQUNqRSxNQUFILEdBQVksSUFBWjtBQUNBLFNBQUtzRCxNQUFMLENBQVlZLElBQVosRUFBa0JELEVBQUUsQ0FBQ2xGLElBQXJCLElBQTZCa0YsRUFBN0I7O0FBRUEsUUFBSUEsRUFBRSxDQUFDRixPQUFQLEVBQWdCO0FBQ2YsV0FBSyxNQUFNRixLQUFYLElBQW9CdkQsTUFBTSxDQUFDNkQsSUFBUCxDQUFZRixFQUFFLENBQUNGLE9BQWYsQ0FBcEIsRUFBNkM7QUFDNUMsWUFBSSxDQUFDLEtBQUtHLElBQUwsRUFBV3JELEdBQVgsQ0FBZWdELEtBQWYsQ0FBTCxFQUE0QjtBQUMzQixlQUFLUCxNQUFMLENBQVlZLElBQVosRUFBa0JMLEtBQWxCLElBQTJCSSxFQUEzQjtBQUNBO0FBQ0Q7QUFDRDtBQUNEOztBQXRXK0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXJndW1lbnRMaXN0IGZyb20gJy4vYXJndW1lbnQtbGlzdCc7XG5pbXBvcnQgQ29tbWFuZE1hcCBmcm9tICcuL2NvbW1hbmQtbWFwJztcbmltcG9ydCBkZWJ1ZyBmcm9tICcuLi9saWIvZGVidWcnO1xuaW1wb3J0IEUgZnJvbSAnLi4vbGliL2Vycm9ycyc7XG5pbXBvcnQgRXh0ZW5zaW9uTWFwIGZyb20gJy4vZXh0ZW5zaW9uLW1hcCc7XG5pbXBvcnQgSG9va0VtaXR0ZXIgZnJvbSAnaG9vay1lbWl0dGVyJztcbmltcG9ydCBMb29rdXAgZnJvbSAnLi9sb29rdXAnO1xuaW1wb3J0IE9wdGlvbk1hcCBmcm9tICcuL29wdGlvbi1tYXAnO1xuXG5pbXBvcnQgeyBkZWNsYXJlQ0xJS2l0Q2xhc3MgfSBmcm9tICcuLi9saWIvdXRpbCc7XG5cbmNvbnN0IHsgbG9nIH0gPSBkZWJ1ZygnY2xpLWtpdDpjb250ZXh0Jyk7XG5jb25zdCB7IGhpZ2hsaWdodCB9ID0gZGVidWcuc3R5bGVzO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb250ZXh0IHRoYXQgY29udGFpbnMgY29tbWFuZHMsIG9wdGlvbnMsIGFuZCBhcmdzLiBTZXJ2ZXMgYXMgdGhlXG4gKiBiYXNlIGNsYXNzIGZvciBgQ0xJYCBhbmQgYENvbnRleHRgIG9iamVjdHMuXG4gKlxuICogQGV4dGVuZHMge0hvb2tFbWl0dGVyfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZXh0IGV4dGVuZHMgSG9va0VtaXR0ZXIge1xuXHQvKipcblx0ICogQ29uc3RydWN0cyBhIGNvbnRleHQgaW5zdGFuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fENvbnRleHR9IFtwYXJhbXNdIC0gVmFyaW91cyBwYXJhbWV0ZXJzLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8QXJndW1lbnR8QXJndW1lbnRMaXN0fEFycmF5PE9iamVjdHxTdHJpbmd8QXJndW1lbnQ+fSBbcGFyYW1zLmFyZ3NdIC1cblx0ICogQW4gb2JqZWN0IG9mIGFyZ3VtZW50IG5hbWVzIHRvIGFyZ3VtZW50IGRlc2NyaXB0b3JzLCBhbiBhcmd1bWVudCBuYW1lLCBhbiBgQXJndW1lbnRgXG5cdCAqIGluc3RhbmNlLCBhbiBgQXJndW1lbnRMaXN0YCBpbnN0YW5jZSwgb3IgYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzLCBhcmd1bWVudCBuYW1lcywgYW5kXG5cdCAqIGBBcmd1bWVudGAgaW5zdGFuY2VzLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtwYXJhbXMuY2FtZWxDYXNlPXRydWVdIC0gQ2FtZWwgY2FzZSBvcHRpb24gbmFtZXMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ3xDb21tYW5kfENvbW1hbmRNYXB8QXJyYXkuPE9iamVjdHxTdHJpbmd8Q29tbWFuZD59IFtwYXJhbXMuY29tbWFuZHNdIC1cblx0ICogQW4gb2JqZWN0IHVzZWQgZm9yIGBDb21tYW5kYCBjb25zdHJ1Y3RvciBwYXJhbXMsIGEgcGF0aCB0byBhIGRpcmVjdG9yeSBvciBhIGAuanNgIGZpbGUsIGFcblx0ICogYENvbW1hbmRgIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gTWF5IGFsc28gYmUgYSBgQ29tbWFuZE1hcGAgaW5zdGFuY2UuIElmXG5cdCAqIGBjbWRgIGlzIGEgYFN0cmluZ2AgYW5kIGBwYXJhbXNgIGlzIHByZXNlbnQsIHRoZW4gaXQgd2lsbCB0cmVhdCBgY21kYCBhcyB0aGUgY29tbWFuZCBuYW1lLFxuXHQgKiBub3QgYSBmaWxlIHBhdGguXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLmRlc2NdIC0gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBDTEkgb3IgY29tbWFuZCBkaXNwbGF5ZWQgaW4gdGhlIGhlbHBcblx0ICogb3V0cHV0LiBJZiBjb250ZXh0IGlzIGEgY29tbWFuZCB3aXRoIGEgaGVscCBoZWFkZXIgZGVmaW5lZCwgdGhpcyBkZXNjcmlwdGlvbiBpcyBub3Rcblx0ICogZGlzcGxheWVkLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8RXh0ZW5zaW9ufEV4dGVuc2lvbk1hcHxBcnJheS48U3RyaW5nfEV4dGVuc2lvbj59IFtwYXJhbXMuZXh0ZW5zaW9uc10gLVxuXHQgKiBBbiBvYmplY3Qgb2YgZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBwYXRocyBvciBpbnN0YW5jZXMsIGFuIGV4dGVuc2lvbiBwYXRoLCBhblxuXHQgKiBgRXh0ZW5zaW9uYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIEFuIGV4dGVuc2lvbiBwYXRoIG1heSBiZSBhIGRpcmVjdG9yeVxuXHQgKiBjb250YWluaW5nIGEgTm9kZS5qcyBtb2R1bGUsIGEgcGF0aCB0byBhIGAuanNgIGZpbGUsIG9yIHRoZSBuYW1lIG9mIGEgZXhlY3V0YWJsZS4gTWF5IGFsc29cblx0ICogYmUgYW4gYEV4dGVuc2lvbk1hcGAgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyYW1zLm5hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGNvbnRleHQgc3VjaCBhcyB0aGUgcHJvZ3JhbSBvciB0aGUgY29tbWFuZFxuXHQgKiBuYW1lLlxuXHQgKiBAcGFyYW0ge09iamVjdHxPcHRpb258T3B0aW9uTWFwfEFycmF5PE9iamVjdHxPcHRpb258U3RyaW5nPn0gW3BhcmFtcy5vcHRpb25zXSAtIEFuIG9iamVjdCBvZlxuXHQgKiBmb3JtYXQgdG8gYE9wdGlvbmAgY29uc3RydWN0b3IgcGFyYW1zLCBhbiBgT3B0aW9uYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgYE9wdGlvbmBcblx0ICogY29uc3RydWN0b3IgcGFyYW1zIGFuZCBgT3B0aW9uYCBpbnN0YW5jZXMgZ3JvdXBlZCBieSBgU3RyaW5nYCBsYWJlbHMuXG5cdCAqIEBwYXJhbSB7Q29udGV4dH0gW3BhcmFtcy5wYXJlbnRdIC0gVGhlIHBhcmVudCBjb250ZXh0LlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy50aXRsZV0gLSBUaGUgY29udGV4dCB0aXRsZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLnRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cz1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgYW55IGFyZ3VtZW50IGlzXG5cdCAqIGVuY291bnRlcmVkIGR1cmluZyBwYXJzaW5nIHRoYXQgcmVzZW1ibGVzIGEgb3B0aW9uIHRoYXQgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYWRkIGl0XG5cdCAqIHVudG91Y2hlZCB0byBgX2AgYXMgYW4gYXJndW1lbnQgYXMgd2VsbCBhcyB0byBgYXJndmAgYXMgYSBib29sZWFuIGZsYWcuIFdoZW4gYGZhbHNlYCwgaXQgd2lsbFxuXHQgKiBvbmx5IGFkZCB0aGUgYXJndW1lbnQgdG8gYGFyZ3ZgIGFzIGEgYm9vbGVhbiBmbGFnLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3IocGFyYW1zID0ge30pIHtcblx0XHRzdXBlcigpO1xuXHRcdGRlY2xhcmVDTElLaXRDbGFzcyh0aGlzLCAnQ29udGV4dCcpO1xuXHRcdHRoaXMuaW5pdChwYXJhbXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gYXJndW1lbnQgdG8gdGhpcyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8QXJndW1lbnR8QXJndW1lbnRMaXN0fEFycmF5PE9iamVjdHxTdHJpbmd8QXJndW1lbnQ+fSBhcmcgLSBBbiBvYmplY3Rcblx0ICogb2YgYXJndW1lbnQgbmFtZXMgdG8gYXJndW1lbnQgZGVzY3JpcHRvcnMsIGFuIGFyZ3VtZW50IG5hbWUsIGFuIGBBcmd1bWVudGAgaW5zdGFuY2UsIGFuXG5cdCAqIGBBcmd1bWVudExpc3RgIGluc3RhbmNlLCBvciBhcnJheSBvZiBvYmplY3QgZGVzY3JpcHRvcnMsIGFyZ3VtZW50IG5hbWVzLCBhbmQgYEFyZ3VtZW50YFxuXHQgKiBpbnN0YW5jZXMuXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXJndW1lbnQoYXJnKSB7XG5cdFx0dGhpcy5hcmdzLmFkZChhcmcpO1xuXHRcdHRoaXMucmV2Kys7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGNvbW1hbmQgdG8gdGhpcyBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8Q29tbWFuZHxDb21tYW5kTWFwfEFycmF5LjxPYmplY3R8U3RyaW5nfENvbW1hbmQ+fSBjbWQgLSBBbiBvYmplY3Rcblx0ICogdXNlZCBmb3IgYENvbW1hbmRgIGNvbnN0cnVjdG9yIHBhcmFtcywgYSBwYXRoIHRvIGEgZGlyZWN0b3J5IG9yIGEgYC5qc2AgZmlsZSwgYSBgQ29tbWFuZGBcblx0ICogaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBNYXkgYWxzbyBiZSBhIGBDb21tYW5kTWFwYCBpbnN0YW5jZS4gSWYgYGNtZGAgaXMgYVxuXHQgKiBgU3RyaW5nYCBhbmQgYHBhcmFtc2AgaXMgcHJlc2VudCwgdGhlbiBpdCB3aWxsIHRyZWF0IGBjbWRgIGFzIHRoZSBjb21tYW5kIG5hbWUsIG5vdCBhIGZpbGVcblx0ICogcGF0aC5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIC0gV2hlbiBgY21kYCBpcyB0aGUgY29tbWFuZCBuYW1lLCB0aGVuIHRoaXMgaXMgdGhlIG9wdGlvbnMgdG8gcGFzc1xuXHQgKiBpbnRvIHRoZSBgQ29tbWFuZGAgY29uc3RydWN0b3IuXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29tbWFuZChjbWQsIHBhcmFtcykge1xuXHRcdGNvbnN0IGNtZHMgPSB0aGlzLmNvbW1hbmRzLmFkZChjbWQsIHBhcmFtcyk7XG5cdFx0Zm9yIChjb25zdCBjbWQgb2YgY21kcykge1xuXHRcdFx0bG9nKGBBZGRpbmcgY29tbWFuZDogJHtoaWdobGlnaHQoY21kLm5hbWUpfWApO1xuXHRcdFx0dGhpcy5yZWdpc3RlcihjbWQpO1xuXHRcdH1cblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhbiBleHRlcm5hbCBwYWNrYWdlIGFzIGEgY29tbWFuZCBjb250ZXh0IHRoYXQgaW52b2tlcyB0aGUgcGFja2FnZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBleHQgLSBBbiBvYmplY3Qgb2Zcblx0ICogZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBwYXRocyBvciBpbnN0YW5jZXMsIGFuIGV4dGVuc2lvbiBwYXRoLCBhbiBgRXh0ZW5zaW9uYCBpbnN0YW5jZSxcblx0ICogb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIEFuIGV4dGVuc2lvbiBwYXRoIG1heSBiZSBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEgTm9kZS5qc1xuXHQgKiBtb2R1bGUsIGEgcGF0aCB0byBhIGAuanNgIGZpbGUsIG9yIHRoZSBuYW1lIG9mIGEgZXhlY3V0YWJsZS4gTWF5IGFsc28gYmUgYW4gYEV4dGVuc2lvbk1hcGBcblx0ICogaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZV0gLSBUaGUgZXh0ZW5zaW9uIG5hbWUgdXNlZCBmb3IgdGhlIGNvbnRleHQgbmFtZS4gSWYgbm90IHNldCwgaXQgd2lsbFxuXHQgKiBhdHRlbXB0IHRvIGZpbmQgYSBgcGFja2FnZS5qc29uYCB3aXRoIGEgYGNsaS1raXQubmFtZWAgdmFsdWUuXG5cdCAqIEByZXR1cm5zIHtDb250ZXh0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0ZXh0ZW5zaW9uKGV4dCwgbmFtZSkge1xuXHRcdGNvbnN0IGV4dHMgPSB0aGlzLmV4dGVuc2lvbnMuYWRkKGV4dCwgbmFtZSk7XG5cdFx0Zm9yIChjb25zdCBleHQgb2YgZXh0cykge1xuXHRcdFx0bG9nKGBBZGRpbmcgZXh0ZW5zaW9uOiAke2hpZ2hsaWdodChleHQubmFtZSl9YCk7XG5cdFx0XHR0aGlzLnJlZ2lzdGVyKGV4dCk7XG5cdFx0fVxuXHRcdHRoaXMucmV2Kys7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVuZGVycyB0aGUgaGVscCBzY3JlZW4gZm9yIHRoaXMgY29udGV4dCBpbmNsdWRpbmcgdGhlIHBhcmVudCBjb250ZXh0cy5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgcGFyYW1ldGVycy5cblx0ICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRnZW5lcmF0ZUhlbHAob3B0cyA9IHt9KSB7XG5cdFx0cmV0dXJuIHRoaXMuaG9vaygnZ2VuZXJhdGVIZWxwJywgcmVzdWx0cyA9PiB7XG5cdFx0XHRjb25zdCBzY29wZXMgPSBbXTtcblx0XHRcdGxldCBjdHggPSB0aGlzO1xuXG5cdFx0XHR3aGlsZSAoY3R4KSB7XG5cdFx0XHRcdHNjb3Blcy5wdXNoKHtcblx0XHRcdFx0XHR0aXRsZTogYCR7Y3R4LnRpdGxlfSBvcHRpb25zYCxcblx0XHRcdFx0XHRuYW1lOiBjdHgubmFtZSxcblx0XHRcdFx0XHQuLi5jdHgub3B0aW9ucy5nZW5lcmF0ZUhlbHAoKVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmVzdWx0cy5jb250ZXh0cy51bnNoaWZ0KGN0eC5uYW1lKTtcblx0XHRcdFx0Y3R4ID0gY3R4LnBhcmVudDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gcmVtb3ZlIGR1cGxpY2F0ZSBvcHRpb25zXG5cdFx0XHRjb25zdCBsb25ncyA9IG5ldyBTZXQoKTtcblx0XHRcdGNvbnN0IHNob3J0cyA9IG5ldyBTZXQoKTtcblx0XHRcdGxldCBqID0gc2NvcGVzLmxlbmd0aDtcblx0XHRcdHdoaWxlIChqLS0pIHtcblx0XHRcdFx0Zm9yIChjb25zdCBvcHRpb25zIG9mIE9iamVjdC52YWx1ZXMoc2NvcGVzW2pdLmdyb3VwcykpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdGNvbnN0IHsgbG9uZywgc2hvcnQgfSA9IG9wdGlvbnNbaV07XG5cdFx0XHRcdFx0XHRsZXQgbnVrZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0aWYgKGxvbmcgIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGxvbmdzLmhhcyhsb25nKSkge1xuXHRcdFx0XHRcdFx0XHRcdG51a2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGxvbmdzLmFkZChsb25nKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKHNob3J0ICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChzaG9ydHMuaGFzKHNob3J0KSkge1xuXHRcdFx0XHRcdFx0XHRcdG51a2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHNob3J0cy5hZGQoc2hvcnQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAobnVrZSkge1xuXHRcdFx0XHRcdFx0XHRzY29wZXNbal0uY291bnQtLTtcblx0XHRcdFx0XHRcdFx0b3B0aW9ucy5zcGxpY2UoaS0tLCAxKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IHRoZSBkZXNjcmlwdGlvblxuXHRcdFx0cmVzdWx0cy5kZXNjID0gdGhpcy5kZXNjID8gU3RyaW5nKHRoaXMuZGVzYykudHJpbSgpLnJlcGxhY2UoL15cXHcvLCBjID0+IGMudG9Mb2NhbGVVcHBlckNhc2UoKSkgOiBudWxsO1xuXG5cdFx0XHQvLyBzZXQgdGhlIGNvbW1hbmRzXG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzID0ge1xuXHRcdFx0XHR0aXRsZTogdGhpcy5wYXJlbnQgPyBgJHt0aGlzLnRpdGxlfSBjb21tYW5kc2AgOiAnQ29tbWFuZHMnLFxuXHRcdFx0XHQuLi50aGlzLmNvbW1hbmRzLmdlbmVyYXRlSGVscCgpXG5cdFx0XHR9O1xuXG5cdFx0XHRjb25zdCBleHQgPSB0aGlzLmV4dGVuc2lvbnMuZ2VuZXJhdGVIZWxwKCk7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmNvdW50ICs9IGV4dC5jb3VudDtcblx0XHRcdHJlc3VsdHMuY29tbWFuZHMuZW50cmllcy5wdXNoLmFwcGx5KHJlc3VsdHMuY29tbWFuZHMuZW50cmllcywgZXh0LmVudHJpZXMpO1xuXG5cdFx0XHQvLyB1cGRhdGUgdGhlIGRlZmF1bHQgY29tbWFuZFxuXHRcdFx0aWYgKHRoaXMuZGVmYXVsdENvbW1hbmQpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBjbWQgb2YgcmVzdWx0cy5jb21tYW5kcy5lbnRyaWVzKSB7XG5cdFx0XHRcdFx0aWYgKGNtZC5uYW1lID09PSB0aGlzLmRlZmF1bHRDb21tYW5kKSB7XG5cdFx0XHRcdFx0XHRjbWQuZGVmYXVsdCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IHRoZSBhcmd1bWVudHNcblx0XHRcdHJlc3VsdHMuYXJndW1lbnRzID0ge1xuXHRcdFx0XHR0aXRsZTogdGhpcy5wYXJlbnQgPyBgJHt0aGlzLnRpdGxlfSBhcmd1bWVudHNgIDogJ0FyZ3VtZW50cycsXG5cdFx0XHRcdC4uLnRoaXMuYXJncy5nZW5lcmF0ZUhlbHAoKVxuXHRcdFx0fTtcblxuXHRcdFx0Ly8gc2V0IHRoZSBvcHRpb25zXG5cdFx0XHRyZXN1bHRzLm9wdGlvbnMgPSB7XG5cdFx0XHRcdGNvdW50OiBzY29wZXMucmVkdWNlKChwLCBjKSA9PiBwICsgYy5jb3VudCwgMCksXG5cdFx0XHRcdHNjb3Blc1xuXHRcdFx0fTtcblxuXHRcdFx0Ly8gc2V0IHRoZSB1c2FnZSBsaW5lXG5cdFx0XHRjb25zdCB1c2FnZSA9IFtdO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkob3B0cy5wYXJlbnRDb250ZXh0TmFtZXMpKSB7XG5cdFx0XHRcdHVzYWdlLnB1c2guYXBwbHkodXNhZ2UsIG9wdHMucGFyZW50Q29udGV4dE5hbWVzKTtcblx0XHRcdH1cblx0XHRcdHVzYWdlLnB1c2guYXBwbHkodXNhZ2UsIHJlc3VsdHMuY29udGV4dHMuc2xpY2UoKSk7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmNvdW50ICYmIHVzYWdlLnB1c2goJzxjb21tYW5kPicpO1xuXHRcdFx0cmVzdWx0cy5vcHRpb25zLmNvdW50ICYmIHVzYWdlLnB1c2goJ1tvcHRpb25zXScpO1xuXHRcdFx0dXNhZ2UucHVzaC5hcHBseSh1c2FnZSwgcmVzdWx0cy5hcmd1bWVudHMuZW50cmllcy5tYXAoYXJnID0+IHtcblx0XHRcdFx0Y29uc3QgbmFtZSA9IGA8JHthcmcubmFtZX0ke2FyZy5tdWx0aXBsZSA/ICcuLi4nIDogJyd9PmA7XG5cdFx0XHRcdHJldHVybiBhcmcucmVxdWlyZWQgPyBuYW1lIDogYFske25hbWV9XWA7XG5cdFx0XHR9KSk7XG5cdFx0XHRyZXN1bHRzLnVzYWdlID0ge1xuXHRcdFx0XHR0aXRsZTogJ1VzYWdlJyxcblx0XHRcdFx0dGV4dDogdXNhZ2Uuam9pbignICcpXG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHR9KSh7XG5cdFx0XHRjb250ZXh0czogW10sXG5cdFx0XHRlcnJvcjogdW5kZWZpbmVkLFxuXHRcdFx0c3VnZ2VzdGlvbnM6IFtdLFxuXHRcdFx0d2FybmluZ3M6IHVuZGVmaW5lZFxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNjYW4gcGFyZW50IGNvbnRleHRzIHRvIGZpbmQgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSBpbiB0aGUgdG9wLW1vc3QgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZS5cblx0ICogQHBhcmFtIHsqfSBkZWZhdWx0VmFsdWUgLSBBIGRlZmF1bHQgdmFsdWUgaWYgbm8gdmFsdWUgaXMgZm91bmQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGdldChuYW1lLCBkZWZhdWx0VmFsdWUpIHtcblx0XHRsZXQgdmFsdWUgPSB0aGlzW25hbWVdO1xuXHRcdGZvciAobGV0IHAgPSB0aGlzLnBhcmVudDsgcDsgcCA9IHAucGFyZW50KSB7XG5cdFx0XHR2YWx1ZSA9IHAuZ2V0KG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGlzIGNvbnRleHQgd2l0aCBwYXJhbXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fENvbnRleHR9IHBhcmFtcyAtIFZhcmlvdXMgcGFyYW1ldGVyc1xuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGluaXQocGFyYW1zKSB7XG5cdFx0aWYgKCFwYXJhbXMgfHwgdHlwZW9mIHBhcmFtcyAhPT0gJ29iamVjdCcgfHwgKHBhcmFtcy5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgIXBhcmFtcy5jbGlraXQuaGFzKCdDb250ZXh0JykpKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIHBhcmFtZXRlcnMgdG8gYmUgYW4gb2JqZWN0IG9yIENvbnRleHQnLCB7IG5hbWU6ICdwYXJhbXMnLCBzY29wZTogJ0NvbnRleHQuaW5pdCcsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0aWYgKHBhcmFtcy5jbGlraXQgaW5zdGFuY2VvZiBTZXQgJiYgIXBhcmFtcy5jbGlraXQuaGFzKCdDb250ZXh0JykpIHtcblx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgcGFyYW1ldGVycyB0byBiZSBhbiBvYmplY3Qgb3IgQ29udGV4dCcsIHsgbmFtZTogJ3BhcmFtcycsIHNjb3BlOiAnQ29udGV4dC5pbml0JywgdmFsdWU6IHBhcmFtcyB9KTtcblx0XHR9XG5cblx0XHR0aGlzLmFyZ3MgICAgICAgPSBuZXcgQXJndW1lbnRMaXN0KCksXG5cdFx0dGhpcy5iYW5uZXIgICAgID0gcGFyYW1zLmJhbm5lcjtcblx0XHR0aGlzLmNvbW1hbmRzICAgPSBuZXcgQ29tbWFuZE1hcCgpLFxuXHRcdHRoaXMuZGVzYyAgICAgICA9IHBhcmFtcy5kZXNjO1xuXHRcdHRoaXMuZXh0ZW5zaW9ucyA9IG5ldyBFeHRlbnNpb25NYXAoKSxcblx0XHR0aGlzLmxvb2t1cCAgICAgPSBuZXcgTG9va3VwKCksXG5cdFx0dGhpcy5uYW1lICAgICAgID0gcGFyYW1zLm5hbWU7XG5cdFx0dGhpcy5vcHRpb25zICAgID0gbmV3IE9wdGlvbk1hcCgpO1xuXHRcdHRoaXMucGFyZW50ICAgICA9IHBhcmFtcy5wYXJlbnQ7XG5cdFx0dGhpcy5yZXYgICAgICAgID0gMDtcblx0XHR0aGlzLnRpdGxlICAgICAgPSBwYXJhbXMudGl0bGUgfHwgcGFyYW1zLm5hbWU7XG5cdFx0dGhpcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHMgPSAhIXBhcmFtcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHM7XG5cblx0XHRwYXJhbXMuYXJncyAgICAgICAmJiB0aGlzLmFyZ3VtZW50KHBhcmFtcy5hcmdzKTtcblx0XHRwYXJhbXMuY29tbWFuZHMgICAmJiB0aGlzLmNvbW1hbmQocGFyYW1zLmNvbW1hbmRzKTtcblx0XHRwYXJhbXMuZXh0ZW5zaW9ucyAmJiB0aGlzLmV4dGVuc2lvbihwYXJhbXMuZXh0ZW5zaW9ucyk7XG5cdFx0cGFyYW1zLm9wdGlvbnMgICAgJiYgdGhpcy5vcHRpb24ocGFyYW1zLm9wdGlvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gb3B0aW9uIHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fE9wdGlvbnxPcHRpb25NYXB8QXJyYXk8T2JqZWN0fE9wdGlvbnxTdHJpbmc+fSBmb3JtYXQgLSBBbiBvcHRpb25cblx0ICogZm9ybWF0LCBhbiBvYmplY3Qgb2YgZm9ybWF0IHRvIG9wdGlvbiBkZXNjcmlwdGlvbnMsIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtcyBvciBgT3B0aW9uYFxuXHQgKiBpbnN0YW5jZXMsIGFuIGBPcHRpb25gIGluc3RhbmNlLCBhbiBgT3B0aW9uTWFwYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgYE9wdGlvbmBcblx0ICogY29uc3RydWN0b3IgcGFyYW1zIGFuZCBgT3B0aW9uYCBpbnN0YW5jZXMgZ3JvdXBlZCBieSBgU3RyaW5nYCBsYWJlbHMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fE9wdGlvbnxTdHJpbmd9IFtwYXJhbXNdIC0gV2hlbiBgZm9ybWF0YCBpcyBhIGZvcm1hdCBzdHJpbmcsIHRoZW4gdGhpc1xuXHQgKiBhcmd1bWVudCBpcyBlaXRoZXIgYE9wdGlvbmAgY29uc3RydWN0b3IgcGFyYW1ldGVycywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIG9yIGFuIG9wdGlvblxuXHQgKiBkZXNjcmlwdGlvbi5cblx0ICogQHJldHVybnMge0NvbnRleHR9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nKTsgLy8gZm9ybWF0IGZsYWdcblx0ICogICBjdHgub3B0aW9uKCctLWZvbycsICdlbmFibGVzIGZvbyBtb2RlJyk7IC8vIGZvcm1hdCB3aXRoIGRlc2NyaXB0aW9uXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nLCB7IGRlc2M6ICdlbmFibGVzIGZvbyBtb2RlJyB9KTsgLy8gZm9ybWF0IHdpdGggT3B0aW9uIGN0b3IgcGFyYW1zXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IG51bGwgfSk7IC8vIG9iamVjdCB3aXRoIGZvcm1hdCBmbGFnXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IHsgZGVzYzogJ2VuYWJsZXMgZm9vIG1vZGUnIH0gfSk7IC8vIG9iamVjdCB3aXRoIE9wdGlvbiBjdG9yIHBhcmFtc1xuXHQgKiAgIGN0eC5vcHRpb24oeyAnLS1mb28nOiBuZXcgT3B0aW9uKCkgfSk7IC8vIG9iamVjdCBvZiBgT3B0aW9uYCBpbnN0YW5jZVxuXHQgKiAgIGN0eC5vcHRpb24obmV3IE9wdGlvbignLS1mb28nKSk7IC8vIGBPcHRpb25gIGluc3RhbmNlXG5cdCAqICAgY3R4Lm9wdGlvbihuZXcgT3B0aW9uTWFwKCkpOyAvLyBgT3B0aW9uTWFwYCBmcm9tIGFub3RoZXIgaW5zdGFuY2Vcblx0ICogICBjdHgub3B0aW9uKFsgJ1NvbWUgR3JvdXAnLCBuZXcgT3B0aW9uKCctLWZvbycpLCAnQW5vdGhlciBHcm91cCcsIHsgJy0tYmFyJzogbnVsbCB9IF0pOyAvLyBhbiBhcnJheSBvZiBncm91cGVkIG9wdGlvbnNcblx0ICovXG5cdG9wdGlvbihmb3JtYXQsIHBhcmFtcykge1xuXHRcdGNvbnN0IG9wdHMgPSB0aGlzLm9wdGlvbnMuYWRkKGZvcm1hdCwgcGFyYW1zKTtcblxuXHRcdGZvciAoY29uc3Qgb3B0IG9mIG9wdHMpIHtcblx0XHRcdG9wdC5wYXJlbnQgPSB0aGlzO1xuXG5cdFx0XHRpZiAob3B0LmxvbmcpIHtcblx0XHRcdFx0dGhpcy5sb29rdXAubG9uZ1tvcHQubG9uZ10gPSBvcHQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvcHQuc2hvcnQpIHtcblx0XHRcdFx0dGhpcy5sb29rdXAuc2hvcnRbb3B0LnNob3J0XSA9IG9wdDtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCBbIGFsaWFzLCB2aXNpYmxlIF0gb2YgT2JqZWN0LmVudHJpZXMob3B0LmFsaWFzZXMubG9uZykpIHtcblx0XHRcdFx0aWYgKHZpc2libGUpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cC5sb25nW2FsaWFzXSA9IG9wdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IFsgYWxpYXMsIHZpc2libGUgXSBvZiBPYmplY3QuZW50cmllcyhvcHQuYWxpYXNlcy5zaG9ydCkpIHtcblx0XHRcdFx0aWYgKHZpc2libGUpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cC5zaG9ydFthbGlhc10gPSBvcHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLnJldisrO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2NhbiBwYXJlbnQgY29udGV4dHMgdG8gZmluZCB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGluIHRoZSBib3R0b20tbW9zdCBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lLlxuXHQgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSAtIEEgZGVmYXVsdCB2YWx1ZSBpZiBubyB2YWx1ZSBpcyBmb3VuZC5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cHJvcChuYW1lLCBkZWZhdWx0VmFsdWUpIHtcblx0XHRsZXQgdmFsdWUgPSB0aGlzW25hbWVdO1xuXHRcdGZvciAobGV0IHAgPSB0aGlzLnBhcmVudDsgdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBwOyBwID0gcC5wYXJlbnQpIHtcblx0XHRcdHZhbHVlID0gcC5wcm9wKG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSBjb21tYW5kIG9yIGV4dGVuc2lvbiB0byBhZGQgdG8gdGhlIGxvb2t1cC5cblx0ICpcblx0ICogQHBhcmFtIHtDb21tYW5kfEV4dGVuc2lvbn0gaXQgLSBUaGUgY29tbWFuZCBvciBleHRlbnNpb24gaW5zdGFuY2UuXG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cmVnaXN0ZXIoaXQpIHtcblx0XHRjb25zdCBkZXN0ID0gaXQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJykgPyAnZXh0ZW5zaW9ucycgOiAnY29tbWFuZHMnO1xuXHRcdGl0LnBhcmVudCA9IHRoaXM7XG5cdFx0dGhpcy5sb29rdXBbZGVzdF1baXQubmFtZV0gPSBpdDtcblxuXHRcdGlmIChpdC5hbGlhc2VzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGFsaWFzIG9mIE9iamVjdC5rZXlzKGl0LmFsaWFzZXMpKSB7XG5cdFx0XHRcdGlmICghdGhpc1tkZXN0XS5oYXMoYWxpYXMpKSB7XG5cdFx0XHRcdFx0dGhpcy5sb29rdXBbZGVzdF1bYWxpYXNdID0gaXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdLCJmaWxlIjoicGFyc2VyL2NvbnRleHQuanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci9jb250ZXh0LmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsImRlYnVnIiwic3R5bGVzIiwiQ29udGV4dCIsIkhvb2tFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJwYXJhbXMiLCJpbml0IiwiYXJndW1lbnQiLCJhcmciLCJhcmdzIiwiYWRkIiwicmV2IiwiY29tbWFuZCIsImNtZCIsImNtZHMiLCJjb21tYW5kcyIsIm5hbWUiLCJyZWdpc3RlciIsImV4dGVuc2lvbiIsImV4dCIsImV4dHMiLCJleHRlbnNpb25zIiwiZ2VuZXJhdGVIZWxwIiwib3B0cyIsImhvb2siLCJyZXN1bHRzIiwic2NvcGVzIiwiY3R4IiwicHVzaCIsInRpdGxlIiwib3B0aW9ucyIsImNvbnRleHRzIiwidW5zaGlmdCIsInBhcmVudCIsImxvbmdzIiwiU2V0Iiwic2hvcnRzIiwiaiIsImxlbmd0aCIsIk9iamVjdCIsInZhbHVlcyIsImdyb3VwcyIsImkiLCJsb25nIiwic2hvcnQiLCJudWtlIiwiaGFzIiwiY291bnQiLCJzcGxpY2UiLCJkZXNjIiwiU3RyaW5nIiwidHJpbSIsInJlcGxhY2UiLCJjIiwidG9Mb2NhbGVVcHBlckNhc2UiLCJlbnRyaWVzIiwiYXBwbHkiLCJkZWZhdWx0Q29tbWFuZCIsImRlZmF1bHQiLCJhcmd1bWVudHMiLCJyZWR1Y2UiLCJwIiwidXNhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJwYXJlbnRDb250ZXh0TmFtZXMiLCJzbGljZSIsIm1hcCIsIm11bHRpcGxlIiwicmVxdWlyZWQiLCJ0ZXh0Iiwiam9pbiIsImVycm9yIiwidW5kZWZpbmVkIiwic3VnZ2VzdGlvbnMiLCJ3YXJuaW5ncyIsImdldCIsImRlZmF1bHRWYWx1ZSIsInZhbHVlIiwiY2xpa2l0IiwiRSIsIklOVkFMSURfQVJHVU1FTlQiLCJzY29wZSIsIkFyZ3VtZW50TGlzdCIsImF1dG9IaWRlQmFubmVyIiwiYmFubmVyIiwiQ29tbWFuZE1hcCIsImVycm9ySWZVbmtub3duQ29tbWFuZCIsIkV4dGVuc2lvbk1hcCIsImhlbHBFeGl0Q29kZSIsImhlbHBUZW1wbGF0ZUZpbGUiLCJoaWRlTm9CYW5uZXJPcHRpb24iLCJoaWRlTm9Db2xvck9wdGlvbiIsImxvb2t1cCIsIkxvb2t1cCIsIm5vZGVWZXJzaW9uIiwiT3B0aW9uTWFwIiwic2hvd0Jhbm5lckZvckV4dGVybmFsQ0xJcyIsInNob3dIZWxwT25FcnJvciIsInRyZWF0VW5rbm93bk9wdGlvbnNBc0FyZ3VtZW50cyIsInZlcnNpb24iLCJvcHRpb24iLCJmb3JtYXQiLCJvcHQiLCJhbGlhcyIsInZpc2libGUiLCJhbGlhc2VzIiwicHJvcCIsIml0IiwiZGVzdCIsImtleXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFVLG9CQUFNLGlCQUFOLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxlQUFNQyxNQUE1QjtBQUVBOzs7Ozs7O0FBTWUsTUFBTUMsT0FBTixTQUFzQkMsb0JBQXRCLENBQWtDO0FBQ2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DQUMsRUFBQUEsV0FBVyxDQUFDQyxNQUFNLEdBQUcsRUFBVixFQUFjO0FBQ3hCO0FBQ0Esa0NBQW1CLElBQW5CLEVBQXlCLFNBQXpCO0FBQ0EsU0FBS0MsSUFBTCxDQUFVRCxNQUFWO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7O0FBVUFFLEVBQUFBLFFBQVEsQ0FBQ0MsR0FBRCxFQUFNO0FBQ2IsU0FBS0MsSUFBTCxDQUFVQyxHQUFWLENBQWNGLEdBQWQ7QUFDQSxTQUFLRyxHQUFMO0FBQ0EsV0FBTyxJQUFQO0FBQ0E7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0FBYUFDLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBRCxFQUFNUixNQUFOLEVBQWM7QUFDcEIsVUFBTVMsSUFBSSxHQUFHLEtBQUtDLFFBQUwsQ0FB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RUFBVy9ELEdBQVgsQ0FBZTBELEtBQWYsQ0FBTCxFQUE0QjtBQUMzQixlQUFLWCxNQUFMLENBQVlnQixJQUFaLEVBQWtCTCxLQUFsQixJQUEyQkksRUFBM0I7QUFDQTtBQUNEO0FBQ0Q7QUFDRDs7QUFqWCtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFyZ3VtZW50TGlzdCBmcm9tICcuL2FyZ3VtZW50LWxpc3QnO1xuaW1wb3J0IENvbW1hbmRNYXAgZnJvbSAnLi9jb21tYW5kLW1hcCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnLi4vbGliL2RlYnVnJztcbmltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IEV4dGVuc2lvbk1hcCBmcm9tICcuL2V4dGVuc2lvbi1tYXAnO1xuaW1wb3J0IEhvb2tFbWl0dGVyIGZyb20gJ2hvb2stZW1pdHRlcic7XG5pbXBvcnQgTG9va3VwIGZyb20gJy4vbG9va3VwJztcbmltcG9ydCBPcHRpb25NYXAgZnJvbSAnLi9vcHRpb24tbWFwJztcblxuaW1wb3J0IHsgZGVjbGFyZUNMSUtpdENsYXNzIH0gZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5jb25zdCB7IGxvZyB9ID0gZGVidWcoJ2NsaS1raXQ6Y29udGV4dCcpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IGRlYnVnLnN0eWxlcztcblxuLyoqXG4gKiBEZWZpbmVzIGEgY29udGV4dCB0aGF0IGNvbnRhaW5zIGNvbW1hbmRzLCBvcHRpb25zLCBhbmQgYXJncy4gU2VydmVzIGFzIHRoZVxuICogYmFzZSBjbGFzcyBmb3IgYENMSWAgYW5kIGBDb250ZXh0YCBvYmplY3RzLlxuICpcbiAqIEBleHRlbmRzIHtIb29rRW1pdHRlcn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGV4dCBleHRlbmRzIEhvb2tFbWl0dGVyIHtcblx0LyoqXG5cdCAqIENvbnN0cnVjdHMgYSBjb250ZXh0IGluc3RhbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxDb250ZXh0fSBbcGFyYW1zXSAtIFZhcmlvdXMgcGFyYW1ldGVycy5cblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEFyZ3VtZW50fEFyZ3VtZW50TGlzdHxBcnJheTxPYmplY3R8U3RyaW5nfEFyZ3VtZW50Pn0gW3BhcmFtcy5hcmdzXSAtXG5cdCAqIEFuIG9iamVjdCBvZiBhcmd1bWVudCBuYW1lcyB0byBhcmd1bWVudCBkZXNjcmlwdG9ycywgYW4gYXJndW1lbnQgbmFtZSwgYW4gYEFyZ3VtZW50YFxuXHQgKiBpbnN0YW5jZSwgYW4gYEFyZ3VtZW50TGlzdGAgaW5zdGFuY2UsIG9yIGFycmF5IG9mIG9iamVjdCBkZXNjcmlwdG9ycywgYXJndW1lbnQgbmFtZXMsIGFuZFxuXHQgKiBgQXJndW1lbnRgIGluc3RhbmNlcy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbcGFyYW1zLmNhbWVsQ2FzZT10cnVlXSAtIENhbWVsIGNhc2Ugb3B0aW9uIG5hbWVzLlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8Q29tbWFuZHxDb21tYW5kTWFwfEFycmF5LjxPYmplY3R8U3RyaW5nfENvbW1hbmQ+fSBbcGFyYW1zLmNvbW1hbmRzXSAtXG5cdCAqIEFuIG9iamVjdCB1c2VkIGZvciBgQ29tbWFuZGAgY29uc3RydWN0b3IgcGFyYW1zLCBhIHBhdGggdG8gYSBkaXJlY3Rvcnkgb3IgYSBgLmpzYCBmaWxlLCBhXG5cdCAqIGBDb21tYW5kYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgdGhvc2UgdHlwZXMuIE1heSBhbHNvIGJlIGEgYENvbW1hbmRNYXBgIGluc3RhbmNlLiBJZlxuXHQgKiBgY21kYCBpcyBhIGBTdHJpbmdgIGFuZCBgcGFyYW1zYCBpcyBwcmVzZW50LCB0aGVuIGl0IHdpbGwgdHJlYXQgYGNtZGAgYXMgdGhlIGNvbW1hbmQgbmFtZSxcblx0ICogbm90IGEgZmlsZSBwYXRoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5kZXNjXSAtIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgQ0xJIG9yIGNvbW1hbmQgZGlzcGxheWVkIGluIHRoZSBoZWxwXG5cdCAqIG91dHB1dC4gSWYgY29udGV4dCBpcyBhIGNvbW1hbmQgd2l0aCBhIGhlbHAgaGVhZGVyIGRlZmluZWQsIHRoaXMgZGVzY3JpcHRpb24gaXMgbm90XG5cdCAqIGRpc3BsYXllZC5cblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEV4dGVuc2lvbnxFeHRlbnNpb25NYXB8QXJyYXkuPFN0cmluZ3xFeHRlbnNpb24+fSBbcGFyYW1zLmV4dGVuc2lvbnNdIC1cblx0ICogQW4gb2JqZWN0IG9mIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gcGF0aHMgb3IgaW5zdGFuY2VzLCBhbiBleHRlbnNpb24gcGF0aCwgYW5cblx0ICogYEV4dGVuc2lvbmAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBBbiBleHRlbnNpb24gcGF0aCBtYXkgYmUgYSBkaXJlY3Rvcnlcblx0ICogY29udGFpbmluZyBhIE5vZGUuanMgbW9kdWxlLCBhIHBhdGggdG8gYSBgLmpzYCBmaWxlLCBvciB0aGUgbmFtZSBvZiBhIGV4ZWN1dGFibGUuIE1heSBhbHNvXG5cdCAqIGJlIGFuIGBFeHRlbnNpb25NYXBgIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmFtcy5uYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBjb250ZXh0IHN1Y2ggYXMgdGhlIHByb2dyYW0gb3IgdGhlIGNvbW1hbmRcblx0ICogbmFtZS5cblx0ICogQHBhcmFtIHtPYmplY3R8T3B0aW9ufE9wdGlvbk1hcHxBcnJheTxPYmplY3R8T3B0aW9ufFN0cmluZz59IFtwYXJhbXMub3B0aW9uc10gLSBBbiBvYmplY3Qgb2Zcblx0ICogZm9ybWF0IHRvIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtcywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIG9yIGFuIGFycmF5IG9mIGBPcHRpb25gXG5cdCAqIGNvbnN0cnVjdG9yIHBhcmFtcyBhbmQgYE9wdGlvbmAgaW5zdGFuY2VzIGdyb3VwZWQgYnkgYFN0cmluZ2AgbGFiZWxzLlxuXHQgKiBAcGFyYW0ge0NvbnRleHR9IFtwYXJhbXMucGFyZW50XSAtIFRoZSBwYXJlbnQgY29udGV4dC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtwYXJhbXMudGl0bGVdIC0gVGhlIGNvbnRleHQgdGl0bGUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW3BhcmFtcy50cmVhdFVua25vd25PcHRpb25zQXNBcmd1bWVudHM9ZmFsc2VdIC0gV2hlbiBgdHJ1ZWAsIGFueSBhcmd1bWVudCBpc1xuXHQgKiBlbmNvdW50ZXJlZCBkdXJpbmcgcGFyc2luZyB0aGF0IHJlc2VtYmxlcyBhIG9wdGlvbiB0aGF0IGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGFkZCBpdFxuXHQgKiB1bnRvdWNoZWQgdG8gYF9gIGFzIGFuIGFyZ3VtZW50IGFzIHdlbGwgYXMgdG8gYGFyZ3ZgIGFzIGEgYm9vbGVhbiBmbGFnLiBXaGVuIGBmYWxzZWAsIGl0IHdpbGxcblx0ICogb25seSBhZGQgdGhlIGFyZ3VtZW50IHRvIGBhcmd2YCBhcyBhIGJvb2xlYW4gZmxhZy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKHBhcmFtcyA9IHt9KSB7XG5cdFx0c3VwZXIoKTtcblx0XHRkZWNsYXJlQ0xJS2l0Q2xhc3ModGhpcywgJ0NvbnRleHQnKTtcblx0XHR0aGlzLmluaXQocGFyYW1zKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGFuIGFyZ3VtZW50IHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfEFyZ3VtZW50fEFyZ3VtZW50TGlzdHxBcnJheTxPYmplY3R8U3RyaW5nfEFyZ3VtZW50Pn0gYXJnIC0gQW4gb2JqZWN0XG5cdCAqIG9mIGFyZ3VtZW50IG5hbWVzIHRvIGFyZ3VtZW50IGRlc2NyaXB0b3JzLCBhbiBhcmd1bWVudCBuYW1lLCBhbiBgQXJndW1lbnRgIGluc3RhbmNlLCBhblxuXHQgKiBgQXJndW1lbnRMaXN0YCBpbnN0YW5jZSwgb3IgYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzLCBhcmd1bWVudCBuYW1lcywgYW5kIGBBcmd1bWVudGBcblx0ICogaW5zdGFuY2VzLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFyZ3VtZW50KGFyZykge1xuXHRcdHRoaXMuYXJncy5hZGQoYXJnKTtcblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBjb21tYW5kIHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfENvbW1hbmR8Q29tbWFuZE1hcHxBcnJheS48T2JqZWN0fFN0cmluZ3xDb21tYW5kPn0gY21kIC0gQW4gb2JqZWN0XG5cdCAqIHVzZWQgZm9yIGBDb21tYW5kYCBjb25zdHJ1Y3RvciBwYXJhbXMsIGEgcGF0aCB0byBhIGRpcmVjdG9yeSBvciBhIGAuanNgIGZpbGUsIGEgYENvbW1hbmRgXG5cdCAqIGluc3RhbmNlLCBvciBhbiBhcnJheSBvZiB0aG9zZSB0eXBlcy4gTWF5IGFsc28gYmUgYSBgQ29tbWFuZE1hcGAgaW5zdGFuY2UuIElmIGBjbWRgIGlzIGFcblx0ICogYFN0cmluZ2AgYW5kIGBwYXJhbXNgIGlzIHByZXNlbnQsIHRoZW4gaXQgd2lsbCB0cmVhdCBgY21kYCBhcyB0aGUgY29tbWFuZCBuYW1lLCBub3QgYSBmaWxlXG5cdCAqIHBhdGguXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSAtIFdoZW4gYGNtZGAgaXMgdGhlIGNvbW1hbmQgbmFtZSwgdGhlbiB0aGlzIGlzIHRoZSBvcHRpb25zIHRvIHBhc3Ncblx0ICogaW50byB0aGUgYENvbW1hbmRgIGNvbnN0cnVjdG9yLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbW1hbmQoY21kLCBwYXJhbXMpIHtcblx0XHRjb25zdCBjbWRzID0gdGhpcy5jb21tYW5kcy5hZGQoY21kLCBwYXJhbXMpO1xuXHRcdGZvciAoY29uc3QgY21kIG9mIGNtZHMpIHtcblx0XHRcdGxvZyhgQWRkaW5nIGNvbW1hbmQ6ICR7aGlnaGxpZ2h0KGNtZC5uYW1lKX1gKTtcblx0XHRcdHRoaXMucmVnaXN0ZXIoY21kKTtcblx0XHR9XG5cdFx0dGhpcy5yZXYrKztcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYW4gZXh0ZXJuYWwgcGFja2FnZSBhcyBhIGNvbW1hbmQgY29udGV4dCB0aGF0IGludm9rZXMgdGhlIHBhY2thZ2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ3xFeHRlbnNpb258RXh0ZW5zaW9uTWFwfEFycmF5LjxTdHJpbmd8RXh0ZW5zaW9uPn0gZXh0IC0gQW4gb2JqZWN0IG9mXG5cdCAqIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gcGF0aHMgb3IgaW5zdGFuY2VzLCBhbiBleHRlbnNpb24gcGF0aCwgYW4gYEV4dGVuc2lvbmAgaW5zdGFuY2UsXG5cdCAqIG9yIGFuIGFycmF5IG9mIHRob3NlIHR5cGVzLiBBbiBleHRlbnNpb24gcGF0aCBtYXkgYmUgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhIE5vZGUuanNcblx0ICogbW9kdWxlLCBhIHBhdGggdG8gYSBgLmpzYCBmaWxlLCBvciB0aGUgbmFtZSBvZiBhIGV4ZWN1dGFibGUuIE1heSBhbHNvIGJlIGFuIGBFeHRlbnNpb25NYXBgXG5cdCAqIGluc3RhbmNlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW25hbWVdIC0gVGhlIGV4dGVuc2lvbiBuYW1lIHVzZWQgZm9yIHRoZSBjb250ZXh0IG5hbWUuIElmIG5vdCBzZXQsIGl0IHdpbGxcblx0ICogYXR0ZW1wdCB0byBmaW5kIGEgYHBhY2thZ2UuanNvbmAgd2l0aCBhIGBjbGkta2l0Lm5hbWVgIHZhbHVlLlxuXHQgKiBAcmV0dXJucyB7Q29udGV4dH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGV4dGVuc2lvbihleHQsIG5hbWUpIHtcblx0XHRjb25zdCBleHRzID0gdGhpcy5leHRlbnNpb25zLmFkZChleHQsIG5hbWUpO1xuXHRcdGZvciAoY29uc3QgZXh0IG9mIGV4dHMpIHtcblx0XHRcdGxvZyhgQWRkaW5nIGV4dGVuc2lvbjogJHtoaWdobGlnaHQoZXh0Lm5hbWUpfWApO1xuXHRcdFx0dGhpcy5yZWdpc3RlcihleHQpO1xuXHRcdH1cblx0XHR0aGlzLnJldisrO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbmRlcnMgdGhlIGhlbHAgc2NyZWVuIGZvciB0aGlzIGNvbnRleHQgaW5jbHVkaW5nIHRoZSBwYXJlbnQgY29udGV4dHMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIHBhcmFtZXRlcnMuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0Z2VuZXJhdGVIZWxwKG9wdHMgPSB7fSkge1xuXHRcdHJldHVybiB0aGlzLmhvb2soJ2dlbmVyYXRlSGVscCcsIHJlc3VsdHMgPT4ge1xuXHRcdFx0Y29uc3Qgc2NvcGVzID0gW107XG5cdFx0XHRsZXQgY3R4ID0gdGhpcztcblxuXHRcdFx0d2hpbGUgKGN0eCkge1xuXHRcdFx0XHRzY29wZXMucHVzaCh7XG5cdFx0XHRcdFx0dGl0bGU6IGAke2N0eC50aXRsZX0gb3B0aW9uc2AsXG5cdFx0XHRcdFx0bmFtZTogY3R4Lm5hbWUsXG5cdFx0XHRcdFx0Li4uY3R4Lm9wdGlvbnMuZ2VuZXJhdGVIZWxwKClcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJlc3VsdHMuY29udGV4dHMudW5zaGlmdChjdHgubmFtZSk7XG5cdFx0XHRcdGN0eCA9IGN0eC5wYXJlbnQ7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHJlbW92ZSBkdXBsaWNhdGUgb3B0aW9uc1xuXHRcdFx0Y29uc3QgbG9uZ3MgPSBuZXcgU2V0KCk7XG5cdFx0XHRjb25zdCBzaG9ydHMgPSBuZXcgU2V0KCk7XG5cdFx0XHRsZXQgaiA9IHNjb3Blcy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoai0tKSB7XG5cdFx0XHRcdGZvciAoY29uc3Qgb3B0aW9ucyBvZiBPYmplY3QudmFsdWVzKHNjb3Blc1tqXS5ncm91cHMpKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB7IGxvbmcsIHNob3J0IH0gPSBvcHRpb25zW2ldO1xuXHRcdFx0XHRcdFx0bGV0IG51a2UgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGlmIChsb25nICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChsb25ncy5oYXMobG9uZykpIHtcblx0XHRcdFx0XHRcdFx0XHRudWtlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRsb25ncy5hZGQobG9uZyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChzaG9ydCAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoc2hvcnRzLmhhcyhzaG9ydCkpIHtcblx0XHRcdFx0XHRcdFx0XHRudWtlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRzaG9ydHMuYWRkKHNob3J0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKG51a2UpIHtcblx0XHRcdFx0XHRcdFx0c2NvcGVzW2pdLmNvdW50LS07XG5cdFx0XHRcdFx0XHRcdG9wdGlvbnMuc3BsaWNlKGktLSwgMSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCB0aGUgZGVzY3JpcHRpb25cblx0XHRcdHJlc3VsdHMuZGVzYyA9IHRoaXMuZGVzYyA/IFN0cmluZyh0aGlzLmRlc2MpLnRyaW0oKS5yZXBsYWNlKC9eXFx3LywgYyA9PiBjLnRvTG9jYWxlVXBwZXJDYXNlKCkpIDogbnVsbDtcblxuXHRcdFx0Ly8gc2V0IHRoZSBjb21tYW5kc1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcyA9IHtcblx0XHRcdFx0dGl0bGU6IHRoaXMucGFyZW50ID8gYCR7dGhpcy50aXRsZX0gY29tbWFuZHNgIDogJ0NvbW1hbmRzJyxcblx0XHRcdFx0Li4udGhpcy5jb21tYW5kcy5nZW5lcmF0ZUhlbHAoKVxuXHRcdFx0fTtcblxuXHRcdFx0Y29uc3QgZXh0ID0gdGhpcy5leHRlbnNpb25zLmdlbmVyYXRlSGVscCgpO1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcy5jb3VudCArPSBleHQuY291bnQ7XG5cdFx0XHRyZXN1bHRzLmNvbW1hbmRzLmVudHJpZXMucHVzaC5hcHBseShyZXN1bHRzLmNvbW1hbmRzLmVudHJpZXMsIGV4dC5lbnRyaWVzKTtcblxuXHRcdFx0Ly8gdXBkYXRlIHRoZSBkZWZhdWx0IGNvbW1hbmRcblx0XHRcdGlmICh0aGlzLmRlZmF1bHRDb21tYW5kKSB7XG5cdFx0XHRcdGZvciAoY29uc3QgY21kIG9mIHJlc3VsdHMuY29tbWFuZHMuZW50cmllcykge1xuXHRcdFx0XHRcdGlmIChjbWQubmFtZSA9PT0gdGhpcy5kZWZhdWx0Q29tbWFuZCkge1xuXHRcdFx0XHRcdFx0Y21kLmRlZmF1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCB0aGUgYXJndW1lbnRzXG5cdFx0XHRyZXN1bHRzLmFyZ3VtZW50cyA9IHtcblx0XHRcdFx0dGl0bGU6IHRoaXMucGFyZW50ID8gYCR7dGhpcy50aXRsZX0gYXJndW1lbnRzYCA6ICdBcmd1bWVudHMnLFxuXHRcdFx0XHQuLi50aGlzLmFyZ3MuZ2VuZXJhdGVIZWxwKClcblx0XHRcdH07XG5cblx0XHRcdC8vIHNldCB0aGUgb3B0aW9uc1xuXHRcdFx0cmVzdWx0cy5vcHRpb25zID0ge1xuXHRcdFx0XHRjb3VudDogc2NvcGVzLnJlZHVjZSgocCwgYykgPT4gcCArIGMuY291bnQsIDApLFxuXHRcdFx0XHRzY29wZXNcblx0XHRcdH07XG5cblx0XHRcdC8vIHNldCB0aGUgdXNhZ2UgbGluZVxuXHRcdFx0Y29uc3QgdXNhZ2UgPSBbXTtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KG9wdHMucGFyZW50Q29udGV4dE5hbWVzKSkge1xuXHRcdFx0XHR1c2FnZS5wdXNoLmFwcGx5KHVzYWdlLCBvcHRzLnBhcmVudENvbnRleHROYW1lcyk7XG5cdFx0XHR9XG5cdFx0XHR1c2FnZS5wdXNoLmFwcGx5KHVzYWdlLCByZXN1bHRzLmNvbnRleHRzLnNsaWNlKCkpO1xuXHRcdFx0cmVzdWx0cy5jb21tYW5kcy5jb3VudCAmJiB1c2FnZS5wdXNoKCc8Y29tbWFuZD4nKTtcblx0XHRcdHJlc3VsdHMub3B0aW9ucy5jb3VudCAmJiB1c2FnZS5wdXNoKCdbb3B0aW9uc10nKTtcblx0XHRcdHVzYWdlLnB1c2guYXBwbHkodXNhZ2UsIHJlc3VsdHMuYXJndW1lbnRzLmVudHJpZXMubWFwKGFyZyA9PiB7XG5cdFx0XHRcdGNvbnN0IG5hbWUgPSBgPCR7YXJnLm5hbWV9JHthcmcubXVsdGlwbGUgPyAnLi4uJyA6ICcnfT5gO1xuXHRcdFx0XHRyZXR1cm4gYXJnLnJlcXVpcmVkID8gbmFtZSA6IGBbJHtuYW1lfV1gO1xuXHRcdFx0fSkpO1xuXHRcdFx0cmVzdWx0cy51c2FnZSA9IHtcblx0XHRcdFx0dGl0bGU6ICdVc2FnZScsXG5cdFx0XHRcdHRleHQ6IHVzYWdlLmpvaW4oJyAnKVxuXHRcdFx0fTtcblxuXHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0fSkoe1xuXHRcdFx0Y29udGV4dHM6IFtdLFxuXHRcdFx0ZXJyb3I6IHVuZGVmaW5lZCxcblx0XHRcdHN1Z2dlc3Rpb25zOiBbXSxcblx0XHRcdHdhcm5pbmdzOiB1bmRlZmluZWRcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTY2FuIHBhcmVudCBjb250ZXh0cyB0byBmaW5kIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgaW4gdGhlIHRvcC1tb3N0IGNvbnRleHQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUuXG5cdCAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIC0gQSBkZWZhdWx0IHZhbHVlIGlmIG5vIHZhbHVlIGlzIGZvdW5kLlxuXHQgKiBAcmV0dXJucyB7Kn1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRnZXQobmFtZSwgZGVmYXVsdFZhbHVlKSB7XG5cdFx0bGV0IHZhbHVlID0gdGhpc1tuYW1lXTtcblx0XHRmb3IgKGxldCBwID0gdGhpcy5wYXJlbnQ7IHA7IHAgPSBwLnBhcmVudCkge1xuXHRcdFx0dmFsdWUgPSBwLmdldChuYW1lLCB2YWx1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7XG5cdH1cblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhpcyBjb250ZXh0IHdpdGggcGFyYW1zLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxDb250ZXh0fSBwYXJhbXMgLSBWYXJpb3VzIHBhcmFtZXRlcnNcblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRpbml0KHBhcmFtcykge1xuXHRcdGlmICghcGFyYW1zIHx8IHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IChwYXJhbXMuY2xpa2l0IGluc3RhbmNlb2YgU2V0ICYmICFwYXJhbXMuY2xpa2l0LmhhcygnQ29udGV4dCcpKSkge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBwYXJhbWV0ZXJzIHRvIGJlIGFuIG9iamVjdCBvciBDb250ZXh0JywgeyBuYW1lOiAncGFyYW1zJywgc2NvcGU6ICdDb250ZXh0LmluaXQnLCB2YWx1ZTogcGFyYW1zIH0pO1xuXHRcdH1cblxuXHRcdGlmIChwYXJhbXMuY2xpa2l0IGluc3RhbmNlb2YgU2V0ICYmICFwYXJhbXMuY2xpa2l0LmhhcygnQ29udGV4dCcpKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIHBhcmFtZXRlcnMgdG8gYmUgYW4gb2JqZWN0IG9yIENvbnRleHQnLCB7IG5hbWU6ICdwYXJhbXMnLCBzY29wZTogJ0NvbnRleHQuaW5pdCcsIHZhbHVlOiBwYXJhbXMgfSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5hcmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgQXJndW1lbnRMaXN0KCk7XG5cdFx0dGhpcy5hdXRvSGlkZUJhbm5lciAgICAgICAgICAgICAgICAgPSBwYXJhbXMuYXV0b0hpZGVCYW5uZXI7XG5cdFx0dGhpcy5iYW5uZXIgICAgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMuYmFubmVyO1xuXHRcdHRoaXMuY29tbWFuZHMgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IENvbW1hbmRNYXAoKTtcblx0XHR0aGlzLmRlZmF1bHRDb21tYW5kICAgICAgICAgICAgICAgICA9IHBhcmFtcy5kZWZhdWx0Q29tbWFuZDtcblx0XHR0aGlzLmRlc2MgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5kZXNjO1xuXHRcdHRoaXMuZXJyb3JJZlVua25vd25Db21tYW5kICAgICAgICAgID0gcGFyYW1zLmVycm9ySWZVbmtub3duQ29tbWFuZDtcblx0XHR0aGlzLmV4dGVuc2lvbnMgICAgICAgICAgICAgICAgICAgICA9IG5ldyBFeHRlbnNpb25NYXAoKTtcblx0XHR0aGlzLmhlbHBFeGl0Q29kZSAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5oZWxwRXhpdENvZGU7XG5cdFx0dGhpcy5oZWxwVGVtcGxhdGVGaWxlICAgICAgICAgICAgICAgPSBwYXJhbXMuaGVscFRlbXBsYXRlRmlsZTtcblx0XHR0aGlzLmhpZGVOb0Jhbm5lck9wdGlvbiAgICAgICAgICAgICA9IHBhcmFtcy5oaWRlTm9CYW5uZXJPcHRpb247XG5cdFx0dGhpcy5oaWRlTm9Db2xvck9wdGlvbiAgICAgICAgICAgICAgPSBwYXJhbXMuaGlkZU5vQ29sb3JPcHRpb247XG5cdFx0dGhpcy5sb29rdXAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgTG9va3VwKCk7XG5cdFx0dGhpcy5uYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMubmFtZTtcblx0XHR0aGlzLm5vZGVWZXJzaW9uICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5ub2RlVmVyc2lvbjtcblx0XHR0aGlzLm9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBPcHRpb25NYXAoKTtcblx0XHR0aGlzLnBhcmVudCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtcy5wYXJlbnQ7XG5cdFx0dGhpcy5yZXYgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwO1xuXHRcdHRoaXMuc2hvd0Jhbm5lckZvckV4dGVybmFsQ0xJcyAgICAgID0gcGFyYW1zLnNob3dCYW5uZXJGb3JFeHRlcm5hbENMSXM7XG5cdFx0dGhpcy5zaG93SGVscE9uRXJyb3IgICAgICAgICAgICAgICAgPSBwYXJhbXMuc2hvd0hlbHBPbkVycm9yO1xuXHRcdHRoaXMudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLnRpdGxlIHx8IHBhcmFtcy5uYW1lO1xuXHRcdHRoaXMudHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzID0gISFwYXJhbXMudHJlYXRVbmtub3duT3B0aW9uc0FzQXJndW1lbnRzO1xuXHRcdHRoaXMudmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLnZlcnNpb247XG5cblx0XHRwYXJhbXMuYXJncyAgICAgICAmJiB0aGlzLmFyZ3VtZW50KHBhcmFtcy5hcmdzKTtcblx0XHRwYXJhbXMuY29tbWFuZHMgICAmJiB0aGlzLmNvbW1hbmQocGFyYW1zLmNvbW1hbmRzKTtcblx0XHRwYXJhbXMuZXh0ZW5zaW9ucyAmJiB0aGlzLmV4dGVuc2lvbihwYXJhbXMuZXh0ZW5zaW9ucyk7XG5cdFx0cGFyYW1zLm9wdGlvbnMgICAgJiYgdGhpcy5vcHRpb24ocGFyYW1zLm9wdGlvbnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYW4gb3B0aW9uIHRvIHRoaXMgY29udGV4dC5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fE9wdGlvbnxPcHRpb25NYXB8QXJyYXk8T2JqZWN0fE9wdGlvbnxTdHJpbmc+fSBmb3JtYXQgLSBBbiBvcHRpb25cblx0ICogZm9ybWF0LCBhbiBvYmplY3Qgb2YgZm9ybWF0IHRvIG9wdGlvbiBkZXNjcmlwdGlvbnMsIGBPcHRpb25gIGNvbnN0cnVjdG9yIHBhcmFtcyBvciBgT3B0aW9uYFxuXHQgKiBpbnN0YW5jZXMsIGFuIGBPcHRpb25gIGluc3RhbmNlLCBhbiBgT3B0aW9uTWFwYCBpbnN0YW5jZSwgb3IgYW4gYXJyYXkgb2YgYE9wdGlvbmBcblx0ICogY29uc3RydWN0b3IgcGFyYW1zIGFuZCBgT3B0aW9uYCBpbnN0YW5jZXMgZ3JvdXBlZCBieSBgU3RyaW5nYCBsYWJlbHMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fE9wdGlvbnxTdHJpbmd9IFtwYXJhbXNdIC0gV2hlbiBgZm9ybWF0YCBpcyBhIGZvcm1hdCBzdHJpbmcsIHRoZW4gdGhpc1xuXHQgKiBhcmd1bWVudCBpcyBlaXRoZXIgYE9wdGlvbmAgY29uc3RydWN0b3IgcGFyYW1ldGVycywgYW4gYE9wdGlvbmAgaW5zdGFuY2UsIG9yIGFuIG9wdGlvblxuXHQgKiBkZXNjcmlwdGlvbi5cblx0ICogQHJldHVybnMge0NvbnRleHR9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqXG5cdCAqIEBleGFtcGxlXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nKTsgLy8gZm9ybWF0IGZsYWdcblx0ICogICBjdHgub3B0aW9uKCctLWZvbycsICdlbmFibGVzIGZvbyBtb2RlJyk7IC8vIGZvcm1hdCB3aXRoIGRlc2NyaXB0aW9uXG5cdCAqICAgY3R4Lm9wdGlvbignLS1mb28nLCB7IGRlc2M6ICdlbmFibGVzIGZvbyBtb2RlJyB9KTsgLy8gZm9ybWF0IHdpdGggT3B0aW9uIGN0b3IgcGFyYW1zXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IG51bGwgfSk7IC8vIG9iamVjdCB3aXRoIGZvcm1hdCBmbGFnXG5cdCAqICAgY3R4Lm9wdGlvbih7ICctLWZvbyc6IHsgZGVzYzogJ2VuYWJsZXMgZm9vIG1vZGUnIH0gfSk7IC8vIG9iamVjdCB3aXRoIE9wdGlvbiBjdG9yIHBhcmFtc1xuXHQgKiAgIGN0eC5vcHRpb24oeyAnLS1mb28nOiBuZXcgT3B0aW9uKCkgfSk7IC8vIG9iamVjdCBvZiBgT3B0aW9uYCBpbnN0YW5jZVxuXHQgKiAgIGN0eC5vcHRpb24obmV3IE9wdGlvbignLS1mb28nKSk7IC8vIGBPcHRpb25gIGluc3RhbmNlXG5cdCAqICAgY3R4Lm9wdGlvbihuZXcgT3B0aW9uTWFwKCkpOyAvLyBgT3B0aW9uTWFwYCBmcm9tIGFub3RoZXIgaW5zdGFuY2Vcblx0ICogICBjdHgub3B0aW9uKFsgJ1NvbWUgR3JvdXAnLCBuZXcgT3B0aW9uKCctLWZvbycpLCAnQW5vdGhlciBHcm91cCcsIHsgJy0tYmFyJzogbnVsbCB9IF0pOyAvLyBhbiBhcnJheSBvZiBncm91cGVkIG9wdGlvbnNcblx0ICovXG5cdG9wdGlvbihmb3JtYXQsIHBhcmFtcykge1xuXHRcdGNvbnN0IG9wdHMgPSB0aGlzLm9wdGlvbnMuYWRkKGZvcm1hdCwgcGFyYW1zKTtcblxuXHRcdGZvciAoY29uc3Qgb3B0IG9mIG9wdHMpIHtcblx0XHRcdG9wdC5wYXJlbnQgPSB0aGlzO1xuXG5cdFx0XHRpZiAob3B0LmxvbmcpIHtcblx0XHRcdFx0dGhpcy5sb29rdXAubG9uZ1tvcHQubG9uZ10gPSBvcHQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvcHQuc2hvcnQpIHtcblx0XHRcdFx0dGhpcy5sb29rdXAuc2hvcnRbb3B0LnNob3J0XSA9IG9wdDtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCBbIGFsaWFzLCB2aXNpYmxlIF0gb2YgT2JqZWN0LmVudHJpZXMob3B0LmFsaWFzZXMubG9uZykpIHtcblx0XHRcdFx0aWYgKHZpc2libGUpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cC5sb25nW2FsaWFzXSA9IG9wdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IFsgYWxpYXMsIHZpc2libGUgXSBvZiBPYmplY3QuZW50cmllcyhvcHQuYWxpYXNlcy5zaG9ydCkpIHtcblx0XHRcdFx0aWYgKHZpc2libGUpIHtcblx0XHRcdFx0XHR0aGlzLmxvb2t1cC5zaG9ydFthbGlhc10gPSBvcHQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLnJldisrO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2NhbiBwYXJlbnQgY29udGV4dHMgdG8gZmluZCB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGluIHRoZSBib3R0b20tbW9zdCBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lLlxuXHQgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSAtIEEgZGVmYXVsdCB2YWx1ZSBpZiBubyB2YWx1ZSBpcyBmb3VuZC5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cHJvcChuYW1lLCBkZWZhdWx0VmFsdWUpIHtcblx0XHRsZXQgdmFsdWUgPSB0aGlzW25hbWVdO1xuXHRcdGZvciAobGV0IHAgPSB0aGlzLnBhcmVudDsgdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBwOyBwID0gcC5wYXJlbnQpIHtcblx0XHRcdHZhbHVlID0gcC5wcm9wKG5hbWUsIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRWYWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlcnMgYSBjb21tYW5kIG9yIGV4dGVuc2lvbiB0byBhZGQgdG8gdGhlIGxvb2t1cC5cblx0ICpcblx0ICogQHBhcmFtIHtDb21tYW5kfEV4dGVuc2lvbn0gaXQgLSBUaGUgY29tbWFuZCBvciBleHRlbnNpb24gaW5zdGFuY2UuXG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cmVnaXN0ZXIoaXQpIHtcblx0XHRjb25zdCBkZXN0ID0gaXQuY2xpa2l0LmhhcygnRXh0ZW5zaW9uJykgPyAnZXh0ZW5zaW9ucycgOiAnY29tbWFuZHMnO1xuXHRcdGl0LnBhcmVudCA9IHRoaXM7XG5cdFx0dGhpcy5sb29rdXBbZGVzdF1baXQubmFtZV0gPSBpdDtcblxuXHRcdGlmIChpdC5hbGlhc2VzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGFsaWFzIG9mIE9iamVjdC5rZXlzKGl0LmFsaWFzZXMpKSB7XG5cdFx0XHRcdGlmICghdGhpc1tkZXN0XS5oYXMoYWxpYXMpKSB7XG5cdFx0XHRcdFx0dGhpcy5sb29rdXBbZGVzdF1bYWxpYXNdID0gaXQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdLCJmaWxlIjoicGFyc2VyL2NvbnRleHQuanMifQ==

@@ -93,3 +93,3 @@ "use strict";

});
return output;
return output.replace(/(\r\n|\r|\n)+$/g, '\n');
} catch (e) {

@@ -124,2 +124,2 @@ error(e);

}
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlbmRlci90ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJsb2dnZXIiLCJlcnJvciIsImJyZWFrUmVnRXhwIiwicHJpbnRSZWdFeHAiLCJyZW5kZXIiLCJ0ZW1wbGF0ZSIsImRhdGEiLCJSZWdFeHAiLCJlIiwiRSIsIklOVkFMSURfTk9ERV9KUyIsInN0eWxlIiwiZGVidWciLCJzdHlsZXMiLCJ2YXJzIiwiT2JqZWN0Iiwia2V5cyIsImJvZHkiLCJsZW5ndGgiLCJqb2luIiwicmVwbGFjZSIsIl8iLCJ3cyIsImxpbmVzIiwiZmxhZ3MiLCJzdHIiLCJmbiIsIkZ1bmN0aW9uIiwib3V0cHV0IiwibGluZWJyZWFrcyIsImluY2x1ZGVzIiwiU3RyaW5nIiwidHJpbSIsInJlcGVhdCIsInJlbmRlckZpbGUiLCJmaWxlIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJURU1QTEFURV9OT1RfRk9VTkQiLCJuYW1lIiwic2NvcGUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLE1BQU0sR0FBRyxvQkFBTSxxQkFBTixDQUFmO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFNOztBQUFSLElBQXdCRCxNQUE5QixDLENBQ0E7O0FBRUE7Ozs7OztBQUtBLE1BQU1FLFdBQVcsR0FBRyxhQUFwQjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsSUFBSUMsV0FBSjtBQUVBOzs7Ozs7OztBQU9PLFNBQVNDLE1BQVQsQ0FBZ0JDLFFBQWhCLEVBQTBCQyxJQUExQixFQUFnQztBQUN0QyxNQUFJO0FBQ0gsUUFBSSxDQUFDSCxXQUFMLEVBQWtCO0FBQ2pCLFVBQUk7QUFDSEEsUUFBQUEsV0FBVyxHQUFHLElBQUlJLE1BQUosQ0FBVyx3RUFBWCxFQUFxRixJQUFyRixDQUFkO0FBQ0EsT0FGRCxDQUVFLE9BQU9DLENBQVAsRUFBVTtBQUNYO0FBQ0EsY0FBTUMsZ0JBQUVDLGVBQUYsQ0FBa0Isb0RBQWxCLENBQU47QUFDQTtBQUNEOztBQUVELFFBQUksQ0FBQ0osSUFBRCxJQUFTLE9BQU9BLElBQVAsS0FBZ0IsUUFBN0IsRUFBdUM7QUFDdENBLE1BQUFBLElBQUksR0FBRyxFQUFQO0FBQ0EsS0FaRSxDQWNIO0FBQ0E7OztBQUVBLFFBQUksQ0FBQ0EsSUFBSSxDQUFDSyxLQUFWLEVBQWlCO0FBQ2hCTCxNQUFBQSxJQUFJLENBQUNLLEtBQUwsR0FBYUMsZUFBTUMsTUFBbkI7QUFDQTs7QUFFRCxVQUFNQyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZVixJQUFaLENBQWI7QUFDQSxRQUFJVyxJQUFJLEdBQUcsQ0FBQ0gsSUFBSSxDQUFDSSxNQUFMLEdBQWUsU0FBUUosSUFBSSxDQUFDSyxJQUFMLENBQVUsSUFBVixDQUFnQixrQkFBdkMsR0FBMkQsRUFBNUQsSUFDVmQsUUFBUSxDQUFDZSxPQUFULENBQWlCakIsV0FBakIsRUFBOEIsQ0FBQ2tCLENBQUQsRUFBSUMsRUFBSixFQUFRQyxLQUFSLEVBQWVDLEtBQWYsRUFBc0JDLEdBQXRCLEtBQThCO0FBQzNELGFBQVEsR0FBRUgsRUFBRyxhQUFZRyxHQUFHLENBQUNMLE9BQUosQ0FBWSxXQUFaLEVBQXlCLE1BQXpCLEVBQWlDQSxPQUFqQyxDQUF5QyxJQUF6QyxFQUErQyxLQUEvQyxFQUFzREEsT0FBdEQsQ0FBOERsQixXQUE5RCxFQUEyRSxLQUEzRSxDQUFrRixPQUFNcUIsS0FBSyxDQUFDTCxNQUFOLEdBQWUsQ0FBRSxNQUFLTSxLQUFNLE9BQTdJO0FBQ0EsS0FGRCxDQURELENBdEJHLENBMkJIOztBQUVBLFVBQU1FLEVBQUUsR0FBRyxJQUFJQyxRQUFKLENBQWEsUUFBYixFQUF1QixTQUF2QixFQUFrQ1YsSUFBbEMsQ0FBWDtBQUNBLFFBQUlXLE1BQU0sR0FBRyxFQUFiO0FBQ0FGLElBQUFBLEVBQUUsQ0FBQ3BCLElBQUQsRUFBTyxDQUFDbUIsR0FBRCxFQUFNSSxVQUFOLEVBQWtCTCxLQUFsQixLQUE0QjtBQUNwQ0MsTUFBQUEsR0FBRyxHQUFHRCxLQUFLLENBQUNNLFFBQU4sQ0FBZSxHQUFmLElBQXNCQyxNQUFNLENBQUNOLEdBQUQsQ0FBTixDQUFZTCxPQUFaLENBQW9CLE9BQXBCLEVBQTZCLEVBQTdCLENBQXRCLEdBQXlEVyxNQUFNLENBQUNOLEdBQUQsQ0FBTixDQUFZTyxJQUFaLEVBQS9EOztBQUNBLFVBQUksQ0FBQ1IsS0FBSyxDQUFDTSxRQUFOLENBQWUsR0FBZixDQUFELElBQXdCTCxHQUE1QixFQUFpQztBQUNoQ0csUUFBQUEsTUFBTSxJQUFLLEdBQUVILEdBQUksR0FBRUksVUFBVSxHQUFHLEtBQUtJLE1BQUwsQ0FBWUosVUFBWixDQUFILEdBQTZCLEVBQUcsRUFBN0Q7QUFDQTtBQUNELEtBTEMsQ0FBRjtBQU9BLFdBQU9ELE1BQVA7QUFDQSxHQXZDRCxDQXVDRSxPQUFPcEIsQ0FBUCxFQUFVO0FBQ1hQLElBQUFBLEtBQUssQ0FBQ08sQ0FBRCxDQUFMO0FBQ0EsVUFBTUEsQ0FBTjtBQUNBO0FBQ0Q7QUFFRDs7Ozs7Ozs7O0FBT08sU0FBUzBCLFVBQVQsQ0FBb0JDLElBQXBCLEVBQTBCN0IsSUFBMUIsRUFBZ0M7QUFDdEMsTUFBSUQsUUFBSjs7QUFFQSxNQUFJO0FBQ0hBLElBQUFBLFFBQVEsR0FBRytCLFlBQUdDLFlBQUgsQ0FBZ0JGLElBQWhCLEVBQXNCLE1BQXRCLENBQVg7QUFDQSxHQUZELENBRUUsT0FBTzNCLENBQVAsRUFBVTtBQUNYLFVBQU1DLGdCQUFFNkIsa0JBQUYsQ0FBc0IsNEJBQTJCSCxJQUFLLEVBQXRELEVBQXlEO0FBQUVJLE1BQUFBLElBQUksRUFBRSxNQUFSO0FBQWdCQyxNQUFBQSxLQUFLLEVBQUUscUJBQXZCO0FBQThDQyxNQUFBQSxLQUFLLEVBQUVOO0FBQXJELEtBQXpELENBQU47QUFDQTs7QUFFRCxTQUFPL0IsTUFBTSxDQUFDQyxRQUFELEVBQVdDLElBQVgsQ0FBYjtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnIGZyb20gJy4uL2xpYi9kZWJ1Zyc7XG5pbXBvcnQgRSBmcm9tICcuLi9saWIvZXJyb3JzJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGRlYnVnKCdjbGkta2l0OnRlbXBsYXRlOmluJyk7XG5jb25zdCB7IGVycm9yIC8qICwgbG9nICovIH0gPSBsb2dnZXI7XG4vLyBjb25zdCBsb2cyID0gbG9nZ2VyKCdvdXQnKS5sb2c7XG5cbi8qKlxuICogTWF0Y2hlcyBpbnRlbnRpb25hbCBsaW5lIGJyZWFrcyBpbiBtdWx0aWxpbmUgc3RyaW5ncy5cbiAqXG4gKiBAdHlwZSB7UmVnRXhwfVxuICovXG5jb25zdCBicmVha1JlZ0V4cCA9IC9bIFxcdF0/XFxcXFxcbi9nO1xuXG4vKipcbiAqIEZpbmRzIG91dHB1dCBzdGF0ZW1lbnRzIGFuZCBmb3JtYXRzIHRoZW0gaW50byBwcmludCBzdGF0ZW1lbnRzLlxuICpcbiAqIFJlZ2V4IGJyZWFrZG93bjpcbiAqICAgYCg/PD1efFxcbikoWyBcXHRdKikoPispYDogRmluZCBvbmUgb3IgbW9yZSBjb250aWd1b3VzIGA+YCBjaGFyYWN0ZXJzIHdoZXJlIHRoZXkgYXJlIGF0IHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5uaW5nIG9mIHRlbXBsYXRlIG9yIGxpbmUuIFdlIGNhcHR1cmUgZWFjaCBgPmAgc28gdGhhdCB3ZSBjYW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVybWluZSBob3cgbWFueSBsaW5lIHJldHVybnMgdG8gYWRkIGFmdGVyIHRoZSBsaW5lIGlzIHByaW50ZWQuXG4gKiAgIGAoXFx8XFw/fFxcP1xcfHxcXHx8XFw/KT9gOiAgICBEZXRlY3QgbW9kaWZpZXIgZmxhZ3MuIFRoZXNlIGNvbnRyb2wgcmVuZGVyaW5nIHN1Y2ggYXMgdHJpbW1pbmcgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQuXG4gKiAgIGAoLio/KSg/Oig/PCFcXFxcKVxcbnwkKWA6ICBDYXB0dXJlIHRoZSBlbnRpcmUgbWVzc2FnZSwgaW5jbHVkaW5nIG11bHRpbGluZSBgXFxgIHRva2VucywgdXAgdG8gdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCBsaW5lIGJyZWFrLlxuICogICBgL2dzYDogICAgICAgICAgICAgICAgICAgU2V0IHRoZSBgZ2xvYmFsYCBhbmQgYGRvdCBhbGxgIGZsYWdzLiBgZ2xvYmFsYCB3aWxsIGZpbmQgYWxsIG1hdGNoZXMuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZG90IGFsbGAgKGludHJvZHVjZWQgaW4gRVMyMDE4KSwgYWxsb3dzIHVzIHRvIGNhcHR1cmUgaW50ZW50aW9uYWxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgYnJlYWtzLlxuICpcbiAqIEB0eXBlIHtSZWdFeHB9XG4gKi9cbmxldCBwcmludFJlZ0V4cDtcblxuLyoqXG4gKiBSZW5kZXJzIGEgdGVtcGxhdGUgd2l0aCB0aGUgc3VwcGxpZWQgZGF0YS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdGVtcGxhdGUgLSBUaGUgdGVtcGxhdGUgdG8gcmVuZGVyLlxuICogQHBhcmFtIHtPYmplY3R9IFtkYXRhXSAtIEFuIG9iamVjdCB0byBpbmplY3QgaW50byB0aGUgdGVtcGxhdGUuXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyKHRlbXBsYXRlLCBkYXRhKSB7XG5cdHRyeSB7XG5cdFx0aWYgKCFwcmludFJlZ0V4cCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cHJpbnRSZWdFeHAgPSBuZXcgUmVnRXhwKCcoPzw9XnxcXFxcbikoWyBcXFxcdF0qKSg+KykoXFxcXHxcXFxcP3xcXFxcP1xcXFx8fFxcXFx8fFxcXFw/KT8oLio/KSg/Oig/PCFcXFxcXFxcXClcXFxcbnwkKScsICdncycpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHQvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfTk9ERV9KUygnTm9kZS5qcyB2ZXJzaW9uIGlzIHRvbyBvbGQ7IG11c3QgYmUgdjguMTAgb3IgbmV3ZXInKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRkYXRhID0ge307XG5cdFx0fVxuXG5cdFx0Ly8gbG9nKHRlbXBsYXRlKTtcblx0XHQvLyBsb2coT2JqZWN0LmtleXMoZGF0YSkpO1xuXG5cdFx0aWYgKCFkYXRhLnN0eWxlKSB7XG5cdFx0XHRkYXRhLnN0eWxlID0gZGVidWcuc3R5bGVzO1xuXHRcdH1cblxuXHRcdGNvbnN0IHZhcnMgPSBPYmplY3Qua2V5cyhkYXRhKTtcblx0XHRsZXQgYm9keSA9ICh2YXJzLmxlbmd0aCA/IGBsZXQgeyAke3ZhcnMuam9pbignLCAnKX0gfSA9IF9fZGF0YTtcXG5cXG5gIDogJycpICtcblx0XHRcdHRlbXBsYXRlLnJlcGxhY2UocHJpbnRSZWdFeHAsIChfLCB3cywgbGluZXMsIGZsYWdzLCBzdHIpID0+IHtcblx0XHRcdFx0cmV0dXJuIGAke3dzfV9fcHJpbnQoXFxgJHtzdHIucmVwbGFjZSgvXFxcXCg/IVxcbikvZywgJ1xcXFxcXFxcJykucmVwbGFjZSgvYC9nLCAnXFxcXGAnKS5yZXBsYWNlKGJyZWFrUmVnRXhwLCAnXFxcXG4nKX1cXGAsICR7bGluZXMubGVuZ3RoIC0gMX0sICcke2ZsYWdzfScpO1xcbmA7XG5cdFx0XHR9KTtcblxuXHRcdC8vIGxvZzIoYm9keSk7XG5cblx0XHRjb25zdCBmbiA9IG5ldyBGdW5jdGlvbignX19kYXRhJywgJ19fcHJpbnQnLCBib2R5KTtcblx0XHRsZXQgb3V0cHV0ID0gJyc7XG5cdFx0Zm4oZGF0YSwgKHN0ciwgbGluZWJyZWFrcywgZmxhZ3MpID0+IHtcblx0XHRcdHN0ciA9IGZsYWdzLmluY2x1ZGVzKCd8JykgPyBTdHJpbmcoc3RyKS5yZXBsYWNlKC9cXHMqJC9nLCAnJykgOiBTdHJpbmcoc3RyKS50cmltKCk7XG5cdFx0XHRpZiAoIWZsYWdzLmluY2x1ZGVzKCc/JykgfHwgc3RyKSB7XG5cdFx0XHRcdG91dHB1dCArPSBgJHtzdHJ9JHtsaW5lYnJlYWtzID8gJ1xcbicucmVwZWF0KGxpbmVicmVha3MpIDogJyd9YDtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBvdXRwdXQ7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRlcnJvcihlKTtcblx0XHR0aHJvdyBlO1xuXHR9XG59XG5cbi8qKlxuICogUmVhZHMgaW4gYSB0ZW1wbGF0ZSBmaWxlIGFuZCByZW5kZXJzIGl0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIHBhdGggdG8gdGhlIHRlbXBsYXRlIGZpbGUuXG4gKiBAcGFyYW0ge09iamVjdH0gW2RhdGFdIC0gQW4gb2JqZWN0IHRvIGluamVjdCBpbnRvIHRoZSB0ZW1wbGF0ZS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJGaWxlKGZpbGUsIGRhdGEpIHtcblx0bGV0IHRlbXBsYXRlO1xuXG5cdHRyeSB7XG5cdFx0dGVtcGxhdGUgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdHRocm93IEUuVEVNUExBVEVfTk9UX0ZPVU5EKGBVbmFibGUgdG8gZmluZCB0ZW1wbGF0ZTogJHtmaWxlfWAsIHsgbmFtZTogJ2ZpbGUnLCBzY29wZTogJ3RlbXBsYXRlLnJlbmRlckZpbGUnLCB2YWx1ZTogZmlsZSB9KTtcblx0fVxuXG5cdHJldHVybiByZW5kZXIodGVtcGxhdGUsIGRhdGEpO1xufVxuIl0sImZpbGUiOiJyZW5kZXIvdGVtcGxhdGUuanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlbmRlci90ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJsb2dnZXIiLCJlcnJvciIsImJyZWFrUmVnRXhwIiwicHJpbnRSZWdFeHAiLCJyZW5kZXIiLCJ0ZW1wbGF0ZSIsImRhdGEiLCJSZWdFeHAiLCJlIiwiRSIsIklOVkFMSURfTk9ERV9KUyIsInN0eWxlIiwiZGVidWciLCJzdHlsZXMiLCJ2YXJzIiwiT2JqZWN0Iiwia2V5cyIsImJvZHkiLCJsZW5ndGgiLCJqb2luIiwicmVwbGFjZSIsIl8iLCJ3cyIsImxpbmVzIiwiZmxhZ3MiLCJzdHIiLCJmbiIsIkZ1bmN0aW9uIiwib3V0cHV0IiwibGluZWJyZWFrcyIsImluY2x1ZGVzIiwiU3RyaW5nIiwidHJpbSIsInJlcGVhdCIsInJlbmRlckZpbGUiLCJmaWxlIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJURU1QTEFURV9OT1RfRk9VTkQiLCJuYW1lIiwic2NvcGUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLE1BQU0sR0FBRyxvQkFBTSxxQkFBTixDQUFmO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFNOztBQUFSLElBQXdCRCxNQUE5QixDLENBQ0E7O0FBRUE7Ozs7OztBQUtBLE1BQU1FLFdBQVcsR0FBRyxhQUFwQjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsSUFBSUMsV0FBSjtBQUVBOzs7Ozs7OztBQU9PLFNBQVNDLE1BQVQsQ0FBZ0JDLFFBQWhCLEVBQTBCQyxJQUExQixFQUFnQztBQUN0QyxNQUFJO0FBQ0gsUUFBSSxDQUFDSCxXQUFMLEVBQWtCO0FBQ2pCLFVBQUk7QUFDSEEsUUFBQUEsV0FBVyxHQUFHLElBQUlJLE1BQUosQ0FBVyx3RUFBWCxFQUFxRixJQUFyRixDQUFkO0FBQ0EsT0FGRCxDQUVFLE9BQU9DLENBQVAsRUFBVTtBQUNYO0FBQ0EsY0FBTUMsZ0JBQUVDLGVBQUYsQ0FBa0Isb0RBQWxCLENBQU47QUFDQTtBQUNEOztB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JztcbmltcG9ydCBFIGZyb20gJy4uL2xpYi9lcnJvcnMnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcblxuY29uc3QgbG9nZ2VyID0gZGVidWcoJ2NsaS1raXQ6dGVtcGxhdGU6aW4nKTtcbmNvbnN0IHsgZXJyb3IgLyogLCBsb2cgKi8gfSA9IGxvZ2dlcjtcbi8vIGNvbnN0IGxvZzIgPSBsb2dnZXIoJ291dCcpLmxvZztcblxuLyoqXG4gKiBNYXRjaGVzIGludGVudGlvbmFsIGxpbmUgYnJlYWtzIGluIG11bHRpbGluZSBzdHJpbmdzLlxuICpcbiAqIEB0eXBlIHtSZWdFeHB9XG4gKi9cbmNvbnN0IGJyZWFrUmVnRXhwID0gL1sgXFx0XT9cXFxcXFxuL2c7XG5cbi8qKlxuICogRmluZHMgb3V0cHV0IHN0YXRlbWVudHMgYW5kIGZvcm1hdHMgdGhlbSBpbnRvIHByaW50IHN0YXRlbWVudHMuXG4gKlxuICogUmVnZXggYnJlYWtkb3duOlxuICogICBgKD88PV58XFxuKShbIFxcdF0qKSg+KylgOiBGaW5kIG9uZSBvciBtb3JlIGNvbnRpZ3VvdXMgYD5gIGNoYXJhY3RlcnMgd2hlcmUgdGhleSBhcmUgYXQgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbm5pbmcgb2YgdGVtcGxhdGUgb3IgbGluZS4gV2UgY2FwdHVyZSBlYWNoIGA+YCBzbyB0aGF0IHdlIGNhblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lIGhvdyBtYW55IGxpbmUgcmV0dXJucyB0byBhZGQgYWZ0ZXIgdGhlIGxpbmUgaXMgcHJpbnRlZC5cbiAqICAgYChcXHxcXD98XFw/XFx8fFxcfHxcXD8pP2A6ICAgIERldGVjdCBtb2RpZmllciBmbGFncy4gVGhlc2UgY29udHJvbCByZW5kZXJpbmcgc3VjaCBhcyB0cmltbWluZyB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5cbiAqICAgYCguKj8pKD86KD88IVxcXFwpXFxufCQpYDogIENhcHR1cmUgdGhlIGVudGlyZSBtZXNzYWdlLCBpbmNsdWRpbmcgbXVsdGlsaW5lIGBcXGAgdG9rZW5zLCB1cCB0byB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0IGxpbmUgYnJlYWsuXG4gKiAgIGAvZ3NgOiAgICAgICAgICAgICAgICAgICBTZXQgdGhlIGBnbG9iYWxgIGFuZCBgZG90IGFsbGAgZmxhZ3MuIGBnbG9iYWxgIHdpbGwgZmluZCBhbGwgbWF0Y2hlcy5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBkb3QgYWxsYCAoaW50cm9kdWNlZCBpbiBFUzIwMTgpLCBhbGxvd3MgdXMgdG8gY2FwdHVyZSBpbnRlbnRpb25hbFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBicmVha3MuXG4gKlxuICogQHR5cGUge1JlZ0V4cH1cbiAqL1xubGV0IHByaW50UmVnRXhwO1xuXG4vKipcbiAqIFJlbmRlcnMgYSB0ZW1wbGF0ZSB3aXRoIHRoZSBzdXBwbGllZCBkYXRhLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0ZW1wbGF0ZSAtIFRoZSB0ZW1wbGF0ZSB0byByZW5kZXIuXG4gKiBAcGFyYW0ge09iamVjdH0gW2RhdGFdIC0gQW4gb2JqZWN0IHRvIGluamVjdCBpbnRvIHRoZSB0ZW1wbGF0ZS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXIodGVtcGxhdGUsIGRhdGEpIHtcblx0dHJ5IHtcblx0XHRpZiAoIXByaW50UmVnRXhwKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRwcmludFJlZ0V4cCA9IG5ldyBSZWdFeHAoJyg/PD1efFxcXFxuKShbIFxcXFx0XSopKD4rKShcXFxcfFxcXFw/fFxcXFw/XFxcXHx8XFxcXHx8XFxcXD8pPyguKj8pKD86KD88IVxcXFxcXFxcKVxcXFxufCQpJywgJ2dzJyk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9OT0RFX0pTKCdOb2RlLmpzIHZlcnNpb24gaXMgdG9vIG9sZDsgbXVzdCBiZSB2OC4xMCBvciBuZXdlcicpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdGRhdGEgPSB7fTtcblx0XHR9XG5cblx0XHQvLyBsb2codGVtcGxhdGUpO1xuXHRcdC8vIGxvZyhPYmplY3Qua2V5cyhkYXRhKSk7XG5cblx0XHRpZiAoIWRhdGEuc3R5bGUpIHtcblx0XHRcdGRhdGEuc3R5bGUgPSBkZWJ1Zy5zdHlsZXM7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmFycyA9IE9iamVjdC5rZXlzKGRhdGEpO1xuXHRcdGxldCBib2R5ID0gKHZhcnMubGVuZ3RoID8gYGxldCB7ICR7dmFycy5qb2luKCcsICcpfSB9ID0gX19kYXRhO1xcblxcbmAgOiAnJykgK1xuXHRcdFx0dGVtcGxhdGUucmVwbGFjZShwcmludFJlZ0V4cCwgKF8sIHdzLCBsaW5lcywgZmxhZ3MsIHN0cikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYCR7d3N9X19wcmludChcXGAke3N0ci5yZXBsYWNlKC9cXFxcKD8hXFxuKS9nLCAnXFxcXFxcXFwnKS5yZXBsYWNlKC9gL2csICdcXFxcYCcpLnJlcGxhY2UoYnJlYWtSZWdFeHAsICdcXFxcbicpfVxcYCwgJHtsaW5lcy5sZW5ndGggLSAxfSwgJyR7ZmxhZ3N9Jyk7XFxuYDtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gbG9nMihib2R5KTtcblxuXHRcdGNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKCdfX2RhdGEnLCAnX19wcmludCcsIGJvZHkpO1xuXHRcdGxldCBvdXRwdXQgPSAnJztcblxuXHRcdGZuKGRhdGEsIChzdHIsIGxpbmVicmVha3MsIGZsYWdzKSA9PiB7XG5cdFx0XHRzdHIgPSBmbGFncy5pbmNsdWRlcygnfCcpID8gU3RyaW5nKHN0cikucmVwbGFjZSgvXFxzKiQvZywgJycpIDogU3RyaW5nKHN0cikudHJpbSgpO1xuXHRcdFx0aWYgKCFmbGFncy5pbmNsdWRlcygnPycpIHx8IHN0cikge1xuXHRcdFx0XHRvdXRwdXQgKz0gYCR7c3RyfSR7bGluZWJyZWFrcyA/ICdcXG4nLnJlcGVhdChsaW5lYnJlYWtzKSA6ICcnfWA7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gb3V0cHV0LnJlcGxhY2UoLyhcXHJcXG58XFxyfFxcbikrJC9nLCAnXFxuJyk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRlcnJvcihlKTtcblx0XHR0aHJvdyBlO1xuXHR9XG59XG5cbi8qKlxuICogUmVhZHMgaW4gYSB0ZW1wbGF0ZSBmaWxlIGFuZCByZW5kZXJzIGl0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIHBhdGggdG8gdGhlIHRlbXBsYXRlIGZpbGUuXG4gKiBAcGFyYW0ge09iamVjdH0gW2RhdGFdIC0gQW4gb2JqZWN0IHRvIGluamVjdCBpbnRvIHRoZSB0ZW1wbGF0ZS5cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJGaWxlKGZpbGUsIGRhdGEpIHtcblx0bGV0IHRlbXBsYXRlO1xuXG5cdHRyeSB7XG5cdFx0dGVtcGxhdGUgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZSwgJ3V0ZjgnKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdHRocm93IEUuVEVNUExBVEVfTk9UX0ZPVU5EKGBVbmFibGUgdG8gZmluZCB0ZW1wbGF0ZTogJHtmaWxlfWAsIHsgbmFtZTogJ2ZpbGUnLCBzY29wZTogJ3RlbXBsYXRlLnJlbmRlckZpbGUnLCB2YWx1ZTogZmlsZSB9KTtcblx0fVxuXG5cdHJldHVybiByZW5kZXIodGVtcGxhdGUsIGRhdGEpO1xufVxuIl0sImZpbGUiOiJyZW5kZXIvdGVtcGxhdGUuanMifQ==
{
"name": "cli-kit",
"version": "1.0.1",
"version": "1.1.0",
"description": "Everything you need to create awesome command line interfaces",

@@ -53,3 +53,3 @@ "main": "./dist/index.js",

"which": "^2.0.2",
"ws": "^7.2.5"
"ws": "^7.3.0"
},

@@ -72,3 +72,3 @@ "devDependencies": {

"eslint-plugin-chai-expect": "^2.1.0",
"eslint-plugin-mocha": "^6.3.0",
"eslint-plugin-mocha": "^7.0.0",
"eslint-plugin-promise": "^4.2.1",

@@ -75,0 +75,0 @@ "eslint-plugin-security": "^1.4.0",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc