@cloudbase/container 2.5.35-alpha.1 → 2.5.36-beta.0

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.
@@ -1,11 +1,2 @@
1
1
  import { ICloudbase } from '@cloudbase/types';
2
- import { ICallContainerOptions, IContianerConfig } from '@cloudbase/types/container';
3
- export declare class CloudbaseContainers {
4
- private readonly config;
5
- private wasm;
6
- private containerInitPromise;
7
- constructor(config: IContianerConfig);
8
- callContainer(options: ICallContainerOptions, callback?: Function): Promise<any>;
9
- initContainer(config: Omit<IContianerConfig, 'wasmUrl' | 'jsUrl'>): Promise<any>;
10
- }
11
2
  export declare function registerContainers(app: Pick<ICloudbase, 'registerComponent'>): void;
package/dist/cjs/index.js CHANGED
@@ -85,7 +85,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
85
85
  return (mod && mod.__esModule) ? mod : { "default": mod };
86
86
  };
87
87
  Object.defineProperty(exports, "__esModule", { value: true });
88
- exports.registerContainers = exports.CloudbaseContainers = void 0;
88
+ exports.registerContainers = void 0;
89
89
  var utilities_1 = require("@cloudbase/utilities");
90
90
  var decompress_1 = __importDefault(require("brotli/decompress"));
91
91
  var go_wams_exec_1 = __importDefault(require("./go_wams_exec"));
@@ -122,11 +122,11 @@ function genContainerError(data, scope, defaultMessage) {
122
122
  error.code = (data === null || data === void 0 ? void 0 : data.code) || 'UNKNOWN_ERROR';
123
123
  return error;
124
124
  }
