utxo-lib 1.1.5 → 8.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of utxo-lib might be problematic. Click here for more details.
- package/index.js +47 -0
- package/package.json +6 -80
- package/LICENSE +0 -21
- package/README.md +0 -59
- package/dist/src/address.d.ts +0 -11
- package/dist/src/address.d.ts.map +0 -1
- package/dist/src/address.js +0 -37
- package/dist/src/addressFormat.d.ts +0 -53
- package/dist/src/addressFormat.d.ts.map +0 -1
- package/dist/src/addressFormat.js +0 -110
- package/dist/src/bitgo/Musig2.d.ts +0 -51
- package/dist/src/bitgo/Musig2.d.ts.map +0 -1
- package/dist/src/bitgo/Musig2.js +0 -175
- package/dist/src/bitgo/Unspent.d.ts +0 -95
- package/dist/src/bitgo/Unspent.d.ts.map +0 -1
- package/dist/src/bitgo/Unspent.js +0 -138
- package/dist/src/bitgo/UtxoPsbt.d.ts +0 -132
- package/dist/src/bitgo/UtxoPsbt.d.ts.map +0 -1
- package/dist/src/bitgo/UtxoPsbt.js +0 -469
- package/dist/src/bitgo/UtxoTransaction.d.ts +0 -22
- package/dist/src/bitgo/UtxoTransaction.d.ts.map +0 -1
- package/dist/src/bitgo/UtxoTransaction.js +0 -97
- package/dist/src/bitgo/UtxoTransactionBuilder.d.ts +0 -26
- package/dist/src/bitgo/UtxoTransactionBuilder.d.ts.map +0 -1
- package/dist/src/bitgo/UtxoTransactionBuilder.js +0 -67
- package/dist/src/bitgo/bbc/DashPsbt.d.ts +0 -12
- package/dist/src/bitgo/bbc/DashPsbt.d.ts.map +0 -1
- package/dist/src/bitgo/bbc/DashPsbt.js +0 -27
- package/dist/src/bitgo/bbc/DashTransaction.d.ts +0 -39
- package/dist/src/bitgo/bbc/DashTransaction.d.ts.map +0 -1
- package/dist/src/bitgo/bbc/DashTransaction.js +0 -109
- package/dist/src/bitgo/bbc/DashTransactionBuilder.d.ts +0 -14
- package/dist/src/bitgo/bbc/DashTransactionBuilder.d.ts.map +0 -1
- package/dist/src/bitgo/bbc/DashTransactionBuilder.js +0 -28
- package/dist/src/bitgo/bbc/index.d.ts +0 -4
- package/dist/src/bitgo/bbc/index.d.ts.map +0 -1
- package/dist/src/bitgo/bbc/index.js +0 -16
- package/dist/src/bitgo/bitcoincash/address.d.ts +0 -35
- package/dist/src/bitgo/bitcoincash/address.d.ts.map +0 -1
- package/dist/src/bitgo/bitcoincash/address.js +0 -151
- package/dist/src/bitgo/bitcoincash/index.d.ts +0 -2
- package/dist/src/bitgo/bitcoincash/index.d.ts.map +0 -1
- package/dist/src/bitgo/bitcoincash/index.js +0 -14
- package/dist/src/bitgo/dash/DashPsbt.d.ts +0 -12
- package/dist/src/bitgo/dash/DashPsbt.d.ts.map +0 -1
- package/dist/src/bitgo/dash/DashPsbt.js +0 -27
- package/dist/src/bitgo/dash/DashTransaction.d.ts +0 -39
- package/dist/src/bitgo/dash/DashTransaction.d.ts.map +0 -1
- package/dist/src/bitgo/dash/DashTransaction.js +0 -109
- package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts +0 -14
- package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts.map +0 -1
- package/dist/src/bitgo/dash/DashTransactionBuilder.js +0 -28
- package/dist/src/bitgo/dash/index.d.ts +0 -4
- package/dist/src/bitgo/dash/index.d.ts.map +0 -1
- package/dist/src/bitgo/dash/index.js +0 -16
- package/dist/src/bitgo/index.d.ts +0 -17
- package/dist/src/bitgo/index.d.ts.map +0 -1
- package/dist/src/bitgo/index.js +0 -30
- package/dist/src/bitgo/keyutil.d.ts +0 -17
- package/dist/src/bitgo/keyutil.d.ts.map +0 -1
- package/dist/src/bitgo/keyutil.js +0 -37
- package/dist/src/bitgo/nonStandardHalfSigned.d.ts +0 -7
- package/dist/src/bitgo/nonStandardHalfSigned.d.ts.map +0 -1
- package/dist/src/bitgo/nonStandardHalfSigned.js +0 -56
- package/dist/src/bitgo/outputScripts.d.ts +0 -84
- package/dist/src/bitgo/outputScripts.d.ts.map +0 -1
- package/dist/src/bitgo/outputScripts.js +0 -297
- package/dist/src/bitgo/parseInput.d.ts +0 -92
- package/dist/src/bitgo/parseInput.d.ts.map +0 -1
- package/dist/src/bitgo/parseInput.js +0 -344
- package/dist/src/bitgo/psbt/fromHalfSigned.d.ts +0 -24
- package/dist/src/bitgo/psbt/fromHalfSigned.d.ts.map +0 -1
- package/dist/src/bitgo/psbt/fromHalfSigned.js +0 -91
- package/dist/src/bitgo/psbt/scriptTypes.d.ts +0 -6
- package/dist/src/bitgo/psbt/scriptTypes.d.ts.map +0 -1
- package/dist/src/bitgo/psbt/scriptTypes.js +0 -23
- package/dist/src/bitgo/signature.d.ts +0 -84
- package/dist/src/bitgo/signature.d.ts.map +0 -1
- package/dist/src/bitgo/signature.js +0 -222
- package/dist/src/bitgo/tnumber.d.ts +0 -9
- package/dist/src/bitgo/tnumber.d.ts.map +0 -1
- package/dist/src/bitgo/tnumber.js +0 -31
- package/dist/src/bitgo/transaction.d.ts +0 -29
- package/dist/src/bitgo/transaction.d.ts.map +0 -1
- package/dist/src/bitgo/transaction.js +0 -231
- package/dist/src/bitgo/types.d.ts +0 -5
- package/dist/src/bitgo/types.d.ts.map +0 -1
- package/dist/src/bitgo/types.js +0 -12
- package/dist/src/bitgo/wallet/Psbt.d.ts +0 -47
- package/dist/src/bitgo/wallet/Psbt.d.ts.map +0 -1
- package/dist/src/bitgo/wallet/Psbt.js +0 -232
- package/dist/src/bitgo/wallet/Unspent.d.ts +0 -47
- package/dist/src/bitgo/wallet/Unspent.d.ts.map +0 -1
- package/dist/src/bitgo/wallet/Unspent.js +0 -154
- package/dist/src/bitgo/wallet/WalletKeys.d.ts +0 -72
- package/dist/src/bitgo/wallet/WalletKeys.d.ts.map +0 -1
- package/dist/src/bitgo/wallet/WalletKeys.js +0 -104
- package/dist/src/bitgo/wallet/WalletOutput.d.ts +0 -18
- package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +0 -1
- package/dist/src/bitgo/wallet/WalletOutput.js +0 -69
- package/dist/src/bitgo/wallet/WalletScripts.d.ts +0 -7
- package/dist/src/bitgo/wallet/WalletScripts.d.ts.map +0 -1
- package/dist/src/bitgo/wallet/WalletScripts.js +0 -15
- package/dist/src/bitgo/wallet/WalletUnspentSigner.d.ts +0 -19
- package/dist/src/bitgo/wallet/WalletUnspentSigner.d.ts.map +0 -1
- package/dist/src/bitgo/wallet/WalletUnspentSigner.js +0 -47
- package/dist/src/bitgo/wallet/chains.d.ts +0 -57
- package/dist/src/bitgo/wallet/chains.d.ts.map +0 -1
- package/dist/src/bitgo/wallet/chains.js +0 -106
- package/dist/src/bitgo/wallet/index.d.ts +0 -8
- package/dist/src/bitgo/wallet/index.d.ts.map +0 -1
- package/dist/src/bitgo/wallet/index.js +0 -20
- package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts +0 -26
- package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts.map +0 -1
- package/dist/src/bitgo/zcash/ZcashBufferutils.js +0 -157
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +0 -36
- package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +0 -1
- package/dist/src/bitgo/zcash/ZcashPsbt.js +0 -146
- package/dist/src/bitgo/zcash/ZcashTransaction.d.ts +0 -61
- package/dist/src/bitgo/zcash/ZcashTransaction.d.ts.map +0 -1
- package/dist/src/bitgo/zcash/ZcashTransaction.js +0 -341
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts +0 -21
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts.map +0 -1
- package/dist/src/bitgo/zcash/ZcashTransactionBuilder.js +0 -105
- package/dist/src/bitgo/zcash/address.d.ts +0 -8
- package/dist/src/bitgo/zcash/address.d.ts.map +0 -1
- package/dist/src/bitgo/zcash/address.js +0 -57
- package/dist/src/bitgo/zcash/hashZip0244.d.ts +0 -27
- package/dist/src/bitgo/zcash/hashZip0244.d.ts.map +0 -1
- package/dist/src/bitgo/zcash/hashZip0244.js +0 -184
- package/dist/src/bitgo/zcash/index.d.ts +0 -4
- package/dist/src/bitgo/zcash/index.d.ts.map +0 -1
- package/dist/src/bitgo/zcash/index.js +0 -16
- package/dist/src/classify.d.ts +0 -19
- package/dist/src/classify.d.ts.map +0 -1
- package/dist/src/classify.js +0 -89
- package/dist/src/index.d.ts +0 -13
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -36
- package/dist/src/networks.d.ts +0 -115
- package/dist/src/networks.d.ts.map +0 -1
- package/dist/src/networks.js +0 -458
- package/dist/src/noble_ecc.d.ts +0 -28
- package/dist/src/noble_ecc.d.ts.map +0 -1
- package/dist/src/noble_ecc.js +0 -168
- package/dist/src/payments/index.d.ts +0 -4
- package/dist/src/payments/index.d.ts.map +0 -1
- package/dist/src/payments/index.js +0 -8
- package/dist/src/payments/p2tr.d.ts +0 -3
- package/dist/src/payments/p2tr.d.ts.map +0 -1
- package/dist/src/payments/p2tr.js +0 -348
- package/dist/src/payments/p2tr_ns.d.ts +0 -3
- package/dist/src/payments/p2tr_ns.d.ts.map +0 -1
- package/dist/src/payments/p2tr_ns.js +0 -134
- package/dist/src/taproot.d.ts +0 -141
- package/dist/src/taproot.d.ts.map +0 -1
- package/dist/src/taproot.js +0 -384
- package/dist/src/templates/multisig/index.d.ts +0 -4
- package/dist/src/templates/multisig/index.d.ts.map +0 -1
- package/dist/src/templates/multisig/index.js +0 -8
- package/dist/src/templates/multisig/input.d.ts +0 -7
- package/dist/src/templates/multisig/input.d.ts.map +0 -1
- package/dist/src/templates/multisig/input.js +0 -25
- package/dist/src/templates/multisig/output.d.ts +0 -7
- package/dist/src/templates/multisig/output.d.ts.map +0 -1
- package/dist/src/templates/multisig/output.js +0 -38
- package/dist/src/templates/nulldata.d.ts +0 -10
- package/dist/src/templates/nulldata.d.ts.map +0 -1
- package/dist/src/templates/nulldata.js +0 -17
- package/dist/src/templates/pubkey/index.d.ts +0 -4
- package/dist/src/templates/pubkey/index.d.ts.map +0 -1
- package/dist/src/templates/pubkey/index.js +0 -8
- package/dist/src/templates/pubkey/input.d.ts +0 -7
- package/dist/src/templates/pubkey/input.d.ts.map +0 -1
- package/dist/src/templates/pubkey/input.js +0 -14
- package/dist/src/templates/pubkey/output.d.ts +0 -7
- package/dist/src/templates/pubkey/output.d.ts.map +0 -1
- package/dist/src/templates/pubkey/output.js +0 -15
- package/dist/src/templates/pubkeyhash/index.d.ts +0 -4
- package/dist/src/templates/pubkeyhash/index.d.ts.map +0 -1
- package/dist/src/templates/pubkeyhash/index.js +0 -8
- package/dist/src/templates/pubkeyhash/input.d.ts +0 -7
- package/dist/src/templates/pubkeyhash/input.d.ts.map +0 -1
- package/dist/src/templates/pubkeyhash/input.js +0 -16
- package/dist/src/templates/pubkeyhash/output.d.ts +0 -6
- package/dist/src/templates/pubkeyhash/output.d.ts.map +0 -1
- package/dist/src/templates/pubkeyhash/output.js +0 -20
- package/dist/src/templates/scripthash/index.d.ts +0 -4
- package/dist/src/templates/scripthash/index.d.ts.map +0 -1
- package/dist/src/templates/scripthash/index.js +0 -8
- package/dist/src/templates/scripthash/input.d.ts +0 -6
- package/dist/src/templates/scripthash/input.d.ts.map +0 -1
- package/dist/src/templates/scripthash/input.js +0 -43
- package/dist/src/templates/scripthash/output.d.ts +0 -6
- package/dist/src/templates/scripthash/output.d.ts.map +0 -1
- package/dist/src/templates/scripthash/output.js +0 -15
- package/dist/src/templates/taproot/index.d.ts +0 -4
- package/dist/src/templates/taproot/index.d.ts.map +0 -1
- package/dist/src/templates/taproot/index.js +0 -8
- package/dist/src/templates/taproot/input.d.ts +0 -6
- package/dist/src/templates/taproot/input.d.ts.map +0 -1
- package/dist/src/templates/taproot/input.js +0 -23
- package/dist/src/templates/taproot/output.d.ts +0 -6
- package/dist/src/templates/taproot/output.d.ts.map +0 -1
- package/dist/src/templates/taproot/output.js +0 -15
- package/dist/src/templates/taprootnofn/index.d.ts +0 -4
- package/dist/src/templates/taprootnofn/index.d.ts.map +0 -1
- package/dist/src/templates/taprootnofn/index.js +0 -8
- package/dist/src/templates/taprootnofn/input.d.ts +0 -7
- package/dist/src/templates/taprootnofn/input.d.ts.map +0 -1
- package/dist/src/templates/taprootnofn/input.js +0 -24
- package/dist/src/templates/taprootnofn/output.d.ts +0 -7
- package/dist/src/templates/taprootnofn/output.d.ts.map +0 -1
- package/dist/src/templates/taprootnofn/output.js +0 -28
- package/dist/src/templates/witnesscommitment/index.d.ts +0 -3
- package/dist/src/templates/witnesscommitment/index.d.ts.map +0 -1
- package/dist/src/templates/witnesscommitment/index.js +0 -6
- package/dist/src/templates/witnesscommitment/output.d.ts +0 -8
- package/dist/src/templates/witnesscommitment/output.d.ts.map +0 -1
- package/dist/src/templates/witnesscommitment/output.js +0 -31
- package/dist/src/templates/witnesspubkeyhash/index.d.ts +0 -4
- package/dist/src/templates/witnesspubkeyhash/index.d.ts.map +0 -1
- package/dist/src/templates/witnesspubkeyhash/index.js +0 -8
- package/dist/src/templates/witnesspubkeyhash/input.d.ts +0 -7
- package/dist/src/templates/witnesspubkeyhash/input.d.ts.map +0 -1
- package/dist/src/templates/witnesspubkeyhash/input.js +0 -19
- package/dist/src/templates/witnesspubkeyhash/output.d.ts +0 -6
- package/dist/src/templates/witnesspubkeyhash/output.d.ts.map +0 -1
- package/dist/src/templates/witnesspubkeyhash/output.js +0 -15
- package/dist/src/templates/witnessscripthash/index.d.ts +0 -4
- package/dist/src/templates/witnessscripthash/index.d.ts.map +0 -1
- package/dist/src/templates/witnessscripthash/index.js +0 -8
- package/dist/src/templates/witnessscripthash/input.d.ts +0 -6
- package/dist/src/templates/witnessscripthash/input.d.ts.map +0 -1
- package/dist/src/templates/witnessscripthash/input.js +0 -35
- package/dist/src/templates/witnessscripthash/output.d.ts +0 -6
- package/dist/src/templates/witnessscripthash/output.d.ts.map +0 -1
- package/dist/src/templates/witnessscripthash/output.js +0 -15
- package/dist/src/testutil/index.d.ts +0 -3
- package/dist/src/testutil/index.d.ts.map +0 -1
- package/dist/src/testutil/index.js +0 -15
- package/dist/src/testutil/keys.d.ts +0 -10
- package/dist/src/testutil/keys.d.ts.map +0 -1
- package/dist/src/testutil/keys.js +0 -40
- package/dist/src/testutil/mock.d.ts +0 -21
- package/dist/src/testutil/mock.d.ts.map +0 -1
- package/dist/src/testutil/mock.js +0 -86
- package/dist/src/transaction_builder.d.ts +0 -47
- package/dist/src/transaction_builder.d.ts.map +0 -1
- package/dist/src/transaction_builder.js +0 -1084
package/dist/src/networks.js
DELETED
@@ -1,458 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
/*
|
3
|
-
|
4
|
-
The values for the various fork coins can be found in these files:
|
5
|
-
|
6
|
-
property filename varname notes
|
7
|
-
------------------------------------------------------------------------------------------------------------------------
|
8
|
-
messagePrefix src/validation.cpp strMessageMagic Format `${CoinName} Signed Message`
|
9
|
-
bech32_hrp src/chainparams.cpp bech32_hrp Only for some networks
|
10
|
-
bip32.public src/chainparams.cpp base58Prefixes[EXT_PUBLIC_KEY] Mainnets have same value, testnets have same value
|
11
|
-
bip32.private src/chainparams.cpp base58Prefixes[EXT_SECRET_KEY] Mainnets have same value, testnets have same value
|
12
|
-
pubKeyHash src/chainparams.cpp base58Prefixes[PUBKEY_ADDRESS]
|
13
|
-
scriptHash src/chainparams.cpp base58Prefixes[SCRIPT_ADDRESS]
|
14
|
-
wif src/chainparams.cpp base58Prefixes[SECRET_KEY] Testnets have same value
|
15
|
-
forkId src/script/interpreter.h FORKID_*
|
16
|
-
|
17
|
-
*/
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
19
|
-
exports.supportsTaproot = exports.supportsSegwit = exports.isValidNetwork = exports.isZcash = exports.isLitecoin = exports.isDogecoin = exports.isDash = exports.isBitcoinSV = exports.isBitcoinGold = exports.isECash = exports.isBitcoinCash = exports.isBitcoin = exports.getTestnet = exports.isSameCoin = exports.isTestnet = exports.isMainnet = exports.getMainnet = exports.getNetworkName = exports.getNetworkList = exports.networks = void 0;
|
20
|
-
/**
|
21
|
-
* @deprecated
|
22
|
-
*/
|
23
|
-
const coins = {
|
24
|
-
/*
|
25
|
-
* The original Bitcoin Cash was renamed to bitcoin-abc, and bitcoin-cash-node forked from it.
|
26
|
-
* Later, bitcoin-abc is rebranded to ecash. Here, 'bch' corresponds to bitcoin-cash-node, and
|
27
|
-
* 'bcha' corresponds to ecash. Ref: https://github.com/bitcoin-cash-node/bitcoin-cash-node
|
28
|
-
* */
|
29
|
-
BCH: 'bch',
|
30
|
-
BCHA: 'bcha',
|
31
|
-
BSV: 'bsv',
|
32
|
-
BTC: 'btc',
|
33
|
-
BTG: 'btg',
|
34
|
-
LTC: 'ltc',
|
35
|
-
ZEC: 'zec',
|
36
|
-
DASH: 'dash',
|
37
|
-
DOGE: 'doge',
|
38
|
-
// #9286F8 PECUNIA CHANGES
|
39
|
-
BBC: 'bbc',
|
40
|
-
};
|
41
|
-
function getDefaultBip32Mainnet() {
|
42
|
-
return {
|
43
|
-
// base58 'xpub'
|
44
|
-
public: 0x0488b21e,
|
45
|
-
// base58 'xprv'
|
46
|
-
private: 0x0488ade4,
|
47
|
-
};
|
48
|
-
}
|
49
|
-
function getDefaultBip32Testnet() {
|
50
|
-
return {
|
51
|
-
// base58 'tpub'
|
52
|
-
public: 0x043587cf,
|
53
|
-
// base58 'tprv'
|
54
|
-
private: 0x04358394,
|
55
|
-
};
|
56
|
-
}
|
57
|
-
exports.networks = {
|
58
|
-
// https://github.com/bitcoin/bitcoin/blob/master/src/validation.cpp
|
59
|
-
// https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp
|
60
|
-
bitcoin: {
|
61
|
-
messagePrefix: '\x18Bitcoin Signed Message:\n',
|
62
|
-
bech32: 'bc',
|
63
|
-
bip32: getDefaultBip32Mainnet(),
|
64
|
-
pubKeyHash: 0x00,
|
65
|
-
scriptHash: 0x05,
|
66
|
-
wif: 0x80,
|
67
|
-
coin: coins.BTC,
|
68
|
-
},
|
69
|
-
testnet: {
|
70
|
-
messagePrefix: '\x18Bitcoin Signed Message:\n',
|
71
|
-
bech32: 'tb',
|
72
|
-
bip32: getDefaultBip32Testnet(),
|
73
|
-
pubKeyHash: 0x6f,
|
74
|
-
scriptHash: 0xc4,
|
75
|
-
wif: 0xef,
|
76
|
-
coin: coins.BTC,
|
77
|
-
},
|
78
|
-
// https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/master/src/validation.cpp
|
79
|
-
// https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/master/src/chainparams.cpp
|
80
|
-
// https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/cashaddr.md
|
81
|
-
bitcoincash: {
|
82
|
-
messagePrefix: '\x18Bitcoin Signed Message:\n',
|
83
|
-
bip32: getDefaultBip32Mainnet(),
|
84
|
-
pubKeyHash: 0x00,
|
85
|
-
scriptHash: 0x05,
|
86
|
-
wif: 0x80,
|
87
|
-
coin: coins.BCH,
|
88
|
-
forkId: 0x00,
|
89
|
-
cashAddr: {
|
90
|
-
prefix: 'bitcoincash',
|
91
|
-
pubKeyHash: 0x00,
|
92
|
-
scriptHash: 0x08,
|
93
|
-
},
|
94
|
-
},
|
95
|
-
bitcoincashTestnet: {
|
96
|
-
messagePrefix: '\x18Bitcoin Signed Message:\n',
|
97
|
-
bip32: getDefaultBip32Testnet(),
|
98
|
-
pubKeyHash: 0x6f,
|
99
|
-
scriptHash: 0xc4,
|
100
|
-
wif: 0xef,
|
101
|
-
coin: coins.BCH,
|
102
|
-
cashAddr: {
|
103
|
-
prefix: 'bchtest',
|
104
|
-
pubKeyHash: 0x00,
|
105
|
-
scriptHash: 0x08,
|
106
|
-
},
|
107
|
-
},
|
108
|
-
// https://github.com/BTCGPU/BTCGPU/blob/master/src/validation.cpp
|
109
|
-
// https://github.com/BTCGPU/BTCGPU/blob/master/src/chainparams.cpp
|
110
|
-
// https://github.com/BTCGPU/BTCGPU/blob/master/src/script/interpreter.h
|
111
|
-
bitcoingold: {
|
112
|
-
messagePrefix: '\x18Bitcoin Gold Signed Message:\n',
|
113
|
-
bech32: 'btg',
|
114
|
-
bip32: getDefaultBip32Mainnet(),
|
115
|
-
pubKeyHash: 0x26,
|
116
|
-
scriptHash: 0x17,
|
117
|
-
wif: 0x80,
|
118
|
-
forkId: 79,
|
119
|
-
coin: coins.BTG,
|
120
|
-
},
|
121
|
-
bitcoingoldTestnet: {
|
122
|
-
messagePrefix: '\x18Bitcoin Gold Signed Message:\n',
|
123
|
-
bech32: 'tbtg',
|
124
|
-
bip32: getDefaultBip32Testnet(),
|
125
|
-
pubKeyHash: 111,
|
126
|
-
scriptHash: 196,
|
127
|
-
wif: 0xef,
|
128
|
-
forkId: 79,
|
129
|
-
coin: coins.BTG,
|
130
|
-
},
|
131
|
-
// https://github.com/bitcoin-sv/bitcoin-sv/blob/master/src/validation.cpp
|
132
|
-
// https://github.com/bitcoin-sv/bitcoin-sv/blob/master/src/chainparams.cpp
|
133
|
-
bitcoinsv: {
|
134
|
-
messagePrefix: '\x18Bitcoin Signed Message:\n',
|
135
|
-
bip32: getDefaultBip32Mainnet(),
|
136
|
-
pubKeyHash: 0x00,
|
137
|
-
scriptHash: 0x05,
|
138
|
-
wif: 0x80,
|
139
|
-
coin: coins.BSV,
|
140
|
-
forkId: 0x00,
|
141
|
-
},
|
142
|
-
bitcoinsvTestnet: {
|
143
|
-
messagePrefix: '\x18Bitcoin Signed Message:\n',
|
144
|
-
bip32: getDefaultBip32Testnet(),
|
145
|
-
pubKeyHash: 0x6f,
|
146
|
-
scriptHash: 0xc4,
|
147
|
-
wif: 0xef,
|
148
|
-
coin: coins.BSV,
|
149
|
-
forkId: 0x00,
|
150
|
-
},
|
151
|
-
// https://github.com/dashpay/dash/blob/master/src/validation.cpp
|
152
|
-
// https://github.com/dashpay/dash/blob/master/src/chainparams.cpp
|
153
|
-
dash: {
|
154
|
-
messagePrefix: '\x19DarkCoin Signed Message:\n',
|
155
|
-
bip32: getDefaultBip32Mainnet(),
|
156
|
-
pubKeyHash: 0x4c,
|
157
|
-
scriptHash: 0x10,
|
158
|
-
wif: 0xcc,
|
159
|
-
coin: coins.DASH,
|
160
|
-
},
|
161
|
-
dashTest: {
|
162
|
-
messagePrefix: '\x19DarkCoin Signed Message:\n',
|
163
|
-
bip32: getDefaultBip32Testnet(),
|
164
|
-
pubKeyHash: 0x8c,
|
165
|
-
scriptHash: 0x13,
|
166
|
-
wif: 0xef,
|
167
|
-
coin: coins.DASH,
|
168
|
-
},
|
169
|
-
// https://github.com/dogecoin/dogecoin/blob/master/src/validation.cpp
|
170
|
-
// https://github.com/dogecoin/dogecoin/blob/master/src/chainparams.cpp
|
171
|
-
// Mainnet bip32 here does not match dogecoin core, this is intended (see BG-53241)
|
172
|
-
dogecoin: {
|
173
|
-
messagePrefix: '\x19Dogecoin Signed Message:\n',
|
174
|
-
bip32: getDefaultBip32Mainnet(),
|
175
|
-
pubKeyHash: 0x1e,
|
176
|
-
scriptHash: 0x16,
|
177
|
-
wif: 0x9e,
|
178
|
-
coin: coins.DOGE,
|
179
|
-
},
|
180
|
-
dogecoinTest: {
|
181
|
-
messagePrefix: '\x19Dogecoin Signed Message:\n',
|
182
|
-
bip32: getDefaultBip32Testnet(),
|
183
|
-
pubKeyHash: 0x71,
|
184
|
-
scriptHash: 0xc4,
|
185
|
-
wif: 0xf1,
|
186
|
-
coin: coins.DOGE,
|
187
|
-
},
|
188
|
-
// https://github.com/Bitcoin-ABC/bitcoin-abc/blob/master/src/validation.cpp
|
189
|
-
// https://github.com/Bitcoin-ABC/bitcoin-abc/blob/master/src/chainparams.cpp
|
190
|
-
// https://github.com/Bitcoin-ABC/bitcoin-abc/blob/master/src/util/message.cpp
|
191
|
-
ecash: {
|
192
|
-
messagePrefix: '\x16eCash Signed Message:\n',
|
193
|
-
bip32: getDefaultBip32Mainnet(),
|
194
|
-
pubKeyHash: 0x00,
|
195
|
-
scriptHash: 0x05,
|
196
|
-
wif: 0x80,
|
197
|
-
coin: coins.BCHA,
|
198
|
-
forkId: 0x00,
|
199
|
-
cashAddr: {
|
200
|
-
prefix: 'ecash',
|
201
|
-
pubKeyHash: 0x00,
|
202
|
-
scriptHash: 0x08,
|
203
|
-
},
|
204
|
-
},
|
205
|
-
ecashTest: {
|
206
|
-
messagePrefix: '\x16eCash Signed Message:\n',
|
207
|
-
bip32: getDefaultBip32Testnet(),
|
208
|
-
pubKeyHash: 0x6f,
|
209
|
-
scriptHash: 0xc4,
|
210
|
-
wif: 0xef,
|
211
|
-
coin: coins.BCHA,
|
212
|
-
cashAddr: {
|
213
|
-
prefix: 'ecashtest',
|
214
|
-
pubKeyHash: 0x00,
|
215
|
-
scriptHash: 0x08,
|
216
|
-
},
|
217
|
-
},
|
218
|
-
// https://github.com/litecoin-project/litecoin/blob/master/src/validation.cpp
|
219
|
-
// https://github.com/litecoin-project/litecoin/blob/master/src/chainparams.cpp
|
220
|
-
litecoin: {
|
221
|
-
messagePrefix: '\x19Litecoin Signed Message:\n',
|
222
|
-
bech32: 'ltc',
|
223
|
-
bip32: getDefaultBip32Mainnet(),
|
224
|
-
pubKeyHash: 0x30,
|
225
|
-
scriptHash: 0x32,
|
226
|
-
wif: 0xb0,
|
227
|
-
coin: coins.LTC,
|
228
|
-
},
|
229
|
-
litecoinTest: {
|
230
|
-
messagePrefix: '\x19Litecoin Signed Message:\n',
|
231
|
-
bech32: 'tltc',
|
232
|
-
bip32: getDefaultBip32Testnet(),
|
233
|
-
pubKeyHash: 0x6f,
|
234
|
-
scriptHash: 0x3a,
|
235
|
-
wif: 0xef,
|
236
|
-
coin: coins.LTC,
|
237
|
-
},
|
238
|
-
// https://github.com/zcash/zcash/blob/master/src/validation.cpp
|
239
|
-
// https://github.com/zcash/zcash/blob/master/src/chainparams.cpp
|
240
|
-
zcash: {
|
241
|
-
messagePrefix: '\x18ZCash Signed Message:\n',
|
242
|
-
bip32: getDefaultBip32Mainnet(),
|
243
|
-
pubKeyHash: 0x1cb8,
|
244
|
-
scriptHash: 0x1cbd,
|
245
|
-
wif: 0x80,
|
246
|
-
coin: coins.ZEC,
|
247
|
-
},
|
248
|
-
zcashTest: {
|
249
|
-
messagePrefix: '\x18ZCash Signed Message:\n',
|
250
|
-
bip32: getDefaultBip32Testnet(),
|
251
|
-
pubKeyHash: 0x1d25,
|
252
|
-
scriptHash: 0x1cba,
|
253
|
-
wif: 0xef,
|
254
|
-
coin: coins.ZEC,
|
255
|
-
},
|
256
|
-
// #9286F8 PECUNIA CHANGES
|
257
|
-
bbc: {
|
258
|
-
messagePrefix: '\x19DarkCoin Signed Message:\n',
|
259
|
-
bip32: {
|
260
|
-
public: 0x0488ade3,
|
261
|
-
private: 0x0488b21e,
|
262
|
-
},
|
263
|
-
pubKeyHash: 0x19,
|
264
|
-
scriptHash: 0x66,
|
265
|
-
wif: 0xcd,
|
266
|
-
coin: coins.BBC,
|
267
|
-
},
|
268
|
-
};
|
269
|
-
/**
|
270
|
-
* @returns {Network[]} all known networks as array
|
271
|
-
*/
|
272
|
-
function getNetworkList() {
|
273
|
-
return Object.values(exports.networks);
|
274
|
-
}
|
275
|
-
exports.getNetworkList = getNetworkList;
|
276
|
-
/**
|
277
|
-
* @param {Network} network
|
278
|
-
* @returns {NetworkName} the name of the network. Returns undefined if network is not a value
|
279
|
-
* of `networks`
|
280
|
-
*/
|
281
|
-
function getNetworkName(network) {
|
282
|
-
return Object.keys(exports.networks).find((n) => exports.networks[n] === network);
|
283
|
-
}
|
284
|
-
exports.getNetworkName = getNetworkName;
|
285
|
-
/**
|
286
|
-
* @param {Network} network
|
287
|
-
* @returns {Object} the mainnet corresponding to a testnet
|
288
|
-
*/
|
289
|
-
function getMainnet(network) {
|
290
|
-
switch (network.forkChain) {
|
291
|
-
case 'bitcoin':
|
292
|
-
return exports.networks.bitcoin;
|
293
|
-
case 'bitcoincash':
|
294
|
-
return exports.networks.bitcoincash;
|
295
|
-
case 'bitcoingold':
|
296
|
-
return exports.networks.bitcoingold;
|
297
|
-
case 'bitcoinsv':
|
298
|
-
return exports.networks.bitcoinsv;
|
299
|
-
case 'dash':
|
300
|
-
return exports.networks.dash;
|
301
|
-
case 'ecash':
|
302
|
-
return exports.networks.ecash;
|
303
|
-
case 'litecoin':
|
304
|
-
return exports.networks.litecoin;
|
305
|
-
case 'zcash':
|
306
|
-
return exports.networks.zcash;
|
307
|
-
case 'dogecoin':
|
308
|
-
return exports.networks.dogecoin;
|
309
|
-
// #9286F8 PECUNIA CHANGES
|
310
|
-
default:
|
311
|
-
return exports.networks.bitcoin;
|
312
|
-
}
|
313
|
-
}
|
314
|
-
exports.getMainnet = getMainnet;
|
315
|
-
/**
|
316
|
-
* @param {Network} network
|
317
|
-
* @returns {boolean} true iff network is a mainnet
|
318
|
-
*/
|
319
|
-
function isMainnet(network) {
|
320
|
-
return getMainnet(network) === network;
|
321
|
-
}
|
322
|
-
exports.isMainnet = isMainnet;
|
323
|
-
/**
|
324
|
-
* @param {Network} network
|
325
|
-
* @returns {boolean} true iff network is a testnet
|
326
|
-
*/
|
327
|
-
function isTestnet(network) {
|
328
|
-
return getMainnet(network) !== network;
|
329
|
-
}
|
330
|
-
exports.isTestnet = isTestnet;
|
331
|
-
/**
|
332
|
-
*
|
333
|
-
* @param {Network} network
|
334
|
-
* @param {Network} otherNetwork
|
335
|
-
* @returns {boolean} true iff both networks are for the same coin
|
336
|
-
*/
|
337
|
-
function isSameCoin(network, otherNetwork) {
|
338
|
-
return getMainnet(network) === getMainnet(otherNetwork);
|
339
|
-
}
|
340
|
-
exports.isSameCoin = isSameCoin;
|
341
|
-
const mainnets = getNetworkList().filter(isMainnet);
|
342
|
-
const testnets = getNetworkList().filter(isTestnet);
|
343
|
-
/**
|
344
|
-
* Map where keys are mainnet networks and values are testnet networks
|
345
|
-
* @type {Map<Network, Network[]>}
|
346
|
-
*/
|
347
|
-
const mainnetTestnetPairs = new Map(mainnets.map((m) => [m, testnets.filter((t) => getMainnet(t) === m)]));
|
348
|
-
/**
|
349
|
-
* @param {Network} network
|
350
|
-
* @returns {Network|undefined} - The testnet corresponding to a mainnet.
|
351
|
-
* Returns undefined if a network has no testnet.
|
352
|
-
*/
|
353
|
-
function getTestnet(network) {
|
354
|
-
if (isTestnet(network)) {
|
355
|
-
return network;
|
356
|
-
}
|
357
|
-
const testnets = mainnetTestnetPairs.get(network);
|
358
|
-
if (testnets === undefined) {
|
359
|
-
throw new Error(`invalid argument`);
|
360
|
-
}
|
361
|
-
if (testnets.length === 0) {
|
362
|
-
return;
|
363
|
-
}
|
364
|
-
if (testnets.length === 1) {
|
365
|
-
return testnets[0];
|
366
|
-
}
|
367
|
-
throw new Error(`more than one testnet for ${getNetworkName(network)}`);
|
368
|
-
}
|
369
|
-
exports.getTestnet = getTestnet;
|
370
|
-
/**
|
371
|
-
* @param {Network} network
|
372
|
-
* @returns {boolean} true iff network bitcoin or testnet
|
373
|
-
*/
|
374
|
-
function isBitcoin(network) {
|
375
|
-
return getMainnet(network) === exports.networks.bitcoin;
|
376
|
-
}
|
377
|
-
exports.isBitcoin = isBitcoin;
|
378
|
-
/**
|
379
|
-
* @param {Network} network
|
380
|
-
* @returns {boolean} true iff network is bitcoincash or bitcoincashTestnet
|
381
|
-
*/
|
382
|
-
function isBitcoinCash(network) {
|
383
|
-
return getMainnet(network) === exports.networks.bitcoincash;
|
384
|
-
}
|
385
|
-
exports.isBitcoinCash = isBitcoinCash;
|
386
|
-
/**
|
387
|
-
* @param {Network} network
|
388
|
-
* @returns {boolean} true iff network is ecash or ecashTest
|
389
|
-
*/
|
390
|
-
function isECash(network) {
|
391
|
-
return getMainnet(network) === exports.networks.ecash;
|
392
|
-
}
|
393
|
-
exports.isECash = isECash;
|
394
|
-
/**
|
395
|
-
* @param {Network} network
|
396
|
-
* @returns {boolean} true iff network is bitcoingold
|
397
|
-
*/
|
398
|
-
function isBitcoinGold(network) {
|
399
|
-
return getMainnet(network) === exports.networks.bitcoingold;
|
400
|
-
}
|
401
|
-
exports.isBitcoinGold = isBitcoinGold;
|
402
|
-
/**
|
403
|
-
* @param {Network} network
|
404
|
-
* @returns {boolean} true iff network is bitcoinsv or bitcoinsvTestnet
|
405
|
-
*/
|
406
|
-
function isBitcoinSV(network) {
|
407
|
-
return getMainnet(network) === exports.networks.bitcoinsv;
|
408
|
-
}
|
409
|
-
exports.isBitcoinSV = isBitcoinSV;
|
410
|
-
/**
|
411
|
-
* @param {Network} network
|
412
|
-
* @returns {boolean} true iff network is dash or dashTest
|
413
|
-
*/
|
414
|
-
function isDash(network) {
|
415
|
-
return getMainnet(network) === exports.networks.dash;
|
416
|
-
}
|
417
|
-
exports.isDash = isDash;
|
418
|
-
/**
|
419
|
-
* @param {Network} network
|
420
|
-
* @returns {boolean} true iff network is dogecoin or dogecoinTest
|
421
|
-
*/
|
422
|
-
function isDogecoin(network) {
|
423
|
-
return getMainnet(network) === exports.networks.dogecoin;
|
424
|
-
}
|
425
|
-
exports.isDogecoin = isDogecoin;
|
426
|
-
/**
|
427
|
-
* @param {Network} network
|
428
|
-
* @returns {boolean} true iff network is litecoin or litecoinTest
|
429
|
-
*/
|
430
|
-
function isLitecoin(network) {
|
431
|
-
return getMainnet(network) === exports.networks.litecoin;
|
432
|
-
}
|
433
|
-
exports.isLitecoin = isLitecoin;
|
434
|
-
/**
|
435
|
-
* @param {Network} network
|
436
|
-
* @returns {boolean} true iff network is zcash or zcashTest
|
437
|
-
*/
|
438
|
-
function isZcash(network) {
|
439
|
-
return getMainnet(network) === exports.networks.zcash;
|
440
|
-
}
|
441
|
-
exports.isZcash = isZcash;
|
442
|
-
/**
|
443
|
-
* @param {unknown} network
|
444
|
-
* @returns {boolean} returns true iff network is any of the network stated in the argument
|
445
|
-
*/
|
446
|
-
function isValidNetwork(network) {
|
447
|
-
return getNetworkList().includes(network);
|
448
|
-
}
|
449
|
-
exports.isValidNetwork = isValidNetwork;
|
450
|
-
function supportsSegwit(network) {
|
451
|
-
return [exports.networks.bitcoin, exports.networks.litecoin, exports.networks.bitcoingold].includes(getMainnet(network));
|
452
|
-
}
|
453
|
-
exports.supportsSegwit = supportsSegwit;
|
454
|
-
function supportsTaproot(network) {
|
455
|
-
return getMainnet(network) === exports.networks.bitcoin;
|
456
|
-
}
|
457
|
-
exports.supportsTaproot = supportsTaproot;
|
458
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29ya3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7RUFlRTs7O0FBRUY7O0dBRUc7QUFDSCxNQUFNLEtBQUssR0FBRztJQUNaOzs7O1NBSUs7SUFDTCxHQUFHLEVBQUUsS0FBSztJQUNWLElBQUksRUFBRSxNQUFNO0lBQ1osR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsS0FBSztJQUNWLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWiwwQkFBMEI7SUFDMUIsR0FBRyxFQUFFLEtBQUs7Q0FDRixDQUFDO0FBK0NYLFNBQVMsc0JBQXNCO0lBQzdCLE9BQU87UUFDTCxnQkFBZ0I7UUFDaEIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsZ0JBQWdCO1FBQ2hCLE9BQU8sRUFBRSxVQUFVO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxzQkFBc0I7SUFDN0IsT0FBTztRQUNMLGdCQUFnQjtRQUNoQixNQUFNLEVBQUUsVUFBVTtRQUNsQixnQkFBZ0I7UUFDaEIsT0FBTyxFQUFFLFVBQVU7S0FDcEIsQ0FBQztBQUNKLENBQUM7QUFFWSxRQUFBLFFBQVEsR0FBaUM7SUFDcEQsb0VBQW9FO0lBQ3BFLHFFQUFxRTtJQUNyRSxPQUFPLEVBQUU7UUFDUCxhQUFhLEVBQUUsK0JBQStCO1FBQzlDLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLHNCQUFzQixFQUFFO1FBQy9CLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHO0tBQ2hCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsYUFBYSxFQUFFLCtC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QyxLQUFLLGdCQUFRLENBQUMsT0FBTyxDQUFDO0FBQ2xELENBQUM7QUFGRCwwQ0FFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5cblRoZSB2YWx1ZXMgZm9yIHRoZSB2YXJpb3VzIGZvcmsgY29pbnMgY2FuIGJlIGZvdW5kIGluIHRoZXNlIGZpbGVzOlxuXG5wcm9wZXJ0eSAgICAgICBmaWxlbmFtZSAgICAgICAgICAgICAgICAgIHZhcm5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Rlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5tZXNzYWdlUHJlZml4ICBzcmMvdmFsaWRhdGlvbi5jcHAgICAgICAgIHN0ck1lc3NhZ2VNYWdpYyAgICAgICAgICAgICAgICAgICBGb3JtYXQgYCR7Q29pbk5hbWV9IFNpZ25lZCBNZXNzYWdlYFxuYmVjaDMyX2hycCAgICAgc3JjL2NoYWlucGFyYW1zLmNwcCAgICAgICBiZWNoMzJfaHJwICAgICAgICAgICAgICAgICAgICAgICAgT25seSBmb3Igc29tZSBuZXR3b3Jrc1xuYmlwMzIucHVibGljICAgc3JjL2NoYWlucGFyYW1zLmNwcCAgICAgICBiYXNlNThQcmVmaXhlc1tFWFRfUFVCTElDX0tFWV0gICAgTWFpbm5ldHMgaGF2ZSBzYW1lIHZhbHVlLCB0ZXN0bmV0cyBoYXZlIHNhbWUgdmFsdWVcbmJpcDMyLnByaXZhdGUgIHNyYy9jaGFpbnBhcmFtcy5jcHAgICAgICAgYmFzZTU4UHJlZml4ZXNbRVhUX1NFQ1JFVF9LRVldICAgIE1haW5uZXRzIGhhdmUgc2FtZSB2YWx1ZSwgdGVzdG5ldHMgaGF2ZSBzYW1lIHZhbHVlXG5wdWJLZXlIYXNoICAgICBzcmMvY2hhaW5wYXJhbXMuY3BwICAgICAgIGJhc2U1OFByZWZpeGVzW1BVQktFWV9BRERSRVNTXVxuc2NyaXB0SGFzaCAgICAgc3JjL2NoYWlucGFyYW1zLmNwcCAgICAgICBiYXNlNThQcmVmaXhlc1tTQ1JJUFRfQUREUkVTU11cbndpZiAgICAgICAgICAgIHNyYy9jaGFpbnBhcmFtcy5jcHAgICAgICAgYmFzZTU4UHJlZml4ZXNbU0VDUkVUX0tFWV0gICAgICAgIFRlc3RuZXRzIGhhdmUgc2FtZSB2YWx1ZVxuZm9ya0lkICAgICAgICAgc3JjL3NjcmlwdC9pbnRlcnByZXRlci5oICBGT1JLSURfKlxuXG4qL1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmNvbnN0IGNvaW5zID0ge1xuICAvKlxuICAgKiBUaGUgb3JpZ2luYWwgQml0Y29pbiBDYXNoIHdhcyByZW5hbWVkIHRvIGJpdGNvaW4tYWJjLCBhbmQgYml0Y29pbi1jYXNoLW5vZGUgZm9ya2VkIGZyb20gaXQuXG4gICAqIExhdGVyLCBiaXRjb2luLWFiYyBpcyByZWJyYW5kZWQgdG8gZWNhc2guIEhlcmUsICdiY2gnIGNvcnJlc3BvbmRzIHRvIGJpdGNvaW4tY2FzaC1ub2RlLCBhbmRcbiAgICogJ2JjaGEnIGNvcnJlc3BvbmRzIHRvIGVjYXNoLiBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luLWNhc2gtbm9kZS9iaXRjb2luLWNhc2gtbm9kZVxuICAgKiAqL1xuICBCQ0g6ICdiY2gnLFxuICBCQ0hBOiAnYmNoYScsXG4gIEJTVjogJ2JzdicsXG4gIEJUQzogJ2J0YycsXG4gIEJURzogJ2J0ZycsXG4gIExUQzogJ2x0YycsXG4gIFpFQzogJ3plYycsXG4gIERBU0g6ICdkYXNoJyxcbiAgRE9HRTogJ2RvZ2UnLFxuICAvLyAjOTI4NkY4IFBFQ1VOSUEgQ0hBTkdFU1xuICBCQkM6ICdiYmMnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgTmV0d29ya05hbWUgPVxuICB8ICdiaXRjb2luJ1xuICB8ICd0ZXN0bmV0J1xuICB8ICdiaXRjb2luY2FzaCdcbiAgfCAnYml0Y29pbmNhc2hUZXN0bmV0J1xuICB8ICdlY2FzaCdcbiAgfCAnZWNhc2hUZXN0J1xuICB8ICdiaXRjb2luZ29sZCdcbiAgfCAnYml0Y29pbmdvbGRUZXN0bmV0J1xuICB8ICdiaXRjb2luc3YnXG4gIHwgJ2JpdGNvaW5zdlRlc3RuZXQnXG4gIHwgJ2Rhc2gnXG4gIHwgJ2Rhc2hUZXN0J1xuICB8ICdkb2dlY29pbidcbiAgfCAnZG9nZWNvaW5UZXN0J1xuICB8ICdsaXRlY29pbidcbiAgfCAnbGl0ZWNvaW5UZXN0J1xuICB8ICd6Y2FzaCdcbiAgfCAnemNhc2hUZXN0J1xuICAvLyAjOTI4NkY4IFBFQ1VOSUEgQ0hBTkdFU1xuICB8ICdiYmMnO1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrID0ge1xuICBtZXNzYWdlUHJlZml4OiBzdHJpbmc7XG4gIHB1YktleUhhc2g6IG51bWJlcjtcbiAgc2NyaXB0SGFzaDogbnVtYmVyO1xuICB3aWY6IG51bWJlcjtcbiAgYmlwMzI6IHtcbiAgICBwdWJsaWM6IG51bWJlcjtcbiAgICBwcml2YXRlOiBudW1iZXI7XG4gIH07XG4gIGNhc2hBZGRyPzoge1xuICAgIHByZWZpeDogc3RyaW5nO1xuICAgIHB1YktleUhhc2g6IG51bWJlcjtcbiAgICBzY3JpcHRIYXNoOiBudW1iZXI7XG4gIH07XG4gIGJlY2gzMj86IHN0cmluZztcbiAgZm9ya0lkPzogbnVtYmVyO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGNvaW46IHN0cmluZztcbiAgZm9ya0NoYWluPzogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gZ2V0RGVmYXVsdEJpcDMyTWFpbm5ldCgpIHtcbiAgcmV0dXJuIHtcbiAgICAvLyBiYXNlNTggJ3hwdWInXG4gICAgcHVibGljOiAweDA0ODhiMjFlLFxuICAgIC8vIGJhc2U1OCAneHBydidcbiAgICBwcml2YXRlOiAweDA0ODhhZGU0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0QmlwMzJUZXN0bmV0KCkge1xuICByZXR1cm4ge1xuICAgIC8vIGJhc2U1OCAndHB1YidcbiAgICBwdWJsaWM6IDB4MDQzNTg3Y2YsXG4gICAgLy8gYmFzZTU4ICd0cHJ2J1xuICAgIHByaXZhdGU6IDB4MDQzNTgzOTQsXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBuZXR3b3JrczogUmVjb3JkPE5ldHdvcmtOYW1lLCBOZXR3b3JrPiA9IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL21hc3Rlci9zcmMvdmFsaWRhdGlvbi5jcHBcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL21hc3Rlci9zcmMvY2hhaW5wYXJhbXMuY3BwXG4gIGJpdGNvaW46IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MThCaXRjb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmVjaDMyOiAnYmMnLFxuICAgIGJpcDMyOiBnZXREZWZhdWx0QmlwMzJNYWlubmV0KCksXG4gICAgcHViS2V5SGFzaDogMHgwMCxcbiAgICBzY3JpcHRIYXNoOiAweDA1LFxuICAgIHdpZjogMHg4MCxcbiAgICBjb2luOiBjb2lucy5CVEMsXG4gIH0sXG4gIHRlc3RuZXQ6IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MThCaXRjb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmVjaDMyOiAndGInLFxuICAgIGJpcDMyOiBnZXREZWZhdWx0QmlwMzJUZXN0bmV0KCksXG4gICAgcHViS2V5SGFzaDogMHg2ZixcbiAgICBzY3JpcHRIYXNoOiAweGM0LFxuICAgIHdpZjogMHhlZixcbiAgICBjb2luOiBjb2lucy5CVEMsXG4gIH0sXG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4tY2FzaC1ub2RlL2JpdGNvaW4tY2FzaC1ub2RlL2Jsb2IvbWFzdGVyL3NyYy92YWxpZGF0aW9uLmNwcFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi1jYXNoLW5vZGUvYml0Y29pbi1jYXNoLW5vZGUvYmxvYi9tYXN0ZXIvc3JjL2NoYWlucGFyYW1zLmNwcFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmNhc2hvcmcvYml0Y29pbmNhc2gub3JnL2Jsb2IvbWFzdGVyL3NwZWMvY2FzaGFkZHIubWRcbiAgYml0Y29pbmNhc2g6IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MThCaXRjb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmlwMzI6IGdldERlZmF1bHRCaXAzMk1haW5uZXQoKSxcbiAgICBwdWJLZXlIYXNoOiAweDAwLFxuICAgIHNjcmlwdEhhc2g6IDB4MDUsXG4gICAgd2lmOiAweDgwLFxuICAgIGNvaW46IGNvaW5zLkJDSCxcbiAgICBmb3JrSWQ6IDB4MDAsXG4gICAgY2FzaEFkZHI6IHtcbiAgICAgIHByZWZpeDogJ2JpdGNvaW5jYXNoJyxcbiAgICAgIHB1YktleUhhc2g6IDB4MDAsXG4gICAgICBzY3JpcHRIYXNoOiAweDA4LFxuICAgIH0sXG4gIH0sXG4gIGJpdGNvaW5jYXNoVGVzdG5ldDoge1xuICAgIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOEJpdGNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuJyxcbiAgICBiaXAzMjogZ2V0RGVmYXVsdEJpcDMyVGVzdG5ldCgpLFxuICAgIHB1YktleUhhc2g6IDB4NmYsXG4gICAgc2NyaXB0SGFzaDogMHhjNCxcbiAgICB3aWY6IDB4ZWYsXG4gICAgY29pbjogY29pbnMuQkNILFxuICAgIGNhc2hBZGRyOiB7XG4gICAgICBwcmVmaXg6ICdiY2h0ZXN0JyxcbiAgICAgIHB1YktleUhhc2g6IDB4MDAsXG4gICAgICBzY3JpcHRIYXNoOiAweDA4LFxuICAgIH0sXG4gIH0sXG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0JUQ0dQVS9CVENHUFUvYmxvYi9tYXN0ZXIvc3JjL3ZhbGlkYXRpb24uY3BwXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9CVENHUFUvQlRDR1BVL2Jsb2IvbWFzdGVyL3NyYy9jaGFpbnBhcmFtcy5jcHBcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0JUQ0dQVS9CVENHUFUvYmxvYi9tYXN0ZXIvc3JjL3NjcmlwdC9pbnRlcnByZXRlci5oXG4gIGJpdGNvaW5nb2xkOiB7XG4gICAgbWVzc2FnZVByZWZpeDogJ1xceDE4Qml0Y29pbiBHb2xkIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmVjaDMyOiAnYnRnJyxcbiAgICBiaXAzMjogZ2V0RGVmYXVsdEJpcDMyTWFpbm5ldCgpLFxuICAgIHB1YktleUhhc2g6IDB4MjYsXG4gICAgc2NyaXB0SGFzaDogMHgxNyxcbiAgICB3aWY6IDB4ODAsXG4gICAgZm9ya0lkOiA3OSxcbiAgICBjb2luOiBjb2lucy5CVEcsXG4gIH0sXG4gIGJpdGNvaW5nb2xkVGVzdG5ldDoge1xuICAgIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOEJpdGNvaW4gR29sZCBTaWduZWQgTWVzc2FnZTpcXG4nLFxuICAgIGJlY2gzMjogJ3RidGcnLFxuICAgIGJpcDMyOiBnZXREZWZhdWx0QmlwMzJUZXN0bmV0KCksXG4gICAgcHViS2V5SGFzaDogMTExLFxuICAgIHNjcmlwdEhhc2g6IDE5NixcbiAgICB3aWY6IDB4ZWYsXG4gICAgZm9ya0lkOiA3OSxcbiAgICBjb2luOiBjb2lucy5CVEcsXG4gIH0sXG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4tc3YvYml0Y29pbi1zdi9ibG9iL21hc3Rlci9zcmMvdmFsaWRhdGlvbi5jcHBcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4tc3YvYml0Y29pbi1zdi9ibG9iL21hc3Rlci9zcmMvY2hhaW5wYXJhbXMuY3BwXG4gIGJpdGNvaW5zdjoge1xuICAgIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOEJpdGNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuJyxcbiAgICBiaXAzMjogZ2V0RGVmYXVsdEJpcDMyTWFpbm5ldCgpLFxuICAgIHB1YktleUhhc2g6IDB4MDAsXG4gICAgc2NyaXB0SGFzaDogMHgwNSxcbiAgICB3aWY6IDB4ODAsXG4gICAgY29pbjogY29pbnMuQlNWLFxuICAgIGZvcmtJZDogMHgwMCxcbiAgfSxcbiAgYml0Y29pbnN2VGVzdG5ldDoge1xuICAgIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOEJpdGNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuJyxcbiAgICBiaXAzMjogZ2V0RGVmYXVsdEJpcDMyVGVzdG5ldCgpLFxuICAgIHB1YktleUhhc2g6IDB4NmYsXG4gICAgc2NyaXB0SGFzaDogMHhjNCxcbiAgICB3aWY6IDB4ZWYsXG4gICAgY29pbjogY29pbnMuQlNWLFxuICAgIGZvcmtJZDogMHgwMCxcbiAgfSxcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGFzaHBheS9kYXNoL2Jsb2IvbWFzdGVyL3NyYy92YWxpZGF0aW9uLmNwcFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGFzaHBheS9kYXNoL2Jsb2IvbWFzdGVyL3NyYy9jaGFpbnBhcmFtcy5jcHBcbiAgZGFzaDoge1xuICAgIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOURhcmtDb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmlwMzI6IGdldERlZmF1bHRCaXAzMk1haW5uZXQoKSxcbiAgICBwdWJLZXlIYXNoOiAweDRjLFxuICAgIHNjcmlwdEhhc2g6IDB4MTAsXG4gICAgd2lmOiAweGNjLFxuICAgIGNvaW46IGNvaW5zLkRBU0gsXG4gIH0sXG4gIGRhc2hUZXN0OiB7XG4gICAgbWVzc2FnZVByZWZpeDogJ1xceDE5RGFya0NvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuJyxcbiAgICBiaXAzMjogZ2V0RGVmYXVsdEJpcDMyVGVzdG5ldCgpLFxuICAgIHB1YktleUhhc2g6IDB4OGMsXG4gICAgc2NyaXB0SGFzaDogMHgxMyxcbiAgICB3aWY6IDB4ZWYsXG4gICAgY29pbjogY29pbnMuREFTSCxcbiAgfSxcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZG9nZWNvaW4vZG9nZWNvaW4vYmxvYi9tYXN0ZXIvc3JjL3ZhbGlkYXRpb24uY3BwXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kb2dlY29pbi9kb2dlY29pbi9ibG9iL21hc3Rlci9zcmMvY2hhaW5wYXJhbXMuY3BwXG4gIC8vIE1haW5uZXQgYmlwMzIgaGVyZSBkb2VzIG5vdCBtYXRjaCBkb2dlY29pbiBjb3JlLCB0aGlzIGlzIGludGVuZGVkIChzZWUgQkctNTMyNDEpXG4gIGRvZ2Vjb2luOiB7XG4gICAgbWVzc2FnZVByZWZpeDogJ1xceDE5RG9nZWNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuJyxcbiAgICBiaXAzMjogZ2V0RGVmYXVsdEJpcDMyTWFpbm5ldCgpLFxuICAgIHB1YktleUhhc2g6IDB4MWUsXG4gICAgc2NyaXB0SGFzaDogMHgxNixcbiAgICB3aWY6IDB4OWUsXG4gICAgY29pbjogY29pbnMuRE9HRSxcbiAgfSxcbiAgZG9nZWNvaW5UZXN0OiB7XG4gICAgbWVzc2FnZVByZWZpeDogJ1xceDE5RG9nZWNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuJyxcbiAgICBiaXAzMjogZ2V0RGVmYXVsdEJpcDMyVGVzdG5ldCgpLFxuICAgIHB1YktleUhhc2g6IDB4NzEsXG4gICAgc2NyaXB0SGFzaDogMHhjNCxcbiAgICB3aWY6IDB4ZjEsXG4gICAgY29pbjogY29pbnMuRE9HRSxcbiAgfSxcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vQml0Y29pbi1BQkMvYml0Y29pbi1hYmMvYmxvYi9tYXN0ZXIvc3JjL3ZhbGlkYXRpb24uY3BwXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRjb2luLUFCQy9iaXRjb2luLWFiYy9ibG9iL21hc3Rlci9zcmMvY2hhaW5wYXJhbXMuY3BwXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRjb2luLUFCQy9iaXRjb2luLWFiYy9ibG9iL21hc3Rlci9zcmMvdXRpbC9tZXNzYWdlLmNwcFxuICBlY2FzaDoge1xuICAgIG1lc3NhZ2VQcmVmaXg6ICdcXHgxNmVDYXNoIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmlwMzI6IGdldERlZmF1bHRCaXAzMk1haW5uZXQoKSxcbiAgICBwdWJLZXlIYXNoOiAweDAwLFxuICAgIHNjcmlwdEhhc2g6IDB4MDUsXG4gICAgd2lmOiAweDgwLFxuICAgIGNvaW46IGNvaW5zLkJDSEEsXG4gICAgZm9ya0lkOiAweDAwLFxuICAgIGNhc2hBZGRyOiB7XG4gICAgICBwcmVmaXg6ICdlY2FzaCcsXG4gICAgICBwdWJLZXlIYXNoOiAweDAwLFxuICAgICAgc2NyaXB0SGFzaDogMHgwOCxcbiAgICB9LFxuICB9LFxuICBlY2FzaFRlc3Q6IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MTZlQ2FzaCBTaWduZWQgTWVzc2FnZTpcXG4nLFxuICAgIGJpcDMyOiBnZXREZWZhdWx0QmlwMzJUZXN0bmV0KCksXG4gICAgcHViS2V5SGFzaDogMHg2ZixcbiAgICBzY3JpcHRIYXNoOiAweGM0LFxuICAgIHdpZjogMHhlZixcbiAgICBjb2luOiBjb2lucy5CQ0hBLFxuICAgIGNhc2hBZGRyOiB7XG4gICAgICBwcmVmaXg6ICdlY2FzaHRlc3QnLFxuICAgICAgcHViS2V5SGFzaDogMHgwMCxcbiAgICAgIHNjcmlwdEhhc2g6IDB4MDgsXG4gICAgfSxcbiAgfSxcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGl0ZWNvaW4tcHJvamVjdC9saXRlY29pbi9ibG9iL21hc3Rlci9zcmMvdmFsaWRhdGlvbi5jcHBcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2xpdGVjb2luLXByb2plY3QvbGl0ZWNvaW4vYmxvYi9tYXN0ZXIvc3JjL2NoYWlucGFyYW1zLmNwcFxuICBsaXRlY29pbjoge1xuICAgIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOUxpdGVjb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmVjaDMyOiAnbHRjJyxcbiAgICBiaXAzMjogZ2V0RGVmYXVsdEJpcDMyTWFpbm5ldCgpLFxuICAgIHB1YktleUhhc2g6IDB4MzAsXG4gICAgc2NyaXB0SGFzaDogMHgzMixcbiAgICB3aWY6IDB4YjAsXG4gICAgY29pbjogY29pbnMuTFRDLFxuICB9LFxuICBsaXRlY29pblRlc3Q6IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MTlMaXRlY29pbiBTaWduZWQgTWVzc2FnZTpcXG4nLFxuICAgIGJlY2gzMjogJ3RsdGMnLFxuICAgIGJpcDMyOiBnZXREZWZhdWx0QmlwMzJUZXN0bmV0KCksXG4gICAgcHViS2V5SGFzaDogMHg2ZixcbiAgICBzY3JpcHRIYXNoOiAweDNhLFxuICAgIHdpZjogMHhlZixcbiAgICBjb2luOiBjb2lucy5MVEMsXG4gIH0sXG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvbWFzdGVyL3NyYy92YWxpZGF0aW9uLmNwcFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemNhc2gvemNhc2gvYmxvYi9tYXN0ZXIvc3JjL2NoYWlucGFyYW1zLmNwcFxuICB6Y2FzaDoge1xuICAgIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOFpDYXNoIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmlwMzI6IGdldERlZmF1bHRCaXAzMk1haW5uZXQoKSxcbiAgICBwdWJLZXlIYXNoOiAweDFjYjgsXG4gICAgc2NyaXB0SGFzaDogMHgxY2JkLFxuICAgIHdpZjogMHg4MCxcbiAgICBjb2luOiBjb2lucy5aRUMsXG4gIH0sXG4gIHpjYXNoVGVzdDoge1xuICAgIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOFpDYXNoIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmlwMzI6IGdldERlZmF1bHRCaXAzMlRlc3RuZXQoKSxcbiAgICBwdWJLZXlIYXNoOiAweDFkMjUsXG4gICAgc2NyaXB0SGFzaDogMHgxY2JhLFxuICAgIHdpZjogMHhlZixcbiAgICBjb2luOiBjb2lucy5aRUMsXG4gIH0sXG4gIC8vICM5Mjg2RjggUEVDVU5JQSBDSEFOR0VTXG4gIGJiYzoge1xuICAgIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOURhcmtDb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmlwMzI6IHtcbiAgICAgIHB1YmxpYzogMHgwNDg4YWRlMyxcbiAgICAgIHByaXZhdGU6IDB4MDQ4OGIyMWUsXG4gICAgfSxcbiAgICBwdWJLZXlIYXNoOiAweDE5LFxuICAgIHNjcmlwdEhhc2g6IDB4NjYsXG4gICAgd2lmOiAweGNkLFxuICAgIGNvaW46IGNvaW5zLkJCQyxcbiAgfSxcbn07XG5cbi8qKlxuICogQHJldHVybnMge05ldHdvcmtbXX0gYWxsIGtub3duIG5ldHdvcmtzIGFzIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXR3b3JrTGlzdCgpOiBOZXR3b3JrW10ge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhuZXR3b3Jrcyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtOZXR3b3JrfSBuZXR3b3JrXG4gKiBAcmV0dXJucyB7TmV0d29ya05hbWV9IHRoZSBuYW1lIG9mIHRoZSBuZXR3b3JrLiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBuZXR3b3JrIGlzIG5vdCBhIHZhbHVlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIG9mIGBuZXR3b3Jrc2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5ldHdvcmtOYW1lKG5ldHdvcms6IE5ldHdvcmspOiBOZXR3b3JrTmFtZSB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhuZXR3b3JrcykuZmluZCgobikgPT4gKG5ldHdvcmtzIGFzIFJlY29yZDxzdHJpbmcsIE5ldHdvcms+KVtuXSA9PT0gbmV0d29yaykgYXNcbiAgICB8IE5ldHdvcmtOYW1lXG4gICAgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtOZXR3b3JrfSBuZXR3b3JrXG4gKiBAcmV0dXJucyB7T2JqZWN0fSB0aGUgbWFpbm5ldCBjb3JyZXNwb25kaW5nIHRvIGEgdGVzdG5ldFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFpbm5ldChuZXR3b3JrOiBOZXR3b3JrKTogTmV0d29yayB7XG4gIHN3aXRjaCAobmV0d29yay5mb3JrQ2hhaW4pIHtcbiAgICBjYXNlICdiaXRjb2luJzpcbiAgICAgIHJldHVybiBuZXR3b3Jrcy5iaXRjb2luO1xuXG4gICAgY2FzZSAnYml0Y29pbmNhc2gnOlxuICAgICAgcmV0dXJuIG5ldHdvcmtzLmJpdGNvaW5jYXNoO1xuXG4gICAgY2FzZSAnYml0Y29pbmdvbGQnOlxuICAgICAgcmV0dXJuIG5ldHdvcmtzLmJpdGNvaW5nb2xkO1xuXG4gICAgY2FzZSAnYml0Y29pbnN2JzpcbiAgICAgIHJldHVybiBuZXR3b3Jrcy5iaXRjb2luc3Y7XG5cbiAgICBjYXNlICdkYXNoJzpcbiAgICAgIHJldHVybiBuZXR3b3Jrcy5kYXNoO1xuXG4gICAgY2FzZSAnZWNhc2gnOlxuICAgICAgcmV0dXJuIG5ldHdvcmtzLmVjYXNoO1xuXG4gICAgY2FzZSAnbGl0ZWNvaW4nOlxuICAgICAgcmV0dXJuIG5ldHdvcmtzLmxpdGVjb2luO1xuXG4gICAgY2FzZSAnemNhc2gnOlxuICAgICAgcmV0dXJuIG5ldHdvcmtzLnpjYXNoO1xuXG4gICAgY2FzZSAnZG9nZWNvaW4nOlxuICAgICAgcmV0dXJuIG5ldHdvcmtzLmRvZ2Vjb2luO1xuICAgIC8vICM5Mjg2RjggUEVDVU5JQSBDSEFOR0VTXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBuZXR3b3Jrcy5iaXRjb2luO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtOZXR3b3JrfSBuZXR3b3JrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZmYgbmV0d29yayBpcyBhIG1haW5uZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTWFpbm5ldChuZXR3b3JrOiBOZXR3b3JrKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRNYWlubmV0KG5ldHdvcmspID09PSBuZXR3b3JrO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7TmV0d29ya30gbmV0d29ya1xuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWZmIG5ldHdvcmsgaXMgYSB0ZXN0bmV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Rlc3RuZXQobmV0d29yazogTmV0d29yayk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0TWFpbm5ldChuZXR3b3JrKSAhPT0gbmV0d29yaztcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHtOZXR3b3JrfSBuZXR3b3JrXG4gKiBAcGFyYW0ge05ldHdvcmt9IG90aGVyTmV0d29ya1xuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWZmIGJvdGggbmV0d29ya3MgYXJlIGZvciB0aGUgc2FtZSBjb2luXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVDb2luKG5ldHdvcms6IE5ldHdvcmssIG90aGVyTmV0d29yazogTmV0d29yayk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0TWFpbm5ldChuZXR3b3JrKSA9PT0gZ2V0TWFpbm5ldChvdGhlck5ldHdvcmspO1xufVxuXG5jb25zdCBtYWlubmV0cyA9IGdldE5ldHdvcmtMaXN0KCkuZmlsdGVyKGlzTWFpbm5ldCk7XG5jb25zdCB0ZXN0bmV0cyA9IGdldE5ldHdvcmtMaXN0KCkuZmlsdGVyKGlzVGVzdG5ldCk7XG5cbi8qKlxuICogTWFwIHdoZXJlIGtleXMgYXJlIG1haW5uZXQgbmV0d29ya3MgYW5kIHZhbHVlcyBhcmUgdGVzdG5ldCBuZXR3b3Jrc1xuICogQHR5cGUge01hcDxOZXR3b3JrLCBOZXR3b3JrW10+fVxuICovXG5jb25zdCBtYWlubmV0VGVzdG5ldFBhaXJzID0gbmV3IE1hcChtYWlubmV0cy5tYXAoKG0pID0+IFttLCB0ZXN0bmV0cy5maWx0ZXIoKHQpID0+IGdldE1haW5uZXQodCkgPT09IG0pXSkpO1xuXG4vKipcbiAqIEBwYXJhbSB7TmV0d29ya30gbmV0d29ya1xuICogQHJldHVybnMge05ldHdvcmt8dW5kZWZpbmVkfSAtIFRoZSB0ZXN0bmV0IGNvcnJlc3BvbmRpbmcgdG8gYSBtYWlubmV0LlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJucyB1bmRlZmluZWQgaWYgYSBuZXR3b3JrIGhhcyBubyB0ZXN0bmV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVzdG5ldChuZXR3b3JrOiBOZXR3b3JrKTogTmV0d29yayB8IHVuZGVmaW5lZCB7XG4gIGlmIChpc1Rlc3RuZXQobmV0d29yaykpIHtcbiAgICByZXR1cm4gbmV0d29yaztcbiAgfVxuICBjb25zdCB0ZXN0bmV0cyA9IG1haW5uZXRUZXN0bmV0UGFpcnMuZ2V0KG5ldHdvcmspO1xuICBpZiAodGVzdG5ldHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudGApO1xuICB9XG4gIGlmICh0ZXN0bmV0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHRlc3RuZXRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiB0ZXN0bmV0c1swXTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYG1vcmUgdGhhbiBvbmUgdGVzdG5ldCBmb3IgJHtnZXROZXR3b3JrTmFtZShuZXR3b3JrKX1gKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge05ldHdvcmt9IG5ldHdvcmtcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmZiBuZXR3b3JrIGJpdGNvaW4gb3IgdGVzdG5ldFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCaXRjb2luKG5ldHdvcms6IE5ldHdvcmspOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldE1haW5uZXQobmV0d29yaykgPT09IG5ldHdvcmtzLmJpdGNvaW47XG59XG5cbi8qKlxuICogQHBhcmFtIHtOZXR3b3JrfSBuZXR3b3JrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZmYgbmV0d29yayBpcyBiaXRjb2luY2FzaCBvciBiaXRjb2luY2FzaFRlc3RuZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQml0Y29pbkNhc2gobmV0d29yazogTmV0d29yayk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0TWFpbm5ldChuZXR3b3JrKSA9PT0gbmV0d29ya3MuYml0Y29pbmNhc2g7XG59XG5cbi8qKlxuICogQHBhcmFtIHtOZXR3b3JrfSBuZXR3b3JrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZmYgbmV0d29yayBpcyBlY2FzaCBvciBlY2FzaFRlc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRUNhc2gobmV0d29yazogTmV0d29yayk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0TWFpbm5ldChuZXR3b3JrKSA9PT0gbmV0d29ya3MuZWNhc2g7XG59XG5cbi8qKlxuICogQHBhcmFtIHtOZXR3b3JrfSBuZXR3b3JrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZmYgbmV0d29yayBpcyBiaXRjb2luZ29sZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNCaXRjb2luR29sZChuZXR3b3JrOiBOZXR3b3JrKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRNYWlubmV0KG5ldHdvcmspID09PSBuZXR3b3Jrcy5iaXRjb2luZ29sZDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge05ldHdvcmt9IG5ldHdvcmtcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmZiBuZXR3b3JrIGlzIGJpdGNvaW5zdiBvciBiaXRjb2luc3ZUZXN0bmV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0JpdGNvaW5TVihuZXR3b3JrOiBOZXR3b3JrKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRNYWlubmV0KG5ldHdvcmspID09PSBuZXR3b3Jrcy5iaXRjb2luc3Y7XG59XG5cbi8qKlxuICogQHBhcmFtIHtOZXR3b3JrfSBuZXR3b3JrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZmYgbmV0d29yayBpcyBkYXNoIG9yIGRhc2hUZXN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Rhc2gobmV0d29yazogTmV0d29yayk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0TWFpbm5ldChuZXR3b3JrKSA9PT0gbmV0d29ya3MuZGFzaDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge05ldHdvcmt9IG5ldHdvcmtcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmZiBuZXR3b3JrIGlzIGRvZ2Vjb2luIG9yIGRvZ2Vjb2luVGVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEb2dlY29pbihuZXR3b3JrOiBOZXR3b3JrKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRNYWlubmV0KG5ldHdvcmspID09PSBuZXR3b3Jrcy5kb2dlY29pbjtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge05ldHdvcmt9IG5ldHdvcmtcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmZiBuZXR3b3JrIGlzIGxpdGVjb2luIG9yIGxpdGVjb2luVGVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaXRlY29pbihuZXR3b3JrOiBOZXR3b3JrKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRNYWlubmV0KG5ldHdvcmspID09PSBuZXR3b3Jrcy5saXRlY29pbjtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge05ldHdvcmt9IG5ldHdvcmtcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmZiBuZXR3b3JrIGlzIHpjYXNoIG9yIHpjYXNoVGVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNaY2FzaChuZXR3b3JrOiBOZXR3b3JrKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRNYWlubmV0KG5ldHdvcmspID09PSBuZXR3b3Jrcy56Y2FzaDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IG5ldHdvcmtcbiAqIEByZXR1cm5zIHtib29sZWFufSByZXR1cm5zIHRydWUgaWZmIG5ldHdvcmsgaXMgYW55IG9mIHRoZSBuZXR3b3JrIHN0YXRlZCBpbiB0aGUgYXJndW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWROZXR3b3JrKG5ldHdvcms6IHVua25vd24pOiBuZXR3b3JrIGlzIE5ldHdvcmsge1xuICByZXR1cm4gZ2V0TmV0d29ya0xpc3QoKS5pbmNsdWRlcyhuZXR3b3JrIGFzIE5ldHdvcmspO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9ydHNTZWd3aXQobmV0d29yazogTmV0d29yayk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFtuZXR3b3Jrcy5iaXRjb2luLCBuZXR3b3Jrcy5saXRlY29pbiwgbmV0d29ya3MuYml0Y29pbmdvbGRdIGFzIE5ldHdvcmtbXSkuaW5jbHVkZXMoZ2V0TWFpbm5ldChuZXR3b3JrKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3J0c1RhcHJvb3QobmV0d29yazogTmV0d29yayk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0TWFpbm5ldChuZXR3b3JrKSA9PT0gbmV0d29ya3MuYml0Y29pbjtcbn1cbiJdfQ==
|
package/dist/src/noble_ecc.d.ts
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
import { ECPairAPI, ECPairInterface } from 'ecpair';
|
2
|
-
import { BIP32API, BIP32Interface } from 'bip32';
|
3
|
-
import { MuSig } from '@brandonblack/musig';
|
4
|
-
declare const ecc: {
|
5
|
-
isPoint: (p: Uint8Array) => boolean;
|
6
|
-
isPrivate: (d: Uint8Array) => boolean;
|
7
|
-
isXOnlyPoint: (p: Uint8Array) => boolean;
|
8
|
-
xOnlyPointAddTweak: (p: Uint8Array, tweak: Uint8Array) => {
|
9
|
-
parity: 0 | 1;
|
10
|
-
xOnlyPubkey: Uint8Array;
|
11
|
-
} | null;
|
12
|
-
pointFromScalar: (sk: Uint8Array, compressed?: boolean | undefined) => Uint8Array | null;
|
13
|
-
pointCompress: (p: Uint8Array, compressed?: boolean | undefined) => Uint8Array;
|
14
|
-
pointMultiply: (a: Uint8Array, tweak: Uint8Array, compressed?: boolean | undefined) => Uint8Array | null;
|
15
|
-
pointAdd: (a: Uint8Array, b: Uint8Array, compressed?: boolean | undefined) => Uint8Array | null;
|
16
|
-
pointAddScalar: (p: Uint8Array, tweak: Uint8Array, compressed?: boolean | undefined) => Uint8Array | null;
|
17
|
-
privateAdd: (d: Uint8Array, tweak: Uint8Array) => Uint8Array | null;
|
18
|
-
privateNegate: (d: Uint8Array) => Uint8Array;
|
19
|
-
sign: (h: Uint8Array, d: Uint8Array, e?: Uint8Array | undefined) => Uint8Array;
|
20
|
-
signSchnorr: (h: Uint8Array, d: Uint8Array, e?: Uint8Array) => Uint8Array;
|
21
|
-
verify: (h: Uint8Array, Q: Uint8Array, signature: Uint8Array, strict?: boolean | undefined) => boolean;
|
22
|
-
verifySchnorr: (h: Uint8Array, Q: Uint8Array, signature: Uint8Array) => boolean;
|
23
|
-
};
|
24
|
-
declare const ECPair: ECPairAPI;
|
25
|
-
declare const bip32: BIP32API;
|
26
|
-
declare const musig: MuSig;
|
27
|
-
export { ecc, ECPair, ECPairAPI, ECPairInterface, bip32, BIP32API, BIP32Interface, musig, MuSig };
|
28
|
-
//# sourceMappingURL=noble_ecc.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"noble_ecc.d.ts","sourceRoot":"","sources":["../../src/noble_ecc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAiB,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAgB,cAAc,EAAE,MAAM,OAAO,CAAC;AAI/D,OAAO,EAAE,KAAK,EAAgB,MAAM,qBAAqB,CAAC;AAqC1D,QAAA,MAAM,GAAG;iBACM,UAAU,KAAG,OAAO;mBAClB,UAAU,KAAG,OAAO;sBACjB,UAAU,KAAG,OAAO;4BAEd,UAAU,SAAS,UAAU,KAAG;QAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QAAC,WAAW,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI;0BAOnF,UAAU,uCAAyB,UAAU,GAAG,IAAI;uBAGvD,UAAU,uCAAyB,UAAU;uBAI7C,UAAU,SAAS,UAAU,uCAAyB,UAAU,GAAG,IAAI;kBAG5E,UAAU,KAAK,UAAU,uCAAyB,UAAU,GAAG,IAAI;wBAO7D,UAAU,SAAS,UAAU,uCAAyB,UAAU,GAAG,IAAI;oBAG3E,UAAU,SAAS,UAAU,KAAG,UAAU,GAAG,IAAI;uBAS9C,UAAU,KAAG,UAAU;cAEhC,UAAU,KAAK,UAAU,iCAAmB,UAAU;qBAI/C,UAAU,KAAK,UAAU,MAAK,UAAU,KAA4B,UAAU;gBAInF,UAAU,KAAK,UAAU,aAAa,UAAU,mCAAqB,OAAO;uBAIrE,UAAU,KAAK,UAAU,aAAa,UAAU,KAAG,OAAO;CAG9E,CAAC;AAkEF,QAAA,MAAM,MAAM,EAAE,SAA8B,CAAC;AAC7C,QAAA,MAAM,KAAK,EAAE,QAA4B,CAAC;AAC1C,QAAA,MAAM,KAAK,EAAE,KAA4B,CAAC;AAE1C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC"}
|