@coolwallet/sol
Version:
Coolwallet Solana sdk
163 lines (162 loc) • 24.2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.compileAssociateTokenAccount = compileAssociateTokenAccount;
exports.compileDelegateAndCreateAccountWithSeed = compileDelegateAndCreateAccountWithSeed;
exports.compileSplTokenTransaction = compileSplTokenTransaction;
exports.compileStakingWithdraw = compileStakingWithdraw;
exports.compileTransferTransaction = compileTransferTransaction;
exports.compileUndelegate = compileUndelegate;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var params = _interopRequireWildcard(require("../config/params"));
var instructionsTemplate = _interopRequireWildcard(require("./instructions"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function compileTransferTransaction(transaction) {
var fromPubkey = transaction.fromPubkey,
toPubkey = transaction.toPubkey,
recentBlockhash = transaction.recentBlockhash,
lamports = transaction.lamports;
var computeBudgetInstructions = instructionsTemplate.addComputeBudget({
computeUnitPrice: transaction.computeUnitPrice,
computeUnitLimit: transaction.computeUnitLimit
});
var coinInstruction = instructionsTemplate.transferCoin({
fromPubkey: fromPubkey,
toPubkey: toPubkey,
lamports: lamports
});
return {
instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [coinInstruction]),
recentBlockhash: recentBlockhash,
feePayer: fromPubkey
};
}
function compileSplTokenTransaction(transaction) {
var signer = transaction.signer,
fromTokenAccount = transaction.fromTokenAccount,
toTokenAccount = transaction.toTokenAccount,
amount = transaction.amount,
recentBlockhash = transaction.recentBlockhash,
programId = transaction.programId,
tokenInfo = transaction.tokenInfo;
var computeBudgetInstructions = instructionsTemplate.addComputeBudget({
computeUnitPrice: transaction.computeUnitPrice,
computeUnitLimit: transaction.computeUnitLimit
});
var splTokenInstruction = instructionsTemplate.transferSplToken({
signer: signer,
fromTokenAccount: fromTokenAccount,
toTokenAccount: toTokenAccount,
amount: amount,
programId: programId,
tokenInfo: tokenInfo
});
return {
instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [splTokenInstruction]),
recentBlockhash: recentBlockhash,
feePayer: signer
};
}
function compileAssociateTokenAccount(transaction) {
var signer = transaction.signer,
owner = transaction.owner,
associateAccount = transaction.associateAccount,
token = transaction.token,
recentBlockhash = transaction.recentBlockhash,
programId = transaction.programId;
var createTokenInstruction = instructionsTemplate.createAssociateTokenAccount({
signer: signer,
owner: owner,
associateAccount: associateAccount,
token: token,
programId: programId
});
return {
instructions: [createTokenInstruction],
recentBlockhash: recentBlockhash,
feePayer: signer
};
}
function compileUndelegate(transaction) {
var stakePubkey = transaction.stakePubkey,
authorizedPubkey = transaction.authorizedPubkey,
feePayer = transaction.feePayer,
recentBlockhash = transaction.recentBlockhash;
var computeBudgetInstructions = instructionsTemplate.addComputeBudget({
computeUnitPrice: transaction.computeUnitPrice,
computeUnitLimit: transaction.computeUnitLimit
});
var undelegateInstruction = instructionsTemplate.undelegate({
stakePubkey: stakePubkey,
authorizedPubkey: authorizedPubkey
});
return {
instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [undelegateInstruction]),
feePayer: feePayer,
recentBlockhash: recentBlockhash
};
}
function compileDelegateAndCreateAccountWithSeed(transaction) {
var fromPubkey = transaction.fromPubkey,
newAccountPubkey = transaction.newAccountPubkey,
basePubkey = transaction.basePubkey,
seed = transaction.seed,
lamports = transaction.lamports,
recentBlockhash = transaction.recentBlockhash,
votePubkey = transaction.votePubkey;
var computeUnitInstructions = instructionsTemplate.addComputeBudget({
computeUnitPrice: transaction.computeUnitPrice,
computeUnitLimit: transaction.computeUnitLimit
});
var createAccountWithSeedInstruction = instructionsTemplate.createAccountWithSeed({
fromPubkey: fromPubkey,
newAccountPubkey: newAccountPubkey,
basePubkey: basePubkey,
seed: seed,
space: 200,
lamports: lamports,
programId: params.STAKE_PROGRAM_ID
});
var initializeInstruction = instructionsTemplate.initialize({
stakePubkey: newAccountPubkey,
staker: fromPubkey,
withdrawer: fromPubkey
});
var delegateInstruction = instructionsTemplate.delegate({
stakePubkey: newAccountPubkey,
authorizedPubkey: fromPubkey,
votePubkey: votePubkey
});
return {
instructions: [].concat((0, _toConsumableArray2["default"])(computeUnitInstructions), [createAccountWithSeedInstruction, initializeInstruction, delegateInstruction]),
recentBlockhash: recentBlockhash,
feePayer: fromPubkey
};
}
function compileStakingWithdraw(transaction) {
var authorizedPubkey = transaction.authorizedPubkey,
stakePubkey = transaction.stakePubkey,
withdrawToPubKey = transaction.withdrawToPubKey,
recentBlockhash = transaction.recentBlockhash,
lamports = transaction.lamports;
var computeBudgetInstructions = instructionsTemplate.addComputeBudget({
computeUnitPrice: transaction.computeUnitPrice,
computeUnitLimit: transaction.computeUnitLimit
});
var withdrawInstruction = instructionsTemplate.withdraw({
stakePubkey: stakePubkey,
withdrawToPubKey: withdrawToPubKey,
authorizedPubkey: authorizedPubkey,
lamports: lamports
});
return {
instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [withdrawInstruction]),
recentBlockhash: recentBlockhash,
feePayer: authorizedPubkey
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJhbXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJpbnN0cnVjdGlvbnNUZW1wbGF0ZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJjb21waWxlVHJhbnNmZXJUcmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uIiwiZnJvbVB1YmtleSIsInRvUHVia2V5IiwicmVjZW50QmxvY2toYXNoIiwibGFtcG9ydHMiLCJjb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zIiwiYWRkQ29tcHV0ZUJ1ZGdldCIsImNvbXB1dGVVbml0UHJpY2UiLCJjb21wdXRlVW5pdExpbWl0IiwiY29pbkluc3RydWN0aW9uIiwidHJhbnNmZXJDb2luIiwiaW5zdHJ1Y3Rpb25zIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImZlZVBheWVyIiwiY29tcGlsZVNwbFRva2VuVHJhbnNhY3Rpb24iLCJzaWduZXIiLCJmcm9tVG9rZW5BY2NvdW50IiwidG9Ub2tlbkFjY291bnQiLCJhbW91bnQiLCJwcm9ncmFtSWQiLCJ0b2tlbkluZm8iLCJzcGxUb2tlbkluc3RydWN0aW9uIiwidHJhbnNmZXJTcGxUb2tlbiIsImNvbXBpbGVBc3NvY2lhdGVUb2tlbkFjY291bnQiLCJvd25lciIsImFzc29jaWF0ZUFjY291bnQiLCJ0b2tlbiIsImNyZWF0ZVRva2VuSW5zdHJ1Y3Rpb24iLCJjcmVhdGVBc3NvY2lhdGVUb2tlbkFjY291bnQiLCJjb21waWxlVW5kZWxlZ2F0ZSIsInN0YWtlUHVia2V5IiwiYXV0aG9yaXplZFB1YmtleSIsInVuZGVsZWdhdGVJbnN0cnVjdGlvbiIsInVuZGVsZWdhdGUiLCJjb21waWxlRGVsZWdhdGVBbmRDcmVhdGVBY2NvdW50V2l0aFNlZWQiLCJuZXdBY2NvdW50UHVia2V5IiwiYmFzZVB1YmtleSIsInNlZWQiLCJ2b3RlUHVia2V5IiwiY29tcHV0ZVVuaXRJbnN0cnVjdGlvbnMiLCJjcmVhdGVBY2NvdW50V2l0aFNlZWRJbnN0cnVjdGlvbiIsImNyZWF0ZUFjY291bnRXaXRoU2VlZCIsInNwYWNlIiwiU1RBS0VfUFJPR1JBTV9JRCIsImluaXRpYWxpemVJbnN0cnVjdGlvbiIsImluaXRpYWxpemUiLCJzdGFrZXIiLCJ3aXRoZHJhd2VyIiwiZGVsZWdhdGVJbnN0cnVjdGlvbiIsImRlbGVnYXRlIiwiY29tcGlsZVN0YWtpbmdXaXRoZHJhdyIsIndpdGhkcmF3VG9QdWJLZXkiLCJ3aXRoZHJhd0luc3RydWN0aW9uIiwid2l0aGRyYXciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcmF3VHJhbnNhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi4vY29uZmlnL3R5cGVzJztcbmltcG9ydCAqIGFzIHBhcmFtcyBmcm9tICcuLi9jb25maWcvcGFyYW1zJztcbmltcG9ydCAqIGFzIGluc3RydWN0aW9uc1RlbXBsYXRlIGZyb20gJy4vaW5zdHJ1Y3Rpb25zJztcblxuZnVuY3Rpb24gY29tcGlsZVRyYW5zZmVyVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IHtcbiAgZnJvbVB1YmtleTogdHlwZXMuQWRkcmVzcztcbiAgdG9QdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIHJlY2VudEJsb2NraGFzaDogc3RyaW5nO1xuICBsYW1wb3J0czogbnVtYmVyIHwgc3RyaW5nO1xuICBjb21wdXRlVW5pdFByaWNlPzogc3RyaW5nO1xuICBjb21wdXRlVW5pdExpbWl0Pzogc3RyaW5nO1xufSk6IHR5cGVzLlRyYW5zYWN0aW9uQXJncyB7XG4gIGNvbnN0IHsgZnJvbVB1YmtleSwgdG9QdWJrZXksIHJlY2VudEJsb2NraGFzaCwgbGFtcG9ydHMgfSA9IHRyYW5zYWN0aW9uO1xuICBjb25zdCBjb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zID0gaW5zdHJ1Y3Rpb25zVGVtcGxhdGUuYWRkQ29tcHV0ZUJ1ZGdldCh7XG4gICAgY29tcHV0ZVVuaXRQcmljZTogdHJhbnNhY3Rpb24uY29tcHV0ZVVuaXRQcmljZSxcbiAgICBjb21wdXRlVW5pdExpbWl0OiB0cmFuc2FjdGlvbi5jb21wdXRlVW5pdExpbWl0LFxuICB9KTtcbiAgY29uc3QgY29pbkluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zVGVtcGxhdGUudHJhbnNmZXJDb2luKHtcbiAgICBmcm9tUHVia2V5LFxuICAgIHRvUHVia2V5LFxuICAgIGxhbXBvcnRzLFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbnN0cnVjdGlvbnM6IFsuLi5jb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zLCBjb2luSW5zdHJ1Y3Rpb25dLFxuICAgIHJlY2VudEJsb2NraGFzaCxcbiAgICBmZWVQYXllcjogZnJvbVB1YmtleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29tcGlsZVNwbFRva2VuVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IHtcbiAgc2lnbmVyOiB0eXBlcy5BZGRyZXNzO1xuICBmcm9tVG9rZW5BY2NvdW50OiB0eXBlcy5BZGRyZXNzO1xuICB0b1Rva2VuQWNjb3VudDogdHlwZXMuQWRkcmVzcztcbiAgcmVjZW50QmxvY2toYXNoOiBzdHJpbmc7XG4gIGFtb3VudDogbnVtYmVyIHwgc3RyaW5nO1xuICBwcm9ncmFtSWQ6IHR5cGVzLlRva2VuUHJvZ3JhbUlkO1xuICB0b2tlbkluZm86IHR5cGVzLlRva2VuSW5mbztcbiAgY29tcHV0ZVVuaXRQcmljZT86IHN0cmluZztcbiAgY29tcHV0ZVVuaXRMaW1pdD86IHN0cmluZztcbn0pOiB0eXBlcy5UcmFuc2FjdGlvbkFyZ3Mge1xuICBjb25zdCB7IHNpZ25lciwgZnJvbVRva2VuQWNjb3VudCwgdG9Ub2tlbkFjY291bnQsIGFtb3VudCwgcmVjZW50QmxvY2toYXNoLCBwcm9ncmFtSWQsIHRva2VuSW5mbyB9ID0gdHJhbnNhY3Rpb247XG4gIGNvbnN0IGNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5hZGRDb21wdXRlQnVkZ2V0KHtcbiAgICBjb21wdXRlVW5pdFByaWNlOiB0cmFuc2FjdGlvbi5jb21wdXRlVW5pdFByaWNlLFxuICAgIGNvbXB1dGVVbml0TGltaXQ6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0TGltaXQsXG4gIH0pO1xuICBjb25zdCBzcGxUb2tlbkluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zVGVtcGxhdGUudHJhbnNmZXJTcGxUb2tlbih7XG4gICAgc2lnbmVyLFxuICAgIGZyb21Ub2tlbkFjY291bnQsXG4gICAgdG9Ub2tlbkFjY291bnQsXG4gICAgYW1vdW50LFxuICAgIHByb2dyYW1JZCxcbiAgICB0b2tlbkluZm8sXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGluc3RydWN0aW9uczogWy4uLmNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMsIHNwbFRva2VuSW5zdHJ1Y3Rpb25dLFxuICAgIHJlY2VudEJsb2NraGFzaCxcbiAgICBmZWVQYXllcjogc2lnbmVyLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlQXNzb2NpYXRlVG9rZW5BY2NvdW50KHRyYW5zYWN0aW9uOiB7XG4gIHNpZ25lcjogdHlwZXMuQWRkcmVzcztcbiAgb3duZXI6IHR5cGVzLkFkZHJlc3M7XG4gIGFzc29jaWF0ZUFjY291bnQ6IHR5cGVzLkFkZHJlc3M7XG4gIHRva2VuOiB0eXBlcy5BZGRyZXNzO1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgcHJvZ3JhbUlkOiB0eXBlcy5Ub2tlblByb2dyYW1JZDtcbn0pOiB0eXBlcy5UcmFuc2FjdGlvbkFyZ3Mge1xuICBjb25zdCB7IHNpZ25lciwgb3duZXIsIGFzc29jaWF0ZUFjY291bnQsIHRva2VuLCByZWNlbnRCbG9ja2hhc2gsIHByb2dyYW1JZCB9ID0gdHJhbnNhY3Rpb247XG4gIGNvbnN0IGNyZWF0ZVRva2VuSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5jcmVhdGVBc3NvY2lhdGVUb2tlbkFjY291bnQoe1xuICAgIHNpZ25lcixcbiAgICBvd25lcixcbiAgICBhc3NvY2lhdGVBY2NvdW50LFxuICAgIHRva2VuLFxuICAgIHByb2dyYW1JZCxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaW5zdHJ1Y3Rpb25zOiBbY3JlYXRlVG9rZW5JbnN0cnVjdGlvbl0sXG4gICAgcmVjZW50QmxvY2toYXNoLFxuICAgIGZlZVBheWVyOiBzaWduZXIsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVVbmRlbGVnYXRlKHRyYW5zYWN0aW9uOiB7XG4gIGZlZVBheWVyOiB0eXBlcy5BZGRyZXNzO1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgc3Rha2VQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIGF1dGhvcml6ZWRQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIGNvbXB1dGVVbml0UHJpY2U/OiBzdHJpbmc7XG4gIGNvbXB1dGVVbml0TGltaXQ/OiBzdHJpbmc7XG59KTogdHlwZXMuVHJhbnNhY3Rpb25BcmdzIHtcbiAgY29uc3QgeyBzdGFrZVB1YmtleSwgYXV0aG9yaXplZFB1YmtleSwgZmVlUGF5ZXIsIHJlY2VudEJsb2NraGFzaCB9ID0gdHJhbnNhY3Rpb247XG4gIGNvbnN0IGNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5hZGRDb21wdXRlQnVkZ2V0KHtcbiAgICBjb21wdXRlVW5pdFByaWNlOiB0cmFuc2FjdGlvbi5jb21wdXRlVW5pdFByaWNlLFxuICAgIGNvbXB1dGVVbml0TGltaXQ6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0TGltaXQsXG4gIH0pO1xuICBjb25zdCB1bmRlbGVnYXRlSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS51bmRlbGVnYXRlKHtcbiAgICBzdGFrZVB1YmtleSxcbiAgICBhdXRob3JpemVkUHVia2V5LFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbnN0cnVjdGlvbnM6IFsuLi5jb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zLCB1bmRlbGVnYXRlSW5zdHJ1Y3Rpb25dLFxuICAgIGZlZVBheWVyLFxuICAgIHJlY2VudEJsb2NraGFzaCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29tcGlsZURlbGVnYXRlQW5kQ3JlYXRlQWNjb3VudFdpdGhTZWVkKHRyYW5zYWN0aW9uOiB7XG4gIGZyb21QdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIG5ld0FjY291bnRQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIGJhc2VQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIHZvdGVQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIHNlZWQ6IHN0cmluZztcbiAgbGFtcG9ydHM6IHN0cmluZyB8IG51bWJlcjtcbiAgcmVjZW50QmxvY2toYXNoOiBzdHJpbmc7XG4gIGNvbXB1dGVVbml0UHJpY2U/OiBzdHJpbmc7XG4gIGNvbXB1dGVVbml0TGltaXQ/OiBzdHJpbmc7XG59KTogdHlwZXMuVHJhbnNhY3Rpb25BcmdzIHtcbiAgY29uc3QgeyBmcm9tUHVia2V5LCBuZXdBY2NvdW50UHVia2V5LCBiYXNlUHVia2V5LCBzZWVkLCBsYW1wb3J0cywgcmVjZW50QmxvY2toYXNoLCB2b3RlUHVia2V5IH0gPSB0cmFuc2FjdGlvbjtcbiAgY29uc3QgY29tcHV0ZVVuaXRJbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5hZGRDb21wdXRlQnVkZ2V0KHtcbiAgICBjb21wdXRlVW5pdFByaWNlOiB0cmFuc2FjdGlvbi5jb21wdXRlVW5pdFByaWNlLFxuICAgIGNvbXB1dGVVbml0TGltaXQ6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0TGltaXQsXG4gIH0pO1xuICBjb25zdCBjcmVhdGVBY2NvdW50V2l0aFNlZWRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc1RlbXBsYXRlLmNyZWF0ZUFjY291bnRXaXRoU2VlZCh7XG4gICAgZnJvbVB1YmtleSxcbiAgICBuZXdBY2NvdW50UHVia2V5LFxuICAgIGJhc2VQdWJrZXksXG4gICAgc2VlZCxcbiAgICBzcGFjZTogMjAwLFxuICAgIGxhbXBvcnRzLFxuICAgIHByb2dyYW1JZDogcGFyYW1zLlNUQUtFX1BST0dSQU1fSUQsXG4gIH0pO1xuICBjb25zdCBpbml0aWFsaXplSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5pbml0aWFsaXplKHtcbiAgICBzdGFrZVB1YmtleTogbmV3QWNjb3VudFB1YmtleSxcbiAgICBzdGFrZXI6IGZyb21QdWJrZXksXG4gICAgd2l0aGRyYXdlcjogZnJvbVB1YmtleSxcbiAgfSk7XG4gIGNvbnN0IGRlbGVnYXRlSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5kZWxlZ2F0ZSh7XG4gICAgc3Rha2VQdWJrZXk6IG5ld0FjY291bnRQdWJrZXksXG4gICAgYXV0aG9yaXplZFB1YmtleTogZnJvbVB1YmtleSxcbiAgICB2b3RlUHVia2V5LFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbnN0cnVjdGlvbnM6IFtcbiAgICAgIC4uLmNvbXB1dGVVbml0SW5zdHJ1Y3Rpb25zLFxuICAgICAgY3JlYXRlQWNjb3VudFdpdGhTZWVkSW5zdHJ1Y3Rpb24sXG4gICAgICBpbml0aWFsaXplSW5zdHJ1Y3Rpb24sXG4gICAgICBkZWxlZ2F0ZUluc3RydWN0aW9uLFxuICAgIF0sXG4gICAgcmVjZW50QmxvY2toYXNoLFxuICAgIGZlZVBheWVyOiBmcm9tUHVia2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlU3Rha2luZ1dpdGhkcmF3KHRyYW5zYWN0aW9uOiB7XG4gIGF1dGhvcml6ZWRQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIHN0YWtlUHVia2V5OiB0eXBlcy5BZGRyZXNzO1xuICB3aXRoZHJhd1RvUHViS2V5OiB0eXBlcy5BZGRyZXNzO1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgbGFtcG9ydHM6IG51bWJlciB8IHN0cmluZztcbiAgY29tcHV0ZVVuaXRQcmljZT86IHN0cmluZztcbiAgY29tcHV0ZVVuaXRMaW1pdD86IHN0cmluZztcbn0pOiB0eXBlcy5UcmFuc2FjdGlvbkFyZ3Mge1xuICBjb25zdCB7IGF1dGhvcml6ZWRQdWJrZXksIHN0YWtlUHVia2V5LCB3aXRoZHJhd1RvUHViS2V5LCByZWNlbnRCbG9ja2hhc2gsIGxhbXBvcnRzIH0gPSB0cmFuc2FjdGlvbjtcbiAgY29uc3QgY29tcHV0ZUJ1ZGdldEluc3RydWN0aW9ucyA9IGluc3RydWN0aW9uc1RlbXBsYXRlLmFkZENvbXB1dGVCdWRnZXQoe1xuICAgIGNvbXB1dGVVbml0UHJpY2U6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0UHJpY2UsXG4gICAgY29tcHV0ZVVuaXRMaW1pdDogdHJhbnNhY3Rpb24uY29tcHV0ZVVuaXRMaW1pdCxcbiAgfSk7XG4gIGNvbnN0IHdpdGhkcmF3SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS53aXRoZHJhdyh7XG4gICAgc3Rha2VQdWJrZXksXG4gICAgd2l0aGRyYXdUb1B1YktleSxcbiAgICBhdXRob3JpemVkUHVia2V5LFxuICAgIGxhbXBvcnRzLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGluc3RydWN0aW9uczogWy4uLmNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMsIHdpdGhkcmF3SW5zdHJ1Y3Rpb25dLFxuICAgIHJlY2VudEJsb2NraGFzaCxcbiAgICBmZWVQYXllcjogYXV0aG9yaXplZFB1YmtleSxcbiAgfTtcbn1cblxuZXhwb3J0IHtcbiAgY29tcGlsZVRyYW5zZmVyVHJhbnNhY3Rpb24sXG4gIGNvbXBpbGVTcGxUb2tlblRyYW5zYWN0aW9uLFxuICBjb21waWxlQXNzb2NpYXRlVG9rZW5BY2NvdW50LFxuICBjb21waWxlVW5kZWxlZ2F0ZSxcbiAgY29tcGlsZURlbGVnYXRlQW5kQ3JlYXRlQWNjb3VudFdpdGhTZWVkLFxuICBjb21waWxlU3Rha2luZ1dpdGhkcmF3LFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxvQkFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQXVELFNBQUFFLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBSix3QkFBQVEsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLGFBQUFFLE9BQUEsQ0FBQUYsR0FBQSx5QkFBQUEsR0FBQSx1Q0FBQUEsR0FBQSxVQUFBRyxLQUFBLEdBQUFSLHdCQUFBLENBQUFDLFdBQUEsT0FBQU8sS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUosR0FBQSxZQUFBRyxLQUFBLENBQUFFLEdBQUEsQ0FBQUwsR0FBQSxTQUFBTSxNQUFBLFdBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLEdBQUEsSUFBQVgsR0FBQSxRQUFBVyxHQUFBLGtCQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFkLEdBQUEsRUFBQVcsR0FBQSxTQUFBSSxJQUFBLEdBQUFSLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQVYsR0FBQSxFQUFBVyxHQUFBLGNBQUFJLElBQUEsS0FBQUEsSUFBQSxDQUFB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