diff --git a/CHANGELOG.md b/CHANGELOG.md index 164a25e5..f914aa5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# [9.0.0](https://github.com/AtomLinter/linter-eslint/compare/v8.6.6...v9.0.0) (2021-10-30) + + +### Bug Fixes + +* update all deps ([099e533](https://github.com/AtomLinter/linter-eslint/commit/099e533977cb75eb785c6daa75737043aa91d406)) +* update eslint to v7 ([#1441](https://github.com/AtomLinter/linter-eslint/issues/1441)) ([3b8b67c](https://github.com/AtomLinter/linter-eslint/commit/3b8b67c25e138cbd027ef24929eb30e88f87a9a7)) + + +### BREAKING CHANGES + +* update eslint to v7 + ## [8.6.6](https://github.com/AtomLinter/linter-eslint/compare/v8.6.5...v8.6.6) (2021-04-13) diff --git a/dist/helpers.js b/dist/helpers.js index 3528e5e8..38ee0774 100644 --- a/dist/helpers.js +++ b/dist/helpers.js @@ -3,22 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.startWorker = startWorker; -exports.killWorker = killWorker; -exports.sendJob = sendJob; -exports.getDebugInfo = getDebugInfo; exports.generateDebugString = generateDebugString; exports.generateUserMessage = generateUserMessage; +exports.getDebugInfo = getDebugInfo; exports.handleError = handleError; +exports.killWorker = killWorker; exports.processESLintMessages = processESLintMessages; exports.processJobResponse = processJobResponse; exports.rules = void 0; +exports.sendJob = sendJob; +exports.startWorker = startWorker; var _path = require("path"); var _atomLinter = require("atom-linter"); -var _cryptoRandomString = _interopRequireDefault(require("crypto-random-string")); +var _crypto = require("crypto"); + +var _util = require("util"); var _atom = require("atom"); @@ -29,6 +31,7 @@ var _editor = require("./validate/editor"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // eslint-disable-next-line import/no-extraneous-dependencies, import/extensions +const asyncRandomBytes = (0, _util.promisify)(_crypto.randomBytes); const rules = new _rules.default(); exports.rules = rules; let worker = null; @@ -91,9 +94,8 @@ async function sendJob(config) { // can arrive back in any order. // eslint-disable-next-line no-param-reassign - config.emitKey = (0, _cryptoRandomString.default)({ - length: 10 - }); + config.emitKey = (await asyncRandomBytes(5)).toString('hex'); // 5 bytes = 10 hex characters + return new Promise((resolve, reject) => { // All worker errors are caught and re-emitted along with their associated // emitKey, so that we do not create multiple listeners for the same @@ -405,4 +407,4 @@ async function processJobResponse(response, textEditor, showRule) { return processESLintMessages(response.messages, textEditor, showRule); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbInJ1bGVzIiwiUnVsZXMiLCJ3b3JrZXIiLCJzdGFydFdvcmtlciIsIlRhc2siLCJyZXF1aXJlIiwicmVzb2x2ZSIsIm9uIiwib2JqIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJwYXJzZSIsImV4Iiwic3RhcnRlZCIsInN0YXJ0Iiwia2lsbFdvcmtlciIsInRlcm1pbmF0ZSIsInNlbmRKb2IiLCJjb25maWciLCJjaGlsZFByb2Nlc3MiLCJjb25uZWN0ZWQiLCJlbWl0S2V5IiwibGVuZ3RoIiwiUHJvbWlzZSIsInJlamVjdCIsImVyclN1YiIsIm1zZyIsInN0YWNrIiwiZXJyb3IiLCJFcnJvciIsImRpc3Bvc2UiLCJyZXNwb25zZVN1YiIsImRhdGEiLCJzZW5kIiwiZSIsImdldERlYnVnSW5mbyIsInRleHRFZGl0b3IiLCJhdG9tIiwid29ya3NwYWNlIiwiZ2V0QWN0aXZlVGV4dEVkaXRvciIsImZpbGVQYXRoIiwiZWRpdG9yU2NvcGVzIiwiaXNUZXh0RWRpdG9yIiwiZ2V0UGF0aCIsImdldExhc3RDdXJzb3IiLCJnZXRTY29wZURlc2NyaXB0b3IiLCJnZXRTY29wZXNBcnJheSIsInBhY2thZ2VQYXRoIiwicGFja2FnZXMiLCJyZXNvbHZlUGFja2FnZVBhdGgiLCJsaW50ZXJFc2xpbnRNZXRhIiwidW5kZWZpbmVkIiwidmVyc2lvbiIsImdldCIsImhvdXJzU2luY2VSZXN0YXJ0IiwiTWF0aCIsInJvdW5kIiwicHJvY2VzcyIsInVwdGltZSIsInJldHVyblZhbCIsInJlc3BvbnNlIiwidHlwZSIsImF0b21WZXJzaW9uIiwiZ2V0VmVyc2lvbiIsImxpbnRlckVzbGludFZlcnNpb24iLCJsaW50ZXJFc2xpbnRDb25maWciLCJlc2xpbnRWZXJzaW9uIiwicGF0aCIsInBsYXRmb3JtIiwiZXNsaW50VHlwZSIsImVzbGludFBhdGgiLCJub3RpZmljYXRpb25zIiwiYWRkRXJyb3IiLCJnZW5lcmF0ZURlYnVnU3RyaW5nIiwiZGVidWciLCJkZXRhaWxzIiwic3RyaW5naWZ5Iiwiam9pbiIsImdlbmVyYXRlVXNlck1lc3NhZ2UiLCJvcHRpb25zIiwic2V2ZXJpdHkiLCJleGNlcnB0IiwiZGVzY3JpcHRpb24iLCJsb2NhdGlvbiIsImZpbGUiLCJwb3NpdGlvbiIsImhhbmRsZUVycm9yIiwibWVzc2FnZSIsInNwbGl0IiwiZ2VuZXJhdGVJbnZhbGlkVHJhY2UiLCJtc2dMaW5lIiwibXNnQ29sIiwibXNnRW5kTGluZSIsIm1zZ0VuZENvbCIsImVzbGludEZ1bGxSYW5nZSIsInJ1bGVJZCIsImVyck1zZ1JhbmdlIiwicmFuZ2VUZXh0IiwiaXNzdWVVUkwiLCJ0aXRsZVRleHQiLCJ0aXRsZSIsImVuY29kZVVSSUNvbXBvbmVudCIsImJvZHkiLCJuZXdJc3N1ZVVSTCIsInVybCIsInByb2Nlc3NFU0xpbnRNZXNzYWdlcyIsIm1lc3NhZ2VzIiwic2hvd1J1bGUiLCJhbGwiLCJtYXAiLCJmYXRhbCIsIm9yaWdpbmFsTWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJmaXgiLCJlbmRMaW5lIiwiZW5kQ29sdW1uIiwidGV4dEJ1ZmZlciIsImdldEJ1ZmZlciIsImxpbnRlckZpeCIsImZpeFJhbmdlIiwiUmFuZ2UiLCJwb3NpdGlvbkZvckNoYXJhY3RlckluZGV4IiwicmFuZ2UiLCJyZXBsYWNlV2l0aCIsInRleHQiLCJtYXgiLCJyZXQiLCJnZXRSdWxlVXJsIiwiZml4TGluZUVuZGluZyIsInJ1bGVBcHBlbmRpeCIsInNvbHV0aW9ucyIsImVyciIsInByb2Nlc3NKb2JSZXNwb25zZSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInJlcGxhY2VSdWxlcyIsInVwZGF0ZWRSdWxlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOzs7O0FBSEE7QUFLTyxNQUFNQSxLQUFLLEdBQUcsSUFBSUMsY0FBSixFQUFkOztBQUNQLElBQUlD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ICdwYXRoJ1xuaW1wb3J0IHsgZ2VuZXJhdGVSYW5nZSB9IGZyb20gJ2F0b20tbGludGVyJ1xuaW1wb3J0IGNyeXB0b1JhbmRvbVN0cmluZyBmcm9tICdjcnlwdG8tcmFuZG9tLXN0cmluZydcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsIGltcG9ydC9leHRlbnNpb25zXG5pbXBvcnQgeyBSYW5nZSwgVGFzayB9IGZyb20gJ2F0b20nXG5pbXBvcnQgUnVsZXMgZnJvbSAnLi9ydWxlcydcbmltcG9ydCB7IHRocm93SWZJbnZhbGlkUG9pbnQgfSBmcm9tICcuL3ZhbGlkYXRlL2VkaXRvcidcblxuZXhwb3J0IGNvbnN0IHJ1bGVzID0gbmV3IFJ1bGVzKClcbmxldCB3b3JrZXIgPSBudWxsXG5cbi8qKlxuICogU3RhcnQgdGhlIHdvcmtlciBwcm9jZXNzIGlmIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gc3RhcnRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRXb3JrZXIoKSB7XG4gIGlmICh3b3JrZXIgPT09IG51bGwpIHtcbiAgICB3b3JrZXIgPSBuZXcgVGFzayhyZXF1aXJlLnJlc29sdmUoJy4vd29ya2VyLmpzJykpXG4gIH1cblxuICB3b3JrZXIub24oJ2xvZycsIChvYmopID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5sb2coSlNPTi5wYXJzZShvYmopKVxuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBjb25zb2xlLmxvZyhvYmopXG4gICAgfVxuICB9KVxuXG4gIGlmICh3b3JrZXIuc3RhcnRlZCkge1xuICAgIC8vIFdvcmtlciBzdGFydCByZXF1ZXN0IGhhcyBhbHJlYWR5IGJlZW4gc2VudFxuICAgIHJldHVyblxuICB9XG4gIC8vIFNlbmQgZW1wdHkgYXJndW1lbnRzIGFzIHdlIGRvbid0IHVzZSB0aGVtIGluIHRoZSB3b3JrZXJcbiAgd29ya2VyLnN0YXJ0KFtdKVxuXG4gIC8vIE5PVEU6IE1vZGlmaWVzIHRoZSBUYXNrIG9mIHRoZSB3b3JrZXIsIGJ1dCBpdCdzIHRoZSBvbmx5IGNsZWFuIHdheSB0byB0cmFjayB0aGlzXG4gIHdvcmtlci5zdGFydGVkID0gdHJ1ZVxufVxuXG4vKipcbiAqIEZvcmNlcyB0aGUgd29ya2VyIFRhc2sgdG8ga2lsbCBpdHNlbGZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtpbGxXb3JrZXIoKSB7XG4gIGlmICh3b3JrZXIgIT09IG51bGwpIHtcbiAgICB3b3JrZXIudGVybWluYXRlKClcbiAgICB3b3JrZXIgPSBudWxsXG4gIH1cbn1cblxuLyoqXG4gKiBTZW5kIGEgam9iIHRvIHRoZSB3b3JrZXIgYW5kIHJldHVybiB0aGUgcmVzdWx0c1xuICogQHBhcmFtICB7T2JqZWN0fSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGpvYiB0byBzZW5kIHRvIHRoZSB3b3JrZXJcbiAqIEByZXR1cm4ge09iamVjdHxTdHJpbmd8RXJyb3J9ICAgICAgICBUaGUgZGF0YSByZXR1cm5lZCBmcm9tIHRoZSB3b3JrZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRKb2IoY29uZmlnKSB7XG4gIGlmICh3b3JrZXIgJiYgIXdvcmtlci5jaGlsZFByb2Nlc3MuY29ubmVjdGVkKSB7XG4gICAgLy8gU29tZXRpbWVzIHRoZSB3b3JrZXIgZGllcyBhbmQgYmVjb21lcyBkaXNjb25uZWN0ZWRcbiAgICAvLyBXaGVuIHRoYXQgaGFwcGVucywgaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBubyB3YXkgdG8gcmVjb3ZlciBvdGhlclxuICAgIC8vIHRoYW4gdG8ga2lsbCB0aGUgd29ya2VyIGFuZCBjcmVhdGUgYSBuZXcgb25lLlxuICAgIGtpbGxXb3JrZXIoKVxuICB9XG5cbiAgLy8gRW5zdXJlIHRoZSB3b3JrZXIgaXMgc3RhcnRlZFxuICBzdGFydFdvcmtlcigpXG5cbiAgLy8gRXhwYW5kIHRoZSBjb25maWcgd2l0aCBhIHVuaXF1ZSBJRCB0byBlbWl0IG9uXG4gIC8vIE5PVEU6IEpvYnMgX211c3RfIGhhdmUgYSB1bmlxdWUgSUQgYXMgdGhleSBhcmUgY29tcGxldGVseSBhc3luYyBhbmQgcmVzdWx0c1xuICAvLyBjYW4gYXJyaXZlIGJhY2sgaW4gYW55IG9yZGVyLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnLmVtaXRLZXkgPSBjcnlwdG9SYW5kb21TdHJpbmcoeyBsZW5ndGg6IDEwIH0pXG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyBBbGwgd29ya2VyIGVycm9ycyBhcmUgY2F1Z2h0IGFuZCByZS1lbWl0dGVkIGFsb25nIHdpdGggdGhlaXIgYXNzb2NpYXRlZFxuICAgIC8vIGVtaXRLZXksIHNvIHRoYXQgd2UgZG8gbm90IGNyZWF0ZSBtdWx0aXBsZSBsaXN0ZW5lcnMgZm9yIHRoZSBzYW1lXG4gICAgLy8gJ3Rhc2s6ZXJyb3InIGV2ZW50XG4gICAgY29uc3QgZXJyU3ViID0gd29ya2VyLm9uKGB3b3JrZXJFcnJvcjoke2NvbmZpZy5lbWl0S2V5fWAsICh7IG1zZywgc3RhY2sgfSkgPT4ge1xuICAgICAgLy8gUmUtdGhyb3cgZXJyb3JzIGZyb20gdGhlIHRhc2tcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1zZylcbiAgICAgIC8vIFNldCB0aGUgc3RhY2sgdG8gdGhlIG9uZSBnaXZlbiB0byB1cyBieSB0aGUgd29ya2VyXG4gICAgICBlcnJvci5zdGFjayA9IHN0YWNrXG4gICAgICBlcnJTdWIuZGlzcG9zZSgpXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlc3BvbnNlU3ViLmRpc3Bvc2UoKVxuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH0pXG4gICAgY29uc3QgcmVzcG9uc2VTdWIgPSB3b3JrZXIub24oY29uZmlnLmVtaXRLZXksIChkYXRhKSA9PiB7XG4gICAgICBlcnJTdWIuZGlzcG9zZSgpXG4gICAgICByZXNwb25zZVN1Yi5kaXNwb3NlKClcbiAgICAgIHJlc29sdmUoZGF0YSlcbiAgICB9KVxuICAgIC8vIFNlbmQgdGhlIGpvYiBvbiB0byB0aGUgd29ya2VyXG4gICAgdHJ5IHtcbiAgICAgIHdvcmtlci5zZW5kKGNvbmZpZylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJTdWIuZGlzcG9zZSgpXG4gICAgICByZXNwb25zZVN1Yi5kaXNwb3NlKClcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSlcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZWJ1Z0luZm8oKSB7XG4gIGNvbnN0IHRleHRFZGl0b3IgPSBhdG9tLndvcmtzcGFjZS5nZXRBY3RpdmVUZXh0RWRpdG9yKClcbiAgbGV0IGZpbGVQYXRoXG4gIGxldCBlZGl0b3JTY29wZXNcbiAgaWYgKGF0b20ud29ya3NwYWNlLmlzVGV4dEVkaXRvcih0ZXh0RWRpdG9yKSkge1xuICAgIGZpbGVQYXRoID0gdGV4dEVkaXRvci5nZXRQYXRoKClcbiAgICBlZGl0b3JTY29wZXMgPSB0ZXh0RWRpdG9yLmdldExhc3RDdXJzb3IoKS5nZXRTY29wZURlc2NyaXB0b3IoKS5nZXRTY29wZXNBcnJheSgpXG4gIH0gZWxzZSB7XG4gICAgLy8gU29tZWhvdyB0aGlzIGNhbiBiZSBjYWxsZWQgd2l0aCBubyBhY3RpdmUgVGV4dEVkaXRvciwgaW1wb3NzaWJsZSBJIGtub3cuLi5cbiAgICBmaWxlUGF0aCA9ICd1bmtub3duJ1xuICAgIGVkaXRvclNjb3BlcyA9IFsndW5rbm93biddXG4gIH1cbiAgY29uc3QgcGFja2FnZVBhdGggPSBhdG9tLnBhY2thZ2VzLnJlc29sdmVQYWNrYWdlUGF0aCgnbGludGVyLWVzbGludCcpXG4gIGxldCBsaW50ZXJFc2xpbnRNZXRhXG4gIGlmIChwYWNrYWdlUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gQXBwYXJlbnRseSBmb3Igc29tZSB1c2VycyB0aGUgcGFja2FnZSBwYXRoIGZhaWxzIHRvIHJlc29sdmVcbiAgICBsaW50ZXJFc2xpbnRNZXRhID0geyB2ZXJzaW9uOiAndW5rbm93biEnIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWR5bmFtaWMtcmVxdWlyZVxuICAgIGxpbnRlckVzbGludE1ldGEgPSByZXF1aXJlKGpvaW4ocGFja2FnZVBhdGgsICdwYWNrYWdlLmpzb24nKSlcbiAgfVxuICBjb25zdCBjb25maWcgPSBhdG9tLmNvbmZpZy5nZXQoJ2xpbnRlci1lc2xpbnQnKVxuICBjb25zdCBob3Vyc1NpbmNlUmVzdGFydCA9IE1hdGgucm91bmQoKHByb2Nlc3MudXB0aW1lKCkgLyAzNjAwKSAqIDEwKSAvIDEwXG4gIGxldCByZXR1cm5WYWxcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlbmRKb2Ioe1xuICAgICAgdHlwZTogJ2RlYnVnJyxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGZpbGVQYXRoXG4gICAgfSlcbiAgICByZXR1cm5WYWwgPSB7XG4gICAgICBhdG9tVmVyc2lvbjogYXRvbS5nZXRWZXJzaW9uKCksXG4gICAgICBsaW50ZXJFc2xpbnRWZXJzaW9uOiBsaW50ZXJFc2xpbnRNZXRhLnZlcnNpb24sXG4gICAgICBsaW50ZXJFc2xpbnRDb25maWc6IGNvbmZpZyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZHluYW1pYy1yZXF1aXJlXG4gICAgICBlc2xpbnRWZXJzaW9uOiByZXF1aXJlKGpvaW4ocmVzcG9uc2UucGF0aCwgJ3BhY2thZ2UuanNvbicpKS52ZXJzaW9uLFxuICAgICAgaG91cnNTaW5jZVJlc3RhcnQsXG4gICAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGVzbGludFR5cGU6IHJlc3BvbnNlLnR5cGUsXG4gICAgICBlc2xpbnRQYXRoOiByZXNwb25zZS5wYXRoLFxuICAgICAgZWRpdG9yU2NvcGVzLFxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoYCR7ZXJyb3J9YClcbiAgfVxuICByZXR1cm4gcmV0dXJuVmFsXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZURlYnVnU3RyaW5nKCkge1xuICBjb25zdCBkZWJ1ZyA9IGF3YWl0IGdldERlYnVnSW5mbygpXG4gIGNvbnN0IGRldGFpbHMgPSBbXG4gICAgYEF0b20gdmVyc2lvbjogJHtkZWJ1Zy5hdG9tVmVyc2lvbn1gLFxuICAgIGBsaW50ZXItZXNsaW50IHZlcnNpb246ICR7ZGVidWcubGludGVyRXNsaW50VmVyc2lvbn1gLFxuICAgIGBFU0xpbnQgdmVyc2lvbjogJHtkZWJ1Zy5lc2xpbnRWZXJzaW9ufWAsXG4gICAgYEhvdXJzIHNpbmNlIGxhc3QgQXRvbSByZXN0YXJ0OiAke2RlYnVnLmhvdXJzU2luY2VSZXN0YXJ0fWAsXG4gICAgYFBsYXRmb3JtOiAke2RlYnVnLnBsYXRmb3JtfWAsXG4gICAgYFVzaW5nICR7ZGVidWcuZXNsaW50VHlwZX0gRVNMaW50IGZyb206ICR7ZGVidWcuZXNsaW50UGF0aH1gLFxuICAgIGBDdXJyZW50IGZpbGUncyBzY29wZXM6ICR7SlNPTi5zdHJpbmdpZnkoZGVidWcuZWRpdG9yU2NvcGVzLCBudWxsLCAyKX1gLFxuICAgIGBsaW50ZXItZXNsaW50IGNvbmZpZ3VyYXRpb246ICR7SlNPTi5zdHJpbmdpZnkoZGVidWcubGludGVyRXNsaW50Q29uZmlnLCBudWxsLCAyKX1gXG4gIF1cbiAgcmV0dXJuIGRldGFpbHMuam9pbignXFxuJylcbn1cblxuLyoqXG4gKiBUdXJuIHRoZSBnaXZlbiBvcHRpb25zIGludG8gYSBMaW50ZXIgbWVzc2FnZSBhcnJheVxuICogQHBhcmFtICB7VGV4dEVkaXRvcn0gdGV4dEVkaXRvciBUaGUgVGV4dEVkaXRvciB0byB1c2UgdG8gYnVpbGQgdGhlIG1lc3NhZ2VcbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9ucyAgICBUaGUgcGFyYW1ldGVycyB1c2VkIHRvIGZpbGwgaW4gdGhlIG1lc3NhZ2VcbiAqIEBwYXJhbSAge3N0cmluZ30gW29wdGlvbnMuc2V2ZXJpdHk9J2Vycm9yJ10gQ2FuIGJlIG9uZSBvZjogJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaW5mbydcbiAqIEBwYXJhbSAge3N0cmluZ30gW29wdGlvbnMuZXhjZXJwdD0nJ10gU2hvcnQgdGV4dCB0byB1c2UgaW4gdGhlIG1lc3NhZ2VcbiAqIEBwYXJhbSAge3N0cmluZ3xGdW5jdGlvbn0gW29wdGlvbnMuZGVzY3JpcHRpb25dIFVzZWQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4gKiBAcmV0dXJuIHtpbXBvcnQoXCJhdG9tL2xpbnRlclwiKS5NZXNzYWdlW119IE1lc3NhZ2UgdG8gdXNlciBnZW5lcmF0ZWQgZnJvbSB0aGUgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVVc2VyTWVzc2FnZSh0ZXh0RWRpdG9yLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBzZXZlcml0eSA9ICdlcnJvcicsXG4gICAgZXhjZXJwdCA9ICcnLFxuICAgIGRlc2NyaXB0aW9uLFxuICB9ID0gb3B0aW9uc1xuICByZXR1cm4gW3tcbiAgICBzZXZlcml0eSxcbiAgICBleGNlcnB0LFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGxvY2F0aW9uOiB7XG4gICAgICBmaWxlOiB0ZXh0RWRpdG9yLmdldFBhdGgoKSxcbiAgICAgIHBvc2l0aW9uOiBnZW5lcmF0ZVJhbmdlKHRleHRFZGl0b3IpLFxuICAgIH0sXG4gIH1dXG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbWVzc2FnZSB0byB0aGUgdXNlciBpbiBvcmRlciB0byBuaWNlbHkgZGlzcGxheSB0aGUgRXJyb3IgYmVpbmdcbiAqIHRocm93biBpbnN0ZWFkIG9mIGRlcGVuZGluZyBvbiBnZW5lcmljIGVycm9yIGhhbmRsaW5nLlxuICogQHBhcmFtICB7aW1wb3J0KFwiYXRvbVwiKS5UZXh0RWRpdG9yfSB0ZXh0RWRpdG9yIFRoZSBUZXh0RWRpdG9yIHRvIHVzZSB0byBidWlsZCB0aGUgbWVzc2FnZVxuICogQHBhcmFtICB7RXJyb3J9IGVycm9yICAgICAgRXJyb3IgdG8gZ2VuZXJhdGUgYSBtZXNzYWdlIGZvclxuICogQHJldHVybiB7aW1wb3J0KFwiYXRvbS9saW50ZXJcIikuTWVzc2FnZVtdfSBNZXNzYWdlIHRvIHVzZXIgZ2VuZXJhdGVkIGZyb20gdGhlIEVycm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVFcnJvcih0ZXh0RWRpdG9yLCBlcnJvcikge1xuICBjb25zdCB7IHN0YWNrLCBtZXNzYWdlIH0gPSBlcnJvclxuICAvLyBPbmx5IHNob3cgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG1lc3NhZ2UgYXMgdGhlIGV4Y2VycHRcbiAgY29uc3QgZXhjZXJwdCA9IGBFcnJvciB3aGlsZSBydW5uaW5nIEVTTGludDogJHttZXNzYWdlLnNwbGl0KCdcXG4nKVswXX0uYFxuICBjb25zdCBkZXNjcmlwdGlvbiA9IGA8ZGl2IHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZS13cmFwXCI+JHttZXNzYWdlfVxcbjxociAvPiR7c3RhY2t9PC9kaXY+YFxuICByZXR1cm4gZ2VuZXJhdGVVc2VyTWVzc2FnZSh0ZXh0RWRpdG9yLCB7IHNldmVyaXR5OiAnZXJyb3InLCBleGNlcnB0LCBkZXNjcmlwdGlvbiB9KVxufVxuXG5jb25zdCBnZW5lcmF0ZUludmFsaWRUcmFjZSA9IGFzeW5jICh7XG4gIG1zZ0xpbmUsIG1zZ0NvbCwgbXNnRW5kTGluZSwgbXNnRW5kQ29sLFxuICBlc2xpbnRGdWxsUmFuZ2UsIGZpbGVQYXRoLCB0ZXh0RWRpdG9yLCBydWxlSWQsIG1lc3NhZ2Vcbn0pID0+IHtcbiAgbGV0IGVyck1zZ1JhbmdlID0gYCR7bXNnTGluZSArIDF9OiR7bXNnQ29sfWBcbiAgaWYgKGVzbGludEZ1bGxSYW5nZSkge1xuICAgIGVyck1zZ1JhbmdlICs9IGAgLSAke21zZ0VuZExpbmUgKyAxfToke21zZ0VuZENvbCArIDF9YFxuICB9XG4gIGNvbnN0IHJhbmdlVGV4dCA9IGBSZXF1ZXN0ZWQgJHtlc2xpbnRGdWxsUmFuZ2UgPyAnc3RhcnQgcG9pbnQnIDogJ3JhbmdlJ306ICR7ZXJyTXNnUmFuZ2V9YFxuICBjb25zdCBpc3N1ZVVSTCA9ICdodHRwczovL2dpdGh1Yi5jb20vQXRvbUxpbnRlci9saW50ZXItZXNsaW50L2lzc3Vlcy9uZXcnXG4gIGNvbnN0IHRpdGxlVGV4dCA9IGBJbnZhbGlkIHBvc2l0aW9uIGdpdmVuIGJ5ICcke3J1bGVJZH0nYFxuICBjb25zdCB0aXRsZSA9IGVuY29kZVVSSUNvbXBvbmVudCh0aXRsZVRleHQpXG4gIGNvbnN0IGJvZHkgPSBlbmNvZGVVUklDb21wb25lbnQoW1xuICAgICdFU0xpbnQgcmV0dXJuZWQgYSBwb2ludCB0aGF0IGRpZCBub3QgZXhpc3QgaW4gdGhlIGRvY3VtZW50IGJlaW5nIGVkaXRlZC4nLFxuICAgIGBSdWxlOiBcXGAke3J1bGVJZH1cXGBgLFxuICAgIHJhbmdlVGV4dCxcbiAgICAnJywgJycsXG4gICAgJzwhLS0gSWYgYXQgYWxsIHBvc3NpYmxlLCBwbGVhc2UgaW5jbHVkZSBjb2RlIHRvIHJlcHJvZHVjZSB0aGlzIGlzc3VlISAtLT4nLFxuICAgICcnLCAnJyxcbiAgICAnRGVidWcgaW5mb3JtYXRpb246JyxcbiAgICAnYGBganNvbicsXG4gICAgSlNPTi5zdHJpbmdpZnkoYXdhaXQgZ2V0RGVidWdJbmZvKCksIG51bGwsIDIpLFxuICAgICdgYGAnXG4gIF0uam9pbignXFxuJykpXG5cbiAgY29uc3QgbG9jYXRpb24gPSB7XG4gICAgZmlsZTogZmlsZVBhdGgsXG4gICAgcG9zaXRpb246IGdlbmVyYXRlUmFuZ2UodGV4dEVkaXRvciwgMCksXG4gIH1cbiAgY29uc3QgbmV3SXNzdWVVUkwgPSBgJHtpc3N1ZVVSTH0/dGl0bGU9JHt0aXRsZX0mYm9keT0ke2JvZHl9YFxuXG4gIHJldHVybiB7XG4gICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgZXhjZXJwdDogYCR7dGl0bGVUZXh0fS4gU2VlIHRoZSBkZXNjcmlwdGlvbiBmb3IgZGV0YWlscy4gYFxuICAgICAgKyAnQ2xpY2sgdGhlIFVSTCB0byBvcGVuIGEgbmV3IGlzc3VlIScsXG4gICAgdXJsOiBuZXdJc3N1ZVVSTCxcbiAgICBsb2NhdGlvbixcbiAgICBkZXNjcmlwdGlvbjogYCR7cmFuZ2VUZXh0fVxcbk9yaWdpbmFsIG1lc3NhZ2U6ICR7bWVzc2FnZX1gXG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhIHJhdyByZXNwb25zZSBmcm9tIEVTTGludCwgdGhpcyBwcm9jZXNzZXMgdGhlIG1lc3NhZ2VzIGludG8gYSBmb3JtYXRcbiAqIGNvbXBhdGlibGUgd2l0aCB0aGUgTGludGVyIEFQSS5cbiAqIEBwYXJhbSAge09iamVjdH0gICAgIG1lc3NhZ2VzICAgVGhlIG1lc3NhZ2VzIGZyb20gRVNMaW50J3MgcmVzcG9uc2VcbiAqIEBwYXJhbSAge1RleHRFZGl0b3J9IHRleHRFZGl0b3IgVGhlIEF0b206OlRleHRFZGl0b3Igb2YgdGhlIGZpbGUgdGhlIG1lc3NhZ2VzIGJlbG9uZyB0b1xuICogQHBhcmFtICB7Ym9vbH0gICAgICAgc2hvd1J1bGUgICBXaGV0aGVyIHRvIHNob3cgdGhlIHJ1bGUgaW4gdGhlIG1lc3NhZ2VzXG4gKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgICAgICAgIFRoZSBtZXNzYWdlcyB0cmFuc2Zvcm1lZCBpbnRvIExpbnRlciBtZXNzYWdlc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0VTTGludE1lc3NhZ2VzKG1lc3NhZ2VzLCB0ZXh0RWRpdG9yLCBzaG93UnVsZSkge1xuICByZXR1cm4gUHJvbWlzZS5hbGwobWVzc2FnZXMubWFwKGFzeW5jICh7XG4gICAgZmF0YWwsIG1lc3NhZ2U6IG9yaWdpbmFsTWVzc2FnZSwgbGluZSwgc2V2ZXJpdHksIHJ1bGVJZCwgY29sdW1uLCBmaXgsIGVuZExpbmUsIGVuZENvbHVtblxuICB9KSA9PiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGZhdGFsID8gb3JpZ2luYWxNZXNzYWdlLnNwbGl0KCdcXG4nKVswXSA6IG9yaWdpbmFsTWVzc2FnZVxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGV4dEVkaXRvci5nZXRQYXRoKClcbiAgICBjb25zdCB0ZXh0QnVmZmVyID0gdGV4dEVkaXRvci5nZXRCdWZmZXIoKVxuICAgIGxldCBsaW50ZXJGaXggPSBudWxsXG4gICAgaWYgKGZpeCkge1xuICAgICAgY29uc3QgZml4UmFuZ2UgPSBuZXcgUmFuZ2UoXG4gICAgICAgIHRleHRCdWZmZXIucG9zaXRpb25Gb3JDaGFyYWN0ZXJJbmRleChmaXgucmFuZ2VbMF0pLFxuICAgICAgICB0ZXh0QnVmZmVyLnBvc2l0aW9uRm9yQ2hhcmFjdGVySW5kZXgoZml4LnJhbmdlWzFdKVxuICAgICAgKVxuICAgICAgbGludGVyRml4ID0ge1xuICAgICAgICBwb3NpdGlvbjogZml4UmFuZ2UsXG4gICAgICAgIHJlcGxhY2VXaXRoOiBmaXgudGV4dFxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbXNnQ29sXG4gICAgbGV0IG1zZ0VuZExpbmVcbiAgICBsZXQgbXNnRW5kQ29sXG4gICAgbGV0IGVzbGludEZ1bGxSYW5nZSA9IGZhbHNlXG5cbiAgICAvKlxuICAgICBOb3RlOiBFU0xpbnQgcG9zaXRpb25zIGFyZSAxLWluZGV4ZWQsIHdoaWxlIEF0b20gZXhwZWN0cyAwLWluZGV4ZWQsXG4gICAgIHBvc2l0aW9ucy4gV2UgYXJlIHN1YnRyYWN0aW5nIDEgZnJvbSB0aGVzZSB2YWx1ZXMgaGVyZSBzbyB3ZSBkb24ndCBoYXZlIHRvXG4gICAgIGtlZXAgZG9pbmcgc28gaW4gbGF0ZXIgdXNlcy5cbiAgICAgKi9cbiAgICBjb25zdCBtc2dMaW5lID0gbGluZSAtIDFcbiAgICBpZiAodHlwZW9mIGVuZENvbHVtbiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGVuZExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICBlc2xpbnRGdWxsUmFuZ2UgPSB0cnVlXG4gICAgICAvLyBIZXJlIHdlIGFsd2F5cyB3YW50IHRoZSBjb2x1bW4gdG8gYmUgYSBudW1iZXJcbiAgICAgIG1zZ0NvbCA9IE1hdGgubWF4KDAsIGNvbHVtbiAtIDEpXG4gICAgICBtc2dFbmRMaW5lID0gZW5kTGluZSAtIDFcbiAgICAgIG1zZ0VuZENvbCA9IGVuZENvbHVtbiAtIDFcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2Ugd2FudCBtc2dDb2wgdG8gcmVtYWluIHVuZGVmaW5lZCBpZiBpdCB3YXMgaW5pdGlhbGx5IHNvXG4gICAgICAvLyBgZ2VuZXJhdGVSYW5nZWAgd2lsbCBnaXZlIHVzIGEgcmFuZ2Ugb3ZlciB0aGUgZW50aXJlIGxpbmVcbiAgICAgIG1zZ0NvbCA9IHR5cGVvZiBjb2x1bW4gPT09ICdudW1iZXInID8gY29sdW1uIC0gMSA6IGNvbHVtblxuICAgIH1cblxuICAgIGxldCByZXQgPSB7XG4gICAgICBzZXZlcml0eTogc2V2ZXJpdHkgPT09IDEgPyAnd2FybmluZycgOiAnZXJyb3InLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgZmlsZTogZmlsZVBhdGgsXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJ1bGVJZCkge1xuICAgICAgcmV0LnVybCA9IHJ1bGVzLmdldFJ1bGVVcmwocnVsZUlkKVxuICAgIH1cblxuICAgIC8vIEhBQ0sgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9BdG9tTGludGVyL2xpbnRlci1lc2xpbnQvaXNzdWVzLzEyNDlcbiAgICBsZXQgZml4TGluZUVuZGluZyA9IGZhbHNlXG4gICAgaWYgKHJ1bGVJZCA9PT0gJ3ByZXR0aWVyL3ByZXR0aWVyJyAmJiAobWVzc2FnZSA9PT0gJ0RlbGV0ZSBg4pCNYCcpKSB7XG4gICAgICBmaXhMaW5lRW5kaW5nID0gdHJ1ZVxuICAgIH1cblxuICAgIGxldCByYW5nZVxuICAgIHRyeSB7XG4gICAgICBpZiAoZXNsaW50RnVsbFJhbmdlKSB7XG4gICAgICAgIGlmICghZml4TGluZUVuZGluZykge1xuICAgICAgICAgIHRocm93SWZJbnZhbGlkUG9pbnQodGV4dEJ1ZmZlciwgbXNnTGluZSwgbXNnQ29sKVxuICAgICAgICAgIHRocm93SWZJbnZhbGlkUG9pbnQodGV4dEJ1ZmZlciwgbXNnRW5kTGluZSwgbXNnRW5kQ29sKVxuICAgICAgICB9XG4gICAgICAgIHJhbmdlID0gW1ttc2dMaW5lLCBtc2dDb2xdLCBbbXNnRW5kTGluZSwgbXNnRW5kQ29sXV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhbmdlID0gZ2VuZXJhdGVSYW5nZSh0ZXh0RWRpdG9yLCBtc2dMaW5lLCBtc2dDb2wpXG4gICAgICB9XG4gICAgICByZXQubG9jYXRpb24ucG9zaXRpb24gPSByYW5nZVxuXG4gICAgICBjb25zdCBydWxlQXBwZW5kaXggPSBzaG93UnVsZSA/IGAgKCR7cnVsZUlkIHx8ICdGYXRhbCd9KWAgOiAnJ1xuICAgICAgcmV0LmV4Y2VycHQgPSBgJHttZXNzYWdlfSR7cnVsZUFwcGVuZGl4fWBcblxuICAgICAgaWYgKGxpbnRlckZpeCkge1xuICAgICAgICByZXQuc29sdXRpb25zID0gW2xpbnRlckZpeF1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldCA9IGF3YWl0IGdlbmVyYXRlSW52YWxpZFRyYWNlKHtcbiAgICAgICAgbXNnTGluZSxcbiAgICAgICAgbXNnQ29sLFxuICAgICAgICBtc2dFbmRMaW5lLFxuICAgICAgICBtc2dFbmRDb2wsXG4gICAgICAgIGVzbGludEZ1bGxSYW5nZSxcbiAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgIHRleHRFZGl0b3IsXG4gICAgICAgIHJ1bGVJZCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldFxuICB9KSlcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIGxpbnQgam9iXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgICByZXNwb25zZSAgIFRoZSByYXcgcmVzcG9uc2UgZnJvbSB0aGUgam9iXG4gKiBAcGFyYW0gIHtUZXh0RWRpdG9yfSB0ZXh0RWRpdG9yIFRoZSBBdG9tOjpUZXh0RWRpdG9yIG9mIHRoZSBmaWxlIHRoZSBtZXNzYWdlcyBiZWxvbmcgdG9cbiAqIEBwYXJhbSAge2Jvb2x9ICAgICAgIHNob3dSdWxlICAgV2hldGhlciB0byBzaG93IHRoZSBydWxlIGluIHRoZSBtZXNzYWdlc1xuICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgICAgICAgICBUaGUgbWVzc2FnZXMgdHJhbnNmb3JtZWQgaW50byBMaW50ZXIgbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NKb2JSZXNwb25zZShyZXNwb25zZSwgdGV4dEVkaXRvciwgc2hvd1J1bGUpIHtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXNwb25zZSwgJ3VwZGF0ZWRSdWxlcycpKSB7XG4gICAgcnVsZXMucmVwbGFjZVJ1bGVzKHJlc3BvbnNlLnVwZGF0ZWRSdWxlcylcbiAgfVxuICByZXR1cm4gcHJvY2Vzc0VTTGludE1lc3NhZ2VzKHJlc3BvbnNlLm1lc3NhZ2VzLCB0ZXh0RWRpdG9yLCBzaG93UnVsZSlcbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbImFzeW5jUmFuZG9tQnl0ZXMiLCJyYW5kb21CeXRlcyIsInJ1bGVzIiwiUnVsZXMiLCJ3b3JrZXIiLCJzdGFydFdvcmtlciIsIlRhc2siLCJyZXF1aXJlIiwicmVzb2x2ZSIsIm9uIiwib2JqIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJwYXJzZSIsImV4Iiwic3RhcnRlZCIsInN0YXJ0Iiwia2lsbFdvcmtlciIsInRlcm1pbmF0ZSIsInNlbmRKb2IiLCJjb25maWciLCJjaGlsZFByb2Nlc3MiLCJjb25uZWN0ZWQiLCJlbWl0S2V5IiwidG9TdHJpbmciLCJQcm9taXNlIiwicmVqZWN0IiwiZXJyU3ViIiwibXNnIiwic3RhY2siLCJlcnJvciIsIkVycm9yIiwiZGlzcG9zZSIsInJlc3BvbnNlU3ViIiwiZGF0YSIsInNlbmQiLCJlIiwiZ2V0RGVidWdJbmZvIiwidGV4dEVkaXRvciIsImF0b20iLCJ3b3Jrc3BhY2UiLCJnZXRBY3RpdmVUZXh0RWRpdG9yIiwiZmlsZVBhdGgiLCJlZGl0b3JTY29wZXMiLCJpc1RleHRFZGl0b3IiLCJnZXRQYXRoIiwiZ2V0TGFzdEN1cnNvciIsImdldFNjb3BlRGVzY3JpcHRvciIsImdldFNjb3Blc0FycmF5IiwicGFja2FnZVBhdGgiLCJwYWNrYWdlcyIsInJlc29sdmVQYWNrYWdlUGF0aCIsImxpbnRlckVzbGludE1ldGEiLCJ1bmRlZmluZWQiLCJ2ZXJzaW9uIiwiZ2V0IiwiaG91cnNTaW5jZVJlc3RhcnQiLCJNYXRoIiwicm91bmQiLCJwcm9jZXNzIiwidXB0aW1lIiwicmV0dXJuVmFsIiwicmVzcG9uc2UiLCJ0eXBlIiwiYXRvbVZlcnNpb24iLCJnZXRWZXJzaW9uIiwibGludGVyRXNsaW50VmVyc2lvbiIsImxpbnRlckVzbGludENvbmZpZyIsImVzbGludFZlcnNpb24iLCJwYXRoIiwicGxhdGZvcm0iLCJlc2xpbnRUeXBlIiwiZXNsaW50UGF0aCIsIm5vdGlmaWNhdGlvbnMiLCJhZGRFcnJvciIsImdlbmVyYXRlRGVidWdTdHJpbmciLCJkZWJ1ZyIsImRldGFpbHMiLCJzdHJpbmdpZnkiLCJqb2luIiwiZ2VuZXJhdGVVc2VyTWVzc2FnZSIsIm9wdGlvbnMiLCJzZXZlcml0eSIsImV4Y2VycHQiLCJkZXNjcmlwdGlvbiIsImxvY2F0aW9uIiwiZmlsZSIsInBvc2l0aW9uIiwiaGFuZGxlRXJyb3IiLCJtZXNzYWdlIiwic3BsaXQiLCJnZW5lcmF0ZUludmFsaWRUcmFjZSIsIm1zZ0xpbmUiLCJtc2dDb2wiLCJtc2dFbmRMaW5lIiwibXNnRW5kQ29sIiwiZXNsaW50RnVsbFJhbmdlIiwicnVsZUlkIiwiZXJyTXNnUmFuZ2UiLCJyYW5nZVRleHQiLCJpc3N1ZVVSTCIsInRpdGxlVGV4dCIsInRpdGxlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYm9keSIsIm5ld0lzc3VlVVJMIiwidXJsIiwicHJvY2Vzc0VTTGludE1lc3NhZ2VzIiwibWVzc2FnZXMiLCJzaG93UnVsZSIsImFsbCIsIm1hcCIsImZhdGFsIiwib3JpZ2luYWxNZXNzYWdlIiwibGluZSIsImNvbHVtbiIsImZpeCIsImVuZExpbmUiLCJlbmRDb2x1bW4iLCJ0ZXh0QnVmZmVyIiwiZ2V0QnVmZmVyIiwibGludGVyRml4IiwiZml4UmFuZ2UiLCJSYW5nZSIsInBvc2l0aW9uRm9yQ2hhcmFjdGVySW5kZXgiLCJyYW5nZSIsInJlcGxhY2VXaXRoIiwidGV4dCIsIm1heCIsInJldCIsImdldFJ1bGVVcmwiLCJmaXhMaW5lRW5kaW5nIiwicnVsZUFwcGVuZGl4Iiwic29sdXRpb25zIiwiZXJyIiwicHJvY2Vzc0pvYlJlc3BvbnNlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicmVwbGFjZVJ1bGVzIiwidXBkYXRlZFJ1bGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7QUFIQTtBQUtBLE1BQU1BLGdCQUFnQixHQUFHLHFCQUFVQyxtQkFBVixDQUF6QjtBQUNPLE1BQU1DLEtBQUssR0FBRyxJQUFJQyxjQUFKLEVBQWQ7O0FBQ1AsSUFBSUMsTUFBTSxHQUFHLElBQWI7QUFFQTtBQUNBO0FBQ0E7O0FBQ08sU0FBU0MsV0FBVCxHQUF1QjtBQUM1QixNQUFJRCxNQUFNLEtBQUssSUFBZixFQUFxQjtBQUNuQkEsSUFBQUEsTUFBTSxHQUFHLElBQUlFLFVBQUosQ0FBU0MsT0FBTyxDQUFDQyxPQUFSLENBQWdCLGFBQWhCLENBQVQsQ0FBVDtBQUNEOztBQUVESixFQUFBQSxNQUFNLENBQUNLLEVBQVAsQ0FBVSxLQUFWLEVBQWtCQyxHQUFELElBQVM7QUFDeEIsUUFBSTtBQUNGQyxNQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsSUFBSSxDQUFDQyxLQUFMLENBQVdKLEdBQVgsQ0FBWjtBQUNELEtBRkQsQ0FFRSxPQUFPSyxFQUFQLEVBQVc7QUFDWEosTUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVlGLEdBQVo7QUFDRDtBQUNGLEdBTkQ7O0FBUUEsTUFBSU4sTUFBTSxDQUFDWSxPQUFYLEVBQW9CO0FBQ2xCO0FBQ0E7QUFDRCxHQWhCMkIsQ0FpQjVCOzs7QUFDQVosRUFBQUEsTUFBTSxDQUFDYSxLQUFQLENBQWEsRUFBYixFQWxCNEIsQ0FvQjVCOztBQUNBYixFQUFBQSxNQUFNLENBQUNZLE9BQVAsR0FBaUIsSUFBakI7QUFDRDtBQUVEO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU0UsVUFBVCxHQUFzQjtBQUMzQixNQUFJZCxNQUFNLEtBQUssSUFBZixFQUFxQjtBQUNuQkEsSUFBQUEsTUFBTSxDQUFDZSxTQUFQO0FBQ0FmLElBQUFBLE1BQU0sR0FBRyxJQUFUO0FBQ0Q7QUFDRjtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLGVBQWVnQixPQUFmLENBQXVCQyxNQUF2QixFQUErQjtBQUNwQyxNQUFJakIsTUFBTSxJQUFJLENBQUNBLE1BQU0sQ0FBQ2tCLFlBQVAsQ0FBb0JDLFNBQW5DLEVBQThDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBTCxJQUFBQSxVQUFVO0FBQ1gsR0FObUMsQ0FRcEM7OztBQUNBYixFQUFBQSxXQUFXLEdBVHlCLENBV3BDO0FBQ0E7QUFDQTtBQUNBOztBQUNBZ0IsRUFBQUEsTUFBTSxDQUFDRyxPQUFQLEdBQWlCLENBQUMsTUFBTXhCLGdCQUFnQixDQUFDLENBQUQsQ0FBdkIsRUFBNEJ5QixRQUE1QixDQUFxQyxLQUFyQyxDQUFqQixDQWZvQyxDQWV5Qjs7QUFFN0QsU0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ2xCLE9BQUQsRUFBVW1CLE1BQVYsS0FBcUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsVUFBTUMsTUFBTSxHQUFHeEIsTUFBTSxDQUFDSyxFQUFQLENBQVcsZUFBY1ksTUFBTSxDQUFDRyxPQUFRLEVBQXhDLEVBQTJDLENBQUM7QUFBRUssTUFBQUEsR0FBRjtBQUFPQyxNQUFBQTtBQUFQLEtBQUQsS0FBb0I7QUFDNUU7QUFDQSxZQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFVSCxHQUFWLENBQWQsQ0FGNEUsQ0FHNUU7O0FBQ0FFLE1BQUFBLEtBQUssQ0FBQ0QsS0FBTixHQUFjQSxLQUFkO0FBQ0FGLE1BQUFBLE1BQU0sQ0FBQ0ssT0FBUCxHQUw0RSxDQU01RTs7QUFDQUMsTUFBQUEsV0FBVyxDQUFDRCxPQUFaO0FBQ0FOLE1BQUFBLE1BQU0sQ0FBQ0ksS0FBRCxDQUFOO0FBQ0QsS0FUYyxDQUFmO0FBVUEsVUFBTUcsV0FBVyxHQUFHOUIsTUFBTSxDQUFDSyxFQUFQLENBQVVZLE1BQU0sQ0FBQ0csT0FBakIsRUFBMkJXLElBQUQsSUFBVTtBQUN0RFAsTUFBQUEsTUFBTSxDQUFDSyxPQUFQO0FBQ0FDLE1BQUFBLFdBQVcsQ0FBQ0QsT0FBWjtBQUNBekIsTUFBQUEsT0FBTyxDQUFDMkIsSUFBRCxDQUFQO0FBQ0QsS0FKbUIsQ0FBcEIsQ0Fkc0MsQ0FtQnRDOztBQUNBLFFBQUk7QUFDRi9CLE1BQUFBLE1BQU0sQ0FBQ2dDLElBQVAsQ0FBWWYsTUFBWjtBQUNELEtBRkQsQ0FFRSxPQUFPZ0IsQ0FBUCxFQUFVO0FBQ1ZULE1BQUFBLE1BQU0sQ0FBQ0ssT0FBUDtBQUNBQyxNQUFBQSxXQUFXLENBQUNELE9BQVo7QUFDQXRCLE1BQUFBLE9BQU8sQ0FBQ29CLEtBQVIsQ0FBY00sQ0FBZDtBQUNEO0FBQ0YsR0EzQk0sQ0FBUDtBQTRCRDs7QUFFTSxlQUFlQyxZQUFmLEdBQThCO0FBQ25DLFFBQU1DLFVBQVUsR0FBR0MsSUFBSSxDQUFDQyxTQUFMLENBQWVDLG1CQUFmLEVBQW5CO0FBQ0EsTUFBSUMsUUFBSjtBQUNBLE1BQUlDLFlBQUo7O0FBQ0EsTUFBSUosSUFBSSxDQUFDQyxTQUFMLENBQWVJLFlBQWYsQ0FBNEJOLFVBQTVCLENBQUosRUFBNkM7QUFDM0NJLElBQUFBLFFBQVEsR0FBR0osVUFBVSxDQUFDTyxPQUFYLEVBQVg7QUFDQUYsSUFBQUEsWUFBWSxHQUFHTCxVQUFVLENBQUNRLGFBQVgsR0FBMkJDLGtCQUEzQixHQUFnREMsY0FBaEQsRUFBZjtBQUNELEdBSEQsTUFHTztBQUNMO0FBQ0FOLElBQUFBLFFBQVEsR0FBRyxTQUFYO0FBQ0FDLElBQUFBLFlBQVksR0FBRyxDQUFDLFNBQUQsQ0FBZjtBQUNEOztBQUNELFFBQU1NLFdBQVcsR0FBR1YsSUFBSSxDQUFDVyxRQUFMLENBQWNDLGtCQUFkLENBQWlDLGVBQWpDLENBQXBCO0FBQ0EsTUFBSUMsZ0JBQUo7O0FBQ0EsTUFBSUgsV0FBVyxLQUFLSSxTQUFwQixFQUErQjtBQUM3QjtBQUNBRCxJQUFBQSxnQkFBZ0IsR0FBRztBQUFFRSxNQUFBQSxPQUFPLEVBQUU7QUFBWCxLQUFuQjtBQUNELEdBSEQsTUFHTztBQUNMO0FBQ0FGLElBQUFBLGdCQUFnQixHQUFHOUMsT0FBTyxDQUFDLGdCQUFLMkMsV0FBTCxFQUFrQixjQUFsQixDQUFELENBQTFCO0FBQ0Q7O0FBQ0QsUUFBTTdCLE1BQU0sR0FBR21CLElBQUksQ0FBQ25CLE1BQUwsQ0FBWW1DLEdBQVosQ0FBZ0IsZUFBaEIsQ0FBZjtBQUNBLFFBQU1DLGlCQUFpQixHQUFHQyxJQUFJLENBQUNDLEtBQUwsQ0FBWUMsT0FBTyxDQUFDQyxNQUFSLEtBQW1CLElBQXBCLEdBQTRCLEVBQXZDLElBQTZDLEVBQXZFO0FBQ0EsTUFBSUMsU0FBSjs7QUFDQSxNQUFJO0FBQ0YsVUFBTUMsUUFBUSxHQUFHLE1BQU0zQyxPQUFPLENBQUM7QUFDN0I0QyxNQUFBQSxJQUFJLEVBQUUsT0FEdUI7QUFFN0IzQyxNQUFBQSxNQUY2QjtBQUc3QnNCLE1BQUFBO0FBSDZCLEtBQUQsQ0FBOUI7QUFLQW1CLElBQUFBLFNBQVMsR0FBRztBQUNWRyxNQUFBQSxXQUFXLEVBQUV6QixJQUFJLENBQUMwQixVQUFMLEVBREg7QUFFVkMsTUFBQUEsbUJBQW1CLEVBQUVkLGdCQUFnQixDQUFDRSxPQUY1QjtBQUdWYSxNQUFBQSxrQkFBa0IsRUFBRS9DLE1BSFY7QUFJVjtBQUNBZ0QsTUFBQUEsYUFBYSxFQUFFOUQsT0FBTyxDQUFDLGdCQUFLd0QsUUFBUSxDQUFDTyxJQUFkLEVBQW9CLGNBQXBCLENBQUQsQ0FBUCxDQUE2Q2YsT0FMbEQ7QUFNVkUsTUFBQUEsaUJBTlU7QUFPVmMsTUFBQUEsUUFBUSxFQUFFWCxPQUFPLENBQUNXLFFBUFI7QUFRVkMsTUFBQUEsVUFBVSxFQUFFVCxRQUFRLENBQUNDLElBUlg7QUFTVlMsTUFBQUEsVUFBVSxFQUFFVixRQUFRLENBQUNPLElBVFg7QUFVVjFCLE1BQUFBO0FBVlUsS0FBWjtBQVlELEdBbEJELENBa0JFLE9BQU9iLEtBQVAsRUFBYztBQUNkUyxJQUFBQSxJQUFJLENBQUNrQyxhQUFMLENBQW1CQyxRQUFuQixDQUE2QixHQUFFNUMsS0FBTSxFQUFyQztBQUNEOztBQUNELFNBQU8rQixTQUFQO0FBQ0Q7O0FBRU0sZUFBZWMsbUJBQWYsR0FBcUM7QUFDMUMsUUFBTUMsS0FBSyxHQUFHLE1BQU12QyxZQUFZLEVBQWhDO0FBQ0EsUUFBTXdDLE9BQU8sR0FBRyxDQUNiLGlCQUFnQkQsS0FBSyxDQUFDWixXQUFZLEVBRHJCLEVBRWIsMEJBQXlCWSxLQUFLLENBQUNWLG1CQUFvQixFQUZ0QyxFQUdiLG1CQUFrQlUsS0FBSyxDQUFDUixhQUFjLEVBSHpCLEVBSWIsa0NBQWlDUSxLQUFLLENBQUNwQixpQkFBa0IsRUFKNUMsRUFLYixhQUFZb0IsS0FBSyxDQUFDTixRQUFTLEVBTGQsRUFNYixTQUFRTSxLQUFLLENBQUNMLFVBQVcsaUJBQWdCSyxLQUFLLENBQUNKLFVBQVcsRUFON0MsRUFPYiwwQkFBeUI1RCxJQUFJLENBQUNrRSxTQUFMLENBQWVGLEtBQUssQ0FBQ2pDLFlBQXJCLEVBQW1DLElBQW5DLEVBQXlDLENBQXpDLENBQTRDLEVBUHhELEVBUWIsZ0NBQStCL0IsSUFBSSxDQUFDa0UsU0FBTCxDQUFlRixLQUFLLENBQUNULGtCQUFyQixFQUF5QyxJQUF6QyxFQUErQyxDQUEvQyxDQUFrRCxFQVJwRSxDQUFoQjtBQVVBLFNBQU9VLE9BQU8sQ0FBQ0UsSUFBUixDQUFhLElBQWIsQ0FBUDtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTQyxtQkFBVCxDQUE2QjFDLFVBQTdCLEVBQXlDMkMsT0FBekMsRUFBa0Q7QUFDdkQsUUFBTTtBQUNKQyxJQUFBQSxRQUFRLEdBQUcsT0FEUDtBQUVKQyxJQUFBQSxPQUFPLEdBQUcsRUFGTjtBQUdKQyxJQUFBQTtBQUhJLE1BSUZILE9BSko7QUFLQSxTQUFPLENBQUM7QUFDTkMsSUFBQUEsUUFETTtBQUVOQyxJQUFBQSxPQUZNO0FBR05DLElBQUFBLFdBSE07QUFJTkMsSUFBQUEsUUFBUSxFQUFFO0FBQ1JDLE1BQUFBLElBQUksRUFBRWhELFVBQVUsQ0FBQ08sT0FBWCxFQURFO0FBRVIwQyxNQUFBQSxRQUFRLEVBQUUsK0JBQWNqRCxVQUFkO0FBRkY7QUFKSixHQUFELENBQVA7QUFTRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTa0QsV0FBVCxDQUFxQmxELFVBQXJCLEVBQWlDUixLQUFqQyxFQUF3QztBQUM3QyxRQUFNO0FBQUVELElBQUFBLEtBQUY7QUFBUzRELElBQUFBO0FBQVQsTUFBcUIzRCxLQUEzQixDQUQ2QyxDQUU3Qzs7QUFDQSxRQUFNcUQsT0FBTyxHQUFJLCtCQUE4Qk0sT0FBTyxDQUFDQyxLQUFSLENBQWMsSUFBZCxFQUFvQixDQUFwQixDQUF1QixHQUF0RTtBQUNBLFFBQU1OLFdBQVcsR0FBSSxzQ0FBcUNLLE9BQVEsV0FBVTVELEtBQU0sUUFBbEY7QUFDQSxTQUFPbUQsbUJBQW1CLENBQUMxQyxVQUFELEVBQWE7QUFBRTRDLElBQUFBLFFBQVEsRUFBRSxPQUFaO0FBQXFCQyxJQUFBQSxPQUFyQjtBQUE4QkMsSUFBQUE7QUFBOUIsR0FBYixDQUExQjtBQUNEOztBQUVELE1BQU1PLG9CQUFvQixHQUFHLE9BQU87QUFDbENDLEVBQUFBLE9BRGtDO0FBQ3pCQyxFQUFBQSxNQUR5QjtBQUNqQkMsRUFBQUEsVUFEaUI7QUFDTEMsRUFBQUEsU0FESztBQUVsQ0MsRUFBQUEsZUFGa0M7QUFFakJ0RCxFQUFBQSxRQUZpQjtBQUVQSixFQUFBQSxVQUZPO0FBRUsyRCxFQUFBQSxNQUZMO0FBRWFSLEVBQUFBO0FBRmIsQ0FBUCxLQUd2QjtBQUNKLE1BQUlTLFdBQVcsR0FBSSxHQUFFTixPQUFPLEdBQUcsQ0FBRSxJQUFHQyxNQUFPLEVBQTNDOztBQUNBLE1BQUlHLGVBQUosRUFBcUI7QUFDbkJFLElBQUFBLFdBQVcsSUFBSyxNQUFLSixVQUFVLEdBQUcsQ0FBRSxJQUFHQyxTQUFTLEdBQUcsQ0FBRSxFQUFyRDtBQUNEOztBQUNELFFBQU1JLFNBQVMsR0FBSSxhQUFZSCxlQUFlLEdBQUcsYUFBSCxHQUFtQixPQUFRLEtBQUlFLFdBQVksRUFBekY7QUFDQSxRQUFNRSxRQUFRLEdBQUcsd0RBQWpCO0FBQ0EsUUFBTUMsU0FBUyxHQUFJLDhCQUE2QkosTUFBTyxHQUF2RDtBQUNBLFFBQU1LLEtBQUssR0FBR0Msa0JBQWtCLENBQUNGLFNBQUQsQ0FBaEM7QUFDQSxRQUFNRyxJQUFJLEdBQUdELGtCQUFrQixDQUFDLENBQzlCLDBFQUQ4QixFQUU3QixXQUFVTixNQUFPLElBRlksRUFHOUJFLFNBSDhCLEVBSTlCLEVBSjhCLEVBSTFCLEVBSjBCLEVBSzlCLDJFQUw4QixFQU05QixFQU44QixFQU0xQixFQU4wQixFQU85QixvQkFQOEIsRUFROUIsU0FSOEIsRUFTOUJ2RixJQUFJLENBQUNrRSxTQUFMLENBQWUsTUFBTXpDLFlBQVksRUFBakMsRUFBcUMsSUFBckMsRUFBMkMsQ0FBM0MsQ0FUOEIsRUFVOUIsS0FWOEIsRUFXOUIwQyxJQVg4QixDQVd6QixJQVh5QixDQUFELENBQS9CO0FBYUEsUUFBTU0sUUFBUSxHQUFHO0FBQ2ZDLElBQUFBLElBQUksRUFBRTVDLFFBRFM7QUFFZjZDLElBQUFBLFFBQVEsRUFBRSwrQkFBY2pELFVBQWQsRUFBMEIsQ0FBMUI7QUFGSyxHQUFqQjtBQUlBLFFBQU1tRSxXQUFXLEdBQUksR0FBRUwsUUFBUyxVQUFTRSxLQUFNLFNBQVFFLElBQUssRUFBNUQ7QUFFQSxTQUFPO0FBQ0x0QixJQUFBQSxRQUFRLEVBQUUsT0FETDtBQUVMQyxJQUFBQSxPQUFPLEVBQUcsR0FBRWtCLFNBQVUscUNBQWIsR0FDTCxvQ0FIQztBQUlMSyxJQUFBQSxHQUFHLEVBQUVELFdBSkE7QUFLTHBCLElBQUFBLFFBTEs7QUFNTEQsSUFBQUEsV0FBVyxFQUFHLEdBQUVlLFNBQVUsdUJBQXNCVixPQUFRO0FBTm5ELEdBQVA7QUFRRCxDQXZDRDtBQXlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxlQUFla0IscUJBQWYsQ0FBcUNDLFFBQXJDLEVBQStDdEUsVUFBL0MsRUFBMkR1RSxRQUEzRCxFQUFxRTtBQUMxRSxTQUFPcEYsT0FBTyxDQUFDcUYsR0FBUixDQUFZRixRQUFRLENBQUNHLEdBQVQsQ0FBYSxPQUFPO0FBQ3JDQyxJQUFBQSxLQURxQztBQUM5QnZCLElBQUFBLE9BQU8sRUFBRXdCLGVBRHFCO0FBQ0pDLElBQUFBLElBREk7QUFDRWhDLElBQUFBLFFBREY7QUFDWWUsSUFBQUEsTUFEWjtBQUNvQmtCLElBQUFBLE1BRHBCO0FBQzRCQyxJQUFBQSxHQUQ1QjtBQUNpQ0MsSUFBQUEsT0FEakM7QUFDMENDLElBQUFBO0FBRDFDLEdBQVAsS0FFMUI7QUFDSixVQUFNN0IsT0FBTyxHQUFHdUIsS0FBSyxHQUFHQyxlQUFlLENBQUN2QixLQUFoQixDQUFzQixJQUF0QixFQUE0QixDQUE1QixDQUFILEdBQW9DdUIsZUFBekQ7QUFDQSxVQUFNdkUsUUFBUSxHQUFHSixVQUFVLENBQUNPLE9BQVgsRUFBakI7QUFDQSxVQUFNMEUsVUFBVSxHQUFHakYsVUFBVSxDQUFDa0YsU0FBWCxFQUFuQjtBQUNBLFFBQUlDLFNBQVMsR0FBRyxJQUFoQjs7QUFDQSxRQUFJTCxHQUFKLEVBQVM7QUFDUCxZQUFNTSxRQUFRLEdBQUcsSUFBSUMsV0FBSixDQUNmSixVQUFVLENBQUNLLHlCQUFYLENBQXFDUixHQUFHLENBQUNTLEtBQUosQ0FBVSxDQUFWLENBQXJDLENBRGUsRUFFZk4sVUFBVSxDQUFDSyx5QkFBWCxDQUFxQ1IsR0FBRyxDQUFDUyxLQUFKLENBQVUsQ0FBVixDQUFyQyxDQUZlLENBQWpCO0FBSUFKLE1BQUFBLFNBQVMsR0FBRztBQUNWbEMsUUFBQUEsUUFBUSxFQUFFbUMsUUFEQTtBQUVWSSxRQUFBQSxXQUFXLEVBQUVWLEdBQUcsQ0FBQ1c7QUFGUCxPQUFaO0FBSUQ7O0FBQ0QsUUFBSWxDLE1BQUo7QUFDQSxRQUFJQyxVQUFKO0FBQ0EsUUFBSUMsU0FBSjtBQUNBLFFBQUlDLGVBQWUsR0FBRyxLQUF0QjtBQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBQ0ksVUFBTUosT0FBTyxHQUFHc0IsSUFBSSxHQUFHLENBQXZCOztBQUNBLFFBQUksT0FBT0ksU0FBUCxLQUFxQixRQUFyQixJQUFpQyxPQUFPRCxPQUFQLEtBQW1CLFFBQXhELEVBQWtFO0FBQ2hFckIsTUFBQUEsZUFBZSxHQUFHLElBQWxCLENBRGdFLENBRWhFOztBQUNBSCxNQUFBQSxNQUFNLEdBQUdwQyxJQUFJLENBQUN1RSxHQUFMLENBQVMsQ0FBVCxFQUFZYixNQUFNLEdBQUcsQ0FBckIsQ0FBVDtBQUNBckIsTUFBQUEsVUFBVSxHQUFHdUIsT0FBTyxHQUFHLENBQXZCO0FBQ0F0QixNQUFBQSxTQUFTLEdBQUd1QixTQUFTLEdBQUcsQ0FBeEI7QUFDRCxLQU5ELE1BTU87QUFDTDtBQUNBO0FBQ0F6QixNQUFBQSxNQUFNLEdBQUcsT0FBT3NCLE1BQVAsS0FBa0IsUUFBbEIsR0FBNkJBLE1BQU0sR0FBRyxDQUF0QyxHQUEwQ0EsTUFBbkQ7QUFDRDs7QUFFRCxRQUFJYyxHQUFHLEdBQUc7QUFDUi9DLE1BQUFBLFFBQVEsRUFBRUEsUUFBUSxLQUFLLENBQWIsR0FBaUIsU0FBakIsR0FBNkIsT0FEL0I7QUFFUkcsTUFBQUEsUUFBUSxFQUFFO0FBQ1JDLFFBQUFBLElBQUksRUFBRTVDO0FBREU7QUFGRixLQUFWOztBQU9BLFFBQUl1RCxNQUFKLEVBQVk7QUFDVmdDLE1BQUFBLEdBQUcsQ0FBQ3ZCLEdBQUosR0FBVXpHLEtBQUssQ0FBQ2lJLFVBQU4sQ0FBaUJqQyxNQUFqQixDQUFWO0FBQ0QsS0EvQ0csQ0FpREo7OztBQUNBLFFBQUlrQyxhQUFhLEdBQUcsS0FBcEI7O0FBQ0EsUUFBSWxDLE1BQU0sS0FBSyxtQkFBWCxJQUFtQ1IsT0FBTyxLQUFLLFlBQW5ELEVBQWtFO0FBQ2hFMEMsTUFBQUEsYUFBYSxHQUFHLElBQWhCO0FBQ0Q7O0FBRUQsUUFBSU4sS0FBSjs7QUFDQSxRQUFJO0FBQ0YsVUFBSTdCLGVBQUosRUFBcUI7QUFDbkIsWUFBSSxDQUFDbUMsYUFBTCxFQUFvQjtBQUNsQiwyQ0FBb0JaLFVBQXBCLEVBQWdDM0IsT0FBaEMsRUFBeUNDLE1BQXpDO0FBQ0EsMkNBQW9CMEIsVUFBcEIsRUFBZ0N6QixVQUFoQyxFQUE0Q0MsU0FBNUM7QUFDRDs7QUFDRDhCLFFBQUFBLEtBQUssR0FBRyxDQUFDLENBQUNqQyxPQUFELEVBQVVDLE1BQVYsQ0FBRCxFQUFvQixDQUFDQyxVQUFELEVBQWFDLFNBQWIsQ0FBcEIsQ0FBUjtBQUNELE9BTkQsTUFNTztBQUNMOEIsUUFBQUEsS0FBSyxHQUFHLCtCQUFjdkYsVUFBZCxFQUEwQnNELE9BQTFCLEVBQW1DQyxNQUFuQyxDQUFSO0FBQ0Q7O0FBQ0RvQyxNQUFBQSxHQUFHLENBQUM1QyxRQUFKLENBQWFFLFFBQWIsR0FBd0JzQyxLQUF4QjtBQUVBLFlBQU1PLFlBQVksR0FBR3ZCLFFBQVEsR0FBSSxLQUFJWixNQUFNLElBQUksT0FBUSxHQUExQixHQUErQixFQUE1RDtBQUNBZ0MsTUFBQUEsR0FBRyxDQUFDOUMsT0FBSixHQUFlLEdBQUVNLE9BQVEsR0FBRTJDLFlBQWEsRUFBeEM7O0FBRUEsVUFBSVgsU0FBSixFQUFlO0FBQ2JRLFFBQUFBLEdBQUcsQ0FBQ0ksU0FBSixHQUFnQixDQUFDWixTQUFELENBQWhCO0FBQ0Q7QUFDRixLQWxCRCxDQWtCRSxPQUFPYSxHQUFQLEVBQVk7QUFDWkwsTUFBQUEsR0FBRyxHQUFHLE1BQU10QyxvQkFBb0IsQ0FBQztBQUMvQkMsUUFBQUEsT0FEK0I7QUFFL0JDLFFBQUFBLE1BRitCO0FBRy9CQyxRQUFBQSxVQUgrQjtBQUkvQkMsUUFBQUEsU0FKK0I7QUFLL0JDLFFBQUFBLGVBTCtCO0FBTS9CdEQsUUFBQUEsUUFOK0I7QUFPL0JKLFFBQUFBLFVBUCtCO0FBUS9CMkQsUUFBQUEsTUFSK0I7QUFTL0JSLFFBQUFBO0FBVCtCLE9BQUQsQ0FBaEM7QUFXRDs7QUFFRCxXQUFPd0MsR0FBUDtBQUNELEdBM0ZrQixDQUFaLENBQVA7QUE0RkQ7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sZUFBZU0sa0JBQWYsQ0FBa0N6RSxRQUFsQyxFQUE0Q3hCLFVBQTVDLEVBQXdEdUUsUUFBeEQsRUFBa0U7QUFDdkUsTUFBSTJCLE1BQU0sQ0FBQ0MsU0FBUCxDQUFpQkMsY0FBakIsQ0FBZ0NDLElBQWhDLENBQXFDN0UsUUFBckMsRUFBK0MsY0FBL0MsQ0FBSixFQUFvRTtBQUNsRTdELElBQUFBLEtBQUssQ0FBQzJJLFlBQU4sQ0FBbUI5RSxRQUFRLENBQUMrRSxZQUE1QjtBQUNEOztBQUNELFNBQU9sQyxxQkFBcUIsQ0FBQzdDLFFBQVEsQ0FBQzhDLFFBQVYsRUFBb0J0RSxVQUFwQixFQUFnQ3VFLFFBQWhDLENBQTVCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCdcbmltcG9ydCB7IGdlbmVyYXRlUmFuZ2UgfSBmcm9tICdhdG9tLWxpbnRlcidcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJ1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsIGltcG9ydC9leHRlbnNpb25zXG5pbXBvcnQgeyBSYW5nZSwgVGFzayB9IGZyb20gJ2F0b20nXG5pbXBvcnQgUnVsZXMgZnJvbSAnLi9ydWxlcydcbmltcG9ydCB7IHRocm93SWZJbnZhbGlkUG9pbnQgfSBmcm9tICcuL3ZhbGlkYXRlL2VkaXRvcidcblxuY29uc3QgYXN5bmNSYW5kb21CeXRlcyA9IHByb21pc2lmeShyYW5kb21CeXRlcylcbmV4cG9ydCBjb25zdCBydWxlcyA9IG5ldyBSdWxlcygpXG5sZXQgd29ya2VyID0gbnVsbFxuXG4vKipcbiAqIFN0YXJ0IHRoZSB3b3JrZXIgcHJvY2VzcyBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIHN0YXJ0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0V29ya2VyKCkge1xuICBpZiAod29ya2VyID09PSBudWxsKSB7XG4gICAgd29ya2VyID0gbmV3IFRhc2socmVxdWlyZS5yZXNvbHZlKCcuL3dvcmtlci5qcycpKVxuICB9XG5cbiAgd29ya2VyLm9uKCdsb2cnLCAob2JqKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnNvbGUubG9nKEpTT04ucGFyc2Uob2JqKSlcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgY29uc29sZS5sb2cob2JqKVxuICAgIH1cbiAgfSlcblxuICBpZiAod29ya2VyLnN0YXJ0ZWQpIHtcbiAgICAvLyBXb3JrZXIgc3RhcnQgcmVxdWVzdCBoYXMgYWxyZWFkeSBiZWVuIHNlbnRcbiAgICByZXR1cm5cbiAgfVxuICAvLyBTZW5kIGVtcHR5IGFyZ3VtZW50cyBhcyB3ZSBkb24ndCB1c2UgdGhlbSBpbiB0aGUgd29ya2VyXG4gIHdvcmtlci5zdGFydChbXSlcblxuICAvLyBOT1RFOiBNb2RpZmllcyB0aGUgVGFzayBvZiB0aGUgd29ya2VyLCBidXQgaXQncyB0aGUgb25seSBjbGVhbiB3YXkgdG8gdHJhY2sgdGhpc1xuICB3b3JrZXIuc3RhcnRlZCA9IHRydWVcbn1cblxuLyoqXG4gKiBGb3JjZXMgdGhlIHdvcmtlciBUYXNrIHRvIGtpbGwgaXRzZWxmXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBraWxsV29ya2VyKCkge1xuICBpZiAod29ya2VyICE9PSBudWxsKSB7XG4gICAgd29ya2VyLnRlcm1pbmF0ZSgpXG4gICAgd29ya2VyID0gbnVsbFxuICB9XG59XG5cbi8qKlxuICogU2VuZCBhIGpvYiB0byB0aGUgd29ya2VyIGFuZCByZXR1cm4gdGhlIHJlc3VsdHNcbiAqIEBwYXJhbSAge09iamVjdH0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBqb2IgdG8gc2VuZCB0byB0aGUgd29ya2VyXG4gKiBAcmV0dXJuIHtPYmplY3R8U3RyaW5nfEVycm9yfSAgICAgICAgVGhlIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgd29ya2VyXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kSm9iKGNvbmZpZykge1xuICBpZiAod29ya2VyICYmICF3b3JrZXIuY2hpbGRQcm9jZXNzLmNvbm5lY3RlZCkge1xuICAgIC8vIFNvbWV0aW1lcyB0aGUgd29ya2VyIGRpZXMgYW5kIGJlY29tZXMgZGlzY29ubmVjdGVkXG4gICAgLy8gV2hlbiB0aGF0IGhhcHBlbnMsIGl0IHNlZW1zIHRoYXQgdGhlcmUgaXMgbm8gd2F5IHRvIHJlY292ZXIgb3RoZXJcbiAgICAvLyB0aGFuIHRvIGtpbGwgdGhlIHdvcmtlciBhbmQgY3JlYXRlIGEgbmV3IG9uZS5cbiAgICBraWxsV29ya2VyKClcbiAgfVxuXG4gIC8vIEVuc3VyZSB0aGUgd29ya2VyIGlzIHN0YXJ0ZWRcbiAgc3RhcnRXb3JrZXIoKVxuXG4gIC8vIEV4cGFuZCB0aGUgY29uZmlnIHdpdGggYSB1bmlxdWUgSUQgdG8gZW1pdCBvblxuICAvLyBOT1RFOiBKb2JzIF9tdXN0XyBoYXZlIGEgdW5pcXVlIElEIGFzIHRoZXkgYXJlIGNvbXBsZXRlbHkgYXN5bmMgYW5kIHJlc3VsdHNcbiAgLy8gY2FuIGFycml2ZSBiYWNrIGluIGFueSBvcmRlci5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGNvbmZpZy5lbWl0S2V5ID0gKGF3YWl0IGFzeW5jUmFuZG9tQnl0ZXMoNSkpLnRvU3RyaW5nKCdoZXgnKSAvLyA1IGJ5dGVzID0gMTAgaGV4IGNoYXJhY3RlcnNcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIC8vIEFsbCB3b3JrZXIgZXJyb3JzIGFyZSBjYXVnaHQgYW5kIHJlLWVtaXR0ZWQgYWxvbmcgd2l0aCB0aGVpciBhc3NvY2lhdGVkXG4gICAgLy8gZW1pdEtleSwgc28gdGhhdCB3ZSBkbyBub3QgY3JlYXRlIG11bHRpcGxlIGxpc3RlbmVycyBmb3IgdGhlIHNhbWVcbiAgICAvLyAndGFzazplcnJvcicgZXZlbnRcbiAgICBjb25zdCBlcnJTdWIgPSB3b3JrZXIub24oYHdvcmtlckVycm9yOiR7Y29uZmlnLmVtaXRLZXl9YCwgKHsgbXNnLCBzdGFjayB9KSA9PiB7XG4gICAgICAvLyBSZS10aHJvdyBlcnJvcnMgZnJvbSB0aGUgdGFza1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IobXNnKVxuICAgICAgLy8gU2V0IHRoZSBzdGFjayB0byB0aGUgb25lIGdpdmVuIHRvIHVzIGJ5IHRoZSB3b3JrZXJcbiAgICAgIGVycm9yLnN0YWNrID0gc3RhY2tcbiAgICAgIGVyclN1Yi5kaXNwb3NlKClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmVzcG9uc2VTdWIuZGlzcG9zZSgpXG4gICAgICByZWplY3QoZXJyb3IpXG4gICAgfSlcbiAgICBjb25zdCByZXNwb25zZVN1YiA9IHdvcmtlci5vbihjb25maWcuZW1pdEtleSwgKGRhdGEpID0+IHtcbiAgICAgIGVyclN1Yi5kaXNwb3NlKClcbiAgICAgIHJlc3BvbnNlU3ViLmRpc3Bvc2UoKVxuICAgICAgcmVzb2x2ZShkYXRhKVxuICAgIH0pXG4gICAgLy8gU2VuZCB0aGUgam9iIG9uIHRvIHRoZSB3b3JrZXJcbiAgICB0cnkge1xuICAgICAgd29ya2VyLnNlbmQoY29uZmlnKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVyclN1Yi5kaXNwb3NlKClcbiAgICAgIHJlc3BvbnNlU3ViLmRpc3Bvc2UoKVxuICAgICAgY29uc29sZS5lcnJvcihlKVxuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldERlYnVnSW5mbygpIHtcbiAgY29uc3QgdGV4dEVkaXRvciA9IGF0b20ud29ya3NwYWNlLmdldEFjdGl2ZVRleHRFZGl0b3IoKVxuICBsZXQgZmlsZVBhdGhcbiAgbGV0IGVkaXRvclNjb3Blc1xuICBpZiAoYXRvbS53b3Jrc3BhY2UuaXNUZXh0RWRpdG9yKHRleHRFZGl0b3IpKSB7XG4gICAgZmlsZVBhdGggPSB0ZXh0RWRpdG9yLmdldFBhdGgoKVxuICAgIGVkaXRvclNjb3BlcyA9IHRleHRFZGl0b3IuZ2V0TGFzdEN1cnNvcigpLmdldFNjb3BlRGVzY3JpcHRvcigpLmdldFNjb3Blc0FycmF5KClcbiAgfSBlbHNlIHtcbiAgICAvLyBTb21laG93IHRoaXMgY2FuIGJlIGNhbGxlZCB3aXRoIG5vIGFjdGl2ZSBUZXh0RWRpdG9yLCBpbXBvc3NpYmxlIEkga25vdy4uLlxuICAgIGZpbGVQYXRoID0gJ3Vua25vd24nXG4gICAgZWRpdG9yU2NvcGVzID0gWyd1bmtub3duJ11cbiAgfVxuICBjb25zdCBwYWNrYWdlUGF0aCA9IGF0b20ucGFja2FnZXMucmVzb2x2ZVBhY2thZ2VQYXRoKCdsaW50ZXItZXNsaW50JylcbiAgbGV0IGxpbnRlckVzbGludE1ldGFcbiAgaWYgKHBhY2thZ2VQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBBcHBhcmVudGx5IGZvciBzb21lIHVzZXJzIHRoZSBwYWNrYWdlIHBhdGggZmFpbHMgdG8gcmVzb2x2ZVxuICAgIGxpbnRlckVzbGludE1ldGEgPSB7IHZlcnNpb246ICd1bmtub3duIScgfVxuICB9IGVsc2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZHluYW1pYy1yZXF1aXJlXG4gICAgbGludGVyRXNsaW50TWV0YSA9IHJlcXVpcmUoam9pbihwYWNrYWdlUGF0aCwgJ3BhY2thZ2UuanNvbicpKVxuICB9XG4gIGNvbnN0IGNvbmZpZyA9IGF0b20uY29uZmlnLmdldCgnbGludGVyLWVzbGludCcpXG4gIGNvbnN0IGhvdXJzU2luY2VSZXN0YXJ0ID0gTWF0aC5yb3VuZCgocHJvY2Vzcy51cHRpbWUoKSAvIDM2MDApICogMTApIC8gMTBcbiAgbGV0IHJldHVyblZhbFxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VuZEpvYih7XG4gICAgICB0eXBlOiAnZGVidWcnLFxuICAgICAgY29uZmlnLFxuICAgICAgZmlsZVBhdGhcbiAgICB9KVxuICAgIHJldHVyblZhbCA9IHtcbiAgICAgIGF0b21WZXJzaW9uOiBhdG9tLmdldFZlcnNpb24oKSxcbiAgICAgIGxpbnRlckVzbGludFZlcnNpb246IGxpbnRlckVzbGludE1ldGEudmVyc2lvbixcbiAgICAgIGxpbnRlckVzbGludENvbmZpZzogY29uZmlnLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1keW5hbWljLXJlcXVpcmVcbiAgICAgIGVzbGludFZlcnNpb246IHJlcXVpcmUoam9pbihyZXNwb25zZS5wYXRoLCAncGFja2FnZS5qc29uJykpLnZlcnNpb24sXG4gICAgICBob3Vyc1NpbmNlUmVzdGFydCxcbiAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgZXNsaW50VHlwZTogcmVzcG9uc2UudHlwZSxcbiAgICAgIGVzbGludFBhdGg6IHJlc3BvbnNlLnBhdGgsXG4gICAgICBlZGl0b3JTY29wZXMsXG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGF0b20ubm90aWZpY2F0aW9ucy5hZGRFcnJvcihgJHtlcnJvcn1gKVxuICB9XG4gIHJldHVybiByZXR1cm5WYWxcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRGVidWdTdHJpbmcoKSB7XG4gIGNvbnN0IGRlYnVnID0gYXdhaXQgZ2V0RGVidWdJbmZvKClcbiAgY29uc3QgZGV0YWlscyA9IFtcbiAgICBgQXRvbSB2ZXJzaW9uOiAke2RlYnVnLmF0b21WZXJzaW9ufWAsXG4gICAgYGxpbnRlci1lc2xpbnQgdmVyc2lvbjogJHtkZWJ1Zy5saW50ZXJFc2xpbnRWZXJzaW9ufWAsXG4gICAgYEVTTGludCB2ZXJzaW9uOiAke2RlYnVnLmVzbGludFZlcnNpb259YCxcbiAgICBgSG91cnMgc2luY2UgbGFzdCBBdG9tIHJlc3RhcnQ6ICR7ZGVidWcuaG91cnNTaW5jZVJlc3RhcnR9YCxcbiAgICBgUGxhdGZvcm06ICR7ZGVidWcucGxhdGZvcm19YCxcbiAgICBgVXNpbmcgJHtkZWJ1Zy5lc2xpbnRUeXBlfSBFU0xpbnQgZnJvbTogJHtkZWJ1Zy5lc2xpbnRQYXRofWAsXG4gICAgYEN1cnJlbnQgZmlsZSdzIHNjb3BlczogJHtKU09OLnN0cmluZ2lmeShkZWJ1Zy5lZGl0b3JTY29wZXMsIG51bGwsIDIpfWAsXG4gICAgYGxpbnRlci1lc2xpbnQgY29uZmlndXJhdGlvbjogJHtKU09OLnN0cmluZ2lmeShkZWJ1Zy5saW50ZXJFc2xpbnRDb25maWcsIG51bGwsIDIpfWBcbiAgXVxuICByZXR1cm4gZGV0YWlscy5qb2luKCdcXG4nKVxufVxuXG4vKipcbiAqIFR1cm4gdGhlIGdpdmVuIG9wdGlvbnMgaW50byBhIExpbnRlciBtZXNzYWdlIGFycmF5XG4gKiBAcGFyYW0gIHtUZXh0RWRpdG9yfSB0ZXh0RWRpdG9yIFRoZSBUZXh0RWRpdG9yIHRvIHVzZSB0byBidWlsZCB0aGUgbWVzc2FnZVxuICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zICAgIFRoZSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsbCBpbiB0aGUgbWVzc2FnZVxuICogQHBhcmFtICB7c3RyaW5nfSBbb3B0aW9ucy5zZXZlcml0eT0nZXJyb3InXSBDYW4gYmUgb25lIG9mOiAnZXJyb3InLCAnd2FybmluZycsICdpbmZvJ1xuICogQHBhcmFtICB7c3RyaW5nfSBbb3B0aW9ucy5leGNlcnB0PScnXSBTaG9ydCB0ZXh0IHRvIHVzZSBpbiB0aGUgbWVzc2FnZVxuICogQHBhcmFtICB7c3RyaW5nfEZ1bmN0aW9ufSBbb3B0aW9ucy5kZXNjcmlwdGlvbl0gVXNlZCB0byBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbiAqIEByZXR1cm4ge2ltcG9ydChcImF0b20vbGludGVyXCIpLk1lc3NhZ2VbXX0gTWVzc2FnZSB0byB1c2VyIGdlbmVyYXRlZCBmcm9tIHRoZSBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVVzZXJNZXNzYWdlKHRleHRFZGl0b3IsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHNldmVyaXR5ID0gJ2Vycm9yJyxcbiAgICBleGNlcnB0ID0gJycsXG4gICAgZGVzY3JpcHRpb24sXG4gIH0gPSBvcHRpb25zXG4gIHJldHVybiBbe1xuICAgIHNldmVyaXR5LFxuICAgIGV4Y2VycHQsXG4gICAgZGVzY3JpcHRpb24sXG4gICAgbG9jYXRpb246IHtcbiAgICAgIGZpbGU6IHRleHRFZGl0b3IuZ2V0UGF0aCgpLFxuICAgICAgcG9zaXRpb246IGdlbmVyYXRlUmFuZ2UodGV4dEVkaXRvciksXG4gICAgfSxcbiAgfV1cbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIGluIG9yZGVyIHRvIG5pY2VseSBkaXNwbGF5IHRoZSBFcnJvciBiZWluZ1xuICogdGhyb3duIGluc3RlYWQgb2YgZGVwZW5kaW5nIG9uIGdlbmVyaWMgZXJyb3IgaGFuZGxpbmcuXG4gKiBAcGFyYW0gIHtpbXBvcnQoXCJhdG9tXCIpLlRleHRFZGl0b3J9IHRleHRFZGl0b3IgVGhlIFRleHRFZGl0b3IgdG8gdXNlIHRvIGJ1aWxkIHRoZSBtZXNzYWdlXG4gKiBAcGFyYW0gIHtFcnJvcn0gZXJyb3IgICAgICBFcnJvciB0byBnZW5lcmF0ZSBhIG1lc3NhZ2UgZm9yXG4gKiBAcmV0dXJuIHtpbXBvcnQoXCJhdG9tL2xpbnRlclwiKS5NZXNzYWdlW119IE1lc3NhZ2UgdG8gdXNlciBnZW5lcmF0ZWQgZnJvbSB0aGUgRXJyb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUVycm9yKHRleHRFZGl0b3IsIGVycm9yKSB7XG4gIGNvbnN0IHsgc3RhY2ssIG1lc3NhZ2UgfSA9IGVycm9yXG4gIC8vIE9ubHkgc2hvdyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgbWVzc2FnZSBhcyB0aGUgZXhjZXJwdFxuICBjb25zdCBleGNlcnB0ID0gYEVycm9yIHdoaWxlIHJ1bm5pbmcgRVNMaW50OiAke21lc3NhZ2Uuc3BsaXQoJ1xcbicpWzBdfS5gXG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gYDxkaXYgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogcHJlLXdyYXBcIj4ke21lc3NhZ2V9XFxuPGhyIC8+JHtzdGFja308L2Rpdj5gXG4gIHJldHVybiBnZW5lcmF0ZVVzZXJNZXNzYWdlKHRleHRFZGl0b3IsIHsgc2V2ZXJpdHk6ICdlcnJvcicsIGV4Y2VycHQsIGRlc2NyaXB0aW9uIH0pXG59XG5cbmNvbnN0IGdlbmVyYXRlSW52YWxpZFRyYWNlID0gYXN5bmMgKHtcbiAgbXNnTGluZSwgbXNnQ29sLCBtc2dFbmRMaW5lLCBtc2dFbmRDb2wsXG4gIGVzbGludEZ1bGxSYW5nZSwgZmlsZVBhdGgsIHRleHRFZGl0b3IsIHJ1bGVJZCwgbWVzc2FnZVxufSkgPT4ge1xuICBsZXQgZXJyTXNnUmFuZ2UgPSBgJHttc2dMaW5lICsgMX06JHttc2dDb2x9YFxuICBpZiAoZXNsaW50RnVsbFJhbmdlKSB7XG4gICAgZXJyTXNnUmFuZ2UgKz0gYCAtICR7bXNnRW5kTGluZSArIDF9OiR7bXNnRW5kQ29sICsgMX1gXG4gIH1cbiAgY29uc3QgcmFuZ2VUZXh0ID0gYFJlcXVlc3RlZCAke2VzbGludEZ1bGxSYW5nZSA/ICdzdGFydCBwb2ludCcgOiAncmFuZ2UnfTogJHtlcnJNc2dSYW5nZX1gXG4gIGNvbnN0IGlzc3VlVVJMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9BdG9tTGludGVyL2xpbnRlci1lc2xpbnQvaXNzdWVzL25ldydcbiAgY29uc3QgdGl0bGVUZXh0ID0gYEludmFsaWQgcG9zaXRpb24gZ2l2ZW4gYnkgJyR7cnVsZUlkfSdgXG4gIGNvbnN0IHRpdGxlID0gZW5jb2RlVVJJQ29tcG9uZW50KHRpdGxlVGV4dClcbiAgY29uc3QgYm9keSA9IGVuY29kZVVSSUNvbXBvbmVudChbXG4gICAgJ0VTTGludCByZXR1cm5lZCBhIHBvaW50IHRoYXQgZGlkIG5vdCBleGlzdCBpbiB0aGUgZG9jdW1lbnQgYmVpbmcgZWRpdGVkLicsXG4gICAgYFJ1bGU6IFxcYCR7cnVsZUlkfVxcYGAsXG4gICAgcmFuZ2VUZXh0LFxuICAgICcnLCAnJyxcbiAgICAnPCEtLSBJZiBhdCBhbGwgcG9zc2libGUsIHBsZWFzZSBpbmNsdWRlIGNvZGUgdG8gcmVwcm9kdWNlIHRoaXMgaXNzdWUhIC0tPicsXG4gICAgJycsICcnLFxuICAgICdEZWJ1ZyBpbmZvcm1hdGlvbjonLFxuICAgICdgYGBqc29uJyxcbiAgICBKU09OLnN0cmluZ2lmeShhd2FpdCBnZXREZWJ1Z0luZm8oKSwgbnVsbCwgMiksXG4gICAgJ2BgYCdcbiAgXS5qb2luKCdcXG4nKSlcblxuICBjb25zdCBsb2NhdGlvbiA9IHtcbiAgICBmaWxlOiBmaWxlUGF0aCxcbiAgICBwb3NpdGlvbjogZ2VuZXJhdGVSYW5nZSh0ZXh0RWRpdG9yLCAwKSxcbiAgfVxuICBjb25zdCBuZXdJc3N1ZVVSTCA9IGAke2lzc3VlVVJMfT90aXRsZT0ke3RpdGxlfSZib2R5PSR7Ym9keX1gXG5cbiAgcmV0dXJuIHtcbiAgICBzZXZlcml0eTogJ2Vycm9yJyxcbiAgICBleGNlcnB0OiBgJHt0aXRsZVRleHR9LiBTZWUgdGhlIGRlc2NyaXB0aW9uIGZvciBkZXRhaWxzLiBgXG4gICAgICArICdDbGljayB0aGUgVVJMIHRvIG9wZW4gYSBuZXcgaXNzdWUhJyxcbiAgICB1cmw6IG5ld0lzc3VlVVJMLFxuICAgIGxvY2F0aW9uLFxuICAgIGRlc2NyaXB0aW9uOiBgJHtyYW5nZVRleHR9XFxuT3JpZ2luYWwgbWVzc2FnZTogJHttZXNzYWdlfWBcbiAgfVxufVxuXG4vKipcbiAqIEdpdmVuIGEgcmF3IHJlc3BvbnNlIGZyb20gRVNMaW50LCB0aGlzIHByb2Nlc3NlcyB0aGUgbWVzc2FnZXMgaW50byBhIGZvcm1hdFxuICogY29tcGF0aWJsZSB3aXRoIHRoZSBMaW50ZXIgQVBJLlxuICogQHBhcmFtICB7T2JqZWN0fSAgICAgbWVzc2FnZXMgICBUaGUgbWVzc2FnZXMgZnJvbSBFU0xpbnQncyByZXNwb25zZVxuICogQHBhcmFtICB7VGV4dEVkaXRvcn0gdGV4dEVkaXRvciBUaGUgQXRvbTo6VGV4dEVkaXRvciBvZiB0aGUgZmlsZSB0aGUgbWVzc2FnZXMgYmVsb25nIHRvXG4gKiBAcGFyYW0gIHtib29sfSAgICAgICBzaG93UnVsZSAgIFdoZXRoZXIgdG8gc2hvdyB0aGUgcnVsZSBpbiB0aGUgbWVzc2FnZXNcbiAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgICAgICAgICAgVGhlIG1lc3NhZ2VzIHRyYW5zZm9ybWVkIGludG8gTGludGVyIG1lc3NhZ2VzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzRVNMaW50TWVzc2FnZXMobWVzc2FnZXMsIHRleHRFZGl0b3IsIHNob3dSdWxlKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChtZXNzYWdlcy5tYXAoYXN5bmMgKHtcbiAgICBmYXRhbCwgbWVzc2FnZTogb3JpZ2luYWxNZXNzYWdlLCBsaW5lLCBzZXZlcml0eSwgcnVsZUlkLCBjb2x1bW4sIGZpeCwgZW5kTGluZSwgZW5kQ29sdW1uXG4gIH0pID0+IHtcbiAgICBjb25zdCBtZXNzYWdlID0gZmF0YWwgPyBvcmlnaW5hbE1lc3NhZ2Uuc3BsaXQoJ1xcbicpWzBdIDogb3JpZ2luYWxNZXNzYWdlXG4gICAgY29uc3QgZmlsZVBhdGggPSB0ZXh0RWRpdG9yLmdldFBhdGgoKVxuICAgIGNvbnN0IHRleHRCdWZmZXIgPSB0ZXh0RWRpdG9yLmdldEJ1ZmZlcigpXG4gICAgbGV0IGxpbnRlckZpeCA9IG51bGxcbiAgICBpZiAoZml4KSB7XG4gICAgICBjb25zdCBmaXhSYW5nZSA9IG5ldyBSYW5nZShcbiAgICAgICAgdGV4dEJ1ZmZlci5wb3NpdGlvbkZvckNoYXJhY3RlckluZGV4KGZpeC5yYW5nZVswXSksXG4gICAgICAgIHRleHRCdWZmZXIucG9zaXRpb25Gb3JDaGFyYWN0ZXJJbmRleChmaXgucmFuZ2VbMV0pXG4gICAgICApXG4gICAgICBsaW50ZXJGaXggPSB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhSYW5nZSxcbiAgICAgICAgcmVwbGFjZVdpdGg6IGZpeC50ZXh0XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBtc2dDb2xcbiAgICBsZXQgbXNnRW5kTGluZVxuICAgIGxldCBtc2dFbmRDb2xcbiAgICBsZXQgZXNsaW50RnVsbFJhbmdlID0gZmFsc2VcblxuICAgIC8qXG4gICAgIE5vdGU6IEVTTGludCBwb3NpdGlvbnMgYXJlIDEtaW5kZXhlZCwgd2hpbGUgQXRvbSBleHBlY3RzIDAtaW5kZXhlZCxcbiAgICAgcG9zaXRpb25zLiBXZSBhcmUgc3VidHJhY3RpbmcgMSBmcm9tIHRoZXNlIHZhbHVlcyBoZXJlIHNvIHdlIGRvbid0IGhhdmUgdG9cbiAgICAga2VlcCBkb2luZyBzbyBpbiBsYXRlciB1c2VzLlxuICAgICAqL1xuICAgIGNvbnN0IG1zZ0xpbmUgPSBsaW5lIC0gMVxuICAgIGlmICh0eXBlb2YgZW5kQ29sdW1uID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgZW5kTGluZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGVzbGludEZ1bGxSYW5nZSA9IHRydWVcbiAgICAgIC8vIEhlcmUgd2UgYWx3YXlzIHdhbnQgdGhlIGNvbHVtbiB0byBiZSBhIG51bWJlclxuICAgICAgbXNnQ29sID0gTWF0aC5tYXgoMCwgY29sdW1uIC0gMSlcbiAgICAgIG1zZ0VuZExpbmUgPSBlbmRMaW5lIC0gMVxuICAgICAgbXNnRW5kQ29sID0gZW5kQ29sdW1uIC0gMVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSB3YW50IG1zZ0NvbCB0byByZW1haW4gdW5kZWZpbmVkIGlmIGl0IHdhcyBpbml0aWFsbHkgc29cbiAgICAgIC8vIGBnZW5lcmF0ZVJhbmdlYCB3aWxsIGdpdmUgdXMgYSByYW5nZSBvdmVyIHRoZSBlbnRpcmUgbGluZVxuICAgICAgbXNnQ29sID0gdHlwZW9mIGNvbHVtbiA9PT0gJ251bWJlcicgPyBjb2x1bW4gLSAxIDogY29sdW1uXG4gICAgfVxuXG4gICAgbGV0IHJldCA9IHtcbiAgICAgIHNldmVyaXR5OiBzZXZlcml0eSA9PT0gMSA/ICd3YXJuaW5nJyA6ICdlcnJvcicsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBmaWxlOiBmaWxlUGF0aCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocnVsZUlkKSB7XG4gICAgICByZXQudXJsID0gcnVsZXMuZ2V0UnVsZVVybChydWxlSWQpXG4gICAgfVxuXG4gICAgLy8gSEFDSyBmb3IgaHR0cHM6Ly9naXRodWIuY29tL0F0b21MaW50ZXIvbGludGVyLWVzbGludC9pc3N1ZXMvMTI0OVxuICAgIGxldCBmaXhMaW5lRW5kaW5nID0gZmFsc2VcbiAgICBpZiAocnVsZUlkID09PSAncHJldHRpZXIvcHJldHRpZXInICYmIChtZXNzYWdlID09PSAnRGVsZXRlIGDikI1gJykpIHtcbiAgICAgIGZpeExpbmVFbmRpbmcgPSB0cnVlXG4gICAgfVxuXG4gICAgbGV0IHJhbmdlXG4gICAgdHJ5IHtcbiAgICAgIGlmIChlc2xpbnRGdWxsUmFuZ2UpIHtcbiAgICAgICAgaWYgKCFmaXhMaW5lRW5kaW5nKSB7XG4gICAgICAgICAgdGhyb3dJZkludmFsaWRQb2ludCh0ZXh0QnVmZmVyLCBtc2dMaW5lLCBtc2dDb2wpXG4gICAgICAgICAgdGhyb3dJZkludmFsaWRQb2ludCh0ZXh0QnVmZmVyLCBtc2dFbmRMaW5lLCBtc2dFbmRDb2wpXG4gICAgICAgIH1cbiAgICAgICAgcmFuZ2UgPSBbW21zZ0xpbmUsIG1zZ0NvbF0sIFttc2dFbmRMaW5lLCBtc2dFbmRDb2xdXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmFuZ2UgPSBnZW5lcmF0ZVJhbmdlKHRleHRFZGl0b3IsIG1zZ0xpbmUsIG1zZ0NvbClcbiAgICAgIH1cbiAgICAgIHJldC5sb2NhdGlvbi5wb3NpdGlvbiA9IHJhbmdlXG5cbiAgICAgIGNvbnN0IHJ1bGVBcHBlbmRpeCA9IHNob3dSdWxlID8gYCAoJHtydWxlSWQgfHwgJ0ZhdGFsJ30pYCA6ICcnXG4gICAgICByZXQuZXhjZXJwdCA9IGAke21lc3NhZ2V9JHtydWxlQXBwZW5kaXh9YFxuXG4gICAgICBpZiAobGludGVyRml4KSB7XG4gICAgICAgIHJldC5zb2x1dGlvbnMgPSBbbGludGVyRml4XVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0ID0gYXdhaXQgZ2VuZXJhdGVJbnZhbGlkVHJhY2Uoe1xuICAgICAgICBtc2dMaW5lLFxuICAgICAgICBtc2dDb2wsXG4gICAgICAgIG1zZ0VuZExpbmUsXG4gICAgICAgIG1zZ0VuZENvbCxcbiAgICAgICAgZXNsaW50RnVsbFJhbmdlLFxuICAgICAgICBmaWxlUGF0aCxcbiAgICAgICAgdGV4dEVkaXRvcixcbiAgICAgICAgcnVsZUlkLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0XG4gIH0pKVxufVxuXG4vKipcbiAqIFByb2Nlc3NlcyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgbGludCBqb2JcbiAqIEBwYXJhbSAge09iamVjdH0gICAgIHJlc3BvbnNlICAgVGhlIHJhdyByZXNwb25zZSBmcm9tIHRoZSBqb2JcbiAqIEBwYXJhbSAge1RleHRFZGl0b3J9IHRleHRFZGl0b3IgVGhlIEF0b206OlRleHRFZGl0b3Igb2YgdGhlIGZpbGUgdGhlIG1lc3NhZ2VzIGJlbG9uZyB0b1xuICogQHBhcmFtICB7Ym9vbH0gICAgICAgc2hvd1J1bGUgICBXaGV0aGVyIHRvIHNob3cgdGhlIHJ1bGUgaW4gdGhlIG1lc3NhZ2VzXG4gKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgICAgICAgIFRoZSBtZXNzYWdlcyB0cmFuc2Zvcm1lZCBpbnRvIExpbnRlciBtZXNzYWdlc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0pvYlJlc3BvbnNlKHJlc3BvbnNlLCB0ZXh0RWRpdG9yLCBzaG93UnVsZSkge1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3BvbnNlLCAndXBkYXRlZFJ1bGVzJykpIHtcbiAgICBydWxlcy5yZXBsYWNlUnVsZXMocmVzcG9uc2UudXBkYXRlZFJ1bGVzKVxuICB9XG4gIHJldHVybiBwcm9jZXNzRVNMaW50TWVzc2FnZXMocmVzcG9uc2UubWVzc2FnZXMsIHRleHRFZGl0b3IsIHNob3dSdWxlKVxufVxuIl19 \ No newline at end of file diff --git a/dist/validate/editor.js b/dist/validate/editor.js index 7a53baee..85ec8888 100644 --- a/dist/validate/editor.js +++ b/dist/validate/editor.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.hasValidScope = exports.throwIfInvalidPoint = exports.isValidPoint = void 0; +exports.throwIfInvalidPoint = exports.isValidPoint = exports.hasValidScope = void 0; var _throw = _interopRequireDefault(require("./throw")); diff --git a/dist/worker-helpers.js b/dist/worker-helpers.js index 829ee74c..68bcdf17 100644 --- a/dist/worker-helpers.js +++ b/dist/worker-helpers.js @@ -3,17 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.getNodePrefixPath = getNodePrefixPath; +exports.didRulesChange = didRulesChange; exports.findESLintDirectory = findESLintDirectory; +exports.getCLIEngineOptions = getCLIEngineOptions; +exports.getConfigForFile = getConfigForFile; exports.getESLintFromDirectory = getESLintFromDirectory; -exports.refreshModulesPath = refreshModulesPath; exports.getESLintInstance = getESLintInstance; -exports.log = log; -exports.getConfigForFile = getConfigForFile; +exports.getNodePrefixPath = getNodePrefixPath; exports.getRelativePath = getRelativePath; -exports.getCLIEngineOptions = getCLIEngineOptions; exports.getRules = getRules; -exports.didRulesChange = didRulesChange; +exports.log = log; +exports.refreshModulesPath = refreshModulesPath; var _path = _interopRequireDefault(require("path")); diff --git a/package.json b/package.json index 0a4e8cea..2f0d7267 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "linter-eslint", "main": "./dist/main.js", - "version": "8.6.6", + "version": "9.0.0", "description": "Lint JavaScript on the fly, using ESLint", "repository": "https://github.com/AtomLinter/linter-eslint.git", "license": "MIT",