@bitgo-beta/sdk-core 8.2.1-beta.13 → 8.2.1-beta.130
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/CHANGELOG.md +432 -0
- package/dist/src/account-lib/baseCoin/enum.d.ts +6 -1
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +11 -1
- package/dist/src/account-lib/mpc/curves/ed25519.d.ts +4 -18
- package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/curves/ed25519.js +6 -60
- package/dist/src/account-lib/mpc/index.d.ts +4 -4
- package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/index.js +6 -6
- package/dist/src/account-lib/mpc/shamir.d.ts +5 -37
- package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/shamir.js +6 -130
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +57 -9
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +581 -57
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +97 -55
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +0 -3
- package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +16 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +15 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +20 -4
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/bitgoBase.d.ts +2 -1
- package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
- package/dist/src/bitgo/bitgoBase.js +1 -1
- package/dist/src/bitgo/enterprise/enterprise.d.ts +13 -1
- package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/enterprise.js +29 -1
- package/dist/src/bitgo/enterprise/enterprises.d.ts +6 -0
- package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/enterprises.js +26 -1
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts +4 -1
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
- package/dist/src/bitgo/enterprise/iEnterprises.d.ts +2 -0
- package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/iEnterprises.js +1 -1
- package/dist/src/bitgo/environments.d.ts +7 -0
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +17 -3
- package/dist/src/bitgo/keychain/iKeychains.d.ts +6 -0
- package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/iKeychains.js +1 -1
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +30 -24
- package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +124 -89
- package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/ovcJsonCodec.js +31 -24
- package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +2 -0
- package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/iPendingApproval.js +1 -1
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/pendingApproval.js +13 -1
- package/dist/src/bitgo/recovery/initiate.d.ts +7 -1
- package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
- package/dist/src/bitgo/recovery/initiate.js +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.d.ts +11 -1
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts +7 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/stakingWallet.js +9 -1
- package/dist/src/bitgo/tss/common.d.ts +15 -4
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +26 -11
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +11 -8
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +36 -33
- package/dist/src/bitgo/tss/ecdsa/types.d.ts +2 -2
- package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +6 -5
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.js +20 -9
- package/dist/src/bitgo/tss/types.d.ts +19 -0
- package/dist/src/bitgo/tss/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/types.js +1 -1
- package/dist/src/bitgo/utils/codecProps.d.ts +7 -0
- package/dist/src/bitgo/utils/codecProps.d.ts.map +1 -0
- package/dist/src/bitgo/utils/codecProps.js +41 -0
- package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/opengpgUtils.js +7 -10
- package/dist/src/bitgo/utils/postWithCodec.d.ts +18 -0
- package/dist/src/bitgo/utils/postWithCodec.d.ts.map +1 -0
- package/dist/src/bitgo/utils/postWithCodec.js +59 -0
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +59 -12
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +71 -9
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +174 -9
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +27 -2
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +47 -7
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +247 -119
- package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +9 -0
- package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +18 -5
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +79 -25
- package/dist/src/bitgo/wallet/BuildParams.d.ts +112 -0
- package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/BuildParams.js +121 -0
- package/dist/src/bitgo/wallet/SendTransactionRequest.d.ts +93 -0
- package/dist/src/bitgo/wallet/SendTransactionRequest.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/SendTransactionRequest.js +41 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts +14 -1
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts +11 -2
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +140 -82
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/openssl/index.d.ts +4 -1
- package/dist/src/openssl/index.d.ts.map +1 -1
- package/dist/src/openssl/index.js +7 -12
- package/dist/test/node.utils.d.ts +2 -0
- package/dist/test/node.utils.d.ts.map +1 -0
- package/dist/test/node.utils.js +5 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +2 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +185 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.d.ts +3 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.d.ts.map +1 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.js +24 -0
- package/dist/test/unit/bitgo/utils/postWithCodec.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/postWithCodec.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/postWithCodec.js +79 -0
- package/dist/test/unit/bitgo/wallet/SendTransactionRequest.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/SendTransactionRequest.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +49 -0
- package/dist/test/unit/openssl.d.ts +2 -0
- package/dist/test/unit/openssl.d.ts.map +1 -0
- package/dist/test/unit/openssl.js +39 -0
- package/dist/test/unit/units.d.ts +2 -0
- package/dist/test/unit/units.d.ts.map +1 -0
- package/dist/test/unit/units.js +98 -0
- package/dist/tsconfig.tsbuildinfo +1 -8279
- package/package.json +14 -13
- package/dist/src/account-lib/mpc/hdTree.d.ts +0 -31
- package/dist/src/account-lib/mpc/hdTree.d.ts.map +0 -1
- package/dist/src/account-lib/mpc/hdTree.js +0 -141
- package/dist/src/account-lib/mpc/types.d.ts +0 -5
- package/dist/src/account-lib/mpc/types.d.ts.map +0 -1
- package/dist/src/account-lib/mpc/types.js +0 -3
- package/dist/src/openssl/openssl.d.ts +0 -12
- package/dist/src/openssl/openssl.d.ts.map +0 -1
- package/dist/src/openssl/openssl.js +0 -48
- package/dist/src/openssl/opensslbytes.d.ts +0 -4
- package/dist/src/openssl/opensslbytes.d.ts.map +0 -1
- package/dist/src/openssl/opensslbytes.js +0 -20
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("should");
|
|
4
|
+
const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
|
|
5
|
+
const bigint_crypto_utils_1 = require("bigint-crypto-utils");
|
|
6
|
+
const node_utils_1 = require("../node.utils");
|
|
7
|
+
describe('openssl', function () {
|
|
8
|
+
it('should throw an error if module is not initialized', async function () {
|
|
9
|
+
const openssl = new sdk_lib_mpc_1.OpenSSL();
|
|
10
|
+
await openssl
|
|
11
|
+
.generateSafePrime(sdk_lib_mpc_1.minModulusBitLength)
|
|
12
|
+
.should.be.rejectedWith('The OpenSSl class is not initialized! Please call OpenSSL.init().');
|
|
13
|
+
});
|
|
14
|
+
// node 14 requires --experimental-wasm-bigint node flag
|
|
15
|
+
if (node_utils_1.NODE_MAJOR_VERSION > 14) {
|
|
16
|
+
it('should generate a safe prime number of a certain bitLength', async function () {
|
|
17
|
+
const openssl = new sdk_lib_mpc_1.OpenSSL();
|
|
18
|
+
await openssl.init();
|
|
19
|
+
const safePrime = await openssl.generateSafePrime(512);
|
|
20
|
+
bigint_crypto_utils_1.bitLength(safePrime).should.equal(512);
|
|
21
|
+
});
|
|
22
|
+
it('should generate a safe prime number', async function () {
|
|
23
|
+
const openssl = new sdk_lib_mpc_1.OpenSSL();
|
|
24
|
+
await openssl.init();
|
|
25
|
+
const safePrime = await openssl.generateSafePrime(512);
|
|
26
|
+
let isPrime = await bigint_crypto_utils_1.isProbablyPrime(safePrime);
|
|
27
|
+
isPrime.should.be.true();
|
|
28
|
+
isPrime = await bigint_crypto_utils_1.isProbablyPrime((safePrime - BigInt(1)) / BigInt(2));
|
|
29
|
+
isPrime.should.be.true();
|
|
30
|
+
});
|
|
31
|
+
it('should be able to generate multiple safe primes with the same openssl instance', async function () {
|
|
32
|
+
const openssl = new sdk_lib_mpc_1.OpenSSL();
|
|
33
|
+
await openssl.init();
|
|
34
|
+
const safePrimes = await Promise.all([openssl.generateSafePrime(512), openssl.generateSafePrime(512)]);
|
|
35
|
+
safePrimes.length.should.equal(2);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnNzbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9vcGVuc3NsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWdCO0FBQ2hCLHlEQUF1RTtBQUN2RSw2REFBaUU7QUFDakUsOENBQW1EO0FBRW5ELFFBQVEsQ0FBQyxTQUFTLEVBQUU7SUFDbEIsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEtBQUs7UUFDNUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBTyxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPO2FBQ1YsaUJBQWlCLENBQUMsaUNBQW1CLENBQUM7YUFDdEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsbUVBQW1FLENBQUMsQ0FBQztJQUNqRyxDQUFDLENBQUMsQ0FBQztJQUVILHdEQUF3RDtJQUN4RCxJQUFJLCtCQUFrQixHQUFHLEVBQUUsRUFBRTtRQUMzQixFQUFFLENBQUMsNERBQTRELEVBQUUsS0FBSztZQUNwRSxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFPLEVBQUUsQ0FBQztZQUM5QixNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RCwrQkFBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUNBQXFDLEVBQUUsS0FBSztZQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFPLEVBQUUsQ0FBQztZQUM5QixNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RCxJQUFJLE9BQU8sR0FBRyxNQUFNLHFDQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsT0FBTyxHQUFHLE1BQU0scUNBQWUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxLQUFLO1lBQ3hGLE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQU8sRUFBRSxDQUFDO1lBQzlCLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBPcGVuU1NMLCBtaW5Nb2R1bHVzQml0TGVuZ3RoIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHsgYml0TGVuZ3RoLCBpc1Byb2JhYmx5UHJpbWUgfSBmcm9tICdiaWdpbnQtY3J5cHRvLXV0aWxzJztcbmltcG9ydCB7IE5PREVfTUFKT1JfVkVSU0lPTiB9IGZyb20gJy4uL25vZGUudXRpbHMnO1xuXG5kZXNjcmliZSgnb3BlbnNzbCcsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiBtb2R1bGUgaXMgbm90IGluaXRpYWxpemVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG9wZW5zc2wgPSBuZXcgT3BlblNTTCgpO1xuICAgIGF3YWl0IG9wZW5zc2xcbiAgICAgIC5nZW5lcmF0ZVNhZmVQcmltZShtaW5Nb2R1bHVzQml0TGVuZ3RoKVxuICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1RoZSBPcGVuU1NsIGNsYXNzIGlzIG5vdCBpbml0aWFsaXplZCEgUGxlYXNlIGNhbGwgT3BlblNTTC5pbml0KCkuJyk7XG4gIH0pO1xuXG4gIC8vIG5vZGUgMTQgcmVxdWlyZXMgLS1leHBlcmltZW50YWwtd2FzbS1iaWdpbnQgbm9kZSBmbGFnXG4gIGlmIChOT0RFX01BSk9SX1ZFUlNJT04gPiAxNCkge1xuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSBzYWZlIHByaW1lIG51bWJlciBvZiBhIGNlcnRhaW4gYml0TGVuZ3RoJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgb3BlbnNzbCA9IG5ldyBPcGVuU1NMKCk7XG4gICAgICBhd2FpdCBvcGVuc3NsLmluaXQoKTtcbiAgICAgIGNvbnN0IHNhZmVQcmltZSA9IGF3YWl0IG9wZW5zc2wuZ2VuZXJhdGVTYWZlUHJpbWUoNTEyKTtcbiAgICAgIGJpdExlbmd0aChzYWZlUHJpbWUpLnNob3VsZC5lcXVhbCg1MTIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHNhZmUgcHJpbWUgbnVtYmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgb3BlbnNzbCA9IG5ldyBPcGVuU1NMKCk7XG4gICAgICBhd2FpdCBvcGVuc3NsLmluaXQoKTtcbiAgICAgIGNvbnN0IHNhZmVQcmltZSA9IGF3YWl0IG9wZW5zc2wuZ2VuZXJhdGVTYWZlUHJpbWUoNTEyKTtcbiAgICAgIGxldCBpc1ByaW1lID0gYXdhaXQgaXNQcm9iYWJseVByaW1lKHNhZmVQcmltZSk7XG4gICAgICBpc1ByaW1lLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBpc1ByaW1lID0gYXdhaXQgaXNQcm9iYWJseVByaW1lKChzYWZlUHJpbWUgLSBCaWdJbnQoMSkpIC8gQmlnSW50KDIpKTtcbiAgICAgIGlzUHJpbWUuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBnZW5lcmF0ZSBtdWx0aXBsZSBzYWZlIHByaW1lcyB3aXRoIHRoZSBzYW1lIG9wZW5zc2wgaW5zdGFuY2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBvcGVuc3NsID0gbmV3IE9wZW5TU0woKTtcbiAgICAgIGF3YWl0IG9wZW5zc2wuaW5pdCgpO1xuICAgICAgY29uc3Qgc2FmZVByaW1lcyA9IGF3YWl0IFByb21pc2UuYWxsKFtvcGVuc3NsLmdlbmVyYXRlU2FmZVByaW1lKDUxMiksIG9wZW5zc2wuZ2VuZXJhdGVTYWZlUHJpbWUoNTEyKV0pO1xuICAgICAgc2FmZVByaW1lcy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuICAgIH0pO1xuICB9XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../../test/unit/units.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
7
|
+
require("should");
|
|
8
|
+
const src_1 = require("../../src");
|
|
9
|
+
describe('units', () => {
|
|
10
|
+
describe('toFullUnits', () => {
|
|
11
|
+
it('should convert numbers into full units', () => {
|
|
12
|
+
src_1.toFullUnits(0, 'susd').should.equal('0');
|
|
13
|
+
src_1.toFullUnits(75, 'susd').should.equal('0.75');
|
|
14
|
+
src_1.toFullUnits(-100, 'susd').should.equal('-1');
|
|
15
|
+
src_1.toFullUnits(0, 'btc').should.equal('0');
|
|
16
|
+
src_1.toFullUnits(75, 'btc').should.equal('7.5e-7');
|
|
17
|
+
src_1.toFullUnits(750000, 'btc').should.equal('0.0075');
|
|
18
|
+
src_1.toFullUnits(-7500000, 'btc').should.equal('-0.075');
|
|
19
|
+
});
|
|
20
|
+
it('should convert big numbers into full units', () => {
|
|
21
|
+
src_1.toFullUnits(bignumber_js_1.default(0), 'susd').should.equal('0');
|
|
22
|
+
src_1.toFullUnits(bignumber_js_1.default(75), 'susd').should.equal('0.75');
|
|
23
|
+
src_1.toFullUnits(bignumber_js_1.default('7500000000000'), 'susd').should.equal('75000000000');
|
|
24
|
+
src_1.toFullUnits(bignumber_js_1.default('750000000000000000000000000'), 'susd').should.equal('7.5e+24');
|
|
25
|
+
src_1.toFullUnits(bignumber_js_1.default(-100), 'susd').should.equal('-1');
|
|
26
|
+
src_1.toFullUnits(bignumber_js_1.default(0), 'btc').should.equal('0');
|
|
27
|
+
src_1.toFullUnits(bignumber_js_1.default(75), 'btc').should.equal('7.5e-7');
|
|
28
|
+
src_1.toFullUnits(bignumber_js_1.default(750000), 'btc').should.equal('0.0075');
|
|
29
|
+
src_1.toFullUnits(bignumber_js_1.default(-7500000), 'btc').should.equal('-0.075');
|
|
30
|
+
src_1.toFullUnits(bignumber_js_1.default('75000000000000000000000000'), 'btc').should.equal('750000000000000000');
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('toFullUnitsFixed', () => {
|
|
34
|
+
it('should convert numbers into full fixed units', () => {
|
|
35
|
+
src_1.toFullUnitsFixed(0, 'susd').should.equal('0.00');
|
|
36
|
+
src_1.toFullUnitsFixed(75, 'susd').should.equal('0.75');
|
|
37
|
+
src_1.toFullUnitsFixed(-100, 'susd').should.equal('-1.00');
|
|
38
|
+
src_1.toFullUnitsFixed(0, 'btc').should.equal('0.00000000');
|
|
39
|
+
src_1.toFullUnitsFixed(75, 'btc').should.equal('0.00000075');
|
|
40
|
+
src_1.toFullUnitsFixed(750000, 'btc').should.equal('0.00750000');
|
|
41
|
+
src_1.toFullUnitsFixed(-7500000, 'btc').should.equal('-0.07500000');
|
|
42
|
+
});
|
|
43
|
+
it('should convert big numbers into full fixed units', () => {
|
|
44
|
+
src_1.toFullUnitsFixed(bignumber_js_1.default(0), 'susd').should.equal('0.00');
|
|
45
|
+
src_1.toFullUnitsFixed(bignumber_js_1.default(75), 'susd').should.equal('0.75');
|
|
46
|
+
src_1.toFullUnitsFixed(bignumber_js_1.default('7500000000000'), 'susd').should.equal('75000000000.00');
|
|
47
|
+
src_1.toFullUnitsFixed(bignumber_js_1.default('750000000000000000000000000'), 'susd').should.equal('7500000000000000000000000.00');
|
|
48
|
+
src_1.toFullUnitsFixed(bignumber_js_1.default(-100), 'susd').should.equal('-1.00');
|
|
49
|
+
src_1.toFullUnitsFixed(bignumber_js_1.default(0), 'btc').should.equal('0.00000000');
|
|
50
|
+
src_1.toFullUnitsFixed(bignumber_js_1.default(75), 'btc').should.equal('0.00000075');
|
|
51
|
+
src_1.toFullUnitsFixed(bignumber_js_1.default(750000), 'btc').should.equal('0.00750000');
|
|
52
|
+
src_1.toFullUnitsFixed(bignumber_js_1.default(-7500000), 'btc').should.equal('-0.07500000');
|
|
53
|
+
src_1.toFullUnitsFixed(bignumber_js_1.default('75000000000000000000000000'), 'btc').should.equal('750000000000000000.00000000');
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('toBaseUnits', () => {
|
|
57
|
+
it('should convert into base units', () => {
|
|
58
|
+
src_1.toBaseUnits(0, 'susd').should.equal('0');
|
|
59
|
+
src_1.toBaseUnits('0.75', 'susd').should.equal('75');
|
|
60
|
+
src_1.toBaseUnits('-1.00', 'susd').should.equal('-100');
|
|
61
|
+
src_1.toBaseUnits('0', 'btc').should.equal('0');
|
|
62
|
+
src_1.toBaseUnits('0.000000000', 'btc').should.equal('0');
|
|
63
|
+
src_1.toBaseUnits('0.00000075', 'btc').should.equal('75');
|
|
64
|
+
src_1.toBaseUnits('0.00750000', 'btc').should.equal('750000');
|
|
65
|
+
src_1.toBaseUnits('-0.07500000', 'btc').should.equal('-7500000');
|
|
66
|
+
});
|
|
67
|
+
it('should convert big numbers into base units', () => {
|
|
68
|
+
src_1.toBaseUnits(bignumber_js_1.default(0), 'susd').should.equal('0');
|
|
69
|
+
src_1.toBaseUnits(bignumber_js_1.default(75), 'susd').should.equal('7500');
|
|
70
|
+
src_1.toBaseUnits(bignumber_js_1.default('7500000000000'), 'susd').should.equal('750000000000000');
|
|
71
|
+
src_1.toBaseUnits(bignumber_js_1.default('750000000000000000000000000'), 'susd').should.equal('7.5e+28');
|
|
72
|
+
src_1.toBaseUnits(bignumber_js_1.default(-100), 'susd').should.equal('-10000');
|
|
73
|
+
src_1.toBaseUnits(bignumber_js_1.default(0), 'btc').should.equal('0');
|
|
74
|
+
src_1.toBaseUnits(bignumber_js_1.default(75), 'btc').should.equal('7500000000');
|
|
75
|
+
src_1.toBaseUnits(bignumber_js_1.default(750000), 'btc').should.equal('75000000000000');
|
|
76
|
+
src_1.toBaseUnits(bignumber_js_1.default(-7500000), 'btc').should.equal('-750000000000000');
|
|
77
|
+
src_1.toBaseUnits(bignumber_js_1.default('75000000000000000000000000'), 'btc').should.equal('7.5e+33');
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('toMarketValueBaseUnits', () => {
|
|
81
|
+
it('should convert into market value base units', () => {
|
|
82
|
+
src_1.toMarketValueBaseUnits('susd', 1, 0).should.equal(BigInt(0));
|
|
83
|
+
src_1.toMarketValueBaseUnits('susd', 1, 10).should.equal(BigInt(10));
|
|
84
|
+
src_1.toMarketValueBaseUnits('susd', 70000000, 0).should.equal(BigInt(0));
|
|
85
|
+
src_1.toMarketValueBaseUnits('susd', 70000000, 10).should.equal(BigInt(700000000));
|
|
86
|
+
src_1.toMarketValueBaseUnits('btc', 1, 0).should.equal(BigInt(0));
|
|
87
|
+
src_1.toMarketValueBaseUnits('btc', 1, 10).should.equal(BigInt(0));
|
|
88
|
+
src_1.toMarketValueBaseUnits('btc', 70000000, 0).should.equal(BigInt(0));
|
|
89
|
+
src_1.toMarketValueBaseUnits('btc', 70000000, 10).should.equal(BigInt(700));
|
|
90
|
+
src_1.toMarketValueBaseUnits('btc', bignumber_js_1.default('7000000000000000000000000'), 10).should.equal(BigInt('69999999999999999280'));
|
|
91
|
+
});
|
|
92
|
+
it('should allow changing the numerator of the trading pair', () => {
|
|
93
|
+
// $3.38 market value for 1 eth at 338.2582 cents market price
|
|
94
|
+
src_1.toMarketValueBaseUnits('teth', 338.2582, BigInt(10000000000000000).toString(), 'tsusd').should.equal(BigInt(338));
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdW5pdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnRUFBcUM7QUFDckMsa0JBQWdCO0FBQ2hCLG1DQUErRjtBQUUvRixRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtJQUNyQixRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixFQUFFLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO1lBQ2hELGlCQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsaUJBQVcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QyxpQkFBVyxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsaUJBQVcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxpQkFBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlDLGlCQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEQsaUJBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtZQUNwRCxpQkFBVyxDQUFDLHNCQUFTLENBQUMs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Q0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCw0QkFBc0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDL0QsNEJBQXNCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLDRCQUFzQixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM3RSw0QkFBc0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsNEJBQXNCLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELDRCQUFzQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRSw0QkFBc0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdEUsNEJBQXNCLENBQUMsS0FBSyxFQUFFLHNCQUFTLENBQUMsMkJBQTJCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNwRixNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FDL0IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlEQUF5RCxFQUFFLEdBQUcsRUFBRTtZQUNqRSw4REFBOEQ7WUFDOUQsNEJBQXNCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IHRvRnVsbFVuaXRzLCB0b0Z1bGxVbml0c0ZpeGVkLCB0b0Jhc2VVbml0cywgdG9NYXJrZXRWYWx1ZUJhc2VVbml0cyB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCd1bml0cycsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3RvRnVsbFVuaXRzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY29udmVydCBudW1iZXJzIGludG8gZnVsbCB1bml0cycsICgpID0+IHtcbiAgICAgIHRvRnVsbFVuaXRzKDAsICdzdXNkJykuc2hvdWxkLmVxdWFsKCcwJyk7XG4gICAgICB0b0Z1bGxVbml0cyg3NSwgJ3N1c2QnKS5zaG91bGQuZXF1YWwoJzAuNzUnKTtcbiAgICAgIHRvRnVsbFVuaXRzKC0xMDAsICdzdXNkJykuc2hvdWxkLmVxdWFsKCctMScpO1xuICAgICAgdG9GdWxsVW5pdHMoMCwgJ2J0YycpLnNob3VsZC5lcXVhbCgnMCcpO1xuICAgICAgdG9GdWxsVW5pdHMoNzUsICdidGMnKS5zaG91bGQuZXF1YWwoJzcuNWUtNycpO1xuICAgICAgdG9GdWxsVW5pdHMoNzUwMDAwLCAnYnRjJykuc2hvdWxkLmVxdWFsKCcwLjAwNzUnKTtcbiAgICAgIHRvRnVsbFVuaXRzKC03NTAwMDAwLCAnYnRjJykuc2hvdWxkLmVxdWFsKCctMC4wNzUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udmVydCBiaWcgbnVtYmVycyBpbnRvIGZ1bGwgdW5pdHMnLCAoKSA9PiB7XG4gICAgICB0b0Z1bGxVbml0cyhCaWdOdW1iZXIoMCksICdzdXNkJykuc2hvdWxkLmVxdWFsKCcwJyk7XG4gICAgICB0b0Z1bGxVbml0cyhCaWdOdW1iZXIoNzUpLCAnc3VzZCcpLnNob3VsZC5lcXVhbCgnMC43NScpO1xuICAgICAgdG9GdWxsVW5pdHMoQmlnTnVtYmVyKCc3NTAwMDAwMDAwMDAwJyksICdzdXNkJykuc2hvdWxkLmVxdWFsKCc3NTAwMDAwMDAwMCcpO1xuICAgICAgdG9GdWxsVW5pdHMoQmlnTnVtYmVyKCc3NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKSwgJ3N1c2QnKS5zaG91bGQuZXF1YWwoJzcuNWUrMjQnKTtcbiAgICAgIHRvRnVsbFVuaXRzKEJpZ051bWJlcigtMTAwKSwgJ3N1c2QnKS5zaG91bGQuZXF1YWwoJy0xJyk7XG4gICAgICB0b0Z1bGxVbml0cyhCaWdOdW1iZXIoMCksICdidGMnKS5zaG91bGQuZXF1YWwoJzAnKTtcbiAgICAgIHRvRnVsbFVuaXRzKEJpZ051bWJlcig3NSksICdidGMnKS5zaG91bGQuZXF1YWwoJzcuNWUtNycpO1xuICAgICAgdG9GdWxsVW5pdHMoQmlnTnVtYmVyKDc1MDAwMCksICdidGMnKS5zaG91bGQuZXF1YWwoJzAuMDA3NScpO1xuICAgICAgdG9GdWxsVW5pdHMoQmlnTnVtYmVyKC03NTAwMDAwKSwgJ2J0YycpLnNob3VsZC5lcXVhbCgnLTAuMDc1Jyk7XG4gICAgICB0b0Z1bGxVbml0cyhCaWdOdW1iZXIoJzc1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyksICdidGMnKS5zaG91bGQuZXF1YWwoJzc1MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndG9GdWxsVW5pdHNGaXhlZCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgbnVtYmVycyBpbnRvIGZ1bGwgZml4ZWQgdW5pdHMnLCAoKSA9PiB7XG4gICAgICB0b0Z1bGxVbml0c0ZpeGVkKDAsICdzdXNkJykuc2hvdWxkLmVxdWFsKCcwLjAwJyk7XG4gICAgICB0b0Z1bGxVbml0c0ZpeGVkKDc1LCAnc3VzZCcpLnNob3VsZC5lcXVhbCgnMC43NScpO1xuICAgICAgdG9GdWxsVW5pdHNGaXhlZCgtMTAwLCAnc3VzZCcpLnNob3VsZC5lcXVhbCgnLTEuMDAnKTtcbiAgICAgIHRvRnVsbFVuaXRzRml4ZWQoMCwgJ2J0YycpLnNob3VsZC5lcXVhbCgnMC4wMDAwMDAwMCcpO1xuICAgICAgdG9GdWxsVW5pdHNGaXhlZCg3NSwgJ2J0YycpLnNob3VsZC5lcXVhbCgnMC4wMDAwMDA3NScpO1xuICAgICAgdG9GdWxsVW5pdHNGaXhlZCg3NTAwMDAsICdidGMnKS5zaG91bGQuZXF1YWwoJzAuMDA3NTAwMDAnKTtcbiAgICAgIHRvRnVsbFVuaXRzRml4ZWQoLTc1MDAwMDAsICdidGMnKS5zaG91bGQuZXF1YWwoJy0wLjA3NTAwMDAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgYmlnIG51bWJlcnMgaW50byBmdWxsIGZpeGVkIHVuaXRzJywgKCkgPT4ge1xuICAgICAgdG9GdWxsVW5pdHNGaXhlZChCaWdOdW1iZXIoMCksICdzdXNkJykuc2hvdWxkLmVxdWFsKCcwLjAwJyk7XG4gICAgICB0b0Z1bGxVbml0c0ZpeGVkKEJpZ051bWJlcig3NSksICdzdXNkJykuc2hvdWxkLmVxdWFsKCcwLjc1Jyk7XG4gICAgICB0b0Z1bGxVbml0c0ZpeGVkKEJpZ051bWJlcignNzUwMDAwMDAwMDAwMCcpLCAnc3VzZCcpLnNob3VsZC5lcXVhbCgnNzUwMDAwMDAwMDAuMDAnKTtcbiAgICAgIHRvRnVsbFVuaXRzRml4ZWQoQmlnTnVtYmVyKCc3NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKSwgJ3N1c2QnKS5zaG91bGQuZXF1YWwoJzc1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuMDAnKTtcbiAgICAgIHRvRnVsbFVuaXRzRml4ZWQoQmlnTnVtYmVyKC0xMDApLCAnc3VzZCcpLnNob3VsZC5lcXVhbCgnLTEuMDAnKTtcbiAgICAgIHRvRnVsbFVuaXRzRml4ZWQoQmlnTnVtYmVyKDApLCAnYnRjJykuc2hvdWxkLmVxdWFsKCcwLjAwMDAwMDAwJyk7XG4gICAgICB0b0Z1bGxVbml0c0ZpeGVkKEJpZ051bWJlcig3NSksICdidGMnKS5zaG91bGQuZXF1YWwoJzAuMDAwMDAwNzUnKTtcbiAgICAgIHRvRnVsbFVuaXRzRml4ZWQoQmlnTnVtYmVyKDc1MDAwMCksICdidGMnKS5zaG91bGQuZXF1YWwoJzAuMDA3NTAwMDAnKTtcbiAgICAgIHRvRnVsbFVuaXRzRml4ZWQoQmlnTnVtYmVyKC03NTAwMDAwKSwgJ2J0YycpLnNob3VsZC5lcXVhbCgnLTAuMDc1MDAwMDAnKTtcbiAgICAgIHRvRnVsbFVuaXRzRml4ZWQoQmlnTnVtYmVyKCc3NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpLCAnYnRjJykuc2hvdWxkLmVxdWFsKCc3NTAwMDAwMDAwMDAwMDAwMDAuMDAwMDAwMDAnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3RvQmFzZVVuaXRzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY29udmVydCBpbnRvIGJhc2UgdW5pdHMnLCAoKSA9PiB7XG4gICAgICB0b0Jhc2VVbml0cygwLCAnc3VzZCcpLnNob3VsZC5lcXVhbCgnMCcpO1xuICAgICAgdG9CYXNlVW5pdHMoJzAuNzUnLCAnc3VzZCcpLnNob3VsZC5lcXVhbCgnNzUnKTtcbiAgICAgIHRvQmFzZVVuaXRzKCctMS4wMCcsICdzdXNkJykuc2hvdWxkLmVxdWFsKCctMTAwJyk7XG4gICAgICB0b0Jhc2VVbml0cygnMCcsICdidGMnKS5zaG91bGQuZXF1YWwoJzAnKTtcbiAgICAgIHRvQmFzZVVuaXRzKCcwLjAwMDAwMDAwMCcsICdidGMnKS5zaG91bGQuZXF1YWwoJzAnKTtcbiAgICAgIHRvQmFzZVVuaXRzKCcwLjAwMDAwMDc1JywgJ2J0YycpLnNob3VsZC5lcXVhbCgnNzUnKTtcbiAgICAgIHRvQmFzZVVuaXRzKCcwLjAwNzUwMDAwJywgJ2J0YycpLnNob3VsZC5lcXVhbCgnNzUwMDAwJyk7XG4gICAgICB0b0Jhc2VVbml0cygnLTAuMDc1MDAwMDAnLCAnYnRjJykuc2hvdWxkLmVxdWFsKCctNzUwMDAwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGJpZyBudW1iZXJzIGludG8gYmFzZSB1bml0cycsICgpID0+IHtcbiAgICAgIHRvQmFzZVVuaXRzKEJpZ051bWJlcigwKSwgJ3N1c2QnKS5zaG91bGQuZXF1YWwoJzAnKTtcbiAgICAgIHRvQmFzZVVuaXRzKEJpZ051bWJlcig3NSksICdzdXNkJykuc2hvdWxkLmVxdWFsKCc3NTAwJyk7XG4gICAgICB0b0Jhc2VVbml0cyhCaWdOdW1iZXIoJzc1MDAwMDAwMDAwMDAnKSwgJ3N1c2QnKS5zaG91bGQuZXF1YWwoJzc1MDAwMDAwMDAwMDAwMCcpO1xuICAgICAgdG9CYXNlVW5pdHMoQmlnTnVtYmVyKCc3NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKSwgJ3N1c2QnKS5zaG91bGQuZXF1YWwoJzcuNWUrMjgnKTtcbiAgICAgIHRvQmFzZVVuaXRzKEJpZ051bWJlcigtMTAwKSwgJ3N1c2QnKS5zaG91bGQuZXF1YWwoJy0xMDAwMCcpO1xuICAgICAgdG9CYXNlVW5pdHMoQmlnTnVtYmVyKDApLCAnYnRjJykuc2hvdWxkLmVxdWFsKCcwJyk7XG4gICAgICB0b0Jhc2VVbml0cyhCaWdOdW1iZXIoNzUpLCAnYnRjJykuc2hvdWxkLmVxdWFsKCc3NTAwMDAwMDAwJyk7XG4gICAgICB0b0Jhc2VVbml0cyhCaWdOdW1iZXIoNzUwMDAwKSwgJ2J0YycpLnNob3VsZC5lcXVhbCgnNzUwMDAwMDAwMDAwMDAnKTtcbiAgICAgIHRvQmFzZVVuaXRzKEJpZ051bWJlcigtNzUwMDAwMCksICdidGMnKS5zaG91bGQuZXF1YWwoJy03NTAwMDAwMDAwMDAwMDAnKTtcbiAgICAgIHRvQmFzZVVuaXRzKEJpZ051bWJlcignNzUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKSwgJ2J0YycpLnNob3VsZC5lcXVhbCgnNy41ZSszMycpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndG9NYXJrZXRWYWx1ZUJhc2VVbml0cycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgaW50byBtYXJrZXQgdmFsdWUgYmFzZSB1bml0cycsICgpID0+IHtcbiAgICAgIHRvTWFya2V0VmFsdWVCYXNlVW5pdHMoJ3N1c2QnLCAxLCAwKS5zaG91bGQuZXF1YWwoQmlnSW50KDApKTtcbiAgICAgIHRvTWFya2V0VmFsdWVCYXNlVW5pdHMoJ3N1c2QnLCAxLCAxMCkuc2hvdWxkLmVxdWFsKEJpZ0ludCgxMCkpO1xuICAgICAgdG9NYXJrZXRWYWx1ZUJhc2VVbml0cygnc3VzZCcsIDcwMDAwMDAwLCAwKS5zaG91bGQuZXF1YWwoQmlnSW50KDApKTtcbiAgICAgIHRvTWFya2V0VmFsdWVCYXNlVW5pdHMoJ3N1c2QnLCA3MDAwMDAwMCwgMTApLnNob3VsZC5lcXVhbChCaWdJbnQoNzAwMDAwMDAwKSk7XG4gICAgICB0b01hcmtldFZhbHVlQmFzZVVuaXRzKCdidGMnLCAxLCAwKS5zaG91bGQuZXF1YWwoQmlnSW50KDApKTtcbiAgICAgIHRvTWFya2V0VmFsdWVCYXNlVW5pdHMoJ2J0YycsIDEsIDEwKS5zaG91bGQuZXF1YWwoQmlnSW50KDApKTtcbiAgICAgIHRvTWFya2V0VmFsdWVCYXNlVW5pdHMoJ2J0YycsIDcwMDAwMDAwLCAwKS5zaG91bGQuZXF1YWwoQmlnSW50KDApKTtcbiAgICAgIHRvTWFya2V0VmFsdWVCYXNlVW5pdHMoJ2J0YycsIDcwMDAwMDAwLCAxMCkuc2hvdWxkLmVxdWFsKEJpZ0ludCg3MDApKTtcbiAgICAgIHRvTWFya2V0VmFsdWVCYXNlVW5pdHMoJ2J0YycsIEJpZ051bWJlcignNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpLCAxMCkuc2hvdWxkLmVxdWFsKFxuICAgICAgICBCaWdJbnQoJzY5OTk5OTk5OTk5OTk5OTk5MjgwJylcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGNoYW5naW5nIHRoZSBudW1lcmF0b3Igb2YgdGhlIHRyYWRpbmcgcGFpcicsICgpID0+IHtcbiAgICAgIC8vICQzLjM4IG1hcmtldCB2YWx1ZSBmb3IgMSBldGggYXQgMzM4LjI1ODIgY2VudHMgbWFya2V0IHByaWNlXG4gICAgICB0b01hcmtldFZhbHVlQmFzZVVuaXRzKCd0ZXRoJywgMzM4LjI1ODIsIEJpZ0ludCgxMDAwMDAwMDAwMDAwMDAwMCkudG9TdHJpbmcoKSwgJ3RzdXNkJykuc2hvdWxkLmVxdWFsKEJpZ0ludCgzMzgpKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|