tempmail-sdk 1.0.3 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +51 -3
  2. package/bun.lock +60 -0
  3. package/demo/poll-emails.ts +7 -8
  4. package/dist/config.d.ts +47 -0
  5. package/dist/config.js +68 -0
  6. package/dist/index.d.ts +21 -20
  7. package/dist/index.js +101 -37
  8. package/dist/normalize.js +28 -3
  9. package/dist/providers/awamail.d.ts +2 -2
  10. package/dist/providers/awamail.js +1 -1
  11. package/dist/providers/chatgpt-org-uk.d.ts +2 -2
  12. package/dist/providers/chatgpt-org-uk.js +1 -1
  13. package/dist/providers/dropmail.d.ts +2 -2
  14. package/dist/providers/dropmail.js +1 -1
  15. package/dist/providers/guerrillamail.d.ts +22 -0
  16. package/dist/providers/guerrillamail.js +71 -0
  17. package/dist/providers/linshi-email.d.ts +2 -2
  18. package/dist/providers/linshi-email.js +1 -1
  19. package/dist/providers/mail-tm.d.ts +2 -2
  20. package/dist/providers/mail-tm.js +1 -1
  21. package/dist/providers/maildrop.d.ts +21 -0
  22. package/dist/providers/maildrop.js +180 -0
  23. package/dist/providers/temp-mail-io.d.ts +2 -2
  24. package/dist/providers/temp-mail-io.js +1 -1
  25. package/dist/providers/tempmail-la.d.ts +2 -2
  26. package/dist/providers/tempmail-la.js +1 -1
  27. package/dist/providers/tempmail-lol.d.ts +2 -2
  28. package/dist/providers/tempmail-lol.js +1 -1
  29. package/dist/providers/tempmail.d.ts +2 -2
  30. package/dist/providers/tempmail.js +1 -1
  31. package/dist/retry.js +14 -5
  32. package/dist/types.d.ts +14 -15
  33. package/dist/types.js +1 -1
  34. package/package.json +1 -1
  35. package/src/config.ts +82 -0
  36. package/src/index.ts +102 -39
  37. package/src/normalize.ts +30 -2
  38. package/src/providers/awamail.ts +2 -2
  39. package/src/providers/chatgpt-org-uk.ts +2 -2
  40. package/src/providers/dropmail.ts +2 -2
  41. package/src/providers/guerrillamail.ts +78 -0
  42. package/src/providers/linshi-email.ts +2 -2
  43. package/src/providers/mail-tm.ts +2 -2
  44. package/src/providers/maildrop.ts +210 -0
  45. package/src/providers/temp-mail-io.ts +2 -2
  46. package/src/providers/tempmail-la.ts +2 -2
  47. package/src/providers/tempmail-lol.ts +2 -2
  48. package/src/providers/tempmail.ts +2 -2
  49. package/src/retry.ts +15 -4
  50. package/src/types.ts +15 -15
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.TempEmailClient = exports.logger = exports.setLogger = exports.getLogLevel = exports.setLogLevel = exports.LogLevel = exports.fetchWithTimeout = exports.withRetry = exports.normalizeEmail = void 0;
36
+ exports.TempEmailClient = exports.getConfig = exports.setConfig = exports.logger = exports.setLogger = exports.getLogLevel = exports.setLogLevel = exports.LogLevel = exports.fetchWithTimeout = exports.withRetry = exports.normalizeEmail = void 0;
37
37
  exports.listChannels = listChannels;
38
38
  exports.getChannelInfo = getChannelInfo;
39
39
  exports.generateEmail = generateEmail;
@@ -47,8 +47,18 @@ const tempMailIO = __importStar(require("./providers/temp-mail-io"));
47
47
  const awamail = __importStar(require("./providers/awamail"));
48
48
  const mailTm = __importStar(require("./providers/mail-tm"));
49
49
  const dropmail = __importStar(require("./providers/dropmail"));
50
+ const guerrillamail = __importStar(require("./providers/guerrillamail"));
51
+ const maildropProvider = __importStar(require("./providers/maildrop"));
50
52
  const retry_1 = require("./retry");
51
53
  const logger_1 = require("./logger");
54
+ const config_1 = require("./config");
55
+ /**
56
+ * SDK 内部 token 存储
57
+ * 使用 WeakMap 将 EmailInfo 对象映射到对应的 token
58
+ * 用户无法直接访问 token,由 SDK 自动管理
59
+ * @internal
60
+ */
61
+ const tokenStore = new WeakMap();
52
62
  var normalize_1 = require("./normalize");
53
63
  Object.defineProperty(exports, "normalizeEmail", { enumerable: true, get: function () { return normalize_1.normalizeEmail; } });
54
64
  var retry_2 = require("./retry");
@@ -60,6 +70,9 @@ Object.defineProperty(exports, "setLogLevel", { enumerable: true, get: function
60
70
  Object.defineProperty(exports, "getLogLevel", { enumerable: true, get: function () { return logger_2.getLogLevel; } });
61
71
  Object.defineProperty(exports, "setLogger", { enumerable: true, get: function () { return logger_2.setLogger; } });
62
72
  Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_2.logger; } });
73
+ var config_2 = require("./config");
74
+ Object.defineProperty(exports, "setConfig", { enumerable: true, get: function () { return config_2.setConfig; } });
75
+ Object.defineProperty(exports, "getConfig", { enumerable: true, get: function () { return config_2.getConfig; } });
63
76
  /** 渠道名称到 provider 实现的映射表 */
