tempmail-sdk 1.2.0 → 1.2.2-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +48 -2
- package/dist/normalize.js +5 -3
- package/dist/providers/10mail-wangtz.d.ts +3 -0
- package/dist/providers/10mail-wangtz.js +117 -0
- package/dist/providers/10minute-one.d.ts +3 -0
- package/dist/providers/10minute-one.js +264 -0
- package/dist/providers/moakt.d.ts +3 -0
- package/dist/providers/moakt.js +214 -0
- package/dist/providers/ta-easy.d.ts +5 -0
- package/dist/providers/ta-easy.js +55 -0
- package/dist/providers/tempmailg.d.ts +7 -0
- package/dist/providers/tempmailg.js +202 -0
- package/dist/providers/tmpmails.d.ts +3 -0
- package/dist/providers/tmpmails.js +169 -0
- package/dist/retry.d.ts +5 -1
- package/dist/retry.js +25 -3
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/package.json +2 -2
- package/src/index.ts +43 -2
- package/src/normalize.ts +4 -2
- package/src/providers/10mail-wangtz.ts +128 -0
- package/src/providers/10minute-one.ts +258 -0
- package/src/providers/moakt.ts +215 -0
- package/src/providers/ta-easy.ts +56 -0
- package/src/providers/tempmailg.ts +208 -0
- package/src/providers/tmpmails.ts +168 -0
- package/src/retry.ts +36 -1
- package/src/types.ts +1 -1
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateEmail = generateEmail;
|
|
4
|
+
exports.getEmails = getEmails;
|
|
5
|
+
const normalize_1 = require("../normalize");
|
|
6
|
+
const retry_1 = require("../retry");
|
|
7
|
+
const CHANNEL = 'tempmailg';
|
|
8
|
+
const ORIGIN = 'https://tempmailg.com';
|
|
9
|
+
const TOK_PREFIX = 'tmg1:';
|
|
10
|
+
const CSRF_META_RE = /<meta\s+name="csrf-token"\s+content="([^"]+)"/i;
|
|
11
|
+
const BROWSER_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0';
|
|
12
|
+
function localeFromDomain(domain) {
|
|
13
|
+
const s = String(domain ?? '').trim();
|
|
14
|
+
if (!s || /[/?#\\]/.test(s))
|
|
15
|
+
return 'zh';
|
|
16
|
+
return s;
|
|
17
|
+
}
|
|
18
|
+
function setCookieLines(headers) {
|
|
19
|
+
const h = headers;
|
|
20
|
+
if (typeof h.getSetCookie === 'function') {
|
|
21
|
+
return h.getSetCookie();
|
|
22
|
+
}
|
|
23
|
+
const one = headers.get('set-cookie');
|
|
24
|
+
return one ? [one] : [];
|
|
25
|
+
}
|
|
26
|
+
function cookieMap(cookieHdr) {
|
|
27
|
+
const m = new Map();
|
|
28
|
+
for (const part of cookieHdr.split(';')) {
|
|
29
|
+
const p = part.trim();
|
|
30
|
+
if (!p)
|
|
31
|
+
continue;
|
|
32
|
+
const i = p.indexOf('=');
|
|
33
|
+
if (i <= 0 || i >= p.length - 1)
|
|
34
|
+
continue;
|
|
35
|
+
const k = p.slice(0, i).trim();
|
|
36
|
+
const v = p.slice(i + 1).trim();
|
|
37
|
+
if (k)
|
|
38
|
+
m.set(k, v);
|
|
39
|
+
}
|
|
40
|
+
return m;
|
|
41
|
+
}
|
|
42
|
+
function mergeCookies(prev, setCookieLinesFromResp) {
|
|
43
|
+
const m = cookieMap(prev);
|
|
44
|
+
for (const line of setCookieLinesFromResp) {
|
|
45
|
+
const nv = line.split(';')[0]?.trim();
|
|
46
|
+
if (!nv)
|
|
47
|
+
continue;
|
|
48
|
+
const i = nv.indexOf('=');
|
|
49
|
+
if (i <= 0)
|
|
50
|
+
continue;
|
|
51
|
+
const k = nv.slice(0, i).trim();
|
|
52
|
+
const v = nv.slice(i + 1).trim();
|
|
53
|
+
if (k)
|
|
54
|
+
m.set(k, v);
|
|
55
|
+
}
|
|
56
|
+
return [...m.entries()]
|
|
57
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
58
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
59
|
+
.join('; ');
|
|
60
|
+
}
|
|
61
|
+
function xsrfFromCookies(cookieHdr) {
|
|
62
|
+
const m = cookieMap(cookieHdr);
|
|
63
|
+
for (const name of ['XSRF-TOKEN', 'xsrf-token']) {
|
|
64
|
+
const v = m.get(name);
|
|
65
|
+
if (v)
|
|
66
|
+
return v;
|
|
67
|
+
}
|
|
68
|
+
for (const [k, v] of m) {
|
|
69
|
+
if (k.toLowerCase() === 'xsrf-token' && v)
|
|
70
|
+
return v;
|
|
71
|
+
}
|
|
72
|
+
return '';
|
|
73
|
+
}
|
|
74
|
+
function parseCsrf(html) {
|
|
75
|
+
const m = html.match(CSRF_META_RE);
|
|
76
|
+
const t = m?.[1]?.trim() ?? '';
|
|
77
|
+
if (!t)
|
|
78
|
+
throw new Error('tempmailg: csrf-token not found in page');
|
|
79
|
+
return t;
|
|
80
|
+
}
|
|
81
|
+
function b64EncodeJson(obj) {
|
|
82
|
+
const json = JSON.stringify(obj);
|
|
83
|
+
if (typeof Buffer !== 'undefined') {
|
|
84
|
+
return TOK_PREFIX + Buffer.from(json, 'utf8').toString('base64');
|
|
85
|
+
}
|
|
86
|
+
return TOK_PREFIX + btoa(unescape(encodeURIComponent(json)));
|
|
87
|
+
}
|
|
88
|
+
function decodeToken(tok) {
|
|
89
|
+
if (!tok.startsWith(TOK_PREFIX)) {
|
|
90
|
+
throw new Error('tempmailg: invalid session token');
|
|
91
|
+
}
|
|
92
|
+
const raw = tok.slice(TOK_PREFIX.length);
|
|
93
|
+
let json;
|
|
94
|
+
if (typeof Buffer !== 'undefined') {
|
|
95
|
+
json = Buffer.from(raw, 'base64').toString('utf8');
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
json = decodeURIComponent(escape(atob(raw)));
|
|
99
|
+
}
|
|
100
|
+
const o = JSON.parse(json);
|
|
101
|
+
if (!o.c || !o.s)
|
|
102
|
+
throw new Error('tempmailg: invalid session token');
|
|
103
|
+
return { l: o.l || 'zh', c: o.c, s: o.s };
|
|
104
|
+
}
|
|
105
|
+
function pageHeaders(referer) {
|
|
106
|
+
return {
|
|
107
|
+
'User-Agent': BROWSER_UA,
|
|
108
|
+
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
109
|
+
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
|
110
|
+
'Cache-Control': 'no-cache',
|
|
111
|
+
DNT: '1',
|
|
112
|
+
Pragma: 'no-cache',
|
|
113
|
+
Referer: referer,
|
|
114
|
+
'Upgrade-Insecure-Requests': '1',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function apiHeaders(referer, cookieHdr, xsrf) {
|
|
118
|
+
const h = {
|
|
119
|
+
'User-Agent': BROWSER_UA,
|
|
120
|
+
Accept: 'application/json, text/plain, */*',
|
|
121
|
+
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
|
122
|
+
'Content-Type': 'application/json',
|
|
123
|
+
Origin: ORIGIN,
|
|
124
|
+
Referer: referer,
|
|
125
|
+
'Cache-Control': 'no-cache',
|
|
126
|
+
Pragma: 'no-cache',
|
|
127
|
+
DNT: '1',
|
|
128
|
+
Cookie: cookieHdr,
|
|
129
|
+
};
|
|
130
|
+
if (xsrf)
|
|
131
|
+
h['X-XSRF-TOKEN'] = xsrf;
|
|
132
|
+
return h;
|
|
133
|
+
}
|
|
134
|
+
async function generateEmail(domain) {
|
|
135
|
+
const locale = localeFromDomain(domain);
|
|
136
|
+
const pageURL = `${ORIGIN}/public/${encodeURIComponent(locale)}`;
|
|
137
|
+
const res = await (0, retry_1.fetchWithTimeout)(pageURL, { headers: pageHeaders(pageURL) });
|
|
138
|
+
if (!res.ok) {
|
|
139
|
+
throw new Error(`tempmailg page: ${res.status}`);
|
|
140
|
+
}
|
|
141
|
+
const html = await res.text();
|
|
142
|
+
const csrf = parseCsrf(html);
|
|
143
|
+
let cookieHdr = mergeCookies('', setCookieLines(res.headers));
|
|
144
|
+
let xsrf = xsrfFromCookies(cookieHdr);
|
|
145
|
+
if (!xsrf) {
|
|
146
|
+
throw new Error('tempmailg: missing XSRF-TOKEN cookie');
|
|
147
|
+
}
|
|
148
|
+
const postURL = `${ORIGIN}/public/get_messages`;
|
|
149
|
+
const res2 = await (0, retry_1.fetchWithTimeout)(postURL, {
|
|
150
|
+
method: 'POST',
|
|
151
|
+
headers: apiHeaders(pageURL, cookieHdr, xsrf),
|
|
152
|
+
body: JSON.stringify({ _token: csrf }),
|
|
153
|
+
});
|
|
154
|
+
if (!res2.ok) {
|
|
155
|
+
throw new Error(`tempmailg get_messages: ${res2.status}`);
|
|
156
|
+
}
|
|
157
|
+
const wrap = (await res2.json());
|
|
158
|
+
if (!wrap.status || !wrap.mailbox) {
|
|
159
|
+
throw new Error('tempmailg: create mailbox failed');
|
|
160
|
+
}
|
|
161
|
+
cookieHdr = mergeCookies(cookieHdr, setCookieLines(res2.headers));
|
|
162
|
+
const xsrf2 = xsrfFromCookies(cookieHdr);
|
|
163
|
+
if (xsrf2)
|
|
164
|
+
xsrf = xsrf2;
|
|
165
|
+
const token = b64EncodeJson({ l: locale, c: cookieHdr, s: csrf });
|
|
166
|
+
return {
|
|
167
|
+
channel: CHANNEL,
|
|
168
|
+
email: wrap.mailbox,
|
|
169
|
+
token,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
async function getEmails(email, token) {
|
|
173
|
+
const sess = decodeToken(token);
|
|
174
|
+
const locale = sess.l || 'zh';
|
|
175
|
+
const pageURL = `${ORIGIN}/public/${encodeURIComponent(locale)}`;
|
|
176
|
+
const postURL = `${ORIGIN}/public/get_messages`;
|
|
177
|
+
const xsrf = xsrfFromCookies(sess.c);
|
|
178
|
+
const res = await (0, retry_1.fetchWithTimeout)(postURL, {
|
|
179
|
+
method: 'POST',
|
|
180
|
+
headers: apiHeaders(pageURL, sess.c, xsrf),
|
|
181
|
+
body: JSON.stringify({ _token: sess.s }),
|
|
182
|
+
});
|
|
183
|
+
if (!res.ok) {
|
|
184
|
+
throw new Error(`tempmailg get_messages: ${res.status}`);
|
|
185
|
+
}
|
|
186
|
+
const wrap = (await res.json());
|
|
187
|
+
if (!wrap.status) {
|
|
188
|
+
throw new Error('tempmailg: get_messages failed');
|
|
189
|
+
}
|
|
190
|
+
if (wrap.mailbox && wrap.mailbox.trim().toLowerCase() !== email.trim().toLowerCase()) {
|
|
191
|
+
throw new Error('tempmailg: mailbox mismatch');
|
|
192
|
+
}
|
|
193
|
+
const rawList = Array.isArray(wrap.messages) ? wrap.messages : [];
|
|
194
|
+
const out = [];
|
|
195
|
+
for (const rm of rawList) {
|
|
196
|
+
if (rm && typeof rm === 'object') {
|
|
197
|
+
out.push((0, normalize_1.normalizeEmail)(rm, email));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return out;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG1haWxnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90ZW1wbWFpbGcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3SUEsc0NBdUNDO0FBRUQsOEJBOEJDO0FBMU1ELDRDQUE4QztBQUM5QyxvQ0FBNEM7QUFFNUMsTUFBTSxPQUFPLEdBQVksV0FBVyxDQUFDO0FBQ3JDLE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUUzQixNQUFNLFlBQVksR0FBRyxnREFBZ0QsQ0FBQztBQUV0RSxNQUFNLFVBQVUsR0FDZCwrSEFBK0gsQ0FBQztBQUVsSSxTQUFTLGdCQUFnQixDQUFDLE1BQXNCO0lBQzlDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEMsSUFBSSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE9BQWdCO0lBQ3RDLE1BQU0sQ0FBQyxHQUFHLE9BQXNELENBQUM7SUFDakUsSUFBSSxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDekMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsU0FBaUI7SUFDbEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENB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QUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRSxNQUFNLEdBQUcsR0FBWSxFQUFFLENBQUM7SUFDeEIsS0FBSyxNQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6QixJQUFJLEVBQUUsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUEsMEJBQWMsRUFBQyxFQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHRlbXBtYWlsZy5jb23vvJrml6AgQ29va2llIOe9kCBHRVQgL3B1YmxpYy97bG9jYWxlfSDmi7/kvJror53vvIxQT1NUIC9wdWJsaWMvZ2V0X21lc3NhZ2VzIOW7uumCruS4juaUtuS/oeOAglxuICogVG9rZW4g5Li6IHRtZzE6ICsgYmFzZTY0KEpTT057bG9jYWxlLGNvb2tpZUhkcixjc3JmfSnjgIJcbiAqL1xuaW1wb3J0IHsgSW50ZXJuYWxFbWFpbEluZm8sIEVtYWlsLCBDaGFubmVsIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgbm9ybWFsaXplRW1haWwgfSBmcm9tICcuLi9ub3JtYWxpemUnO1xuaW1wb3J0IHsgZmV0Y2hXaXRoVGltZW91dCB9IGZyb20gJy4uL3JldHJ5JztcblxuY29uc3QgQ0hBTk5FTDogQ2hhbm5lbCA9ICd0ZW1wbWFpbGcnO1xuY29uc3QgT1JJR0lOID0gJ2h0dHBzOi8vdGVtcG1haWxnLmNvbSc7XG5jb25zdCBUT0tfUFJFRklYID0gJ3RtZzE6JztcblxuY29uc3QgQ1NSRl9NRVRBX1JFID0gLzxtZXRhXFxzK25hbWU9XCJjc3JmLXRva2VuXCJcXHMrY29udGVudD1cIihbXlwiXSspXCIvaTtcblxuY29uc3QgQlJPV1NFUl9VQSA9XG4gICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTQ2LjAuMC4wIFNhZmFyaS81MzcuMzYgRWRnLzE0Ni4wLjAuMCc7XG5cbmZ1bmN0aW9uIGxvY2FsZUZyb21Eb21haW4oZG9tYWluPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gIGNvbnN0IHMgPSBTdHJpbmcoZG9tYWluID8/ICcnKS50cmltKCk7XG4gIGlmICghcyB8fCAvWy8/I1xcXFxdLy50ZXN0KHMpKSByZXR1cm4gJ3poJztcbiAgcmV0dXJuIHM7XG59XG5cbmZ1bmN0aW9uIHNldENvb2tpZUxpbmVzKGhlYWRlcnM6IEhlYWRlcnMpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGggPSBoZWFkZXJzIGFzIEhlYWRlcnMgJiB7IGdldFNldENvb2tpZT86ICgpID0+IHN0cmluZ1tdIH07XG4gIGlmICh0eXBlb2YgaC5nZXRTZXRDb29raWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gaC5nZXRTZXRDb29raWUoKTtcbiAgfVxuICBjb25zdCBvbmUgPSBoZWFkZXJzLmdldCgnc2V0LWNvb2tpZScpO1xuICByZXR1cm4gb25lID8gW29uZV0gOiBbXTtcbn1cblxuZnVuY3Rpb24gY29va2llTWFwKGNvb2tpZUhkcjogc3RyaW5nKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IG0gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHBhcnQgb2YgY29va2llSGRyLnNwbGl0KCc7JykpIHtcbiAgICBjb25zdCBwID0gcGFydC50cmltKCk7XG4gICAgaWYgKCFwKSBjb250aW51ZTtcbiAgICBjb25zdCBpID0gcC5pbmRleE9mKCc9Jyk7XG4gICAgaWYgKGkgPD0gMCB8fCBpID49IHAubGVuZ3RoIC0gMSkgY29udGludWU7XG4gICAgY29uc3QgayA9IHAuc2xpY2UoMCwgaSkudHJpbSgpO1xuICAgIGNvbnN0IHYgPSBwLnNsaWNlKGkgKyAxKS50cmltKCk7XG4gICAgaWYgKGspIG0uc2V0KGssIHYpO1xuICB9XG4gIHJldHVybiBtO1xufVxuXG5mdW5jdGlvbiBtZXJnZUNvb2tpZXMocHJldjogc3RyaW5nLCBzZXRDb29raWVMaW5lc0Zyb21SZXNwOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IG0gPSBjb29raWVNYXAocHJldik7XG4gIGZvciAoY29uc3QgbGluZSBvZiBzZXRDb29raWVMaW5lc0Zyb21SZXNwKSB7XG4gICAgY29uc3QgbnYgPSBsaW5lLnNwbGl0KCc7JylbMF0/LnRyaW0oKTtcbiAgICBpZiAoIW52KSBjb250aW51ZTtcbiAgICBjb25zdCBpID0gbnYuaW5kZXhPZignPScpO1xuICAgIGlmIChpIDw9IDApIGNvbnRpbnVlO1xuICAgIGNvbnN0IGsgPSBudi5zbGljZSgwLCBpKS50cmltKCk7XG4gICAgY29uc3QgdiA9IG52LnNsaWNlKGkgKyAxKS50cmltKCk7XG4gICAgaWYgKGspIG0uc2V0KGssIHYpO1xuICB9XG4gIHJldHVybiBbLi4ubS5lbnRyaWVzKCldXG4gICAgLnNvcnQoKFthXSwgW2JdKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpXG4gICAgLm1hcCgoW2ssIHZdKSA9PiBgJHtrfT0ke3Z9YClcbiAgICAuam9pbignOyAnKTtcbn1cblxuZnVuY3Rpb24geHNyZkZyb21Db29raWVzKGNvb2tpZUhkcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbSA9IGNvb2tpZU1hcChjb29raWVIZHIpO1xuICBmb3IgKGNvbnN0IG5hbWUgb2YgWydYU1JGLVRPS0VOJywgJ3hzcmYtdG9rZW4nXSkge1xuICAgIGNvbnN0IHYgPSBtLmdldChuYW1lKTtcbiAgICBpZiAodikgcmV0dXJuIHY7XG4gIH1cbiAgZm9yIChjb25zdCBbaywgdl0gb2YgbSkge1xuICAgIGlmIChrLnRvTG93ZXJDYXNlKCkgPT09ICd4c3JmLXRva2VuJyAmJiB2KSByZXR1cm4gdjtcbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ3NyZihodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtID0gaHRtbC5tYXRjaChDU1JGX01FVEFfUkUpO1xuICBjb25zdCB0ID0gbT8uWzFdPy50cmltKCkgPz8gJyc7XG4gIGlmICghdCkgdGhyb3cgbmV3IEVycm9yKCd0ZW1wbWFpbGc6IGNzcmYtdG9rZW4gbm90IGZvdW5kIGluIHBhZ2UnKTtcbiAgcmV0dXJuIHQ7XG59XG5cbmZ1bmN0aW9uIGI2NEVuY29kZUpzb24ob2JqOiB7IGw6IHN0cmluZzsgYzogc3RyaW5nOyBzOiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShvYmopO1xuICBpZiAodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gVE9LX1BSRUZJWCArIEJ1ZmZlci5mcm9tKGpzb24sICd1dGY4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG4gIHJldHVybiBUT0tfUFJFRklYICsgYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoanNvbikpKTtcbn1cblxuZnVuY3Rpb24gZGVjb2RlVG9rZW4odG9rOiBzdHJpbmcpOiB7IGw6IHN0cmluZzsgYzogc3RyaW5nOyBzOiBzdHJpbmcgfSB7XG4gIGlmICghdG9rLnN0YXJ0c1dpdGgoVE9LX1BSRUZJWCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RlbXBtYWlsZzogaW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gIH1cbiAgY29uc3QgcmF3ID0gdG9rLnNsaWNlKFRPS19QUkVGSVgubGVuZ3RoKTtcbiAgbGV0IGpzb246IHN0cmluZztcbiAgaWYgKHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAganNvbiA9IEJ1ZmZlci5mcm9tKHJhdywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH0gZWxzZSB7XG4gICAganNvbiA9IGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoYXRvYihyYXcpKSk7XG4gIH1cbiAgY29uc3QgbyA9IEpTT04ucGFyc2UoanNvbikgYXMgeyBsPzogc3RyaW5nOyBjPzogc3RyaW5nOyBzPzogc3RyaW5nIH07XG4gIGlmICghby5jIHx8ICFvLnMpIHRocm93IG5ldyBFcnJvcigndGVtcG1haWxnOiBpbnZhbGlkIHNlc3Npb24gdG9rZW4nKTtcbiAgcmV0dXJuIHsgbDogby5sIHx8ICd6aCcsIGM6IG8uYywgczogby5zIH07XG59XG5cbmZ1bmN0aW9uIHBhZ2VIZWFkZXJzKHJlZmVyZXI6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4ge1xuICAgICdVc2VyLUFnZW50JzogQlJPV1NFUl9VQSxcbiAgICBBY2NlcHQ6ICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjgnLFxuICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnemgtQ04semg7cT0wLjksZW47cT0wLjgnLFxuICAgICdDYWNoZS1Db250cm9sJzogJ25vLWNhY2hlJyxcbiAgICBETlQ6ICcxJyxcbiAgICBQcmFnbWE6ICduby1jYWNoZScsXG4gICAgUmVmZXJlcjogcmVmZXJlcixcbiAgICAnVXBncmFkZS1JbnNlY3VyZS1SZXF1ZXN0cyc6ICcxJyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXBpSGVhZGVycyhyZWZlcmVyOiBzdHJpbmcsIGNvb2tpZUhkcjogc3RyaW5nLCB4c3JmOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgaDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAnVXNlci1BZ2VudCc6IEJST1dTRVJfVUEsXG4gICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJyxcbiAgICAnQWNjZXB0LUxhbmd1YWdlJzogJ3poLUNOLHpoO3E9MC45LGVuO3E9MC44JyxcbiAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgIE9yaWdpbjogT1JJR0lOLFxuICAgIFJlZmVyZXI6IHJlZmVyZXIsXG4gICAgJ0NhY2hlLUNvbnRyb2wnOiAnbm8tY2FjaGUnLFxuICAgIFByYWdtYTogJ25vLWNhY2hlJyxcbiAgICBETlQ6ICcxJyxcbiAgICBDb29raWU6IGNvb2tpZUhkcixcbiAgfTtcbiAgaWYgKHhzcmYpIGhbJ1gtWFNSRi1UT0tFTiddID0geHNyZjtcbiAgcmV0dXJuIGg7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsKGRvbWFpbj86IHN0cmluZyB8IG51bGwpOiBQcm9taXNlPEludGVybmFsRW1haWxJbmZvPiB7XG4gIGNvbnN0IGxvY2FsZSA9IGxvY2FsZUZyb21Eb21haW4oZG9tYWluKTtcbiAgY29uc3QgcGFnZVVSTCA9IGAke09SSUdJTn0vcHVibGljLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGxvY2FsZSl9YDtcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KHBhZ2VVUkwsIHsgaGVhZGVyczogcGFnZUhlYWRlcnMocGFnZVVSTCkgfSk7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0ZW1wbWFpbGcgcGFnZTogJHtyZXMuc3RhdHVzfWApO1xuICB9XG4gIGNvbnN0IGh0bWwgPSBhd2FpdCByZXMudGV4dCgpO1xuICBjb25zdCBjc3JmID0gcGFyc2VDc3JmKGh0bWwpO1xuICBsZXQgY29va2llSGRyID0gbWVyZ2VDb29raWVzKCcnLCBzZXRDb29raWVMaW5lcyhyZXMuaGVhZGVycykpO1xuICBsZXQgeHNyZiA9IHhzcmZGcm9tQ29va2llcyhjb29raWVIZHIpO1xuICBpZiAoIXhzcmYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RlbXBtYWlsZzogbWlzc2luZyBYU1JGLVRPS0VOIGNvb2tpZScpO1xuICB9XG5cbiAgY29uc3QgcG9zdFVSTCA9IGAke09SSUdJTn0vcHVibGljL2dldF9tZXNzYWdlc2A7XG4gIGNvbnN0IHJlczIgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KHBvc3RVUkwsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiBhcGlIZWFkZXJzKHBhZ2VVUkwsIGNvb2tpZUhkciwgeHNyZiksXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBfdG9rZW46IGNzcmYgfSksXG4gIH0pO1xuICBpZiAoIXJlczIub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHRlbXBtYWlsZyBnZXRfbWVzc2FnZXM6ICR7cmVzMi5zdGF0dXN9YCk7XG4gIH1cbiAgY29uc3Qgd3JhcCA9IChhd2FpdCByZXMyLmpzb24oKSkgYXMgeyBzdGF0dXM/OiBib29sZWFuOyBtYWlsYm94Pzogc3RyaW5nOyBtZXNzYWdlcz86IHVua25vd25bXSB9O1xuICBpZiAoIXdyYXAuc3RhdHVzIHx8ICF3cmFwLm1haWxib3gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RlbXBtYWlsZzogY3JlYXRlIG1haWxib3ggZmFpbGVkJyk7XG4gIH1cbiAgY29va2llSGRyID0gbWVyZ2VDb29raWVzKGNvb2tpZUhkciwgc2V0Q29va2llTGluZXMocmVzMi5oZWFkZXJzKSk7XG4gIGNvbnN0IHhzcmYyID0geHNyZkZyb21Db29raWVzKGNvb2tpZUhkcik7XG4gIGlmICh4c3JmMikgeHNyZiA9IHhzcmYyO1xuXG4gIGNvbnN0IHRva2VuID0gYjY0RW5jb2RlSnNvbih7IGw6IGxvY2FsZSwgYzogY29va2llSGRyLCBzOiBjc3JmIH0pO1xuICByZXR1cm4ge1xuICAgIGNoYW5uZWw6IENIQU5ORUwsXG4gICAgZW1haWw6IHdyYXAubWFpbGJveCxcbiAgICB0b2tlbixcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEVtYWlscyhlbWFpbDogc3RyaW5nLCB0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxFbWFpbFtdPiB7XG4gIGNvbnN0IHNlc3MgPSBkZWNvZGVUb2tlbih0b2tlbik7XG4gIGNvbnN0IGxvY2FsZSA9IHNlc3MubCB8fCAnemgnO1xuICBjb25zdCBwYWdlVVJMID0gYCR7T1JJR0lOfS9wdWJsaWMvJHtlbmNvZGVVUklDb21wb25lbnQobG9jYWxlKX1gO1xuICBjb25zdCBwb3N0VVJMID0gYCR7T1JJR0lOfS9wdWJsaWMvZ2V0X21lc3NhZ2VzYDtcbiAgY29uc3QgeHNyZiA9IHhzcmZGcm9tQ29va2llcyhzZXNzLmMpO1xuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoV2l0aFRpbWVvdXQocG9zdFVSTCwge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IGFwaUhlYWRlcnMocGFnZVVSTCwgc2Vzcy5jLCB4c3JmKSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IF90b2tlbjogc2Vzcy5zIH0pLFxuICB9KTtcbiAgaWYgKCFyZXMub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHRlbXBtYWlsZyBnZXRfbWVzc2FnZXM6ICR7cmVzLnN0YXR1c31gKTtcbiAgfVxuICBjb25zdCB3cmFwID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIHsgc3RhdHVzPzogYm9vbGVhbjsgbWFpbGJveD86IHN0cmluZzsgbWVzc2FnZXM/OiB1bmtub3duW10gfTtcbiAgaWYgKCF3cmFwLnN0YXR1cykge1xuICAgIHRocm93IG5ldyBFcnJvcigndGVtcG1haWxnOiBnZXRfbWVzc2FnZXMgZmFpbGVkJyk7XG4gIH1cbiAgaWYgKHdyYXAubWFpbGJveCAmJiB3cmFwLm1haWxib3gudHJpbSgpLnRvTG93ZXJDYXNlKCkgIT09IGVtYWlsLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0ZW1wbWFpbGc6IG1haWxib3ggbWlzbWF0Y2gnKTtcbiAgfVxuICBjb25zdCByYXdMaXN0ID0gQXJyYXkuaXNBcnJheSh3cmFwLm1lc3NhZ2VzKSA/IHdyYXAubWVzc2FnZXMgOiBbXTtcbiAgY29uc3Qgb3V0OiBFbWFpbFtdID0gW107XG4gIGZvciAoY29uc3Qgcm0gb2YgcmF3TGlzdCkge1xuICAgIGlmIChybSAmJiB0eXBlb2Ygcm0gPT09ICdvYmplY3QnKSB7XG4gICAgICBvdXQucHVzaChub3JtYWxpemVFbWFpbChybSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZW1haWwpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateEmail = generateEmail;
|
|
4
|
+
exports.getEmails = getEmails;
|
|
5
|
+
const normalize_1 = require("../normalize");
|
|
6
|
+
const retry_1 = require("../retry");
|
|
7
|
+
const CHANNEL = 'tmpmails';
|
|
8
|
+
const ORIGIN = 'https://tmpmails.com';
|
|
9
|
+
const TOKEN_SEP = '\t';
|
|
10
|
+
const EMAIL_RE = /[a-zA-Z0-9._-]+@tmpmails\.com/g;
|
|
11
|
+
const PAGE_CHUNK_RE = /\/_next\/static\/chunks\/app\/%5Blocale%5D\/page-[a-f0-9]+\.js/;
|
|
12
|
+
const INBOX_ACTION_RE = /"([0-9a-f]+)",[^,]+,void 0,[^,]+,"getInboxList"/;
|
|
13
|
+
function localeFromDomain(domain) {
|
|
14
|
+
const s = String(domain ?? '').trim();
|
|
15
|
+
return s || 'zh';
|
|
16
|
+
}
|
|
17
|
+
function setCookieLines(headers) {
|
|
18
|
+
const h = headers;
|
|
19
|
+
if (typeof h.getSetCookie === 'function') {
|
|
20
|
+
return h.getSetCookie();
|
|
21
|
+
}
|
|
22
|
+
const one = headers.get('set-cookie');
|
|
23
|
+
return one ? [one] : [];
|
|
24
|
+
}
|
|
25
|
+
function parseUserSign(headers) {
|
|
26
|
+
for (const line of setCookieLines(headers)) {
|
|
27
|
+
const m = /^user_sign=([^;]+)/i.exec(line);
|
|
28
|
+
if (m) {
|
|
29
|
+
const v = m[1].trim();
|
|
30
|
+
if (v)
|
|
31
|
+
return v;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
throw new Error('tmpmails: missing user_sign cookie');
|
|
35
|
+
}
|
|
36
|
+
function pickEmail(html) {
|
|
37
|
+
const support = 'support@tmpmails.com';
|
|
38
|
+
const counts = new Map();
|
|
39
|
+
for (const m of html.matchAll(EMAIL_RE)) {
|
|
40
|
+
const addr = m[0];
|
|
41
|
+
if (addr.toLowerCase() === support)
|
|
42
|
+
continue;
|
|
43
|
+
counts.set(addr, (counts.get(addr) ?? 0) + 1);
|
|
44
|
+
}
|
|
45
|
+
if (counts.size === 0) {
|
|
46
|
+
throw new Error('tmpmails: no inbox address in page');
|
|
47
|
+
}
|
|
48
|
+
let best = '';
|
|
49
|
+
let bestC = 0;
|
|
50
|
+
for (const [addr, c] of counts) {
|
|
51
|
+
if (c > bestC || (c === bestC && addr < best)) {
|
|
52
|
+
best = addr;
|
|
53
|
+
bestC = c;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return best;
|
|
57
|
+
}
|
|
58
|
+
async function fetchInboxActionID(html) {
|
|
59
|
+
const sub = html.match(PAGE_CHUNK_RE)?.[0];
|
|
60
|
+
if (!sub)
|
|
61
|
+
throw new Error('tmpmails: page chunk script not found');
|
|
62
|
+
const res = await (0, retry_1.fetchWithTimeout)(`${ORIGIN}${sub}`, {
|
|
63
|
+
headers: {
|
|
64
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0',
|
|
65
|
+
Accept: '*/*',
|
|
66
|
+
Referer: `${ORIGIN}/`,
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
if (!res.ok) {
|
|
70
|
+
throw new Error(`tmpmails page chunk: ${res.status}`);
|
|
71
|
+
}
|
|
72
|
+
const js = await res.text();
|
|
73
|
+
const m = js.match(INBOX_ACTION_RE);
|
|
74
|
+
if (!m?.[1])
|
|
75
|
+
throw new Error('tmpmails: getInboxList action not found in chunk');
|
|
76
|
+
return m[1];
|
|
77
|
+
}
|
|
78
|
+
async function generateEmail(domain) {
|
|
79
|
+
const loc = localeFromDomain(domain);
|
|
80
|
+
const pageUrl = `${ORIGIN}/${loc}`;
|
|
81
|
+
const res = await (0, retry_1.fetchWithTimeout)(pageUrl, {
|
|
82
|
+
headers: {
|
|
83
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0',
|
|
84
|
+
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
85
|
+
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
|
|
86
|
+
'Cache-Control': 'no-cache',
|
|
87
|
+
DNT: '1',
|
|
88
|
+
Pragma: 'no-cache',
|
|
89
|
+
Referer: pageUrl,
|
|
90
|
+
'Upgrade-Insecure-Requests': '1',
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
if (!res.ok) {
|
|
94
|
+
throw new Error(`tmpmails generate: ${res.status}`);
|
|
95
|
+
}
|
|
96
|
+
const html = await res.text();
|
|
97
|
+
const userSign = parseUserSign(res.headers);
|
|
98
|
+
const email = pickEmail(html);
|
|
99
|
+
const actionId = await fetchInboxActionID(html);
|
|
100
|
+
const token = `${loc}${TOKEN_SEP}${userSign}${TOKEN_SEP}${actionId}`;
|
|
101
|
+
return { channel: CHANNEL, email, token };
|
|
102
|
+
}
|
|
103
|
+
function parseInboxResponse(recipient, raw) {
|
|
104
|
+
const text = raw.split('"$undefined"').join('null');
|
|
105
|
+
const out = [];
|
|
106
|
+
let dataErr = null;
|
|
107
|
+
for (const line of text.split('\n')) {
|
|
108
|
+
const trimmed = line.trim();
|
|
109
|
+
if (!trimmed)
|
|
110
|
+
continue;
|
|
111
|
+
const colon = trimmed.indexOf(':');
|
|
112
|
+
if (colon <= 0)
|
|
113
|
+
continue;
|
|
114
|
+
const jsonPart = trimmed.slice(colon + 1).trim();
|
|
115
|
+
if (!jsonPart.startsWith('{'))
|
|
116
|
+
continue;
|
|
117
|
+
let wrap;
|
|
118
|
+
try {
|
|
119
|
+
wrap = JSON.parse(jsonPart);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
if (wrap.code !== 200 || !wrap.data)
|
|
125
|
+
continue;
|
|
126
|
+
const list = wrap.data.list;
|
|
127
|
+
if (!Array.isArray(list)) {
|
|
128
|
+
dataErr = new Error('tmpmails: invalid list');
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
for (const item of list) {
|
|
132
|
+
if (item && typeof item === 'object') {
|
|
133
|
+
out.push((0, normalize_1.normalizeEmail)(item, recipient));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return out;
|
|
137
|
+
}
|
|
138
|
+
if (dataErr)
|
|
139
|
+
throw dataErr;
|
|
140
|
+
throw new Error('tmpmails: inbox payload not found');
|
|
141
|
+
}
|
|
142
|
+
async function getEmails(email, token) {
|
|
143
|
+
const parts = token.split(TOKEN_SEP);
|
|
144
|
+
if (parts.length !== 3) {
|
|
145
|
+
throw new Error('tmpmails: invalid session token');
|
|
146
|
+
}
|
|
147
|
+
const [locale, userSign, actionId] = parts;
|
|
148
|
+
const postUrl = `${ORIGIN}/${locale}`;
|
|
149
|
+
const body = JSON.stringify([userSign, email, 0]);
|
|
150
|
+
const res = await (0, retry_1.fetchWithTimeout)(postUrl, {
|
|
151
|
+
method: 'POST',
|
|
152
|
+
headers: {
|
|
153
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0',
|
|
154
|
+
Accept: 'text/x-component',
|
|
155
|
+
'Content-Type': 'text/plain;charset=UTF-8',
|
|
156
|
+
'Next-Action': actionId,
|
|
157
|
+
Origin: ORIGIN,
|
|
158
|
+
Referer: postUrl,
|
|
159
|
+
Cookie: `NEXT_LOCALE=${locale}; user_sign=${userSign}`,
|
|
160
|
+
},
|
|
161
|
+
body,
|
|
162
|
+
});
|
|
163
|
+
if (!res.ok) {
|
|
164
|
+
throw new Error(`tmpmails inbox: ${res.status}`);
|
|
165
|
+
}
|
|
166
|
+
const raw = await res.text();
|
|
167
|
+
return parseInboxResponse(email, raw);
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG1wbWFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3RtcG1haWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBK0VBLHNDQXlCQztBQW9DRCw4QkEyQkM7QUF0S0QsNENBQThDO0FBQzlDLG9DQUE0QztBQUU1QyxNQUFNLE9BQU8sR0FBWSxVQUFVLENBQUM7QUFDcEMsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUM7QUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBRXZCLE1BQU0sUUFBUSxHQUFHLGdDQUFnQyxDQUFDO0FBQ2xELE1BQU0sYUFBYSxHQUFHLGdFQUFnRSxDQUFDO0FBQ3ZGLE1BQU0sZUFBZSxHQUFHLGlEQUFpRCxDQUFDO0FBRTFFLFNBQVMsZ0JBQWdCLENBQUMsTUFBc0I7SUFDOUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE9BQWdCO0lBQ3RDLE1BQU0sQ0FBQyxHQUFHLE9BQXNELENBQUM7SUFDakUsSUFBSSxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDekMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsT0FBZ0I7SUFDckMsS0FBSyxNQUFNLElBQUksSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLENBQUMs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STtLQUNMLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludGVybmFsRW1haWxJbmZvLCBFbWFpbCwgQ2hhbm5lbCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZUVtYWlsIH0gZnJvbSAnLi4vbm9ybWFsaXplJztcbmltcG9ydCB7IGZldGNoV2l0aFRpbWVvdXQgfSBmcm9tICcuLi9yZXRyeSc7XG5cbmNvbnN0IENIQU5ORUw6IENoYW5uZWwgPSAndG1wbWFpbHMnO1xuY29uc3QgT1JJR0lOID0gJ2h0dHBzOi8vdG1wbWFpbHMuY29tJztcbmNvbnN0IFRPS0VOX1NFUCA9ICdcXHQnO1xuXG5jb25zdCBFTUFJTF9SRSA9IC9bYS16QS1aMC05Ll8tXStAdG1wbWFpbHNcXC5jb20vZztcbmNvbnN0IFBBR0VfQ0hVTktfUkUgPSAvXFwvX25leHRcXC9zdGF0aWNcXC9jaHVua3NcXC9hcHBcXC8lNUJsb2NhbGUlNURcXC9wYWdlLVthLWYwLTldK1xcLmpzLztcbmNvbnN0IElOQk9YX0FDVElPTl9SRSA9IC9cIihbMC05YS1mXSspXCIsW14sXSssdm9pZCAwLFteLF0rLFwiZ2V0SW5ib3hMaXN0XCIvO1xuXG5mdW5jdGlvbiBsb2NhbGVGcm9tRG9tYWluKGRvbWFpbj86IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICBjb25zdCBzID0gU3RyaW5nKGRvbWFpbiA/PyAnJykudHJpbSgpO1xuICByZXR1cm4gcyB8fCAnemgnO1xufVxuXG5mdW5jdGlvbiBzZXRDb29raWVMaW5lcyhoZWFkZXJzOiBIZWFkZXJzKTogc3RyaW5nW10ge1xuICBjb25zdCBoID0gaGVhZGVycyBhcyBIZWFkZXJzICYgeyBnZXRTZXRDb29raWU/OiAoKSA9PiBzdHJpbmdbXSB9O1xuICBpZiAodHlwZW9mIGguZ2V0U2V0Q29va2llID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGguZ2V0U2V0Q29va2llKCk7XG4gIH1cbiAgY29uc3Qgb25lID0gaGVhZGVycy5nZXQoJ3NldC1jb29raWUnKTtcbiAgcmV0dXJuIG9uZSA/IFtvbmVdIDogW107XG59XG5cbmZ1bmN0aW9uIHBhcnNlVXNlclNpZ24oaGVhZGVyczogSGVhZGVycyk6IHN0cmluZyB7XG4gIGZvciAoY29uc3QgbGluZSBvZiBzZXRDb29raWVMaW5lcyhoZWFkZXJzKSkge1xuICAgIGNvbnN0IG0gPSAvXnVzZXJfc2lnbj0oW147XSspL2kuZXhlYyhsaW5lKTtcbiAgICBpZiAobSkge1xuICAgICAgY29uc3QgdiA9IG1bMV0udHJpbSgpO1xuICAgICAgaWYgKHYpIHJldHVybiB2O1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ3RtcG1haWxzOiBtaXNzaW5nIHVzZXJfc2lnbiBjb29raWUnKTtcbn1cblxuZnVuY3Rpb24gcGlja0VtYWlsKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHN1cHBvcnQgPSAnc3VwcG9ydEB0bXBtYWlscy5jb20nO1xuICBjb25zdCBjb3VudHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IG0gb2YgaHRtbC5tYXRjaEFsbChFTUFJTF9SRSkpIHtcbiAgICBjb25zdCBhZGRyID0gbVswXTtcbiAgICBpZiAoYWRkci50b0xvd2VyQ2FzZSgpID09PSBzdXBwb3J0KSBjb250aW51ZTtcbiAgICBjb3VudHMuc2V0KGFkZHIsIChjb3VudHMuZ2V0KGFkZHIpID8/IDApICsgMSk7XG4gIH1cbiAgaWYgKGNvdW50cy5zaXplID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0bXBtYWlsczogbm8gaW5ib3ggYWRkcmVzcyBpbiBwYWdlJyk7XG4gIH1cbiAgbGV0IGJlc3QgPSAnJztcbiAgbGV0IGJlc3RDID0gMDtcbiAgZm9yIChjb25zdCBbYWRkciwgY10gb2YgY291bnRzKSB7XG4gICAgaWYgKGMgPiBiZXN0QyB8fCAoYyA9PT0gYmVzdEMgJiYgYWRkciA8IGJlc3QpKSB7XG4gICAgICBiZXN0ID0gYWRkcjtcbiAgICAgIGJlc3RDID0gYztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJlc3Q7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoSW5ib3hBY3Rpb25JRChodG1sOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBzdWIgPSBodG1sLm1hdGNoKFBBR0VfQ0hVTktfUkUpPy5bMF07XG4gIGlmICghc3ViKSB0aHJvdyBuZXcgRXJyb3IoJ3RtcG1haWxzOiBwYWdlIGNodW5rIHNjcmlwdCBub3QgZm91bmQnKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hXaXRoVGltZW91dChgJHtPUklHSU59JHtzdWJ9YCwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICdVc2VyLUFnZW50JzpcbiAgICAgICAgJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDYuMC4wLjAgU2FmYXJpLzUzNy4zNiBFZGcvMTQ2LjAuMC4wJyxcbiAgICAgIEFjY2VwdDogJyovKicsXG4gICAgICBSZWZlcmVyOiBgJHtPUklHSU59L2AsXG4gICAgfSxcbiAgfSk7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0bXBtYWlscyBwYWdlIGNodW5rOiAke3Jlcy5zdGF0dXN9YCk7XG4gIH1cbiAgY29uc3QganMgPSBhd2FpdCByZXMudGV4dCgpO1xuICBjb25zdCBtID0ganMubWF0Y2goSU5CT1hfQUNUSU9OX1JFKTtcbiAgaWYgKCFtPy5bMV0pIHRocm93IG5ldyBFcnJvcigndG1wbWFpbHM6IGdldEluYm94TGlzdCBhY3Rpb24gbm90IGZvdW5kIGluIGNodW5rJyk7XG4gIHJldHVybiBtWzFdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFbWFpbChkb21haW4/OiBzdHJpbmcgfCBudWxsKTogUHJvbWlzZTxJbnRlcm5hbEVtYWlsSW5mbz4ge1xuICBjb25zdCBsb2MgPSBsb2NhbGVGcm9tRG9tYWluKGRvbWFpbik7XG4gIGNvbnN0IHBhZ2VVcmwgPSBgJHtPUklHSU59LyR7bG9jfWA7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoV2l0aFRpbWVvdXQocGFnZVVybCwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgICdVc2VyLUFnZW50JzpcbiAgICAgICAgJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDYuMC4wLjAgU2FmYXJpLzUzNy4zNiBFZGcvMTQ2LjAuMC4wJyxcbiAgICAgIEFjY2VwdDogJ3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCovKjtxPTAuOCcsXG4gICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJ3poLUNOLHpoO3E9MC45LGVuO3E9MC44LGVuLUdCO3E9MC43LGVuLVVTO3E9MC42JyxcbiAgICAgICdDYWNoZS1Db250cm9sJzogJ25vLWNhY2hlJyxcbiAgICAgIEROVDogJzEnLFxuICAgICAgUHJhZ21hOiAnbm8tY2FjaGUnLFxuICAgICAgUmVmZXJlcjogcGFnZVVybCxcbiAgICAgICdVcGdyYWRlLUluc2VjdXJlLVJlcXVlc3RzJzogJzEnLFxuICAgIH0sXG4gIH0pO1xuICBpZiAoIXJlcy5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgdG1wbWFpbHMgZ2VuZXJhdGU6ICR7cmVzLnN0YXR1c31gKTtcbiAgfVxuICBjb25zdCBodG1sID0gYXdhaXQgcmVzLnRleHQoKTtcbiAgY29uc3QgdXNlclNpZ24gPSBwYXJzZVVzZXJTaWduKHJlcy5oZWFkZXJzKTtcbiAgY29uc3QgZW1haWwgPSBwaWNrRW1haWwoaHRtbCk7XG4gIGNvbnN0IGFjdGlvbklkID0gYXdhaXQgZmV0Y2hJbmJveEFjdGlvbklEKGh0bWwpO1xuICBjb25zdCB0b2tlbiA9IGAke2xvY30ke1RPS0VOX1NFUH0ke3VzZXJTaWdufSR7VE9LRU5fU0VQfSR7YWN0aW9uSWR9YDtcbiAgcmV0dXJuIHsgY2hhbm5lbDogQ0hBTk5FTCwgZW1haWwsIHRva2VuIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW5ib3hSZXNwb25zZShyZWNpcGllbnQ6IHN0cmluZywgcmF3OiBzdHJpbmcpOiBFbWFpbFtdIHtcbiAgY29uc3QgdGV4dCA9IHJhdy5zcGxpdCgnXCIkdW5kZWZpbmVkXCInKS5qb2luKCdudWxsJyk7XG4gIGNvbnN0IG91dDogRW1haWxbXSA9IFtdO1xuICBsZXQgZGF0YUVycjogRXJyb3IgfCBudWxsID0gbnVsbDtcbiAgZm9yIChjb25zdCBsaW5lIG9mIHRleHQuc3BsaXQoJ1xcbicpKSB7XG4gICAgY29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZCkgY29udGludWU7XG4gICAgY29uc3QgY29sb24gPSB0cmltbWVkLmluZGV4T2YoJzonKTtcbiAgICBpZiAoY29sb24gPD0gMCkgY29udGludWU7XG4gICAgY29uc3QganNvblBhcnQgPSB0cmltbWVkLnNsaWNlKGNvbG9uICsgMSkudHJpbSgpO1xuICAgIGlmICghanNvblBhcnQuc3RhcnRzV2l0aCgneycpKSBjb250aW51ZTtcbiAgICBsZXQgd3JhcDogeyBjb2RlPzogbnVtYmVyOyBkYXRhPzogeyBsaXN0PzogdW5rbm93bltdIH0gfTtcbiAgICB0cnkge1xuICAgICAgd3JhcCA9IEpTT04ucGFyc2UoanNvblBhcnQpIGFzIHsgY29kZT86IG51bWJlcjsgZGF0YT86IHsgbGlzdD86IHVua25vd25bXSB9IH07XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHdyYXAuY29kZSAhPT0gMjAwIHx8ICF3cmFwLmRhdGEpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGxpc3QgPSB3cmFwLmRhdGEubGlzdDtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpIHtcbiAgICAgIGRhdGFFcnIgPSBuZXcgRXJyb3IoJ3RtcG1haWxzOiBpbnZhbGlkIGxpc3QnKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xuICAgICAgaWYgKGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIG91dC5wdXNoKG5vcm1hbGl6ZUVtYWlsKGl0ZW0sIHJlY2lwaWVudCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIGlmIChkYXRhRXJyKSB0aHJvdyBkYXRhRXJyO1xuICB0aHJvdyBuZXcgRXJyb3IoJ3RtcG1haWxzOiBpbmJveCBwYXlsb2FkIG5vdCBmb3VuZCcpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RW1haWxzKGVtYWlsOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPEVtYWlsW10+IHtcbiAgY29uc3QgcGFydHMgPSB0b2tlbi5zcGxpdChUT0tFTl9TRVApO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0bXBtYWlsczogaW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gIH1cbiAgY29uc3QgW2xvY2FsZSwgdXNlclNpZ24sIGFjdGlvbklkXSA9IHBhcnRzO1xuICBjb25zdCBwb3N0VXJsID0gYCR7T1JJR0lOfS8ke2xvY2FsZX1gO1xuICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoW3VzZXJTaWduLCBlbWFpbCwgMF0pO1xuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaFdpdGhUaW1lb3V0KHBvc3RVcmwsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnVXNlci1BZ2VudCc6XG4gICAgICAgICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTQ2LjAuMC4wIFNhZmFyaS81MzcuMzYgRWRnLzE0Ni4wLjAuMCcsXG4gICAgICBBY2NlcHQ6ICd0ZXh0L3gtY29tcG9uZW50JyxcbiAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JyxcbiAgICAgICdOZXh0LUFjdGlvbic6IGFjdGlvbklkLFxuICAgICAgT3JpZ2luOiBPUklHSU4sXG4gICAgICBSZWZlcmVyOiBwb3N0VXJsLFxuICAgICAgQ29va2llOiBgTkVYVF9MT0NBTEU9JHtsb2NhbGV9OyB1c2VyX3NpZ249JHt1c2VyU2lnbn1gLFxuICAgIH0sXG4gICAgYm9keSxcbiAgfSk7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0bXBtYWlscyBpbmJveDogJHtyZXMuc3RhdHVzfWApO1xuICB9XG4gIGNvbnN0IHJhdyA9IGF3YWl0IHJlcy50ZXh0KCk7XG4gIHJldHVybiBwYXJzZUluYm94UmVzcG9uc2UoZW1haWwsIHJhdyk7XG59XG4iXX0=
|
package/dist/retry.d.ts
CHANGED
|
@@ -40,4 +40,8 @@ export type RetryWithAttemptsResult<T> = {
|
|
|
40
40
|
*/
|
|
41
41
|
export declare function withRetryWithAttempts<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<RetryWithAttemptsResult<T>>;
|
|
42
42
|
export declare function withRetry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
43
|
-
|
|
43
|
+
/** Node 下跳过 TLS 证书校验(用于 10mail.wangtz.cn 等渠道默认行为) */
|
|
44
|
+
export interface FetchWithTimeoutOptions {
|
|
45
|
+
skipTlsVerify?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export declare function fetchWithTimeout(url: string, init?: RequestInit, timeoutMs?: number, opts?: FetchWithTimeoutOptions): Promise<Response>;
|
package/dist/retry.js
CHANGED
|
@@ -130,9 +130,31 @@ function getFetchConfig() {
|
|
|
130
130
|
}
|
|
131
131
|
return _cachedFetchConfig;
|
|
132
132
|
}
|
|
133
|
-
|
|
133
|
+
function resolveFetchForTls(baseFetch, skipTlsVerify) {
|
|
134
|
+
if (!skipTlsVerify) {
|
|
135
|
+
return baseFetch;
|
|
136
|
+
}
|
|
137
|
+
if (typeof process === 'undefined' || !process.versions?.node) {
|
|
138
|
+
return baseFetch;
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
// Node 18+ 内置 undici,用于 per-request 关闭证书校验(不修改全局 NODE_TLS_REJECT_UNAUTHORIZED)
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
143
|
+
const undici = require('undici');
|
|
144
|
+
const dispatcher = new undici.Agent({ connect: { rejectUnauthorized: false } });
|
|
145
|
+
return ((u, i) => undici.fetch(u, {
|
|
146
|
+
...i,
|
|
147
|
+
dispatcher,
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return baseFetch;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
async function fetchWithTimeout(url, init, timeoutMs, opts) {
|
|
134
155
|
const { fetchFn, timeout: defaultTimeout } = getFetchConfig();
|
|
135
156
|
const effectiveTimeout = timeoutMs ?? defaultTimeout;
|
|
157
|
+
const fetchImpl = resolveFetchForTls(fetchFn, opts?.skipTlsVerify);
|
|
136
158
|
const controller = new AbortController();
|
|
137
159
|
const timeoutId = setTimeout(() => controller.abort(), effectiveTimeout);
|
|
138
160
|
/*
|
|
@@ -144,7 +166,7 @@ async function fetchWithTimeout(url, init, timeoutMs) {
|
|
|
144
166
|
externalSignal.addEventListener('abort', () => controller.abort(), { once: true });
|
|
145
167
|
}
|
|
146
168
|
try {
|
|
147
|
-
const response = await
|
|
169
|
+
const response = await fetchImpl(url, {
|
|
148
170
|
...init,
|
|
149
171
|
signal: controller.signal,
|
|
150
172
|
});
|
|
@@ -160,4 +182,4 @@ async function fetchWithTimeout(url, init, timeoutMs) {
|
|
|
160
182
|
clearTimeout(timeoutId);
|
|
161
183
|
}
|
|
162
184
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7QUErRkgsc0RBcUNDO0FBRUQsOEJBSUM7QUFnQ0QsNENBaUNDO0FBek1ELHFDQUFrQztBQUNsQyxxQ0FBcUM7QUFrQnJDLE1BQU0scUJBQXFCLEdBQTJCO0lBQ3BELFVBQVUsRUFBRSxDQUFDO0lBQ2IsWUFBWSxFQUFFLElBQUk7SUFDbEIsUUFBUSxFQUFFLElBQUk7SUFDZCxPQUFPLEVBQUUsS0FBSztJQUNkLFdBQVcsRUFBRSxrQkFBa0I7Q0FDaEMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsa0JBQWtCLENBQUMsS0FBVTtJQUNwQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXpCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUVuRSxpQkFBaUI7SUFDakIsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUMzQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUM5QixPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUMzQixPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsSUFB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biAqIOmAmueUqOmHjeivleW3peWFt1xuICog5o+Q5L6b6K+35rGC6YeN6K+V44CB6LaF5pe25o6n5Yi244CB5oyH5pWw6YCA6YG/562J6ZSZ6K+v5oGi5aSN5py65Yi2XG4gKi9cblxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgZ2V0Q29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vKipcbiAqIOmHjeivlemFjee9rumAiemhuVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5T3B0aW9ucyB7XG4gIC8qKiDmnIDlpKfph43or5XmrKHmlbDvvIjkuI3lkKvpppbmrKHor7fmsYLvvInvvIzpu5jorqQgMiAqL1xuICBtYXhSZXRyaWVzPzogbnVtYmVyO1xuICAvKiog5Yid5aeL6YeN6K+V5bu26L+f77yI5q+r56eS77yJ77yM6buY6K6kIDEwMDAgKi9cbiAgaW5pdGlhbERlbGF5PzogbnVtYmVyO1xuICAvKiog5pyA5aSn6YeN6K+V5bu26L+f77yI5q+r56eS77yJ77yM6buY6K6kIDUwMDAgKi9cbiAgbWF4RGVsYXk/OiBudW1iZXI7XG4gIC8qKiDor7fmsYLotoXml7bml7bpl7TvvIjmr6vnp5LvvInvvIzpu5jorqQgMTUwMDAgKi9cbiAgdGltZW91dD86IG51bWJlcjtcbiAgLyoqIOaYr+WQpuWvueivpemUmeivr+i/m+ihjOmHjeivleeahOWIpOaWreWHveaVsCAqL1xuICBzaG91bGRSZXRyeT86IChlcnJvcjogYW55KSA9PiBib29sZWFuO1xufVxuXG5jb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlM6IFJlcXVpcmVkPFJldHJ5T3B0aW9ucz4gPSB7XG4gIG1heFJldHJpZXM6IDIsXG4gIGluaXRpYWxEZWxheTogMTAwMCxcbiAgbWF4RGVsYXk6IDUwMDAsXG4gIHRpbWVvdXQ6IDE1MDAwLFxuICBzaG91bGRSZXRyeTogZGVmYXVsdFNob3VsZFJldHJ5LFxufTtcblxuLyoqXG4gKiDpu5jorqTph43or5XliKTmlq1cbiAqIOS7peS4i+mUmeivr+exu+Wei+S8muinpuWPkemHjeivle+8mlxuICogLSDnvZHnu5zov57mjqXplJnor6/vvIhmZXRjaCBmYWlsZWQsIEVDT05OUkVGVVNFRCwgRUNPTk5SRVNFVCDnrYnvvIlcbiAqIC0g6LaF5pe26ZSZ6K+v77yIdGltZW91dCwgYWJvcnTvvIlcbiAqIC0gRE5TIOino+aekOWksei0pVxuICogLSBIVFRQIDQyOSDpmZDmtYFcbiAqIC0gSFRUUCA0eHgvNXh4IOacjeWKoeerr+mUmeivr++8iOWQq+eKtuaAgeeggeeahOmUmeivr+a2iOaBr++8iVxuICog5LuFIFNESyDlhoXpg6jnmoTlj4LmlbDmoKHpqoznsbvplJnor6/kuI3ph43or5VcbiAqL1xuZnVuY3Rpb24gZGVmYXVsdFNob3VsZFJldHJ5KGVycm9yOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKCFlcnJvcikgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IG1lc3NhZ2UgPSBTdHJpbmcoZXJyb3IubWVzc2FnZSB8fCBlcnJvciB8fCAnJykudG9Mb3dlckNhc2UoKTtcblxuICAvKiDnvZHnu5znuqfliKvplJnor68g4oaSIOmHjeivlSAqL1xuICBpZiAobWVzc2FnZS5pbmNsdWRlcygnZmV0Y2ggZmFpbGVkJykgfHxcbiAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoJ25ldHdvcmsnKSB8fFxuICAgICAgbWVzc2FnZS5pbmNsdWRlcygnZWNvbm5yZWZ1c2VkJykgfHxcbiAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoJ2Vjb25ucmVzZXQnKSB8fFxuICAgICAgbWVzc2FnZS5pbmNsdWRlcygnZXRpbWVkb3V0JykgfHxcbiAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoJ3RpbWVvdXQnKSB8fFxuICAgICAgbWVzc2FnZS5pbmNsdWRlcygnc29ja2V0IGhhbmcgdXAnKSB8fFxuICAgICAgbWVzc2FnZS5pbmNsdWRlcygnZG5zJykgfHxcbiAgICAgIG1lc3NhZ2UuaW5jbHVkZXMoJ2Fib3J0JykpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qIEhUVFAgNDI5IOmZkOa1gSDihpIg6YeN6K+VICovXG4gIGlmIChtZXNzYWdlLmluY2x1ZGVzKCc0MjknKSB8fCBtZXNzYWdlLmluY2x1ZGVzKCd0b28gbWFueSByZXF1ZXN0cycpIHx8IG1lc3NhZ2UuaW5jbHVkZXMoJ3JhdGUgbGltaXQnKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyogSFRUUCA0eHgvNXh4IOmUmeivr++8iOWQq+eKtuaAgeeggeeahOmUmeivr+a2iOaBr++8ieKGkiDph43or5UgKi9cbiAgY29uc3Qgc3RhdHVzTWF0Y2ggPSBtZXNzYWdlLm1hdGNoKC86XFxzKihcXGR7M30pLyk7XG4gIGlmIChzdGF0dXNNYXRjaCkge1xuICAgIGNvbnN0IHN0YXR1cyA9IHBhcnNlSW50KHN0YXR1c01hdGNoWzFdLCAxMCk7XG4gICAgcmV0dXJuIHN0YXR1cyA+PSA0MDA7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICog5LyR55yg5oyH5a6a5q+r56eSXG4gKi9cbmZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG4vKipcbiAqIOW4pumHjeivleeahOW8guatpeaTjeS9nOaJp+ihjOWZqFxuICogLSDoh6rliqjph43or5Xlj6/mgaLlpI3nmoTplJnor6/vvIjnvZHnu5zplJnor6/jgIHotoXml7bjgIFIVFRQIDR4eC81eHjvvIlcbiAqIC0g5oyH5pWw6YCA6YG/6YG/5YWN6L+H5bqm6K+35rGCXG4gKiAtIOS4jeWPr+aBouWkjeeahOmUmeivr++8iFNESyDlhoXpg6jlj4LmlbDmoKHpqozplJnor6/nrYnvvInnm7TmjqXmipvlh7rkuI3ph43or5VcbiAqXG4gKiBAcGFyYW0gZm4g6KaB5omn6KGM55qE5byC5q2l5pON5L2cXG4gKiBAcGFyYW0gb3B0aW9ucyDph43or5XphY3nva5cbiAqL1xuZXhwb3J0IHR5cGUgUmV0cnlXaXRoQXR0ZW1wdHNSZXN1bHQ8VD4gPVxuICB8IHsgb2s6IHRydWU7IHZhbHVlOiBUOyBhdHRlbXB0czogbnVtYmVyIH1cbiAgfCB7IG9rOiBmYWxzZTsgZXJyb3I6IHVua25vd247IGF0dGVtcHRzOiBudW1iZXIgfTtcblxuLyoqXG4gKiDkuI4gd2l0aFJldHJ5IOebuOWQjO+8jOmineWklui/lOWbnuWwneivleasoeaVsO+8iOaIkOWKn+aIluacgOe7iOWksei0peaXtuWdh+acieaViO+8iVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFJldHJ5V2l0aEF0dGVtcHRzPFQ+KFxuICBmbjogKCkgPT4gUHJvbWlzZTxUPixcbiAgb3B0aW9ucz86IFJldHJ5T3B0aW9ucyxcbik6IFByb21pc2U8UmV0cnlXaXRoQXR0ZW1wdHNSZXN1bHQ8VD4+IHtcbiAgY29uc3Qgb3B0cyA9IHsgLi4uREVGQVVMVF9SRVRSWV9PUFRJT05TLCAuLi5vcHRpb25zIH07XG4gIGxldCBsYXN0RXJyb3I6IGFueTtcblxuICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8PSBvcHRzLm1heFJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgIGNvbnN0IGF0dGVtcHRzID0gYXR0ZW1wdCArIDE7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKCk7XG4gICAgICBpZiAoYXR0ZW1wdCA+IDApIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oYOesrCAke2F0dGVtcHQgKyAxfSDmrKHlsJ3or5XmiJDlip9gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IG9rOiB0cnVlLCB2YWx1ZTogcmVzdWx0LCBhdHRlbXB0cyB9O1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGxhc3RFcnJvciA9IGVycm9yO1xuICAgICAgY29uc3QgZXJyb3JNc2cgPSBlcnJvci5tZXNzYWdlIHx8IFN0cmluZyhlcnJvcik7XG5cbiAgICAgIC8qIOacgOWQjuS4gOasoeWwneivleWksei0peaIluS4jeWPr+mHjeivleeahOmUmeivryDihpIg55u05o6l5oqb5Ye6ICovXG4gICAgICBpZiAoYXR0ZW1wdCA+PSBvcHRzLm1heFJldHJpZXMgfHwgIW9wdHMuc2hvdWxkUmV0cnkoZXJyb3IpKSB7XG4gICAgICAgIGlmIChhdHRlbXB0ID49IG9wdHMubWF4UmV0cmllcyAmJiBvcHRzLm1heFJldHJpZXMgPiAwKSB7XG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGDph43or5UgJHtvcHRzLm1heFJldHJpZXN9IOasoeWQjuS7jeWksei0pTogJHtlcnJvck1zZ31gKTtcbiAgICAgICAgfSBlbHNlIGlmICghb3B0cy5zaG91bGRSZXRyeShlcnJvcikpIHtcbiAgICAgICAgICBsb2dnZXIuZGVidWcoYOS4jeWPr+mHjeivleeahOmUmeivrzogJHtlcnJvck1zZ31gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBvazogZmFsc2UsIGVycm9yLCBhdHRlbXB0cyB9O1xuICAgICAgfVxuXG4gICAgICAvKiDmjIfmlbDpgIDpgb/nrYnlvoUgKi9cbiAgICAgIGNvbnN0IGRlbGF5ID0gTWF0aC5taW4ob3B0cy5pbml0aWFsRGVsYXkgKiBNYXRoLnBvdygyLCBhdHRlbXB0KSwgb3B0cy5tYXhEZWxheSk7XG4gICAgICBsb2dnZXIud2Fybihg6K+35rGC5aSx6LSlICgke2Vycm9yTXNnfSnvvIwke2RlbGF5fW1zIOWQjuesrCAke2F0dGVtcHQgKyAyfSDmrKHph43or5UuLi5gKTtcbiAgICAgIGF3YWl0IHNsZWVwKGRlbGF5KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBvazogZmFsc2UsIGVycm9yOiBsYXN0RXJyb3IsIGF0dGVtcHRzOiBvcHRzLm1heFJldHJpZXMgKyAxIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoUmV0cnk8VD4oZm46ICgpID0+IFByb21pc2U8VD4sIG9wdGlvbnM/OiBSZXRyeU9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgciA9IGF3YWl0IHdpdGhSZXRyeVdpdGhBdHRlbXB0cyhmbiwgb3B0aW9ucyk7XG4gIGlmIChyLm9rKSByZXR1cm4gci52YWx1ZTtcbiAgdGhyb3cgci5lcnJvcjtcbn1cblxuLyoqXG4gKiDluKbotoXml7bmjqfliLbnmoQgZmV0Y2gg5YyF6KOFXG4gKiDlnKjljp/nlJ8gZmV0Y2gg5Z+656GA5LiK5re75Yqg6LaF5pe25Lit5pat6IO95YqbXG4gKlxuICogQHBhcmFtIHVybCDor7fmsYIgVVJMXG4gKiBAcGFyYW0gaW5pdCBmZXRjaCDpgInpoblcbiAqIEBwYXJhbSB0aW1lb3V0TXMg6LaF5pe25pe26Ze077yI5q+r56eS77yJXG4gKi9cbi8qKlxuICog57yT5a2Y55qE5YWo5bGA6YWN572u5b+r54Wn77yM6YG/5YWN5q+P5qyh6K+35rGC6YO96K+75Y+WXG4gKiDku4XlnKggc2V0Q29uZmlnIOiiq+iwg+eUqOaXtuWkseaViO+8iOmAmui/hyBjb25maWdWZXJzaW9uIOavlOWvue+8iVxuICovXG5sZXQgX2NhY2hlZEZldGNoQ29uZmlnOiB7IGZldGNoRm46IHR5cGVvZiBmZXRjaDsgdGltZW91dDogbnVtYmVyOyB2ZXJzaW9uOiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIOiOt+WPlue8k+WtmOeahCBmZXRjaCDphY3nva5cbiAqL1xuZnVuY3Rpb24gZ2V0RmV0Y2hDb25maWcoKTogeyBmZXRjaEZuOiB0eXBlb2YgZmV0Y2g7IHRpbWVvdXQ6IG51bWJlciB9IHtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gIC8qIOeugOWNleeahOW8leeUqOavlOWvueWNs+WPr++8jGdldENvbmZpZyDlnKjmnKrlj5jmm7Tml7bov5Tlm57lkIzkuIDlr7nosaEgKi9cbiAgaWYgKCFfY2FjaGVkRmV0Y2hDb25maWcgfHwgX2NhY2hlZEZldGNoQ29uZmlnLmZldGNoRm4gIT09IChjb25maWcuY3VzdG9tRmV0Y2ggfHwgZmV0Y2gpIHx8IF9jYWNoZWRGZXRjaENvbmZpZy50aW1lb3V0ICE9PSAoY29uZmlnLnRpbWVvdXQgPz8gREVGQVVMVF9SRVRSWV9PUFRJT05TLnRpbWVvdXQpKSB7XG4gICAgX2NhY2hlZEZldGNoQ29uZmlnID0ge1xuICAgICAgZmV0Y2hGbjogY29uZmlnLmN1c3RvbUZldGNoIHx8IGZldGNoLFxuICAgICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQgPz8gREVGQVVMVF9SRVRSWV9PUFRJT05TLnRpbWVvdXQsXG4gICAgICB2ZXJzaW9uOiAwLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIF9jYWNoZWRGZXRjaENvbmZpZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoV2l0aFRpbWVvdXQoXG4gIHVybDogc3RyaW5nLFxuICBpbml0PzogUmVxdWVzdEluaXQsXG4gIHRpbWVvdXRNcz86IG51bWJlcixcbik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgY29uc3QgeyBmZXRjaEZuLCB0aW1lb3V0OiBkZWZhdWx0VGltZW91dCB9ID0gZ2V0RmV0Y2hDb25maWcoKTtcbiAgY29uc3QgZWZmZWN0aXZlVGltZW91dCA9IHRpbWVvdXRNcyA/PyBkZWZhdWx0VGltZW91dDtcbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KCksIGVmZmVjdGl2ZVRpbWVvdXQpO1xuXG4gIC8qXG4gICAqIOWmguaenOiwg+eUqOaWueW3suaPkOS+myBzaWduYWzvvIzpnIDopoHlkIzml7bnm5HlkKzkuKTkuKrkv6Hlj7fvvIjosIPnlKjmlrkgKyDotoXml7bvvIlcbiAgICog5Lu75LiA6Kem5Y+R5YiZ5Lit5pat6K+35rGCXG4gICAqL1xuICBjb25zdCBleHRlcm5hbFNpZ25hbCA9IGluaXQ/LnNpZ25hbDtcbiAgaWYgKGV4dGVybmFsU2lnbmFsKSB7XG4gICAgZXh0ZXJuYWxTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiBjb250cm9sbGVyLmFib3J0KCksIHsgb25jZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaEZuKHVybCwge1xuICAgICAgLi4uaW5pdCxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgaWYgKGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXF1ZXN0IHRpbWVvdXQgYWZ0ZXIgJHtlZmZlY3RpdmVUaW1lb3V0fW1zOiAke3VybH1gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH0gZmluYWxseSB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gIH1cbn1cbiJdfQ==
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7QUErRkgsc0RBcUNDO0FBRUQsOEJBSUM7QUFpRUQsNENBbUNDO0FBNU9ELHFDQUFrQztBQUNsQyxxQ0FBcUM7QUFrQnJDLE1BQU0scUJBQXFCLEdBQTJCO0lBQ3BELFVBQVUsRUFBRSxDQUFDO0lBQ2IsWUFBWSxFQUFFLElBQUk7SUFDbEIsUUFBUSxFQUFFLElBQUk7SUFDZCxPQUFPLEVBQUUsS0FBSztJQUNkLFdBQVcsRUFBRSxrQkFBa0I7Q0FDaEMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsa0JBQWtCLENBQUMsS0FBVTtJQUNwQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXpCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUVuRSxpQkFBaUI7SUFDakIsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUMzQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztRQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUM5QixPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUMzQixPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDdkcsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakQsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLEtBQUssQ0FBQyxFQUFVO0lBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQWVEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxFQUFvQixFQUNwQixPQUFzQjtJQUV0QixNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcscUJBQXFCLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUN0RCxJQUFJLFNBQWMsQ0FBQztJQUVuQixLQUFLLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUMxQixJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEIsZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQy9DLENBQUM7UUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1lBQ3BCLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDbEIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFaEQsNkJBQTZCO1lBQzdCLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNELElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDdEQsZUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLFdBQVcsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDM0QsQ0FBQztxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNwQyxlQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztnQkFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDeEMsQ0FBQztZQUVELFlBQVk7WUFDWixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hGLGVBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxRQUFRLEtBQUssS0FBSyxTQUFTLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RFLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUN4RSxDQUFDO0FBRU0sS0FBSyxVQUFVLFNBQVMsQ0FBSSxFQUFvQixFQUFFLE9BQXNCO0lBQzdFLE1BQU0sQ0FBQyxHQUFHLE1BQU0scUJBQXFCLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQyxDQUFDLEVBQUU7UUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekIsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0g7OztHQUdHO0FBQ0gsSUFBSSxrQkFBa0IsR0FBdUUsSUFBSSxDQUFDO0FBRWxHOztHQUVHO0FBQ0gsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUEsa0JBQVMsR0FBRSxDQUFDO0lBQzNCLHFDQUFxQztJQUNyQyxJQUFJLENBQUMsa0JBQWtCLElBQUksa0JBQWtCLENBQUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUssa0JBQWtCLEdBQUc7WUFDbkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksS0FBSztZQUNwQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxPQUFPO1lBQ3hELE9BQU8sRUFBRSxDQUFDO1NBQ1gsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFPRCxTQUFTLGtCQUFrQixDQUN6QixTQUF1QixFQUN2QixhQUFrQztJQUVsQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM5RCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsK0VBQStFO1FBQy9FLGlFQUFpRTtRQUNqRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUc5QixDQUFDO1FBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sQ0FBQyxDQUFDLENBQVMsRUFBRSxDQUFlLEVBQUUsRUFBRSxDQUNyQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNkLEdBQUksQ0FBNkI7WUFDakMsVUFBVTtTQUNYLENBQUMsQ0FBaUIsQ0FBQztJQUN4QixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsZ0JBQWdCLENBQ3BDLEdBQVcsRUFDWCxJQUFrQixFQUNsQixTQUFrQixFQUNsQixJQUE4QjtJQUU5QixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQztJQUM5RCxNQUFNLGdCQUFnQixHQUFHLFNBQVMsSUFBSSxjQUFjLENBQUM7SUFDckQsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNuRSxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUV6RTs7O09BR0c7SUFDSCxNQUFNLGNBQWMsR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ3BDLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3BDLEdBQUcsSUFBSTtZQUNQLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtTQUMxQixDQUFDLENBQUM7UUFDSCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsZ0JBQWdCLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO1lBQVMsQ0FBQztRQUNULFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6YCa55So6YeN6K+V5bel5YW3XG4gKiDmj5Dkvpvor7fmsYLph43or5XjgIHotoXml7bmjqfliLbjgIHmjIfmlbDpgIDpgb/nrYnplJnor6/mgaLlpI3mnLrliLZcbiAqL1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBnZXRDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XG5cbi8qKlxuICog6YeN6K+V6YWN572u6YCJ6aG5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlPcHRpb25zIHtcbiAgLyoqIOacgOWkp+mHjeivleasoeaVsO+8iOS4jeWQq+mmluasoeivt+axgu+8ie+8jOm7mOiupCAyICovXG4gIG1heFJldHJpZXM/OiBudW1iZXI7XG4gIC8qKiDliJ3lp4vph43or5Xlu7bov5/vvIjmr6vnp5LvvInvvIzpu5jorqQgMTAwMCAqL1xuICBpbml0aWFsRGVsYXk/OiBudW1iZXI7XG4gIC8qKiDmnIDlpKfph43or5Xlu7bov5/vvIjmr6vnp5LvvInvvIzpu5jorqQgNTAwMCAqL1xuICBtYXhEZWxheT86IG51bWJlcjtcbiAgLyoqIOivt+axgui2heaXtuaXtumXtO+8iOavq+enku+8ie+8jOm7mOiupCAxNTAwMCAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvKiog5piv5ZCm5a+56K+l6ZSZ6K+v6L+b6KGM6YeN6K+V55qE5Yik5pat5Ye95pWwICovXG4gIHNob3VsZFJldHJ5PzogKGVycm9yOiBhbnkpID0+IGJvb2xlYW47XG59XG5cbmNvbnN0IERFRkFVTFRfUkVUUllfT1BUSU9OUzogUmVxdWlyZWQ8UmV0cnlPcHRpb25zPiA9IHtcbiAgbWF4UmV0cmllczogMixcbiAgaW5pdGlhbERlbGF5OiAxMDAwLFxuICBtYXhEZWxheTogNTAwMCxcbiAgdGltZW91dDogMTUwMDAsXG4gIHNob3VsZFJldHJ5OiBkZWZhdWx0U2hvdWxkUmV0cnksXG59O1xuXG4vKipcbiAqIOm7mOiupOmHjeivleWIpOaWrVxuICog5Lul5LiL6ZSZ6K+v57G75Z6L5Lya6Kem5Y+R6YeN6K+V77yaXG4gKiAtIOe9kee7nOi/nuaOpemUmeivr++8iGZldGNoIGZhaWxlZCwgRUNPTk5SRUZVU0VELCBFQ09OTlJFU0VUIOetie+8iVxuICogLSDotoXml7bplJnor6/vvIh0aW1lb3V0LCBhYm9ydO+8iVxuICogLSBETlMg6Kej5p6Q5aSx6LSlXG4gKiAtIEhUVFAgNDI5IOmZkOa1gVxuICogLSBIVFRQIDR4eC81eHgg5pyN5Yqh56uv6ZSZ6K+v77yI5ZCr54q25oCB56CB55qE6ZSZ6K+v5raI5oGv77yJXG4gKiDku4UgU0RLIOWGhemDqOeahOWPguaVsOagoemqjOexu+mUmeivr+S4jemHjeivlVxuICovXG5mdW5jdGlvbiBkZWZhdWx0U2hvdWxkUmV0cnkoZXJyb3I6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAoIWVycm9yKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3QgbWVzc2FnZSA9IFN0cmluZyhlcnJvci5tZXNzYWdlIHx8IGVycm9yIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuXG4gIC8qIOe9kee7nOe6p+WIq+mUmeivryDihpIg6YeN6K+VICovXG4gIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdmZXRjaCBmYWlsZWQnKSB8fFxuICAgICAgbWVzc2FnZS5pbmNsdWRlcygnbmV0d29yaycpIHx8XG4gICAgICBtZXNzYWdlLmluY2x1ZGVzKCdlY29ubnJlZnVzZWQnKSB8fFxuICAgICAgbWVzc2FnZS5pbmNsdWRlcygnZWNvbm5yZXNldCcpIHx8XG4gICAgICBtZXNzYWdlLmluY2x1ZGVzKCdldGltZWRvdXQnKSB8fFxuICAgICAgbWVzc2FnZS5pbmNsdWRlcygndGltZW91dCcpIHx8XG4gICAgICBtZXNzYWdlLmluY2x1ZGVzKCdzb2NrZXQgaGFuZyB1cCcpIHx8XG4gICAgICBtZXNzYWdlLmluY2x1ZGVzKCdkbnMnKSB8fFxuICAgICAgbWVzc2FnZS5pbmNsdWRlcygnYWJvcnQnKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyogSFRUUCA0Mjkg6ZmQ5rWBIOKGkiDph43or5UgKi9cbiAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJzQyOScpIHx8IG1lc3NhZ2UuaW5jbHVkZXMoJ3RvbyBtYW55IHJlcXVlc3RzJykgfHwgbWVzc2FnZS5pbmNsdWRlcygncmF0ZSBsaW1pdCcpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiBIVFRQIDR4eC81eHgg6ZSZ6K+v77yI5ZCr54q25oCB56CB55qE6ZSZ6K+v5raI5oGv77yJ4oaSIOmHjeivlSAqL1xuICBjb25zdCBzdGF0dXNNYXRjaCA9IG1lc3NhZ2UubWF0Y2goLzpcXHMqKFxcZHszfSkvKTtcbiAgaWYgKHN0YXR1c01hdGNoKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gcGFyc2VJbnQoc3RhdHVzTWF0Y2hbMV0sIDEwKTtcbiAgICByZXR1cm4gc3RhdHVzID49IDQwMDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiDkvJHnnKDmjIflrprmr6vnp5JcbiAqL1xuZnVuY3Rpb24gc2xlZXAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG5cbi8qKlxuICog5bim6YeN6K+V55qE5byC5q2l5pON5L2c5omn6KGM5ZmoXG4gKiAtIOiHquWKqOmHjeivleWPr+aBouWkjeeahOmUmeivr++8iOe9kee7nOmUmeivr+OAgei2heaXtuOAgUhUVFAgNHh4LzV4eO+8iVxuICogLSDmjIfmlbDpgIDpgb/pgb/lhY3ov4fluqbor7fmsYJcbiAqIC0g5LiN5Y+v5oGi5aSN55qE6ZSZ6K+v77yIU0RLIOWGhemDqOWPguaVsOagoemqjOmUmeivr+etie+8ieebtOaOpeaKm+WHuuS4jemHjeivlVxuICpcbiAqIEBwYXJhbSBmbiDopoHmiafooYznmoTlvILmraXmk43kvZxcbiAqIEBwYXJhbSBvcHRpb25zIOmHjeivlemFjee9rlxuICovXG5leHBvcnQgdHlwZSBSZXRyeVdpdGhBdHRlbXB0c1Jlc3VsdDxUPiA9XG4gIHwgeyBvazogdHJ1ZTsgdmFsdWU6IFQ7IGF0dGVtcHRzOiBudW1iZXIgfVxuICB8IHsgb2s6IGZhbHNlOyBlcnJvcjogdW5rbm93bjsgYXR0ZW1wdHM6IG51bWJlciB9O1xuXG4vKipcbiAqIOS4jiB3aXRoUmV0cnkg55u45ZCM77yM6aKd5aSW6L+U5Zue5bCd6K+V5qyh5pWw77yI5oiQ5Yqf5oiW5pyA57uI5aSx6LSl5pe25Z2H5pyJ5pWI77yJXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoUmV0cnlXaXRoQXR0ZW1wdHM8VD4oXG4gIGZuOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBvcHRpb25zPzogUmV0cnlPcHRpb25zLFxuKTogUHJvbWlzZTxSZXRyeVdpdGhBdHRlbXB0c1Jlc3VsdDxUPj4ge1xuICBjb25zdCBvcHRzID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgbGV0IGxhc3RFcnJvcjogYW55O1xuXG4gIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDw9IG9wdHMubWF4UmV0cmllczsgYXR0ZW1wdCsrKSB7XG4gICAgY29uc3QgYXR0ZW1wdHMgPSBhdHRlbXB0ICsgMTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICAgIGlmIChhdHRlbXB0ID4gMCkge1xuICAgICAgICBsb2dnZXIuaW5mbyhg56ysICR7YXR0ZW1wdCArIDF9IOasoeWwneivleaIkOWKn2ApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHZhbHVlOiByZXN1bHQsIGF0dGVtcHRzIH07XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgbGFzdEVycm9yID0gZXJyb3I7XG4gICAgICBjb25zdCBlcnJvck1zZyA9IGVycm9yLm1lc3NhZ2UgfHwgU3RyaW5nKGVycm9yKTtcblxuICAgICAgLyog5pyA5ZCO5LiA5qyh5bCd6K+V5aSx6LSl5oiW5LiN5Y+v6YeN6K+V55qE6ZSZ6K+vIOKGkiDnm7TmjqXmipvlh7ogKi9cbiAgICAgIGlmIChhdHRlbXB0ID49IG9wdHMubWF4UmV0cmllcyB8fCAhb3B0cy5zaG91bGRSZXRyeShlcnJvcikpIHtcbiAgICAgICAgaWYgKGF0dGVtcHQgPj0gb3B0cy5tYXhSZXRyaWVzICYmIG9wdHMubWF4UmV0cmllcyA+IDApIHtcbiAgICAgICAgICBsb2dnZXIuZXJyb3IoYOmHjeivlSAke29wdHMubWF4UmV0cmllc30g5qyh5ZCO5LuN5aSx6LSlOiAke2Vycm9yTXNnfWApO1xuICAgICAgICB9IGVsc2UgaWYgKCFvcHRzLnNob3VsZFJldHJ5KGVycm9yKSkge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1Zyhg5LiN5Y+v6YeN6K+V55qE6ZSZ6K+vOiAke2Vycm9yTXNnfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyb3IsIGF0dGVtcHRzIH07XG4gICAgICB9XG5cbiAgICAgIC8qIOaMh+aVsOmAgOmBv+etieW+hSAqL1xuICAgICAgY29uc3QgZGVsYXkgPSBNYXRoLm1pbihvcHRzLmluaXRpYWxEZWxheSAqIE1hdGgucG93KDIsIGF0dGVtcHQpLCBvcHRzLm1heERlbGF5KTtcbiAgICAgIGxvZ2dlci53YXJuKGDor7fmsYLlpLHotKUgKCR7ZXJyb3JNc2d9Ke+8jCR7ZGVsYXl9bXMg5ZCO56ysICR7YXR0ZW1wdCArIDJ9IOasoemHjeivlS4uLmApO1xuICAgICAgYXdhaXQgc2xlZXAoZGVsYXkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IG9rOiBmYWxzZSwgZXJyb3I6IGxhc3RFcnJvciwgYXR0ZW1wdHM6IG9wdHMubWF4UmV0cmllcyArIDEgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhSZXRyeTxUPihmbjogKCkgPT4gUHJvbWlzZTxUPiwgb3B0aW9ucz86IFJldHJ5T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICBjb25zdCByID0gYXdhaXQgd2l0aFJldHJ5V2l0aEF0dGVtcHRzKGZuLCBvcHRpb25zKTtcbiAgaWYgKHIub2spIHJldHVybiByLnZhbHVlO1xuICB0aHJvdyByLmVycm9yO1xufVxuXG4vKipcbiAqIOW4pui2heaXtuaOp+WItueahCBmZXRjaCDljIXoo4VcbiAqIOWcqOWOn+eUnyBmZXRjaCDln7rnoYDkuIrmt7vliqDotoXml7bkuK3mlq3og73liptcbiAqXG4gKiBAcGFyYW0gdXJsIOivt+axgiBVUkxcbiAqIEBwYXJhbSBpbml0IGZldGNoIOmAiemhuVxuICogQHBhcmFtIHRpbWVvdXRNcyDotoXml7bml7bpl7TvvIjmr6vnp5LvvIlcbiAqL1xuLyoqXG4gKiDnvJPlrZjnmoTlhajlsYDphY3nva7lv6vnhafvvIzpgb/lhY3mr4/mrKHor7fmsYLpg73or7vlj5ZcbiAqIOS7heWcqCBzZXRDb25maWcg6KKr6LCD55So5pe25aSx5pWI77yI6YCa6L+HIGNvbmZpZ1ZlcnNpb24g5q+U5a+577yJXG4gKi9cbmxldCBfY2FjaGVkRmV0Y2hDb25maWc6IHsgZmV0Y2hGbjogdHlwZW9mIGZldGNoOyB0aW1lb3V0OiBudW1iZXI7IHZlcnNpb246IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG5cbi8qKlxuICog6I635Y+W57yT5a2Y55qEIGZldGNoIOmFjee9rlxuICovXG5mdW5jdGlvbiBnZXRGZXRjaENvbmZpZygpOiB7IGZldGNoRm46IHR5cGVvZiBmZXRjaDsgdGltZW91dDogbnVtYmVyIH0ge1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgLyog566A5Y2V55qE5byV55So5q+U5a+55Y2z5Y+v77yMZ2V0Q29uZmlnIOWcqOacquWPmOabtOaXtui/lOWbnuWQjOS4gOWvueixoSAqL1xuICBpZiAoIV9jYWNoZWRGZXRjaENvbmZpZyB8fCBfY2FjaGVkRmV0Y2hDb25maWcuZmV0Y2hGbiAhPT0gKGNvbmZpZy5jdXN0b21GZXRjaCB8fCBmZXRjaCkgfHwgX2NhY2hlZEZldGNoQ29uZmlnLnRpbWVvdXQgIT09IChjb25maWcudGltZW91dCA/PyBERUZBVUxUX1JFVFJZX09QVElPTlMudGltZW91dCkpIHtcbiAgICBfY2FjaGVkRmV0Y2hDb25maWcgPSB7XG4gICAgICBmZXRjaEZuOiBjb25maWcuY3VzdG9tRmV0Y2ggfHwgZmV0Y2gsXG4gICAgICB0aW1lb3V0OiBjb25maWcudGltZW91dCA/PyBERUZBVUxUX1JFVFJZX09QVElPTlMudGltZW91dCxcbiAgICAgIHZlcnNpb246IDAsXG4gICAgfTtcbiAgfVxuICByZXR1cm4gX2NhY2hlZEZldGNoQ29uZmlnO1xufVxuXG4vKiogTm9kZSDkuIvot7Pov4cgVExTIOivgeS5puagoemqjO+8iOeUqOS6jiAxMG1haWwud2FuZ3R6LmNuIOetiea4oOmBk+m7mOiupOihjOS4uu+8iSAqL1xuZXhwb3J0IGludGVyZmFjZSBGZXRjaFdpdGhUaW1lb3V0T3B0aW9ucyB7XG4gIHNraXBUbHNWZXJpZnk/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlRmV0Y2hGb3JUbHMoXG4gIGJhc2VGZXRjaDogdHlwZW9mIGZldGNoLFxuICBza2lwVGxzVmVyaWZ5OiBib29sZWFuIHwgdW5kZWZpbmVkLFxuKTogdHlwZW9mIGZldGNoIHtcbiAgaWYgKCFza2lwVGxzVmVyaWZ5KSB7XG4gICAgcmV0dXJuIGJhc2VGZXRjaDtcbiAgfVxuICBpZiAodHlwZW9mIHByb2Nlc3MgPT09ICd1bmRlZmluZWQnIHx8ICFwcm9jZXNzLnZlcnNpb25zPy5ub2RlKSB7XG4gICAgcmV0dXJuIGJhc2VGZXRjaDtcbiAgfVxuICB0cnkge1xuICAgIC8vIE5vZGUgMTgrIOWGhee9riB1bmRpY2nvvIznlKjkuo4gcGVyLXJlcXVlc3Qg5YWz6Zet6K+B5Lmm5qCh6aqM77yI5LiN5L+u5pS55YWo5bGAIE5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUTvvIlcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgIGNvbnN0IHVuZGljaSA9IHJlcXVpcmUoJ3VuZGljaScpIGFzIHtcbiAgICAgIEFnZW50OiBuZXcgKG9wdHM6IHsgY29ubmVjdDogeyByZWplY3RVbmF1dGhvcml6ZWQ6IGJvb2xlYW4gfSB9KSA9PiB1bmtub3duO1xuICAgICAgZmV0Y2g6IChpbnB1dDogc3RyaW5nLCBpbml0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFByb21pc2U8UmVzcG9uc2U+O1xuICAgIH07XG4gICAgY29uc3QgZGlzcGF0Y2hlciA9IG5ldyB1bmRpY2kuQWdlbnQoeyBjb25uZWN0OiB7IHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UgfSB9KTtcbiAgICByZXR1cm4gKCh1OiBzdHJpbmcsIGk/OiBSZXF1ZXN0SW5pdCkgPT5cbiAgICAgIHVuZGljaS5mZXRjaCh1LCB7XG4gICAgICAgIC4uLihpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSxcbiAgICAgICAgZGlzcGF0Y2hlcixcbiAgICAgIH0pKSBhcyB0eXBlb2YgZmV0Y2g7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBiYXNlRmV0Y2g7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoV2l0aFRpbWVvdXQoXG4gIHVybDogc3RyaW5nLFxuICBpbml0PzogUmVxdWVzdEluaXQsXG4gIHRpbWVvdXRNcz86IG51bWJlcixcbiAgb3B0cz86IEZldGNoV2l0aFRpbWVvdXRPcHRpb25zLFxuKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICBjb25zdCB7IGZldGNoRm4sIHRpbWVvdXQ6IGRlZmF1bHRUaW1lb3V0IH0gPSBnZXRGZXRjaENvbmZpZygpO1xuICBjb25zdCBlZmZlY3RpdmVUaW1lb3V0ID0gdGltZW91dE1zID8/IGRlZmF1bHRUaW1lb3V0O1xuICBjb25zdCBmZXRjaEltcGwgPSByZXNvbHZlRmV0Y2hGb3JUbHMoZmV0Y2hGbiwgb3B0cz8uc2tpcFRsc1ZlcmlmeSk7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCBlZmZlY3RpdmVUaW1lb3V0KTtcblxuICAvKlxuICAgKiDlpoLmnpzosIPnlKjmlrnlt7Lmj5Dkvpsgc2lnbmFs77yM6ZyA6KaB5ZCM5pe255uR5ZCs5Lik5Liq5L+h5Y+377yI6LCD55So5pa5ICsg6LaF5pe277yJXG4gICAqIOS7u+S4gOinpuWPkeWImeS4reaWreivt+axglxuICAgKi9cbiAgY29uc3QgZXh0ZXJuYWxTaWduYWwgPSBpbml0Py5zaWduYWw7XG4gIGlmIChleHRlcm5hbFNpZ25hbCkge1xuICAgIGV4dGVybmFsU2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCB7IG9uY2U6IHRydWUgfSk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hJbXBsKHVybCwge1xuICAgICAgLi4uaW5pdCxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgaWYgKGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXF1ZXN0IHRpbWVvdXQgYWZ0ZXIgJHtlZmZlY3RpdmVUaW1lb3V0fW1zOiAke3VybH1gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH0gZmluYWxseSB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* 支持的临时邮箱渠道标识
|
|
3
3
|
* 每个渠道对应一个第三方临时邮箱服务商
|
|
4
4
|
*/
|
|
5
|
-
export type Channel = 'tempmail' | 'tempmail-cn' | 'linshi-email' | 'linshiyou' | 'mffac' | 'tempmail-lol' | 'chatgpt-org-uk' | 'temp-mail-io' | 'awamail' | 'temporary-email-org' | 'mail-tm' | 'mail-cx' | 'dropmail' | 'guerrillamail' | 'maildrop' | 'smail-pw' | 'boomlify' | 'minmail' | 'vip-215' | 'anonbox' | 'fake-legal';
|
|
5
|
+
export type Channel = 'tempmail' | 'tempmail-cn' | 'tmpmails' | 'tempmailg' | 'ta-easy' | '10mail-wangtz' | '10minute-one' | 'linshi-email' | 'linshiyou' | 'mffac' | 'tempmail-lol' | 'chatgpt-org-uk' | 'temp-mail-io' | 'awamail' | 'temporary-email-org' | 'mail-tm' | 'mail-cx' | 'dropmail' | 'guerrillamail' | 'maildrop' | 'smail-pw' | 'boomlify' | 'minmail' | 'vip-215' | 'anonbox' | 'fake-legal' | 'moakt';
|
|
6
6
|
/**
|
|
7
7
|
* 创建临时邮箱后返回的邮箱信息
|
|
8
8
|
* Token 等认证信息由 SDK 内部维护,不对外暴露
|
package/dist/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5pSv5oyB55qE5Li05pe26YKu566x5rig6YGT5qCH6K+GXG4gKiDmr4/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5pSv5oyB55qE5Li05pe26YKu566x5rig6YGT5qCH6K+GXG4gKiDmr4/kuKrmuKDpgZPlr7nlupTkuIDkuKrnrKzkuInmlrnkuLTml7bpgq7nrrHmnI3liqHllYZcbiAqL1xuZXhwb3J0IHR5cGUgQ2hhbm5lbCA9ICd0ZW1wbWFpbCcgfCAndGVtcG1haWwtY24nIHwgJ3RtcG1haWxzJyB8ICd0ZW1wbWFpbGcnIHwgJ3RhLWVhc3knIHwgJzEwbWFpbC13YW5ndHonIHwgJzEwbWludXRlLW9uZScgfCAnbGluc2hpLWVtYWlsJyB8ICdsaW5zaGl5b3UnIHwgJ21mZmFjJyB8ICd0ZW1wbWFpbC1sb2wnIHwgJ2NoYXRncHQtb3JnLXVrJyB8ICd0ZW1wLW1haWwtaW8nIHwgJ2F3YW1haWwnIHwgJ3RlbXBvcmFyeS1lbWFpbC1vcmcnIHwgJ21haWwtdG0nIHwgJ21haWwtY3gnIHwgJ2Ryb3BtYWlsJyB8ICdndWVycmlsbGFtYWlsJyB8ICdtYWlsZHJvcCcgfCAnc21haWwtcHcnIHwgJ2Jvb21saWZ5JyB8ICdtaW5tYWlsJyB8ICd2aXAtMjE1JyB8ICdhbm9uYm94JyB8ICdmYWtlLWxlZ2FsJyB8ICdtb2FrdCc7XG5cbi8qKlxuICog5Yib5bu65Li05pe26YKu566x5ZCO6L+U5Zue55qE6YKu566x5L+h5oGvXG4gKiBUb2tlbiDnrYnorqTor4Hkv6Hmga/nlLEgU0RLIOWGhemDqOe7tOaKpO+8jOS4jeWvueWkluaatOmcslxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsSW5mbyB7XG4gIC8qKiDliJvlu7ror6Xpgq7nrrHmiYDkvb/nlKjnmoTmuKDpgZMgKi9cbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAgLyoqIOS4tOaXtumCrueuseWcsOWdgCAqL1xuICBlbWFpbDogc3RyaW5nO1xuICAvKiog6YKu566x6L+H5pyf5pe26Ze077yISVNPIDg2MDEg5a2X56ym5Liy5oiWIFVuaXgg5pe26Ze05oiz77yJICovXG4gIGV4cGlyZXNBdD86IHN0cmluZyB8IG51bWJlcjtcbiAgLyoqIOmCrueuseWIm+W7uuaXtumXtO+8iElTTyA4NjAxIOWtl+espuS4su+8iSAqL1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU0RLIOWGhemDqOS9v+eUqOeahOmCrueuseS/oeaBr++8jOWMheWQqyB0b2tlbiDnrYnorqTor4HmlbDmja5cbiAqIOS4jeWvueWkluWvvOWHuu+8jOeUqOaIt+aXoOazleiuv+mXrlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxFbWFpbEluZm8gZXh0ZW5kcyBFbWFpbEluZm8ge1xuICAvKiog6K6k6K+B5Luk54mM77yM55SxIFNESyDlhoXpg6jnu7TmiqQgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICog5qCH5YeG5YyW6YKu5Lu26ZmE5Lu2XG4gKiDkuI3lkIzmuKDpgZPnmoTpmYTku7blrZfmrrXlkI3kuI3lkIzvvIxTREsg57uf5LiA5b2S5LiA5YyW5Li65q2k57uT5p6EXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1haWxBdHRhY2htZW50IHtcbiAgLyoqIOmZhOS7tuaWh+S7tuWQjSAqL1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICAvKiog6ZmE5Lu25aSn5bCP77yI5a2X6IqC77yJICovXG4gIHNpemU/OiBudW1iZXI7XG4gIC8qKiBNSU1FIOexu+Wei++8jOWmgiBhcHBsaWNhdGlvbi9wZGYgKi9cbiAgY29udGVudFR5cGU/OiBzdHJpbmc7XG4gIC8qKiDpmYTku7bkuIvovb3lnLDlnYAgKi9cbiAgdXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIOagh+WHhuWMlumCruS7tuagvOW8jyAtIOaJgOacieaPkOS+m+WVhui/lOWbnue7n+S4gOe7k+aehFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtYWlsIHtcbiAgLyoqIOmCruS7tuWUr+S4gOagh+ivhiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiog5Y+R5Lu25Lq66YKu566x5Zyw5Z2AICovXG4gIGZyb206IHN0cmluZztcbiAgLyoqIOaUtuS7tuS6uumCrueuseWcsOWdgCAqL1xuICB0bzogc3RyaW5nO1xuICAvKiog6YKu5Lu25Li76aKYICovXG4gIHN1YmplY3Q6IHN0cmluZztcbiAgLyoqIOe6r+aWh+acrOWGheWuuSAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBIVE1MIOWGheWuuSAqL1xuICBodG1sOiBzdHJpbmc7XG4gIC8qKiBJU08gODYwMSDmoLzlvI/nmoTml6XmnJ/lrZfnrKbkuLIgKi9cbiAgZGF0ZTogc3RyaW5nO1xuICAvKiog5piv5ZCm5bey6K+7ICovXG4gIGlzUmVhZDogYm9vbGVhbjtcbiAgLyoqIOmZhOS7tuWIl+ihqCAqL1xuICBhdHRhY2htZW50czogRW1haWxBdHRhY2htZW50W107XG59XG5cbi8qKlxuICog6I635Y+W6YKu5Lu25YiX6KGo55qE6L+U5Zue57uT5p6cXG4gKiBzdWNjZXNzIOS4uiBmYWxzZSDml7booajnpLror7fmsYLlpLHotKXvvIjph43or5XogJflsL3vvInvvIxlbWFpbHMg5Li656m65pWw57uEXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RW1haWxzUmVzdWx0IHtcbiAgLyoqIOaJgOS9v+eUqOeahOa4oOmBkyAqL1xuICBjaGFubmVsOiBDaGFubmVsO1xuICAvKiog5p+l6K+i55qE6YKu566x5Zyw5Z2AICovXG4gIGVtYWlsOiBzdHJpbmc7XG4gIC8qKiDpgq7ku7bliJfooajvvIzlpLHotKXml7bkuLrnqbrmlbDnu4QgKi9cbiAgZW1haWxzOiBFbWFpbFtdO1xuICAvKiog6K+35rGC5piv5ZCm5oiQ5Yqf77yMZmFsc2Ug6KGo56S66YeN6K+V6ICX5bC95ZCO5LuN5aSx6LSlICovXG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG59XG5cbi8qKlxuICog6YeN6K+V6YWN572uXG4gKiBTREsg5YaF6YOo5a+5572R57uc6ZSZ6K+v44CB6LaF5pe244CBNXh4IOacjeWKoeerr+mUmeivr+iHquWKqOmHjeivlVxuICogNHh4IOWuouaIt+err+mUmeivr++8iOWmguWPguaVsOmUmeivr++8ieS4jeS8mumHjeivlVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8g6Ieq5a6a5LmJ6YeN6K+V562W55Wl77ya5pyA5aSa6YeN6K+VIDMg5qyh77yM6aaW5qyh5bu26L+fIDIg56eSXG4gKiBjb25zdCBlbWFpbCA9IGF3YWl0IGdlbmVyYXRlRW1haWwoe1xuICogICBjaGFubmVsOiAnbWFpbC10bScsXG4gKiAgIHJldHJ5OiB7IG1heFJldHJpZXM6IDMsIGluaXRpYWxEZWxheTogMjAwMCB9LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXRyeUNvbmZpZyB7XG4gIC8qKiDmnIDlpKfph43or5XmrKHmlbDvvIjkuI3lkKvpppbmrKHor7fmsYLvvInvvIzpu5jorqQgMiAqL1xuICBtYXhSZXRyaWVzPzogbnVtYmVyO1xuICAvKiog5Yid5aeL6YeN6K+V5bu26L+f77yI5q+r56eS77yJ77yM6YeH55So5oyH5pWw6YCA6YG/562W55Wl77yM6buY6K6kIDEwMDAgKi9cbiAgaW5pdGlhbERlbGF5PzogbnVtYmVyO1xuICAvKiog5pyA5aSn6YeN6K+V5bu26L+f5LiK6ZmQ77yI5q+r56eS77yJ77yM6buY6K6kIDUwMDAgKi9cbiAgbWF4RGVsYXk/OiBudW1iZXI7XG4gIC8qKiDljZXmrKHor7fmsYLotoXml7bml7bpl7TvvIjmr6vnp5LvvInvvIzpu5jorqQgMTUwMDAgKi9cbiAgdGltZW91dD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiDliJvlu7rkuLTml7bpgq7nrrHnmoTpgInpoblcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIOS9v+eUqOaMh+Wumua4oOmBk+WIm+W7uumCrueusVxuICogY29uc3QgZW1haWwgPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKHsgY2hhbm5lbDogJ21haWwtdG0nIH0pO1xuICpcbiAqIC8vIOmaj+acuumAieaLqea4oOmBk1xuICogY29uc3QgZW1haWwgPSBhd2FpdCBnZW5lcmF0ZUVtYWlsKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZUVtYWlsT3B0aW9ucyB7XG4gIC8qKiDmjIflrprmuKDpgZPvvIzkuI3kvKDliJnpmo/mnLrpgInmi6kgKi9cbiAgY2hhbm5lbD86IENoYW5uZWw7XG4gIC8qKlxuICAgKiDkuLogZmFsc2Ug5pe25LuF5bCd6K+VIGBjaGFubmVsYCDmjIflrprnmoTmuKDpgZPvvIzlpLHotKXljbPov5Tlm54gbnVsbO+8jOS4jSBGYWxsYmFjayDliLDlhbbku5bmuKDpgZPjgIJcbiAgICog55So5LqO5oyJ5rig6YGT5o6i5rWL5Y+v55So5oCn44CC6buY6K6kIHRydWXvvIjkv53mjIHljp/mnInjgIzkvJjlhYjmjIflrprmuKDpgZPjgIHlpLHotKXlkI7or5Xlhbbku5bjgI3ooYzkuLrvvInjgIJcbiAgICovXG4gIGNoYW5uZWxGYWxsYmFjaz86IGJvb2xlYW47XG4gIC8qKiDpgq7nrrHmnInmlYjml7bplb8gKi9cbiAgZHVyYXRpb24/OiBudW1iZXI7XG4gIC8qKiDmjIflrprpgq7nrrHln5/lkI3miJbmjqXlhaXln5/lkI3vvIjlpoIgYHRlbXBtYWlsLWNuYCDoh6rlrprkuYnln5/lkI3vvIkgKi9cbiAgZG9tYWluPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIOmHjeivlemFjee9ru+8jOS4jeS8oOWImeS9v+eUqOm7mOiupOWAvO+8iOacgOWkmumHjeivlSAyIOasoe+8iSAqL1xuICByZXRyeT86IFJldHJ5Q29uZmlnO1xufVxuXG4vKipcbiAqIOiOt+WPlumCruS7tuWIl+ihqOeahOmAiemhuVxuICogQ2hhbm5lbC9FbWFpbC9Ub2tlbiDnrYnnlLEgU0RLIOS7jiBFbWFpbEluZm8g5Lit6Ieq5Yqo6I635Y+W77yM55So5oi35peg6ZyA5omL5Yqo5Lyg6YCSXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCBpbmZvID0gYXdhaXQgZ2VuZXJhdGVFbWFpbCh7IGNoYW5uZWw6ICdtYWlsLXRtJyB9KTtcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdldEVtYWlscyhpbmZvKTtcbiAqIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuZW1haWxzLmxlbmd0aCA+IDApIHtcbiAqICAgY29uc29sZS5sb2coJ+aUtuWIsOmCruS7tjonLCByZXN1bHQuZW1haWxzKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEVtYWlsc09wdGlvbnMge1xuICAvKiog6YeN6K+V6YWN572u77yM5LiN5Lyg5YiZ5L2/55So6buY6K6k5YC877yI5pyA5aSa6YeN6K+VIDIg5qyh77yJICovXG4gIHJldHJ5PzogUmV0cnlDb25maWc7XG59XG4iXX0=
|
package/package.json
CHANGED