vite-plugin-opencode-assistant 1.0.0 → 1.0.1

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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Plugin } from 'vite';
2
- import { OpenCodeOptions } from './types';
2
+ import { OpenCodeOptions } from './types.js';
3
3
  /**
4
4
  * OpenCode Vite 插件
5
5
  * @param options - 插件配置选项
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
3
  import http from 'http';
4
- import { startOpenCodeWeb } from './web';
5
- import { injectWidget } from './injector';
6
- import { checkOpenCodeInstalled, findAvailablePort, killProcessOnPort, checkOpenCodeProcess } from './utils';
7
- import { DEFAULT_CONFIG, DEFAULT_RETRIES, RETRY_DELAY, PROCESS_KILL_DELAY, LOG_PREFIX, WIDGET_SCRIPT_PATH, CONTEXT_API_PATH, START_API_PATH, SESSIONS_API_PATH, } from './constants';
4
+ import { startOpenCodeWeb } from './web.js';
5
+ import { injectWidget } from './injector.js';
6
+ import { checkOpenCodeInstalled, findAvailablePort, killProcessOnPort, checkOpenCodeProcess } from './utils.js';
7
+ import { DEFAULT_CONFIG, DEFAULT_RETRIES, RETRY_DELAY, PROCESS_KILL_DELAY, LOG_PREFIX, WIDGET_SCRIPT_PATH, CONTEXT_API_PATH, START_API_PATH, SESSIONS_API_PATH, } from './constants.js';
8
8
  /**
9
9
  * OpenCode Vite 插件
10
10
  * @param options - 插件配置选项
@@ -445,4 +445,4 @@ Please install OpenCode first:
445
445
  },
446
446
  };
447
447
  }
448
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUNuQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRTVHLE9BQU8sRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQTtBQUVwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsY0FBYyxDQUFDLFVBQTJCLEVBQUU7SUFDbEUsSUFBSSxVQUFVLEdBQXdCLElBQUksQ0FBQTtJQUMxQyxJQUFJLFVBQVUsR0FBa0IsSUFBSSxDQUFBO0lBQ3BDLElBQUksYUFBYSxHQUFXLGNBQWMsQ0FBQyxPQUFPLENBQUE7SUFDbEQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFBO0lBQ3JCLElBQUksWUFBWSxHQUF5QixJQUFJLENBQUE7SUFDN0MsSUFBSSxXQUFXLEdBQWdCLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFFckQsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFBO0lBRWhEOztPQUVHO0lBQ0gsU0FBUyxHQUFHLENBQUMsT0FB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Q0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGx1Z2luLCBWaXRlRGV2U2VydmVyIH0gZnJvbSAndml0ZSdcbmltcG9ydCB7IHNwYXduLCBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgeyBzdGFydE9wZW5Db2RlV2ViIH0gZnJvbSAnLi93ZWInXG5pbXBvcnQgeyBpbmplY3RXaWRnZXQgfSBmcm9tICcuL2luamVjdG9yJ1xuaW1wb3J0IHsgY2hlY2tPcGVuQ29kZUluc3RhbGxlZCwgZmluZEF2YWlsYWJsZVBvcnQsIGtpbGxQcm9jZXNzT25Qb3J0LCBjaGVja09wZW5Db2RlUHJvY2VzcyB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBPcGVuQ29kZU9wdGlvbnMsIFNlc3Npb25JbmZvLCBQYWdlQ29udGV4dCB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQge1xuICBERUZBVUxUX0NPTkZJRyxcbiAgREVGQVVMVF9SRVRSSUVTLFxuICBSRVRSWV9ERUxBWSxcbiAgUFJPQ0VTU19LSUxMX0RFTEFZLFxuICBMT0dfUFJFRklYLFxuICBXSURHRVRfU0NSSVBUX1BBVEgsXG4gIENPTlRFWFRfQVBJX1BBVEgsXG4gIFNUQVJUX0FQSV9QQVRILFxuICBTRVNTSU9OU19BUElfUEFUSCxcbn0gZnJvbSAnLi9jb25zdGFudHMnXG5cbi8qKlxuICogT3BlbkNvZGUgVml0ZSDmj5Lku7ZcbiAqIEBwYXJhbSBvcHRpb25zIC0g5o+S5Lu26YWN572u6YCJ6aG5XG4gKiBAcmV0dXJucyBWaXRlIOaPkuS7tuWunuS+i1xuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyB2aXRlLmNvbmZpZy50c1xuICogaW1wb3J0IG9wZW5jb2RlIGZyb20gJ3ZpdGUtcGx1Z2luLW9wZW5jb2RlJ1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IHtcbiAqICAgcGx1Z2luczogW1xuICogICAgIG9wZW5jb2RlKHtcbiAqICAgICAgIHdlYlBvcnQ6IDQwOTcsXG4gKiAgICAgICBwb3NpdGlvbjogJ2JvdHRvbS1yaWdodCcsXG4gKiAgICAgICB0aGVtZTogJ2F1dG8nXG4gKiAgICAgfSlcbiAqICAgXVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9wZW5jb2RlUGx1Z2luKG9wdGlvbnM6IE9wZW5Db2RlT3B0aW9ucyA9IHt9KTogUGx1Z2luIHtcbiAgbGV0IHdlYlByb2Nlc3M6IENoaWxkUHJvY2VzcyB8IG51bGwgPSBudWxsXG4gIGxldCBzZXNzaW9uVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICBsZXQgYWN0dWFsV2ViUG9ydDogbnVtYmVyID0gREVGQVVMVF9DT05GSUcud2ViUG9ydFxuICBsZXQgaXNTdGFydGVkID0gZmFsc2VcbiAgbGV0IHN0YXJ0UHJvbWlzZTogUHJvbWlzZTx2b2lkPiB8IG51bGwgPSBudWxsXG4gIGxldCBwYWdlQ29udGV4dDogUGFnZUNvbnRleHQgPSB7IHVybDogJycsIHRpdGxlOiAnJyB9XG5cbiAgY29uc3QgY29uZmlnID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4ub3B0aW9ucyB9XG5cbiAgLyoqXG4gICAqIOi+k+WHuuaXpeW/l++8iOS7heWcqCB2ZXJib3NlIOaooeW8j+S4i++8iVxuICAgKi9cbiAgZnVuY3Rpb24gbG9nKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKGNvbmZpZy52ZXJib3NlKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtMT0dfUFJFRklYfSAke21lc3NhZ2V9YCwgLi4uYXJncylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6L6T5Ye66ZSZ6K+v5pel5b+XXG4gICAqL1xuICBmdW5jdGlvbiBsb2dFcnJvcihtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGNvbnNvbGUuZXJyb3IoYCR7TE9HX1BSRUZJWH0gJHttZXNzYWdlfWAsIC4uLmFyZ3MpXG4gIH1cblxuICAvKipcbiAgICogQmFzZTY0IOe8lueggeWtl+espuS4slxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZTY0RW5jb2RlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oc3RyKS50b1N0cmluZygnYmFzZTY0JylcbiAgfVxuXG4gIC8qKlxuICAgKiDlu7bov5/miafooYxcbiAgICovXG4gIGZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSlcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7ogSFRUUCDor7fmsYIgUHJvbWlzZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlSHR0cFJlcXVlc3Q8VD4ob3B0aW9uczogaHR0cC5SZXF1ZXN0T3B0aW9ucywgYm9keT86IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZXEgPSBodHRwLnJlcXVlc3Qob3B0aW9ucywgKHJlcykgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9ICcnXG4gICAgICAgIHJlcy5vbignZGF0YScsIGNodW5rID0+IGRhdGEgKz0gY2h1bmspXG4gICAgICAgIHJlcy5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UoZGF0YSkpXG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBKU09OIHBhcnNlIGVycm9yOiAke2RhdGEuc3Vic3RyaW5nKDAsIDEwMCl9YCkpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIHJlcS5vbignZXJyb3InLCByZWplY3QpXG4gICAgICBpZiAoYm9keSkgcmVxLndyaXRlKGJvZHkpXG4gICAgICByZXEuZW5kKClcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluS8muivneWIl+ihqFxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0U2Vzc2lvbnMocmV0cmllcyA9IERFRkFVTFRfUkVUUklFUyk6IFByb21pc2U8U2Vzc2lvbkluZm9bXT4ge1xuICAgIGxldCBsYXN0RXJyb3I6IEVycm9yIHwgbnVsbCA9IG51bGxcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0cmllczsgaSsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgY3JlYXRlSHR0cFJlcXVlc3Q8U2Vzc2lvbkluZm9bXT4oe1xuICAgICAgICAgIGhvc3RuYW1lOiBjb25maWcuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogYWN0dWFsV2ViUG9ydCxcbiAgICAgICAgICBwYXRoOiAnL3Nlc3Npb24nLFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsYXN0RXJyb3IgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlIDogbmV3IEVycm9yKFN0cmluZyhlKSlcbiAgICAgICAgaWYgKGkgPCByZXRyaWVzIC0gMSkgYXdhaXQgc2xlZXAoUkVUUllfREVMQVkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbGFzdEVycm9yXG4gIH1cblxuICAvKipcbiAgICog5Yib5bu65paw5Lya6K+dXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBjcmVhdGVTZXNzaW9uKHJldHJpZXMgPSBERUZBVUxUX1JFVFJJRVMpOiBQcm9taXNlPFNlc3Npb25JbmZvPiB7XG4gICAgbGV0IGxhc3RFcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbFxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRyaWVzOyBpKyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjcmVhdGVIdHRwUmVxdWVzdDxTZXNzaW9uSW5mbz4oe1xuICAgICAgICAgIGhvc3RuYW1lOiBjb25maWcuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogYWN0dWFsV2ViUG9ydCxcbiAgICAgICAgICBwYXRoOiAnL3Nlc3Npb24nLFxuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsYXN0RXJyb3IgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlIDogbmV3IEVycm9yKFN0cmluZyhlKSlcbiAgICAgICAgaWYgKGkgPCByZXRyaWVzIC0gMSkgYXdhaXQgc2xlZXAoUkVUUllfREVMQVkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbGFzdEVycm9yXG4gIH1cblxuICAvKipcbiAgICog5Yig6Zmk5Lya6K+dXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBkZWxldGVTZXNzaW9uKHNlc3Npb25JZDogc3RyaW5nLCByZXRyaWVzID0gREVGQVVMVF9SRVRSSUVTKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGxhc3RFcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbFxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRyaWVzOyBpKyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGNyZWF0ZUh0dHBSZXF1ZXN0PHZvaWQ+KHtcbiAgICAgICAgICBob3N0bmFtZTogY29uZmlnLmhvc3RuYW1lLFxuICAgICAgICAgIHBvcnQ6IGFjdHVhbFdlYlBvcnQsXG4gICAgICAgICAgcGF0aDogYC9zZXNzaW9uLyR7c2Vzc2lvbklkfWAsXG4gICAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxhc3RFcnJvciA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUgOiBuZXcgRXJyb3IoU3RyaW5nKGUpKVxuICAgICAgICBpZiAoaSA8IHJldHJpZXMgLSAxKSBhd2FpdCBzbGVlcChSRVRSWV9ERUxBWSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBsYXN0RXJyb3JcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bmiJbliJvlu7rkvJror51cbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlU2Vzc2lvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHByb2plY3REaXIgPSBwcm9jZXNzLmN3ZCgpXG4gICAgbG9nKCdHZXR0aW5nIHNlc3Npb25zLi4uJylcbiAgICBjb25zdCBzZXNzaW9ucyA9IGF3YWl0IGdldFNlc3Npb25zKClcbiAgICBsb2coYEZvdW5kICR7c2Vzc2lvbnMubGVuZ3RofSBzZXNzaW9uc2ApXG5cbiAgICBjb25zdCBtYXRjaGluZ1Nlc3Npb24gPSBzZXNzaW9ucy5maW5kKHMgPT4gcy5kaXJlY3RvcnkgPT09IHByb2plY3REaXIpXG5cbiAgICBpZiAobWF0Y2hpbmdTZXNzaW9uKSB7XG4gICAgICByZXR1cm4gYGh0dHA6Ly8ke2NvbmZpZy5ob3N0bmFtZX06JHthY3R1YWxXZWJQb3J0fS8ke2Jhc2U2NEVuY29kZShwcm9qZWN0RGlyKX0vc2Vzc2lvbi8ke21hdGNoaW5nU2Vzc2lvbi5pZH1gXG4gICAgfVxuXG4gICAgbG9nKCdDcmVhdGluZyBuZXcgc2Vzc2lvbi4uLicpXG4gICAgY29uc3QgbmV3U2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZVNlc3Npb24oKVxuICAgIHJldHVybiBgaHR0cDovLyR7Y29uZmlnLmhvc3RuYW1lfToke2FjdHVhbFdlYlBvcnR9LyR7YmFzZTY0RW5jb2RlKHByb2plY3REaXIpfS9zZXNzaW9uLyR7bmV3U2Vzc2lvbi5pZH1gXG4gIH1cblxuICAvKipcbiAgICog6K6+572uIE9wZW5Db2RlIOaPkuS7tlxuICAgKi9cbiAgZnVuY3Rpb24gc2V0dXBPcGVuQ29kZVBsdWdpbigpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2plY3REaXIgPSBwcm9jZXNzLmN3ZCgpXG4gICAgY29uc3QgY2FjaGVEaXIgPSBwYXRoLmpvaW4ocHJvamVjdERpciwgJ25vZGVfbW9kdWxlcycsICcuY2FjaGUnLCAnb3BlbmNvZGUnKVxuICAgIGNvbnN0IHBsdWdpbnNEaXIgPSBwYXRoLmpvaW4oY2FjaGVEaXIsICdwbHVnaW5zJylcblxuICAgIGlmICghZnMuZXhpc3RzU3luYyhwbHVnaW5zRGlyKSkge1xuICAgICAgZnMubWtkaXJTeW5jKHBsdWdpbnNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgY29uc3QgcGx1Z2luU291cmNlUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdwbHVnaW5zJywgJ3BhZ2UtY29udGV4dC5qcycpXG4gICAgY29uc3QgcGx1Z2luVGFyZ2V0UGF0aCA9IHBhdGguam9pbihwbHVnaW5zRGlyLCAncGFnZS1jb250ZXh0LmpzJylcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKHBsdWdpblNvdXJjZVBhdGgpKSB7XG4gICAgICBmcy5jb3B5RmlsZVN5bmMocGx1Z2luU291cmNlUGF0aCwgcGx1Z2luVGFyZ2V0UGF0aClcbiAgICAgIGxvZyhgUGx1Z2luIGluc3RhbGxlZCB0byAke3BsdWdpblRhcmdldFBhdGh9YClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKGAke0xPR19QUkVGSVh9IFBsdWdpbiBzb3VyY2Ugbm90IGZvdW5kOiAke3BsdWdpblNvdXJjZVBhdGh9YClcbiAgICB9XG5cbiAgICByZXR1cm4gY2FjaGVEaXJcbiAgfVxuXG4gIC8qKlxuICAgKiDlkK/liqjmnI3liqFcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0U2VydmljZXMoY29yc09yaWdpbnM/OiBzdHJpbmdbXSwgY29udGV4dEFwaVVybD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChpc1N0YXJ0ZWQpIHJldHVyblxuICAgIGlmIChzdGFydFByb21pc2UpIHJldHVybiBzdGFydFByb21pc2VcblxuICAgIHN0YXJ0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICBsb2coJ1N0YXJ0aW5nIE9wZW5Db2RlIHNlcnZpY2VzLi4uJylcblxuICAgICAgaWYgKCFhd2FpdCBjaGVja09wZW5Db2RlSW5zdGFsbGVkKCkpIHtcbiAgICAgICAgbG9nRXJyb3IoYE9wZW5Db2RlIGlzIG5vdCBpbnN0YWxsZWQhXG5cblBsZWFzZSBpbnN0YWxsIE9wZW5Db2RlIGZpcnN0OlxuXG4gICMgVXNpbmcgSG9tZWJyZXcgKG1hY09TKVxuICBicmV3IGluc3RhbGwgb3BlbmNvZGUtYWkvdGFwL29wZW5jb2RlXG5cbiAgIyBPciB1c2luZyB0aGUgaW5zdGFsbCBzY3JpcHRcbiAgY3VybCAtZnNTTCBodHRwczovL29wZW5jb2RlLmFpL2luc3RhbGwgfCBiYXNoXG4gICAgICAgIGApXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBhY3R1YWxXZWJQb3J0ID0gYXdhaXQgZmluZEF2YWlsYWJsZVBvcnQoY29uZmlnLndlYlBvcnQsIGNvbmZpZy5ob3N0bmFtZSlcbiAgICAgIGlmIChhY3R1YWxXZWJQb3J0ICE9PSBjb25maWcud2ViUG9ydCkge1xuICAgICAgICBsb2coYFBvcnQgJHtjb25maWcud2ViUG9ydH0gaXMgaW4gdXNlLCB1c2luZyAke2FjdHVhbFdlYlBvcnR9IGluc3RlYWRgKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBleGlzdGluZ1Byb2Nlc3MgPSBhd2FpdCBjaGVja09wZW5Db2RlUHJvY2VzcyhhY3R1YWxXZWJQb3J0KVxuICAgICAgaWYgKGV4aXN0aW5nUHJvY2Vzcykge1xuICAgICAgICBsb2coYEZvdW5kIGV4aXN0aW5nIE9wZW5Db2RlIHByb2Nlc3Mgb24gcG9ydCAke2FjdHVhbFdlYlBvcnR9YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGtpbGxlZCA9IGF3YWl0IGtpbGxQcm9jZXNzT25Qb3J0KGFjdHVhbFdlYlBvcnQsIGNvbmZpZy5ob3N0bmFtZSlcbiAgICAgICAgaWYgKGtpbGxlZCkge1xuICAgICAgICAgIGxvZyhgS2lsbGVkIHN0YWxlIHByb2Nlc3Mgb24gcG9ydCAke2FjdHVhbFdlYlBvcnR9YClcbiAgICAgICAgICBhd2FpdCBzbGVlcChQUk9DRVNTX0tJTExfREVMQVkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29uZmlnRGlyID0gc2V0dXBPcGVuQ29kZVBsdWdpbigpXG5cbiAgICAgIGlmICghZXhpc3RpbmdQcm9jZXNzKSB7XG4gICAgICAgIHdlYlByb2Nlc3MgPSBhd2FpdCBzdGFydE9wZW5Db2RlV2ViKHtcbiAgICAgICAgICBwb3J0OiBhY3R1YWxXZWJQb3J0LFxuICAgICAgICAgIGhvc3RuYW1lOiBjb25maWcuaG9zdG5hbWUsXG4gICAgICAgICAgc2VydmVyVXJsOiAnJyxcbiAgICAgICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICAgICAgY29uZmlnRGlyLFxuICAgICAgICAgIGNvcnNPcmlnaW5zLFxuICAgICAgICAgIGNvbnRleHRBcGlVcmwsXG4gICAgICAgIH0pXG4gICAgICAgIGxvZyhgT3BlbkNvZGUgV2ViIHN0YXJ0ZWQgYXQgaHR0cDovLyR7Y29uZmlnLmhvc3RuYW1lfToke2FjdHVhbFdlYlBvcnR9YClcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgc2Vzc2lvblVybCA9IGF3YWl0IGdldE9yQ3JlYXRlU2Vzc2lvbigpXG4gICAgICAgIGxvZyhgU2Vzc2lvbiBVUkw6ICR7c2Vzc2lvblVybH1gKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYCR7TE9HX1BSRUZJWH0gRmFpbGVkIHRvIGdldC9jcmVhdGUgc2Vzc2lvbjpgLCBlKVxuICAgICAgfVxuXG4gICAgICBpc1N0YXJ0ZWQgPSB0cnVlXG4gICAgfSkoKVxuXG4gICAgcmV0dXJuIHN0YXJ0UHJvbWlzZVxuICB9XG5cbiAgLyoqXG4gICAqIOWBnOatouacjeWKoVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gc3RvcFNlcnZpY2VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZygnU3RvcHBpbmcgT3BlbkNvZGUgc2VydmljZXMuLi4nKVxuICAgIFxuICAgIGlmICh3ZWJQcm9jZXNzKSB7XG4gICAgICB3ZWJQcm9jZXNzLmtpbGwoJ1NJR1RFUk0nKVxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgIHdlYlByb2Nlc3M/Lm9uKCdleGl0JywgKCkgPT4gcmVzb2x2ZSgpKVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB3ZWJQcm9jZXNzPy5raWxsKCdTSUdLSUxMJylcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfSwgMzAwMClcbiAgICAgIH0pXG4gICAgICB3ZWJQcm9jZXNzID0gbnVsbFxuICAgIH1cbiAgICBcbiAgICBpZiAoaXNTdGFydGVkKSB7XG4gICAgICBhd2FpdCBraWxsUHJvY2Vzc09uUG9ydChhY3R1YWxXZWJQb3J0LCBjb25maWcuaG9zdG5hbWUpXG4gICAgfVxuICAgIFxuICAgIGlzU3RhcnRlZCA9IGZhbHNlXG4gICAgc3RhcnRQcm9taXNlID0gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIOWkhOeQhuS4iuS4i+aWhyBBUEkg6K+35rGCXG4gICAqL1xuICBmdW5jdGlvbiBoYW5kbGVDb250ZXh0UmVxdWVzdChyZXE6IGh0dHAuSW5jb21pbmdNZXNzYWdlLCByZXM6IGh0dHAuU2VydmVyUmVzcG9uc2UpOiB2b2lkIHtcbiAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXG4gICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnLCAnR0VULCBQT1NULCBERUxFVEUsIE9QVElPTlMnKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCAnQ29udGVudC1UeXBlJylcblxuICAgIGlmIChyZXEubWV0aG9kID09PSAnT1BUSU9OUycpIHtcbiAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgcmVzLmVuZCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeShwYWdlQ29udGV4dCkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ0RFTEVURScpIHtcbiAgICAgIHBhZ2VDb250ZXh0LnNlbGVjdGVkRWxlbWVudHMgPSBbXVxuICAgICAgbG9nKCdTZWxlY3RlZCBlbGVtZW50cyBjbGVhcmVkJylcbiAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUgfSkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ1BPU1QnKSB7XG4gICAgICBsZXQgYm9keSA9ICcnXG4gICAgICByZXEub24oJ2RhdGEnLCBjaHVuayA9PiBib2R5ICs9IGNodW5rKVxuICAgICAgcmVxLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoYm9keSlcbiAgICAgICAgICBwYWdlQ29udGV4dCA9IHtcbiAgICAgICAgICAgIHVybDogZGF0YS51cmwgfHwgJycsXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSB8fCAnJyxcbiAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHM6IGRhdGEuc2VsZWN0ZWRFbGVtZW50cyB8fCBbXSxcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nKGBDb250ZXh0IHVwZGF0ZWQ6ICR7cGFnZUNvbnRleHQudXJsfWAsIGRhdGEuc2VsZWN0ZWRFbGVtZW50cz8ubGVuZ3RoID8gYGVsZW1lbnRzOiAke2RhdGEuc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGh9YCA6ICcnKVxuICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBzdWNjZXNzOiB0cnVlIH0pKVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDQwMClcbiAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6ICdJbnZhbGlkIEpTT04nIH0pKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcmVzLndyaXRlSGVhZCg0MDUpXG4gICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiAnTWV0aG9kIG5vdCBhbGxvd2VkJyB9KSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3ZpdGUtcGx1Z2luLW9wZW5jb2RlJyxcblxuICAgIGFzeW5jIGNvbmZpZ3VyZVNlcnZlcihzZXJ2ZXI6IFZpdGVEZXZTZXJ2ZXIpIHtcbiAgICAgIGlmICghY29uZmlnLmVuYWJsZWQpIHJldHVyblxuXG4gICAgICBjb25zdCB2aXRlUG9ydCA9IHNlcnZlci5jb25maWcuc2VydmVyLnBvcnQgfHwgNTE3M1xuICAgICAgY29uc3Qgdml0ZUhvc3QgPSBzZXJ2ZXIuY29uZmlnLnNlcnZlci5ob3N0IHx8ICdsb2NhbGhvc3QnXG4gICAgICBjb25zdCB2aXRlT3JpZ2luID0gYGh0dHA6Ly8ke3ZpdGVIb3N0fToke3ZpdGVQb3J0fWBcbiAgICAgIGNvbnN0IGNvbnRleHRBcGlVcmwgPSBgaHR0cDovLyR7dml0ZUhvc3R9OiR7dml0ZVBvcnR9JHtDT05URVhUX0FQSV9QQVRIfWBcblxuICAgICAgaWYgKCFjb25maWcubGF6eSkge1xuICAgICAgICBhd2FpdCBzdGFydFNlcnZpY2VzKFt2aXRlT3JpZ2luXSwgY29udGV4dEFwaVVybClcbiAgICAgIH1cblxuICAgICAgc2VydmVyLm1pZGRsZXdhcmVzLnVzZShXSURHRVRfU0NSSVBUX1BBVEgsIGFzeW5jIChfcmVxLCByZXMpID0+IHtcbiAgICAgICAgaWYgKGNvbmZpZy5sYXp5ICYmICFpc1N0YXJ0ZWQpIHtcbiAgICAgICAgICBhd2FpdCBzdGFydFNlcnZpY2VzKFt2aXRlT3JpZ2luXSwgY29udGV4dEFwaVVybClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpZGdldFBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnY2xpZW50LmpzJylcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMod2lkZ2V0UGF0aCkpIHtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vamF2YXNjcmlwdCcpXG4gICAgICAgICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgICAgICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0od2lkZ2V0UGF0aCkucGlwZShyZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzLndyaXRlSGVhZCg0MDQpXG4gICAgICAgICAgcmVzLmVuZCgnV2lkZ2V0IHNjcmlwdCBub3QgZm91bmQnKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXJ2ZXIubWlkZGxld2FyZXMudXNlKENPTlRFWFRfQVBJX1BBVEgsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICAgICAgICBpZiAoY29uZmlnLmxhenkgJiYgIWlzU3RhcnRlZCkge1xuICAgICAgICAgIGF3YWl0IHN0YXJ0U2VydmljZXMoW3ZpdGVPcmlnaW5dLCBjb250ZXh0QXBpVXJsKVxuICAgICAgICB9XG4gICAgICAgIGhhbmRsZUNvbnRleHRSZXF1ZXN0KHJlcSBhcyBodHRwLkluY29taW5nTWVzc2FnZSwgcmVzKVxuICAgICAgfSlcblxuICAgICAgc2VydmVyLm1pZGRsZXdhcmVzLnVzZShTVEFSVF9BUElfUEFUSCwgYXN5bmMgKF9yZXEsIHJlcykgPT4ge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcblxuICAgICAgICBpZiAoY29uZmlnLmxhenkgJiYgIWlzU3RhcnRlZCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzdGFydFNlcnZpY2VzKFt2aXRlT3JpZ2luXSwgY29udGV4dEFwaVVybClcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUsIHNlc3Npb25VcmwgfSkpXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCg1MDApXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IFN0cmluZyhlKSB9KSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUsIHNlc3Npb25VcmwgfSkpXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHNlcnZlci5taWRkbGV3YXJlcy51c2UoU0VTU0lPTlNfQVBJX1BBVEgsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICAgICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcycsICdHRVQsIFBPU1QsIERFTEVURSwgT1BUSU9OUycpXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCAnQ29udGVudC1UeXBlJylcblxuICAgICAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ09QVElPTlMnKSB7XG4gICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgcmVzLmVuZCgpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLmxhenkgJiYgIWlzU3RhcnRlZCkge1xuICAgICAgICAgIGF3YWl0IHN0YXJ0U2VydmljZXMoW3ZpdGVPcmlnaW5dLCBjb250ZXh0QXBpVXJsKVxuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlc3Npb25zID0gYXdhaXQgZ2V0U2Vzc2lvbnMoKVxuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHNlc3Npb25zKSlcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcS5tZXRob2QgPT09ICdQT1NUJykge1xuICAgICAgICAgICAgY29uc3QgbmV3U2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZVNlc3Npb24oKVxuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KG5ld1Nlc3Npb24pKVxuICAgICAgICAgIH0gZWxzZSBpZiAocmVxLm1ldGhvZCA9PT0gJ0RFTEVURScpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybCB8fCAnJywgYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9YClcbiAgICAgICAgICAgIGNvbnN0IHNlc3Npb25JZCA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KCdpZCcpXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDAwKVxuICAgICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6ICdTZXNzaW9uIElEIGlzIHJlcXVpcmVkJyB9KSlcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGF3YWl0IGRlbGV0ZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgc3VjY2VzczogdHJ1ZSB9KSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCg0MDUpXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6ICdNZXRob2Qgbm90IGFsbG93ZWQnIH0pKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJlcy53cml0ZUhlYWQoNTAwKVxuICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogU3RyaW5nKGUpIH0pKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXJ2ZXIuaHR0cFNlcnZlcj8ub24oJ2Nsb3NlJywgc3RvcFNlcnZpY2VzKVxuICAgICAgXG4gICAgICBjb25zdCBjbGVhbnVwID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBzdG9wU2VydmljZXMoKVxuICAgICAgICBwcm9jZXNzLmV4aXQoMClcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcHJvY2Vzcy5vbignU0lHSU5UJywgY2xlYW51cClcbiAgICAgIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCBjbGVhbnVwKVxuICAgICAgcHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgICAgICAgd2ViUHJvY2Vzcz8ua2lsbCgnU0lHS0lMTCcpXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICB0cmFuc2Zvcm1JbmRleEh0bWwoaHRtbCkge1xuICAgICAgY29uc3Qgd2lkZ2V0ID0gaW5qZWN0V2lkZ2V0KHtcbiAgICAgICAgd2ViVXJsOiBgaHR0cDovLyR7Y29uZmlnLmhvc3RuYW1lfToke2FjdHVhbFdlYlBvcnR9YCxcbiAgICAgICAgc2VydmVyVXJsOiBgaHR0cDovLyR7Y29uZmlnLmhvc3RuYW1lfToke2FjdHVhbFdlYlBvcnR9YCxcbiAgICAgICAgcG9zaXRpb246IGNvbmZpZy5wb3NpdGlvbixcbiAgICAgICAgdGhlbWU6IGNvbmZpZy50aGVtZSxcbiAgICAgICAgb3BlbjogY29uZmlnLm9wZW4sXG4gICAgICAgIGF1dG9SZWxvYWQ6IGNvbmZpZy5hdXRvUmVsb2FkLFxuICAgICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICAgIHNlc3Npb25Vcmw6IHNlc3Npb25VcmwgfHwgdW5kZWZpbmVkLFxuICAgICAgICBsYXp5OiBjb25maWcubGF6eSxcbiAgICAgICAgaG90a2V5OiBjb25maWcuaG90a2V5LFxuICAgICAgfSlcbiAgICAgIHJldHVybiBodG1sLnJlcGxhY2UoJzwvYm9keT4nLCBgJHt3aWRnZXR9PC9ib2R5PmApXG4gICAgfSxcbiAgfVxufVxuIl19
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=
@@ -1,4 +1,4 @@
1
- import { WidgetOptions } from './types';
1
+ import { WidgetOptions } from './types.js';
2
2
  /**
3
3
  * 生成挂件注入脚本标签
4
4
  * @param options - 挂件配置选项
package/dist/injector.js CHANGED
@@ -1,4 +1,4 @@
1
- import { WIDGET_SCRIPT_PATH, CONFIG_DATA_ATTR } from './constants';
1
+ import { WIDGET_SCRIPT_PATH, CONFIG_DATA_ATTR } from './constants.js';
2
2
  /**
3
3
  * 生成挂件注入脚本标签
4
4
  * @param options - 挂件配置选项
@@ -21,4 +21,4 @@ export function injectWidget(options) {
21
21
  const configBase64 = Buffer.from(JSON.stringify(options)).toString('base64');
22
22
  return `<script src="${WIDGET_SCRIPT_PATH}" ${CONFIG_DATA_ATTR}="${configBase64}"></script>`;
23
23
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5qZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRWxFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBc0I7SUFDakQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVFLE9BQU8sZ0JBQWdCLGtCQUFrQixLQUFLLGdCQUFnQixLQUFLLFlBQVksYUFBYSxDQUFBO0FBQzlGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXaWRnZXRPcHRpb25zIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IFdJREdFVF9TQ1JJUFRfUEFUSCwgQ09ORklHX0RBVEFfQVRUUiB9IGZyb20gJy4vY29uc3RhbnRzJ1xuXG4vKipcbiAqIOeUn+aIkOaMguS7tuazqOWFpeiEmuacrOagh+etvlxuICogQHBhcmFtIG9wdGlvbnMgLSDmjILku7bphY3nva7pgInpoblcbiAqIEByZXR1cm5zIEhUTUwg6ISa5pys5qCH562+5a2X56ym5LiyXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHdpZGdldCA9IGluamVjdFdpZGdldCh7XG4gKiAgIHdlYlVybDogJ2h0dHA6Ly8xMjcuMC4wLjE6NDA5NycsXG4gKiAgIHNlcnZlclVybDogJ2h0dHA6Ly8xMjcuMC4wLjE6NDA5NycsXG4gKiAgIHBvc2l0aW9uOiAnYm90dG9tLXJpZ2h0JyxcbiAqICAgdGhlbWU6ICdhdXRvJyxcbiAqICAgb3BlbjogZmFsc2UsXG4gKiAgIGF1dG9SZWxvYWQ6IHRydWUsXG4gKiAgIGN3ZDogcHJvY2Vzcy5jd2QoKVxuICogfSlcbiAqIC8vIOi/lOWbnjogJzxzY3JpcHQgc3JjPVwiL19fb3BlbmNvZGVfd2lkZ2V0X18uanNcIiBkYXRhLW9wZW5jb2RlLWNvbmZpZz1cIi4uLlwiPjwvc2NyaXB0PidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0V2lkZ2V0KG9wdGlvbnM6IFdpZGdldE9wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCBjb25maWdCYXNlNjQgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShvcHRpb25zKSkudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gIHJldHVybiBgPHNjcmlwdCBzcmM9XCIke1dJREdFVF9TQ1JJUFRfUEFUSH1cIiAke0NPTkZJR19EQVRBX0FUVFJ9PVwiJHtjb25maWdCYXNlNjR9XCI+PC9zY3JpcHQ+YFxufVxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5qZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFzQjtJQUNqRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDNUUsT0FBTyxnQkFBZ0Isa0JBQWtCLEtBQUssZ0JBQWdCLEtBQUssWUFBWSxhQUFhLENBQUE7QUFDOUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdpZGdldE9wdGlvbnMgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHsgV0lER0VUX1NDUklQVF9QQVRILCBDT05GSUdfREFUQV9BVFRSIH0gZnJvbSAnLi9jb25zdGFudHMuanMnXG5cbi8qKlxuICog55Sf5oiQ5oyC5Lu25rOo5YWl6ISa5pys5qCH562+XG4gKiBAcGFyYW0gb3B0aW9ucyAtIOaMguS7tumFjee9rumAiemhuVxuICogQHJldHVybnMgSFRNTCDohJrmnKzmoIfnrb7lrZfnrKbkuLJcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3Qgd2lkZ2V0ID0gaW5qZWN0V2lkZ2V0KHtcbiAqICAgd2ViVXJsOiAnaHR0cDovLzEyNy4wLjAuMTo0MDk3JyxcbiAqICAgc2VydmVyVXJsOiAnaHR0cDovLzEyNy4wLjAuMTo0MDk3JyxcbiAqICAgcG9zaXRpb246ICdib3R0b20tcmlnaHQnLFxuICogICB0aGVtZTogJ2F1dG8nLFxuICogICBvcGVuOiBmYWxzZSxcbiAqICAgYXV0b1JlbG9hZDogdHJ1ZSxcbiAqICAgY3dkOiBwcm9jZXNzLmN3ZCgpXG4gKiB9KVxuICogLy8g6L+U5ZueOiAnPHNjcmlwdCBzcmM9XCIvX19vcGVuY29kZV93aWRnZXRfXy5qc1wiIGRhdGEtb3BlbmNvZGUtY29uZmlnPVwiLi4uXCI+PC9zY3JpcHQ+J1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RXaWRnZXQob3B0aW9uczogV2lkZ2V0T3B0aW9ucyk6IHN0cmluZyB7XG4gIGNvbnN0IGNvbmZpZ0Jhc2U2NCA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKS50b1N0cmluZygnYmFzZTY0JylcbiAgcmV0dXJuIGA8c2NyaXB0IHNyYz1cIiR7V0lER0VUX1NDUklQVF9QQVRIfVwiICR7Q09ORklHX0RBVEFfQVRUUn09XCIke2NvbmZpZ0Jhc2U2NH1cIj48L3NjcmlwdD5gXG59XG4iXX0=
package/dist/utils.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import http from 'http';
2
2
  import { spawn } from 'child_process';
3
3
  import net from 'net';
4
- import { DEFAULT_HOSTNAME, SERVER_CHECK_INTERVAL, HEALTH_CHECK_TIMEOUT, MAX_PORT_TRIES, } from './constants';
4
+ import { DEFAULT_HOSTNAME, SERVER_CHECK_INTERVAL, HEALTH_CHECK_TIMEOUT, MAX_PORT_TRIES, } from './constants.js';
5
5
  /**
6
6
  * 等待服务器就绪
7
7
  * @param url - 服务器 URL
@@ -153,4 +153,4 @@ export async function checkOpenCodeProcess(port) {
153
153
  req.end();
154
154
  });
155
155
  }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFBO0FBQ3JCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUE7QUFFcEI7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXLEVBQUUsT0FBTyxHQUFHLEtBQUs7SUFDeEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7UUFFNUIsTUFBTSxLQUFLLEdBQUcsR0FBUyxFQUFFO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUMzQyxPQUFPLEVBQUUsQ0FBQTtnQkFDWCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sYUFBYSxFQUFFLENBQUE7Z0JBQ2pCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUVGLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQ2hDLENBQUMsQ0FBQTtRQUVELE1BQU0sYUFBYSxHQUFHLEdBQVMsRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUM7Z0JBQ3JDLFVBQVUsQ0FBQyxLQUFLLEVBQUUs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Q0FBQTtRQUNGLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUNYLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgbmV0IGZyb20gJ25ldCdcbmltcG9ydCB7XG4gIERFRkFVTFRfSE9TVE5BTUUsXG4gIFNFUlZFUl9DSEVDS19JTlRFUlZBTCxcbiAgSEVBTFRIX0NIRUNLX1RJTUVPVVQsXG4gIE1BWF9QT1JUX1RSSUVTLFxufSBmcm9tICcuL2NvbnN0YW50cydcblxuLyoqXG4gKiDnrYnlvoXmnI3liqHlmajlsLHnu6pcbiAqIEBwYXJhbSB1cmwgLSDmnI3liqHlmaggVVJMXG4gKiBAcGFyYW0gdGltZW91dCAtIOi2heaXtuaXtumXtO+8iOavq+enku+8ie+8jOm7mOiupCAxMDAwMFxuICogQHJldHVybnMgUHJvbWlzZe+8jOacjeWKoeWZqOWwsee7quaXtiByZXNvbHZlXG4gKiBAdGhyb3dzIOi2heaXtuWQjuaKm+WHuumUmeivr1xuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvclNlcnZlcih1cmw6IHN0cmluZywgdGltZW91dCA9IDEwMDAwKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKVxuXG4gICAgY29uc3QgY2hlY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCByZXEgPSBodHRwLmdldCh1cmwsIChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICYmIHJlcy5zdGF0dXNDb2RlIDwgNTAwKSB7XG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0cnlPclJlamVjdCgpXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHJlcS5vbignZXJyb3InLCByZXRyeU9yUmVqZWN0KVxuICAgIH1cblxuICAgIGNvbnN0IHJldHJ5T3JSZWplY3QgPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA8IHRpbWVvdXQpIHtcbiAgICAgICAgc2V0VGltZW91dChjaGVjaywgU0VSVkVSX0NIRUNLX0lOVEVSVkFMKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgU2VydmVyIG5vdCByZWFkeSBhZnRlciAke3RpbWVvdXR9bXNgKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVjaygpXG4gIH0pXG59XG5cbi8qKlxuICog5qOA5p+lIE9wZW5Db2RlIOaYr+WQpuW3suWuieijhVxuICogQHJldHVybnMg5piv5ZCm5bey5a6J6KOFXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja09wZW5Db2RlSW5zdGFsbGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBwcm9jID0gc3Bhd24oJ29wZW5jb2RlJywgWyctLXZlcnNpb24nXSwgeyBzdGRpbzogJ2lnbm9yZScgfSlcbiAgICBwcm9jLm9uKCdjbG9zZScsIChjb2RlKSA9PiByZXNvbHZlKGNvZGUgPT09IDApKVxuICAgIHByb2Mub24oJ2Vycm9yJywgKCkgPT4gcmVzb2x2ZShmYWxzZSkpXG4gIH0pXG59XG5cbi8qKlxuICog5qOA5p+l56uv5Y+j5piv5ZCm5Y+v55SoXG4gKiBAcGFyYW0gcG9ydCAtIOerr+WPo+WPt1xuICogQHBhcmFtIGhvc3RuYW1lIC0g5Li75py65ZCN77yM6buY6K6kICcxMjcuMC4wLjEnXG4gKiBAcmV0dXJucyDnq6/lj6PmmK/lkKblj6/nlKhcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzUG9ydEF2YWlsYWJsZShwb3J0OiBudW1iZXIsIGhvc3RuYW1lID0gREVGQVVMVF9IT1NUTkFNRSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBzZXJ2ZXIgPSBuZXQuY3JlYXRlU2VydmVyKClcbiAgICBzZXJ2ZXIub25jZSgnZXJyb3InLCAoKSA9PiByZXNvbHZlKGZhbHNlKSlcbiAgICBzZXJ2ZXIub25jZSgnbGlzdGVuaW5nJywgKCkgPT4ge1xuICAgICAgc2VydmVyLmNsb3NlKClcbiAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICB9KVxuICAgIHNlcnZlci5saXN0ZW4ocG9ydCwgaG9zdG5hbWUpXG4gIH0pXG59XG5cbi8qKlxuICog5p+l5om+5Y+v55So56uv5Y+jXG4gKiBAcGFyYW0gc3RhcnRQb3J0IC0g6LW35aeL56uv5Y+jXG4gKiBAcGFyYW0gaG9zdG5hbWUgLSDkuLvmnLrlkI3vvIzpu5jorqQgJzEyNy4wLjAuMSdcbiAqIEBwYXJhbSBtYXhUcmllcyAtIOacgOWkp+WwneivleasoeaVsO+8jOm7mOiupCAxMFxuICogQHJldHVybnMg5Y+v55So55qE56uv5Y+j5Y+3XG4gKiBAdGhyb3dzIOaJvuS4jeWIsOWPr+eUqOerr+WPo+aXtuaKm+WHuumUmeivr1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZEF2YWlsYWJsZVBvcnQoXG4gIHN0YXJ0UG9ydDogbnVtYmVyLFxuICBob3N0bmFtZSA9IERFRkFVTFRfSE9TVE5BTUUsXG4gIG1heFRyaWVzID0gTUFYX1BPUlRfVFJJRVNcbik6IFByb21pc2U8bnVtYmVyPiB7XG4gIGZvciAobGV0IHBvcnQgPSBzdGFydFBvcnQ7IHBvcnQgPCBzdGFydFBvcnQgKyBtYXhUcmllczsgcG9ydCsrKSB7XG4gICAgaWYgKGF3YWl0IGlzUG9ydEF2YWlsYWJsZShwb3J0LCBob3N0bmFtZSkpIHtcbiAgICAgIHJldHVybiBwb3J0XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgTm8gYXZhaWxhYmxlIHBvcnQgZm91bmQgYWZ0ZXIgJHttYXhUcmllc30gdHJpZXMgc3RhcnRpbmcgZnJvbSAke3N0YXJ0UG9ydH1gKVxufVxuXG4vKipcbiAqIOe7iOatouWNoOeUqOaMh+Wumuerr+WPo+eahOi/m+eoi1xuICogQHBhcmFtIHBvcnQgLSDnq6/lj6Plj7dcbiAqIEBwYXJhbSBob3N0bmFtZSAtIOS4u+acuuWQje+8jOm7mOiupCAnMTI3LjAuMC4xJ1xuICogQHJldHVybnMg5piv5ZCm5oiQ5Yqf57uI5q2i6L+b56iLXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBraWxsUHJvY2Vzc09uUG9ydChwb3J0OiBudW1iZXIsIGhvc3RuYW1lID0gREVGQVVMVF9IT1NUTkFNRSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAga2lsbFByb2Nlc3NPbldpbmRvd3MocG9ydCwgcmVzb2x2ZSlcbiAgICB9IGVsc2Uge1xuICAgICAga2lsbFByb2Nlc3NPblVuaXgocG9ydCwgcmVzb2x2ZSlcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICog5ZyoIFdpbmRvd3Mg5LiK57uI5q2i5Y2g55So56uv5Y+j55qE6L+b56iLXG4gKi9cbmZ1bmN0aW9uIGtpbGxQcm9jZXNzT25XaW5kb3dzKHBvcnQ6IG51bWJlciwgcmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkKTogdm9pZCB7XG4gIGNvbnN0IHByb2MgPSBzcGF3bignY21kJywgWycvYycsIGBuZXRzdGF0IC1hbm8gfCBmaW5kc3RyIDoke3BvcnR9YF0sIHsgc3RkaW86ICdwaXBlJyB9KVxuICBsZXQgb3V0cHV0ID0gJydcblxuICBwcm9jLnN0ZG91dD8ub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgIG91dHB1dCArPSBkYXRhLnRvU3RyaW5nKClcbiAgfSlcblxuICBwcm9jLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICBjb25zdCBtYXRjaCA9IG91dHB1dC5tYXRjaCgvTElTVEVOSU5HXFxzKyhcXGQrKS8pXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBzcGF3bigndGFza2tpbGwnLCBbJy9GJywgJy9QSUQnLCBtYXRjaFsxXV0sIHsgc3RkaW86ICdpZ25vcmUnIH0pXG4gICAgICAgIC5vbignY2xvc2UnLCAoY29kZSkgPT4gcmVzb2x2ZShjb2RlID09PSAwKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShmYWxzZSlcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICog5ZyoIFVuaXgg57O757uf5LiK57uI5q2i5Y2g55So56uv5Y+j55qE6L+b56iLXG4gKi9cbmZ1bmN0aW9uIGtpbGxQcm9jZXNzT25Vbml4KHBvcnQ6IG51bWJlciwgcmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkKTogdm9pZCB7XG4gIGNvbnN0IHByb2MgPSBzcGF3bignbHNvZicsIFsnLXRpJywgYHRjcDoke3BvcnR9YCwgJy1zVENQOkxJU1RFTiddLCB7IHN0ZGlvOiAncGlwZScgfSlcbiAgbGV0IG91dHB1dCA9ICcnXG5cbiAgcHJvYy5zdGRvdXQ/Lm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICBvdXRwdXQgKz0gZGF0YS50b1N0cmluZygpXG4gIH0pXG5cbiAgcHJvYy5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgcGlkcyA9IG91dHB1dC50cmltKCkuc3BsaXQoJ1xcbicpLmZpbHRlcihCb29sZWFuKVxuICAgIGlmIChwaWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGtpbGxQcm9jID0gc3Bhd24oJ2tpbGwnLCBbJy05JywgLi4ucGlkc10sIHsgc3RkaW86ICdpZ25vcmUnIH0pXG4gICAgICBraWxsUHJvYy5vbignY2xvc2UnLCAoY29kZSkgPT4gcmVzb2x2ZShjb2RlID09PSAwKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShmYWxzZSlcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICog5qOA5p+lIE9wZW5Db2RlIOi/m+eoi+aYr+WQpuWcqOi/kOihjFxuICogQHBhcmFtIHBvcnQgLSDmnI3liqHnq6/lj6NcbiAqIEByZXR1cm5zIOi/m+eoi+aYr+WQpuWcqOi/kOihjFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tPcGVuQ29kZVByb2Nlc3MocG9ydDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHJlcSA9IGh0dHAuZ2V0KHtcbiAgICAgIGhvc3RuYW1lOiBERUZBVUxUX0hPU1ROQU1FLFxuICAgICAgcG9ydCxcbiAgICAgIHBhdGg6ICcvaGVhbHRoJyxcbiAgICAgIHRpbWVvdXQ6IEhFQUxUSF9DSEVDS19USU1FT1VULFxuICAgIH0sIChyZXMpID0+IHtcbiAgICAgIHJlc29sdmUocmVzLnN0YXR1c0NvZGUgPT09IDIwMClcbiAgICB9KVxuICAgIHJlcS5vbignZXJyb3InLCAoKSA9PiByZXNvbHZlKGZhbHNlKSlcbiAgICByZXEuZW5kKClcbiAgfSlcbn1cbiJdfQ==
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFBO0FBQ3JCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV2Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUFPLEdBQUcsS0FBSztJQUN4RCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUU1QixNQUFNLEtBQUssR0FBRyxHQUFTLEVBQUU7WUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQzNDLE9BQU8sRUFBRSxDQUFBO2dCQUNYLENBQUM7cUJBQU0sQ0FBQztvQkFDTixhQUFhLEVBQUUsQ0FBQTtnQkFDakIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1lBRUYsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFDaEMsQ0FBQyxDQUFBO1FBRUQsTUFBTSxhQUFhLEdBQUcsR0FBUyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQztnQkFDckMsVUFBVSxDQUFDLEtBQUssRUFB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QyxDQUFBO1FBQ0YsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDckMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ1gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCdcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2VzcydcbmltcG9ydCBuZXQgZnJvbSAnbmV0J1xuaW1wb3J0IHtcbiAgREVGQVVMVF9IT1NUTkFNRSxcbiAgU0VSVkVSX0NIRUNLX0lOVEVSVkFMLFxuICBIRUFMVEhfQ0hFQ0tfVElNRU9VVCxcbiAgTUFYX1BPUlRfVFJJRVMsXG59IGZyb20gJy4vY29uc3RhbnRzLmpzJ1xuXG4vKipcbiAqIOetieW+heacjeWKoeWZqOWwsee7qlxuICogQHBhcmFtIHVybCAtIOacjeWKoeWZqCBVUkxcbiAqIEBwYXJhbSB0aW1lb3V0IC0g6LaF5pe25pe26Ze077yI5q+r56eS77yJ77yM6buY6K6kIDEwMDAwXG4gKiBAcmV0dXJucyBQcm9taXNl77yM5pyN5Yqh5Zmo5bCx57uq5pe2IHJlc29sdmVcbiAqIEB0aHJvd3Mg6LaF5pe25ZCO5oqb5Ye66ZSZ6K+vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yU2VydmVyKHVybDogc3RyaW5nLCB0aW1lb3V0ID0gMTAwMDApOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpXG5cbiAgICBjb25zdCBjaGVjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHJlcSA9IGh0dHAuZ2V0KHVybCwgKHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgJiYgcmVzLnN0YXR1c0NvZGUgPCA1MDApIHtcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXRyeU9yUmVqZWN0KClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgcmVxLm9uKCdlcnJvcicsIHJldHJ5T3JSZWplY3QpXG4gICAgfVxuXG4gICAgY29uc3QgcmV0cnlPclJlamVjdCA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGlmIChEYXRlLm5vdygpIC0gc3RhcnRUaW1lIDwgdGltZW91dCkge1xuICAgICAgICBzZXRUaW1lb3V0KGNoZWNrLCBTRVJWRVJfQ0hFQ0tfSU5URVJWQUwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBTZXJ2ZXIgbm90IHJlYWR5IGFmdGVyICR7dGltZW91dH1tc2ApKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrKClcbiAgfSlcbn1cblxuLyoqXG4gKiDmo4Dmn6UgT3BlbkNvZGUg5piv5ZCm5bey5a6J6KOFXG4gKiBAcmV0dXJucyDmmK/lkKblt7Llronoo4VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrT3BlbkNvZGVJbnN0YWxsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHByb2MgPSBzcGF3bignb3BlbmNvZGUnLCBbJy0tdmVyc2lvbiddLCB7IHN0ZGlvOiAnaWdub3JlJyB9KVxuICAgIHByb2Mub24oJ2Nsb3NlJywgKGNvZGUpID0+IHJlc29sdmUoY29kZSA9PT0gMCkpXG4gICAgcHJvYy5vbignZXJyb3InLCAoKSA9PiByZXNvbHZlKGZhbHNlKSlcbiAgfSlcbn1cblxuLyoqXG4gKiDmo4Dmn6Xnq6/lj6PmmK/lkKblj6/nlKhcbiAqIEBwYXJhbSBwb3J0IC0g56uv5Y+j5Y+3XG4gKiBAcGFyYW0gaG9zdG5hbWUgLSDkuLvmnLrlkI3vvIzpu5jorqQgJzEyNy4wLjAuMSdcbiAqIEByZXR1cm5zIOerr+WPo+aYr+WQpuWPr+eUqFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNQb3J0QXZhaWxhYmxlKHBvcnQ6IG51bWJlciwgaG9zdG5hbWUgPSBERUZBVUxUX0hPU1ROQU1FKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHNlcnZlciA9IG5ldC5jcmVhdGVTZXJ2ZXIoKVxuICAgIHNlcnZlci5vbmNlKCdlcnJvcicsICgpID0+IHJlc29sdmUoZmFsc2UpKVxuICAgIHNlcnZlci5vbmNlKCdsaXN0ZW5pbmcnLCAoKSA9PiB7XG4gICAgICBzZXJ2ZXIuY2xvc2UoKVxuICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgIH0pXG4gICAgc2VydmVyLmxpc3Rlbihwb3J0LCBob3N0bmFtZSlcbiAgfSlcbn1cblxuLyoqXG4gKiDmn6Xmib7lj6/nlKjnq6/lj6NcbiAqIEBwYXJhbSBzdGFydFBvcnQgLSDotbflp4vnq6/lj6NcbiAqIEBwYXJhbSBob3N0bmFtZSAtIOS4u+acuuWQje+8jOm7mOiupCAnMTI3LjAuMC4xJ1xuICogQHBhcmFtIG1heFRyaWVzIC0g5pyA5aSn5bCd6K+V5qyh5pWw77yM6buY6K6kIDEwXG4gKiBAcmV0dXJucyDlj6/nlKjnmoTnq6/lj6Plj7dcbiAqIEB0aHJvd3Mg5om+5LiN5Yiw5Y+v55So56uv5Y+j5pe25oqb5Ye66ZSZ6K+vXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kQXZhaWxhYmxlUG9ydChcbiAgc3RhcnRQb3J0OiBudW1iZXIsXG4gIGhvc3RuYW1lID0gREVGQVVMVF9IT1NUTkFNRSxcbiAgbWF4VHJpZXMgPSBNQVhfUE9SVF9UUklFU1xuKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgZm9yIChsZXQgcG9ydCA9IHN0YXJ0UG9ydDsgcG9ydCA8IHN0YXJ0UG9ydCArIG1heFRyaWVzOyBwb3J0KyspIHtcbiAgICBpZiAoYXdhaXQgaXNQb3J0QXZhaWxhYmxlKHBvcnQsIGhvc3RuYW1lKSkge1xuICAgICAgcmV0dXJuIHBvcnRcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBObyBhdmFpbGFibGUgcG9ydCBmb3VuZCBhZnRlciAke21heFRyaWVzfSB0cmllcyBzdGFydGluZyBmcm9tICR7c3RhcnRQb3J0fWApXG59XG5cbi8qKlxuICog57uI5q2i5Y2g55So5oyH5a6a56uv5Y+j55qE6L+b56iLXG4gKiBAcGFyYW0gcG9ydCAtIOerr+WPo+WPt1xuICogQHBhcmFtIGhvc3RuYW1lIC0g5Li75py65ZCN77yM6buY6K6kICcxMjcuMC4wLjEnXG4gKiBAcmV0dXJucyDmmK/lkKbmiJDlip/nu4jmraLov5vnqItcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGtpbGxQcm9jZXNzT25Qb3J0KHBvcnQ6IG51bWJlciwgaG9zdG5hbWUgPSBERUZBVUxUX0hPU1ROQU1FKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgICBraWxsUHJvY2Vzc09uV2luZG93cyhwb3J0LCByZXNvbHZlKVxuICAgIH0gZWxzZSB7XG4gICAgICBraWxsUHJvY2Vzc09uVW5peChwb3J0LCByZXNvbHZlKVxuICAgIH1cbiAgfSlcbn1cblxuLyoqXG4gKiDlnKggV2luZG93cyDkuIrnu4jmraLljaDnlKjnq6/lj6PnmoTov5vnqItcbiAqL1xuZnVuY3Rpb24ga2lsbFByb2Nlc3NPbldpbmRvd3MocG9ydDogbnVtYmVyLCByZXNvbHZlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQpOiB2b2lkIHtcbiAgY29uc3QgcHJvYyA9IHNwYXduKCdjbWQnLCBbJy9jJywgYG5ldHN0YXQgLWFubyB8IGZpbmRzdHIgOiR7cG9ydH1gXSwgeyBzdGRpbzogJ3BpcGUnIH0pXG4gIGxldCBvdXRwdXQgPSAnJ1xuXG4gIHByb2Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgb3V0cHV0ICs9IGRhdGEudG9TdHJpbmcoKVxuICB9KVxuXG4gIHByb2Mub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGNvbnN0IG1hdGNoID0gb3V0cHV0Lm1hdGNoKC9MSVNURU5JTkdcXHMrKFxcZCspLylcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHNwYXduKCd0YXNra2lsbCcsIFsnL0YnLCAnL1BJRCcsIG1hdGNoWzFdXSwgeyBzdGRpbzogJ2lnbm9yZScgfSlcbiAgICAgICAgLm9uKCdjbG9zZScsIChjb2RlKSA9PiByZXNvbHZlKGNvZGUgPT09IDApKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKGZhbHNlKVxuICAgIH1cbiAgfSlcbn1cblxuLyoqXG4gKiDlnKggVW5peCDns7vnu5/kuIrnu4jmraLljaDnlKjnq6/lj6PnmoTov5vnqItcbiAqL1xuZnVuY3Rpb24ga2lsbFByb2Nlc3NPblVuaXgocG9ydDogbnVtYmVyLCByZXNvbHZlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQpOiB2b2lkIHtcbiAgY29uc3QgcHJvYyA9IHNwYXduKCdsc29mJywgWyctdGknLCBgdGNwOiR7cG9ydH1gLCAnLXNUQ1A6TElTVEVOJ10sIHsgc3RkaW86ICdwaXBlJyB9KVxuICBsZXQgb3V0cHV0ID0gJydcblxuICBwcm9jLnN0ZG91dD8ub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgIG91dHB1dCArPSBkYXRhLnRvU3RyaW5nKClcbiAgfSlcblxuICBwcm9jLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICBjb25zdCBwaWRzID0gb3V0cHV0LnRyaW0oKS5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pXG4gICAgaWYgKHBpZHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qga2lsbFByb2MgPSBzcGF3bigna2lsbCcsIFsnLTknLCAuLi5waWRzXSwgeyBzdGRpbzogJ2lnbm9yZScgfSlcbiAgICAgIGtpbGxQcm9jLm9uKCdjbG9zZScsIChjb2RlKSA9PiByZXNvbHZlKGNvZGUgPT09IDApKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKGZhbHNlKVxuICAgIH1cbiAgfSlcbn1cblxuLyoqXG4gKiDmo4Dmn6UgT3BlbkNvZGUg6L+b56iL5piv5ZCm5Zyo6L+Q6KGMXG4gKiBAcGFyYW0gcG9ydCAtIOacjeWKoeerr+WPo1xuICogQHJldHVybnMg6L+b56iL5piv5ZCm5Zyo6L+Q6KGMXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja09wZW5Db2RlUHJvY2Vzcyhwb3J0OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgcmVxID0gaHR0cC5nZXQoe1xuICAgICAgaG9zdG5hbWU6IERFRkFVTFRfSE9TVE5BTUUsXG4gICAgICBwb3J0LFxuICAgICAgcGF0aDogJy9oZWFsdGgnLFxuICAgICAgdGltZW91dDogSEVBTFRIX0NIRUNLX1RJTUVPVVQsXG4gICAgfSwgKHJlcykgPT4ge1xuICAgICAgcmVzb2x2ZShyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKVxuICAgIH0pXG4gICAgcmVxLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUoZmFsc2UpKVxuICAgIHJlcS5lbmQoKVxuICB9KVxufVxuIl19
package/dist/web.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ChildProcess } from 'child_process';
2
- import { WebOptions } from './types';
2
+ import { WebOptions } from './types.js';
3
3
  /**
4
4
  * 启动 OpenCode Web 服务
5
5
  * @param options - Web 服务启动选项
package/dist/web.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { spawn } from 'child_process';
2
- import { waitForServer } from './utils';
3
- import { SERVER_START_TIMEOUT, LOG_PREFIX, } from './constants';
2
+ import { waitForServer } from './utils.js';
3
+ import { SERVER_START_TIMEOUT, LOG_PREFIX, } from './constants.js';
4
4
  import path from 'path';
5
5
  import fs from 'fs';
6
6
  /**
@@ -92,4 +92,4 @@ function setupProcessHandlers(proc, port, hostname) {
92
92
  console.error(`\x1b[31m\x1b[1m${LOG_PREFIX}\x1b[0m ❌ Failed to start OpenCode server:`, err.message);
93
93
  });
94
94
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dlYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLGVBQWUsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRXZDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsVUFBVSxHQUNYLE1BQU0sYUFBYSxDQUFBO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUN2QixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFbkI7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLE9BQW1CO0lBQ3hELE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQTtJQUU5RSxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtJQUNwRSxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFFM0UsTUFBTSxJQUFJLEdBQUc7UUFDWCxPQUFPO1FBQ1AsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDdEIsWUFBWSxFQUFFLFFBQVE7S0FDdkIsQ0FBQTtJQUVELElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRTtRQUNuQyxHQUFHO1FBQ0gsS0FBSyxFQUFFLE1BQU07UUFDYixHQUFHO0tBQ0osQ0FBQyxDQUFBO0lBRUYsb0JBQW9CLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUUxQyxNQUFNLGFBQWEsQ0FBQyxVQUFVLFFBQVEsSUFBSSxJQUFJLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBRXZFLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLFVBQVUsa0RBQWtELENBQUMsQ0FBQTtJQUU3RixPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxHQUFXO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFFckUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM3QixFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQTtBQUNqQixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsZUFBZSxDQUFDLFFBQWdCLEVBQUUsU0FBa0IsRUFBRSxhQUFzQixFQUFFLFVBQW1CO0lBQ3hHLE1BQU0sR0FBRyxHQUEyQjtRQUNsQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUNyQztRQUMzQixjQUFjLEVBQUUsUUFBUTtLQUN6QixDQUFBO0lBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUE7SUFDckMsQ0FBQztJQUVELElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsR0FBRyxDQUFDLHdCQUF3QixHQUFHLGFBQWEsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUE7SUFDbkMsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsb0JBQW9CLENBQUMsSUFBa0IsRUFBRSxJQUFZLEVBQUUsUUFBZ0I7SUFDOUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUM3QixDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7SUFDN0IsQ0FBQyxDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLFVBQVUsNENBQTRDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3RHLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgd2FpdEZvclNlcnZlciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBXZWJPcHRpb25zIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gIFNFUlZFUl9TVEFSVF9USU1FT1VULFxuICBMT0dfUFJFRklYLFxufSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgZnMgZnJvbSAnZnMnXG5cbi8qKlxuICog5ZCv5YqoIE9wZW5Db2RlIFdlYiDmnI3liqFcbiAqIEBwYXJhbSBvcHRpb25zIC0gV2ViIOacjeWKoeWQr+WKqOmAiemhuVxuICogQHJldHVybnMg5a2Q6L+b56iL5a6e5L6LXG4gKiBAdGhyb3dzIOacjeWKoeWQr+WKqOi2heaXtuaXtuaKm+WHuumUmeivr1xuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCBwcm9jID0gYXdhaXQgc3RhcnRPcGVuQ29kZVdlYih7XG4gKiAgIHBvcnQ6IDQwOTcsXG4gKiAgIGhvc3RuYW1lOiAnMTI3LjAuMC4xJyxcbiAqICAgc2VydmVyVXJsOiAnJyxcbiAqICAgY3dkOiBwcm9jZXNzLmN3ZCgpXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydE9wZW5Db2RlV2ViKG9wdGlvbnM6IFdlYk9wdGlvbnMpOiBQcm9taXNlPENoaWxkUHJvY2Vzcz4ge1xuICBjb25zdCB7IHBvcnQsIGhvc3RuYW1lLCBjd2QsIGNvbmZpZ0RpciwgY29yc09yaWdpbnMsIGNvbnRleHRBcGlVcmwgfSA9IG9wdGlvbnNcblxuICBjb25zdCBzdGF0ZURpciA9IGNyZWF0ZVN0YXRlRGlyZWN0b3J5KGN3ZClcbiAgY29uc3QgcGx1Z2luUGF0aCA9IHBhdGguam9pbihzdGF0ZURpciwgJ3BsdWdpbnMnLCAncGFnZS1jb250ZXh0LmpzJylcbiAgY29uc3QgZW52ID0gYnVpbGRQcm9jZXNzRW52KHN0YXRlRGlyLCBjb25maWdEaXIsIGNvbnRleHRBcGlVcmwsIHBsdWdpblBhdGgpXG5cbiAgY29uc3QgYXJncyA9IFtcbiAgICAnc2VydmUnLFxuICAgICctLXBvcnQnLCBTdHJpbmcocG9ydCksXG4gICAgJy0taG9zdG5hbWUnLCBob3N0bmFtZSxcbiAgXVxuXG4gIGlmIChjb3JzT3JpZ2lucyAmJiBjb3JzT3JpZ2lucy5sZW5ndGggPiAwKSB7XG4gICAgY29yc09yaWdpbnMuZm9yRWFjaChvcmlnaW4gPT4ge1xuICAgICAgYXJncy5wdXNoKCctLWNvcnMnLCBvcmlnaW4pXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHByb2MgPSBzcGF3bignb3BlbmNvZGUnLCBhcmdzLCB7XG4gICAgY3dkLFxuICAgIHN0ZGlvOiAncGlwZScsXG4gICAgZW52LFxuICB9KVxuXG4gIHNldHVwUHJvY2Vzc0hhbmRsZXJzKHByb2MsIHBvcnQsIGhvc3RuYW1lKVxuXG4gIGF3YWl0IHdhaXRGb3JTZXJ2ZXIoYGh0dHA6Ly8ke2hvc3RuYW1lfToke3BvcnR9YCwgU0VSVkVSX1NUQVJUX1RJTUVPVVQpXG5cbiAgY29uc29sZS5sb2coYFxcblxceDFiWzM2bVxceDFiWzFtJHtMT0dfUFJFRklYfVxceDFiWzBtIOKcqCBPcGVuQ29kZSBzZXJ2ZXIgc3RhcnRlZCBzdWNjZXNzZnVsbHlcXG5gKVxuXG4gIHJldHVybiBwcm9jXG59XG5cbi8qKlxuICog5Yib5bu654q25oCB55uu5b2VXG4gKiBAcGFyYW0gY3dkIC0g5bel5L2c55uu5b2VXG4gKiBAcmV0dXJucyDnirbmgIHnm67lvZXot6/lvoRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlU3RhdGVEaXJlY3RvcnkoY3dkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzdGF0ZURpciA9IHBhdGguam9pbihjd2QsICdub2RlX21vZHVsZXMnLCAnLmNhY2hlJywgJ29wZW5jb2RlJylcbiAgXG4gIGlmICghZnMuZXhpc3RzU3luYyhzdGF0ZURpcikpIHtcbiAgICBmcy5ta2RpclN5bmMoc3RhdGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIH1cbiAgXG4gIHJldHVybiBzdGF0ZURpclxufVxuXG4vKipcbiAqIOaehOW7uui/m+eoi+eOr+Wig+WPmOmHj1xuICogQHBhcmFtIHN0YXRlRGlyIC0g54q25oCB55uu5b2V6Lev5b6EXG4gKiBAcGFyYW0gY29uZmlnRGlyIC0g6YWN572u55uu5b2V6Lev5b6EXG4gKiBAcGFyYW0gY29udGV4dEFwaVVybCAtIOS4iuS4i+aWhyBBUEkgVVJMXG4gKiBAcGFyYW0gcGx1Z2luUGF0aCAtIOaPkuS7tui3r+W+hFxuICogQHJldHVybnMg546v5aKD5Y+Y6YeP5a+56LGhXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkUHJvY2Vzc0VudihzdGF0ZURpcjogc3RyaW5nLCBjb25maWdEaXI/OiBzdHJpbmcsIGNvbnRleHRBcGlVcmw/OiBzdHJpbmcsIHBsdWdpblBhdGg/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIC4uLk9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHByb2Nlc3MuZW52KS5maWx0ZXIoKFssIHZdKSA9PiB2ICE9PSB1bmRlZmluZWQpXG4gICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIFhER19TVEFURV9IT01FOiBzdGF0ZURpcixcbiAgfVxuXG4gIGlmIChjb25maWdEaXIpIHtcbiAgICBlbnYuT1BFTkNPREVfQ09ORklHX0RJUiA9IGNvbmZpZ0RpclxuICB9XG5cbiAgaWYgKGNvbnRleHRBcGlVcmwpIHtcbiAgICBlbnYuT1BFTkNPREVfQ09OVEVYVF9BUElfVVJMID0gY29udGV4dEFwaVVybFxuICB9XG5cbiAgaWYgKHBsdWdpblBhdGgpIHtcbiAgICBlbnYuT1BFTkNPREVfUExVR0lOUyA9IHBsdWdpblBhdGhcbiAgfVxuXG4gIHJldHVybiBlbnZcbn1cblxuLyoqXG4gKiDorr7nva7ov5vnqIvkuovku7blpITnkIblmahcbiAqIEBwYXJhbSBwcm9jIC0g5a2Q6L+b56iL5a6e5L6LXG4gKi9cbmZ1bmN0aW9uIHNldHVwUHJvY2Vzc0hhbmRsZXJzKHByb2M6IENoaWxkUHJvY2VzcywgcG9ydDogbnVtYmVyLCBob3N0bmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIHByb2Muc3Rkb3V0Py5vbignZGF0YScsICgpID0+IHtcbiAgfSlcblxuICBwcm9jLnN0ZGVycj8ub24oJ2RhdGEnLCAoKSA9PiB7XG4gIH0pXG5cbiAgcHJvYy5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihgXFx4MWJbMzFtXFx4MWJbMW0ke0xPR19QUkVGSVh9XFx4MWJbMG0g4p2MIEZhaWxlZCB0byBzdGFydCBPcGVuQ29kZSBzZXJ2ZXI6YCwgZXJyLm1lc3NhZ2UpXG4gIH0pXG59XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dlYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLGVBQWUsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTFDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUVuQjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsT0FBbUI7SUFDeEQsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBRTlFLE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3BFLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUUzRSxNQUFNLElBQUksR0FBRztRQUNYLE9BQU87UUFDUCxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN0QixZQUFZLEVBQUUsUUFBUTtLQUN2QixDQUFBO0lBRUQsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzdCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFO1FBQ25DLEdBQUc7UUFDSCxLQUFLLEVBQUUsTUFBTTtRQUNiLEdBQUc7S0FDSixDQUFDLENBQUE7SUFFRixvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBRTFDLE1BQU0sYUFBYSxDQUFDLFVBQVUsUUFBUSxJQUFJLElBQUksRUFBRSxFQUFFLG9CQUFvQixDQUFDLENBQUE7SUFFdkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsVUFBVSxrREFBa0QsQ0FBQyxDQUFBO0lBRTdGLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLG9CQUFvQixDQUFDLEdBQVc7SUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUVyRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFBO0FBQ2pCLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxlQUFlLENBQUMsUUFBZ0IsRUFBRSxTQUFrQixFQUFFLGFBQXNCLEVBQUUsVUFBbUI7SUFDeEcsTUFBTSxHQUFHLEdBQTJCO1FBQ2xDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQ3JDO1FBQzNCLGNBQWMsRUFBRSxRQUFRO0tBQ3pCLENBQUE7SUFFRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsR0FBRyxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixHQUFHLENBQUMsd0JBQXdCLEdBQUcsYUFBYSxDQUFBO0lBQzlDLENBQUM7SUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsR0FBRyxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxJQUFrQixFQUFFLElBQVksRUFBRSxRQUFnQjtJQUM5RSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0lBQzdCLENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUM3QixDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsVUFBVSw0Q0FBNEMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDdEcsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24sIENoaWxkUHJvY2VzcyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgeyB3YWl0Rm9yU2VydmVyIH0gZnJvbSAnLi91dGlscy5qcydcbmltcG9ydCB7IFdlYk9wdGlvbnMgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHtcbiAgU0VSVkVSX1NUQVJUX1RJTUVPVVQsXG4gIExPR19QUkVGSVgsXG59IGZyb20gJy4vY29uc3RhbnRzLmpzJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcydcblxuLyoqXG4gKiDlkK/liqggT3BlbkNvZGUgV2ViIOacjeWKoVxuICogQHBhcmFtIG9wdGlvbnMgLSBXZWIg5pyN5Yqh5ZCv5Yqo6YCJ6aG5XG4gKiBAcmV0dXJucyDlrZDov5vnqIvlrp7kvotcbiAqIEB0aHJvd3Mg5pyN5Yqh5ZCv5Yqo6LaF5pe25pe25oqb5Ye66ZSZ6K+vXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHByb2MgPSBhd2FpdCBzdGFydE9wZW5Db2RlV2ViKHtcbiAqICAgcG9ydDogNDA5NyxcbiAqICAgaG9zdG5hbWU6ICcxMjcuMC4wLjEnLFxuICogICBzZXJ2ZXJVcmw6ICcnLFxuICogICBjd2Q6IHByb2Nlc3MuY3dkKClcbiAqIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0T3BlbkNvZGVXZWIob3B0aW9uczogV2ViT3B0aW9ucyk6IFByb21pc2U8Q2hpbGRQcm9jZXNzPiB7XG4gIGNvbnN0IHsgcG9ydCwgaG9zdG5hbWUsIGN3ZCwgY29uZmlnRGlyLCBjb3JzT3JpZ2lucywgY29udGV4dEFwaVVybCB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IHN0YXRlRGlyID0gY3JlYXRlU3RhdGVEaXJlY3RvcnkoY3dkKVxuICBjb25zdCBwbHVnaW5QYXRoID0gcGF0aC5qb2luKHN0YXRlRGlyLCAncGx1Z2lucycsICdwYWdlLWNvbnRleHQuanMnKVxuICBjb25zdCBlbnYgPSBidWlsZFByb2Nlc3NFbnYoc3RhdGVEaXIsIGNvbmZpZ0RpciwgY29udGV4dEFwaVVybCwgcGx1Z2luUGF0aClcblxuICBjb25zdCBhcmdzID0gW1xuICAgICdzZXJ2ZScsXG4gICAgJy0tcG9ydCcsIFN0cmluZyhwb3J0KSxcbiAgICAnLS1ob3N0bmFtZScsIGhvc3RuYW1lLFxuICBdXG5cbiAgaWYgKGNvcnNPcmlnaW5zICYmIGNvcnNPcmlnaW5zLmxlbmd0aCA+IDApIHtcbiAgICBjb3JzT3JpZ2lucy5mb3JFYWNoKG9yaWdpbiA9PiB7XG4gICAgICBhcmdzLnB1c2goJy0tY29ycycsIG9yaWdpbilcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcHJvYyA9IHNwYXduKCdvcGVuY29kZScsIGFyZ3MsIHtcbiAgICBjd2QsXG4gICAgc3RkaW86ICdwaXBlJyxcbiAgICBlbnYsXG4gIH0pXG5cbiAgc2V0dXBQcm9jZXNzSGFuZGxlcnMocHJvYywgcG9ydCwgaG9zdG5hbWUpXG5cbiAgYXdhaXQgd2FpdEZvclNlcnZlcihgaHR0cDovLyR7aG9zdG5hbWV9OiR7cG9ydH1gLCBTRVJWRVJfU1RBUlRfVElNRU9VVClcblxuICBjb25zb2xlLmxvZyhgXFxuXFx4MWJbMzZtXFx4MWJbMW0ke0xPR19QUkVGSVh9XFx4MWJbMG0g4pyoIE9wZW5Db2RlIHNlcnZlciBzdGFydGVkIHN1Y2Nlc3NmdWxseVxcbmApXG5cbiAgcmV0dXJuIHByb2Ncbn1cblxuLyoqXG4gKiDliJvlu7rnirbmgIHnm67lvZVcbiAqIEBwYXJhbSBjd2QgLSDlt6XkvZznm67lvZVcbiAqIEByZXR1cm5zIOeKtuaAgeebruW9lei3r+W+hFxuICovXG5mdW5jdGlvbiBjcmVhdGVTdGF0ZURpcmVjdG9yeShjd2Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHN0YXRlRGlyID0gcGF0aC5qb2luKGN3ZCwgJ25vZGVfbW9kdWxlcycsICcuY2FjaGUnLCAnb3BlbmNvZGUnKVxuICBcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHN0YXRlRGlyKSkge1xuICAgIGZzLm1rZGlyU3luYyhzdGF0ZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgfVxuICBcbiAgcmV0dXJuIHN0YXRlRGlyXG59XG5cbi8qKlxuICog5p6E5bu66L+b56iL546v5aKD5Y+Y6YePXG4gKiBAcGFyYW0gc3RhdGVEaXIgLSDnirbmgIHnm67lvZXot6/lvoRcbiAqIEBwYXJhbSBjb25maWdEaXIgLSDphY3nva7nm67lvZXot6/lvoRcbiAqIEBwYXJhbSBjb250ZXh0QXBpVXJsIC0g5LiK5LiL5paHIEFQSSBVUkxcbiAqIEBwYXJhbSBwbHVnaW5QYXRoIC0g5o+S5Lu26Lev5b6EXG4gKiBAcmV0dXJucyDnjq/looPlj5jph4/lr7nosaFcbiAqL1xuZnVuY3Rpb24gYnVpbGRQcm9jZXNzRW52KHN0YXRlRGlyOiBzdHJpbmcsIGNvbmZpZ0Rpcj86IHN0cmluZywgY29udGV4dEFwaVVybD86IHN0cmluZywgcGx1Z2luUGF0aD86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgLi4uT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMocHJvY2Vzcy5lbnYpLmZpbHRlcigoWywgdl0pID0+IHYgIT09IHVuZGVmaW5lZClcbiAgICApIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgWERHX1NUQVRFX0hPTUU6IHN0YXRlRGlyLFxuICB9XG5cbiAgaWYgKGNvbmZpZ0Rpcikge1xuICAgIGVudi5PUEVOQ09ERV9DT05GSUdfRElSID0gY29uZmlnRGlyXG4gIH1cblxuICBpZiAoY29udGV4dEFwaVVybCkge1xuICAgIGVudi5PUEVOQ09ERV9DT05URVhUX0FQSV9VUkwgPSBjb250ZXh0QXBpVXJsXG4gIH1cblxuICBpZiAocGx1Z2luUGF0aCkge1xuICAgIGVudi5PUEVOQ09ERV9QTFVHSU5TID0gcGx1Z2luUGF0aFxuICB9XG5cbiAgcmV0dXJuIGVudlxufVxuXG4vKipcbiAqIOiuvue9rui/m+eoi+S6i+S7tuWkhOeQhuWZqFxuICogQHBhcmFtIHByb2MgLSDlrZDov5vnqIvlrp7kvotcbiAqL1xuZnVuY3Rpb24gc2V0dXBQcm9jZXNzSGFuZGxlcnMocHJvYzogQ2hpbGRQcm9jZXNzLCBwb3J0OiBudW1iZXIsIGhvc3RuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgcHJvYy5zdGRvdXQ/Lm9uKCdkYXRhJywgKCkgPT4ge1xuICB9KVxuXG4gIHByb2Muc3RkZXJyPy5vbignZGF0YScsICgpID0+IHtcbiAgfSlcblxuICBwcm9jLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKGBcXHgxYlszMW1cXHgxYlsxbSR7TE9HX1BSRUZJWH1cXHgxYlswbSDinYwgRmFpbGVkIHRvIHN0YXJ0IE9wZW5Db2RlIHNlcnZlcjpgLCBlcnIubWVzc2FnZSlcbiAgfSlcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-opencode-assistant",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
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",