vite-plugin-opencode-assistant 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +4 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
3
  import http from 'http';
4
+ import { fileURLToPath } from 'url';
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = path.dirname(__filename);
4
7
  import { startOpenCodeWeb } from './web.js';
5
8
  import { injectWidget } from './injector.js';
6
9
  import { checkOpenCodeInstalled, findAvailablePort, killProcessOnPort, checkOpenCodeProcess } from './utils.js';
@@ -445,4 +448,4 @@ Please install OpenCode first:
445
448
  },
446
449
  };
447
450
  }
448
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUNuQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRS9HLE9BQU8sRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGlCQUFpQixHQUNsQixNQUFNLGdCQUFnQixDQUFBO0FBRXZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sVUFBVSxjQUFjLENBQUMsVUFBMkIsRUFBRTtJQUNsRSxJQUFJLFVBQVUsR0FBd0IsSUFBSSxDQUFBO0lBQzFDLElBQUksVUFBVSxHQUFrQixJQUFJLENBQUE7SUFDcEMsSUFBSSxhQUFhLEdBQVcsY0FBYyxDQUFDLE9BQU8sQ0FBQTtJQUNsRCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUE7SUFDckIsSUFBSSxZQUFZLEdBQXlCLElBQUksQ0FBQTtJQUM3QyxJQUFJLFdBQVcsR0FBZ0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQTtJQUVyRCxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUE7SUFFaEQ7O09BRUc7SUFDSCxTQUFTLEdBQUcsQ0FBQyxP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QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQbHVnaW4sIFZpdGVEZXZTZXJ2ZXIgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IHsgc3Bhd24sIENoaWxkUHJvY2VzcyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCdcbmltcG9ydCB7IHN0YXJ0T3BlbkNvZGVXZWIgfSBmcm9tICcuL3dlYi5qcydcbmltcG9ydCB7IGluamVjdFdpZGdldCB9IGZyb20gJy4vaW5qZWN0b3IuanMnXG5pbXBvcnQgeyBjaGVja09wZW5Db2RlSW5zdGFsbGVkLCBmaW5kQXZhaWxhYmxlUG9ydCwga2lsbFByb2Nlc3NPblBvcnQsIGNoZWNrT3BlbkNvZGVQcm9jZXNzIH0gZnJvbSAnLi91dGlscy5qcydcbmltcG9ydCB7IE9wZW5Db2RlT3B0aW9ucywgU2Vzc2lvbkluZm8sIFBhZ2VDb250ZXh0IH0gZnJvbSAnLi90eXBlcy5qcydcbmltcG9ydCB7XG4gIERFRkFVTFRfQ09ORklHLFxuICBERUZBVUxUX1JFVFJJRVMsXG4gIFJFVFJZX0RFTEFZLFxuICBQUk9DRVNTX0tJTExfREVMQVksXG4gIExPR19QUkVGSVgsXG4gIFdJREdFVF9TQ1JJUFRfUEFUSCxcbiAgQ09OVEVYVF9BUElfUEFUSCxcbiAgU1RBUlRfQVBJX1BBVEgsXG4gIFNFU1NJT05TX0FQSV9QQVRILFxufSBmcm9tICcuL2NvbnN0YW50cy5qcydcblxuLyoqXG4gKiBPcGVuQ29kZSBWaXRlIOaPkuS7tlxuICogQHBhcmFtIG9wdGlvbnMgLSDmj5Lku7bphY3nva7pgInpoblcbiAqIEByZXR1cm5zIFZpdGUg5o+S5Lu25a6e5L6LXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIHZpdGUuY29uZmlnLnRzXG4gKiBpbXBvcnQgb3BlbmNvZGUgZnJvbSAndml0ZS1wbHVnaW4tb3BlbmNvZGUnXG4gKlxuICogZXhwb3J0IGRlZmF1bHQge1xuICogICBwbHVnaW5zOiBbXG4gKiAgICAgb3BlbmNvZGUoe1xuICogICAgICAgd2ViUG9ydDogNDA5NyxcbiAqICAgICAgIHBvc2l0aW9uOiAnYm90dG9tLXJpZ2h0JyxcbiAqICAgICAgIHRoZW1lOiAnYXV0bydcbiAqICAgICB9KVxuICogICBdXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3BlbmNvZGVQbHVnaW4ob3B0aW9uczogT3BlbkNvZGVPcHRpb25zID0ge30pOiBQbHVnaW4ge1xuICBsZXQgd2ViUHJvY2VzczogQ2hpbGRQcm9jZXNzIHwgbnVsbCA9IG51bGxcbiAgbGV0IHNlc3Npb25Vcmw6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gIGxldCBhY3R1YWxXZWJQb3J0OiBudW1iZXIgPSBERUZBVUxUX0NPTkZJRy53ZWJQb3J0XG4gIGxldCBpc1N0YXJ0ZWQgPSBmYWxzZVxuICBsZXQgc3RhcnRQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGxcbiAgbGV0IHBhZ2VDb250ZXh0OiBQYWdlQ29udGV4dCA9IHsgdXJsOiAnJywgdGl0bGU6ICcnIH1cblxuICBjb25zdCBjb25maWcgPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5vcHRpb25zIH1cblxuICAvKipcbiAgICog6L6T5Ye65pel5b+X77yI5LuF5ZyoIHZlcmJvc2Ug5qih5byP5LiL77yJXG4gICAqL1xuICBmdW5jdGlvbiBsb2cobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBpZiAoY29uZmlnLnZlcmJvc2UpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke0xPR19QUkVGSVh9ICR7bWVzc2FnZX1gLCAuLi5hcmdzKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDovpPlh7rplJnor6/ml6Xlv5dcbiAgICovXG4gIGZ1bmN0aW9uIGxvZ0Vycm9yKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcihgJHtMT0dfUFJFRklYfSAke21lc3NhZ2V9YCwgLi4uYXJncylcbiAgfVxuXG4gIC8qKlxuICAgKiBCYXNlNjQg57yW56CB5a2X56ym5LiyXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlNjRFbmNvZGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzdHIpLnRvU3RyaW5nKCdiYXNlNjQnKVxuICB9XG5cbiAgLyoqXG4gICAqIOW7tui/n+aJp+ihjFxuICAgKi9cbiAgZnVuY3Rpb24gc2xlZXAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKVxuICB9XG5cbiAgLyoqXG4gICAqIOWIm+W7uiBIVFRQIOivt+axgiBQcm9taXNlXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGVIdHRwUmVxdWVzdDxUPihvcHRpb25zOiBodHRwLlJlcXVlc3RPcHRpb25zLCBib2R5Pzogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlcSA9IGh0dHAucmVxdWVzdChvcHRpb25zLCAocmVzKSA9PiB7XG4gICAgICAgIGxldCBkYXRhID0gJydcbiAgICAgICAgcmVzLm9uKCdkYXRhJywgY2h1bmsgPT4gZGF0YSArPSBjaHVuaylcbiAgICAgICAgcmVzLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc29sdmUoSlNPTi5wYXJzZShkYXRhKSlcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYEpTT04gcGFyc2UgZXJyb3I6ICR7ZGF0YS5zdWJzdHJpbmcoMCwgMTAwKX1gKSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgcmVxLm9uKCdlcnJvcicsIHJlamVjdClcbiAgICAgIGlmIChib2R5KSByZXEud3JpdGUoYm9keSlcbiAgICAgIHJlcS5lbmQoKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5Lya6K+d5YiX6KGoXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBnZXRTZXNzaW9ucyhyZXRyaWVzID0gREVGQVVMVF9SRVRSSUVTKTogUHJvbWlzZTxTZXNzaW9uSW5mb1tdPiB7XG4gICAgbGV0IGxhc3RFcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbFxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRyaWVzOyBpKyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjcmVhdGVIdHRwUmVxdWVzdDxTZXNzaW9uSW5mb1tdPih7XG4gICAgICAgICAgaG9zdG5hbWU6IGNvbmZpZy5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiBhY3R1YWxXZWJQb3J0LFxuICAgICAgICAgIHBhdGg6ICcvc2Vzc2lvbicsXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxhc3RFcnJvciA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUgOiBuZXcgRXJyb3IoU3RyaW5nKGUpKVxuICAgICAgICBpZiAoaSA8IHJldHJpZXMgLSAxKSBhd2FpdCBzbGVlcChSRVRSWV9ERUxBWSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBsYXN0RXJyb3JcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rmlrDkvJror51cbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVNlc3Npb24ocmV0cmllcyA9IERFRkFVTFRfUkVUUklFUyk6IFByb21pc2U8U2Vzc2lvbkluZm8+IHtcbiAgICBsZXQgbGFzdEVycm9yOiBFcnJvciB8IG51bGwgPSBudWxsXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldHJpZXM7IGkrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNyZWF0ZUh0dHBSZXF1ZXN0PFNlc3Npb25JbmZvPih7XG4gICAgICAgICAgaG9zdG5hbWU6IGNvbmZpZy5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiBhY3R1YWxXZWJQb3J0LFxuICAgICAgICAgIHBhdGg6ICcvc2Vzc2lvbicsXG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxhc3RFcnJvciA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUgOiBuZXcgRXJyb3IoU3RyaW5nKGUpKVxuICAgICAgICBpZiAoaSA8IHJldHJpZXMgLSAxKSBhd2FpdCBzbGVlcChSRVRSWV9ERUxBWSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBsYXN0RXJyb3JcbiAgfVxuXG4gIC8qKlxuICAgKiDliKDpmaTkvJror51cbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZVNlc3Npb24oc2Vzc2lvbklkOiBzdHJpbmcsIHJldHJpZXMgPSBERUZBVUxUX1JFVFJJRVMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgbGFzdEVycm9yOiBFcnJvciB8IG51bGwgPSBudWxsXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldHJpZXM7IGkrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgY3JlYXRlSHR0cFJlcXVlc3Q8dm9pZD4oe1xuICAgICAgICAgIGhvc3RuYW1lOiBjb25maWcuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogYWN0dWFsV2ViUG9ydCxcbiAgICAgICAgICBwYXRoOiBgL3Nlc3Npb24vJHtzZXNzaW9uSWR9YCxcbiAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbGFzdEVycm9yID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZSA6IG5ldyBFcnJvcihTdHJpbmcoZSkpXG4gICAgICAgIGlmIChpIDwgcmV0cmllcyAtIDEpIGF3YWl0IHNsZWVwKFJFVFJZX0RFTEFZKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IGxhc3RFcnJvclxuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluaIluWIm+W7uuS8muivnVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0T3JDcmVhdGVTZXNzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcHJvamVjdERpciA9IHByb2Nlc3MuY3dkKClcbiAgICBsb2coJ0dldHRpbmcgc2Vzc2lvbnMuLi4nKVxuICAgIGNvbnN0IHNlc3Npb25zID0gYXdhaXQgZ2V0U2Vzc2lvbnMoKVxuICAgIGxvZyhgRm91bmQgJHtzZXNzaW9ucy5sZW5ndGh9IHNlc3Npb25zYClcblxuICAgIGNvbnN0IG1hdGNoaW5nU2Vzc2lvbiA9IHNlc3Npb25zLmZpbmQocyA9PiBzLmRpcmVjdG9yeSA9PT0gcHJvamVjdERpcilcblxuICAgIGlmIChtYXRjaGluZ1Nlc3Npb24pIHtcbiAgICAgIHJldHVybiBgaHR0cDovLyR7Y29uZmlnLmhvc3RuYW1lfToke2FjdHVhbFdlYlBvcnR9LyR7YmFzZTY0RW5jb2RlKHByb2plY3REaXIpfS9zZXNzaW9uLyR7bWF0Y2hpbmdTZXNzaW9uLmlkfWBcbiAgICB9XG5cbiAgICBsb2coJ0NyZWF0aW5nIG5ldyBzZXNzaW9uLi4uJylcbiAgICBjb25zdCBuZXdTZXNzaW9uID0gYXdhaXQgY3JlYXRlU2Vzc2lvbigpXG4gICAgcmV0dXJuIGBodHRwOi8vJHtjb25maWcuaG9zdG5hbWV9OiR7YWN0dWFsV2ViUG9ydH0vJHtiYXNlNjRFbmNvZGUocHJvamVjdERpcil9L3Nlc3Npb24vJHtuZXdTZXNzaW9uLmlkfWBcbiAgfVxuXG4gIC8qKlxuICAgKiDorr7nva4gT3BlbkNvZGUg5o+S5Lu2XG4gICAqL1xuICBmdW5jdGlvbiBzZXR1cE9wZW5Db2RlUGx1Z2luKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJvamVjdERpciA9IHByb2Nlc3MuY3dkKClcbiAgICBjb25zdCBjYWNoZURpciA9IHBhdGguam9pbihwcm9qZWN0RGlyLCAnbm9kZV9tb2R1bGVzJywgJy5jYWNoZScsICdvcGVuY29kZScpXG4gICAgY29uc3QgcGx1Z2luc0RpciA9IHBhdGguam9pbihjYWNoZURpciwgJ3BsdWdpbnMnKVxuXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKHBsdWdpbnNEaXIpKSB7XG4gICAgICBmcy5ta2RpclN5bmMocGx1Z2luc0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICB9XG5cbiAgICBjb25zdCBwbHVnaW5Tb3VyY2VQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ3BsdWdpbnMnLCAncGFnZS1jb250ZXh0LmpzJylcbiAgICBjb25zdCBwbHVnaW5UYXJnZXRQYXRoID0gcGF0aC5qb2luKHBsdWdpbnNEaXIsICdwYWdlLWNvbnRleHQuanMnKVxuXG4gICAgaWYgKGZzLmV4aXN0c1N5bmMocGx1Z2luU291cmNlUGF0aCkpIHtcbiAgICAgIGZzLmNvcHlGaWxlU3luYyhwbHVnaW5Tb3VyY2VQYXRoLCBwbHVnaW5UYXJnZXRQYXRoKVxuICAgICAgbG9nKGBQbHVnaW4gaW5zdGFsbGVkIHRvICR7cGx1Z2luVGFyZ2V0UGF0aH1gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7TE9HX1BSRUZJWH0gUGx1Z2luIHNvdXJjZSBub3QgZm91bmQ6ICR7cGx1Z2luU291cmNlUGF0aH1gKVxuICAgIH1cblxuICAgIHJldHVybiBjYWNoZURpclxuICB9XG5cbiAgLyoqXG4gICAqIOWQr+WKqOacjeWKoVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXJ2aWNlcyhjb3JzT3JpZ2lucz86IHN0cmluZ1tdLCBjb250ZXh0QXBpVXJsPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGlzU3RhcnRlZCkgcmV0dXJuXG4gICAgaWYgKHN0YXJ0UHJvbWlzZSkgcmV0dXJuIHN0YXJ0UHJvbWlzZVxuXG4gICAgc3RhcnRQcm9taXNlID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGxvZygnU3RhcnRpbmcgT3BlbkNvZGUgc2VydmljZXMuLi4nKVxuXG4gICAgICBpZiAoIWF3YWl0IGNoZWNrT3BlbkNvZGVJbnN0YWxsZWQoKSkge1xuICAgICAgICBsb2dFcnJvcihgT3BlbkNvZGUgaXMgbm90IGluc3RhbGxlZCFcblxuUGxlYXNlIGluc3RhbGwgT3BlbkNvZGUgZmlyc3Q6XG5cbiAgIyBVc2luZyBIb21lYnJldyAobWFjT1MpXG4gIGJyZXcgaW5zdGFsbCBvcGVuY29kZS1haS90YXAvb3BlbmNvZGVcblxuICAjIE9yIHVzaW5nIHRoZSBpbnN0YWxsIHNjcmlwdFxuICBjdXJsIC1mc1NMIGh0dHBzOi8vb3BlbmNvZGUuYWkvaW5zdGFsbCB8IGJhc2hcbiAgICAgICAgYClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGFjdHVhbFdlYlBvcnQgPSBhd2FpdCBmaW5kQXZhaWxhYmxlUG9ydChjb25maWcud2ViUG9ydCwgY29uZmlnLmhvc3RuYW1lKVxuICAgICAgaWYgKGFjdHVhbFdlYlBvcnQgIT09IGNvbmZpZy53ZWJQb3J0KSB7XG4gICAgICAgIGxvZyhgUG9ydCAke2NvbmZpZy53ZWJQb3J0fSBpcyBpbiB1c2UsIHVzaW5nICR7YWN0dWFsV2ViUG9ydH0gaW5zdGVhZGApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nUHJvY2VzcyA9IGF3YWl0IGNoZWNrT3BlbkNvZGVQcm9jZXNzKGFjdHVhbFdlYlBvcnQpXG4gICAgICBpZiAoZXhpc3RpbmdQcm9jZXNzKSB7XG4gICAgICAgIGxvZyhgRm91bmQgZXhpc3RpbmcgT3BlbkNvZGUgcHJvY2VzcyBvbiBwb3J0ICR7YWN0dWFsV2ViUG9ydH1gKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qga2lsbGVkID0gYXdhaXQga2lsbFByb2Nlc3NPblBvcnQoYWN0dWFsV2ViUG9ydCwgY29uZmlnLmhvc3RuYW1lKVxuICAgICAgICBpZiAoa2lsbGVkKSB7XG4gICAgICAgICAgbG9nKGBLaWxsZWQgc3RhbGUgcHJvY2VzcyBvbiBwb3J0ICR7YWN0dWFsV2ViUG9ydH1gKVxuICAgICAgICAgIGF3YWl0IHNsZWVwKFBST0NFU1NfS0lMTF9ERUxBWSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb25maWdEaXIgPSBzZXR1cE9wZW5Db2RlUGx1Z2luKClcblxuICAgICAgaWYgKCFleGlzdGluZ1Byb2Nlc3MpIHtcbiAgICAgICAgd2ViUHJvY2VzcyA9IGF3YWl0IHN0YXJ0T3BlbkNvZGVXZWIoe1xuICAgICAgICAgIHBvcnQ6IGFjdHVhbFdlYlBvcnQsXG4gICAgICAgICAgaG9zdG5hbWU6IGNvbmZpZy5ob3N0bmFtZSxcbiAgICAgICAgICBzZXJ2ZXJVcmw6ICcnLFxuICAgICAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgICAgICBjb25maWdEaXIsXG4gICAgICAgICAgY29yc09yaWdpbnMsXG4gICAgICAgICAgY29udGV4dEFwaVVybCxcbiAgICAgICAgfSlcbiAgICAgICAgbG9nKGBPcGVuQ29kZSBXZWIgc3RhcnRlZCBhdCBodHRwOi8vJHtjb25maWcuaG9zdG5hbWV9OiR7YWN0dWFsV2ViUG9ydH1gKVxuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBzZXNzaW9uVXJsID0gYXdhaXQgZ2V0T3JDcmVhdGVTZXNzaW9uKClcbiAgICAgICAgbG9nKGBTZXNzaW9uIFVSTDogJHtzZXNzaW9uVXJsfWApXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgJHtMT0dfUFJFRklYfSBGYWlsZWQgdG8gZ2V0L2NyZWF0ZSBzZXNzaW9uOmAsIGUpXG4gICAgICB9XG5cbiAgICAgIGlzU3RhcnRlZCA9IHRydWVcbiAgICB9KSgpXG5cbiAgICByZXR1cm4gc3RhcnRQcm9taXNlXG4gIH1cblxuICAvKipcbiAgICog5YGc5q2i5pyN5YqhXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBzdG9wU2VydmljZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbG9nKCdTdG9wcGluZyBPcGVuQ29kZSBzZXJ2aWNlcy4uLicpXG4gICAgXG4gICAgaWYgKHdlYlByb2Nlc3MpIHtcbiAgICAgIHdlYlByb2Nlc3Mua2lsbCgnU0lHVEVSTScpXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgd2ViUHJvY2Vzcz8ub24oJ2V4aXQnLCAoKSA9PiByZXNvbHZlKCkpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHdlYlByb2Nlc3M/LmtpbGwoJ1NJR0tJTEwnKVxuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICB9LCAzMDAwKVxuICAgICAgfSlcbiAgICAgIHdlYlByb2Nlc3MgPSBudWxsXG4gICAgfVxuICAgIFxuICAgIGlmIChpc1N0YXJ0ZWQpIHtcbiAgICAgIGF3YWl0IGtpbGxQcm9jZXNzT25Qb3J0KGFjdHVhbFdlYlBvcnQsIGNvbmZpZy5ob3N0bmFtZSlcbiAgICB9XG4gICAgXG4gICAgaXNTdGFydGVkID0gZmFsc2VcbiAgICBzdGFydFByb21pc2UgPSBudWxsXG4gIH1cblxuICAvKipcbiAgICog5aSE55CG5LiK5LiL5paHIEFQSSDor7fmsYJcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUNvbnRleHRSZXF1ZXN0KHJlcTogaHR0cC5JbmNvbWluZ01lc3NhZ2UsIHJlczogaHR0cC5TZXJ2ZXJSZXNwb25zZSk6IHZvaWQge1xuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJylcbiAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpXG4gICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcycsICdHRVQsIFBPU1QsIERFTEVURSwgT1BUSU9OUycpXG4gICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycycsICdDb250ZW50LVR5cGUnKVxuXG4gICAgaWYgKHJlcS5tZXRob2QgPT09ICdPUFRJT05TJykge1xuICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICByZXMuZW5kKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChyZXEubWV0aG9kID09PSAnR0VUJykge1xuICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHBhZ2VDb250ZXh0KSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChyZXEubWV0aG9kID09PSAnREVMRVRFJykge1xuICAgICAgcGFnZUNvbnRleHQuc2VsZWN0ZWRFbGVtZW50cyA9IFtdXG4gICAgICBsb2coJ1NlbGVjdGVkIGVsZW1lbnRzIGNsZWFyZWQnKVxuICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgc3VjY2VzczogdHJ1ZSB9KSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChyZXEubWV0aG9kID09PSAnUE9TVCcpIHtcbiAgICAgIGxldCBib2R5ID0gJydcbiAgICAgIHJlcS5vbignZGF0YScsIGNodW5rID0+IGJvZHkgKz0gY2h1bmspXG4gICAgICByZXEub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShib2R5KVxuICAgICAgICAgIHBhZ2VDb250ZXh0ID0ge1xuICAgICAgICAgICAgdXJsOiBkYXRhLnVybCB8fCAnJyxcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlIHx8ICcnLFxuICAgICAgICAgICAgc2VsZWN0ZWRFbGVtZW50czogZGF0YS5zZWxlY3RlZEVsZW1lbnRzIHx8IFtdLFxuICAgICAgICAgIH1cbiAgICAgICAgICBsb2coYENvbnRleHQgdXBkYXRlZDogJHtwYWdlQ29udGV4dC51cmx9YCwgZGF0YS5zZWxlY3RlZEVsZW1lbnRzPy5sZW5ndGggPyBgZWxlbWVudHM6ICR7ZGF0YS5zZWxlY3RlZEVsZW1lbnRzLmxlbmd0aH1gIDogJycpXG4gICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUgfSkpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDAwKVxuICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogJ0ludmFsaWQgSlNPTicgfSkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICByZXMud3JpdGVIZWFkKDQwNSlcbiAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6ICdNZXRob2Qgbm90IGFsbG93ZWQnIH0pKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAndml0ZS1wbHVnaW4tb3BlbmNvZGUnLFxuXG4gICAgYXN5bmMgY29uZmlndXJlU2VydmVyKHNlcnZlcjogVml0ZURldlNlcnZlcikge1xuICAgICAgaWYgKCFjb25maWcuZW5hYmxlZCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHZpdGVQb3J0ID0gc2VydmVyLmNvbmZpZy5zZXJ2ZXIucG9ydCB8fCA1MTczXG4gICAgICBjb25zdCB2aXRlSG9zdCA9IHNlcnZlci5jb25maWcuc2VydmVyLmhvc3QgfHwgJ2xvY2FsaG9zdCdcbiAgICAgIGNvbnN0IHZpdGVPcmlnaW4gPSBgaHR0cDovLyR7dml0ZUhvc3R9OiR7dml0ZVBvcnR9YFxuICAgICAgY29uc3QgY29udGV4dEFwaVVybCA9IGBodHRwOi8vJHt2aXRlSG9zdH06JHt2aXRlUG9ydH0ke0NPTlRFWFRfQVBJX1BBVEh9YFxuXG4gICAgICBpZiAoIWNvbmZpZy5sYXp5KSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0U2VydmljZXMoW3ZpdGVPcmlnaW5dLCBjb250ZXh0QXBpVXJsKVxuICAgICAgfVxuXG4gICAgICBzZXJ2ZXIubWlkZGxld2FyZXMudXNlKFdJREdFVF9TQ1JJUFRfUEFUSCwgYXN5bmMgKF9yZXEsIHJlcykgPT4ge1xuICAgICAgICBpZiAoY29uZmlnLmxhenkgJiYgIWlzU3RhcnRlZCkge1xuICAgICAgICAgIGF3YWl0IHN0YXJ0U2VydmljZXMoW3ZpdGVPcmlnaW5dLCBjb250ZXh0QXBpVXJsKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2lkZ2V0UGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdjbGllbnQuanMnKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh3aWRnZXRQYXRoKSkge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JylcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpXG4gICAgICAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbSh3aWRnZXRQYXRoKS5waXBlKHJlcylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDQwNClcbiAgICAgICAgICByZXMuZW5kKCdXaWRnZXQgc2NyaXB0IG5vdCBmb3VuZCcpXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHNlcnZlci5taWRkbGV3YXJlcy51c2UoQ09OVEVYVF9BUElfUEFUSCwgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgICAgIGlmIChjb25maWcubGF6eSAmJiAhaXNTdGFydGVkKSB7XG4gICAgICAgICAgYXdhaXQgc3RhcnRTZXJ2aWNlcyhbdml0ZU9yaWdpbl0sIGNvbnRleHRBcGlVcmwpXG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlQ29udGV4dFJlcXVlc3QocmVxIGFzIGh0dHAuSW5jb21pbmdNZXNzYWdlLCByZXMpXG4gICAgICB9KVxuXG4gICAgICBzZXJ2ZXIubWlkZGxld2FyZXMudXNlKFNUQVJUX0FQSV9QQVRILCBhc3luYyAoX3JlcSwgcmVzKSA9PiB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJylcbiAgICAgICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuXG4gICAgICAgIGlmIChjb25maWcubGF6eSAmJiAhaXNTdGFydGVkKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHN0YXJ0U2VydmljZXMoW3ZpdGVPcmlnaW5dLCBjb250ZXh0QXBpVXJsKVxuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgc3VjY2VzczogdHJ1ZSwgc2Vzc2lvblVybCB9KSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXMud3JpdGVIZWFkKDUwMClcbiAgICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogU3RyaW5nKGUpIH0pKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgc3VjY2VzczogdHJ1ZSwgc2Vzc2lvblVybCB9KSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2VydmVyLm1pZGRsZXdhcmVzLnVzZShTRVNTSU9OU19BUElfUEFUSCwgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJylcbiAgICAgICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJywgJ0dFVCwgUE9TVCwgREVMRVRFLCBPUFRJT05TJylcbiAgICAgICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycycsICdDb250ZW50LVR5cGUnKVxuXG4gICAgICAgIGlmIChyZXEubWV0aG9kID09PSAnT1BUSU9OUycpIHtcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgICAgICByZXMuZW5kKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcubGF6eSAmJiAhaXNTdGFydGVkKSB7XG4gICAgICAgICAgYXdhaXQgc3RhcnRTZXJ2aWNlcyhbdml0ZU9yaWdpbl0sIGNvbnRleHRBcGlVcmwpXG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChyZXEubWV0aG9kID09PSAnR0VUJykge1xuICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbnMgPSBhd2FpdCBnZXRTZXNzaW9ucygpXG4gICAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoc2Vzc2lvbnMpKVxuICAgICAgICAgIH0gZWxzZSBpZiAocmVxLm1ldGhvZCA9PT0gJ1BPU1QnKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTZXNzaW9uID0gYXdhaXQgY3JlYXRlU2Vzc2lvbigpXG4gICAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkobmV3U2Vzc2lvbikpXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXEubWV0aG9kID09PSAnREVMRVRFJykge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChyZXEudXJsIHx8ICcnLCBgaHR0cDovLyR7cmVxLmhlYWRlcnMuaG9zdH1gKVxuICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbklkID0gdXJsLnNlYXJjaFBhcmFtcy5nZXQoJ2lkJylcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKCFzZXNzaW9uSWQpIHtcbiAgICAgICAgICAgICAgcmVzLndyaXRlSGVhZCg0MDApXG4gICAgICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogJ1Nlc3Npb24gSUQgaXMgcmVxdWlyZWQnIH0pKVxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgYXdhaXQgZGVsZXRlU2Vzc2lvbihzZXNzaW9uSWQpXG4gICAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBzdWNjZXNzOiB0cnVlIH0pKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMud3JpdGVIZWFkKDQwNSlcbiAgICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogJ01ldGhvZCBub3QgYWxsb3dlZCcgfSkpXG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmVzLndyaXRlSGVhZCg1MDApXG4gICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBTdHJpbmcoZSkgfSkpXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHNlcnZlci5odHRwU2VydmVyPy5vbignY2xvc2UnLCBzdG9wU2VydmljZXMpXG4gICAgICBcbiAgICAgIGNvbnN0IGNsZWFudXAgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHN0b3BTZXJ2aWNlcygpXG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKVxuICAgICAgfVxuICAgICAgXG4gICAgICBwcm9jZXNzLm9uKCdTSUdJTlQnLCBjbGVhbnVwKVxuICAgICAgcHJvY2Vzcy5vbignU0lHVEVSTScsIGNsZWFudXApXG4gICAgICBwcm9jZXNzLm9uKCdleGl0JywgKCkgPT4ge1xuICAgICAgICB3ZWJQcm9jZXNzPy5raWxsKCdTSUdLSUxMJylcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIHRyYW5zZm9ybUluZGV4SHRtbChodG1sKSB7XG4gICAgICBjb25zdCB3aWRnZXQgPSBpbmplY3RXaWRnZXQoe1xuICAgICAgICB3ZWJVcmw6IGBodHRwOi8vJHtjb25maWcuaG9zdG5hbWV9OiR7YWN0dWFsV2ViUG9ydH1gLFxuICAgICAgICBzZXJ2ZXJVcmw6IGBodHRwOi8vJHtjb25maWcuaG9zdG5hbWV9OiR7YWN0dWFsV2ViUG9ydH1gLFxuICAgICAgICBwb3NpdGlvbjogY29uZmlnLnBvc2l0aW9uLFxuICAgICAgICB0aGVtZTogY29uZmlnLnRoZW1lLFxuICAgICAgICBvcGVuOiBjb25maWcub3BlbixcbiAgICAgICAgYXV0b1JlbG9hZDogY29uZmlnLmF1dG9SZWxvYWQsXG4gICAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgICAgc2Vzc2lvblVybDogc2Vzc2lvblVybCB8fCB1bmRlZmluZWQsXG4gICAgICAgIGxhenk6IGNvbmZpZy5sYXp5LFxuICAgICAgICBob3RrZXk6IGNvbmZpZy5ob3RrZXksXG4gICAgICB9KVxuICAgICAgcmV0dXJuIGh0bWwucmVwbGFjZSgnPC9ib2R5PicsIGAke3dpZGdldH08L2JvZHk+YClcbiAgICB9LFxuICB9XG59XG4iXX0=
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUNuQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUVuQyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBRTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUUvRyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxpQkFBaUIsR0FDbEIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsY0FBYyxDQUFDLFVBQTJCLEVBQUU7SUFDbEUsSUFBSSxVQUFVLEdBQXdCLElBQUksQ0FBQTtJQUMxQyxJQUFJLFVBQVUsR0FBa0IsSUFBSSxDQUFBO0lBQ3BDLElBQUksYUFBYSxHQUFXLGNBQWMsQ0FBQyxPQUFPLENBQUE7SUFDbEQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFBO0lBQ3JCLElBQUksWUFBWSxHQUF5QixJQUFJLENBQUE7SUFD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Q25DLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQ3RCLENBQUMsQ0FBQTtZQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxDQUFBO1FBQ3BELENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGx1Z2luLCBWaXRlRGV2U2VydmVyIH0gZnJvbSAndml0ZSdcbmltcG9ydCB7IHNwYXduLCBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAndXJsJ1xuXG5jb25zdCBfX2ZpbGVuYW1lID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoX19maWxlbmFtZSlcblxuaW1wb3J0IHsgc3RhcnRPcGVuQ29kZVdlYiB9IGZyb20gJy4vd2ViLmpzJ1xuaW1wb3J0IHsgaW5qZWN0V2lkZ2V0IH0gZnJvbSAnLi9pbmplY3Rvci5qcydcbmltcG9ydCB7IGNoZWNrT3BlbkNvZGVJbnN0YWxsZWQsIGZpbmRBdmFpbGFibGVQb3J0LCBraWxsUHJvY2Vzc09uUG9ydCwgY2hlY2tPcGVuQ29kZVByb2Nlc3MgfSBmcm9tICcuL3V0aWxzLmpzJ1xuaW1wb3J0IHsgT3BlbkNvZGVPcHRpb25zLCBTZXNzaW9uSW5mbywgUGFnZUNvbnRleHQgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHtcbiAgREVGQVVMVF9DT05GSUcsXG4gIERFRkFVTFRfUkVUUklFUyxcbiAgUkVUUllfREVMQVksXG4gIFBST0NFU1NfS0lMTF9ERUxBWSxcbiAgTE9HX1BSRUZJWCxcbiAgV0lER0VUX1NDUklQVF9QQVRILFxuICBDT05URVhUX0FQSV9QQVRILFxuICBTVEFSVF9BUElfUEFUSCxcbiAgU0VTU0lPTlNfQVBJX1BBVEgsXG59IGZyb20gJy4vY29uc3RhbnRzLmpzJ1xuXG4vKipcbiAqIE9wZW5Db2RlIFZpdGUg5o+S5Lu2XG4gKiBAcGFyYW0gb3B0aW9ucyAtIOaPkuS7tumFjee9rumAiemhuVxuICogQHJldHVybnMgVml0ZSDmj5Lku7blrp7kvotcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gdml0ZS5jb25maWcudHNcbiAqIGltcG9ydCBvcGVuY29kZSBmcm9tICd2aXRlLXBsdWdpbi1vcGVuY29kZSdcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCB7XG4gKiAgIHBsdWdpbnM6IFtcbiAqICAgICBvcGVuY29kZSh7XG4gKiAgICAgICB3ZWJQb3J0OiA0MDk3LFxuICogICAgICAgcG9zaXRpb246ICdib3R0b20tcmlnaHQnLFxuICogICAgICAgdGhlbWU6ICdhdXRvJ1xuICogICAgIH0pXG4gKiAgIF1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcGVuY29kZVBsdWdpbihvcHRpb25zOiBPcGVuQ29kZU9wdGlvbnMgPSB7fSk6IFBsdWdpbiB7XG4gIGxldCB3ZWJQcm9jZXNzOiBDaGlsZFByb2Nlc3MgfCBudWxsID0gbnVsbFxuICBsZXQgc2Vzc2lvblVybDogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgbGV0IGFjdHVhbFdlYlBvcnQ6IG51bWJlciA9IERFRkFVTFRfQ09ORklHLndlYlBvcnRcbiAgbGV0IGlzU3RhcnRlZCA9IGZhbHNlXG4gIGxldCBzdGFydFByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbFxuICBsZXQgcGFnZUNvbnRleHQ6IFBhZ2VDb250ZXh0ID0geyB1cmw6ICcnLCB0aXRsZTogJycgfVxuXG4gIGNvbnN0IGNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLm9wdGlvbnMgfVxuXG4gIC8qKlxuICAgKiDovpPlh7rml6Xlv5fvvIjku4XlnKggdmVyYm9zZSDmqKHlvI/kuIvvvIlcbiAgICovXG4gIGZ1bmN0aW9uIGxvZyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGlmIChjb25maWcudmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coYCR7TE9HX1BSRUZJWH0gJHttZXNzYWdlfWAsIC4uLmFyZ3MpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOi+k+WHuumUmeivr+aXpeW/l1xuICAgKi9cbiAgZnVuY3Rpb24gbG9nRXJyb3IobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKGAke0xPR19QUkVGSVh9ICR7bWVzc2FnZX1gLCAuLi5hcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIEJhc2U2NCDnvJbnoIHlrZfnrKbkuLJcbiAgICovXG4gIGZ1bmN0aW9uIGJhc2U2NEVuY29kZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0cikudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gIH1cblxuICAvKipcbiAgICog5bu26L+f5omn6KGMXG4gICAqL1xuICBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpXG4gIH1cblxuICAvKipcbiAgICog5Yib5bu6IEhUVFAg6K+35rGCIFByb21pc2VcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUh0dHBSZXF1ZXN0PFQ+KG9wdGlvbnM6IGh0dHAuUmVxdWVzdE9wdGlvbnMsIGJvZHk/OiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVxID0gaHR0cC5yZXF1ZXN0KG9wdGlvbnMsIChyZXMpID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSAnJ1xuICAgICAgICByZXMub24oJ2RhdGEnLCBjaHVuayA9PiBkYXRhICs9IGNodW5rKVxuICAgICAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKGRhdGEpKVxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgSlNPTiBwYXJzZSBlcnJvcjogJHtkYXRhLnN1YnN0cmluZygwLCAxMDApfWApKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICByZXEub24oJ2Vycm9yJywgcmVqZWN0KVxuICAgICAgaWYgKGJvZHkpIHJlcS53cml0ZShib2R5KVxuICAgICAgcmVxLmVuZCgpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bkvJror53liJfooahcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGdldFNlc3Npb25zKHJldHJpZXMgPSBERUZBVUxUX1JFVFJJRVMpOiBQcm9taXNlPFNlc3Npb25JbmZvW10+IHtcbiAgICBsZXQgbGFzdEVycm9yOiBFcnJvciB8IG51bGwgPSBudWxsXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldHJpZXM7IGkrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNyZWF0ZUh0dHBSZXF1ZXN0PFNlc3Npb25JbmZvW10+KHtcbiAgICAgICAgICBob3N0bmFtZTogY29uZmlnLmhvc3RuYW1lLFxuICAgICAgICAgIHBvcnQ6IGFjdHVhbFdlYlBvcnQsXG4gICAgICAgICAgcGF0aDogJy9zZXNzaW9uJyxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbGFzdEVycm9yID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZSA6IG5ldyBFcnJvcihTdHJpbmcoZSkpXG4gICAgICAgIGlmIChpIDwgcmV0cmllcyAtIDEpIGF3YWl0IHNsZWVwKFJFVFJZX0RFTEFZKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IGxhc3RFcnJvclxuICB9XG5cbiAgLyoqXG4gICAqIOWIm+W7uuaWsOS8muivnVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbihyZXRyaWVzID0gREVGQVVMVF9SRVRSSUVTKTogUHJvbWlzZTxTZXNzaW9uSW5mbz4ge1xuICAgIGxldCBsYXN0RXJyb3I6IEVycm9yIHwgbnVsbCA9IG51bGxcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0cmllczsgaSsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgY3JlYXRlSHR0cFJlcXVlc3Q8U2Vzc2lvbkluZm8+KHtcbiAgICAgICAgICBob3N0bmFtZTogY29uZmlnLmhvc3RuYW1lLFxuICAgICAgICAgIHBvcnQ6IGFjdHVhbFdlYlBvcnQsXG4gICAgICAgICAgcGF0aDogJy9zZXNzaW9uJyxcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbGFzdEVycm9yID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZSA6IG5ldyBFcnJvcihTdHJpbmcoZSkpXG4gICAgICAgIGlmIChpIDwgcmV0cmllcyAtIDEpIGF3YWl0IHNsZWVwKFJFVFJZX0RFTEFZKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IGxhc3RFcnJvclxuICB9XG5cbiAgLyoqXG4gICAqIOWIoOmZpOS8muivnVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlU2Vzc2lvbihzZXNzaW9uSWQ6IHN0cmluZywgcmV0cmllcyA9IERFRkFVTFRfUkVUUklFUyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBsYXN0RXJyb3I6IEVycm9yIHwgbnVsbCA9IG51bGxcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0cmllczsgaSsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBjcmVhdGVIdHRwUmVxdWVzdDx2b2lkPih7XG4gICAgICAgICAgaG9zdG5hbWU6IGNvbmZpZy5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiBhY3R1YWxXZWJQb3J0LFxuICAgICAgICAgIHBhdGg6IGAvc2Vzc2lvbi8ke3Nlc3Npb25JZH1gLFxuICAgICAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVyblxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsYXN0RXJyb3IgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlIDogbmV3IEVycm9yKFN0cmluZyhlKSlcbiAgICAgICAgaWYgKGkgPCByZXRyaWVzIC0gMSkgYXdhaXQgc2xlZXAoUkVUUllfREVMQVkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbGFzdEVycm9yXG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5oiW5Yib5bu65Lya6K+dXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZVNlc3Npb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwcm9qZWN0RGlyID0gcHJvY2Vzcy5jd2QoKVxuICAgIGxvZygnR2V0dGluZyBzZXNzaW9ucy4uLicpXG4gICAgY29uc3Qgc2Vzc2lvbnMgPSBhd2FpdCBnZXRTZXNzaW9ucygpXG4gICAgbG9nKGBGb3VuZCAke3Nlc3Npb25zLmxlbmd0aH0gc2Vzc2lvbnNgKVxuXG4gICAgY29uc3QgbWF0Y2hpbmdTZXNzaW9uID0gc2Vzc2lvbnMuZmluZChzID0+IHMuZGlyZWN0b3J5ID09PSBwcm9qZWN0RGlyKVxuXG4gICAgaWYgKG1hdGNoaW5nU2Vzc2lvbikge1xuICAgICAgcmV0dXJuIGBodHRwOi8vJHtjb25maWcuaG9zdG5hbWV9OiR7YWN0dWFsV2ViUG9ydH0vJHtiYXNlNjRFbmNvZGUocHJvamVjdERpcil9L3Nlc3Npb24vJHttYXRjaGluZ1Nlc3Npb24uaWR9YFxuICAgIH1cblxuICAgIGxvZygnQ3JlYXRpbmcgbmV3IHNlc3Npb24uLi4nKVxuICAgIGNvbnN0IG5ld1Nlc3Npb24gPSBhd2FpdCBjcmVhdGVTZXNzaW9uKClcbiAgICByZXR1cm4gYGh0dHA6Ly8ke2NvbmZpZy5ob3N0bmFtZX06JHthY3R1YWxXZWJQb3J0fS8ke2Jhc2U2NEVuY29kZShwcm9qZWN0RGlyKX0vc2Vzc2lvbi8ke25ld1Nlc3Npb24uaWR9YFxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9riBPcGVuQ29kZSDmj5Lku7ZcbiAgICovXG4gIGZ1bmN0aW9uIHNldHVwT3BlbkNvZGVQbHVnaW4oKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm9qZWN0RGlyID0gcHJvY2Vzcy5jd2QoKVxuICAgIGNvbnN0IGNhY2hlRGlyID0gcGF0aC5qb2luKHByb2plY3REaXIsICdub2RlX21vZHVsZXMnLCAnLmNhY2hlJywgJ29wZW5jb2RlJylcbiAgICBjb25zdCBwbHVnaW5zRGlyID0gcGF0aC5qb2luKGNhY2hlRGlyLCAncGx1Z2lucycpXG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMocGx1Z2luc0RpcikpIHtcbiAgICAgIGZzLm1rZGlyU3luYyhwbHVnaW5zRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgIH1cblxuICAgIGNvbnN0IHBsdWdpblNvdXJjZVBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAncGx1Z2lucycsICdwYWdlLWNvbnRleHQuanMnKVxuICAgIGNvbnN0IHBsdWdpblRhcmdldFBhdGggPSBwYXRoLmpvaW4ocGx1Z2luc0RpciwgJ3BhZ2UtY29udGV4dC5qcycpXG5cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhwbHVnaW5Tb3VyY2VQYXRoKSkge1xuICAgICAgZnMuY29weUZpbGVTeW5jKHBsdWdpblNvdXJjZVBhdGgsIHBsdWdpblRhcmdldFBhdGgpXG4gICAgICBsb2coYFBsdWdpbiBpbnN0YWxsZWQgdG8gJHtwbHVnaW5UYXJnZXRQYXRofWApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtMT0dfUFJFRklYfSBQbHVnaW4gc291cmNlIG5vdCBmb3VuZDogJHtwbHVnaW5Tb3VyY2VQYXRofWApXG4gICAgfVxuXG4gICAgcmV0dXJuIGNhY2hlRGlyXG4gIH1cblxuICAvKipcbiAgICog5ZCv5Yqo5pyN5YqhXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBzdGFydFNlcnZpY2VzKGNvcnNPcmlnaW5zPzogc3RyaW5nW10sIGNvbnRleHRBcGlVcmw/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoaXNTdGFydGVkKSByZXR1cm5cbiAgICBpZiAoc3RhcnRQcm9taXNlKSByZXR1cm4gc3RhcnRQcm9taXNlXG5cbiAgICBzdGFydFByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgbG9nKCdTdGFydGluZyBPcGVuQ29kZSBzZXJ2aWNlcy4uLicpXG5cbiAgICAgIGlmICghYXdhaXQgY2hlY2tPcGVuQ29kZUluc3RhbGxlZCgpKSB7XG4gICAgICAgIGxvZ0Vycm9yKGBPcGVuQ29kZSBpcyBub3QgaW5zdGFsbGVkIVxuXG5QbGVhc2UgaW5zdGFsbCBPcGVuQ29kZSBmaXJzdDpcblxuICAjIFVzaW5nIEhvbWVicmV3IChtYWNPUylcbiAgYnJldyBpbnN0YWxsIG9wZW5jb2RlLWFpL3RhcC9vcGVuY29kZVxuXG4gICMgT3IgdXNpbmcgdGhlIGluc3RhbGwgc2NyaXB0XG4gIGN1cmwgLWZzU0wgaHR0cHM6Ly9vcGVuY29kZS5haS9pbnN0YWxsIHwgYmFzaFxuICAgICAgICBgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgYWN0dWFsV2ViUG9ydCA9IGF3YWl0IGZpbmRBdmFpbGFibGVQb3J0KGNvbmZpZy53ZWJQb3J0LCBjb25maWcuaG9zdG5hbWUpXG4gICAgICBpZiAoYWN0dWFsV2ViUG9ydCAhPT0gY29uZmlnLndlYlBvcnQpIHtcbiAgICAgICAgbG9nKGBQb3J0ICR7Y29uZmlnLndlYlBvcnR9IGlzIGluIHVzZSwgdXNpbmcgJHthY3R1YWxXZWJQb3J0fSBpbnN0ZWFkYClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhpc3RpbmdQcm9jZXNzID0gYXdhaXQgY2hlY2tPcGVuQ29kZVByb2Nlc3MoYWN0dWFsV2ViUG9ydClcbiAgICAgIGlmIChleGlzdGluZ1Byb2Nlc3MpIHtcbiAgICAgICAgbG9nKGBGb3VuZCBleGlzdGluZyBPcGVuQ29kZSBwcm9jZXNzIG9uIHBvcnQgJHthY3R1YWxXZWJQb3J0fWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBraWxsZWQgPSBhd2FpdCBraWxsUHJvY2Vzc09uUG9ydChhY3R1YWxXZWJQb3J0LCBjb25maWcuaG9zdG5hbWUpXG4gICAgICAgIGlmIChraWxsZWQpIHtcbiAgICAgICAgICBsb2coYEtpbGxlZCBzdGFsZSBwcm9jZXNzIG9uIHBvcnQgJHthY3R1YWxXZWJQb3J0fWApXG4gICAgICAgICAgYXdhaXQgc2xlZXAoUFJPQ0VTU19LSUxMX0RFTEFZKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbmZpZ0RpciA9IHNldHVwT3BlbkNvZGVQbHVnaW4oKVxuXG4gICAgICBpZiAoIWV4aXN0aW5nUHJvY2Vzcykge1xuICAgICAgICB3ZWJQcm9jZXNzID0gYXdhaXQgc3RhcnRPcGVuQ29kZVdlYih7XG4gICAgICAgICAgcG9ydDogYWN0dWFsV2ViUG9ydCxcbiAgICAgICAgICBob3N0bmFtZTogY29uZmlnLmhvc3RuYW1lLFxuICAgICAgICAgIHNlcnZlclVybDogJycsXG4gICAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAgIGNvbmZpZ0RpcixcbiAgICAgICAgICBjb3JzT3JpZ2lucyxcbiAgICAgICAgICBjb250ZXh0QXBpVXJsLFxuICAgICAgICB9KVxuICAgICAgICBsb2coYE9wZW5Db2RlIFdlYiBzdGFydGVkIGF0IGh0dHA6Ly8ke2NvbmZpZy5ob3N0bmFtZX06JHthY3R1YWxXZWJQb3J0fWApXG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHNlc3Npb25VcmwgPSBhd2FpdCBnZXRPckNyZWF0ZVNlc3Npb24oKVxuICAgICAgICBsb2coYFNlc3Npb24gVVJMOiAke3Nlc3Npb25Vcmx9YClcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGAke0xPR19QUkVGSVh9IEZhaWxlZCB0byBnZXQvY3JlYXRlIHNlc3Npb246YCwgZSlcbiAgICAgIH1cblxuICAgICAgaXNTdGFydGVkID0gdHJ1ZVxuICAgIH0pKClcblxuICAgIHJldHVybiBzdGFydFByb21pc2VcbiAgfVxuXG4gIC8qKlxuICAgKiDlgZzmraLmnI3liqFcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIHN0b3BTZXJ2aWNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2coJ1N0b3BwaW5nIE9wZW5Db2RlIHNlcnZpY2VzLi4uJylcbiAgICBcbiAgICBpZiAod2ViUHJvY2Vzcykge1xuICAgICAgd2ViUHJvY2Vzcy5raWxsKCdTSUdURVJNJylcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICB3ZWJQcm9jZXNzPy5vbignZXhpdCcsICgpID0+IHJlc29sdmUoKSlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgd2ViUHJvY2Vzcz8ua2lsbCgnU0lHS0lMTCcpXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH0sIDMwMDApXG4gICAgICB9KVxuICAgICAgd2ViUHJvY2VzcyA9IG51bGxcbiAgICB9XG4gICAgXG4gICAgaWYgKGlzU3RhcnRlZCkge1xuICAgICAgYXdhaXQga2lsbFByb2Nlc3NPblBvcnQoYWN0dWFsV2ViUG9ydCwgY29uZmlnLmhvc3RuYW1lKVxuICAgIH1cbiAgICBcbiAgICBpc1N0YXJ0ZWQgPSBmYWxzZVxuICAgIHN0YXJ0UHJvbWlzZSA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiDlpITnkIbkuIrkuIvmlocgQVBJIOivt+axglxuICAgKi9cbiAgZnVuY3Rpb24gaGFuZGxlQ29udGV4dFJlcXVlc3QocmVxOiBodHRwLkluY29taW5nTWVzc2FnZSwgcmVzOiBodHRwLlNlcnZlclJlc3BvbnNlKTogdm9pZCB7XG4gICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJywgJ0dFVCwgUE9TVCwgREVMRVRFLCBPUFRJT05TJylcbiAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJywgJ0NvbnRlbnQtVHlwZScpXG5cbiAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ09QVElPTlMnKSB7XG4gICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgIHJlcy5lbmQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHJlcS5tZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkocGFnZUNvbnRleHQpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHJlcS5tZXRob2QgPT09ICdERUxFVEUnKSB7XG4gICAgICBwYWdlQ29udGV4dC5zZWxlY3RlZEVsZW1lbnRzID0gW11cbiAgICAgIGxvZygnU2VsZWN0ZWQgZWxlbWVudHMgY2xlYXJlZCcpXG4gICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBzdWNjZXNzOiB0cnVlIH0pKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHJlcS5tZXRob2QgPT09ICdQT1NUJykge1xuICAgICAgbGV0IGJvZHkgPSAnJ1xuICAgICAgcmVxLm9uKCdkYXRhJywgY2h1bmsgPT4gYm9keSArPSBjaHVuaylcbiAgICAgIHJlcS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGJvZHkpXG4gICAgICAgICAgcGFnZUNvbnRleHQgPSB7XG4gICAgICAgICAgICB1cmw6IGRhdGEudXJsIHx8ICcnLFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUgfHwgJycsXG4gICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzOiBkYXRhLnNlbGVjdGVkRWxlbWVudHMgfHwgW10sXG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZyhgQ29udGV4dCB1cGRhdGVkOiAke3BhZ2VDb250ZXh0LnVybH1gLCBkYXRhLnNlbGVjdGVkRWxlbWVudHM/Lmxlbmd0aCA/IGBlbGVtZW50czogJHtkYXRhLnNlbGVjdGVkRWxlbWVudHMubGVuZ3RofWAgOiAnJylcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgc3VjY2VzczogdHJ1ZSB9KSlcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmVzLndyaXRlSGVhZCg0MDApXG4gICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiAnSW52YWxpZCBKU09OJyB9KSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHJlcy53cml0ZUhlYWQoNDA1KVxuICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogJ01ldGhvZCBub3QgYWxsb3dlZCcgfSkpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICd2aXRlLXBsdWdpbi1vcGVuY29kZScsXG5cbiAgICBhc3luYyBjb25maWd1cmVTZXJ2ZXIoc2VydmVyOiBWaXRlRGV2U2VydmVyKSB7XG4gICAgICBpZiAoIWNvbmZpZy5lbmFibGVkKSByZXR1cm5cblxuICAgICAgY29uc3Qgdml0ZVBvcnQgPSBzZXJ2ZXIuY29uZmlnLnNlcnZlci5wb3J0IHx8IDUxNzNcbiAgICAgIGNvbnN0IHZpdGVIb3N0ID0gc2VydmVyLmNvbmZpZy5zZXJ2ZXIuaG9zdCB8fCAnbG9jYWxob3N0J1xuICAgICAgY29uc3Qgdml0ZU9yaWdpbiA9IGBodHRwOi8vJHt2aXRlSG9zdH06JHt2aXRlUG9ydH1gXG4gICAgICBjb25zdCBjb250ZXh0QXBpVXJsID0gYGh0dHA6Ly8ke3ZpdGVIb3N0fToke3ZpdGVQb3J0fSR7Q09OVEVYVF9BUElfUEFUSH1gXG5cbiAgICAgIGlmICghY29uZmlnLmxhenkpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRTZXJ2aWNlcyhbdml0ZU9yaWdpbl0sIGNvbnRleHRBcGlVcmwpXG4gICAgICB9XG5cbiAgICAgIHNlcnZlci5taWRkbGV3YXJlcy51c2UoV0lER0VUX1NDUklQVF9QQVRILCBhc3luYyAoX3JlcSwgcmVzKSA9PiB7XG4gICAgICAgIGlmIChjb25maWcubGF6eSAmJiAhaXNTdGFydGVkKSB7XG4gICAgICAgICAgYXdhaXQgc3RhcnRTZXJ2aWNlcyhbdml0ZU9yaWdpbl0sIGNvbnRleHRBcGlVcmwpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aWRnZXRQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2NsaWVudC5qcycpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHdpZGdldFBhdGgpKSB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKVxuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICAgICAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKHdpZGdldFBhdGgpLnBpcGUocmVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDA0KVxuICAgICAgICAgIHJlcy5lbmQoJ1dpZGdldCBzY3JpcHQgbm90IGZvdW5kJylcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2VydmVyLm1pZGRsZXdhcmVzLnVzZShDT05URVhUX0FQSV9QQVRILCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICAgICAgaWYgKGNvbmZpZy5sYXp5ICYmICFpc1N0YXJ0ZWQpIHtcbiAgICAgICAgICBhd2FpdCBzdGFydFNlcnZpY2VzKFt2aXRlT3JpZ2luXSwgY29udGV4dEFwaVVybClcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVDb250ZXh0UmVxdWVzdChyZXEgYXMgaHR0cC5JbmNvbWluZ01lc3NhZ2UsIHJlcylcbiAgICAgIH0pXG5cbiAgICAgIHNlcnZlci5taWRkbGV3YXJlcy51c2UoU1RBUlRfQVBJX1BBVEgsIGFzeW5jIChfcmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpXG5cbiAgICAgICAgaWYgKGNvbmZpZy5sYXp5ICYmICFpc1N0YXJ0ZWQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgc3RhcnRTZXJ2aWNlcyhbdml0ZU9yaWdpbl0sIGNvbnRleHRBcGlVcmwpXG4gICAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBzdWNjZXNzOiB0cnVlLCBzZXNzaW9uVXJsIH0pKVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoNTAwKVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBTdHJpbmcoZSkgfSkpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBzdWNjZXNzOiB0cnVlLCBzZXNzaW9uVXJsIH0pKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXJ2ZXIubWlkZGxld2FyZXMudXNlKFNFU1NJT05TX0FQSV9QQVRILCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnLCAnR0VULCBQT1NULCBERUxFVEUsIE9QVElPTlMnKVxuICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJywgJ0NvbnRlbnQtVHlwZScpXG5cbiAgICAgICAgaWYgKHJlcS5tZXRob2QgPT09ICdPUFRJT05TJykge1xuICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgIHJlcy5lbmQoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5sYXp5ICYmICFpc1N0YXJ0ZWQpIHtcbiAgICAgICAgICBhd2FpdCBzdGFydFNlcnZpY2VzKFt2aXRlT3JpZ2luXSwgY29udGV4dEFwaVVybClcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHJlcS5tZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICAgICAgICBjb25zdCBzZXNzaW9ucyA9IGF3YWl0IGdldFNlc3Npb25zKClcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeShzZXNzaW9ucykpXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXEubWV0aG9kID09PSAnUE9TVCcpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1Nlc3Npb24gPSBhd2FpdCBjcmVhdGVTZXNzaW9uKClcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeShuZXdTZXNzaW9uKSlcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcS5tZXRob2QgPT09ICdERUxFVEUnKSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwgfHwgJycsIGBodHRwOi8vJHtyZXEuaGVhZGVycy5ob3N0fWApXG4gICAgICAgICAgICBjb25zdCBzZXNzaW9uSWQgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgnaWQnKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoIXNlc3Npb25JZCkge1xuICAgICAgICAgICAgICByZXMud3JpdGVIZWFkKDQwMClcbiAgICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiAnU2Vzc2lvbiBJRCBpcyByZXF1aXJlZCcgfSkpXG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBhd2FpdCBkZWxldGVTZXNzaW9uKHNlc3Npb25JZClcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUgfSkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDA1KVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiAnTWV0aG9kIG5vdCBhbGxvd2VkJyB9KSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDUwMClcbiAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IFN0cmluZyhlKSB9KSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2VydmVyLmh0dHBTZXJ2ZXI/Lm9uKCdjbG9zZScsIHN0b3BTZXJ2aWNlcylcbiAgICAgIFxuICAgICAgY29uc3QgY2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgc3RvcFNlcnZpY2VzKClcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApXG4gICAgICB9XG4gICAgICBcbiAgICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsIGNsZWFudXApXG4gICAgICBwcm9jZXNzLm9uKCdTSUdURVJNJywgY2xlYW51cClcbiAgICAgIHByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gICAgICAgIHdlYlByb2Nlc3M/LmtpbGwoJ1NJR0tJTEwnKVxuICAgICAgfSlcbiAgICB9LFxuXG4gICAgdHJhbnNmb3JtSW5kZXhIdG1sKGh0bWwpIHtcbiAgICAgIGNvbnN0IHdpZGdldCA9IGluamVjdFdpZGdldCh7XG4gICAgICAgIHdlYlVybDogYGh0dHA6Ly8ke2NvbmZpZy5ob3N0bmFtZX06JHthY3R1YWxXZWJQb3J0fWAsXG4gICAgICAgIHNlcnZlclVybDogYGh0dHA6Ly8ke2NvbmZpZy5ob3N0bmFtZX06JHthY3R1YWxXZWJQb3J0fWAsXG4gICAgICAgIHBvc2l0aW9uOiBjb25maWcucG9zaXRpb24sXG4gICAgICAgIHRoZW1lOiBjb25maWcudGhlbWUsXG4gICAgICAgIG9wZW46IGNvbmZpZy5vcGVuLFxuICAgICAgICBhdXRvUmVsb2FkOiBjb25maWcuYXV0b1JlbG9hZCxcbiAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBzZXNzaW9uVXJsOiBzZXNzaW9uVXJsIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgbGF6eTogY29uZmlnLmxhenksXG4gICAgICAgIGhvdGtleTogY29uZmlnLmhvdGtleSxcbiAgICAgIH0pXG4gICAgICByZXR1cm4gaHRtbC5yZXBsYWNlKCc8L2JvZHk+JywgYCR7d2lkZ2V0fTwvYm9keT5gKVxuICAgIH0sXG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-opencode-assistant",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Embed OpenCode Web UI in your Vite dev server for real-time code modification and preview",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",