Transaction
Bitcoin transaction in blockchain network.
- class swap.providers.bitcoin.transaction.Transaction(network: str = 'mainnet', version: int = 2)
Bitcoin Transaction.
- Parameters
network (str) – Bitcoin network, defaults to
mainnet
.version (int) – Bitcoin transaction version, defaults to
2
.
- Returns
Transaction – Bitcoin transaction instance.
Note
Bitcoin has only two networks,
mainnet
andtestnet
.- fee(unit: str = 'Satoshi') Union[int, float]
Get Bitcoin transaction fee.
- Parameters
unit (str) – Bitcoin unit, default to
Satoshi
.- Returns
int, float – Bitcoin transaction fee.
>>> from swap.providers.bitcoin.transaction import WithdrawTransaction >>> withdraw_transaction = WithdrawTransaction("testnet") >>> withdraw_transaction.build_transaction("mgS3WMHp9nvdUPeDJxr5iCF2P5HuFZSR3V", "a211d21110756b266925fee2fbf2dc81529beef5e410311b38578dc3a076fb31") >>> withdraw_transaction.fee(unit="Satoshi") 576
- hash() str
Get Bitcoin transaction hash.
- Returns
str – Bitcoin transaction id/hash.
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.providers.bitcoin.transaction import FundTransaction >>> from swap.utils import sha256 >>> htlc: HTLC = HTLC(network="testnet") >>> htlc.build_htlc(secret_hash=sha256("Hello Meheret!"), recipient_address="mgS3WMHp9nvdUPeDJxr5iCF2P5HuFZSR3V", sender_address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", endtime=1624687630) >>> fund_transaction: FundTransaction = FundTransaction(network="testnet") >>> fund_transaction.build_transaction(address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", htlc=htlc, amount=0.001, unit="BTC") >>> fund_transaction.hash() "9cc0524fb8e7b2c5fecaee4eb91d43a3dc5cc18e9906abcb35a5732ff52efcc7"
- json() dict
Get Bitcoin transaction json format.
- Returns
dict – Bitcoin transaction json format.
>>> from swap.providers.bitcoin.transaction import RefundTransaction >>> refund_transaction: RefundTransaction = RefundTransaction(network="testnet") >>> refund_transaction.build_transaction(address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", transaction_hash="a211d21110756b266925fee2fbf2dc81529beef5e410311b38578dc3a076fb31") >>> refund_transaction.json() {"hex": "02000000012c392217483906f902e73c4bc132864de58153772d79268960998162266634be0100000000ffffffff02e80300000000000017a914971894c58d85981c16c2059d422bcde0b156d04487a6290000000000001976a9146bce65e58a50b97989930e9a4ff1ac1a77515ef188ac00000000", "txid": "9cc0524fb8e7b2c5fecaee4eb91d43a3dc5cc18e9906abcb35a5732ff52efcc7", "hash": "9cc0524fb8e7b2c5fecaee4eb91d43a3dc5cc18e9906abcb35a5732ff52efcc7", "size": 117, "vsize": 117, "version": 2, "locktime": 0, "vin": [{"txid": "be346626628199608926792d775381e54d8632c14b3ce702f90639481722392c", "vout": 1, "scriptSig": {"asm": "", "hex": ""}, "sequence": "4294967295"}], "vout": [{"value": "0.00001000", "n": 0, "scriptPubKey": {"asm": "OP_HASH160 971894c58d85981c16c2059d422bcde0b156d044 OP_EQUAL", "hex": "a914971894c58d85981c16c2059d422bcde0b156d04487", "type": "p2sh", "address": "2N729UBGZB3xjsGFRgKivy4bSjkaJGMVSpB"}}, {"value": "0.00010662", "n": 1, "scriptPubKey": {"asm": "OP_DUP OP_HASH160 6bce65e58a50b97989930e9a4ff1ac1a77515ef1 OP_EQUALVERIFY OP_CHECKSIG", "hex": "76a9146bce65e58a50b97989930e9a4ff1ac1a77515ef188ac", "type": "p2pkh", "address": "mqLyrNDjpENRMZAoDpspH7kR9RtgvhWzYE"}}]}
- raw() str
Get Bitcoin main transaction raw.
- Returns
str – Bitcoin transaction raw.
>>> from swap.providers.bitcoin.transaction import WithdrawTransaction >>> withdraw_transaction: WithdrawTransaction = WithdrawTransaction("testnet") >>> withdraw_transaction.build_transaction(address="mgS3WMHp9nvdUPeDJxr5iCF2P5HuFZSR3V", transaction_hash="a211d21110756b266925fee2fbf2dc81529beef5e410311b38578dc3a076fb31") >>> withdraw_transaction.raw() "02000000012c392217483906f902e73c4bc132864de58153772d79268960998162266634be0100000000ffffffff02e80300000000000017a914971894c58d85981c16c2059d422bcde0b156d04487a6290000000000001976a9146bce65e58a50b97989930e9a4ff1ac1a77515ef188ac00000000"
- type() str
Get Bitcoin signature transaction type.
- Returns
str – Bitcoin signature transaction type.
>>> from swap.providers.bitcoin.transaction import WithdrawTransaction >>> withdraw_transaction: WithdrawTransaction = WithdrawTransaction(network="testnet") >>> withdraw_transaction.build_transaction(address="mgS3WMHp9nvdUPeDJxr5iCF2P5HuFZSR3V", transaction_hash="a211d21110756b266925fee2fbf2dc81529beef5e410311b38578dc3a076fb31") >>> withdraw_transaction.type() "bitcoin_withdraw_unsigned"
NormalTransaction
- class swap.providers.bitcoin.transaction.NormalTransaction(network: str = 'mainnet', version: int = 2)
Bitcoin Normal transaction.
- Parameters
network (str) – Bitcoin network, defaults to
mainnet
.version (int) – Bitcoin transaction version, defaults to
2
.
- Returns
NormalTransaction – Bitcoin normal transaction instance.
Warning
Do not forget to build transaction after initialize normal transaction.
- build_transaction(address: str, recipients: dict, unit: str = 'Satoshi', locktime: int = 0) swap.providers.bitcoin.transaction.NormalTransaction
Build Bitcoin normal transaction.
- Parameters
address (str) – Bitcoin sender address.
recipients (dict) – Recipients Bitcoin address and amount.
unit (str) – Bitcoin unit, default to
Satoshi
.locktime (int) – Bitcoin transaction lock time, defaults to
0
.
- Returns
NormalTransaction – Bitcoin normal transaction instance.
>>> from swap.providers.bitcoin.transaction import NormalTransaction >>> normal_transaction: NormalTransaction = NormalTransaction(network="testnet") >>> normal_transaction.build_transaction(address="mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", recipients={"2N6kHwQy6Ph5EdKNgzGrcW2WhGHKGfmP5ae": 10000000}, locktime=0) <swap.providers.bitcoin.transaction.NormalTransaction object at 0x0409DAF0>
- sign(solver: swap.providers.bitcoin.solver.NormalSolver) swap.providers.bitcoin.transaction.NormalTransaction
Sign Bitcoin normal transaction.
- Parameters
solver (bitcoin.solver.NormalSolver) – Bitcoin normal solver.
- Returns
NormalTransaction – Bitcoin normal transaction instance.
>>> from swap.providers.bitcoin.transaction import NormalTransaction >>> from swap.providers.bitcoin.solver import NormalSolver >>> from swap.providers.bitcoin.wallet import Wallet, DEFAULT_PATH >>> sender_wallet: Wallet = Wallet(network="testnet").from_entropy(entropy="72fee73846f2d1a5807dc8c953bf79f1").from_path(path=DEFAULT_PATH) >>> normal_solver: NormalSolver = NormalSolver(xprivate_key=sender_wallet.root_xprivate_key()) >>> normal_transaction: NormalTransaction = NormalTransaction(network="testnet").build_transaction(address=sender_wallet.address(), recipients={"2N6kHwQy6Ph5EdKNgzGrcW2WhGHKGfmP5ae": 10000000}) >>> normal_transaction.sign(solver=normal_solver) <swap.providers.bitcoin.transaction.NormalTransaction object at 0x0409DAF0>
- transaction_raw() str
Get Bitcoin normal transaction raw.
- Returns
str – Bitcoin normal transaction raw.
>>> from swap.providers.bitcoin.transaction import NormalTransaction >>> normal_transaction: NormalTransaction = NormalTransaction(network="testnet") >>> normal_transaction.build_transaction(address="mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", recipients={"2N6kHwQy6Ph5EdKNgzGrcW2WhGHKGfmP5ae": 10000000}) >>> normal_transaction.transaction_raw() "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"
FundTransaction
- class swap.providers.bitcoin.transaction.FundTransaction(network: str = 'mainnet', version: int = 2)
Bitcoin Fund transaction.
- Parameters
network (str) – Bitcoin network, defaults to
mainnet
.version (int) – Bitcoin transaction version, defaults to
2
.
- Returns
FundTransaction – Bitcoin fund transaction instance.
Warning
Do not forget to build transaction after initialize fund transaction.
- build_transaction(address: str, htlc: swap.providers.bitcoin.htlc.HTLC, amount: Optional[Union[int, float]], unit: str = 'Satoshi', locktime: int = 0) swap.providers.bitcoin.transaction.FundTransaction
Build Bitcoin fund transaction.
- Parameters
address (str) – Bitcoin sender address.
htlc (bitcoin.htlc.HTLC) – Bitcoin HTLC instance.
amount (int, float) – Bitcoin amount, default to
None
.unit (str) – Bitcoin unit, default to
Satoshi
.locktime (int) – Bitcoin transaction lock time, defaults to
0
.
- Returns
FundTransaction – Bitcoin fund transaction instance.
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.providers.bitcoin.transaction import FundTransaction >>> from swap.utils import sha256 >>> htlc: HTLC = HTLC(network="testnet") >>> htlc.build_htlc(secret_hash=sha256("Hello Meheret!"), recipient_address="mgS3WMHp9nvdUPeDJxr5iCF2P5HuFZSR3V", sender_address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", endtime=1624687630) >>> fund_transaction: FundTransaction = FundTransaction(network="testnet") >>> fund_transaction.build_transaction(address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", htlc=htlc, amount=0.001, unit="BTC") <swap.providers.bitcoin.transaction.FundTransaction object at 0x0409DAF0>
- sign(solver: swap.providers.bitcoin.solver.FundSolver) swap.providers.bitcoin.transaction.FundTransaction
Sign Bitcoin fund transaction.
- Parameters
solver (bitcoin.solver.FundSolver) – Bitcoin fund solver.
- Returns
FundTransaction – Bitcoin fund transaction instance.
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.providers.bitcoin.transaction import FundTransaction >>> from swap.providers.bitcoin.solver import FundSolver >>> from swap.utils import sha256 >>> htlc: HTLC = HTLC(network="testnet") >>> htlc.build_htlc(secret_hash=sha256("Hello Meheret!"), recipient_address="mgS3WMHp9nvdUPeDJxr5iCF2P5HuFZSR3V", sender_address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", endtime=1624687630) >>> fund_transaction: FundTransaction = FundTransaction(network="testnet") >>> fund_transaction.build_transaction(address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", htlc=htlc, amount=0.001, unit="BTC") >>> fund_solver: FundSolver = FundSolver(xprivate_key="tprv8ZgxMBicQKsPeMHMJAc6uWGYiGqi1MVM2ybmzXL2TAoDpQe85uyDpdT7mv7Nhdu5rTCBEKLZsd9KyP2LQZJzZTvgVQvENArgU8e6DoYBiXf") >>> fund_transaction.sign(solver=fund_solver) <swap.providers.bitcoin.transaction.FundTransaction object at 0x0409DAF0>
- transaction_raw() str
Get Bitcoin fund transaction raw.
- Returns
str – Bitcoin fund transaction raw.
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.providers.bitcoin.transaction import FundTransaction >>> from swap.utils import sha256 >>> htlc: HTLC = HTLC(network="testnet") >>> htlc.build_htlc(secret_hash=sha256("Hello Meheret!"), recipient_address="mgS3WMHp9nvdUPeDJxr5iCF2P5HuFZSR3V", sender_address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", endtime=1624687630) >>> fund_transaction: FundTransaction = FundTransaction(network="testnet") >>> fund_transaction.build_transaction(address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", htlc=htlc, amount=0.001, unit="BTC") >>> fund_transaction.transaction_raw() "eyJmZWUiOiAxMTIyLCAicmF3IjogIjAyMDAwMDAwMDIzMWZiNzZhMGMzOGQ1NzM4MWIzMTEwZTRmNWVlOWI1MjgxZGNmMmZiZTJmZTI1NjkyNjZiNzUxMDExZDIxMWEyMDEwMDAwMDAwMGZmZmZmZmZmMDgwYjgyZWVjMzMyOTk2YTQyMmFlNGYwODBmNzRlNTNmZDJjYTRmMDcwMTFkNDdjNTkwODUzZTFlMzA1ZmUxMTAxMDAwMDAwMDBmZmZmZmZmZjAyYTA4NjAxMDAwMDAwMDAwMDE3YTkxNGM4Yzc3YTliNDNlZTJiZGYxYTA3YzQ4Njk5ODMzZDc2NjhiZjI2NGM4NzMyOWMwZDAwMDAwMDAwMDAxOTc2YTkxNGUwMGZmMmE2NDBiN2NlMmQzMzY4NjA3MzkxNjk0ODdhNTdmODRiMTU4OGFjMDAwMDAwMDAiLCAib3V0cHV0cyI6IFt7InZhbHVlIjogOTQzMzAsICJ0eF9vdXRwdXRfbiI6IDEsICJzY3JpcHQiOiAiNzZhOTE0ZTAwZmYyYTY0MGI3Y2UyZDMzNjg2MDczOTE2OTQ4N2E1N2Y4NGIxNTg4YWMifSwgeyJ2YWx1ZSI6IDg5ODc0NiwgInR4X291dHB1dF9uIjogMSwgInNjcmlwdCI6ICI3NmE5MTRlMDBmZjJhNjQwYjdjZTJkMzM2ODYwNzM5MTY5NDg3YTU3Zjg0YjE1ODhhYyJ9XSwgIm5ldHdvcmsiOiAidGVzdG5ldCIsICJ0eXBlIjogImJpdGNvaW5fZnVuZF91bnNpZ25lZCJ9"
WithdrawTransaction
- class swap.providers.bitcoin.transaction.WithdrawTransaction(network: str = 'mainnet', version: int = 2)
Bitcoin Withdraw transaction.
- Parameters
network (str) – Bitcoin network, defaults to
mainnet
.version (int) – Bitcoin transaction version, defaults to
2
.
- Returns
WithdrawTransaction – Bitcoin withdraw transaction instance.
Warning
Do not forget to build transaction after initialize withdraw transaction.
- build_transaction(address: str, transaction_hash: str, locktime: int = 0) swap.providers.bitcoin.transaction.WithdrawTransaction
Build Bitcoin withdraw transaction.
- Parameters
address (str) – Bitcoin recipient address.
transaction_hash (str) – Bitcoin funded transaction hash/id.
locktime (int) – Bitcoin transaction lock time, defaults to
0
.
- Returns
WithdrawTransaction – Bitcoin withdraw transaction instance.
>>> from swap.providers.bitcoin.transaction import WithdrawTransaction >>> withdraw_transaction: WithdrawTransaction = WithdrawTransaction("testnet") >>> withdraw_transaction.build_transaction(address="mgS3WMHp9nvdUPeDJxr5iCF2P5HuFZSR3V", transaction_hash="a211d21110756b266925fee2fbf2dc81529beef5e410311b38578dc3a076fb31") <swap.providers.bitcoin.transaction.WithdrawTransaction object at 0x0409DAF0>
- sign(solver: swap.providers.bitcoin.solver.WithdrawSolver) swap.providers.bitcoin.transaction.WithdrawTransaction
Sign Bitcoin withdraw transaction.
- Parameters
solver (bitcoin.solver.WithdrawSolver) – Bitcoin withdraw solver.
- Returns
WithdrawTransaction – Bitcoin withdraw transaction instance.
>>> from swap.providers.bitcoin.transaction import WithdrawTransaction >>> from swap.providers.bitcoin.solver import WithdrawSolver >>> withdraw_transaction: WithdrawTransaction = WithdrawTransaction("testnet") >>> withdraw_transaction.build_transaction(address="mgS3WMHp9nvdUPeDJxr5iCF2P5HuFZSR3V", transaction_hash="a211d21110756b266925fee2fbf2dc81529beef5e410311b38578dc3a076fb31") >>> bytecode: str = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140a0a6590e6ba4b48118d21b86812615219ece76b88ac67040ec4d660b17576a914e00ff2a640b7ce2d336860739169487a57f84b1588ac68" >>> withdraw_solver: WithdrawSolver = WithdrawSolver(xprivate_key="tprv8ZgxMBicQKsPf949JcuVFLXPJ5m4VKe33gVX3FYVZYVHr2dChU8K66aEQcPdHpUgACq5GQu81Z4e3QN1vxCrV4pxcUcXHoRTamXBRaPdJhW", secret_key="Hello Meheret!", bytecode=bytecode) >>> withdraw_transaction.sign(solver=withdraw_solver) <swap.providers.bitcoin.transaction.WithdrawTransaction object at 0x0409DAF0>
- transaction_raw() str
Get Bitcoin withdraw transaction raw.
- Returns
str – Bitcoin withdraw transaction raw.
>>> from swap.providers.bitcoin.transaction import WithdrawTransaction >>> withdraw_transaction: WithdrawTransaction = WithdrawTransaction("testnet") >>> withdraw_transaction.build_transaction(address="mgS3WMHp9nvdUPeDJxr5iCF2P5HuFZSR3V", transaction_hash="a211d21110756b266925fee2fbf2dc81529beef5e410311b38578dc3a076fb31") >>> withdraw_transaction.transaction_raw() "eyJmZWUiOiA1NzYsICJyYXciOiAiMDIwMDAwMDAwMTMxZmI3NmEwYzM4ZDU3MzgxYjMxMTBlNGY1ZWU5YjUyODFkY2YyZmJlMmZlMjU2OTI2NmI3NTEwMTFkMjExYTIwMDAwMDAwMDAwZmZmZmZmZmYwMTYwODQwMTAwMDAwMDAwMDAxOTc2YTkxNDBhMGE2NTkwZTZiYTRiNDgxMThkMjFiODY4MTI2MTUyMTllY2U3NmI4OGFjMDAwMDAwMDAiLCAib3V0cHV0cyI6IHsidmFsdWUiOiAxMDAwMDAsICJ0eF9vdXRwdXRfbiI6IDAsICJzY3JpcHQiOiAiYTkxNGM4Yzc3YTliNDNlZTJiZGYxYTA3YzQ4Njk5ODMzZDc2NjhiZjI2NGM4NyJ9LCAibmV0d29yayI6ICJ0ZXN0bmV0IiwgInR5cGUiOiAiYml0Y29pbl93aXRoZHJhd191bnNpZ25lZCJ9"
RefundTransaction
- class swap.providers.bitcoin.transaction.RefundTransaction(network: str = 'mainnet', version: int = 2)
Bitcoin Refund transaction.
- Parameters
network (str) – Bitcoin network, defaults to
mainnet
.version (int) – Bitcoin transaction version, defaults to
2
.
- Returns
RefundTransaction – Bitcoin refund transaction instance.
Warning
Do not forget to build transaction after initialize refund transaction.
- build_transaction(address: str, transaction_hash: str, locktime: int = 0) swap.providers.bitcoin.transaction.RefundTransaction
Build Bitcoin refund transaction.
- Parameters
address (str) – Bitcoin sender address.
transaction_hash (str) – Bitcoin funded transaction hash/id.
locktime (int) – Bitcoin transaction lock time, defaults to
0
.
- Returns
RefundTransaction – Bitcoin refund transaction instance.
>>> from swap.providers.bitcoin.transaction import RefundTransaction >>> refund_transaction: RefundTransaction = RefundTransaction("testnet") >>> refund_transaction.build_transaction(address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", transaction_hash="a211d21110756b266925fee2fbf2dc81529beef5e410311b38578dc3a076fb31") <swap.providers.bitcoin.transaction.RefundTransaction object at 0x0409DAF0>
- sign(solver: swap.providers.bitcoin.solver.RefundSolver) swap.providers.bitcoin.transaction.RefundTransaction
Sign Bitcoin refund transaction.
- Parameters
solver (bitcoin.solver.RefundSolver) – Bitcoin refund solver.
- Returns
RefundTransaction – Bitcoin refund transaction instance.
>>> from swap.providers.bitcoin.transaction import RefundTransaction >>> refund_transaction: RefundTransaction = RefundTransaction("testnet") >>> refund_transaction.build_transaction(address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", transaction_hash="a211d21110756b266925fee2fbf2dc81529beef5e410311b38578dc3a076fb31") >>> bytecode: str = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140a0a6590e6ba4b48118d21b86812615219ece76b88ac67040ec4d660b17576a914e00ff2a640b7ce2d336860739169487a57f84b1588ac68" >>> refund_solver: RefundSolver = RefundSolver(xprivate_key="tprv8ZgxMBicQKsPeMHMJAc6uWGYiGqi1MVM2ybmzXL2TAoDpQe85uyDpdT7mv7Nhdu5rTCBEKLZsd9KyP2LQZJzZTvgVQvENArgU8e6DoYBiXf", bytecode=bytecode, endtime=1624687630) >>> refund_transaction.sign(solver=refund_solver) <swap.providers.bitcoin.transaction.RefundTransaction object at 0x0409DAF0>
- transaction_raw() str
Get Bitcoin refund transaction raw.
- Returns
str – Bitcoin refund transaction raw.
>>> from swap.providers.bitcoin.transaction import RefundTransaction >>> refund_transaction: RefundTransaction = RefundTransaction("testnet") >>> refund_transaction.build_transaction(address="n1wgm6kkzMcNfAtJmes8YhpvtDzdNhDY5a", transaction_hash="a211d21110756b266925fee2fbf2dc81529beef5e410311b38578dc3a076fb31") >>> refund_transaction.transaction_raw() "eyJmZWUiOiA1NzYsICJyYXciOiAiMDIwMDAwMDAwMTMxZmI3NmEwYzM4ZDU3MzgxYjMxMTBlNGY1ZWU5YjUyODFkY2YyZmJlMmZlMjU2OTI2NmI3NTEwMTFkMjExYTIwMDAwMDAwMDAwZmZmZmZmZmYwMTYwODQwMTAwMDAwMDAwMDAxOTc2YTkxNGUwMGZmMmE2NDBiN2NlMmQzMzY4NjA3MzkxNjk0ODdhNTdmODRiMTU4OGFjMDAwMDAwMDAiLCAib3V0cHV0cyI6IHsidmFsdWUiOiAxMDAwMDAsICJ0eF9vdXRwdXRfbiI6IDAsICJzY3JpcHQiOiAiYTkxNGM4Yzc3YTliNDNlZTJiZGYxYTA3YzQ4Njk5ODMzZDc2NjhiZjI2NGM4NyJ9LCAibmV0d29yayI6ICJ0ZXN0bmV0IiwgInR5cGUiOiAiYml0Y29pbl9yZWZ1bmRfdW5zaWduZWQifQ=="