125
- var CloudbaseContainers = exports.CloudbaseContainers = (function () {
125
+ var CloudbaseContainers = (function () {
126
126
  function CloudbaseContainers(config) {
127
127
  var _this = this;
128
128
  this.config = __assign({}, config);
129
- if (!this.config.wasmUrl && !this.config.jsUrl && !globalThis.cloudbase_private_link) {
129
+ if (!this.config.wasmUrl && !this.config.jsUrl && !window.cloudbase_private_link) {
130
130
  throw new InvalieParamsError("".concat(constants_1.COMPONENT_NAME), '缺少 privatelink sdk 地址');
131
131
  }
132
132
  if (this.config.wasmUrl) {
@@ -142,8 +142,8 @@ var CloudbaseContainers = exports.CloudbaseContainers = (function () {
142
142
  console.warn('load wams error, fall back to use js', e);
143
143
  return loadJSExportFunction(_this.config.jsUrl);
144
144
  }
145
- if (globalThis.cloudbase_private_link) {
146
- return globalThis.cloudbase_private_link;
145
+ if (window.cloudbase_private_link) {
146
+ return window.cloudbase_private_link;
147
147
  }
148
148
  throw e;
149
149
  });
@@ -153,15 +153,14 @@ var CloudbaseContainers = exports.CloudbaseContainers = (function () {
153
153
  }
154
154
  else {
155
155
  this.wasm = Promise.resolve({
156
- initContainer: globalThis.cloudbase_private_link.initContainer,
157
- callContainer: globalThis.cloudbase_private_link.callContainer,
156
+ initContainer: window.cloudbase_private_link.initContainer,
157
+ callContainer: window.cloudbase_private_link.callContainer,
158
158
  });
159
159
  }
160
160
  }
161
161
  CloudbaseContainers.prototype.callContainer = function (options, callback) {
162
162
  return __awaiter(this, void 0, void 0, function () {
163
- var SCOPE, callContainer, _a, url, method, header, data, timeout, dataType, responseType, restOptions, res, e_1;
164
- var _b, _c, _d, _e, _f;
163
+ var SCOPE, callContainer, _a, url, _b, method, _c, header, data, _d, timeout, _e, dataType, _f, responseType, restOptions, res, e_1;
165
164
  return __generator(this, function (_g) {
166
165
  switch (_g.label) {
167
166
  case 0: return [4, this.initContainer(this.config)];
@@ -171,7 +170,7 @@ var CloudbaseContainers = exports.CloudbaseContainers = (function () {
171
170
  return [4, this.wasm];
172
171
  case 2:
173
172
  callContainer = (_g.sent()).callContainer;
174
- _a = __assign({}, options), url = _a.url, method = (_b = _a.method, _b === void 0 ? 'GET' : _b), header = (_c = _a.header, _c === void 0 ? {} : _c), data = _a.data, timeout = (_d = _a.timeout, _d === void 0 ? 60000 : _d), dataType = (_e = _a.dataType, _e === void 0 ? 'json' : _e), responseType = (_f = _a.responseType, _f === void 0 ? 'text' : _f), restOptions = __rest(_a, ["url", "method", "header", "data", "timeout", "dataType", "responseType"]);
173
+ _a = __assign({}, options), url = _a.url, _b = _a.method, method = _b === void 0 ? 'GET' : _b, _c = _a.header, header = _c === void 0 ? {} : _c, data = _a.data, _d = _a.timeout, timeout = _d === void 0 ? 60000 : _d, _e = _a.dataType, dataType = _e === void 0 ? 'json' : _e, _f = _a.responseType, responseType = _f === void 0 ? 'text' : _f, restOptions = __rest(_a, ["url", "method", "header", "data", "timeout", "dataType", "responseType"]);
175
174
  if (!url) {
176
175
  throw new InvalieParamsError(SCOPE, 'invalid request url');
177
176
  }
@@ -197,10 +196,10 @@ var CloudbaseContainers = exports.CloudbaseContainers = (function () {
197
196
  }
198
197
  catch (e) { }
199
198
  }
200
- if (method === 'GET' && typeof params.data === 'string' && params.data) {
199
+ if (method === 'GET' && typeof params.data === 'string') {
201
200
  var parsedUrl = (0, utils_1.parseURL)(url);
202
201
  if (parsedUrl.search) {
203
- parsedUrl.search += "&".concat(params.data);
202
+ parsedUrl.search += params.data;
204
203
  }
205
204
  else {
206
205
  parsedUrl.search = "?".concat(params.data);
@@ -391,12 +390,7 @@ function loadUmdModule(jsUrl, umdModuleName, targetDoc) {
391
390
  var error = new Error("main bundle [".concat(umdModuleName, "] load failed from [").concat(jsUrl, "]: ").concat((e === null || e === void 0 ? void 0 : e.message) || ''));
392
391
  reject(error);
393
392
  });
394
- if (targetDoc.body) {
395
- targetDoc.body.appendChild(script);
396
- }
397
- else {
398
- targetDoc.head.appendChild(script);
399
- }
393
+ targetDoc.body.appendChild(script);
400
394
  });
401
395
  }
402
396
  function loadJSExportFunction(url) {
@@ -421,4 +415,4 @@ function isBrotliCompressed(url) {
421
415
  }
422
416
  return brotliCompressed;
423
417
  }
424
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLGtEQUFnRTtBQUVoRSxpRUFBMEM7QUFFMUMsZ0VBQStCO0FBQy9CLGlDQUFrRTtBQUNsRSwyQ0FBeUM7QUFDekMseUNBQTRDO0FBSXBDLElBQUEsTUFBTSxHQUF5QixxQkFBUyxPQUFsQyxFQUFFLGtCQUFrQixHQUFLLHFCQUFTLG1CQUFkLENBQWM7QUFDeEMsSUFBQSxZQUFZLEdBQWdCLGlCQUFLLGFBQXJCLEVBQUUsU0FBUyxHQUFLLGlCQUFLLFVBQVYsQ0FBVTtBQUNqQyxJQUFBLG9CQUFvQixHQUFLLG1CQUFPLHFCQUFaLENBQVk7QUFFeEM7SUFBaUMsc0NBQUs7SUFFcEMsNEJBQVksS0FBSyxFQUFFLE9BQU87UUFBMUIsaUJBT0M7UUFOQyxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztZQUMzQixHQUFHLEVBQUUsV0FBSSxLQUFLLGVBQUssT0FBTyxDQUFFO1NBQzdCLENBQUMsQ0FBQTtnQkFDRixrQkFBTSxHQUFHLENBQUM7UUFDVixLQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUE7O0lBQ25DLENBQUM7SUFDRCxtQ0FBTSxHQUFOO1FBQ0UsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFBO0lBQ0gsQ0FBQztJQUNILHlCQUFDO0FBQUQsQ0FBQyxBQWhCRCxDQUFpQyxLQUFLLEdBZ0JyQztBQWFELFNBQVMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQXNCLEVBQUUs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LENBQUE7UUFDRixJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFDbEIsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDbkM7YUFBTTtZQUNMLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQ25DO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsU0FBZSxvQkFBb0IsQ0FBQyxHQUFHOzs7WUFDckMsV0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDLEVBQUE7OztDQUNwRDtBQUVELFNBQVMsa0JBQWtCLENBQUMsR0FBRztJQUM3QixJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQTtJQUU1QixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFDakIsSUFBSTtRQUNGLElBQU0sVUFBUSxHQUFHLElBQUEsZ0JBQVEsRUFBQyxHQUFHLENBQUMsQ0FBQTtRQUM5QixRQUFRLEdBQUcsVUFBUSxDQUFDLFFBQVEsQ0FBQTtLQUM3QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsUUFBUSxHQUFHLEdBQUcsQ0FBQTtLQUNmO0lBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzFCLGdCQUFnQixHQUFHLElBQUksQ0FBQTtLQUN4QjtJQUNELE9BQU8sZ0JBQWdCLENBQUE7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDbG91ZGJhc2UgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IHsgSUNhbGxDb250YWluZXJPcHRpb25zLCBJQ29udGlhbmVyQ29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9jb250YWluZXInXG5pbXBvcnQgeyBjb25zdGFudHMsIHV0aWxzLCBoZWxwZXJzIH0gZnJvbSAnQGNsb3VkYmFzZS91dGlsaXRpZXMnXG4vLyBpbXBvcnQgYnJvdGxpUHJvbWlzZSBmcm9tICdicm90bGktZGVjLXdhc20nIC8vIEltcG9ydCB0aGUgZGVmYXVsdCBleHBvcnRcbmltcG9ydCBkZWNvbXByZXNzIGZyb20gJ2Jyb3RsaS9kZWNvbXByZXNzJ1xuXG5pbXBvcnQgR28gZnJvbSAnLi9nb193YW1zX2V4ZWMnXG5pbXBvcnQgeyBpc0J1ZmZlciwgcGFyc2VVUkwsIHNlcmlhbGl6ZVJlcXVlc3RCb2R5IH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IHJlcXVlc3QgfSBmcm9tICcuL3V0aWxzL3JlcXVlc3QnXG5pbXBvcnQgeyBDT01QT05FTlRfTkFNRSB9IGZyb20gJy4vY29uc3RhbnRzJ1xuXG5kZWNsYXJlIGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZVxuXG5jb25zdCB7IEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHNcbmNvbnN0IHsgZXhlY0NhbGxiYWNrLCBwcmludFdhcm4gfSA9IHV0aWxzXG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzXG5cbmNsYXNzIEludmFsaWVQYXJhbXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29kZTogYW55XG4gIGNvbnN0cnVjdG9yKHNjb3BlLCBtZXNzYWdlKSB7XG4gICAgY29uc3QgbXNnID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgbXNnOiBgWyR7c2NvcGV9XSAke21lc3NhZ2V9YCxcbiAgICB9KVxuICAgIHN1cGVyKG1zZylcbiAgICB0aGlzLmNvZGUgPSBFUlJPUlMuSU5WQUxJRF9QQVJBTVNcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IHRoaXMuY29kZSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICB9XG4gIH1cbn1cblxuaW50ZXJmYWNlIElDYWxsVGNiQ29udGFpbmVyT3B0aW9ucyBleHRlbmRzIElDYWxsQ29udGFpbmVyT3B0aW9ucyB7XG4gIHN1Y2Nlc3M6IChyZXM6IHsgc3RhdHVzQ29kZTogc3RyaW5nIHwgbnVtYmVyOyBoZWFkZXI6IElDYWxsQ29udGFpbmVyT3B0aW9uc1snaGVhZGVyJ107IGRhdGE6IGFueSB9KSA9PiB2b2lkXG4gIGZhaWw6IChyZXM6IHsgZGF0YTogeyBjb2RlOiBudW1iZXI7IG1lc3NhZ2U6IHN0cmluZyB9IH0pID0+IHZvaWRcbn1cblxuaW50ZXJmYWNlIElJbml0VGNiQ29udGFpbmVyT3B0aW9ucyB7XG4gIGNvbmZpZzogT21pdDxJQ29udGlhbmVyQ29uZmlnLCAnd2FzbVVybCcgfCAnanNVcmwnPlxuICBzdWNjZXNzOiAocmVzOiB7IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlcjsgaGVhZGVyOiBJQ2FsbENvbnRhaW5lck9wdGlvbnNbJ2hlYWRlciddOyBkYXRhOiBhbnkgfSkgPT4gdm9pZFxuICBmYWlsOiAocmVzOiB7IGRhdGE6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KSA9PiB2b2lkXG59XG5cbmZ1bmN0aW9uIGdlbkNvbnRhaW5lckVycm9yKGRhdGEsIHNjb3BlID0gQ09NUE9ORU5UX05BTUUsIGRlZmF1bHRNZXNzYWdlID0gJ2NhbGwgY29udGFpbmVyIGVycm9yJykge1xuICBjb25zdCBlcnJvciA9IGRhdGEgaW5zdGFuY2VvZiBFcnJvciA/IGRhdGEgOiBuZXcgRXJyb3IoYFske3Njb3BlfV0gJHtkYXRhPy5tZXNzYWdlIHx8IGRlZmF1bHRNZXNzYWdlfWApXG4gIDsoZXJyb3IgYXMgYW55KS5jb2RlID0gZGF0YT8uY29kZSB8fCAnVU5LTk9XTl9FUlJPUidcbiAgcmV0dXJuIGVycm9yXG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZGJhc2VDb250YWluZXJzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IElDb250aWFuZXJDb25maWdcbiAgcHJpdmF0ZSB3YXNtOiBQcm9taXNlPFdlYkFzc2VtYmx5LkV4cG9ydHM+XG4gIHByaXZhdGUgY29udGFpbmVySW5pdFByb21pc2U6IC8qIFByb21pc2U8YW55PiovIGFueSB8IG51bGxcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IElDb250aWFuZXJDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLndhc21VcmwgJiYgIXRoaXMuY29uZmlnLmpzVXJsICYmICEoZ2xvYmFsVGhpcyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmspIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGllUGFyYW1zRXJyb3IoYCR7Q09NUE9ORU5UX05BTUV9YCwgJ+e8uuWwkSBwcml2YXRlbGluayBzZGsg5Zyw5Z2AJylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcud2FzbVVybCkge1xuICAgICAgdGhpcy53YXNtID0gZ2V0RXhwb3J0RnVuY3Rpb24odGhpcy5jb25maWcud2FzbVVybCwge1xuICAgICAgICB1dGlsczoge1xuICAgICAgICAgIGluZm8oZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgIH0sXG4gICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuanNVcmwpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ2xvYWQgd2FtcyBlcnJvciwgZmFsbCBiYWNrIHRvIHVzZSBqcycsIGUpXG4gICAgICAgICAgcmV0dXJuIGxvYWRKU0V4cG9ydEZ1bmN0aW9uKHRoaXMuY29uZmlnLmpzVXJsKVxuICAgICAgICB9XG4gICAgICAgIGlmICgoZ2xvYmFsVGhpcyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmspIHtcbiAgICAgICAgICByZXR1cm4gKGdsb2JhbFRoaXMgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZVxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLmpzVXJsKSB7XG4gICAgICB0aGlzLndhc20gPSBsb2FkSlNFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy5qc1VybClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53YXNtID0gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgaW5pdENvbnRhaW5lcjogKGdsb2JhbFRoaXMgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rLmluaXRDb250YWluZXIsXG4gICAgICAgIGNhbGxDb250YWluZXI6IChnbG9iYWxUaGlzIGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGluay5jYWxsQ29udGFpbmVyLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAnY2FsbENvbnRhaW5lcicsXG4gICAgfSxcbiAgICB0aXRsZTogJ+iwg+eUqOWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBjYWxsQ29udGFpbmVyKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDln5/lkI0gJiDot6/lvoTmmK/lkKblrZjlnKgnLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWAsXG4gICAgXSxcbiAgfSlcbiAgcHVibGljIGFzeW5jIGNhbGxDb250YWluZXIob3B0aW9uczogSUNhbGxDb250YWluZXJPcHRpb25zLCBjYWxsYmFjaz86IEZ1bmN0aW9uKSB7XG4gICAgYXdhaXQgdGhpcy5pbml0Q29udGFpbmVyKHRoaXMuY29uZmlnKVxuICAgIGNvbnN0IFNDT1BFID0gYCR7Q09NUE9ORU5UX05BTUV9LmNhbGxDb250YWluZXJgXG4gICAgY29uc3QgeyBjYWxsQ29udGFpbmVyIH06IHsgY2FsbENvbnRhaW5lcjogKG9wdGlvbnM6IElDYWxsVGNiQ29udGFpbmVyT3B0aW9ucykgPT4gdm9pZCB9ID0gKGF3YWl0IHRoaXMud2FzbSkgYXMgYW55XG4gICAgY29uc3Qge1xuICAgICAgdXJsLFxuICAgICAgbWV0aG9kID0gJ0dFVCcsXG4gICAgICBoZWFkZXIgPSB7fSxcbiAgICAgIGRhdGEsXG4gICAgICB0aW1lb3V0ID0gNjAwMDAsXG4gICAgICBkYXRhVHlwZSA9ICdqc29uJyxcbiAgICAgIHJlc3BvbnNlVHlwZSA9ICd0ZXh0JyxcbiAgICAgIC4uLnJlc3RPcHRpb25zXG4gICAgfSA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfVxuXG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGllUGFyYW1zRXJyb3IoU0NPUEUsICdpbnZhbGlkIHJlcXVlc3QgdXJsJylcbiAgICB9XG5cbiAgICBpZiAoIW1ldGhvZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihTQ09QRSwgJ2ludmFsaWQgcmVxdWVzdCBtZXRob2QnKVxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICB1cmwsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIGhlYWRlcixcbiAgICAgICAgICBkYXRhOiBzZXJpYWxpemVSZXF1ZXN0Qm9keShoZWFkZXIsIGRhdGEpLFxuICAgICAgICAgIHRpbWVvdXQsXG4gICAgICAgICAgZGF0YVR5cGUsXG4gICAgICAgICAgcmVzcG9uc2VUeXBlLFxuICAgICAgICAgIC4uLnJlc3RPcHRpb25zLFxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIOmdniBidWZmZXJcbiAgICAgICAgICovXG4gICAgICAgIGlmIChwYXJhbXMuZGF0YSAhPT0gdW5kZWZpbmVkICYmICFpc0J1ZmZlcihwYXJhbXMuZGF0YSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtcy5kYXRhICE9PSAnc3RyaW5nJyAmJiBtZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gT2JqZWN0LmVudHJpZXMocGFyYW1zLmRhdGEgfHwge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAobGlzdCwgW2tleSwgdmFsdWVdOiBbc3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKX1gKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5kYXRhID0gbGlzdC5qb2luKCcmJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobWV0aG9kID09PSAnR0VUJyAmJiB0eXBlb2YgcGFyYW1zLmRhdGEgPT09ICdzdHJpbmcnICYmIHBhcmFtcy5kYXRhKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRVcmwgPSBwYXJzZVVSTCh1cmwpXG4gICAgICAgICAgICBpZiAocGFyc2VkVXJsLnNlYXJjaCkge1xuICAgICAgICAgICAgICBwYXJzZWRVcmwuc2VhcmNoICs9IGAmJHtwYXJhbXMuZGF0YX1gXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwYXJzZWRVcmwuc2VhcmNoID0gYD8ke3BhcmFtcy5kYXRhfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFtcy51cmwgPSBwYXJzZWRVcmwuaHJlZlxuICAgICAgICAgICAgcGFyYW1zLmRhdGEgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZGF0YVxuICAgICAgICAgICYmIChpc0J1ZmZlcihwYXJhbXMuZGF0YSkgfHwgdHlwZW9mIHBhcmFtcy5kYXRhID09PSAnc3RyaW5nJylcbiAgICAgICAgICAmJiAoZGF0YSBhcyBhbnkpPy5sZW5ndGggPiAxMDAwICogMTAyNCAqIDEwXG4gICAgICAgICkge1xuICAgICAgICAgIHJlamVjdChuZXcgSW52YWxpZVBhcmFtc0Vycm9yKFNDT1BFLCAnYm9keSB0b28gbGFyZ2UnKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxDb250YWluZXIoe1xuICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICBzdWNjZXNzOiByZXNvbHZlLFxuICAgICAgICAgIGZhaWw6IChyZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzIHx8IHt9XG4gICAgICAgICAgICByZWplY3QoZ2VuQ29udGFpbmVyRXJyb3IoZGF0YSwgU0NPUEUsICdjYWxsIGNvbnRhaW5lciBlcnJvcicpKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgcmVzKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgZSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0Q29udGFpbmVyKGNvbmZpZzogT21pdDxJQ29udGlhbmVyQ29uZmlnLCAnd2FzbVVybCcgfCAnanNVcmwnPikge1xuICAgIGNvbnN0IHsgaW5pdENvbnRhaW5lciB9OiB7IGluaXRDb250YWluZXI6IChvcHRpb25zOiBJSW5pdFRjYkNvbnRhaW5lck9wdGlvbnMpID0+IHZvaWQgfSA9IChhd2FpdCB0aGlzLndhc20pIGFzIGFueVxuICAgIGlmICghdGhpcy5jb250YWluZXJJbml0UHJvbWlzZSkge1xuICAgICAgdGhpcy5jb250YWluZXJJbml0UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgaW5pdENvbnRhaW5lcih7XG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgICBpZiAoU3RyaW5nKHJlcy5zdGF0dXNDb2RlKSAhPT0gJzIwMCcpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGdlbkNvbnRhaW5lckVycm9yKHJlcy5kYXRhLCBgJHtDT01QT05FTlRfTkFNRX0uaW5pdENvbnRhaW5lcmAsICdpbml0IGNvbnRhaW5lciBmYWlsJykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlcylcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZhaWwocmVzKSB7XG4gICAgICAgICAgICByZWplY3QoZ2VuQ29udGFpbmVyRXJyb3IocmVzLmRhdGEsIGAke0NPTVBPTkVOVF9OQU1FfS5pbml0Q29udGFpbmVyYCwgJ2luaXQgY29udGFpbmVyIGZhaWwnKSlcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lckluaXRQcm9taXMgPSBudWxsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVySW5pdFByb21pc2VcbiAgfVxufVxuXG5jb25zdCBjb21wb25lbnQ6IElDbG91ZGJhc2VDb21wb25lbnQgPSB7XG4gIG5hbWU6IENPTVBPTkVOVF9OQU1FLFxuICBuYW1lc3BhY2U6ICdjb250YWluZXInLFxuICBlbnRpdHkoY29uZmlnOiBJQ29udGlhbmVyQ29uZmlnKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVySW5zdGFuY2UpIHtcbiAgICAgIHByaW50V2FybihFUlJPUlMuSU5WQUxJRF9PUEVSQVRJT04sICdldmVyeSBjbG91ZGJhc2UgaW5zdGFuY2Ugc2hvdWxkIGhhcyBvbmx5IG9uZSBjb250YWluZXIgb2JqZWN0JylcbiAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lckluc3RhbmNlXG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgQ2xvdWRiYXNlQ29udGFpbmVycyhjb25maWcpXG4gICAgdGhpcy5jb250YWluZXJJbnN0YW5jZSA9IGluc3RhbmNlXG4gICAgdGhpcy5jYWxsQ29udGFpbmVyID0gaW5zdGFuY2UuY2FsbENvbnRhaW5lci5iaW5kKGluc3RhbmNlKVxuXG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVySW5zdGFuY2VcbiAgfSxcbn1cbnRyeSB7XG4gIGNsb3VkYmFzZS5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG59IGNhdGNoIChlKSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb250YWluZXJzKGFwcDogUGljazxJQ2xvdWRiYXNlLCAncmVnaXN0ZXJDb21wb25lbnQnPikge1xuICB0cnkge1xuICAgIGFwcC5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oZSlcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHBvcnRGdW5jdGlvbih1cmwsIG1vZHVsZSwgbW9kZSA9ICdnbycpIHtcbiAgYXN5bmMgZnVuY3Rpb24gaW5zdGFudGlhdGVTdHJlYW1pbmcocmVzcCwgaW1wb3J0T2JqZWN0LCBicm90bGlDb21wcmVzc2VkID0gZmFsc2UpIHtcbiAgICBpZiAoYnJvdGxpQ29tcHJlc3NlZCB8fCAhV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IChhd2FpdCByZXNwKS5hcnJheUJ1ZmZlcigpXG4gICAgICBjb25zdCBidWZmZXIgPSBicm90bGlDb21wcmVzc2VkID8gZGVjb21wcmVzcyhuZXcgSW50OEFycmF5KHNvdXJjZSkpIDogc291cmNlXG4gICAgICByZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoYnVmZmVyLCBpbXBvcnRPYmplY3QpXG4gICAgfVxuXG4gICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKHJlc3AsIGltcG9ydE9iamVjdClcbiAgfVxuXG4gIGxldCBpbXBvcnRPYmplY3QgPSB7XG4gICAgZW52OiB7XG4gICAgICBtZW1vcnlCYXNlOiAwLFxuICAgICAgdGFibGVCYXNlOiAwLFxuICAgICAgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtcbiAgICAgICAgaW5pdGlhbDogMjU2LFxuICAgICAgfSksXG4gICAgICAvLyB0YWJsZTogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtcbiAgICAgIC8vICAgaW5pdGlhbDogMixcbiAgICAgIC8vICAgZWxlbWVudDogJ2FueWZ1bmMnLFxuICAgICAgLy8gfSksXG4gICAgfSxcbiAgICAuLi5tb2R1bGUsXG4gIH1cbiAgbGV0IGdvXG4gIGNvbnN0IGJyb3RsaUNvbXByZXNzZWQgPSBpc0Jyb3RsaUNvbXByZXNzZWQodXJsKVxuXG4gIGlmIChtb2RlID09PSAnZ28nKSB7XG4gICAgZ28gPSBuZXcgR28oKVxuICAgIGdvLl9pbml0ZWRNb2R1bGVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGdvLl9pbml0ZWRNb2R1bGVSZXNvbHZlID0gcmVzb2x2ZVxuICAgIH0pXG4gICAgaW1wb3J0T2JqZWN0ID0ge1xuICAgICAgLi4uZ28uaW1wb3J0T2JqZWN0LFxuICAgICAgZW52OiB7XG4gICAgICAgIC4uLmdvLmltcG9ydE9iamVjdC5lbnYsXG4gICAgICAgIGV4cG9ydE1vZHVsZShtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm4gZ28uX2luaXRlZE1vZHVsZVJlc29sdmUobW9kdWxlKVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVzbHQgPSBhd2FpdCBpbnN0YW50aWF0ZVN0cmVhbWluZyhmZXRjaCh1cmwpLCBpbXBvcnRPYmplY3QsIGJyb3RsaUNvbXByZXNzZWQpXG5cbiAgaWYgKG1vZGUgPT09ICdnbycpIHtcbiAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgZ28ucnVuKHJldXNsdC5pbnN0YW5jZSksXG4gICAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKG51bGwpXG4gICAgICB9LCA1MDApLCksXG4gICAgXSlcblxuICAgIHJldHVybiB7XG4gICAgICBjYWxsQ29udGFpbmVyOiAod2luZG93IGFzIGFueSkuY2FsbENvbnRhaW5lcixcbiAgICAgIGluaXRDb250YWluZXI6ICh3aW5kb3cgYXMgYW55KS5pbml0Q29udGFpbmVyLFxuICAgIH1cbiAgfVxuXG4gIC8vIGlmIChtb2RlID09PSAnZ28nKSB7XG4gIC8vICAgZ28ucnVuKHJldXNsdC5pbnN0YW5jZSlcbiAgLy8gICBjb25zdCBtb2R1bGUgPSBhd2FpdCBnby5faW5pdGVkTW9kdWxlUHJvbWlzZVxuICAvLyAgIHJldHVybiBtb2R1bGVcbiAgLy8gfVxuXG4gIHJldHVybiByZXVzbHQuaW5zdGFuY2UuZXhwb3J0c1xufVxuXG5mdW5jdGlvbiBsb2FkVW1kTW9kdWxlKGpzVXJsOiBzdHJpbmcsIHVtZE1vZHVsZU5hbWU6IHN0cmluZywgdGFyZ2V0RG9jOiBEb2N1bWVudCA9IGRvY3VtZW50KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB3aW4gPSB0YXJnZXREb2MuZGVmYXVsdFZpZXdcblxuICAgIGNvbnN0IHNjcmlwdCA9IHRhcmdldERvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKVxuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3NyYycsIGpzVXJsKVxuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgdW1kTW9kdWxlTmFtZSlcbiAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwod2luLCB1bWRNb2R1bGVOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh3aW5bdW1kTW9kdWxlTmFtZSBhcyBhbnldKVxuICAgICAgfVxuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEZhaWwgdG8gbG9hZCBVTUQgbW9kdWxlICR7dW1kTW9kdWxlTmFtZX0gZnJvbSBbJHtqc1VybH1dLmApXG4gICAgICByZXR1cm4gcmVqZWN0KGVycm9yKVxuICAgIH0pXG5cbiAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoZSkgPT4ge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYG1haW4gYnVuZGxlIFske3VtZE1vZHVsZU5hbWV9XSBsb2FkIGZhaWxlZCBmcm9tIFske2pzVXJsfV06ICR7ZT8ubWVzc2FnZSB8fCAnJ31gKVxuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH0pXG4gICAgaWYgKHRhcmdldERvYy5ib2R5KSB7XG4gICAgICB0YXJnZXREb2MuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldERvYy5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdClcbiAgICB9XG4gIH0pXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRKU0V4cG9ydEZ1bmN0aW9uKHVybCkge1xuICByZXR1cm4gbG9hZFVtZE1vZHVsZSh1cmwsICdjbG91ZGJhc2VfcHJpdmF0ZV9saW5rJylcbn1cblxuZnVuY3Rpb24gaXNCcm90bGlDb21wcmVzc2VkKHVybCkge1xuICBsZXQgYnJvdGxpQ29tcHJlc3NlZCA9IGZhbHNlXG5cbiAgbGV0IHBhdGhuYW1lID0gJydcbiAgdHJ5IHtcbiAgICBjb25zdCBsb2NhdGlvbiA9IHBhcnNlVVJMKHVybClcbiAgICBwYXRobmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBwYXRobmFtZSA9IHVybFxuICB9XG5cbiAgaWYgKC9cXC5iciQvLnRlc3QocGF0aG5hbWUpKSB7XG4gICAgYnJvdGxpQ29tcHJlc3NlZCA9IHRydWVcbiAgfVxuICByZXR1cm4gYnJvdGxpQ29tcHJlc3NlZFxufVxuIl19
418
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLGtEQUFnRTtBQUVoRSxpRUFBMEM7QUFFMUMsZ0VBQStCO0FBQy9CLGlDQUFrRTtBQUNsRSwyQ0FBeUM7QUFDekMseUNBQTRDO0FBSXBDLElBQUEsTUFBTSxHQUF5QixxQkFBUyxPQUFsQyxFQUFFLGtCQUFrQixHQUFLLHFCQUFTLG1CQUFkLENBQWM7QUFDeEMsSUFBQSxZQUFZLEdBQWdCLGlCQUFLLGFBQXJCLEVBQUUsU0FBUyxHQUFLLGlCQUFLLFVBQVYsQ0FBVTtBQUNqQyxJQUFBLG9CQUFvQixHQUFLLG1CQUFPLHFCQUFaLENBQVk7QUFFeEM7SUFBaUMsc0NBQUs7SUFFcEMsNEJBQVksS0FBSyxFQUFFLE9BQU87UUFBMUIsaUJBT0M7UUFOQyxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsY0FBYztZQUMzQixHQUFHLEVBQUUsV0FBSSxLQUFLLGVBQUssT0FBTyxDQUFFO1NBQzdCLENBQUMsQ0FBQTtnQkFDRixrQkFBTSxHQUFHLENBQUM7UUFDVixLQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUE7O0lBQ25DLENBQUM7SUFDRCxtQ0FBTSxHQUFOO1FBQ0UsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFBO0lBQ0gsQ0FBQztJQUNILHlCQUFDO0FBQUQsQ0FBQyxBQWhCRCxDQUFpQyxLQUFLLEdBZ0JyQztBQWFELFNBQVMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQXNCLEVBQUUsY0FBdUM7SUFBL0Qsc0JBQUEsRUFBQSxRQUFRLDBCQUFjO0lBQUUsK0JBQUEsRUFBQSx1Q0FBdUM7SUFDOUYsSUFBTSxLQUFLLEdBQUcsSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFJLEtBQUssZUFBSyxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxPQUFPLEtBQUksY0FBYyxDQUFFLENBQUMsQ0FDdEc7SUFBQyxLQUFhLENBQUMsSUFBSSxHQUFHLENBQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksS0FBSSxlQUFlLENBQUE7SUFDcEQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQ7SUFLRSw2QkFBWSxNQUF3QjtRQUFwQyxpQkFrQ0M7UUFqQ0MsSUFBSSxDQUFDLE1BQU0sZ0JBQ04sTUFBTSxDQUNWLENBQUE7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFFLE1BQWMsQ0FBQyxzQkFBc0IsRUFBRTtZQUN6RixNQUFNLElBQUksa0JBQWtCLENBQUMsVUFBRywwQkFBYyxDQUFFLEVBQUUsdUJBQXVCLENBQUMsQ0FBQTtTQUMzRTtRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDakQsS0FBSyxFQUFFO29CQUNMLElBQUksWUFBQyxDQUFDO3dCQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ2hCLENBQUM7b0JBQ0QsT0FBTyxtQkFBQTtpQkFDUjthQUNGLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBQyxDQUFDO2dCQUNULElBQUksS0FBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQ3ZELE9BQU8sb0JBQW9CLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtpQkFDL0M7Z0JBQUMsSUFBSyxNQUFjLENBQUMsc0JBQXNCLEVBQUU7b0JBQzVDLE9BQVEsTUFBYyxDQUFDLHNCQUFzQixDQUFBO2lCQUM5QztnQkFDRCxNQUFNLENBQUMsQ0FBQTtZQUNULENBQUMsQ0FBQyxDQUFBO1NBQ0g7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNwRDthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUMxQixhQUFhLEVBQUcsTUFBYyxDQUFDLHNCQUFzQixDQUFDLGFBQWE7Z0JBQ25FLGFBQWEsRUFBRyxNQUFjLENBQUMsc0JBQXNCLENBQUMsYUFBYTthQUNwRSxDQUFDLENBQUE7U0FDSDtJQUNILENBQUM7SUFlWSwyQ0FBYSxHQUFiLFVBQWMsT0FBOEIsRUFBRSxRQUFtQjs7Ozs7NEJBQzVFLFdBQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUE7O3dCQUFyQyxTQUFxQyxDQUFBO3dCQUMvQixLQUFLLEdBQUcsVUFBRywwQkFBYyxtQkFBZ0IsQ0FBQTt3QkFDNEMsV0FBTSxJQUFJLENBQUMsSUFBSSxFQUFBOzt3QkFBbEcsYUFBYSxHQUFxRSxDQUFDLFNBQWUsQ0FBUSxjQUE3Rjt3QkFDZixrQkFVRCxPQUFPLENBQ1gsRUFWQyxHQUFHLFNBQUEsRUFDSCxjQUFjLEVBQWQsTUFBTSxtQkFBRyxLQUFLLEtBQUEsRUFDZCxjQUFXLEVBQVgsTUFBTSxtQkFBRyxFQUFFLEtBQUEsRUFDWCxJQUFJLFVBQUEsRUFDSixlQUFlLEVBQWYsT0FBTyxtQkFBRyxLQUFLLEtBQUEsRUFDZixnQkFBaUIsRUFBakIsUUFBUSxtQkFBRyxNQUFNLEtBQUEsRUFDakIsb0JBQXFCLEVBQXJCLFlBQVksbUJBQUcsTUFBTSxLQUFBLEVBQ2xCLFdBQVcsY0FSViwwRUFTTCxDQURlLENBR2Y7d0JBRUQsSUFBSSxDQUFDLEdBQUcsRUFBRTs0QkFDUixNQUFNLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUE7eUJBQzNEO3dCQUVELElBQUksQ0FBQyxNQUFNLEVBQUU7NEJBQ1gsTUFBTSxJQUFJLGtCQUFrQixDQUFDLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxDQUFBO3lCQUM5RDs7Ozt3QkFLYSxXQUFNLElBQUksT0FBTyxDQUFDLFVBQUMsT0FBTyxFQUFFLE1BQU07Z0NBQzVDLElBQU0sTUFBTSxjQUNWLEdBQUcsS0FBQSxFQUNILE1BQU0sUUFBQSxFQUNOLE1BQU0sUUFBQSxFQUNOLElBQUksRUFBRSxJQUFBLDRCQUFvQixFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFDeEMsT0FBTyxTQUFBLEVBQ1AsUUFBUSxVQUFBLEVBQ1IsWUFBWSxjQUFBLElBQ1QsV0FBVyxDQUNmLENBQUE7Z0NBS0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLElBQUEsZ0JBQVEsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7b0NBQ3ZELElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO3dDQUN2RCxJQUFJOzRDQUNGLElBQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ25ELFVBQUMsSUFBSSxFQUFFLEVBQWlEO29EQUFoRCxHQUFHLFFBQUEsRUFBRSxLQUFLLFFBQUE7Z0RBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsY0FBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUE7Z0RBQzVFLE9BQU8sSUFBSSxDQUFBOzRDQUNiLENBQUMsRUFDRCxFQUFFLENBQ0gsQ0FBQTs0Q0FDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0RBQ2YsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBOzZDQUM3Qjt5Q0FDRjt3Q0FBQyxPQUFPLENBQUMsRUFBRSxHQUFFO3FDQUNmO29DQUVELElBQUksTUFBTSxLQUFLLEtBQUssSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO3dDQUN2RCxJQUFNLFNBQVMsR0FBRyxJQUFBLGdCQUFRLEVBQUMsR0FBRyxDQUFDLENBQUE7d0NBQy9CLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTs0Q0FDcEIsU0FBUyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFBO3lDQUNoQzs2Q0FBTTs0Q0FDTCxTQUFTLENBQUMsTUFBTSxHQUFHLFdBQUksTUFBTSxDQUFDLElBQUksQ0FBRSxDQUFBO3lDQUNyQzt3Q0FDRCxNQUFNLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUE7d0NBQzNCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFBO3FDQUN4QjtpQ0FDRjtnQ0FFRCxJQUNFLElBQUk7dUNBQ0QsQ0FBQyxJQUFBLGdCQUFRLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7dUNBQzFELENBQUMsSUFBWSxhQUFaLElBQUksdUJBQUosSUFBSSxDQUFVLE1BQU0sSUFBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsRUFDM0M7b0NBQ0EsTUFBTSxDQUFDLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtvQ0FDdkQsT0FBTTtpQ0FDUDtnQ0FFRCxhQUFhLHVCQUNSLE1BQU0sS0FDVCxPQUFPLEVBQUUsT0FBTyxFQUNoQixJQUFJLEVBQUUsVUFBQyxHQUFHO3dDQUNBLElBQUEsSUFBSSxHQUFLLENBQUEsR0FBRyxJQUFJLEVBQUUsQ0FBQSxLQUFkLENBQWM7d0NBQzFCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQTtvQ0FDaEUsQ0FBQyxJQUNELENBQUE7NEJBQ0osQ0FBQyxDQUFDLEVBQUE7O3dCQTVESSxHQUFHLEdBQUcsU0E0RFY7d0JBQ0YsV0FBTyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBQTs7O3dCQUV4QyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUMsQ0FBQyxDQUFBOzs7Ozs7S0FFNUI7SUFFSywyQ0FBYSxHQUFuQixVQUFvQixNQUFtRDs7Ozs7NEJBQ3NCLFdBQU0sSUFBSSxDQUFDLElBQUksRUFBQTs7d0JBQWxHLGFBQWEsR0FBcUUsQ0FBQyxTQUFlLENBQVEsY0FBN0Y7d0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7NEJBQzlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFDLE9BQU8sRUFBRSxNQUFNO2dDQUN0RCxhQUFhLENBQUM7b0NBQ1osTUFBTSxRQUFBO29DQUNOLE9BQU8sWUFBQyxHQUFHO3dDQUNULElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLEVBQUU7NENBQ3BDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQUcsMEJBQWMsbUJBQWdCLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFBO3lDQUM5Rjt3Q0FDRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7b0NBQ2QsQ0FBQztvQ0FDRCxJQUFJLFlBQUMsR0FBRzt3Q0FDTixNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFHLDBCQUFjLG1CQUFnQixFQUFFLHFCQUFxQixDQUFDLENBQUMsQ0FBQTt3Q0FDN0YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQTtvQ0FDbEMsQ0FBQztpQ0FDRixDQUFDLENBQUE7NEJBQ0osQ0FBQyxDQUFDLENBQUE7eUJBQ0g7d0JBRUQsV0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUE7Ozs7S0FDakM7SUFwSFk7UUFiWixvQkFBb0IsQ0FBQztZQUNwQixVQUFVLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFLFdBQVc7Z0JBQ3RCLFVBQVUsRUFBRSxlQUFlO2FBQzVCO1lBQ0QsS0FBSyxFQUFFLE1BQU07WUFDYixRQUFRLEVBQUU7Z0JBQ1IsVUFBVTtnQkFDVixxQ0FBcUM7Z0JBQ3JDLG1CQUFtQjtnQkFDbkIsc0tBQTZCLGtCQUFrQixDQUFFO2FBQ2xEO1NBQ0YsQ0FBQzs7aURBQ29FLFFBQVE7OzREQTZGN0U7SUF3QkgsMEJBQUM7Q0FBQSxBQTNLRCxJQTJLQztBQUVELElBQU0sU0FBUyxHQUF3QjtJQUNyQyxJQUFJLEVBQUUsMEJBQWM7SUFDcEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsTUFBTSxZQUFDLE1BQXdCO1FBQzdCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsK0RBQStELENBQUMsQ0FBQTtZQUNwRyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQTtTQUM5QjtRQUVELElBQU0sUUFBUSxHQUFHLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQTtRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRTFELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFBO0lBQy9CLENBQUM7Q0FDRixDQUFBO0FBQ0QsSUFBSTtJQUNGLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtDQUN2QztBQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUU7QUFFZCxTQUFnQixrQkFBa0IsQ0FBQyxHQUEwQztJQUMzRSxJQUFJO1FBQ0YsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0tBQ2pDO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0FBQ0gsQ0FBQztBQU5ELGdEQU1DO0FBRUQsU0FBZSxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQVc7SUFBWCxxQkFBQSxFQUFBLFdBQVc7O1FBQ3ZELFNBQWUsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxnQkFBd0I7WUFBeEIsaUNBQUEsRUFBQSx3QkFBd0I7Ozs7OztpQ0FDMUUsQ0FBQSxnQkFBZ0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQSxFQUFyRCxjQUFxRDs0QkFDakMsV0FBTSxJQUFJLEVBQUE7Z0NBQWpCLFdBQU0sQ0FBQyxTQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBQTs7NEJBQXpDLE1BQU0sR0FBRyxTQUFnQzs0QkFDekMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFBLG9CQUFVLEVBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBOzRCQUM1RSxXQUFPLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxFQUFBO2dDQUd0RCxXQUFPLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUE7Ozs7U0FDNUQ7Ozs7O29CQUVHLFlBQVksY0FDZCxHQUFHLEVBQUU7NEJBQ0gsVUFBVSxFQUFFLENBQUM7NEJBQ2IsU0FBUyxFQUFFLENBQUM7NEJBQ1osTUFBTSxFQUFFLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQztnQ0FDN0IsT0FBTyxFQUFFLEdBQUc7NkJBQ2IsQ0FBQzt5QkFLSCxJQUNFLE1BQU0sQ0FDVixDQUFBO29CQUVLLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFBO29CQUVoRCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7d0JBQ2pCLEVBQUUsR0FBRyxJQUFJLHNCQUFFLEVBQUUsQ0FBQTt3QkFDYixFQUFFLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPOzRCQUM1QyxFQUFFLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFBO3dCQUNuQyxDQUFDLENBQUMsQ0FBQTt3QkFDRixZQUFZLHlCQUNQLEVBQUUsQ0FBQyxZQUFZLEtBQ2xCLEdBQUcsd0JBQ0UsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQ3RCLFlBQVksWUFBQyxNQUFNO29DQUNqQixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQ0FDeEMsQ0FBQyxNQUVKLENBQUE7cUJBQ0Y7b0JBRWMsV0FBTSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixDQUFDLEVBQUE7O29CQUEvRSxNQUFNLEdBQUcsU0FBc0U7eUJBRWpGLENBQUEsSUFBSSxLQUFLLElBQUksQ0FBQSxFQUFiLGNBQWE7b0JBQ2YsV0FBTSxPQUFPLENBQUMsSUFBSSxDQUFDOzRCQUNqQixFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7NEJBQ3ZCLElBQUksT0FBTyxDQUFDLFVBQUEsT0FBTyxJQUFJLE9BQUEsVUFBVSxDQUFDO2dDQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7NEJBQ2YsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUZnQixDQUVoQixDQUFFO3lCQUNWLENBQUMsRUFBQTs7b0JBTEYsU0FLRSxDQUFBO29CQUVGLFdBQU87NEJBQ0wsYUFBYSxFQUFHLE1BQWMsQ0FBQyxhQUFhOzRCQUM1QyxhQUFhLEVBQUcsTUFBYyxDQUFDLGFBQWE7eUJBQzdDLEVBQUE7d0JBU0gsV0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBQTs7OztDQUMvQjtBQUVELFNBQVMsYUFBYSxDQUFDLEtBQWEsRUFBRSxhQUFxQixFQUFFLFNBQThCO0lBQTlCLDBCQUFBLEVBQUEsb0JBQThCO0lBQ3pGLE9BQU8sSUFBSSxPQUFPLENBQU0sVUFBQyxPQUFPLEVBQUUsTUFBTTtRQUN0QyxJQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFBO1FBRWpDLElBQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDaEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDakMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFDM0MsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUM5QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLEVBQUU7Z0JBQzVELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFvQixDQUFDLENBQUMsQ0FBQTthQUMxQztZQUNELElBQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGtDQUEyQixhQUFhLG9CQUFVLEtBQUssT0FBSSxDQUFDLENBQUE7WUFDcEYsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEIsQ0FBQyxDQUFDLENBQUE7UUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFVBQUMsQ0FBQztZQUNqQyxJQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyx1QkFBZ0IsYUFBYSxpQ0FBdUIsS0FBSyxnQkFBTSxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxPQUFPLEtBQUksRUFBRSxDQUFFLENBQUMsQ0FBQTtZQUMxRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDZixDQUFDLENBQUMsQ0FBQTtRQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BDLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELFNBQWUsb0JBQW9CLENBQUMsR0FBRzs7O1lBQ3JDLFdBQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQyxFQUFBOzs7Q0FDcEQ7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEdBQUc7SUFDN0IsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7SUFFNUIsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFBO0lBQ2pCLElBQUk7UUFDRixJQUFNLFVBQVEsR0FBRyxJQUFBLGdCQUFRLEVBQUMsR0FBRyxDQUFDLENBQUE7UUFDOUIsUUFBUSxHQUFHLFVBQVEsQ0FBQyxRQUFRLENBQUE7S0FDN0I7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLFFBQVEsR0FBRyxHQUFHLENBQUE7S0FDZjtJQUVELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUMxQixnQkFBZ0IsR0FBRyxJQUFJLENBQUE7S0FDeEI7SUFDRCxPQUFPLGdCQUFnQixDQUFBO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2xvdWRiYXNlIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB7IElDbG91ZGJhc2VDb21wb25lbnQgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbXBvbmVudCdcbmltcG9ydCB7IElDYWxsQ29udGFpbmVyT3B0aW9ucywgSUNvbnRpYW5lckNvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29udGFpbmVyJ1xuaW1wb3J0IHsgY29uc3RhbnRzLCB1dGlscywgaGVscGVycyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuLy8gaW1wb3J0IGJyb3RsaVByb21pc2UgZnJvbSAnYnJvdGxpLWRlYy13YXNtJyAvLyBJbXBvcnQgdGhlIGRlZmF1bHQgZXhwb3J0XG5pbXBvcnQgZGVjb21wcmVzcyBmcm9tICdicm90bGkvZGVjb21wcmVzcydcblxuaW1wb3J0IEdvIGZyb20gJy4vZ29fd2Ftc19leGVjJ1xuaW1wb3J0IHsgaXNCdWZmZXIsIHBhcnNlVVJMLCBzZXJpYWxpemVSZXF1ZXN0Qm9keSB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSAnLi91dGlscy9yZXF1ZXN0J1xuaW1wb3J0IHsgQ09NUE9ORU5UX05BTUUgfSBmcm9tICcuL2NvbnN0YW50cydcblxuZGVjbGFyZSBjb25zdCBjbG91ZGJhc2U6IElDbG91ZGJhc2VcblxuY29uc3QgeyBFUlJPUlMsIENPTU1VTklUWV9TSVRFX1VSTCB9ID0gY29uc3RhbnRzXG5jb25zdCB7IGV4ZWNDYWxsYmFjaywgcHJpbnRXYXJuIH0gPSB1dGlsc1xuY29uc3QgeyBjYXRjaEVycm9yc0RlY29yYXRvciB9ID0gaGVscGVyc1xuXG5jbGFzcyBJbnZhbGllUGFyYW1zRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvZGU6IGFueVxuICBjb25zdHJ1Y3RvcihzY29wZSwgbWVzc2FnZSkge1xuICAgIGNvbnN0IG1zZyA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGNvZGU6IEVSUk9SUy5JTlZBTElEX1BBUkFNUyxcbiAgICAgIG1zZzogYFske3Njb3BlfV0gJHttZXNzYWdlfWAsXG4gICAgfSlcbiAgICBzdXBlcihtc2cpXG4gICAgdGhpcy5jb2RlID0gRVJST1JTLklOVkFMSURfUEFSQU1TXG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiB0aGlzLmNvZGUsXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBJQ2FsbFRjYkNvbnRhaW5lck9wdGlvbnMgZXh0ZW5kcyBJQ2FsbENvbnRhaW5lck9wdGlvbnMge1xuICBzdWNjZXNzOiAocmVzOiB7IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlcjsgaGVhZGVyOiBJQ2FsbENvbnRhaW5lck9wdGlvbnNbJ2hlYWRlciddOyBkYXRhOiBhbnkgfSkgPT4gdm9pZFxuICBmYWlsOiAocmVzOiB7IGRhdGE6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KSA9PiB2b2lkXG59XG5cbmludGVyZmFjZSBJSW5pdFRjYkNvbnRhaW5lck9wdGlvbnMge1xuICBjb25maWc6IE9taXQ8SUNvbnRpYW5lckNvbmZpZywgJ3dhc21VcmwnIHwgJ2pzVXJsJz5cbiAgc3VjY2VzczogKHJlczogeyBzdGF0dXNDb2RlOiBzdHJpbmcgfCBudW1iZXI7IGhlYWRlcjogSUNhbGxDb250YWluZXJPcHRpb25zWydoZWFkZXInXTsgZGF0YTogYW55IH0pID0+IHZvaWRcbiAgZmFpbDogKHJlczogeyBkYXRhOiB7IGNvZGU6IG51bWJlcjsgbWVzc2FnZTogc3RyaW5nIH0gfSkgPT4gdm9pZFxufVxuXG5mdW5jdGlvbiBnZW5Db250YWluZXJFcnJvcihkYXRhLCBzY29wZSA9IENPTVBPTkVOVF9OQU1FLCBkZWZhdWx0TWVzc2FnZSA9ICdjYWxsIGNvbnRhaW5lciBlcnJvcicpIHtcbiAgY29uc3QgZXJyb3IgPSBkYXRhIGluc3RhbmNlb2YgRXJyb3IgPyBkYXRhIDogbmV3IEVycm9yKGBbJHtzY29wZX1dICR7ZGF0YT8ubWVzc2FnZSB8fCBkZWZhdWx0TWVzc2FnZX1gKVxuICA7KGVycm9yIGFzIGFueSkuY29kZSA9IGRhdGE/LmNvZGUgfHwgJ1VOS05PV05fRVJST1InXG4gIHJldHVybiBlcnJvclxufVxuXG5jbGFzcyBDbG91ZGJhc2VDb250YWluZXJzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IElDb250aWFuZXJDb25maWdcbiAgcHJpdmF0ZSB3YXNtOiBQcm9taXNlPFdlYkFzc2VtYmx5LkV4cG9ydHM+XG4gIHByaXZhdGUgY29udGFpbmVySW5pdFByb21pc2U6IC8qIFByb21pc2U8YW55PiovIGFueSB8IG51bGxcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IElDb250aWFuZXJDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLndhc21VcmwgJiYgIXRoaXMuY29uZmlnLmpzVXJsICYmICEod2luZG93IGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGluaykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihgJHtDT01QT05FTlRfTkFNRX1gLCAn57y65bCRIHByaXZhdGVsaW5rIHNkayDlnLDlnYAnKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy53YXNtVXJsKSB7XG4gICAgICB0aGlzLndhc20gPSBnZXRFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy53YXNtVXJsLCB7XG4gICAgICAgIHV0aWxzOiB7XG4gICAgICAgICAgaW5mbyhlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgfSxcbiAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5qc1VybCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybignbG9hZCB3YW1zIGVycm9yLCBmYWxsIGJhY2sgdG8gdXNlIGpzJywgZSlcbiAgICAgICAgICByZXR1cm4gbG9hZEpTRXhwb3J0RnVuY3Rpb24odGhpcy5jb25maWcuanNVcmwpXG4gICAgICAgIH0gaWYgKCh3aW5kb3cgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rKSB7XG4gICAgICAgICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZVxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLmpzVXJsKSB7XG4gICAgICB0aGlzLndhc20gPSBsb2FkSlNFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy5qc1VybClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53YXNtID0gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgaW5pdENvbnRhaW5lcjogKHdpbmRvdyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmsuaW5pdENvbnRhaW5lcixcbiAgICAgICAgY2FsbENvbnRhaW5lcjogKHdpbmRvdyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmsuY2FsbENvbnRhaW5lcixcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICBjdXN0b21JbmZvOiB7XG4gICAgICBjbGFzc05hbWU6ICdDbG91ZGJhc2UnLFxuICAgICAgbWV0aG9kTmFtZTogJ2NhbGxDb250YWluZXInLFxuICAgIH0sXG4gICAgdGl0bGU6ICfosIPnlKjlpLHotKUnLFxuICAgIG1lc3NhZ2VzOiBbXG4gICAgICAn6K+356Gu6K6k5Lul5LiL5ZCE6aG577yaJyxcbiAgICAgICcgIDEgLSDosIPnlKggY2FsbENvbnRhaW5lcigpIOeahOivreazleaIluWPguaVsOaYr+WQpuato+ehricsXG4gICAgICAnICAyIC0g5Z+f5ZCNICYg6Lev5b6E5piv5ZCm5a2Y5ZyoJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gLFxuICAgIF0sXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBjYWxsQ29udGFpbmVyKG9wdGlvbnM6IElDYWxsQ29udGFpbmVyT3B0aW9ucywgY2FsbGJhY2s/OiBGdW5jdGlvbikge1xuICAgIGF3YWl0IHRoaXMuaW5pdENvbnRhaW5lcih0aGlzLmNvbmZpZylcbiAgICBjb25zdCBTQ09QRSA9IGAke0NPTVBPTkVOVF9OQU1FfS5jYWxsQ29udGFpbmVyYFxuICAgIGNvbnN0IHsgY2FsbENvbnRhaW5lciB9OiB7IGNhbGxDb250YWluZXI6IChvcHRpb25zOiBJQ2FsbFRjYkNvbnRhaW5lck9wdGlvbnMpID0+IHZvaWQgfSA9IChhd2FpdCB0aGlzLndhc20pIGFzIGFueVxuICAgIGNvbnN0IHtcbiAgICAgIHVybCxcbiAgICAgIG1ldGhvZCA9ICdHRVQnLFxuICAgICAgaGVhZGVyID0ge30sXG4gICAgICBkYXRhLFxuICAgICAgdGltZW91dCA9IDYwMDAwLFxuICAgICAgZGF0YVR5cGUgPSAnanNvbicsXG4gICAgICByZXNwb25zZVR5cGUgPSAndGV4dCcsXG4gICAgICAuLi5yZXN0T3B0aW9uc1xuICAgIH0gPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgIH1cblxuICAgIGlmICghdXJsKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZVBhcmFtc0Vycm9yKFNDT1BFLCAnaW52YWxpZCByZXF1ZXN0IHVybCcpXG4gICAgfVxuXG4gICAgaWYgKCFtZXRob2QpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGllUGFyYW1zRXJyb3IoU0NPUEUsICdpbnZhbGlkIHJlcXVlc3QgbWV0aG9kJylcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBoZWFkZXIsXG4gICAgICAgICAgZGF0YTogc2VyaWFsaXplUmVxdWVzdEJvZHkoaGVhZGVyLCBkYXRhKSxcbiAgICAgICAgICB0aW1lb3V0LFxuICAgICAgICAgIGRhdGFUeXBlLFxuICAgICAgICAgIHJlc3BvbnNlVHlwZSxcbiAgICAgICAgICAuLi5yZXN0T3B0aW9ucyxcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDpnZ4gYnVmZmVyXG4gICAgICAgICAqL1xuICAgICAgICBpZiAocGFyYW1zLmRhdGEgIT09IHVuZGVmaW5lZCAmJiAhaXNCdWZmZXIocGFyYW1zLmRhdGEpKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbXMuZGF0YSAhPT0gJ3N0cmluZycgJiYgbWV0aG9kID09PSAnR0VUJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgbGlzdCA9IE9iamVjdC5lbnRyaWVzKHBhcmFtcy5kYXRhIHx8IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKGxpc3QsIFtrZXksIHZhbHVlXTogW3N0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbl0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGxpc3QucHVzaChgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHZhbHVlKSl9YClcbiAgICAgICAgICAgICAgICAgIHJldHVybiBsaXN0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAobGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuZGF0YSA9IGxpc3Quam9pbignJicpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG1ldGhvZCA9PT0gJ0dFVCcgJiYgdHlwZW9mIHBhcmFtcy5kYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkVXJsID0gcGFyc2VVUkwodXJsKVxuICAgICAgICAgICAgaWYgKHBhcnNlZFVybC5zZWFyY2gpIHtcbiAgICAgICAgICAgICAgcGFyc2VkVXJsLnNlYXJjaCArPSBwYXJhbXMuZGF0YVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGFyc2VkVXJsLnNlYXJjaCA9IGA/JHtwYXJhbXMuZGF0YX1gXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJhbXMudXJsID0gcGFyc2VkVXJsLmhyZWZcbiAgICAgICAgICAgIHBhcmFtcy5kYXRhID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRhdGFcbiAgICAgICAgICAmJiAoaXNCdWZmZXIocGFyYW1zLmRhdGEpIHx8IHR5cGVvZiBwYXJhbXMuZGF0YSA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgJiYgKGRhdGEgYXMgYW55KT8ubGVuZ3RoID4gMTAwMCAqIDEwMjQgKiAxMFxuICAgICAgICApIHtcbiAgICAgICAgICByZWplY3QobmV3IEludmFsaWVQYXJhbXNFcnJvcihTQ09QRSwgJ2JvZHkgdG9vIGxhcmdlJykpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjYWxsQ29udGFpbmVyKHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgc3VjY2VzczogcmVzb2x2ZSxcbiAgICAgICAgICBmYWlsOiAocmVzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IHJlcyB8fCB7fVxuICAgICAgICAgICAgcmVqZWN0KGdlbkNvbnRhaW5lckVycm9yKGRhdGEsIFNDT1BFLCAnY2FsbCBjb250YWluZXIgZXJyb3InKSlcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIHJldHVybiBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIG51bGwsIHJlcylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBleGVjQ2FsbGJhY2soY2FsbGJhY2ssIGUpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdENvbnRhaW5lcihjb25maWc6IE9taXQ8SUNvbnRpYW5lckNvbmZpZywgJ3dhc21VcmwnIHwgJ2pzVXJsJz4pIHtcbiAgICBjb25zdCB7IGluaXRDb250YWluZXIgfTogeyBpbml0Q29udGFpbmVyOiAob3B0aW9uczogSUluaXRUY2JDb250YWluZXJPcHRpb25zKSA9PiB2b2lkIH0gPSAoYXdhaXQgdGhpcy53YXNtKSBhcyBhbnlcbiAgICBpZiAoIXRoaXMuY29udGFpbmVySW5pdFByb21pc2UpIHtcbiAgICAgIHRoaXMuY29udGFpbmVySW5pdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGluaXRDb250YWluZXIoe1xuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBzdWNjZXNzKHJlcykge1xuICAgICAgICAgICAgaWYgKFN0cmluZyhyZXMuc3RhdHVzQ29kZSkgIT09ICcyMDAnKSB7XG4gICAgICAgICAgICAgIHJlamVjdChnZW5Db250YWluZXJFcnJvcihyZXMuZGF0YSwgYCR7Q09NUE9ORU5UX05BTUV9LmluaXRDb250YWluZXJgLCAnaW5pdCBjb250YWluZXIgZmFpbCcpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShyZXMpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWlsKHJlcykge1xuICAgICAgICAgICAgcmVqZWN0KGdlbkNvbnRhaW5lckVycm9yKHJlcy5kYXRhLCBgJHtDT01QT05FTlRfTkFNRX0uaW5pdENvbnRhaW5lcmAsICdpbml0IGNvbnRhaW5lciBmYWlsJykpXG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXJJbml0UHJvbWlzID0gbnVsbFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lckluaXRQcm9taXNlXG4gIH1cbn1cblxuY29uc3QgY29tcG9uZW50OiBJQ2xvdWRiYXNlQ29tcG9uZW50ID0ge1xuICBuYW1lOiBDT01QT05FTlRfTkFNRSxcbiAgbmFtZXNwYWNlOiAnY29udGFpbmVyJyxcbiAgZW50aXR5KGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZykge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lckluc3RhbmNlKSB7XG4gICAgICBwcmludFdhcm4oRVJST1JTLklOVkFMSURfT1BFUkFUSU9OLCAnZXZlcnkgY2xvdWRiYXNlIGluc3RhbmNlIHNob3VsZCBoYXMgb25seSBvbmUgY29udGFpbmVyIG9iamVjdCcpXG4gICAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbnN0YW5jZVxuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IENsb3VkYmFzZUNvbnRhaW5lcnMoY29uZmlnKVxuICAgIHRoaXMuY29udGFpbmVySW5zdGFuY2UgPSBpbnN0YW5jZVxuICAgIHRoaXMuY2FsbENvbnRhaW5lciA9IGluc3RhbmNlLmNhbGxDb250YWluZXIuYmluZChpbnN0YW5jZSlcblxuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lckluc3RhbmNlXG4gIH0sXG59XG50cnkge1xuICBjbG91ZGJhc2UucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KVxufSBjYXRjaCAoZSkge31cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyQ29udGFpbmVycyhhcHA6IFBpY2s8SUNsb3VkYmFzZSwgJ3JlZ2lzdGVyQ29tcG9uZW50Jz4pIHtcbiAgdHJ5IHtcbiAgICBhcHAucmVnaXN0ZXJDb21wb25lbnQoY29tcG9uZW50KVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS53YXJuKGUpXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXhwb3J0RnVuY3Rpb24odXJsLCBtb2R1bGUsIG1vZGUgPSAnZ28nKSB7XG4gIGFzeW5jIGZ1bmN0aW9uIGluc3RhbnRpYXRlU3RyZWFtaW5nKHJlc3AsIGltcG9ydE9iamVjdCwgYnJvdGxpQ29tcHJlc3NlZCA9IGZhbHNlKSB7XG4gICAgaWYgKGJyb3RsaUNvbXByZXNzZWQgfHwgIVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCAoYXdhaXQgcmVzcCkuYXJyYXlCdWZmZXIoKVxuICAgICAgY29uc3QgYnVmZmVyID0gYnJvdGxpQ29tcHJlc3NlZCA/IGRlY29tcHJlc3MobmV3IEludDhBcnJheShzb3VyY2UpKSA6IHNvdXJjZVxuICAgICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGJ1ZmZlciwgaW1wb3J0T2JqZWN0KVxuICAgIH1cblxuICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhyZXNwLCBpbXBvcnRPYmplY3QpXG4gIH1cblxuICBsZXQgaW1wb3J0T2JqZWN0ID0ge1xuICAgIGVudjoge1xuICAgICAgbWVtb3J5QmFzZTogMCxcbiAgICAgIHRhYmxlQmFzZTogMCxcbiAgICAgIG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7XG4gICAgICAgIGluaXRpYWw6IDI1NixcbiAgICAgIH0pLFxuICAgICAgLy8gdGFibGU6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7XG4gICAgICAvLyAgIGluaXRpYWw6IDIsXG4gICAgICAvLyAgIGVsZW1lbnQ6ICdhbnlmdW5jJyxcbiAgICAgIC8vIH0pLFxuICAgIH0sXG4gICAgLi4ubW9kdWxlLFxuICB9XG4gIGxldCBnb1xuICBjb25zdCBicm90bGlDb21wcmVzc2VkID0gaXNCcm90bGlDb21wcmVzc2VkKHVybClcblxuICBpZiAobW9kZSA9PT0gJ2dvJykge1xuICAgIGdvID0gbmV3IEdvKClcbiAgICBnby5faW5pdGVkTW9kdWxlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBnby5faW5pdGVkTW9kdWxlUmVzb2x2ZSA9IHJlc29sdmVcbiAgICB9KVxuICAgIGltcG9ydE9iamVjdCA9IHtcbiAgICAgIC4uLmdvLmltcG9ydE9iamVjdCxcbiAgICAgIGVudjoge1xuICAgICAgICAuLi5nby5pbXBvcnRPYmplY3QuZW52LFxuICAgICAgICBleHBvcnRNb2R1bGUobW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuIGdvLl9pbml0ZWRNb2R1bGVSZXNvbHZlKG1vZHVsZSlcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1c2x0ID0gYXdhaXQgaW5zdGFudGlhdGVTdHJlYW1pbmcoZmV0Y2godXJsKSwgaW1wb3J0T2JqZWN0LCBicm90bGlDb21wcmVzc2VkKVxuXG4gIGlmIChtb2RlID09PSAnZ28nKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIGdvLnJ1bihyZXVzbHQuaW5zdGFuY2UpLFxuICAgICAgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVzb2x2ZShudWxsKVxuICAgICAgfSwgNTAwKSwpLFxuICAgIF0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgY2FsbENvbnRhaW5lcjogKHdpbmRvdyBhcyBhbnkpLmNhbGxDb250YWluZXIsXG4gICAgICBpbml0Q29udGFpbmVyOiAod2luZG93IGFzIGFueSkuaW5pdENvbnRhaW5lcixcbiAgICB9XG4gIH1cblxuICAvLyBpZiAobW9kZSA9PT0gJ2dvJykge1xuICAvLyAgIGdvLnJ1bihyZXVzbHQuaW5zdGFuY2UpXG4gIC8vICAgY29uc3QgbW9kdWxlID0gYXdhaXQgZ28uX2luaXRlZE1vZHVsZVByb21pc2VcbiAgLy8gICByZXR1cm4gbW9kdWxlXG4gIC8vIH1cblxuICByZXR1cm4gcmV1c2x0Lmluc3RhbmNlLmV4cG9ydHNcbn1cblxuZnVuY3Rpb24gbG9hZFVtZE1vZHVsZShqc1VybDogc3RyaW5nLCB1bWRNb2R1bGVOYW1lOiBzdHJpbmcsIHRhcmdldERvYzogRG9jdW1lbnQgPSBkb2N1bWVudCkge1xuICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd2luID0gdGFyZ2V0RG9jLmRlZmF1bHRWaWV3XG5cbiAgICBjb25zdCBzY3JpcHQgPSB0YXJnZXREb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0JylcbiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdzcmMnLCBqc1VybClcbiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdjbGFzcycsIHVtZE1vZHVsZU5hbWUpXG4gICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHdpbiwgdW1kTW9kdWxlTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUod2luW3VtZE1vZHVsZU5hbWUgYXMgYW55XSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBGYWlsIHRvIGxvYWQgVU1EIG1vZHVsZSAke3VtZE1vZHVsZU5hbWV9IGZyb20gWyR7anNVcmx9XS5gKVxuICAgICAgcmV0dXJuIHJlamVjdChlcnJvcilcbiAgICB9KVxuXG4gICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBtYWluIGJ1bmRsZSBbJHt1bWRNb2R1bGVOYW1lfV0gbG9hZCBmYWlsZWQgZnJvbSBbJHtqc1VybH1dOiAke2U/Lm1lc3NhZ2UgfHwgJyd9YClcbiAgICAgIHJlamVjdChlcnJvcilcbiAgICB9KVxuICAgIHRhcmdldERvYy5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdClcbiAgfSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZEpTRXhwb3J0RnVuY3Rpb24odXJsKSB7XG4gIHJldHVybiBsb2FkVW1kTW9kdWxlKHVybCwgJ2Nsb3VkYmFzZV9wcml2YXRlX2xpbmsnKVxufVxuXG5mdW5jdGlvbiBpc0Jyb3RsaUNvbXByZXNzZWQodXJsKSB7XG4gIGxldCBicm90bGlDb21wcmVzc2VkID0gZmFsc2VcblxuICBsZXQgcGF0aG5hbWUgPSAnJ1xuICB0cnkge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gcGFyc2VVUkwodXJsKVxuICAgIHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWVcbiAgfSBjYXRjaCAoZSkge1xuICAgIHBhdGhuYW1lID0gdXJsXG4gIH1cblxuICBpZiAoL1xcLmJyJC8udGVzdChwYXRobmFtZSkpIHtcbiAgICBicm90bGlDb21wcmVzc2VkID0gdHJ1ZVxuICB9XG4gIHJldHVybiBicm90bGlDb21wcmVzc2VkXG59XG4iXX0=
@@ -1,11 +1,2 @@
1
1
  import { ICloudbase } from '@cloudbase/types';
2
- import { ICallContainerOptions, IContianerConfig } from '@cloudbase/types/container';
3
- export declare class CloudbaseContainers {
4
- private readonly config;
5
- private wasm;
6
- private containerInitPromise;
7
- constructor(config: IContianerConfig);
8
- callContainer(options: ICallContainerOptions, callback?: Function): Promise<any>;
9
- initContainer(config: Omit<IContianerConfig, 'wasmUrl' | 'jsUrl'>): Promise<any>;
10
- }
11
2
  export declare function registerContainers(app: Pick<ICloudbase, 'registerComponent'>): void;
package/dist/esm/index.js CHANGED
@@ -116,11 +116,11 @@ function genContainerError(data, scope, defaultMessage) {
116
116
  error.code = (data === null || data === void 0 ? void 0 : data.code) || 'UNKNOWN_ERROR';
117
117
  return error;
118
118
  }
119
- export var CloudbaseContainers = (function () {
119
+ var CloudbaseContainers = (function () {
120
120
  function CloudbaseContainers(config) {
121
121
  var _this = this;
122
122
  this.config = __assign({}, config);
123
- if (!this.config.wasmUrl && !this.config.jsUrl && !globalThis.cloudbase_private_link) {
123
+ if (!this.config.wasmUrl && !this.config.jsUrl && !window.cloudbase_private_link) {
124
124
  throw new InvalieParamsError("".concat(COMPONENT_NAME), '缺少 privatelink sdk 地址');
125
125
  }
126
126
  if (this.config.wasmUrl) {
@@ -136,8 +136,8 @@ export var CloudbaseContainers = (function () {
136
136
  console.warn('load wams error, fall back to use js', e);
137
137
  return loadJSExportFunction(_this.config.jsUrl);
138
138
  }
139
- if (globalThis.cloudbase_private_link) {
140
- return globalThis.cloudbase_private_link;
139
+ if (window.cloudbase_private_link) {
140
+ return window.cloudbase_private_link;
141
141
  }
142
142
  throw e;
143
143
  });
@@ -147,15 +147,14 @@ export var CloudbaseContainers = (function () {
147
147
  }
148
148
  else {
149
149
  this.wasm = Promise.resolve({
150
- initContainer: globalThis.cloudbase_private_link.initContainer,
151
- callContainer: globalThis.cloudbase_private_link.callContainer,
150
+ initContainer: window.cloudbase_private_link.initContainer,
151
+ callContainer: window.cloudbase_private_link.callContainer,
152
152
  });
153
153
  }
154
154
  }
155
155
  CloudbaseContainers.prototype.callContainer = function (options, callback) {
156
156
  return __awaiter(this, void 0, void 0, function () {
157
- var SCOPE, callContainer, _a, url, method, header, data, timeout, dataType, responseType, restOptions, res, e_1;
158
- var _b, _c, _d, _e, _f;
157
+ var SCOPE, callContainer, _a, url, _b, method, _c, header, data, _d, timeout, _e, dataType, _f, responseType, restOptions, res, e_1;
159
158
  return __generator(this, function (_g) {
160
159
  switch (_g.label) {
161
160
  case 0: return [4, this.initContainer(this.config)];
@@ -165,7 +164,7 @@ export var CloudbaseContainers = (function () {
165
164
  return [4, this.wasm];
166
165
  case 2:
167
166
  callContainer = (_g.sent()).callContainer;
168
- _a = __assign({}, options), url = _a.url, method = (_b = _a.method, _b === void 0 ? 'GET' : _b), header = (_c = _a.header, _c === void 0 ? {} : _c), data = _a.data, timeout = (_d = _a.timeout, _d === void 0 ? 60000 : _d), dataType = (_e = _a.dataType, _e === void 0 ? 'json' : _e), responseType = (_f = _a.responseType, _f === void 0 ? 'text' : _f), restOptions = __rest(_a, ["url", "method", "header", "data", "timeout", "dataType", "responseType"]);
167
+ _a = __assign({}, options), url = _a.url, _b = _a.method, method = _b === void 0 ? 'GET' : _b, _c = _a.header, header = _c === void 0 ? {} : _c, data = _a.data, _d = _a.timeout, timeout = _d === void 0 ? 60000 : _d, _e = _a.dataType, dataType = _e === void 0 ? 'json' : _e, _f = _a.responseType, responseType = _f === void 0 ? 'text' : _f, restOptions = __rest(_a, ["url", "method", "header", "data", "timeout", "dataType", "responseType"]);
169
168
  if (!url) {
170
169
  throw new InvalieParamsError(SCOPE, 'invalid request url');
171
170
  }
@@ -191,10 +190,10 @@ export var CloudbaseContainers = (function () {
191
190
  }
192
191
  catch (e) { }
193
192
  }
194
- if (method === 'GET' && typeof params.data === 'string' && params.data) {
193
+ if (method === 'GET' && typeof params.data === 'string') {
195
194
  var parsedUrl = parseURL(url);
196
195
  if (parsedUrl.search) {
197
- parsedUrl.search += "&".concat(params.data);
196
+ parsedUrl.search += params.data;
198
197
  }
199
198
  else {
200
199
  parsedUrl.search = "?".concat(params.data);
@@ -384,12 +383,7 @@ function loadUmdModule(jsUrl, umdModuleName, targetDoc) {
384
383
  var error = new Error("main bundle [".concat(umdModuleName, "] load failed from [").concat(jsUrl, "]: ").concat((e === null || e === void 0 ? void 0 : e.message) || ''));
385
384
  reject(error);
386
385
  });
387
- if (targetDoc.body) {
388
- targetDoc.body.appendChild(script);
389
- }
390
- else {
391
- targetDoc.head.appendChild(script);
392
- }
386
+ targetDoc.body.appendChild(script);
393
387
  });
394
388
  }
395
389
  function loadJSExportFunction(url) {
@@ -414,4 +408,4 @@ function isBrotliCompressed(url) {
414
408
  }
415
409
  return brotliCompressed;
416
410
  }
417
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWhFLE9BQU8sVUFBVSxNQUFNLG1CQUFtQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQy9CLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBSXBDLElBQUEsTUFBTSxHQUF5QixTQUFTLE9BQWxDLEVBQUUsa0JBQWtCLEdBQUssU0FBUyxtQkFBZCxDQUFjO0FBQ3hDLElBQUEsWUFBWSxHQUFnQixLQUFLLGFBQXJCLEVBQUUsU0FBUyxHQUFLLEtBQUssVUFBVixDQUFVO0FBQ2pDLElBQUEsb0JBQW9CLEdBQUssT0FBTyxxQkFBWixDQUFZO0FBRXhDO0lBQWlDLHNDQUFLO0lBRXBDLDRCQUFZLEtBQUssRUFBRSxPQUFPO1FBQTFCLGlCQU9DO1FBTkMsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7WUFDM0IsR0FBRyxFQUFFLFdBQUksS0FBSyxlQUFLLE9BQU8sQ0FBRTtTQUM3QixDQUFDLENBQUE7Z0JBQ0Ysa0JBQU0sR0FBRyxDQUFDO1FBQ1YsS0FBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFBOztJQUNuQyxDQUFDO0lBQ0QsbUNB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QkFBZ0IsYUFBYSxpQ0FBdUIsS0FBSyxnQkFBTSxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxPQUFPLEtBQUksRUFBRSxDQUFFLENBQUMsQ0FBQTtZQUMxRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDZixDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksU0FBUyxDQUFDLElBQUksRUFBRTtZQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUNuQzthQUFNO1lBQ0wsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDbkM7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxTQUFlLG9CQUFvQixDQUFDLEdBQUc7OztZQUNyQyxXQUFPLGFBQWEsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUMsRUFBQTs7O0NBQ3BEO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHO0lBQzdCLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFBO0lBRTVCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQTtJQUNqQixJQUFJO1FBQ0YsSUFBTSxVQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzlCLFFBQVEsR0FBRyxVQUFRLENBQUMsUUFBUSxDQUFBO0tBQzdCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixRQUFRLEdBQUcsR0FBRyxDQUFBO0tBQ2Y7SUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDMUIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFBO0tBQ3hCO0lBQ0QsT0FBTyxnQkFBZ0IsQ0FBQTtBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNsb3VkYmFzZSB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMnXG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ29tcG9uZW50IH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9jb21wb25lbnQnXG5pbXBvcnQgeyBJQ2FsbENvbnRhaW5lck9wdGlvbnMsIElDb250aWFuZXJDb25maWcgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NvbnRhaW5lcidcbmltcG9ydCB7IGNvbnN0YW50cywgdXRpbHMsIGhlbHBlcnMgfSBmcm9tICdAY2xvdWRiYXNlL3V0aWxpdGllcydcbi8vIGltcG9ydCBicm90bGlQcm9taXNlIGZyb20gJ2Jyb3RsaS1kZWMtd2FzbScgLy8gSW1wb3J0IHRoZSBkZWZhdWx0IGV4cG9ydFxuaW1wb3J0IGRlY29tcHJlc3MgZnJvbSAnYnJvdGxpL2RlY29tcHJlc3MnXG5cbmltcG9ydCBHbyBmcm9tICcuL2dvX3dhbXNfZXhlYydcbmltcG9ydCB7IGlzQnVmZmVyLCBwYXJzZVVSTCwgc2VyaWFsaXplUmVxdWVzdEJvZHkgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgcmVxdWVzdCB9IGZyb20gJy4vdXRpbHMvcmVxdWVzdCdcbmltcG9ydCB7IENPTVBPTkVOVF9OQU1FIH0gZnJvbSAnLi9jb25zdGFudHMnXG5cbmRlY2xhcmUgY29uc3QgY2xvdWRiYXNlOiBJQ2xvdWRiYXNlXG5cbmNvbnN0IHsgRVJST1JTLCBDT01NVU5JVFlfU0lURV9VUkwgfSA9IGNvbnN0YW50c1xuY29uc3QgeyBleGVjQ2FsbGJhY2ssIHByaW50V2FybiB9ID0gdXRpbHNcbmNvbnN0IHsgY2F0Y2hFcnJvcnNEZWNvcmF0b3IgfSA9IGhlbHBlcnNcblxuY2xhc3MgSW52YWxpZVBhcmFtc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb2RlOiBhbnlcbiAgY29uc3RydWN0b3Ioc2NvcGUsIG1lc3NhZ2UpIHtcbiAgICBjb25zdCBtc2cgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBjb2RlOiBFUlJPUlMuSU5WQUxJRF9QQVJBTVMsXG4gICAgICBtc2c6IGBbJHtzY29wZX1dICR7bWVzc2FnZX1gLFxuICAgIH0pXG4gICAgc3VwZXIobXNnKVxuICAgIHRoaXMuY29kZSA9IEVSUk9SUy5JTlZBTElEX1BBUkFNU1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgSUNhbGxUY2JDb250YWluZXJPcHRpb25zIGV4dGVuZHMgSUNhbGxDb250YWluZXJPcHRpb25zIHtcbiAgc3VjY2VzczogKHJlczogeyBzdGF0dXNDb2RlOiBzdHJpbmcgfCBudW1iZXI7IGhlYWRlcjogSUNhbGxDb250YWluZXJPcHRpb25zWydoZWFkZXInXTsgZGF0YTogYW55IH0pID0+IHZvaWRcbiAgZmFpbDogKHJlczogeyBkYXRhOiB7IGNvZGU6IG51bWJlcjsgbWVzc2FnZTogc3RyaW5nIH0gfSkgPT4gdm9pZFxufVxuXG5pbnRlcmZhY2UgSUluaXRUY2JDb250YWluZXJPcHRpb25zIHtcbiAgY29uZmlnOiBPbWl0PElDb250aWFuZXJDb25maWcsICd3YXNtVXJsJyB8ICdqc1VybCc+XG4gIHN1Y2Nlc3M6IChyZXM6IHsgc3RhdHVzQ29kZTogc3RyaW5nIHwgbnVtYmVyOyBoZWFkZXI6IElDYWxsQ29udGFpbmVyT3B0aW9uc1snaGVhZGVyJ107IGRhdGE6IGFueSB9KSA9PiB2b2lkXG4gIGZhaWw6IChyZXM6IHsgZGF0YTogeyBjb2RlOiBudW1iZXI7IG1lc3NhZ2U6IHN0cmluZyB9IH0pID0+IHZvaWRcbn1cblxuZnVuY3Rpb24gZ2VuQ29udGFpbmVyRXJyb3IoZGF0YSwgc2NvcGUgPSBDT01QT05FTlRfTkFNRSwgZGVmYXVsdE1lc3NhZ2UgPSAnY2FsbCBjb250YWluZXIgZXJyb3InKSB7XG4gIGNvbnN0IGVycm9yID0gZGF0YSBpbnN0YW5jZW9mIEVycm9yID8gZGF0YSA6IG5ldyBFcnJvcihgWyR7c2NvcGV9XSAke2RhdGE/Lm1lc3NhZ2UgfHwgZGVmYXVsdE1lc3NhZ2V9YClcbiAgOyhlcnJvciBhcyBhbnkpLmNvZGUgPSBkYXRhPy5jb2RlIHx8ICdVTktOT1dOX0VSUk9SJ1xuICByZXR1cm4gZXJyb3Jcbn1cblxuZXhwb3J0IGNsYXNzIENsb3VkYmFzZUNvbnRhaW5lcnMge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZ1xuICBwcml2YXRlIHdhc206IFByb21pc2U8V2ViQXNzZW1ibHkuRXhwb3J0cz5cbiAgcHJpdmF0ZSBjb250YWluZXJJbml0UHJvbWlzZTogLyogUHJvbWlzZTxhbnk+Ki8gYW55IHwgbnVsbFxuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcud2FzbVVybCAmJiAhdGhpcy5jb25maWcuanNVcmwgJiYgIShnbG9iYWxUaGlzIGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGluaykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihgJHtDT01QT05FTlRfTkFNRX1gLCAn57y65bCRIHByaXZhdGVsaW5rIHNkayDlnLDlnYAnKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy53YXNtVXJsKSB7XG4gICAgICB0aGlzLndhc20gPSBnZXRFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy53YXNtVXJsLCB7XG4gICAgICAgIHV0aWxzOiB7XG4gICAgICAgICAgaW5mbyhlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgfSxcbiAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5qc1VybCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybignbG9hZCB3YW1zIGVycm9yLCBmYWxsIGJhY2sgdG8gdXNlIGpzJywgZSlcbiAgICAgICAgICByZXR1cm4gbG9hZEpTRXhwb3J0RnVuY3Rpb24odGhpcy5jb25maWcuanNVcmwpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKChnbG9iYWxUaGlzIGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGluaykge1xuICAgICAgICAgIHJldHVybiAoZ2xvYmFsVGhpcyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcuanNVcmwpIHtcbiAgICAgIHRoaXMud2FzbSA9IGxvYWRKU0V4cG9ydEZ1bmN0aW9uKHRoaXMuY29uZmlnLmpzVXJsKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndhc20gPSBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICBpbml0Q29udGFpbmVyOiAoZ2xvYmFsVGhpcyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmsuaW5pdENvbnRhaW5lcixcbiAgICAgICAgY2FsbENvbnRhaW5lcjogKGdsb2JhbFRoaXMgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rLmNhbGxDb250YWluZXIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIEBjYXRjaEVycm9yc0RlY29yYXRvcih7XG4gICAgY3VzdG9tSW5mbzoge1xuICAgICAgY2xhc3NOYW1lOiAnQ2xvdWRiYXNlJyxcbiAgICAgIG1ldGhvZE5hbWU6ICdjYWxsQ29udGFpbmVyJyxcbiAgICB9LFxuICAgIHRpdGxlOiAn6LCD55So5aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGNhbGxDb250YWluZXIoKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOWfn+WQjSAmIOi3r+W+hOaYr+WQpuWtmOWcqCcsXG4gICAgICBg5aaC5p6c6Zeu6aKY5L6d54S25a2Y5Zyo77yM5bu66K6u5Yiw5a6Y5pa56Zeu562U56S+5Yy65o+Q6Zeu5oiW5a+75om+5biu5Yqp77yaJHtDT01NVU5JVFlfU0lURV9VUkx9YCxcbiAgICBdLFxuICB9KVxuICBwdWJsaWMgYXN5bmMgY2FsbENvbnRhaW5lcihvcHRpb25zOiBJQ2FsbENvbnRhaW5lck9wdGlvbnMsIGNhbGxiYWNrPzogRnVuY3Rpb24pIHtcbiAgICBhd2FpdCB0aGlzLmluaXRDb250YWluZXIodGhpcy5jb25maWcpXG4gICAgY29uc3QgU0NPUEUgPSBgJHtDT01QT05FTlRfTkFNRX0uY2FsbENvbnRhaW5lcmBcbiAgICBjb25zdCB7IGNhbGxDb250YWluZXIgfTogeyBjYWxsQ29udGFpbmVyOiAob3B0aW9uczogSUNhbGxUY2JDb250YWluZXJPcHRpb25zKSA9PiB2b2lkIH0gPSAoYXdhaXQgdGhpcy53YXNtKSBhcyBhbnlcbiAgICBjb25zdCB7XG4gICAgICB1cmwsXG4gICAgICBtZXRob2QgPSAnR0VUJyxcbiAgICAgIGhlYWRlciA9IHt9LFxuICAgICAgZGF0YSxcbiAgICAgIHRpbWVvdXQgPSA2MDAwMCxcbiAgICAgIGRhdGFUeXBlID0gJ2pzb24nLFxuICAgICAgcmVzcG9uc2VUeXBlID0gJ3RleHQnLFxuICAgICAgLi4ucmVzdE9wdGlvbnNcbiAgICB9ID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9XG5cbiAgICBpZiAoIXVybCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihTQ09QRSwgJ2ludmFsaWQgcmVxdWVzdCB1cmwnKVxuICAgIH1cblxuICAgIGlmICghbWV0aG9kKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZVBhcmFtc0Vycm9yKFNDT1BFLCAnaW52YWxpZCByZXF1ZXN0IG1ldGhvZCcpXG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgaGVhZGVyLFxuICAgICAgICAgIGRhdGE6IHNlcmlhbGl6ZVJlcXVlc3RCb2R5KGhlYWRlciwgZGF0YSksXG4gICAgICAgICAgdGltZW91dCxcbiAgICAgICAgICBkYXRhVHlwZSxcbiAgICAgICAgICByZXNwb25zZVR5cGUsXG4gICAgICAgICAgLi4ucmVzdE9wdGlvbnMsXG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICog6Z2eIGJ1ZmZlclxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHBhcmFtcy5kYXRhICE9PSB1bmRlZmluZWQgJiYgIWlzQnVmZmVyKHBhcmFtcy5kYXRhKSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW1zLmRhdGEgIT09ICdzdHJpbmcnICYmIG1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBPYmplY3QuZW50cmllcyhwYXJhbXMuZGF0YSB8fCB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgIChsaXN0LCBba2V5LCB2YWx1ZV06IFtzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5dKSA9PiB7XG4gICAgICAgICAgICAgICAgICBsaXN0LnB1c2goYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyh2YWx1ZSkpfWApXG4gICAgICAgICAgICAgICAgICByZXR1cm4gbGlzdFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmRhdGEgPSBsaXN0LmpvaW4oJyYnKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChtZXRob2QgPT09ICdHRVQnICYmIHR5cGVvZiBwYXJhbXMuZGF0YSA9PT0gJ3N0cmluZycgJiYgcGFyYW1zLmRhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFVybCA9IHBhcnNlVVJMKHVybClcbiAgICAgICAgICAgIGlmIChwYXJzZWRVcmwuc2VhcmNoKSB7XG4gICAgICAgICAgICAgIHBhcnNlZFVybC5zZWFyY2ggKz0gYCYke3BhcmFtcy5kYXRhfWBcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBhcnNlZFVybC5zZWFyY2ggPSBgPyR7cGFyYW1zLmRhdGF9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFyYW1zLnVybCA9IHBhcnNlZFVybC5ocmVmXG4gICAgICAgICAgICBwYXJhbXMuZGF0YSA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBkYXRhXG4gICAgICAgICAgJiYgKGlzQnVmZmVyKHBhcmFtcy5kYXRhKSB8fCB0eXBlb2YgcGFyYW1zLmRhdGEgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICYmIChkYXRhIGFzIGFueSk/Lmxlbmd0aCA+IDEwMDAgKiAxMDI0ICogMTBcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBJbnZhbGllUGFyYW1zRXJyb3IoU0NPUEUsICdib2R5IHRvbyBsYXJnZScpKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgY2FsbENvbnRhaW5lcih7XG4gICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgIHN1Y2Nlc3M6IHJlc29sdmUsXG4gICAgICAgICAgZmFpbDogKHJlcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBkYXRhIH0gPSByZXMgfHwge31cbiAgICAgICAgICAgIHJlamVjdChnZW5Db250YWluZXJFcnJvcihkYXRhLCBTQ09QRSwgJ2NhbGwgY29udGFpbmVyIGVycm9yJykpXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICByZXR1cm4gZXhlY0NhbGxiYWNrKGNhbGxiYWNrLCBudWxsLCByZXMpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXhlY0NhbGxiYWNrKGNhbGxiYWNrLCBlKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluaXRDb250YWluZXIoY29uZmlnOiBPbWl0PElDb250aWFuZXJDb25maWcsICd3YXNtVXJsJyB8ICdqc1VybCc+KSB7XG4gICAgY29uc3QgeyBpbml0Q29udGFpbmVyIH06IHsgaW5pdENvbnRhaW5lcjogKG9wdGlvbnM6IElJbml0VGNiQ29udGFpbmVyT3B0aW9ucykgPT4gdm9pZCB9ID0gKGF3YWl0IHRoaXMud2FzbSkgYXMgYW55XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lckluaXRQcm9taXNlKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lckluaXRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBpbml0Q29udGFpbmVyKHtcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICAgIGlmIChTdHJpbmcocmVzLnN0YXR1c0NvZGUpICE9PSAnMjAwJykge1xuICAgICAgICAgICAgICByZWplY3QoZ2VuQ29udGFpbmVyRXJyb3IocmVzLmRhdGEsIGAke0NPTVBPTkVOVF9OQU1FfS5pbml0Q29udGFpbmVyYCwgJ2luaXQgY29udGFpbmVyIGZhaWwnKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmFpbChyZXMpIHtcbiAgICAgICAgICAgIHJlamVjdChnZW5Db250YWluZXJFcnJvcihyZXMuZGF0YSwgYCR7Q09NUE9ORU5UX05BTUV9LmluaXRDb250YWluZXJgLCAnaW5pdCBjb250YWluZXIgZmFpbCcpKVxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVySW5pdFByb21pcyA9IG51bGxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbml0UHJvbWlzZVxuICB9XG59XG5cbmNvbnN0IGNvbXBvbmVudDogSUNsb3VkYmFzZUNvbXBvbmVudCA9IHtcbiAgbmFtZTogQ09NUE9ORU5UX05BTUUsXG4gIG5hbWVzcGFjZTogJ2NvbnRhaW5lcicsXG4gIGVudGl0eShjb25maWc6IElDb250aWFuZXJDb25maWcpIHtcbiAgICBpZiAodGhpcy5jb250YWluZXJJbnN0YW5jZSkge1xuICAgICAgcHJpbnRXYXJuKEVSUk9SUy5JTlZBTElEX09QRVJBVElPTiwgJ2V2ZXJ5IGNsb3VkYmFzZSBpbnN0YW5jZSBzaG91bGQgaGFzIG9ubHkgb25lIGNvbnRhaW5lciBvYmplY3QnKVxuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVySW5zdGFuY2VcbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBDbG91ZGJhc2VDb250YWluZXJzKGNvbmZpZylcbiAgICB0aGlzLmNvbnRhaW5lckluc3RhbmNlID0gaW5zdGFuY2VcbiAgICB0aGlzLmNhbGxDb250YWluZXIgPSBpbnN0YW5jZS5jYWxsQ29udGFpbmVyLmJpbmQoaW5zdGFuY2UpXG5cbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJJbnN0YW5jZVxuICB9LFxufVxudHJ5IHtcbiAgY2xvdWRiYXNlLnJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudClcbn0gY2F0Y2ggKGUpIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckNvbnRhaW5lcnMoYXBwOiBQaWNrPElDbG91ZGJhc2UsICdyZWdpc3RlckNvbXBvbmVudCc+KSB7XG4gIHRyeSB7XG4gICAgYXBwLnJlZ2lzdGVyQ29tcG9uZW50KGNvbXBvbmVudClcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUud2FybihlKVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEV4cG9ydEZ1bmN0aW9uKHVybCwgbW9kdWxlLCBtb2RlID0gJ2dvJykge1xuICBhc3luYyBmdW5jdGlvbiBpbnN0YW50aWF0ZVN0cmVhbWluZyhyZXNwLCBpbXBvcnRPYmplY3QsIGJyb3RsaUNvbXByZXNzZWQgPSBmYWxzZSkge1xuICAgIGlmIChicm90bGlDb21wcmVzc2VkIHx8ICFXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZykge1xuICAgICAgY29uc3Qgc291cmNlID0gYXdhaXQgKGF3YWl0IHJlc3ApLmFycmF5QnVmZmVyKClcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGJyb3RsaUNvbXByZXNzZWQgPyBkZWNvbXByZXNzKG5ldyBJbnQ4QXJyYXkoc291cmNlKSkgOiBzb3VyY2VcbiAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShidWZmZXIsIGltcG9ydE9iamVjdClcbiAgICB9XG5cbiAgICByZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcocmVzcCwgaW1wb3J0T2JqZWN0KVxuICB9XG5cbiAgbGV0IGltcG9ydE9iamVjdCA9IHtcbiAgICBlbnY6IHtcbiAgICAgIG1lbW9yeUJhc2U6IDAsXG4gICAgICB0YWJsZUJhc2U6IDAsXG4gICAgICBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe1xuICAgICAgICBpbml0aWFsOiAyNTYsXG4gICAgICB9KSxcbiAgICAgIC8vIHRhYmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoe1xuICAgICAgLy8gICBpbml0aWFsOiAyLFxuICAgICAgLy8gICBlbGVtZW50OiAnYW55ZnVuYycsXG4gICAgICAvLyB9KSxcbiAgICB9LFxuICAgIC4uLm1vZHVsZSxcbiAgfVxuICBsZXQgZ29cbiAgY29uc3QgYnJvdGxpQ29tcHJlc3NlZCA9IGlzQnJvdGxpQ29tcHJlc3NlZCh1cmwpXG5cbiAgaWYgKG1vZGUgPT09ICdnbycpIHtcbiAgICBnbyA9IG5ldyBHbygpXG4gICAgZ28uX2luaXRlZE1vZHVsZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgZ28uX2luaXRlZE1vZHVsZVJlc29sdmUgPSByZXNvbHZlXG4gICAgfSlcbiAgICBpbXBvcnRPYmplY3QgPSB7XG4gICAgICAuLi5nby5pbXBvcnRPYmplY3QsXG4gICAgICBlbnY6IHtcbiAgICAgICAgLi4uZ28uaW1wb3J0T2JqZWN0LmVudixcbiAgICAgICAgZXhwb3J0TW9kdWxlKG1vZHVsZSkge1xuICAgICAgICAgIHJldHVybiBnby5faW5pdGVkTW9kdWxlUmVzb2x2ZShtb2R1bGUpXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJldXNsdCA9IGF3YWl0IGluc3RhbnRpYXRlU3RyZWFtaW5nKGZldGNoKHVybCksIGltcG9ydE9iamVjdCwgYnJvdGxpQ29tcHJlc3NlZClcblxuICBpZiAobW9kZSA9PT0gJ2dvJykge1xuICAgIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICBnby5ydW4ocmV1c2x0Lmluc3RhbmNlKSxcbiAgICAgIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHJlc29sdmUobnVsbClcbiAgICAgIH0sIDUwMCksKSxcbiAgICBdKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNhbGxDb250YWluZXI6ICh3aW5kb3cgYXMgYW55KS5jYWxsQ29udGFpbmVyLFxuICAgICAgaW5pdENvbnRhaW5lcjogKHdpbmRvdyBhcyBhbnkpLmluaXRDb250YWluZXIsXG4gICAgfVxuICB9XG5cbiAgLy8gaWYgKG1vZGUgPT09ICdnbycpIHtcbiAgLy8gICBnby5ydW4ocmV1c2x0Lmluc3RhbmNlKVxuICAvLyAgIGNvbnN0IG1vZHVsZSA9IGF3YWl0IGdvLl9pbml0ZWRNb2R1bGVQcm9taXNlXG4gIC8vICAgcmV0dXJuIG1vZHVsZVxuICAvLyB9XG5cbiAgcmV0dXJuIHJldXNsdC5pbnN0YW5jZS5leHBvcnRzXG59XG5cbmZ1bmN0aW9uIGxvYWRVbWRNb2R1bGUoanNVcmw6IHN0cmluZywgdW1kTW9kdWxlTmFtZTogc3RyaW5nLCB0YXJnZXREb2M6IERvY3VtZW50ID0gZG9jdW1lbnQpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHdpbiA9IHRhcmdldERvYy5kZWZhdWx0Vmlld1xuXG4gICAgY29uc3Qgc2NyaXB0ID0gdGFyZ2V0RG9jLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpXG4gICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnc3JjJywganNVcmwpXG4gICAgc2NyaXB0LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCB1bWRNb2R1bGVOYW1lKVxuICAgIHNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh3aW4sIHVtZE1vZHVsZU5hbWUpKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHdpblt1bWRNb2R1bGVOYW1lIGFzIGFueV0pXG4gICAgICB9XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgRmFpbCB0byBsb2FkIFVNRCBtb2R1bGUgJHt1bWRNb2R1bGVOYW1lfSBmcm9tIFske2pzVXJsfV0uYClcbiAgICAgIHJldHVybiByZWplY3QoZXJyb3IpXG4gICAgfSlcblxuICAgIHNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIChlKSA9PiB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgbWFpbiBidW5kbGUgWyR7dW1kTW9kdWxlTmFtZX1dIGxvYWQgZmFpbGVkIGZyb20gWyR7anNVcmx9XTogJHtlPy5tZXNzYWdlIHx8ICcnfWApXG4gICAgICByZWplY3QoZXJyb3IpXG4gICAgfSlcbiAgICBpZiAodGFyZ2V0RG9jLmJvZHkpIHtcbiAgICAgIHRhcmdldERvYy5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdClcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0RG9jLmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KVxuICAgIH1cbiAgfSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZEpTRXhwb3J0RnVuY3Rpb24odXJsKSB7XG4gIHJldHVybiBsb2FkVW1kTW9kdWxlKHVybCwgJ2Nsb3VkYmFzZV9wcml2YXRlX2xpbmsnKVxufVxuXG5mdW5jdGlvbiBpc0Jyb3RsaUNvbXByZXNzZWQodXJsKSB7XG4gIGxldCBicm90bGlDb21wcmVzc2VkID0gZmFsc2VcblxuICBsZXQgcGF0aG5hbWUgPSAnJ1xuICB0cnkge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gcGFyc2VVUkwodXJsKVxuICAgIHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWVcbiAgfSBjYXRjaCAoZSkge1xuICAgIHBhdGhuYW1lID0gdXJsXG4gIH1cblxuICBpZiAoL1xcLmJyJC8udGVzdChwYXRobmFtZSkpIHtcbiAgICBicm90bGlDb21wcmVzc2VkID0gdHJ1ZVxuICB9XG4gIHJldHVybiBicm90bGlDb21wcmVzc2VkXG59XG4iXX0=
411
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWhFLE9BQU8sVUFBVSxNQUFNLG1CQUFtQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQy9CLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBSXBDLElBQUEsTUFBTSxHQUF5QixTQUFTLE9BQWxDLEVBQUUsa0JBQWtCLEdBQUssU0FBUyxtQkFBZCxDQUFjO0FBQ3hDLElBQUEsWUFBWSxHQUFnQixLQUFLLGFBQXJCLEVBQUUsU0FBUyxHQUFLLEtBQUssVUFBVixDQUFVO0FBQ2pDLElBQUEsb0JBQW9CLEdBQUssT0FBTyxxQkFBWixDQUFZO0FBRXhDO0lBQWlDLHNDQUFLO0lBRXBDLDRCQUFZLEtBQUssRUFBRSxPQUFPO1FBQTFCLGlCQU9DO1FBTkMsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDLGNBQWM7WUFDM0IsR0FBRyxFQUFFLFdBQUksS0FBSyxlQUFLLE9BQU8sQ0FBRTtTQUM3QixDQUFDLENBQUE7Z0JBQ0Ysa0JBQU0sR0FBRyxDQUFDO1FBQ1YsS0FBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFBOztJQUNuQyxDQUFDO0lBQ0QsbUNB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Q0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLE9BQU8sS0FBSSxFQUFFLENBQUUsQ0FBQyxDQUFBO1lBQzFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNmLENBQUMsQ0FBQyxDQUFBO1FBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDcEMsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsU0FBZSxvQkFBb0IsQ0FBQyxHQUFHOzs7WUFDckMsV0FBTyxhQUFhLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDLEVBQUE7OztDQUNwRDtBQUVELFNBQVMsa0JBQWtCLENBQUMsR0FBRztJQUM3QixJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQTtJQUU1QixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFDakIsSUFBSTtRQUNGLElBQU0sVUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM5QixRQUFRLEdBQUcsVUFBUSxDQUFDLFFBQVEsQ0FBQTtLQUM3QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsUUFBUSxHQUFHLEdBQUcsQ0FBQTtLQUNmO0lBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzFCLGdCQUFnQixHQUFHLElBQUksQ0FBQTtLQUN4QjtJQUNELE9BQU8sZ0JBQWdCLENBQUE7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDbG91ZGJhc2UgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgSUNsb3VkYmFzZUNvbXBvbmVudCB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY29tcG9uZW50J1xuaW1wb3J0IHsgSUNhbGxDb250YWluZXJPcHRpb25zLCBJQ29udGlhbmVyQ29uZmlnIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9jb250YWluZXInXG5pbXBvcnQgeyBjb25zdGFudHMsIHV0aWxzLCBoZWxwZXJzIH0gZnJvbSAnQGNsb3VkYmFzZS91dGlsaXRpZXMnXG4vLyBpbXBvcnQgYnJvdGxpUHJvbWlzZSBmcm9tICdicm90bGktZGVjLXdhc20nIC8vIEltcG9ydCB0aGUgZGVmYXVsdCBleHBvcnRcbmltcG9ydCBkZWNvbXByZXNzIGZyb20gJ2Jyb3RsaS9kZWNvbXByZXNzJ1xuXG5pbXBvcnQgR28gZnJvbSAnLi9nb193YW1zX2V4ZWMnXG5pbXBvcnQgeyBpc0J1ZmZlciwgcGFyc2VVUkwsIHNlcmlhbGl6ZVJlcXVlc3RCb2R5IH0gZnJvbSAnLi91dGlscydcbmltcG9ydCB7IHJlcXVlc3QgfSBmcm9tICcuL3V0aWxzL3JlcXVlc3QnXG5pbXBvcnQgeyBDT01QT05FTlRfTkFNRSB9IGZyb20gJy4vY29uc3RhbnRzJ1xuXG5kZWNsYXJlIGNvbnN0IGNsb3VkYmFzZTogSUNsb3VkYmFzZVxuXG5jb25zdCB7IEVSUk9SUywgQ09NTVVOSVRZX1NJVEVfVVJMIH0gPSBjb25zdGFudHNcbmNvbnN0IHsgZXhlY0NhbGxiYWNrLCBwcmludFdhcm4gfSA9IHV0aWxzXG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzXG5cbmNsYXNzIEludmFsaWVQYXJhbXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29kZTogYW55XG4gIGNvbnN0cnVjdG9yKHNjb3BlLCBtZXNzYWdlKSB7XG4gICAgY29uc3QgbXNnID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgY29kZTogRVJST1JTLklOVkFMSURfUEFSQU1TLFxuICAgICAgbXNnOiBgWyR7c2NvcGV9XSAke21lc3NhZ2V9YCxcbiAgICB9KVxuICAgIHN1cGVyKG1zZylcbiAgICB0aGlzLmNvZGUgPSBFUlJPUlMuSU5WQUxJRF9QQVJBTVNcbiAgfVxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IHRoaXMuY29kZSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICB9XG4gIH1cbn1cblxuaW50ZXJmYWNlIElDYWxsVGNiQ29udGFpbmVyT3B0aW9ucyBleHRlbmRzIElDYWxsQ29udGFpbmVyT3B0aW9ucyB7XG4gIHN1Y2Nlc3M6IChyZXM6IHsgc3RhdHVzQ29kZTogc3RyaW5nIHwgbnVtYmVyOyBoZWFkZXI6IElDYWxsQ29udGFpbmVyT3B0aW9uc1snaGVhZGVyJ107IGRhdGE6IGFueSB9KSA9PiB2b2lkXG4gIGZhaWw6IChyZXM6IHsgZGF0YTogeyBjb2RlOiBudW1iZXI7IG1lc3NhZ2U6IHN0cmluZyB9IH0pID0+IHZvaWRcbn1cblxuaW50ZXJmYWNlIElJbml0VGNiQ29udGFpbmVyT3B0aW9ucyB7XG4gIGNvbmZpZzogT21pdDxJQ29udGlhbmVyQ29uZmlnLCAnd2FzbVVybCcgfCAnanNVcmwnPlxuICBzdWNjZXNzOiAocmVzOiB7IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bWJlcjsgaGVhZGVyOiBJQ2FsbENvbnRhaW5lck9wdGlvbnNbJ2hlYWRlciddOyBkYXRhOiBhbnkgfSkgPT4gdm9pZFxuICBmYWlsOiAocmVzOiB7IGRhdGE6IHsgY29kZTogbnVtYmVyOyBtZXNzYWdlOiBzdHJpbmcgfSB9KSA9PiB2b2lkXG59XG5cbmZ1bmN0aW9uIGdlbkNvbnRhaW5lckVycm9yKGRhdGEsIHNjb3BlID0gQ09NUE9ORU5UX05BTUUsIGRlZmF1bHRNZXNzYWdlID0gJ2NhbGwgY29udGFpbmVyIGVycm9yJykge1xuICBjb25zdCBlcnJvciA9IGRhdGEgaW5zdGFuY2VvZiBFcnJvciA/IGRhdGEgOiBuZXcgRXJyb3IoYFske3Njb3BlfV0gJHtkYXRhPy5tZXNzYWdlIHx8IGRlZmF1bHRNZXNzYWdlfWApXG4gIDsoZXJyb3IgYXMgYW55KS5jb2RlID0gZGF0YT8uY29kZSB8fCAnVU5LTk9XTl9FUlJPUidcbiAgcmV0dXJuIGVycm9yXG59XG5cbmNsYXNzIENsb3VkYmFzZUNvbnRhaW5lcnMge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZ1xuICBwcml2YXRlIHdhc206IFByb21pc2U8V2ViQXNzZW1ibHkuRXhwb3J0cz5cbiAgcHJpdmF0ZSBjb250YWluZXJJbml0UHJvbWlzZTogLyogUHJvbWlzZTxhbnk+Ki8gYW55IHwgbnVsbFxuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSUNvbnRpYW5lckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcud2FzbVVybCAmJiAhdGhpcy5jb25maWcuanNVcmwgJiYgISh3aW5kb3cgYXMgYW55KS5jbG91ZGJhc2VfcHJpdmF0ZV9saW5rKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZVBhcmFtc0Vycm9yKGAke0NPTVBPTkVOVF9OQU1FfWAsICfnvLrlsJEgcHJpdmF0ZWxpbmsgc2RrIOWcsOWdgCcpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLndhc21VcmwpIHtcbiAgICAgIHRoaXMud2FzbSA9IGdldEV4cG9ydEZ1bmN0aW9uKHRoaXMuY29uZmlnLndhc21VcmwsIHtcbiAgICAgICAgdXRpbHM6IHtcbiAgICAgICAgICBpbmZvKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICB9LFxuICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmpzVXJsKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdsb2FkIHdhbXMgZXJyb3IsIGZhbGwgYmFjayB0byB1c2UganMnLCBlKVxuICAgICAgICAgIHJldHVybiBsb2FkSlNFeHBvcnRGdW5jdGlvbih0aGlzLmNvbmZpZy5qc1VybClcbiAgICAgICAgfSBpZiAoKHdpbmRvdyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmspIHtcbiAgICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLmNsb3VkYmFzZV9wcml2YXRlX2xpbmtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcuanNVcmwpIHtcbiAgICAgIHRoaXMud2FzbSA9IGxvYWRKU0V4cG9ydEZ1bmN0aW9uKHRoaXMuY29uZmlnLmpzVXJsKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndhc20gPSBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICBpbml0Q29udGFpbmVyOiAod2luZG93IGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGluay5pbml0Q29udGFpbmVyLFxuICAgICAgICBjYWxsQ29udGFpbmVyOiAod2luZG93IGFzIGFueSkuY2xvdWRiYXNlX3ByaXZhdGVfbGluay5jYWxsQ29udGFpbmVyLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIGN1c3RvbUluZm86IHtcbiAgICAgIGNsYXNzTmFtZTogJ0Nsb3VkYmFzZScsXG4gICAgICBtZXRob2ROYW1lOiAnY2FsbENvbnRhaW5lcicsXG4gICAgfSxcbiAgICB0aXRsZTogJ+iwg+eUqOWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBjYWxsQ29udGFpbmVyKCkg55qE6K+t5rOV5oiW5Y+C5pWw5piv5ZCm5q2j56GuJyxcbiAgICAgICcgIDIgLSDln5/lkI0gJiDot6/lvoTmmK/lkKblrZjlnKgnLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWAsXG4gICAgXSxcbiAgfSlcbiAgcHVibGljIGFzeW5jIGNhbGxDb250YWluZXIob3B0aW9uczogSUNhbGxDb250YWluZXJPcHRpb25zLCBjYWxsYmFjaz86IEZ1bmN0aW9uKSB7XG4gICAgYXdhaXQgdGhpcy5pbml0Q29udGFpbmVyKHRoaXMuY29uZmlnKVxuICAgIGNvbnN0IFNDT1BFID0gYCR7Q09NUE9ORU5UX05BTUV9LmNhbGxDb250YWluZXJgXG4gICAgY29uc3QgeyBjYWxsQ29udGFpbmVyIH06IHsgY2FsbENvbnRhaW5lcjogKG9wdGlvbnM6IElDYWxsVGNiQ29udGFpbmVyT3B0aW9ucykgPT4gdm9pZCB9ID0gKGF3YWl0IHRoaXMud2FzbSkgYXMgYW55XG4gICAgY29uc3Qge1xuICAgICAgdXJsLFxuICAgICAgbWV0aG9kID0gJ0dFVCcsXG4gICAgICBoZWFkZXIgPSB7fSxcbiAgICAgIGRhdGEsXG4gICAgICB0aW1lb3V0ID0gNjAwMDAsXG4gICAgICBkYXRhVHlwZSA9ICdqc29uJyxcbiAgICAgIHJlc3BvbnNlVHlwZSA9ICd0ZXh0JyxcbiAgICAgIC4uLnJlc3RPcHRpb25zXG4gICAgfSA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfVxuXG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGllUGFyYW1zRXJyb3IoU0NPUEUsICdpbnZhbGlkIHJlcXVlc3QgdXJsJylcbiAgICB9XG5cbiAgICBpZiAoIW1ldGhvZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWVQYXJhbXNFcnJvcihTQ09QRSwgJ2ludmFsaWQgcmVxdWVzdCBtZXRob2QnKVxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICB1cmwsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIGhlYWRlcixcbiAgICAgICAgICBkYXRhOiBzZXJpYWxpemVSZXF1ZXN0Qm9keShoZWFkZXIsIGRhdGEpLFxuICAgICAgICAgIHRpbWVvdXQsXG4gICAgICAgICAgZGF0YVR5cGUsXG4gICAgICAgICAgcmVzcG9uc2VUeXBlLFxuICAgICAgICAgIC4uLnJlc3RPcHRpb25zLFxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIOmdniBidWZmZXJcbiAgICAgICAgICovXG4gICAgICAgIGlmIChwYXJhbXMuZGF0YSAhPT0gdW5kZWZpbmVkICYmICFpc0J1ZmZlcihwYXJhbXMuZGF0YSkpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtcy5kYXRhICE9PSAnc3RyaW5nJyAmJiBtZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gT2JqZWN0LmVudHJpZXMocGFyYW1zLmRhdGEgfHwge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAobGlzdCwgW2tleSwgdmFsdWVdOiBbc3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgbGlzdC5wdXNoKGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKX1gKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5kYXRhID0gbGlzdC5qb2luKCcmJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobWV0aG9kID09PSAnR0VUJyAmJiB0eXBlb2YgcGFyYW1zLmRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWRVcmwgPSBwYXJzZVVSTCh1cmwpXG4gICAgICAgICAgICBpZiAocGFyc2VkVXJsLnNlYXJjaCkge1xuICAgICAgICAgICAgICBwYXJzZWRVcmwuc2VhcmNoICs9IHBhcmFtcy5kYXRhXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwYXJzZWRVcmwuc2VhcmNoID0gYD8ke3BhcmFtcy5kYXRhfWBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFtcy51cmwgPSBwYXJzZWRVcmwuaHJlZlxuICAgICAgICAgICAgcGFyYW1zLmRhdGEgPSB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZGF0YVxuICAgICAgICAgICYmIChpc0J1ZmZlcihwYXJhbXMuZGF0YSkgfHwgdHlwZW9mIHBhcmFtcy5kYXRhID09PSAnc3RyaW5nJylcbiAgICAgICAgICAmJiAoZGF0YSBhcyBhbnkpPy5sZW5ndGggPiAxMDAwICogMTAyNCAqIDEwXG4gICAgICAgICkge1xuICAgICAgICAgIHJlamVjdChuZXcgSW52YWxpZVBhcmFtc0Vycm9yKFNDT1BFLCAnYm9keSB0b28gbGFyZ2UnKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxDb250YWluZXIoe1xuICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICBzdWNjZXNzOiByZXNvbHZlLFxuICAgICAgICAgIGZhaWw6IChyZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzIHx8IHt9XG4gICAgICAgICAgICByZWplY3QoZ2VuQ29udGFpbmVyRXJyb3IoZGF0YSwgU0NPUEUsICdjYWxsIGNvbnRhaW5lciBlcnJvcicpKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgICAgcmV0dXJuIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgbnVsbCwgcmVzKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGV4ZWNDYWxsYmFjayhjYWxsYmFjaywgZSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0Q29udGFpbmVyKGNvbmZpZzogT21pdDxJQ29udGlhbmVyQ29uZmlnLCAnd2FzbVVybCcgfCAnanNVcmwnPikge1xuICAgIGNvbnN0IHsgaW5pdENvbnRhaW5lciB9OiB7IGluaXRDb250YWluZXI6IChvcHRpb25zOiBJSW5pdFRjYkNvbnRhaW5lck9wdGlvbnMpID0+IHZvaWQgfSA9IChhd2FpdCB0aGlzLndhc20pIGFzIGFueVxuICAgIGlmICghdGhpcy5jb250YWluZXJJbml0UHJvbWlzZSkge1xuICAgICAgdGhpcy5jb250YWluZXJJbml0UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgaW5pdENvbnRhaW5lcih7XG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgICBpZiAoU3RyaW5nKHJlcy5zdGF0dXNDb2RlKSAhPT0gJzIwMCcpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KGdlbkNvbnRhaW5lckVycm9yKHJlcy5kYXRhLCBgJHtDT01QT05FTlRfTkFNRX0uaW5pdENvbnRhaW5lcmAsICdpbml0IGNvbnRhaW5lciBmYWlsJykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKHJlcylcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZhaWwocmVzKSB7XG4gICAgICAgICAgICByZWplY3QoZ2VuQ29udGFpbmVyRXJyb3IocmVzLmRhdGEsIGAke0NPTVBPTkVOVF9OQU1FfS5pbml0Q29udGFpbmVyYCwgJ2luaXQgY29udGFpbmVyIGZhaWwnKSlcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lckluaXRQcm9taXMgPSBudWxsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVySW5pdFByb21pc2VcbiAgfVxufVxuXG5jb25zdCBjb21wb25lbnQ6IElDbG91ZGJhc2VDb21wb25lbnQgPSB7XG4gIG5hbWU6IENPTVBPTkVOVF9OQU1FLFxuICBuYW1lc3BhY2U6ICdjb250YWluZXInLFxuICBlbnRpdHkoY29uZmlnOiBJQ29udGlhbmVyQ29uZmlnKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVySW5zdGFuY2UpIHtcbiAgICAgIHByaW50V2FybihFUlJPUlMuSU5WQUxJRF9PUEVSQVRJT04sICdldmVyeSBjbG91ZGJhc2UgaW5zdGFuY2Ugc2hvdWxkIGhhcyBvbmx5IG9uZSBjb250YWluZXIgb2JqZWN0JylcbiAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lckluc3RhbmNlXG4gICAgfVxuXG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgQ2xvdWRiYXNlQ29udGFpbmVycyhjb25maWcpXG4gICAgdGhpcy5jb250YWluZXJJbnN0YW5jZSA9IGluc3RhbmNlXG4gICAgdGhpcy5jYWxsQ29udGFpbmVyID0gaW5zdGFuY2UuY2FsbENvbnRhaW5lci5iaW5kKGluc3RhbmNlKVxuXG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVySW5zdGFuY2VcbiAgfSxcbn1cbnRyeSB7XG4gIGNsb3VkYmFzZS5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG59IGNhdGNoIChlKSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb250YWluZXJzKGFwcDogUGljazxJQ2xvdWRiYXNlLCAncmVnaXN0ZXJDb21wb25lbnQnPikge1xuICB0cnkge1xuICAgIGFwcC5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLndhcm4oZSlcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHBvcnRGdW5jdGlvbih1cmwsIG1vZHVsZSwgbW9kZSA9ICdnbycpIHtcbiAgYXN5bmMgZnVuY3Rpb24gaW5zdGFudGlhdGVTdHJlYW1pbmcocmVzcCwgaW1wb3J0T2JqZWN0LCBicm90bGlDb21wcmVzc2VkID0gZmFsc2UpIHtcbiAgICBpZiAoYnJvdGxpQ29tcHJlc3NlZCB8fCAhV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcpIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IChhd2FpdCByZXNwKS5hcnJheUJ1ZmZlcigpXG4gICAgICBjb25zdCBidWZmZXIgPSBicm90bGlDb21wcmVzc2VkID8gZGVjb21wcmVzcyhuZXcgSW50OEFycmF5KHNvdXJjZSkpIDogc291cmNlXG4gICAgICByZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoYnVmZmVyLCBpbXBvcnRPYmplY3QpXG4gICAgfVxuXG4gICAgcmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKHJlc3AsIGltcG9ydE9iamVjdClcbiAgfVxuXG4gIGxldCBpbXBvcnRPYmplY3QgPSB7XG4gICAgZW52OiB7XG4gICAgICBtZW1vcnlCYXNlOiAwLFxuICAgICAgdGFibGVCYXNlOiAwLFxuICAgICAgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtcbiAgICAgICAgaW5pdGlhbDogMjU2LFxuICAgICAgfSksXG4gICAgICAvLyB0YWJsZTogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHtcbiAgICAgIC8vICAgaW5pdGlhbDogMixcbiAgICAgIC8vICAgZWxlbWVudDogJ2FueWZ1bmMnLFxuICAgICAgLy8gfSksXG4gICAgfSxcbiAgICAuLi5tb2R1bGUsXG4gIH1cbiAgbGV0IGdvXG4gIGNvbnN0IGJyb3RsaUNvbXByZXNzZWQgPSBpc0Jyb3RsaUNvbXByZXNzZWQodXJsKVxuXG4gIGlmIChtb2RlID09PSAnZ28nKSB7XG4gICAgZ28gPSBuZXcgR28oKVxuICAgIGdvLl9pbml0ZWRNb2R1bGVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGdvLl9pbml0ZWRNb2R1bGVSZXNvbHZlID0gcmVzb2x2ZVxuICAgIH0pXG4gICAgaW1wb3J0T2JqZWN0ID0ge1xuICAgICAgLi4uZ28uaW1wb3J0T2JqZWN0LFxuICAgICAgZW52OiB7XG4gICAgICAgIC4uLmdvLmltcG9ydE9iamVjdC5lbnYsXG4gICAgICAgIGV4cG9ydE1vZHVsZShtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm4gZ28uX2luaXRlZE1vZHVsZVJlc29sdmUobW9kdWxlKVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVzbHQgPSBhd2FpdCBpbnN0YW50aWF0ZVN0cmVhbWluZyhmZXRjaCh1cmwpLCBpbXBvcnRPYmplY3QsIGJyb3RsaUNvbXByZXNzZWQpXG5cbiAgaWYgKG1vZGUgPT09ICdnbycpIHtcbiAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgZ28ucnVuKHJldXNsdC5pbnN0YW5jZSksXG4gICAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKG51bGwpXG4gICAgICB9LCA1MDApLCksXG4gICAgXSlcblxuICAgIHJldHVybiB7XG4gICAgICBjYWxsQ29udGFpbmVyOiAod2luZG93IGFzIGFueSkuY2FsbENvbnRhaW5lcixcbiAgICAgIGluaXRDb250YWluZXI6ICh3aW5kb3cgYXMgYW55KS5pbml0Q29udGFpbmVyLFxuICAgIH1cbiAgfVxuXG4gIC8vIGlmIChtb2RlID09PSAnZ28nKSB7XG4gIC8vICAgZ28ucnVuKHJldXNsdC5pbnN0YW5jZSlcbiAgLy8gICBjb25zdCBtb2R1bGUgPSBhd2FpdCBnby5faW5pdGVkTW9kdWxlUHJvbWlzZVxuICAvLyAgIHJldHVybiBtb2R1bGVcbiAgLy8gfVxuXG4gIHJldHVybiByZXVzbHQuaW5zdGFuY2UuZXhwb3J0c1xufVxuXG5mdW5jdGlvbiBsb2FkVW1kTW9kdWxlKGpzVXJsOiBzdHJpbmcsIHVtZE1vZHVsZU5hbWU6IHN0cmluZywgdGFyZ2V0RG9jOiBEb2N1bWVudCA9IGRvY3VtZW50KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB3aW4gPSB0YXJnZXREb2MuZGVmYXVsdFZpZXdcblxuICAgIGNvbnN0IHNjcmlwdCA9IHRhcmdldERvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKVxuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3NyYycsIGpzVXJsKVxuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgdW1kTW9kdWxlTmFtZSlcbiAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwod2luLCB1bWRNb2R1bGVOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSh3aW5bdW1kTW9kdWxlTmFtZSBhcyBhbnldKVxuICAgICAgfVxuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEZhaWwgdG8gbG9hZCBVTUQgbW9kdWxlICR7dW1kTW9kdWxlTmFtZX0gZnJvbSBbJHtqc1VybH1dLmApXG4gICAgICByZXR1cm4gcmVqZWN0KGVycm9yKVxuICAgIH0pXG5cbiAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoZSkgPT4ge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYG1haW4gYnVuZGxlIFske3VtZE1vZHVsZU5hbWV9XSBsb2FkIGZhaWxlZCBmcm9tIFske2pzVXJsfV06ICR7ZT8ubWVzc2FnZSB8fCAnJ31gKVxuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH0pXG4gICAgdGFyZ2V0RG9jLmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KVxuICB9KVxufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkSlNFeHBvcnRGdW5jdGlvbih1cmwpIHtcbiAgcmV0dXJuIGxvYWRVbWRNb2R1bGUodXJsLCAnY2xvdWRiYXNlX3ByaXZhdGVfbGluaycpXG59XG5cbmZ1bmN0aW9uIGlzQnJvdGxpQ29tcHJlc3NlZCh1cmwpIHtcbiAgbGV0IGJyb3RsaUNvbXByZXNzZWQgPSBmYWxzZVxuXG4gIGxldCBwYXRobmFtZSA9ICcnXG4gIHRyeSB7XG4gICAgY29uc3QgbG9jYXRpb24gPSBwYXJzZVVSTCh1cmwpXG4gICAgcGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZVxuICB9IGNhdGNoIChlKSB7XG4gICAgcGF0aG5hbWUgPSB1cmxcbiAgfVxuXG4gIGlmICgvXFwuYnIkLy50ZXN0KHBhdGhuYW1lKSkge1xuICAgIGJyb3RsaUNvbXByZXNzZWQgPSB0cnVlXG4gIH1cbiAgcmV0dXJuIGJyb3RsaUNvbXByZXNzZWRcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,15 +1,13 @@
1
1
  {
2
2
  "name": "@cloudbase/container",
3
- "version": "2.5.35-alpha.1",
3
+ "version": "2.5.36-beta.0",
4
4
  "description": "cloudbase javascript sdk functions componets",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
7
- "miniprogram": "dist/miniprogram",
8
7
  "scripts": {
9
- "tsc": "rm -rf dist/esm && tsc -p tsconfig.esm.json && rm -rf dist/cjs && tsc -p tsconfig.json",
8
+ "tsc": "rm -rf dist/ && tsc -p tsconfig.esm.json && tsc -p tsconfig.json",
10
9
  "lint": "eslint --fix \"./src/**/*.ts\"",
11
10
  "build": "npm run lint && npm run tsc",
12
- "build:mp": "webpack --config ./webpack/webpack.miniprogram.js",
13
11
  "precommit": "npm run lint"
14
12
  },
15
13
  "publishConfig": {
@@ -36,9 +34,5 @@
36
34
  "brotli": "^1.3.3",
37
35
  "brotli-dec-wasm": "^2.0.1"
38
36
  },
39
- "gitHead": "c462902b6702463670d27acb88ebccf93dbd51cd",
40
- "devDependencies": {
41
- "terser-webpack-plugin": "^3.0.2",
42
- "webpack-bundle-analyzer": "^4.9.1"
43
- }
37
+ "gitHead": "3e5ff75cbbc978aef1fd0d6cf12b8ce9f6f2f86d"
44
38
  }
package/src/index.ts CHANGED
@@ -2,33 +2,20 @@ import { ICloudbase } from '@cloudbase/types'
2
2
  import { ICloudbaseComponent } from '@cloudbase/types/component'
3
3
  import { ICallContainerOptions, IContianerConfig } from '@cloudbase/types/container'
4
4
  import { constants, utils, helpers } from '@cloudbase/utilities'
5
+ // import brotliPromise from 'brotli-dec-wasm' // Import the default export
6
+ import decompress from 'brotli/decompress'
7
+
8
+ import Go from './go_wams_exec'
5
9
  import { isBuffer, parseURL, serializeRequestBody } from './utils'
10
+ import { request } from './utils/request'
6
11
  import { COMPONENT_NAME } from './constants'
7
12
 
8
13
  declare const cloudbase: ICloudbase
14
+
9
15
  const { ERRORS, COMMUNITY_SITE_URL } = constants
10
16
  const { execCallback, printWarn } = utils
11
17
  const { catchErrorsDecorator } = helpers
12
18
 
13
- let getExportFunction: Function = () => {
14
- throw new Error('getExportFunction 未实现')
15
- }
16
- let loadJSExportFunction: Function = () => {
17
- throw new Error('loadJSExportFunction 未实现')
18
- }
19
- if (!process.env.isMiniprogram) {
20
- const loader = require('./utils/loader')
21
- getExportFunction = loader.getExportFunction
22
- loadJSExportFunction = loader.loadJSExportFunction
23
- } else {
24
- getExportFunction = function () {
25
- new Error('小程序不支持 wasm 加载')
26
- }
27
- loadJSExportFunction = function () {
28
- new Error('小程序不支持动态 js 加载')
29
- }
30
- }
31
-
32
19
  class InvalieParamsError extends Error {
33
20
  code: any
34
21
  constructor(scope, message) {
@@ -64,7 +51,7 @@ function genContainerError(data, scope = COMPONENT_NAME, defaultMessage = 'call
64
51
  return error
65
52
  }
66
53
 
67
- export class CloudbaseContainers {
54
+ class CloudbaseContainers {
68
55
  private readonly config: IContianerConfig
69
56
  private wasm: Promise<WebAssembly.Exports>
70
57
  private containerInitPromise: /* Promise<any>*/ any | null
@@ -74,18 +61,24 @@ export class CloudbaseContainers {
74
61
  ...config,
75
62
  }
76
63
 
77
- if (!this.config.wasmUrl && !this.config.jsUrl && !(globalThis as any).cloudbase_private_link) {
64
+ if (!this.config.wasmUrl && !this.config.jsUrl && !(window as any).cloudbase_private_link) {
78
65
  throw new InvalieParamsError(`${COMPONENT_NAME}`, '缺少 privatelink sdk 地址')
79
66
  }
80
67
 
81
68
  if (this.config.wasmUrl) {
82
- this.wasm = getExportFunction(this.config.wasmUrl).catch((e) => {
69
+ this.wasm = getExportFunction(this.config.wasmUrl, {
70
+ utils: {
71
+ info(e) {
72
+ console.log(e)
73
+ },
74
+ request,
75
+ },
76
+ }).catch((e) => {
83
77
  if (this.config.jsUrl) {
84
78
  console.warn('load wams error, fall back to use js', e)
85
79
  return loadJSExportFunction(this.config.jsUrl)
86
- }
87
- if ((globalThis as any).cloudbase_private_link) {
88
- return (globalThis as any).cloudbase_private_link
80
+ } if ((window as any).cloudbase_private_link) {
81
+ return (window as any).cloudbase_private_link
89
82
  }
90
83
  throw e
91
84
  })
@@ -93,8 +86,8 @@ export class CloudbaseContainers {
93
86
  this.wasm = loadJSExportFunction(this.config.jsUrl)
94
87
  } else {
95
88
  this.wasm = Promise.resolve({
96
- initContainer: (globalThis as any).cloudbase_private_link.initContainer,
97
- callContainer: (globalThis as any).cloudbase_private_link.callContainer,
89
+ initContainer: (window as any).cloudbase_private_link.initContainer,
90
+ callContainer: (window as any).cloudbase_private_link.callContainer,
98
91
  })
99
92
  }
100
93
  }
@@ -171,10 +164,10 @@ export class CloudbaseContainers {
171
164
  } catch (e) {}
172
165
  }
173
166
 
174
- if (method === 'GET' && typeof params.data === 'string' && params.data) {
167
+ if (method === 'GET' && typeof params.data === 'string') {
175
168
  const parsedUrl = parseURL(url)
176
169
  if (parsedUrl.search) {
177
- parsedUrl.search += `&${params.data}`
170
+ parsedUrl.search += params.data
178
171
  } else {
179
172
  parsedUrl.search = `?${params.data}`
180
173
  }
@@ -258,3 +251,116 @@ export function registerContainers(app: Pick<ICloudbase, 'registerComponent'>) {
258
251
  console.warn(e)
259
252
  }
260
253
  }
254
+
255
+ async function getExportFunction(url, module, mode = 'go') {
256
+ async function instantiateStreaming(resp, importObject, brotliCompressed = false) {
257
+ if (brotliCompressed || !WebAssembly.instantiateStreaming) {
258
+ const source = await (await resp).arrayBuffer()
259
+ const buffer = brotliCompressed ? decompress(new Int8Array(source)) : source
260
+ return WebAssembly.instantiate(buffer, importObject)
261
+ }
262
+
263
+ return WebAssembly.instantiateStreaming(resp, importObject)
264
+ }
265
+
266
+ let importObject = {
267
+ env: {
268
+ memoryBase: 0,
269
+ tableBase: 0,
270
+ memory: new WebAssembly.Memory({
271
+ initial: 256,
272
+ }),
273
+ // table: new WebAssembly.Table({
274
+ // initial: 2,
275
+ // element: 'anyfunc',
276
+ // }),
277
+ },
278
+ ...module,
279
+ }
280
+ let go
281
+ const brotliCompressed = isBrotliCompressed(url)
282
+
283
+ if (mode === 'go') {
284
+ go = new Go()
285
+ go._initedModulePromise = new Promise((resolve) => {
286
+ go._initedModuleResolve = resolve
287
+ })
288
+ importObject = {
289
+ ...go.importObject,
290
+ env: {
291
+ ...go.importObject.env,
292
+ exportModule(module) {
293
+ return go._initedModuleResolve(module)
294
+ },
295
+ },
296
+ }
297
+ }
298
+
299
+ const reuslt = await instantiateStreaming(fetch(url), importObject, brotliCompressed)
300
+
301
+ if (mode === 'go') {
302
+ await Promise.race([
303
+ go.run(reuslt.instance),
304
+ new Promise(resolve => setTimeout(() => {
305
+ resolve(null)
306
+ }, 500),),
307
+ ])
308
+
309
+ return {
310
+ callContainer: (window as any).callContainer,
311
+ initContainer: (window as any).initContainer,
312
+ }
313
+ }
314
+
315
+ // if (mode === 'go') {
316
+ // go.run(reuslt.instance)
317
+ // const module = await go._initedModulePromise
318
+ // return module
319
+ // }
320
+
321
+ return reuslt.instance.exports
322
+ }
323
+
324
+ function loadUmdModule(jsUrl: string, umdModuleName: string, targetDoc: Document = document) {
325
+ return new Promise<any>((resolve, reject) => {
326
+ const win = targetDoc.defaultView
327
+
328
+ const script = targetDoc.createElement('script')
329
+ script.setAttribute('src', jsUrl)
330
+ script.setAttribute('class', umdModuleName)
331
+ script.addEventListener('load', () => {
332
+ if (Object.prototype.hasOwnProperty.call(win, umdModuleName)) {
333
+ return resolve(win[umdModuleName as any])
334
+ }
335
+ const error = new Error(`Fail to load UMD module ${umdModuleName} from [${jsUrl}].`)
336
+ return reject(error)
337
+ })
338
+
339
+ script.addEventListener('error', (e) => {
340
+ const error = new Error(`main bundle [${umdModuleName}] load failed from [${jsUrl}]: ${e?.message || ''}`)
341
+ reject(error)
342
+ })
343
+ targetDoc.body.appendChild(script)
344
+ })
345
+ }
346
+
347
+ async function loadJSExportFunction(url) {
348
+ return loadUmdModule(url, 'cloudbase_private_link')
349
+ }
350
+
351
+ function isBrotliCompressed(url) {
352
+ let brotliCompressed = false
353
+
354
+ let pathname = ''
355
+ try {
356
+ const location = parseURL(url)
357
+ pathname = location.pathname
358
+ } catch (e) {
359
+ pathname = url
360
+ }
361
+
362
+ if (/\.br$/.test(pathname)) {
363
+ brotliCompressed = true
364
+ }
365
+ return brotliCompressed
366
+ }
@@ -1,5 +0,0 @@
1
- export declare function getExportFunction(url: any, module: any, mode?: string): Promise<WebAssembly.Exports | {
2
- callContainer: any;
3
- initContainer: any;
4
- }>;
5
- export declare function loadJSExportFunction(url: any): Promise<any>;
@@ -1 +0,0 @@
1
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("cloudbase_container",[],e):"object"==typeof exports?exports.cloudbase_container=e():t.cloudbase_container=e()}("undefined"!=typeof window?window:this,()=>(()=>{var t={671:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.COMPONENT_NAME=void 0,e.COMPONENT_NAME="container"},976:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},a=this&&this.__decorate||function(t,e,n,r){var o,i=arguments.length,a=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var c=t.length-1;c>=0;c--)(o=t[c])&&(a=(i<3?o(a):i>3?o(e,n,a):o(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a},c=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},s=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{s(r.next(t))}catch(t){i(t)}}function c(t){try{s(r.throw(t))}catch(t){i(t)}}function s(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}s((r=r.apply(t,e||[])).next())}))},u=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(s){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=e.call(t,a)}catch(t){c=[6,t],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,s])}}},l=this&&this.__rest||function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(n[r[o]]=t[r[o]])}return n};Object.defineProperty(e,"__esModule",{value:!0}),e.registerContainers=e.CloudbaseContainers=void 0;var f=n(136),p=n(438),d=n(671),h=function(){throw new Error("getExportFunction 未实现")},y=function(){throw new Error("loadJSExportFunction 未实现")};h=function(){new Error("小程序不支持 wasm 加载")},y=function(){new Error("小程序不支持动态 js 加载")};var v=f.constants.ERRORS,g=f.constants.COMMUNITY_SITE_URL,w=f.utils.execCallback,m=f.utils.printWarn,b=f.helpers.catchErrorsDecorator,_=function(t){function e(e,n){var r=this,o=JSON.stringify({code:v.INVALID_PARAMS,msg:"[".concat(e,"] ").concat(n)});return(r=t.call(this,o)||this).code=v.INVALID_PARAMS,r}return o(e,t),e.prototype.toJSON=function(){return{code:this.code,message:this.message}},e}(Error);function O(t,e,n){void 0===e&&(e=d.COMPONENT_NAME),void 0===n&&(n="call container error");var r=t instanceof Error?t:new Error("[".concat(e,"] ").concat((null==t?void 0:t.message)||n));return r.code=(null==t?void 0:t.code)||"UNKNOWN_ERROR",r}var E=e.CloudbaseContainers=function(){function t(t){var e=this;if(this.config=i({},t),!this.config.wasmUrl&&!this.config.jsUrl&&!globalThis.cloudbase_private_link)throw new _("".concat(d.COMPONENT_NAME),"缺少 privatelink sdk 地址");this.config.wasmUrl?this.wasm=h(this.config.wasmUrl).catch((function(t){if(e.config.jsUrl)return console.warn("load wams error, fall back to use js",t),y(e.config.jsUrl);if(globalThis.cloudbase_private_link)return globalThis.cloudbase_private_link;throw t})):this.config.jsUrl?this.wasm=y(this.config.jsUrl):this.wasm=Promise.resolve({initContainer:globalThis.cloudbase_private_link.initContainer,callContainer:globalThis.cloudbase_private_link.callContainer})}return t.prototype.callContainer=function(t,e){return s(this,void 0,void 0,(function(){var n,r,o,a,c,s,f,h,y,v,g,m,b,E,S,N,A,C;return u(this,(function(u){switch(u.label){case 0:return[4,this.initContainer(this.config)];case 1:return u.sent(),n="".concat(d.COMPONENT_NAME,".callContainer"),[4,this.wasm];case 2:if(r=u.sent().callContainer,o=i({},t),a=o.url,E=o.method,c=void 0===E?"GET":E,S=o.header,s=void 0===S?{}:S,f=o.data,N=o.timeout,h=void 0===N?6e4:N,A=o.dataType,y=void 0===A?"json":A,C=o.responseType,v=void 0===C?"text":C,g=l(o,["url","method","header","data","timeout","dataType","responseType"]),!a)throw new _(n,"invalid request url");if(!c)throw new _(n,"invalid request method");u.label=3;case 3:return u.trys.push([3,5,,6]),[4,new Promise((function(t,e){var o=i({url:a,method:c,header:s,data:(0,p.serializeRequestBody)(s,f),timeout:h,dataType:y,responseType:v},g);if(void 0!==o.data&&!(0,p.isBuffer)(o.data)){if("string"!=typeof o.data&&"GET"===c)try{var u=Object.entries(o.data||{}).reduce((function(t,e){var n=e[0],r=e[1];return t.push("".concat(encodeURIComponent(n),"=").concat(encodeURIComponent(String(r)))),t}),[]);u.length&&(o.data=u.join("&"))}catch(t){}if("GET"===c&&"string"==typeof o.data&&o.data){var l=(0,p.parseURL)(a);l.search?l.search+="&".concat(o.data):l.search="?".concat(o.data),o.url=l.href,o.data=void 0}}f&&((0,p.isBuffer)(o.data)||"string"==typeof o.data)&&(null==f?void 0:f.length)>1024e4?e(new _(n,"body too large")):r(i(i({},o),{success:t,fail:function(t){var r=(t||{}).data;e(O(r,n,"call container error"))}}))}))];case 4:return m=u.sent(),[2,w(e,null,m)];case 5:return b=u.sent(),w(e,b),[3,6];case 6:return[2]}}))}))},t.prototype.initContainer=function(t){return s(this,void 0,void 0,(function(){var e;return u(this,(function(n){switch(n.label){case 0:return[4,this.wasm];case 1:return e=n.sent().initContainer,this.containerInitPromise||(this.containerInitPromise=new Promise((function(n,r){e({config:t,success:function(t){"200"!==String(t.statusCode)&&r(O(t.data,"".concat(d.COMPONENT_NAME,".initContainer"),"init container fail")),n(t)},fail:function(t){r(O(t.data,"".concat(d.COMPONENT_NAME,".initContainer"),"init container fail")),this._containerInitPromis=null}})}))),[2,this.containerInitPromise]}}))}))},a([b({customInfo:{className:"Cloudbase",methodName:"callContainer"},title:"调用失败",messages:["请确认以下各项:"," 1 - 调用 callContainer() 的语法或参数是否正确"," 2 - 域名 & 路径是否存在","如果问题依然存在,建议到官方问答社区提问或寻找帮助:".concat(g)]}),c("design:type",Function),c("design:paramtypes",[Object,Function]),c("design:returntype",Promise)],t.prototype,"callContainer",null),t}(),S={name:d.COMPONENT_NAME,namespace:"container",entity:function(t){if(this.containerInstance)return m(v.INVALID_OPERATION,"every cloudbase instance should has only one container object"),this.containerInstance;var e=new E(t);return this.containerInstance=e,this.callContainer=e.callContainer.bind(e),this.containerInstance}};try{cloudbase.registerComponent(S)}catch(t){}e.registerContainers=function(t){try{t.registerComponent(S)}catch(t){console.warn(t)}}},438:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.serializeRequestBody=e.isBuffer=e.parseURL=void 0;var r=n(136),o=n(671),i=r.constants.ERRORS;function a(t){return t instanceof ArrayBuffer||ArrayBuffer.isView(t)}e.parseURL=function(t){if(document){var e=document.createElement("a");return e.href=t,e}return new URL(new Request(t).url)},e.isBuffer=a,e.serializeRequestBody=function(t,e){var n=e;if("object"==typeof e&&!a(e))switch(t["Content-Type"]||t["content-type"]||(t["Content-Type"]="application/json"),t["Content-Type"]||t["content-type"]){case"application/json":try{n=JSON.stringify(e)}catch(t){throw new Error(JSON.stringify({code:i.INVALID_PARAMS,msg:"[".concat(o.COMPONENT_NAME,".callContainer] invalid data with content-type: application/json, ").concat(t.message)}))}break;case"application/x-www-form-urlencoded":try{var r=Object.entries(e||{}).reduce((function(t,e){var n=e[0],r=e[1];return t.push("".concat(encodeURIComponent(n),"=").concat(encodeURIComponent(r))),t}),[]);r.length&&(n=r.join("&"))}catch(t){throw new Error(JSON.stringify({code:i.INVALID_PARAMS,msg:"[".concat(o.COMPONENT_NAME,".callContainer] invalid data with content-type: application/x-www-form-urlencoded,").concat(t.message)}))}}return n}},112:function(t,e,n){var r;t.exports=(r=r||function(t,e){var r;if("undefined"!=typeof window&&window.crypto&&(r=window.crypto),"undefined"!=typeof self&&self.crypto&&(r=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(r=globalThis.crypto),!r&&"undefined"!=typeof window&&window.msCrypto&&(r=window.msCrypto),!r&&void 0!==n.g&&n.g.crypto&&(r=n.g.crypto),!r)try{r=n(429)}catch(t){}var o=function(){if(r){if("function"==typeof r.getRandomValues)try{return r.getRandomValues(new Uint32Array(1))[0]}catch(t){}if("function"==typeof r.randomBytes)try{return r.randomBytes(4).readInt32LE()}catch(t){}}throw new Error("Native crypto module could not be used to get secure random number.")},i=Object.create||function(){function t(){}return function(e){var n;return t.prototype=e,n=new t,t.prototype=null,n}}(),a={},c=a.lib={},s=c.Base={extend:function(t){var e=i(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},u=c.WordArray=s.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=null!=e?e:4*t.length},toString:function(t){return(t||f).stringify(this)},concat:function(t){var e=this.words,n=t.words,r=this.sigBytes,o=t.sigBytes;if(this.clamp(),r%4)for(var i=0;i<o;i++){var a=n[i>>>2]>>>24-i%4*8&255;e[r+i>>>2]|=a<<24-(r+i)%4*8}else for(var c=0;c<o;c+=4)e[r+c>>>2]=n[c>>>2];return this.sigBytes+=o,this},clamp:function(){var e=this.words,n=this.sigBytes;e[n>>>2]&=4294967295<<32-n%4*8,e.length=t.ceil(n/4)},clone:function(){var t=s.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],n=0;n<t;n+=4)e.push(o());return new u.init(e,t)}}),l=a.enc={},f=l.Hex={stringify:function(t){for(var e=t.words,n=t.sigBytes,r=[],o=0;o<n;o++){var i=e[o>>>2]>>>24-o%4*8&255;r.push((i>>>4).toString(16)),r.push((15&i).toString(16))}return r.join("")},parse:function(t){for(var e=t.length,n=[],r=0;r<e;r+=2)n[r>>>3]|=parseInt(t.substr(r,2),16)<<24-r%8*4;return new u.init(n,e/2)}},p=l.Latin1={stringify:function(t){for(var e=t.words,n=t.sigBytes,r=[],o=0;o<n;o++){var i=e[o>>>2]>>>24-o%4*8&255;r.push(String.fromCharCode(i))}return r.join("")},parse:function(t){for(var e=t.length,n=[],r=0;r<e;r++)n[r>>>2]|=(255&t.charCodeAt(r))<<24-r%4*8;return new u.init(n,e)}},d=l.Utf8={stringify:function(t){try{return decodeURIComponent(escape(p.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return p.parse(unescape(encodeURIComponent(t)))}},h=c.BufferedBlockAlgorithm=s.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var n,r=this._data,o=r.words,i=r.sigBytes,a=this.blockSize,c=i/(4*a),s=(c=e?t.ceil(c):t.max((0|c)-this._minBufferSize,0))*a,l=t.min(4*s,i);if(s){for(var f=0;f<s;f+=a)this._doProcessBlock(o,f);n=o.splice(0,s),r.sigBytes-=l}return new u.init(n,l)},clone:function(){var t=s.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0}),y=(c.Hasher=h.extend({cfg:s.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){h.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){return t&&this._append(t),this._doFinalize()},blockSize:16,_createHelper:function(t){return function(e,n){return new t.init(n).finalize(e)}},_createHmacHelper:function(t){return function(e,n){return new y.HMAC.init(t,n).finalize(e)}}}),a.algo={});return a}(Math),r)},885:function(t,e,n){var r,o,i;t.exports=(i=n(112),o=(r=i).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,n=t.sigBytes,r=this._map;t.clamp();for(var o=[],i=0;i<n;i+=3)for(var a=(e[i>>>2]>>>24-i%4*8&255)<<16|(e[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|e[i+2>>>2]>>>24-(i+2)%4*8&255,c=0;c<4&&i+.75*c<n;c++)o.push(r.charAt(a>>>6*(3-c)&63));var s=r.charAt(64);if(s)for(;o.length%4;)o.push(s);return o.join("")},parse:function(t){var e=t.length,n=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var i=0;i<n.length;i++)r[n.charCodeAt(i)]=i}var a=n.charAt(64);if(a){var c=t.indexOf(a);-1!==c&&(e=c)}return function(t,e,n){for(var r=[],i=0,a=0;a<e;a++)if(a%4){var c=n[t.charCodeAt(a-1)]<<a%4*2,s=n[t.charCodeAt(a)]>>>6-a%4*2,u=c|s;r[i>>>2]|=u<<24-i%4*8,i++}return o.create(r,i)}(t,e,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},i.enc.Base64)},287:function(t,e,n){var r;t.exports=(r=n(112),r.enc.Utf8)},652:function(t,e,n){var r;t.exports=(r=n(112),n(232),n(456),r.HmacSHA256)},456:function(t,e,n){var r,o,i,a;t.exports=(r=n(112),i=(o=r).lib.Base,a=o.enc.Utf8,void(o.algo.HMAC=i.extend({init:function(t,e){t=this._hasher=new t.init,"string"==typeof e&&(e=a.parse(e));var n=t.blockSize,r=4*n;e.sigBytes>r&&(e=t.finalize(e)),e.clamp();for(var o=this._oKey=e.clone(),i=this._iKey=e.clone(),c=o.words,s=i.words,u=0;u<n;u++)c[u]^=1549556828,s[u]^=909522486;o.sigBytes=i.sigBytes=r,this.reset()},reset:function(){var t=this._hasher;t.reset(),t.update(this._iKey)},update:function(t){return this._hasher.update(t),this},finalize:function(t){var e=this._hasher,n=e.finalize(t);return e.reset(),e.finalize(this._oKey.clone().concat(n))}})))},232:function(t,e,n){var r;t.exports=(r=n(112),function(t){var e=r,n=e.lib,o=n.WordArray,i=n.Hasher,a=e.algo,c=[],s=[];!function(){function e(e){for(var n=t.sqrt(e),r=2;r<=n;r++)if(!(e%r))return!1;return!0}function n(t){return 4294967296*(t-(0|t))|0}for(var r=2,o=0;o<64;)e(r)&&(o<8&&(c[o]=n(t.pow(r,.5))),s[o]=n(t.pow(r,1/3)),o++),r++}();var u=[],l=a.SHA256=i.extend({_doReset:function(){this._hash=new o.init(c.slice(0))},_doProcessBlock:function(t,e){for(var n=this._hash.words,r=n[0],o=n[1],i=n[2],a=n[3],c=n[4],l=n[5],f=n[6],p=n[7],d=0;d<64;d++){if(d<16)u[d]=0|t[e+d];else{var h=u[d-15],y=(h<<25|h>>>7)^(h<<14|h>>>18)^h>>>3,v=u[d-2],g=(v<<15|v>>>17)^(v<<13|v>>>19)^v>>>10;u[d]=y+u[d-7]+g+u[d-16]}var w=r&o^r&i^o&i,m=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),b=p+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&l^~c&f)+s[d]+u[d];p=f,f=l,l=c,c=a+b|0,a=i,i=o,o=r,r=b+(m+w)|0}n[0]=n[0]+r|0,n[1]=n[1]+o|0,n[2]=n[2]+i|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0,n[5]=n[5]+l|0,n[6]=n[6]+f|0,n[7]=n[7]+p|0},_doFinalize:function(){var e=this._data,n=e.words,r=8*this._nDataBytes,o=8*e.sigBytes;return n[o>>>5]|=128<<24-o%32,n[14+(o+64>>>9<<4)]=t.floor(r/4294967296),n[15+(o+64>>>9<<4)]=r,e.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var t=i.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=i._createHelper(l),e.HmacSHA256=i._createHmacHelper(l)}(Math),r.SHA256)},136:(t,e,n)=>{"use strict";n.r(e),n.d(e,{adapters:()=>i,cache:()=>a,constants:()=>r,events:()=>c,helpers:()=>s,jwt:()=>xt,utils:()=>o});var r={};n.r(r),n.d(r,{COMMUNITY_SITE_URL:()=>g,ERRORS:()=>w,IS_DEBUG_MODE:()=>v,OATUH_LOGINTYPE:()=>m,getProtocol:()=>h,getSdkName:()=>f,setProtocol:()=>d,setSdkName:()=>l});var o={};n.r(o),n.d(o,{createPromiseCallback:()=>V,createSign:()=>B,execCallback:()=>z,formatUrl:()=>U,genSeqId:()=>M,getHash:()=>J,getQuery:()=>H,isArray:()=>I,isFormData:()=>k,isInstanceOf:()=>T,isNull:()=>x,isPalinObject:()=>R,isString:()=>j,isUndefined:()=>P,printError:()=>W,printGroupLog:()=>K,printInfo:()=>$,printWarn:()=>F,removeParam:()=>q,sleep:()=>Y,throwError:()=>G,toQueryString:()=>D,transformPhone:()=>X});var i={};n.r(i),n.d(i,{RUNTIME:()=>Z,useAdapters:()=>it,useDefaultAdapter:()=>at});var a={};n.r(a),n.d(a,{CloudbaseCache:()=>ft});var c={};n.r(c),n.d(c,{CloudbaseEvent:()=>ht,CloudbaseEventEmitter:()=>vt,IErrorEvent:()=>yt,activateEvent:()=>mt,addEventListener:()=>wt,removeEventListener:()=>bt});var s={};n.r(s),n.d(s,{catchErrorsDecorator:()=>At});var u="@cloudbase/js-sdk";function l(t){u=t}function f(){return u}var p="https:";function d(t){p=t}function h(){return p}var y,v=!1,g="https://support.qq.com/products/148793",w={INVALID_PARAMS:"INVALID_PARAMS",INVALID_SYNTAX:"INVALID_SYNTAX",INVALID_OPERATION:"INVALID_OPERATION",OPERATION_FAIL:"OPERATION_FAIL",NETWORK_ERROR:"NETWORK_ERROR",UNKOWN_ERROR:"UNKOWN_ERROR"},m="constants";!function(t){t.local="local",t.none="none",t.session="session"}(y||(y={}));var b=function(){},_=function(){},O=n(652),E=n.n(O),S=n(885),N=n.n(S),A=n(287),C=n.n(A);function I(t){return"[object Array]"===Object.prototype.toString.call(t)}function j(t){return"string"==typeof t}function P(t){return void 0===t}function R(t){return"[object Object]"===Object.prototype.toString.call(t)}function x(t){return"[object Null]"===Object.prototype.toString.call(t)}function T(t,e){return t instanceof e}function k(t){return"[object FormData]"===Object.prototype.toString.call(t)}function M(){return Math.random().toString(16).slice(2)}function U(t,e,n){void 0===n&&(n={});var r=/\?/.test(e),o="";return Object.keys(n).forEach((function(t){""===o?!r&&(e+="?"):o+="&",o+="".concat(t,"=").concat(encodeURIComponent(n[t]))})),/^http(s)?:\/\//.test(e+=o)?e:"".concat(t).concat(e)}function L(t){var e=N().stringify(t);return e=(e=(e=e.replace(/=+$/,"")).replace(/\+/g,"-")).replace(/\//g,"_")}function B(t,e){var n=L(C().parse(JSON.stringify({alg:"HS256",typ:"JWT"}))),r=L(C().parse(JSON.stringify(t))),o="".concat(n,".").concat(r),i=L(E()(o,e));return"".concat(o,".").concat(i)}function D(t){void 0===t&&(t={});var e=[];return Object.keys(t).forEach((function(n){e.push("".concat(n,"=").concat(encodeURIComponent(t[n])))})),e.join("&")}function H(t,e){if("undefined"==typeof window)return!1;var n=e||window.location.search,r=new RegExp("(^|&)".concat(t,"=([^&]*)(&|$)")),o=n.substr(n.indexOf("?")+1).match(r);return null!=o?o[2]:""}var J=function(t){if("undefined"==typeof window)return"";var e=window.location.hash.match(new RegExp("[#?&/]".concat(t,"=([^&#]*)")));return e?e[1]:""};function q(t,e){var n=e.split("?")[0],r=[],o=-1!==e.indexOf("?")?e.split("?")[1]:"";if(""!==o){for(var i=(r=o.split("&")).length-1;i>=0;i-=1)r[i].split("=")[0]===t&&r.splice(i,1);n="".concat(n,"?").concat(r.join("&"))}return n}function V(){var t;if(!Promise){(t=function(){}).promise={};var e=function(){throw new Error('Your Node runtime does support ES6 Promises. Set "global.Promise" to your preferred implementation of promises.')};return Object.defineProperty(t.promise,"then",{get:e}),Object.defineProperty(t.promise,"catch",{get:e}),t}var n=new Promise((function(e,n){t=function(t,r){return t?n(t):e(r)}}));return t.promise=n,t}function z(t,e,n){if(void 0===n&&(n=null),t&&"function"==typeof t)return t(e,n);if(e)throw e;return n}function F(t,e){console.warn("[".concat(f(),"][").concat(t,"]:").concat(e))}function W(t,e){console.error({code:t,msg:"[".concat(f(),"][").concat(t,"]:").concat(e)})}function $(t,e){console.log("[".concat(f(),"][").concat(t,"]:").concat(e))}function G(t,e){throw new Error(JSON.stringify({code:t,msg:"[".concat(f(),"][").concat(t,"]:").concat(e)}))}function K(t){var e=t.title,n=t.subtitle,r=void 0===n?"":n,o=t.content,i=void 0===o?[]:o,a=t.printTrace,c=void 0!==a&&a,s=t.collapsed;void 0!==s&&s?console.groupCollapsed(e,r):console.group(e,r);for(var u=0,l=i;u<l.length;u++){var f=l[u],p=f.type,d=f.body;switch(p){case"info":console.log(d);break;case"warn":console.warn(d);break;case"error":console.error(d)}}c&&console.trace("stack trace:"),console.groupEnd()}var Y=function(t){return void 0===t&&(t=0),new Promise((function(e){return setTimeout(e,t)}))};function X(t){return"+86".concat(t)}var Q,Z,tt=(Q=function(t,e){return(Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}Q(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),et=function(){return(et=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},nt=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{s(r.next(t))}catch(t){i(t)}}function c(t){try{s(r.throw(t))}catch(t){i(t)}}function s(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}s((r=r.apply(t,e||[])).next())}))},rt=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(s){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=e.call(t,a)}catch(t){c=[6,t],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,s])}}},ot=function(t){function e(e){var n=t.call(this)||this,r=e.timeout,o=e.timeoutMsg,i=e.restrictedMethods;return n.timeout=r||0,n.timeoutMsg=o||"请求超时",n.restrictedMethods=i||["get","post","upload","download"],n}return tt(e,t),e.prototype.get=function(t){return this.request(et(et({},t),{method:"get"}),this.restrictedMethods.includes("get"))},e.prototype.post=function(t){return this.request(et(et({},t),{method:"post"}),this.restrictedMethods.includes("post"))},e.prototype.put=function(t){return this.request(et(et({},t),{method:"put"}))},e.prototype.upload=function(t){var e=t.data,n=t.file,r=t.name,o=t.method,i=t.headers,a=void 0===i?{}:i,c={post:"post",put:"put"}[null==o?void 0:o.toLowerCase()]||"put",s=new FormData;return"post"===c?(Object.keys(e).forEach((function(t){s.append(t,e[t])})),s.append("key",r),s.append("file",n),this.request(et(et({},t),{data:s,method:c}),this.restrictedMethods.includes("upload"))):this.request(et(et({},t),{method:"put",headers:a,body:n}),this.restrictedMethods.includes("upload"))},e.prototype.download=function(t){return nt(this,void 0,void 0,(function(){var e,n,r,o;return rt(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this.get(et(et({},t),{headers:{},responseType:"blob"}))];case 1:return e=i.sent().data,n=window.URL.createObjectURL(new Blob([e])),r=decodeURIComponent(new URL(t.url).pathname.split("/").pop()||""),(o=document.createElement("a")).href=n,o.setAttribute("download",r),o.style.display="none",document.body.appendChild(o),o.click(),window.URL.revokeObjectURL(n),document.body.removeChild(o),[3,3];case 2:return i.sent(),[3,3];case 3:return[2,new Promise((function(e){e({statusCode:200,tempFilePath:t.url})}))]}}))}))},e.prototype.request=function(t,e){var n=this;void 0===e&&(e=!1);var r=String(t.method).toLowerCase()||"get";return new Promise((function(o){var i,a,c=t.url,s=t.headers,u=void 0===s?{}:s,l=t.data,f=t.responseType,p=t.withCredentials,d=t.body,y=t.onUploadProgress,v=U(h(),c,"get"===r?l:{}),g=new XMLHttpRequest;g.open(r,v),f&&(g.responseType=f),Object.keys(u).forEach((function(t){g.setRequestHeader(t,u[t])})),y&&g.upload.addEventListener("progress",y),g.onreadystatechange=function(){var t={};if(4===g.readyState){var e=g.getAllResponseHeaders().trim().split(/[\r\n]+/),n={};e.forEach((function(t){var e=t.split(": "),r=e.shift().toLowerCase(),o=e.join(": ");n[r]=o})),t.header=n,t.statusCode=g.status;try{t.data="blob"===f?g.response:JSON.parse(g.responseText)}catch(e){t.data="blob"===f?g.response:g.responseText}clearTimeout(i),o(t)}},e&&n.timeout&&(i=setTimeout((function(){console.warn(n.timeoutMsg),g.abort()}),n.timeout)),a=k(l)?l:"application/x-www-form-urlencoded"===u["content-type"]?D(l):d||(l?JSON.stringify(l):void 0),p&&(g.withCredentials=!0),g.send(a)}))},e}(b);function it(t){for(var e=0,n=I(t)?t:[t];e<n.length;e++){var r=n[e],o=r.isMatch,i=r.genAdapter,a=r.runtime;if(o())return{adapter:i(),runtime:a}}}function at(){return{adapter:{root:window,reqClass:ot,wsClass:WebSocket,localStorage:localStorage},runtime:Z.WEB}}!function(t){t.WEB="web",t.WX_MP="wx_mp"}(Z||(Z={}));var ct=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),st=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{s(r.next(t))}catch(t){i(t)}}function c(t){try{s(r.throw(t))}catch(t){i(t)}}function s(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}s((r=r.apply(t,e||[])).next())}))},ut=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(s){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=e.call(t,a)}catch(t){c=[6,t],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,s])}}},lt=function(t){function e(e){var n=t.call(this)||this;return n.root=e,e.tcbCacheObject||(e.tcbCacheObject={}),n}return ct(e,t),e.prototype.setItem=function(t,e){this.root.tcbCacheObject[t]=e},e.prototype.getItem=function(t){return this.root.tcbCacheObject[t]},e.prototype.removeItem=function(t){delete this.root.tcbCacheObject[t]},e.prototype.clear=function(){delete this.root.tcbCacheObject},e}(_);var ft=function(){function t(t){this.keys={};var e=t.persistence,n=t.platformInfo,r=void 0===n?{}:n,o=t.keys,i=void 0===o?{}:o;this.platformInfo=r,this.storage||(this.persistenceTag=this.platformInfo.adapter.primaryStorage||e,this.storage=function(t,e){switch(t){case"local":return e.localStorage?e.localStorage:(F(w.INVALID_PARAMS,"localStorage is not supported on current platform"),new lt(e.root));case"none":return new lt(e.root);default:return e.localStorage?e.localStorage:(F(w.INVALID_PARAMS,"localStorage is not supported on current platform"),new lt(e.root))}}(this.persistenceTag,this.platformInfo.adapter),this.keys=i)}return Object.defineProperty(t.prototype,"mode",{get:function(){return this.storage.mode||"sync"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"persistence",{get:function(){return this.persistenceTag},enumerable:!1,configurable:!0}),t.prototype.setStore=function(t,e,n){if("async"!==this.mode){if(this.storage)try{var r={version:n||"localCachev1",content:e};this.storage.setItem(t,JSON.stringify(r))}catch(t){throw new Error(JSON.stringify({code:w.OPERATION_FAIL,msg:"[".concat(f(),"][").concat(w.OPERATION_FAIL,"]setStore failed"),info:t}))}}else F(w.INVALID_OPERATION,"current platform's storage is asynchronous, please use setStoreAsync insteed")},t.prototype.setStoreAsync=function(t,e,n){return st(this,void 0,void 0,(function(){var r;return ut(this,(function(o){switch(o.label){case 0:if(!this.storage)return[2];o.label=1;case 1:return o.trys.push([1,3,,4]),r={version:n||"localCachev1",content:e},[4,this.storage.setItem(t,JSON.stringify(r))];case 2:return o.sent(),[3,4];case 3:return o.sent(),[2];case 4:return[2]}}))}))},t.prototype.getStore=function(t,e){var n;if("async"!==this.mode){try{if("undefined"!=typeof process&&(null===(n=process.env)||void 0===n?void 0:n.tcb_token))return process.env.tcb_token;if(!this.storage)return""}catch(t){return""}e=e||"localCachev1";var r=this.storage.getItem(t);return r&&r.indexOf(e)>=0?JSON.parse(r).content:""}F(w.INVALID_OPERATION,"current platform's storage is asynchronous, please use getStoreAsync insteed")},t.prototype.getStoreAsync=function(t,e){var n;return st(this,void 0,void 0,(function(){var r;return ut(this,(function(o){switch(o.label){case 0:try{if("undefined"!=typeof process&&(null===(n=process.env)||void 0===n?void 0:n.tcb_token))return[2,process.env.tcb_token];if(!this.storage)return[2,""]}catch(t){return[2,""]}return e=e||"localCachev1",[4,this.storage.getItem(t)];case 1:return(r=o.sent())&&r.indexOf(e)>=0?[2,JSON.parse(r).content]:[2,""]}}))}))},t.prototype.removeStore=function(t){"async"!==this.mode?this.storage.removeItem(t):F(w.INVALID_OPERATION,"current platform's storage is asynchronous, please use removeStoreAsync insteed")},t.prototype.removeStoreAsync=function(t){return st(this,void 0,void 0,(function(){return ut(this,(function(e){switch(e.label){case 0:return[4,this.storage.removeItem(t)];case 1:return e.sent(),[2]}}))}))},t}(),pt=function(){var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])})(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),dt=function(t,e,n){if(n||2===arguments.length)for(var r,o=0,i=e.length;o<i;o++)!r&&o in e||(r||(r=Array.prototype.slice.call(e,0,o)),r[o]=e[o]);return t.concat(r||Array.prototype.slice.call(e))};var ht=function(t,e){this.data=e||null,this.name=t},yt=function(t){function e(e,n){var r=t.call(this,"error",{error:e,data:n})||this;return r.error=e,r}return pt(e,t),e}(ht),vt=function(){function t(){this.listeners={}}return t.prototype.on=function(t,e){return function(t,e,n){n[t]=n[t]||[],n[t].push(e)}(t,e,this.listeners),this},t.prototype.off=function(t,e){return function(t,e,n){if(null==n?void 0:n[t]){var r=n[t].indexOf(e);-1!==r&&n[t].splice(r,1)}}(t,e,this.listeners),this},t.prototype.fire=function(t,e){if(T(t,yt))return console.error(t.error),this;var n=j(t)?new ht(t,e||{}):t,r=n.name;if(this.listens(r)){n.target=this;for(var o=0,i=this.listeners[r]?dt([],this.listeners[r],!0):[];o<i.length;o++){i[o].call(this,n)}}return this},t.prototype.listens=function(t){return this.listeners[t]&&this.listeners[t].length>0},t}(),gt=new vt;function wt(t,e){gt.on(t,e)}function mt(t,e){void 0===e&&(e={}),gt.fire(t,e)}function bt(t,e){gt.off(t,e)}var _t=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{s(r.next(t))}catch(t){i(t)}}function c(t){try{s(r.throw(t))}catch(t){i(t)}}function s(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}s((r=r.apply(t,e||[])).next())}))},Ot=function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(s){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=e.call(t,a)}catch(t){c=[6,t],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,s])}}},Et=!1;"undefined"!=typeof navigator&&navigator.userAgent&&(Et=-1!==navigator.userAgent.indexOf("Firefox"));var St=Et?/(\.js\/)?__decorate(\$\d+)?<@.*\d$/:/(\/\w+\.js\.)?__decorate(\$\d+)?\s*\(.*\)$/,Nt=/https?:\/\/.+:\d*\/.*\.js:\d+:\d+/;function At(t){var e=t.mode,n=void 0===e?"async":e,r=t.customInfo,o=void 0===r?{}:r,i=t.title,a=t.messages,c=void 0===a?[]:a;return function(t,e,r){if(v){var a=o.className||t.constructor.name,s=o.methodName||e,u=r.value,l=function(t){var e="",n=t.stack.split("\n"),r=n.findIndex((function(t){return St.test(t)}));if(-1!==r){var o=Nt.exec(n[r+1]||"");e=o?o[0]:""}return e}(new Error);r.value="sync"===n?function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=Ct({err:new Error,className:a,methodName:s,sourceLink:l});try{return u.apply(this,t)}catch(t){var r=t,o=t.message,f=t.error,p=t.error_description,d={title:i||"".concat(a,".").concat(s," failed"),content:[{type:"error",body:t}]};if(o&&/^\{.*\}$/.test(o)){var h=JSON.parse(o);d.subtitle=o,h.code&&(n?(n.code=h.code,n.msg=h.msg):(t.code=h.code,t.message=h.msg),r=n||t,d.content=c.map((function(t){return{type:"info",body:t}})))}throw f&&p&&(d.subtitle=p,n?(n.code=f,n.msg=p):(t.code=f,t.message=p),r=n||t,d.content=c.map((function(t){return{type:"info",body:t}}))),K(d),r}}:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return _t(this,void 0,void 0,(function(){var e,n,r,o,f,p,d,h;return Ot(this,(function(y){switch(y.label){case 0:e=Ct({err:new Error,className:a,methodName:s,sourceLink:l}),y.label=1;case 1:return y.trys.push([1,3,,4]),[4,u.apply(this,t)];case 2:return[2,y.sent()];case 3:throw n=y.sent(),r=n,o=n.message,f=n.error,p=n.error_description,d={title:i||"".concat(a,".").concat(s," failed"),content:[{type:"error",body:n}]},o&&/^\{.*\}$/.test(o)&&(h=JSON.parse(o),d.subtitle=h,h.code&&(e?(e.code=h.code,e.message=h.msg):(n.code=h.code,n.message=h.msg),r=e||n,d.content=c.map((function(t){return{type:"info",body:t}})))),f&&p&&(d.subtitle=p,e?(e.code=f,e.msg=p):(n.code=f,n.message=p),r=e||n,d.content=c.map((function(t){return{type:"info",body:t}}))),K(d),r;case 4:return[2]}}))}))}}}}function Ct(t){var e=t.err,n=t.className,r=t.methodName,o=t.sourceLink;if(!o)return null;var i,a=e.stack.split("\n"),c=Et?/^catchErrorsDecorator\/<\/descriptor.value@.*\d$/:new RegExp("".concat(n,"\\.descriptor.value\\s*\\[as\\s").concat(r,"\\]\\s*\\(.*\\)$")),s=Et?/^catchErrorsDecorator\/<\/descriptor.value/:new RegExp("".concat(n,"\\.descriptor.value\\s*\\[as\\s").concat(r,"\\]")),u=a.findIndex((function(t){return c.test(t)}));if(-1!==u){var l=a.filter((function(t,e){return e>u}));l.unshift(a[u].replace(s,"".concat(n,".").concat(r)).replace(Nt,o)),(i=new Error).stack="".concat(Et?"@debugger":"Error","\n").concat(l.join("\n"))}return i}function It(t){this.message=t}It.prototype=new Error,It.prototype.name="InvalidCharacterError";var jt="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(t){var e=String(t).replace(/=+$/,"");if(e.length%4==1)throw new It("'atob' failed: The string to be decoded is not correctly encoded.");for(var n,r,o=0,i=0,a="";r=e.charAt(i++);~r&&(n=o%4?64*n+r:r,o++%4)?a+=String.fromCharCode(255&n>>(-2*o&6)):0)r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r);return a};function Pt(t){var e=t.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(jt(t).replace(/(.)/g,(function(t,e){var n=e.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n="0"+n),"%"+n})))}(e)}catch(t){return jt(e)}}function Rt(t){this.message=t}Rt.prototype=new Error,Rt.prototype.name="InvalidTokenError";var xt={decode:function(t,e){if("string"!=typeof t)throw new Rt("Invalid token specified");var n=!0===(e=e||{}).header?0:1;try{return JSON.parse(Pt(t.split(".")[n]))}catch(t){throw new Rt("Invalid token specified: "+t.message)}}}},429:()=>{}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={exports:{}};return t[r].call(i.exports,i,i.exports,n),i.exports}return n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n(976)})());
@@ -1,120 +0,0 @@
1
- import decompress from 'brotli/decompress'
2
- import Go from '../go_wams_exec'
3
- import { parseURL } from '.'
4
-
5
- async function instantiateStreaming(resp, importObject, brotliCompressed = false) {
6
- if (brotliCompressed || !WebAssembly.instantiateStreaming) {
7
- const source = await (await resp).arrayBuffer()
8
- const buffer = brotliCompressed ? decompress(new Int8Array(source)) : source
9
- return WebAssembly.instantiate(buffer, importObject)
10
- }
11
-
12
- return WebAssembly.instantiateStreaming(resp, importObject)
13
- }
14
-
15
- function isBrotliCompressed(url) {
16
- let brotliCompressed = false
17
-
18
- let pathname = ''
19
- try {
20
- const location = parseURL(url)
21
- pathname = location.pathname
22
- } catch (e) {
23
- pathname = url
24
- }
25
-
26
- if (/\.br$/.test(pathname)) {
27
- brotliCompressed = true
28
- }
29
- return brotliCompressed
30
- }
31
-
32
- export async function getExportFunction(url, module, mode = 'go') {
33
- let importObject = {
34
- env: {
35
- memoryBase: 0,
36
- tableBase: 0,
37
- memory: new WebAssembly.Memory({
38
- initial: 256,
39
- }),
40
- // table: new WebAssembly.Table({
41
- // initial: 2,
42
- // element: 'anyfunc',
43
- // }),
44
- },
45
- ...module,
46
- }
47
- let go
48
- const brotliCompressed = isBrotliCompressed(url)
49
-
50
- if (mode === 'go') {
51
- go = new Go()
52
- go._initedModulePromise = new Promise((resolve) => {
53
- go._initedModuleResolve = resolve
54
- })
55
- importObject = {
56
- ...go.importObject,
57
- env: {
58
- ...go.importObject.env,
59
- exportModule(module) {
60
- return go._initedModuleResolve(module)
61
- },
62
- },
63
- }
64
- }
65
-
66
- const reuslt = await instantiateStreaming(fetch(url), importObject, brotliCompressed)
67
-
68
- if (mode === 'go') {
69
- await Promise.race([
70
- go.run(reuslt.instance),
71
- new Promise(resolve => setTimeout(() => {
72
- resolve(null)
73
- }, 500),),
74
- ])
75
-
76
- return {
77
- callContainer: (window as any).callContainer,
78
- initContainer: (window as any).initContainer,
79
- }
80
- }
81
-
82
- // if (mode === 'go') {
83
- // go.run(reuslt.instance)
84
- // const module = await go._initedModulePromise
85
- // return module
86
- // }
87
-
88
- return reuslt.instance.exports
89
- }
90
-
91
- export async function loadJSExportFunction(url) {
92
- return loadUmdModule(url, 'cloudbase_private_link')
93
- }
94
-
95
- function loadUmdModule(jsUrl: string, umdModuleName: string, targetDoc: Document = document) {
96
- return new Promise<any>((resolve, reject) => {
97
- const win = targetDoc.defaultView
98
-
99
- const script = targetDoc.createElement('script')
100
- script.setAttribute('src', jsUrl)
101
- script.setAttribute('class', umdModuleName)
102
- script.addEventListener('load', () => {
103
- if (Object.prototype.hasOwnProperty.call(win, umdModuleName)) {
104
- return resolve(win[umdModuleName as any])
105
- }
106
- const error = new Error(`Fail to load UMD module ${umdModuleName} from [${jsUrl}].`)
107
- return reject(error)
108
- })
109
-
110
- script.addEventListener('error', (e) => {
111
- const error = new Error(`main bundle [${umdModuleName}] load failed from [${jsUrl}]: ${e?.message || ''}`)
112
- reject(error)
113
- })
114
- if (targetDoc.body) {
115
- targetDoc.body.appendChild(script)
116
- } else {
117
- targetDoc.head.appendChild(script)
118
- }
119
- })
120
- }
@@ -1,77 +0,0 @@
1
- const webpack = require('webpack')
2
- const TerserPlugin = require('terser-webpack-plugin')
3
- const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
4
-
5
- module.exports = function (options) {
6
- const { context, entry, output, mode, watch, externals, definePlugin = {}, optimization = {} } = options
7
- const isDevelopment = mode !== 'production'
8
- let plugins = [
9
- // new WatchRunPlugin()
10
- new webpack.DefinePlugin(Object.assign({}, definePlugin)),
11
- // new BundleAnalyzerPlugin(),
12
- ].filter((item) => !!item)
13
- return {
14
- context,
15
- entry,
16
- mode,
17
- watch,
18
- watchOptions: {
19
- ignored: [output.path],
20
- },
21
- output,
22
- externals,
23
- cache: {
24
- type: 'memory',
25
- },
26
- devtool: false,
27
- resolve: {
28
- extensions: ['.ts', '.js', '.json'],
29
- },
30
- module: {
31
- rules: [
32
- {
33
- test: /\.ts$/,
34
- exclude: [/node_modules/],
35
- use: ['babel-loader', 'ts-loader'],
36
- },
37
- {
38
- test: /\.js$/,
39
- exclude: [/node_modules/],
40
- use: ['babel-loader'],
41
- },
42
- {
43
- test: /package\.json$/,
44
- loader: 'package-json-cleanup-loader',
45
- options: {
46
- only: ['version'],
47
- },
48
- },
49
- ],
50
- noParse: [/sjcl\.js$/],
51
- },
52
- plugins,
53
- optimization: {
54
- moduleIds: 'deterministic',
55
- emitOnErrors: false,
56
- removeEmptyChunks: true,
57
- usedExports: true,
58
- splitChunks: false,
59
- ...optimization,
60
- ...(isDevelopment
61
- ? {
62
- minimize: false,
63
- removeAvailableModules: false,
64
- concatenateModules: true,
65
- }
66
- : {
67
- minimizer: [
68
- new TerserPlugin({
69
- test: /\.js(\?.*)?$/i,
70
- cache: false,
71
- parallel: true,
72
- }),
73
- ],
74
- }),
75
- },
76
- }
77
- }
@@ -1,22 +0,0 @@
1
- const path = require('path')
2
-
3
- const params = {
4
- context: path.resolve(__dirname, '../../'),
5
- mode: 'production',
6
- watch: false,
7
- entry: path.resolve(__dirname, '../src/index.ts'),
8
- output: {
9
- path: path.resolve(__dirname, '../dist/miniprogram'),
10
- filename: 'index.js',
11
- library: `cloudbase_container`,
12
- libraryTarget: 'umd',
13
- umdNamedDefine: true,
14
- globalObject: 'typeof window !== "undefined"?window:this',
15
- },
16
- externals: {},
17
- definePlugin: {
18
- 'process.env.isMiniprogram': true, // 注入环境变量,用于业务代码判断
19
- },
20
- }
21
-
22
- module.exports = require('./web.prod.js')(params)