@bitgo-beta/sdk-coin-sol 2.4.3-beta.998 → 7.6.3
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/dist/src/bigint-buffer-guard.d.ts +1 -0
- package/dist/src/bigint-buffer-guard.d.ts.map +1 -0
- package/dist/src/bigint-buffer-guard.js +29 -0
- package/dist/src/config/token2022StaticConfig.d.ts +3 -0
- package/dist/src/config/token2022StaticConfig.d.ts.map +1 -0
- package/dist/src/config/token2022StaticConfig.js +50 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/constants.d.ts +35 -2
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +41 -2
- package/dist/src/lib/customInstructionBuilder.d.ts +72 -0
- package/dist/src/lib/customInstructionBuilder.d.ts.map +1 -0
- package/dist/src/lib/customInstructionBuilder.js +289 -0
- package/dist/src/lib/iface.d.ts +79 -5
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +1 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +4 -2
- package/dist/src/lib/instructionParamsFactory.d.ts.map +1 -1
- package/dist/src/lib/instructionParamsFactory.js +364 -78
- package/dist/src/lib/jitoStakePoolOperations.d.ts +113 -0
- package/dist/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
- package/dist/src/lib/jitoStakePoolOperations.js +200 -0
- package/dist/src/lib/solInstructionFactory.d.ts.map +1 -1
- package/dist/src/lib/solInstructionFactory.js +266 -69
- package/dist/src/lib/stakingActivateBuilder.d.ts +16 -5
- package/dist/src/lib/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/src/lib/stakingActivateBuilder.js +23 -10
- package/dist/src/lib/stakingDeactivateBuilder.d.ts +16 -5
- package/dist/src/lib/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/src/lib/stakingDeactivateBuilder.js +43 -20
- package/dist/src/lib/token2022Config.d.ts +44 -0
- package/dist/src/lib/token2022Config.d.ts.map +1 -0
- package/dist/src/lib/token2022Config.js +27 -0
- package/dist/src/lib/tokenTransferBuilder.js +7 -7
- package/dist/src/lib/transaction.d.ts +31 -4
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +134 -46
- package/dist/src/lib/transactionBuilder.d.ts +18 -2
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +78 -2
- package/dist/src/lib/transactionBuilderFactory.d.ts +5 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +10 -1
- package/dist/src/lib/utils.d.ts +34 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +88 -24
- package/dist/src/sol.d.ts +36 -13
- package/dist/src/sol.d.ts.map +1 -1
- package/dist/src/sol.js +230 -38
- package/dist/test/fixtures/sol.d.ts +1152 -0
- package/dist/test/fixtures/sol.d.ts.map +1 -0
- package/dist/test/fixtures/sol.js +1433 -0
- package/dist/test/resources/sol.d.ts +238 -0
- package/dist/test/resources/sol.d.ts.map +1 -0
- package/dist/test/resources/sol.js +320 -0
- package/dist/test/unit/fixtures/solBackupKey.d.ts +5 -0
- package/dist/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
- package/dist/test/unit/fixtures/solBackupKey.js +8 -0
- package/dist/test/unit/getBuilderFactory.d.ts +3 -0
- package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/getBuilderFactory.js +10 -0
- package/dist/test/unit/instructionParamsFactory.d.ts +2 -0
- package/dist/test/unit/instructionParamsFactory.d.ts.map +1 -0
- package/dist/test/unit/instructionParamsFactory.js +412 -0
- package/dist/test/unit/instructionParamsFactory.staking.d.ts +2 -0
- package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
- package/dist/test/unit/instructionParamsFactory.staking.js +1059 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +177 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/messages/messageBuilderFactory.js +118 -0
- package/dist/test/unit/messages/simpleMessageBuilder.d.ts +2 -0
- package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/messages/simpleMessageBuilder.js +194 -0
- package/dist/test/unit/sol.d.ts +2 -0
- package/dist/test/unit/sol.d.ts.map +1 -0
- package/dist/test/unit/sol.js +3108 -0
- package/dist/test/unit/solInstructionFactory.d.ts +2 -0
- package/dist/test/unit/solInstructionFactory.d.ts.map +1 -0
- package/dist/test/unit/solInstructionFactory.js +454 -0
- package/dist/test/unit/solToken.d.ts +2 -0
- package/dist/test/unit/solToken.d.ts.map +1 -0
- package/dist/test/unit/solToken.js +31 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +983 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
- package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/ataInitBuilder.js +471 -0
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +787 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +495 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +286 -0
- package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilderV2.js +862 -0
- package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +505 -0
- package/dist/test/unit/versionedTransaction.d.ts +2 -0
- package/dist/test/unit/versionedTransaction.d.ts.map +1 -0
- package/dist/test/unit/versionedTransaction.js +207 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +14 -9
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -1223
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Implementation of the depositSol instruction. On upgrade of
|
|
3
|
+
* '@solana/spl-token', this module may no longer be necessary.
|
|
4
|
+
*/
|
|
5
|
+
import { DepositSolParams, WithdrawStakeParams } from '@solana/spl-stake-pool';
|
|
6
|
+
import { PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
7
|
+
/**
|
|
8
|
+
* Replicates the fields in @solana/spl-stake-pool Fee.
|
|
9
|
+
*
|
|
10
|
+
* @see {Fee}
|
|
11
|
+
*/
|
|
12
|
+
export interface Fee {
|
|
13
|
+
denominator: string;
|
|
14
|
+
numerator: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Replicates the fields in @solana/spl-stake-pool StakePoolLayout.
|
|
18
|
+
*
|
|
19
|
+
* @see {StakePoolLayout}
|
|
20
|
+
*/
|
|
21
|
+
export interface StakePoolData {
|
|
22
|
+
accountType: number;
|
|
23
|
+
manager: string;
|
|
24
|
+
staker: string;
|
|
25
|
+
stakeDepositAuthority: string;
|
|
26
|
+
stakeWithdrawBumpSeed: number;
|
|
27
|
+
validatorListAccount: string;
|
|
28
|
+
reserveStake: string;
|
|
29
|
+
poolMint: string;
|
|
30
|
+
managerFeeAccount: string;
|
|
31
|
+
tokenProgramId: string;
|
|
32
|
+
totalLamports: string;
|
|
33
|
+
poolTokenSupply: string;
|
|
34
|
+
lastUpdateEpoch: string;
|
|
35
|
+
lockup: {
|
|
36
|
+
unixTimestamp: string;
|
|
37
|
+
epoch: string;
|
|
38
|
+
custodian: string;
|
|
39
|
+
};
|
|
40
|
+
epochFee: Fee;
|
|
41
|
+
nextEpochFee?: Fee | undefined;
|
|
42
|
+
preferredDepositValidatorVoteAddress?: string | undefined;
|
|
43
|
+
preferredWithdrawValidatorVoteAddress?: string | undefined;
|
|
44
|
+
stakeDepositFee: Fee;
|
|
45
|
+
stakeWithdrawalFee: Fee;
|
|
46
|
+
nextStakeWithdrawalFee?: Fee | undefined;
|
|
47
|
+
stakeReferralFee: number;
|
|
48
|
+
solDepositAuthority?: string | undefined;
|
|
49
|
+
solDepositFee: Fee;
|
|
50
|
+
solReferralFee: number;
|
|
51
|
+
solWithdrawAuthority?: string | undefined;
|
|
52
|
+
solWithdrawalFee: Fee;
|
|
53
|
+
nextSolWithdrawalFee?: Fee | undefined;
|
|
54
|
+
lastEpochPoolTokenSupply: string;
|
|
55
|
+
lastEpochTotalLamports: string;
|
|
56
|
+
}
|
|
57
|
+
export declare const DEPOSIT_SOL_LAYOUT_CODE = 14;
|
|
58
|
+
export declare const WITHDRAW_STAKE_LAYOUT_CODE = 10;
|
|
59
|
+
/**
|
|
60
|
+
* Generates the withdraw authority program address for the stake pool.
|
|
61
|
+
* Like findWithdrawAuthorityProgramAddress in @solana/spl-stake-pool,
|
|
62
|
+
* but synchronous.
|
|
63
|
+
*
|
|
64
|
+
* @see {findWithdrawAuthorityProgramAddress}
|
|
65
|
+
*/
|
|
66
|
+
export declare function findWithdrawAuthorityProgramAddressSync(programId: PublicKey, stakePoolAddress: PublicKey): PublicKey;
|
|
67
|
+
export interface DepositSolInstructionsParams {
|
|
68
|
+
stakePoolAddress: PublicKey;
|
|
69
|
+
from: PublicKey;
|
|
70
|
+
lamports: bigint;
|
|
71
|
+
}
|
|
72
|
+
export type DepositSolStakePoolData = Pick<StakePoolData, 'poolMint' | 'reserveStake' | 'managerFeeAccount'>;
|
|
73
|
+
/**
|
|
74
|
+
* Construct Solana depositSol stake pool instruction from parameters.
|
|
75
|
+
*
|
|
76
|
+
* @param {DepositSolInstructionsParams} params - parameters for staking to stake pool
|
|
77
|
+
* @param {DepositSolStakePoolData} stakePool - data from getStakePoolAccount needed for DepositSol
|
|
78
|
+
* @param createAssociatedTokenAccount
|
|
79
|
+
* @returns {TransactionInstruction}
|
|
80
|
+
*/
|
|
81
|
+
export declare function depositSolInstructions(params: DepositSolInstructionsParams, stakePool: DepositSolStakePoolData, createAssociatedTokenAccount: boolean): TransactionInstruction[];
|
|
82
|
+
/**
|
|
83
|
+
* Construct Solana depositSol stake pool parameters from instruction.
|
|
84
|
+
*
|
|
85
|
+
* @param {TransactionInstruction} instruction
|
|
86
|
+
* @returns {DepositSolParams}
|
|
87
|
+
*/
|
|
88
|
+
export declare function decodeDepositSol(instruction: TransactionInstruction): DepositSolParams;
|
|
89
|
+
export interface WithdrawStakeInstructionsParams {
|
|
90
|
+
stakePoolAddress: PublicKey;
|
|
91
|
+
tokenOwner: PublicKey;
|
|
92
|
+
destinationStakeAccount: PublicKey;
|
|
93
|
+
validatorAddress: PublicKey;
|
|
94
|
+
transferAuthority: PublicKey;
|
|
95
|
+
poolAmount: string;
|
|
96
|
+
}
|
|
97
|
+
export type WithdrawStakeStakePoolData = Pick<StakePoolData, 'poolMint' | 'validatorListAccount' | 'managerFeeAccount'>;
|
|
98
|
+
/**
|
|
99
|
+
* Construct Solana withdrawStake stake pool instructions from parameters.
|
|
100
|
+
*
|
|
101
|
+
* @param {WithdrawStakeInstructionsParams} params - parameters for unstaking from stake pool
|
|
102
|
+
* @param {WithdrawStakeStakePoolData} stakePool - data from getStakePoolAccount needed for WithdrawStake
|
|
103
|
+
* @returns {TransactionInstruction[]}
|
|
104
|
+
*/
|
|
105
|
+
export declare function withdrawStakeInstructions(params: WithdrawStakeInstructionsParams, stakePool: WithdrawStakeStakePoolData): TransactionInstruction[];
|
|
106
|
+
/**
|
|
107
|
+
* Construct Solana withdrawStake stake pool parameters from instruction.
|
|
108
|
+
*
|
|
109
|
+
* @param {TransactionInstruction} instruction
|
|
110
|
+
* @returns {DepositSolParams}
|
|
111
|
+
*/
|
|
112
|
+
export declare function decodeWithdrawStake(instruction: TransactionInstruction): WithdrawStakeParams;
|
|
113
|
+
//# sourceMappingURL=jitoStakePoolOperations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jitoStakePoolOperations.d.ts","sourceRoot":"","sources":["../../../src/lib/jitoStakePoolOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file Implementation of the depositSol instruction. On upgrade of
|
|
4
|
+
* '@solana/spl-token', this module may no longer be necessary.
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.WITHDRAW_STAKE_LAYOUT_CODE = exports.DEPOSIT_SOL_LAYOUT_CODE = void 0;
|
|
11
|
+
exports.findWithdrawAuthorityProgramAddressSync = findWithdrawAuthorityProgramAddressSync;
|
|
12
|
+
exports.depositSolInstructions = depositSolInstructions;
|
|
13
|
+
exports.decodeDepositSol = decodeDepositSol;
|
|
14
|
+
exports.withdrawStakeInstructions = withdrawStakeInstructions;
|
|
15
|
+
exports.decodeWithdrawStake = decodeWithdrawStake;
|
|
16
|
+
const spl_stake_pool_1 = require("@solana/spl-stake-pool");
|
|
17
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
18
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
19
|
+
const assert_1 = __importDefault(require("assert"));
|
|
20
|
+
const constants_1 = require("./constants");
|
|
21
|
+
exports.DEPOSIT_SOL_LAYOUT_CODE = 14;
|
|
22
|
+
exports.WITHDRAW_STAKE_LAYOUT_CODE = 10;
|
|
23
|
+
/**
|
|
24
|
+
* Generates the withdraw authority program address for the stake pool.
|
|
25
|
+
* Like findWithdrawAuthorityProgramAddress in @solana/spl-stake-pool,
|
|
26
|
+
* but synchronous.
|
|
27
|
+
*
|
|
28
|
+
* @see {findWithdrawAuthorityProgramAddress}
|
|
29
|
+
*/
|
|
30
|
+
function findWithdrawAuthorityProgramAddressSync(programId, stakePoolAddress) {
|
|
31
|
+
const [withdrawAuthority] = web3_js_1.PublicKey.findProgramAddressSync([stakePoolAddress.toBuffer(), Buffer.from('withdraw')], programId);
|
|
32
|
+
return withdrawAuthority;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Construct Solana depositSol stake pool instruction from parameters.
|
|
36
|
+
*
|
|
37
|
+
* @param {DepositSolInstructionsParams} params - parameters for staking to stake pool
|
|
38
|
+
* @param {DepositSolStakePoolData} stakePool - data from getStakePoolAccount needed for DepositSol
|
|
39
|
+
* @param createAssociatedTokenAccount
|
|
40
|
+
* @returns {TransactionInstruction}
|
|
41
|
+
*/
|
|
42
|
+
function depositSolInstructions(params, stakePool, createAssociatedTokenAccount) {
|
|
43
|
+
const { stakePoolAddress, from, lamports } = params;
|
|
44
|
+
const poolMint = new web3_js_1.PublicKey(stakePool.poolMint);
|
|
45
|
+
const reserveStake = new web3_js_1.PublicKey(stakePool.reserveStake);
|
|
46
|
+
const managerFeeAccount = new web3_js_1.PublicKey(stakePool.managerFeeAccount);
|
|
47
|
+
// findWithdrawAuthorityProgramAddress
|
|
48
|
+
const withdrawAuthority = findWithdrawAuthorityProgramAddressSync(spl_stake_pool_1.STAKE_POOL_PROGRAM_ID, stakePoolAddress);
|
|
49
|
+
const associatedAddress = (0, spl_token_1.getAssociatedTokenAddressSync)(poolMint, from);
|
|
50
|
+
const instructions = [];
|
|
51
|
+
if (createAssociatedTokenAccount) {
|
|
52
|
+
instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(from, associatedAddress, from, poolMint));
|
|
53
|
+
}
|
|
54
|
+
instructions.push(spl_stake_pool_1.StakePoolInstruction.depositSol({
|
|
55
|
+
stakePool: stakePoolAddress,
|
|
56
|
+
reserveStake,
|
|
57
|
+
fundingAccount: from,
|
|
58
|
+
destinationPoolAccount: associatedAddress,
|
|
59
|
+
managerFeeAccount,
|
|
60
|
+
referralPoolAccount: associatedAddress,
|
|
61
|
+
poolMint,
|
|
62
|
+
lamports: Number(lamports),
|
|
63
|
+
withdrawAuthority,
|
|
64
|
+
}));
|
|
65
|
+
return instructions;
|
|
66
|
+
}
|
|
67
|
+
function parseKey(key, template) {
|
|
68
|
+
(0, assert_1.default)(key.isSigner === template.isSigner && key.isWritable === template.isWritable, `Unexpected key metadata in instruction: { isSigner: ${key.isSigner}, isWritable: ${key.isWritable} }`);
|
|
69
|
+
return key.pubkey;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Construct Solana depositSol stake pool parameters from instruction.
|
|
73
|
+
*
|
|
74
|
+
* @param {TransactionInstruction} instruction
|
|
75
|
+
* @returns {DepositSolParams}
|
|
76
|
+
*/
|
|
77
|
+
function decodeDepositSol(instruction) {
|
|
78
|
+
const { programId, keys, data } = instruction;
|
|
79
|
+
(0, assert_1.default)(programId.equals(spl_stake_pool_1.STAKE_POOL_PROGRAM_ID), 'Invalid DepositSol instruction, program ID must be the Stake Pool Program');
|
|
80
|
+
let i = 0;
|
|
81
|
+
const stakePool = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
82
|
+
const withdrawAuthority = parseKey(keys[i++], { isSigner: false, isWritable: false });
|
|
83
|
+
const reserveStake = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
84
|
+
const fundingAccount = parseKey(keys[i++], { isSigner: true, isWritable: true });
|
|
85
|
+
const destinationPoolAccount = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
86
|
+
const managerFeeAccount = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
87
|
+
const referralPoolAccount = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
88
|
+
const poolMint = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
89
|
+
const systemProgramProgramId = parseKey(keys[i++], { isSigner: false, isWritable: false });
|
|
90
|
+
(0, assert_1.default)(systemProgramProgramId.equals(web3_js_1.SystemProgram.programId), 'Unexpected pubkey in DepositSol instruction');
|
|
91
|
+
const tokenProgramId = parseKey(keys[i++], { isSigner: false, isWritable: false });
|
|
92
|
+
(0, assert_1.default)(tokenProgramId.equals(spl_token_1.TOKEN_PROGRAM_ID), 'Unexpected pubkey in DepositSol instruction');
|
|
93
|
+
const depositAuthority = keys.length > 10 ? parseKey(keys[i++], { isSigner: true, isWritable: false }) : undefined;
|
|
94
|
+
(0, assert_1.default)(keys.length <= 11, 'Too many keys in DepositSol instruction');
|
|
95
|
+
const layoutCode = data.readUint8(0);
|
|
96
|
+
(0, assert_1.default)(layoutCode === exports.DEPOSIT_SOL_LAYOUT_CODE, 'Incorrect layout code in DepositSol data');
|
|
97
|
+
(0, assert_1.default)(data.length === 9, 'Incorrect data size for DepositSol layout');
|
|
98
|
+
const lamports = data.readBigInt64LE(1);
|
|
99
|
+
return {
|
|
100
|
+
stakePool,
|
|
101
|
+
depositAuthority,
|
|
102
|
+
withdrawAuthority,
|
|
103
|
+
reserveStake,
|
|
104
|
+
fundingAccount,
|
|
105
|
+
destinationPoolAccount,
|
|
106
|
+
managerFeeAccount,
|
|
107
|
+
referralPoolAccount,
|
|
108
|
+
poolMint,
|
|
109
|
+
lamports: Number(lamports),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Construct Solana withdrawStake stake pool instructions from parameters.
|
|
114
|
+
*
|
|
115
|
+
* @param {WithdrawStakeInstructionsParams} params - parameters for unstaking from stake pool
|
|
116
|
+
* @param {WithdrawStakeStakePoolData} stakePool - data from getStakePoolAccount needed for WithdrawStake
|
|
117
|
+
* @returns {TransactionInstruction[]}
|
|
118
|
+
*/
|
|
119
|
+
function withdrawStakeInstructions(params, stakePool) {
|
|
120
|
+
const { tokenOwner, stakePoolAddress, destinationStakeAccount, validatorAddress, transferAuthority, poolAmount: poolAmountString, } = params;
|
|
121
|
+
const poolMint = new web3_js_1.PublicKey(stakePool.poolMint);
|
|
122
|
+
const validatorList = new web3_js_1.PublicKey(stakePool.validatorListAccount);
|
|
123
|
+
const managerFeeAccount = new web3_js_1.PublicKey(stakePool.managerFeeAccount);
|
|
124
|
+
const poolTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(poolMint, tokenOwner);
|
|
125
|
+
const withdrawAuthority = findWithdrawAuthorityProgramAddressSync(spl_stake_pool_1.STAKE_POOL_PROGRAM_ID, stakePoolAddress);
|
|
126
|
+
const poolAmount = BigInt(poolAmountString);
|
|
127
|
+
return [
|
|
128
|
+
(0, spl_token_1.createApproveInstruction)(poolTokenAccount, transferAuthority, tokenOwner, poolAmount),
|
|
129
|
+
web3_js_1.SystemProgram.createAccount({
|
|
130
|
+
fromPubkey: tokenOwner,
|
|
131
|
+
newAccountPubkey: destinationStakeAccount,
|
|
132
|
+
lamports: constants_1.STAKE_ACCOUNT_RENT_EXEMPT_AMOUNT,
|
|
133
|
+
space: web3_js_1.StakeProgram.space,
|
|
134
|
+
programId: web3_js_1.StakeProgram.programId,
|
|
135
|
+
}),
|
|
136
|
+
spl_stake_pool_1.StakePoolInstruction.withdrawStake({
|
|
137
|
+
stakePool: stakePoolAddress,
|
|
138
|
+
validatorList: validatorList,
|
|
139
|
+
validatorStake: validatorAddress,
|
|
140
|
+
destinationStake: destinationStakeAccount,
|
|
141
|
+
destinationStakeAuthority: tokenOwner,
|
|
142
|
+
sourceTransferAuthority: transferAuthority,
|
|
143
|
+
sourcePoolAccount: poolTokenAccount,
|
|
144
|
+
managerFeeAccount: managerFeeAccount,
|
|
145
|
+
poolMint: poolMint,
|
|
146
|
+
poolTokens: Number(poolAmount),
|
|
147
|
+
withdrawAuthority,
|
|
148
|
+
}),
|
|
149
|
+
...web3_js_1.StakeProgram.deactivate({
|
|
150
|
+
stakePubkey: destinationStakeAccount,
|
|
151
|
+
authorizedPubkey: tokenOwner,
|
|
152
|
+
}).instructions,
|
|
153
|
+
];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Construct Solana withdrawStake stake pool parameters from instruction.
|
|
157
|
+
*
|
|
158
|
+
* @param {TransactionInstruction} instruction
|
|
159
|
+
* @returns {DepositSolParams}
|
|
160
|
+
*/
|
|
161
|
+
function decodeWithdrawStake(instruction) {
|
|
162
|
+
const { programId, keys, data } = instruction;
|
|
163
|
+
(0, assert_1.default)(programId.equals(spl_stake_pool_1.STAKE_POOL_PROGRAM_ID), 'Invalid WithdrawStake instruction, program ID must be the Stake Pool Program');
|
|
164
|
+
const layoutCode = data.readUint8(0);
|
|
165
|
+
(0, assert_1.default)(layoutCode === exports.WITHDRAW_STAKE_LAYOUT_CODE, 'Incorrect layout code in WithdrawStake data');
|
|
166
|
+
(0, assert_1.default)(data.length === 9, 'Incorrect data size for WithdrawStake layout');
|
|
167
|
+
const poolTokens = data.readBigInt64LE(1);
|
|
168
|
+
let i = 0;
|
|
169
|
+
const stakePool = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
170
|
+
const validatorList = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
171
|
+
const withdrawAuthority = parseKey(keys[i++], { isSigner: false, isWritable: false });
|
|
172
|
+
const validatorStake = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
173
|
+
const destinationStake = keys[i++].pubkey;
|
|
174
|
+
const destinationStakeAuthority = keys[i++].pubkey;
|
|
175
|
+
const sourceTransferAuthority = parseKey(keys[i++], { isSigner: true, isWritable: false });
|
|
176
|
+
const sourcePoolAccount = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
177
|
+
const managerFeeAccount = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
178
|
+
const poolMint = parseKey(keys[i++], { isSigner: false, isWritable: true });
|
|
179
|
+
const sysvarClockPubkey = parseKey(keys[i++], { isSigner: false, isWritable: false });
|
|
180
|
+
(0, assert_1.default)(sysvarClockPubkey.equals(web3_js_1.SYSVAR_CLOCK_PUBKEY), 'Unexpected pubkey in WithdrawStake instruction');
|
|
181
|
+
const tokenProgramId = parseKey(keys[i++], { isSigner: false, isWritable: false });
|
|
182
|
+
(0, assert_1.default)(tokenProgramId.equals(spl_token_1.TOKEN_PROGRAM_ID), 'Unexpected pubkey in WithdrawStake instruction');
|
|
183
|
+
const stakeProgramProgramId = parseKey(keys[i++], { isSigner: false, isWritable: false });
|
|
184
|
+
(0, assert_1.default)(stakeProgramProgramId.equals(web3_js_1.StakeProgram.programId), 'Unexpected pubkey in WithdrawStake instruction');
|
|
185
|
+
(0, assert_1.default)(i === keys.length, 'Too many keys in WithdrawStake instruction');
|
|
186
|
+
return {
|
|
187
|
+
stakePool,
|
|
188
|
+
validatorList,
|
|
189
|
+
withdrawAuthority,
|
|
190
|
+
validatorStake,
|
|
191
|
+
destinationStake,
|
|
192
|
+
destinationStakeAuthority,
|
|
193
|
+
sourceTransferAuthority,
|
|
194
|
+
sourcePoolAccount,
|
|
195
|
+
managerFeeAccount,
|
|
196
|
+
poolMint,
|
|
197
|
+
poolTokens: Number(poolTokens),
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaml0b1N0YWtlUG9vbE9wZXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2ppdG9TdGFrZVBvb2xPcGVyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7Ozs7OztBQXVGSCwwRkFNQztBQWtCRCx3REFtQ0M7QUFnQkQsNENBeUNDO0FBb0JELDhEQWlEQztBQVFELGtEQTZDQztBQW5VRCwyREFLZ0M7QUFDaEMsaURBSzJCO0FBQzNCLDZDQU95QjtBQUN6QixvREFBNEI7QUFDNUIsMkNBQStEO0FBc0RsRCxRQUFBLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztBQUM3QixRQUFBLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztBQUU3Qzs7Ozs7O0dBTUc7QUFDSCxTQUFnQix1Q0FBdUMsQ0FBQyxTQUFvQixFQUFFLGdCQUEyQjtJQUN2RyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxtQkFBUyxDQUFDLHNCQUFzQixDQUMxRCxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFDdEQsU0FBUyxDQUNWLENBQUM7SUFDRixPQUFPLGlCQUFpQixDQUFDO0FBQzNCLENBQUM7QUFVRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQ3BDLE1BQW9DLEVBQ3BDLFNBQWtDLEVBQ2xDLDRCQUFxQztJQUVyQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLG1CQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sWUFBWSxHQUFHLElBQUksbUJBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLG1CQUFTLENBQUMsU0FBUyxDQUFD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cUIsQ0FBQyxNQUFNLENBQUMsc0JBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDO0lBQy9HLElBQUEsZ0JBQU0sRUFBQyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSw0Q0FBNEMsQ0FBQyxDQUFDO0lBRXhFLE9BQU87UUFDTCxTQUFTO1FBQ1QsYUFBYTtRQUNiLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLHlCQUF5QjtRQUN6Qix1QkFBdUI7UUFDdkIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixRQUFRO1FBQ1IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUM7S0FDL0IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkZXBvc2l0U29sIGluc3RydWN0aW9uLiBPbiB1cGdyYWRlIG9mXG4gKiAnQHNvbGFuYS9zcGwtdG9rZW4nLCB0aGlzIG1vZHVsZSBtYXkgbm8gbG9uZ2VyIGJlIG5lY2Vzc2FyeS5cbiAqL1xuXG5pbXBvcnQge1xuICBTdGFrZVBvb2xJbnN0cnVjdGlvbixcbiAgU1RBS0VfUE9PTF9QUk9HUkFNX0lELFxuICBEZXBvc2l0U29sUGFyYW1zLFxuICBXaXRoZHJhd1N0YWtlUGFyYW1zLFxufSBmcm9tICdAc29sYW5hL3NwbC1zdGFrZS1wb29sJztcbmltcG9ydCB7XG4gIGNyZWF0ZUFwcHJvdmVJbnN0cnVjdGlvbixcbiAgY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uLFxuICBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyxcbiAgVE9LRU5fUFJPR1JBTV9JRCxcbn0gZnJvbSAnQHNvbGFuYS9zcGwtdG9rZW4nO1xuaW1wb3J0IHtcbiAgQWNjb3VudE1ldGEsXG4gIFB1YmxpY0tleSxcbiAgU3Rha2VQcm9ncmFtLFxuICBTeXN0ZW1Qcm9ncmFtLFxuICBTWVNWQVJfQ0xPQ0tfUFVCS0VZLFxuICBUcmFuc2FjdGlvbkluc3RydWN0aW9uLFxufSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgU1RBS0VfQUNDT1VOVF9SRU5UX0VYRU1QVF9BTU9VTlQgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICogUmVwbGljYXRlcyB0aGUgZmllbGRzIGluIEBzb2xhbmEvc3BsLXN0YWtlLXBvb2wgRmVlLlxuICpcbiAqIEBzZWUge0ZlZX1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGZWUge1xuICBkZW5vbWluYXRvcjogc3RyaW5nO1xuICBudW1lcmF0b3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXBsaWNhdGVzIHRoZSBmaWVsZHMgaW4gQHNvbGFuYS9zcGwtc3Rha2UtcG9vbCBTdGFrZVBvb2xMYXlvdXQuXG4gKlxuICogQHNlZSB7U3Rha2VQb29sTGF5b3V0fVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YWtlUG9vbERhdGEge1xuICBhY2NvdW50VHlwZTogbnVtYmVyO1xuICBtYW5hZ2VyOiBzdHJpbmc7XG4gIHN0YWtlcjogc3RyaW5nO1xuICBzdGFrZURlcG9zaXRBdXRob3JpdHk6IHN0cmluZztcbiAgc3Rha2VXaXRoZHJhd0J1bXBTZWVkOiBudW1iZXI7XG4gIHZhbGlkYXRvckxpc3RBY2NvdW50OiBzdHJpbmc7XG4gIHJlc2VydmVTdGFrZTogc3RyaW5nO1xuICBwb29sTWludDogc3RyaW5nO1xuICBtYW5hZ2VyRmVlQWNjb3VudDogc3RyaW5nO1xuICB0b2tlblByb2dyYW1JZDogc3RyaW5nO1xuICB0b3RhbExhbXBvcnRzOiBzdHJpbmc7XG4gIHBvb2xUb2tlblN1cHBseTogc3RyaW5nO1xuICBsYXN0VXBkYXRlRXBvY2g6IHN0cmluZztcbiAgbG9ja3VwOiB7XG4gICAgdW5peFRpbWVzdGFtcDogc3RyaW5nO1xuICAgIGVwb2NoOiBzdHJpbmc7XG4gICAgY3VzdG9kaWFuOiBzdHJpbmc7XG4gIH07XG4gIGVwb2NoRmVlOiBGZWU7XG4gIG5leHRFcG9jaEZlZT86IEZlZSB8IHVuZGVmaW5lZDtcbiAgcHJlZmVycmVkRGVwb3NpdFZhbGlkYXRvclZvdGVBZGRyZXNzPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcmVmZXJyZWRXaXRoZHJhd1ZhbGlkYXRvclZvdGVBZGRyZXNzPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGFrZURlcG9zaXRGZWU6IEZlZTtcbiAgc3Rha2VXaXRoZHJhd2FsRmVlOiBGZWU7XG4gIG5leHRTdGFrZVdpdGhkcmF3YWxGZWU/OiBGZWUgfCB1bmRlZmluZWQ7XG4gIHN0YWtlUmVmZXJyYWxGZWU6IG51bWJlcjtcbiAgc29sRGVwb3NpdEF1dGhvcml0eT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc29sRGVwb3NpdEZlZTogRmVlO1xuICBzb2xSZWZlcnJhbEZlZTogbnVtYmVyO1xuICBzb2xXaXRoZHJhd0F1dGhvcml0eT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc29sV2l0aGRyYXdhbEZlZTogRmVlO1xuICBuZXh0U29sV2l0aGRyYXdhbEZlZT86IEZlZSB8IHVuZGVmaW5lZDtcbiAgbGFzdEVwb2NoUG9vbFRva2VuU3VwcGx5OiBzdHJpbmc7XG4gIGxhc3RFcG9jaFRvdGFsTGFtcG9ydHM6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IERFUE9TSVRfU09MX0xBWU9VVF9DT0RFID0gMTQ7XG5leHBvcnQgY29uc3QgV0lUSERSQVdfU1RBS0VfTEFZT1VUX0NPREUgPSAxMDtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIHdpdGhkcmF3IGF1dGhvcml0eSBwcm9ncmFtIGFkZHJlc3MgZm9yIHRoZSBzdGFrZSBwb29sLlxuICogTGlrZSBmaW5kV2l0aGRyYXdBdXRob3JpdHlQcm9ncmFtQWRkcmVzcyBpbiBAc29sYW5hL3NwbC1zdGFrZS1wb29sLFxuICogYnV0IHN5bmNocm9ub3VzLlxuICpcbiAqIEBzZWUge2ZpbmRXaXRoZHJhd0F1dGhvcml0eVByb2dyYW1BZGRyZXNzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFdpdGhkcmF3QXV0aG9yaXR5UHJvZ3JhbUFkZHJlc3NTeW5jKHByb2dyYW1JZDogUHVibGljS2V5LCBzdGFrZVBvb2xBZGRyZXNzOiBQdWJsaWNLZXkpOiBQdWJsaWNLZXkge1xuICBjb25zdCBbd2l0aGRyYXdBdXRob3JpdHldID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgW3N0YWtlUG9vbEFkZHJlc3MudG9CdWZmZXIoKSwgQnVmZmVyLmZyb20oJ3dpdGhkcmF3JyldLFxuICAgIHByb2dyYW1JZFxuICApO1xuICByZXR1cm4gd2l0aGRyYXdBdXRob3JpdHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwb3NpdFNvbEluc3RydWN0aW9uc1BhcmFtcyB7XG4gIHN0YWtlUG9vbEFkZHJlc3M6IFB1YmxpY0tleTtcbiAgZnJvbTogUHVibGljS2V5O1xuICBsYW1wb3J0czogYmlnaW50O1xufVxuXG5leHBvcnQgdHlwZSBEZXBvc2l0U29sU3Rha2VQb29sRGF0YSA9IFBpY2s8U3Rha2VQb29sRGF0YSwgJ3Bvb2xNaW50JyB8ICdyZXNlcnZlU3Rha2UnIHwgJ21hbmFnZXJGZWVBY2NvdW50Jz47XG5cbi8qKlxuICogQ29uc3RydWN0IFNvbGFuYSBkZXBvc2l0U29sIHN0YWtlIHBvb2wgaW5zdHJ1Y3Rpb24gZnJvbSBwYXJhbWV0ZXJzLlxuICpcbiAqIEBwYXJhbSB7RGVwb3NpdFNvbEluc3RydWN0aW9uc1BhcmFtc30gcGFyYW1zIC0gcGFyYW1ldGVycyBmb3Igc3Rha2luZyB0byBzdGFrZSBwb29sXG4gKiBAcGFyYW0ge0RlcG9zaXRTb2xTdGFrZVBvb2xEYXRhfSBzdGFrZVBvb2wgLSBkYXRhIGZyb20gZ2V0U3Rha2VQb29sQWNjb3VudCBuZWVkZWQgZm9yIERlcG9zaXRTb2xcbiAqIEBwYXJhbSBjcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50XG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcG9zaXRTb2xJbnN0cnVjdGlvbnMoXG4gIHBhcmFtczogRGVwb3NpdFNvbEluc3RydWN0aW9uc1BhcmFtcyxcbiAgc3Rha2VQb29sOiBEZXBvc2l0U29sU3Rha2VQb29sRGF0YSxcbiAgY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudDogYm9vbGVhblxuKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3QgeyBzdGFrZVBvb2xBZGRyZXNzLCBmcm9tLCBsYW1wb3J0cyB9ID0gcGFyYW1zO1xuICBjb25zdCBwb29sTWludCA9IG5ldyBQdWJsaWNLZXkoc3Rha2VQb29sLnBvb2xNaW50KTtcbiAgY29uc3QgcmVzZXJ2ZVN0YWtlID0gbmV3IFB1YmxpY0tleShzdGFrZVBvb2wucmVzZXJ2ZVN0YWtlKTtcbiAgY29uc3QgbWFuYWdlckZlZUFjY291bnQgPSBuZXcgUHVibGljS2V5KHN0YWtlUG9vbC5tYW5hZ2VyRmVlQWNjb3VudCk7XG5cbiAgLy8gZmluZFdpdGhkcmF3QXV0aG9yaXR5UHJvZ3JhbUFkZHJlc3NcbiAgY29uc3Qgd2l0aGRyYXdBdXRob3JpdHkgPSBmaW5kV2l0aGRyYXdBdXRob3JpdHlQcm9ncmFtQWRkcmVzc1N5bmMoU1RBS0VfUE9PTF9QUk9HUkFNX0lELCBzdGFrZVBvb2xBZGRyZXNzKTtcbiAgY29uc3QgYXNzb2NpYXRlZEFkZHJlc3MgPSBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyhwb29sTWludCwgZnJvbSk7XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10gPSBbXTtcblxuICBpZiAoY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCkge1xuICAgIGluc3RydWN0aW9ucy5wdXNoKGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbihmcm9tLCBhc3NvY2lhdGVkQWRkcmVzcywgZnJvbSwgcG9vbE1pbnQpKTtcbiAgfVxuXG4gIGluc3RydWN0aW9ucy5wdXNoKFxuICAgIFN0YWtlUG9vbEluc3RydWN0aW9uLmRlcG9zaXRTb2woe1xuICAgICAgc3Rha2VQb29sOiBzdGFrZVBvb2xBZGRyZXNzLFxuICAgICAgcmVzZXJ2ZVN0YWtlLFxuICAgICAgZnVuZGluZ0FjY291bnQ6IGZyb20sXG4gICAgICBkZXN0aW5hdGlvblBvb2xBY2NvdW50OiBhc3NvY2lhdGVkQWRkcmVzcyxcbiAgICAgIG1hbmFnZXJGZWVBY2NvdW50LFxuICAgICAgcmVmZXJyYWxQb29sQWNjb3VudDogYXNzb2NpYXRlZEFkZHJlc3MsXG4gICAgICBwb29sTWludCxcbiAgICAgIGxhbXBvcnRzOiBOdW1iZXIobGFtcG9ydHMpLFxuICAgICAgd2l0aGRyYXdBdXRob3JpdHksXG4gICAgfSlcbiAgKTtcblxuICByZXR1cm4gaW5zdHJ1Y3Rpb25zO1xufVxuXG5mdW5jdGlvbiBwYXJzZUtleShrZXk6IEFjY291bnRNZXRhLCB0ZW1wbGF0ZTogeyBpc1NpZ25lcjogYm9vbGVhbjsgaXNXcml0YWJsZTogYm9vbGVhbiB9KTogUHVibGljS2V5IHtcbiAgYXNzZXJ0KFxuICAgIGtleS5pc1NpZ25lciA9PT0gdGVtcGxhdGUuaXNTaWduZXIgJiYga2V5LmlzV3JpdGFibGUgPT09IHRlbXBsYXRlLmlzV3JpdGFibGUsXG4gICAgYFVuZXhwZWN0ZWQga2V5IG1ldGFkYXRhIGluIGluc3RydWN0aW9uOiB7IGlzU2lnbmVyOiAke2tleS5pc1NpZ25lcn0sIGlzV3JpdGFibGU6ICR7a2V5LmlzV3JpdGFibGV9IH1gXG4gICk7XG4gIHJldHVybiBrZXkucHVia2V5O1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBTb2xhbmEgZGVwb3NpdFNvbCBzdGFrZSBwb29sIHBhcmFtZXRlcnMgZnJvbSBpbnN0cnVjdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb259IGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7RGVwb3NpdFNvbFBhcmFtc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZURlcG9zaXRTb2woaW5zdHJ1Y3Rpb246IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24pOiBEZXBvc2l0U29sUGFyYW1zIHtcbiAgY29uc3QgeyBwcm9ncmFtSWQsIGtleXMsIGRhdGEgfSA9IGluc3RydWN0aW9uO1xuXG4gIGFzc2VydChcbiAgICBwcm9ncmFtSWQuZXF1YWxzKFNUQUtFX1BPT0xfUFJPR1JBTV9JRCksXG4gICAgJ0ludmFsaWQgRGVwb3NpdFNvbCBpbnN0cnVjdGlvbiwgcHJvZ3JhbSBJRCBtdXN0IGJlIHRoZSBTdGFrZSBQb29sIFByb2dyYW0nXG4gICk7XG5cbiAgbGV0IGkgPSAwO1xuICBjb25zdCBzdGFrZVBvb2wgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0pO1xuICBjb25zdCB3aXRoZHJhd0F1dGhvcml0eSA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0pO1xuICBjb25zdCByZXNlcnZlU3Rha2UgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0pO1xuICBjb25zdCBmdW5kaW5nQWNjb3VudCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogdHJ1ZSwgaXNXcml0YWJsZTogdHJ1ZSB9KTtcbiAgY29uc3QgZGVzdGluYXRpb25Qb29sQWNjb3VudCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSk7XG4gIGNvbnN0IG1hbmFnZXJGZWVBY2NvdW50ID0gcGFyc2VLZXkoa2V5c1tpKytdLCB7IGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9KTtcbiAgY29uc3QgcmVmZXJyYWxQb29sQWNjb3VudCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSk7XG4gIGNvbnN0IHBvb2xNaW50ID0gcGFyc2VLZXkoa2V5c1tpKytdLCB7IGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9KTtcbiAgY29uc3Qgc3lzdGVtUHJvZ3JhbVByb2dyYW1JZCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0pO1xuICBhc3NlcnQoc3lzdGVtUHJvZ3JhbVByb2dyYW1JZC5lcXVhbHMoU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQpLCAnVW5leHBlY3RlZCBwdWJrZXkgaW4gRGVwb3NpdFNvbCBpbnN0cnVjdGlvbicpO1xuICBjb25zdCB0b2tlblByb2dyYW1JZCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0pO1xuICBhc3NlcnQodG9rZW5Qcm9ncmFtSWQuZXF1YWxzKFRPS0VOX1BST0dSQU1fSUQpLCAnVW5leHBlY3RlZCBwdWJrZXkgaW4gRGVwb3NpdFNvbCBpbnN0cnVjdGlvbicpO1xuICBjb25zdCBkZXBvc2l0QXV0aG9yaXR5ID0ga2V5cy5sZW5ndGggPiAxMCA/IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogdHJ1ZSwgaXNXcml0YWJsZTogZmFsc2UgfSkgOiB1bmRlZmluZWQ7XG4gIGFzc2VydChrZXlzLmxlbmd0aCA8PSAxMSwgJ1RvbyBtYW55IGtleXMgaW4gRGVwb3NpdFNvbCBpbnN0cnVjdGlvbicpO1xuXG4gIGNvbnN0IGxheW91dENvZGUgPSBkYXRhLnJlYWRVaW50OCgwKTtcbiAgYXNzZXJ0KGxheW91dENvZGUgPT09IERFUE9TSVRfU09MX0xBWU9VVF9DT0RFLCAnSW5jb3JyZWN0IGxheW91dCBjb2RlIGluIERlcG9zaXRTb2wgZGF0YScpO1xuICBhc3NlcnQoZGF0YS5sZW5ndGggPT09IDksICdJbmNvcnJlY3QgZGF0YSBzaXplIGZvciBEZXBvc2l0U29sIGxheW91dCcpO1xuICBjb25zdCBsYW1wb3J0cyA9IGRhdGEucmVhZEJpZ0ludDY0TEUoMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFrZVBvb2wsXG4gICAgZGVwb3NpdEF1dGhvcml0eSxcbiAgICB3aXRoZHJhd0F1dGhvcml0eSxcbiAgICByZXNlcnZlU3Rha2UsXG4gICAgZnVuZGluZ0FjY291bnQsXG4gICAgZGVzdGluYXRpb25Qb29sQWNjb3VudCxcbiAgICBtYW5hZ2VyRmVlQWNjb3VudCxcbiAgICByZWZlcnJhbFBvb2xBY2NvdW50LFxuICAgIHBvb2xNaW50LFxuICAgIGxhbXBvcnRzOiBOdW1iZXIobGFtcG9ydHMpLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhkcmF3U3Rha2VJbnN0cnVjdGlvbnNQYXJhbXMge1xuICBzdGFrZVBvb2xBZGRyZXNzOiBQdWJsaWNLZXk7XG4gIHRva2VuT3duZXI6IFB1YmxpY0tleTtcbiAgZGVzdGluYXRpb25TdGFrZUFjY291bnQ6IFB1YmxpY0tleTtcbiAgdmFsaWRhdG9yQWRkcmVzczogUHVibGljS2V5O1xuICB0cmFuc2ZlckF1dGhvcml0eTogUHVibGljS2V5O1xuICBwb29sQW1vdW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFdpdGhkcmF3U3Rha2VTdGFrZVBvb2xEYXRhID0gUGljazxTdGFrZVBvb2xEYXRhLCAncG9vbE1pbnQnIHwgJ3ZhbGlkYXRvckxpc3RBY2NvdW50JyB8ICdtYW5hZ2VyRmVlQWNjb3VudCc+O1xuXG4vKipcbiAqIENvbnN0cnVjdCBTb2xhbmEgd2l0aGRyYXdTdGFrZSBzdGFrZSBwb29sIGluc3RydWN0aW9ucyBmcm9tIHBhcmFtZXRlcnMuXG4gKlxuICogQHBhcmFtIHtXaXRoZHJhd1N0YWtlSW5zdHJ1Y3Rpb25zUGFyYW1zfSBwYXJhbXMgLSBwYXJhbWV0ZXJzIGZvciB1bnN0YWtpbmcgZnJvbSBzdGFrZSBwb29sXG4gKiBAcGFyYW0ge1dpdGhkcmF3U3Rha2VTdGFrZVBvb2xEYXRhfSBzdGFrZVBvb2wgLSBkYXRhIGZyb20gZ2V0U3Rha2VQb29sQWNjb3VudCBuZWVkZWQgZm9yIFdpdGhkcmF3U3Rha2VcbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoZHJhd1N0YWtlSW5zdHJ1Y3Rpb25zKFxuICBwYXJhbXM6IFdpdGhkcmF3U3Rha2VJbnN0cnVjdGlvbnNQYXJhbXMsXG4gIHN0YWtlUG9vbDogV2l0aGRyYXdTdGFrZVN0YWtlUG9vbERhdGFcbik6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICB0b2tlbk93bmVyLFxuICAgIHN0YWtlUG9vbEFkZHJlc3MsXG4gICAgZGVzdGluYXRpb25TdGFrZUFjY291bnQsXG4gICAgdmFsaWRhdG9yQWRkcmVzcyxcbiAgICB0cmFuc2ZlckF1dGhvcml0eSxcbiAgICBwb29sQW1vdW50OiBwb29sQW1vdW50U3RyaW5nLFxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHBvb2xNaW50ID0gbmV3IFB1YmxpY0tleShzdGFrZVBvb2wucG9vbE1pbnQpO1xuICBjb25zdCB2YWxpZGF0b3JMaXN0ID0gbmV3IFB1YmxpY0tleShzdGFrZVBvb2wudmFsaWRhdG9yTGlzdEFjY291bnQpO1xuICBjb25zdCBtYW5hZ2VyRmVlQWNjb3VudCA9IG5ldyBQdWJsaWNLZXkoc3Rha2VQb29sLm1hbmFnZXJGZWVBY2NvdW50KTtcblxuICBjb25zdCBwb29sVG9rZW5BY2NvdW50ID0gZ2V0QXNzb2NpYXRlZFRva2VuQWRkcmVzc1N5bmMocG9vbE1pbnQsIHRva2VuT3duZXIpO1xuICBjb25zdCB3aXRoZHJhd0F1dGhvcml0eSA9IGZpbmRXaXRoZHJhd0F1dGhvcml0eVByb2dyYW1BZGRyZXNzU3luYyhTVEFLRV9QT09MX1BST0dSQU1fSUQsIHN0YWtlUG9vbEFkZHJlc3MpO1xuXG4gIGNvbnN0IHBvb2xBbW91bnQgPSBCaWdJbnQocG9vbEFtb3VudFN0cmluZyk7XG5cbiAgcmV0dXJuIFtcbiAgICBjcmVhdGVBcHByb3ZlSW5zdHJ1Y3Rpb24ocG9vbFRva2VuQWNjb3VudCwgdHJhbnNmZXJBdXRob3JpdHksIHRva2VuT3duZXIsIHBvb2xBbW91bnQpLFxuICAgIFN5c3RlbVByb2dyYW0uY3JlYXRlQWNjb3VudCh7XG4gICAgICBmcm9tUHVia2V5OiB0b2tlbk93bmVyLFxuICAgICAgbmV3QWNjb3VudFB1YmtleTogZGVzdGluYXRpb25TdGFrZUFjY291bnQsXG4gICAgICBsYW1wb3J0czogU1RBS0VfQUNDT1VOVF9SRU5UX0VYRU1QVF9BTU9VTlQsXG4gICAgICBzcGFjZTogU3Rha2VQcm9ncmFtLnNwYWNlLFxuICAgICAgcHJvZ3JhbUlkOiBTdGFrZVByb2dyYW0ucHJvZ3JhbUlkLFxuICAgIH0pLFxuICAgIFN0YWtlUG9vbEluc3RydWN0aW9uLndpdGhkcmF3U3Rha2Uoe1xuICAgICAgc3Rha2VQb29sOiBzdGFrZVBvb2xBZGRyZXNzLFxuICAgICAgdmFsaWRhdG9yTGlzdDogdmFsaWRhdG9yTGlzdCxcbiAgICAgIHZhbGlkYXRvclN0YWtlOiB2YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgZGVzdGluYXRpb25TdGFrZTogZGVzdGluYXRpb25TdGFrZUFjY291bnQsXG4gICAgICBkZXN0aW5hdGlvblN0YWtlQXV0aG9yaXR5OiB0b2tlbk93bmVyLFxuICAgICAgc291cmNlVHJhbnNmZXJBdXRob3JpdHk6IHRyYW5zZmVyQXV0aG9yaXR5LFxuICAgICAgc291cmNlUG9vbEFjY291bnQ6IHBvb2xUb2tlbkFjY291bnQsXG4gICAgICBtYW5hZ2VyRmVlQWNjb3VudDogbWFuYWdlckZlZUFjY291bnQsXG4gICAgICBwb29sTWludDogcG9vbE1pbnQsXG4gICAgICBwb29sVG9rZW5zOiBOdW1iZXIocG9vbEFtb3VudCksXG4gICAgICB3aXRoZHJhd0F1dGhvcml0eSxcbiAgICB9KSxcbiAgICAuLi5TdGFrZVByb2dyYW0uZGVhY3RpdmF0ZSh7XG4gICAgICBzdGFrZVB1YmtleTogZGVzdGluYXRpb25TdGFrZUFjY291bnQsXG4gICAgICBhdXRob3JpemVkUHVia2V5OiB0b2tlbk93bmVyLFxuICAgIH0pLmluc3RydWN0aW9ucyxcbiAgXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgU29sYW5hIHdpdGhkcmF3U3Rha2Ugc3Rha2UgcG9vbCBwYXJhbWV0ZXJzIGZyb20gaW5zdHJ1Y3Rpb24uXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9ufSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge0RlcG9zaXRTb2xQYXJhbXN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVXaXRoZHJhd1N0YWtlKGluc3RydWN0aW9uOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uKTogV2l0aGRyYXdTdGFrZVBhcmFtcyB7XG4gIGNvbnN0IHsgcHJvZ3JhbUlkLCBrZXlzLCBkYXRhIH0gPSBpbnN0cnVjdGlvbjtcblxuICBhc3NlcnQoXG4gICAgcHJvZ3JhbUlkLmVxdWFscyhTVEFLRV9QT09MX1BST0dSQU1fSUQpLFxuICAgICdJbnZhbGlkIFdpdGhkcmF3U3Rha2UgaW5zdHJ1Y3Rpb24sIHByb2dyYW0gSUQgbXVzdCBiZSB0aGUgU3Rha2UgUG9vbCBQcm9ncmFtJ1xuICApO1xuXG4gIGNvbnN0IGxheW91dENvZGUgPSBkYXRhLnJlYWRVaW50OCgwKTtcbiAgYXNzZXJ0KGxheW91dENvZGUgPT09IFdJVEhEUkFXX1NUQUtFX0xBWU9VVF9DT0RFLCAnSW5jb3JyZWN0IGxheW91dCBjb2RlIGluIFdpdGhkcmF3U3Rha2UgZGF0YScpO1xuICBhc3NlcnQoZGF0YS5sZW5ndGggPT09IDksICdJbmNvcnJlY3QgZGF0YSBzaXplIGZvciBXaXRoZHJhd1N0YWtlIGxheW91dCcpO1xuICBjb25zdCBwb29sVG9rZW5zID0gZGF0YS5yZWFkQmlnSW50NjRMRSgxKTtcblxuICBsZXQgaSA9IDA7XG4gIGNvbnN0IHN0YWtlUG9vbCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSk7XG4gIGNvbnN0IHZhbGlkYXRvckxpc3QgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0pO1xuICBjb25zdCB3aXRoZHJhd0F1dGhvcml0eSA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0pO1xuICBjb25zdCB2YWxpZGF0b3JTdGFrZSA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSk7XG4gIGNvbnN0IGRlc3RpbmF0aW9uU3Rha2UgPSBrZXlzW2krK10ucHVia2V5O1xuICBjb25zdCBkZXN0aW5hdGlvblN0YWtlQXV0aG9yaXR5ID0ga2V5c1tpKytdLnB1YmtleTtcbiAgY29uc3Qgc291cmNlVHJhbnNmZXJBdXRob3JpdHkgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IHRydWUsIGlzV3JpdGFibGU6IGZhbHNlIH0pO1xuICBjb25zdCBzb3VyY2VQb29sQWNjb3VudCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSk7XG4gIGNvbnN0IG1hbmFnZXJGZWVBY2NvdW50ID0gcGFyc2VLZXkoa2V5c1tpKytdLCB7IGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9KTtcbiAgY29uc3QgcG9vbE1pbnQgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0pO1xuICBjb25zdCBzeXN2YXJDbG9ja1B1YmtleSA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0pO1xuICBhc3NlcnQoc3lzdmFyQ2xvY2tQdWJrZXkuZXF1YWxzKFNZU1ZBUl9DTE9DS19QVUJLRVkpLCAnVW5leHBlY3RlZCBwdWJrZXkgaW4gV2l0aGRyYXdTdGFrZSBpbnN0cnVjdGlvbicpO1xuICBjb25zdCB0b2tlblByb2dyYW1JZCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IGZhbHNlIH0pO1xuICBhc3NlcnQodG9rZW5Qcm9ncmFtSWQuZXF1YWxzKFRPS0VOX1BST0dSQU1fSUQpLCAnVW5leHBlY3RlZCBwdWJrZXkgaW4gV2l0aGRyYXdTdGFrZSBpbnN0cnVjdGlvbicpO1xuICBjb25zdCBzdGFrZVByb2dyYW1Qcm9ncmFtSWQgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9KTtcbiAgYXNzZXJ0KHN0YWtlUHJvZ3JhbVByb2dyYW1JZC5lcXVhbHMoU3Rha2VQcm9ncmFtLnByb2dyYW1JZCksICdVbmV4cGVjdGVkIHB1YmtleSBpbiBXaXRoZHJhd1N0YWtlIGluc3RydWN0aW9uJyk7XG4gIGFzc2VydChpID09PSBrZXlzLmxlbmd0aCwgJ1RvbyBtYW55IGtleXMgaW4gV2l0aGRyYXdTdGFrZSBpbnN0cnVjdGlvbicpO1xuXG4gIHJldHVybiB7XG4gICAgc3Rha2VQb29sLFxuICAgIHZhbGlkYXRvckxpc3QsXG4gICAgd2l0aGRyYXdBdXRob3JpdHksXG4gICAgdmFsaWRhdG9yU3Rha2UsXG4gICAgZGVzdGluYXRpb25TdGFrZSxcbiAgICBkZXN0aW5hdGlvblN0YWtlQXV0aG9yaXR5LFxuICAgIHNvdXJjZVRyYW5zZmVyQXV0aG9yaXR5LFxuICAgIHNvdXJjZVBvb2xBY2NvdW50LFxuICAgIG1hbmFnZXJGZWVBY2NvdW50LFxuICAgIHBvb2xNaW50LFxuICAgIHBvb2xUb2tlbnM6IE51bWJlcihwb29sVG9rZW5zKSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solInstructionFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/solInstructionFactory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"solInstructionFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/solInstructionFactory.ts"],"names":[],"mappings":"AAWA,OAAO,EASL,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAGL,iBAAiB,EAgBlB,MAAM,SAAS,CAAC;AAKjB;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,sBAAsB,EAAE,CAuCrG"}
|