@leofcoin/peernet 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/exports/browser/client-13d9b3de.js +645 -0
  2. package/exports/browser/{index-019272d8.js → index-19803d3b.js} +38 -923
  3. package/exports/browser/{index-3a25de4d.js → index-73b8d9b9.js} +3 -1
  4. package/exports/browser/{messages-4850566c.js → messages-bb950ed7.js} +51 -130
  5. package/exports/browser/peernet-24ed8563.js +2978 -0
  6. package/exports/browser/peernet.js +1 -1
  7. package/exports/{messages-796c4d5c.js → messages-d8852e16.js} +50 -129
  8. package/exports/peernet.js +1 -1
  9. package/package.json +2 -2
  10. package/src/messages/chat.js +0 -3
  11. package/src/messages/data-response.js +0 -3
  12. package/src/messages/data.js +0 -3
  13. package/src/messages/dht-response.js +0 -3
  14. package/src/messages/dht.js +0 -6
  15. package/src/messages/file-link.js +18 -0
  16. package/src/messages/file.js +0 -3
  17. package/src/messages/peer-response.js +0 -3
  18. package/src/messages/peer.js +0 -4
  19. package/src/messages/peernet.js +0 -3
  20. package/src/messages/ps.js +0 -4
  21. package/src/messages/request.js +0 -3
  22. package/src/messages/response.js +0 -3
  23. package/src/proto/chat-message.proto.js +6 -7
  24. package/src/proto/data-response.proto.js +3 -6
  25. package/src/proto/data.proto.js +3 -6
  26. package/src/proto/dht-response.proto.js +3 -6
  27. package/src/proto/dht.proto.js +3 -6
  28. package/src/proto/file-link.proto.js +5 -0
  29. package/src/proto/file.proto.js +4 -13
  30. package/src/proto/peer-response.proto.js +2 -5
  31. package/src/proto/peer.proto.js +2 -5
  32. package/src/proto/peernet.proto.js +7 -9
  33. package/src/proto/ps.proto.js +4 -6
  34. package/src/proto/request.proto.js +2 -5
  35. package/src/proto/response.proto.js +2 -5
  36. package/test.js +2 -2
  37. package/test2.js +1 -1
  38. package/exports/browser/client-29660363.js +0 -690
  39. package/exports/browser/peernet-379769d5.js +0 -2896
@@ -1,188 +1,5 @@
1
- // base-x encoding / decoding
2
- // Copyright (c) 2018 base-x contributors
3
- // Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)
4
- // Distributed under the MIT software license, see the accompanying
5
- // file LICENSE or http://www.opensource.org/licenses/mit-license.php.
6
- const base$1 = (ALPHABET) => {
7
- if (ALPHABET.length >= 255) {
8
- throw new TypeError('Alphabet too long');
9
- }
10
- const BASE_MAP = new Uint8Array(256);
11
- for (let j = 0; j < BASE_MAP.length; j++) {
12
- BASE_MAP[j] = 255;
13
- }
14
- for (let i = 0; i < ALPHABET.length; i++) {
15
- const x = ALPHABET.charAt(i);
16
- const xc = x.charCodeAt(0);
17
- if (BASE_MAP[xc] !== 255) {
18
- throw new TypeError(x + ' is ambiguous');
19
- }
20
- BASE_MAP[xc] = i;
21
- }
22
- const BASE = ALPHABET.length;
23
- const LEADER = ALPHABET.charAt(0);
24
- const FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up
25
- const iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up
26
- const encode = (source) => {
27
- if (source instanceof Uint8Array) ;
28
- else if (ArrayBuffer.isView(source)) {
29
- source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
30
- }
31
- else if (Array.isArray(source)) {
32
- source = Uint8Array.from(source);
33
- }
34
- if (!(source instanceof Uint8Array)) {
35
- throw new TypeError('Expected Uint8Array');
36
- }
37
- if (source.length === 0) {
38
- return '';
39
- }
40
- // Skip & count leading zeroes.
41
- let zeroes = 0;
42
- let length = 0;
43
- let pbegin = 0;
44
- const pend = source.length;
45
- while (pbegin !== pend && source[pbegin] === 0) {
46
- pbegin++;
47
- zeroes++;
48
- }
49
- // Allocate enough space in big-endian base58 representation.
50
- const size = ((pend - pbegin) * iFACTOR + 1) >>> 0;
51
- const b58 = new Uint8Array(size);
52
- // Process the bytes.
53
- while (pbegin !== pend) {
54
- let carry = source[pbegin];
55
- // Apply "b58 = b58 * 256 + ch".
56
- let i = 0;
57
- for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {
58
- carry += (256 * b58[it1]) >>> 0;
59
- b58[it1] = (carry % BASE) >>> 0;
60
- carry = (carry / BASE) >>> 0;
61
- }
62
- if (carry !== 0) {
63
- throw new Error('Non-zero carry');
64
- }
65
- length = i;
66
- pbegin++;
67
- }
68
- // Skip leading zeroes in base58 result.
69
- let it2 = size - length;
70
- while (it2 !== size && b58[it2] === 0) {
71
- it2++;
72
- }
73
- // Translate the result into a string.
74
- let str = LEADER.repeat(zeroes);
75
- for (; it2 < size; ++it2) {
76
- str += ALPHABET.charAt(b58[it2]);
77
- }
78
- return str;
79
- };
80
- const decodeUnsafe = (source) => {
81
- if (typeof source !== 'string') {
82
- throw new TypeError('Expected String');
83
- }
84
- if (source.length === 0) {
85
- return new Uint8Array();
86
- }
87
- let psz = 0;
88
- // Skip and count leading '1's.
89
- let zeroes = 0;
90
- let length = 0;
91
- while (source[psz] === LEADER) {
92
- zeroes++;
93
- psz++;
94
- }
95
- // Allocate enough space in big-endian base256 representation.
96
- const size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.
97
- let b256 = new Uint8Array(size);
98
- // Process the characters.
99
- while (source[psz]) {
100
- // Decode character
101
- let carry = BASE_MAP[source.charCodeAt(psz)];
102
- // Invalid character
103
- if (carry === 255) {
104
- return;
105
- }
106
- let i = 0;
107
- for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {
108
- carry += (BASE * b256[it3]) >>> 0;
109
- b256[it3] = (carry % 256) >>> 0;
110
- carry = (carry / 256) >>> 0;
111
- }
112
- if (carry !== 0) {
113
- throw new Error('Non-zero carry');
114
- }
115
- length = i;
116
- psz++;
117
- }
118
- // Skip leading zeroes in b256.
119
- let it4 = size - length;
120
- while (it4 !== size && b256[it4] === 0) {
121
- it4++;
122
- }
123
- let vch = new Uint8Array(zeroes + (size - it4));
124
- let j = zeroes;
125
- while (it4 !== size) {
126
- vch[j++] = b256[it4++];
127
- }
128
- return vch;
129
- };
130
- const decode = (string) => {
131
- const buffer = decodeUnsafe(string);
132
- if (buffer) {
133
- return buffer;
134
- }
135
- throw new Error('Non-base' + BASE + ' character');
136
- };
137
- return {
138
- encode,
139
- decodeUnsafe,
140
- decode
141
- };
142
- };
143
-
144
- var ALPHABET$1 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
145
- var ALPHABET_HEX$1 = '0123456789ABCDEFGHJKLMNPQRSTUVabcdefghijklmnopqrstuv';
146
- var base58 = base$1(ALPHABET$1);
147
- var base58Hex = base$1(ALPHABET_HEX$1);
148
- var encode$4 = base58.encode;
149
- var decode$5 = base58.decode;
150
- var encodeHex$2 = base58Hex.encode;
151
- var decodeHex$2 = base58Hex.decode;
152
- var isBase58 = function (string) {
153
- try {
154
- decode$5(string);
155
- return true;
156
- }
157
- catch (e) {
158
- return false;
159
- }
160
- };
161
- var isBase58Hex = function (string) {
162
- try {
163
- decodeHex$2(string);
164
- return true;
165
- }
166
- catch (e) {
167
- return false;
168
- }
169
- };
170
- var whatType = function (string) {
171
- try {
172
- decode$5(string);
173
- return 'base58';
174
- }
175
- catch (e) {
176
- try {
177
- decodeHex$2(string);
178
- return 'base58Hex';
179
- }
180
- catch (_a) {
181
- return;
182
- }
183
- }
184
- };
185
- var base58$1 = { encode: encode$4, decode: decode$5, isBase58: isBase58, isBase58Hex: isBase58Hex, encodeHex: encodeHex$2, decodeHex: decodeHex$2, whatType: whatType };
1
+ import { b as base58$1, i as index$1, a as index$2, c as index$3, d as index$4, e as createRIPEMD160, f as createHMAC, g as createSHA512, h as createKeccak } from './peernet-24ed8563.js';
2
+ import './value-40634404.js';
186
3
 