64
77
  const providers = {
65
78
  'tempmail': tempmail,
@@ -71,9 +84,11 @@ const providers = {
71
84
  'awamail': awamail,
72
85
  'mail-tm': mailTm,
73
86
  'dropmail': dropmail,
87
+ 'guerrillamail': guerrillamail,
88
+ 'maildrop': maildropProvider,
74
89
  };
75
90
  /** 所有支持的渠道列表,用于随机选择和遍历 */
76
- const allChannels = ['tempmail', 'linshi-email', 'tempmail-lol', 'chatgpt-org-uk', 'tempmail-la', 'temp-mail-io', 'awamail', 'mail-tm', 'dropmail'];
91
+ const allChannels = ['tempmail', 'linshi-email', 'tempmail-lol', 'chatgpt-org-uk', 'tempmail-la', 'temp-mail-io', 'awamail', 'mail-tm', 'dropmail', 'guerrillamail', 'maildrop'];
77
92
  /** 渠道信息映射表 */
78
93
  const channelInfoMap = {
79
94
  'tempmail': { channel: 'tempmail', name: 'TempMail', website: 'tempmail.ing' },
@@ -85,6 +100,8 @@ const channelInfoMap = {
85
100
  'awamail': { channel: 'awamail', name: 'AwaMail', website: 'awamail.com' },
86
101
  'mail-tm': { channel: 'mail-tm', name: 'Mail.tm', website: 'mail.tm' },
87
102
  'dropmail': { channel: 'dropmail', name: 'DropMail', website: 'dropmail.me' },
103
+ 'guerrillamail': { channel: 'guerrillamail', name: 'Guerrilla Mail', website: 'guerrillamail.com' },
104
+ 'maildrop': { channel: 'maildrop', name: 'Maildrop', website: 'maildrop.cc' },
88
105
  };
89
106
  /**
90
107
  * 获取所有支持的渠道列表
@@ -113,25 +130,61 @@ function getChannelInfo(channel) {
113
130
  * 创建临时邮箱
114
131
  *
115
132
  * 错误处理策略:
116
- * - 网络错误、超时、服务端 5xx 错误 → 自动重试(默认 2 次,指数退避)
117
- * - 4xx 客户端错误、参数错误 → 直接抛出异常
133
+ * - 指定渠道失败时,自动尝试其他可用渠道(打乱顺序逐个尝试)
134
+ * - 未指定渠道时,打乱全部渠道逐个尝试,直到成功
135
+ * - 所有渠道均不可用时返回 null(不抛出异常)
118
136
  *
119
137
  * @param options - 创建选项,可指定渠道、有效时长、域名等
120
- * @returns 邮箱信息,包含地址、令牌等
121
- * @throws 重试耗尽后仍失败时抛出异常
138
+ * @returns 邮箱信息,所有渠道均不可用时返回 null
122
139
  *
123
140
  * @example
124
141
  * ```ts
125
142
  * const emailInfo = await generateEmail({ channel: 'temp-mail-io' });
126
- * console.log(emailInfo.email); // 临时邮箱地址
143
+ * if (emailInfo) console.log(emailInfo.email);
127
144
  * ```
128
145
  */
129
146
  async function generateEmail(options = {}) {
130
- const channel = options.channel || allChannels[Math.floor(Math.random() * allChannels.length)];
131
- logger_1.logger.info(`创建临时邮箱, 渠道: ${channel}`);
132
- const result = await (0, retry_1.withRetry)(() => generateEmailOnce(channel, options), options.retry);
133
- logger_1.logger.info(`邮箱创建成功: ${result.email}`);
134
- return result;
147
+ /*
148
+ * 构建尝试顺序:
149
+ * - 指定渠道 优先尝试该渠道,失败后随机尝试其他渠道
150
+ * - 未指定 → 打乱全部渠道逐个尝试
151
+ */
152
+ const tryOrder = buildChannelOrder(options.channel);
153
+ for (const ch of tryOrder) {
154
+ logger_1.logger.info(`创建临时邮箱, 渠道: ${ch}`);
155
+ try {
156
+ const internal = await (0, retry_1.withRetry)(() => generateEmailOnce(ch, options), options.retry);
157
+ logger_1.logger.info(`邮箱创建成功: ${internal.email} (渠道: ${ch})`);
158
+ /* 将 token 存入内部存储,不暴露给用户 */
159
+ const publicInfo = {
160
+ channel: internal.channel,
161
+ email: internal.email,
162
+ expiresAt: internal.expiresAt,
163
+ createdAt: internal.createdAt,
164
+ };
165
+ if (internal.token) {
166
+ tokenStore.set(publicInfo, internal.token);
167
+ }
168
+ return publicInfo;
169
+ }
170
+ catch (err) {
171
+ logger_1.logger.warn(`渠道 ${ch} 不可用: ${err.message || err},尝试下一个渠道`);
172
+ }
173
+ }
174
+ logger_1.logger.error('所有渠道均不可用,创建邮箱失败');
175
+ return null;
176
+ }
177
+ /**
178
+ * 构建渠道尝试顺序
179
+ * 指定渠道时优先尝试该渠道,其余渠道打乱追加
180
+ * 未指定时打乱全部渠道
181
+ */
182
+ function buildChannelOrder(preferred) {
183
+ const shuffled = [...allChannels].sort(() => Math.random() - 0.5);
184
+ if (!preferred)
185
+ return shuffled;
186
+ const rest = shuffled.filter(ch => ch !== preferred);
187
+ return [preferred, ...rest];
135
188
  }
136
189
  /**
137
190
  * 单次创建邮箱(不含重试逻辑)
@@ -157,38 +210,42 @@ async function generateEmailOnce(channel, options) {
157
210
  return mailTm.generateEmail();
158
211
  case 'dropmail':
159
212
  return dropmail.generateEmail();
213
+ case 'guerrillamail':
214
+ return guerrillamail.generateEmail();
215
+ case 'maildrop':
216
+ return maildropProvider.generateEmail();
160
217
  default:
161
218
  throw new Error(`Unknown channel: ${channel}`);
162
219
  }
163
220
  }
164
221
  /**
165
222
  * 获取邮件列表
223
+ * Channel/Email/Token 等由 SDK 从 EmailInfo 中自动获取,用户无需手动传递
166
224
  *
167
225
  * 错误处理策略:
168
- * - 网络错误、超时、服务端 5xx 错误 → 自动重试(默认 2 次)
226
+ * - 网络错误、超时、429、服务端 5xx 错误 → 自动重试(默认 2 次)
169
227
  * - 重试耗尽后返回 { success: false, emails: [] },不抛异常
170
- * - 参数校验错误(缺少 channel / token)直接抛出
171
- *
172
- * 这种设计让调用方在轮询场景下不会因网络波动而中断整个流程,
173
- * 只需检查 success 字段即可判断本次请求是否成功。
228
+ * - 参数校验错误(缺少 EmailInfo)直接抛出
174
229
  *
175
- * @param options - 获取选项,包含渠道、邮箱地址、令牌
230
+ * @param info - GenerateEmail() 返回的邮箱信息
231
+ * @param options - 可选配置(重试等)
176
232
  * @returns 邮件结果,包含 success 标记和邮件列表
177
233
  *
178
234
  * @example
179
235
  * ```ts
180
- * const result = await getEmails({
181
- * channel: emailInfo.channel,
182
- * email: emailInfo.email,
183
- * token: emailInfo.token,
184
- * });
236
+ * const info = await generateEmail({ channel: 'mail-tm' });
237
+ * const result = await getEmails(info);
185
238
  * if (result.success && result.emails.length > 0) {
186
239
  * console.log('收到邮件:', result.emails[0].subject);
187
240
  * }
188
241
  * ```
189
242
  */
190
- async function getEmails(options) {
191
- const { channel, email, token } = options;
243
+ async function getEmails(info, options) {
244
+ if (!info) {
245
+ throw new Error('EmailInfo is required, call generateEmail() first');
246
+ }
247
+ const { channel, email } = info;
248
+ const token = tokenStore.get(info);
192
249
  if (!channel) {
193
250
  throw new Error('Channel is required');
194
251
  }
@@ -197,7 +254,7 @@ async function getEmails(options) {
197
254
  }
198
255
  logger_1.logger.debug(`获取邮件, 渠道: ${channel}, 邮箱: ${email}`);
199
256
  try {
200
- const emails = await (0, retry_1.withRetry)(() => getEmailsOnce(channel, email, token), options.retry);
257
+ const emails = await (0, retry_1.withRetry)(() => getEmailsOnce(channel, email, token), options?.retry);
201
258
  if (emails.length > 0) {
202
259
  logger_1.logger.info(`获取到 ${emails.length} 封邮件, 渠道: ${channel}`);
203
260
  }
@@ -227,7 +284,7 @@ async function getEmailsOnce(channel, email, token) {
227
284
  return linshiEmail.getEmails(email);
228
285
  case 'tempmail-lol':
229
286
  if (!token)
230
- throw new Error('Token is required for tempmail-lol channel');
287
+ throw new Error('internal error: token missing for tempmail-lol');
231
288
  return tempmailLol.getEmails(token, email);
232
289
  case 'chatgpt-org-uk':
233
290
  return chatgptOrgUk.getEmails(email);
@@ -237,16 +294,24 @@ async function getEmailsOnce(channel, email, token) {
237
294
  return tempMailIO.getEmails(email);
238
295
  case 'awamail':
239
296
  if (!token)
240
- throw new Error('Token is required for awamail channel');
297
+ throw new Error('internal error: token missing for awamail');
241
298
  return awamail.getEmails(token, email);
242
299
  case 'mail-tm':
243
300
  if (!token)
244
- throw new Error('Token is required for mail-tm channel');
301
+ throw new Error('internal error: token missing for mail-tm');
245
302
  return mailTm.getEmails(token, email);
246
303
  case 'dropmail':
247
304
  if (!token)
248
- throw new Error('Token is required for dropmail channel');
305
+ throw new Error('internal error: token missing for dropmail');
249
306
  return dropmail.getEmails(token, email);
307
+ case 'guerrillamail':
308
+ if (!token)
309
+ throw new Error('internal error: token missing for guerrillamail');
310
+ return guerrillamail.getEmails(token, email);
311
+ case 'maildrop':
312
+ if (!token)
313
+ throw new Error('internal error: token missing for maildrop');
314
+ return maildropProvider.getEmails(token, email);
250
315
  default:
251
316
  throw new Error(`Unknown channel: ${channel}`);
252
317
  }
@@ -275,6 +340,7 @@ class TempEmailClient {
275
340
  /**
276
341
  * 创建临时邮箱并缓存邮箱信息
277
342
  * 后续调用 getEmails() 时自动使用此邮箱的渠道、地址和令牌
343
+ * 所有渠道均不可用时返回 null
278
344
  */
279
345
  async generate(options = {}) {
280
346
  this.emailInfo = await generateEmail(options);
@@ -286,15 +352,11 @@ class TempEmailClient {
286
352
  *
287
353
  * @throws 未调用 generate() 时抛出异常
288
354
  */
289
- async getEmails() {
355
+ async getEmails(options) {
290
356
  if (!this.emailInfo) {
291
357
  throw new Error('No email generated. Call generate() first.');
292
358
  }
293
- return getEmails({
294
- channel: this.emailInfo.channel,
295
- email: this.emailInfo.email,
296
- token: this.emailInfo.token,
297
- });
359
+ return getEmails(this.emailInfo, options);
298
360
  }
299
361
  /**
300
362
  * 获取当前缓存的邮箱信息
@@ -311,5 +373,7 @@ exports.default = {
311
373
  generateEmail,
312
374
  getEmails,
313
375
  TempEmailClient,
376
+ setConfig: config_1.setConfig,
377
+ getConfig: config_1.getConfig,
314
378
  };
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0VBLG9DQUVDO0FBUUQsd0NBRUM7QUFtQkQsc0NBT0M7QUF5REQsOEJBMkJDO0FBaE1ELCtEQUFpRDtBQUNqRCxzRUFBd0Q7QUFDeEQsc0VBQXdEO0FBQ3hELHlFQUEyRDtBQUMzRCxvRUFBc0Q7QUFDdEQscUVBQXVEO0FBQ3ZELDZEQUErQztBQUMvQyw0REFBOEM7QUFDOUMsK0RBQWlEO0FBRWpELG1DQUFrRDtBQUNsRCxxQ0FBa0M7QUFHbEMseUNBQTZDO0FBQXBDLDJHQUFBLGNBQWMsT0FBQTtBQUN2QixpQ0FBb0U7QUFBM0Qsa0dBQUEsU0FBUyxPQUFBO0FBQUUseUdBQUEsZ0JBQWdCLE9BQUE7QUFDcEMsbUNBQTZGO0FBQXBGLGtHQUFBLFFBQVEsT0FBQTtBQUFjLHFHQUFBLFdBQVcsT0FBQTtBQUFFLHFHQUFBLFdBQVcsT0FBQTtBQUFFLG1HQUFBLFNBQVMsT0FBQTtBQUFFLGdHQUFBLE1BQU0sT0FBQTtBQUUxRSw0QkFBNEI7QUFDNUIsTUFBTSxTQUFTLEdBQUc7SUFDaEIsVUFBVSxFQUFFLFFBQVE7SUFDcEIsY0FBYyxFQUFFLFdBQVc7SUFDM0IsY0FBYyxFQUFFLFdBQVc7SUFDM0IsZ0JBQWdCLEVBQUUsWUFBWTtJQUM5QixhQUFhLEVBQUUsVUFBVTtJQUN6QixjQUFjLEVBQUUsVUFBVTtJQUMxQixTQUFTLEVBQUUsT0FBTztJQUNsQixTQUFTLEVBQUUsTUFBTTtJQUNqQixVQUFVLEVBQUUsUUFBUTtDQUNyQixDQUFDO0FBRUYsMEJBQTBCO0FBQzFCLE1BQU0sV0FBVyxHQUFjLENBQUMsVUFBVSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBYy9KLGNBQWM7QUFDZCxNQUFNLGNBQWMsR0FBaUM7SUFDbkQsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUU7SUFDOUUsY0FBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRTtJQUN0RixjQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtJQUMxRixnQkFBZ0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRTtJQUNyRyxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtJQUN0RixjQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtJQUMxRixTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtJQUMxRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtJQUN0RSxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtDQUM5RSxDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLFlBQVk7SUFDMUIsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLE9BQWdCO0lBQzdDLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQUMsVUFBZ0MsRUFBRTtJQUNwRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUUvRixlQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsaUJBQVMsRUFBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pGLGVBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN2QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLGlCQUFpQixDQUFDLE9BQWdCLEVBQUUsT0FBNkI7SUFDOUUsUUFBUSxPQUFPLEVBQUUsQ0FBQztRQUNoQixLQUFLLFVBQVU7WUFDYixPQUFPLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RCxLQUFLLGNBQWM7WUFDakIsT0FBTyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckMsS0FBSyxjQUFjO1lBQ2pCLE9BQU8sV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQzNELEtBQUssZ0JBQWdCO1lBQ25CLE9BQU8sWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLEtBQUssYUFBYTtZQUNoQixPQUFPLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQyxLQUFLLGNBQWM7WUFDakIsT0FBTyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDakMsS0FBSyxTQUFTO1lBQ1osT0FBTyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDaEMsS0FBSyxVQUFVO1lBQ2IsT0FBTyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbEM7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSSxLQUFLLFVBQVUsU0FBUyxDQUFDLE9BQXlCO0lBQ3ZELE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUUxQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLGNBQWMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLE9BQU8sU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxpQkFBUyxFQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsZUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLGFBQWEsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDO2FBQU0sQ0FBQztZQUNOLGVBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCOzs7V0FHRztRQUNILGVBQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxPQUFPLFNBQVMsR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3hELENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsS0FBSyxVQUFVLGFBQWEsQ0FBQyxPQUFnQixFQUFFLEtBQWEsRUFBRSxLQUFjO0lBQzFFLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxVQUFVO1lBQ2IsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLEtBQUssY0FBYztZQUNqQixPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsS0FBSyxjQUFjO1lBQ2pCLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUMxRSxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdDLEtBQUssZ0JBQWdCO1lBQ25CLE9BQU8sWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxLQUFLLGFBQWE7WUFDaEIsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLEtBQUssY0FBYztZQUNqQixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsS0FBSyxTQUFTO1lBQ1osSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekMsS0FBSyxTQUFTO1lBQ1osSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsS0FBSyxVQUFVO1lBQ2IsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1lBQ3RFLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUM7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFhLGVBQWU7SUFBNUI7UUFDVSxjQUFTLEdBQXFCLElBQUksQ0FBQztJQW9DN0MsQ0FBQztJQWxDQzs7O09BR0c7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQWdDLEVBQUU7UUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO1lBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUs7WUFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSztTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0NBQ0Y7QUFyQ0QsMENBcUNDO0FBRUQsa0JBQWU7SUFDYixZQUFZO0lBQ1osY0FBYztJQUNkLGFBQWE7SUFDYixTQUFTO0lBQ1QsZUFBZTtDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdGVtcG1haWwgZnJvbSAnLi9wcm92aWRlcnMvdGVtcG1haWwnO1xuaW1wb3J0ICogYXMgbGluc2hpRW1haWwgZnJvbSAnLi9wcm92aWRlcnMvbGluc2hpLWVtYWlsJztcbmltcG9ydCAqIGFzIHRlbXBtYWlsTG9sIGZyb20gJy4vcHJvdmlkZXJzL3RlbXBtYWlsLWxvbCc7XG5pbXBvcnQgKiBhcyBjaGF0Z3B0T3JnVWsgZnJvbSAnLi9wcm92aWRlcnMvY2hhdGdwdC1vcmctdWsnO1xuaW1wb3J0ICogYXMgdGVtcG1haWxMYSBmcm9tICcuL3Byb3ZpZGVycy90ZW1wbWFpbC1sYSc7XG5pbXBvcnQgKiBhcyB0ZW1wTWFpbElPIGZyb20gJy4vcHJvdmlkZXJzL3RlbXAtbWFpbC1pbyc7XG5pbXBvcnQgKiBhcyBhd2FtYWlsIGZyb20gJy4vcHJvdmlkZXJzL2F3YW1haWwnO1xuaW1wb3J0ICogYXMgbWFpbFRtIGZyb20gJy4vcHJvdmlkZXJzL21haWwtdG0nO1xuaW1wb3J0ICogYXMgZHJvcG1haWwgZnJvbSAnLi9wcm92aWRlcnMvZHJvcG1haWwnO1xuaW1wb3J0IHsgQ2hhbm5lbCwgRW1haWxJbmZvLCBFbWFpbCwgRW1haWxBdHRhY2htZW50LCBHZXRFbWFpbHNSZXN1bHQsIEdlbmVyYXRlRW1haWxPcHRpb25zLCBHZXRFbWFpbHNPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyB3aXRoUmV0cnksIFJldHJ5T3B0aW9ucyB9IGZyb20gJy4vcmV0cnknO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuXG5leHBvcnQgeyBDaGFubmVsLCBFbWFpbEluZm8sIEVtYWlsLCBFbWFpbEF0dGFjaG1lbnQsIEdldEVtYWlsc1Jlc3VsdCwgR2VuZXJhdGVFbWFpbE9wdGlvbnMsIEdldEVtYWlsc09wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi9ub3JtYWxpemUnO1xuZXhwb3J0IHsgd2l0aFJldHJ5LCBmZXRjaFdpdGhUaW1lb3V0LCBSZXRyeU9wdGlvbnMgfSBmcm9tICcuL3JldHJ5JztcbmV4cG9ydCB7IExvZ0xldmVsLCBMb2dIYW5kbGVyLCBzZXRMb2dMZXZlbCwgZ2V0TG9nTGV2ZWwsIHNldExvZ2dlciwgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuXG4vKiog5rig6YGT5ZCN56ew5YiwIHByb3ZpZGVyIOWunueOsOeahOaYoOWwhOihqCAqL1xuY29uc3QgcHJvdmlkZXJzID0ge1xuICAndGVtcG1haWwnOiB0ZW1wbWFpbCxcbiAgJ2xpbnNoaS1lbWFpbCc6IGxpbnNoaUVtYWlsLFxuICAndGVtcG1haWwtbG9sJzogdGVtcG1haWxMb2wsXG4gICdjaGF0Z3B0LW9yZy11ayc6IGNoYXRncHRPcmdVayxcbiAgJ3RlbXBtYWlsLWxhJzogdGVtcG1haWxMYSxcbiAgJ3RlbXAtbWFpbC1pbyc6IHRlbXBNYWlsSU8sXG4gICdhd2FtYWlsJzogYXdhbWFpbCxcbiAgJ21haWwtdG0nOiBtYWlsVG0sXG4gICdkcm9wbWFpbCc6IGRyb3BtYWlsLFxufTtcblxuLyoqIOaJgOacieaUr+aMgeeahOa4oOmBk+WIl+ihqO+8jOeUqOS6jumaj+acuumAieaLqeWSjOmBjeWOhiAqL1xuY29uc3QgYWxsQ2hhbm5lbHM6IENoYW5uZWxbXSA9IFsndGVtcG1haWwnLCAnbGluc2hpLWVtYWlsJywgJ3RlbXBtYWlsLWxvbCcsICdjaGF0Z3B0LW9yZy11aycsICd0ZW1wbWFpbC1sYScsICd0ZW1wLW1haWwtaW8nLCAnYXdhbWFpbCcsICdtYWlsLXRtJywgJ2Ryb3BtYWlsJ107XG5cbi8qKlxuICog5rig6YGT5L+h5oGv77yM5YyF5ZCr5rig6YGT5qCH6K+G44CB5pi+56S65ZCN56ew5ZKM5a+55bqU572R56uZXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbm5lbEluZm8ge1xuICAvKiog5rig6YGT5qCH6K+GICovXG4gIGNoYW5uZWw6IENoYW5uZWw7XG4gIC8qKiDmuKDpgZPmmL7npLrlkI3np7AgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiog5a+55bqU55qE5Li05pe26YKu566x5pyN5Yqh572R56uZICovXG4gIHdlYnNpdGU6IHN0cmluZztcbn1cblxuLyoqIOa4oOmBk+S/oeaBr+aYoOWwhOihqCAqL1xuY29uc3QgY2hhbm5lbEluZm9NYXA6IFJlY29yZDxDaGFubmVsLCBDaGFubmVsSW5mbz4gPSB7XG4gICd0ZW1wbWFpbCc6IHsgY2hhbm5lbDogJ3RlbXBtYWlsJywgbmFtZTogJ1RlbXBNYWlsJywgd2Vic2l0ZTogJ3RlbXBtYWlsLmluZycgfSxcbiAgJ2xpbnNoaS1lbWFpbCc6IHsgY2hhbm5lbDogJ2xpbnNoaS1lbWFpbCcsIG5hbWU6ICfkuLTml7bpgq7nrrEnLCB3ZWJzaXRlOiAnbGluc2hpLWVtYWlsLmNvbScgfSxcbiAgJ3RlbXBtYWlsLWxvbCc6IHsgY2hhbm5lbDogJ3RlbXBtYWlsLWxvbCcsIG5hbWU6ICdUZW1wTWFpbCBMT0wnLCB3ZWJzaXRlOiAndGVtcG1haWwubG9sJyB9LFxuICAnY2hhdGdwdC1vcmctdWsnOiB7IGNoYW5uZWw6ICdjaGF0Z3B0LW9yZy11aycsIG5hbWU6ICdDaGF0R1BUIE1haWwnLCB3ZWJzaXRlOiAnbWFpbC5jaGF0Z3B0Lm9yZy51aycgfSxcbiAgJ3RlbXBtYWlsLWxhJzogeyBjaGFubmVsOiAndGVtcG1haWwtbGEnLCBuYW1lOiAnVGVtcE1haWwgTEEnLCB3ZWJzaXRlOiAndGVtcG1haWwubGEnIH0sXG4gICd0ZW1wLW1haWwtaW8nOiB7IGNoYW5uZWw6ICd0ZW1wLW1haWwtaW8nLCBuYW1lOiAnVGVtcCBNYWlsIElPJywgd2Vic2l0ZTogJ3RlbXAtbWFpbC5pbycgfSxcbiAgJ2F3YW1haWwnOiB7IGNoYW5uZWw6ICdhd2FtYWlsJywgbmFtZTogJ0F3YU1haWwnLCB3ZWJzaXRlOiAnYXdhbWFpbC5jb20nIH0sXG4gICdtYWlsLXRtJzogeyBjaGFubmVsOiAnbWFpbC10bScsIG5hbWU6ICdNYWlsLnRtJywgd2Vic2l0ZTogJ21haWwudG0nIH0sXG4gICdkcm9wbWFpbCc6IHsgY2hhbm5lbDogJ2Ryb3BtYWlsJywgbmFtZTogJ0Ryb3BNYWlsJywgd2Vic2l0ZTogJ2Ryb3BtYWlsLm1lJyB9LFxufTtcblxuLyoqXG4gKiDojrflj5bmiYDmnInmlK/mjIHnmoTmuKDpgZPliJfooahcbiAqXG4gKiBAcmV0dXJucyDmiYDmnInmuKDpgZPnmoTkv6Hmga/mlbDnu4RcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGNoYW5uZWxzID0gbGlzdENoYW5uZWxzKCk7XG4gKiBjaGFubmVscy5mb3JFYWNoKGNoID0+IGNvbnNvbGUubG9nKGAke2NoLm5hbWV9ICgke2NoLndlYnNpdGV9KWApKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdENoYW5uZWxzKCk6IENoYW5uZWxJbmZvW10ge1xuICByZXR1cm4gYWxsQ2hhbm5lbHMubWFwKGNoID0+IGNoYW5uZWxJbmZvTWFwW2NoXSk7XG59XG5cbi8qKlxuICog6I635Y+W5oyH5a6a5rig6YGT55qE6K+m57uG5L+h5oGvXG4gKlxuICogQHBhcmFtIGNoYW5uZWwgLSDmuKDpgZPmoIfor4ZcbiAqIEByZXR1cm5zIOa4oOmBk+S/oeaBr++8jOS4jeWtmOWcqOaXtui/lOWbniB1bmRlZmluZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYW5uZWxJbmZvKGNoYW5uZWw6IENoYW5uZWwpOiBDaGFubmVsSW5mbyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBjaGFubmVsSW5mb01hcFtjaGFubmVsXTtcbn1cblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrFcbiAqXG4gKiDplJnor6/lpITnkIbnrZbnlaXvvJpcbiAqIC0g572R57uc6ZSZ6K+v44CB6LaF5pe244CB5pyN5Yqh56uvIDV4eCDplJnor68g4oaSIOiHquWKqOmHjeivle+8iOm7mOiupCAyIOasoe+8jOaMh+aVsOmAgOmBv++8iVxuICogLSA0eHgg5a6i5oi356uv6ZSZ6K+v44CB5Y+C5pWw6ZSZ6K+vIOKGkiDnm7TmjqXmipvlh7rlvILluLhcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIOWIm+W7uumAiemhue+8jOWPr+aMh+Wumua4oOmBk+OAgeacieaViOaXtumVv+OAgeWfn+WQjeetiVxuICogQHJldHVybnMg6YKu566x5L+h5oGv77yM5YyF5ZCr5Zyw5Z2A44CB5Luk54mM562JXG4gKiBAdGhyb3dzIOmHjeivleiAl+WwveWQjuS7jeWksei0peaXtuaKm+WHuuW8guW4uFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgZW1haWxJbmZvID0gYXdhaXQgZ2VuZXJhdGVFbWFpbCh7IGNoYW5uZWw6ICd0ZW1wLW1haWwtaW8nIH0pO1xuICogY29uc29sZS5sb2coZW1haWxJbmZvLmVtYWlsKTsgLy8g5Li05pe26YKu566x5Zyw5Z2AXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRW1haWwob3B0aW9uczogR2VuZXJhdGVFbWFpbE9wdGlvbnMgPSB7fSk6IFByb21pc2U8RW1haWxJbmZvPiB7XG4gIGNvbnN0IGNoYW5uZWwgPSBvcHRpb25zLmNoYW5uZWwgfHwgYWxsQ2hhbm5lbHNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYWxsQ2hhbm5lbHMubGVuZ3RoKV07XG5cbiAgbG9nZ2VyLmluZm8oYOWIm+W7uuS4tOaXtumCrueusSwg5rig6YGTOiAke2NoYW5uZWx9YCk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdpdGhSZXRyeSgoKSA9PiBnZW5lcmF0ZUVtYWlsT25jZShjaGFubmVsLCBvcHRpb25zKSwgb3B0aW9ucy5yZXRyeSk7XG4gIGxvZ2dlci5pbmZvKGDpgq7nrrHliJvlu7rmiJDlip86ICR7cmVzdWx0LmVtYWlsfWApO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIOWNleasoeWIm+W7uumCrueuse+8iOS4jeWQq+mHjeivlemAu+i+ke+8iVxuICog5qC55o2u5rig6YGT57G75Z6L5YiG5Y+R5Yiw5a+55bqU55qEIHByb3ZpZGVyIOWunueOsFxuICovXG5hc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsT25jZShjaGFubmVsOiBDaGFubmVsLCBvcHRpb25zOiBHZW5lcmF0ZUVtYWlsT3B0aW9ucyk6IFByb21pc2U8RW1haWxJbmZvPiB7XG4gIHN3aXRjaCAoY2hhbm5lbCkge1xuICAgIGNhc2UgJ3RlbXBtYWlsJzpcbiAgICAgIHJldHVybiB0ZW1wbWFpbC5nZW5lcmF0ZUVtYWlsKG9wdGlvbnMuZHVyYXRpb24gfHwgMzApO1xuICAgIGNhc2UgJ2xpbnNoaS1lbWFpbCc6XG4gICAgICByZXR1cm4gbGluc2hpRW1haWwuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ3RlbXBtYWlsLWxvbCc6XG4gICAgICByZXR1cm4gdGVtcG1haWxMb2wuZ2VuZXJhdGVFbWFpbChvcHRpb25zLmRvbWFpbiB8fCBudWxsKTtcbiAgICBjYXNlICdjaGF0Z3B0LW9yZy11ayc6XG4gICAgICByZXR1cm4gY2hhdGdwdE9yZ1VrLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICd0ZW1wbWFpbC1sYSc6XG4gICAgICByZXR1cm4gdGVtcG1haWxMYS5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAndGVtcC1tYWlsLWlvJzpcbiAgICAgIHJldHVybiB0ZW1wTWFpbElPLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICdhd2FtYWlsJzpcbiAgICAgIHJldHVybiBhd2FtYWlsLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICdtYWlsLXRtJzpcbiAgICAgIHJldHVybiBtYWlsVG0uZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ2Ryb3BtYWlsJzpcbiAgICAgIHJldHVybiBkcm9wbWFpbC5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjaGFubmVsOiAke2NoYW5uZWx9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiDojrflj5bpgq7ku7bliJfooahcbiAqXG4gKiDplJnor6/lpITnkIbnrZbnlaXvvJpcbiAqIC0g572R57uc6ZSZ6K+v44CB6LaF5pe244CB5pyN5Yqh56uvIDV4eCDplJnor68g4oaSIOiHquWKqOmHjeivle+8iOm7mOiupCAyIOasoe+8iVxuICogLSDph43or5XogJflsL3lkI7ov5Tlm54geyBzdWNjZXNzOiBmYWxzZSwgZW1haWxzOiBbXSB977yM5LiN5oqb5byC5bi4XG4gKiAtIOWPguaVsOagoemqjOmUmeivr++8iOe8uuWwkSBjaGFubmVsIC8gdG9rZW7vvInnm7TmjqXmipvlh7pcbiAqXG4gKiDov5nnp43orr7orqHorqnosIPnlKjmlrnlnKjova7or6LlnLrmma/kuIvkuI3kvJrlm6DnvZHnu5zms6LliqjogIzkuK3mlq3mlbTkuKrmtYHnqIvvvIxcbiAqIOWPqumcgOajgOafpSBzdWNjZXNzIOWtl+auteWNs+WPr+WIpOaWreacrOasoeivt+axguaYr+WQpuaIkOWKn+OAglxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0g6I635Y+W6YCJ6aG577yM5YyF5ZCr5rig6YGT44CB6YKu566x5Zyw5Z2A44CB5Luk54mMXG4gKiBAcmV0dXJucyDpgq7ku7bnu5PmnpzvvIzljIXlkKsgc3VjY2VzcyDmoIforrDlkozpgq7ku7bliJfooahcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEVtYWlscyh7XG4gKiAgIGNoYW5uZWw6IGVtYWlsSW5mby5jaGFubmVsLFxuICogICBlbWFpbDogZW1haWxJbmZvLmVtYWlsLFxuICogICB0b2tlbjogZW1haWxJbmZvLnRva2VuLFxuICogfSk7XG4gKiBpZiAocmVzdWx0LnN1Y2Nlc3MgJiYgcmVzdWx0LmVtYWlscy5sZW5ndGggPiAwKSB7XG4gKiAgIGNvbnNvbGUubG9nKCfmlLbliLDpgq7ku7Y6JywgcmVzdWx0LmVtYWlsc1swXS5zdWJqZWN0KTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RW1haWxzKG9wdGlvbnM6IEdldEVtYWlsc09wdGlvbnMpOiBQcm9taXNlPEdldEVtYWlsc1Jlc3VsdD4ge1xuICBjb25zdCB7IGNoYW5uZWwsIGVtYWlsLCB0b2tlbiB9ID0gb3B0aW9ucztcblxuICBpZiAoIWNoYW5uZWwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgaXMgcmVxdWlyZWQnKTtcbiAgfVxuICBpZiAoIWVtYWlsICYmIGNoYW5uZWwgIT09ICd0ZW1wbWFpbC1sb2wnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFbWFpbCBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgbG9nZ2VyLmRlYnVnKGDojrflj5bpgq7ku7YsIOa4oOmBkzogJHtjaGFubmVsfSwg6YKu566xOiAke2VtYWlsfWApO1xuICB0cnkge1xuICAgIGNvbnN0IGVtYWlscyA9IGF3YWl0IHdpdGhSZXRyeSgoKSA9PiBnZXRFbWFpbHNPbmNlKGNoYW5uZWwsIGVtYWlsLCB0b2tlbiksIG9wdGlvbnMucmV0cnkpO1xuICAgIGlmIChlbWFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgbG9nZ2VyLmluZm8oYOiOt+WPluWIsCAke2VtYWlscy5sZW5ndGh9IOWwgemCruS7tiwg5rig6YGTOiAke2NoYW5uZWx9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci5kZWJ1Zyhg5pqC5peg6YKu5Lu2LCDmuKDpgZM6ICR7Y2hhbm5lbH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgY2hhbm5lbCwgZW1haWwsIGVtYWlscywgc3VjY2VzczogdHJ1ZSB9O1xuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIC8qXG4gICAgICog6YeN6K+V6ICX5bC95ZCO5LuN54S25aSx6LSlIOKGkiDov5Tlm57nqbrnu5PmnpzogIzpnZ7mipvlvILluLhcbiAgICAgKiDov5nmoLfosIPnlKjmlrnlnKjova7or6LlnLrmma/kuIvkuI3kvJrlm6DkuLrkuIDmrKHnvZHnu5zms6LliqjogIzkuK3mlq3mlbTkuKrmtYHnqItcbiAgICAgKi9cbiAgICBsb2dnZXIuZXJyb3IoYOiOt+WPlumCruS7tuWksei0pSwg5rig6YGTOiAke2NoYW5uZWx9LCDplJnor686ICR7ZXJyLm1lc3NhZ2UgfHwgZXJyfWApO1xuICAgIHJldHVybiB7IGNoYW5uZWwsIGVtYWlsLCBlbWFpbHM6IFtdLCBzdWNjZXNzOiBmYWxzZSB9O1xuICB9XG59XG5cbi8qKlxuICog5Y2V5qyh6I635Y+W6YKu5Lu277yI5LiN5ZCr6YeN6K+V6YC76L6R77yJXG4gKiDmoLnmja7muKDpgZPnsbvlnovliIblj5HliLDlr7nlupTnmoQgcHJvdmlkZXIg5a6e546w77yM5bm25qCh6aqM5b+F6ZyA55qEIHRva2VuIOWPguaVsFxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRFbWFpbHNPbmNlKGNoYW5uZWw6IENoYW5uZWwsIGVtYWlsOiBzdHJpbmcsIHRva2VuPzogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIHN3aXRjaCAoY2hhbm5lbCkge1xuICAgIGNhc2UgJ3RlbXBtYWlsJzpcbiAgICAgIHJldHVybiB0ZW1wbWFpbC5nZXRFbWFpbHMoZW1haWwpO1xuICAgIGNhc2UgJ2xpbnNoaS1lbWFpbCc6XG4gICAgICByZXR1cm4gbGluc2hpRW1haWwuZ2V0RW1haWxzKGVtYWlsKTtcbiAgICBjYXNlICd0ZW1wbWFpbC1sb2wnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBpcyByZXF1aXJlZCBmb3IgdGVtcG1haWwtbG9sIGNoYW5uZWwnKTtcbiAgICAgIHJldHVybiB0ZW1wbWFpbExvbC5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICdjaGF0Z3B0LW9yZy11ayc6XG4gICAgICByZXR1cm4gY2hhdGdwdE9yZ1VrLmdldEVtYWlscyhlbWFpbCk7XG4gICAgY2FzZSAndGVtcG1haWwtbGEnOlxuICAgICAgcmV0dXJuIHRlbXBtYWlsTGEuZ2V0RW1haWxzKGVtYWlsKTtcbiAgICBjYXNlICd0ZW1wLW1haWwtaW8nOlxuICAgICAgcmV0dXJuIHRlbXBNYWlsSU8uZ2V0RW1haWxzKGVtYWlsKTtcbiAgICBjYXNlICdhd2FtYWlsJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignVG9rZW4gaXMgcmVxdWlyZWQgZm9yIGF3YW1haWwgY2hhbm5lbCcpO1xuICAgICAgcmV0dXJuIGF3YW1haWwuZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnbWFpbC10bSc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ1Rva2VuIGlzIHJlcXVpcmVkIGZvciBtYWlsLXRtIGNoYW5uZWwnKTtcbiAgICAgIHJldHVybiBtYWlsVG0uZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnZHJvcG1haWwnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBpcyByZXF1aXJlZCBmb3IgZHJvcG1haWwgY2hhbm5lbCcpO1xuICAgICAgcmV0dXJuIGRyb3BtYWlsLmdldEVtYWlscyh0b2tlbiwgZW1haWwpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY2hhbm5lbDogJHtjaGFubmVsfWApO1xuICB9XG59XG5cbi8qKlxuICog5Li05pe26YKu566x5a6i5oi356uvXG4gKiDlsIHoo4Xkuobpgq7nrrHliJvlu7rlkozpgq7ku7bojrflj5bnmoTlrozmlbTmtYHnqIvvvIzoh6rliqjnrqHnkIbpgq7nrrHkv6Hmga/lkozorqTor4Hku6TniYxcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGNsaWVudCA9IG5ldyBUZW1wRW1haWxDbGllbnQoKTtcbiAqIGNvbnN0IGVtYWlsSW5mbyA9IGF3YWl0IGNsaWVudC5nZW5lcmF0ZSh7IGNoYW5uZWw6ICdtYWlsLXRtJyB9KTtcbiAqIGNvbnNvbGUubG9nKCfpgq7nrrE6JywgZW1haWxJbmZvLmVtYWlsKTtcbiAqXG4gKiAvLyDova7or6Lojrflj5bpgq7ku7ZcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNsaWVudC5nZXRFbWFpbHMoKTtcbiAqIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICogICBjb25zb2xlLmxvZygn6YKu5Lu25pWwOicsIHJlc3VsdC5lbWFpbHMubGVuZ3RoKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgVGVtcEVtYWlsQ2xpZW50IHtcbiAgcHJpdmF0ZSBlbWFpbEluZm86IEVtYWlsSW5mbyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiDliJvlu7rkuLTml7bpgq7nrrHlubbnvJPlrZjpgq7nrrHkv6Hmga9cbiAgICog5ZCO57ut6LCD55SoIGdldEVtYWlscygpIOaXtuiHquWKqOS9v+eUqOatpOmCrueuseeahOa4oOmBk+OAgeWcsOWdgOWSjOS7pOeJjFxuICAgKi9cbiAgYXN5bmMgZ2VuZXJhdGUob3B0aW9uczogR2VuZXJhdGVFbWFpbE9wdGlvbnMgPSB7fSk6IFByb21pc2U8RW1haWxJbmZvPiB7XG4gICAgdGhpcy5lbWFpbEluZm8gPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmVtYWlsSW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blvZPliY3pgq7nrrHnmoTpgq7ku7bliJfooahcbiAgICog5b+F6aG75YWI6LCD55SoIGdlbmVyYXRlKCkg5Yib5bu66YKu566xXG4gICAqXG4gICAqIEB0aHJvd3Mg5pyq6LCD55SoIGdlbmVyYXRlKCkg5pe25oqb5Ye65byC5bi4XG4gICAqL1xuICBhc3luYyBnZXRFbWFpbHMoKTogUHJvbWlzZTxHZXRFbWFpbHNSZXN1bHQ+IHtcbiAgICBpZiAoIXRoaXMuZW1haWxJbmZvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVtYWlsIGdlbmVyYXRlZC4gQ2FsbCBnZW5lcmF0ZSgpIGZpcnN0LicpO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRFbWFpbHMoe1xuICAgICAgY2hhbm5lbDogdGhpcy5lbWFpbEluZm8uY2hhbm5lbCxcbiAgICAgIGVtYWlsOiB0aGlzLmVtYWlsSW5mby5lbWFpbCxcbiAgICAgIHRva2VuOiB0aGlzLmVtYWlsSW5mby50b2tlbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blvZPliY3nvJPlrZjnmoTpgq7nrrHkv6Hmga9cbiAgICog5pyq6LCD55SoIGdlbmVyYXRlKCkg5pe26L+U5ZueIG51bGxcbiAgICovXG4gIGdldEVtYWlsSW5mbygpOiBFbWFpbEluZm8gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lbWFpbEluZm87XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBsaXN0Q2hhbm5lbHMsXG4gIGdldENoYW5uZWxJbmZvLFxuICBnZW5lcmF0ZUVtYWlsLFxuICBnZXRFbWFpbHMsXG4gIFRlbXBFbWFpbENsaWVudCxcbn07XG4iXX0=
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0ZBLG9DQUVDO0FBUUQsd0NBRUM7QUFtQkQsc0NBZ0NDO0FBcUVELDhCQWdDQztBQTFQRCwrREFBaUQ7QUFDakQsc0VBQXdEO0FBQ3hELHNFQUF3RDtBQUN4RCx5RUFBMkQ7QUFDM0Qsb0VBQXNEO0FBQ3RELHFFQUF1RDtBQUN2RCw2REFBK0M7QUFDL0MsNERBQThDO0FBQzlDLCtEQUFpRDtBQUNqRCx5RUFBMkQ7QUFDM0QsdUVBQXlEO0FBRXpELG1DQUFrRDtBQUNsRCxxQ0FBa0M7QUFDbEMscUNBQWdEO0FBSWhEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7QUFDcEQseUNBQTZDO0FBQXBDLDJHQUFBLGNBQWMsT0FBQTtBQUN2QixpQ0FBb0U7QUFBM0Qsa0dBQUEsU0FBUyxPQUFBO0FBQUUseUdBQUEsZ0JBQWdCLE9BQUE7QUFDcEMsbUNBQTZGO0FBQXBGLGtHQUFBLFFBQVEsT0FBQTtBQUFjLHFHQUFBLFdBQVcsT0FBQTtBQUFFLHFHQUFBLFdBQVcsT0FBQTtBQUFFLG1HQUFBLFNBQVMsT0FBQTtBQUFFLGdHQUFBLE1BQU0sT0FBQTtBQUMxRSxtQ0FBMkQ7QUFBdkMsbUdBQUEsU0FBUyxPQUFBO0FBQUUsbUdBQUEsU0FBUyxPQUFBO0FBRXhDLDRCQUE0QjtBQUM1QixNQUFNLFNBQVMsR0FBRztJQUNoQixVQUFVLEVBQUUsUUFBUTtJQUNwQixjQUFjLEVBQUUsV0FBVztJQUMzQixjQUFjLEVBQUUsV0FBVztJQUMzQixnQkFBZ0IsRUFBRSxZQUFZO0lBQzlCLGFBQWEsRUFBRSxVQUFVO0lBQ3pCLGNBQWMsRUFBRSxVQUFVO0lBQzFCLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLGVBQWUsRUFBRSxhQUFhO0lBQzlCLFVBQVUsRUFBRSxnQkFBZ0I7Q0FDN0IsQ0FBQztBQUVGLDBCQUEwQjtBQUMxQixNQUFNLFdBQVcsR0FBYyxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBYzVMLGNBQWM7QUFDZCxNQUFNLGNBQWMsR0FBaUM7SUFDbkQsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUU7SUFDOUUsY0FBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRTtJQUN0RixjQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtJQUMxRixnQkFBZ0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRTtJQUNyRyxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtJQUN0RixjQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtJQUMxRixTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtJQUMxRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtJQUN0RSxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRTtJQUM3RSxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7SUFDbkcsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUU7Q0FDOUUsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixZQUFZO0lBQzFCLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxPQUFnQjtJQUM3QyxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSSxLQUFLLFVBQVUsYUFBYSxDQUFDLFVBQWdDLEVBQUU7SUFDcEU7Ozs7T0FJRztJQUNILE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVwRCxLQUFLLE1BQU0sRUFBRSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzFCLGVBQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFzQixNQUFNLElBQUEsaUJBQVMsRUFBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pHLGVBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxRQUFRLENBQUMsS0FBSyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFckQsMkJBQTJCO1lBQzNCLE1BQU0sVUFBVSxHQUFjO2dCQUM1QixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO2dCQUM3QixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7YUFDOUIsQ0FBQztZQUNGLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNuQixVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLGVBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLGlCQUFpQixDQUFDLFNBQW1CO0lBQzVDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFDaEMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUNyRCxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOzs7R0FHRztBQUNILEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxPQUFnQixFQUFFLE9BQTZCO0lBQzlFLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxVQUFVO1lBQ2IsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsS0FBSyxjQUFjO1lBQ2pCLE9BQU8sV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JDLEtBQUssY0FBYztZQUNqQixPQUFPLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMzRCxLQUFLLGdCQUFnQjtZQUNuQixPQUFPLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxLQUFLLGFBQWE7WUFDaEIsT0FBTyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEMsS0FBSyxjQUFjO1lBQ2pCLE9BQU8sVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BDLEtBQUssU0FBUztZQUNaLE9BQU8sT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2pDLEtBQUssU0FBUztZQUNaLE9BQU8sTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hDLEtBQUssVUFBVTtZQUNiLE9BQU8sUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2xDLEtBQUssZUFBZTtZQUNsQixPQUFPLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QyxLQUFLLFVBQVU7WUFDYixPQUFPLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFDO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSSxLQUFLLFVBQVUsU0FBUyxDQUFDLElBQWUsRUFBRSxPQUEwQjtJQUN6RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGVBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxPQUFPLFNBQVMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuRCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsaUJBQVMsRUFBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0YsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLGVBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxNQUFNLENBQUMsTUFBTSxhQUFhLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixlQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztRQUNsQjs7O1dBR0c7UUFDSCxlQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsT0FBTyxTQUFTLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNsRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILEtBQUssVUFBVSxhQUFhLENBQUMsT0FBZ0IsRUFBRSxLQUFhLEVBQUUsS0FBYztJQUMxRSxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssVUFBVTtZQUNiLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxLQUFLLGNBQWM7WUFDakIsT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLEtBQUssY0FBYztZQUNqQixJQUFJLENBQUMsS0FBSztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7WUFDOUUsT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3QyxLQUFLLGdCQUFnQjtZQUNuQixPQUFPLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxLQUFLLGNBQWM7WUFDakIsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLEtBQUssU0FBUztZQUNaLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUN6RSxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLEtBQUssU0FBUztZQUNaLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUN6RSxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLEtBQUssVUFBVTtZQUNiLElBQUksQ0FBQyxLQUFLO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUMxRSxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLEtBQUssZUFBZTtZQUNsQixJQUFJLENBQUMsS0FBSztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7WUFDL0UsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxLQUFLLFVBQVU7WUFDYixJQUFJLENBQUMsS0FBSztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDMUUsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xEO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBYSxlQUFlO0lBQTVCO1FBQ1UsY0FBUyxHQUFxQixJQUFJLENBQUM7SUFpQzdDLENBQUM7SUEvQkM7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBZ0MsRUFBRTtRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQTBCO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQWxDRCwwQ0FrQ0M7QUFFRCxrQkFBZTtJQUNiLFlBQVk7SUFDWixjQUFjO0lBQ2QsYUFBYTtJQUNiLFNBQVM7SUFDVCxlQUFlO0lBQ2YsU0FBUyxFQUFULGtCQUFTO0lBQ1QsU0FBUyxFQUFULGtCQUFTO0NBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHRlbXBtYWlsIGZyb20gJy4vcHJvdmlkZXJzL3RlbXBtYWlsJztcbmltcG9ydCAqIGFzIGxpbnNoaUVtYWlsIGZyb20gJy4vcHJvdmlkZXJzL2xpbnNoaS1lbWFpbCc7XG5pbXBvcnQgKiBhcyB0ZW1wbWFpbExvbCBmcm9tICcuL3Byb3ZpZGVycy90ZW1wbWFpbC1sb2wnO1xuaW1wb3J0ICogYXMgY2hhdGdwdE9yZ1VrIGZyb20gJy4vcHJvdmlkZXJzL2NoYXRncHQtb3JnLXVrJztcbmltcG9ydCAqIGFzIHRlbXBtYWlsTGEgZnJvbSAnLi9wcm92aWRlcnMvdGVtcG1haWwtbGEnO1xuaW1wb3J0ICogYXMgdGVtcE1haWxJTyBmcm9tICcuL3Byb3ZpZGVycy90ZW1wLW1haWwtaW8nO1xuaW1wb3J0ICogYXMgYXdhbWFpbCBmcm9tICcuL3Byb3ZpZGVycy9hd2FtYWlsJztcbmltcG9ydCAqIGFzIG1haWxUbSBmcm9tICcuL3Byb3ZpZGVycy9tYWlsLXRtJztcbmltcG9ydCAqIGFzIGRyb3BtYWlsIGZyb20gJy4vcHJvdmlkZXJzL2Ryb3BtYWlsJztcbmltcG9ydCAqIGFzIGd1ZXJyaWxsYW1haWwgZnJvbSAnLi9wcm92aWRlcnMvZ3VlcnJpbGxhbWFpbCc7XG5pbXBvcnQgKiBhcyBtYWlsZHJvcFByb3ZpZGVyIGZyb20gJy4vcHJvdmlkZXJzL21haWxkcm9wJztcbmltcG9ydCB7IENoYW5uZWwsIEVtYWlsSW5mbywgSW50ZXJuYWxFbWFpbEluZm8sIEVtYWlsLCBFbWFpbEF0dGFjaG1lbnQsIEdldEVtYWlsc1Jlc3VsdCwgR2VuZXJhdGVFbWFpbE9wdGlvbnMsIEdldEVtYWlsc09wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHdpdGhSZXRyeSwgUmV0cnlPcHRpb25zIH0gZnJvbSAnLi9yZXRyeSc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBzZXRDb25maWcsIGdldENvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuZXhwb3J0IHsgQ2hhbm5lbCwgRW1haWxJbmZvLCBFbWFpbCwgRW1haWxBdHRhY2htZW50LCBHZXRFbWFpbHNSZXN1bHQsIEdlbmVyYXRlRW1haWxPcHRpb25zLCBHZXRFbWFpbHNPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU0RLIOWGhemDqCB0b2tlbiDlrZjlgqhcbiAqIOS9v+eUqCBXZWFrTWFwIOWwhiBFbWFpbEluZm8g5a+56LGh5pig5bCE5Yiw5a+55bqU55qEIHRva2VuXG4gKiDnlKjmiLfml6Dms5Xnm7TmjqXorr/pl64gdG9rZW7vvIznlLEgU0RLIOiHquWKqOeuoeeQhlxuICogQGludGVybmFsXG4gKi9cbmNvbnN0IHRva2VuU3RvcmUgPSBuZXcgV2Vha01hcDxFbWFpbEluZm8sIHN0cmluZz4oKTtcbmV4cG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi9ub3JtYWxpemUnO1xuZXhwb3J0IHsgd2l0aFJldHJ5LCBmZXRjaFdpdGhUaW1lb3V0LCBSZXRyeU9wdGlvbnMgfSBmcm9tICcuL3JldHJ5JztcbmV4cG9ydCB7IExvZ0xldmVsLCBMb2dIYW5kbGVyLCBzZXRMb2dMZXZlbCwgZ2V0TG9nTGV2ZWwsIHNldExvZ2dlciwgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuZXhwb3J0IHsgU0RLQ29uZmlnLCBzZXRDb25maWcsIGdldENvbmZpZyB9IGZyb20gJy4vY29uZmlnJztcblxuLyoqIOa4oOmBk+WQjeensOWIsCBwcm92aWRlciDlrp7njrDnmoTmmKDlsITooaggKi9cbmNvbnN0IHByb3ZpZGVycyA9IHtcbiAgJ3RlbXBtYWlsJzogdGVtcG1haWwsXG4gICdsaW5zaGktZW1haWwnOiBsaW5zaGlFbWFpbCxcbiAgJ3RlbXBtYWlsLWxvbCc6IHRlbXBtYWlsTG9sLFxuICAnY2hhdGdwdC1vcmctdWsnOiBjaGF0Z3B0T3JnVWssXG4gICd0ZW1wbWFpbC1sYSc6IHRlbXBtYWlsTGEsXG4gICd0ZW1wLW1haWwtaW8nOiB0ZW1wTWFpbElPLFxuICAnYXdhbWFpbCc6IGF3YW1haWwsXG4gICdtYWlsLXRtJzogbWFpbFRtLFxuICAnZHJvcG1haWwnOiBkcm9wbWFpbCxcbiAgJ2d1ZXJyaWxsYW1haWwnOiBndWVycmlsbGFtYWlsLFxuICAnbWFpbGRyb3AnOiBtYWlsZHJvcFByb3ZpZGVyLFxufTtcblxuLyoqIOaJgOacieaUr+aMgeeahOa4oOmBk+WIl+ihqO+8jOeUqOS6jumaj+acuumAieaLqeWSjOmBjeWOhiAqL1xuY29uc3QgYWxsQ2hhbm5lbHM6IENoYW5uZWxbXSA9IFsndGVtcG1haWwnLCAnbGluc2hpLWVtYWlsJywgJ3RlbXBtYWlsLWxvbCcsICdjaGF0Z3B0LW9yZy11aycsICd0ZW1wbWFpbC1sYScsICd0ZW1wLW1haWwtaW8nLCAnYXdhbWFpbCcsICdtYWlsLXRtJywgJ2Ryb3BtYWlsJywgJ2d1ZXJyaWxsYW1haWwnLCAnbWFpbGRyb3AnXTtcblxuLyoqXG4gKiDmuKDpgZPkv6Hmga/vvIzljIXlkKvmuKDpgZPmoIfor4bjgIHmmL7npLrlkI3np7Dlkozlr7nlupTnvZHnq5lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFubmVsSW5mbyB7XG4gIC8qKiDmuKDpgZPmoIfor4YgKi9cbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAgLyoqIOa4oOmBk+aYvuekuuWQjeensCAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiDlr7nlupTnmoTkuLTml7bpgq7nrrHmnI3liqHnvZHnq5kgKi9cbiAgd2Vic2l0ZTogc3RyaW5nO1xufVxuXG4vKiog5rig6YGT5L+h5oGv5pig5bCE6KGoICovXG5jb25zdCBjaGFubmVsSW5mb01hcDogUmVjb3JkPENoYW5uZWwsIENoYW5uZWxJbmZvPiA9IHtcbiAgJ3RlbXBtYWlsJzogeyBjaGFubmVsOiAndGVtcG1haWwnLCBuYW1lOiAnVGVtcE1haWwnLCB3ZWJzaXRlOiAndGVtcG1haWwuaW5nJyB9LFxuICAnbGluc2hpLWVtYWlsJzogeyBjaGFubmVsOiAnbGluc2hpLWVtYWlsJywgbmFtZTogJ+S4tOaXtumCrueusScsIHdlYnNpdGU6ICdsaW5zaGktZW1haWwuY29tJyB9LFxuICAndGVtcG1haWwtbG9sJzogeyBjaGFubmVsOiAndGVtcG1haWwtbG9sJywgbmFtZTogJ1RlbXBNYWlsIExPTCcsIHdlYnNpdGU6ICd0ZW1wbWFpbC5sb2wnIH0sXG4gICdjaGF0Z3B0LW9yZy11ayc6IHsgY2hhbm5lbDogJ2NoYXRncHQtb3JnLXVrJywgbmFtZTogJ0NoYXRHUFQgTWFpbCcsIHdlYnNpdGU6ICdtYWlsLmNoYXRncHQub3JnLnVrJyB9LFxuICAndGVtcG1haWwtbGEnOiB7IGNoYW5uZWw6ICd0ZW1wbWFpbC1sYScsIG5hbWU6ICdUZW1wTWFpbCBMQScsIHdlYnNpdGU6ICd0ZW1wbWFpbC5sYScgfSxcbiAgJ3RlbXAtbWFpbC1pbyc6IHsgY2hhbm5lbDogJ3RlbXAtbWFpbC1pbycsIG5hbWU6ICdUZW1wIE1haWwgSU8nLCB3ZWJzaXRlOiAndGVtcC1tYWlsLmlvJyB9LFxuICAnYXdhbWFpbCc6IHsgY2hhbm5lbDogJ2F3YW1haWwnLCBuYW1lOiAnQXdhTWFpbCcsIHdlYnNpdGU6ICdhd2FtYWlsLmNvbScgfSxcbiAgJ21haWwtdG0nOiB7IGNoYW5uZWw6ICdtYWlsLXRtJywgbmFtZTogJ01haWwudG0nLCB3ZWJzaXRlOiAnbWFpbC50bScgfSxcbiAgJ2Ryb3BtYWlsJzogeyBjaGFubmVsOiAnZHJvcG1haWwnLCBuYW1lOiAnRHJvcE1haWwnLCB3ZWJzaXRlOiAnZHJvcG1haWwubWUnIH0sXG4gICdndWVycmlsbGFtYWlsJzogeyBjaGFubmVsOiAnZ3VlcnJpbGxhbWFpbCcsIG5hbWU6ICdHdWVycmlsbGEgTWFpbCcsIHdlYnNpdGU6ICdndWVycmlsbGFtYWlsLmNvbScgfSxcbiAgJ21haWxkcm9wJzogeyBjaGFubmVsOiAnbWFpbGRyb3AnLCBuYW1lOiAnTWFpbGRyb3AnLCB3ZWJzaXRlOiAnbWFpbGRyb3AuY2MnIH0sXG59O1xuXG4vKipcbiAqIOiOt+WPluaJgOacieaUr+aMgeeahOa4oOmBk+WIl+ihqFxuICpcbiAqIEByZXR1cm5zIOaJgOaciea4oOmBk+eahOS/oeaBr+aVsOe7hFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgY2hhbm5lbHMgPSBsaXN0Q2hhbm5lbHMoKTtcbiAqIGNoYW5uZWxzLmZvckVhY2goY2ggPT4gY29uc29sZS5sb2coYCR7Y2gubmFtZX0gKCR7Y2gud2Vic2l0ZX0pYCkpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0Q2hhbm5lbHMoKTogQ2hhbm5lbEluZm9bXSB7XG4gIHJldHVybiBhbGxDaGFubmVscy5tYXAoY2ggPT4gY2hhbm5lbEluZm9NYXBbY2hdKTtcbn1cblxuLyoqXG4gKiDojrflj5bmjIflrprmuKDpgZPnmoTor6bnu4bkv6Hmga9cbiAqXG4gKiBAcGFyYW0gY2hhbm5lbCAtIOa4oOmBk+agh+ivhlxuICogQHJldHVybnMg5rig6YGT5L+h5oGv77yM5LiN5a2Y5Zyo5pe26L+U5ZueIHVuZGVmaW5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hhbm5lbEluZm8oY2hhbm5lbDogQ2hhbm5lbCk6IENoYW5uZWxJbmZvIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGNoYW5uZWxJbmZvTWFwW2NoYW5uZWxdO1xufVxuXG4vKipcbiAqIOWIm+W7uuS4tOaXtumCrueusVxuICpcbiAqIOmUmeivr+WkhOeQhuetlueVpe+8mlxuICogLSDmjIflrprmuKDpgZPlpLHotKXml7bvvIzoh6rliqjlsJ3or5Xlhbbku5blj6/nlKjmuKDpgZPvvIjmiZPkubHpobrluo/pgJDkuKrlsJ3or5XvvIlcbiAqIC0g5pyq5oyH5a6a5rig6YGT5pe277yM5omT5Lmx5YWo6YOo5rig6YGT6YCQ5Liq5bCd6K+V77yM55u05Yiw5oiQ5YqfXG4gKiAtIOaJgOaciea4oOmBk+Wdh+S4jeWPr+eUqOaXtui/lOWbniBudWxs77yI5LiN5oqb5Ye65byC5bi477yJXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSDliJvlu7rpgInpobnvvIzlj6/mjIflrprmuKDpgZPjgIHmnInmlYjml7bplb/jgIHln5/lkI3nrYlcbiAqIEByZXR1cm5zIOmCrueuseS/oeaBr++8jOaJgOaciea4oOmBk+Wdh+S4jeWPr+eUqOaXtui/lOWbniBudWxsXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCBlbWFpbEluZm8gPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKHsgY2hhbm5lbDogJ3RlbXAtbWFpbC1pbycgfSk7XG4gKiBpZiAoZW1haWxJbmZvKSBjb25zb2xlLmxvZyhlbWFpbEluZm8uZW1haWwpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKG9wdGlvbnM6IEdlbmVyYXRlRW1haWxPcHRpb25zID0ge30pOiBQcm9taXNlPEVtYWlsSW5mbyB8IG51bGw+IHtcbiAgLypcbiAgICog5p6E5bu65bCd6K+V6aG65bqP77yaXG4gICAqIC0g5oyH5a6a5rig6YGTIOKGkiDkvJjlhYjlsJ3or5Xor6XmuKDpgZPvvIzlpLHotKXlkI7pmo/mnLrlsJ3or5Xlhbbku5bmuKDpgZNcbiAgICogLSDmnKrmjIflrpog4oaSIOaJk+S5seWFqOmDqOa4oOmBk+mAkOS4quWwneivlVxuICAgKi9cbiAgY29uc3QgdHJ5T3JkZXIgPSBidWlsZENoYW5uZWxPcmRlcihvcHRpb25zLmNoYW5uZWwpO1xuXG4gIGZvciAoY29uc3QgY2ggb2YgdHJ5T3JkZXIpIHtcbiAgICBsb2dnZXIuaW5mbyhg5Yib5bu65Li05pe26YKu566xLCDmuKDpgZM6ICR7Y2h9YCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGludGVybmFsOiBJbnRlcm5hbEVtYWlsSW5mbyA9IGF3YWl0IHdpdGhSZXRyeSgoKSA9PiBnZW5lcmF0ZUVtYWlsT25jZShjaCwgb3B0aW9ucyksIG9wdGlvbnMucmV0cnkpO1xuICAgICAgbG9nZ2VyLmluZm8oYOmCrueuseWIm+W7uuaIkOWKnzogJHtpbnRlcm5hbC5lbWFpbH0gKOa4oOmBkzogJHtjaH0pYCk7XG5cbiAgICAgIC8qIOWwhiB0b2tlbiDlrZjlhaXlhoXpg6jlrZjlgqjvvIzkuI3mmrTpnLLnu5nnlKjmiLcgKi9cbiAgICAgIGNvbnN0IHB1YmxpY0luZm86IEVtYWlsSW5mbyA9IHtcbiAgICAgICAgY2hhbm5lbDogaW50ZXJuYWwuY2hhbm5lbCxcbiAgICAgICAgZW1haWw6IGludGVybmFsLmVtYWlsLFxuICAgICAgICBleHBpcmVzQXQ6IGludGVybmFsLmV4cGlyZXNBdCxcbiAgICAgICAgY3JlYXRlZEF0OiBpbnRlcm5hbC5jcmVhdGVkQXQsXG4gICAgICB9O1xuICAgICAgaWYgKGludGVybmFsLnRva2VuKSB7XG4gICAgICAgIHRva2VuU3RvcmUuc2V0KHB1YmxpY0luZm8sIGludGVybmFsLnRva2VuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwdWJsaWNJbmZvO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBsb2dnZXIud2Fybihg5rig6YGTICR7Y2h9IOS4jeWPr+eUqDogJHtlcnIubWVzc2FnZSB8fCBlcnJ977yM5bCd6K+V5LiL5LiA5Liq5rig6YGTYCk7XG4gICAgfVxuICB9XG5cbiAgbG9nZ2VyLmVycm9yKCfmiYDmnInmuKDpgZPlnYfkuI3lj6/nlKjvvIzliJvlu7rpgq7nrrHlpLHotKUnKTtcbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICog5p6E5bu65rig6YGT5bCd6K+V6aG65bqPXG4gKiDmjIflrprmuKDpgZPml7bkvJjlhYjlsJ3or5Xor6XmuKDpgZPvvIzlhbbkvZnmuKDpgZPmiZPkubHov73liqBcbiAqIOacquaMh+WumuaXtuaJk+S5seWFqOmDqOa4oOmBk1xuICovXG5mdW5jdGlvbiBidWlsZENoYW5uZWxPcmRlcihwcmVmZXJyZWQ/OiBDaGFubmVsKTogQ2hhbm5lbFtdIHtcbiAgY29uc3Qgc2h1ZmZsZWQgPSBbLi4uYWxsQ2hhbm5lbHNdLnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XG4gIGlmICghcHJlZmVycmVkKSByZXR1cm4gc2h1ZmZsZWQ7XG4gIGNvbnN0IHJlc3QgPSBzaHVmZmxlZC5maWx0ZXIoY2ggPT4gY2ggIT09IHByZWZlcnJlZCk7XG4gIHJldHVybiBbcHJlZmVycmVkLCAuLi5yZXN0XTtcbn1cblxuLyoqXG4gKiDljZXmrKHliJvlu7rpgq7nrrHvvIjkuI3lkKvph43or5XpgLvovpHvvIlcbiAqIOagueaNrua4oOmBk+exu+Wei+WIhuWPkeWIsOWvueW6lOeahCBwcm92aWRlciDlrp7njrBcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbE9uY2UoY2hhbm5lbDogQ2hhbm5lbCwgb3B0aW9uczogR2VuZXJhdGVFbWFpbE9wdGlvbnMpOiBQcm9taXNlPEludGVybmFsRW1haWxJbmZvPiB7XG4gIHN3aXRjaCAoY2hhbm5lbCkge1xuICAgIGNhc2UgJ3RlbXBtYWlsJzpcbiAgICAgIHJldHVybiB0ZW1wbWFpbC5nZW5lcmF0ZUVtYWlsKG9wdGlvbnMuZHVyYXRpb24gfHwgMzApO1xuICAgIGNhc2UgJ2xpbnNoaS1lbWFpbCc6XG4gICAgICByZXR1cm4gbGluc2hpRW1haWwuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ3RlbXBtYWlsLWxvbCc6XG4gICAgICByZXR1cm4gdGVtcG1haWxMb2wuZ2VuZXJhdGVFbWFpbChvcHRpb25zLmRvbWFpbiB8fCBudWxsKTtcbiAgICBjYXNlICdjaGF0Z3B0LW9yZy11ayc6XG4gICAgICByZXR1cm4gY2hhdGdwdE9yZ1VrLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICd0ZW1wbWFpbC1sYSc6XG4gICAgICByZXR1cm4gdGVtcG1haWxMYS5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAndGVtcC1tYWlsLWlvJzpcbiAgICAgIHJldHVybiB0ZW1wTWFpbElPLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICdhd2FtYWlsJzpcbiAgICAgIHJldHVybiBhd2FtYWlsLmdlbmVyYXRlRW1haWwoKTtcbiAgICBjYXNlICdtYWlsLXRtJzpcbiAgICAgIHJldHVybiBtYWlsVG0uZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGNhc2UgJ2Ryb3BtYWlsJzpcbiAgICAgIHJldHVybiBkcm9wbWFpbC5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnZ3VlcnJpbGxhbWFpbCc6XG4gICAgICByZXR1cm4gZ3VlcnJpbGxhbWFpbC5nZW5lcmF0ZUVtYWlsKCk7XG4gICAgY2FzZSAnbWFpbGRyb3AnOlxuICAgICAgcmV0dXJuIG1haWxkcm9wUHJvdmlkZXIuZ2VuZXJhdGVFbWFpbCgpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY2hhbm5lbDogJHtjaGFubmVsfWApO1xuICB9XG59XG5cbi8qKlxuICog6I635Y+W6YKu5Lu25YiX6KGoXG4gKiBDaGFubmVsL0VtYWlsL1Rva2VuIOetieeUsSBTREsg5LuOIEVtYWlsSW5mbyDkuK3oh6rliqjojrflj5bvvIznlKjmiLfml6DpnIDmiYvliqjkvKDpgJJcbiAqXG4gKiDplJnor6/lpITnkIbnrZbnlaXvvJpcbiAqIC0g572R57uc6ZSZ6K+v44CB6LaF5pe244CBNDI544CB5pyN5Yqh56uvIDV4eCDplJnor68g4oaSIOiHquWKqOmHjeivle+8iOm7mOiupCAyIOasoe+8iVxuICogLSDph43or5XogJflsL3lkI7ov5Tlm54geyBzdWNjZXNzOiBmYWxzZSwgZW1haWxzOiBbXSB977yM5LiN5oqb5byC5bi4XG4gKiAtIOWPguaVsOagoemqjOmUmeivr++8iOe8uuWwkSBFbWFpbEluZm/vvInnm7TmjqXmipvlh7pcbiAqXG4gKiBAcGFyYW0gaW5mbyAtIEdlbmVyYXRlRW1haWwoKSDov5Tlm57nmoTpgq7nrrHkv6Hmga9cbiAqIEBwYXJhbSBvcHRpb25zIC0g5Y+v6YCJ6YWN572u77yI6YeN6K+V562J77yJXG4gKiBAcmV0dXJucyDpgq7ku7bnu5PmnpzvvIzljIXlkKsgc3VjY2VzcyDmoIforrDlkozpgq7ku7bliJfooahcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGluZm8gPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKHsgY2hhbm5lbDogJ21haWwtdG0nIH0pO1xuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0RW1haWxzKGluZm8pO1xuICogaWYgKHJlc3VsdC5zdWNjZXNzICYmIHJlc3VsdC5lbWFpbHMubGVuZ3RoID4gMCkge1xuICogICBjb25zb2xlLmxvZygn5pS25Yiw6YKu5Lu2OicsIHJlc3VsdC5lbWFpbHNbMF0uc3ViamVjdCk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhpbmZvOiBFbWFpbEluZm8sIG9wdGlvbnM/OiBHZXRFbWFpbHNPcHRpb25zKTogUHJvbWlzZTxHZXRFbWFpbHNSZXN1bHQ+IHtcbiAgaWYgKCFpbmZvKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFbWFpbEluZm8gaXMgcmVxdWlyZWQsIGNhbGwgZ2VuZXJhdGVFbWFpbCgpIGZpcnN0Jyk7XG4gIH1cblxuICBjb25zdCB7IGNoYW5uZWwsIGVtYWlsIH0gPSBpbmZvO1xuICBjb25zdCB0b2tlbiA9IHRva2VuU3RvcmUuZ2V0KGluZm8pO1xuXG4gIGlmICghY2hhbm5lbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCBpcyByZXF1aXJlZCcpO1xuICB9XG4gIGlmICghZW1haWwgJiYgY2hhbm5lbCAhPT0gJ3RlbXBtYWlsLWxvbCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtYWlsIGlzIHJlcXVpcmVkJyk7XG4gIH1cblxuICBsb2dnZXIuZGVidWcoYOiOt+WPlumCruS7tiwg5rig6YGTOiAke2NoYW5uZWx9LCDpgq7nrrE6ICR7ZW1haWx9YCk7XG4gIHRyeSB7XG4gICAgY29uc3QgZW1haWxzID0gYXdhaXQgd2l0aFJldHJ5KCgpID0+IGdldEVtYWlsc09uY2UoY2hhbm5lbCwgZW1haWwsIHRva2VuKSwgb3B0aW9ucz8ucmV0cnkpO1xuICAgIGlmIChlbWFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgbG9nZ2VyLmluZm8oYOiOt+WPluWIsCAke2VtYWlscy5sZW5ndGh9IOWwgemCruS7tiwg5rig6YGTOiAke2NoYW5uZWx9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci5kZWJ1Zyhg5pqC5peg6YKu5Lu2LCDmuKDpgZM6ICR7Y2hhbm5lbH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgY2hhbm5lbCwgZW1haWwsIGVtYWlscywgc3VjY2VzczogdHJ1ZSB9O1xuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIC8qXG4gICAgICog6YeN6K+V6ICX5bC95ZCO5LuN54S25aSx6LSlIOKGkiDov5Tlm57nqbrnu5PmnpzogIzpnZ7mipvlvILluLhcbiAgICAgKiDov5nmoLfosIPnlKjmlrnlnKjova7or6LlnLrmma/kuIvkuI3kvJrlm6DkuLrkuIDmrKHnvZHnu5zms6LliqjogIzkuK3mlq3mlbTkuKrmtYHnqItcbiAgICAgKi9cbiAgICBsb2dnZXIuZXJyb3IoYOiOt+WPlumCruS7tuWksei0pSwg5rig6YGTOiAke2NoYW5uZWx9LCDplJnor686ICR7ZXJyLm1lc3NhZ2UgfHwgZXJyfWApO1xuICAgIHJldHVybiB7IGNoYW5uZWwsIGVtYWlsLCBlbWFpbHM6IFtdLCBzdWNjZXNzOiBmYWxzZSB9O1xuICB9XG59XG5cbi8qKlxuICog5Y2V5qyh6I635Y+W6YKu5Lu277yI5LiN5ZCr6YeN6K+V6YC76L6R77yJXG4gKiDmoLnmja7muKDpgZPnsbvlnovliIblj5HliLDlr7nlupTnmoQgcHJvdmlkZXIg5a6e546w77yM5bm25qCh6aqM5b+F6ZyA55qEIHRva2VuIOWPguaVsFxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRFbWFpbHNPbmNlKGNoYW5uZWw6IENoYW5uZWwsIGVtYWlsOiBzdHJpbmcsIHRva2VuPzogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIHN3aXRjaCAoY2hhbm5lbCkge1xuICAgIGNhc2UgJ3RlbXBtYWlsJzpcbiAgICAgIHJldHVybiB0ZW1wbWFpbC5nZXRFbWFpbHMoZW1haWwpO1xuICAgIGNhc2UgJ2xpbnNoaS1lbWFpbCc6XG4gICAgICByZXR1cm4gbGluc2hpRW1haWwuZ2V0RW1haWxzKGVtYWlsKTtcbiAgICBjYXNlICd0ZW1wbWFpbC1sb2wnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgdGVtcG1haWwtbG9sJyk7XG4gICAgICByZXR1cm4gdGVtcG1haWxMb2wuZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnY2hhdGdwdC1vcmctdWsnOlxuICAgICAgcmV0dXJuIGNoYXRncHRPcmdVay5nZXRFbWFpbHMoZW1haWwpO1xuICAgIGNhc2UgJ3RlbXBtYWlsLWxhJzpcbiAgICAgIHJldHVybiB0ZW1wbWFpbExhLmdldEVtYWlscyhlbWFpbCk7XG4gICAgY2FzZSAndGVtcC1tYWlsLWlvJzpcbiAgICAgIHJldHVybiB0ZW1wTWFpbElPLmdldEVtYWlscyhlbWFpbCk7XG4gICAgY2FzZSAnYXdhbWFpbCc6XG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIGVycm9yOiB0b2tlbiBtaXNzaW5nIGZvciBhd2FtYWlsJyk7XG4gICAgICByZXR1cm4gYXdhbWFpbC5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICdtYWlsLXRtJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIG1haWwtdG0nKTtcbiAgICAgIHJldHVybiBtYWlsVG0uZ2V0RW1haWxzKHRva2VuLCBlbWFpbCk7XG4gICAgY2FzZSAnZHJvcG1haWwnOlxuICAgICAgaWYgKCF0b2tlbikgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCBlcnJvcjogdG9rZW4gbWlzc2luZyBmb3IgZHJvcG1haWwnKTtcbiAgICAgIHJldHVybiBkcm9wbWFpbC5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBjYXNlICdndWVycmlsbGFtYWlsJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIGd1ZXJyaWxsYW1haWwnKTtcbiAgICAgIHJldHVybiBndWVycmlsbGFtYWlsLmdldEVtYWlscyh0b2tlbiwgZW1haWwpO1xuICAgIGNhc2UgJ21haWxkcm9wJzpcbiAgICAgIGlmICghdG9rZW4pIHRocm93IG5ldyBFcnJvcignaW50ZXJuYWwgZXJyb3I6IHRva2VuIG1pc3NpbmcgZm9yIG1haWxkcm9wJyk7XG4gICAgICByZXR1cm4gbWFpbGRyb3BQcm92aWRlci5nZXRFbWFpbHModG9rZW4sIGVtYWlsKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNoYW5uZWw6ICR7Y2hhbm5lbH1gKTtcbiAgfVxufVxuXG4vKipcbiAqIOS4tOaXtumCrueuseWuouaIt+err1xuICog5bCB6KOF5LqG6YKu566x5Yib5bu65ZKM6YKu5Lu26I635Y+W55qE5a6M5pW05rWB56iL77yM6Ieq5Yqo566h55CG6YKu566x5L+h5oGv5ZKM6K6k6K+B5Luk54mMXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCBjbGllbnQgPSBuZXcgVGVtcEVtYWlsQ2xpZW50KCk7XG4gKiBjb25zdCBlbWFpbEluZm8gPSBhd2FpdCBjbGllbnQuZ2VuZXJhdGUoeyBjaGFubmVsOiAnbWFpbC10bScgfSk7XG4gKiBjb25zb2xlLmxvZygn6YKu566xOicsIGVtYWlsSW5mby5lbWFpbCk7XG4gKlxuICogLy8g6L2u6K+i6I635Y+W6YKu5Lu2XG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBjbGllbnQuZ2V0RW1haWxzKCk7XG4gKiBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAqICAgY29uc29sZS5sb2coJ+mCruS7tuaVsDonLCByZXN1bHQuZW1haWxzLmxlbmd0aCk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBFbWFpbENsaWVudCB7XG4gIHByaXZhdGUgZW1haWxJbmZvOiBFbWFpbEluZm8gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICog5Yib5bu65Li05pe26YKu566x5bm257yT5a2Y6YKu566x5L+h5oGvXG4gICAqIOWQjue7reiwg+eUqCBnZXRFbWFpbHMoKSDml7boh6rliqjkvb/nlKjmraTpgq7nrrHnmoTmuKDpgZPjgIHlnLDlnYDlkozku6TniYxcbiAgICog5omA5pyJ5rig6YGT5Z2H5LiN5Y+v55So5pe26L+U5ZueIG51bGxcbiAgICovXG4gIGFzeW5jIGdlbmVyYXRlKG9wdGlvbnM6IEdlbmVyYXRlRW1haWxPcHRpb25zID0ge30pOiBQcm9taXNlPEVtYWlsSW5mbyB8IG51bGw+IHtcbiAgICB0aGlzLmVtYWlsSW5mbyA9IGF3YWl0IGdlbmVyYXRlRW1haWwob3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuZW1haWxJbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluW9k+WJjemCrueuseeahOmCruS7tuWIl+ihqFxuICAgKiDlv4XpobvlhYjosIPnlKggZ2VuZXJhdGUoKSDliJvlu7rpgq7nrrFcbiAgICpcbiAgICogQHRocm93cyDmnKrosIPnlKggZ2VuZXJhdGUoKSDml7bmipvlh7rlvILluLhcbiAgICovXG4gIGFzeW5jIGdldEVtYWlscyhvcHRpb25zPzogR2V0RW1haWxzT3B0aW9ucyk6IFByb21pc2U8R2V0RW1haWxzUmVzdWx0PiB7XG4gICAgaWYgKCF0aGlzLmVtYWlsSW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBlbWFpbCBnZW5lcmF0ZWQuIENhbGwgZ2VuZXJhdGUoKSBmaXJzdC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0RW1haWxzKHRoaXMuZW1haWxJbmZvLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5blvZPliY3nvJPlrZjnmoTpgq7nrrHkv6Hmga9cbiAgICog5pyq6LCD55SoIGdlbmVyYXRlKCkg5pe26L+U5ZueIG51bGxcbiAgICovXG4gIGdldEVtYWlsSW5mbygpOiBFbWFpbEluZm8gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lbWFpbEluZm87XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBsaXN0Q2hhbm5lbHMsXG4gIGdldENoYW5uZWxJbmZvLFxuICBnZW5lcmF0ZUVtYWlsLFxuICBnZXRFbWFpbHMsXG4gIFRlbXBFbWFpbENsaWVudCxcbiAgc2V0Q29uZmlnLFxuICBnZXRDb25maWcsXG59O1xuIl19
package/dist/normalize.js CHANGED
@@ -12,18 +12,43 @@ exports.normalizeEmail = normalizeEmail;
12
12
  * @returns 标准化的 Email 对象
13
13
  */
14
14
  function normalizeEmail(raw, recipientEmail = '') {
15
+ let text = normalizeText(raw);
16
+ let html = normalizeHtml(raw);
17
+ /*
18
+ * 修正 text/html 错配:
19
+ * 部分渠道将 HTML 内容放在 body/text 等字段中,
20
+ * 导致 normalizeText 提取到 HTML 内容而 normalizeHtml 为空。
21
+ * 检测 text 中是否包含 HTML 标签,如果是则移动到 html 字段。
22
+ */
23
+ if (text && !html && isHtmlContent(text)) {
24
+ html = text;
25
+ text = '';
26
+ }
15
27
  return {
16
28
  id: normalizeId(raw),
17
29
  from: normalizeFrom(raw),
18
30
  to: normalizeTo(raw, recipientEmail),
19
31
  subject: normalizeSubject(raw),
20
- text: normalizeText(raw),
21
- html: normalizeHtml(raw),
32
+ text,
33
+ html,
22
34
  date: normalizeDate(raw),
23
35
  isRead: normalizeIsRead(raw),
24
36
  attachments: normalizeAttachments(raw.attachments),
25
37
  };
26
38
  }
39
+ /**
40
+ * 检测内容是否为 HTML
41
+ * 通过检查是否包含常见的 HTML 标签来判断
42
+ */
43
+ function isHtmlContent(content) {
44
+ const trimmed = content.trim().toLowerCase();
45
+ return trimmed.startsWith('<!doctype html') ||
46
+ trimmed.startsWith('<html') ||
47
+ trimmed.startsWith('<body') ||
48
+ (trimmed.includes('<div') && trimmed.includes('</div>')) ||
49
+ (trimmed.includes('<table') && trimmed.includes('</table>')) ||
50
+ (trimmed.includes('<p') && trimmed.includes('</p>') && trimmed.includes('<'));
51
+ }
27
52
  /**
28
53
  * 提取邮件 ID
29
54
  * 候选字段: id, eid, _id, mailboxId, messageId, mail_id
@@ -129,4 +154,4 @@ function normalizeAttachments(attachments) {
129
154
  url: a.url || a.download_url || a.downloadUrl || undefined,
130
155
  }));
131
156
  }
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25vcm1hbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLHdDQVlDO0FBdEJEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxHQUFRLEVBQUUsaUJBQXlCLEVBQUU7SUFDbEUsT0FBTztRQUNMLEVBQUUsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDO1FBQ3BCLElBQUksRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDO1FBQ3hCLEVBQUUsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQztRQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO1FBQzlCLElBQUksRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDO1FBQ3hCLElBQUksRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDO1FBQ3hCLElBQUksRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDO1FBQ3hCLE1BQU0sRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDO1FBQzVCLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO0tBQ25ELENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxXQUFXLENBQUMsR0FBUTtJQUMzQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDL0YsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsYUFBYSxDQUFDLEdBQVE7SUFDN0IsT0FBTyxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLElBQUks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SyxDQUFDLENBQUM7SUFDOUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxPQUFPLEtBQUssUUFBUTtRQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUM7SUFDaEUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUN6RCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLG9CQUFvQixDQUFDLFdBQWdCO0lBQzVDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNELE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDcEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxTQUFTO1FBQ3ZDLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLFNBQVM7UUFDdEYsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLFNBQVM7S0FDM0QsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1haWwsIEVtYWlsQXR0YWNobWVudCB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIOWwhuWQhOaPkOS+m+WVhui/lOWbnueahOWOn+Wni+mCruS7tuaVsOaNruagh+WHhuWMluS4uue7n+S4gOeahCBFbWFpbCDmoLzlvI9cbiAqXG4gKiDkuI3lkIzmuKDpgZPnmoQgQVBJIOi/lOWbnuWtl+auteWQjeWQhOS4jeebuOWQjO+8jOatpOWHveaVsOmAmui/h+WkmuWtl+auteWAmemAieetlueVpVxuICog5bCG5a6D5Lus57uf5LiA5pig5bCE5Li65qCH5YeG55qEIEVtYWlsIOe7k+aehO+8jOS/neivgSBTREsg6L6T5Ye65LiA6Ie05oCn44CCXG4gKlxuICogQHBhcmFtIHJhdyAtIOWOn+Wni+mCruS7tuaVsOaNru+8iOadpeiHquS4jeWQjOaPkOS+m+WVhueahCBBUEkg5ZON5bqU77yJXG4gKiBAcGFyYW0gcmVjaXBpZW50RW1haWwgLSDmlLbku7bkurrpgq7nrrHlnLDlnYDvvIzlvZPljp/lp4vmlbDmja7kuK3ml6DmlLbku7bkurrlrZfmrrXml7bnlKjkvZzlm57pgIDlgLxcbiAqIEByZXR1cm5zIOagh+WHhuWMlueahCBFbWFpbCDlr7nosaFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUVtYWlsKHJhdzogYW55LCByZWNpcGllbnRFbWFpbDogc3RyaW5nID0gJycpOiBFbWFpbCB7XG4gIHJldHVybiB7XG4gICAgaWQ6IG5vcm1hbGl6ZUlkKHJhdyksXG4gICAgZnJvbTogbm9ybWFsaXplRnJvbShyYXcpLFxuICAgIHRvOiBub3JtYWxpemVUbyhyYXcsIHJlY2lwaWVudEVtYWlsKSxcbiAgICBzdWJqZWN0OiBub3JtYWxpemVTdWJqZWN0KHJhdyksXG4gICAgdGV4dDogbm9ybWFsaXplVGV4dChyYXcpLFxuICAgIGh0bWw6IG5vcm1hbGl6ZUh0bWwocmF3KSxcbiAgICBkYXRlOiBub3JtYWxpemVEYXRlKHJhdyksXG4gICAgaXNSZWFkOiBub3JtYWxpemVJc1JlYWQocmF3KSxcbiAgICBhdHRhY2htZW50czogbm9ybWFsaXplQXR0YWNobWVudHMocmF3LmF0dGFjaG1lbnRzKSxcbiAgfTtcbn1cblxuLyoqXG4gKiDmj5Dlj5bpgq7ku7YgSURcbiAqIOWAmemAieWtl+autTogaWQsIGVpZCwgX2lkLCBtYWlsYm94SWQsIG1lc3NhZ2VJZCwgbWFpbF9pZFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVJZChyYXc6IGFueSk6IHN0cmluZyB7XG4gIGNvbnN0IGlkID0gcmF3LmlkID8/IHJhdy5laWQgPz8gcmF3Ll9pZCA/PyByYXcubWFpbGJveElkID8/IHJhdy5tZXNzYWdlSWQgPz8gcmF3Lm1haWxfaWQgPz8gJyc7XG4gIHJldHVybiBTdHJpbmcoaWQpO1xufVxuXG4vKipcbiAqIOaPkOWPluWPkeS7tuS6uuWcsOWdgFxuICog5YCZ6YCJ5a2X5q61OiBmcm9tX2FkZHJlc3MsIGFkZHJlc3NfZnJvbSwgZnJvbSwgbWVzc2FnZUZyb20sIHNlbmRlclxuICovXG5mdW5jdGlvbiBub3JtYWxpemVGcm9tKHJhdzogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIHJhdy5mcm9tX2FkZHJlc3MgfHwgcmF3LmFkZHJlc3NfZnJvbSB8fCByYXcuZnJvbSB8fCByYXcubWVzc2FnZUZyb20gfHwgcmF3LnNlbmRlciB8fCAnJztcbn1cblxuLyoqXG4gKiDmj5Dlj5bmlLbku7bkurrlnLDlnYDvvIzml6DljLnphY3lrZfmrrXml7blm57pgIDkuLogcmVjaXBpZW50RW1haWxcbiAqIOWAmemAieWtl+autTogdG8sIHRvX2FkZHJlc3MsIG5hbWVfdG8sIGVtYWlsX2FkZHJlc3MsIGFkZHJlc3NcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplVG8ocmF3OiBhbnksIHJlY2lwaWVudEVtYWlsOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmF3LnRvIHx8IHJhdy50b19hZGRyZXNzIHx8IHJhdy5uYW1lX3RvIHx8IHJhdy5lbWFpbF9hZGRyZXNzIHx8IHJhdy5hZGRyZXNzIHx8IHJlY2lwaWVudEVtYWlsIHx8ICcnO1xufVxuXG4vKipcbiAqIOaPkOWPlumCruS7tuS4u+mimFxuICog5YCZ6YCJ5a2X5q61OiBzdWJqZWN0LCBlX3N1YmplY3RcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU3ViamVjdChyYXc6IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiByYXcuc3ViamVjdCB8fCByYXcuZV9zdWJqZWN0IHx8ICcnO1xufVxuXG4vKipcbiAqIOaPkOWPlue6r+aWh+acrOWGheWuuVxuICog5YCZ6YCJ5a2X5q61OiB0ZXh0LCBib2R5LCBjb250ZW50LCBib2R5X3RleHQsIHRleHRfY29udGVudFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVUZXh0KHJhdzogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIHJhdy50ZXh0IHx8IHJhdy5ib2R5IHx8IHJhdy5jb250ZW50IHx8IHJhdy5ib2R5X3RleHQgfHwgcmF3LnRleHRfY29udGVudCB8fCAnJztcbn1cblxuLyoqXG4gKiDmj5Dlj5YgSFRNTCDlhoXlrrlcbiAqIOWAmemAieWtl+autTogaHRtbCwgaHRtbF9jb250ZW50LCBib2R5X2h0bWxcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplSHRtbChyYXc6IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiByYXcuaHRtbCB8fCByYXcuaHRtbF9jb250ZW50IHx8IHJhdy5ib2R5X2h0bWwgfHwgJyc7XG59XG5cbi8qKlxuICog5o+Q5Y+W5bm257uf5LiA5pel5pyf5qC85byP5Li6IElTTyA4NjAxXG4gKiDlgJnpgInlrZfmrrU6IHJlY2VpdmVkX2F0LCBjcmVhdGVkX2F0LCBjcmVhdGVkQXQsIGRhdGUsIHRpbWVzdGFtcCwgZV9kYXRlXG4gKiDlhbbkuK0gdGltZXN0YW1wIOS4uiBVbml4IOenkue6p+aXtumXtOaIs++8jOmcgOS5mOS7pSAxMDAwIOi9rOS4uuavq+enklxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEYXRlKHJhdzogYW55KTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICBpZiAocmF3LnJlY2VpdmVkX2F0KSByZXR1cm4gbmV3IERhdGUocmF3LnJlY2VpdmVkX2F0KS50b0lTT1N0cmluZygpO1xuICAgIGlmIChyYXcuY3JlYXRlZF9hdCkgcmV0dXJuIG5ldyBEYXRlKHJhdy5jcmVhdGVkX2F0KS50b0lTT1N0cmluZygpO1xuICAgIGlmIChyYXcuY3JlYXRlZEF0KSByZXR1cm4gbmV3IERhdGUocmF3LmNyZWF0ZWRBdCkudG9JU09TdHJpbmcoKTtcbiAgICBpZiAocmF3LmRhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgcmF3LmRhdGUgPT09ICdudW1iZXInKSByZXR1cm4gbmV3IERhdGUocmF3LmRhdGUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICByZXR1cm4gbmV3IERhdGUocmF3LmRhdGUpLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmIChyYXcudGltZXN0YW1wKSByZXR1cm4gbmV3IERhdGUocmF3LnRpbWVzdGFtcCAqIDEwMDApLnRvSVNPU3RyaW5nKCk7XG4gICAgaWYgKHJhdy5lX2RhdGUpIHJldHVybiBuZXcgRGF0ZShyYXcuZV9kYXRlKS50b0lTT1N0cmluZygpO1xuICB9IGNhdGNoIHtcbiAgICAvKiDml6XmnJ/op6PmnpDlpLHotKXvvIzov5Tlm57nqbrlrZfnrKbkuLIgKi9cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICog5o+Q5Y+W5bey6K+754q25oCBXG4gKiDlgJnpgInlrZfmrrU6IHNlZW4sIHJlYWQsIGlzUmVhZCwgaXNfcmVhZFxuICog5pSv5oyBIGJvb2xlYW4gLyBudW1iZXIoMHwxKSAvIHN0cmluZygnMCd8JzEnKSDlpJrnp43nsbvlnotcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplSXNSZWFkKHJhdzogYW55KTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgcmF3LnNlZW4gPT09ICdib29sZWFuJykgcmV0dXJuIHJhdy5zZWVuO1xuICBpZiAodHlwZW9mIHJhdy5yZWFkID09PSAnYm9vbGVhbicpIHJldHVybiByYXcucmVhZDtcbiAgaWYgKHR5cGVvZiByYXcuaXNSZWFkID09PSAnYm9vbGVhbicpIHJldHVybiByYXcuaXNSZWFkO1xuICBpZiAodHlwZW9mIHJhdy5pc19yZWFkID09PSAnbnVtYmVyJykgcmV0dXJuIHJhdy5pc19yZWFkID09PSAxO1xuICBpZiAodHlwZW9mIHJhdy5pc19yZWFkID09PSAnc3RyaW5nJykgcmV0dXJuIHJhdy5pc19yZWFkID09PSAnMSc7XG4gIGlmICh0eXBlb2YgcmF3LmlzX3JlYWQgPT09ICdib29sZWFuJykgcmV0dXJuIHJhdy5pc19yZWFkO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICog5o+Q5Y+W5bm25qCH5YeG5YyW6ZmE5Lu25YiX6KGoXG4gKiDmr4/kuKrpmYTku7bnmoTlrZfmrrXkuZ/ph4fnlKjlpJrlgJnpgInnrZbnlaXmmKDlsIRcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplQXR0YWNobWVudHMoYXR0YWNobWVudHM6IGFueSk6IEVtYWlsQXR0YWNobWVudFtdIHtcbiAgaWYgKCFhdHRhY2htZW50cyB8fCAhQXJyYXkuaXNBcnJheShhdHRhY2htZW50cykpIHJldHVybiBbXTtcbiAgcmV0dXJuIGF0dGFjaG1lbnRzLm1hcCgoYTogYW55KSA9PiAoe1xuICAgIGZpbGVuYW1lOiBhLmZpbGVuYW1lIHx8IGEubmFtZSB8fCAnJyxcbiAgICBzaXplOiBhLnNpemUgfHwgYS5maWxlc2l6ZSB8fCB1bmRlZmluZWQsXG4gICAgY29udGVudFR5cGU6IGEuY29udGVudFR5cGUgfHwgYS5jb250ZW50X3R5cGUgfHwgYS5taW1lVHlwZSB8fCBhLm1pbWVfdHlwZSB8fCB1bmRlZmluZWQsXG4gICAgdXJsOiBhLnVybCB8fCBhLmRvd25sb2FkX3VybCB8fCBhLmRvd25sb2FkVXJsIHx8IHVuZGVmaW5lZCxcbiAgfSkpO1xufVxuIl19
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25vcm1hbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLHdDQTBCQztBQXBDRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixjQUFjLENBQUMsR0FBUSxFQUFFLGlCQUF5QixFQUFFO0lBQ2xFLElBQUksSUFBSSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixJQUFJLElBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUI7Ozs7O09BS0c7SUFDSCxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxPQUFPO1FBQ0wsRUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUM7UUFDeEIsRUFBRSxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDO1FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7UUFDOUIsSUFBSTtRQUNKLElBQUk7UUFDSixJQUFJLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQztRQUN4QixNQUFNLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQztRQUM1QixXQUFXLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztLQUNuRCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsYUFBYSxDQUFDLE9BQWU7SUFDcEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdDLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN6QyxPQUFPLENBQUMs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U0FBUyxvQkFBb0IsQ0FBQyxXQUFnQjtJQUM1QyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMzRCxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3BDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksU0FBUztRQUN2QyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxTQUFTO1FBQ3RGLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxTQUFTO0tBQzNELENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtYWlsLCBFbWFpbEF0dGFjaG1lbnQgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiDlsIblkITmj5DkvpvllYbov5Tlm57nmoTljp/lp4vpgq7ku7bmlbDmja7moIflh4bljJbkuLrnu5/kuIDnmoQgRW1haWwg5qC85byPXG4gKlxuICog5LiN5ZCM5rig6YGT55qEIEFQSSDov5Tlm57lrZfmrrXlkI3lkITkuI3nm7jlkIzvvIzmraTlh73mlbDpgJrov4flpJrlrZfmrrXlgJnpgInnrZbnlaVcbiAqIOWwhuWug+S7rOe7n+S4gOaYoOWwhOS4uuagh+WHhueahCBFbWFpbCDnu5PmnoTvvIzkv53or4EgU0RLIOi+k+WHuuS4gOiHtOaAp+OAglxuICpcbiAqIEBwYXJhbSByYXcgLSDljp/lp4vpgq7ku7bmlbDmja7vvIjmnaXoh6rkuI3lkIzmj5DkvpvllYbnmoQgQVBJIOWTjeW6lO+8iVxuICogQHBhcmFtIHJlY2lwaWVudEVtYWlsIC0g5pS25Lu25Lq66YKu566x5Zyw5Z2A77yM5b2T5Y6f5aeL5pWw5o2u5Lit5peg5pS25Lu25Lq65a2X5q615pe255So5L2c5Zue6YCA5YC8XG4gKiBAcmV0dXJucyDmoIflh4bljJbnmoQgRW1haWwg5a+56LGhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVFbWFpbChyYXc6IGFueSwgcmVjaXBpZW50RW1haWw6IHN0cmluZyA9ICcnKTogRW1haWwge1xuICBsZXQgdGV4dCA9IG5vcm1hbGl6ZVRleHQocmF3KTtcbiAgbGV0IGh0bWwgPSBub3JtYWxpemVIdG1sKHJhdyk7XG5cbiAgLypcbiAgICog5L+u5q2jIHRleHQvaHRtbCDplJnphY3vvJpcbiAgICog6YOo5YiG5rig6YGT5bCGIEhUTUwg5YaF5a655pS+5ZyoIGJvZHkvdGV4dCDnrYnlrZfmrrXkuK3vvIxcbiAgICog5a+86Ie0IG5vcm1hbGl6ZVRleHQg5o+Q5Y+W5YiwIEhUTUwg5YaF5a656ICMIG5vcm1hbGl6ZUh0bWwg5Li656m644CCXG4gICAqIOajgOa1iyB0ZXh0IOS4reaYr+WQpuWMheWQqyBIVE1MIOagh+etvu+8jOWmguaenOaYr+WImeenu+WKqOWIsCBodG1sIOWtl+auteOAglxuICAgKi9cbiAgaWYgKHRleHQgJiYgIWh0bWwgJiYgaXNIdG1sQ29udGVudCh0ZXh0KSkge1xuICAgIGh0bWwgPSB0ZXh0O1xuICAgIHRleHQgPSAnJztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaWQ6IG5vcm1hbGl6ZUlkKHJhdyksXG4gICAgZnJvbTogbm9ybWFsaXplRnJvbShyYXcpLFxuICAgIHRvOiBub3JtYWxpemVUbyhyYXcsIHJlY2lwaWVudEVtYWlsKSxcbiAgICBzdWJqZWN0OiBub3JtYWxpemVTdWJqZWN0KHJhdyksXG4gICAgdGV4dCxcbiAgICBodG1sLFxuICAgIGRhdGU6IG5vcm1hbGl6ZURhdGUocmF3KSxcbiAgICBpc1JlYWQ6IG5vcm1hbGl6ZUlzUmVhZChyYXcpLFxuICAgIGF0dGFjaG1lbnRzOiBub3JtYWxpemVBdHRhY2htZW50cyhyYXcuYXR0YWNobWVudHMpLFxuICB9O1xufVxuXG4vKipcbiAqIOajgOa1i+WGheWuueaYr+WQpuS4uiBIVE1MXG4gKiDpgJrov4fmo4Dmn6XmmK/lkKbljIXlkKvluLjop4HnmoQgSFRNTCDmoIfnrb7mnaXliKTmlq1cbiAqL1xuZnVuY3Rpb24gaXNIdG1sQ29udGVudChjb250ZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgdHJpbW1lZCA9IGNvbnRlbnQudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiB0cmltbWVkLnN0YXJ0c1dpdGgoJzwhZG9jdHlwZSBodG1sJykgfHxcbiAgICB0cmltbWVkLnN0YXJ0c1dpdGgoJzxodG1sJykgfHxcbiAgICB0cmltbWVkLnN0YXJ0c1dpdGgoJzxib2R5JykgfHxcbiAgICAodHJpbW1lZC5pbmNsdWRlcygnPGRpdicpICYmIHRyaW1tZWQuaW5jbHVkZXMoJzwvZGl2PicpKSB8fFxuICAgICh0cmltbWVkLmluY2x1ZGVzKCc8dGFibGUnKSAmJiB0cmltbWVkLmluY2x1ZGVzKCc8L3RhYmxlPicpKSB8fFxuICAgICh0cmltbWVkLmluY2x1ZGVzKCc8cCcpICYmIHRyaW1tZWQuaW5jbHVkZXMoJzwvcD4nKSAmJiB0cmltbWVkLmluY2x1ZGVzKCc8JykpO1xufVxuXG4vKipcbiAqIOaPkOWPlumCruS7tiBJRFxuICog5YCZ6YCJ5a2X5q61OiBpZCwgZWlkLCBfaWQsIG1haWxib3hJZCwgbWVzc2FnZUlkLCBtYWlsX2lkXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUlkKHJhdzogYW55KTogc3RyaW5nIHtcbiAgY29uc3QgaWQgPSByYXcuaWQgPz8gcmF3LmVpZCA/PyByYXcuX2lkID8/IHJhdy5tYWlsYm94SWQgPz8gcmF3Lm1lc3NhZ2VJZCA/PyByYXcubWFpbF9pZCA/PyAnJztcbiAgcmV0dXJuIFN0cmluZyhpZCk7XG59XG5cbi8qKlxuICog5o+Q5Y+W5Y+R5Lu25Lq65Zyw5Z2AXG4gKiDlgJnpgInlrZfmrrU6IGZyb21fYWRkcmVzcywgYWRkcmVzc19mcm9tLCBmcm9tLCBtZXNzYWdlRnJvbSwgc2VuZGVyXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUZyb20ocmF3OiBhbnkpOiBzdHJpbmcge1xuICByZXR1cm4gcmF3LmZyb21fYWRkcmVzcyB8fCByYXcuYWRkcmVzc19mcm9tIHx8IHJhdy5mcm9tIHx8IHJhdy5tZXNzYWdlRnJvbSB8fCByYXcuc2VuZGVyIHx8ICcnO1xufVxuXG4vKipcbiAqIOaPkOWPluaUtuS7tuS6uuWcsOWdgO+8jOaXoOWMuemFjeWtl+auteaXtuWbnumAgOS4uiByZWNpcGllbnRFbWFpbFxuICog5YCZ6YCJ5a2X5q61OiB0bywgdG9fYWRkcmVzcywgbmFtZV90bywgZW1haWxfYWRkcmVzcywgYWRkcmVzc1xuICovXG5mdW5jdGlvbiBub3JtYWxpemVUbyhyYXc6IGFueSwgcmVjaXBpZW50RW1haWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByYXcudG8gfHwgcmF3LnRvX2FkZHJlc3MgfHwgcmF3Lm5hbWVfdG8gfHwgcmF3LmVtYWlsX2FkZHJlc3MgfHwgcmF3LmFkZHJlc3MgfHwgcmVjaXBpZW50RW1haWwgfHwgJyc7XG59XG5cbi8qKlxuICog5o+Q5Y+W6YKu5Lu25Li76aKYXG4gKiDlgJnpgInlrZfmrrU6IHN1YmplY3QsIGVfc3ViamVjdFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVTdWJqZWN0KHJhdzogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIHJhdy5zdWJqZWN0IHx8IHJhdy5lX3N1YmplY3QgfHwgJyc7XG59XG5cbi8qKlxuICog5o+Q5Y+W57qv5paH5pys5YaF5a65XG4gKiDlgJnpgInlrZfmrrU6IHRleHQsIGJvZHksIGNvbnRlbnQsIGJvZHlfdGV4dCwgdGV4dF9jb250ZW50XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVRleHQocmF3OiBhbnkpOiBzdHJpbmcge1xuICByZXR1cm4gcmF3LnRleHQgfHwgcmF3LmJvZHkgfHwgcmF3LmNvbnRlbnQgfHwgcmF3LmJvZHlfdGV4dCB8fCByYXcudGV4dF9jb250ZW50IHx8ICcnO1xufVxuXG4vKipcbiAqIOaPkOWPliBIVE1MIOWGheWuuVxuICog5YCZ6YCJ5a2X5q61OiBodG1sLCBodG1sX2NvbnRlbnQsIGJvZHlfaHRtbFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVIdG1sKHJhdzogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIHJhdy5odG1sIHx8IHJhdy5odG1sX2NvbnRlbnQgfHwgcmF3LmJvZHlfaHRtbCB8fCAnJztcbn1cblxuLyoqXG4gKiDmj5Dlj5blubbnu5/kuIDml6XmnJ/moLzlvI/kuLogSVNPIDg2MDFcbiAqIOWAmemAieWtl+autTogcmVjZWl2ZWRfYXQsIGNyZWF0ZWRfYXQsIGNyZWF0ZWRBdCwgZGF0ZSwgdGltZXN0YW1wLCBlX2RhdGVcbiAqIOWFtuS4rSB0aW1lc3RhbXAg5Li6IFVuaXgg56eS57qn5pe26Ze05oiz77yM6ZyA5LmY5LulIDEwMDAg6L2s5Li65q+r56eSXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZURhdGUocmF3OiBhbnkpOiBzdHJpbmcge1xuICB0cnkge1xuICAgIGlmIChyYXcucmVjZWl2ZWRfYXQpIHJldHVybiBuZXcgRGF0ZShyYXcucmVjZWl2ZWRfYXQpLnRvSVNPU3RyaW5nKCk7XG4gICAgaWYgKHJhdy5jcmVhdGVkX2F0KSByZXR1cm4gbmV3IERhdGUocmF3LmNyZWF0ZWRfYXQpLnRvSVNPU3RyaW5nKCk7XG4gICAgaWYgKHJhdy5jcmVhdGVkQXQpIHJldHVybiBuZXcgRGF0ZShyYXcuY3JlYXRlZEF0KS50b0lTT1N0cmluZygpO1xuICAgIGlmIChyYXcuZGF0ZSkge1xuICAgICAgaWYgKHR5cGVvZiByYXcuZGF0ZSA9PT0gJ251bWJlcicpIHJldHVybiBuZXcgRGF0ZShyYXcuZGF0ZSkudG9JU09TdHJpbmcoKTtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShyYXcuZGF0ZSkudG9JU09TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHJhdy50aW1lc3RhbXApIHJldHVybiBuZXcgRGF0ZShyYXcudGltZXN0YW1wICogMTAwMCkudG9JU09TdHJpbmcoKTtcbiAgICBpZiAocmF3LmVfZGF0ZSkgcmV0dXJuIG5ldyBEYXRlKHJhdy5lX2RhdGUpLnRvSVNPU3RyaW5nKCk7XG4gIH0gY2F0Y2gge1xuICAgIC8qIOaXpeacn+ino+aekOWksei0pe+8jOi/lOWbnuepuuWtl+espuS4siAqL1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiDmj5Dlj5blt7Lor7vnirbmgIFcbiAqIOWAmemAieWtl+autTogc2VlbiwgcmVhZCwgaXNSZWFkLCBpc19yZWFkXG4gKiDmlK/mjIEgYm9vbGVhbiAvIG51bWJlcigwfDEpIC8gc3RyaW5nKCcwJ3wnMScpIOWkmuenjeexu+Wei1xuICovXG5mdW5jdGlvbiBub3JtYWxpemVJc1JlYWQocmF3OiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiByYXcuc2VlbiA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gcmF3LnNlZW47XG4gIGlmICh0eXBlb2YgcmF3LnJlYWQgPT09ICdib29sZWFuJykgcmV0dXJuIHJhdy5yZWFkO1xuICBpZiAodHlwZW9mIHJhdy5pc1JlYWQgPT09ICdib29sZWFuJykgcmV0dXJuIHJhdy5pc1JlYWQ7XG4gIGlmICh0eXBlb2YgcmF3LmlzX3JlYWQgPT09ICdudW1iZXInKSByZXR1cm4gcmF3LmlzX3JlYWQgPT09IDE7XG4gIGlmICh0eXBlb2YgcmF3LmlzX3JlYWQgPT09ICdzdHJpbmcnKSByZXR1cm4gcmF3LmlzX3JlYWQgPT09ICcxJztcbiAgaWYgKHR5cGVvZiByYXcuaXNfcmVhZCA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gcmF3LmlzX3JlYWQ7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiDmj5Dlj5blubbmoIflh4bljJbpmYTku7bliJfooahcbiAqIOavj+S4qumZhOS7tueahOWtl+auteS5n+mHh+eUqOWkmuWAmemAieetlueVpeaYoOWwhFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVBdHRhY2htZW50cyhhdHRhY2htZW50czogYW55KTogRW1haWxBdHRhY2htZW50W10ge1xuICBpZiAoIWF0dGFjaG1lbnRzIHx8ICFBcnJheS5pc0FycmF5KGF0dGFjaG1lbnRzKSkgcmV0dXJuIFtdO1xuICByZXR1cm4gYXR0YWNobWVudHMubWFwKChhOiBhbnkpID0+ICh7XG4gICAgZmlsZW5hbWU6IGEuZmlsZW5hbWUgfHwgYS5uYW1lIHx8ICcnLFxuICAgIHNpemU6IGEuc2l6ZSB8fCBhLmZpbGVzaXplIHx8IHVuZGVmaW5lZCxcbiAgICBjb250ZW50VHlwZTogYS5jb250ZW50VHlwZSB8fCBhLmNvbnRlbnRfdHlwZSB8fCBhLm1pbWVUeXBlIHx8IGEubWltZV90eXBlIHx8IHVuZGVmaW5lZCxcbiAgICB1cmw6IGEudXJsIHx8IGEuZG93bmxvYWRfdXJsIHx8IGEuZG93bmxvYWRVcmwgfHwgdW5kZWZpbmVkLFxuICB9KSk7XG59XG4iXX0=
@@ -1,11 +1,11 @@
1
- import { EmailInfo, Email } from '../types';
1
+ import { InternalEmailInfo, Email } from '../types';
2
2
  /**
3
3
  * 创建临时邮箱
4
4
  * API: POST /welcome/change_mailbox (空 body)
5
5
  * 返回: { success, data: { email_address, expired_at, created_at, ... } }
6
6
  * 需要保存响应中的 Set-Cookie (awamail_session) 用于后续获取邮件
7
7
  */
8
- export declare function generateEmail(): Promise<EmailInfo>;
8
+ export declare function generateEmail(): Promise<InternalEmailInfo>;
9
9
  /**
10
10
  * 获取邮件列表
11
11
  * API: GET /welcome/get_emails
@@ -88,4 +88,4 @@ async function getEmails(token, email) {
88
88
  const rawEmails = data.data.emails || [];
89
89
  return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
90
90
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdhbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlcnMvYXdhbWFpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNDQSxzQ0FnQ0M7QUFRRCw4QkFzQkM7QUFuR0QsNENBQThDO0FBRTlDLE1BQU0sT0FBTyxHQUFZLFNBQVMsQ0FBQztBQUNuQyxNQUFNLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztBQUUvQyxNQUFNLGVBQWUsR0FBMkI7SUFDOUMsWUFBWSxFQUFFLCtIQUErSDtJQUM3SSxRQUFRLEVBQUUsZ0RBQWdEO0lBQzFELGlCQUFpQixFQUFFLGlEQUFpRDtJQUNwRSxlQUFlLEVBQUUsVUFBVTtJQUMzQixLQUFLLEVBQUUsR0FBRztJQUNWLFFBQVEsRUFBRSxxQkFBcUI7SUFDL0IsUUFBUSxFQUFFLFVBQVU7SUFDcEIsU0FBUyxFQUFFLDhCQUE4QjtJQUN6QyxXQUFXLEVBQUUsbUVBQW1FO0lBQ2hGLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVztJQUNqQyxnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLGdCQUFnQixFQUFFLE1BQU07SUFDeEIsZ0JBQWdCLEVBQUUsYUFBYTtDQUNoQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFTLG9CQUFvQixDQUFDLFFBQWtCO0lBQzlDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDekQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3BELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxhQUFhO0lBQ2pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxpQkFBaUIsRUFBRTtRQUN6RCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRTtZQUNQLEdBQUcsZUFBZTtZQUNsQixnQkFBZ0IsRUFBRSxHQUFHO1NBQ3RCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7UUFDOUIsS0FBSyxFQUFFLGFBQWE7UUFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtRQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO0tBQ2hDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQzFELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxhQUFhLEVBQUU7UUFDckQsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUU7WUFDUCxHQUFHLGVBQWU7WUFDbEIsUUFBUSxFQUFFLEtBQUs7WUFDZixrQkFBa0IsRUFBRSxnQkFBZ0I7U0FDckM7S0FDRixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN6QyxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLElBQUEsMEJBQWMsRUFBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1haWxJbmZvLCBFbWFpbCwgQ2hhbm5lbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi4vbm9ybWFsaXplJztcblxuY29uc3QgQ0hBTk5FTDogQ2hhbm5lbCA9ICdhd2FtYWlsJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vYXdhbWFpbC5jb20vd2VsY29tZSc7XG5cbmNvbnN0IERFRkFVTFRfSEVBREVSUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzE0NC4wLjAuMCBTYWZhcmkvNTM3LjM2IEVkZy8xNDQuMC4wLjAnLFxuICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCwgKi8qOyBxPTAuMDEnLFxuICAnYWNjZXB0LWxhbmd1YWdlJzogJ3poLUNOLHpoO3E9MC45LGVuO3E9MC44LGVuLUdCO3E9MC43LGVuLVVTO3E9MC42JyxcbiAgJ2NhY2hlLWNvbnRyb2wnOiAnbm8tY2FjaGUnLFxuICAnZG50JzogJzEnLFxuICAnb3JpZ2luJzogJ2h0dHBzOi8vYXdhbWFpbC5jb20nLFxuICAncHJhZ21hJzogJ25vLWNhY2hlJyxcbiAgJ3JlZmVyZXInOiAnaHR0cHM6Ly9hd2FtYWlsLmNvbS8/bGFuZz16aCcsXG4gICdzZWMtY2gtdWEnOiAnXCJOb3QoQTpCcmFuZFwiO3Y9XCI4XCIsIFwiQ2hyb21pdW1cIjt2PVwiMTQ0XCIsIFwiTWljcm9zb2Z0IEVkZ2VcIjt2PVwiMTQ0XCInLFxuICAnc2VjLWNoLXVhLW1vYmlsZSc6ICc/MCcsXG4gICdzZWMtY2gtdWEtcGxhdGZvcm0nOiAnXCJXaW5kb3dzXCInLFxuICAnc2VjLWZldGNoLWRlc3QnOiAnZW1wdHknLFxuICAnc2VjLWZldGNoLW1vZGUnOiAnY29ycycsXG4gICdzZWMtZmV0Y2gtc2l0ZSc6ICdzYW1lLW9yaWdpbicsXG59O1xuXG4vKipcbiAqIOS7jiBTZXQtQ29va2llIOWTjeW6lOWktOS4reaPkOWPliBhd2FtYWlsX3Nlc3Npb24g5YC8XG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RTZXNzaW9uQ29va2llKHJlc3BvbnNlOiBSZXNwb25zZSk6IHN0cmluZyB7XG4gIGNvbnN0IHNldENvb2tpZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdzZXQtY29va2llJykgfHwgJyc7XG4gIGNvbnN0IG1hdGNoID0gc2V0Q29va2llLm1hdGNoKC9hd2FtYWlsX3Nlc3Npb249KFteO10rKS8pO1xuICByZXR1cm4gbWF0Y2ggPyBgYXdhbWFpbF9zZXNzaW9uPSR7bWF0Y2hbMV19YCA6ICcnO1xufVxuXG4vKipcbiAqIOWIm+W7uuS4tOaXtumCrueusVxuICogQVBJOiBQT1NUIC93ZWxjb21lL2NoYW5nZV9tYWlsYm94ICjnqbogYm9keSlcbiAqIOi/lOWbnjogeyBzdWNjZXNzLCBkYXRhOiB7IGVtYWlsX2FkZHJlc3MsIGV4cGlyZWRfYXQsIGNyZWF0ZWRfYXQsIC4uLiB9IH1cbiAqIOmcgOimgeS/neWtmOWTjeW6lOS4reeahCBTZXQtQ29va2llIChhd2FtYWlsX3Nlc3Npb24pIOeUqOS6juWQjue7reiOt+WPlumCruS7tlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbCgpOiBQcm9taXNlPEVtYWlsSW5mbz4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9jaGFuZ2VfbWFpbGJveGAsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAuLi5ERUZBVUxUX0hFQURFUlMsXG4gICAgICAnQ29udGVudC1MZW5ndGgnOiAnMCcsXG4gICAgfSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIC8vIOaPkOWPliBzZXNzaW9uIGNvb2tpZVxuICBjb25zdCBzZXNzaW9uQ29va2llID0gZXh0cmFjdFNlc3Npb25Db29raWUocmVzcG9uc2UpO1xuICBpZiAoIXNlc3Npb25Db29raWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBleHRyYWN0IHNlc3Npb24gY29va2llJyk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gIGlmICghZGF0YS5zdWNjZXNzIHx8ICFkYXRhLmRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbCcpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjaGFubmVsOiBDSEFOTkVMLFxuICAgIGVtYWlsOiBkYXRhLmRhdGEuZW1haWxfYWRkcmVzcyxcbiAgICB0b2tlbjogc2Vzc2lvbkNvb2tpZSxcbiAgICBleHBpcmVzQXQ6IGRhdGEuZGF0YS5leHBpcmVkX2F0LFxuICAgIGNyZWF0ZWRBdDogZGF0YS5kYXRhLmNyZWF0ZWRfYXQsXG4gIH07XG59XG5cbi8qKlxuICog6I635Y+W6YKu5Lu25YiX6KGoXG4gKiBBUEk6IEdFVCAvd2VsY29tZS9nZXRfZW1haWxzXG4gKiDpnIDopoHkvKDlhaUgQ29va2llIChhd2FtYWlsX3Nlc3Npb24pIOWSjCB4LXJlcXVlc3RlZC13aXRoIOWktFxuICog6L+U5ZueOiB7IHN1Y2Nlc3MsIGRhdGE6IHsgZW1haWxzOiBbLi4uXSwgbGF0ZXN0OiB7Li4ufSB9IH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyh0b2tlbjogc3RyaW5nLCBlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2dldF9lbWFpbHNgLCB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAuLi5ERUZBVUxUX0hFQURFUlMsXG4gICAgICAnQ29va2llJzogdG9rZW4sXG4gICAgICAneC1yZXF1ZXN0ZWQtd2l0aCc6ICdYTUxIdHRwUmVxdWVzdCcsXG4gICAgfSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBlbWFpbHM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICBpZiAoIWRhdGEuc3VjY2VzcyB8fCAhZGF0YS5kYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IGVtYWlscycpO1xuICB9XG5cbiAgY29uc3QgcmF3RW1haWxzID0gZGF0YS5kYXRhLmVtYWlscyB8fCBbXTtcbiAgcmV0dXJuIHJhd0VtYWlscy5tYXAoKHJhdzogYW55KSA9PiBub3JtYWxpemVFbWFpbChyYXcsIGVtYWlsKSk7XG59XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdhbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlcnMvYXdhbWFpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNDQSxzQ0FnQ0M7QUFRRCw4QkFzQkM7QUFuR0QsNENBQThDO0FBRTlDLE1BQU0sT0FBTyxHQUFZLFNBQVMsQ0FBQztBQUNuQyxNQUFNLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztBQUUvQyxNQUFNLGVBQWUsR0FBMkI7SUFDOUMsWUFBWSxFQUFFLCtIQUErSDtJQUM3SSxRQUFRLEVBQUUsZ0RBQWdEO0lBQzFELGlCQUFpQixFQUFFLGlEQUFpRDtJQUNwRSxlQUFlLEVBQUUsVUFBVTtJQUMzQixLQUFLLEVBQUUsR0FBRztJQUNWLFFBQVEsRUFBRSxxQkFBcUI7SUFDL0IsUUFBUSxFQUFFLFVBQVU7SUFDcEIsU0FBUyxFQUFFLDhCQUE4QjtJQUN6QyxXQUFXLEVBQUUsbUVBQW1FO0lBQ2hGLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVztJQUNqQyxnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLGdCQUFnQixFQUFFLE1BQU07SUFDeEIsZ0JBQWdCLEVBQUUsYUFBYTtDQUNoQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFTLG9CQUFvQixDQUFDLFFBQWtCO0lBQzlDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDekQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3BELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxhQUFhO0lBQ2pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxpQkFBaUIsRUFBRTtRQUN6RCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRTtZQUNQLEdBQUcsZUFBZTtZQUNsQixnQkFBZ0IsRUFBRSxHQUFHO1NBQ3RCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7UUFDOUIsS0FBSyxFQUFFLGFBQWE7UUFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtRQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO0tBQ2hDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQzFELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsUUFBUSxhQUFhLEVBQUU7UUFDckQsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUU7WUFDUCxHQUFHLGVBQWU7WUFDbEIsUUFBUSxFQUFFLEtBQUs7WUFDZixrQkFBa0IsRUFBRSxnQkFBZ0I7U0FDckM7S0FDRixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN6QyxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLElBQUEsMEJBQWMsRUFBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW50ZXJuYWxFbWFpbEluZm8sIEVtYWlsLCBDaGFubmVsIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplRW1haWwgfSBmcm9tICcuLi9ub3JtYWxpemUnO1xuXG5jb25zdCBDSEFOTkVMOiBDaGFubmVsID0gJ2F3YW1haWwnO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9hd2FtYWlsLmNvbS93ZWxjb21lJztcblxuY29uc3QgREVGQVVMVF9IRUFERVJTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTQ0LjAuMC4wIFNhZmFyaS81MzcuMzYgRWRnLzE0NC4wLjAuMCcsXG4gICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0LCAqLyo7IHE9MC4wMScsXG4gICdhY2NlcHQtbGFuZ3VhZ2UnOiAnemgtQ04semg7cT0wLjksZW47cT0wLjgsZW4tR0I7cT0wLjcsZW4tVVM7cT0wLjYnLFxuICAnY2FjaGUtY29udHJvbCc6ICduby1jYWNoZScsXG4gICdkbnQnOiAnMScsXG4gICdvcmlnaW4nOiAnaHR0cHM6Ly9hd2FtYWlsLmNvbScsXG4gICdwcmFnbWEnOiAnbm8tY2FjaGUnLFxuICAncmVmZXJlcic6ICdodHRwczovL2F3YW1haWwuY29tLz9sYW5nPXpoJyxcbiAgJ3NlYy1jaC11YSc6ICdcIk5vdChBOkJyYW5kXCI7dj1cIjhcIiwgXCJDaHJvbWl1bVwiO3Y9XCIxNDRcIiwgXCJNaWNyb3NvZnQgRWRnZVwiO3Y9XCIxNDRcIicsXG4gICdzZWMtY2gtdWEtbW9iaWxlJzogJz8wJyxcbiAgJ3NlYy1jaC11YS1wbGF0Zm9ybSc6ICdcIldpbmRvd3NcIicsXG4gICdzZWMtZmV0Y2gtZGVzdCc6ICdlbXB0eScsXG4gICdzZWMtZmV0Y2gtbW9kZSc6ICdjb3JzJyxcbiAgJ3NlYy1mZXRjaC1zaXRlJzogJ3NhbWUtb3JpZ2luJyxcbn07XG5cbi8qKlxuICog5LuOIFNldC1Db29raWUg5ZON5bqU5aS05Lit5o+Q5Y+WIGF3YW1haWxfc2Vzc2lvbiDlgLxcbiAqL1xuZnVuY3Rpb24gZXh0cmFjdFNlc3Npb25Db29raWUocmVzcG9uc2U6IFJlc3BvbnNlKTogc3RyaW5nIHtcbiAgY29uc3Qgc2V0Q29va2llID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ3NldC1jb29raWUnKSB8fCAnJztcbiAgY29uc3QgbWF0Y2ggPSBzZXRDb29raWUubWF0Y2goL2F3YW1haWxfc2Vzc2lvbj0oW147XSspLyk7XG4gIHJldHVybiBtYXRjaCA/IGBhd2FtYWlsX3Nlc3Npb249JHttYXRjaFsxXX1gIDogJyc7XG59XG5cbi8qKlxuICog5Yib5bu65Li05pe26YKu566xXG4gKiBBUEk6IFBPU1QgL3dlbGNvbWUvY2hhbmdlX21haWxib3ggKOepuiBib2R5KVxuICog6L+U5ZueOiB7IHN1Y2Nlc3MsIGRhdGE6IHsgZW1haWxfYWRkcmVzcywgZXhwaXJlZF9hdCwgY3JlYXRlZF9hdCwgLi4uIH0gfVxuICog6ZyA6KaB5L+d5a2Y5ZON5bqU5Lit55qEIFNldC1Db29raWUgKGF3YW1haWxfc2Vzc2lvbikg55So5LqO5ZCO57ut6I635Y+W6YKu5Lu2XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKCk6IFByb21pc2U8SW50ZXJuYWxFbWFpbEluZm8+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vY2hhbmdlX21haWxib3hgLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczoge1xuICAgICAgLi4uREVGQVVMVF9IRUFERVJTLFxuICAgICAgJ0NvbnRlbnQtTGVuZ3RoJzogJzAnLFxuICAgIH0sXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICAvLyDmj5Dlj5Ygc2Vzc2lvbiBjb29raWVcbiAgY29uc3Qgc2Vzc2lvbkNvb2tpZSA9IGV4dHJhY3RTZXNzaW9uQ29va2llKHJlc3BvbnNlKTtcbiAgaWYgKCFzZXNzaW9uQ29va2llKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZXh0cmFjdCBzZXNzaW9uIGNvb2tpZScpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICBpZiAoIWRhdGEuc3VjY2VzcyB8fCAhZGF0YS5kYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWwnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogQ0hBTk5FTCxcbiAgICBlbWFpbDogZGF0YS5kYXRhLmVtYWlsX2FkZHJlc3MsXG4gICAgdG9rZW46IHNlc3Npb25Db29raWUsXG4gICAgZXhwaXJlc0F0OiBkYXRhLmRhdGEuZXhwaXJlZF9hdCxcbiAgICBjcmVhdGVkQXQ6IGRhdGEuZGF0YS5jcmVhdGVkX2F0LFxuICB9O1xufVxuXG4vKipcbiAqIOiOt+WPlumCruS7tuWIl+ihqFxuICogQVBJOiBHRVQgL3dlbGNvbWUvZ2V0X2VtYWlsc1xuICog6ZyA6KaB5Lyg5YWlIENvb2tpZSAoYXdhbWFpbF9zZXNzaW9uKSDlkowgeC1yZXF1ZXN0ZWQtd2l0aCDlpLRcbiAqIOi/lOWbnjogeyBzdWNjZXNzLCBkYXRhOiB7IGVtYWlsczogWy4uLl0sIGxhdGVzdDogey4uLn0gfSB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFbWFpbHModG9rZW46IHN0cmluZywgZW1haWw6IHN0cmluZyk6IFByb21pc2U8RW1haWxbXT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9nZXRfZW1haWxzYCwge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVyczoge1xuICAgICAgLi4uREVGQVVMVF9IRUFERVJTLFxuICAgICAgJ0Nvb2tpZSc6IHRva2VuLFxuICAgICAgJ3gtcmVxdWVzdGVkLXdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnLFxuICAgIH0sXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgZW1haWxzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgaWYgKCFkYXRhLnN1Y2Nlc3MgfHwgIWRhdGEuZGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdldCBlbWFpbHMnKTtcbiAgfVxuXG4gIGNvbnN0IHJhd0VtYWlscyA9IGRhdGEuZGF0YS5lbWFpbHMgfHwgW107XG4gIHJldHVybiByYXdFbWFpbHMubWFwKChyYXc6IGFueSkgPT4gbm9ybWFsaXplRW1haWwocmF3LCBlbWFpbCkpO1xufVxuIl19
@@ -1,3 +1,3 @@
1
- import { EmailInfo, Email } from '../types';
2
- export declare function generateEmail(): Promise<EmailInfo>;
1
+ import { InternalEmailInfo, Email } from '../types';
2
+ export declare function generateEmail(): Promise<InternalEmailInfo>;
3
3
  export declare function getEmails(email: string): Promise<Email[]>;
@@ -48,4 +48,4 @@ async function getEmails(email) {
48
48
  const rawEmails = data.data?.emails || [];
49
49
  return rawEmails.map((raw) => (0, normalize_1.normalizeEmail)(raw, email));
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdGdwdC1vcmctdWsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL2NoYXRncHQtb3JnLXVrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUJBLHNDQW9CQztBQUVELDhCQW1CQztBQXpERCw0Q0FBOEM7QUFFOUMsTUFBTSxPQUFPLEdBQVksZ0JBQWdCLENBQUM7QUFDMUMsTUFBTSxRQUFRLEdBQUcsaUNBQWlDLENBQUM7QUFFbkQsTUFBTSxlQUFlLEdBQUc7SUFDdEIsWUFBWSxFQUFFLGlIQUFpSDtJQUMvSCxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLFFBQVEsRUFBRSxLQUFLO0lBQ2YsU0FBUyxFQUFFLDhCQUE4QjtJQUN6QyxXQUFXLEVBQUUsb0VBQW9FO0lBQ2pGLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVztJQUNqQyxLQUFLLEVBQUUsR0FBRztDQUNYLENBQUM7QUFFSyxLQUFLLFVBQVUsYUFBYTtJQUNqQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsaUJBQWlCLEVBQUU7UUFDekQsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7S0FDdkIsQ0FBQztBQUNKLENBQUM7QUFFTSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQWE7SUFDM0MsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLGlCQUFpQixZQUFZLEVBQUUsRUFBRTtRQUN2RSxNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRSxlQUFlO0tBQ3pCLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDMUMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAnY2hhdGdwdC1vcmctdWsnO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9tYWlsLmNoYXRncHQub3JnLnVrL2FwaSc7XG5cbmNvbnN0IERFRkFVTFRfSEVBREVSUyA9IHtcbiAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzE0My4wLjAuMCBTYWZhcmkvNTM3LjM2JyxcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgJ0FjY2VwdCc6ICcqLyonLFxuICAnUmVmZXJlcic6ICdodHRwczovL21haWwuY2hhdGdwdC5vcmcudWsvJyxcbiAgJ3NlYy1jaC11YSc6ICdcIk1pY3Jvc29mdCBFZGdlXCI7dj1cIjE0M1wiLCBcIkNocm9taXVtXCI7dj1cIjE0M1wiLCBcIk5vdCBBKEJyYW5kXCI7dj1cIjI0XCInLFxuICAnc2VjLWNoLXVhLW1vYmlsZSc6ICc/MCcsXG4gICdzZWMtY2gtdWEtcGxhdGZvcm0nOiAnXCJXaW5kb3dzXCInLFxuICAnRE5UJzogJzEnLFxufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRW1haWwoKTogUHJvbWlzZTxFbWFpbEluZm8+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vZ2VuZXJhdGUtZW1haWxgLCB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzOiBERUZBVUxUX0hFQURFUlMsXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICBcbiAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBnZW5lcmF0ZSBlbWFpbCcpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjaGFubmVsOiBDSEFOTkVMLFxuICAgIGVtYWlsOiBkYXRhLmRhdGEuZW1haWwsXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFbWFpbHMoZW1haWw6IHN0cmluZyk6IFByb21pc2U8RW1haWxbXT4ge1xuICBjb25zdCBlbmNvZGVkRW1haWwgPSBlbmNvZGVVUklDb21wb25lbnQoZW1haWwpO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9lbWFpbHM/ZW1haWw9JHtlbmNvZGVkRW1haWx9YCwge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2V0IGVtYWlsczogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICBcbiAgaWYgKCFkYXRhLnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBnZXQgZW1haWxzJyk7XG4gIH1cblxuICBjb25zdCByYXdFbWFpbHMgPSBkYXRhLmRhdGE/LmVtYWlscyB8fCBbXTtcbiAgcmV0dXJuIHJhd0VtYWlscy5tYXAoKHJhdzogYW55KSA9PiBub3JtYWxpemVFbWFpbChyYXcsIGVtYWlsKSk7XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdGdwdC1vcmctdWsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL2NoYXRncHQtb3JnLXVrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUJBLHNDQW9CQztBQUVELDhCQW1CQztBQXpERCw0Q0FBOEM7QUFFOUMsTUFBTSxPQUFPLEdBQVksZ0JBQWdCLENBQUM7QUFDMUMsTUFBTSxRQUFRLEdBQUcsaUNBQWlDLENBQUM7QUFFbkQsTUFBTSxlQUFlLEdBQUc7SUFDdEIsWUFBWSxFQUFFLGlIQUFpSDtJQUMvSCxjQUFjLEVBQUUsa0JBQWtCO0lBQ2xDLFFBQVEsRUFBRSxLQUFLO0lBQ2YsU0FBUyxFQUFFLDhCQUE4QjtJQUN6QyxXQUFXLEVBQUUsb0VBQW9FO0lBQ2pGLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsb0JBQW9CLEVBQUUsV0FBVztJQUNqQyxLQUFLLEVBQUUsR0FBRztDQUNYLENBQUM7QUFFSyxLQUFLLFVBQVUsYUFBYTtJQUNqQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLFFBQVEsaUJBQWlCLEVBQUU7UUFDekQsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7S0FDdkIsQ0FBQztBQUNKLENBQUM7QUFFTSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQWE7SUFDM0MsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxRQUFRLGlCQUFpQixZQUFZLEVBQUUsRUFBRTtRQUN2RSxNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRSxlQUFlO0tBQ3pCLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDMUMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFBLDBCQUFjLEVBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRW1haWxJbmZvLCBFbWFpbCwgQ2hhbm5lbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi4vbm9ybWFsaXplJztcblxuY29uc3QgQ0hBTk5FTDogQ2hhbm5lbCA9ICdjaGF0Z3B0LW9yZy11ayc7XG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL21haWwuY2hhdGdwdC5vcmcudWsvYXBpJztcblxuY29uc3QgREVGQVVMVF9IRUFERVJTID0ge1xuICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTQzLjAuMC4wIFNhZmFyaS81MzcuMzYnLFxuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAnQWNjZXB0JzogJyovKicsXG4gICdSZWZlcmVyJzogJ2h0dHBzOi8vbWFpbC5jaGF0Z3B0Lm9yZy51ay8nLFxuICAnc2VjLWNoLXVhJzogJ1wiTWljcm9zb2Z0IEVkZ2VcIjt2PVwiMTQzXCIsIFwiQ2hyb21pdW1cIjt2PVwiMTQzXCIsIFwiTm90IEEoQnJhbmRcIjt2PVwiMjRcIicsXG4gICdzZWMtY2gtdWEtbW9iaWxlJzogJz8wJyxcbiAgJ3NlYy1jaC11YS1wbGF0Zm9ybSc6ICdcIldpbmRvd3NcIicsXG4gICdETlQnOiAnMScsXG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbCgpOiBQcm9taXNlPEludGVybmFsRW1haWxJbmZvPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7QkFTRV9VUkx9L2dlbmVyYXRlLWVtYWlsYCwge1xuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWw6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgXG4gIGlmICghZGF0YS5zdWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWwnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogQ0hBTk5FTCxcbiAgICBlbWFpbDogZGF0YS5kYXRhLmVtYWlsLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RW1haWxzKGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPEVtYWlsW10+IHtcbiAgY29uc3QgZW5jb2RlZEVtYWlsID0gZW5jb2RlVVJJQ29tcG9uZW50KGVtYWlsKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vZW1haWxzP2VtYWlsPSR7ZW5jb2RlZEVtYWlsfWAsIHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGdldCBlbWFpbHM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgXG4gIGlmICghZGF0YS5zdWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IGVtYWlscycpO1xuICB9XG5cbiAgY29uc3QgcmF3RW1haWxzID0gZGF0YS5kYXRhPy5lbWFpbHMgfHwgW107XG4gIHJldHVybiByYXdFbWFpbHMubWFwKChyYXc6IGFueSkgPT4gbm9ybWFsaXplRW1haWwocmF3LCBlbWFpbCkpO1xufVxuIl19
@@ -1,10 +1,10 @@
1
- import { EmailInfo, Email } from '../types';
1
+ import { InternalEmailInfo, Email } from '../types';
2
2
  /**
3
3
  * 创建临时邮箱
4
4
  * GraphQL mutation: introduceSession
5
5
  * 返回 session ID (存入 token) 和邮箱地址
6
6
  */
7
- export declare function generateEmail(): Promise<EmailInfo>;
7
+ export declare function generateEmail(): Promise<InternalEmailInfo>;
8
8
  /**
9
9
  * 获取邮件列表
10
10
  * GraphQL query: session(id) { mails {...} }
@@ -83,4 +83,4 @@ async function getEmails(token, email) {
83
83
  const mails = data?.session?.mails || [];
84
84
  return mails.map((mail) => (0, normalize_1.normalizeEmail)(flattenMessage(mail, email), email));
85
85
  }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcG1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL2Ryb3BtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBdURBLHNDQWNDO0FBdUJELDhCQUtDO0FBaEdELDRDQUE4QztBQUU5QyxNQUFNLE9BQU8sR0FBWSxVQUFVLENBQUM7QUFDcEMsTUFBTSxRQUFRLEdBQUcsMENBQTBDLENBQUM7QUFFNUQsTUFBTSxlQUFlLEdBQTJCO0lBQzlDLGNBQWMsRUFBRSxtQ0FBbUM7Q0FDcEQsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcscUVBQXFFLENBQUM7QUFFbkcsTUFBTSxlQUFlLEdBQUc7Ozs7Ozs7RUFPdEIsQ0FBQztBQUVIOztHQUVHO0FBQ0gsS0FBSyxVQUFVLGNBQWMsQ0FBQyxLQUFhLEVBQUUsU0FBK0I7SUFDMUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUNyQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQixJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDckMsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsZUFBZTtRQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtLQUN4QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsYUFBYTtJQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhELE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxnQkFBZ0IsQ0FBQztJQUN2QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPO1FBQ25DLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRTtRQUNqQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7S0FDN0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsY0FBYyxDQUFDLElBQVMsRUFBRSxjQUFzQjtJQUN2RCxPQUFPO1FBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRTtRQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFO1FBQ3pCLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLGNBQWM7UUFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRTtRQUNqQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDckIsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRTtRQUNsQyxXQUFXLEVBQUUsRUFBRTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQzFELE1BQU0sSUFBSSxHQUFHLE1BQU0sY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRWxFLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUEsMEJBQWMsRUFBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVtYWlsSW5mbywgRW1haWwsIENoYW5uZWwgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBub3JtYWxpemVFbWFpbCB9IGZyb20gJy4uL25vcm1hbGl6ZSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAnZHJvcG1haWwnO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9kcm9wbWFpbC5tZS9hcGkvZ3JhcGhxbC9NWV9UT0tFTic7XG5cbmNvbnN0IERFRkFVTFRfSEVBREVSUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxufTtcblxuY29uc3QgQ1JFQVRFX1NFU1NJT05fUVVFUlkgPSAnbXV0YXRpb24ge2ludHJvZHVjZVNlc3Npb24ge2lkLCBleHBpcmVzQXQsIGFkZHJlc3Nlc3tpZCwgYWRkcmVzc319fSc7XG5cbmNvbnN0IEdFVF9NQUlMU19RVUVSWSA9IGBxdWVyeSAoJGlkOiBJRCEpIHtcbiAgc2Vzc2lvbihpZDokaWQpIHtcbiAgICBtYWlscyB7XG4gICAgICBpZCwgcmF3U2l6ZSwgZnJvbUFkZHIsIHRvQWRkciwgcmVjZWl2ZWRBdCxcbiAgICAgIHRleHQsIGhlYWRlckZyb20sIGhlYWRlclN1YmplY3QsIGh0bWxcbiAgICB9XG4gIH1cbn1gO1xuXG4vKipcbiAqIOaJp+ihjCBHcmFwaFFMIOivt+axglxuICovXG5hc3luYyBmdW5jdGlvbiBncmFwaHFsUmVxdWVzdChxdWVyeTogc3RyaW5nLCB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUHJvbWlzZTxhbnk+IHtcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICBwYXJhbXMuc2V0KCdxdWVyeScsIHF1ZXJ5KTtcbiAgaWYgKHZhcmlhYmxlcykge1xuICAgIHBhcmFtcy5zZXQoJ3ZhcmlhYmxlcycsIEpTT04uc3RyaW5naWZ5KHZhcmlhYmxlcykpO1xuICB9XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChCQVNFX1VSTCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IERFRkFVTFRfSEVBREVSUyxcbiAgICBib2R5OiBwYXJhbXMudG9TdHJpbmcoKSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gIGlmIChkYXRhLmVycm9ycykge1xuICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCBlcnJvcjogJHtkYXRhLmVycm9yc1swXT8ubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcid9YCk7XG4gIH1cblxuICByZXR1cm4gZGF0YS5kYXRhO1xufVxuXG4vKipcbiAqIOWIm+W7uuS4tOaXtumCrueusVxuICogR3JhcGhRTCBtdXRhdGlvbjogaW50cm9kdWNlU2Vzc2lvblxuICog6L+U5ZueIHNlc3Npb24gSUQgKOWtmOWFpSB0b2tlbikg5ZKM6YKu566x5Zyw5Z2AXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKCk6IFByb21pc2U8RW1haWxJbmZvPiB7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBncmFwaHFsUmVxdWVzdChDUkVBVEVfU0VTU0lPTl9RVUVSWSk7XG5cbiAgY29uc3Qgc2Vzc2lvbiA9IGRhdGE/LmludHJvZHVjZVNlc3Npb247XG4gIGlmICghc2Vzc2lvbiB8fCAhc2Vzc2lvbi5hZGRyZXNzZXMgfHwgc2Vzc2lvbi5hZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2VuZXJhdGUgZW1haWwnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hhbm5lbDogQ0hBTk5FTCxcbiAgICBlbWFpbDogc2Vzc2lvbi5hZGRyZXNzZXNbMF0uYWRkcmVzcyxcbiAgICB0b2tlbjogc2Vzc2lvbi5pZCxcbiAgICBleHBpcmVzQXQ6IHNlc3Npb24uZXhwaXJlc0F0LFxuICB9O1xufVxuXG4vKipcbiAqIOWwhiBkcm9wbWFpbCDnmoTpgq7ku7bmoLzlvI/miYHlubPljJbkuLogbm9ybWFsaXplRW1haWwg5Y+v5aSE55CG55qE5qC85byPXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5NZXNzYWdlKG1haWw6IGFueSwgcmVjaXBpZW50RW1haWw6IHN0cmluZyk6IGFueSB7XG4gIHJldHVybiB7XG4gICAgaWQ6IG1haWwuaWQgfHwgJycsXG4gICAgZnJvbTogbWFpbC5mcm9tQWRkciB8fCAnJyxcbiAgICB0bzogbWFpbC50b0FkZHIgfHwgcmVjaXBpZW50RW1haWwsXG4gICAgc3ViamVjdDogbWFpbC5oZWFkZXJTdWJqZWN0IHx8ICcnLFxuICAgIHRleHQ6IG1haWwudGV4dCB8fCAnJyxcbiAgICBodG1sOiBtYWlsLmh0bWwgfHwgJycsXG4gICAgcmVjZWl2ZWRfYXQ6IG1haWwucmVjZWl2ZWRBdCB8fCAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH07XG59XG5cbi8qKlxuICog6I635Y+W6YKu5Lu25YiX6KGoXG4gKiBHcmFwaFFMIHF1ZXJ5OiBzZXNzaW9uKGlkKSB7IG1haWxzIHsuLi59IH1cbiAqIHRva2VuIOS4reWtmOWCqOeahOaYryBzZXNzaW9uIElEXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFbWFpbHModG9rZW46IHN0cmluZywgZW1haWw6IHN0cmluZyk6IFByb21pc2U8RW1haWxbXT4ge1xuICBjb25zdCBkYXRhID0gYXdhaXQgZ3JhcGhxbFJlcXVlc3QoR0VUX01BSUxTX1FVRVJZLCB7IGlkOiB0b2tlbiB9KTtcblxuICBjb25zdCBtYWlscyA9IGRhdGE/LnNlc3Npb24/Lm1haWxzIHx8IFtdO1xuICByZXR1cm4gbWFpbHMubWFwKChtYWlsOiBhbnkpID0+IG5vcm1hbGl6ZUVtYWlsKGZsYXR0ZW5NZXNzYWdlKG1haWwsIGVtYWlsKSwgZW1haWwpKTtcbn1cbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcG1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL2Ryb3BtYWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBdURBLHNDQWNDO0FBdUJELDhCQUtDO0FBaEdELDRDQUE4QztBQUU5QyxNQUFNLE9BQU8sR0FBWSxVQUFVLENBQUM7QUFDcEMsTUFBTSxRQUFRLEdBQUcsMENBQTBDLENBQUM7QUFFNUQsTUFBTSxlQUFlLEdBQTJCO0lBQzlDLGNBQWMsRUFBRSxtQ0FBbUM7Q0FDcEQsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcscUVBQXFFLENBQUM7QUFFbkcsTUFBTSxlQUFlLEdBQUc7Ozs7Ozs7RUFPdEIsQ0FBQztBQUVIOztHQUVHO0FBQ0gsS0FBSyxVQUFVLGNBQWMsQ0FBQyxLQUFhLEVBQUUsU0FBK0I7SUFDMUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUNyQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQixJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxRQUFRLEVBQUU7UUFDckMsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsZUFBZTtRQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtLQUN4QixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsYUFBYTtJQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhELE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxnQkFBZ0IsQ0FBQztJQUN2QyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTztRQUNoQixLQUFLLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPO1FBQ25DLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRTtRQUNqQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7S0FDN0IsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsY0FBYyxDQUFDLElBQVMsRUFBRSxjQUFzQjtJQUN2RCxPQUFPO1FBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRTtRQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFO1FBQ3pCLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLGNBQWM7UUFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRTtRQUNqQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDckIsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRTtRQUNsQyxXQUFXLEVBQUUsRUFBRTtLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQzFELE1BQU0sSUFBSSxHQUFHLE1BQU0sY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRWxFLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUEsMEJBQWMsRUFBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRW1haWxJbmZvLCBFbWFpbCwgQ2hhbm5lbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi4vbm9ybWFsaXplJztcblxuY29uc3QgQ0hBTk5FTDogQ2hhbm5lbCA9ICdkcm9wbWFpbCc7XG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL2Ryb3BtYWlsLm1lL2FwaS9ncmFwaHFsL01ZX1RPS0VOJztcblxuY29uc3QgREVGQVVMVF9IRUFERVJTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG59O1xuXG5jb25zdCBDUkVBVEVfU0VTU0lPTl9RVUVSWSA9ICdtdXRhdGlvbiB7aW50cm9kdWNlU2Vzc2lvbiB7aWQsIGV4cGlyZXNBdCwgYWRkcmVzc2Vze2lkLCBhZGRyZXNzfX19JztcblxuY29uc3QgR0VUX01BSUxTX1FVRVJZID0gYHF1ZXJ5ICgkaWQ6IElEISkge1xuICBzZXNzaW9uKGlkOiRpZCkge1xuICAgIG1haWxzIHtcbiAgICAgIGlkLCByYXdTaXplLCBmcm9tQWRkciwgdG9BZGRyLCByZWNlaXZlZEF0LFxuICAgICAgdGV4dCwgaGVhZGVyRnJvbSwgaGVhZGVyU3ViamVjdCwgaHRtbFxuICAgIH1cbiAgfVxufWA7XG5cbi8qKlxuICog5omn6KGMIEdyYXBoUUwg6K+35rGCXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdyYXBocWxSZXF1ZXN0KHF1ZXJ5OiBzdHJpbmcsIHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPGFueT4ge1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gIHBhcmFtcy5zZXQoJ3F1ZXJ5JywgcXVlcnkpO1xuICBpZiAodmFyaWFibGVzKSB7XG4gICAgcGFyYW1zLnNldCgndmFyaWFibGVzJywgSlNPTi5zdHJpbmdpZnkodmFyaWFibGVzKSk7XG4gIH1cblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKEJBU0VfVVJMLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogREVGQVVMVF9IRUFERVJTLFxuICAgIGJvZHk6IHBhcmFtcy50b1N0cmluZygpLFxuICB9KTtcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIHJlcXVlc3QgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgaWYgKGRhdGEuZXJyb3JzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIGVycm9yOiAke2RhdGEuZXJyb3JzWzBdPy5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJ31gKTtcbiAgfVxuXG4gIHJldHVybiBkYXRhLmRhdGE7XG59XG5cbi8qKlxuICog5Yib5bu65Li05pe26YKu566xXG4gKiBHcmFwaFFMIG11dGF0aW9uOiBpbnRyb2R1Y2VTZXNzaW9uXG4gKiDov5Tlm54gc2Vzc2lvbiBJRCAo5a2Y5YWlIHRva2VuKSDlkozpgq7nrrHlnLDlnYBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRW1haWwoKTogUHJvbWlzZTxJbnRlcm5hbEVtYWlsSW5mbz4ge1xuICBjb25zdCBkYXRhID0gYXdhaXQgZ3JhcGhxbFJlcXVlc3QoQ1JFQVRFX1NFU1NJT05fUVVFUlkpO1xuXG4gIGNvbnN0IHNlc3Npb24gPSBkYXRhPy5pbnRyb2R1Y2VTZXNzaW9uO1xuICBpZiAoIXNlc3Npb24gfHwgIXNlc3Npb24uYWRkcmVzc2VzIHx8IHNlc3Npb24uYWRkcmVzc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIGVtYWlsJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IHNlc3Npb24uYWRkcmVzc2VzWzBdLmFkZHJlc3MsXG4gICAgdG9rZW46IHNlc3Npb24uaWQsXG4gICAgZXhwaXJlc0F0OiBzZXNzaW9uLmV4cGlyZXNBdCxcbiAgfTtcbn1cblxuLyoqXG4gKiDlsIYgZHJvcG1haWwg55qE6YKu5Lu25qC85byP5omB5bmz5YyW5Li6IG5vcm1hbGl6ZUVtYWlsIOWPr+WkhOeQhueahOagvOW8j1xuICovXG5mdW5jdGlvbiBmbGF0dGVuTWVzc2FnZShtYWlsOiBhbnksIHJlY2lwaWVudEVtYWlsOiBzdHJpbmcpOiBhbnkge1xuICByZXR1cm4ge1xuICAgIGlkOiBtYWlsLmlkIHx8ICcnLFxuICAgIGZyb206IG1haWwuZnJvbUFkZHIgfHwgJycsXG4gICAgdG86IG1haWwudG9BZGRyIHx8IHJlY2lwaWVudEVtYWlsLFxuICAgIHN1YmplY3Q6IG1haWwuaGVhZGVyU3ViamVjdCB8fCAnJyxcbiAgICB0ZXh0OiBtYWlsLnRleHQgfHwgJycsXG4gICAgaHRtbDogbWFpbC5odG1sIHx8ICcnLFxuICAgIHJlY2VpdmVkX2F0OiBtYWlsLnJlY2VpdmVkQXQgfHwgJycsXG4gICAgYXR0YWNobWVudHM6IFtdLFxuICB9O1xufVxuXG4vKipcbiAqIOiOt+WPlumCruS7tuWIl+ihqFxuICogR3JhcGhRTCBxdWVyeTogc2Vzc2lvbihpZCkgeyBtYWlscyB7Li4ufSB9XG4gKiB0b2tlbiDkuK3lrZjlgqjnmoTmmK8gc2Vzc2lvbiBJRFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RW1haWxzKHRva2VuOiBzdHJpbmcsIGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPEVtYWlsW10+IHtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGdyYXBocWxSZXF1ZXN0KEdFVF9NQUlMU19RVUVSWSwgeyBpZDogdG9rZW4gfSk7XG5cbiAgY29uc3QgbWFpbHMgPSBkYXRhPy5zZXNzaW9uPy5tYWlscyB8fCBbXTtcbiAgcmV0dXJuIG1haWxzLm1hcCgobWFpbDogYW55KSA9PiBub3JtYWxpemVFbWFpbChmbGF0dGVuTWVzc2FnZShtYWlsLCBlbWFpbCksIGVtYWlsKSk7XG59XG4iXX0=