@neuraiproject/neurai-key 3.0.0 → 3.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.
- package/README.md +35 -14
- package/dist/NeuraiKey.global.js +66 -14
- package/dist/NeuraiKey.global.js.map +1 -1
- package/dist/browser.js +67 -15
- package/dist/browser.js.map +1 -1
- package/dist/index.cjs +68 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +17 -6
- package/dist/index.js +67 -15
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ interface IAddressObject {
|
|
|
7
7
|
privateKey: string;
|
|
8
8
|
WIF: string;
|
|
9
9
|
}
|
|
10
|
+
interface PQAddressOptions {
|
|
11
|
+
witnessScript?: Uint8Array | string;
|
|
12
|
+
}
|
|
10
13
|
interface IPQAddressObject {
|
|
11
14
|
address: string;
|
|
12
15
|
mnemonic?: string;
|
|
@@ -14,6 +17,10 @@ interface IPQAddressObject {
|
|
|
14
17
|
publicKey: string;
|
|
15
18
|
privateKey: string;
|
|
16
19
|
seedKey: string;
|
|
20
|
+
authType: number;
|
|
21
|
+
authDescriptor: string;
|
|
22
|
+
commitment: string;
|
|
23
|
+
witnessScript: string;
|
|
17
24
|
}
|
|
18
25
|
type PQNetwork = "xna-pq" | "xna-pq-test";
|
|
19
26
|
|
|
@@ -61,10 +68,12 @@ declare function generateAddressObject(network?: Network, passphrase?: string):
|
|
|
61
68
|
declare function publicKeyToAddress(network: Network, publicKey: Uint8Array | string): string;
|
|
62
69
|
declare function generateAddress(network?: Network): IAddressObject;
|
|
63
70
|
declare function getPQHDKey(network: PQNetwork, mnemonic: string, passphrase?: string): HDKey;
|
|
64
|
-
declare function getPQAddressByPath(network: PQNetwork, hdKey: HDKey, path: string): IPQAddressObject;
|
|
65
|
-
declare function getPQAddress(network: PQNetwork, mnemonic: string, account: number, index: number, passphrase?: string): IPQAddressObject;
|
|
66
|
-
declare function pqPublicKeyToAddress(network: PQNetwork, publicKey: Uint8Array | string): string;
|
|
67
|
-
declare function
|
|
71
|
+
declare function getPQAddressByPath(network: PQNetwork, hdKey: HDKey, path: string, options?: PQAddressOptions): IPQAddressObject;
|
|
72
|
+
declare function getPQAddress(network: PQNetwork, mnemonic: string, account: number, index: number, passphrase?: string, options?: PQAddressOptions): IPQAddressObject;
|
|
73
|
+
declare function pqPublicKeyToAddress(network: PQNetwork, publicKey: Uint8Array | string, options?: PQAddressOptions): string;
|
|
74
|
+
declare function pqPublicKeyToCommitmentHex(publicKey: Uint8Array | string, options?: PQAddressOptions): string;
|
|
75
|
+
declare function pqPublicKeyToAuthDescriptorHex(publicKey: Uint8Array | string): string;
|
|
76
|
+
declare function generatePQAddressObject(network?: PQNetwork, passphrase?: string, options?: PQAddressOptions): IPQAddressObject;
|
|
68
77
|
declare const NeuraiKey: {
|
|
69
78
|
entropyToMnemonic: typeof entropyToMnemonic;
|
|
70
79
|
generateAddress: typeof generateAddress;
|
|
@@ -82,8 +91,10 @@ declare const NeuraiKey: {
|
|
|
82
91
|
getPQAddressByPath: typeof getPQAddressByPath;
|
|
83
92
|
getPQHDKey: typeof getPQHDKey;
|
|
84
93
|
pqPublicKeyToAddress: typeof pqPublicKeyToAddress;
|
|
94
|
+
pqPublicKeyToAuthDescriptorHex: typeof pqPublicKeyToAuthDescriptorHex;
|
|
95
|
+
pqPublicKeyToCommitmentHex: typeof pqPublicKeyToCommitmentHex;
|
|
85
96
|
generatePQAddressObject: typeof generatePQAddressObject;
|
|
86
97
|
};
|
|
87
98
|
|
|
88
|
-
export { NeuraiKey as default, entropyToMnemonic, generateAddress, generateAddressObject, generateMnemonic, generatePQAddressObject, getAddressByPath, getAddressByWIF, getAddressPair, getCoinType, getHDKey, getPQAddress, getPQAddressByPath, getPQHDKey, getPubkeyByWIF, isMnemonicValid, pqPublicKeyToAddress, publicKeyToAddress };
|
|
89
|
-
export type { IAddressObject, IPQAddressObject, Network, PQNetwork };
|
|
99
|
+
export { NeuraiKey as default, entropyToMnemonic, generateAddress, generateAddressObject, generateMnemonic, generatePQAddressObject, getAddressByPath, getAddressByWIF, getAddressPair, getCoinType, getHDKey, getPQAddress, getPQAddressByPath, getPQHDKey, getPubkeyByWIF, isMnemonicValid, pqPublicKeyToAddress, pqPublicKeyToAuthDescriptorHex, pqPublicKeyToCommitmentHex, publicKeyToAddress };
|
|
100
|
+
export type { IAddressObject, IPQAddressObject, Network, PQAddressOptions, PQNetwork };
|
package/dist/index.js
CHANGED
|
@@ -240,6 +240,13 @@ function uint32ToBytesBE(value) {
|
|
|
240
240
|
function hash160(data) {
|
|
241
241
|
return ripemd160(sha256(data));
|
|
242
242
|
}
|
|
243
|
+
function sha256Hash(data) {
|
|
244
|
+
return sha256(data);
|
|
245
|
+
}
|
|
246
|
+
function taggedHash(tag, data) {
|
|
247
|
+
const tagHash = sha256(utf8ToBytes(tag));
|
|
248
|
+
return sha256(concatBytes(tagHash, tagHash, data));
|
|
249
|
+
}
|
|
243
250
|
function doubleSha256(data) {
|
|
244
251
|
return sha256(sha256(data));
|
|
245
252
|
}
|
|
@@ -280,8 +287,11 @@ function mnemonicToSeedBytes(mnemonicToSeedSync, mnemonic, passphrase) {
|
|
|
280
287
|
return Uint8Array.from(mnemonicToSeedSync(mnemonic, passphrase));
|
|
281
288
|
}
|
|
282
289
|
const BITCOIN_SEED_KEY = utf8ToBytes("Bitcoin seed");
|
|
283
|
-
const HASH160_PREFIX = Uint8Array.from([0x05]);
|
|
284
290
|
|
|
291
|
+
const AUTHSCRIPT_TAG = "NeuraiAuthScript";
|
|
292
|
+
const AUTHSCRIPT_VERSION = 0x01;
|
|
293
|
+
const PQ_AUTH_TYPE = 0x01;
|
|
294
|
+
const DEFAULT_WITNESS_SCRIPT = Uint8Array.from([0x51]);
|
|
285
295
|
function encodeWIF(privateKey, version, compressed = true) {
|
|
286
296
|
const payload = compressed
|
|
287
297
|
? concatBytes(Uint8Array.from([version]), privateKey, Uint8Array.from([0x01]))
|
|
@@ -338,9 +348,29 @@ function publicKeyHexFromWIF(wif, compressed = true) {
|
|
|
338
348
|
function bech32mEncode(hrp, witnessVersion, hash) {
|
|
339
349
|
return bech32m.encode(hrp, [witnessVersion, ...bech32m.toWords(hash)]);
|
|
340
350
|
}
|
|
341
|
-
function
|
|
342
|
-
|
|
343
|
-
|
|
351
|
+
function normalizeWitnessScript(input) {
|
|
352
|
+
return input ? ensureBytes(input) : Uint8Array.from(DEFAULT_WITNESS_SCRIPT);
|
|
353
|
+
}
|
|
354
|
+
function pqPublicKeyToAuthDescriptor(publicKey) {
|
|
355
|
+
return concatBytes(Uint8Array.from([PQ_AUTH_TYPE]), hash160(publicKey));
|
|
356
|
+
}
|
|
357
|
+
function pqPublicKeyToCommitment(publicKey, options = {}) {
|
|
358
|
+
return pqPublicKeyToCommitmentParts(publicKey, options).commitment;
|
|
359
|
+
}
|
|
360
|
+
function pqPublicKeyToCommitmentParts(publicKey, options = {}) {
|
|
361
|
+
const witnessScript = normalizeWitnessScript(options.witnessScript);
|
|
362
|
+
const authDescriptor = pqPublicKeyToAuthDescriptor(publicKey);
|
|
363
|
+
const witnessScriptHash = sha256Hash(witnessScript);
|
|
364
|
+
const commitment = taggedHash(AUTHSCRIPT_TAG, concatBytes(Uint8Array.from([AUTHSCRIPT_VERSION]), authDescriptor, witnessScriptHash));
|
|
365
|
+
return {
|
|
366
|
+
authDescriptor,
|
|
367
|
+
authType: PQ_AUTH_TYPE,
|
|
368
|
+
commitment,
|
|
369
|
+
witnessScript,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
function pqPublicKeyToAddressBytes(publicKey, network, options = {}) {
|
|
373
|
+
return bech32mEncode(network.hrp, network.witnessVersion, pqPublicKeyToCommitment(publicKey, options));
|
|
344
374
|
}
|
|
345
375
|
function normalizePublicKey(input) {
|
|
346
376
|
return ensureBytes(input);
|
|
@@ -502,8 +532,8 @@ const pqNetworks = {
|
|
|
502
532
|
hrp: "tnq",
|
|
503
533
|
witnessVersion: 1,
|
|
504
534
|
purpose: 100,
|
|
505
|
-
coinType:
|
|
506
|
-
changeIndex:
|
|
535
|
+
coinType: 1,
|
|
536
|
+
changeIndex: 0,
|
|
507
537
|
bip32: { private: 70615956, public: 70617039 },
|
|
508
538
|
},
|
|
509
539
|
};
|
|
@@ -600,7 +630,7 @@ function getPQHDKey(network, mnemonic, passphrase = "") {
|
|
|
600
630
|
const seed = mnemonicToSeedBytes(mnemonicToSeedSync, mnemonic, passphrase);
|
|
601
631
|
return HDKey.fromMasterSeed(seed, chain.bip32);
|
|
602
632
|
}
|
|
603
|
-
function getPQAddressByPath(network, hdKey, path) {
|
|
633
|
+
function getPQAddressByPath(network, hdKey, path, options = {}) {
|
|
604
634
|
const chain = getPQNetwork(network);
|
|
605
635
|
const derived = hdKey.derive(path);
|
|
606
636
|
if (!derived.privateKey) {
|
|
@@ -608,30 +638,50 @@ function getPQAddressByPath(network, hdKey, path) {
|
|
|
608
638
|
}
|
|
609
639
|
const seed32 = Uint8Array.from(derived.privateKey);
|
|
610
640
|
const { publicKey, secretKey } = ml_dsa44.keygen(seed32);
|
|
641
|
+
const authScript = pqPublicKeyToCommitmentParts(publicKey, options);
|
|
611
642
|
return {
|
|
612
|
-
address: pqPublicKeyToAddressBytes(publicKey, chain),
|
|
643
|
+
address: pqPublicKeyToAddressBytes(publicKey, chain, options),
|
|
644
|
+
authType: authScript.authType,
|
|
645
|
+
authDescriptor: bytesToHex(authScript.authDescriptor),
|
|
646
|
+
commitment: bytesToHex(authScript.commitment),
|
|
613
647
|
path,
|
|
614
648
|
publicKey: bytesToHex(publicKey),
|
|
615
649
|
privateKey: bytesToHex(secretKey),
|
|
616
650
|
seedKey: bytesToHex(seed32),
|
|
651
|
+
witnessScript: bytesToHex(authScript.witnessScript),
|
|
617
652
|
};
|
|
618
653
|
}
|
|
619
|
-
function getPQAddress(network, mnemonic, account, index, passphrase = "") {
|
|
654
|
+
function getPQAddress(network, mnemonic, account, index, passphrase = "", options = {}) {
|
|
620
655
|
const chain = getPQNetwork(network);
|
|
621
656
|
const hdKey = getPQHDKey(network, mnemonic, passphrase);
|
|
622
657
|
const path = `m/${chain.purpose}'/${chain.coinType}'/${account}'/${chain.changeIndex}/${index}`;
|
|
623
|
-
return getPQAddressByPath(network, hdKey, path);
|
|
658
|
+
return getPQAddressByPath(network, hdKey, path, options);
|
|
659
|
+
}
|
|
660
|
+
function pqPublicKeyToAddress(network, publicKey, options = {}) {
|
|
661
|
+
const keyBytes = ensureBytes(publicKey);
|
|
662
|
+
if (keyBytes.length !== 1312) {
|
|
663
|
+
throw new Error("ML-DSA-44 public key must be 1312 bytes");
|
|
664
|
+
}
|
|
665
|
+
normalizeWitnessScript(options.witnessScript);
|
|
666
|
+
return pqPublicKeyToAddressBytes(keyBytes, getPQNetwork(network), options);
|
|
667
|
+
}
|
|
668
|
+
function pqPublicKeyToCommitmentHex(publicKey, options = {}) {
|
|
669
|
+
const keyBytes = ensureBytes(publicKey);
|
|
670
|
+
if (keyBytes.length !== 1312) {
|
|
671
|
+
throw new Error("ML-DSA-44 public key must be 1312 bytes");
|
|
672
|
+
}
|
|
673
|
+
return bytesToHex(pqPublicKeyToCommitment(keyBytes, options));
|
|
624
674
|
}
|
|
625
|
-
function
|
|
675
|
+
function pqPublicKeyToAuthDescriptorHex(publicKey) {
|
|
626
676
|
const keyBytes = ensureBytes(publicKey);
|
|
627
677
|
if (keyBytes.length !== 1312) {
|
|
628
678
|
throw new Error("ML-DSA-44 public key must be 1312 bytes");
|
|
629
679
|
}
|
|
630
|
-
return
|
|
680
|
+
return bytesToHex(pqPublicKeyToAuthDescriptor(keyBytes));
|
|
631
681
|
}
|
|
632
|
-
function generatePQAddressObject(network = "xna-pq", passphrase = "") {
|
|
682
|
+
function generatePQAddressObject(network = "xna-pq", passphrase = "", options = {}) {
|
|
633
683
|
const mnemonic = generateMnemonic();
|
|
634
|
-
const addressObj = getPQAddress(network, mnemonic, 0, 0, passphrase);
|
|
684
|
+
const addressObj = getPQAddress(network, mnemonic, 0, 0, passphrase, options);
|
|
635
685
|
return {
|
|
636
686
|
...addressObj,
|
|
637
687
|
mnemonic,
|
|
@@ -654,8 +704,10 @@ const NeuraiKey = {
|
|
|
654
704
|
getPQAddressByPath,
|
|
655
705
|
getPQHDKey,
|
|
656
706
|
pqPublicKeyToAddress,
|
|
707
|
+
pqPublicKeyToAuthDescriptorHex,
|
|
708
|
+
pqPublicKeyToCommitmentHex,
|
|
657
709
|
generatePQAddressObject,
|
|
658
710
|
};
|
|
659
711
|
|
|
660
|
-
export { NeuraiKey as default, entropyToMnemonic, generateAddress, generateAddressObject, generateMnemonic, generatePQAddressObject, getAddressByPath, getAddressByWIF, getAddressPair, getCoinType, getHDKey, getPQAddress, getPQAddressByPath, getPQHDKey, getPubkeyByWIF, isMnemonicValid, pqPublicKeyToAddress, publicKeyToAddress };
|
|
712
|
+
export { NeuraiKey as default, entropyToMnemonic, generateAddress, generateAddressObject, generateMnemonic, generatePQAddressObject, getAddressByPath, getAddressByWIF, getAddressPair, getCoinType, getHDKey, getPQAddress, getPQAddressByPath, getPQHDKey, getPubkeyByWIF, isMnemonicValid, pqPublicKeyToAddress, pqPublicKeyToAuthDescriptorHex, pqPublicKeyToCommitmentHex, publicKeyToAddress };
|
|
661
713
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/@scure/base/index.js","../src/shared/bytes.ts","../src/shared/address.ts","../src/shared/hdkey.ts","../src/shared/networks.ts","../src/shared/api.ts"],"sourcesContent":["/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n}\nfunction isArrayOf(isString, arr) {\n if (!Array.isArray(arr))\n return false;\n if (arr.length === 0)\n return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n }\n else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\nfunction afn(input) {\n if (typeof input !== 'function')\n throw new Error('function expected');\n return true;\n}\nfunction astr(label, input) {\n if (typeof input !== 'string')\n throw new Error(`${label}: string expected`);\n return true;\n}\nfunction anumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`invalid integer: ${n}`);\n}\nfunction aArr(input) {\n if (!Array.isArray(input))\n throw new Error('array expected');\n}\nfunction astrArr(label, input) {\n if (!isArrayOf(true, input))\n throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label, input) {\n if (!isArrayOf(false, input))\n throw new Error(`${label}: array of numbers expected`);\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n const id = (a) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a, b) => (c) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters) {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(`alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`);\n return lettersA[i];\n });\n },\n decode: (input) => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data) {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0)\n throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n afn(fn);\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data, from, to) {\n // base 1 is impossible\n if (from < 2)\n throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from)\n throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i];\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!rounded)\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\nconst powers = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++)\n res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data, from, to, padding) {\n aArr(data);\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from];\n const mask = powers[to] - 1;\n const res = [];\n for (const n of data) {\n anumber(n);\n if (n >= max)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined)\n throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry > 0)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n anumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n afn(fn);\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n anumber(len);\n afn(fn);\n return {\n encode(data) {\n if (!isBytes(data))\n throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data) {\n if (!isBytes(data))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), join(''));\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), join(''));\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === 'function' &&\n typeof Uint8Array.fromBase64 === 'function')();\nconst decodeBase64Builtin = (s, isUrl) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s))\n throw new Error('invalid base64');\n return Uint8Array.fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64 = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => chain(radix(58), alphabet(abc), join(''));\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words))\n words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0)\n throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n }\n function decode(str, limit = 90) {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n function encodeFromBytes(prefix, bytes) {\n return encode(prefix, toWords(bytes));\n }\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32 = genBech32('bech32');\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m = genBech32('bech32m');\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === 'function' &&\n typeof Uint8Array.fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin = {\n encode(data) { abytes(data); return data.toHex(); },\n decode(s) { astr('hex', s); return Uint8Array.fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex = hasHexBuiltin\n ? hexBuiltin\n : chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n }));\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n/** @deprecated */\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!isBytes(bytes))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n/** @deprecated */\nexport const str = bytesToString; // as in python, but for bytes only\n/** @deprecated */\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes = stringToBytes;\n//# sourceMappingURL=index.js.map","import { base58 } from \"@scure/base\";\nimport { ripemd160 } from \"@noble/hashes/legacy.js\";\nimport { hmac } from \"@noble/hashes/hmac.js\";\nimport { sha256, sha512 } from \"@noble/hashes/sha2.js\";\nimport { bytesToHex as nobleBytesToHex, concatBytes as nobleConcatBytes, hexToBytes as nobleHexToBytes, utf8ToBytes } from \"@noble/hashes/utils.js\";\n\nexport const HARDENED_OFFSET = 0x80000000;\nexport const SECP256K1_ORDER = BigInt(\"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\");\n\nexport function bytesToHex(bytes: Uint8Array): string {\n return nobleBytesToHex(bytes);\n}\n\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n return nobleConcatBytes(...arrays);\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n return nobleHexToBytes(hex);\n}\n\nexport function ensureBytes(input: Uint8Array | string): Uint8Array {\n return typeof input === \"string\" ? hexToBytes(input) : Uint8Array.from(input);\n}\n\nexport function numberToBytesBE(value: bigint, length: number): Uint8Array {\n const bytes = new Uint8Array(length);\n let current = value;\n\n for (let index = length - 1; index >= 0; index -= 1) {\n bytes[index] = Number(current & 0xffn);\n current >>= 8n;\n }\n\n return bytes;\n}\n\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n let value = 0n;\n for (const byte of bytes) {\n value = (value << 8n) + BigInt(byte);\n }\n return value;\n}\n\nexport function uint32ToBytesBE(value: number): Uint8Array {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer);\n view.setUint32(0, value, false);\n return bytes;\n}\n\nexport function hash160(data: Uint8Array): Uint8Array {\n return ripemd160(sha256(data));\n}\n\nexport function doubleSha256(data: Uint8Array): Uint8Array {\n return sha256(sha256(data));\n}\n\nexport function hmacSha512(key: Uint8Array, data: Uint8Array): Uint8Array {\n return hmac(sha512, key, data);\n}\n\nexport function base58CheckEncode(payload: Uint8Array): string {\n const checksum = doubleSha256(payload).slice(0, 4);\n return base58.encode(concatBytes(payload, checksum));\n}\n\nexport function base58CheckDecode(value: string): Uint8Array {\n const decoded = Uint8Array.from(base58.decode(value));\n if (decoded.length < 5) {\n throw new Error(\"Invalid Base58Check payload\");\n }\n\n const payload = decoded.slice(0, -4);\n const checksum = decoded.slice(-4);\n const expected = doubleSha256(payload).slice(0, 4);\n\n for (let index = 0; index < 4; index += 1) {\n if (checksum[index] !== expected[index]) {\n throw new Error(\"Invalid Base58Check checksum\");\n }\n }\n\n return payload;\n}\n\nexport function bigIntMod(value: bigint, modulo: bigint): bigint {\n const remainder = value % modulo;\n return remainder >= 0n ? remainder : remainder + modulo;\n}\n\nexport function isValidPrivateKey(privateKey: Uint8Array): boolean {\n if (privateKey.length !== 32) {\n return false;\n }\n\n const value = bytesToNumberBE(privateKey);\n return value > 0n && value < SECP256K1_ORDER;\n}\n\nexport function normalizeString(input: string): string {\n return input.normalize(\"NFKD\");\n}\n\nexport function mnemonicToSeedBytes(mnemonicToSeedSync: (mnemonic: string, password?: string) => Uint8Array, mnemonic: string, passphrase: string): Uint8Array {\n return Uint8Array.from(mnemonicToSeedSync(mnemonic, passphrase));\n}\n\nexport const BITCOIN_SEED_KEY = utf8ToBytes(\"Bitcoin seed\");\nexport const HASH160_PREFIX = Uint8Array.from([0x05]);\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { bech32m } from \"bech32\";\nimport { base58CheckDecode, base58CheckEncode, bytesToHex, concatBytes, ensureBytes, HASH160_PREFIX, hash160 } from \"./bytes.js\";\nimport type { AddressVersions, PQNetworkConfig } from \"./networks.js\";\n\nexport function encodeWIF(privateKey: Uint8Array, version: number, compressed = true): string {\n const payload = compressed\n ? concatBytes(Uint8Array.from([version]), privateKey, Uint8Array.from([0x01]))\n : concatBytes(Uint8Array.from([version]), privateKey);\n\n return base58CheckEncode(payload);\n}\n\nexport function decodeWIF(wif: string): { privateKey: Uint8Array; version: number; compressed: boolean } {\n const payload = base58CheckDecode(wif);\n if (payload.length !== 33 && payload.length !== 34) {\n throw new Error(\"Invalid WIF length\");\n }\n\n const version = payload[0];\n const compressed = payload.length === 34;\n\n if (compressed && payload[payload.length - 1] !== 0x01) {\n throw new Error(\"Invalid compressed WIF payload\");\n }\n\n return {\n version,\n privateKey: payload.slice(1, 33),\n compressed,\n };\n}\n\nexport function getCompressedPublicKey(privateKey: Uint8Array): Uint8Array {\n return secp256k1.getPublicKey(privateKey, true);\n}\n\nexport function publicKeyToAddressBytes(publicKey: Uint8Array, versions: AddressVersions): string {\n return base58CheckEncode(concatBytes(Uint8Array.from([versions.public]), hash160(publicKey)));\n}\n\nexport function privateKeyToAddressObject(privateKey: Uint8Array, versions: AddressVersions, path: string) {\n const publicKey = getCompressedPublicKey(privateKey);\n return {\n address: publicKeyToAddressBytes(publicKey, versions),\n path,\n publicKey: bytesToHex(publicKey),\n privateKey: bytesToHex(privateKey),\n WIF: encodeWIF(privateKey, versions.private),\n };\n}\n\nexport function addressObjectFromWIF(wif: string, versions: AddressVersions) {\n const decoded = decodeWIF(wif);\n const publicKey = decoded.compressed\n ? secp256k1.getPublicKey(decoded.privateKey, true)\n : secp256k1.getPublicKey(decoded.privateKey, false);\n\n return {\n address: publicKeyToAddressBytes(publicKey, versions),\n privateKey: bytesToHex(decoded.privateKey),\n WIF: encodeWIF(decoded.privateKey, versions.private, decoded.compressed),\n };\n}\n\nexport function publicKeyHexFromWIF(wif: string, compressed = true): string {\n const decoded = decodeWIF(wif);\n return bytesToHex(secp256k1.getPublicKey(decoded.privateKey, compressed && decoded.compressed));\n}\n\nexport function bech32mEncode(hrp: string, witnessVersion: number, hash: Uint8Array): string {\n return bech32m.encode(hrp, [witnessVersion, ...bech32m.toWords(hash)]);\n}\n\nexport function pqPublicKeyToAddressBytes(publicKey: Uint8Array, network: PQNetworkConfig): string {\n const serialized = concatBytes(HASH160_PREFIX, publicKey);\n return bech32mEncode(network.hrp, network.witnessVersion, hash160(serialized));\n}\n\nexport function normalizePublicKey(input: Uint8Array | string): Uint8Array {\n return ensureBytes(input);\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { base58CheckEncode, bigIntMod, BITCOIN_SEED_KEY, bytesToHex, bytesToNumberBE, concatBytes, HARDENED_OFFSET, hash160, hmacSha512, isValidPrivateKey, numberToBytesBE, SECP256K1_ORDER, uint32ToBytesBE } from \"./bytes.js\";\nimport type { Bip32Versions } from \"./networks.js\";\n\nfunction ensureValidTweak(tweak: Uint8Array): bigint {\n const tweakValue = bytesToNumberBE(tweak);\n if (tweakValue === 0n || tweakValue >= SECP256K1_ORDER) {\n throw new Error(\"Invalid BIP32 tweak\");\n }\n return tweakValue;\n}\n\nfunction serializeExtendedKey(version: number, depth: number, parentFingerprint: number, index: number, chainCode: Uint8Array, keyData: Uint8Array): Uint8Array {\n return concatBytes(\n uint32ToBytesBE(version),\n Uint8Array.from([depth]),\n uint32ToBytesBE(parentFingerprint),\n uint32ToBytesBE(index),\n chainCode,\n keyData,\n );\n}\n\nexport class HDKey {\n versions: Bip32Versions;\n depth: number;\n index: number;\n chainCode: Uint8Array;\n parentFingerprint: number;\n privateKey?: Uint8Array;\n publicKey: Uint8Array;\n\n constructor(versions: Bip32Versions, chainCode: Uint8Array, publicKey: Uint8Array, privateKey?: Uint8Array, depth = 0, index = 0, parentFingerprint = 0) {\n this.versions = versions;\n this.depth = depth;\n this.index = index;\n this.chainCode = chainCode;\n this.parentFingerprint = parentFingerprint;\n this.privateKey = privateKey;\n this.publicKey = publicKey;\n }\n\n static fromMasterSeed(seed: Uint8Array, versions: Bip32Versions): HDKey {\n const I = hmacSha512(BITCOIN_SEED_KEY, seed);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n\n if (!isValidPrivateKey(IL)) {\n throw new Error(\"Invalid master seed\");\n }\n\n const publicKey = secp256k1.getPublicKey(IL, true);\n return new HDKey(versions, IR, publicKey, IL);\n }\n\n get fingerprint(): number {\n return new DataView(hash160(this.publicKey).buffer, hash160(this.publicKey).byteOffset, 4).getUint32(0, false);\n }\n\n get privateExtendedKey(): string | null {\n if (!this.privateKey) {\n return null;\n }\n const keyData = concatBytes(Uint8Array.from([0x00]), this.privateKey);\n return base58CheckEncode(serializeExtendedKey(this.versions.private, this.depth, this.parentFingerprint, this.index, this.chainCode, keyData));\n }\n\n get publicExtendedKey(): string {\n return base58CheckEncode(serializeExtendedKey(this.versions.public, this.depth, this.parentFingerprint, this.index, this.chainCode, this.publicKey));\n }\n\n derive(path: string): HDKey {\n if (path === \"m\" || path === \"M\" || path === \"m'\" || path === \"M'\") {\n return this;\n }\n\n const entries = path.split(\"/\");\n let current = this as HDKey;\n\n entries.forEach((entry, index) => {\n if (index === 0) {\n if (!/^[mM]{1}/.test(entry)) {\n throw new Error('Path must start with \"m\" or \"M\"');\n }\n return;\n }\n\n const hardened = entry.endsWith(\"'\");\n const childIndex = Number.parseInt(entry, 10);\n if (!Number.isFinite(childIndex) || childIndex >= HARDENED_OFFSET) {\n throw new Error(\"Invalid index\");\n }\n\n current = current.deriveChild(hardened ? childIndex + HARDENED_OFFSET : childIndex);\n });\n\n return current;\n }\n\n deriveChild(index: number): HDKey {\n const hardened = index >= HARDENED_OFFSET;\n const indexBytes = uint32ToBytesBE(index);\n const data = hardened\n ? (() => {\n if (!this.privateKey) {\n throw new Error(\"Could not derive hardened child key\");\n }\n return concatBytes(Uint8Array.from([0x00]), this.privateKey, indexBytes);\n })()\n : concatBytes(this.publicKey, indexBytes);\n\n const I = hmacSha512(this.chainCode, data);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n let tweak: bigint;\n\n try {\n tweak = ensureValidTweak(IL);\n } catch {\n return this.deriveChild(index + 1);\n }\n\n if (this.privateKey) {\n const childKey = bigIntMod(bytesToNumberBE(this.privateKey) + tweak, SECP256K1_ORDER);\n if (childKey === 0n) {\n return this.deriveChild(index + 1);\n }\n const privateKey = numberToBytesBE(childKey, 32);\n const publicKey = secp256k1.getPublicKey(privateKey, true);\n return new HDKey(this.versions, IR, publicKey, privateKey, this.depth + 1, index, this.fingerprint);\n }\n\n const tweakPoint = secp256k1.Point.BASE.multiply(tweak);\n const parentPoint = secp256k1.Point.fromHex(bytesToHex(this.publicKey));\n const childPoint = tweakPoint.add(parentPoint);\n if (childPoint.equals(secp256k1.Point.ZERO)) {\n return this.deriveChild(index + 1);\n }\n\n return new HDKey(this.versions, IR, childPoint.toBytes(true), undefined, this.depth + 1, index, this.fingerprint);\n }\n}\n","import { IAddressObject, IPQAddressObject, PQNetwork } from \"../../types.js\";\n\nexport type Network = \"xna\" | \"xna-test\" | \"xna-legacy\" | \"xna-legacy-test\";\n\nexport interface Bip32Versions {\n private: number;\n public: number;\n}\n\nexport interface AddressVersions {\n bip32: Bip32Versions;\n bip44: number;\n private: number;\n public: number;\n scripthash: number;\n}\n\nexport interface CurrentNetworkConfig {\n versions: AddressVersions;\n}\n\nexport interface PQNetworkConfig {\n hrp: string;\n witnessVersion: number;\n purpose: number;\n coinType: number;\n changeIndex: number;\n bip32: Bip32Versions;\n}\n\nconst currentNetworks: Record<Network, CurrentNetworkConfig> = {\n xna: {\n versions: {\n bip32: { private: 76066276, public: 76067358 },\n bip44: 1900,\n private: 128,\n public: 53,\n scripthash: 117,\n },\n },\n \"xna-test\": {\n versions: {\n bip32: { private: 70615956, public: 70617039 },\n bip44: 1,\n private: 239,\n public: 127,\n scripthash: 196,\n },\n },\n \"xna-legacy\": {\n versions: {\n bip32: { private: 76066276, public: 76067358 },\n bip44: 0,\n private: 128,\n public: 53,\n scripthash: 117,\n },\n },\n \"xna-legacy-test\": {\n versions: {\n bip32: { private: 70615956, public: 70617039 },\n bip44: 1,\n private: 239,\n public: 127,\n scripthash: 196,\n },\n },\n};\n\nconst pqNetworks: Record<PQNetwork, PQNetworkConfig> = {\n \"xna-pq\": {\n hrp: \"nq\",\n witnessVersion: 1,\n purpose: 100,\n coinType: 1900,\n changeIndex: 0,\n bip32: { private: 76066276, public: 76067358 },\n },\n \"xna-pq-test\": {\n hrp: \"tnq\",\n witnessVersion: 1,\n purpose: 100,\n coinType: 1900,\n changeIndex: 1,\n bip32: { private: 70615956, public: 70617039 },\n },\n};\n\nexport function getNetwork(name: Network): AddressVersions {\n const network = currentNetworks[name];\n if (!network) {\n throw new Error(`network must be of value ${Object.keys(currentNetworks).toString()}`);\n }\n return network.versions;\n}\n\nexport function getPQNetwork(name: PQNetwork): PQNetworkConfig {\n const network = pqNetworks[name];\n if (!network) {\n throw new Error(\"PQ network must be 'xna-pq' or 'xna-pq-test'\");\n }\n return network;\n}\n\nexport type { IAddressObject, IPQAddressObject, PQNetwork };\n","import {\n entropyToMnemonic as bip39EntropyToMnemonic,\n generateMnemonic as bip39GenerateMnemonic,\n mnemonicToSeedSync,\n validateMnemonic as bip39ValidateMnemonic,\n} from \"@scure/bip39\";\nimport { wordlist as czechWordlist } from \"@scure/bip39/wordlists/czech.js\";\nimport { wordlist as englishWordlist } from \"@scure/bip39/wordlists/english.js\";\nimport { wordlist as frenchWordlist } from \"@scure/bip39/wordlists/french.js\";\nimport { wordlist as italianWordlist } from \"@scure/bip39/wordlists/italian.js\";\nimport { wordlist as japaneseWordlist } from \"@scure/bip39/wordlists/japanese.js\";\nimport { wordlist as koreanWordlist } from \"@scure/bip39/wordlists/korean.js\";\nimport { wordlist as portugueseWordlist } from \"@scure/bip39/wordlists/portuguese.js\";\nimport { wordlist as spanishWordlist } from \"@scure/bip39/wordlists/spanish.js\";\nimport { wordlist as simplifiedChineseWordlist } from \"@scure/bip39/wordlists/simplified-chinese.js\";\nimport { ml_dsa44 } from \"@noble/post-quantum/ml-dsa.js\";\nimport { bytesToHex, ensureBytes, mnemonicToSeedBytes } from \"./bytes.js\";\nimport { addressObjectFromWIF, normalizePublicKey, pqPublicKeyToAddressBytes, privateKeyToAddressObject, publicKeyHexFromWIF, publicKeyToAddressBytes } from \"./address.js\";\nimport { HDKey } from \"./hdkey.js\";\nimport { getNetwork, getPQNetwork, type IAddressObject, type IPQAddressObject, type Network, type PQNetwork } from \"./networks.js\";\n\nexport type { IAddressObject, IPQAddressObject, Network, PQNetwork };\n\nconst mnemonicWordlists = [\n czechWordlist,\n englishWordlist,\n spanishWordlist,\n frenchWordlist,\n italianWordlist,\n japaneseWordlist,\n koreanWordlist,\n portugueseWordlist,\n simplifiedChineseWordlist,\n];\n\nexport function getCoinType(network: Network) {\n return getNetwork(network).bip44;\n}\n\nexport function getAddressPair(\n network: Network,\n mnemonic: string,\n account: number,\n position: number,\n passphrase = \"\",\n) {\n const hdKey = getHDKey(network, mnemonic, passphrase);\n const coinType = getCoinType(network);\n const externalPath = `m/44'/${coinType}'/${account}'/0/${position}`;\n const internalPath = `m/44'/${coinType}'/${account}'/1/${position}`;\n\n return {\n internal: getAddressByPath(network, hdKey, internalPath),\n external: getAddressByPath(network, hdKey, externalPath),\n position,\n };\n}\n\nexport function getHDKey(network: Network, mnemonic: string, passphrase = \"\"): HDKey {\n const chain = getNetwork(network);\n const seed = mnemonicToSeedBytes(mnemonicToSeedSync, mnemonic, passphrase);\n return HDKey.fromMasterSeed(seed, chain.bip32);\n}\n\nexport function getAddressByPath(network: Network, hdKey: HDKey, path: string): IAddressObject {\n const chain = getNetwork(network);\n const derived = hdKey.derive(path);\n if (!derived.privateKey) {\n throw new Error(\"Could not derive private key for path\");\n }\n return privateKeyToAddressObject(derived.privateKey, chain, path);\n}\n\nexport function generateMnemonic() {\n return bip39GenerateMnemonic(englishWordlist);\n}\n\nexport function isMnemonicValid(mnemonic: string) {\n return mnemonicWordlists.some((wordlist) => bip39ValidateMnemonic(mnemonic, wordlist));\n}\n\nexport function getAddressByWIF(network: Network, privateKeyWIF: string) {\n return addressObjectFromWIF(privateKeyWIF, getNetwork(network));\n}\n\nexport function getPubkeyByWIF(_network: Network, privateKeyWIF: string): string {\n return publicKeyHexFromWIF(privateKeyWIF);\n}\n\nexport function entropyToMnemonic(entropy: Uint8Array | string): string {\n const normalized = typeof entropy === \"string\" ? ensureBytes(entropy) : entropy;\n return bip39EntropyToMnemonic(normalized, englishWordlist);\n}\n\nexport function generateAddressObject(network: Network = \"xna\", passphrase = \"\"): IAddressObject {\n const mnemonic = generateMnemonic();\n const addressObject = getAddressPair(network, mnemonic, 0, 0, passphrase).external;\n return {\n ...addressObject,\n mnemonic,\n network,\n };\n}\n\nexport function publicKeyToAddress(network: Network, publicKey: Uint8Array | string): string {\n const keyBytes = normalizePublicKey(publicKey);\n if (keyBytes.length !== 33 && keyBytes.length !== 65) {\n throw new Error(\"Public key must be 33 or 65 bytes\");\n }\n return publicKeyToAddressBytes(keyBytes, getNetwork(network));\n}\n\nexport function generateAddress(network: Network = \"xna\") {\n return generateAddressObject(network);\n}\n\nexport function getPQHDKey(network: PQNetwork, mnemonic: string, passphrase = \"\"): HDKey {\n const chain = getPQNetwork(network);\n const seed = mnemonicToSeedBytes(mnemonicToSeedSync, mnemonic, passphrase);\n return HDKey.fromMasterSeed(seed, chain.bip32);\n}\n\nexport function getPQAddressByPath(network: PQNetwork, hdKey: HDKey, path: string): IPQAddressObject {\n const chain = getPQNetwork(network);\n const derived = hdKey.derive(path);\n if (!derived.privateKey) {\n throw new Error(\"Could not derive private key for path\");\n }\n\n const seed32 = Uint8Array.from(derived.privateKey);\n const { publicKey, secretKey } = ml_dsa44.keygen(seed32);\n\n return {\n address: pqPublicKeyToAddressBytes(publicKey, chain),\n path,\n publicKey: bytesToHex(publicKey),\n privateKey: bytesToHex(secretKey),\n seedKey: bytesToHex(seed32),\n };\n}\n\nexport function getPQAddress(\n network: PQNetwork,\n mnemonic: string,\n account: number,\n index: number,\n passphrase = \"\",\n): IPQAddressObject {\n const chain = getPQNetwork(network);\n const hdKey = getPQHDKey(network, mnemonic, passphrase);\n const path = `m/${chain.purpose}'/${chain.coinType}'/${account}'/${chain.changeIndex}/${index}`;\n return getPQAddressByPath(network, hdKey, path);\n}\n\nexport function pqPublicKeyToAddress(network: PQNetwork, publicKey: Uint8Array | string): string {\n const keyBytes = ensureBytes(publicKey);\n if (keyBytes.length !== 1312) {\n throw new Error(\"ML-DSA-44 public key must be 1312 bytes\");\n }\n return pqPublicKeyToAddressBytes(keyBytes, getPQNetwork(network));\n}\n\nexport function generatePQAddressObject(network: PQNetwork = \"xna-pq\", passphrase = \"\"): IPQAddressObject {\n const mnemonic = generateMnemonic();\n const addressObj = getPQAddress(network, mnemonic, 0, 0, passphrase);\n return {\n ...addressObj,\n mnemonic,\n };\n}\n\nconst NeuraiKey = {\n entropyToMnemonic,\n generateAddress,\n generateAddressObject,\n generateMnemonic,\n getAddressByPath,\n getAddressByWIF,\n getPubkeyByWIF,\n getAddressPair,\n getCoinType,\n getHDKey,\n isMnemonicValid,\n publicKeyToAddress,\n getPQAddress,\n getPQAddressByPath,\n getPQHDKey,\n pqPublicKeyToAddress,\n generatePQAddressObject,\n};\n\nexport default NeuraiKey;\n"],"names":["nobleBytesToHex","nobleConcatBytes","nobleHexToBytes","czechWordlist","englishWordlist","spanishWordlist","frenchWordlist","italianWordlist","japaneseWordlist","koreanWordlist","portugueseWordlist","simplifiedChineseWordlist","bip39GenerateMnemonic","bip39ValidateMnemonic","bip39EntropyToMnemonic"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/@scure/base/index.js","../src/shared/bytes.ts","../src/shared/address.ts","../src/shared/hdkey.ts","../src/shared/networks.ts","../src/shared/api.ts"],"sourcesContent":["/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n}\nfunction isArrayOf(isString, arr) {\n if (!Array.isArray(arr))\n return false;\n if (arr.length === 0)\n return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n }\n else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\nfunction afn(input) {\n if (typeof input !== 'function')\n throw new Error('function expected');\n return true;\n}\nfunction astr(label, input) {\n if (typeof input !== 'string')\n throw new Error(`${label}: string expected`);\n return true;\n}\nfunction anumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`invalid integer: ${n}`);\n}\nfunction aArr(input) {\n if (!Array.isArray(input))\n throw new Error('array expected');\n}\nfunction astrArr(label, input) {\n if (!isArrayOf(true, input))\n throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label, input) {\n if (!isArrayOf(false, input))\n throw new Error(`${label}: array of numbers expected`);\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n const id = (a) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a, b) => (c) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters) {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(`alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`);\n return lettersA[i];\n });\n },\n decode: (input) => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data) {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0)\n throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n afn(fn);\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data, from, to) {\n // base 1 is impossible\n if (from < 2)\n throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from)\n throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i];\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!rounded)\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\nconst powers = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++)\n res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data, from, to, padding) {\n aArr(data);\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from];\n const mask = powers[to] - 1;\n const res = [];\n for (const n of data) {\n anumber(n);\n if (n >= max)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined)\n throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry > 0)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n anumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n afn(fn);\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n anumber(len);\n afn(fn);\n return {\n encode(data) {\n if (!isBytes(data))\n throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data) {\n if (!isBytes(data))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), join(''));\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), join(''));\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === 'function' &&\n typeof Uint8Array.fromBase64 === 'function')();\nconst decodeBase64Builtin = (s, isUrl) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s))\n throw new Error('invalid base64');\n return Uint8Array.fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64 = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => chain(radix(58), alphabet(abc), join(''));\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words))\n words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0)\n throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n }\n function decode(str, limit = 90) {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n function encodeFromBytes(prefix, bytes) {\n return encode(prefix, toWords(bytes));\n }\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32 = genBech32('bech32');\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m = genBech32('bech32m');\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === 'function' &&\n typeof Uint8Array.fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin = {\n encode(data) { abytes(data); return data.toHex(); },\n decode(s) { astr('hex', s); return Uint8Array.fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex = hasHexBuiltin\n ? hexBuiltin\n : chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n }));\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n/** @deprecated */\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!isBytes(bytes))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n/** @deprecated */\nexport const str = bytesToString; // as in python, but for bytes only\n/** @deprecated */\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes = stringToBytes;\n//# sourceMappingURL=index.js.map","import { base58 } from \"@scure/base\";\nimport { ripemd160 } from \"@noble/hashes/legacy.js\";\nimport { hmac } from \"@noble/hashes/hmac.js\";\nimport { sha256, sha512 } from \"@noble/hashes/sha2.js\";\nimport { bytesToHex as nobleBytesToHex, concatBytes as nobleConcatBytes, hexToBytes as nobleHexToBytes, utf8ToBytes } from \"@noble/hashes/utils.js\";\n\nexport const HARDENED_OFFSET = 0x80000000;\nexport const SECP256K1_ORDER = BigInt(\"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141\");\n\nexport function bytesToHex(bytes: Uint8Array): string {\n return nobleBytesToHex(bytes);\n}\n\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n return nobleConcatBytes(...arrays);\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n return nobleHexToBytes(hex);\n}\n\nexport function ensureBytes(input: Uint8Array | string): Uint8Array {\n return typeof input === \"string\" ? hexToBytes(input) : Uint8Array.from(input);\n}\n\nexport function numberToBytesBE(value: bigint, length: number): Uint8Array {\n const bytes = new Uint8Array(length);\n let current = value;\n\n for (let index = length - 1; index >= 0; index -= 1) {\n bytes[index] = Number(current & 0xffn);\n current >>= 8n;\n }\n\n return bytes;\n}\n\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n let value = 0n;\n for (const byte of bytes) {\n value = (value << 8n) + BigInt(byte);\n }\n return value;\n}\n\nexport function uint32ToBytesBE(value: number): Uint8Array {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer);\n view.setUint32(0, value, false);\n return bytes;\n}\n\nexport function hash160(data: Uint8Array): Uint8Array {\n return ripemd160(sha256(data));\n}\n\nexport function sha256Hash(data: Uint8Array): Uint8Array {\n return sha256(data);\n}\n\nexport function taggedHash(tag: string, data: Uint8Array): Uint8Array {\n const tagHash = sha256(utf8ToBytes(tag));\n return sha256(concatBytes(tagHash, tagHash, data));\n}\n\nexport function doubleSha256(data: Uint8Array): Uint8Array {\n return sha256(sha256(data));\n}\n\nexport function hmacSha512(key: Uint8Array, data: Uint8Array): Uint8Array {\n return hmac(sha512, key, data);\n}\n\nexport function base58CheckEncode(payload: Uint8Array): string {\n const checksum = doubleSha256(payload).slice(0, 4);\n return base58.encode(concatBytes(payload, checksum));\n}\n\nexport function base58CheckDecode(value: string): Uint8Array {\n const decoded = Uint8Array.from(base58.decode(value));\n if (decoded.length < 5) {\n throw new Error(\"Invalid Base58Check payload\");\n }\n\n const payload = decoded.slice(0, -4);\n const checksum = decoded.slice(-4);\n const expected = doubleSha256(payload).slice(0, 4);\n\n for (let index = 0; index < 4; index += 1) {\n if (checksum[index] !== expected[index]) {\n throw new Error(\"Invalid Base58Check checksum\");\n }\n }\n\n return payload;\n}\n\nexport function bigIntMod(value: bigint, modulo: bigint): bigint {\n const remainder = value % modulo;\n return remainder >= 0n ? remainder : remainder + modulo;\n}\n\nexport function isValidPrivateKey(privateKey: Uint8Array): boolean {\n if (privateKey.length !== 32) {\n return false;\n }\n\n const value = bytesToNumberBE(privateKey);\n return value > 0n && value < SECP256K1_ORDER;\n}\n\nexport function normalizeString(input: string): string {\n return input.normalize(\"NFKD\");\n}\n\nexport function mnemonicToSeedBytes(mnemonicToSeedSync: (mnemonic: string, password?: string) => Uint8Array, mnemonic: string, passphrase: string): Uint8Array {\n return Uint8Array.from(mnemonicToSeedSync(mnemonic, passphrase));\n}\n\nexport const BITCOIN_SEED_KEY = utf8ToBytes(\"Bitcoin seed\");\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { bech32m } from \"bech32\";\nimport { base58CheckDecode, base58CheckEncode, bytesToHex, concatBytes, ensureBytes, hash160, sha256Hash, taggedHash } from \"./bytes.js\";\nimport type { AddressVersions, PQNetworkConfig } from \"./networks.js\";\nimport type { PQAddressOptions } from \"../../types.js\";\n\nconst AUTHSCRIPT_TAG = \"NeuraiAuthScript\";\nconst AUTHSCRIPT_VERSION = 0x01;\nconst PQ_AUTH_TYPE = 0x01;\nconst DEFAULT_WITNESS_SCRIPT = Uint8Array.from([0x51]);\n\nexport function encodeWIF(privateKey: Uint8Array, version: number, compressed = true): string {\n const payload = compressed\n ? concatBytes(Uint8Array.from([version]), privateKey, Uint8Array.from([0x01]))\n : concatBytes(Uint8Array.from([version]), privateKey);\n\n return base58CheckEncode(payload);\n}\n\nexport function decodeWIF(wif: string): { privateKey: Uint8Array; version: number; compressed: boolean } {\n const payload = base58CheckDecode(wif);\n if (payload.length !== 33 && payload.length !== 34) {\n throw new Error(\"Invalid WIF length\");\n }\n\n const version = payload[0];\n const compressed = payload.length === 34;\n\n if (compressed && payload[payload.length - 1] !== 0x01) {\n throw new Error(\"Invalid compressed WIF payload\");\n }\n\n return {\n version,\n privateKey: payload.slice(1, 33),\n compressed,\n };\n}\n\nexport function getCompressedPublicKey(privateKey: Uint8Array): Uint8Array {\n return secp256k1.getPublicKey(privateKey, true);\n}\n\nexport function publicKeyToAddressBytes(publicKey: Uint8Array, versions: AddressVersions): string {\n return base58CheckEncode(concatBytes(Uint8Array.from([versions.public]), hash160(publicKey)));\n}\n\nexport function privateKeyToAddressObject(privateKey: Uint8Array, versions: AddressVersions, path: string) {\n const publicKey = getCompressedPublicKey(privateKey);\n return {\n address: publicKeyToAddressBytes(publicKey, versions),\n path,\n publicKey: bytesToHex(publicKey),\n privateKey: bytesToHex(privateKey),\n WIF: encodeWIF(privateKey, versions.private),\n };\n}\n\nexport function addressObjectFromWIF(wif: string, versions: AddressVersions) {\n const decoded = decodeWIF(wif);\n const publicKey = decoded.compressed\n ? secp256k1.getPublicKey(decoded.privateKey, true)\n : secp256k1.getPublicKey(decoded.privateKey, false);\n\n return {\n address: publicKeyToAddressBytes(publicKey, versions),\n privateKey: bytesToHex(decoded.privateKey),\n WIF: encodeWIF(decoded.privateKey, versions.private, decoded.compressed),\n };\n}\n\nexport function publicKeyHexFromWIF(wif: string, compressed = true): string {\n const decoded = decodeWIF(wif);\n return bytesToHex(secp256k1.getPublicKey(decoded.privateKey, compressed && decoded.compressed));\n}\n\nexport function bech32mEncode(hrp: string, witnessVersion: number, hash: Uint8Array): string {\n return bech32m.encode(hrp, [witnessVersion, ...bech32m.toWords(hash)]);\n}\n\nexport function normalizeWitnessScript(input?: Uint8Array | string): Uint8Array {\n return input ? ensureBytes(input) : Uint8Array.from(DEFAULT_WITNESS_SCRIPT);\n}\n\nexport function pqPublicKeyToAuthDescriptor(publicKey: Uint8Array): Uint8Array {\n return concatBytes(Uint8Array.from([PQ_AUTH_TYPE]), hash160(publicKey));\n}\n\nexport function pqPublicKeyToCommitment(publicKey: Uint8Array, options: PQAddressOptions = {}): Uint8Array {\n return pqPublicKeyToCommitmentParts(publicKey, options).commitment;\n}\n\nexport function pqPublicKeyToCommitmentParts(publicKey: Uint8Array, options: PQAddressOptions = {}) {\n const witnessScript = normalizeWitnessScript(options.witnessScript);\n const authDescriptor = pqPublicKeyToAuthDescriptor(publicKey);\n const witnessScriptHash = sha256Hash(witnessScript);\n const commitment = taggedHash(\n AUTHSCRIPT_TAG,\n concatBytes(\n Uint8Array.from([AUTHSCRIPT_VERSION]),\n authDescriptor,\n witnessScriptHash,\n ),\n );\n\n return {\n authDescriptor,\n authType: PQ_AUTH_TYPE,\n commitment,\n witnessScript,\n };\n}\n\nexport function pqPublicKeyToAddressBytes(publicKey: Uint8Array, network: PQNetworkConfig, options: PQAddressOptions = {}): string {\n return bech32mEncode(network.hrp, network.witnessVersion, pqPublicKeyToCommitment(publicKey, options));\n}\n\nexport function normalizePublicKey(input: Uint8Array | string): Uint8Array {\n return ensureBytes(input);\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { base58CheckEncode, bigIntMod, BITCOIN_SEED_KEY, bytesToHex, bytesToNumberBE, concatBytes, HARDENED_OFFSET, hash160, hmacSha512, isValidPrivateKey, numberToBytesBE, SECP256K1_ORDER, uint32ToBytesBE } from \"./bytes.js\";\nimport type { Bip32Versions } from \"./networks.js\";\n\nfunction ensureValidTweak(tweak: Uint8Array): bigint {\n const tweakValue = bytesToNumberBE(tweak);\n if (tweakValue === 0n || tweakValue >= SECP256K1_ORDER) {\n throw new Error(\"Invalid BIP32 tweak\");\n }\n return tweakValue;\n}\n\nfunction serializeExtendedKey(version: number, depth: number, parentFingerprint: number, index: number, chainCode: Uint8Array, keyData: Uint8Array): Uint8Array {\n return concatBytes(\n uint32ToBytesBE(version),\n Uint8Array.from([depth]),\n uint32ToBytesBE(parentFingerprint),\n uint32ToBytesBE(index),\n chainCode,\n keyData,\n );\n}\n\nexport class HDKey {\n versions: Bip32Versions;\n depth: number;\n index: number;\n chainCode: Uint8Array;\n parentFingerprint: number;\n privateKey?: Uint8Array;\n publicKey: Uint8Array;\n\n constructor(versions: Bip32Versions, chainCode: Uint8Array, publicKey: Uint8Array, privateKey?: Uint8Array, depth = 0, index = 0, parentFingerprint = 0) {\n this.versions = versions;\n this.depth = depth;\n this.index = index;\n this.chainCode = chainCode;\n this.parentFingerprint = parentFingerprint;\n this.privateKey = privateKey;\n this.publicKey = publicKey;\n }\n\n static fromMasterSeed(seed: Uint8Array, versions: Bip32Versions): HDKey {\n const I = hmacSha512(BITCOIN_SEED_KEY, seed);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n\n if (!isValidPrivateKey(IL)) {\n throw new Error(\"Invalid master seed\");\n }\n\n const publicKey = secp256k1.getPublicKey(IL, true);\n return new HDKey(versions, IR, publicKey, IL);\n }\n\n get fingerprint(): number {\n return new DataView(hash160(this.publicKey).buffer, hash160(this.publicKey).byteOffset, 4).getUint32(0, false);\n }\n\n get privateExtendedKey(): string | null {\n if (!this.privateKey) {\n return null;\n }\n const keyData = concatBytes(Uint8Array.from([0x00]), this.privateKey);\n return base58CheckEncode(serializeExtendedKey(this.versions.private, this.depth, this.parentFingerprint, this.index, this.chainCode, keyData));\n }\n\n get publicExtendedKey(): string {\n return base58CheckEncode(serializeExtendedKey(this.versions.public, this.depth, this.parentFingerprint, this.index, this.chainCode, this.publicKey));\n }\n\n derive(path: string): HDKey {\n if (path === \"m\" || path === \"M\" || path === \"m'\" || path === \"M'\") {\n return this;\n }\n\n const entries = path.split(\"/\");\n let current = this as HDKey;\n\n entries.forEach((entry, index) => {\n if (index === 0) {\n if (!/^[mM]{1}/.test(entry)) {\n throw new Error('Path must start with \"m\" or \"M\"');\n }\n return;\n }\n\n const hardened = entry.endsWith(\"'\");\n const childIndex = Number.parseInt(entry, 10);\n if (!Number.isFinite(childIndex) || childIndex >= HARDENED_OFFSET) {\n throw new Error(\"Invalid index\");\n }\n\n current = current.deriveChild(hardened ? childIndex + HARDENED_OFFSET : childIndex);\n });\n\n return current;\n }\n\n deriveChild(index: number): HDKey {\n const hardened = index >= HARDENED_OFFSET;\n const indexBytes = uint32ToBytesBE(index);\n const data = hardened\n ? (() => {\n if (!this.privateKey) {\n throw new Error(\"Could not derive hardened child key\");\n }\n return concatBytes(Uint8Array.from([0x00]), this.privateKey, indexBytes);\n })()\n : concatBytes(this.publicKey, indexBytes);\n\n const I = hmacSha512(this.chainCode, data);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n let tweak: bigint;\n\n try {\n tweak = ensureValidTweak(IL);\n } catch {\n return this.deriveChild(index + 1);\n }\n\n if (this.privateKey) {\n const childKey = bigIntMod(bytesToNumberBE(this.privateKey) + tweak, SECP256K1_ORDER);\n if (childKey === 0n) {\n return this.deriveChild(index + 1);\n }\n const privateKey = numberToBytesBE(childKey, 32);\n const publicKey = secp256k1.getPublicKey(privateKey, true);\n return new HDKey(this.versions, IR, publicKey, privateKey, this.depth + 1, index, this.fingerprint);\n }\n\n const tweakPoint = secp256k1.Point.BASE.multiply(tweak);\n const parentPoint = secp256k1.Point.fromHex(bytesToHex(this.publicKey));\n const childPoint = tweakPoint.add(parentPoint);\n if (childPoint.equals(secp256k1.Point.ZERO)) {\n return this.deriveChild(index + 1);\n }\n\n return new HDKey(this.versions, IR, childPoint.toBytes(true), undefined, this.depth + 1, index, this.fingerprint);\n }\n}\n","import { IAddressObject, IPQAddressObject, PQNetwork } from \"../../types.js\";\n\nexport type Network = \"xna\" | \"xna-test\" | \"xna-legacy\" | \"xna-legacy-test\";\n\nexport interface Bip32Versions {\n private: number;\n public: number;\n}\n\nexport interface AddressVersions {\n bip32: Bip32Versions;\n bip44: number;\n private: number;\n public: number;\n scripthash: number;\n}\n\nexport interface CurrentNetworkConfig {\n versions: AddressVersions;\n}\n\nexport interface PQNetworkConfig {\n hrp: string;\n witnessVersion: number;\n purpose: number;\n coinType: number;\n changeIndex: number;\n bip32: Bip32Versions;\n}\n\nconst currentNetworks: Record<Network, CurrentNetworkConfig> = {\n xna: {\n versions: {\n bip32: { private: 76066276, public: 76067358 },\n bip44: 1900,\n private: 128,\n public: 53,\n scripthash: 117,\n },\n },\n \"xna-test\": {\n versions: {\n bip32: { private: 70615956, public: 70617039 },\n bip44: 1,\n private: 239,\n public: 127,\n scripthash: 196,\n },\n },\n \"xna-legacy\": {\n versions: {\n bip32: { private: 76066276, public: 76067358 },\n bip44: 0,\n private: 128,\n public: 53,\n scripthash: 117,\n },\n },\n \"xna-legacy-test\": {\n versions: {\n bip32: { private: 70615956, public: 70617039 },\n bip44: 1,\n private: 239,\n public: 127,\n scripthash: 196,\n },\n },\n};\n\nconst pqNetworks: Record<PQNetwork, PQNetworkConfig> = {\n \"xna-pq\": {\n hrp: \"nq\",\n witnessVersion: 1,\n purpose: 100,\n coinType: 1900,\n changeIndex: 0,\n bip32: { private: 76066276, public: 76067358 },\n },\n \"xna-pq-test\": {\n hrp: \"tnq\",\n witnessVersion: 1,\n purpose: 100,\n coinType: 1,\n changeIndex: 0,\n bip32: { private: 70615956, public: 70617039 },\n },\n};\n\nexport function getNetwork(name: Network): AddressVersions {\n const network = currentNetworks[name];\n if (!network) {\n throw new Error(`network must be of value ${Object.keys(currentNetworks).toString()}`);\n }\n return network.versions;\n}\n\nexport function getPQNetwork(name: PQNetwork): PQNetworkConfig {\n const network = pqNetworks[name];\n if (!network) {\n throw new Error(\"PQ network must be 'xna-pq' or 'xna-pq-test'\");\n }\n return network;\n}\n\nexport type { IAddressObject, IPQAddressObject, PQNetwork };\n","import {\n entropyToMnemonic as bip39EntropyToMnemonic,\n generateMnemonic as bip39GenerateMnemonic,\n mnemonicToSeedSync,\n validateMnemonic as bip39ValidateMnemonic,\n} from \"@scure/bip39\";\nimport { wordlist as czechWordlist } from \"@scure/bip39/wordlists/czech.js\";\nimport { wordlist as englishWordlist } from \"@scure/bip39/wordlists/english.js\";\nimport { wordlist as frenchWordlist } from \"@scure/bip39/wordlists/french.js\";\nimport { wordlist as italianWordlist } from \"@scure/bip39/wordlists/italian.js\";\nimport { wordlist as japaneseWordlist } from \"@scure/bip39/wordlists/japanese.js\";\nimport { wordlist as koreanWordlist } from \"@scure/bip39/wordlists/korean.js\";\nimport { wordlist as portugueseWordlist } from \"@scure/bip39/wordlists/portuguese.js\";\nimport { wordlist as spanishWordlist } from \"@scure/bip39/wordlists/spanish.js\";\nimport { wordlist as simplifiedChineseWordlist } from \"@scure/bip39/wordlists/simplified-chinese.js\";\nimport { ml_dsa44 } from \"@noble/post-quantum/ml-dsa.js\";\nimport { bytesToHex, ensureBytes, mnemonicToSeedBytes } from \"./bytes.js\";\nimport { addressObjectFromWIF, normalizePublicKey, normalizeWitnessScript, pqPublicKeyToAddressBytes, pqPublicKeyToAuthDescriptor, pqPublicKeyToCommitment, pqPublicKeyToCommitmentParts, privateKeyToAddressObject, publicKeyHexFromWIF, publicKeyToAddressBytes } from \"./address.js\";\nimport { HDKey } from \"./hdkey.js\";\nimport { getNetwork, getPQNetwork, type IAddressObject, type IPQAddressObject, type Network, type PQNetwork } from \"./networks.js\";\nimport type { PQAddressOptions } from \"../../types.js\";\n\nexport type { IAddressObject, IPQAddressObject, Network, PQAddressOptions, PQNetwork };\n\nconst mnemonicWordlists = [\n czechWordlist,\n englishWordlist,\n spanishWordlist,\n frenchWordlist,\n italianWordlist,\n japaneseWordlist,\n koreanWordlist,\n portugueseWordlist,\n simplifiedChineseWordlist,\n];\n\nexport function getCoinType(network: Network) {\n return getNetwork(network).bip44;\n}\n\nexport function getAddressPair(\n network: Network,\n mnemonic: string,\n account: number,\n position: number,\n passphrase = \"\",\n) {\n const hdKey = getHDKey(network, mnemonic, passphrase);\n const coinType = getCoinType(network);\n const externalPath = `m/44'/${coinType}'/${account}'/0/${position}`;\n const internalPath = `m/44'/${coinType}'/${account}'/1/${position}`;\n\n return {\n internal: getAddressByPath(network, hdKey, internalPath),\n external: getAddressByPath(network, hdKey, externalPath),\n position,\n };\n}\n\nexport function getHDKey(network: Network, mnemonic: string, passphrase = \"\"): HDKey {\n const chain = getNetwork(network);\n const seed = mnemonicToSeedBytes(mnemonicToSeedSync, mnemonic, passphrase);\n return HDKey.fromMasterSeed(seed, chain.bip32);\n}\n\nexport function getAddressByPath(network: Network, hdKey: HDKey, path: string): IAddressObject {\n const chain = getNetwork(network);\n const derived = hdKey.derive(path);\n if (!derived.privateKey) {\n throw new Error(\"Could not derive private key for path\");\n }\n return privateKeyToAddressObject(derived.privateKey, chain, path);\n}\n\nexport function generateMnemonic() {\n return bip39GenerateMnemonic(englishWordlist);\n}\n\nexport function isMnemonicValid(mnemonic: string) {\n return mnemonicWordlists.some((wordlist) => bip39ValidateMnemonic(mnemonic, wordlist));\n}\n\nexport function getAddressByWIF(network: Network, privateKeyWIF: string) {\n return addressObjectFromWIF(privateKeyWIF, getNetwork(network));\n}\n\nexport function getPubkeyByWIF(_network: Network, privateKeyWIF: string): string {\n return publicKeyHexFromWIF(privateKeyWIF);\n}\n\nexport function entropyToMnemonic(entropy: Uint8Array | string): string {\n const normalized = typeof entropy === \"string\" ? ensureBytes(entropy) : entropy;\n return bip39EntropyToMnemonic(normalized, englishWordlist);\n}\n\nexport function generateAddressObject(network: Network = \"xna\", passphrase = \"\"): IAddressObject {\n const mnemonic = generateMnemonic();\n const addressObject = getAddressPair(network, mnemonic, 0, 0, passphrase).external;\n return {\n ...addressObject,\n mnemonic,\n network,\n };\n}\n\nexport function publicKeyToAddress(network: Network, publicKey: Uint8Array | string): string {\n const keyBytes = normalizePublicKey(publicKey);\n if (keyBytes.length !== 33 && keyBytes.length !== 65) {\n throw new Error(\"Public key must be 33 or 65 bytes\");\n }\n return publicKeyToAddressBytes(keyBytes, getNetwork(network));\n}\n\nexport function generateAddress(network: Network = \"xna\") {\n return generateAddressObject(network);\n}\n\nexport function getPQHDKey(network: PQNetwork, mnemonic: string, passphrase = \"\"): HDKey {\n const chain = getPQNetwork(network);\n const seed = mnemonicToSeedBytes(mnemonicToSeedSync, mnemonic, passphrase);\n return HDKey.fromMasterSeed(seed, chain.bip32);\n}\n\nexport function getPQAddressByPath(network: PQNetwork, hdKey: HDKey, path: string, options: PQAddressOptions = {}): IPQAddressObject {\n const chain = getPQNetwork(network);\n const derived = hdKey.derive(path);\n if (!derived.privateKey) {\n throw new Error(\"Could not derive private key for path\");\n }\n\n const seed32 = Uint8Array.from(derived.privateKey);\n const { publicKey, secretKey } = ml_dsa44.keygen(seed32);\n const authScript = pqPublicKeyToCommitmentParts(publicKey, options);\n\n return {\n address: pqPublicKeyToAddressBytes(publicKey, chain, options),\n authType: authScript.authType,\n authDescriptor: bytesToHex(authScript.authDescriptor),\n commitment: bytesToHex(authScript.commitment),\n path,\n publicKey: bytesToHex(publicKey),\n privateKey: bytesToHex(secretKey),\n seedKey: bytesToHex(seed32),\n witnessScript: bytesToHex(authScript.witnessScript),\n };\n}\n\nexport function getPQAddress(\n network: PQNetwork,\n mnemonic: string,\n account: number,\n index: number,\n passphrase = \"\",\n options: PQAddressOptions = {},\n): IPQAddressObject {\n const chain = getPQNetwork(network);\n const hdKey = getPQHDKey(network, mnemonic, passphrase);\n const path = `m/${chain.purpose}'/${chain.coinType}'/${account}'/${chain.changeIndex}/${index}`;\n return getPQAddressByPath(network, hdKey, path, options);\n}\n\nexport function pqPublicKeyToAddress(network: PQNetwork, publicKey: Uint8Array | string, options: PQAddressOptions = {}): string {\n const keyBytes = ensureBytes(publicKey);\n if (keyBytes.length !== 1312) {\n throw new Error(\"ML-DSA-44 public key must be 1312 bytes\");\n }\n normalizeWitnessScript(options.witnessScript);\n return pqPublicKeyToAddressBytes(keyBytes, getPQNetwork(network), options);\n}\n\nexport function pqPublicKeyToCommitmentHex(publicKey: Uint8Array | string, options: PQAddressOptions = {}): string {\n const keyBytes = ensureBytes(publicKey);\n if (keyBytes.length !== 1312) {\n throw new Error(\"ML-DSA-44 public key must be 1312 bytes\");\n }\n\n return bytesToHex(pqPublicKeyToCommitment(keyBytes, options));\n}\n\nexport function pqPublicKeyToAuthDescriptorHex(publicKey: Uint8Array | string): string {\n const keyBytes = ensureBytes(publicKey);\n if (keyBytes.length !== 1312) {\n throw new Error(\"ML-DSA-44 public key must be 1312 bytes\");\n }\n\n return bytesToHex(pqPublicKeyToAuthDescriptor(keyBytes));\n}\n\nexport function generatePQAddressObject(network: PQNetwork = \"xna-pq\", passphrase = \"\", options: PQAddressOptions = {}): IPQAddressObject {\n const mnemonic = generateMnemonic();\n const addressObj = getPQAddress(network, mnemonic, 0, 0, passphrase, options);\n return {\n ...addressObj,\n mnemonic,\n };\n}\n\nconst NeuraiKey = {\n entropyToMnemonic,\n generateAddress,\n generateAddressObject,\n generateMnemonic,\n getAddressByPath,\n getAddressByWIF,\n getPubkeyByWIF,\n getAddressPair,\n getCoinType,\n getHDKey,\n isMnemonicValid,\n publicKeyToAddress,\n getPQAddress,\n getPQAddressByPath,\n getPQHDKey,\n pqPublicKeyToAddress,\n pqPublicKeyToAuthDescriptorHex,\n pqPublicKeyToCommitmentHex,\n generatePQAddressObject,\n};\n\nexport default NeuraiKey;\n"],"names":["nobleBytesToHex","nobleConcatBytes","nobleHexToBytes","czechWordlist","englishWordlist","spanishWordlist","frenchWordlist","italianWordlist","japaneseWordlist","koreanWordlist","portugueseWordlist","simplifiedChineseWordlist","bip39GenerateMnemonic","bip39ValidateMnemonic","bip39EntropyToMnemonic"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,IAAI,OAAO,CAAC,YAAY,UAAU,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC;AACpG;AAMA,SAAS,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE;AAClC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAC3B,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;AACxB,QAAQ,OAAO,IAAI;AACnB,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC;AAC5D,IAAI;AACJ,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9D,IAAI;AACJ;AAMA,SAAS,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;AAC5B,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;AACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACpD,IAAI,OAAO,IAAI;AACf;AACA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD;AACA,SAAS,IAAI,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7B,QAAQ,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;AACzC;AACA,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AAC/B,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC9D;AACA,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;AAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC9D;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,GAAG,IAAI,EAAE;AACxB,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;AACvB;AACA,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;AAClE;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;AAC7D,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC3B;AACA,IAAI,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO;AAC9E,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM;AAC/B,IAAI,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;AACjC;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,CAAC,MAAM,KAAK;AAC5B,YAAY,IAAI,CAAC,MAAM,CAAC;AACxB,YAAY,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACrC,gBAAgB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG;AACjE,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,+CAA+C,EAAE,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAChH,gBAAgB,OAAO,QAAQ,CAAC,CAAC,CAAC;AAClC,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC;AACT,QAAQ,MAAM,EAAE,CAAC,KAAK,KAAK;AAC3B,YAAY,IAAI,CAAC,KAAK,CAAC;AACvB,YAAY,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AACzC,gBAAgB,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;AAC/C,gBAAgB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7C,gBAAgB,IAAI,CAAC,KAAK,SAAS;AACnC,oBAAoB,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AACvF,gBAAgB,OAAO,CAAC;AACxB,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE;AAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;AAC3B,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,CAAC,IAAI,KAAK;AAC1B,YAAY,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;AACxC,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACvC,QAAQ,CAAC;AACT,QAAQ,MAAM,EAAE,CAAC,EAAE,KAAK;AACxB,YAAY,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;AACnC,YAAY,OAAO,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AACtC,QAAQ,CAAC;AACT,KAAK;AACL;AAqCA;AACA;AACA;AACA,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;AACtC;AACA,IAAI,IAAI,IAAI,GAAG,CAAC;AAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,2BAA2B,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACzF,IAAI,IAAI,EAAE,GAAG,CAAC;AACd,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,yBAAyB,EAAE,EAAE,CAAC,4BAA4B,CAAC,CAAC;AACrF,IAAI,IAAI,CAAC,IAAI,CAAC;AACd,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;AACpB,QAAQ,OAAO,EAAE;AACjB,IAAI,IAAI,GAAG,GAAG,CAAC;AACf,IAAI,MAAM,GAAG,GAAG,EAAE;AAClB,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK;AAC3C,QAAQ,OAAO,CAAC,CAAC,CAAC;AAClB,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI;AAC9B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,QAAQ,OAAO,CAAC;AAChB,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM;AAC9B,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,KAAK,GAAG,CAAC;AACrB,QAAQ,IAAI,IAAI,GAAG,IAAI;AACvB,QAAQ,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AACzC,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACnC,YAAY,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK;AAC1C,YAAY,MAAM,SAAS,GAAG,SAAS,GAAG,KAAK;AAC/C,YAAY,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;AAChD,gBAAgB,SAAS,GAAG,IAAI,KAAK,KAAK;AAC1C,gBAAgB,SAAS,GAAG,KAAK,KAAK,SAAS,EAAE;AACjD,gBAAgB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AAC/D,YAAY;AACZ,YAAY,MAAM,GAAG,GAAG,SAAS,GAAG,EAAE;AACtC,YAAY,KAAK,GAAG,SAAS,GAAG,EAAE;AAClC,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC3C,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO;AAC/B,YAAY,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,EAAE,GAAG,KAAK,KAAK,SAAS;AACpF,gBAAgB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AAC/D,YAAY,IAAI,CAAC,IAAI;AACrB,gBAAgB;AAChB,iBAAiB,IAAI,CAAC,OAAO;AAC7B,gBAAgB,GAAG,GAAG,CAAC;AACvB;AACA,gBAAgB,IAAI,GAAG,KAAK;AAC5B,QAAQ;AACR,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,QAAQ,IAAI,IAAI;AAChB,YAAY;AACZ,IAAI;AACJ,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC7D,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACnB,IAAI,OAAO,GAAG,CAAC,OAAO,EAAE;AACxB;AAkDA;AACA;AACA;AACA,SAAS,KAAK,CAAC,GAAG,EAAE;AACpB,IAAI,OAAO,CAAC,GAAG,CAAC;AAChB,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;AACvB,IAAI,OAAO;AACX,QAAQ,MAAM,EAAE,CAAC,KAAK,KAAK;AAC3B,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,gBAAgB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AAC1E,YAAY,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC;AAC7D,QAAQ,CAAC;AACT,QAAQ,MAAM,EAAE,CAAC,MAAM,KAAK;AAC5B,YAAY,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC;AAC3C,YAAY,OAAO,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACnE,QAAQ,CAAC;AACT,KAAK;AACL;AA+MA;AACA;AACA,MAAM,SAAS,8BAA8B,CAAC,GAAG,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,SAAS,CAAC,4DAA4D,CAAC;;AC9dtF,MAAM,eAAe,GAAG,UAAU;AAClC,MAAM,eAAe,GAAG,MAAM,CAAC,oEAAoE,CAAC;AAErG,SAAU,UAAU,CAAC,KAAiB,EAAA;AAC1C,IAAA,OAAOA,YAAe,CAAC,KAAK,CAAC;AAC/B;AAEM,SAAU,WAAW,CAAC,GAAG,MAAoB,EAAA;AACjD,IAAA,OAAOC,aAAgB,CAAC,GAAG,MAAM,CAAC;AACpC;AAEM,SAAU,UAAU,CAAC,GAAW,EAAA;AACpC,IAAA,OAAOC,YAAe,CAAC,GAAG,CAAC;AAC7B;AAEM,SAAU,WAAW,CAAC,KAA0B,EAAA;IACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/E;AAEM,SAAU,eAAe,CAAC,KAAa,EAAE,MAAc,EAAA;AAC3D,IAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;IACpC,IAAI,OAAO,GAAG,KAAK;AAEnB,IAAA,KAAK,IAAI,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;QACnD,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACtC,OAAO,KAAK,EAAE;IAChB;AAEA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,eAAe,CAAC,KAAiB,EAAA;IAC/C,IAAI,KAAK,GAAG,EAAE;AACd,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC;IACtC;AACA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,eAAe,CAAC,KAAa,EAAA;AAC3C,IAAA,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IACvC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;AAC/B,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,OAAO,CAAC,IAAgB,EAAA;AACtC,IAAA,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC;AAEM,SAAU,UAAU,CAAC,IAAgB,EAAA;AACzC,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB;AAEM,SAAU,UAAU,CAAC,GAAW,EAAE,IAAgB,EAAA;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACpD;AAEM,SAAU,YAAY,CAAC,IAAgB,EAAA;AAC3C,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B;AAEM,SAAU,UAAU,CAAC,GAAe,EAAE,IAAgB,EAAA;IAC1D,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;AAChC;AAEM,SAAU,iBAAiB,CAAC,OAAmB,EAAA;AACnD,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACtD;AAEM,SAAU,iBAAiB,CAAC,KAAa,EAAA;AAC7C,IAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrD,IAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,QAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;IAChD;IAEA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AAClC,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAElD,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;QACzC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;QACjD;IACF;AAEA,IAAA,OAAO,OAAO;AAChB;AAEM,SAAU,SAAS,CAAC,KAAa,EAAE,MAAc,EAAA;AACrD,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM;AAChC,IAAA,OAAO,SAAS,IAAI,EAAE,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM;AACzD;AAEM,SAAU,iBAAiB,CAAC,UAAsB,EAAA;AACtD,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE;AAC5B,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC;AACzC,IAAA,OAAO,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,eAAe;AAC9C;SAMgB,mBAAmB,CAAC,kBAAuE,EAAE,QAAgB,EAAE,UAAkB,EAAA;IAC/I,OAAO,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAClE;AAEO,MAAM,gBAAgB,GAAG,WAAW,CAAC,cAAc,CAAC;;ACjH3D,MAAM,cAAc,GAAG,kBAAkB;AACzC,MAAM,kBAAkB,GAAG,IAAI;AAC/B,MAAM,YAAY,GAAG,IAAI;AACzB,MAAM,sBAAsB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAEhD,SAAU,SAAS,CAAC,UAAsB,EAAE,OAAe,EAAE,UAAU,GAAG,IAAI,EAAA;IAClF,MAAM,OAAO,GAAG;UACZ,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7E,UAAE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC;AAEvD,IAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC;AACnC;AAEM,SAAU,SAAS,CAAC,GAAW,EAAA;AACnC,IAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC;AACtC,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,EAAE;AAClD,QAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;IACvC;AAEA,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AAC1B,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,KAAK,EAAE;AAExC,IAAA,IAAI,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;AACtD,QAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;IACnD;IAEA,OAAO;QACL,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAChC,UAAU;KACX;AACH;AAEM,SAAU,sBAAsB,CAAC,UAAsB,EAAA;IAC3D,OAAO,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;AACjD;AAEM,SAAU,uBAAuB,CAAC,SAAqB,EAAE,QAAyB,EAAA;IACtF,OAAO,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/F;SAEgB,yBAAyB,CAAC,UAAsB,EAAE,QAAyB,EAAE,IAAY,EAAA;AACvG,IAAA,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,CAAC;IACpD,OAAO;AACL,QAAA,OAAO,EAAE,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC;QACrD,IAAI;AACJ,QAAA,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC;AAChC,QAAA,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;QAClC,GAAG,EAAE,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC;KAC7C;AACH;AAEM,SAAU,oBAAoB,CAAC,GAAW,EAAE,QAAyB,EAAA;AACzE,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC;AAC9B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC;UACtB,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI;UAC/C,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;IAErD,OAAO;AACL,QAAA,OAAO,EAAE,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC;AACrD,QAAA,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;AAC1C,QAAA,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;KACzE;AACH;SAEgB,mBAAmB,CAAC,GAAW,EAAE,UAAU,GAAG,IAAI,EAAA;AAChE,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC;AAC9B,IAAA,OAAO,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;AACjG;SAEgB,aAAa,CAAC,GAAW,EAAE,cAAsB,EAAE,IAAgB,EAAA;AACjF,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE;AAEM,SAAU,sBAAsB,CAAC,KAA2B,EAAA;AAChE,IAAA,OAAO,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAC7E;AAEM,SAAU,2BAA2B,CAAC,SAAqB,EAAA;AAC/D,IAAA,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AACzE;SAEgB,uBAAuB,CAAC,SAAqB,EAAE,UAA4B,EAAE,EAAA;IAC3F,OAAO,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,UAAU;AACpE;SAEgB,4BAA4B,CAAC,SAAqB,EAAE,UAA4B,EAAE,EAAA;IAChG,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,aAAa,CAAC;AACnE,IAAA,MAAM,cAAc,GAAG,2BAA2B,CAAC,SAAS,CAAC;AAC7D,IAAA,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC;IACnD,MAAM,UAAU,GAAG,UAAU,CAC3B,cAAc,EACd,WAAW,CACT,UAAU,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,EACrC,cAAc,EACd,iBAAiB,CAClB,CACF;IAED,OAAO;QACL,cAAc;AACd,QAAA,QAAQ,EAAE,YAAY;QACtB,UAAU;QACV,aAAa;KACd;AACH;AAEM,SAAU,yBAAyB,CAAC,SAAqB,EAAE,OAAwB,EAAE,UAA4B,EAAE,EAAA;AACvH,IAAA,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,EAAE,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACxG;AAEM,SAAU,kBAAkB,CAAC,KAA0B,EAAA;AAC3D,IAAA,OAAO,WAAW,CAAC,KAAK,CAAC;AAC3B;;ACnHA,SAAS,gBAAgB,CAAC,KAAiB,EAAA;AACzC,IAAA,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC;IACzC,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,IAAI,eAAe,EAAE;AACtD,QAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC;IACxC;AACA,IAAA,OAAO,UAAU;AACnB;AAEA,SAAS,oBAAoB,CAAC,OAAe,EAAE,KAAa,EAAE,iBAAyB,EAAE,KAAa,EAAE,SAAqB,EAAE,OAAmB,EAAA;AAChJ,IAAA,OAAO,WAAW,CAChB,eAAe,CAAC,OAAO,CAAC,EACxB,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EACxB,eAAe,CAAC,iBAAiB,CAAC,EAClC,eAAe,CAAC,KAAK,CAAC,EACtB,SAAS,EACT,OAAO,CACR;AACH;MAEa,KAAK,CAAA;AAShB,IAAA,WAAA,CAAY,QAAuB,EAAE,SAAqB,EAAE,SAAqB,EAAE,UAAuB,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,iBAAiB,GAAG,CAAC,EAAA;AACrJ,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC5B;AAEA,IAAA,OAAO,cAAc,CAAC,IAAgB,EAAE,QAAuB,EAAA;QAC7D,MAAM,CAAC,GAAG,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC;QAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAEtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC;QACxC;QAEA,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC;QAClD,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC;IAC/C;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;IAChH;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AACrE,QAAA,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChJ;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACtJ;AAEA,IAAA,MAAM,CAAC,IAAY,EAAA;AACjB,QAAA,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAClE,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/B,IAAI,OAAO,GAAG,IAAa;QAE3B,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AAC/B,YAAA,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3B,oBAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;gBACpD;gBACA;YACF;YAEA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YACpC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;AAC7C,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,eAAe,EAAE;AACjE,gBAAA,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC;YAClC;AAEA,YAAA,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,GAAG,UAAU,GAAG,eAAe,GAAG,UAAU,CAAC;AACrF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,eAAe;AACzC,QAAA,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC;QACzC,MAAM,IAAI,GAAG;cACT,CAAC,MAAK;AACN,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,oBAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;gBACxD;AACA,gBAAA,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;AAC1E,YAAA,CAAC;cACC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;QAE3C,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;QAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACtB,QAAA,IAAI,KAAa;AAEjB,QAAA,IAAI;AACF,YAAA,KAAK,GAAG,gBAAgB,CAAC,EAAE,CAAC;QAC9B;AAAE,QAAA,MAAM;YACN,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;QACpC;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,eAAe,CAAC;AACrF,YAAA,IAAI,QAAQ,KAAK,EAAE,EAAE;gBACnB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;YACpC;YACA,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;YAC1D,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;QACrG;AAEA,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvD,QAAA,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;QAC9C,IAAI,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;QACpC;AAEA,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;IACnH;AACD;;AC/GD,MAAM,eAAe,GAA0C;AAC7D,IAAA,GAAG,EAAE;AACH,QAAA,QAAQ,EAAE;YACR,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC9C,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACF,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,QAAQ,EAAE;YACR,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC9C,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACF,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,QAAQ,EAAE;YACR,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC9C,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACF,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,QAAQ,EAAE;YACR,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC9C,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACF,KAAA;CACF;AAED,MAAM,UAAU,GAAuC;AACrD,IAAA,QAAQ,EAAE;AACR,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,cAAc,EAAE,CAAC;AACjB,QAAA,OAAO,EAAE,GAAG;AACZ,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,WAAW,EAAE,CAAC;QACd,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC/C,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,cAAc,EAAE,CAAC;AACjB,QAAA,OAAO,EAAE,GAAG;AACZ,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,WAAW,EAAE,CAAC;QACd,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC/C,KAAA;CACF;AAEK,SAAU,UAAU,CAAC,IAAa,EAAA;AACtC,IAAA,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,CAAA,yBAAA,EAA4B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAA,CAAE,CAAC;IACxF;IACA,OAAO,OAAO,CAAC,QAAQ;AACzB;AAEM,SAAU,YAAY,CAAC,IAAe,EAAA;AAC1C,IAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;IACjE;AACA,IAAA,OAAO,OAAO;AAChB;;AC9EA,MAAM,iBAAiB,GAAG;IACxBC,QAAa;IACbC,UAAe;IACfC,UAAe;IACfC,UAAc;IACdC,UAAe;IACfC,UAAgB;IAChBC,UAAc;IACdC,UAAkB;IAClBC,UAAyB;CAC1B;AAEK,SAAU,WAAW,CAAC,OAAgB,EAAA;AAC1C,IAAA,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK;AAClC;AAEM,SAAU,cAAc,CAC5B,OAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,UAAU,GAAG,EAAE,EAAA;IAEf,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC;AACrD,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;IACrC,MAAM,YAAY,GAAG,CAAA,MAAA,EAAS,QAAQ,KAAK,OAAO,CAAA,IAAA,EAAO,QAAQ,CAAA,CAAE;IACnE,MAAM,YAAY,GAAG,CAAA,MAAA,EAAS,QAAQ,KAAK,OAAO,CAAA,IAAA,EAAO,QAAQ,CAAA,CAAE;IAEnE,OAAO;QACL,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC;QACxD,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC;QACxD,QAAQ;KACT;AACH;AAEM,SAAU,QAAQ,CAAC,OAAgB,EAAE,QAAgB,EAAE,UAAU,GAAG,EAAE,EAAA;AAC1E,IAAA,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;IACjC,MAAM,IAAI,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,UAAU,CAAC;IAC1E,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;AAChD;SAEgB,gBAAgB,CAAC,OAAgB,EAAE,KAAY,EAAE,IAAY,EAAA;AAC3E,IAAA,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAClC,IAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAC1D;IACA,OAAO,yBAAyB,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC;AACnE;SAEgB,gBAAgB,GAAA;AAC9B,IAAA,OAAOC,kBAAqB,CAACR,UAAe,CAAC;AAC/C;AAEM,SAAU,eAAe,CAAC,QAAgB,EAAA;AAC9C,IAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAKS,gBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACxF;AAEM,SAAU,eAAe,CAAC,OAAgB,EAAE,aAAqB,EAAA;IACrE,OAAO,oBAAoB,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACjE;AAEM,SAAU,cAAc,CAAC,QAAiB,EAAE,aAAqB,EAAA;AACrE,IAAA,OAAO,mBAAmB,CAAC,aAAa,CAAC;AAC3C;AAEM,SAAU,iBAAiB,CAAC,OAA4B,EAAA;AAC5D,IAAA,MAAM,UAAU,GAAG,OAAO,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,OAAO;AAC/E,IAAA,OAAOC,mBAAsB,CAAC,UAAU,EAAEV,UAAe,CAAC;AAC5D;AAEM,SAAU,qBAAqB,CAAC,OAAA,GAAmB,KAAK,EAAE,UAAU,GAAG,EAAE,EAAA;AAC7E,IAAA,MAAM,QAAQ,GAAG,gBAAgB,EAAE;AACnC,IAAA,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,QAAQ;IAClF,OAAO;AACL,QAAA,GAAG,aAAa;QAChB,QAAQ;QACR,OAAO;KACR;AACH;AAEM,SAAU,kBAAkB,CAAC,OAAgB,EAAE,SAA8B,EAAA;AACjF,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC;AAC9C,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE;AACpD,QAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;IACtD;IACA,OAAO,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/D;AAEM,SAAU,eAAe,CAAC,OAAA,GAAmB,KAAK,EAAA;AACtD,IAAA,OAAO,qBAAqB,CAAC,OAAO,CAAC;AACvC;AAEM,SAAU,UAAU,CAAC,OAAkB,EAAE,QAAgB,EAAE,UAAU,GAAG,EAAE,EAAA;AAC9E,IAAA,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC;IACnC,MAAM,IAAI,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,UAAU,CAAC;IAC1E,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;AAChD;AAEM,SAAU,kBAAkB,CAAC,OAAkB,EAAE,KAAY,EAAE,IAAY,EAAE,OAAA,GAA4B,EAAE,EAAA;AAC/G,IAAA,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAClC,IAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACvB,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAC1D;IAEA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AAClD,IAAA,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACxD,MAAM,UAAU,GAAG,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC;IAEnE,OAAO;QACL,OAAO,EAAE,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC;QAC7D,QAAQ,EAAE,UAAU,CAAC,QAAQ;AAC7B,QAAA,cAAc,EAAE,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC;AACrD,QAAA,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;QAC7C,IAAI;AACJ,QAAA,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC;AAChC,QAAA,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;AACjC,QAAA,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC;AAC3B,QAAA,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC;KACpD;AACH;SAEgB,YAAY,CAC1B,OAAkB,EAClB,QAAgB,EAChB,OAAe,EACf,KAAa,EACb,UAAU,GAAG,EAAE,EACf,UAA4B,EAAE,EAAA;AAE9B,IAAA,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC;AACvD,IAAA,MAAM,IAAI,GAAG,CAAA,EAAA,EAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,QAAQ,CAAA,EAAA,EAAK,OAAO,KAAK,KAAK,CAAC,WAAW,CAAA,CAAA,EAAI,KAAK,EAAE;IAC/F,OAAO,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;AAC1D;AAEM,SAAU,oBAAoB,CAAC,OAAkB,EAAE,SAA8B,EAAE,UAA4B,EAAE,EAAA;AACrH,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;AACvC,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE;AAC5B,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;IAC5D;AACA,IAAA,sBAAsB,CAAC,OAAO,CAAC,aAAa,CAAC;IAC7C,OAAO,yBAAyB,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;AAC5E;SAEgB,0BAA0B,CAAC,SAA8B,EAAE,UAA4B,EAAE,EAAA;AACvG,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;AACvC,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE;AAC5B,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;IAC5D;IAEA,OAAO,UAAU,CAAC,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC/D;AAEM,SAAU,8BAA8B,CAAC,SAA8B,EAAA;AAC3E,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;AACvC,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE;AAC5B,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;IAC5D;AAEA,IAAA,OAAO,UAAU,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AAC1D;AAEM,SAAU,uBAAuB,CAAC,OAAA,GAAqB,QAAQ,EAAE,UAAU,GAAG,EAAE,EAAE,OAAA,GAA4B,EAAE,EAAA;AACpH,IAAA,MAAM,QAAQ,GAAG,gBAAgB,EAAE;AACnC,IAAA,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC;IAC7E,OAAO;AACL,QAAA,GAAG,UAAU;QACb,QAAQ;KACT;AACH;AAEA,MAAM,SAAS,GAAG;IAChB,iBAAiB;IACjB,eAAe;IACf,qBAAqB;IACrB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,cAAc;IACd,WAAW;IACX,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,YAAY;IACZ,kBAAkB;IAClB,UAAU;IACV,oBAAoB;IACpB,8BAA8B;IAC9B,0BAA0B;IAC1B,uBAAuB;;;;;","x_google_ignoreList":[0]}
|