187
4
  const randombytes = strength => crypto.getRandomValues(new Uint8Array(strength));
188
5
 
@@ -325,7 +142,7 @@ const concatAndDoubleHash = async (input) => {
325
142
  return new Uint8Array(await createDoubleHash(typedArrayConcat(input), 'SHA-256'));
326
143
  };
327
144
 
328
- const encode$3 = async (source, prefix = new TextEncoder().encode('00'), hex) => {
145
+ const encode$1 = async (source, prefix = new TextEncoder().encode('00'), hex) => {
329
146
  if (!(source instanceof Uint8Array) || !(prefix instanceof Uint8Array)) {
330
147
  throw new TypeError('Expected Uint8Array');
331
148
  }
@@ -342,7 +159,7 @@ const encode$3 = async (source, prefix = new TextEncoder().encode('00'), hex) =>
342
159
  return base58$1.encodeHex(uint8Array);
343
160
  return base58$1.encode(uint8Array);
344
161
  };
345
- const decode$4 = async (string, hex) => {
162
+ const decode$2 = async (string, hex) => {
346
163
  let uint8Array = hex ? base58$1.decodeHex(string) : base58$1.decode(string);
347
164
  const prefix = uint8Array.subarray(0, 2);
348
165
  const source = uint8Array.subarray(2, -4);
@@ -362,143 +179,21 @@ const decode$4 = async (string, hex) => {
362
179
  };
363
180
  const isBase58check = (string, hex) => {
364
181
  try {
365
- hex ? decode$4(string, true) : decode$4(string);
182
+ hex ? decode$2(string, true) : decode$2(string);
366
183
  return true;
367
184
  }
368
185
  catch (e) {
369
186
  return false;
370
187
  }
371
188
  };
372
- const encodeHex$1 = (uint8Array, prefix = new TextEncoder().encode('00')) => encode$3(uint8Array, prefix, true);
373
- const decodeHex$1 = (string) => decode$4(string, true);
189
+ const encodeHex = (uint8Array, prefix = new TextEncoder().encode('00')) => encode$1(uint8Array, prefix, true);
190
+ const decodeHex = (string) => decode$2(string, true);
374
191
  const isBase58checkHex = (string) => isBase58check(string, true);
375
- var base58check = { encode: encode$3, decode: decode$4, encodeHex: encodeHex$1, decodeHex: decodeHex$1, isBase58check, isBase58checkHex };
376
-
377
- const MSB$1 = 0x80;
378
- const REST$1 = 0x7F;
379
- const MSBALL = ~REST$1;
380
- const INT = Math.pow(2, 31);
381
- const encode$2 = (num, out, offset) => {
382
- if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {
383
- encode$2.bytes = 0;
384
- throw new RangeError('Could not encode varint');
385
- }
386
- out = out || [];
387
- offset = offset || 0;
388
- const oldOffset = offset;
389
- while (num >= INT) {
390
- out[offset++] = (num & 0xFF) | MSB$1;
391
- num /= 128;
392
- }
393
- while (num & MSBALL) {
394
- out[offset++] = (num & 0xFF) | MSB$1;
395
- num >>>= 7;
396
- }
397
- out[offset] = num | 0;
398
- encode$2.bytes = offset - oldOffset + 1;
399
- return out;
400
- };
401
-
402
- const MSB = 0x80;
403
- const REST = 0x7F;
404
- const decode$3 = (buf, offset) => {
405
- offset = offset || 0;
406
- const l = buf.length;
407
- let counter = offset;
408
- let result = 0;
409
- let shift = 0;
410
- let b;
411
- do {
412
- if (counter >= l || shift > 49) {
413
- decode$3.bytes = 0;
414
- throw new RangeError('Could not decode varint');
415
- }
416
- b = buf[counter++];
417
- result += shift < 28
418
- ? (b & REST) << shift
419
- : (b & REST) * Math.pow(2, shift);
420
- shift += 7;
421
- } while (b >= MSB);
422
- decode$3.bytes = counter - offset;
423
- return result;
424
- };
425
-
426
- const N1 = Math.pow(2, 7);
427
- const N2 = Math.pow(2, 14);
428
- const N3 = Math.pow(2, 21);
429
- const N4 = Math.pow(2, 28);
430
- const N5 = Math.pow(2, 35);
431
- const N6 = Math.pow(2, 42);
432
- const N7 = Math.pow(2, 49);
433
- const N8 = Math.pow(2, 56);
434
- const N9 = Math.pow(2, 63);
435
- var encodingLength = (value) => (value < N1 ? 1
436
- : value < N2 ? 2
437
- : value < N3 ? 3
438
- : value < N4 ? 4
439
- : value < N5 ? 5
440
- : value < N6 ? 6
441
- : value < N7 ? 7
442
- : value < N8 ? 8
443
- : value < N9 ? 9
444
- : 10);
445
-
446
- var index$2 = {
447
- encode: encode$2,
448
- decode: decode$3,
449
- encodingLength
450
- };
451
-
452
- var typedArraySmartConcat = (input, prefix) => {
453
-
454
- const encodedArray = [];
455
-
456
- const length = input.reduce((total, current) => {
457
- const encoded = index$2.encode(current.length);
458
- encodedArray.push(encoded);
459
- total += current.length + encoded.length;
460
- return total
461
- }, 0);
462
-
463
- const typedArray = new Uint8Array(prefix ? prefix.length + length : length);
464
-
465
- let currentIndex = 0;
466
- let index = 0;
467
- if (prefix) {
468
- typedArray.set(prefix);
469
- currentIndex += prefix.length;
470
- }
471
- for (const source of input) {
472
- typedArray.set(encodedArray[index], currentIndex);
473
- currentIndex += encodedArray[index].length;
474
- typedArray.set(source, currentIndex);
475
- currentIndex += source.length;
476
- index += 1;
477
- }
478
-
479
- return typedArray
480
- };
192
+ var base58check = { encode: encode$1, decode: decode$2, encodeHex, decodeHex, isBase58check, isBase58checkHex };
481
193
 
482
- var typedArraySmartDeconcat = (typedArray, prefix) => {
483
- const set = [];
484
- if (prefix) typedArray = typedArray.subarray(prefix.length);
485
- const varintAndSub = typedArray => {
486
- const length = index$2.decode(typedArray);
487
- // remove length
488
- typedArray = typedArray.subarray(index$2.decode.bytes);
489
- // push value
490
- set.push(typedArray.subarray(0, length));
491
- // remove value
492
- typedArray = typedArray.subarray(length);
493
- if (typedArray.length !== 0) return varintAndSub(typedArray)
494
- return set
495
- };
496
- return varintAndSub(typedArray)
497
- };
498
-
499
- const decode$2 = (multiWif, expectedVersion, expectedCodec) => {
194
+ const decode$1 = (multiWif, expectedVersion, expectedCodec) => {
500
195
  const decoded = base58$1.decode(multiWif);
501
- let [version, codec, privateKey] = typedArraySmartDeconcat(decoded);
196
+ let [version, codec, privateKey] = index$2(decoded);
502
197
  version = Number(new TextDecoder().decode(version));
503
198
  codec = Number(new TextDecoder().decode(codec));
504
199
  if (expectedVersion && version !== expectedVersion)
@@ -507,18 +202,18 @@ const decode$2 = (multiWif, expectedVersion, expectedCodec) => {
507
202
  throw new Error(`invalid codec: expected ${expectedCodec} but got ${codec}`);
508
203
  return { version, codec, privateKey };
509
204
  };
510
- var index$1 = {
205
+ var index = {
511
206
  encode: (version, codec, privateKey) => {
512
- return base58$1.encode(typedArraySmartConcat([
207
+ return base58$1.encode(index$1([
513
208
  new TextEncoder().encode(version.toString()),
514
209
  new TextEncoder().encode(codec.toString()),
515
210
  privateKey
516
211
  ]));
517
212
  },
518
- decode: decode$2,
213
+ decode: decode$1,
519
214
  isMultiWif: (multiWif) => {
520
215
  try {
521
- const { version, codec, privateKey } = decode$2(multiWif);
216
+ const { version, codec, privateKey } = decode$1(multiWif);
522
217
  if (version === undefined)
523
218
  return false;
524
219
  if (codec === undefined)
@@ -968,8 +663,8 @@ var require$$0$1 = {
968
663
  var _nodeResolve_empty = {};
969
664
 
970
665
  var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({
971
- __proto__: null,
972
- default: _nodeResolve_empty
666
+ __proto__: null,
667
+ default: _nodeResolve_empty
973
668
  });
974
669
 
975
670
  var require$$0 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1);
@@ -10153,555 +9848,7 @@ var elliptic$1 = {
10153
9848
 
10154
9849
  var elliptic = lib(elliptic$1);
10155
9850
 
10156
- /*!
10157
- * hash-wasm (https://www.npmjs.com/package/hash-wasm)
10158
- * (c) Dani Biro
10159
- * @license MIT
10160
- */
10161
-
10162
- /*! *****************************************************************************
10163
- Copyright (c) Microsoft Corporation.
10164
-
10165
- Permission to use, copy, modify, and/or distribute this software for any
10166
- purpose with or without fee is hereby granted.
10167
-
10168
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10169
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10170
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
10171
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
10172
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
10173
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
10174
- PERFORMANCE OF THIS SOFTWARE.
10175
- ***************************************************************************** */
10176
-
10177
- function __awaiter(thisArg, _arguments, P, generator) {
10178
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10179
- return new (P || (P = Promise))(function (resolve, reject) {
10180
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10181
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10182
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10183
- step((generator = generator.apply(thisArg, _arguments || [])).next());
10184
- });
10185
- }
10186
-
10187
- class Mutex {
10188
- constructor() {
10189
- this.mutex = Promise.resolve();
10190
- }
10191
- lock() {
10192
- let begin = () => { };
10193
- this.mutex = this.mutex.then(() => new Promise(begin));
10194
- return new Promise((res) => {
10195
- begin = res;
10196
- });
10197
- }
10198
- dispatch(fn) {
10199
- return __awaiter(this, void 0, void 0, function* () {
10200
- const unlock = yield this.lock();
10201
- try {
10202
- return yield Promise.resolve(fn());
10203
- }
10204
- finally {
10205
- unlock();
10206
- }
10207
- });
10208
- }
10209
- }
10210
-
10211
- /* eslint-disable import/prefer-default-export */
10212
- /* eslint-disable no-bitwise */
10213
- var _a;
10214
- function getGlobal() {
10215
- if (typeof globalThis !== 'undefined')
10216
- return globalThis;
10217
- // eslint-disable-next-line no-restricted-globals
10218
- if (typeof self !== 'undefined')
10219
- return self;
10220
- if (typeof window !== 'undefined')
10221
- return window;
10222
- return global;
10223
- }
10224
- const globalObject = getGlobal();
10225
- const nodeBuffer = (_a = globalObject.Buffer) !== null && _a !== void 0 ? _a : null;
10226
- const textEncoder = globalObject.TextEncoder ? new globalObject.TextEncoder() : null;
10227
- function hexCharCodesToInt(a, b) {
10228
- return (((a & 0xF) + ((a >> 6) | ((a >> 3) & 0x8))) << 4) | ((b & 0xF) + ((b >> 6) | ((b >> 3) & 0x8)));
10229
- }
10230
- function writeHexToUInt8(buf, str) {
10231
- const size = str.length >> 1;
10232
- for (let i = 0; i < size; i++) {
10233
- const index = i << 1;
10234
- buf[i] = hexCharCodesToInt(str.charCodeAt(index), str.charCodeAt(index + 1));
10235
- }
10236
- }
10237
- function hexStringEqualsUInt8(str, buf) {
10238
- if (str.length !== buf.length * 2) {
10239
- return false;
10240
- }
10241
- for (let i = 0; i < buf.length; i++) {
10242
- const strIndex = i << 1;
10243
- if (buf[i] !== hexCharCodesToInt(str.charCodeAt(strIndex), str.charCodeAt(strIndex + 1))) {
10244
- return false;
10245
- }
10246
- }
10247
- return true;
10248
- }
10249
- const alpha = 'a'.charCodeAt(0) - 10;
10250
- const digit = '0'.charCodeAt(0);
10251
- function getDigestHex(tmpBuffer, input, hashLength) {
10252
- let p = 0;
10253
- /* eslint-disable no-plusplus */
10254
- for (let i = 0; i < hashLength; i++) {
10255
- let nibble = input[i] >>> 4;
10256
- tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;
10257
- nibble = input[i] & 0xF;
10258
- tmpBuffer[p++] = nibble > 9 ? nibble + alpha : nibble + digit;
10259
- }
10260
- /* eslint-enable no-plusplus */
10261
- return String.fromCharCode.apply(null, tmpBuffer);
10262
- }
10263
- const getUInt8Buffer = nodeBuffer !== null
10264
- ? (data) => {
10265
- if (typeof data === 'string') {
10266
- const buf = nodeBuffer.from(data, 'utf8');
10267
- return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);
10268
- }
10269
- if (nodeBuffer.isBuffer(data)) {
10270
- return new Uint8Array(data.buffer, data.byteOffset, data.length);
10271
- }
10272
- if (ArrayBuffer.isView(data)) {
10273
- return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
10274
- }
10275
- throw new Error('Invalid data type!');
10276
- }
10277
- : (data) => {
10278
- if (typeof data === 'string') {
10279
- return textEncoder.encode(data);
10280
- }
10281
- if (ArrayBuffer.isView(data)) {
10282
- return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
10283
- }
10284
- throw new Error('Invalid data type!');
10285
- };
10286
- const base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
10287
- const base64Lookup = new Uint8Array(256);
10288
- for (let i = 0; i < base64Chars.length; i++) {
10289
- base64Lookup[base64Chars.charCodeAt(i)] = i;
10290
- }
10291
- function getDecodeBase64Length(data) {
10292
- let bufferLength = Math.floor(data.length * 0.75);
10293
- const len = data.length;
10294
- if (data[len - 1] === '=') {
10295
- bufferLength -= 1;
10296
- if (data[len - 2] === '=') {
10297
- bufferLength -= 1;
10298
- }
10299
- }
10300
- return bufferLength;
10301
- }
10302
- function decodeBase64(data) {
10303
- const bufferLength = getDecodeBase64Length(data);
10304
- const len = data.length;
10305
- const bytes = new Uint8Array(bufferLength);
10306
- let p = 0;
10307
- for (let i = 0; i < len; i += 4) {
10308
- const encoded1 = base64Lookup[data.charCodeAt(i)];
10309
- const encoded2 = base64Lookup[data.charCodeAt(i + 1)];
10310
- const encoded3 = base64Lookup[data.charCodeAt(i + 2)];
10311
- const encoded4 = base64Lookup[data.charCodeAt(i + 3)];
10312
- bytes[p] = (encoded1 << 2) | (encoded2 >> 4);
10313
- p += 1;
10314
- bytes[p] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
10315
- p += 1;
10316
- bytes[p] = ((encoded3 & 3) << 6) | (encoded4 & 63);
10317
- p += 1;
10318
- }
10319
- return bytes;
10320
- }
10321
-
10322
- const MAX_HEAP = 16 * 1024;
10323
- const WASM_FUNC_HASH_LENGTH = 4;
10324
- const wasmMutex = new Mutex();
10325
- const wasmModuleCache = new Map();
10326
- function WASMInterface(binary, hashLength) {
10327
- return __awaiter(this, void 0, void 0, function* () {
10328
- let wasmInstance = null;
10329
- let memoryView = null;
10330
- let initialized = false;
10331
- if (typeof WebAssembly === 'undefined') {
10332
- throw new Error('WebAssembly is not supported in this environment!');
10333
- }
10334
- const writeMemory = (data, offset = 0) => {
10335
- memoryView.set(data, offset);
10336
- };
10337
- const getMemory = () => memoryView;
10338
- const getExports = () => wasmInstance.exports;
10339
- const setMemorySize = (totalSize) => {
10340
- wasmInstance.exports.Hash_SetMemorySize(totalSize);
10341
- const arrayOffset = wasmInstance.exports.Hash_GetBuffer();
10342
- const memoryBuffer = wasmInstance.exports.memory.buffer;
10343
- memoryView = new Uint8Array(memoryBuffer, arrayOffset, totalSize);
10344
- };
10345
- const getStateSize = () => {
10346
- const view = new DataView(wasmInstance.exports.memory.buffer);
10347
- const stateSize = view.getUint32(wasmInstance.exports.STATE_SIZE, true);
10348
- return stateSize;
10349
- };
10350
- const loadWASMPromise = wasmMutex.dispatch(() => __awaiter(this, void 0, void 0, function* () {
10351
- if (!wasmModuleCache.has(binary.name)) {
10352
- const asm = decodeBase64(binary.data);
10353
- const promise = WebAssembly.compile(asm);
10354
- wasmModuleCache.set(binary.name, promise);
10355
- }
10356
- const module = yield wasmModuleCache.get(binary.name);
10357
- wasmInstance = yield WebAssembly.instantiate(module, {
10358
- // env: {
10359
- // emscripten_memcpy_big: (dest, src, num) => {
10360
- // const memoryBuffer = wasmInstance.exports.memory.buffer;
10361
- // const memView = new Uint8Array(memoryBuffer, 0);
10362
- // memView.set(memView.subarray(src, src + num), dest);
10363
- // },
10364
- // print_memory: (offset, len) => {
10365
- // const memoryBuffer = wasmInstance.exports.memory.buffer;
10366
- // const memView = new Uint8Array(memoryBuffer, 0);
10367
- // console.log('print_int32', memView.subarray(offset, offset + len));
10368
- // },
10369
- // },
10370
- });
10371
- // wasmInstance.exports._start();
10372
- }));
10373
- const setupInterface = () => __awaiter(this, void 0, void 0, function* () {
10374
- if (!wasmInstance) {
10375
- yield loadWASMPromise;
10376
- }
10377
- const arrayOffset = wasmInstance.exports.Hash_GetBuffer();
10378
- const memoryBuffer = wasmInstance.exports.memory.buffer;
10379
- memoryView = new Uint8Array(memoryBuffer, arrayOffset, MAX_HEAP);
10380
- });
10381
- const init = (bits = null) => {
10382
- initialized = true;
10383
- wasmInstance.exports.Hash_Init(bits);
10384
- };
10385
- const updateUInt8Array = (data) => {
10386
- let read = 0;
10387
- while (read < data.length) {
10388
- const chunk = data.subarray(read, read + MAX_HEAP);
10389
- read += chunk.length;
10390
- memoryView.set(chunk);
10391
- wasmInstance.exports.Hash_Update(chunk.length);
10392
- }
10393
- };
10394
- const update = (data) => {
10395
- if (!initialized) {
10396
- throw new Error('update() called before init()');
10397
- }
10398
- const Uint8Buffer = getUInt8Buffer(data);
10399
- updateUInt8Array(Uint8Buffer);
10400
- };
10401
- const digestChars = new Uint8Array(hashLength * 2);
10402
- const digest = (outputType, padding = null) => {
10403
- if (!initialized) {
10404
- throw new Error('digest() called before init()');
10405
- }
10406
- initialized = false;
10407
- wasmInstance.exports.Hash_Final(padding);
10408
- if (outputType === 'binary') {
10409
- // the data is copied to allow GC of the original memory object
10410
- return memoryView.slice(0, hashLength);
10411
- }
10412
- return getDigestHex(digestChars, memoryView, hashLength);
10413
- };
10414
- const save = () => {
10415
- if (!initialized) {
10416
- throw new Error('save() can only be called after init() and before digest()');
10417
- }
10418
- const stateOffset = wasmInstance.exports.Hash_GetState();
10419
- const stateLength = getStateSize();
10420
- const memoryBuffer = wasmInstance.exports.memory.buffer;
10421
- const internalState = new Uint8Array(memoryBuffer, stateOffset, stateLength);
10422
- // prefix is 4 bytes from SHA1 hash of the WASM binary
10423
- // it is used to detect incompatible internal states between different versions of hash-wasm
10424
- const prefixedState = new Uint8Array(WASM_FUNC_HASH_LENGTH + stateLength);
10425
- writeHexToUInt8(prefixedState, binary.hash);
10426
- prefixedState.set(internalState, WASM_FUNC_HASH_LENGTH);
10427
- return prefixedState;
10428
- };
10429
- const load = (state) => {
10430
- if (!(state instanceof Uint8Array)) {
10431
- throw new Error('load() expects an Uint8Array generated by save()');
10432
- }
10433
- const stateOffset = wasmInstance.exports.Hash_GetState();
10434
- const stateLength = getStateSize();
10435
- const overallLength = WASM_FUNC_HASH_LENGTH + stateLength;
10436
- const memoryBuffer = wasmInstance.exports.memory.buffer;
10437
- if (state.length !== overallLength) {
10438
- throw new Error(`Bad state length (expected ${overallLength} bytes, got ${state.length})`);
10439
- }
10440
- if (!hexStringEqualsUInt8(binary.hash, state.subarray(0, WASM_FUNC_HASH_LENGTH))) {
10441
- throw new Error('This state was written by an incompatible hash implementation');
10442
- }
10443
- const internalState = state.subarray(WASM_FUNC_HASH_LENGTH);
10444
- new Uint8Array(memoryBuffer, stateOffset, stateLength).set(internalState);
10445
- initialized = true;
10446
- };
10447
- const isDataShort = (data) => {
10448
- if (typeof data === 'string') {
10449
- // worst case is 4 bytes / char
10450
- return data.length < MAX_HEAP / 4;
10451
- }
10452
- return data.byteLength < MAX_HEAP;
10453
- };
10454
- let canSimplify = isDataShort;
10455
- switch (binary.name) {
10456
- case 'argon2':
10457
- case 'scrypt':
10458
- canSimplify = () => true;
10459
- break;
10460
- case 'blake2b':
10461
- case 'blake2s':
10462
- // if there is a key at blake2 then cannot simplify
10463
- canSimplify = (data, initParam) => initParam <= 512 && isDataShort(data);
10464
- break;
10465
- case 'blake3':
10466
- // if there is a key at blake3 then cannot simplify
10467
- canSimplify = (data, initParam) => initParam === 0 && isDataShort(data);
10468
- break;
10469
- case 'xxhash64': // cannot simplify
10470
- case 'xxhash3':
10471
- case 'xxhash128':
10472
- canSimplify = () => false;
10473
- break;
10474
- }
10475
- // shorthand for (init + update + digest) for better performance
10476
- const calculate = (data, initParam = null, digestParam = null) => {
10477
- if (!canSimplify(data, initParam)) {
10478
- init(initParam);
10479
- update(data);
10480
- return digest('hex', digestParam);
10481
- }
10482
- const buffer = getUInt8Buffer(data);
10483
- memoryView.set(buffer);
10484
- wasmInstance.exports.Hash_Calculate(buffer.length, initParam, digestParam);
10485
- return getDigestHex(digestChars, memoryView, hashLength);
10486
- };
10487
- yield setupInterface();
10488
- return {
10489
- getMemory,
10490
- writeMemory,
10491
- getExports,
10492
- setMemorySize,
10493
- init,
10494
- update,
10495
- digest,
10496
- save,
10497
- load,
10498
- calculate,
10499
- hashLength,
10500
- };
10501
- });
10502
- }
10503
-
10504
- new Mutex();
10505
-
10506
- new Mutex();
10507
-
10508
- new Mutex();
10509
-
10510
- new Mutex();
10511
-
10512
- new Mutex();
10513
-
10514
- new Mutex();
10515
-
10516
- new Mutex();
10517
-
10518
- new Mutex();
10519
-
10520
- new Mutex();
10521
-
10522
- var name$b = "sha3";
10523
- var data$b = "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";
10524
- var hash$b = "ec266d91";
10525
- var wasmJson$b = {
10526
- name: name$b,
10527
- data: data$b,
10528
- hash: hash$b
10529
- };
10530
-
10531
- new Mutex();
10532
-
10533
- new Mutex();
10534
- function validateBits(bits) {
10535
- if (![224, 256, 384, 512].includes(bits)) {
10536
- return new Error('Invalid variant! Valid values: 224, 256, 384, 512');
10537
- }
10538
- return null;
10539
- }
10540
- /**
10541
- * Creates a new Keccak hash instance
10542
- * @param bits Number of output bits. Valid values: 224, 256, 384, 512
10543
- */
10544
- function createKeccak(bits = 512) {
10545
- if (validateBits(bits)) {
10546
- return Promise.reject(validateBits(bits));
10547
- }
10548
- const outputSize = bits / 8;
10549
- return WASMInterface(wasmJson$b, outputSize).then((wasm) => {
10550
- wasm.init(bits);
10551
- const obj = {
10552
- init: () => { wasm.init(bits); return obj; },
10553
- update: (data) => { wasm.update(data); return obj; },
10554
- digest: (outputType) => wasm.digest(outputType, 0x01),
10555
- save: () => wasm.save(),
10556
- load: (data) => { wasm.load(data); return obj; },
10557
- blockSize: 200 - 2 * outputSize,
10558
- digestSize: outputSize,
10559
- };
10560
- return obj;
10561
- });
10562
- }
10563
-
10564
- new Mutex();
10565
-
10566
- new Mutex();
10567
-
10568
- var name$9 = "sha512";
10569
- var data$9 = "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";
10570
- var hash$9 = "a5d1ca7c";
10571
- var wasmJson$9 = {
10572
- name: name$9,
10573
- data: data$9,
10574
- hash: hash$9
10575
- };
10576
-
10577
- new Mutex();
10578
-
10579
- new Mutex();
10580
- /**
10581
- * Creates a new SHA-2 (SHA-512) hash instance
10582
- */
10583
- function createSHA512() {
10584
- return WASMInterface(wasmJson$9, 64).then((wasm) => {
10585
- wasm.init(512);
10586
- const obj = {
10587
- init: () => { wasm.init(512); return obj; },
10588
- update: (data) => { wasm.update(data); return obj; },
10589
- digest: (outputType) => wasm.digest(outputType),
10590
- save: () => wasm.save(),
10591
- load: (data) => { wasm.load(data); return obj; },
10592
- blockSize: 128,
10593
- digestSize: 64,
10594
- };
10595
- return obj;
10596
- });
10597
- }
10598
-
10599
- new Mutex();
10600
-
10601
- new Mutex();
10602
-
10603
- new Mutex();
10604
-
10605
- new Mutex();
10606
-
10607
- var name$4 = "ripemd160";
10608
- var data$4 = "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";
10609
- var hash$4 = "42f1de39";
10610
- var wasmJson$4 = {
10611
- name: name$4,
10612
- data: data$4,
10613
- hash: hash$4
10614
- };
10615
-
10616
- new Mutex();
10617
- /**
10618
- * Creates a new RIPEMD-160 hash instance
10619
- */
10620
- function createRIPEMD160() {
10621
- return WASMInterface(wasmJson$4, 20).then((wasm) => {
10622
- wasm.init();
10623
- const obj = {
10624
- init: () => { wasm.init(); return obj; },
10625
- update: (data) => { wasm.update(data); return obj; },
10626
- digest: (outputType) => wasm.digest(outputType),
10627
- save: () => wasm.save(),
10628
- load: (data) => { wasm.load(data); return obj; },
10629
- blockSize: 64,
10630
- digestSize: 20,
10631
- };
10632
- return obj;
10633
- });
10634
- }
10635
-
10636
- function calculateKeyBuffer(hasher, key) {
10637
- const { blockSize } = hasher;
10638
- const buf = getUInt8Buffer(key);
10639
- if (buf.length > blockSize) {
10640
- hasher.update(buf);
10641
- const uintArr = hasher.digest('binary');
10642
- hasher.init();
10643
- return uintArr;
10644
- }
10645
- return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);
10646
- }
10647
- function calculateHmac(hasher, key) {
10648
- hasher.init();
10649
- const { blockSize } = hasher;
10650
- const keyBuf = calculateKeyBuffer(hasher, key);
10651
- const keyBuffer = new Uint8Array(blockSize);
10652
- keyBuffer.set(keyBuf);
10653
- const opad = new Uint8Array(blockSize);
10654
- for (let i = 0; i < blockSize; i++) {
10655
- const v = keyBuffer[i];
10656
- opad[i] = v ^ 0x5C;
10657
- keyBuffer[i] = v ^ 0x36;
10658
- }
10659
- hasher.update(keyBuffer);
10660
- const obj = {
10661
- init: () => {
10662
- hasher.init();
10663
- hasher.update(keyBuffer);
10664
- return obj;
10665
- },
10666
- update: (data) => {
10667
- hasher.update(data);
10668
- return obj;
10669
- },
10670
- digest: ((outputType) => {
10671
- const uintArr = hasher.digest('binary');
10672
- hasher.init();
10673
- hasher.update(opad);
10674
- hasher.update(uintArr);
10675
- return hasher.digest(outputType);
10676
- }),
10677
- save: () => {
10678
- throw new Error('save() not supported');
10679
- },
10680
- load: () => {
10681
- throw new Error('load() not supported');
10682
- },
10683
- blockSize: hasher.blockSize,
10684
- digestSize: hasher.digestSize,
10685
- };
10686
- return obj;
10687
- }
10688
- /**
10689
- * Calculates HMAC hash
10690
- * @param hash Hash algorithm to use. It has to be the return value of a function like createSHA1()
10691
- * @param key Key (string, Buffer or TypedArray)
10692
- */
10693
- function createHMAC(hash, key) {
10694
- if (!hash || !hash.then) {
10695
- throw new Error('Invalid hash function is provided! Usage: createHMAC(createMD5(), "key").');
10696
- }
10697
- return hash.then((hasher) => calculateHmac(hasher, key));
10698
- }
10699
-
10700
- new Mutex();
10701
-
10702
- new Mutex();
10703
-
10704
- const encode$1 = (version, privateKey, compressed) => {
9851
+ const encode = (version, privateKey, compressed) => {
10705
9852
  if (privateKey.length !== 32)
10706
9853
  throw new TypeError(`Invalid privateKey length: expected 32 got ${privateKey.length}`);
10707
9854
  const uint8Array = new Uint8Array(compressed ? 34 : 33);
@@ -10712,7 +9859,7 @@ const encode$1 = (version, privateKey, compressed) => {
10712
9859
  }
10713
9860
  return base58check.encode(uint8Array);
10714
9861
  };
10715
- const decode$1 = async (wif, version) => {
9862
+ const decode = async (wif, version) => {
10716
9863
  wif = (await base58check.decode(wif)).data;
10717
9864
  if (version && wif[0] !== version)
10718
9865
  throw new Error('Invalid network version');
@@ -10727,7 +9874,7 @@ const decode$1 = async (wif, version) => {
10727
9874
  compressed: wif.length === 33 ? false : true
10728
9875
  };
10729
9876
  };
10730
- var wif = { encode: encode$1, decode: decode$1 };
9877
+ var wif = { encode, decode };
10731
9878
 
10732
9879
  // see https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
10733
9880
  var wordlist = ["abandon", "ability", "able", "about", "above", "absent", "absorb", "abstract", "absurd", "abuse", "access", "accident", "account", "accuse", "achieve", "acid", "acoustic", "acquire", "across", "act", "action", "actor", "actress", "actual", "adapt", "add", "addict", "address", "adjust", "admit", "adult", "advance", "advice", "aerobic", "affair", "afford", "afraid", "again", "age", "agent", "agree", "ahead", "aim", "air", "airport", "aisle", "alarm", "album", "alcohol", "alert", "alien", "all", "alley", "allow", "almost", "alone", "alpha", "already", "also", "alter", "always", "amateur", "amazing", "among", "amount", "amused", "analyst", "anchor", "ancient", "anger", "angle", "angry", "animal", "ankle", "announce", "annual", "another", "answer", "antenna", "antique", "anxiety", "any", "apart", "apology", "appear", "apple", "approve", "april", "arch", "arctic", "area", "arena", "argue", "arm", "armed", "armor", "army", "around", "arrange", "arrest", "arrive", "arrow", "art", "artefact", "artist", "artwork", "ask", "aspect", "assault", "asset", "assist", "assume", "asthma", "athlete", "atom", "attack", "attend", "attitude", "attract", "auction", "audit", "august", "aunt", "author", "auto", "autumn", "average", "avocado", "avoid", "awake", "aware", "away", "awesome", "awful", "awkward", "axis", "baby", "bachelor", "bacon", "badge", "bag", "balance", "balcony", "ball", "bamboo", "banana", "banner", "bar", "barely", "bargain", "barrel", "base", "basic", "basket", "battle", "beach", "bean", "beauty", "because", "become", "beef", "before", "begin", "behave", "behind", "believe", "below", "belt", "bench", "benefit", "best", "betray", "better", "between", "beyond", "bicycle", "bid", "bike", "bind", "biology", "bird", "birth", "bitter", "black", "blade", "blame", "blanket", "blast", "bleak", "bless", "blind", "blood", "blossom", "blouse", "blue", "blur", "blush", "board", "boat", "body", "boil", "bomb", "bone", "bonus", "book", "boost", "border", "boring", "borrow", "boss", "bottom", "bounce", "box", "boy", "bracket", "brain", "brand", "brass", "brave", "bread", "breeze", "brick", "bridge", "brief", "bright", "bring", "brisk", "broccoli", "broken", "bronze", "broom", "brother", "brown", "brush", "bubble", "buddy", "budget", "buffalo", "build", "bulb", "bulk", "bullet", "bundle", "bunker", "burden", "burger", "burst", "bus", "business", "busy", "butter", "buyer", "buzz", "cabbage", "cabin", "cable", "cactus", "cage", "cake", "call", "calm", "camera", "camp", "can", "canal", "cancel", "candy", "cannon", "canoe", "canvas", "canyon", "capable", "capital", "captain", "car", "carbon", "card", "cargo", "carpet", "carry", "cart", "case", "cash", "casino", "castle", "casual", "cat", "catalog", "catch", "category", "cattle", "caught", "cause", "caution", "cave", "ceiling", "celery", "cement", "census", "century", "cereal", "certain", "chair", "chalk", "champion", "change", "chaos", "chapter", "charge", "chase", "chat", "cheap", "check", "cheese", "chef", "cherry", "chest", "chicken", "chief", "child", "chimney", "choice", "choose", "chronic", "chuckle", "chunk", "churn", "cigar", "cinnamon", "circle", "citizen", "city", "civil", "claim", "clap", "clarify", "claw", "clay", "clean", "clerk", "clever", "click", "client", "cliff", "climb", "clinic", "clip", "clock", "clog", "close", "cloth", "cloud", "clown", "club", "clump", "cluster", "clutch", "coach", "coast", "coconut", "code", "coffee", "coil", "coin", "collect", "color", "column", "combine", "come", "comfort", "comic", "common", "company", "concert", "conduct", "confirm", "congress", "connect", "consider", "control", "convince", "cook", "cool", "copper", "copy", "coral", "core", "corn", "correct", "cost", "cotton", "couch", "country", "couple", "course", "cousin", "cover", "coyote", "crack", "cradle", "craft", "cram", "crane", "crash", "crater", "crawl", "crazy", "cream", "credit", "creek", "crew", "cricket", "crime", "crisp", "critic", "crop", "cross", "crouch", "crowd", "crucial", "cruel", "cruise", "crumble", "crunch", "crush", "cry", "crystal", "cube", "culture", "cup", "cupboard", "curious", "current", "curtain", "curve", "cushion", "custom", "cute", "cycle", "dad", "damage", "damp", "dance", "danger", "daring", "dash", "daughter", "dawn", "day", "deal", "debate", "debris", "decade", "december", "decide", "decline", "decorate", "decrease", "deer", "defense", "define", "defy", "degree", "delay", "deliver", "demand", "demise", "denial", "dentist", "deny", "depart", "depend", "deposit", "depth", "deputy", "derive", "describe", "desert", "design", "desk", "despair", "destroy", "detail", "detect", "develop", "device", "devote", "diagram", "dial", "diamond", "diary", "dice", "diesel", "diet", "differ", "digital", "dignity", "dilemma", "dinner", "dinosaur", "direct", "dirt", "disagree", "discover", "disease", "dish", "dismiss", "disorder", "display", "distance", "divert", "divide", "divorce", "dizzy", "doctor", "document", "dog", "doll", "dolphin", "domain", "donate", "donkey", "donor", "door", "dose", "double", "dove", "draft", "dragon", "drama", "drastic", "draw", "dream", "dress", "drift", "drill", "drink", "drip", "drive", "drop", "drum", "dry", "duck", "dumb", "dune", "during", "dust", "dutch", "duty", "dwarf", "dynamic", "eager", "eagle", "early", "earn", "earth", "easily", "east", "easy", "echo", "ecology", "economy", "edge", "edit", "educate", "effort", "egg", "eight", "either", "elbow", "elder", "electric", "elegant", "element", "elephant", "elevator", "elite", "else", "embark", "embody", "embrace", "emerge", "emotion", "employ", "empower", "empty", "enable", "enact", "end", "endless", "endorse", "enemy", "energy", "enforce", "engage", "engine", "enhance", "enjoy", "enlist", "enough", "enrich", "enroll", "ensure", "enter", "entire", "entry", "envelope", "episode", "equal", "equip", "era", "erase", "erode", "erosion", "error", "erupt", "escape", "essay", "essence", "estate", "eternal", "ethics", "evidence", "evil", "evoke", "evolve", "exact", "example", "excess", "exchange", "excite", "exclude", "excuse", "execute", "exercise", "exhaust", "exhibit", "exile", "exist", "exit", "exotic", "expand", "expect", "expire", "explain", "expose", "express", "extend", "extra", "eye", "eyebrow", "fabric", "face", "faculty", "fade", "faint", "faith", "fall", "false", "fame", "family", "famous", "fan", "fancy", "fantasy", "farm", "fashion", "fat", "fatal", "father", "fatigue", "fault", "favorite", "feature", "february", "federal", "fee", "feed", "feel", "female", "fence", "festival", "fetch", "fever", "few", "fiber", "fiction", "field", "figure", "file", "film", "filter", "final", "find", "fine", "finger", "finish", "fire", "firm", "first", "fiscal", "fish", "fit", "fitness", "fix", "flag", "flame", "flash", "flat", "flavor", "flee", "flight", "flip", "float", "flock", "floor", "flower", "fluid", "flush", "fly", "foam", "focus", "fog", "foil", "fold", "follow", "food", "foot", "force", "forest", "forget", "fork", "fortune", "forum", "forward", "fossil", "foster", "found", "fox", "fragile", "frame", "frequent", "fresh", "friend", "fringe", "frog", "front", "frost", "frown", "frozen", "fruit", "fuel", "fun", "funny", "furnace", "fury", "future", "gadget", "gain", "galaxy", "gallery", "game", "gap", "garage", "garbage", "garden", "garlic", "garment", "gas", "gasp", "gate", "gather", "gauge", "gaze", "general", "genius", "genre", "gentle", "genuine", "gesture", "ghost", "giant", "gift", "giggle", "ginger", "giraffe", "girl", "give", "glad", "glance", "glare", "glass", "glide", "glimpse", "globe", "gloom", "glory", "glove", "glow", "glue", "goat", "goddess", "gold", "good", "goose", "gorilla", "gospel", "gossip", "govern", "gown", "grab", "grace", "grain", "grant", "grape", "grass", "gravity", "great", "green", "grid", "grief", "grit", "grocery", "group", "grow", "grunt", "guard", "guess", "guide", "guilt", "guitar", "gun", "gym", "habit", "hair", "half", "hammer", "hamster", "hand", "happy", "harbor", "hard", "harsh", "harvest", "hat", "have", "hawk", "hazard", "head", "health", "heart", "heavy", "hedgehog", "height", "hello", "helmet", "help", "hen", "hero", "hidden", "high", "hill", "hint", "hip", "hire", "history", "hobby", "hockey", "hold", "hole", "holiday", "hollow", "home", "honey", "hood", "hope", "horn", "horror", "horse", "hospital", "host", "hotel", "hour", "hover", "hub", "huge", "human", "humble", "humor", "hundred", "hungry", "hunt", "hurdle", "hurry", "hurt", "husband", "hybrid", "ice", "icon", "idea", "identify", "idle", "ignore", "ill", "illegal", "illness", "image", "imitate", "immense", "immune", "impact", "impose", "improve", "impulse", "inch", "include", "income", "increase", "index", "indicate", "indoor", "industry", "infant", "inflict", "inform", "inhale", "inherit", "initial", "inject", "injury", "inmate", "inner", "innocent", "input", "inquiry", "insane", "insect", "inside", "inspire", "install", "intact", "interest", "into", "invest", "invite", "involve", "iron", "island", "isolate", "issue", "item", "ivory", "jacket", "jaguar", "jar", "jazz", "jealous", "jeans", "jelly", "jewel", "job", "join", "joke", "journey", "joy", "judge", "juice", "jump", "jungle", "junior", "junk", "just", "kangaroo", "keen", "keep", "ketchup", "key", "kick", "kid", "kidney", "kind", "kingdom", "kiss", "kit", "kitchen", "kite", "kitten", "kiwi", "knee", "knife", "knock", "know", "lab", "label", "labor", "ladder", "lady", "lake", "lamp", "language", "laptop", "large", "later", "latin", "laugh", "laundry", "lava", "law", "lawn", "lawsuit", "layer", "lazy", "leader", "leaf", "learn", "leave", "lecture", "left", "leg", "legal", "legend", "leisure", "lemon", "lend", "length", "lens", "leopard", "lesson", "letter", "level", "liar", "liberty", "library", "license", "life", "lift", "light", "like", "limb", "limit", "link", "lion", "liquid", "list", "little", "live", "lizard", "load", "loan", "lobster", "local", "lock", "logic", "lonely", "long", "loop", "lottery", "loud", "lounge", "love", "loyal", "lucky", "luggage", "lumber", "lunar", "lunch", "luxury", "lyrics", "machine", "mad", "magic", "magnet", "maid", "mail", "main", "major", "make", "mammal", "man", "manage", "mandate", "mango", "mansion", "manual", "maple", "marble", "march", "margin", "marine", "market", "marriage", "mask", "mass", "master", "match", "material", "math", "matrix", "matter", "maximum", "maze", "meadow", "mean", "measure", "meat", "mechanic", "medal", "media", "melody", "melt", "member", "memory", "mention", "menu", "mercy", "merge", "merit", "merry", "mesh", "message", "metal", "method", "middle", "midnight", "milk", "million", "mimic", "mind", "minimum", "minor", "minute", "miracle", "mirror", "misery", "miss", "mistake", "mix", "mixed", "mixture", "mobile", "model", "modify", "mom", "moment", "monitor", "monkey", "monster", "month", "moon", "moral", "more", "morning", "mosquito", "mother", "motion", "motor", "mountain", "mouse", "move", "movie", "much", "muffin", "mule", "multiply", "muscle", "museum", "mushroom", "music", "must", "mutual", "myself", "mystery", "myth", "naive", "name", "napkin", "narrow", "nasty", "nation", "nature", "near", "neck", "need", "negative", "neglect", "neither", "nephew", "nerve", "nest", "net", "network", "neutral", "never", "news", "next", "nice", "night", "noble", "noise", "nominee", "noodle", "normal", "north", "nose", "notable", "note", "nothing", "notice", "novel", "now", "nuclear", "number", "nurse", "nut", "oak", "obey", "object", "oblige", "obscure", "observe", "obtain", "obvious", "occur", "ocean", "october", "odor", "off", "offer", "office", "often", "oil", "okay", "old", "olive", "olympic", "omit", "once", "one", "onion", "online", "only", "open", "opera", "opinion", "oppose", "option", "orange", "orbit", "orchard", "order", "ordinary", "organ", "orient", "original", "orphan", "ostrich", "other", "outdoor", "outer", "output", "outside", "oval", "oven", "over", "own", "owner", "oxygen", "oyster", "ozone", "pact", "paddle", "page", "pair", "palace", "palm", "panda", "panel", "panic", "panther", "paper", "parade", "parent", "park", "parrot", "party", "pass", "patch", "path", "patient", "patrol", "pattern", "pause", "pave", "payment", "peace", "peanut", "pear", "peasant", "pelican", "pen", "penalty", "pencil", "people", "pepper", "perfect", "permit", "person", "pet", "phone", "photo", "phrase", "physical", "piano", "picnic", "picture", "piece", "pig", "pigeon", "pill", "pilot", "pink", "pioneer", "pipe", "pistol", "pitch", "pizza", "place", "planet", "plastic", "plate", "play", "please", "pledge", "pluck", "plug", "plunge", "poem", "poet", "point", "polar", "pole", "police", "pond", "pony", "pool", "popular", "portion", "position", "possible", "post", "potato", "pottery", "poverty", "powder", "power", "practice", "praise", "predict", "prefer", "prepare", "present", "pretty", "prevent", "price", "pride", "primary", "print", "priority", "prison", "private", "prize", "problem", "process", "produce", "profit", "program", "project", "promote", "proof", "property", "prosper", "protect", "proud", "provide", "public", "pudding", "pull", "pulp", "pulse", "pumpkin", "punch", "pupil", "puppy", "purchase", "purity", "purpose", "purse", "push", "put", "puzzle", "pyramid", "quality", "quantum", "quarter", "question", "quick", "quit", "quiz", "quote", "rabbit", "raccoon", "race", "rack", "radar", "radio", "rail", "rain", "raise", "rally", "ramp", "ranch", "random", "range", "rapid", "rare", "rate", "rather", "raven", "raw", "razor", "ready", "real", "reason", "rebel", "rebuild", "recall", "receive", "recipe", "record", "recycle", "reduce", "reflect", "reform", "refuse", "region", "regret", "regular", "reject", "relax", "release", "relief", "rely", "remain", "remember", "remind", "remove", "render", "renew", "rent", "reopen", "repair", "repeat", "replace", "report", "require", "rescue", "resemble", "resist", "resource", "response", "result", "retire", "retreat", "return", "reunion", "reveal", "review", "reward", "rhythm", "rib", "ribbon", "rice", "rich", "ride", "ridge", "rifle", "right", "rigid", "ring", "riot", "ripple", "risk", "ritual", "rival", "river", "road", "roast", "robot", "robust", "rocket", "romance", "roof", "rookie", "room", "rose", "rotate", "rough", "round", "route", "royal", "rubber", "rude", "rug", "rule", "run", "runway", "rural", "sad", "saddle", "sadness", "safe", "sail", "salad", "salmon", "salon", "salt", "salute", "same", "sample", "sand", "satisfy", "satoshi", "sauce", "sausage", "save", "say", "scale", "scan", "scare", "scatter", "scene", "scheme", "school", "science", "scissors", "scorpion", "scout", "scrap", "screen", "script", "scrub", "sea", "search", "season", "seat", "second", "secret", "section", "security", "seed", "seek", "segment", "select", "sell", "seminar", "senior", "sense", "sentence", "series", "service", "session", "settle", "setup", "seven", "shadow", "shaft", "shallow", "share", "shed", "shell", "sheriff", "shield", "shift", "shine", "ship", "shiver", "shock", "shoe", "shoot", "shop", "short", "shoulder", "shove", "shrimp", "shrug", "shuffle", "shy", "sibling", "sick", "side", "siege", "sight", "sign", "silent", "silk", "silly", "silver", "similar", "simple", "since", "sing", "siren", "sister", "situate", "six", "size", "skate", "sketch", "ski", "skill", "skin", "skirt", "skull", "slab", "slam", "sleep", "slender", "slice", "slide", "slight", "slim", "slogan", "slot", "slow", "slush", "small", "smart", "smile", "smoke", "smooth", "snack", "snake", "snap", "sniff", "snow", "soap", "soccer", "social", "sock", "soda", "soft", "solar", "soldier", "solid", "solution", "solve", "someone", "song", "soon", "sorry", "sort", "soul", "sound", "soup", "source", "south", "space", "spare", "spatial", "spawn", "speak", "special", "speed", "spell", "spend", "sphere", "spice", "spider", "spike", "spin", "spirit", "split", "spoil", "sponsor", "spoon", "sport", "spot", "spray", "spread", "spring", "spy", "square", "squeeze", "squirrel", "stable", "stadium", "staff", "stage", "stairs", "stamp", "stand", "start", "state", "stay", "steak", "steel", "stem", "step", "stereo", "stick", "still", "sting", "stock", "stomach", "stone", "stool", "story", "stove", "strategy", "street", "strike", "strong", "struggle", "student", "stuff", "stumble", "style", "subject", "submit", "subway", "success", "such", "sudden", "suffer", "sugar", "suggest", "suit", "summer", "sun", "sunny", "sunset", "super", "supply", "supreme", "sure", "surface", "surge", "surprise", "surround", "survey", "suspect", "sustain", "swallow", "swamp", "swap", "swarm", "swear", "sweet", "swift", "swim", "swing", "switch", "sword", "symbol", "symptom", "syrup", "system", "table", "tackle", "tag", "tail", "talent", "talk", "tank", "tape", "target", "task", "taste", "tattoo", "taxi", "teach", "team", "tell", "ten", "tenant", "tennis", "tent", "term", "test", "text", "thank", "that", "theme", "then", "theory", "there", "they", "thing", "this", "thought", "three", "thrive", "throw", "thumb", "thunder", "ticket", "tide", "tiger", "tilt", "timber", "time", "tiny", "tip", "tired", "tissue", "title", "toast", "tobacco", "today", "toddler", "toe", "together", "toilet", "token", "tomato", "tomorrow", "tone", "tongue", "tonight", "tool", "tooth", "top", "topic", "topple", "torch", "tornado", "tortoise", "toss", "total", "tourist", "toward", "tower", "town", "toy", "track", "trade", "traffic", "tragic", "train", "transfer", "trap", "trash", "travel", "tray", "treat", "tree", "trend", "trial", "tribe", "trick", "trigger", "trim", "trip", "trophy", "trouble", "truck", "true", "truly", "trumpet", "trust", "truth", "try", "tube", "tuition", "tumble", "tuna", "tunnel", "turkey", "turn", "turtle", "twelve", "twenty", "twice", "twin", "twist", "two", "type", "typical", "ugly", "umbrella", "unable", "unaware", "uncle", "uncover", "under", "undo", "unfair", "unfold", "unhappy", "uniform", "unique", "unit", "universe", "unknown", "unlock", "until", "unusual", "unveil", "update", "upgrade", "uphold", "upon", "upper", "upset", "urban", "urge", "usage", "use", "used", "useful", "useless", "usual", "utility", "vacant", "vacuum", "vague", "valid", "valley", "valve", "van", "vanish", "vapor", "various", "vast", "vault", "vehicle", "velvet", "vendor", "venture", "venue", "verb", "verify", "version", "very", "vessel", "veteran", "viable", "vibrant", "vicious", "victory", "video", "view", "village", "vintage", "violin", "virtual", "virus", "visa", "visit", "visual", "vital", "vivid", "vocal", "voice", "void", "volcano", "volume", "vote", "voyage", "wage", "wagon", "wait", "walk", "wall", "walnut", "want", "warfare", "warm", "warrior", "wash", "wasp", "waste", "water", "wave", "way", "wealth", "weapon", "wear", "weasel", "weather", "web", "wedding", "weekend", "weird", "welcome", "west", "wet", "whale", "what", "wheat", "wheel", "when", "where", "whip", "whisper", "wide", "width", "wife", "wild", "will", "win", "window", "wine", "wing", "wink", "winner", "winter", "wire", "wisdom", "wise", "wish", "witness", "wolf", "woman", "wonder", "wood", "wool", "word", "work", "world", "worry", "worth", "wrap", "wreck", "wrestle", "wrist", "write", "wrong", "yard", "year", "yellow", "you", "young", "youth", "zebra", "zero", "zone", "zoo"];
@@ -10779,38 +9926,6 @@ class Mnemonic {
10779
9926
  }
10780
9927
  }
10781
9928
 
10782
- const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
10783
- const ALPHABET_HEX = '0123456789ABCDEFGHIJKLMNOPQRSTUV';
10784
- const base32 = base$1(ALPHABET);
10785
- const base32Hex = base$1(ALPHABET_HEX);
10786
- const decode = base32.decode;
10787
- const decodeHex = base32Hex.decode;
10788
- const encode = base32.encode;
10789
- const encodeHex = base32Hex.encode;
10790
- const isBase32 = (string, hex = false) => {
10791
- try {
10792
- if (hex)
10793
- decodeHex(string);
10794
- else
10795
- decode(string);
10796
- return true;
10797
- }
10798
- catch (e) {
10799
- return false;
10800
- }
10801
- };
10802
- const isBase32Hex = (string) => {
10803
- return isBase32(string, true);
10804
- };
10805
- var index = {
10806
- encode,
10807
- decode,
10808
- encodeHex,
10809
- decodeHex,
10810
- isBase32,
10811
- isBase32Hex
10812
- };
10813
-
10814
9929
  class MultiSignature {
10815
9930
  multiCodec;
10816
9931
  version;
@@ -10866,8 +9981,8 @@ class MultiSignature {
10866
9981
  if (!signature)
10867
9982
  throw ReferenceError('signature undefined');
10868
9983
  this.#multiSignature = typedArrayConcat([
10869
- index$2.encode(this.version),
10870
- index$2.encode(this.multiCodec),
9984
+ index$3.encode(this.version),
9985
+ index$3.encode(this.multiCodec),
10871
9986
  signature
10872
9987
  ]);
10873
9988
  return this.multiSignature;
@@ -10883,10 +9998,10 @@ class MultiSignature {
10883
9998
  if (!this.multiSignature)
10884
9999
  throw ReferenceError('multiSignature undefined');
10885
10000
  let buffer = this.multiSignature;
10886
- const version = index$2.decode(buffer);
10887
- buffer = buffer.subarray(index$2.decode.bytes);
10888
- const codec = index$2.decode(buffer);
10889
- buffer = buffer.subarray(index$2.decode.bytes);
10001
+ const version = index$3.decode(buffer);
10002
+ buffer = buffer.subarray(index$3.decode.bytes);
10003
+ const codec = index$3.decode(buffer);
10004
+ buffer = buffer.subarray(index$3.decode.bytes);
10890
10005
  const signature = buffer.subarray(0, buffer.length);
10891
10006
  if (version !== this.version)
10892
10007
  throw TypeError('Invalid version');
@@ -10912,16 +10027,16 @@ class MultiSignature {
10912
10027
  return this.decode(base58$1.decode(string));
10913
10028
  }
10914
10029
  toBs32() {
10915
- return index.encode(this.multiSignature);
10030
+ return index$4.encode(this.multiSignature);
10916
10031
  }
10917
10032
  fromBs32(string) {
10918
- return this.decode(index.decode(string));
10033
+ return this.decode(index$4.decode(string));
10919
10034
  }
10920
10035
  toBs32Hex() {
10921
- return index.encodeHex(this.multiSignature);
10036
+ return index$4.encodeHex(this.multiSignature);
10922
10037
  }
10923
10038
  fromBs32Hex(string) {
10924
- return this.decode(index.decodeHex(string));
10039
+ return this.decode(index$4.decodeHex(string));
10925
10040
  }
10926
10041
  toBs58Hex() {
10927
10042
  return base58$1.encodeHex(this.multiSignature);
@@ -11124,7 +10239,7 @@ class HdNode {
11124
10239
  else {
11125
10240
  set.push(new Uint8Array(this.publicKey));
11126
10241
  }
11127
- return base58check.encode(typedArraySmartConcat(set));
10242
+ return base58check.encode(index$1(set));
11128
10243
  }
11129
10244
  toWIF() {
11130
10245
  if (!this.#privateKey)
@@ -11140,14 +10255,14 @@ class HdNode {
11140
10255
  if (this.isNeutered)
11141
10256
  throw new TypeError('Missing private key for hardened child key');
11142
10257
  // data = 0x00 || ser256(kpar) || ser32(index)
11143
- data = typedArraySmartConcat([
10258
+ data = index$1([
11144
10259
  new TextEncoder().encode('0'),
11145
10260
  this.privateKey,
11146
10261
  new TextEncoder().encode(index.toString())
11147
10262
  ]);
11148
10263
  }
11149
10264
  else {
11150
- data = typedArraySmartConcat([
10265
+ data = index$1([
11151
10266
  this.publicKey,
11152
10267
  new TextEncoder().encode(index.toString())
11153
10268
  ]);
@@ -11211,7 +10326,7 @@ class HdNode {
11211
10326
  let buffer = (await base58check.decode(string)).data;
11212
10327
  network = network || networks.leofcoin;
11213
10328
  // 4 bytes: version bytes
11214
- let [version, depth, parentFingerprint, index, chainCode, k, privateKey] = typedArraySmartDeconcat(buffer);
10329
+ let [version, depth, parentFingerprint, index, chainCode, k, privateKey] = index$2(buffer);
11215
10330
  version = Number(new TextDecoder().decode(version));
11216
10331
  depth = Number(new TextDecoder().decode(depth));
11217
10332
  parentFingerprint = Number(new TextDecoder().decode(parentFingerprint));
@@ -11381,7 +10496,7 @@ class MultiWallet extends HDWallet {
11381
10496
  super(network, hdnode);
11382
10497
  }
11383
10498
  get id() {
11384
- return base58check.encode(typedArraySmartConcat([
10499
+ return base58check.encode(index$1([
11385
10500
  new TextEncoder().encode(this.version.toString()),
11386
10501
  this.account(0).hdnode.neutered.publicKey
11387
10502
  ]));
@@ -11394,8 +10509,8 @@ class MultiWallet extends HDWallet {
11394
10509
  }
11395
10510
  async fromId(id) {
11396
10511
  let buffer = (await base58check.decode(id)).data;
11397
- index$2.decode(buffer);
11398
- buffer = buffer.slice(index$2.decode.bytes);
10512
+ index$3.decode(buffer);
10513
+ buffer = buffer.slice(index$3.decode.bytes);
11399
10514
  this.fromPublicKey(buffer, null, this.networkName);
11400
10515
  }
11401
10516
  async lock(multiWIF) {
@@ -11411,7 +10526,7 @@ class MultiWallet extends HDWallet {
11411
10526
  this.locked = false;
11412
10527
  }
11413
10528
  fromMultiWif(string) {
11414
- const { version, codec, privateKey } = index$1.decode(string);
10529
+ const { version, codec, privateKey } = index.decode(string);
11415
10530
  this.network = Object.values(networks).reduce((p, c) => {
11416
10531
  if (c.multiCodec === codec)
11417
10532
  return c;
@@ -11425,7 +10540,7 @@ class MultiWallet extends HDWallet {
11425
10540
  return this.fromPrivateKey(privateKey, undefined, this.network);
11426
10541
  }
11427
10542
  toMultiWif() {
11428
- return index$1.encode(this.network.version, this.network.multiCodec, this.privateKey);
10543
+ return index.encode(this.network.version, this.network.multiCodec, this.privateKey);
11429
10544
  }
11430
10545
  sign(hash) {
11431
10546
  return new MultiSignature(this.version, this.network.multiCodec)