@coinfello/agent-cli 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +2717 -40
  2. package/package.json +6 -3
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { Command } from "commander";
3
3
  import { toMetaMaskSmartAccount, Implementation, createDelegation } from "@metamask/smart-accounts-kit";
4
4
  import { privateKeyToAccount, generatePrivateKey } from "viem/accounts";
5
- import { createPublicClient, http, parseUnits } from "viem";
5
+ import { createPublicClient, http } from "viem";
6
6
  import * as chains from "viem/chains";
7
7
  import { readFile, mkdir, writeFile } from "node:fs/promises";
8
8
  import { homedir } from "node:os";
@@ -16,8 +16,23 @@ function resolveChain(chainName) {
16
16
  }
17
17
  return chain;
18
18
  }
19
- async function createSmartAccount(privateKey, chainName) {
20
- const chain = resolveChain(chainName);
19
+ function resolveChainById(chainId) {
20
+ const chain = Object.values(chains).find(
21
+ (c) => typeof c === "object" && c !== null && "id" in c && c.id === chainId
22
+ );
23
+ if (!chain) {
24
+ throw new Error(`Unknown chain ID ${chainId}. No viem chain found with that ID.`);
25
+ }
26
+ return chain;
27
+ }
28
+ function resolveChainInput(chainInput) {
29
+ if (typeof chainInput === "number") {
30
+ return resolveChainById(chainInput);
31
+ }
32
+ return resolveChain(chainInput);
33
+ }
34
+ async function createSmartAccount(privateKey, chainInput) {
35
+ const chain = resolveChainInput(chainInput);
21
36
  const publicClient = createPublicClient({
22
37
  chain,
23
38
  transport: http()
@@ -33,23 +48,18 @@ async function createSmartAccount(privateKey, chainName) {
33
48
  const address = await smartAccount.getAddress();
34
49
  return { smartAccount, address, owner };
35
50
  }
36
- async function getSmartAccount(privateKey, chainName) {
37
- const { smartAccount } = await createSmartAccount(privateKey, chainName);
51
+ async function getSmartAccount(privateKey, chainInput) {
52
+ const { smartAccount } = await createSmartAccount(privateKey, chainInput);
38
53
  return smartAccount;
39
54
  }
40
55
  function createSubdelegation({
41
56
  smartAccount,
42
57
  delegateAddress,
43
58
  parentDelegation,
44
- tokenAddress,
45
- maxAmount
59
+ scope
46
60
  }) {
47
61
  return createDelegation({
48
- scope: {
49
- type: "erc20TransferAmount",
50
- tokenAddress,
51
- maxAmount
52
- },
62
+ scope,
53
63
  to: delegateAddress,
54
64
  from: smartAccount.address,
55
65
  parentDelegation,
@@ -73,9 +83,2573 @@ async function saveConfig(config) {
73
83
  await mkdir(CONFIG_DIR, { recursive: true });
74
84
  await writeFile(CONFIG_PATH, JSON.stringify(config, null, 2), "utf-8");
75
85
  }
76
- const BASE_URL = "https://app.coinfello.com/api/v1";
86
+ function shareSameDomainSuffix(hostname, vhost) {
87
+ if (hostname.endsWith(vhost)) {
88
+ return hostname.length === vhost.length || hostname[hostname.length - vhost.length - 1] === ".";
89
+ }
90
+ return false;
91
+ }
92
+ function extractDomainWithSuffix(hostname, publicSuffix) {
93
+ const publicSuffixIndex = hostname.length - publicSuffix.length - 2;
94
+ const lastDotBeforeSuffixIndex = hostname.lastIndexOf(".", publicSuffixIndex);
95
+ if (lastDotBeforeSuffixIndex === -1) {
96
+ return hostname;
97
+ }
98
+ return hostname.slice(lastDotBeforeSuffixIndex + 1);
99
+ }
100
+ function getDomain$1(suffix, hostname, options) {
101
+ if (options.validHosts !== null) {
102
+ const validHosts = options.validHosts;
103
+ for (const vhost of validHosts) {
104
+ if (
105
+ /*@__INLINE__*/
106
+ shareSameDomainSuffix(hostname, vhost)
107
+ ) {
108
+ return vhost;
109
+ }
110
+ }
111
+ }
112
+ let numberOfLeadingDots = 0;
113
+ if (hostname.startsWith(".")) {
114
+ while (numberOfLeadingDots < hostname.length && hostname[numberOfLeadingDots] === ".") {
115
+ numberOfLeadingDots += 1;
116
+ }
117
+ }
118
+ if (suffix.length === hostname.length - numberOfLeadingDots) {
119
+ return null;
120
+ }
121
+ return (
122
+ /*@__INLINE__*/
123
+ extractDomainWithSuffix(hostname, suffix)
124
+ );
125
+ }
126
+ function extractHostname(url, urlIsValidHostname) {
127
+ let start = 0;
128
+ let end = url.length;
129
+ let hasUpper = false;
130
+ if (!urlIsValidHostname) {
131
+ if (url.startsWith("data:")) {
132
+ return null;
133
+ }
134
+ while (start < url.length && url.charCodeAt(start) <= 32) {
135
+ start += 1;
136
+ }
137
+ while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {
138
+ end -= 1;
139
+ }
140
+ if (url.charCodeAt(start) === 47 && url.charCodeAt(start + 1) === 47) {
141
+ start += 2;
142
+ } else {
143
+ const indexOfProtocol = url.indexOf(":/", start);
144
+ if (indexOfProtocol !== -1) {
145
+ const protocolSize = indexOfProtocol - start;
146
+ const c0 = url.charCodeAt(start);
147
+ const c1 = url.charCodeAt(start + 1);
148
+ const c2 = url.charCodeAt(start + 2);
149
+ const c3 = url.charCodeAt(start + 3);
150
+ const c4 = url.charCodeAt(start + 4);
151
+ if (protocolSize === 5 && c0 === 104 && c1 === 116 && c2 === 116 && c3 === 112 && c4 === 115) ;
152
+ else if (protocolSize === 4 && c0 === 104 && c1 === 116 && c2 === 116 && c3 === 112) ;
153
+ else if (protocolSize === 3 && c0 === 119 && c1 === 115 && c2 === 115) ;
154
+ else if (protocolSize === 2 && c0 === 119 && c1 === 115) ;
155
+ else {
156
+ for (let i = start; i < indexOfProtocol; i += 1) {
157
+ const lowerCaseCode = url.charCodeAt(i) | 32;
158
+ if (!(lowerCaseCode >= 97 && lowerCaseCode <= 122 || // [a, z]
159
+ lowerCaseCode >= 48 && lowerCaseCode <= 57 || // [0, 9]
160
+ lowerCaseCode === 46 || // '.'
161
+ lowerCaseCode === 45 || // '-'
162
+ lowerCaseCode === 43)) {
163
+ return null;
164
+ }
165
+ }
166
+ }
167
+ start = indexOfProtocol + 2;
168
+ while (url.charCodeAt(start) === 47) {
169
+ start += 1;
170
+ }
171
+ }
172
+ }
173
+ let indexOfIdentifier = -1;
174
+ let indexOfClosingBracket = -1;
175
+ let indexOfPort = -1;
176
+ for (let i = start; i < end; i += 1) {
177
+ const code = url.charCodeAt(i);
178
+ if (code === 35 || // '#'
179
+ code === 47 || // '/'
180
+ code === 63) {
181
+ end = i;
182
+ break;
183
+ } else if (code === 64) {
184
+ indexOfIdentifier = i;
185
+ } else if (code === 93) {
186
+ indexOfClosingBracket = i;
187
+ } else if (code === 58) {
188
+ indexOfPort = i;
189
+ } else if (code >= 65 && code <= 90) {
190
+ hasUpper = true;
191
+ }
192
+ }
193
+ if (indexOfIdentifier !== -1 && indexOfIdentifier > start && indexOfIdentifier < end) {
194
+ start = indexOfIdentifier + 1;
195
+ }
196
+ if (url.charCodeAt(start) === 91) {
197
+ if (indexOfClosingBracket !== -1) {
198
+ return url.slice(start + 1, indexOfClosingBracket).toLowerCase();
199
+ }
200
+ return null;
201
+ } else if (indexOfPort !== -1 && indexOfPort > start && indexOfPort < end) {
202
+ end = indexOfPort;
203
+ }
204
+ }
205
+ while (end > start + 1 && url.charCodeAt(end - 1) === 46) {
206
+ end -= 1;
207
+ }
208
+ const hostname = start !== 0 || end !== url.length ? url.slice(start, end) : url;
209
+ if (hasUpper) {
210
+ return hostname.toLowerCase();
211
+ }
212
+ return hostname;
213
+ }
214
+ function isProbablyIpv4(hostname) {
215
+ if (hostname.length < 7) {
216
+ return false;
217
+ }
218
+ if (hostname.length > 15) {
219
+ return false;
220
+ }
221
+ let numberOfDots = 0;
222
+ for (let i = 0; i < hostname.length; i += 1) {
223
+ const code = hostname.charCodeAt(i);
224
+ if (code === 46) {
225
+ numberOfDots += 1;
226
+ } else if (code < 48 || code > 57) {
227
+ return false;
228
+ }
229
+ }
230
+ return numberOfDots === 3 && hostname.charCodeAt(0) !== 46 && hostname.charCodeAt(hostname.length - 1) !== 46;
231
+ }
232
+ function isProbablyIpv6(hostname) {
233
+ if (hostname.length < 3) {
234
+ return false;
235
+ }
236
+ let start = hostname.startsWith("[") ? 1 : 0;
237
+ let end = hostname.length;
238
+ if (hostname[end - 1] === "]") {
239
+ end -= 1;
240
+ }
241
+ if (end - start > 39) {
242
+ return false;
243
+ }
244
+ let hasColon = false;
245
+ for (; start < end; start += 1) {
246
+ const code = hostname.charCodeAt(start);
247
+ if (code === 58) {
248
+ hasColon = true;
249
+ } else if (!(code >= 48 && code <= 57 || // 0-9
250
+ code >= 97 && code <= 102 || // a-f
251
+ code >= 65 && code <= 90)) {
252
+ return false;
253
+ }
254
+ }
255
+ return hasColon;
256
+ }
257
+ function isIp(hostname) {
258
+ return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);
259
+ }
260
+ function isValidAscii(code) {
261
+ return code >= 97 && code <= 122 || code >= 48 && code <= 57 || code > 127;
262
+ }
263
+ function isValidHostname(hostname) {
264
+ if (hostname.length > 255) {
265
+ return false;
266
+ }
267
+ if (hostname.length === 0) {
268
+ return false;
269
+ }
270
+ if (
271
+ /*@__INLINE__*/
272
+ !isValidAscii(hostname.charCodeAt(0)) && hostname.charCodeAt(0) !== 46 && // '.' (dot)
273
+ hostname.charCodeAt(0) !== 95
274
+ ) {
275
+ return false;
276
+ }
277
+ let lastDotIndex = -1;
278
+ let lastCharCode = -1;
279
+ const len = hostname.length;
280
+ for (let i = 0; i < len; i += 1) {
281
+ const code = hostname.charCodeAt(i);
282
+ if (code === 46) {
283
+ if (
284
+ // Check that previous label is < 63 bytes long (64 = 63 + '.')
285
+ i - lastDotIndex > 64 || // Check that previous character was not already a '.'
286
+ lastCharCode === 46 || // Check that the previous label does not end with a '-' (dash)
287
+ lastCharCode === 45 || // Check that the previous label does not end with a '_' (underscore)
288
+ lastCharCode === 95
289
+ ) {
290
+ return false;
291
+ }
292
+ lastDotIndex = i;
293
+ } else if (!/*@__INLINE__*/
294
+ (isValidAscii(code) || code === 45 || code === 95)) {
295
+ return false;
296
+ }
297
+ lastCharCode = code;
298
+ }
299
+ return (
300
+ // Check that last label is shorter than 63 chars
301
+ len - lastDotIndex - 1 <= 63 && // Check that the last character is an allowed trailing label character.
302
+ // Since we already checked that the char is a valid hostname character,
303
+ // we only need to check that it's different from '-'.
304
+ lastCharCode !== 45
305
+ );
306
+ }
307
+ function setDefaultsImpl({ allowIcannDomains = true, allowPrivateDomains = false, detectIp = true, extractHostname: extractHostname2 = true, mixedInputs = true, validHosts = null, validateHostname = true }) {
308
+ return {
309
+ allowIcannDomains,
310
+ allowPrivateDomains,
311
+ detectIp,
312
+ extractHostname: extractHostname2,
313
+ mixedInputs,
314
+ validHosts,
315
+ validateHostname
316
+ };
317
+ }
318
+ const DEFAULT_OPTIONS = (
319
+ /*@__INLINE__*/
320
+ setDefaultsImpl({})
321
+ );
322
+ function setDefaults(options) {
323
+ if (options === void 0) {
324
+ return DEFAULT_OPTIONS;
325
+ }
326
+ return (
327
+ /*@__INLINE__*/
328
+ setDefaultsImpl(options)
329
+ );
330
+ }
331
+ function getEmptyResult() {
332
+ return {
333
+ domain: null,
334
+ domainWithoutSuffix: null,
335
+ hostname: null,
336
+ isIcann: null,
337
+ isIp: null,
338
+ isPrivate: null,
339
+ publicSuffix: null,
340
+ subdomain: null
341
+ };
342
+ }
343
+ function resetResult(result) {
344
+ result.domain = null;
345
+ result.domainWithoutSuffix = null;
346
+ result.hostname = null;
347
+ result.isIcann = null;
348
+ result.isIp = null;
349
+ result.isPrivate = null;
350
+ result.publicSuffix = null;
351
+ result.subdomain = null;
352
+ }
353
+ function parseImpl(url, step, suffixLookup2, partialOptions, result) {
354
+ const options = (
355
+ /*@__INLINE__*/
356
+ setDefaults(partialOptions)
357
+ );
358
+ if (typeof url !== "string") {
359
+ return result;
360
+ }
361
+ if (!options.extractHostname) {
362
+ result.hostname = url;
363
+ } else if (options.mixedInputs) {
364
+ result.hostname = extractHostname(url, isValidHostname(url));
365
+ } else {
366
+ result.hostname = extractHostname(url, false);
367
+ }
368
+ if (options.detectIp && result.hostname !== null) {
369
+ result.isIp = isIp(result.hostname);
370
+ if (result.isIp) {
371
+ return result;
372
+ }
373
+ }
374
+ if (options.validateHostname && options.extractHostname && result.hostname !== null && !isValidHostname(result.hostname)) {
375
+ result.hostname = null;
376
+ return result;
377
+ }
378
+ if (result.hostname === null) {
379
+ return result;
380
+ }
381
+ suffixLookup2(result.hostname, options, result);
382
+ if (result.publicSuffix === null) {
383
+ return result;
384
+ }
385
+ result.domain = getDomain$1(result.publicSuffix, result.hostname, options);
386
+ {
387
+ return result;
388
+ }
389
+ }
390
+ function fastPathLookup(hostname, options, out) {
391
+ if (!options.allowPrivateDomains && hostname.length > 3) {
392
+ const last = hostname.length - 1;
393
+ const c3 = hostname.charCodeAt(last);
394
+ const c2 = hostname.charCodeAt(last - 1);
395
+ const c1 = hostname.charCodeAt(last - 2);
396
+ const c0 = hostname.charCodeAt(last - 3);
397
+ if (c3 === 109 && c2 === 111 && c1 === 99 && c0 === 46) {
398
+ out.isIcann = true;
399
+ out.isPrivate = false;
400
+ out.publicSuffix = "com";
401
+ return true;
402
+ } else if (c3 === 103 && c2 === 114 && c1 === 111 && c0 === 46) {
403
+ out.isIcann = true;
404
+ out.isPrivate = false;
405
+ out.publicSuffix = "org";
406
+ return true;
407
+ } else if (c3 === 117 && c2 === 100 && c1 === 101 && c0 === 46) {
408
+ out.isIcann = true;
409
+ out.isPrivate = false;
410
+ out.publicSuffix = "edu";
411
+ return true;
412
+ } else if (c3 === 118 && c2 === 111 && c1 === 103 && c0 === 46) {
413
+ out.isIcann = true;
414
+ out.isPrivate = false;
415
+ out.publicSuffix = "gov";
416
+ return true;
417
+ } else if (c3 === 116 && c2 === 101 && c1 === 110 && c0 === 46) {
418
+ out.isIcann = true;
419
+ out.isPrivate = false;
420
+ out.publicSuffix = "net";
421
+ return true;
422
+ } else if (c3 === 101 && c2 === 100 && c1 === 46) {
423
+ out.isIcann = true;
424
+ out.isPrivate = false;
425
+ out.publicSuffix = "de";
426
+ return true;
427
+ }
428
+ }
429
+ return false;
430
+ }
431
+ const exceptions = /* @__PURE__ */ (function() {
432
+ const _0 = [1, {}], _1 = [0, { "city": _0 }];
433
+ const exceptions2 = [0, { "ck": [0, { "www": _0 }], "jp": [0, { "kawasaki": _1, "kitakyushu": _1, "kobe": _1, "nagoya": _1, "sapporo": _1, "sendai": _1, "yokohama": _1 }] }];
434
+ return exceptions2;
435
+ })();
436
+ const rules = /* @__PURE__ */ (function() {
437
+ const _2 = [1, {}], _3 = [2, {}], _4 = [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2 }], _5 = [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2 }], _6 = [0, { "*": _3 }], _7 = [2, { "s": _6 }], _8 = [0, { "relay": _3 }], _9 = [2, { "id": _3 }], _10 = [1, { "gov": _2 }], _11 = [0, { "airflow": _6, "lambda-url": _3, "transfer-webapp": _3 }], _12 = [0, { "airflow": _6, "transfer-webapp": _3 }], _13 = [0, { "transfer-webapp": _3 }], _14 = [0, { "transfer-webapp": _3, "transfer-webapp-fips": _3 }], _15 = [0, { "notebook": _3, "studio": _3 }], _16 = [0, { "labeling": _3, "notebook": _3, "studio": _3 }], _17 = [0, { "notebook": _3 }], _18 = [0, { "labeling": _3, "notebook": _3, "notebook-fips": _3, "studio": _3 }], _19 = [0, { "notebook": _3, "notebook-fips": _3, "studio": _3, "studio-fips": _3 }], _20 = [0, { "shop": _3 }], _21 = [0, { "*": _2 }], _22 = [1, { "co": _3 }], _23 = [0, { "objects": _3 }], _24 = [2, { "nodes": _3 }], _25 = [0, { "my": _3 }], _26 = [0, { "s3": _3, "s3-accesspoint": _3, "s3-website": _3 }], _27 = [0, { "s3": _3, "s3-accesspoint": _3 }], _28 = [0, { "direct": _3 }], _29 = [0, { "webview-assets": _3 }], _30 = [0, { "vfs": _3, "webview-assets": _3 }], _31 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _26, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _29, "cloud9": _30 }], _32 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _27, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _29, "cloud9": _30 }], _33 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _26, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _29, "cloud9": _30 }], _34 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _26, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3 }], _35 = [0, { "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3, "s3-website": _3 }], _36 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _35, "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _29, "cloud9": _30 }], _37 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _35, "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3 }], _38 = [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _35, "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-deprecated": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _29, "cloud9": _30 }], _39 = [0, { "auth": _3 }], _40 = [0, { "auth": _3, "auth-fips": _3 }], _41 = [0, { "auth-fips": _3 }], _42 = [0, { "apps": _3 }], _43 = [0, { "paas": _3 }], _44 = [2, { "eu": _3 }], _45 = [0, { "app": _3 }], _46 = [0, { "site": _3 }], _47 = [1, { "com": _2, "edu": _2, "net": _2, "org": _2 }], _48 = [0, { "j": _3 }], _49 = [0, { "dyn": _3 }], _50 = [2, { "web": _3 }], _51 = [1, { "discourse": _3 }], _52 = [1, { "co": _2, "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2 }], _53 = [0, { "p": _3 }], _54 = [0, { "user": _3 }], _55 = [0, { "cdn": _3 }], _56 = [2, { "raw": _6 }], _57 = [0, { "cust": _3, "reservd": _3 }], _58 = [0, { "cust": _3 }], _59 = [0, { "s3": _3 }], _60 = [1, { "biz": _2, "com": _2, "edu": _2, "gov": _2, "info": _2, "net": _2, "org": _2 }], _61 = [0, { "ipfs": _3 }], _62 = [1, { "framer": _3 }], _63 = [0, { "forgot": _3 }], _64 = [0, { "blob": _3, "file": _3, "web": _3 }], _65 = [0, { "core": _64, "servicebus": _3 }], _66 = [1, { "gs": _2 }], _67 = [0, { "nes": _2 }], _68 = [1, { "k12": _2, "cc": _2, "lib": _2 }], _69 = [1, { "cc": _2 }], _70 = [1, { "cc": _2, "lib": _2 }];
438
+ const rules2 = [0, { "ac": [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "drr": _3, "feedback": _3, "forms": _3 }], "ad": _2, "ae": [1, { "ac": _2, "co": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "sch": _2 }], "aero": [1, { "airline": _2, "airport": _2, "accident-investigation": _2, "accident-prevention": _2, "aerobatic": _2, "aeroclub": _2, "aerodrome": _2, "agents": _2, "air-surveillance": _2, "air-traffic-control": _2, "aircraft": _2, "airtraffic": _2, "ambulance": _2, "association": _2, "author": _2, "ballooning": _2, "broker": _2, "caa": _2, "cargo": _2, "catering": _2, "certification": _2, "championship": _2, "charter": _2, "civilaviation": _2, "club": _2, "conference": _2, "consultant": _2, "consulting": _2, "control": _2, "council": _2, "crew": _2, "design": _2, "dgca": _2, "educator": _2, "emergency": _2, "engine": _2, "engineer": _2, "entertainment": _2, "equipment": _2, "exchange": _2, "express": _2, "federation": _2, "flight": _2, "freight": _2, "fuel": _2, "gliding": _2, "government": _2, "groundhandling": _2, "group": _2, "hanggliding": _2, "homebuilt": _2, "insurance": _2, "journal": _2, "journalist": _2, "leasing": _2, "logistics": _2, "magazine": _2, "maintenance": _2, "marketplace": _2, "media": _2, "microlight": _2, "modelling": _2, "navigation": _2, "parachuting": _2, "paragliding": _2, "passenger-association": _2, "pilot": _2, "press": _2, "production": _2, "recreation": _2, "repbody": _2, "res": _2, "research": _2, "rotorcraft": _2, "safety": _2, "scientist": _2, "services": _2, "show": _2, "skydiving": _2, "software": _2, "student": _2, "taxi": _2, "trader": _2, "trading": _2, "trainer": _2, "union": _2, "workinggroup": _2, "works": _2 }], "af": _4, "ag": [1, { "co": _2, "com": _2, "net": _2, "nom": _2, "org": _2, "obj": _3 }], "ai": [1, { "com": _2, "net": _2, "off": _2, "org": _2, "uwu": _3, "framer": _3, "kiloapps": _3 }], "al": _5, "am": [1, { "co": _2, "com": _2, "commune": _2, "net": _2, "org": _2, "radio": _3 }], "ao": [1, { "co": _2, "ed": _2, "edu": _2, "gov": _2, "gv": _2, "it": _2, "og": _2, "org": _2, "pb": _2 }], "aq": _2, "ar": [1, { "bet": _2, "com": _2, "coop": _2, "edu": _2, "gob": _2, "gov": _2, "int": _2, "mil": _2, "musica": _2, "mutual": _2, "net": _2, "org": _2, "seg": _2, "senasa": _2, "tur": _2 }], "arpa": [1, { "e164": _2, "home": _2, "in-addr": _2, "ip6": _2, "iris": _2, "uri": _2, "urn": _2 }], "as": _10, "asia": [1, { "cloudns": _3, "daemon": _3, "dix": _3 }], "at": [1, { "4": _3, "ac": [1, { "sth": _2 }], "co": _2, "gv": _2, "or": _2, "funkfeuer": [0, { "wien": _3 }], "futurecms": [0, { "*": _3, "ex": _6, "in": _6 }], "futurehosting": _3, "futuremailing": _3, "ortsinfo": [0, { "ex": _6, "kunden": _6 }], "biz": _3, "info": _3, "123webseite": _3, "priv": _3, "my": _3, "myspreadshop": _3, "12hp": _3, "2ix": _3, "4lima": _3, "lima-city": _3 }], "au": [1, { "asn": _2, "com": [1, { "cloudlets": [0, { "mel": _3 }], "myspreadshop": _3 }], "edu": [1, { "act": _2, "catholic": _2, "nsw": _2, "nt": _2, "qld": _2, "sa": _2, "tas": _2, "vic": _2, "wa": _2 }], "gov": [1, { "qld": _2, "sa": _2, "tas": _2, "vic": _2, "wa": _2 }], "id": _2, "net": _2, "org": _2, "conf": _2, "oz": _2, "act": _2, "nsw": _2, "nt": _2, "qld": _2, "sa": _2, "tas": _2, "vic": _2, "wa": _2, "hrsn": [0, { "vps": _3 }] }], "aw": [1, { "com": _2 }], "ax": _2, "az": [1, { "biz": _2, "co": _2, "com": _2, "edu": _2, "gov": _2, "info": _2, "int": _2, "mil": _2, "name": _2, "net": _2, "org": _2, "pp": _2, "pro": _2 }], "ba": [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "brendly": _20, "rs": _3 }], "bb": [1, { "biz": _2, "co": _2, "com": _2, "edu": _2, "gov": _2, "info": _2, "net": _2, "org": _2, "store": _2, "tv": _2 }], "bd": [1, { "ac": _2, "ai": _2, "co": _2, "com": _2, "edu": _2, "gov": _2, "id": _2, "info": _2, "it": _2, "mil": _2, "net": _2, "org": _2, "sch": _2, "tv": _2 }], "be": [1, { "ac": _2, "cloudns": _3, "webhosting": _3, "interhostsolutions": [0, { "cloud": _3 }], "kuleuven": [0, { "ezproxy": _3 }], "123website": _3, "myspreadshop": _3, "transurl": _6 }], "bf": _10, "bg": [1, { "0": _2, "1": _2, "2": _2, "3": _2, "4": _2, "5": _2, "6": _2, "7": _2, "8": _2, "9": _2, "a": _2, "b": _2, "c": _2, "d": _2, "e": _2, "f": _2, "g": _2, "h": _2, "i": _2, "j": _2, "k": _2, "l": _2, "m": _2, "n": _2, "o": _2, "p": _2, "q": _2, "r": _2, "s": _2, "t": _2, "u": _2, "v": _2, "w": _2, "x": _2, "y": _2, "z": _2, "barsy": _3 }], "bh": _4, "bi": [1, { "co": _2, "com": _2, "edu": _2, "or": _2, "org": _2 }], "biz": [1, { "activetrail": _3, "cloud-ip": _3, "cloudns": _3, "jozi": _3, "dyndns": _3, "for-better": _3, "for-more": _3, "for-some": _3, "for-the": _3, "selfip": _3, "webhop": _3, "orx": _3, "mmafan": _3, "myftp": _3, "no-ip": _3, "dscloud": _3 }], "bj": [1, { "africa": _2, "agro": _2, "architectes": _2, "assur": _2, "avocats": _2, "co": _2, "com": _2, "eco": _2, "econo": _2, "edu": _2, "info": _2, "loisirs": _2, "money": _2, "net": _2, "org": _2, "ote": _2, "restaurant": _2, "resto": _2, "tourism": _2, "univ": _2 }], "bm": _4, "bn": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "co": _3 }], "bo": [1, { "com": _2, "edu": _2, "gob": _2, "int": _2, "mil": _2, "net": _2, "org": _2, "tv": _2, "web": _2, "academia": _2, "agro": _2, "arte": _2, "blog": _2, "bolivia": _2, "ciencia": _2, "cooperativa": _2, "democracia": _2, "deporte": _2, "ecologia": _2, "economia": _2, "empresa": _2, "indigena": _2, "industria": _2, "info": _2, "medicina": _2, "movimiento": _2, "musica": _2, "natural": _2, "nombre": _2, "noticias": _2, "patria": _2, "plurinacional": _2, "politica": _2, "profesional": _2, "pueblo": _2, "revista": _2, "salud": _2, "tecnologia": _2, "tksat": _2, "transporte": _2, "wiki": _2 }], "br": [1, { "9guacu": _2, "abc": _2, "adm": _2, "adv": _2, "agr": _2, "aju": _2, "am": _2, "anani": _2, "aparecida": _2, "api": _2, "app": _2, "arq": _2, "art": _2, "ato": _2, "b": _2, "barueri": _2, "belem": _2, "bet": _2, "bhz": _2, "bib": _2, "bio": _2, "blog": _2, "bmd": _2, "boavista": _2, "bsb": _2, "campinagrande": _2, "campinas": _2, "caxias": _2, "cim": _2, "cng": _2, "cnt": _2, "com": [1, { "simplesite": _3 }], "contagem": _2, "coop": _2, "coz": _2, "cri": _2, "cuiaba": _2, "curitiba": _2, "def": _2, "des": _2, "det": _2, "dev": _2, "ecn": _2, "eco": _2, "edu": _2, "emp": _2, "enf": _2, "eng": _2, "esp": _2, "etc": _2, "eti": _2, "far": _2, "feira": _2, "flog": _2, "floripa": _2, "fm": _2, "fnd": _2, "fortal": _2, "fot": _2, "foz": _2, "fst": _2, "g12": _2, "geo": _2, "ggf": _2, "goiania": _2, "gov": [1, { "ac": _2, "al": _2, "am": _2, "ap": _2, "ba": _2, "ce": _2, "df": _2, "es": _2, "go": _2, "ma": _2, "mg": _2, "ms": _2, "mt": _2, "pa": _2, "pb": _2, "pe": _2, "pi": _2, "pr": _2, "rj": _2, "rn": _2, "ro": _2, "rr": _2, "rs": _2, "sc": _2, "se": _2, "sp": _2, "to": _2 }], "gru": _2, "ia": _2, "imb": _2, "ind": _2, "inf": _2, "jab": _2, "jampa": _2, "jdf": _2, "joinville": _2, "jor": _2, "jus": _2, "leg": [1, { "ac": _3, "al": _3, "am": _3, "ap": _3, "ba": _3, "ce": _3, "df": _3, "es": _3, "go": _3, "ma": _3, "mg": _3, "ms": _3, "mt": _3, "pa": _3, "pb": _3, "pe": _3, "pi": _3, "pr": _3, "rj": _3, "rn": _3, "ro": _3, "rr": _3, "rs": _3, "sc": _3, "se": _3, "sp": _3, "to": _3 }], "leilao": _2, "lel": _2, "log": _2, "londrina": _2, "macapa": _2, "maceio": _2, "manaus": _2, "maringa": _2, "mat": _2, "med": _2, "mil": _2, "morena": _2, "mp": _2, "mus": _2, "natal": _2, "net": _2, "niteroi": _2, "nom": _21, "not": _2, "ntr": _2, "odo": _2, "ong": _2, "org": _2, "osasco": _2, "palmas": _2, "poa": _2, "ppg": _2, "pro": _2, "psc": _2, "psi": _2, "pvh": _2, "qsl": _2, "radio": _2, "rec": _2, "recife": _2, "rep": _2, "ribeirao": _2, "rio": _2, "riobranco": _2, "riopreto": _2, "salvador": _2, "sampa": _2, "santamaria": _2, "santoandre": _2, "saobernardo": _2, "saogonca": _2, "seg": _2, "sjc": _2, "slg": _2, "slz": _2, "social": _2, "sorocaba": _2, "srv": _2, "taxi": _2, "tc": _2, "tec": _2, "teo": _2, "the": _2, "tmp": _2, "trd": _2, "tur": _2, "tv": _2, "udi": _2, "vet": _2, "vix": _2, "vlog": _2, "wiki": _2, "xyz": _2, "zlg": _2, "tche": _3 }], "bs": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "we": _3 }], "bt": _4, "bv": _2, "bw": [1, { "ac": _2, "co": _2, "gov": _2, "net": _2, "org": _2 }], "by": [1, { "gov": _2, "mil": _2, "com": _2, "of": _2, "mediatech": _3 }], "bz": [1, { "co": _2, "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "za": _3, "mydns": _3, "gsj": _3 }], "ca": [1, { "ab": _2, "bc": _2, "mb": _2, "nb": _2, "nf": _2, "nl": _2, "ns": _2, "nt": _2, "nu": _2, "on": _2, "pe": _2, "qc": _2, "sk": _2, "yk": _2, "gc": _2, "barsy": _3, "awdev": _6, "co": _3, "no-ip": _3, "onid": _3, "myspreadshop": _3, "box": _3 }], "cat": _2, "cc": [1, { "cleverapps": _3, "cloud-ip": _3, "cloudns": _3, "ccwu": _3, "ftpaccess": _3, "game-server": _3, "myphotos": _3, "scrapping": _3, "twmail": _3, "csx": _3, "fantasyleague": _3, "spawn": [0, { "instances": _3 }], "ec": _3, "eu": _3, "gu": _3, "uk": _3, "us": _3 }], "cd": [1, { "gov": _2, "cc": _3 }], "cf": _2, "cg": _2, "ch": [1, { "square7": _3, "cloudns": _3, "cloudscale": [0, { "cust": _3, "lpg": _23, "rma": _23 }], "objectstorage": [0, { "lpg": _3, "rma": _3 }], "flow": [0, { "ae": [0, { "alp1": _3 }], "appengine": _3 }], "linkyard-cloud": _3, "gotdns": _3, "dnsking": _3, "123website": _3, "myspreadshop": _3, "firenet": [0, { "*": _3, "svc": _6 }], "12hp": _3, "2ix": _3, "4lima": _3, "lima-city": _3 }], "ci": [1, { "ac": _2, "xn--aroport-bya": _2, "aéroport": _2, "asso": _2, "co": _2, "com": _2, "ed": _2, "edu": _2, "go": _2, "gouv": _2, "int": _2, "net": _2, "or": _2, "org": _2, "us": _3 }], "ck": _21, "cl": [1, { "co": _2, "gob": _2, "gov": _2, "mil": _2, "cloudns": _3 }], "cm": [1, { "co": _2, "com": _2, "gov": _2, "net": _2 }], "cn": [1, { "ac": _2, "com": [1, { "amazonaws": [0, { "cn-north-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "rds": _6, "dualstack": _26, "s3": _3, "s3-accesspoint": _3, "s3-deprecated": _3, "s3-object-lambda": _3, "s3-website": _3 }], "cn-northwest-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "rds": _6, "dualstack": _27, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3 }], "compute": _6, "airflow": [0, { "cn-north-1": _6, "cn-northwest-1": _6 }], "eb": [0, { "cn-north-1": _3, "cn-northwest-1": _3 }], "elb": _6 }], "amazonwebservices": [0, { "on": [0, { "cn-north-1": _12, "cn-northwest-1": _12 }] }], "sagemaker": [0, { "cn-north-1": _15, "cn-northwest-1": _15 }] }], "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "xn--55qx5d": _2, "公司": _2, "xn--od0alg": _2, "網絡": _2, "xn--io0a7i": _2, "网络": _2, "ah": _2, "bj": _2, "cq": _2, "fj": _2, "gd": _2, "gs": _2, "gx": _2, "gz": _2, "ha": _2, "hb": _2, "he": _2, "hi": _2, "hk": _2, "hl": _2, "hn": _2, "jl": _2, "js": _2, "jx": _2, "ln": _2, "mo": _2, "nm": _2, "nx": _2, "qh": _2, "sc": _2, "sd": _2, "sh": [1, { "as": _3 }], "sn": _2, "sx": _2, "tj": _2, "tw": _2, "xj": _2, "xz": _2, "yn": _2, "zj": _2, "canva-apps": _3, "canvasite": _25, "myqnapcloud": _3, "quickconnect": _28 }], "co": [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "nom": _2, "org": _2, "carrd": _3, "crd": _3, "otap": _6, "hidns": _3, "leadpages": _3, "lpages": _3, "mypi": _3, "xmit": _6, "rdpa": [0, { "clusters": _6, "srvrless": _6 }], "firewalledreplit": _9, "repl": _9, "supabase": [2, { "realtime": _3, "storage": _3 }], "umso": _3 }], "com": [1, { "a2hosted": _3, "cpserver": _3, "adobeaemcloud": [2, { "dev": _6 }], "africa": _3, "auiusercontent": _6, "aivencloud": _3, "alibabacloudcs": _3, "kasserver": _3, "amazonaws": [0, { "af-south-1": _31, "ap-east-1": _32, "ap-northeast-1": _33, "ap-northeast-2": _33, "ap-northeast-3": _31, "ap-south-1": _33, "ap-south-2": _34, "ap-southeast-1": _33, "ap-southeast-2": _33, "ap-southeast-3": _34, "ap-southeast-4": _34, "ap-southeast-5": [0, { "execute-api": _3, "dualstack": _26, "s3": _3, "s3-accesspoint": _3, "s3-deprecated": _3, "s3-object-lambda": _3, "s3-website": _3 }], "ca-central-1": _36, "ca-west-1": _37, "eu-central-1": _33, "eu-central-2": _34, "eu-north-1": _32, "eu-south-1": _31, "eu-south-2": _34, "eu-west-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _26, "s3": _3, "s3-accesspoint": _3, "s3-deprecated": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _29, "cloud9": _30 }], "eu-west-2": _32, "eu-west-3": _31, "il-central-1": [0, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _26, "s3": _3, "s3-accesspoint": _3, "s3-object-lambda": _3, "s3-website": _3, "aws-cloud9": _29, "cloud9": [0, { "vfs": _3 }] }], "me-central-1": _34, "me-south-1": _32, "sa-east-1": _31, "us-east-1": [2, { "execute-api": _3, "emrappui-prod": _3, "emrnotebooks-prod": _3, "emrstudio-prod": _3, "dualstack": _35, "s3": _3, "s3-accesspoint": _3, "s3-accesspoint-fips": _3, "s3-deprecated": _3, "s3-fips": _3, "s3-object-lambda": _3, "s3-website": _3, "analytics-gateway": _3, "aws-cloud9": _29, "cloud9": _30 }], "us-east-2": _38, "us-gov-east-1": _37, "us-gov-west-1": _37, "us-west-1": _36, "us-west-2": _38, "compute": _6, "compute-1": _6, "airflow": [0, { "af-south-1": _6, "ap-east-1": _6, "ap-northeast-1": _6, "ap-northeast-2": _6, "ap-northeast-3": _6, "ap-south-1": _6, "ap-south-2": _6, "ap-southeast-1": _6, "ap-southeast-2": _6, "ap-southeast-3": _6, "ap-southeast-4": _6, "ap-southeast-5": _6, "ap-southeast-7": _6, "ca-central-1": _6, "ca-west-1": _6, "eu-central-1": _6, "eu-central-2": _6, "eu-north-1": _6, "eu-south-1": _6, "eu-south-2": _6, "eu-west-1": _6, "eu-west-2": _6, "eu-west-3": _6, "il-central-1": _6, "me-central-1": _6, "me-south-1": _6, "sa-east-1": _6, "us-east-1": _6, "us-east-2": _6, "us-west-1": _6, "us-west-2": _6 }], "rds": [0, { "af-south-1": _6, "ap-east-1": _6, "ap-east-2": _6, "ap-northeast-1": _6, "ap-northeast-2": _6, "ap-northeast-3": _6, "ap-south-1": _6, "ap-south-2": _6, "ap-southeast-1": _6, "ap-southeast-2": _6, "ap-southeast-3": _6, "ap-southeast-4": _6, "ap-southeast-5": _6, "ap-southeast-6": _6, "ap-southeast-7": _6, "ca-central-1": _6, "ca-west-1": _6, "eu-central-1": _6, "eu-central-2": _6, "eu-west-1": _6, "eu-west-2": _6, "eu-west-3": _6, "il-central-1": _6, "me-central-1": _6, "me-south-1": _6, "mx-central-1": _6, "sa-east-1": _6, "us-east-1": _6, "us-east-2": _6, "us-gov-east-1": _6, "us-gov-west-1": _6, "us-northeast-1": _6, "us-west-1": _6, "us-west-2": _6 }], "s3": _3, "s3-1": _3, "s3-ap-east-1": _3, "s3-ap-northeast-1": _3, "s3-ap-northeast-2": _3, "s3-ap-northeast-3": _3, "s3-ap-south-1": _3, "s3-ap-southeast-1": _3, "s3-ap-southeast-2": _3, "s3-ca-central-1": _3, "s3-eu-central-1": _3, "s3-eu-north-1": _3, "s3-eu-west-1": _3, "s3-eu-west-2": _3, "s3-eu-west-3": _3, "s3-external-1": _3, "s3-fips-us-gov-east-1": _3, "s3-fips-us-gov-west-1": _3, "s3-global": [0, { "accesspoint": [0, { "mrap": _3 }] }], "s3-me-south-1": _3, "s3-sa-east-1": _3, "s3-us-east-2": _3, "s3-us-gov-east-1": _3, "s3-us-gov-west-1": _3, "s3-us-west-1": _3, "s3-us-west-2": _3, "s3-website-ap-northeast-1": _3, "s3-website-ap-southeast-1": _3, "s3-website-ap-southeast-2": _3, "s3-website-eu-west-1": _3, "s3-website-sa-east-1": _3, "s3-website-us-east-1": _3, "s3-website-us-gov-west-1": _3, "s3-website-us-west-1": _3, "s3-website-us-west-2": _3, "elb": _6 }], "amazoncognito": [0, { "af-south-1": _39, "ap-east-1": _39, "ap-northeast-1": _39, "ap-northeast-2": _39, "ap-northeast-3": _39, "ap-south-1": _39, "ap-south-2": _39, "ap-southeast-1": _39, "ap-southeast-2": _39, "ap-southeast-3": _39, "ap-southeast-4": _39, "ap-southeast-5": _39, "ap-southeast-7": _39, "ca-central-1": _39, "ca-west-1": _39, "eu-central-1": _39, "eu-central-2": _39, "eu-north-1": _39, "eu-south-1": _39, "eu-south-2": _39, "eu-west-1": _39, "eu-west-2": _39, "eu-west-3": _39, "il-central-1": _39, "me-central-1": _39, "me-south-1": _39, "mx-central-1": _39, "sa-east-1": _39, "us-east-1": _40, "us-east-2": _40, "us-gov-east-1": _41, "us-gov-west-1": _41, "us-west-1": _40, "us-west-2": _40 }], "amplifyapp": _3, "awsapprunner": _6, "awsapps": _3, "elasticbeanstalk": [2, { "af-south-1": _3, "ap-east-1": _3, "ap-northeast-1": _3, "ap-northeast-2": _3, "ap-northeast-3": _3, "ap-south-1": _3, "ap-southeast-1": _3, "ap-southeast-2": _3, "ap-southeast-3": _3, "ap-southeast-5": _3, "ap-southeast-7": _3, "ca-central-1": _3, "eu-central-1": _3, "eu-north-1": _3, "eu-south-1": _3, "eu-south-2": _3, "eu-west-1": _3, "eu-west-2": _3, "eu-west-3": _3, "il-central-1": _3, "me-central-1": _3, "me-south-1": _3, "sa-east-1": _3, "us-east-1": _3, "us-east-2": _3, "us-gov-east-1": _3, "us-gov-west-1": _3, "us-west-1": _3, "us-west-2": _3 }], "awsglobalaccelerator": _3, "siiites": _3, "appspacehosted": _3, "appspaceusercontent": _3, "on-aptible": _3, "myasustor": _3, "balena-devices": _3, "boutir": _3, "bplaced": _3, "cafjs": _3, "canva-apps": _3, "canva-hosted-embed": _3, "canvacode": _3, "rice-labs": _3, "cdn77-storage": _3, "br": _3, "cn": _3, "de": _3, "eu": _3, "jpn": _3, "mex": _3, "ru": _3, "sa": _3, "uk": _3, "us": _3, "za": _3, "clever-cloud": [0, { "services": _6 }], "abrdns": _3, "dnsabr": _3, "ip-ddns": _3, "jdevcloud": _3, "wpdevcloud": _3, "cf-ipfs": _3, "cloudflare-ipfs": _3, "trycloudflare": _3, "co": _3, "devinapps": _6, "builtwithdark": _3, "datadetect": [0, { "demo": _3, "instance": _3 }], "dattolocal": _3, "dattorelay": _3, "dattoweb": _3, "mydatto": _3, "digitaloceanspaces": _6, "discordsays": _3, "discordsez": _3, "drayddns": _3, "dreamhosters": _3, "durumis": _3, "blogdns": _3, "cechire": _3, "dnsalias": _3, "dnsdojo": _3, "doesntexist": _3, "dontexist": _3, "doomdns": _3, "dyn-o-saur": _3, "dynalias": _3, "dyndns-at-home": _3, "dyndns-at-work": _3, "dyndns-blog": _3, "dyndns-free": _3, "dyndns-home": _3, "dyndns-ip": _3, "dyndns-mail": _3, "dyndns-office": _3, "dyndns-pics": _3, "dyndns-remote": _3, "dyndns-server": _3, "dyndns-web": _3, "dyndns-wiki": _3, "dyndns-work": _3, "est-a-la-maison": _3, "est-a-la-masion": _3, "est-le-patron": _3, "est-mon-blogueur": _3, "from-ak": _3, "from-al": _3, "from-ar": _3, "from-ca": _3, "from-ct": _3, "from-dc": _3, "from-de": _3, "from-fl": _3, "from-ga": _3, "from-hi": _3, "from-ia": _3, "from-id": _3, "from-il": _3, "from-in": _3, "from-ks": _3, "from-ky": _3, "from-ma": _3, "from-md": _3, "from-mi": _3, "from-mn": _3, "from-mo": _3, "from-ms": _3, "from-mt": _3, "from-nc": _3, "from-nd": _3, "from-ne": _3, "from-nh": _3, "from-nj": _3, "from-nm": _3, "from-nv": _3, "from-oh": _3, "from-ok": _3, "from-or": _3, "from-pa": _3, "from-pr": _3, "from-ri": _3, "from-sc": _3, "from-sd": _3, "from-tn": _3, "from-tx": _3, "from-ut": _3, "from-va": _3, "from-vt": _3, "from-wa": _3, "from-wi": _3, "from-wv": _3, "from-wy": _3, "getmyip": _3, "gotdns": _3, "hobby-site": _3, "homelinux": _3, "homeunix": _3, "iamallama": _3, "is-a-anarchist": _3, "is-a-blogger": _3, "is-a-bookkeeper": _3, "is-a-bulls-fan": _3, "is-a-caterer": _3, "is-a-chef": _3, "is-a-conservative": _3, "is-a-cpa": _3, "is-a-cubicle-slave": _3, "is-a-democrat": _3, "is-a-designer": _3, "is-a-doctor": _3, "is-a-financialadvisor": _3, "is-a-geek": _3, "is-a-green": _3, "is-a-guru": _3, "is-a-hard-worker": _3, "is-a-hunter": _3, "is-a-landscaper": _3, "is-a-lawyer": _3, "is-a-liberal": _3, "is-a-libertarian": _3, "is-a-llama": _3, "is-a-musician": _3, "is-a-nascarfan": _3, "is-a-nurse": _3, "is-a-painter": _3, "is-a-personaltrainer": _3, "is-a-photographer": _3, "is-a-player": _3, "is-a-republican": _3, "is-a-rockstar": _3, "is-a-socialist": _3, "is-a-student": _3, "is-a-teacher": _3, "is-a-techie": _3, "is-a-therapist": _3, "is-an-accountant": _3, "is-an-actor": _3, "is-an-actress": _3, "is-an-anarchist": _3, "is-an-artist": _3, "is-an-engineer": _3, "is-an-entertainer": _3, "is-certified": _3, "is-gone": _3, "is-into-anime": _3, "is-into-cars": _3, "is-into-cartoons": _3, "is-into-games": _3, "is-leet": _3, "is-not-certified": _3, "is-slick": _3, "is-uberleet": _3, "is-with-theband": _3, "isa-geek": _3, "isa-hockeynut": _3, "issmarterthanyou": _3, "likes-pie": _3, "likescandy": _3, "neat-url": _3, "saves-the-whales": _3, "selfip": _3, "sells-for-less": _3, "sells-for-u": _3, "servebbs": _3, "simple-url": _3, "space-to-rent": _3, "teaches-yoga": _3, "writesthisblog": _3, "1cooldns": _3, "bumbleshrimp": _3, "ddnsfree": _3, "ddnsgeek": _3, "ddnsguru": _3, "dynuddns": _3, "dynuhosting": _3, "giize": _3, "gleeze": _3, "kozow": _3, "loseyourip": _3, "ooguy": _3, "pivohosting": _3, "theworkpc": _3, "wiredbladehosting": _3, "emergentagent": [0, { "preview": _3 }], "mytuleap": _3, "tuleap-partners": _3, "encoreapi": _3, "evennode": [0, { "eu-1": _3, "eu-2": _3, "eu-3": _3, "eu-4": _3, "us-1": _3, "us-2": _3, "us-3": _3, "us-4": _3 }], "onfabrica": _3, "fastly-edge": _3, "fastly-terrarium": _3, "fastvps-server": _3, "mydobiss": _3, "firebaseapp": _3, "fldrv": _3, "framercanvas": _3, "freebox-os": _3, "freeboxos": _3, "freemyip": _3, "aliases121": _3, "gentapps": _3, "gentlentapis": _3, "githubusercontent": _3, "0emm": _6, "appspot": [2, { "r": _6 }], "blogspot": _3, "codespot": _3, "googleapis": _3, "googlecode": _3, "pagespeedmobilizer": _3, "withgoogle": _3, "withyoutube": _3, "grayjayleagues": _3, "hatenablog": _3, "hatenadiary": _3, "hercules-app": _3, "hercules-dev": _3, "herokuapp": _3, "gr": _3, "smushcdn": _3, "wphostedmail": _3, "wpmucdn": _3, "pixolino": _3, "apps-1and1": _3, "live-website": _3, "webspace-host": _3, "dopaas": _3, "hosted-by-previder": _43, "hosteur": [0, { "rag-cloud": _3, "rag-cloud-ch": _3 }], "ik-server": [0, { "jcloud": _3, "jcloud-ver-jpc": _3 }], "jelastic": [0, { "demo": _3 }], "massivegrid": _43, "wafaicloud": [0, { "jed": _3, "ryd": _3 }], "eu1-plenit": _3, "la1-plenit": _3, "us1-plenit": _3, "webadorsite": _3, "on-forge": _3, "on-vapor": _3, "lpusercontent": _3, "linode": [0, { "members": _3, "nodebalancer": _6 }], "linodeobjects": _6, "linodeusercontent": [0, { "ip": _3 }], "localtonet": _3, "lovableproject": _3, "barsycenter": _3, "barsyonline": _3, "lutrausercontent": _6, "magicpatternsapp": _3, "modelscape": _3, "mwcloudnonprod": _3, "polyspace": _3, "mazeplay": _3, "miniserver": _3, "atmeta": _3, "fbsbx": _42, "meteorapp": _44, "routingthecloud": _3, "same-app": _3, "same-preview": _3, "mydbserver": _3, "mochausercontent": _3, "hostedpi": _3, "mythic-beasts": [0, { "caracal": _3, "customer": _3, "fentiger": _3, "lynx": _3, "ocelot": _3, "oncilla": _3, "onza": _3, "sphinx": _3, "vs": _3, "x": _3, "yali": _3 }], "nospamproxy": [0, { "cloud": [2, { "o365": _3 }] }], "4u": _3, "nfshost": _3, "3utilities": _3, "blogsyte": _3, "ciscofreak": _3, "damnserver": _3, "ddnsking": _3, "ditchyourip": _3, "dnsiskinky": _3, "dynns": _3, "geekgalaxy": _3, "health-carereform": _3, "homesecuritymac": _3, "homesecuritypc": _3, "myactivedirectory": _3, "mysecuritycamera": _3, "myvnc": _3, "net-freaks": _3, "onthewifi": _3, "point2this": _3, "quicksytes": _3, "securitytactics": _3, "servebeer": _3, "servecounterstrike": _3, "serveexchange": _3, "serveftp": _3, "servegame": _3, "servehalflife": _3, "servehttp": _3, "servehumour": _3, "serveirc": _3, "servemp3": _3, "servep2p": _3, "servepics": _3, "servequake": _3, "servesarcasm": _3, "stufftoread": _3, "unusualperson": _3, "workisboring": _3, "myiphost": _3, "observableusercontent": [0, { "static": _3 }], "simplesite": _3, "oaiusercontent": _6, "orsites": _3, "operaunite": _3, "customer-oci": [0, { "*": _3, "oci": _6, "ocp": _6, "ocs": _6 }], "oraclecloudapps": _6, "oraclegovcloudapps": _6, "authgear-staging": _3, "authgearapps": _3, "outsystemscloud": _3, "ownprovider": _3, "pgfog": _3, "pagexl": _3, "gotpantheon": _3, "paywhirl": _6, "forgeblocks": _3, "upsunapp": _3, "postman-echo": _3, "prgmr": [0, { "xen": _3 }], "project-study": [0, { "dev": _3 }], "pythonanywhere": _44, "qa2": _3, "alpha-myqnapcloud": _3, "dev-myqnapcloud": _3, "mycloudnas": _3, "mynascloud": _3, "myqnapcloud": _3, "qualifioapp": _3, "ladesk": _3, "qualyhqpartner": _6, "qualyhqportal": _6, "qbuser": _3, "quipelements": _6, "rackmaze": _3, "readthedocs-hosted": _3, "rhcloud": _3, "onrender": _3, "render": _45, "subsc-pay": _3, "180r": _3, "dojin": _3, "sakuratan": _3, "sakuraweb": _3, "x0": _3, "code": [0, { "builder": _6, "dev-builder": _6, "stg-builder": _6 }], "salesforce": [0, { "platform": [0, { "code-builder-stg": [0, { "test": [0, { "001": _6 }] }] }] }], "logoip": _3, "scrysec": _3, "firewall-gateway": _3, "myshopblocks": _3, "myshopify": _3, "shopitsite": _3, "1kapp": _3, "appchizi": _3, "applinzi": _3, "sinaapp": _3, "vipsinaapp": _3, "streamlitapp": _3, "try-snowplow": _3, "playstation-cloud": _3, "myspreadshop": _3, "w-corp-staticblitz": _3, "w-credentialless-staticblitz": _3, "w-staticblitz": _3, "stackhero-network": _3, "stdlib": [0, { "api": _3 }], "strapiapp": [2, { "media": _3 }], "streak-link": _3, "streaklinks": _3, "streakusercontent": _3, "temp-dns": _3, "dsmynas": _3, "familyds": _3, "mytabit": _3, "taveusercontent": _3, "tb-hosting": _46, "reservd": _3, "thingdustdata": _3, "townnews-staging": _3, "typeform": [0, { "pro": _3 }], "hk": _3, "it": _3, "deus-canvas": _3, "vultrobjects": _6, "wafflecell": _3, "hotelwithflight": _3, "reserve-online": _3, "cprapid": _3, "pleskns": _3, "remotewd": _3, "wiardweb": [0, { "pages": _3 }], "base44-sandbox": _3, "wixsite": _3, "wixstudio": _3, "messwithdns": _3, "woltlab-demo": _3, "wpenginepowered": [2, { "js": _3 }], "xnbay": [2, { "u2": _3, "u2-local": _3 }], "xtooldevice": _3, "yolasite": _3 }], "coop": _2, "cr": [1, { "ac": _2, "co": _2, "ed": _2, "fi": _2, "go": _2, "or": _2, "sa": _2 }], "cu": [1, { "com": _2, "edu": _2, "gob": _2, "inf": _2, "nat": _2, "net": _2, "org": _2 }], "cv": [1, { "com": _2, "edu": _2, "id": _2, "int": _2, "net": _2, "nome": _2, "org": _2, "publ": _2 }], "cw": _47, "cx": [1, { "gov": _2, "cloudns": _3, "ath": _3, "info": _3, "assessments": _3, "calculators": _3, "funnels": _3, "paynow": _3, "quizzes": _3, "researched": _3, "tests": _3 }], "cy": [1, { "ac": _2, "biz": _2, "com": [1, { "scaleforce": _48 }], "ekloges": _2, "gov": _2, "ltd": _2, "mil": _2, "net": _2, "org": _2, "press": _2, "pro": _2, "tm": _2 }], "cz": [1, { "gov": _2, "contentproxy9": [0, { "rsc": _3 }], "realm": _3, "e4": _3, "co": _3, "metacentrum": [0, { "cloud": _6, "custom": _3 }], "muni": [0, { "cloud": [0, { "flt": _3, "usr": _3 }] }] }], "de": [1, { "bplaced": _3, "square7": _3, "bwcloud-os-instance": _6, "com": _3, "cosidns": _49, "dnsupdater": _3, "dynamisches-dns": _3, "internet-dns": _3, "l-o-g-i-n": _3, "ddnss": [2, { "dyn": _3, "dyndns": _3 }], "dyn-ip24": _3, "dyndns1": _3, "home-webserver": [2, { "dyn": _3 }], "myhome-server": _3, "dnshome": _3, "fuettertdasnetz": _3, "isteingeek": _3, "istmein": _3, "lebtimnetz": _3, "leitungsen": _3, "traeumtgerade": _3, "frusky": _6, "goip": _3, "xn--gnstigbestellen-zvb": _3, "günstigbestellen": _3, "xn--gnstigliefern-wob": _3, "günstigliefern": _3, "hs-heilbronn": [0, { "it": [0, { "pages": _3, "pages-research": _3 }] }], "dyn-berlin": _3, "in-berlin": _3, "in-brb": _3, "in-butter": _3, "in-dsl": _3, "in-vpn": _3, "iservschule": _3, "mein-iserv": _3, "schuldock": _3, "schulplattform": _3, "schulserver": _3, "test-iserv": _3, "keymachine": _3, "co": _3, "git-repos": _3, "lcube-server": _3, "svn-repos": _3, "barsy": _3, "webspaceconfig": _3, "123webseite": _3, "rub": _3, "ruhr-uni-bochum": [2, { "noc": [0, { "io": _3 }] }], "logoip": _3, "firewall-gateway": _3, "my-gateway": _3, "my-router": _3, "spdns": _3, "my": _3, "speedpartner": [0, { "customer": _3 }], "myspreadshop": _3, "taifun-dns": _3, "12hp": _3, "2ix": _3, "4lima": _3, "lima-city": _3, "virtual-user": _3, "virtualuser": _3, "community-pro": _3, "diskussionsbereich": _3, "xenonconnect": _6 }], "dj": _2, "dk": [1, { "biz": _3, "co": _3, "firm": _3, "reg": _3, "store": _3, "123hjemmeside": _3, "myspreadshop": _3 }], "dm": _52, "do": [1, { "art": _2, "com": _2, "edu": _2, "gob": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "sld": _2, "web": _2 }], "dz": [1, { "art": _2, "asso": _2, "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "pol": _2, "soc": _2, "tm": _2 }], "ec": [1, { "abg": _2, "adm": _2, "agron": _2, "arqt": _2, "art": _2, "bar": _2, "chef": _2, "com": _2, "cont": _2, "cpa": _2, "cue": _2, "dent": _2, "dgn": _2, "disco": _2, "doc": _2, "edu": _2, "eng": _2, "esm": _2, "fin": _2, "fot": _2, "gal": _2, "gob": _2, "gov": _2, "gye": _2, "ibr": _2, "info": _2, "k12": _2, "lat": _2, "loj": _2, "med": _2, "mil": _2, "mktg": _2, "mon": _2, "net": _2, "ntr": _2, "odont": _2, "org": _2, "pro": _2, "prof": _2, "psic": _2, "psiq": _2, "pub": _2, "rio": _2, "rrpp": _2, "sal": _2, "tech": _2, "tul": _2, "tur": _2, "uio": _2, "vet": _2, "xxx": _2, "base": _3, "official": _3 }], "edu": [1, { "rit": [0, { "git-pages": _3 }] }], "ee": [1, { "aip": _2, "com": _2, "edu": _2, "fie": _2, "gov": _2, "lib": _2, "med": _2, "org": _2, "pri": _2, "riik": _2 }], "eg": [1, { "ac": _2, "com": _2, "edu": _2, "eun": _2, "gov": _2, "info": _2, "me": _2, "mil": _2, "name": _2, "net": _2, "org": _2, "sci": _2, "sport": _2, "tv": _2 }], "er": _21, "es": [1, { "com": _2, "edu": _2, "gob": _2, "nom": _2, "org": _2, "123miweb": _3, "myspreadshop": _3 }], "et": [1, { "biz": _2, "com": _2, "edu": _2, "gov": _2, "info": _2, "name": _2, "net": _2, "org": _2 }], "eu": [1, { "amazonwebservices": [0, { "on": [0, { "eusc-de-east-1": [0, { "cognito-idp": _39 }] }] }], "cloudns": _3, "prvw": _3, "deuxfleurs": _3, "dogado": [0, { "jelastic": _3 }], "barsy": _3, "spdns": _3, "nxa": _6, "directwp": _3, "transurl": _6 }], "fi": [1, { "aland": _2, "dy": _3, "xn--hkkinen-5wa": _3, "häkkinen": _3, "iki": _3, "cloudplatform": [0, { "fi": _3 }], "datacenter": [0, { "demo": _3, "paas": _3 }], "kapsi": _3, "123kotisivu": _3, "myspreadshop": _3 }], "fj": [1, { "ac": _2, "biz": _2, "com": _2, "edu": _2, "gov": _2, "id": _2, "info": _2, "mil": _2, "name": _2, "net": _2, "org": _2, "pro": _2 }], "fk": _21, "fm": [1, { "com": _2, "edu": _2, "net": _2, "org": _2, "radio": _3, "user": _6 }], "fo": _2, "fr": [1, { "asso": _2, "com": _2, "gouv": _2, "nom": _2, "prd": _2, "tm": _2, "avoues": _2, "cci": _2, "greta": _2, "huissier-justice": _2, "fbx-os": _3, "fbxos": _3, "freebox-os": _3, "freeboxos": _3, "goupile": _3, "123siteweb": _3, "on-web": _3, "chirurgiens-dentistes-en-france": _3, "dedibox": _3, "aeroport": _3, "avocat": _3, "chambagri": _3, "chirurgiens-dentistes": _3, "experts-comptables": _3, "medecin": _3, "notaires": _3, "pharmacien": _3, "port": _3, "veterinaire": _3, "myspreadshop": _3, "ynh": _3 }], "ga": _2, "gb": _2, "gd": [1, { "edu": _2, "gov": _2 }], "ge": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "pvt": _2, "school": _2 }], "gf": _2, "gg": [1, { "co": _2, "net": _2, "org": _2, "ply": [0, { "at": _6, "d6": _3 }], "botdash": _3, "kaas": _3, "stackit": _3, "panel": [2, { "daemon": _3 }] }], "gh": [1, { "biz": _2, "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2 }], "gi": [1, { "com": _2, "edu": _2, "gov": _2, "ltd": _2, "mod": _2, "org": _2 }], "gl": [1, { "co": _2, "com": _2, "edu": _2, "net": _2, "org": _2 }], "gm": _2, "gn": [1, { "ac": _2, "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2 }], "gov": _2, "gp": [1, { "asso": _2, "com": _2, "edu": _2, "mobi": _2, "net": _2, "org": _2 }], "gq": _2, "gr": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "barsy": _3, "simplesite": _3 }], "gs": _2, "gt": [1, { "com": _2, "edu": _2, "gob": _2, "ind": _2, "mil": _2, "net": _2, "org": _2 }], "gu": [1, { "com": _2, "edu": _2, "gov": _2, "guam": _2, "info": _2, "net": _2, "org": _2, "web": _2 }], "gw": [1, { "nx": _3 }], "gy": _52, "hk": [1, { "com": _2, "edu": _2, "gov": _2, "idv": _2, "net": _2, "org": _2, "xn--ciqpn": _2, "个人": _2, "xn--gmqw5a": _2, "個人": _2, "xn--55qx5d": _2, "公司": _2, "xn--mxtq1m": _2, "政府": _2, "xn--lcvr32d": _2, "敎育": _2, "xn--wcvs22d": _2, "教育": _2, "xn--gmq050i": _2, "箇人": _2, "xn--uc0atv": _2, "組織": _2, "xn--uc0ay4a": _2, "組织": _2, "xn--od0alg": _2, "網絡": _2, "xn--zf0avx": _2, "網络": _2, "xn--mk0axi": _2, "组織": _2, "xn--tn0ag": _2, "组织": _2, "xn--od0aq3b": _2, "网絡": _2, "xn--io0a7i": _2, "网络": _2, "inc": _3, "ltd": _3 }], "hm": _2, "hn": [1, { "com": _2, "edu": _2, "gob": _2, "mil": _2, "net": _2, "org": _2 }], "hr": [1, { "com": _2, "from": _2, "iz": _2, "name": _2, "brendly": _20 }], "ht": [1, { "adult": _2, "art": _2, "asso": _2, "com": _2, "coop": _2, "edu": _2, "firm": _2, "gouv": _2, "info": _2, "med": _2, "net": _2, "org": _2, "perso": _2, "pol": _2, "pro": _2, "rel": _2, "shop": _2, "rt": _3 }], "hu": [1, { "2000": _2, "agrar": _2, "bolt": _2, "casino": _2, "city": _2, "co": _2, "erotica": _2, "erotika": _2, "film": _2, "forum": _2, "games": _2, "hotel": _2, "info": _2, "ingatlan": _2, "jogasz": _2, "konyvelo": _2, "lakas": _2, "media": _2, "news": _2, "org": _2, "priv": _2, "reklam": _2, "sex": _2, "shop": _2, "sport": _2, "suli": _2, "szex": _2, "tm": _2, "tozsde": _2, "utazas": _2, "video": _2 }], "id": [1, { "ac": _2, "biz": _2, "co": _2, "desa": _2, "go": _2, "kop": _2, "mil": _2, "my": _2, "net": _2, "or": _2, "ponpes": _2, "sch": _2, "web": _2, "xn--9tfky": _2, "ᬩᬮᬶ": _2, "e": _3, "zone": _3 }], "ie": [1, { "gov": _2, "myspreadshop": _3 }], "il": [1, { "ac": _2, "co": [1, { "ravpage": _3, "mytabit": _3, "tabitorder": _3 }], "gov": _2, "idf": _2, "k12": _2, "muni": _2, "net": _2, "org": _2 }], "xn--4dbrk0ce": [1, { "xn--4dbgdty6c": _2, "xn--5dbhl8d": _2, "xn--8dbq2a": _2, "xn--hebda8b": _2 }], "ישראל": [1, { "אקדמיה": _2, "ישוב": _2, "צהל": _2, "ממשל": _2 }], "im": [1, { "ac": _2, "co": [1, { "ltd": _2, "plc": _2 }], "com": _2, "net": _2, "org": _2, "tt": _2, "tv": _2 }], "in": [1, { "5g": _2, "6g": _2, "ac": _2, "ai": _2, "am": _2, "bank": _2, "bihar": _2, "biz": _2, "business": _2, "ca": _2, "cn": _2, "co": _2, "com": _2, "coop": _2, "cs": _2, "delhi": _2, "dr": _2, "edu": _2, "er": _2, "fin": _2, "firm": _2, "gen": _2, "gov": _2, "gujarat": _2, "ind": _2, "info": _2, "int": _2, "internet": _2, "io": _2, "me": _2, "mil": _2, "net": _2, "nic": _2, "org": _2, "pg": _2, "post": _2, "pro": _2, "res": _2, "travel": _2, "tv": _2, "uk": _2, "up": _2, "us": _2, "cloudns": _3, "barsy": _3, "web": _3, "indevs": _3, "supabase": _3 }], "info": [1, { "cloudns": _3, "dynamic-dns": _3, "barrel-of-knowledge": _3, "barrell-of-knowledge": _3, "dyndns": _3, "for-our": _3, "groks-the": _3, "groks-this": _3, "here-for-more": _3, "knowsitall": _3, "selfip": _3, "webhop": _3, "barsy": _3, "mayfirst": _3, "mittwald": _3, "mittwaldserver": _3, "typo3server": _3, "dvrcam": _3, "ilovecollege": _3, "no-ip": _3, "forumz": _3, "nsupdate": _3, "dnsupdate": _3, "v-info": _3 }], "int": [1, { "eu": _2 }], "io": [1, { "2038": _3, "co": _2, "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "nom": _2, "org": _2, "on-acorn": _6, "myaddr": _3, "apigee": _3, "b-data": _3, "beagleboard": _3, "bitbucket": _3, "bluebite": _3, "boxfuse": _3, "brave": _7, "browsersafetymark": _3, "bubble": _55, "bubbleapps": _3, "bigv": [0, { "uk0": _3 }], "cleverapps": _3, "cloudbeesusercontent": _3, "dappnode": [0, { "dyndns": _3 }], "darklang": _3, "definima": _3, "dedyn": _3, "icp0": _56, "icp1": _56, "qzz": _3, "fh-muenster": _3, "gitbook": _3, "github": _3, "gitlab": _3, "lolipop": _3, "hasura-app": _3, "hostyhosting": _3, "hypernode": _3, "moonscale": _6, "beebyte": _43, "beebyteapp": [0, { "sekd1": _3 }], "jele": _3, "keenetic": _3, "kiloapps": _3, "webthings": _3, "loginline": _3, "barsy": _3, "azurecontainer": _6, "ngrok": [2, { "ap": _3, "au": _3, "eu": _3, "in": _3, "jp": _3, "sa": _3, "us": _3 }], "nodeart": [0, { "stage": _3 }], "pantheonsite": _3, "forgerock": [0, { "id": _3 }], "pstmn": [2, { "mock": _3 }], "protonet": _3, "qcx": [2, { "sys": _6 }], "qoto": _3, "vaporcloud": _3, "myrdbx": _3, "rb-hosting": _46, "on-k3s": _6, "on-rio": _6, "readthedocs": _3, "resindevice": _3, "resinstaging": [0, { "devices": _3 }], "hzc": _3, "sandcats": _3, "scrypted": [0, { "client": _3 }], "mo-siemens": _3, "lair": _42, "stolos": _6, "musician": _3, "utwente": _3, "edugit": _3, "telebit": _3, "thingdust": [0, { "dev": _57, "disrec": _57, "prod": _58, "testing": _57 }], "tickets": _3, "webflow": _3, "webflowtest": _3, "editorx": _3, "wixstudio": _3, "basicserver": _3, "virtualserver": _3 }], "iq": _5, "ir": [1, { "ac": _2, "co": _2, "gov": _2, "id": _2, "net": _2, "org": _2, "sch": _2, "xn--mgba3a4f16a": _2, "ایران": _2, "xn--mgba3a4fra": _2, "ايران": _2, "arvanedge": _3, "vistablog": _3 }], "is": _2, "it": [1, { "edu": _2, "gov": _2, "abr": _2, "abruzzo": _2, "aosta-valley": _2, "aostavalley": _2, "bas": _2, "basilicata": _2, "cal": _2, "calabria": _2, "cam": _2, "campania": _2, "emilia-romagna": _2, "emiliaromagna": _2, "emr": _2, "friuli-v-giulia": _2, "friuli-ve-giulia": _2, "friuli-vegiulia": _2, "friuli-venezia-giulia": _2, "friuli-veneziagiulia": _2, "friuli-vgiulia": _2, "friuliv-giulia": _2, "friulive-giulia": _2, "friulivegiulia": _2, "friulivenezia-giulia": _2, "friuliveneziagiulia": _2, "friulivgiulia": _2, "fvg": _2, "laz": _2, "lazio": _2, "lig": _2, "liguria": _2, "lom": _2, "lombardia": _2, "lombardy": _2, "lucania": _2, "mar": _2, "marche": _2, "mol": _2, "molise": _2, "piedmont": _2, "piemonte": _2, "pmn": _2, "pug": _2, "puglia": _2, "sar": _2, "sardegna": _2, "sardinia": _2, "sic": _2, "sicilia": _2, "sicily": _2, "taa": _2, "tos": _2, "toscana": _2, "trentin-sud-tirol": _2, "xn--trentin-sd-tirol-rzb": _2, "trentin-süd-tirol": _2, "trentin-sudtirol": _2, "xn--trentin-sdtirol-7vb": _2, "trentin-südtirol": _2, "trentin-sued-tirol": _2, "trentin-suedtirol": _2, "trentino": _2, "trentino-a-adige": _2, "trentino-aadige": _2, "trentino-alto-adige": _2, "trentino-altoadige": _2, "trentino-s-tirol": _2, "trentino-stirol": _2, "trentino-sud-tirol": _2, "xn--trentino-sd-tirol-c3b": _2, "trentino-süd-tirol": _2, "trentino-sudtirol": _2, "xn--trentino-sdtirol-szb": _2, "trentino-südtirol": _2, "trentino-sued-tirol": _2, "trentino-suedtirol": _2, "trentinoa-adige": _2, "trentinoaadige": _2, "trentinoalto-adige": _2, "trentinoaltoadige": _2, "trentinos-tirol": _2, "trentinostirol": _2, "trentinosud-tirol": _2, "xn--trentinosd-tirol-rzb": _2, "trentinosüd-tirol": _2, "trentinosudtirol": _2, "xn--trentinosdtirol-7vb": _2, "trentinosüdtirol": _2, "trentinosued-tirol": _2, "trentinosuedtirol": _2, "trentinsud-tirol": _2, "xn--trentinsd-tirol-6vb": _2, "trentinsüd-tirol": _2, "trentinsudtirol": _2, "xn--trentinsdtirol-nsb": _2, "trentinsüdtirol": _2, "trentinsued-tirol": _2, "trentinsuedtirol": _2, "tuscany": _2, "umb": _2, "umbria": _2, "val-d-aosta": _2, "val-daosta": _2, "vald-aosta": _2, "valdaosta": _2, "valle-aosta": _2, "valle-d-aosta": _2, "valle-daosta": _2, "valleaosta": _2, "valled-aosta": _2, "valledaosta": _2, "vallee-aoste": _2, "xn--valle-aoste-ebb": _2, "vallée-aoste": _2, "vallee-d-aoste": _2, "xn--valle-d-aoste-ehb": _2, "vallée-d-aoste": _2, "valleeaoste": _2, "xn--valleaoste-e7a": _2, "valléeaoste": _2, "valleedaoste": _2, "xn--valledaoste-ebb": _2, "valléedaoste": _2, "vao": _2, "vda": _2, "ven": _2, "veneto": _2, "ag": _2, "agrigento": _2, "al": _2, "alessandria": _2, "alto-adige": _2, "altoadige": _2, "an": _2, "ancona": _2, "andria-barletta-trani": _2, "andria-trani-barletta": _2, "andriabarlettatrani": _2, "andriatranibarletta": _2, "ao": _2, "aosta": _2, "aoste": _2, "ap": _2, "aq": _2, "aquila": _2, "ar": _2, "arezzo": _2, "ascoli-piceno": _2, "ascolipiceno": _2, "asti": _2, "at": _2, "av": _2, "avellino": _2, "ba": _2, "balsan": _2, "balsan-sudtirol": _2, "xn--balsan-sdtirol-nsb": _2, "balsan-südtirol": _2, "balsan-suedtirol": _2, "bari": _2, "barletta-trani-andria": _2, "barlettatraniandria": _2, "belluno": _2, "benevento": _2, "bergamo": _2, "bg": _2, "bi": _2, "biella": _2, "bl": _2, "bn": _2, "bo": _2, "bologna": _2, "bolzano": _2, "bolzano-altoadige": _2, "bozen": _2, "bozen-sudtirol": _2, "xn--bozen-sdtirol-2ob": _2, "bozen-südtirol": _2, "bozen-suedtirol": _2, "br": _2, "brescia": _2, "brindisi": _2, "bs": _2, "bt": _2, "bulsan": _2, "bulsan-sudtirol": _2, "xn--bulsan-sdtirol-nsb": _2, "bulsan-südtirol": _2, "bulsan-suedtirol": _2, "bz": _2, "ca": _2, "cagliari": _2, "caltanissetta": _2, "campidano-medio": _2, "campidanomedio": _2, "campobasso": _2, "carbonia-iglesias": _2, "carboniaiglesias": _2, "carrara-massa": _2, "carraramassa": _2, "caserta": _2, "catania": _2, "catanzaro": _2, "cb": _2, "ce": _2, "cesena-forli": _2, "xn--cesena-forl-mcb": _2, "cesena-forlì": _2, "cesenaforli": _2, "xn--cesenaforl-i8a": _2, "cesenaforlì": _2, "ch": _2, "chieti": _2, "ci": _2, "cl": _2, "cn": _2, "co": _2, "como": _2, "cosenza": _2, "cr": _2, "cremona": _2, "crotone": _2, "cs": _2, "ct": _2, "cuneo": _2, "cz": _2, "dell-ogliastra": _2, "dellogliastra": _2, "en": _2, "enna": _2, "fc": _2, "fe": _2, "fermo": _2, "ferrara": _2, "fg": _2, "fi": _2, "firenze": _2, "florence": _2, "fm": _2, "foggia": _2, "forli-cesena": _2, "xn--forl-cesena-fcb": _2, "forlì-cesena": _2, "forlicesena": _2, "xn--forlcesena-c8a": _2, "forlìcesena": _2, "fr": _2, "frosinone": _2, "ge": _2, "genoa": _2, "genova": _2, "go": _2, "gorizia": _2, "gr": _2, "grosseto": _2, "iglesias-carbonia": _2, "iglesiascarbonia": _2, "im": _2, "imperia": _2, "is": _2, "isernia": _2, "kr": _2, "la-spezia": _2, "laquila": _2, "laspezia": _2, "latina": _2, "lc": _2, "le": _2, "lecce": _2, "lecco": _2, "li": _2, "livorno": _2, "lo": _2, "lodi": _2, "lt": _2, "lu": _2, "lucca": _2, "macerata": _2, "mantova": _2, "massa-carrara": _2, "massacarrara": _2, "matera": _2, "mb": _2, "mc": _2, "me": _2, "medio-campidano": _2, "mediocampidano": _2, "messina": _2, "mi": _2, "milan": _2, "milano": _2, "mn": _2, "mo": _2, "modena": _2, "monza": _2, "monza-brianza": _2, "monza-e-della-brianza": _2, "monzabrianza": _2, "monzaebrianza": _2, "monzaedellabrianza": _2, "ms": _2, "mt": _2, "na": _2, "naples": _2, "napoli": _2, "no": _2, "novara": _2, "nu": _2, "nuoro": _2, "og": _2, "ogliastra": _2, "olbia-tempio": _2, "olbiatempio": _2, "or": _2, "oristano": _2, "ot": _2, "pa": _2, "padova": _2, "padua": _2, "palermo": _2, "parma": _2, "pavia": _2, "pc": _2, "pd": _2, "pe": _2, "perugia": _2, "pesaro-urbino": _2, "pesarourbino": _2, "pescara": _2, "pg": _2, "pi": _2, "piacenza": _2, "pisa": _2, "pistoia": _2, "pn": _2, "po": _2, "pordenone": _2, "potenza": _2, "pr": _2, "prato": _2, "pt": _2, "pu": _2, "pv": _2, "pz": _2, "ra": _2, "ragusa": _2, "ravenna": _2, "rc": _2, "re": _2, "reggio-calabria": _2, "reggio-emilia": _2, "reggiocalabria": _2, "reggioemilia": _2, "rg": _2, "ri": _2, "rieti": _2, "rimini": _2, "rm": _2, "rn": _2, "ro": _2, "roma": _2, "rome": _2, "rovigo": _2, "sa": _2, "salerno": _2, "sassari": _2, "savona": _2, "si": _2, "siena": _2, "siracusa": _2, "so": _2, "sondrio": _2, "sp": _2, "sr": _2, "ss": _2, "xn--sdtirol-n2a": _2, "südtirol": _2, "suedtirol": _2, "sv": _2, "ta": _2, "taranto": _2, "te": _2, "tempio-olbia": _2, "tempioolbia": _2, "teramo": _2, "terni": _2, "tn": _2, "to": _2, "torino": _2, "tp": _2, "tr": _2, "trani-andria-barletta": _2, "trani-barletta-andria": _2, "traniandriabarletta": _2, "tranibarlettaandria": _2, "trapani": _2, "trento": _2, "treviso": _2, "trieste": _2, "ts": _2, "turin": _2, "tv": _2, "ud": _2, "udine": _2, "urbino-pesaro": _2, "urbinopesaro": _2, "va": _2, "varese": _2, "vb": _2, "vc": _2, "ve": _2, "venezia": _2, "venice": _2, "verbania": _2, "vercelli": _2, "verona": _2, "vi": _2, "vibo-valentia": _2, "vibovalentia": _2, "vicenza": _2, "viterbo": _2, "vr": _2, "vs": _2, "vt": _2, "vv": _2, "ibxos": _3, "iliadboxos": _3, "neen": [0, { "jc": _3 }], "123homepage": _3, "16-b": _3, "32-b": _3, "64-b": _3, "myspreadshop": _3, "syncloud": _3 }], "je": [1, { "co": _2, "net": _2, "org": _2, "of": _3 }], "jm": _21, "jo": [1, { "agri": _2, "ai": _2, "com": _2, "edu": _2, "eng": _2, "fm": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "per": _2, "phd": _2, "sch": _2, "tv": _2 }], "jobs": _2, "jp": [1, { "ac": _2, "ad": _2, "co": _2, "ed": _2, "go": _2, "gr": _2, "lg": _2, "ne": [1, { "aseinet": _54, "gehirn": _3, "ivory": _3, "mail-box": _3, "mints": _3, "mokuren": _3, "opal": _3, "sakura": _3, "sumomo": _3, "topaz": _3 }], "or": _2, "aichi": [1, { "aisai": _2, "ama": _2, "anjo": _2, "asuke": _2, "chiryu": _2, "chita": _2, "fuso": _2, "gamagori": _2, "handa": _2, "hazu": _2, "hekinan": _2, "higashiura": _2, "ichinomiya": _2, "inazawa": _2, "inuyama": _2, "isshiki": _2, "iwakura": _2, "kanie": _2, "kariya": _2, "kasugai": _2, "kira": _2, "kiyosu": _2, "komaki": _2, "konan": _2, "kota": _2, "mihama": _2, "miyoshi": _2, "nishio": _2, "nisshin": _2, "obu": _2, "oguchi": _2, "oharu": _2, "okazaki": _2, "owariasahi": _2, "seto": _2, "shikatsu": _2, "shinshiro": _2, "shitara": _2, "tahara": _2, "takahama": _2, "tobishima": _2, "toei": _2, "togo": _2, "tokai": _2, "tokoname": _2, "toyoake": _2, "toyohashi": _2, "toyokawa": _2, "toyone": _2, "toyota": _2, "tsushima": _2, "yatomi": _2 }], "akita": [1, { "akita": _2, "daisen": _2, "fujisato": _2, "gojome": _2, "hachirogata": _2, "happou": _2, "higashinaruse": _2, "honjo": _2, "honjyo": _2, "ikawa": _2, "kamikoani": _2, "kamioka": _2, "katagami": _2, "kazuno": _2, "kitaakita": _2, "kosaka": _2, "kyowa": _2, "misato": _2, "mitane": _2, "moriyoshi": _2, "nikaho": _2, "noshiro": _2, "odate": _2, "oga": _2, "ogata": _2, "semboku": _2, "yokote": _2, "yurihonjo": _2 }], "aomori": [1, { "aomori": _2, "gonohe": _2, "hachinohe": _2, "hashikami": _2, "hiranai": _2, "hirosaki": _2, "itayanagi": _2, "kuroishi": _2, "misawa": _2, "mutsu": _2, "nakadomari": _2, "noheji": _2, "oirase": _2, "owani": _2, "rokunohe": _2, "sannohe": _2, "shichinohe": _2, "shingo": _2, "takko": _2, "towada": _2, "tsugaru": _2, "tsuruta": _2 }], "chiba": [1, { "abiko": _2, "asahi": _2, "chonan": _2, "chosei": _2, "choshi": _2, "chuo": _2, "funabashi": _2, "futtsu": _2, "hanamigawa": _2, "ichihara": _2, "ichikawa": _2, "ichinomiya": _2, "inzai": _2, "isumi": _2, "kamagaya": _2, "kamogawa": _2, "kashiwa": _2, "katori": _2, "katsuura": _2, "kimitsu": _2, "kisarazu": _2, "kozaki": _2, "kujukuri": _2, "kyonan": _2, "matsudo": _2, "midori": _2, "mihama": _2, "minamiboso": _2, "mobara": _2, "mutsuzawa": _2, "nagara": _2, "nagareyama": _2, "narashino": _2, "narita": _2, "noda": _2, "oamishirasato": _2, "omigawa": _2, "onjuku": _2, "otaki": _2, "sakae": _2, "sakura": _2, "shimofusa": _2, "shirako": _2, "shiroi": _2, "shisui": _2, "sodegaura": _2, "sosa": _2, "tako": _2, "tateyama": _2, "togane": _2, "tohnosho": _2, "tomisato": _2, "urayasu": _2, "yachimata": _2, "yachiyo": _2, "yokaichiba": _2, "yokoshibahikari": _2, "yotsukaido": _2 }], "ehime": [1, { "ainan": _2, "honai": _2, "ikata": _2, "imabari": _2, "iyo": _2, "kamijima": _2, "kihoku": _2, "kumakogen": _2, "masaki": _2, "matsuno": _2, "matsuyama": _2, "namikata": _2, "niihama": _2, "ozu": _2, "saijo": _2, "seiyo": _2, "shikokuchuo": _2, "tobe": _2, "toon": _2, "uchiko": _2, "uwajima": _2, "yawatahama": _2 }], "fukui": [1, { "echizen": _2, "eiheiji": _2, "fukui": _2, "ikeda": _2, "katsuyama": _2, "mihama": _2, "minamiechizen": _2, "obama": _2, "ohi": _2, "ono": _2, "sabae": _2, "sakai": _2, "takahama": _2, "tsuruga": _2, "wakasa": _2 }], "fukuoka": [1, { "ashiya": _2, "buzen": _2, "chikugo": _2, "chikuho": _2, "chikujo": _2, "chikushino": _2, "chikuzen": _2, "chuo": _2, "dazaifu": _2, "fukuchi": _2, "hakata": _2, "higashi": _2, "hirokawa": _2, "hisayama": _2, "iizuka": _2, "inatsuki": _2, "kaho": _2, "kasuga": _2, "kasuya": _2, "kawara": _2, "keisen": _2, "koga": _2, "kurate": _2, "kurogi": _2, "kurume": _2, "minami": _2, "miyako": _2, "miyama": _2, "miyawaka": _2, "mizumaki": _2, "munakata": _2, "nakagawa": _2, "nakama": _2, "nishi": _2, "nogata": _2, "ogori": _2, "okagaki": _2, "okawa": _2, "oki": _2, "omuta": _2, "onga": _2, "onojo": _2, "oto": _2, "saigawa": _2, "sasaguri": _2, "shingu": _2, "shinyoshitomi": _2, "shonai": _2, "soeda": _2, "sue": _2, "tachiarai": _2, "tagawa": _2, "takata": _2, "toho": _2, "toyotsu": _2, "tsuiki": _2, "ukiha": _2, "umi": _2, "usui": _2, "yamada": _2, "yame": _2, "yanagawa": _2, "yukuhashi": _2 }], "fukushima": [1, { "aizubange": _2, "aizumisato": _2, "aizuwakamatsu": _2, "asakawa": _2, "bandai": _2, "date": _2, "fukushima": _2, "furudono": _2, "futaba": _2, "hanawa": _2, "higashi": _2, "hirata": _2, "hirono": _2, "iitate": _2, "inawashiro": _2, "ishikawa": _2, "iwaki": _2, "izumizaki": _2, "kagamiishi": _2, "kaneyama": _2, "kawamata": _2, "kitakata": _2, "kitashiobara": _2, "koori": _2, "koriyama": _2, "kunimi": _2, "miharu": _2, "mishima": _2, "namie": _2, "nango": _2, "nishiaizu": _2, "nishigo": _2, "okuma": _2, "omotego": _2, "ono": _2, "otama": _2, "samegawa": _2, "shimogo": _2, "shirakawa": _2, "showa": _2, "soma": _2, "sukagawa": _2, "taishin": _2, "tamakawa": _2, "tanagura": _2, "tenei": _2, "yabuki": _2, "yamato": _2, "yamatsuri": _2, "yanaizu": _2, "yugawa": _2 }], "gifu": [1, { "anpachi": _2, "ena": _2, "gifu": _2, "ginan": _2, "godo": _2, "gujo": _2, "hashima": _2, "hichiso": _2, "hida": _2, "higashishirakawa": _2, "ibigawa": _2, "ikeda": _2, "kakamigahara": _2, "kani": _2, "kasahara": _2, "kasamatsu": _2, "kawaue": _2, "kitagata": _2, "mino": _2, "minokamo": _2, "mitake": _2, "mizunami": _2, "motosu": _2, "nakatsugawa": _2, "ogaki": _2, "sakahogi": _2, "seki": _2, "sekigahara": _2, "shirakawa": _2, "tajimi": _2, "takayama": _2, "tarui": _2, "toki": _2, "tomika": _2, "wanouchi": _2, "yamagata": _2, "yaotsu": _2, "yoro": _2 }], "gunma": [1, { "annaka": _2, "chiyoda": _2, "fujioka": _2, "higashiagatsuma": _2, "isesaki": _2, "itakura": _2, "kanna": _2, "kanra": _2, "katashina": _2, "kawaba": _2, "kiryu": _2, "kusatsu": _2, "maebashi": _2, "meiwa": _2, "midori": _2, "minakami": _2, "naganohara": _2, "nakanojo": _2, "nanmoku": _2, "numata": _2, "oizumi": _2, "ora": _2, "ota": _2, "shibukawa": _2, "shimonita": _2, "shinto": _2, "showa": _2, "takasaki": _2, "takayama": _2, "tamamura": _2, "tatebayashi": _2, "tomioka": _2, "tsukiyono": _2, "tsumagoi": _2, "ueno": _2, "yoshioka": _2 }], "hiroshima": [1, { "asaminami": _2, "daiwa": _2, "etajima": _2, "fuchu": _2, "fukuyama": _2, "hatsukaichi": _2, "higashihiroshima": _2, "hongo": _2, "jinsekikogen": _2, "kaita": _2, "kui": _2, "kumano": _2, "kure": _2, "mihara": _2, "miyoshi": _2, "naka": _2, "onomichi": _2, "osakikamijima": _2, "otake": _2, "saka": _2, "sera": _2, "seranishi": _2, "shinichi": _2, "shobara": _2, "takehara": _2 }], "hokkaido": [1, { "abashiri": _2, "abira": _2, "aibetsu": _2, "akabira": _2, "akkeshi": _2, "asahikawa": _2, "ashibetsu": _2, "ashoro": _2, "assabu": _2, "atsuma": _2, "bibai": _2, "biei": _2, "bifuka": _2, "bihoro": _2, "biratori": _2, "chippubetsu": _2, "chitose": _2, "date": _2, "ebetsu": _2, "embetsu": _2, "eniwa": _2, "erimo": _2, "esan": _2, "esashi": _2, "fukagawa": _2, "fukushima": _2, "furano": _2, "furubira": _2, "haboro": _2, "hakodate": _2, "hamatonbetsu": _2, "hidaka": _2, "higashikagura": _2, "higashikawa": _2, "hiroo": _2, "hokuryu": _2, "hokuto": _2, "honbetsu": _2, "horokanai": _2, "horonobe": _2, "ikeda": _2, "imakane": _2, "ishikari": _2, "iwamizawa": _2, "iwanai": _2, "kamifurano": _2, "kamikawa": _2, "kamishihoro": _2, "kamisunagawa": _2, "kamoenai": _2, "kayabe": _2, "kembuchi": _2, "kikonai": _2, "kimobetsu": _2, "kitahiroshima": _2, "kitami": _2, "kiyosato": _2, "koshimizu": _2, "kunneppu": _2, "kuriyama": _2, "kuromatsunai": _2, "kushiro": _2, "kutchan": _2, "kyowa": _2, "mashike": _2, "matsumae": _2, "mikasa": _2, "minamifurano": _2, "mombetsu": _2, "moseushi": _2, "mukawa": _2, "muroran": _2, "naie": _2, "nakagawa": _2, "nakasatsunai": _2, "nakatombetsu": _2, "nanae": _2, "nanporo": _2, "nayoro": _2, "nemuro": _2, "niikappu": _2, "niki": _2, "nishiokoppe": _2, "noboribetsu": _2, "numata": _2, "obihiro": _2, "obira": _2, "oketo": _2, "okoppe": _2, "otaru": _2, "otobe": _2, "otofuke": _2, "otoineppu": _2, "oumu": _2, "ozora": _2, "pippu": _2, "rankoshi": _2, "rebun": _2, "rikubetsu": _2, "rishiri": _2, "rishirifuji": _2, "saroma": _2, "sarufutsu": _2, "shakotan": _2, "shari": _2, "shibecha": _2, "shibetsu": _2, "shikabe": _2, "shikaoi": _2, "shimamaki": _2, "shimizu": _2, "shimokawa": _2, "shinshinotsu": _2, "shintoku": _2, "shiranuka": _2, "shiraoi": _2, "shiriuchi": _2, "sobetsu": _2, "sunagawa": _2, "taiki": _2, "takasu": _2, "takikawa": _2, "takinoue": _2, "teshikaga": _2, "tobetsu": _2, "tohma": _2, "tomakomai": _2, "tomari": _2, "toya": _2, "toyako": _2, "toyotomi": _2, "toyoura": _2, "tsubetsu": _2, "tsukigata": _2, "urakawa": _2, "urausu": _2, "uryu": _2, "utashinai": _2, "wakkanai": _2, "wassamu": _2, "yakumo": _2, "yoichi": _2 }], "hyogo": [1, { "aioi": _2, "akashi": _2, "ako": _2, "amagasaki": _2, "aogaki": _2, "asago": _2, "ashiya": _2, "awaji": _2, "fukusaki": _2, "goshiki": _2, "harima": _2, "himeji": _2, "ichikawa": _2, "inagawa": _2, "itami": _2, "kakogawa": _2, "kamigori": _2, "kamikawa": _2, "kasai": _2, "kasuga": _2, "kawanishi": _2, "miki": _2, "minamiawaji": _2, "nishinomiya": _2, "nishiwaki": _2, "ono": _2, "sanda": _2, "sannan": _2, "sasayama": _2, "sayo": _2, "shingu": _2, "shinonsen": _2, "shiso": _2, "sumoto": _2, "taishi": _2, "taka": _2, "takarazuka": _2, "takasago": _2, "takino": _2, "tamba": _2, "tatsuno": _2, "toyooka": _2, "yabu": _2, "yashiro": _2, "yoka": _2, "yokawa": _2 }], "ibaraki": [1, { "ami": _2, "asahi": _2, "bando": _2, "chikusei": _2, "daigo": _2, "fujishiro": _2, "hitachi": _2, "hitachinaka": _2, "hitachiomiya": _2, "hitachiota": _2, "ibaraki": _2, "ina": _2, "inashiki": _2, "itako": _2, "iwama": _2, "joso": _2, "kamisu": _2, "kasama": _2, "kashima": _2, "kasumigaura": _2, "koga": _2, "miho": _2, "mito": _2, "moriya": _2, "naka": _2, "namegata": _2, "oarai": _2, "ogawa": _2, "omitama": _2, "ryugasaki": _2, "sakai": _2, "sakuragawa": _2, "shimodate": _2, "shimotsuma": _2, "shirosato": _2, "sowa": _2, "suifu": _2, "takahagi": _2, "tamatsukuri": _2, "tokai": _2, "tomobe": _2, "tone": _2, "toride": _2, "tsuchiura": _2, "tsukuba": _2, "uchihara": _2, "ushiku": _2, "yachiyo": _2, "yamagata": _2, "yawara": _2, "yuki": _2 }], "ishikawa": [1, { "anamizu": _2, "hakui": _2, "hakusan": _2, "kaga": _2, "kahoku": _2, "kanazawa": _2, "kawakita": _2, "komatsu": _2, "nakanoto": _2, "nanao": _2, "nomi": _2, "nonoichi": _2, "noto": _2, "shika": _2, "suzu": _2, "tsubata": _2, "tsurugi": _2, "uchinada": _2, "wajima": _2 }], "iwate": [1, { "fudai": _2, "fujisawa": _2, "hanamaki": _2, "hiraizumi": _2, "hirono": _2, "ichinohe": _2, "ichinoseki": _2, "iwaizumi": _2, "iwate": _2, "joboji": _2, "kamaishi": _2, "kanegasaki": _2, "karumai": _2, "kawai": _2, "kitakami": _2, "kuji": _2, "kunohe": _2, "kuzumaki": _2, "miyako": _2, "mizusawa": _2, "morioka": _2, "ninohe": _2, "noda": _2, "ofunato": _2, "oshu": _2, "otsuchi": _2, "rikuzentakata": _2, "shiwa": _2, "shizukuishi": _2, "sumita": _2, "tanohata": _2, "tono": _2, "yahaba": _2, "yamada": _2 }], "kagawa": [1, { "ayagawa": _2, "higashikagawa": _2, "kanonji": _2, "kotohira": _2, "manno": _2, "marugame": _2, "mitoyo": _2, "naoshima": _2, "sanuki": _2, "tadotsu": _2, "takamatsu": _2, "tonosho": _2, "uchinomi": _2, "utazu": _2, "zentsuji": _2 }], "kagoshima": [1, { "akune": _2, "amami": _2, "hioki": _2, "isa": _2, "isen": _2, "izumi": _2, "kagoshima": _2, "kanoya": _2, "kawanabe": _2, "kinko": _2, "kouyama": _2, "makurazaki": _2, "matsumoto": _2, "minamitane": _2, "nakatane": _2, "nishinoomote": _2, "satsumasendai": _2, "soo": _2, "tarumizu": _2, "yusui": _2 }], "kanagawa": [1, { "aikawa": _2, "atsugi": _2, "ayase": _2, "chigasaki": _2, "ebina": _2, "fujisawa": _2, "hadano": _2, "hakone": _2, "hiratsuka": _2, "isehara": _2, "kaisei": _2, "kamakura": _2, "kiyokawa": _2, "matsuda": _2, "minamiashigara": _2, "miura": _2, "nakai": _2, "ninomiya": _2, "odawara": _2, "oi": _2, "oiso": _2, "sagamihara": _2, "samukawa": _2, "tsukui": _2, "yamakita": _2, "yamato": _2, "yokosuka": _2, "yugawara": _2, "zama": _2, "zushi": _2 }], "kochi": [1, { "aki": _2, "geisei": _2, "hidaka": _2, "higashitsuno": _2, "ino": _2, "kagami": _2, "kami": _2, "kitagawa": _2, "kochi": _2, "mihara": _2, "motoyama": _2, "muroto": _2, "nahari": _2, "nakamura": _2, "nankoku": _2, "nishitosa": _2, "niyodogawa": _2, "ochi": _2, "okawa": _2, "otoyo": _2, "otsuki": _2, "sakawa": _2, "sukumo": _2, "susaki": _2, "tosa": _2, "tosashimizu": _2, "toyo": _2, "tsuno": _2, "umaji": _2, "yasuda": _2, "yusuhara": _2 }], "kumamoto": [1, { "amakusa": _2, "arao": _2, "aso": _2, "choyo": _2, "gyokuto": _2, "kamiamakusa": _2, "kikuchi": _2, "kumamoto": _2, "mashiki": _2, "mifune": _2, "minamata": _2, "minamioguni": _2, "nagasu": _2, "nishihara": _2, "oguni": _2, "ozu": _2, "sumoto": _2, "takamori": _2, "uki": _2, "uto": _2, "yamaga": _2, "yamato": _2, "yatsushiro": _2 }], "kyoto": [1, { "ayabe": _2, "fukuchiyama": _2, "higashiyama": _2, "ide": _2, "ine": _2, "joyo": _2, "kameoka": _2, "kamo": _2, "kita": _2, "kizu": _2, "kumiyama": _2, "kyotamba": _2, "kyotanabe": _2, "kyotango": _2, "maizuru": _2, "minami": _2, "minamiyamashiro": _2, "miyazu": _2, "muko": _2, "nagaokakyo": _2, "nakagyo": _2, "nantan": _2, "oyamazaki": _2, "sakyo": _2, "seika": _2, "tanabe": _2, "uji": _2, "ujitawara": _2, "wazuka": _2, "yamashina": _2, "yawata": _2 }], "mie": [1, { "asahi": _2, "inabe": _2, "ise": _2, "kameyama": _2, "kawagoe": _2, "kiho": _2, "kisosaki": _2, "kiwa": _2, "komono": _2, "kumano": _2, "kuwana": _2, "matsusaka": _2, "meiwa": _2, "mihama": _2, "minamiise": _2, "misugi": _2, "miyama": _2, "nabari": _2, "shima": _2, "suzuka": _2, "tado": _2, "taiki": _2, "taki": _2, "tamaki": _2, "toba": _2, "tsu": _2, "udono": _2, "ureshino": _2, "watarai": _2, "yokkaichi": _2 }], "miyagi": [1, { "furukawa": _2, "higashimatsushima": _2, "ishinomaki": _2, "iwanuma": _2, "kakuda": _2, "kami": _2, "kawasaki": _2, "marumori": _2, "matsushima": _2, "minamisanriku": _2, "misato": _2, "murata": _2, "natori": _2, "ogawara": _2, "ohira": _2, "onagawa": _2, "osaki": _2, "rifu": _2, "semine": _2, "shibata": _2, "shichikashuku": _2, "shikama": _2, "shiogama": _2, "shiroishi": _2, "tagajo": _2, "taiwa": _2, "tome": _2, "tomiya": _2, "wakuya": _2, "watari": _2, "yamamoto": _2, "zao": _2 }], "miyazaki": [1, { "aya": _2, "ebino": _2, "gokase": _2, "hyuga": _2, "kadogawa": _2, "kawaminami": _2, "kijo": _2, "kitagawa": _2, "kitakata": _2, "kitaura": _2, "kobayashi": _2, "kunitomi": _2, "kushima": _2, "mimata": _2, "miyakonojo": _2, "miyazaki": _2, "morotsuka": _2, "nichinan": _2, "nishimera": _2, "nobeoka": _2, "saito": _2, "shiiba": _2, "shintomi": _2, "takaharu": _2, "takanabe": _2, "takazaki": _2, "tsuno": _2 }], "nagano": [1, { "achi": _2, "agematsu": _2, "anan": _2, "aoki": _2, "asahi": _2, "azumino": _2, "chikuhoku": _2, "chikuma": _2, "chino": _2, "fujimi": _2, "hakuba": _2, "hara": _2, "hiraya": _2, "iida": _2, "iijima": _2, "iiyama": _2, "iizuna": _2, "ikeda": _2, "ikusaka": _2, "ina": _2, "karuizawa": _2, "kawakami": _2, "kiso": _2, "kisofukushima": _2, "kitaaiki": _2, "komagane": _2, "komoro": _2, "matsukawa": _2, "matsumoto": _2, "miasa": _2, "minamiaiki": _2, "minamimaki": _2, "minamiminowa": _2, "minowa": _2, "miyada": _2, "miyota": _2, "mochizuki": _2, "nagano": _2, "nagawa": _2, "nagiso": _2, "nakagawa": _2, "nakano": _2, "nozawaonsen": _2, "obuse": _2, "ogawa": _2, "okaya": _2, "omachi": _2, "omi": _2, "ookuwa": _2, "ooshika": _2, "otaki": _2, "otari": _2, "sakae": _2, "sakaki": _2, "saku": _2, "sakuho": _2, "shimosuwa": _2, "shinanomachi": _2, "shiojiri": _2, "suwa": _2, "suzaka": _2, "takagi": _2, "takamori": _2, "takayama": _2, "tateshina": _2, "tatsuno": _2, "togakushi": _2, "togura": _2, "tomi": _2, "ueda": _2, "wada": _2, "yamagata": _2, "yamanouchi": _2, "yasaka": _2, "yasuoka": _2 }], "nagasaki": [1, { "chijiwa": _2, "futsu": _2, "goto": _2, "hasami": _2, "hirado": _2, "iki": _2, "isahaya": _2, "kawatana": _2, "kuchinotsu": _2, "matsuura": _2, "nagasaki": _2, "obama": _2, "omura": _2, "oseto": _2, "saikai": _2, "sasebo": _2, "seihi": _2, "shimabara": _2, "shinkamigoto": _2, "togitsu": _2, "tsushima": _2, "unzen": _2 }], "nara": [1, { "ando": _2, "gose": _2, "heguri": _2, "higashiyoshino": _2, "ikaruga": _2, "ikoma": _2, "kamikitayama": _2, "kanmaki": _2, "kashiba": _2, "kashihara": _2, "katsuragi": _2, "kawai": _2, "kawakami": _2, "kawanishi": _2, "koryo": _2, "kurotaki": _2, "mitsue": _2, "miyake": _2, "nara": _2, "nosegawa": _2, "oji": _2, "ouda": _2, "oyodo": _2, "sakurai": _2, "sango": _2, "shimoichi": _2, "shimokitayama": _2, "shinjo": _2, "soni": _2, "takatori": _2, "tawaramoto": _2, "tenkawa": _2, "tenri": _2, "uda": _2, "yamatokoriyama": _2, "yamatotakada": _2, "yamazoe": _2, "yoshino": _2 }], "niigata": [1, { "aga": _2, "agano": _2, "gosen": _2, "itoigawa": _2, "izumozaki": _2, "joetsu": _2, "kamo": _2, "kariwa": _2, "kashiwazaki": _2, "minamiuonuma": _2, "mitsuke": _2, "muika": _2, "murakami": _2, "myoko": _2, "nagaoka": _2, "niigata": _2, "ojiya": _2, "omi": _2, "sado": _2, "sanjo": _2, "seiro": _2, "seirou": _2, "sekikawa": _2, "shibata": _2, "tagami": _2, "tainai": _2, "tochio": _2, "tokamachi": _2, "tsubame": _2, "tsunan": _2, "uonuma": _2, "yahiko": _2, "yoita": _2, "yuzawa": _2 }], "oita": [1, { "beppu": _2, "bungoono": _2, "bungotakada": _2, "hasama": _2, "hiji": _2, "himeshima": _2, "hita": _2, "kamitsue": _2, "kokonoe": _2, "kuju": _2, "kunisaki": _2, "kusu": _2, "oita": _2, "saiki": _2, "taketa": _2, "tsukumi": _2, "usa": _2, "usuki": _2, "yufu": _2 }], "okayama": [1, { "akaiwa": _2, "asakuchi": _2, "bizen": _2, "hayashima": _2, "ibara": _2, "kagamino": _2, "kasaoka": _2, "kibichuo": _2, "kumenan": _2, "kurashiki": _2, "maniwa": _2, "misaki": _2, "nagi": _2, "niimi": _2, "nishiawakura": _2, "okayama": _2, "satosho": _2, "setouchi": _2, "shinjo": _2, "shoo": _2, "soja": _2, "takahashi": _2, "tamano": _2, "tsuyama": _2, "wake": _2, "yakage": _2 }], "okinawa": [1, { "aguni": _2, "ginowan": _2, "ginoza": _2, "gushikami": _2, "haebaru": _2, "higashi": _2, "hirara": _2, "iheya": _2, "ishigaki": _2, "ishikawa": _2, "itoman": _2, "izena": _2, "kadena": _2, "kin": _2, "kitadaito": _2, "kitanakagusuku": _2, "kumejima": _2, "kunigami": _2, "minamidaito": _2, "motobu": _2, "nago": _2, "naha": _2, "nakagusuku": _2, "nakijin": _2, "nanjo": _2, "nishihara": _2, "ogimi": _2, "okinawa": _2, "onna": _2, "shimoji": _2, "taketomi": _2, "tarama": _2, "tokashiki": _2, "tomigusuku": _2, "tonaki": _2, "urasoe": _2, "uruma": _2, "yaese": _2, "yomitan": _2, "yonabaru": _2, "yonaguni": _2, "zamami": _2 }], "osaka": [1, { "abeno": _2, "chihayaakasaka": _2, "chuo": _2, "daito": _2, "fujiidera": _2, "habikino": _2, "hannan": _2, "higashiosaka": _2, "higashisumiyoshi": _2, "higashiyodogawa": _2, "hirakata": _2, "ibaraki": _2, "ikeda": _2, "izumi": _2, "izumiotsu": _2, "izumisano": _2, "kadoma": _2, "kaizuka": _2, "kanan": _2, "kashiwara": _2, "katano": _2, "kawachinagano": _2, "kishiwada": _2, "kita": _2, "kumatori": _2, "matsubara": _2, "minato": _2, "minoh": _2, "misaki": _2, "moriguchi": _2, "neyagawa": _2, "nishi": _2, "nose": _2, "osakasayama": _2, "sakai": _2, "sayama": _2, "sennan": _2, "settsu": _2, "shijonawate": _2, "shimamoto": _2, "suita": _2, "tadaoka": _2, "taishi": _2, "tajiri": _2, "takaishi": _2, "takatsuki": _2, "tondabayashi": _2, "toyonaka": _2, "toyono": _2, "yao": _2 }], "saga": [1, { "ariake": _2, "arita": _2, "fukudomi": _2, "genkai": _2, "hamatama": _2, "hizen": _2, "imari": _2, "kamimine": _2, "kanzaki": _2, "karatsu": _2, "kashima": _2, "kitagata": _2, "kitahata": _2, "kiyama": _2, "kouhoku": _2, "kyuragi": _2, "nishiarita": _2, "ogi": _2, "omachi": _2, "ouchi": _2, "saga": _2, "shiroishi": _2, "taku": _2, "tara": _2, "tosu": _2, "yoshinogari": _2 }], "saitama": [1, { "arakawa": _2, "asaka": _2, "chichibu": _2, "fujimi": _2, "fujimino": _2, "fukaya": _2, "hanno": _2, "hanyu": _2, "hasuda": _2, "hatogaya": _2, "hatoyama": _2, "hidaka": _2, "higashichichibu": _2, "higashimatsuyama": _2, "honjo": _2, "ina": _2, "iruma": _2, "iwatsuki": _2, "kamiizumi": _2, "kamikawa": _2, "kamisato": _2, "kasukabe": _2, "kawagoe": _2, "kawaguchi": _2, "kawajima": _2, "kazo": _2, "kitamoto": _2, "koshigaya": _2, "kounosu": _2, "kuki": _2, "kumagaya": _2, "matsubushi": _2, "minano": _2, "misato": _2, "miyashiro": _2, "miyoshi": _2, "moroyama": _2, "nagatoro": _2, "namegawa": _2, "niiza": _2, "ogano": _2, "ogawa": _2, "ogose": _2, "okegawa": _2, "omiya": _2, "otaki": _2, "ranzan": _2, "ryokami": _2, "saitama": _2, "sakado": _2, "satte": _2, "sayama": _2, "shiki": _2, "shiraoka": _2, "soka": _2, "sugito": _2, "toda": _2, "tokigawa": _2, "tokorozawa": _2, "tsurugashima": _2, "urawa": _2, "warabi": _2, "yashio": _2, "yokoze": _2, "yono": _2, "yorii": _2, "yoshida": _2, "yoshikawa": _2, "yoshimi": _2 }], "shiga": [1, { "aisho": _2, "gamo": _2, "higashiomi": _2, "hikone": _2, "koka": _2, "konan": _2, "kosei": _2, "koto": _2, "kusatsu": _2, "maibara": _2, "moriyama": _2, "nagahama": _2, "nishiazai": _2, "notogawa": _2, "omihachiman": _2, "otsu": _2, "ritto": _2, "ryuoh": _2, "takashima": _2, "takatsuki": _2, "torahime": _2, "toyosato": _2, "yasu": _2 }], "shimane": [1, { "akagi": _2, "ama": _2, "gotsu": _2, "hamada": _2, "higashiizumo": _2, "hikawa": _2, "hikimi": _2, "izumo": _2, "kakinoki": _2, "masuda": _2, "matsue": _2, "misato": _2, "nishinoshima": _2, "ohda": _2, "okinoshima": _2, "okuizumo": _2, "shimane": _2, "tamayu": _2, "tsuwano": _2, "unnan": _2, "yakumo": _2, "yasugi": _2, "yatsuka": _2 }], "shizuoka": [1, { "arai": _2, "atami": _2, "fuji": _2, "fujieda": _2, "fujikawa": _2, "fujinomiya": _2, "fukuroi": _2, "gotemba": _2, "haibara": _2, "hamamatsu": _2, "higashiizu": _2, "ito": _2, "iwata": _2, "izu": _2, "izunokuni": _2, "kakegawa": _2, "kannami": _2, "kawanehon": _2, "kawazu": _2, "kikugawa": _2, "kosai": _2, "makinohara": _2, "matsuzaki": _2, "minamiizu": _2, "mishima": _2, "morimachi": _2, "nishiizu": _2, "numazu": _2, "omaezaki": _2, "shimada": _2, "shimizu": _2, "shimoda": _2, "shizuoka": _2, "susono": _2, "yaizu": _2, "yoshida": _2 }], "tochigi": [1, { "ashikaga": _2, "bato": _2, "haga": _2, "ichikai": _2, "iwafune": _2, "kaminokawa": _2, "kanuma": _2, "karasuyama": _2, "kuroiso": _2, "mashiko": _2, "mibu": _2, "moka": _2, "motegi": _2, "nasu": _2, "nasushiobara": _2, "nikko": _2, "nishikata": _2, "nogi": _2, "ohira": _2, "ohtawara": _2, "oyama": _2, "sakura": _2, "sano": _2, "shimotsuke": _2, "shioya": _2, "takanezawa": _2, "tochigi": _2, "tsuga": _2, "ujiie": _2, "utsunomiya": _2, "yaita": _2 }], "tokushima": [1, { "aizumi": _2, "anan": _2, "ichiba": _2, "itano": _2, "kainan": _2, "komatsushima": _2, "matsushige": _2, "mima": _2, "minami": _2, "miyoshi": _2, "mugi": _2, "nakagawa": _2, "naruto": _2, "sanagochi": _2, "shishikui": _2, "tokushima": _2, "wajiki": _2 }], "tokyo": [1, { "adachi": _2, "akiruno": _2, "akishima": _2, "aogashima": _2, "arakawa": _2, "bunkyo": _2, "chiyoda": _2, "chofu": _2, "chuo": _2, "edogawa": _2, "fuchu": _2, "fussa": _2, "hachijo": _2, "hachioji": _2, "hamura": _2, "higashikurume": _2, "higashimurayama": _2, "higashiyamato": _2, "hino": _2, "hinode": _2, "hinohara": _2, "inagi": _2, "itabashi": _2, "katsushika": _2, "kita": _2, "kiyose": _2, "kodaira": _2, "koganei": _2, "kokubunji": _2, "komae": _2, "koto": _2, "kouzushima": _2, "kunitachi": _2, "machida": _2, "meguro": _2, "minato": _2, "mitaka": _2, "mizuho": _2, "musashimurayama": _2, "musashino": _2, "nakano": _2, "nerima": _2, "ogasawara": _2, "okutama": _2, "ome": _2, "oshima": _2, "ota": _2, "setagaya": _2, "shibuya": _2, "shinagawa": _2, "shinjuku": _2, "suginami": _2, "sumida": _2, "tachikawa": _2, "taito": _2, "tama": _2, "toshima": _2 }], "tottori": [1, { "chizu": _2, "hino": _2, "kawahara": _2, "koge": _2, "kotoura": _2, "misasa": _2, "nanbu": _2, "nichinan": _2, "sakaiminato": _2, "tottori": _2, "wakasa": _2, "yazu": _2, "yonago": _2 }], "toyama": [1, { "asahi": _2, "fuchu": _2, "fukumitsu": _2, "funahashi": _2, "himi": _2, "imizu": _2, "inami": _2, "johana": _2, "kamiichi": _2, "kurobe": _2, "nakaniikawa": _2, "namerikawa": _2, "nanto": _2, "nyuzen": _2, "oyabe": _2, "taira": _2, "takaoka": _2, "tateyama": _2, "toga": _2, "tonami": _2, "toyama": _2, "unazuki": _2, "uozu": _2, "yamada": _2 }], "wakayama": [1, { "arida": _2, "aridagawa": _2, "gobo": _2, "hashimoto": _2, "hidaka": _2, "hirogawa": _2, "inami": _2, "iwade": _2, "kainan": _2, "kamitonda": _2, "katsuragi": _2, "kimino": _2, "kinokawa": _2, "kitayama": _2, "koya": _2, "koza": _2, "kozagawa": _2, "kudoyama": _2, "kushimoto": _2, "mihama": _2, "misato": _2, "nachikatsuura": _2, "shingu": _2, "shirahama": _2, "taiji": _2, "tanabe": _2, "wakayama": _2, "yuasa": _2, "yura": _2 }], "yamagata": [1, { "asahi": _2, "funagata": _2, "higashine": _2, "iide": _2, "kahoku": _2, "kaminoyama": _2, "kaneyama": _2, "kawanishi": _2, "mamurogawa": _2, "mikawa": _2, "murayama": _2, "nagai": _2, "nakayama": _2, "nanyo": _2, "nishikawa": _2, "obanazawa": _2, "oe": _2, "oguni": _2, "ohkura": _2, "oishida": _2, "sagae": _2, "sakata": _2, "sakegawa": _2, "shinjo": _2, "shirataka": _2, "shonai": _2, "takahata": _2, "tendo": _2, "tozawa": _2, "tsuruoka": _2, "yamagata": _2, "yamanobe": _2, "yonezawa": _2, "yuza": _2 }], "yamaguchi": [1, { "abu": _2, "hagi": _2, "hikari": _2, "hofu": _2, "iwakuni": _2, "kudamatsu": _2, "mitou": _2, "nagato": _2, "oshima": _2, "shimonoseki": _2, "shunan": _2, "tabuse": _2, "tokuyama": _2, "toyota": _2, "ube": _2, "yuu": _2 }], "yamanashi": [1, { "chuo": _2, "doshi": _2, "fuefuki": _2, "fujikawa": _2, "fujikawaguchiko": _2, "fujiyoshida": _2, "hayakawa": _2, "hokuto": _2, "ichikawamisato": _2, "kai": _2, "kofu": _2, "koshu": _2, "kosuge": _2, "minami-alps": _2, "minobu": _2, "nakamichi": _2, "nanbu": _2, "narusawa": _2, "nirasaki": _2, "nishikatsura": _2, "oshino": _2, "otsuki": _2, "showa": _2, "tabayama": _2, "tsuru": _2, "uenohara": _2, "yamanakako": _2, "yamanashi": _2 }], "xn--ehqz56n": _2, "三重": _2, "xn--1lqs03n": _2, "京都": _2, "xn--qqqt11m": _2, "佐賀": _2, "xn--f6qx53a": _2, "兵庫": _2, "xn--djrs72d6uy": _2, "北海道": _2, "xn--mkru45i": _2, "千葉": _2, "xn--0trq7p7nn": _2, "和歌山": _2, "xn--5js045d": _2, "埼玉": _2, "xn--kbrq7o": _2, "大分": _2, "xn--pssu33l": _2, "大阪": _2, "xn--ntsq17g": _2, "奈良": _2, "xn--uisz3g": _2, "宮城": _2, "xn--6btw5a": _2, "宮崎": _2, "xn--1ctwo": _2, "富山": _2, "xn--6orx2r": _2, "山口": _2, "xn--rht61e": _2, "山形": _2, "xn--rht27z": _2, "山梨": _2, "xn--nit225k": _2, "岐阜": _2, "xn--rht3d": _2, "岡山": _2, "xn--djty4k": _2, "岩手": _2, "xn--klty5x": _2, "島根": _2, "xn--kltx9a": _2, "広島": _2, "xn--kltp7d": _2, "徳島": _2, "xn--c3s14m": _2, "愛媛": _2, "xn--vgu402c": _2, "愛知": _2, "xn--efvn9s": _2, "新潟": _2, "xn--1lqs71d": _2, "東京": _2, "xn--4pvxs": _2, "栃木": _2, "xn--uuwu58a": _2, "沖縄": _2, "xn--zbx025d": _2, "滋賀": _2, "xn--8pvr4u": _2, "熊本": _2, "xn--5rtp49c": _2, "石川": _2, "xn--ntso0iqx3a": _2, "神奈川": _2, "xn--elqq16h": _2, "福井": _2, "xn--4it168d": _2, "福岡": _2, "xn--klt787d": _2, "福島": _2, "xn--rny31h": _2, "秋田": _2, "xn--7t0a264c": _2, "群馬": _2, "xn--uist22h": _2, "茨城": _2, "xn--8ltr62k": _2, "長崎": _2, "xn--2m4a15e": _2, "長野": _2, "xn--32vp30h": _2, "青森": _2, "xn--4it797k": _2, "静岡": _2, "xn--5rtq34k": _2, "香川": _2, "xn--k7yn95e": _2, "高知": _2, "xn--tor131o": _2, "鳥取": _2, "xn--d5qv7z876c": _2, "鹿児島": _2, "kawasaki": _21, "kitakyushu": _21, "kobe": _21, "nagoya": _21, "sapporo": _21, "sendai": _21, "yokohama": _21, "buyshop": _3, "fashionstore": _3, "handcrafted": _3, "kawaiishop": _3, "supersale": _3, "theshop": _3, "0am": _3, "0g0": _3, "0j0": _3, "0t0": _3, "mydns": _3, "pgw": _3, "wjg": _3, "usercontent": _3, "angry": _3, "babyblue": _3, "babymilk": _3, "backdrop": _3, "bambina": _3, "bitter": _3, "blush": _3, "boo": _3, "boy": _3, "boyfriend": _3, "but": _3, "candypop": _3, "capoo": _3, "catfood": _3, "cheap": _3, "chicappa": _3, "chillout": _3, "chips": _3, "chowder": _3, "chu": _3, "ciao": _3, "cocotte": _3, "coolblog": _3, "cranky": _3, "cutegirl": _3, "daa": _3, "deca": _3, "deci": _3, "digick": _3, "egoism": _3, "fakefur": _3, "fem": _3, "flier": _3, "floppy": _3, "fool": _3, "frenchkiss": _3, "girlfriend": _3, "girly": _3, "gloomy": _3, "gonna": _3, "greater": _3, "hacca": _3, "heavy": _3, "her": _3, "hiho": _3, "hippy": _3, "holy": _3, "hungry": _3, "icurus": _3, "itigo": _3, "jellybean": _3, "kikirara": _3, "kill": _3, "kilo": _3, "kuron": _3, "littlestar": _3, "lolipopmc": _3, "lolitapunk": _3, "lomo": _3, "lovepop": _3, "lovesick": _3, "main": _3, "mods": _3, "mond": _3, "mongolian": _3, "moo": _3, "namaste": _3, "nikita": _3, "nobushi": _3, "noor": _3, "oops": _3, "parallel": _3, "parasite": _3, "pecori": _3, "peewee": _3, "penne": _3, "pepper": _3, "perma": _3, "pigboat": _3, "pinoko": _3, "punyu": _3, "pupu": _3, "pussycat": _3, "pya": _3, "raindrop": _3, "readymade": _3, "sadist": _3, "schoolbus": _3, "secret": _3, "staba": _3, "stripper": _3, "sub": _3, "sunnyday": _3, "thick": _3, "tonkotsu": _3, "under": _3, "upper": _3, "velvet": _3, "verse": _3, "versus": _3, "vivian": _3, "watson": _3, "weblike": _3, "whitesnow": _3, "zombie": _3, "hateblo": _3, "hatenablog": _3, "hatenadiary": _3, "2-d": _3, "bona": _3, "crap": _3, "daynight": _3, "eek": _3, "flop": _3, "halfmoon": _3, "jeez": _3, "matrix": _3, "mimoza": _3, "netgamers": _3, "nyanta": _3, "o0o0": _3, "rdy": _3, "rgr": _3, "rulez": _3, "sakurastorage": [0, { "isk01": _59, "isk02": _59 }], "saloon": _3, "sblo": _3, "skr": _3, "tank": _3, "uh-oh": _3, "undo": _3, "webaccel": [0, { "rs": _3, "user": _3 }], "websozai": _3, "xii": _3 }], "ke": [1, { "ac": _2, "co": _2, "go": _2, "info": _2, "me": _2, "mobi": _2, "ne": _2, "or": _2, "sc": _2 }], "kg": [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "us": _3, "xx": _3, "ae": _3 }], "kh": _21, "ki": _60, "km": [1, { "ass": _2, "com": _2, "edu": _2, "gov": _2, "mil": _2, "nom": _2, "org": _2, "prd": _2, "tm": _2, "asso": _2, "coop": _2, "gouv": _2, "medecin": _2, "notaires": _2, "pharmaciens": _2, "presse": _2, "veterinaire": _2 }], "kn": [1, { "edu": _2, "gov": _2, "net": _2, "org": _2 }], "kp": [1, { "com": _2, "edu": _2, "gov": _2, "org": _2, "rep": _2, "tra": _2 }], "kr": [1, { "ac": _2, "ai": _2, "co": _2, "es": _2, "go": _2, "hs": _2, "io": _2, "it": _2, "kg": _2, "me": _2, "mil": _2, "ms": _2, "ne": _2, "or": _2, "pe": _2, "re": _2, "sc": _2, "busan": _2, "chungbuk": _2, "chungnam": _2, "daegu": _2, "daejeon": _2, "gangwon": _2, "gwangju": _2, "gyeongbuk": _2, "gyeonggi": _2, "gyeongnam": _2, "incheon": _2, "jeju": _2, "jeonbuk": _2, "jeonnam": _2, "seoul": _2, "ulsan": _2, "c01": _3, "eliv-api": _3, "eliv-cdn": _3, "eliv-dns": _3, "mmv": _3, "vki": _3 }], "kw": [1, { "com": _2, "edu": _2, "emb": _2, "gov": _2, "ind": _2, "net": _2, "org": _2 }], "ky": _47, "kz": [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "jcloud": _3 }], "la": [1, { "com": _2, "edu": _2, "gov": _2, "info": _2, "int": _2, "net": _2, "org": _2, "per": _2, "bnr": _3 }], "lb": _4, "lc": [1, { "co": _2, "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "oy": _3 }], "li": _2, "lk": [1, { "ac": _2, "assn": _2, "com": _2, "edu": _2, "gov": _2, "grp": _2, "hotel": _2, "int": _2, "ltd": _2, "net": _2, "ngo": _2, "org": _2, "sch": _2, "soc": _2, "web": _2 }], "lr": _4, "ls": [1, { "ac": _2, "biz": _2, "co": _2, "edu": _2, "gov": _2, "info": _2, "net": _2, "org": _2, "sc": _2 }], "lt": _10, "lu": [1, { "123website": _3 }], "lv": [1, { "asn": _2, "com": _2, "conf": _2, "edu": _2, "gov": _2, "id": _2, "mil": _2, "net": _2, "org": _2 }], "ly": [1, { "com": _2, "edu": _2, "gov": _2, "id": _2, "med": _2, "net": _2, "org": _2, "plc": _2, "sch": _2 }], "ma": [1, { "ac": _2, "co": _2, "gov": _2, "net": _2, "org": _2, "press": _2 }], "mc": [1, { "asso": _2, "tm": _2 }], "md": [1, { "ir": _3 }], "me": [1, { "ac": _2, "co": _2, "edu": _2, "gov": _2, "its": _2, "net": _2, "org": _2, "priv": _2, "c66": _3, "craft": _3, "edgestack": _3, "filegear": _3, "filegear-sg": _3, "lohmus": _3, "barsy": _3, "mcdir": _3, "brasilia": _3, "ddns": _3, "dnsfor": _3, "hopto": _3, "loginto": _3, "noip": _3, "webhop": _3, "soundcast": _3, "tcp4": _3, "vp4": _3, "diskstation": _3, "dscloud": _3, "i234": _3, "myds": _3, "synology": _3, "transip": _46, "nohost": _3 }], "mg": [1, { "co": _2, "com": _2, "edu": _2, "gov": _2, "mil": _2, "nom": _2, "org": _2, "prd": _2 }], "mh": _2, "mil": _2, "mk": [1, { "com": _2, "edu": _2, "gov": _2, "inf": _2, "name": _2, "net": _2, "org": _2 }], "ml": [1, { "ac": _2, "art": _2, "asso": _2, "com": _2, "edu": _2, "gouv": _2, "gov": _2, "info": _2, "inst": _2, "net": _2, "org": _2, "pr": _2, "presse": _2 }], "mm": _21, "mn": [1, { "edu": _2, "gov": _2, "org": _2, "nyc": _3 }], "mo": _4, "mobi": [1, { "barsy": _3, "dscloud": _3 }], "mp": [1, { "ju": _3 }], "mq": _2, "mr": _10, "ms": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "minisite": _3 }], "mt": _47, "mu": [1, { "ac": _2, "co": _2, "com": _2, "gov": _2, "net": _2, "or": _2, "org": _2 }], "museum": _2, "mv": [1, { "aero": _2, "biz": _2, "com": _2, "coop": _2, "edu": _2, "gov": _2, "info": _2, "int": _2, "mil": _2, "museum": _2, "name": _2, "net": _2, "org": _2, "pro": _2 }], "mw": [1, { "ac": _2, "biz": _2, "co": _2, "com": _2, "coop": _2, "edu": _2, "gov": _2, "int": _2, "net": _2, "org": _2 }], "mx": [1, { "com": _2, "edu": _2, "gob": _2, "net": _2, "org": _2 }], "my": [1, { "biz": _2, "com": _2, "edu": _2, "gov": _2, "mil": _2, "name": _2, "net": _2, "org": _2 }], "mz": [1, { "ac": _2, "adv": _2, "co": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2 }], "na": [1, { "alt": _2, "co": _2, "com": _2, "gov": _2, "net": _2, "org": _2 }], "name": [1, { "her": _63, "his": _63, "ispmanager": _3, "keenetic": _3 }], "nc": [1, { "asso": _2, "nom": _2 }], "ne": _2, "net": [1, { "adobeaemcloud": _3, "adobeio-static": _3, "adobeioruntime": _3, "akadns": _3, "akamai": _3, "akamai-staging": _3, "akamaiedge": _3, "akamaiedge-staging": _3, "akamaihd": _3, "akamaihd-staging": _3, "akamaiorigin": _3, "akamaiorigin-staging": _3, "akamaized": _3, "akamaized-staging": _3, "edgekey": _3, "edgekey-staging": _3, "edgesuite": _3, "edgesuite-staging": _3, "alwaysdata": _3, "myamaze": _3, "cloudfront": _3, "appudo": _3, "atlassian-dev": [0, { "prod": _55 }], "myfritz": _3, "shopselect": _3, "blackbaudcdn": _3, "boomla": _3, "bplaced": _3, "square7": _3, "cdn77": [0, { "r": _3 }], "cdn77-ssl": _3, "gb": _3, "hu": _3, "jp": _3, "se": _3, "uk": _3, "clickrising": _3, "ddns-ip": _3, "dns-cloud": _3, "dns-dynamic": _3, "cloudaccess": _3, "cloudflare": [2, { "cdn": _3 }], "cloudflareanycast": _55, "cloudflarecn": _55, "cloudflareglobal": _55, "ctfcloud": _3, "feste-ip": _3, "knx-server": _3, "static-access": _3, "cryptonomic": _6, "dattolocal": _3, "mydatto": _3, "debian": _3, "definima": _3, "deno": _3, "icp": _6, "de5": _3, "at-band-camp": _3, "blogdns": _3, "broke-it": _3, "buyshouses": _3, "dnsalias": _3, "dnsdojo": _3, "does-it": _3, "dontexist": _3, "dynalias": _3, "dynathome": _3, "endofinternet": _3, "from-az": _3, "from-co": _3, "from-la": _3, "from-ny": _3, "gets-it": _3, "ham-radio-op": _3, "homeftp": _3, "homeip": _3, "homelinux": _3, "homeunix": _3, "in-the-band": _3, "is-a-chef": _3, "is-a-geek": _3, "isa-geek": _3, "kicks-ass": _3, "office-on-the": _3, "podzone": _3, "scrapper-site": _3, "selfip": _3, "sells-it": _3, "servebbs": _3, "serveftp": _3, "thruhere": _3, "webhop": _3, "casacam": _3, "dynu": _3, "dynuddns": _3, "mysynology": _3, "opik": _3, "spryt": _3, "dynv6": _3, "twmail": _3, "ru": _3, "channelsdvr": [2, { "u": _3 }], "fastly": [0, { "freetls": _3, "map": _3, "prod": [0, { "a": _3, "global": _3 }], "ssl": [0, { "a": _3, "b": _3, "global": _3 }] }], "fastlylb": [2, { "map": _3 }], "keyword-on": _3, "live-on": _3, "server-on": _3, "cdn-edges": _3, "heteml": _3, "cloudfunctions": _3, "grafana-dev": _3, "iobb": _3, "moonscale": _3, "in-dsl": _3, "in-vpn": _3, "oninferno": _3, "botdash": _3, "apps-1and1": _3, "ipifony": _3, "cloudjiffy": [2, { "fra1-de": _3, "west1-us": _3 }], "elastx": [0, { "jls-sto1": _3, "jls-sto2": _3, "jls-sto3": _3 }], "massivegrid": [0, { "paas": [0, { "fr-1": _3, "lon-1": _3, "lon-2": _3, "ny-1": _3, "ny-2": _3, "sg-1": _3 }] }], "saveincloud": [0, { "jelastic": _3, "nordeste-idc": _3 }], "scaleforce": _48, "kinghost": _3, "uni5": _3, "krellian": _3, "ggff": _3, "localto": _6, "barsy": _3, "luyani": _3, "memset": _3, "azure-api": _3, "azure-mobile": _3, "azureedge": _3, "azurefd": _3, "azurestaticapps": [2, { "1": _3, "2": _3, "3": _3, "4": _3, "5": _3, "6": _3, "7": _3, "centralus": _3, "eastasia": _3, "eastus2": _3, "westeurope": _3, "westus2": _3 }], "azurewebsites": _3, "cloudapp": _3, "trafficmanager": _3, "usgovcloudapi": _65, "usgovcloudapp": _3, "usgovtrafficmanager": _3, "windows": _65, "mynetname": [0, { "sn": _3 }], "routingthecloud": _3, "bounceme": _3, "ddns": _3, "eating-organic": _3, "mydissent": _3, "myeffect": _3, "mymediapc": _3, "mypsx": _3, "mysecuritycamera": _3, "nhlfan": _3, "no-ip": _3, "pgafan": _3, "privatizehealthinsurance": _3, "redirectme": _3, "serveblog": _3, "serveminecraft": _3, "sytes": _3, "dnsup": _3, "hicam": _3, "now-dns": _3, "ownip": _3, "vpndns": _3, "cloudycluster": _3, "ovh": [0, { "hosting": _6, "webpaas": _6 }], "rackmaze": _3, "myradweb": _3, "in": _3, "subsc-pay": _3, "squares": _3, "schokokeks": _3, "firewall-gateway": _3, "seidat": _3, "senseering": _3, "siteleaf": _3, "mafelo": _3, "myspreadshop": _3, "vps-host": [2, { "jelastic": [0, { "atl": _3, "njs": _3, "ric": _3 }] }], "srcf": [0, { "soc": _3, "user": _3 }], "supabase": _3, "dsmynas": _3, "familyds": _3, "ts": [2, { "c": _6 }], "torproject": [2, { "pages": _3 }], "tunnelmole": _3, "vusercontent": _3, "reserve-online": _3, "localcert": _3, "community-pro": _3, "meinforum": _3, "yandexcloud": [2, { "storage": _3, "website": _3 }], "za": _3, "zabc": _3 }], "nf": [1, { "arts": _2, "com": _2, "firm": _2, "info": _2, "net": _2, "other": _2, "per": _2, "rec": _2, "store": _2, "web": _2 }], "ng": [1, { "com": _2, "edu": _2, "gov": _2, "i": _2, "mil": _2, "mobi": _2, "name": _2, "net": _2, "org": _2, "sch": _2, "biz": [2, { "co": _3, "dl": _3, "go": _3, "lg": _3, "on": _3 }], "col": _3, "firm": _3, "gen": _3, "ltd": _3, "ngo": _3, "plc": _3 }], "ni": [1, { "ac": _2, "biz": _2, "co": _2, "com": _2, "edu": _2, "gob": _2, "in": _2, "info": _2, "int": _2, "mil": _2, "net": _2, "nom": _2, "org": _2, "web": _2 }], "nl": [1, { "co": _3, "hosting-cluster": _3, "gov": _3, "khplay": _3, "123website": _3, "myspreadshop": _3, "transurl": _6, "cistron": _3, "demon": _3 }], "no": [1, { "fhs": _2, "folkebibl": _2, "fylkesbibl": _2, "idrett": _2, "museum": _2, "priv": _2, "vgs": _2, "dep": _2, "herad": _2, "kommune": _2, "mil": _2, "stat": _2, "aa": _66, "ah": _66, "bu": _66, "fm": _66, "hl": _66, "hm": _66, "jan-mayen": _66, "mr": _66, "nl": _66, "nt": _66, "of": _66, "ol": _66, "oslo": _66, "rl": _66, "sf": _66, "st": _66, "svalbard": _66, "tm": _66, "tr": _66, "va": _66, "vf": _66, "akrehamn": _2, "xn--krehamn-dxa": _2, "åkrehamn": _2, "algard": _2, "xn--lgrd-poac": _2, "ålgård": _2, "arna": _2, "bronnoysund": _2, "xn--brnnysund-m8ac": _2, "brønnøysund": _2, "brumunddal": _2, "bryne": _2, "drobak": _2, "xn--drbak-wua": _2, "drøbak": _2, "egersund": _2, "fetsund": _2, "floro": _2, "xn--flor-jra": _2, "florø": _2, "fredrikstad": _2, "hokksund": _2, "honefoss": _2, "xn--hnefoss-q1a": _2, "hønefoss": _2, "jessheim": _2, "jorpeland": _2, "xn--jrpeland-54a": _2, "jørpeland": _2, "kirkenes": _2, "kopervik": _2, "krokstadelva": _2, "langevag": _2, "xn--langevg-jxa": _2, "langevåg": _2, "leirvik": _2, "mjondalen": _2, "xn--mjndalen-64a": _2, "mjøndalen": _2, "mo-i-rana": _2, "mosjoen": _2, "xn--mosjen-eya": _2, "mosjøen": _2, "nesoddtangen": _2, "orkanger": _2, "osoyro": _2, "xn--osyro-wua": _2, "osøyro": _2, "raholt": _2, "xn--rholt-mra": _2, "råholt": _2, "sandnessjoen": _2, "xn--sandnessjen-ogb": _2, "sandnessjøen": _2, "skedsmokorset": _2, "slattum": _2, "spjelkavik": _2, "stathelle": _2, "stavern": _2, "stjordalshalsen": _2, "xn--stjrdalshalsen-sqb": _2, "stjørdalshalsen": _2, "tananger": _2, "tranby": _2, "vossevangen": _2, "aarborte": _2, "aejrie": _2, "afjord": _2, "xn--fjord-lra": _2, "åfjord": _2, "agdenes": _2, "akershus": _67, "aknoluokta": _2, "xn--koluokta-7ya57h": _2, "ákŋoluokta": _2, "al": _2, "xn--l-1fa": _2, "ål": _2, "alaheadju": _2, "xn--laheadju-7ya": _2, "álaheadju": _2, "alesund": _2, "xn--lesund-hua": _2, "ålesund": _2, "alstahaug": _2, "alta": _2, "xn--lt-liac": _2, "áltá": _2, "alvdal": _2, "amli": _2, "xn--mli-tla": _2, "åmli": _2, "amot": _2, "xn--mot-tla": _2, "åmot": _2, "andasuolo": _2, "andebu": _2, "andoy": _2, "xn--andy-ira": _2, "andøy": _2, "ardal": _2, "xn--rdal-poa": _2, "årdal": _2, "aremark": _2, "arendal": _2, "xn--s-1fa": _2, "ås": _2, "aseral": _2, "xn--seral-lra": _2, "åseral": _2, "asker": _2, "askim": _2, "askoy": _2, "xn--asky-ira": _2, "askøy": _2, "askvoll": _2, "asnes": _2, "xn--snes-poa": _2, "åsnes": _2, "audnedaln": _2, "aukra": _2, "aure": _2, "aurland": _2, "aurskog-holand": _2, "xn--aurskog-hland-jnb": _2, "aurskog-høland": _2, "austevoll": _2, "austrheim": _2, "averoy": _2, "xn--avery-yua": _2, "averøy": _2, "badaddja": _2, "xn--bdddj-mrabd": _2, "bådåddjå": _2, "xn--brum-voa": _2, "bærum": _2, "bahcavuotna": _2, "xn--bhcavuotna-s4a": _2, "báhcavuotna": _2, "bahccavuotna": _2, "xn--bhccavuotna-k7a": _2, "báhccavuotna": _2, "baidar": _2, "xn--bidr-5nac": _2, "báidár": _2, "bajddar": _2, "xn--bjddar-pta": _2, "bájddar": _2, "balat": _2, "xn--blt-elab": _2, "bálát": _2, "balestrand": _2, "ballangen": _2, "balsfjord": _2, "bamble": _2, "bardu": _2, "barum": _2, "batsfjord": _2, "xn--btsfjord-9za": _2, "båtsfjord": _2, "bearalvahki": _2, "xn--bearalvhki-y4a": _2, "bearalváhki": _2, "beardu": _2, "beiarn": _2, "berg": _2, "bergen": _2, "berlevag": _2, "xn--berlevg-jxa": _2, "berlevåg": _2, "bievat": _2, "xn--bievt-0qa": _2, "bievát": _2, "bindal": _2, "birkenes": _2, "bjerkreim": _2, "bjugn": _2, "bodo": _2, "xn--bod-2na": _2, "bodø": _2, "bokn": _2, "bomlo": _2, "xn--bmlo-gra": _2, "bømlo": _2, "bremanger": _2, "bronnoy": _2, "xn--brnny-wuac": _2, "brønnøy": _2, "budejju": _2, "buskerud": _67, "bygland": _2, "bykle": _2, "cahcesuolo": _2, "xn--hcesuolo-7ya35b": _2, "čáhcesuolo": _2, "davvenjarga": _2, "xn--davvenjrga-y4a": _2, "davvenjárga": _2, "davvesiida": _2, "deatnu": _2, "dielddanuorri": _2, "divtasvuodna": _2, "divttasvuotna": _2, "donna": _2, "xn--dnna-gra": _2, "dønna": _2, "dovre": _2, "drammen": _2, "drangedal": _2, "dyroy": _2, "xn--dyry-ira": _2, "dyrøy": _2, "eid": _2, "eidfjord": _2, "eidsberg": _2, "eidskog": _2, "eidsvoll": _2, "eigersund": _2, "elverum": _2, "enebakk": _2, "engerdal": _2, "etne": _2, "etnedal": _2, "evenassi": _2, "xn--eveni-0qa01ga": _2, "evenášši": _2, "evenes": _2, "evje-og-hornnes": _2, "farsund": _2, "fauske": _2, "fedje": _2, "fet": _2, "finnoy": _2, "xn--finny-yua": _2, "finnøy": _2, "fitjar": _2, "fjaler": _2, "fjell": _2, "fla": _2, "xn--fl-zia": _2, "flå": _2, "flakstad": _2, "flatanger": _2, "flekkefjord": _2, "flesberg": _2, "flora": _2, "folldal": _2, "forde": _2, "xn--frde-gra": _2, "førde": _2, "forsand": _2, "fosnes": _2, "xn--frna-woa": _2, "fræna": _2, "frana": _2, "frei": _2, "frogn": _2, "froland": _2, "frosta": _2, "froya": _2, "xn--frya-hra": _2, "frøya": _2, "fuoisku": _2, "fuossko": _2, "fusa": _2, "fyresdal": _2, "gaivuotna": _2, "xn--givuotna-8ya": _2, "gáivuotna": _2, "galsa": _2, "xn--gls-elac": _2, "gálsá": _2, "gamvik": _2, "gangaviika": _2, "xn--ggaviika-8ya47h": _2, "gáŋgaviika": _2, "gaular": _2, "gausdal": _2, "giehtavuoatna": _2, "gildeskal": _2, "xn--gildeskl-g0a": _2, "gildeskål": _2, "giske": _2, "gjemnes": _2, "gjerdrum": _2, "gjerstad": _2, "gjesdal": _2, "gjovik": _2, "xn--gjvik-wua": _2, "gjøvik": _2, "gloppen": _2, "gol": _2, "gran": _2, "grane": _2, "granvin": _2, "gratangen": _2, "grimstad": _2, "grong": _2, "grue": _2, "gulen": _2, "guovdageaidnu": _2, "ha": _2, "xn--h-2fa": _2, "hå": _2, "habmer": _2, "xn--hbmer-xqa": _2, "hábmer": _2, "hadsel": _2, "xn--hgebostad-g3a": _2, "hægebostad": _2, "hagebostad": _2, "halden": _2, "halsa": _2, "hamar": _2, "hamaroy": _2, "hammarfeasta": _2, "xn--hmmrfeasta-s4ac": _2, "hámmárfeasta": _2, "hammerfest": _2, "hapmir": _2, "xn--hpmir-xqa": _2, "hápmir": _2, "haram": _2, "hareid": _2, "harstad": _2, "hasvik": _2, "hattfjelldal": _2, "haugesund": _2, "hedmark": [0, { "os": _2, "valer": _2, "xn--vler-qoa": _2, "våler": _2 }], "hemne": _2, "hemnes": _2, "hemsedal": _2, "hitra": _2, "hjartdal": _2, "hjelmeland": _2, "hobol": _2, "xn--hobl-ira": _2, "hobøl": _2, "hof": _2, "hol": _2, "hole": _2, "holmestrand": _2, "holtalen": _2, "xn--holtlen-hxa": _2, "holtålen": _2, "hordaland": [0, { "os": _2 }], "hornindal": _2, "horten": _2, "hoyanger": _2, "xn--hyanger-q1a": _2, "høyanger": _2, "hoylandet": _2, "xn--hylandet-54a": _2, "høylandet": _2, "hurdal": _2, "hurum": _2, "hvaler": _2, "hyllestad": _2, "ibestad": _2, "inderoy": _2, "xn--indery-fya": _2, "inderøy": _2, "iveland": _2, "ivgu": _2, "jevnaker": _2, "jolster": _2, "xn--jlster-bya": _2, "jølster": _2, "jondal": _2, "kafjord": _2, "xn--kfjord-iua": _2, "kåfjord": _2, "karasjohka": _2, "xn--krjohka-hwab49j": _2, "kárášjohka": _2, "karasjok": _2, "karlsoy": _2, "karmoy": _2, "xn--karmy-yua": _2, "karmøy": _2, "kautokeino": _2, "klabu": _2, "xn--klbu-woa": _2, "klæbu": _2, "klepp": _2, "kongsberg": _2, "kongsvinger": _2, "kraanghke": _2, "xn--kranghke-b0a": _2, "kråanghke": _2, "kragero": _2, "xn--krager-gya": _2, "kragerø": _2, "kristiansand": _2, "kristiansund": _2, "krodsherad": _2, "xn--krdsherad-m8a": _2, "krødsherad": _2, "xn--kvfjord-nxa": _2, "kvæfjord": _2, "xn--kvnangen-k0a": _2, "kvænangen": _2, "kvafjord": _2, "kvalsund": _2, "kvam": _2, "kvanangen": _2, "kvinesdal": _2, "kvinnherad": _2, "kviteseid": _2, "kvitsoy": _2, "xn--kvitsy-fya": _2, "kvitsøy": _2, "laakesvuemie": _2, "xn--lrdal-sra": _2, "lærdal": _2, "lahppi": _2, "xn--lhppi-xqa": _2, "láhppi": _2, "lardal": _2, "larvik": _2, "lavagis": _2, "lavangen": _2, "leangaviika": _2, "xn--leagaviika-52b": _2, "leaŋgaviika": _2, "lebesby": _2, "leikanger": _2, "leirfjord": _2, "leka": _2, "leksvik": _2, "lenvik": _2, "lerdal": _2, "lesja": _2, "levanger": _2, "lier": _2, "lierne": _2, "lillehammer": _2, "lillesand": _2, "lindas": _2, "xn--linds-pra": _2, "lindås": _2, "lindesnes": _2, "loabat": _2, "xn--loabt-0qa": _2, "loabát": _2, "lodingen": _2, "xn--ldingen-q1a": _2, "lødingen": _2, "lom": _2, "loppa": _2, "lorenskog": _2, "xn--lrenskog-54a": _2, "lørenskog": _2, "loten": _2, "xn--lten-gra": _2, "løten": _2, "lund": _2, "lunner": _2, "luroy": _2, "xn--lury-ira": _2, "lurøy": _2, "luster": _2, "lyngdal": _2, "lyngen": _2, "malatvuopmi": _2, "xn--mlatvuopmi-s4a": _2, "málatvuopmi": _2, "malselv": _2, "xn--mlselv-iua": _2, "målselv": _2, "malvik": _2, "mandal": _2, "marker": _2, "marnardal": _2, "masfjorden": _2, "masoy": _2, "xn--msy-ula0h": _2, "måsøy": _2, "matta-varjjat": _2, "xn--mtta-vrjjat-k7af": _2, "mátta-várjjat": _2, "meland": _2, "meldal": _2, "melhus": _2, "meloy": _2, "xn--mely-ira": _2, "meløy": _2, "meraker": _2, "xn--merker-kua": _2, "meråker": _2, "midsund": _2, "midtre-gauldal": _2, "moareke": _2, "xn--moreke-jua": _2, "moåreke": _2, "modalen": _2, "modum": _2, "molde": _2, "more-og-romsdal": [0, { "heroy": _2, "sande": _2 }], "xn--mre-og-romsdal-qqb": [0, { "xn--hery-ira": _2, "sande": _2 }], "møre-og-romsdal": [0, { "herøy": _2, "sande": _2 }], "moskenes": _2, "moss": _2, "muosat": _2, "xn--muost-0qa": _2, "muosát": _2, "naamesjevuemie": _2, "xn--nmesjevuemie-tcba": _2, "nååmesjevuemie": _2, "xn--nry-yla5g": _2, "nærøy": _2, "namdalseid": _2, "namsos": _2, "namsskogan": _2, "nannestad": _2, "naroy": _2, "narviika": _2, "narvik": _2, "naustdal": _2, "navuotna": _2, "xn--nvuotna-hwa": _2, "návuotna": _2, "nedre-eiker": _2, "nesna": _2, "nesodden": _2, "nesseby": _2, "nesset": _2, "nissedal": _2, "nittedal": _2, "nord-aurdal": _2, "nord-fron": _2, "nord-odal": _2, "norddal": _2, "nordkapp": _2, "nordland": [0, { "bo": _2, "xn--b-5ga": _2, "bø": _2, "heroy": _2, "xn--hery-ira": _2, "herøy": _2 }], "nordre-land": _2, "nordreisa": _2, "nore-og-uvdal": _2, "notodden": _2, "notteroy": _2, "xn--nttery-byae": _2, "nøtterøy": _2, "odda": _2, "oksnes": _2, "xn--ksnes-uua": _2, "øksnes": _2, "omasvuotna": _2, "oppdal": _2, "oppegard": _2, "xn--oppegrd-ixa": _2, "oppegård": _2, "orkdal": _2, "orland": _2, "xn--rland-uua": _2, "ørland": _2, "orskog": _2, "xn--rskog-uua": _2, "ørskog": _2, "orsta": _2, "xn--rsta-fra": _2, "ørsta": _2, "osen": _2, "osteroy": _2, "xn--ostery-fya": _2, "osterøy": _2, "ostfold": [0, { "valer": _2 }], "xn--stfold-9xa": [0, { "xn--vler-qoa": _2 }], "østfold": [0, { "våler": _2 }], "ostre-toten": _2, "xn--stre-toten-zcb": _2, "østre-toten": _2, "overhalla": _2, "ovre-eiker": _2, "xn--vre-eiker-k8a": _2, "øvre-eiker": _2, "oyer": _2, "xn--yer-zna": _2, "øyer": _2, "oygarden": _2, "xn--ygarden-p1a": _2, "øygarden": _2, "oystre-slidre": _2, "xn--ystre-slidre-ujb": _2, "øystre-slidre": _2, "porsanger": _2, "porsangu": _2, "xn--porsgu-sta26f": _2, "porsáŋgu": _2, "porsgrunn": _2, "rade": _2, "xn--rde-ula": _2, "råde": _2, "radoy": _2, "xn--rady-ira": _2, "radøy": _2, "xn--rlingen-mxa": _2, "rælingen": _2, "rahkkeravju": _2, "xn--rhkkervju-01af": _2, "ráhkkerávju": _2, "raisa": _2, "xn--risa-5na": _2, "ráisa": _2, "rakkestad": _2, "ralingen": _2, "rana": _2, "randaberg": _2, "rauma": _2, "rendalen": _2, "rennebu": _2, "rennesoy": _2, "xn--rennesy-v1a": _2, "rennesøy": _2, "rindal": _2, "ringebu": _2, "ringerike": _2, "ringsaker": _2, "risor": _2, "xn--risr-ira": _2, "risør": _2, "rissa": _2, "roan": _2, "rodoy": _2, "xn--rdy-0nab": _2, "rødøy": _2, "rollag": _2, "romsa": _2, "romskog": _2, "xn--rmskog-bya": _2, "rømskog": _2, "roros": _2, "xn--rros-gra": _2, "røros": _2, "rost": _2, "xn--rst-0na": _2, "røst": _2, "royken": _2, "xn--ryken-vua": _2, "røyken": _2, "royrvik": _2, "xn--ryrvik-bya": _2, "røyrvik": _2, "ruovat": _2, "rygge": _2, "salangen": _2, "salat": _2, "xn--slat-5na": _2, "sálat": _2, "xn--slt-elab": _2, "sálát": _2, "saltdal": _2, "samnanger": _2, "sandefjord": _2, "sandnes": _2, "sandoy": _2, "xn--sandy-yua": _2, "sandøy": _2, "sarpsborg": _2, "sauda": _2, "sauherad": _2, "sel": _2, "selbu": _2, "selje": _2, "seljord": _2, "siellak": _2, "sigdal": _2, "siljan": _2, "sirdal": _2, "skanit": _2, "xn--sknit-yqa": _2, "skánit": _2, "skanland": _2, "xn--sknland-fxa": _2, "skånland": _2, "skaun": _2, "skedsmo": _2, "ski": _2, "skien": _2, "skierva": _2, "xn--skierv-uta": _2, "skiervá": _2, "skiptvet": _2, "skjak": _2, "xn--skjk-soa": _2, "skjåk": _2, "skjervoy": _2, "xn--skjervy-v1a": _2, "skjervøy": _2, "skodje": _2, "smola": _2, "xn--smla-hra": _2, "smøla": _2, "snaase": _2, "xn--snase-nra": _2, "snåase": _2, "snasa": _2, "xn--snsa-roa": _2, "snåsa": _2, "snillfjord": _2, "snoasa": _2, "sogndal": _2, "sogne": _2, "xn--sgne-gra": _2, "søgne": _2, "sokndal": _2, "sola": _2, "solund": _2, "somna": _2, "xn--smna-gra": _2, "sømna": _2, "sondre-land": _2, "xn--sndre-land-0cb": _2, "søndre-land": _2, "songdalen": _2, "sor-aurdal": _2, "xn--sr-aurdal-l8a": _2, "sør-aurdal": _2, "sor-fron": _2, "xn--sr-fron-q1a": _2, "sør-fron": _2, "sor-odal": _2, "xn--sr-odal-q1a": _2, "sør-odal": _2, "sor-varanger": _2, "xn--sr-varanger-ggb": _2, "sør-varanger": _2, "sorfold": _2, "xn--srfold-bya": _2, "sørfold": _2, "sorreisa": _2, "xn--srreisa-q1a": _2, "sørreisa": _2, "sortland": _2, "sorum": _2, "xn--srum-gra": _2, "sørum": _2, "spydeberg": _2, "stange": _2, "stavanger": _2, "steigen": _2, "steinkjer": _2, "stjordal": _2, "xn--stjrdal-s1a": _2, "stjørdal": _2, "stokke": _2, "stor-elvdal": _2, "stord": _2, "stordal": _2, "storfjord": _2, "strand": _2, "stranda": _2, "stryn": _2, "sula": _2, "suldal": _2, "sund": _2, "sunndal": _2, "surnadal": _2, "sveio": _2, "svelvik": _2, "sykkylven": _2, "tana": _2, "telemark": [0, { "bo": _2, "xn--b-5ga": _2, "bø": _2 }], "time": _2, "tingvoll": _2, "tinn": _2, "tjeldsund": _2, "tjome": _2, "xn--tjme-hra": _2, "tjøme": _2, "tokke": _2, "tolga": _2, "tonsberg": _2, "xn--tnsberg-q1a": _2, "tønsberg": _2, "torsken": _2, "xn--trna-woa": _2, "træna": _2, "trana": _2, "tranoy": _2, "xn--trany-yua": _2, "tranøy": _2, "troandin": _2, "trogstad": _2, "xn--trgstad-r1a": _2, "trøgstad": _2, "tromsa": _2, "tromso": _2, "xn--troms-zua": _2, "tromsø": _2, "trondheim": _2, "trysil": _2, "tvedestrand": _2, "tydal": _2, "tynset": _2, "tysfjord": _2, "tysnes": _2, "xn--tysvr-vra": _2, "tysvær": _2, "tysvar": _2, "ullensaker": _2, "ullensvang": _2, "ulvik": _2, "unjarga": _2, "xn--unjrga-rta": _2, "unjárga": _2, "utsira": _2, "vaapste": _2, "vadso": _2, "xn--vads-jra": _2, "vadsø": _2, "xn--vry-yla5g": _2, "værøy": _2, "vaga": _2, "xn--vg-yiab": _2, "vågå": _2, "vagan": _2, "xn--vgan-qoa": _2, "vågan": _2, "vagsoy": _2, "xn--vgsy-qoa0j": _2, "vågsøy": _2, "vaksdal": _2, "valle": _2, "vang": _2, "vanylven": _2, "vardo": _2, "xn--vard-jra": _2, "vardø": _2, "varggat": _2, "xn--vrggt-xqad": _2, "várggát": _2, "varoy": _2, "vefsn": _2, "vega": _2, "vegarshei": _2, "xn--vegrshei-c0a": _2, "vegårshei": _2, "vennesla": _2, "verdal": _2, "verran": _2, "vestby": _2, "vestfold": [0, { "sande": _2 }], "vestnes": _2, "vestre-slidre": _2, "vestre-toten": _2, "vestvagoy": _2, "xn--vestvgy-ixa6o": _2, "vestvågøy": _2, "vevelstad": _2, "vik": _2, "vikna": _2, "vindafjord": _2, "voagat": _2, "volda": _2, "voss": _2, "co": _3, "123hjemmeside": _3, "myspreadshop": _3 }], "np": _21, "nr": _60, "nu": [1, { "merseine": _3, "mine": _3, "shacknet": _3, "enterprisecloud": _3 }], "nz": [1, { "ac": _2, "co": _2, "cri": _2, "geek": _2, "gen": _2, "govt": _2, "health": _2, "iwi": _2, "kiwi": _2, "maori": _2, "xn--mori-qsa": _2, "māori": _2, "mil": _2, "net": _2, "org": _2, "parliament": _2, "school": _2, "cloudns": _3 }], "om": [1, { "co": _2, "com": _2, "edu": _2, "gov": _2, "med": _2, "museum": _2, "net": _2, "org": _2, "pro": _2 }], "onion": _2, "org": [1, { "altervista": _3, "pimienta": _3, "poivron": _3, "potager": _3, "sweetpepper": _3, "cdn77": [0, { "c": _3, "rsc": _3 }], "cdn77-secure": [0, { "origin": [0, { "ssl": _3 }] }], "ae": _3, "cloudns": _3, "ip-dynamic": _3, "ddnss": _3, "dpdns": _3, "duckdns": _3, "tunk": _3, "blogdns": _3, "blogsite": _3, "boldlygoingnowhere": _3, "dnsalias": _3, "dnsdojo": _3, "doesntexist": _3, "dontexist": _3, "doomdns": _3, "dvrdns": _3, "dynalias": _3, "dyndns": [2, { "go": _3, "home": _3 }], "endofinternet": _3, "endoftheinternet": _3, "from-me": _3, "game-host": _3, "gotdns": _3, "hobby-site": _3, "homedns": _3, "homeftp": _3, "homelinux": _3, "homeunix": _3, "is-a-bruinsfan": _3, "is-a-candidate": _3, "is-a-celticsfan": _3, "is-a-chef": _3, "is-a-geek": _3, "is-a-knight": _3, "is-a-linux-user": _3, "is-a-patsfan": _3, "is-a-soxfan": _3, "is-found": _3, "is-lost": _3, "is-saved": _3, "is-very-bad": _3, "is-very-evil": _3, "is-very-good": _3, "is-very-nice": _3, "is-very-sweet": _3, "isa-geek": _3, "kicks-ass": _3, "misconfused": _3, "podzone": _3, "readmyblog": _3, "selfip": _3, "sellsyourhome": _3, "servebbs": _3, "serveftp": _3, "servegame": _3, "stuff-4-sale": _3, "webhop": _3, "accesscam": _3, "camdvr": _3, "freeddns": _3, "mywire": _3, "roxa": _3, "webredirect": _3, "twmail": _3, "eu": [2, { "al": _3, "asso": _3, "at": _3, "au": _3, "be": _3, "bg": _3, "ca": _3, "cd": _3, "ch": _3, "cn": _3, "cy": _3, "cz": _3, "de": _3, "dk": _3, "edu": _3, "ee": _3, "es": _3, "fi": _3, "fr": _3, "gr": _3, "hr": _3, "hu": _3, "ie": _3, "il": _3, "in": _3, "int": _3, "is": _3, "it": _3, "jp": _3, "kr": _3, "lt": _3, "lu": _3, "lv": _3, "me": _3, "mk": _3, "mt": _3, "my": _3, "net": _3, "ng": _3, "nl": _3, "no": _3, "nz": _3, "pl": _3, "pt": _3, "ro": _3, "ru": _3, "se": _3, "si": _3, "sk": _3, "tr": _3, "uk": _3, "us": _3 }], "fedorainfracloud": _3, "fedorapeople": _3, "fedoraproject": [0, { "cloud": _3, "os": _45, "stg": [0, { "os": _45 }] }], "freedesktop": _3, "hatenadiary": _3, "hepforge": _3, "in-dsl": _3, "in-vpn": _3, "js": _3, "barsy": _3, "mayfirst": _3, "routingthecloud": _3, "bmoattachments": _3, "cable-modem": _3, "collegefan": _3, "couchpotatofries": _3, "hopto": _3, "mlbfan": _3, "myftp": _3, "mysecuritycamera": _3, "nflfan": _3, "no-ip": _3, "read-books": _3, "ufcfan": _3, "zapto": _3, "dynserv": _3, "now-dns": _3, "is-local": _3, "httpbin": _3, "pubtls": _3, "jpn": _3, "my-firewall": _3, "myfirewall": _3, "spdns": _3, "small-web": _3, "dsmynas": _3, "familyds": _3, "teckids": _59, "tuxfamily": _3, "hk": _3, "us": _3, "toolforge": _3, "wmcloud": [2, { "beta": _3 }], "wmflabs": _3, "za": _3 }], "pa": [1, { "abo": _2, "ac": _2, "com": _2, "edu": _2, "gob": _2, "ing": _2, "med": _2, "net": _2, "nom": _2, "org": _2, "sld": _2 }], "pe": [1, { "com": _2, "edu": _2, "gob": _2, "mil": _2, "net": _2, "nom": _2, "org": _2 }], "pf": [1, { "com": _2, "edu": _2, "org": _2 }], "pg": _21, "ph": [1, { "com": _2, "edu": _2, "gov": _2, "i": _2, "mil": _2, "net": _2, "ngo": _2, "org": _2, "cloudns": _3 }], "pk": [1, { "ac": _2, "biz": _2, "com": _2, "edu": _2, "fam": _2, "gkp": _2, "gob": _2, "gog": _2, "gok": _2, "gop": _2, "gos": _2, "gov": _2, "net": _2, "org": _2, "web": _2 }], "pl": [1, { "com": _2, "net": _2, "org": _2, "agro": _2, "aid": _2, "atm": _2, "auto": _2, "biz": _2, "edu": _2, "gmina": _2, "gsm": _2, "info": _2, "mail": _2, "media": _2, "miasta": _2, "mil": _2, "nieruchomosci": _2, "nom": _2, "pc": _2, "powiat": _2, "priv": _2, "realestate": _2, "rel": _2, "sex": _2, "shop": _2, "sklep": _2, "sos": _2, "szkola": _2, "targi": _2, "tm": _2, "tourism": _2, "travel": _2, "turystyka": _2, "gov": [1, { "ap": _2, "griw": _2, "ic": _2, "is": _2, "kmpsp": _2, "konsulat": _2, "kppsp": _2, "kwp": _2, "kwpsp": _2, "mup": _2, "mw": _2, "oia": _2, "oirm": _2, "oke": _2, "oow": _2, "oschr": _2, "oum": _2, "pa": _2, "pinb": _2, "piw": _2, "po": _2, "pr": _2, "psp": _2, "psse": _2, "pup": _2, "rzgw": _2, "sa": _2, "sdn": _2, "sko": _2, "so": _2, "sr": _2, "starostwo": _2, "ug": _2, "ugim": _2, "um": _2, "umig": _2, "upow": _2, "uppo": _2, "us": _2, "uw": _2, "uzs": _2, "wif": _2, "wiih": _2, "winb": _2, "wios": _2, "witd": _2, "wiw": _2, "wkz": _2, "wsa": _2, "wskr": _2, "wsse": _2, "wuoz": _2, "wzmiuw": _2, "zp": _2, "zpisdn": _2 }], "augustow": _2, "babia-gora": _2, "bedzin": _2, "beskidy": _2, "bialowieza": _2, "bialystok": _2, "bielawa": _2, "bieszczady": _2, "boleslawiec": _2, "bydgoszcz": _2, "bytom": _2, "cieszyn": _2, "czeladz": _2, "czest": _2, "dlugoleka": _2, "elblag": _2, "elk": _2, "glogow": _2, "gniezno": _2, "gorlice": _2, "grajewo": _2, "ilawa": _2, "jaworzno": _2, "jelenia-gora": _2, "jgora": _2, "kalisz": _2, "karpacz": _2, "kartuzy": _2, "kaszuby": _2, "katowice": _2, "kazimierz-dolny": _2, "kepno": _2, "ketrzyn": _2, "klodzko": _2, "kobierzyce": _2, "kolobrzeg": _2, "konin": _2, "konskowola": _2, "kutno": _2, "lapy": _2, "lebork": _2, "legnica": _2, "lezajsk": _2, "limanowa": _2, "lomza": _2, "lowicz": _2, "lubin": _2, "lukow": _2, "malbork": _2, "malopolska": _2, "mazowsze": _2, "mazury": _2, "mielec": _2, "mielno": _2, "mragowo": _2, "naklo": _2, "nowaruda": _2, "nysa": _2, "olawa": _2, "olecko": _2, "olkusz": _2, "olsztyn": _2, "opoczno": _2, "opole": _2, "ostroda": _2, "ostroleka": _2, "ostrowiec": _2, "ostrowwlkp": _2, "pila": _2, "pisz": _2, "podhale": _2, "podlasie": _2, "polkowice": _2, "pomorskie": _2, "pomorze": _2, "prochowice": _2, "pruszkow": _2, "przeworsk": _2, "pulawy": _2, "radom": _2, "rawa-maz": _2, "rybnik": _2, "rzeszow": _2, "sanok": _2, "sejny": _2, "skoczow": _2, "slask": _2, "slupsk": _2, "sosnowiec": _2, "stalowa-wola": _2, "starachowice": _2, "stargard": _2, "suwalki": _2, "swidnica": _2, "swiebodzin": _2, "swinoujscie": _2, "szczecin": _2, "szczytno": _2, "tarnobrzeg": _2, "tgory": _2, "turek": _2, "tychy": _2, "ustka": _2, "walbrzych": _2, "warmia": _2, "warszawa": _2, "waw": _2, "wegrow": _2, "wielun": _2, "wlocl": _2, "wloclawek": _2, "wodzislaw": _2, "wolomin": _2, "wroclaw": _2, "zachpomor": _2, "zagan": _2, "zarow": _2, "zgora": _2, "zgorzelec": _2, "art": _3, "gliwice": _3, "krakow": _3, "poznan": _3, "wroc": _3, "zakopane": _3, "beep": _3, "ecommerce-shop": _3, "cfolks": _3, "dfirma": _3, "dkonto": _3, "you2": _3, "shoparena": _3, "homesklep": _3, "sdscloud": _3, "unicloud": _3, "lodz": _3, "pabianice": _3, "plock": _3, "sieradz": _3, "skierniewice": _3, "zgierz": _3, "krasnik": _3, "leczna": _3, "lubartow": _3, "lublin": _3, "poniatowa": _3, "swidnik": _3, "co": _3, "torun": _3, "simplesite": _3, "myspreadshop": _3, "gda": _3, "gdansk": _3, "gdynia": _3, "med": _3, "sopot": _3, "bielsko": _3 }], "pm": [1, { "own": _3, "name": _3 }], "pn": [1, { "co": _2, "edu": _2, "gov": _2, "net": _2, "org": _2 }], "post": _2, "pr": [1, { "biz": _2, "com": _2, "edu": _2, "gov": _2, "info": _2, "isla": _2, "name": _2, "net": _2, "org": _2, "pro": _2, "ac": _2, "est": _2, "prof": _2 }], "pro": [1, { "aaa": _2, "aca": _2, "acct": _2, "avocat": _2, "bar": _2, "cpa": _2, "eng": _2, "jur": _2, "law": _2, "med": _2, "recht": _2, "cloudns": _3, "keenetic": _3, "barsy": _3, "ngrok": _3 }], "ps": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "plo": _2, "sec": _2 }], "pt": [1, { "com": _2, "edu": _2, "gov": _2, "int": _2, "net": _2, "nome": _2, "org": _2, "publ": _2, "123paginaweb": _3 }], "pw": [1, { "gov": _2, "cloudns": _3, "x443": _3 }], "py": [1, { "com": _2, "coop": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2 }], "qa": [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "name": _2, "net": _2, "org": _2, "sch": _2 }], "re": [1, { "asso": _2, "com": _2, "netlib": _3, "can": _3 }], "ro": [1, { "arts": _2, "com": _2, "firm": _2, "info": _2, "nom": _2, "nt": _2, "org": _2, "rec": _2, "store": _2, "tm": _2, "www": _2, "co": _3, "shop": _3, "barsy": _3 }], "rs": [1, { "ac": _2, "co": _2, "edu": _2, "gov": _2, "in": _2, "org": _2, "brendly": _20, "barsy": _3, "ox": _3 }], "ru": [1, { "ac": _3, "edu": _3, "gov": _3, "int": _3, "mil": _3, "eurodir": _3, "adygeya": _3, "bashkiria": _3, "bir": _3, "cbg": _3, "com": _3, "dagestan": _3, "grozny": _3, "kalmykia": _3, "kustanai": _3, "marine": _3, "mordovia": _3, "msk": _3, "mytis": _3, "nalchik": _3, "nov": _3, "pyatigorsk": _3, "spb": _3, "vladikavkaz": _3, "vladimir": _3, "na4u": _3, "mircloud": _3, "myjino": [2, { "hosting": _6, "landing": _6, "spectrum": _6, "vps": _6 }], "cldmail": [0, { "hb": _3 }], "mcdir": [2, { "vps": _3 }], "mcpre": _3, "net": _3, "org": _3, "pp": _3, "ras": _3 }], "rw": [1, { "ac": _2, "co": _2, "coop": _2, "gov": _2, "mil": _2, "net": _2, "org": _2 }], "sa": [1, { "com": _2, "edu": _2, "gov": _2, "med": _2, "net": _2, "org": _2, "pub": _2, "sch": _2 }], "sb": _4, "sc": _4, "sd": [1, { "com": _2, "edu": _2, "gov": _2, "info": _2, "med": _2, "net": _2, "org": _2, "tv": _2 }], "se": [1, { "a": _2, "ac": _2, "b": _2, "bd": _2, "brand": _2, "c": _2, "d": _2, "e": _2, "f": _2, "fh": _2, "fhsk": _2, "fhv": _2, "g": _2, "h": _2, "i": _2, "k": _2, "komforb": _2, "kommunalforbund": _2, "komvux": _2, "l": _2, "lanbib": _2, "m": _2, "n": _2, "naturbruksgymn": _2, "o": _2, "org": _2, "p": _2, "parti": _2, "pp": _2, "press": _2, "r": _2, "s": _2, "t": _2, "tm": _2, "u": _2, "w": _2, "x": _2, "y": _2, "z": _2, "com": _3, "iopsys": _3, "123minsida": _3, "itcouldbewor": _3, "myspreadshop": _3 }], "sg": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "enscaled": _3 }], "sh": [1, { "com": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "hashbang": _3, "botda": _3, "lovable": _3, "platform": [0, { "ent": _3, "eu": _3, "us": _3 }], "teleport": _3, "now": _3 }], "si": [1, { "f5": _3, "gitapp": _3, "gitpage": _3 }], "sj": _2, "sk": [1, { "org": _2 }], "sl": _4, "sm": _2, "sn": [1, { "art": _2, "com": _2, "edu": _2, "gouv": _2, "org": _2, "univ": _2 }], "so": [1, { "com": _2, "edu": _2, "gov": _2, "me": _2, "net": _2, "org": _2, "surveys": _3 }], "sr": _2, "ss": [1, { "biz": _2, "co": _2, "com": _2, "edu": _2, "gov": _2, "me": _2, "net": _2, "org": _2, "sch": _2 }], "st": [1, { "co": _2, "com": _2, "consulado": _2, "edu": _2, "embaixada": _2, "mil": _2, "net": _2, "org": _2, "principe": _2, "saotome": _2, "store": _2, "helioho": _3, "cn": _6, "kirara": _3, "noho": _3 }], "su": [1, { "abkhazia": _3, "adygeya": _3, "aktyubinsk": _3, "arkhangelsk": _3, "armenia": _3, "ashgabad": _3, "azerbaijan": _3, "balashov": _3, "bashkiria": _3, "bryansk": _3, "bukhara": _3, "chimkent": _3, "dagestan": _3, "east-kazakhstan": _3, "exnet": _3, "georgia": _3, "grozny": _3, "ivanovo": _3, "jambyl": _3, "kalmykia": _3, "kaluga": _3, "karacol": _3, "karaganda": _3, "karelia": _3, "khakassia": _3, "krasnodar": _3, "kurgan": _3, "kustanai": _3, "lenug": _3, "mangyshlak": _3, "mordovia": _3, "msk": _3, "murmansk": _3, "nalchik": _3, "navoi": _3, "north-kazakhstan": _3, "nov": _3, "obninsk": _3, "penza": _3, "pokrovsk": _3, "sochi": _3, "spb": _3, "tashkent": _3, "termez": _3, "togliatti": _3, "troitsk": _3, "tselinograd": _3, "tula": _3, "tuva": _3, "vladikavkaz": _3, "vladimir": _3, "vologda": _3 }], "sv": [1, { "com": _2, "edu": _2, "gob": _2, "org": _2, "red": _2 }], "sx": _10, "sy": _5, "sz": [1, { "ac": _2, "co": _2, "org": _2 }], "tc": _2, "td": _2, "tel": _2, "tf": [1, { "sch": _3 }], "tg": _2, "th": [1, { "ac": _2, "co": _2, "go": _2, "in": _2, "mi": _2, "net": _2, "or": _2, "online": _3, "shop": _3 }], "tj": [1, { "ac": _2, "biz": _2, "co": _2, "com": _2, "edu": _2, "go": _2, "gov": _2, "int": _2, "mil": _2, "name": _2, "net": _2, "nic": _2, "org": _2, "test": _2, "web": _2 }], "tk": _2, "tl": _10, "tm": [1, { "co": _2, "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "nom": _2, "org": _2 }], "tn": [1, { "com": _2, "ens": _2, "fin": _2, "gov": _2, "ind": _2, "info": _2, "intl": _2, "mincom": _2, "nat": _2, "net": _2, "org": _2, "perso": _2, "tourism": _2, "orangecloud": _3 }], "to": [1, { "611": _3, "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "oya": _3, "x0": _3, "quickconnect": _28, "vpnplus": _3, "nett": _3 }], "tr": [1, { "av": _2, "bbs": _2, "bel": _2, "biz": _2, "com": _2, "dr": _2, "edu": _2, "gen": _2, "gov": _2, "info": _2, "k12": _2, "kep": _2, "mil": _2, "name": _2, "net": _2, "org": _2, "pol": _2, "tel": _2, "tsk": _2, "tv": _2, "web": _2, "nc": _10 }], "tt": [1, { "biz": _2, "co": _2, "com": _2, "edu": _2, "gov": _2, "info": _2, "mil": _2, "name": _2, "net": _2, "org": _2, "pro": _2 }], "tv": [1, { "better-than": _3, "dyndns": _3, "on-the-web": _3, "worse-than": _3, "from": _3, "sakura": _3 }], "tw": [1, { "club": _2, "com": [1, { "mymailer": _3 }], "ebiz": _2, "edu": _2, "game": _2, "gov": _2, "idv": _2, "mil": _2, "net": _2, "org": _2, "url": _3, "mydns": _3 }], "tz": [1, { "ac": _2, "co": _2, "go": _2, "hotel": _2, "info": _2, "me": _2, "mil": _2, "mobi": _2, "ne": _2, "or": _2, "sc": _2, "tv": _2 }], "ua": [1, { "com": _2, "edu": _2, "gov": _2, "in": _2, "net": _2, "org": _2, "cherkassy": _2, "cherkasy": _2, "chernigov": _2, "chernihiv": _2, "chernivtsi": _2, "chernovtsy": _2, "ck": _2, "cn": _2, "cr": _2, "crimea": _2, "cv": _2, "dn": _2, "dnepropetrovsk": _2, "dnipropetrovsk": _2, "donetsk": _2, "dp": _2, "if": _2, "ivano-frankivsk": _2, "kh": _2, "kharkiv": _2, "kharkov": _2, "kherson": _2, "khmelnitskiy": _2, "khmelnytskyi": _2, "kiev": _2, "kirovograd": _2, "km": _2, "kr": _2, "kropyvnytskyi": _2, "krym": _2, "ks": _2, "kv": _2, "kyiv": _2, "lg": _2, "lt": _2, "lugansk": _2, "luhansk": _2, "lutsk": _2, "lv": _2, "lviv": _2, "mk": _2, "mykolaiv": _2, "nikolaev": _2, "od": _2, "odesa": _2, "odessa": _2, "pl": _2, "poltava": _2, "rivne": _2, "rovno": _2, "rv": _2, "sb": _2, "sebastopol": _2, "sevastopol": _2, "sm": _2, "sumy": _2, "te": _2, "ternopil": _2, "uz": _2, "uzhgorod": _2, "uzhhorod": _2, "vinnica": _2, "vinnytsia": _2, "vn": _2, "volyn": _2, "yalta": _2, "zakarpattia": _2, "zaporizhzhe": _2, "zaporizhzhia": _2, "zhitomir": _2, "zhytomyr": _2, "zp": _2, "zt": _2, "cc": _3, "inf": _3, "ltd": _3, "cx": _3, "biz": _3, "co": _3, "pp": _3, "v": _3 }], "ug": [1, { "ac": _2, "co": _2, "com": _2, "edu": _2, "go": _2, "gov": _2, "mil": _2, "ne": _2, "or": _2, "org": _2, "sc": _2, "us": _2 }], "uk": [1, { "ac": _2, "co": [1, { "bytemark": [0, { "dh": _3, "vm": _3 }], "layershift": _48, "barsy": _3, "barsyonline": _3, "retrosnub": _58, "nh-serv": _3, "no-ip": _3, "adimo": _3, "myspreadshop": _3 }], "gov": [1, { "api": _3, "campaign": _3, "service": _3 }], "ltd": _2, "me": _2, "net": _2, "nhs": _2, "org": [1, { "glug": _3, "lug": _3, "lugs": _3, "affinitylottery": _3, "raffleentry": _3, "weeklylottery": _3 }], "plc": _2, "police": _2, "sch": _21, "conn": _3, "copro": _3, "hosp": _3, "independent-commission": _3, "independent-inquest": _3, "independent-inquiry": _3, "independent-panel": _3, "independent-review": _3, "public-inquiry": _3, "royal-commission": _3, "pymnt": _3, "barsy": _3, "nimsite": _3, "oraclegovcloudapps": _6 }], "us": [1, { "dni": _2, "isa": _2, "nsn": _2, "ak": _68, "al": _68, "ar": _68, "as": _68, "az": _68, "ca": _68, "co": _68, "ct": _68, "dc": _68, "de": _69, "fl": _68, "ga": _68, "gu": _68, "hi": _70, "ia": _68, "id": _68, "il": _68, "in": _68, "ks": _68, "ky": _68, "la": _68, "ma": [1, { "k12": [1, { "chtr": _2, "paroch": _2, "pvt": _2 }], "cc": _2, "lib": _2 }], "md": _68, "me": _68, "mi": [1, { "k12": _2, "cc": _2, "lib": _2, "ann-arbor": _2, "cog": _2, "dst": _2, "eaton": _2, "gen": _2, "mus": _2, "tec": _2, "washtenaw": _2 }], "mn": _68, "mo": _68, "ms": [1, { "k12": _2, "cc": _2 }], "mt": _68, "nc": _68, "nd": _70, "ne": _68, "nh": _68, "nj": _68, "nm": _68, "nv": _68, "ny": _68, "oh": _68, "ok": _68, "or": _68, "pa": _68, "pr": _68, "ri": _70, "sc": _68, "sd": _70, "tn": _68, "tx": _68, "ut": _68, "va": _68, "vi": _68, "vt": _68, "wa": _68, "wi": _68, "wv": _69, "wy": _68, "cloudns": _3, "is-by": _3, "land-4-sale": _3, "stuff-4-sale": _3, "heliohost": _3, "enscaled": [0, { "phx": _3 }], "mircloud": _3, "azure-api": _3, "azurewebsites": _3, "ngo": _3, "golffan": _3, "noip": _3, "pointto": _3, "freeddns": _3, "srv": [2, { "gh": _3, "gl": _3 }], "servername": _3 }], "uy": [1, { "com": _2, "edu": _2, "gub": _2, "mil": _2, "net": _2, "org": _2, "gv": _3 }], "uz": [1, { "co": _2, "com": _2, "net": _2, "org": _2 }], "va": _2, "vc": [1, { "com": _2, "edu": _2, "gov": _2, "mil": _2, "net": _2, "org": _2, "gv": [2, { "d": _3 }], "0e": _6, "mydns": _3 }], "ve": [1, { "arts": _2, "bib": _2, "co": _2, "com": _2, "e12": _2, "edu": _2, "emprende": _2, "firm": _2, "gob": _2, "gov": _2, "ia": _2, "info": _2, "int": _2, "mil": _2, "net": _2, "nom": _2, "org": _2, "rar": _2, "rec": _2, "store": _2, "tec": _2, "web": _2 }], "vg": [1, { "edu": _2 }], "vi": [1, { "co": _2, "com": _2, "k12": _2, "net": _2, "org": _2 }], "vn": [1, { "ac": _2, "ai": _2, "biz": _2, "com": _2, "edu": _2, "gov": _2, "health": _2, "id": _2, "info": _2, "int": _2, "io": _2, "name": _2, "net": _2, "org": _2, "pro": _2, "angiang": _2, "bacgiang": _2, "backan": _2, "baclieu": _2, "bacninh": _2, "baria-vungtau": _2, "bentre": _2, "binhdinh": _2, "binhduong": _2, "binhphuoc": _2, "binhthuan": _2, "camau": _2, "cantho": _2, "caobang": _2, "daklak": _2, "daknong": _2, "danang": _2, "dienbien": _2, "dongnai": _2, "dongthap": _2, "gialai": _2, "hagiang": _2, "haiduong": _2, "haiphong": _2, "hanam": _2, "hanoi": _2, "hatinh": _2, "haugiang": _2, "hoabinh": _2, "hungyen": _2, "khanhhoa": _2, "kiengiang": _2, "kontum": _2, "laichau": _2, "lamdong": _2, "langson": _2, "laocai": _2, "longan": _2, "namdinh": _2, "nghean": _2, "ninhbinh": _2, "ninhthuan": _2, "phutho": _2, "phuyen": _2, "quangbinh": _2, "quangnam": _2, "quangngai": _2, "quangninh": _2, "quangtri": _2, "soctrang": _2, "sonla": _2, "tayninh": _2, "thaibinh": _2, "thainguyen": _2, "thanhhoa": _2, "thanhphohochiminh": _2, "thuathienhue": _2, "tiengiang": _2, "travinh": _2, "tuyenquang": _2, "vinhlong": _2, "vinhphuc": _2, "yenbai": _2 }], "vu": _47, "wf": [1, { "biz": _3, "sch": _3 }], "ws": [1, { "com": _2, "edu": _2, "gov": _2, "net": _2, "org": _2, "advisor": _6, "cloud66": _3, "dyndns": _3, "mypets": _3 }], "yt": [1, { "org": _3 }], "xn--mgbaam7a8h": _2, "امارات": _2, "xn--y9a3aq": _2, "հայ": _2, "xn--54b7fta0cc": _2, "বাংলা": _2, "xn--90ae": _2, "бг": _2, "xn--mgbcpq6gpa1a": _2, "البحرين": _2, "xn--90ais": _2, "бел": _2, "xn--fiqs8s": _2, "中国": _2, "xn--fiqz9s": _2, "中國": _2, "xn--lgbbat1ad8j": _2, "الجزائر": _2, "xn--wgbh1c": _2, "مصر": _2, "xn--e1a4c": _2, "ею": _2, "xn--qxa6a": _2, "ευ": _2, "xn--mgbah1a3hjkrd": _2, "موريتانيا": _2, "xn--node": _2, "გე": _2, "xn--qxam": _2, "ελ": _2, "xn--j6w193g": [1, { "xn--gmqw5a": _2, "xn--55qx5d": _2, "xn--mxtq1m": _2, "xn--wcvs22d": _2, "xn--uc0atv": _2, "xn--od0alg": _2 }], "香港": [1, { "個人": _2, "公司": _2, "政府": _2, "教育": _2, "組織": _2, "網絡": _2 }], "xn--2scrj9c": _2, "ಭಾರತ": _2, "xn--3hcrj9c": _2, "ଭାରତ": _2, "xn--45br5cyl": _2, "ভাৰত": _2, "xn--h2breg3eve": _2, "भारतम्": _2, "xn--h2brj9c8c": _2, "भारोत": _2, "xn--mgbgu82a": _2, "ڀارت": _2, "xn--rvc1e0am3e": _2, "ഭാരതം": _2, "xn--h2brj9c": _2, "भारत": _2, "xn--mgbbh1a": _2, "بارت": _2, "xn--mgbbh1a71e": _2, "بھارت": _2, "xn--fpcrj9c3d": _2, "భారత్": _2, "xn--gecrj9c": _2, "ભારત": _2, "xn--s9brj9c": _2, "ਭਾਰਤ": _2, "xn--45brj9c": _2, "ভারত": _2, "xn--xkc2dl3a5ee0h": _2, "இந்தியா": _2, "xn--mgba3a4f16a": _2, "ایران": _2, "xn--mgba3a4fra": _2, "ايران": _2, "xn--mgbtx2b": _2, "عراق": _2, "xn--mgbayh7gpa": _2, "الاردن": _2, "xn--3e0b707e": _2, "한국": _2, "xn--80ao21a": _2, "қаз": _2, "xn--q7ce6a": _2, "ລາວ": _2, "xn--fzc2c9e2c": _2, "ලංකා": _2, "xn--xkc2al3hye2a": _2, "இலங்கை": _2, "xn--mgbc0a9azcg": _2, "المغرب": _2, "xn--d1alf": _2, "мкд": _2, "xn--l1acc": _2, "мон": _2, "xn--mix891f": _2, "澳門": _2, "xn--mix082f": _2, "澳门": _2, "xn--mgbx4cd0ab": _2, "مليسيا": _2, "xn--mgb9awbf": _2, "عمان": _2, "xn--mgbai9azgqp6j": _2, "پاکستان": _2, "xn--mgbai9a5eva00b": _2, "پاكستان": _2, "xn--ygbi2ammx": _2, "فلسطين": _2, "xn--90a3ac": [1, { "xn--80au": _2, "xn--90azh": _2, "xn--d1at": _2, "xn--c1avg": _2, "xn--o1ac": _2, "xn--o1ach": _2 }], "срб": [1, { "ак": _2, "обр": _2, "од": _2, "орг": _2, "пр": _2, "упр": _2 }], "xn--p1ai": _2, "рф": _2, "xn--wgbl6a": _2, "قطر": _2, "xn--mgberp4a5d4ar": _2, "السعودية": _2, "xn--mgberp4a5d4a87g": _2, "السعودیة": _2, "xn--mgbqly7c0a67fbc": _2, "السعودیۃ": _2, "xn--mgbqly7cvafr": _2, "السعوديه": _2, "xn--mgbpl2fh": _2, "سودان": _2, "xn--yfro4i67o": _2, "新加坡": _2, "xn--clchc0ea0b2g2a9gcd": _2, "சிங்கப்பூர்": _2, "xn--ogbpf8fl": _2, "سورية": _2, "xn--mgbtf8fl": _2, "سوريا": _2, "xn--o3cw4h": [1, { "xn--o3cyx2a": _2, "xn--12co0c3b4eva": _2, "xn--m3ch0j3a": _2, "xn--h3cuzk1di": _2, "xn--12c1fe0br": _2, "xn--12cfi8ixb8l": _2 }], "ไทย": [1, { "ทหาร": _2, "ธุรกิจ": _2, "เน็ต": _2, "รัฐบาล": _2, "ศึกษา": _2, "องค์กร": _2 }], "xn--pgbs0dh": _2, "تونس": _2, "xn--kpry57d": _2, "台灣": _2, "xn--kprw13d": _2, "台湾": _2, "xn--nnx388a": _2, "臺灣": _2, "xn--j1amh": _2, "укр": _2, "xn--mgb2ddes": _2, "اليمن": _2, "xxx": _2, "ye": _5, "za": [0, { "ac": _2, "agric": _2, "alt": _2, "co": _2, "edu": _2, "gov": _2, "grondar": _2, "law": _2, "mil": _2, "net": _2, "ngo": _2, "nic": _2, "nis": _2, "nom": _2, "org": _2, "school": _2, "tm": _2, "web": _2 }], "zm": [1, { "ac": _2, "biz": _2, "co": _2, "com": _2, "edu": _2, "gov": _2, "info": _2, "mil": _2, "net": _2, "org": _2, "sch": _2 }], "zw": [1, { "ac": _2, "co": _2, "gov": _2, "mil": _2, "org": _2 }], "aaa": _2, "aarp": _2, "abb": _2, "abbott": _2, "abbvie": _2, "abc": _2, "able": _2, "abogado": _2, "abudhabi": _2, "academy": [1, { "official": _3 }], "accenture": _2, "accountant": _2, "accountants": _2, "aco": _2, "actor": _2, "ads": _2, "adult": _2, "aeg": _2, "aetna": _2, "afl": _2, "africa": _2, "agakhan": _2, "agency": _2, "aig": _2, "airbus": _2, "airforce": _2, "airtel": _2, "akdn": _2, "alibaba": _2, "alipay": _2, "allfinanz": _2, "allstate": _2, "ally": _2, "alsace": _2, "alstom": _2, "amazon": _2, "americanexpress": _2, "americanfamily": _2, "amex": _2, "amfam": _2, "amica": _2, "amsterdam": _2, "analytics": _2, "android": _2, "anquan": _2, "anz": _2, "aol": _2, "apartments": _2, "app": [1, { "adaptable": _3, "aiven": _3, "beget": _6, "brave": _7, "clerk": _3, "clerkstage": _3, "cloudflare": _3, "wnext": _3, "csb": [2, { "preview": _3 }], "convex": _3, "corespeed": _3, "deta": _3, "ondigitalocean": _3, "easypanel": _3, "encr": [2, { "frontend": _3 }], "evervault": _8, "expo": [2, { "staging": _3 }], "edgecompute": _3, "on-fleek": _3, "flutterflow": _3, "sprites": _3, "e2b": _3, "framer": _3, "gadget": _3, "github": _3, "hosted": _6, "run": [0, { "*": _3, "mtls": _6 }], "web": _3, "hackclub": _3, "hasura": _3, "onhercules": _3, "botdash": _3, "shiptoday": _3, "leapcell": _3, "loginline": _3, "lovable": _3, "luyani": _3, "magicpatterns": _3, "medusajs": _3, "messerli": _3, "miren": _3, "mocha": _3, "netlify": _3, "ngrok": _3, "ngrok-free": _3, "developer": _6, "noop": _3, "northflank": _6, "upsun": _6, "railway": [0, { "up": _3 }], "replit": _9, "nyat": _3, "snowflake": [0, { "*": _3, "privatelink": _6 }], "streamlit": _3, "spawnbase": _3, "telebit": _3, "typedream": _3, "vercel": _3, "wal": _3, "wasmer": _3, "bookonline": _3, "windsurf": _3, "base44": _3, "zeabur": _3, "zerops": _6 }], "apple": [1, { "int": [2, { "cloud": [0, { "*": _3, "r": [0, { "*": _3, "ap-north-1": _6, "ap-south-1": _6, "ap-south-2": _6, "eu-central-1": _6, "eu-north-1": _6, "us-central-1": _6, "us-central-2": _6, "us-east-1": _6, "us-east-2": _6, "us-west-1": _6, "us-west-2": _6, "us-west-3": _6 }] }] }] }], "aquarelle": _2, "arab": _2, "aramco": _2, "archi": _2, "army": _2, "art": _2, "arte": _2, "asda": _2, "associates": _2, "athleta": _2, "attorney": _2, "auction": _2, "audi": _2, "audible": _2, "audio": _2, "auspost": _2, "author": _2, "auto": _2, "autos": _2, "aws": [1, { "on": [0, { "af-south-1": _11, "ap-east-1": _11, "ap-northeast-1": _11, "ap-northeast-2": _11, "ap-northeast-3": _11, "ap-south-1": _11, "ap-south-2": _12, "ap-southeast-1": _11, "ap-southeast-2": _11, "ap-southeast-3": _11, "ap-southeast-4": _12, "ap-southeast-5": _12, "ca-central-1": _11, "ca-west-1": _12, "eu-central-1": _11, "eu-central-2": _12, "eu-north-1": _11, "eu-south-1": _11, "eu-south-2": _12, "eu-west-1": _11, "eu-west-2": _11, "eu-west-3": _11, "il-central-1": _12, "me-central-1": _12, "me-south-1": _11, "sa-east-1": _11, "us-east-1": _11, "us-east-2": _11, "us-west-1": _11, "us-west-2": _11, "ap-southeast-7": _13, "mx-central-1": _13, "us-gov-east-1": _14, "us-gov-west-1": _14 }], "sagemaker": [0, { "ap-northeast-1": _16, "ap-northeast-2": _16, "ap-south-1": _16, "ap-southeast-1": _16, "ap-southeast-2": _16, "ca-central-1": _18, "eu-central-1": _16, "eu-west-1": _16, "eu-west-2": _16, "us-east-1": _18, "us-east-2": _18, "us-west-2": _18, "af-south-1": _15, "ap-east-1": _15, "ap-northeast-3": _15, "ap-south-2": _17, "ap-southeast-3": _15, "ap-southeast-4": _17, "ca-west-1": [0, { "notebook": _3, "notebook-fips": _3 }], "eu-central-2": _15, "eu-north-1": _15, "eu-south-1": _15, "eu-south-2": _15, "eu-west-3": _15, "il-central-1": _15, "me-central-1": _15, "me-south-1": _15, "sa-east-1": _15, "us-gov-east-1": _19, "us-gov-west-1": _19, "us-west-1": [0, { "notebook": _3, "notebook-fips": _3, "studio": _3 }], "experiments": _6 }], "repost": [0, { "private": _6 }] }], "axa": _2, "azure": _2, "baby": _2, "baidu": _2, "banamex": _2, "band": _2, "bank": _2, "bar": _2, "barcelona": _2, "barclaycard": _2, "barclays": _2, "barefoot": _2, "bargains": _2, "baseball": _2, "basketball": [1, { "aus": _3, "nz": _3 }], "bauhaus": _2, "bayern": _2, "bbc": _2, "bbt": _2, "bbva": _2, "bcg": _2, "bcn": _2, "beats": _2, "beauty": _2, "beer": _2, "berlin": _2, "best": _2, "bestbuy": _2, "bet": _2, "bharti": _2, "bible": _2, "bid": _2, "bike": _2, "bing": _2, "bingo": _2, "bio": _2, "black": _2, "blackfriday": _2, "blockbuster": _2, "blog": _2, "bloomberg": _2, "blue": _2, "bms": _2, "bmw": _2, "bnpparibas": _2, "boats": _2, "boehringer": _2, "bofa": _2, "bom": _2, "bond": _2, "boo": _2, "book": _2, "booking": _2, "bosch": _2, "bostik": _2, "boston": _2, "bot": _2, "boutique": _2, "box": _2, "bradesco": _2, "bridgestone": _2, "broadway": _2, "broker": _2, "brother": _2, "brussels": _2, "build": [1, { "shiptoday": _3, "v0": _3, "windsurf": _3 }], "builders": [1, { "cloudsite": _3 }], "business": _22, "buy": _2, "buzz": _2, "bzh": _2, "cab": _2, "cafe": _2, "cal": _2, "call": _2, "calvinklein": _2, "cam": _2, "camera": _2, "camp": [1, { "emf": [0, { "at": _3 }] }], "canon": _2, "capetown": _2, "capital": _2, "capitalone": _2, "car": _2, "caravan": _2, "cards": _2, "care": _2, "career": _2, "careers": _2, "cars": _2, "casa": [1, { "nabu": [0, { "ui": _3 }] }], "case": [1, { "sav": _3 }], "cash": _2, "casino": _2, "catering": _2, "catholic": _2, "cba": _2, "cbn": _2, "cbre": _2, "center": _2, "ceo": _2, "cern": _2, "cfa": _2, "cfd": _2, "chanel": _2, "channel": _2, "charity": _2, "chase": _2, "chat": _2, "cheap": _2, "chintai": _2, "christmas": _2, "chrome": _2, "church": _2, "cipriani": _2, "circle": _2, "cisco": _2, "citadel": _2, "citi": _2, "citic": _2, "city": _2, "claims": _2, "cleaning": _2, "click": _2, "clinic": _2, "clinique": _2, "clothing": _2, "cloud": [1, { "antagonist": _3, "convex": _3, "elementor": _3, "emergent": _3, "encoway": [0, { "eu": _3 }], "statics": _6, "ravendb": _3, "axarnet": [0, { "es-1": _3 }], "diadem": _3, "jelastic": [0, { "vip": _3 }], "jele": _3, "jenv-aruba": [0, { "aruba": [0, { "eur": [0, { "it1": _3 }] }], "it1": _3 }], "keliweb": [2, { "cs": _3 }], "oxa": [2, { "tn": _3, "uk": _3 }], "primetel": [2, { "uk": _3 }], "reclaim": [0, { "ca": _3, "uk": _3, "us": _3 }], "trendhosting": [0, { "ch": _3, "de": _3 }], "jote": _3, "jotelulu": _3, "kuleuven": _3, "laravel": _3, "linkyard": _3, "magentosite": _6, "matlab": _3, "observablehq": _3, "perspecta": _3, "vapor": _3, "on-rancher": _6, "scw": [0, { "baremetal": [0, { "fr-par-1": _3, "fr-par-2": _3, "nl-ams-1": _3 }], "fr-par": [0, { "cockpit": _3, "ddl": _3, "dtwh": _3, "fnc": [2, { "functions": _3 }], "ifr": _3, "k8s": _24, "kafk": _3, "mgdb": _3, "rdb": _3, "s3": _3, "s3-website": _3, "scbl": _3, "whm": _3 }], "instances": [0, { "priv": _3, "pub": _3 }], "k8s": _3, "nl-ams": [0, { "cockpit": _3, "ddl": _3, "dtwh": _3, "ifr": _3, "k8s": _24, "kafk": _3, "mgdb": _3, "rdb": _3, "s3": _3, "s3-website": _3, "scbl": _3, "whm": _3 }], "pl-waw": [0, { "cockpit": _3, "ddl": _3, "dtwh": _3, "ifr": _3, "k8s": _24, "kafk": _3, "mgdb": _3, "rdb": _3, "s3": _3, "s3-website": _3, "scbl": _3 }], "scalebook": _3, "smartlabeling": _3 }], "servebolt": _3, "onstackit": [0, { "runs": _3 }], "trafficplex": _3, "unison-services": _3, "urown": _3, "voorloper": _3, "zap": _3 }], "club": [1, { "cloudns": _3, "jele": _3, "barsy": _3 }], "clubmed": _2, "coach": _2, "codes": [1, { "owo": _6 }], "coffee": _2, "college": _2, "cologne": _2, "commbank": _2, "community": [1, { "nog": _3, "ravendb": _3, "myforum": _3 }], "company": _2, "compare": _2, "computer": _2, "comsec": _2, "condos": _2, "construction": _2, "consulting": _2, "contact": _2, "contractors": _2, "cooking": _2, "cool": [1, { "elementor": _3, "de": _3 }], "corsica": _2, "country": _2, "coupon": _2, "coupons": _2, "courses": _2, "cpa": _2, "credit": _2, "creditcard": _2, "creditunion": _2, "cricket": _2, "crown": _2, "crs": _2, "cruise": _2, "cruises": _2, "cuisinella": _2, "cymru": _2, "cyou": _2, "dad": _2, "dance": _2, "data": _2, "date": _2, "dating": _2, "datsun": _2, "day": _2, "dclk": _2, "dds": _2, "deal": _2, "dealer": _2, "deals": _2, "degree": _2, "delivery": _2, "dell": _2, "deloitte": _2, "delta": _2, "democrat": _2, "dental": _2, "dentist": _2, "desi": _2, "design": [1, { "graphic": _3, "bss": _3 }], "dev": [1, { "myaddr": _3, "panel": _3, "bearblog": _3, "brave": _7, "lcl": _6, "lclstage": _6, "stg": _6, "stgstage": _6, "pages": _3, "r2": _3, "workers": _3, "deno": _3, "deno-staging": _3, "deta": _3, "lp": [2, { "api": _3, "objects": _3 }], "evervault": _8, "fly": _3, "githubpreview": _3, "gateway": _6, "grebedoc": _3, "botdash": _3, "inbrowser": _6, "is-a-good": _3, "iserv": _3, "leapcell": _3, "runcontainers": _3, "localcert": [0, { "user": _6 }], "loginline": _3, "barsy": _3, "mediatech": _3, "mocha-sandbox": _3, "modx": _3, "ngrok": _3, "ngrok-free": _3, "is-a-fullstack": _3, "is-cool": _3, "is-not-a": _3, "localplayer": _3, "xmit": _3, "platter-app": _3, "replit": [2, { "archer": _3, "bones": _3, "canary": _3, "global": _3, "hacker": _3, "id": _3, "janeway": _3, "kim": _3, "kira": _3, "kirk": _3, "odo": _3, "paris": _3, "picard": _3, "pike": _3, "prerelease": _3, "reed": _3, "riker": _3, "sisko": _3, "spock": _3, "staging": _3, "sulu": _3, "tarpit": _3, "teams": _3, "tucker": _3, "wesley": _3, "worf": _3 }], "crm": [0, { "aa": _6, "ab": _6, "ac": _6, "ad": _6, "ae": _6, "af": _6, "ci": _6, "d": _6, "pa": _6, "pb": _6, "pc": _6, "pd": _6, "pe": _6, "pf": _6, "w": _6, "wa": _6, "wb": _6, "wc": _6, "wd": _6, "we": _6, "wf": _6 }], "erp": _50, "vercel": _3, "webhare": _6, "hrsn": _3, "is-a": _3 }], "dhl": _2, "diamonds": _2, "diet": _2, "digital": [1, { "cloudapps": [2, { "london": _3 }] }], "direct": [1, { "libp2p": _3 }], "directory": _2, "discount": _2, "discover": _2, "dish": _2, "diy": _51, "dnp": _2, "docs": _2, "doctor": _2, "dog": _2, "domains": _2, "dot": _2, "download": _2, "drive": _2, "dtv": _2, "dubai": _2, "dupont": _2, "durban": _2, "dvag": _2, "dvr": _2, "earth": _2, "eat": _2, "eco": _2, "edeka": _2, "education": _22, "email": [1, { "crisp": [0, { "on": _3 }], "tawk": _53, "tawkto": _53 }], "emerck": _2, "energy": _2, "engineer": _2, "engineering": _2, "enterprises": _2, "epson": _2, "equipment": _2, "ericsson": _2, "erni": _2, "esq": _2, "estate": [1, { "compute": _6 }], "eurovision": _2, "eus": [1, { "party": _54 }], "events": [1, { "koobin": _3, "co": _3 }], "exchange": _2, "expert": _2, "exposed": _2, "express": _2, "extraspace": _2, "fage": _2, "fail": _2, "fairwinds": _2, "faith": _2, "family": _2, "fan": _2, "fans": _2, "farm": [1, { "storj": _3 }], "farmers": _2, "fashion": _2, "fast": _2, "fedex": _2, "feedback": _2, "ferrari": _2, "ferrero": _2, "fidelity": _2, "fido": _2, "film": _2, "final": _2, "finance": _2, "financial": _22, "fire": _2, "firestone": _2, "firmdale": _2, "fish": _2, "fishing": _2, "fit": _2, "fitness": _2, "flickr": _2, "flights": _2, "flir": _2, "florist": _2, "flowers": _2, "fly": _2, "foo": _2, "food": _2, "football": _2, "ford": _2, "forex": _2, "forsale": _2, "forum": _2, "foundation": _2, "fox": _2, "free": _2, "fresenius": _2, "frl": _2, "frogans": _2, "frontier": _2, "ftr": _2, "fujitsu": _2, "fun": _2, "fund": _2, "furniture": _2, "futbol": _2, "fyi": _2, "gal": _2, "gallery": _2, "gallo": _2, "gallup": _2, "game": _2, "games": [1, { "pley": _3, "sheezy": _3 }], "gap": _2, "garden": _2, "gay": [1, { "pages": _3 }], "gbiz": _2, "gdn": [1, { "cnpy": _3 }], "gea": _2, "gent": _2, "genting": _2, "george": _2, "ggee": _2, "gift": _2, "gifts": _2, "gives": _2, "giving": _2, "glass": _2, "gle": _2, "global": [1, { "appwrite": _3 }], "globo": _2, "gmail": _2, "gmbh": _2, "gmo": _2, "gmx": _2, "godaddy": _2, "gold": _2, "goldpoint": _2, "golf": _2, "goodyear": _2, "goog": [1, { "cloud": _3, "translate": _3, "usercontent": _6 }], "google": _2, "gop": _2, "got": _2, "grainger": _2, "graphics": _2, "gratis": _2, "green": _2, "gripe": _2, "grocery": _2, "group": _51, "gucci": _2, "guge": _2, "guide": _2, "guitars": _2, "guru": _2, "hair": _2, "hamburg": _2, "hangout": _2, "haus": _2, "hbo": _2, "hdfc": _2, "hdfcbank": _2, "health": [1, { "hra": _3 }], "healthcare": _2, "help": _2, "helsinki": _2, "here": _2, "hermes": _2, "hiphop": _2, "hisamitsu": _2, "hitachi": _2, "hiv": _2, "hkt": _2, "hockey": _2, "holdings": _2, "holiday": _2, "homedepot": _2, "homegoods": _2, "homes": _2, "homesense": _2, "honda": _2, "horse": _2, "hospital": _2, "host": [1, { "cloudaccess": _3, "freesite": _3, "easypanel": _3, "emergent": _3, "fastvps": _3, "myfast": _3, "gadget": _3, "tempurl": _3, "wpmudev": _3, "iserv": _3, "jele": _3, "mircloud": _3, "bolt": _3, "wp2": _3, "half": _3 }], "hosting": [1, { "opencraft": _3 }], "hot": _2, "hotel": _2, "hotels": _2, "hotmail": _2, "house": _2, "how": _2, "hsbc": _2, "hughes": _2, "hyatt": _2, "hyundai": _2, "ibm": _2, "icbc": _2, "ice": _2, "icu": _2, "ieee": _2, "ifm": _2, "ikano": _2, "imamat": _2, "imdb": _2, "immo": _2, "immobilien": _2, "inc": _2, "industries": _2, "infiniti": _2, "ing": _2, "ink": _2, "institute": _2, "insurance": _2, "insure": _2, "international": _2, "intuit": _2, "investments": _2, "ipiranga": _2, "irish": _2, "ismaili": _2, "ist": _2, "istanbul": _2, "itau": _2, "itv": _2, "jaguar": _2, "java": _2, "jcb": _2, "jeep": _2, "jetzt": _2, "jewelry": _2, "jio": _2, "jll": _2, "jmp": _2, "jnj": _2, "joburg": _2, "jot": _2, "joy": _2, "jpmorgan": _2, "jprs": _2, "juegos": _2, "juniper": _2, "kaufen": _2, "kddi": _2, "kerryhotels": _2, "kerryproperties": _2, "kfh": _2, "kia": _2, "kids": _2, "kim": _2, "kindle": _2, "kitchen": _2, "kiwi": _2, "koeln": _2, "komatsu": _2, "kosher": _2, "kpmg": _2, "kpn": _2, "krd": [1, { "co": _3, "edu": _3 }], "kred": _2, "kuokgroup": _2, "kyoto": _2, "lacaixa": _2, "lamborghini": _2, "lamer": _2, "land": _2, "landrover": _2, "lanxess": _2, "lasalle": _2, "lat": _2, "latino": _2, "latrobe": _2, "law": _2, "lawyer": _2, "lds": _2, "lease": _2, "leclerc": _2, "lefrak": _2, "legal": _2, "lego": _2, "lexus": _2, "lgbt": _2, "lidl": _2, "life": _2, "lifeinsurance": _2, "lifestyle": _2, "lighting": _2, "like": _2, "lilly": _2, "limited": _2, "limo": _2, "lincoln": _2, "link": [1, { "myfritz": _3, "cyon": _3, "joinmc": _3, "dweb": _6, "inbrowser": _6, "keenetic": _3, "nftstorage": _61, "mypep": _3, "storacha": _61, "w3s": _61 }], "live": [1, { "aem": _3, "hlx": _3, "ewp": _6 }], "living": _2, "llc": _2, "llp": _2, "loan": _2, "loans": _2, "locker": _2, "locus": _2, "lol": [1, { "omg": _3 }], "london": _2, "lotte": _2, "lotto": _2, "love": _2, "lpl": _2, "lplfinancial": _2, "ltd": _2, "ltda": _2, "lundbeck": _2, "luxe": _2, "luxury": _2, "madrid": _2, "maif": _2, "maison": _2, "makeup": _2, "man": _2, "management": _2, "mango": _2, "map": _2, "market": _2, "marketing": _2, "markets": _2, "marriott": _2, "marshalls": _2, "mattel": _2, "mba": _2, "mckinsey": _2, "med": _2, "media": _62, "meet": _2, "melbourne": _2, "meme": _2, "memorial": _2, "men": _2, "menu": [1, { "barsy": _3, "barsyonline": _3 }], "merck": _2, "merckmsd": _2, "miami": _2, "microsoft": _2, "mini": _2, "mint": _2, "mit": _2, "mitsubishi": _2, "mlb": _2, "mls": _2, "mma": _2, "mobile": _2, "moda": _2, "moe": _2, "moi": _2, "mom": _2, "monash": _2, "money": _2, "monster": _2, "mormon": _2, "mortgage": _2, "moscow": _2, "moto": _2, "motorcycles": _2, "mov": _2, "movie": _2, "msd": _2, "mtn": _2, "mtr": _2, "music": _2, "nab": _2, "nagoya": _2, "navy": _2, "nba": _2, "nec": _2, "netbank": _2, "netflix": _2, "network": [1, { "aem": _3, "alces": _6, "appwrite": _3, "co": _3, "arvo": _3, "azimuth": _3, "tlon": _3 }], "neustar": _2, "new": _2, "news": [1, { "noticeable": _3 }], "next": _2, "nextdirect": _2, "nexus": _2, "nfl": _2, "ngo": _2, "nhk": _2, "nico": _2, "nike": _2, "nikon": _2, "ninja": _2, "nissan": _2, "nissay": _2, "nokia": _2, "norton": _2, "now": _2, "nowruz": _2, "nowtv": _2, "nra": _2, "nrw": _2, "ntt": _2, "nyc": _2, "obi": _2, "observer": _2, "office": _2, "okinawa": _2, "olayan": _2, "olayangroup": _2, "ollo": _2, "omega": _2, "one": [1, { "kin": _6, "service": _3, "website": _3 }], "ong": _2, "onl": _2, "online": [1, { "eero": _3, "eero-stage": _3, "websitebuilder": _3, "leapcell": _3, "barsy": _3 }], "ooo": _2, "open": _2, "oracle": _2, "orange": [1, { "tech": _3 }], "organic": _2, "origins": _2, "osaka": _2, "otsuka": _2, "ott": _2, "ovh": [1, { "nerdpol": _3 }], "page": [1, { "aem": _3, "hlx": _3, "codeberg": _3, "deuxfleurs": _3, "heyflow": _3, "prvcy": _3, "rocky": _3, "statichost": _3, "pdns": _3, "plesk": _3 }], "panasonic": _2, "paris": _2, "pars": _2, "partners": _2, "parts": _2, "party": _2, "pay": _2, "pccw": _2, "pet": _2, "pfizer": _2, "pharmacy": _2, "phd": _2, "philips": _2, "phone": _2, "photo": _2, "photography": _2, "photos": _62, "physio": _2, "pics": _2, "pictet": _2, "pictures": [1, { "1337": _3 }], "pid": _2, "pin": _2, "ping": _2, "pink": _2, "pioneer": _2, "pizza": [1, { "ngrok": _3 }], "place": _22, "play": _2, "playstation": _2, "plumbing": _2, "plus": [1, { "playit": [2, { "at": _6, "with": _3 }] }], "pnc": _2, "pohl": _2, "poker": _2, "politie": _2, "porn": _2, "praxi": _2, "press": _2, "prime": _2, "prod": _2, "productions": _2, "prof": _2, "progressive": _2, "promo": _2, "properties": _2, "property": _2, "protection": _2, "pru": _2, "prudential": _2, "pub": [1, { "id": _6, "kin": _6, "barsy": _3 }], "pwc": _2, "qpon": _2, "quebec": _2, "quest": _2, "racing": _2, "radio": _2, "read": _2, "realestate": _2, "realtor": _2, "realty": _2, "recipes": _2, "red": _2, "redumbrella": _2, "rehab": _2, "reise": _2, "reisen": _2, "reit": _2, "reliance": _2, "ren": _2, "rent": _2, "rentals": _2, "repair": _2, "report": _2, "republican": _2, "rest": _2, "restaurant": _2, "review": _2, "reviews": [1, { "aem": _3 }], "rexroth": _2, "rich": _2, "richardli": _2, "ricoh": _2, "ril": _2, "rio": _2, "rip": [1, { "clan": _3 }], "rocks": [1, { "myddns": _3, "stackit": _3, "lima-city": _3, "webspace": _3 }], "rodeo": _2, "rogers": _2, "room": _2, "rsvp": _2, "rugby": _2, "ruhr": _2, "run": [1, { "appwrite": _6, "canva": _3, "development": _3, "ravendb": _3, "liara": [2, { "iran": _3 }], "lovable": _3, "needle": _3, "build": _6, "code": _6, "database": _6, "migration": _6, "onporter": _3, "repl": _3, "stackit": _3, "val": _50, "vercel": _3, "wix": _3 }], "rwe": _2, "ryukyu": _2, "saarland": _2, "safe": _2, "safety": _2, "sakura": _2, "sale": _2, "salon": _2, "samsclub": _2, "samsung": _2, "sandvik": _2, "sandvikcoromant": _2, "sanofi": _2, "sap": _2, "sarl": _2, "sas": _2, "save": _2, "saxo": _2, "sbi": _2, "sbs": _2, "scb": _2, "schaeffler": _2, "schmidt": _2, "scholarships": _2, "school": _2, "schule": _2, "schwarz": _2, "science": _2, "scot": [1, { "co": _3, "me": _3, "org": _3, "gov": [2, { "service": _3 }] }], "search": _2, "seat": _2, "secure": _2, "security": _2, "seek": _2, "select": _2, "sener": _2, "services": [1, { "loginline": _3 }], "seven": _2, "sew": _2, "sex": _2, "sexy": _2, "sfr": _2, "shangrila": _2, "sharp": _2, "shell": _2, "shia": _2, "shiksha": _2, "shoes": _2, "shop": [1, { "base": _3, "hoplix": _3, "barsy": _3, "barsyonline": _3, "shopware": _3 }], "shopping": _2, "shouji": _2, "show": _2, "silk": _2, "sina": _2, "singles": _2, "site": [1, { "square": _3, "canva": _25, "cloudera": _6, "convex": _3, "cyon": _3, "caffeine": _3, "fastvps": _3, "figma": _3, "figma-gov": _3, "preview": _3, "heyflow": _3, "jele": _3, "jouwweb": _3, "loginline": _3, "barsy": _3, "co": _3, "notion": _3, "omniwe": _3, "opensocial": _3, "madethis": _3, "support": _3, "platformsh": _6, "tst": _6, "byen": _3, "sol": _3, "srht": _3, "novecore": _3, "cpanel": _3, "wpsquared": _3, "sourcecraft": _3 }], "ski": _2, "skin": _2, "sky": _2, "skype": _2, "sling": _2, "smart": _2, "smile": _2, "sncf": _2, "soccer": _2, "social": _2, "softbank": _2, "software": _2, "sohu": _2, "solar": _2, "solutions": _2, "song": _2, "sony": _2, "soy": _2, "spa": _2, "space": [1, { "myfast": _3, "heiyu": _3, "hf": [2, { "static": _3 }], "app-ionos": _3, "project": _3, "uber": _3, "xs4all": _3 }], "sport": _2, "spot": _2, "srl": _2, "stada": _2, "staples": _2, "star": _2, "statebank": _2, "statefarm": _2, "stc": _2, "stcgroup": _2, "stockholm": _2, "storage": _2, "store": [1, { "barsy": _3, "sellfy": _3, "shopware": _3, "storebase": _3 }], "stream": _2, "studio": _2, "study": _2, "style": _2, "sucks": _2, "supplies": _2, "supply": _2, "support": [1, { "barsy": _3 }], "surf": _2, "surgery": _2, "suzuki": _2, "swatch": _2, "swiss": _2, "sydney": _2, "systems": [1, { "knightpoint": _3, "miren": _3 }], "tab": _2, "taipei": _2, "talk": _2, "taobao": _2, "target": _2, "tatamotors": _2, "tatar": _2, "tattoo": _2, "tax": _2, "taxi": _2, "tci": _2, "tdk": _2, "team": [1, { "discourse": _3, "jelastic": _3 }], "tech": [1, { "cleverapps": _3 }], "technology": _22, "temasek": _2, "tennis": _2, "teva": _2, "thd": _2, "theater": _2, "theatre": _2, "tiaa": _2, "tickets": _2, "tienda": _2, "tips": _2, "tires": _2, "tirol": _2, "tjmaxx": _2, "tjx": _2, "tkmaxx": _2, "tmall": _2, "today": [1, { "prequalifyme": _3 }], "tokyo": _2, "tools": [1, { "addr": _49, "myaddr": _3 }], "top": [1, { "ntdll": _3, "wadl": _6 }], "toray": _2, "toshiba": _2, "total": _2, "tours": _2, "town": _2, "toyota": _2, "toys": _2, "trade": _2, "trading": _2, "training": _2, "travel": _2, "travelers": _2, "travelersinsurance": _2, "trust": _2, "trv": _2, "tube": _2, "tui": _2, "tunes": _2, "tushu": _2, "tvs": _2, "ubank": _2, "ubs": _2, "unicom": _2, "university": _2, "uno": _2, "uol": _2, "ups": _2, "vacations": _2, "vana": _2, "vanguard": _2, "vegas": _2, "ventures": _2, "verisign": _2, "versicherung": _2, "vet": _2, "viajes": _2, "video": _2, "vig": _2, "viking": _2, "villas": _2, "vin": _2, "vip": [1, { "hidns": _3 }], "virgin": _2, "visa": _2, "vision": _2, "viva": _2, "vivo": _2, "vlaanderen": _2, "vodka": _2, "volvo": _2, "vote": _2, "voting": _2, "voto": _2, "voyage": _2, "wales": _2, "walmart": _2, "walter": _2, "wang": _2, "wanggou": _2, "watch": _2, "watches": _2, "weather": _2, "weatherchannel": _2, "webcam": _2, "weber": _2, "website": _62, "wed": _2, "wedding": _2, "weibo": _2, "weir": _2, "whoswho": _2, "wien": _2, "wiki": _62, "williamhill": _2, "win": _2, "windows": _2, "wine": _2, "winners": _2, "wme": _2, "wolterskluwer": _2, "woodside": _2, "work": [1, { "imagine-proxy": _3 }], "works": _2, "world": _2, "wow": _2, "wtc": _2, "wtf": _2, "xbox": _2, "xerox": _2, "xihuan": _2, "xin": _2, "xn--11b4c3d": _2, "कॉम": _2, "xn--1ck2e1b": _2, "セール": _2, "xn--1qqw23a": _2, "佛山": _2, "xn--30rr7y": _2, "慈善": _2, "xn--3bst00m": _2, "集团": _2, "xn--3ds443g": _2, "在线": _2, "xn--3pxu8k": _2, "点看": _2, "xn--42c2d9a": _2, "คอม": _2, "xn--45q11c": _2, "八卦": _2, "xn--4gbrim": _2, "موقع": _2, "xn--55qw42g": _2, "公益": _2, "xn--55qx5d": _2, "公司": _2, "xn--5su34j936bgsg": _2, "香格里拉": _2, "xn--5tzm5g": _2, "网站": _2, "xn--6frz82g": _2, "移动": _2, "xn--6qq986b3xl": _2, "我爱你": _2, "xn--80adxhks": _2, "москва": _2, "xn--80aqecdr1a": _2, "католик": _2, "xn--80asehdb": _2, "онлайн": _2, "xn--80aswg": _2, "сайт": _2, "xn--8y0a063a": _2, "联通": _2, "xn--9dbq2a": _2, "קום": _2, "xn--9et52u": _2, "时尚": _2, "xn--9krt00a": _2, "微博": _2, "xn--b4w605ferd": _2, "淡马锡": _2, "xn--bck1b9a5dre4c": _2, "ファッション": _2, "xn--c1avg": _2, "орг": _2, "xn--c2br7g": _2, "नेट": _2, "xn--cck2b3b": _2, "ストア": _2, "xn--cckwcxetd": _2, "アマゾン": _2, "xn--cg4bki": _2, "삼성": _2, "xn--czr694b": _2, "商标": _2, "xn--czrs0t": _2, "商店": _2, "xn--czru2d": _2, "商城": _2, "xn--d1acj3b": _2, "дети": _2, "xn--eckvdtc9d": _2, "ポイント": _2, "xn--efvy88h": _2, "新闻": _2, "xn--fct429k": _2, "家電": _2, "xn--fhbei": _2, "كوم": _2, "xn--fiq228c5hs": _2, "中文网": _2, "xn--fiq64b": _2, "中信": _2, "xn--fjq720a": _2, "娱乐": _2, "xn--flw351e": _2, "谷歌": _2, "xn--fzys8d69uvgm": _2, "電訊盈科": _2, "xn--g2xx48c": _2, "购物": _2, "xn--gckr3f0f": _2, "クラウド": _2, "xn--gk3at1e": _2, "通販": _2, "xn--hxt814e": _2, "网店": _2, "xn--i1b6b1a6a2e": _2, "संगठन": _2, "xn--imr513n": _2, "餐厅": _2, "xn--io0a7i": _2, "网络": _2, "xn--j1aef": _2, "ком": _2, "xn--jlq480n2rg": _2, "亚马逊": _2, "xn--jvr189m": _2, "食品": _2, "xn--kcrx77d1x4a": _2, "飞利浦": _2, "xn--kput3i": _2, "手机": _2, "xn--mgba3a3ejt": _2, "ارامكو": _2, "xn--mgba7c0bbn0a": _2, "العليان": _2, "xn--mgbab2bd": _2, "بازار": _2, "xn--mgbca7dzdo": _2, "ابوظبي": _2, "xn--mgbi4ecexp": _2, "كاثوليك": _2, "xn--mgbt3dhd": _2, "همراه": _2, "xn--mk1bu44c": _2, "닷컴": _2, "xn--mxtq1m": _2, "政府": _2, "xn--ngbc5azd": _2, "شبكة": _2, "xn--ngbe9e0a": _2, "بيتك": _2, "xn--ngbrx": _2, "عرب": _2, "xn--nqv7f": _2, "机构": _2, "xn--nqv7fs00ema": _2, "组织机构": _2, "xn--nyqy26a": _2, "健康": _2, "xn--otu796d": _2, "招聘": _2, "xn--p1acf": [1, { "xn--90amc": _3, "xn--j1aef": _3, "xn--j1ael8b": _3, "xn--h1ahn": _3, "xn--j1adp": _3, "xn--c1avg": _3, "xn--80aaa0cvac": _3, "xn--h1aliz": _3, "xn--90a1af": _3, "xn--41a": _3 }], "рус": [1, { "биз": _3, "ком": _3, "крым": _3, "мир": _3, "мск": _3, "орг": _3, "самара": _3, "сочи": _3, "спб": _3, "я": _3 }], "xn--pssy2u": _2, "大拿": _2, "xn--q9jyb4c": _2, "みんな": _2, "xn--qcka1pmc": _2, "グーグル": _2, "xn--rhqv96g": _2, "世界": _2, "xn--rovu88b": _2, "書籍": _2, "xn--ses554g": _2, "网址": _2, "xn--t60b56a": _2, "닷넷": _2, "xn--tckwe": _2, "コム": _2, "xn--tiq49xqyj": _2, "天主教": _2, "xn--unup4y": _2, "游戏": _2, "xn--vermgensberater-ctb": _2, "vermögensberater": _2, "xn--vermgensberatung-pwb": _2, "vermögensberatung": _2, "xn--vhquv": _2, "企业": _2, "xn--vuq861b": _2, "信息": _2, "xn--w4r85el8fhu5dnra": _2, "嘉里大酒店": _2, "xn--w4rs40l": _2, "嘉里": _2, "xn--xhq521b": _2, "广东": _2, "xn--zfr164b": _2, "政务": _2, "xyz": [1, { "caffeine": _3, "botdash": _3, "telebit": _6 }], "yachts": _2, "yahoo": _2, "yamaxun": _2, "yandex": _2, "yodobashi": _2, "yoga": _2, "yokohama": _2, "you": _2, "youtube": _2, "yun": _2, "zappos": _2, "zara": _2, "zero": _2, "zip": _2, "zone": [1, { "triton": _6, "stackit": _3, "lima": _3 }], "zuerich": _2 }];
439
+ return rules2;
440
+ })();
441
+ function lookupInTrie(parts, trie, index, allowedMask) {
442
+ let result = null;
443
+ let node = trie;
444
+ while (node !== void 0) {
445
+ if ((node[0] & allowedMask) !== 0) {
446
+ result = {
447
+ index: index + 1,
448
+ isIcann: (node[0] & 1) !== 0,
449
+ isPrivate: (node[0] & 2) !== 0
450
+ };
451
+ }
452
+ if (index === -1) {
453
+ break;
454
+ }
455
+ const succ = node[1];
456
+ node = Object.prototype.hasOwnProperty.call(succ, parts[index]) ? succ[parts[index]] : succ["*"];
457
+ index -= 1;
458
+ }
459
+ return result;
460
+ }
461
+ function suffixLookup(hostname, options, out) {
462
+ var _a;
463
+ if (fastPathLookup(hostname, options, out)) {
464
+ return;
465
+ }
466
+ const hostnameParts = hostname.split(".");
467
+ const allowedMask = (options.allowPrivateDomains ? 2 : 0) | (options.allowIcannDomains ? 1 : 0);
468
+ const exceptionMatch = lookupInTrie(hostnameParts, exceptions, hostnameParts.length - 1, allowedMask);
469
+ if (exceptionMatch !== null) {
470
+ out.isIcann = exceptionMatch.isIcann;
471
+ out.isPrivate = exceptionMatch.isPrivate;
472
+ out.publicSuffix = hostnameParts.slice(exceptionMatch.index + 1).join(".");
473
+ return;
474
+ }
475
+ const rulesMatch = lookupInTrie(hostnameParts, rules, hostnameParts.length - 1, allowedMask);
476
+ if (rulesMatch !== null) {
477
+ out.isIcann = rulesMatch.isIcann;
478
+ out.isPrivate = rulesMatch.isPrivate;
479
+ out.publicSuffix = hostnameParts.slice(rulesMatch.index).join(".");
480
+ return;
481
+ }
482
+ out.isIcann = false;
483
+ out.isPrivate = false;
484
+ out.publicSuffix = (_a = hostnameParts[hostnameParts.length - 1]) !== null && _a !== void 0 ? _a : null;
485
+ }
486
+ const RESULT = getEmptyResult();
487
+ function getDomain(url, options = {}) {
488
+ resetResult(RESULT);
489
+ return parseImpl(url, 3, suffixLookup, options, RESULT).domain;
490
+ }
491
+ function pathMatch(reqPath, cookiePath) {
492
+ if (cookiePath === reqPath) {
493
+ return true;
494
+ }
495
+ const idx = reqPath.indexOf(cookiePath);
496
+ if (idx === 0) {
497
+ if (cookiePath[cookiePath.length - 1] === "/") {
498
+ return true;
499
+ }
500
+ if (reqPath.startsWith(cookiePath) && reqPath[cookiePath.length] === "/") {
501
+ return true;
502
+ }
503
+ }
504
+ return false;
505
+ }
506
+ var SPECIAL_USE_DOMAINS = ["local", "example", "invalid", "localhost", "test"];
507
+ var SPECIAL_TREATMENT_DOMAINS = ["localhost", "invalid"];
508
+ var defaultGetPublicSuffixOptions = {
509
+ allowSpecialUseDomain: false,
510
+ ignoreError: false
511
+ };
512
+ function getPublicSuffix(domain, options = {}) {
513
+ options = { ...defaultGetPublicSuffixOptions, ...options };
514
+ const domainParts = domain.split(".");
515
+ const topLevelDomain = domainParts[domainParts.length - 1];
516
+ const allowSpecialUseDomain = !!options.allowSpecialUseDomain;
517
+ const ignoreError = !!options.ignoreError;
518
+ if (allowSpecialUseDomain && topLevelDomain !== void 0 && SPECIAL_USE_DOMAINS.includes(topLevelDomain)) {
519
+ if (domainParts.length > 1) {
520
+ const secondLevelDomain = domainParts[domainParts.length - 2];
521
+ return `${secondLevelDomain}.${topLevelDomain}`;
522
+ } else if (SPECIAL_TREATMENT_DOMAINS.includes(topLevelDomain)) {
523
+ return topLevelDomain;
524
+ }
525
+ }
526
+ if (!ignoreError && topLevelDomain !== void 0 && SPECIAL_USE_DOMAINS.includes(topLevelDomain)) {
527
+ throw new Error(
528
+ `Cookie has domain set to the public suffix "${topLevelDomain}" which is a special use domain. To allow this, configure your CookieJar with {allowSpecialUseDomain: true, rejectPublicSuffixes: false}.`
529
+ );
530
+ }
531
+ const publicSuffix = getDomain(domain, {
532
+ allowIcannDomains: true,
533
+ allowPrivateDomains: true
534
+ });
535
+ if (publicSuffix) return publicSuffix;
536
+ }
537
+ function permuteDomain(domain, allowSpecialUseDomain) {
538
+ const pubSuf = getPublicSuffix(domain, {
539
+ allowSpecialUseDomain
540
+ });
541
+ if (!pubSuf) {
542
+ return void 0;
543
+ }
544
+ if (pubSuf == domain) {
545
+ return [domain];
546
+ }
547
+ if (domain.slice(-1) == ".") {
548
+ domain = domain.slice(0, -1);
549
+ }
550
+ const prefix = domain.slice(0, -(pubSuf.length + 1));
551
+ const parts = prefix.split(".").reverse();
552
+ let cur = pubSuf;
553
+ const permutations = [cur];
554
+ while (parts.length) {
555
+ const part = parts.shift();
556
+ cur = `${part}.${cur}`;
557
+ permutations.push(cur);
558
+ }
559
+ return permutations;
560
+ }
561
+ var Store = class {
562
+ constructor() {
563
+ this.synchronous = false;
564
+ }
565
+ /**
566
+ * @internal No doc because this is an overload that supports the implementation
567
+ */
568
+ findCookie(_domain, _path, _key, _callback) {
569
+ throw new Error("findCookie is not implemented");
570
+ }
571
+ /**
572
+ * @internal No doc because this is an overload that supports the implementation
573
+ */
574
+ findCookies(_domain, _path, _allowSpecialUseDomain = false, _callback) {
575
+ throw new Error("findCookies is not implemented");
576
+ }
577
+ /**
578
+ * @internal No doc because this is an overload that supports the implementation
579
+ */
580
+ putCookie(_cookie, _callback) {
581
+ throw new Error("putCookie is not implemented");
582
+ }
583
+ /**
584
+ * @internal No doc because this is an overload that supports the implementation
585
+ */
586
+ updateCookie(_oldCookie, _newCookie, _callback) {
587
+ throw new Error("updateCookie is not implemented");
588
+ }
589
+ /**
590
+ * @internal No doc because this is an overload that supports the implementation
591
+ */
592
+ removeCookie(_domain, _path, _key, _callback) {
593
+ throw new Error("removeCookie is not implemented");
594
+ }
595
+ /**
596
+ * @internal No doc because this is an overload that supports the implementation
597
+ */
598
+ removeCookies(_domain, _path, _callback) {
599
+ throw new Error("removeCookies is not implemented");
600
+ }
601
+ /**
602
+ * @internal No doc because this is an overload that supports the implementation
603
+ */
604
+ removeAllCookies(_callback) {
605
+ throw new Error("removeAllCookies is not implemented");
606
+ }
607
+ /**
608
+ * @internal No doc because this is an overload that supports the implementation
609
+ */
610
+ getAllCookies(_callback) {
611
+ throw new Error(
612
+ "getAllCookies is not implemented (therefore jar cannot be serialized)"
613
+ );
614
+ }
615
+ };
616
+ var objectToString = (obj) => Object.prototype.toString.call(obj);
617
+ var safeArrayToString = (arr, seenArrays) => {
618
+ if (typeof arr.join !== "function") return objectToString(arr);
619
+ seenArrays.add(arr);
620
+ const mapped = arr.map(
621
+ (val) => val === null || val === void 0 || seenArrays.has(val) ? "" : safeToStringImpl(val, seenArrays)
622
+ );
623
+ return mapped.join();
624
+ };
625
+ var safeToStringImpl = (val, seenArrays = /* @__PURE__ */ new WeakSet()) => {
626
+ if (typeof val !== "object" || val === null) {
627
+ return String(val);
628
+ } else if (typeof val.toString === "function") {
629
+ return Array.isArray(val) ? (
630
+ // Arrays have a weird custom toString that we need to replicate
631
+ safeArrayToString(val, seenArrays)
632
+ ) : (
633
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
634
+ String(val)
635
+ );
636
+ } else {
637
+ return objectToString(val);
638
+ }
639
+ };
640
+ var safeToString = (val) => safeToStringImpl(val);
641
+ function createPromiseCallback(cb) {
642
+ let callback;
643
+ let resolve;
644
+ let reject;
645
+ const promise = new Promise((_resolve, _reject) => {
646
+ resolve = _resolve;
647
+ reject = _reject;
648
+ });
649
+ if (typeof cb === "function") {
650
+ callback = (err, result) => {
651
+ try {
652
+ if (err) cb(err);
653
+ else cb(null, result);
654
+ } catch (e) {
655
+ reject(e instanceof Error ? e : new Error());
656
+ }
657
+ };
658
+ } else {
659
+ callback = (err, result) => {
660
+ try {
661
+ if (err) reject(err);
662
+ else resolve(result);
663
+ } catch (e) {
664
+ reject(e instanceof Error ? e : new Error());
665
+ }
666
+ };
667
+ }
668
+ return {
669
+ promise,
670
+ callback,
671
+ resolve: (value) => {
672
+ callback(null, value);
673
+ return promise;
674
+ },
675
+ reject: (error) => {
676
+ callback(error);
677
+ return promise;
678
+ }
679
+ };
680
+ }
681
+ function inOperator(k, o) {
682
+ return k in o;
683
+ }
684
+ var MemoryCookieStore = class extends Store {
685
+ /**
686
+ * Create a new {@link MemoryCookieStore}.
687
+ */
688
+ constructor() {
689
+ super();
690
+ this.synchronous = true;
691
+ this.idx = /* @__PURE__ */ Object.create(null);
692
+ }
693
+ /**
694
+ * @internal No doc because this is an overload that supports the implementation
695
+ */
696
+ findCookie(domain, path, key, callback) {
697
+ const promiseCallback = createPromiseCallback(callback);
698
+ if (domain == null || path == null || key == null) {
699
+ return promiseCallback.resolve(void 0);
700
+ }
701
+ const result = this.idx[domain]?.[path]?.[key];
702
+ return promiseCallback.resolve(result);
703
+ }
704
+ /**
705
+ * @internal No doc because this is an overload that supports the implementation
706
+ */
707
+ findCookies(domain, path, allowSpecialUseDomain = false, callback) {
708
+ if (typeof allowSpecialUseDomain === "function") {
709
+ callback = allowSpecialUseDomain;
710
+ allowSpecialUseDomain = true;
711
+ }
712
+ const results = [];
713
+ const promiseCallback = createPromiseCallback(callback);
714
+ if (!domain) {
715
+ return promiseCallback.resolve([]);
716
+ }
717
+ let pathMatcher;
718
+ if (!path) {
719
+ pathMatcher = function matchAll(domainIndex) {
720
+ for (const curPath in domainIndex) {
721
+ const pathIndex = domainIndex[curPath];
722
+ for (const key in pathIndex) {
723
+ const value = pathIndex[key];
724
+ if (value) {
725
+ results.push(value);
726
+ }
727
+ }
728
+ }
729
+ };
730
+ } else {
731
+ pathMatcher = function matchRFC(domainIndex) {
732
+ for (const cookiePath in domainIndex) {
733
+ if (pathMatch(path, cookiePath)) {
734
+ const pathIndex = domainIndex[cookiePath];
735
+ for (const key in pathIndex) {
736
+ const value = pathIndex[key];
737
+ if (value) {
738
+ results.push(value);
739
+ }
740
+ }
741
+ }
742
+ }
743
+ };
744
+ }
745
+ const domains = permuteDomain(domain, allowSpecialUseDomain) || [domain];
746
+ const idx = this.idx;
747
+ domains.forEach((curDomain) => {
748
+ const domainIndex = idx[curDomain];
749
+ if (!domainIndex) {
750
+ return;
751
+ }
752
+ pathMatcher(domainIndex);
753
+ });
754
+ return promiseCallback.resolve(results);
755
+ }
756
+ /**
757
+ * @internal No doc because this is an overload that supports the implementation
758
+ */
759
+ putCookie(cookie, callback) {
760
+ const promiseCallback = createPromiseCallback(callback);
761
+ const { domain, path, key } = cookie;
762
+ if (domain == null || path == null || key == null) {
763
+ return promiseCallback.resolve(void 0);
764
+ }
765
+ const domainEntry = this.idx[domain] ?? /* @__PURE__ */ Object.create(null);
766
+ this.idx[domain] = domainEntry;
767
+ const pathEntry = domainEntry[path] ?? /* @__PURE__ */ Object.create(null);
768
+ domainEntry[path] = pathEntry;
769
+ pathEntry[key] = cookie;
770
+ return promiseCallback.resolve(void 0);
771
+ }
772
+ /**
773
+ * @internal No doc because this is an overload that supports the implementation
774
+ */
775
+ updateCookie(_oldCookie, newCookie, callback) {
776
+ if (callback) this.putCookie(newCookie, callback);
777
+ else return this.putCookie(newCookie);
778
+ }
779
+ /**
780
+ * @internal No doc because this is an overload that supports the implementation
781
+ */
782
+ removeCookie(domain, path, key, callback) {
783
+ const promiseCallback = createPromiseCallback(callback);
784
+ delete this.idx[domain]?.[path]?.[key];
785
+ return promiseCallback.resolve(void 0);
786
+ }
787
+ /**
788
+ * @internal No doc because this is an overload that supports the implementation
789
+ */
790
+ removeCookies(domain, path, callback) {
791
+ const promiseCallback = createPromiseCallback(callback);
792
+ const domainEntry = this.idx[domain];
793
+ if (domainEntry) {
794
+ if (path) {
795
+ delete domainEntry[path];
796
+ } else {
797
+ delete this.idx[domain];
798
+ }
799
+ }
800
+ return promiseCallback.resolve(void 0);
801
+ }
802
+ /**
803
+ * @internal No doc because this is an overload that supports the implementation
804
+ */
805
+ removeAllCookies(callback) {
806
+ const promiseCallback = createPromiseCallback(callback);
807
+ this.idx = /* @__PURE__ */ Object.create(null);
808
+ return promiseCallback.resolve(void 0);
809
+ }
810
+ /**
811
+ * @internal No doc because this is an overload that supports the implementation
812
+ */
813
+ getAllCookies(callback) {
814
+ const promiseCallback = createPromiseCallback(callback);
815
+ const cookies = [];
816
+ const idx = this.idx;
817
+ const domains = Object.keys(idx);
818
+ domains.forEach((domain) => {
819
+ const domainEntry = idx[domain] ?? {};
820
+ const paths = Object.keys(domainEntry);
821
+ paths.forEach((path) => {
822
+ const pathEntry = domainEntry[path] ?? {};
823
+ const keys = Object.keys(pathEntry);
824
+ keys.forEach((key) => {
825
+ const keyEntry = pathEntry[key];
826
+ if (keyEntry != null) {
827
+ cookies.push(keyEntry);
828
+ }
829
+ });
830
+ });
831
+ });
832
+ cookies.sort((a, b) => {
833
+ return (a.creationIndex || 0) - (b.creationIndex || 0);
834
+ });
835
+ return promiseCallback.resolve(cookies);
836
+ }
837
+ };
838
+ function isNonEmptyString(data) {
839
+ return isString(data) && data !== "";
840
+ }
841
+ function isEmptyString(data) {
842
+ return data === "" || data instanceof String && data.toString() === "";
843
+ }
844
+ function isString(data) {
845
+ return typeof data === "string" || data instanceof String;
846
+ }
847
+ function isObject(data) {
848
+ return objectToString(data) === "[object Object]";
849
+ }
850
+ function validate(bool, cbOrMessage, message) {
851
+ if (bool) return;
852
+ const cb = typeof cbOrMessage === "function" ? cbOrMessage : void 0;
853
+ let options = typeof cbOrMessage === "function" ? message : cbOrMessage;
854
+ if (!isObject(options)) options = "[object Object]";
855
+ const err = new ParameterError(safeToString(options));
856
+ if (cb) cb(err);
857
+ else throw err;
858
+ }
859
+ var ParameterError = class extends Error {
860
+ };
861
+ var version$1 = "6.0.0";
862
+ var PrefixSecurityEnum = {
863
+ SILENT: "silent",
864
+ STRICT: "strict",
865
+ DISABLED: "unsafe-disabled"
866
+ };
867
+ Object.freeze(PrefixSecurityEnum);
868
+ var IP_V6_REGEX = `
869
+ \\[?(?:
870
+ (?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|
871
+ (?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|
872
+ (?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,2}|:)|
873
+ (?:[a-fA-F\\d]{1,4}:){4}(?:(?::[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,3}|:)|
874
+ (?:[a-fA-F\\d]{1,4}:){3}(?:(?::[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,4}|:)|
875
+ (?:[a-fA-F\\d]{1,4}:){2}(?:(?::[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,5}|:)|
876
+ (?:[a-fA-F\\d]{1,4}:){1}(?:(?::[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,6}|:)|
877
+ (?::(?:(?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:))
878
+ )(?:%[0-9a-zA-Z]{1,})?\\]?
879
+ `.replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim();
880
+ var IP_V6_REGEX_OBJECT = new RegExp(`^${IP_V6_REGEX}$`);
881
+ var IP_V4_REGEX = `(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])`;
882
+ var IP_V4_REGEX_OBJECT = new RegExp(`^${IP_V4_REGEX}$`);
883
+ function domainToASCII(domain) {
884
+ return new URL(`http://${domain}`).hostname;
885
+ }
886
+ function canonicalDomain(domainName) {
887
+ if (domainName == null) {
888
+ return void 0;
889
+ }
890
+ let str = domainName.trim().replace(/^\./, "");
891
+ if (IP_V6_REGEX_OBJECT.test(str)) {
892
+ if (!str.startsWith("[")) {
893
+ str = "[" + str;
894
+ }
895
+ if (!str.endsWith("]")) {
896
+ str = str + "]";
897
+ }
898
+ return domainToASCII(str).slice(1, -1);
899
+ }
900
+ if (/[^\u0001-\u007f]/.test(str)) {
901
+ return domainToASCII(str);
902
+ }
903
+ return str.toLowerCase();
904
+ }
905
+ function formatDate(date) {
906
+ return date.toUTCString();
907
+ }
908
+ var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/;
909
+ var MONTH_TO_NUM = {
910
+ jan: 0,
911
+ feb: 1,
912
+ mar: 2,
913
+ apr: 3,
914
+ may: 4,
915
+ jun: 5,
916
+ jul: 6,
917
+ aug: 7,
918
+ sep: 8,
919
+ oct: 9,
920
+ nov: 10,
921
+ dec: 11
922
+ };
923
+ function parseDigits(token, minDigits, maxDigits, trailingOK) {
924
+ let count = 0;
925
+ while (count < token.length) {
926
+ const c = token.charCodeAt(count);
927
+ if (c <= 47 || c >= 58) {
928
+ break;
929
+ }
930
+ count++;
931
+ }
932
+ if (count < minDigits || count > maxDigits) {
933
+ return;
934
+ }
935
+ if (!trailingOK && count != token.length) {
936
+ return;
937
+ }
938
+ return parseInt(token.slice(0, count), 10);
939
+ }
940
+ function parseTime(token) {
941
+ const parts = token.split(":");
942
+ const result = [0, 0, 0];
943
+ if (parts.length !== 3) {
944
+ return;
945
+ }
946
+ for (let i = 0; i < 3; i++) {
947
+ const trailingOK = i == 2;
948
+ const numPart = parts[i];
949
+ if (numPart === void 0) {
950
+ return;
951
+ }
952
+ const num = parseDigits(numPart, 1, 2, trailingOK);
953
+ if (num === void 0) {
954
+ return;
955
+ }
956
+ result[i] = num;
957
+ }
958
+ return result;
959
+ }
960
+ function parseMonth(token) {
961
+ token = String(token).slice(0, 3).toLowerCase();
962
+ switch (token) {
963
+ case "jan":
964
+ return MONTH_TO_NUM.jan;
965
+ case "feb":
966
+ return MONTH_TO_NUM.feb;
967
+ case "mar":
968
+ return MONTH_TO_NUM.mar;
969
+ case "apr":
970
+ return MONTH_TO_NUM.apr;
971
+ case "may":
972
+ return MONTH_TO_NUM.may;
973
+ case "jun":
974
+ return MONTH_TO_NUM.jun;
975
+ case "jul":
976
+ return MONTH_TO_NUM.jul;
977
+ case "aug":
978
+ return MONTH_TO_NUM.aug;
979
+ case "sep":
980
+ return MONTH_TO_NUM.sep;
981
+ case "oct":
982
+ return MONTH_TO_NUM.oct;
983
+ case "nov":
984
+ return MONTH_TO_NUM.nov;
985
+ case "dec":
986
+ return MONTH_TO_NUM.dec;
987
+ default:
988
+ return;
989
+ }
990
+ }
991
+ function parseDate(cookieDate) {
992
+ if (!cookieDate) {
993
+ return;
994
+ }
995
+ const tokens = cookieDate.split(DATE_DELIM);
996
+ let hour;
997
+ let minute;
998
+ let second;
999
+ let dayOfMonth;
1000
+ let month;
1001
+ let year;
1002
+ for (let i = 0; i < tokens.length; i++) {
1003
+ const token = (tokens[i] ?? "").trim();
1004
+ if (!token.length) {
1005
+ continue;
1006
+ }
1007
+ if (second === void 0) {
1008
+ const result = parseTime(token);
1009
+ if (result) {
1010
+ hour = result[0];
1011
+ minute = result[1];
1012
+ second = result[2];
1013
+ continue;
1014
+ }
1015
+ }
1016
+ if (dayOfMonth === void 0) {
1017
+ const result = parseDigits(token, 1, 2, true);
1018
+ if (result !== void 0) {
1019
+ dayOfMonth = result;
1020
+ continue;
1021
+ }
1022
+ }
1023
+ if (month === void 0) {
1024
+ const result = parseMonth(token);
1025
+ if (result !== void 0) {
1026
+ month = result;
1027
+ continue;
1028
+ }
1029
+ }
1030
+ if (year === void 0) {
1031
+ const result = parseDigits(token, 2, 4, true);
1032
+ if (result !== void 0) {
1033
+ year = result;
1034
+ if (year >= 70 && year <= 99) {
1035
+ year += 1900;
1036
+ } else if (year >= 0 && year <= 69) {
1037
+ year += 2e3;
1038
+ }
1039
+ }
1040
+ }
1041
+ }
1042
+ if (dayOfMonth === void 0 || month === void 0 || year === void 0 || hour === void 0 || minute === void 0 || second === void 0 || dayOfMonth < 1 || dayOfMonth > 31 || year < 1601 || hour > 23 || minute > 59 || second > 59) {
1043
+ return;
1044
+ }
1045
+ return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second));
1046
+ }
1047
+ var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/;
1048
+ var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/;
1049
+ var CONTROL_CHARS = /[\x00-\x1F]/;
1050
+ var TERMINATORS = ["\n", "\r", "\0"];
1051
+ function trimTerminator(str) {
1052
+ if (isEmptyString(str)) return str;
1053
+ for (let t = 0; t < TERMINATORS.length; t++) {
1054
+ const terminator = TERMINATORS[t];
1055
+ const terminatorIdx = terminator ? str.indexOf(terminator) : -1;
1056
+ if (terminatorIdx !== -1) {
1057
+ str = str.slice(0, terminatorIdx);
1058
+ }
1059
+ }
1060
+ return str;
1061
+ }
1062
+ function parseCookiePair(cookiePair, looseMode) {
1063
+ cookiePair = trimTerminator(cookiePair);
1064
+ let firstEq = cookiePair.indexOf("=");
1065
+ if (looseMode) {
1066
+ if (firstEq === 0) {
1067
+ cookiePair = cookiePair.substring(1);
1068
+ firstEq = cookiePair.indexOf("=");
1069
+ }
1070
+ } else {
1071
+ if (firstEq <= 0) {
1072
+ return void 0;
1073
+ }
1074
+ }
1075
+ let cookieName, cookieValue;
1076
+ if (firstEq <= 0) {
1077
+ cookieName = "";
1078
+ cookieValue = cookiePair.trim();
1079
+ } else {
1080
+ cookieName = cookiePair.slice(0, firstEq).trim();
1081
+ cookieValue = cookiePair.slice(firstEq + 1).trim();
1082
+ }
1083
+ if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) {
1084
+ return void 0;
1085
+ }
1086
+ const c = new Cookie();
1087
+ c.key = cookieName;
1088
+ c.value = cookieValue;
1089
+ return c;
1090
+ }
1091
+ function parse(str, options) {
1092
+ if (isEmptyString(str) || !isString(str)) {
1093
+ return void 0;
1094
+ }
1095
+ str = str.trim();
1096
+ const firstSemi = str.indexOf(";");
1097
+ const cookiePair = firstSemi === -1 ? str : str.slice(0, firstSemi);
1098
+ const c = parseCookiePair(cookiePair, options?.loose ?? false);
1099
+ if (!c) {
1100
+ return void 0;
1101
+ }
1102
+ if (firstSemi === -1) {
1103
+ return c;
1104
+ }
1105
+ const unparsed = str.slice(firstSemi + 1).trim();
1106
+ if (unparsed.length === 0) {
1107
+ return c;
1108
+ }
1109
+ const cookie_avs = unparsed.split(";");
1110
+ while (cookie_avs.length) {
1111
+ const av = (cookie_avs.shift() ?? "").trim();
1112
+ if (av.length === 0) {
1113
+ continue;
1114
+ }
1115
+ const av_sep = av.indexOf("=");
1116
+ let av_key, av_value;
1117
+ if (av_sep === -1) {
1118
+ av_key = av;
1119
+ av_value = null;
1120
+ } else {
1121
+ av_key = av.slice(0, av_sep);
1122
+ av_value = av.slice(av_sep + 1);
1123
+ }
1124
+ av_key = av_key.trim().toLowerCase();
1125
+ if (av_value) {
1126
+ av_value = av_value.trim();
1127
+ }
1128
+ switch (av_key) {
1129
+ case "expires":
1130
+ if (av_value) {
1131
+ const exp = parseDate(av_value);
1132
+ if (exp) {
1133
+ c.expires = exp;
1134
+ }
1135
+ }
1136
+ break;
1137
+ case "max-age":
1138
+ if (av_value) {
1139
+ if (/^-?[0-9]+$/.test(av_value)) {
1140
+ const delta = parseInt(av_value, 10);
1141
+ c.setMaxAge(delta);
1142
+ }
1143
+ }
1144
+ break;
1145
+ case "domain":
1146
+ if (av_value) {
1147
+ const domain = av_value.trim().replace(/^\./, "");
1148
+ if (domain) {
1149
+ c.domain = domain.toLowerCase();
1150
+ }
1151
+ }
1152
+ break;
1153
+ case "path":
1154
+ c.path = av_value && av_value[0] === "/" ? av_value : null;
1155
+ break;
1156
+ case "secure":
1157
+ c.secure = true;
1158
+ break;
1159
+ case "httponly":
1160
+ c.httpOnly = true;
1161
+ break;
1162
+ case "samesite":
1163
+ switch (av_value ? av_value.toLowerCase() : "") {
1164
+ case "strict":
1165
+ c.sameSite = "strict";
1166
+ break;
1167
+ case "lax":
1168
+ c.sameSite = "lax";
1169
+ break;
1170
+ case "none":
1171
+ c.sameSite = "none";
1172
+ break;
1173
+ default:
1174
+ c.sameSite = void 0;
1175
+ break;
1176
+ }
1177
+ break;
1178
+ default:
1179
+ c.extensions = c.extensions || [];
1180
+ c.extensions.push(av);
1181
+ break;
1182
+ }
1183
+ }
1184
+ return c;
1185
+ }
1186
+ function fromJSON(str) {
1187
+ if (!str || isEmptyString(str)) {
1188
+ return void 0;
1189
+ }
1190
+ let obj;
1191
+ if (typeof str === "string") {
1192
+ try {
1193
+ obj = JSON.parse(str);
1194
+ } catch {
1195
+ return void 0;
1196
+ }
1197
+ } else {
1198
+ obj = str;
1199
+ }
1200
+ const c = new Cookie();
1201
+ Cookie.serializableProperties.forEach((prop) => {
1202
+ if (obj && typeof obj === "object" && inOperator(prop, obj)) {
1203
+ const val = obj[prop];
1204
+ if (val === void 0) {
1205
+ return;
1206
+ }
1207
+ if (inOperator(prop, cookieDefaults) && val === cookieDefaults[prop]) {
1208
+ return;
1209
+ }
1210
+ switch (prop) {
1211
+ case "key":
1212
+ case "value":
1213
+ case "sameSite":
1214
+ if (typeof val === "string") {
1215
+ c[prop] = val;
1216
+ }
1217
+ break;
1218
+ case "expires":
1219
+ case "creation":
1220
+ case "lastAccessed":
1221
+ if (typeof val === "number" || typeof val === "string" || val instanceof Date) {
1222
+ c[prop] = obj[prop] == "Infinity" ? "Infinity" : new Date(val);
1223
+ } else if (val === null) {
1224
+ c[prop] = null;
1225
+ }
1226
+ break;
1227
+ case "maxAge":
1228
+ if (typeof val === "number" || val === "Infinity" || val === "-Infinity") {
1229
+ c[prop] = val;
1230
+ }
1231
+ break;
1232
+ case "domain":
1233
+ case "path":
1234
+ if (typeof val === "string" || val === null) {
1235
+ c[prop] = val;
1236
+ }
1237
+ break;
1238
+ case "secure":
1239
+ case "httpOnly":
1240
+ if (typeof val === "boolean") {
1241
+ c[prop] = val;
1242
+ }
1243
+ break;
1244
+ case "extensions":
1245
+ if (Array.isArray(val) && val.every((item) => typeof item === "string")) {
1246
+ c[prop] = val;
1247
+ }
1248
+ break;
1249
+ case "hostOnly":
1250
+ case "pathIsDefault":
1251
+ if (typeof val === "boolean" || val === null) {
1252
+ c[prop] = val;
1253
+ }
1254
+ break;
1255
+ }
1256
+ }
1257
+ });
1258
+ return c;
1259
+ }
1260
+ var cookieDefaults = {
1261
+ // the order in which the RFC has them:
1262
+ key: "",
1263
+ value: "",
1264
+ expires: "Infinity",
1265
+ maxAge: null,
1266
+ domain: null,
1267
+ path: null,
1268
+ secure: false,
1269
+ httpOnly: false,
1270
+ extensions: null,
1271
+ // set by the CookieJar:
1272
+ hostOnly: null,
1273
+ pathIsDefault: null,
1274
+ creation: null,
1275
+ lastAccessed: null,
1276
+ sameSite: void 0
1277
+ };
1278
+ var _Cookie = class _Cookie2 {
1279
+ /**
1280
+ * Create a new Cookie instance.
1281
+ * @public
1282
+ * @param options - The attributes to set on the cookie
1283
+ */
1284
+ constructor(options = {}) {
1285
+ this.key = options.key ?? cookieDefaults.key;
1286
+ this.value = options.value ?? cookieDefaults.value;
1287
+ this.expires = options.expires ?? cookieDefaults.expires;
1288
+ this.maxAge = options.maxAge ?? cookieDefaults.maxAge;
1289
+ this.domain = options.domain ?? cookieDefaults.domain;
1290
+ this.path = options.path ?? cookieDefaults.path;
1291
+ this.secure = options.secure ?? cookieDefaults.secure;
1292
+ this.httpOnly = options.httpOnly ?? cookieDefaults.httpOnly;
1293
+ this.extensions = options.extensions ?? cookieDefaults.extensions;
1294
+ this.creation = options.creation ?? cookieDefaults.creation;
1295
+ this.hostOnly = options.hostOnly ?? cookieDefaults.hostOnly;
1296
+ this.pathIsDefault = options.pathIsDefault ?? cookieDefaults.pathIsDefault;
1297
+ this.lastAccessed = options.lastAccessed ?? cookieDefaults.lastAccessed;
1298
+ this.sameSite = options.sameSite ?? cookieDefaults.sameSite;
1299
+ this.creation = options.creation ?? /* @__PURE__ */ new Date();
1300
+ Object.defineProperty(this, "creationIndex", {
1301
+ configurable: false,
1302
+ enumerable: false,
1303
+ // important for assert.deepEqual checks
1304
+ writable: true,
1305
+ value: ++_Cookie2.cookiesCreated
1306
+ });
1307
+ this.creationIndex = _Cookie2.cookiesCreated;
1308
+ }
1309
+ [/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")]() {
1310
+ const now = Date.now();
1311
+ const hostOnly = this.hostOnly != null ? this.hostOnly.toString() : "?";
1312
+ const createAge = this.creation && this.creation !== "Infinity" ? `${String(now - this.creation.getTime())}ms` : "?";
1313
+ const accessAge = this.lastAccessed && this.lastAccessed !== "Infinity" ? `${String(now - this.lastAccessed.getTime())}ms` : "?";
1314
+ return `Cookie="${this.toString()}; hostOnly=${hostOnly}; aAge=${accessAge}; cAge=${createAge}"`;
1315
+ }
1316
+ /**
1317
+ * For convenience in using `JSON.stringify(cookie)`. Returns a plain-old Object that can be JSON-serialized.
1318
+ *
1319
+ * @remarks
1320
+ * - Any `Date` properties (such as {@link Cookie.expires}, {@link Cookie.creation}, and {@link Cookie.lastAccessed}) are exported in ISO format (`Date.toISOString()`).
1321
+ *
1322
+ * - Custom Cookie properties are discarded. In tough-cookie 1.x, since there was no {@link Cookie.toJSON} method explicitly defined, all enumerable properties were captured.
1323
+ * If you want a property to be serialized, add the property name to {@link Cookie.serializableProperties}.
1324
+ */
1325
+ toJSON() {
1326
+ const obj = {};
1327
+ for (const prop of _Cookie2.serializableProperties) {
1328
+ const val = this[prop];
1329
+ if (val === cookieDefaults[prop]) {
1330
+ continue;
1331
+ }
1332
+ switch (prop) {
1333
+ case "key":
1334
+ case "value":
1335
+ case "sameSite":
1336
+ if (typeof val === "string") {
1337
+ obj[prop] = val;
1338
+ }
1339
+ break;
1340
+ case "expires":
1341
+ case "creation":
1342
+ case "lastAccessed":
1343
+ if (typeof val === "number" || typeof val === "string" || val instanceof Date) {
1344
+ obj[prop] = val == "Infinity" ? "Infinity" : new Date(val).toISOString();
1345
+ } else if (val === null) {
1346
+ obj[prop] = null;
1347
+ }
1348
+ break;
1349
+ case "maxAge":
1350
+ if (typeof val === "number" || val === "Infinity" || val === "-Infinity") {
1351
+ obj[prop] = val;
1352
+ }
1353
+ break;
1354
+ case "domain":
1355
+ case "path":
1356
+ if (typeof val === "string" || val === null) {
1357
+ obj[prop] = val;
1358
+ }
1359
+ break;
1360
+ case "secure":
1361
+ case "httpOnly":
1362
+ if (typeof val === "boolean") {
1363
+ obj[prop] = val;
1364
+ }
1365
+ break;
1366
+ case "extensions":
1367
+ if (Array.isArray(val)) {
1368
+ obj[prop] = val;
1369
+ }
1370
+ break;
1371
+ case "hostOnly":
1372
+ case "pathIsDefault":
1373
+ if (typeof val === "boolean" || val === null) {
1374
+ obj[prop] = val;
1375
+ }
1376
+ break;
1377
+ }
1378
+ }
1379
+ return obj;
1380
+ }
1381
+ /**
1382
+ * Does a deep clone of this cookie, implemented exactly as `Cookie.fromJSON(cookie.toJSON())`.
1383
+ * @public
1384
+ */
1385
+ clone() {
1386
+ return fromJSON(this.toJSON());
1387
+ }
1388
+ /**
1389
+ * Validates cookie attributes for semantic correctness. Useful for "lint" checking any `Set-Cookie` headers you generate.
1390
+ * For now, it returns a boolean, but eventually could return a reason string.
1391
+ *
1392
+ * @remarks
1393
+ * Works for a few things, but is by no means comprehensive.
1394
+ *
1395
+ * @beta
1396
+ */
1397
+ validate() {
1398
+ if (!this.value || !COOKIE_OCTETS.test(this.value)) {
1399
+ return false;
1400
+ }
1401
+ if (this.expires != "Infinity" && !(this.expires instanceof Date) && !parseDate(this.expires)) {
1402
+ return false;
1403
+ }
1404
+ if (this.maxAge != null && this.maxAge !== "Infinity" && (this.maxAge === "-Infinity" || this.maxAge <= 0)) {
1405
+ return false;
1406
+ }
1407
+ if (this.path != null && !PATH_VALUE.test(this.path)) {
1408
+ return false;
1409
+ }
1410
+ const cdomain = this.cdomain();
1411
+ if (cdomain) {
1412
+ if (cdomain.match(/\.$/)) {
1413
+ return false;
1414
+ }
1415
+ const suffix = getPublicSuffix(cdomain);
1416
+ if (suffix == null) {
1417
+ return false;
1418
+ }
1419
+ }
1420
+ return true;
1421
+ }
1422
+ /**
1423
+ * Sets the 'Expires' attribute on a cookie.
1424
+ *
1425
+ * @remarks
1426
+ * When given a `string` value it will be parsed with {@link parseDate}. If the value can't be parsed as a cookie date
1427
+ * then the 'Expires' attribute will be set to `"Infinity"`.
1428
+ *
1429
+ * @param exp - the new value for the 'Expires' attribute of the cookie.
1430
+ */
1431
+ setExpires(exp) {
1432
+ if (exp instanceof Date) {
1433
+ this.expires = exp;
1434
+ } else {
1435
+ this.expires = parseDate(exp) || "Infinity";
1436
+ }
1437
+ }
1438
+ /**
1439
+ * Sets the 'Max-Age' attribute (in seconds) on a cookie.
1440
+ *
1441
+ * @remarks
1442
+ * Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it can be serialized to JSON.
1443
+ *
1444
+ * @param age - the new value for the 'Max-Age' attribute (in seconds).
1445
+ */
1446
+ setMaxAge(age) {
1447
+ if (age === Infinity) {
1448
+ this.maxAge = "Infinity";
1449
+ } else if (age === -Infinity) {
1450
+ this.maxAge = "-Infinity";
1451
+ } else {
1452
+ this.maxAge = age;
1453
+ }
1454
+ }
1455
+ /**
1456
+ * Encodes to a `Cookie` header value (specifically, the {@link Cookie.key} and {@link Cookie.value} properties joined with "=").
1457
+ * @public
1458
+ */
1459
+ cookieString() {
1460
+ const val = this.value || "";
1461
+ if (this.key) {
1462
+ return `${this.key}=${val}`;
1463
+ }
1464
+ return val;
1465
+ }
1466
+ /**
1467
+ * Encodes to a `Set-Cookie header` value.
1468
+ * @public
1469
+ */
1470
+ toString() {
1471
+ let str = this.cookieString();
1472
+ if (this.expires != "Infinity") {
1473
+ if (this.expires instanceof Date) {
1474
+ str += `; Expires=${formatDate(this.expires)}`;
1475
+ }
1476
+ }
1477
+ if (this.maxAge != null && this.maxAge != Infinity) {
1478
+ str += `; Max-Age=${String(this.maxAge)}`;
1479
+ }
1480
+ if (this.domain && !this.hostOnly) {
1481
+ str += `; Domain=${this.domain}`;
1482
+ }
1483
+ if (this.path) {
1484
+ str += `; Path=${this.path}`;
1485
+ }
1486
+ if (this.secure) {
1487
+ str += "; Secure";
1488
+ }
1489
+ if (this.httpOnly) {
1490
+ str += "; HttpOnly";
1491
+ }
1492
+ if (this.sameSite && this.sameSite !== "none") {
1493
+ if (this.sameSite.toLowerCase() === _Cookie2.sameSiteCanonical.lax.toLowerCase()) {
1494
+ str += `; SameSite=${_Cookie2.sameSiteCanonical.lax}`;
1495
+ } else if (this.sameSite.toLowerCase() === _Cookie2.sameSiteCanonical.strict.toLowerCase()) {
1496
+ str += `; SameSite=${_Cookie2.sameSiteCanonical.strict}`;
1497
+ } else {
1498
+ str += `; SameSite=${this.sameSite}`;
1499
+ }
1500
+ }
1501
+ if (this.extensions) {
1502
+ this.extensions.forEach((ext) => {
1503
+ str += `; ${ext}`;
1504
+ });
1505
+ }
1506
+ return str;
1507
+ }
1508
+ /**
1509
+ * Computes the TTL relative to now (milliseconds).
1510
+ *
1511
+ * @remarks
1512
+ * - `Infinity` is returned for cookies without an explicit expiry
1513
+ *
1514
+ * - `0` is returned if the cookie is expired.
1515
+ *
1516
+ * - Otherwise a time-to-live in milliseconds is returned.
1517
+ *
1518
+ * @param now - passing an explicit value is mostly used for testing purposes since this defaults to the `Date.now()`
1519
+ * @public
1520
+ */
1521
+ TTL(now = Date.now()) {
1522
+ if (this.maxAge != null && typeof this.maxAge === "number") {
1523
+ return this.maxAge <= 0 ? 0 : this.maxAge * 1e3;
1524
+ }
1525
+ const expires = this.expires;
1526
+ if (expires === "Infinity") {
1527
+ return Infinity;
1528
+ }
1529
+ return (expires?.getTime() ?? now) - (now || Date.now());
1530
+ }
1531
+ /**
1532
+ * Computes the absolute unix-epoch milliseconds that this cookie expires.
1533
+ *
1534
+ * The "Max-Age" attribute takes precedence over "Expires" (as per the RFC). The {@link Cookie.lastAccessed} attribute
1535
+ * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.
1536
+ *
1537
+ * If Expires ({@link Cookie.expires}) is set, that's returned.
1538
+ *
1539
+ * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the "Max-Age" value
1540
+ */
1541
+ expiryTime(now) {
1542
+ if (this.maxAge != null) {
1543
+ const relativeTo = now || this.lastAccessed || /* @__PURE__ */ new Date();
1544
+ const maxAge = typeof this.maxAge === "number" ? this.maxAge : -Infinity;
1545
+ const age = maxAge <= 0 ? -Infinity : maxAge * 1e3;
1546
+ if (relativeTo === "Infinity") {
1547
+ return Infinity;
1548
+ }
1549
+ return relativeTo.getTime() + age;
1550
+ }
1551
+ if (this.expires == "Infinity") {
1552
+ return Infinity;
1553
+ }
1554
+ return this.expires ? this.expires.getTime() : void 0;
1555
+ }
1556
+ /**
1557
+ * Similar to {@link Cookie.expiryTime}, computes the absolute unix-epoch milliseconds that this cookie expires and returns it as a Date.
1558
+ *
1559
+ * The "Max-Age" attribute takes precedence over "Expires" (as per the RFC). The {@link Cookie.lastAccessed} attribute
1560
+ * (or the `now` parameter if given) is used to offset the {@link Cookie.maxAge} attribute.
1561
+ *
1562
+ * If Expires ({@link Cookie.expires}) is set, that's returned.
1563
+ *
1564
+ * @param now - can be used to provide a time offset (instead of {@link Cookie.lastAccessed}) to use when calculating the "Max-Age" value
1565
+ */
1566
+ expiryDate(now) {
1567
+ const millisec = this.expiryTime(now);
1568
+ if (millisec == Infinity) {
1569
+ return /* @__PURE__ */ new Date(2147483647e3);
1570
+ } else if (millisec == -Infinity) {
1571
+ return /* @__PURE__ */ new Date(0);
1572
+ } else {
1573
+ return millisec == void 0 ? void 0 : new Date(millisec);
1574
+ }
1575
+ }
1576
+ /**
1577
+ * Indicates if the cookie has been persisted to a store or not.
1578
+ * @public
1579
+ */
1580
+ isPersistent() {
1581
+ return this.maxAge != null || this.expires != "Infinity";
1582
+ }
1583
+ /**
1584
+ * Calls {@link canonicalDomain} with the {@link Cookie.domain} property.
1585
+ * @public
1586
+ */
1587
+ canonicalizedDomain() {
1588
+ return canonicalDomain(this.domain);
1589
+ }
1590
+ /**
1591
+ * Alias for {@link Cookie.canonicalizedDomain}
1592
+ * @public
1593
+ */
1594
+ cdomain() {
1595
+ return canonicalDomain(this.domain);
1596
+ }
1597
+ /**
1598
+ * Parses a string into a Cookie object.
1599
+ *
1600
+ * @remarks
1601
+ * Note: when parsing a `Cookie` header it must be split by ';' before each Cookie string can be parsed.
1602
+ *
1603
+ * @example
1604
+ * ```
1605
+ * // parse a `Set-Cookie` header
1606
+ * const setCookieHeader = 'a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT'
1607
+ * const cookie = Cookie.parse(setCookieHeader)
1608
+ * cookie.key === 'a'
1609
+ * cookie.value === 'bcd'
1610
+ * cookie.expires === new Date(Date.parse('Tue, 18 Oct 2011 07:05:03 GMT'))
1611
+ * ```
1612
+ *
1613
+ * @example
1614
+ * ```
1615
+ * // parse a `Cookie` header
1616
+ * const cookieHeader = 'name=value; name2=value2; name3=value3'
1617
+ * const cookies = cookieHeader.split(';').map(Cookie.parse)
1618
+ * cookies[0].name === 'name'
1619
+ * cookies[0].value === 'value'
1620
+ * cookies[1].name === 'name2'
1621
+ * cookies[1].value === 'value2'
1622
+ * cookies[2].name === 'name3'
1623
+ * cookies[2].value === 'value3'
1624
+ * ```
1625
+ *
1626
+ * @param str - The `Set-Cookie` header or a Cookie string to parse.
1627
+ * @param options - Configures `strict` or `loose` mode for cookie parsing
1628
+ */
1629
+ static parse(str, options) {
1630
+ return parse(str, options);
1631
+ }
1632
+ /**
1633
+ * Does the reverse of {@link Cookie.toJSON}.
1634
+ *
1635
+ * @remarks
1636
+ * Any Date properties (such as .expires, .creation, and .lastAccessed) are parsed via Date.parse, not tough-cookie's parseDate, since ISO timestamps are being handled at this layer.
1637
+ *
1638
+ * @example
1639
+ * ```
1640
+ * const json = JSON.stringify({
1641
+ * key: 'alpha',
1642
+ * value: 'beta',
1643
+ * domain: 'example.com',
1644
+ * path: '/foo',
1645
+ * expires: '2038-01-19T03:14:07.000Z',
1646
+ * })
1647
+ * const cookie = Cookie.fromJSON(json)
1648
+ * cookie.key === 'alpha'
1649
+ * cookie.value === 'beta'
1650
+ * cookie.domain === 'example.com'
1651
+ * cookie.path === '/foo'
1652
+ * cookie.expires === new Date(Date.parse('2038-01-19T03:14:07.000Z'))
1653
+ * ```
1654
+ *
1655
+ * @param str - An unparsed JSON string or a value that has already been parsed as JSON
1656
+ */
1657
+ static fromJSON(str) {
1658
+ return fromJSON(str);
1659
+ }
1660
+ };
1661
+ _Cookie.cookiesCreated = 0;
1662
+ _Cookie.sameSiteLevel = {
1663
+ strict: 3,
1664
+ lax: 2,
1665
+ none: 1
1666
+ };
1667
+ _Cookie.sameSiteCanonical = {
1668
+ strict: "Strict",
1669
+ lax: "Lax"
1670
+ };
1671
+ _Cookie.serializableProperties = [
1672
+ "key",
1673
+ "value",
1674
+ "expires",
1675
+ "maxAge",
1676
+ "domain",
1677
+ "path",
1678
+ "secure",
1679
+ "httpOnly",
1680
+ "extensions",
1681
+ "hostOnly",
1682
+ "pathIsDefault",
1683
+ "creation",
1684
+ "lastAccessed",
1685
+ "sameSite"
1686
+ ];
1687
+ var Cookie = _Cookie;
1688
+ var MAX_TIME = 2147483647e3;
1689
+ function cookieCompare(a, b) {
1690
+ let cmp;
1691
+ const aPathLen = a.path ? a.path.length : 0;
1692
+ const bPathLen = b.path ? b.path.length : 0;
1693
+ cmp = bPathLen - aPathLen;
1694
+ if (cmp !== 0) {
1695
+ return cmp;
1696
+ }
1697
+ const aTime = a.creation && a.creation instanceof Date ? a.creation.getTime() : MAX_TIME;
1698
+ const bTime = b.creation && b.creation instanceof Date ? b.creation.getTime() : MAX_TIME;
1699
+ cmp = aTime - bTime;
1700
+ if (cmp !== 0) {
1701
+ return cmp;
1702
+ }
1703
+ cmp = (a.creationIndex || 0) - (b.creationIndex || 0);
1704
+ return cmp;
1705
+ }
1706
+ function defaultPath(path) {
1707
+ if (!path || path.slice(0, 1) !== "/") {
1708
+ return "/";
1709
+ }
1710
+ if (path === "/") {
1711
+ return path;
1712
+ }
1713
+ const rightSlash = path.lastIndexOf("/");
1714
+ if (rightSlash === 0) {
1715
+ return "/";
1716
+ }
1717
+ return path.slice(0, rightSlash);
1718
+ }
1719
+ var IP_REGEX_LOWERCASE = /(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-f\d]{1,4}:){7}(?:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-f\d]{1,4}|:)|(?:[a-f\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,2}|:)|(?:[a-f\d]{1,4}:){4}(?:(?::[a-f\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,3}|:)|(?:[a-f\d]{1,4}:){3}(?:(?::[a-f\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,4}|:)|(?:[a-f\d]{1,4}:){2}(?:(?::[a-f\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,5}|:)|(?:[a-f\d]{1,4}:){1}(?:(?::[a-f\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,6}|:)|(?::(?:(?::[a-f\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-f\d]{1,4}){1,7}|:)))$)/;
1720
+ function domainMatch(domain, cookieDomain, canonicalize) {
1721
+ if (domain == null || cookieDomain == null) {
1722
+ return void 0;
1723
+ }
1724
+ let _str;
1725
+ let _domStr;
1726
+ {
1727
+ _str = domain;
1728
+ _domStr = cookieDomain;
1729
+ }
1730
+ if (_str == null || _domStr == null) {
1731
+ return void 0;
1732
+ }
1733
+ if (_str == _domStr) {
1734
+ return true;
1735
+ }
1736
+ const idx = _str.lastIndexOf(_domStr);
1737
+ if (idx <= 0) {
1738
+ return false;
1739
+ }
1740
+ if (_str.length !== _domStr.length + idx) {
1741
+ return false;
1742
+ }
1743
+ if (_str.substring(idx - 1, idx) !== ".") {
1744
+ return false;
1745
+ }
1746
+ return !IP_REGEX_LOWERCASE.test(_str);
1747
+ }
1748
+ function isLoopbackV4(address) {
1749
+ const octets = address.split(".");
1750
+ return octets.length === 4 && octets[0] !== void 0 && parseInt(octets[0], 10) === 127;
1751
+ }
1752
+ function isLoopbackV6(address) {
1753
+ return address === "::1";
1754
+ }
1755
+ function isNormalizedLocalhostTLD(lowerHost) {
1756
+ return lowerHost.endsWith(".localhost");
1757
+ }
1758
+ function isLocalHostname(host) {
1759
+ const lowerHost = host.toLowerCase();
1760
+ return lowerHost === "localhost" || isNormalizedLocalhostTLD(lowerHost);
1761
+ }
1762
+ function hostNoBrackets(host) {
1763
+ if (host.length >= 2 && host.startsWith("[") && host.endsWith("]")) {
1764
+ return host.substring(1, host.length - 1);
1765
+ }
1766
+ return host;
1767
+ }
1768
+ function isPotentiallyTrustworthy(inputUrl, allowSecureOnLocal = true) {
1769
+ let url;
1770
+ if (typeof inputUrl === "string") {
1771
+ try {
1772
+ url = new URL(inputUrl);
1773
+ } catch {
1774
+ return false;
1775
+ }
1776
+ } else {
1777
+ url = inputUrl;
1778
+ }
1779
+ const scheme = url.protocol.replace(":", "").toLowerCase();
1780
+ const hostname = hostNoBrackets(url.hostname).replace(/\.+$/, "");
1781
+ if (scheme === "https" || scheme === "wss") {
1782
+ return true;
1783
+ }
1784
+ if (!allowSecureOnLocal) {
1785
+ return false;
1786
+ }
1787
+ if (IP_V4_REGEX_OBJECT.test(hostname)) {
1788
+ return isLoopbackV4(hostname);
1789
+ }
1790
+ if (IP_V6_REGEX_OBJECT.test(hostname)) {
1791
+ return isLoopbackV6(hostname);
1792
+ }
1793
+ return isLocalHostname(hostname);
1794
+ }
1795
+ var defaultSetCookieOptions = {
1796
+ loose: false,
1797
+ sameSiteContext: void 0,
1798
+ ignoreError: false,
1799
+ http: true
1800
+ };
1801
+ var defaultGetCookieOptions = {
1802
+ http: true,
1803
+ expire: true,
1804
+ allPaths: false,
1805
+ sameSiteContext: void 0,
1806
+ sort: void 0
1807
+ };
1808
+ var SAME_SITE_CONTEXT_VAL_ERR = 'Invalid sameSiteContext option for getCookies(); expected one of "strict", "lax", or "none"';
1809
+ function getCookieContext(url) {
1810
+ if (url && typeof url === "object" && "hostname" in url && typeof url.hostname === "string" && "pathname" in url && typeof url.pathname === "string" && "protocol" in url && typeof url.protocol === "string") {
1811
+ return {
1812
+ hostname: url.hostname,
1813
+ pathname: url.pathname,
1814
+ protocol: url.protocol
1815
+ };
1816
+ } else if (typeof url === "string") {
1817
+ try {
1818
+ return new URL(decodeURI(url));
1819
+ } catch {
1820
+ return new URL(url);
1821
+ }
1822
+ } else {
1823
+ throw new ParameterError("`url` argument is not a string or URL.");
1824
+ }
1825
+ }
1826
+ function checkSameSiteContext(value) {
1827
+ const context = String(value).toLowerCase();
1828
+ if (context === "none" || context === "lax" || context === "strict") {
1829
+ return context;
1830
+ } else {
1831
+ return void 0;
1832
+ }
1833
+ }
1834
+ function isSecurePrefixConditionMet(cookie) {
1835
+ const startsWithSecurePrefix = typeof cookie.key === "string" && cookie.key.startsWith("__Secure-");
1836
+ return !startsWithSecurePrefix || cookie.secure;
1837
+ }
1838
+ function isHostPrefixConditionMet(cookie) {
1839
+ const startsWithHostPrefix = typeof cookie.key === "string" && cookie.key.startsWith("__Host-");
1840
+ return !startsWithHostPrefix || Boolean(
1841
+ cookie.secure && cookie.hostOnly && cookie.path != null && cookie.path === "/"
1842
+ );
1843
+ }
1844
+ function getNormalizedPrefixSecurity(prefixSecurity) {
1845
+ const normalizedPrefixSecurity = prefixSecurity.toLowerCase();
1846
+ switch (normalizedPrefixSecurity) {
1847
+ case PrefixSecurityEnum.STRICT:
1848
+ case PrefixSecurityEnum.SILENT:
1849
+ case PrefixSecurityEnum.DISABLED:
1850
+ return normalizedPrefixSecurity;
1851
+ default:
1852
+ return PrefixSecurityEnum.SILENT;
1853
+ }
1854
+ }
1855
+ var CookieJar = class _CookieJar {
1856
+ /**
1857
+ * Creates a new `CookieJar` instance.
1858
+ *
1859
+ * @remarks
1860
+ * - If a custom store is not passed to the constructor, an in-memory store ({@link MemoryCookieStore} will be created and used.
1861
+ * - If a boolean value is passed as the `options` parameter, this is equivalent to passing `{ rejectPublicSuffixes: <value> }`
1862
+ *
1863
+ * @param store - a custom {@link Store} implementation (defaults to {@link MemoryCookieStore})
1864
+ * @param options - configures how cookies are processed by the cookie jar
1865
+ */
1866
+ constructor(store, options) {
1867
+ if (typeof options === "boolean") {
1868
+ options = { rejectPublicSuffixes: options };
1869
+ }
1870
+ this.rejectPublicSuffixes = options?.rejectPublicSuffixes ?? true;
1871
+ this.enableLooseMode = options?.looseMode ?? false;
1872
+ this.allowSpecialUseDomain = options?.allowSpecialUseDomain ?? true;
1873
+ this.allowSecureOnLocal = options?.allowSecureOnLocal ?? true;
1874
+ this.prefixSecurity = getNormalizedPrefixSecurity(
1875
+ options?.prefixSecurity ?? "silent"
1876
+ );
1877
+ this.store = store ?? new MemoryCookieStore();
1878
+ }
1879
+ callSync(fn) {
1880
+ if (!this.store.synchronous) {
1881
+ throw new Error(
1882
+ "CookieJar store is not synchronous; use async API instead."
1883
+ );
1884
+ }
1885
+ let syncErr = null;
1886
+ let syncResult = void 0;
1887
+ try {
1888
+ fn.call(this, (error, result) => {
1889
+ syncErr = error;
1890
+ syncResult = result;
1891
+ });
1892
+ } catch (err) {
1893
+ syncErr = err;
1894
+ }
1895
+ if (syncErr) throw syncErr;
1896
+ return syncResult;
1897
+ }
1898
+ /**
1899
+ * @internal No doc because this is the overload implementation
1900
+ */
1901
+ setCookie(cookie, url, options, callback) {
1902
+ if (typeof options === "function") {
1903
+ callback = options;
1904
+ options = void 0;
1905
+ }
1906
+ const promiseCallback = createPromiseCallback(callback);
1907
+ const cb = promiseCallback.callback;
1908
+ let context;
1909
+ try {
1910
+ if (typeof url === "string") {
1911
+ validate(
1912
+ isNonEmptyString(url),
1913
+ callback,
1914
+ safeToString(options)
1915
+ );
1916
+ }
1917
+ context = getCookieContext(url);
1918
+ if (typeof url === "function") {
1919
+ return promiseCallback.reject(new Error("No URL was specified"));
1920
+ }
1921
+ if (typeof options === "function") {
1922
+ options = defaultSetCookieOptions;
1923
+ }
1924
+ validate(typeof cb === "function", cb);
1925
+ if (!isNonEmptyString(cookie) && !isObject(cookie) && cookie instanceof String && cookie.length == 0) {
1926
+ return promiseCallback.resolve(void 0);
1927
+ }
1928
+ } catch (err) {
1929
+ return promiseCallback.reject(err);
1930
+ }
1931
+ const host = canonicalDomain(context.hostname) ?? null;
1932
+ const loose = options?.loose || this.enableLooseMode;
1933
+ let sameSiteContext = null;
1934
+ if (options?.sameSiteContext) {
1935
+ sameSiteContext = checkSameSiteContext(options.sameSiteContext);
1936
+ if (!sameSiteContext) {
1937
+ return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));
1938
+ }
1939
+ }
1940
+ if (typeof cookie === "string" || cookie instanceof String) {
1941
+ const parsedCookie = Cookie.parse(cookie.toString(), { loose });
1942
+ if (!parsedCookie) {
1943
+ const err = new Error("Cookie failed to parse");
1944
+ return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);
1945
+ }
1946
+ cookie = parsedCookie;
1947
+ } else if (!(cookie instanceof Cookie)) {
1948
+ const err = new Error(
1949
+ "First argument to setCookie must be a Cookie object or string"
1950
+ );
1951
+ return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);
1952
+ }
1953
+ const now = options?.now || /* @__PURE__ */ new Date();
1954
+ if (this.rejectPublicSuffixes && cookie.domain) {
1955
+ try {
1956
+ const cdomain = cookie.cdomain();
1957
+ const suffix = typeof cdomain === "string" ? getPublicSuffix(cdomain, {
1958
+ allowSpecialUseDomain: this.allowSpecialUseDomain,
1959
+ ignoreError: options?.ignoreError
1960
+ }) : null;
1961
+ if (suffix == null && !IP_V6_REGEX_OBJECT.test(cookie.domain)) {
1962
+ const err = new Error("Cookie has domain set to a public suffix");
1963
+ return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);
1964
+ }
1965
+ } catch (err) {
1966
+ return options?.ignoreError ? promiseCallback.resolve(void 0) : (
1967
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
1968
+ promiseCallback.reject(err)
1969
+ );
1970
+ }
1971
+ }
1972
+ if (cookie.domain) {
1973
+ if (!domainMatch(host ?? void 0, cookie.cdomain() ?? void 0)) {
1974
+ const err = new Error(
1975
+ `Cookie not in this host's domain. Cookie:${cookie.cdomain() ?? "null"} Request:${host ?? "null"}`
1976
+ );
1977
+ return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);
1978
+ }
1979
+ if (cookie.hostOnly == null) {
1980
+ cookie.hostOnly = false;
1981
+ }
1982
+ } else {
1983
+ cookie.hostOnly = true;
1984
+ cookie.domain = host;
1985
+ }
1986
+ if (!cookie.path || cookie.path[0] !== "/") {
1987
+ cookie.path = defaultPath(context.pathname);
1988
+ cookie.pathIsDefault = true;
1989
+ }
1990
+ if (options?.http === false && cookie.httpOnly) {
1991
+ const err = new Error("Cookie is HttpOnly and this isn't an HTTP API");
1992
+ return options.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);
1993
+ }
1994
+ if (cookie.sameSite !== "none" && cookie.sameSite !== void 0 && sameSiteContext) {
1995
+ if (sameSiteContext === "none") {
1996
+ const err = new Error(
1997
+ "Cookie is SameSite but this is a cross-origin request"
1998
+ );
1999
+ return options?.ignoreError ? promiseCallback.resolve(void 0) : promiseCallback.reject(err);
2000
+ }
2001
+ }
2002
+ const ignoreErrorForPrefixSecurity = this.prefixSecurity === PrefixSecurityEnum.SILENT;
2003
+ const prefixSecurityDisabled = this.prefixSecurity === PrefixSecurityEnum.DISABLED;
2004
+ if (!prefixSecurityDisabled) {
2005
+ let errorFound = false;
2006
+ let errorMsg;
2007
+ if (!isSecurePrefixConditionMet(cookie)) {
2008
+ errorFound = true;
2009
+ errorMsg = "Cookie has __Secure prefix but Secure attribute is not set";
2010
+ } else if (!isHostPrefixConditionMet(cookie)) {
2011
+ errorFound = true;
2012
+ errorMsg = "Cookie has __Host prefix but either Secure or HostOnly attribute is not set or Path is not '/'";
2013
+ }
2014
+ if (errorFound) {
2015
+ return options?.ignoreError || ignoreErrorForPrefixSecurity ? promiseCallback.resolve(void 0) : promiseCallback.reject(new Error(errorMsg));
2016
+ }
2017
+ }
2018
+ const store = this.store;
2019
+ if (!store.updateCookie) {
2020
+ store.updateCookie = async function(_oldCookie, newCookie, cb2) {
2021
+ return this.putCookie(newCookie).then(
2022
+ () => cb2?.(null),
2023
+ (error) => cb2?.(error)
2024
+ );
2025
+ };
2026
+ }
2027
+ const withCookie = function withCookie2(err, oldCookie) {
2028
+ if (err) {
2029
+ cb(err);
2030
+ return;
2031
+ }
2032
+ const next = function(err2) {
2033
+ if (err2) {
2034
+ cb(err2);
2035
+ } else if (typeof cookie === "string") {
2036
+ cb(null, void 0);
2037
+ } else {
2038
+ cb(null, cookie);
2039
+ }
2040
+ };
2041
+ if (oldCookie) {
2042
+ if (options && "http" in options && options.http === false && oldCookie.httpOnly) {
2043
+ err = new Error("old Cookie is HttpOnly and this isn't an HTTP API");
2044
+ if (options.ignoreError) cb(null, void 0);
2045
+ else cb(err);
2046
+ return;
2047
+ }
2048
+ if (cookie instanceof Cookie) {
2049
+ cookie.creation = oldCookie.creation;
2050
+ cookie.creationIndex = oldCookie.creationIndex;
2051
+ cookie.lastAccessed = now;
2052
+ store.updateCookie(oldCookie, cookie, next);
2053
+ }
2054
+ } else {
2055
+ if (cookie instanceof Cookie) {
2056
+ cookie.creation = cookie.lastAccessed = now;
2057
+ store.putCookie(cookie, next);
2058
+ }
2059
+ }
2060
+ };
2061
+ store.findCookie(cookie.domain, cookie.path, cookie.key, withCookie);
2062
+ return promiseCallback.promise;
2063
+ }
2064
+ /**
2065
+ * Synchronously attempt to set the {@link Cookie} in the {@link CookieJar}.
2066
+ *
2067
+ * <strong>Note:</strong> Only works if the configured {@link Store} is also synchronous.
2068
+ *
2069
+ * @remarks
2070
+ * - If successfully persisted, the {@link Cookie} will have updated
2071
+ * {@link Cookie.creation}, {@link Cookie.lastAccessed} and {@link Cookie.hostOnly}
2072
+ * properties.
2073
+ *
2074
+ * - As per the RFC, the {@link Cookie.hostOnly} flag is set if there was no `Domain={value}`
2075
+ * attribute on the cookie string. The {@link Cookie.domain} property is set to the
2076
+ * fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an
2077
+ * exact hostname match (not a {@link domainMatch} as per usual)
2078
+ *
2079
+ * @param cookie - The cookie object or cookie string to store. A string value will be parsed into a cookie using {@link Cookie.parse}.
2080
+ * @param url - The domain to store the cookie with.
2081
+ * @param options - Configuration settings to use when storing the cookie.
2082
+ * @public
2083
+ */
2084
+ setCookieSync(cookie, url, options) {
2085
+ const setCookieFn = options ? this.setCookie.bind(this, cookie, url, options) : this.setCookie.bind(this, cookie, url);
2086
+ return this.callSync(setCookieFn);
2087
+ }
2088
+ /**
2089
+ * @internal No doc because this is the overload implementation
2090
+ */
2091
+ getCookies(url, options, callback) {
2092
+ if (typeof options === "function") {
2093
+ callback = options;
2094
+ options = defaultGetCookieOptions;
2095
+ } else if (options === void 0) {
2096
+ options = defaultGetCookieOptions;
2097
+ }
2098
+ const promiseCallback = createPromiseCallback(callback);
2099
+ const cb = promiseCallback.callback;
2100
+ let context;
2101
+ try {
2102
+ if (typeof url === "string") {
2103
+ validate(isNonEmptyString(url), cb, url);
2104
+ }
2105
+ context = getCookieContext(url);
2106
+ validate(
2107
+ isObject(options),
2108
+ cb,
2109
+ safeToString(options)
2110
+ );
2111
+ validate(typeof cb === "function", cb);
2112
+ } catch (parameterError) {
2113
+ return promiseCallback.reject(parameterError);
2114
+ }
2115
+ const host = canonicalDomain(context.hostname);
2116
+ const path = context.pathname || "/";
2117
+ const potentiallyTrustworthy = isPotentiallyTrustworthy(
2118
+ url,
2119
+ this.allowSecureOnLocal
2120
+ );
2121
+ let sameSiteLevel = 0;
2122
+ if (options.sameSiteContext) {
2123
+ const sameSiteContext = checkSameSiteContext(options.sameSiteContext);
2124
+ if (sameSiteContext == null) {
2125
+ return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));
2126
+ }
2127
+ sameSiteLevel = Cookie.sameSiteLevel[sameSiteContext];
2128
+ if (!sameSiteLevel) {
2129
+ return promiseCallback.reject(new Error(SAME_SITE_CONTEXT_VAL_ERR));
2130
+ }
2131
+ }
2132
+ const http2 = options.http ?? true;
2133
+ const now = Date.now();
2134
+ const expireCheck = options.expire ?? true;
2135
+ const allPaths = options.allPaths ?? false;
2136
+ const store = this.store;
2137
+ function matchingCookie(c) {
2138
+ if (c.hostOnly) {
2139
+ if (c.domain != host) {
2140
+ return false;
2141
+ }
2142
+ } else {
2143
+ if (!domainMatch(host ?? void 0, c.domain ?? void 0)) {
2144
+ return false;
2145
+ }
2146
+ }
2147
+ if (!allPaths && typeof c.path === "string" && !pathMatch(path, c.path)) {
2148
+ return false;
2149
+ }
2150
+ if (c.secure && !potentiallyTrustworthy) {
2151
+ return false;
2152
+ }
2153
+ if (c.httpOnly && !http2) {
2154
+ return false;
2155
+ }
2156
+ if (sameSiteLevel) {
2157
+ let cookieLevel;
2158
+ if (c.sameSite === "lax") {
2159
+ cookieLevel = Cookie.sameSiteLevel.lax;
2160
+ } else if (c.sameSite === "strict") {
2161
+ cookieLevel = Cookie.sameSiteLevel.strict;
2162
+ } else {
2163
+ cookieLevel = Cookie.sameSiteLevel.none;
2164
+ }
2165
+ if (cookieLevel > sameSiteLevel) {
2166
+ return false;
2167
+ }
2168
+ }
2169
+ const expiryTime = c.expiryTime();
2170
+ if (expireCheck && expiryTime != void 0 && expiryTime <= now) {
2171
+ store.removeCookie(c.domain, c.path, c.key, () => {
2172
+ });
2173
+ return false;
2174
+ }
2175
+ return true;
2176
+ }
2177
+ store.findCookies(
2178
+ host,
2179
+ allPaths ? null : path,
2180
+ this.allowSpecialUseDomain,
2181
+ (err, cookies) => {
2182
+ if (err) {
2183
+ cb(err);
2184
+ return;
2185
+ }
2186
+ if (cookies == null) {
2187
+ cb(null, []);
2188
+ return;
2189
+ }
2190
+ cookies = cookies.filter(matchingCookie);
2191
+ if ("sort" in options && options.sort !== false) {
2192
+ cookies = cookies.sort(cookieCompare);
2193
+ }
2194
+ const now2 = /* @__PURE__ */ new Date();
2195
+ for (const cookie of cookies) {
2196
+ cookie.lastAccessed = now2;
2197
+ }
2198
+ cb(null, cookies);
2199
+ }
2200
+ );
2201
+ return promiseCallback.promise;
2202
+ }
2203
+ /**
2204
+ * Synchronously retrieve the list of cookies that can be sent in a Cookie header for the
2205
+ * current URL.
2206
+ *
2207
+ * <strong>Note</strong>: Only works if the configured Store is also synchronous.
2208
+ *
2209
+ * @remarks
2210
+ * - The array of cookies returned will be sorted according to {@link cookieCompare}.
2211
+ *
2212
+ * - The {@link Cookie.lastAccessed} property will be updated on all returned cookies.
2213
+ *
2214
+ * @param url - The domain to store the cookie with.
2215
+ * @param options - Configuration settings to use when retrieving the cookies.
2216
+ */
2217
+ getCookiesSync(url, options) {
2218
+ return this.callSync(this.getCookies.bind(this, url, options)) ?? [];
2219
+ }
2220
+ /**
2221
+ * @internal No doc because this is the overload implementation
2222
+ */
2223
+ getCookieString(url, options, callback) {
2224
+ if (typeof options === "function") {
2225
+ callback = options;
2226
+ options = void 0;
2227
+ }
2228
+ const promiseCallback = createPromiseCallback(callback);
2229
+ const next = function(err, cookies) {
2230
+ if (err) {
2231
+ promiseCallback.callback(err);
2232
+ } else {
2233
+ promiseCallback.callback(
2234
+ null,
2235
+ cookies?.sort(cookieCompare).map((c) => c.cookieString()).join("; ")
2236
+ );
2237
+ }
2238
+ };
2239
+ this.getCookies(url, options, next);
2240
+ return promiseCallback.promise;
2241
+ }
2242
+ /**
2243
+ * Synchronous version of `.getCookieString()`. Accepts the same options as `.getCookies()` but returns a string suitable for a
2244
+ * `Cookie` header rather than an Array.
2245
+ *
2246
+ * <strong>Note</strong>: Only works if the configured Store is also synchronous.
2247
+ *
2248
+ * @param url - The domain to store the cookie with.
2249
+ * @param options - Configuration settings to use when retrieving the cookies.
2250
+ */
2251
+ getCookieStringSync(url, options) {
2252
+ return this.callSync(
2253
+ options ? this.getCookieString.bind(this, url, options) : this.getCookieString.bind(this, url)
2254
+ ) ?? "";
2255
+ }
2256
+ /**
2257
+ * @internal No doc because this is the overload implementation
2258
+ */
2259
+ getSetCookieStrings(url, options, callback) {
2260
+ if (typeof options === "function") {
2261
+ callback = options;
2262
+ options = void 0;
2263
+ }
2264
+ const promiseCallback = createPromiseCallback(
2265
+ callback
2266
+ );
2267
+ const next = function(err, cookies) {
2268
+ if (err) {
2269
+ promiseCallback.callback(err);
2270
+ } else {
2271
+ promiseCallback.callback(
2272
+ null,
2273
+ cookies?.map((c) => {
2274
+ return c.toString();
2275
+ })
2276
+ );
2277
+ }
2278
+ };
2279
+ this.getCookies(url, options, next);
2280
+ return promiseCallback.promise;
2281
+ }
2282
+ /**
2283
+ * Synchronous version of `.getSetCookieStrings()`. Returns an array of strings suitable for `Set-Cookie` headers.
2284
+ * Accepts the same options as `.getCookies()`.
2285
+ *
2286
+ * <strong>Note</strong>: Only works if the configured Store is also synchronous.
2287
+ *
2288
+ * @param url - The domain to store the cookie with.
2289
+ * @param options - Configuration settings to use when retrieving the cookies.
2290
+ */
2291
+ getSetCookieStringsSync(url, options = {}) {
2292
+ return this.callSync(this.getSetCookieStrings.bind(this, url, options)) ?? [];
2293
+ }
2294
+ /**
2295
+ * @internal No doc because this is the overload implementation
2296
+ */
2297
+ serialize(callback) {
2298
+ const promiseCallback = createPromiseCallback(callback);
2299
+ let type = this.store.constructor.name;
2300
+ if (isObject(type)) {
2301
+ type = null;
2302
+ }
2303
+ const serialized = {
2304
+ // The version of tough-cookie that serialized this jar. Generally a good
2305
+ // practice since future versions can make data import decisions based on
2306
+ // known past behavior. When/if this matters, use `semver`.
2307
+ version: `tough-cookie@${version$1}`,
2308
+ // add the store type, to make humans happy:
2309
+ storeType: type,
2310
+ // CookieJar configuration:
2311
+ rejectPublicSuffixes: this.rejectPublicSuffixes,
2312
+ enableLooseMode: this.enableLooseMode,
2313
+ allowSpecialUseDomain: this.allowSpecialUseDomain,
2314
+ prefixSecurity: getNormalizedPrefixSecurity(this.prefixSecurity),
2315
+ // this gets filled from getAllCookies:
2316
+ cookies: []
2317
+ };
2318
+ if (typeof this.store.getAllCookies !== "function") {
2319
+ return promiseCallback.reject(
2320
+ new Error(
2321
+ "store does not support getAllCookies and cannot be serialized"
2322
+ )
2323
+ );
2324
+ }
2325
+ this.store.getAllCookies((err, cookies) => {
2326
+ if (err) {
2327
+ promiseCallback.callback(err);
2328
+ return;
2329
+ }
2330
+ if (cookies == null) {
2331
+ promiseCallback.callback(null, serialized);
2332
+ return;
2333
+ }
2334
+ serialized.cookies = cookies.map((cookie) => {
2335
+ const serializedCookie = cookie.toJSON();
2336
+ delete serializedCookie.creationIndex;
2337
+ return serializedCookie;
2338
+ });
2339
+ promiseCallback.callback(null, serialized);
2340
+ });
2341
+ return promiseCallback.promise;
2342
+ }
2343
+ /**
2344
+ * Serialize the CookieJar if the underlying store supports `.getAllCookies`.
2345
+ *
2346
+ * <strong>Note</strong>: Only works if the configured Store is also synchronous.
2347
+ */
2348
+ serializeSync() {
2349
+ return this.callSync((callback) => {
2350
+ this.serialize(callback);
2351
+ });
2352
+ }
2353
+ /**
2354
+ * Alias of {@link CookieJar.serializeSync}. Allows the cookie to be serialized
2355
+ * with `JSON.stringify(cookieJar)`.
2356
+ */
2357
+ toJSON() {
2358
+ return this.serializeSync();
2359
+ }
2360
+ /**
2361
+ * Use the class method CookieJar.deserialize instead of calling this directly
2362
+ * @internal
2363
+ */
2364
+ _importCookies(serialized, callback) {
2365
+ let cookies = void 0;
2366
+ if (serialized && typeof serialized === "object" && inOperator("cookies", serialized) && Array.isArray(serialized.cookies)) {
2367
+ cookies = serialized.cookies;
2368
+ }
2369
+ if (!cookies) {
2370
+ callback(new Error("serialized jar has no cookies array"), void 0);
2371
+ return;
2372
+ }
2373
+ cookies = cookies.slice();
2374
+ const putNext = (err) => {
2375
+ if (err) {
2376
+ callback(err, void 0);
2377
+ return;
2378
+ }
2379
+ if (Array.isArray(cookies)) {
2380
+ if (!cookies.length) {
2381
+ callback(err, this);
2382
+ return;
2383
+ }
2384
+ let cookie;
2385
+ try {
2386
+ cookie = Cookie.fromJSON(cookies.shift());
2387
+ } catch (e) {
2388
+ callback(e instanceof Error ? e : new Error(), void 0);
2389
+ return;
2390
+ }
2391
+ if (cookie === void 0) {
2392
+ putNext(null);
2393
+ return;
2394
+ }
2395
+ this.store.putCookie(cookie, putNext);
2396
+ }
2397
+ };
2398
+ putNext(null);
2399
+ }
2400
+ /**
2401
+ * @internal
2402
+ */
2403
+ _importCookiesSync(serialized) {
2404
+ this.callSync(this._importCookies.bind(this, serialized));
2405
+ }
2406
+ /**
2407
+ * @internal No doc because this is the overload implementation
2408
+ */
2409
+ clone(newStore, callback) {
2410
+ if (typeof newStore === "function") {
2411
+ callback = newStore;
2412
+ newStore = void 0;
2413
+ }
2414
+ const promiseCallback = createPromiseCallback(callback);
2415
+ const cb = promiseCallback.callback;
2416
+ this.serialize((err, serialized) => {
2417
+ if (err) {
2418
+ return promiseCallback.reject(err);
2419
+ }
2420
+ return _CookieJar.deserialize(serialized ?? "", newStore, cb);
2421
+ });
2422
+ return promiseCallback.promise;
2423
+ }
2424
+ /**
2425
+ * @internal
2426
+ */
2427
+ _cloneSync(newStore) {
2428
+ const cloneFn = newStore && typeof newStore !== "function" ? this.clone.bind(this, newStore) : this.clone.bind(this);
2429
+ return this.callSync((callback) => {
2430
+ cloneFn(callback);
2431
+ });
2432
+ }
2433
+ /**
2434
+ * Produces a deep clone of this CookieJar. Modifications to the original do
2435
+ * not affect the clone, and vice versa.
2436
+ *
2437
+ * <strong>Note</strong>: Only works if both the configured Store and destination
2438
+ * Store are synchronous.
2439
+ *
2440
+ * @remarks
2441
+ * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.
2442
+ *
2443
+ * - Transferring between store types is supported so long as the source
2444
+ * implements `.getAllCookies()` and the destination implements `.putCookie()`.
2445
+ *
2446
+ * @param newStore - The target {@link Store} to clone cookies into.
2447
+ */
2448
+ cloneSync(newStore) {
2449
+ if (!newStore) {
2450
+ return this._cloneSync();
2451
+ }
2452
+ if (!newStore.synchronous) {
2453
+ throw new Error(
2454
+ "CookieJar clone destination store is not synchronous; use async API instead."
2455
+ );
2456
+ }
2457
+ return this._cloneSync(newStore);
2458
+ }
2459
+ /**
2460
+ * @internal No doc because this is the overload implementation
2461
+ */
2462
+ removeAllCookies(callback) {
2463
+ const promiseCallback = createPromiseCallback(callback);
2464
+ const cb = promiseCallback.callback;
2465
+ const store = this.store;
2466
+ if (typeof store.removeAllCookies === "function" && store.removeAllCookies !== Store.prototype.removeAllCookies) {
2467
+ store.removeAllCookies(cb);
2468
+ return promiseCallback.promise;
2469
+ }
2470
+ store.getAllCookies((err, cookies) => {
2471
+ if (err) {
2472
+ cb(err);
2473
+ return;
2474
+ }
2475
+ if (!cookies) {
2476
+ cookies = [];
2477
+ }
2478
+ if (cookies.length === 0) {
2479
+ cb(null, void 0);
2480
+ return;
2481
+ }
2482
+ let completedCount = 0;
2483
+ const removeErrors = [];
2484
+ const removeCookieCb = function removeCookieCb2(removeErr) {
2485
+ if (removeErr) {
2486
+ removeErrors.push(removeErr);
2487
+ }
2488
+ completedCount++;
2489
+ if (completedCount === cookies.length) {
2490
+ if (removeErrors[0]) cb(removeErrors[0]);
2491
+ else cb(null, void 0);
2492
+ return;
2493
+ }
2494
+ };
2495
+ cookies.forEach((cookie) => {
2496
+ store.removeCookie(
2497
+ cookie.domain,
2498
+ cookie.path,
2499
+ cookie.key,
2500
+ removeCookieCb
2501
+ );
2502
+ });
2503
+ });
2504
+ return promiseCallback.promise;
2505
+ }
2506
+ /**
2507
+ * Removes all cookies from the CookieJar.
2508
+ *
2509
+ * <strong>Note</strong>: Only works if the configured Store is also synchronous.
2510
+ *
2511
+ * @remarks
2512
+ * - This is a new backwards-compatible feature of tough-cookie version 2.5,
2513
+ * so not all Stores will implement it efficiently. For Stores that do not
2514
+ * implement `removeAllCookies`, the fallback is to call `removeCookie` after
2515
+ * `getAllCookies`.
2516
+ *
2517
+ * - If `getAllCookies` fails or isn't implemented in the Store, an error is returned.
2518
+ *
2519
+ * - If one or more of the `removeCookie` calls fail, only the first error is returned.
2520
+ */
2521
+ removeAllCookiesSync() {
2522
+ this.callSync((callback) => {
2523
+ this.removeAllCookies(callback);
2524
+ });
2525
+ }
2526
+ /**
2527
+ * @internal No doc because this is the overload implementation
2528
+ */
2529
+ static deserialize(strOrObj, store, callback) {
2530
+ if (typeof store === "function") {
2531
+ callback = store;
2532
+ store = void 0;
2533
+ }
2534
+ const promiseCallback = createPromiseCallback(callback);
2535
+ let serialized;
2536
+ if (typeof strOrObj === "string") {
2537
+ try {
2538
+ serialized = JSON.parse(strOrObj);
2539
+ } catch (e) {
2540
+ return promiseCallback.reject(e instanceof Error ? e : new Error());
2541
+ }
2542
+ } else {
2543
+ serialized = strOrObj;
2544
+ }
2545
+ const readSerializedProperty = (property) => {
2546
+ return serialized && typeof serialized === "object" && inOperator(property, serialized) ? serialized[property] : void 0;
2547
+ };
2548
+ const readSerializedBoolean = (property) => {
2549
+ const value = readSerializedProperty(property);
2550
+ return typeof value === "boolean" ? value : void 0;
2551
+ };
2552
+ const readSerializedString = (property) => {
2553
+ const value = readSerializedProperty(property);
2554
+ return typeof value === "string" ? value : void 0;
2555
+ };
2556
+ const jar = new _CookieJar(store, {
2557
+ rejectPublicSuffixes: readSerializedBoolean("rejectPublicSuffixes"),
2558
+ looseMode: readSerializedBoolean("enableLooseMode"),
2559
+ allowSpecialUseDomain: readSerializedBoolean("allowSpecialUseDomain"),
2560
+ prefixSecurity: getNormalizedPrefixSecurity(
2561
+ readSerializedString("prefixSecurity") ?? "silent"
2562
+ )
2563
+ });
2564
+ jar._importCookies(serialized, (err) => {
2565
+ if (err) {
2566
+ promiseCallback.callback(err);
2567
+ return;
2568
+ }
2569
+ promiseCallback.callback(null, jar);
2570
+ });
2571
+ return promiseCallback.promise;
2572
+ }
2573
+ /**
2574
+ * A new CookieJar is created and the serialized {@link Cookie} values are added to
2575
+ * the underlying store. Each {@link Cookie} is added via `store.putCookie(...)` in
2576
+ * the order in which they appear in the serialization.
2577
+ *
2578
+ * <strong>Note</strong>: Only works if the configured Store is also synchronous.
2579
+ *
2580
+ * @remarks
2581
+ * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.
2582
+ *
2583
+ * - As a convenience, if `strOrObj` is a string, it is passed through `JSON.parse` first.
2584
+ *
2585
+ * @param strOrObj - A JSON string or object representing the deserialized cookies.
2586
+ * @param store - The underlying store to persist the deserialized cookies into.
2587
+ */
2588
+ static deserializeSync(strOrObj, store) {
2589
+ const serialized = typeof strOrObj === "string" ? JSON.parse(strOrObj) : strOrObj;
2590
+ const readSerializedProperty = (property) => {
2591
+ return serialized && typeof serialized === "object" && inOperator(property, serialized) ? serialized[property] : void 0;
2592
+ };
2593
+ const readSerializedBoolean = (property) => {
2594
+ const value = readSerializedProperty(property);
2595
+ return typeof value === "boolean" ? value : void 0;
2596
+ };
2597
+ const readSerializedString = (property) => {
2598
+ const value = readSerializedProperty(property);
2599
+ return typeof value === "string" ? value : void 0;
2600
+ };
2601
+ const jar = new _CookieJar(store, {
2602
+ rejectPublicSuffixes: readSerializedBoolean("rejectPublicSuffixes"),
2603
+ looseMode: readSerializedBoolean("enableLooseMode"),
2604
+ allowSpecialUseDomain: readSerializedBoolean("allowSpecialUseDomain"),
2605
+ prefixSecurity: getNormalizedPrefixSecurity(
2606
+ readSerializedString("prefixSecurity") ?? "silent"
2607
+ )
2608
+ });
2609
+ if (!jar.store.synchronous) {
2610
+ throw new Error(
2611
+ "CookieJar store is not synchronous; use async API instead."
2612
+ );
2613
+ }
2614
+ jar._importCookiesSync(serialized);
2615
+ return jar;
2616
+ }
2617
+ /**
2618
+ * Alias of {@link CookieJar.deserializeSync}.
2619
+ *
2620
+ * @remarks
2621
+ * - When no {@link Store} is provided, a new {@link MemoryCookieStore} will be used.
2622
+ *
2623
+ * - As a convenience, if `strOrObj` is a string, it is passed through `JSON.parse` first.
2624
+ *
2625
+ * @param jsonString - A JSON string or object representing the deserialized cookies.
2626
+ * @param store - The underlying store to persist the deserialized cookies into.
2627
+ */
2628
+ static fromJSON(jsonString, store) {
2629
+ return _CookieJar.deserializeSync(jsonString, store);
2630
+ }
2631
+ };
2632
+ const cookieJar = new CookieJar();
2633
+ async function fetchWithCookies(url, init) {
2634
+ const cookieString = await cookieJar.getCookieString(url);
2635
+ const headers = new Headers(init?.headers);
2636
+ if (cookieString) {
2637
+ headers.set("Cookie", cookieString);
2638
+ }
2639
+ const response = await fetch(url, { ...init, headers });
2640
+ for (const cookie of response.headers.getSetCookie()) {
2641
+ await cookieJar.setCookie(cookie, url);
2642
+ }
2643
+ return response;
2644
+ }
2645
+ async function loadSessionToken(token, url) {
2646
+ await cookieJar.setCookie(`better-auth.session_token=${token}`, url);
2647
+ await cookieJar.setCookie(`logged_in=true`, url);
2648
+ }
2649
+ const BASE_URL = "https://app.coinfello.com/";
2650
+ const BASE_URL_V1 = BASE_URL + "api/v1";
77
2651
  async function getCoinFelloAddress() {
78
- const response = await fetch(`${BASE_URL}/coinfello-address`);
2652
+ const response = await fetchWithCookies(`${BASE_URL_V1}/automation/coinfello-address`);
79
2653
  if (!response.ok) {
80
2654
  const text = await response.text();
81
2655
  throw new Error(`Failed to get CoinFello address (${response.status}): ${text}`);
@@ -83,19 +2657,35 @@ async function getCoinFelloAddress() {
83
2657
  const data = await response.json();
84
2658
  return data.address;
85
2659
  }
2660
+ async function getCoinFelloAgents() {
2661
+ const response = await fetchWithCookies(`${BASE_URL_V1}/automation/coinfello-agents`);
2662
+ if (!response.ok) {
2663
+ const text = await response.text();
2664
+ console.error(`Error getting CoinFello agents ${text}`);
2665
+ throw new Error(`Failed to get CoinFello agents (${response.status}): ${text}`);
2666
+ }
2667
+ const data = await response.json();
2668
+ return data.availableAgents;
2669
+ }
86
2670
  async function sendConversation({
87
2671
  prompt,
88
- signedSubdelegation,
89
- smartAccountAddress
2672
+ signedSubdelegation
90
2673
  }) {
91
- const response = await fetch(`${BASE_URL}/conversation`, {
2674
+ const agents = await getCoinFelloAgents();
2675
+ const body = {
2676
+ inputMessage: prompt,
2677
+ stream: false
2678
+ };
2679
+ if (agents.length) {
2680
+ body.agentId = agents[0].id;
2681
+ }
2682
+ if (signedSubdelegation !== void 0) {
2683
+ body.signed_subdelegation = signedSubdelegation;
2684
+ }
2685
+ const response = await fetchWithCookies(`${BASE_URL}/api/conversation`, {
92
2686
  method: "POST",
93
2687
  headers: { "Content-Type": "application/json" },
94
- body: JSON.stringify({
95
- prompt,
96
- signed_subdelegation: signedSubdelegation,
97
- smart_account_address: smartAccountAddress
98
- })
2688
+ body: JSON.stringify(body)
99
2689
  });
100
2690
  if (!response.ok) {
101
2691
  const text = await response.text();
@@ -104,7 +2694,9 @@ async function sendConversation({
104
2694
  return response.json();
105
2695
  }
106
2696
  async function getTransactionStatus(txnId) {
107
- const response = await fetch(`${BASE_URL}/transaction_status?txn_id=${encodeURIComponent(txnId)}`);
2697
+ const response = await fetchWithCookies(
2698
+ `${BASE_URL_V1}/transaction_status?txn_id=${encodeURIComponent(txnId)}`
2699
+ );
108
2700
  if (!response.ok) {
109
2701
  const text = await response.text();
110
2702
  throw new Error(`Transaction status request failed (${response.status}): ${text}`);
@@ -905,7 +3497,7 @@ async function signInWithAgent(baseUrl, config) {
905
3497
  const url = new URL(baseUrl);
906
3498
  const domain = url.host;
907
3499
  console.log("fetching nonce...");
908
- const nonceResponse = await fetch(`${baseUrl}/siwe/nonce`, {
3500
+ const nonceResponse = await fetchWithCookies(`${baseUrl}/siwe/nonce`, {
909
3501
  method: "POST",
910
3502
  headers: { "Content-Type": "application/json" },
911
3503
  body: JSON.stringify({ walletAddress, chainId })
@@ -931,7 +3523,7 @@ async function signInWithAgent(baseUrl, config) {
931
3523
  }
932
3524
  const signature = await smartAccount.signMessage({ message });
933
3525
  console.log("signing in with siwe message...");
934
- const verifyResponse = await fetch(`${baseUrl}/siwe/verify`, {
3526
+ const verifyResponse = await fetchWithCookies(`${baseUrl}/siwe/verify`, {
935
3527
  method: "POST",
936
3528
  headers: { "Content-Type": "application/json" },
937
3529
  body: JSON.stringify({ message, signature, walletAddress, chainId })
@@ -949,6 +3541,67 @@ async function signInWithAgent(baseUrl, config) {
949
3541
  await saveConfig(config);
950
3542
  return result;
951
3543
  }
3544
+ function parseScope(raw) {
3545
+ switch (raw.type) {
3546
+ case "erc20TransferAmount":
3547
+ return {
3548
+ type: "erc20TransferAmount",
3549
+ tokenAddress: raw.tokenAddress,
3550
+ maxAmount: BigInt(raw.maxAmount)
3551
+ };
3552
+ case "erc20PeriodTransfer":
3553
+ return {
3554
+ type: "erc20PeriodTransfer",
3555
+ tokenAddress: raw.tokenAddress,
3556
+ periodAmount: BigInt(raw.periodAmount),
3557
+ periodDuration: raw.periodDuration,
3558
+ startDate: raw.startDate
3559
+ };
3560
+ case "erc20Streaming":
3561
+ return {
3562
+ type: "erc20Streaming",
3563
+ tokenAddress: raw.tokenAddress,
3564
+ initialAmount: BigInt(raw.initialAmount),
3565
+ maxAmount: BigInt(raw.maxAmount),
3566
+ amountPerSecond: BigInt(raw.amountPerSecond),
3567
+ startTime: raw.startTime
3568
+ };
3569
+ case "nativeTokenTransferAmount":
3570
+ return {
3571
+ type: "nativeTokenTransferAmount",
3572
+ maxAmount: BigInt(raw.maxAmount)
3573
+ };
3574
+ case "nativeTokenPeriodTransfer":
3575
+ return {
3576
+ type: "nativeTokenPeriodTransfer",
3577
+ periodAmount: BigInt(raw.periodAmount),
3578
+ periodDuration: raw.periodDuration,
3579
+ startDate: raw.startDate
3580
+ };
3581
+ case "nativeTokenStreaming":
3582
+ return {
3583
+ type: "nativeTokenStreaming",
3584
+ initialAmount: BigInt(raw.initialAmount),
3585
+ maxAmount: BigInt(raw.maxAmount),
3586
+ amountPerSecond: BigInt(raw.amountPerSecond),
3587
+ startTime: raw.startTime
3588
+ };
3589
+ case "erc721Transfer":
3590
+ return {
3591
+ type: "erc721Transfer",
3592
+ tokenAddress: raw.tokenAddress,
3593
+ tokenId: BigInt(raw.tokenId)
3594
+ };
3595
+ case "functionCall":
3596
+ return {
3597
+ type: "functionCall",
3598
+ targets: (raw.targets ?? []).map((t) => t),
3599
+ selectors: (raw.selectors ?? []).map((s) => s)
3600
+ };
3601
+ default:
3602
+ throw new Error(`Unsupported delegation scope type: "${raw.type}"`);
3603
+ }
3604
+ }
952
3605
  const program = new Command();
953
3606
  program.name("openclaw").description("CoinFello CLI - MetaMask Smart Account interactions").version("1.0.0");
954
3607
  program.command("create_account").description("Create a MetaMask smart account and save its address to local config").argument("<chain>", "Chain name (e.g. sepolia, mainnet, polygon, arbitrum)").action(async (chain) => {
@@ -1012,10 +3665,7 @@ program.command("set_delegation").description("Store a signed delegation (JSON)
1012
3665
  process.exit(1);
1013
3666
  }
1014
3667
  });
1015
- program.command("send_prompt").description("Send a prompt to CoinFello, creating and signing a subdelegation locally").argument("<prompt>", "The prompt to send").requiredOption(
1016
- "--token-address <address>",
1017
- "ERC-20 token contract address for the subdelegation scope"
1018
- ).requiredOption("--amount <amount>", "Maximum token amount (human-readable, e.g. '5')").option("--decimals <decimals>", "Token decimals for parsing max-amount", "18").option("--use-redelegation", "Create a redelegation from a stored parent delegation").action(
3668
+ program.command("send_prompt").description("Send a prompt to CoinFello, creating a delegation if requested by the server").argument("<prompt>", "The prompt to send").option("--use-redelegation", "Create a redelegation from a stored parent delegation").action(
1019
3669
  async (prompt, opts) => {
1020
3670
  try {
1021
3671
  const config = await loadConfig();
@@ -1037,33 +3687,60 @@ program.command("send_prompt").description("Send a prompt to CoinFello, creating
1037
3687
  );
1038
3688
  process.exit(1);
1039
3689
  }
3690
+ if (config.session_token) {
3691
+ await loadSessionToken(config.session_token, BASE_URL_V1);
3692
+ }
3693
+ console.log("Sending prompt...");
3694
+ const initialResponse = await sendConversation({
3695
+ prompt
3696
+ });
3697
+ if (!initialResponse.toolCalls?.length && !initialResponse.txn_id) {
3698
+ console.log(initialResponse.responseText ?? "");
3699
+ return;
3700
+ }
3701
+ if (initialResponse.txn_id && !initialResponse.toolCalls?.length) {
3702
+ console.log("Transaction submitted successfully.");
3703
+ console.log(`Transaction ID: ${initialResponse.txn_id}`);
3704
+ return;
3705
+ }
3706
+ const delegationToolCall = initialResponse.toolCalls?.find(
3707
+ (tc) => tc.name === "ask_for_delegation"
3708
+ );
3709
+ if (!delegationToolCall) {
3710
+ console.error("Error: No delegation request received from the server.");
3711
+ console.log("Response:", JSON.stringify(initialResponse, null, 2));
3712
+ process.exit(1);
3713
+ }
3714
+ const args = JSON.parse(delegationToolCall.arguments);
3715
+ console.log(`Delegation requested: scope=${args.scope.type}, chainId=${args.chainId}`);
1040
3716
  console.log("Fetching CoinFello delegate address...");
1041
3717
  const delegateAddress = await getCoinFelloAddress();
1042
3718
  console.log("Loading smart account...");
1043
- const smartAccount = await getSmartAccount(config.private_key, config.chain);
1044
- console.log("Parsing amount...");
1045
- const maxAmount = parseUnits(opts.amount, Number(opts.decimals));
3719
+ const smartAccount = await getSmartAccount(config.private_key, args.chainId);
3720
+ const scope = parseScope(args.scope);
1046
3721
  console.log("Creating subdelegation...");
1047
3722
  const subdelegation = createSubdelegation({
1048
3723
  smartAccount,
1049
3724
  delegateAddress,
1050
3725
  parentDelegation: opts.useRedelegation ? config.delegation : void 0,
1051
- tokenAddress: opts.tokenAddress,
1052
- maxAmount
3726
+ scope
1053
3727
  });
1054
3728
  console.log("Signing subdelegation...");
1055
3729
  const signature = await smartAccount.signDelegation({
1056
3730
  delegation: subdelegation
1057
3731
  });
1058
3732
  const signedSubdelegation = { ...subdelegation, signature };
1059
- console.log("Sending to conversation endpoint...");
1060
- const result = await sendConversation({
3733
+ console.log("Sending signed delegation...");
3734
+ const finalResponse = await sendConversation({
1061
3735
  prompt,
1062
- signedSubdelegation,
1063
- smartAccountAddress: config.smart_account_address
3736
+ signedSubdelegation
1064
3737
  });
1065
- console.log("Transaction submitted successfully.");
1066
- console.log(`Transaction ID: ${result.txn_id}`);
3738
+ if (finalResponse.txn_id) {
3739
+ console.log("Transaction submitted successfully.");
3740
+ console.log(`Transaction ID: ${finalResponse.txn_id}`);
3741
+ } else {
3742
+ console.log("Response:", JSON.stringify(finalResponse, null, 2));
3743
+ }
1067
3744
  } catch (err) {
1068
3745
  console.error(`Failed to send prompt: ${err.message}`);
1069
3746
  process.exit(1);