Daemon RPC API Reference
#introductionIntroduction
This is a list of the ryo-daemon-rpc calls, their inputs and outputs, and examples of each. If you need wallet-rpc-calls refer to: Wallet RPC API Reference
JSON RPC Methods
get_block_count
Look up how many blocks are in the longest chain known to the node.
Output
- count unsigned int
Number of blocks in longest chain seen by the node.
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_block_count"
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"count": 191888,
"status": "OK"
}
}
on_get_block_hash
Look up a block's hash by its height.
Input
Output
- block hash string
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "on_get_block_hash",
"params": [
123456
]
}'
{
"id":"0",
"jsonrpc":"2.0",
"result":"b095915253b892d27b65000a6a15208054868d52654af964245c84613904b178"
}
get_block_template
Get a block template on which mining a new block.
Input
- wallet_address string Required
Address of wallet to receive coinbase transactions if block is successfully mined.
- reserve_size unsigned int Required
Reserve size.
Output
- blocktemplate_blob string
Blob on which to try to mine a new block.
- blockhashing_blob string
Blob on which to try to find a valid nonce.
- difficulty unsigned int
Difficulty of next block.
- expected_reward unsigned int
Coinbase reward expected to be received if block is successfully mined.
- height unsigned int
Height on which to mine.
- prev_hash string
Hash of the most recent block on which to mine the next block.
- reserved_offset unsigned int
Reserved offset.
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted
(true),
or when the daemon is fully synced(false).
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_block_template",
"params": {
"wallet_address": "RYoLshX6LjnhVXCsuejzkx4ayP52N1YcWinMtUqXVbE85uD7HYwwfKH15KAXiYEwo9SCA96Yfg3gVT6CQBqyp1w9cL1zVLjCUXf",
"reserve_size": 60
}
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"blockhashing_blob": "05058fabf1df0506d7f32353343fc8e690364f411845d37d7c5fbe481b719234c9987211a2a7b70000000034a19e43a430a390456c1719870416e651ddac28965a7d6e70f0776e0f08b9e205",
"blocktemplate_blob": "05058fabf1df0506d7f32353343fc8e690364f411845d37d7c5fbe481b719234c9987211a2a7b70000000003f59e0c01ffb99e0c01c096df9bb501021d0da234cedf350494d1d4e6c5ab36ecefe397b94a11b9d13c0bd6f0b64a3aa35f01ddc6f501df42144e4ecd470cc720edd85f85bcf9bc1851955c4fcd3227283b93023c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000422505392e7c6efe9090bc3eb253e98e7f42c0e4af7ddc81c9cf933c054546feb2d7514fcef282ee6019b7217d67d1ef86270e6d376b4e08762f7baa6bf2cdf8e0b7a92a2315faf46f40c0c7d9a0e5716a58a41fc35f55235471e3ac6268716883c0018a44bf15e0554bf8c57030622e0a79b05921ff5836b0409df7e9615e0cf",
"difficulty": 963430375,
"expected_reward": 48645000000,
"height": 200505,
"prev_hash": "06d7f32353343fc8e690364f411845d37d7c5fbe481b719234c9987211a2a7b7",
"reserved_offset": 128,
"status": "OK",
"untrusted": false
}
}
submit_block
Submit a mined block to the network.
Input
- Block blob data array of strings Required
list of block blobs which have been mined. See get_block_template to get a blob on which to mine.
Output
- status string
Block submit status.
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "submit_block",
"params": [
"5ccf1512a68a56799ce2b80d5672ed8a2ee06ac3d1b229c0aa990f2a7b743257"
]
}'
{
"error": {
"code": -6,
"message": "Wrong block blob"
},
"id": "0",
"jsonrpc": "2.0"
}
get_last_block_header
Block header information for the most recent block is easily retrieved with this method. No inputs are needed.
Output
- block_header
A structure containing block header information
- block_size unsigned int
The block size in bytes.
- depth unsigned int
The number of blocks succeeding this block on the blockchain. A larger number means an older block.
- difficulty unsigned int
The strength of the Ryo network based on mining power.
- hash unsigned int
The hash of this block.
- height unsigned int
The number of blocks preceding this block on the blockchain.
- major_version unsigned int
The major version of the ryo protocol at this block height.
- minor_version unsigned int
The minor version of the ryo protocol at this block height.
- nonce unsigned int
a cryptographic random one-time number used in mining a Ryo block.
- num_txes unsigned int
Number of transactions in the block, not counting the coinbase tx.
- orphan_status boolean
Usually
false.
Iftrue,
this block is not part of the longest chain. - prev_hash string
The hash of the block immediately preceding this block in the chain.
- reward unsigned int
The amount of new atomic units generated in this block and rewarded to the miner. Note: 1 Ryo = 1e12 atomic units.
- timestamp unsigned int
The unix time at which the block was recorded into the blockchain.
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted
(true),
or when the daemon is fully synced(false).
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_last_block_header"
}'
{
"id":"0",
"jsonrpc":"2.0",
"result":{
"block_header":{
"block_size":99,
"depth":0,
"difficulty":781134457,
"hash":"6f27aac753bbe51030847319c64e0b0f1d4ced4518613422a85159822fb7c167",
"height":191929,
"major_version":5,
"minor_version":5,
"nonce":3252007811,
"num_txes":0,
"orphan_status":false,
"prev_hash":"fe1020f3c74ea7b852176334859d80e87e5b7cb17926976d05f10a85217a8b3b",
"reward":41970000000,
"timestamp":1541163146
},
"status":"OK",
"untrusted":false
}
}
get_block_header_by_hash
Block header information can be retrieved using either a block's hash or height. This method includes a block's hash as an input parameter to retrieve basic information about the block.
Input
- hash string Required
The block's sha256 hash.
Output
- block_header
A structure containing block header information. See get_last_block_header.
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted
(true),
or when the daemon is fully synced(false).
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_block_header_by_hash",
"params": {
"hash": "5e47a6519f68ccfa6dbd834311ecab9a5231a02ef8bd0c3cc8b42735115f3555"
}
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"block_header": {
"block_size": 99,
"depth": 9,
"difficulty": 749971010,
"hash": "5e47a6519f68ccfa6dbd834311ecab9a5231a02ef8bd0c3cc8b42735115f3555",
"height": 191922,
"major_version": 5,
"minor_version": 5,
"nonce": 1006992908,
"num_txes": 0,
"orphan_status": false,
"prev_hash": "f2bb09a007e4b2f3afbfa31a1fb78a750a4873c7b1d2abf43a610f0a00ac6114",
"reward": 41970000000,
"timestamp": 1541161657
},
"status": "OK",
"untrusted": false
}
}
get_block_header_by_height
Similar to get_block_header_by_hash above, this method includes a block's height as an input parameter to retrieve basic information about the block.
Input
- height unsigned int Required
The block's height.
Output
- block_header
A structure containing block header information. See get_last_block_header.
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted
(true),
or when the daemon is fully synced(false).
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_block_headerby_height",
"params": {
"height": 1345
}
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"block_header": {
"block_size": 99,
"depth": 9,
"difficulty": 749971010,
"hash": "5e47a6519f68ccfa6dbd834311ecab9a5231a02ef8bd0c3cc8b42735115f3555",
"height": 191922,
"major_version": 5,
"minor_version": 5,
"nonce": 1006992908,
"num_txes": 0,
"orphan_status": false,
"prev_hash": "f2bb09a007e4b2f3afbfa31a1fb78a750a4873c7b1d2abf43a610f0a00ac6114",
"reward": 41970000000,
"timestamp": 1541161657
},
"status": "OK",
"untrusted": false
}
}
get_block_headers_range
Similar to get_block_header_by_height above, but for a range of blocks. This method includes a starting block height and an ending block height as parameters to retrieve basic information about the range of blocks.
Input
- start_height unsigned int Required
The starting block's height.
- end_height unsigned int Required
The ending block's height.
Output
- headers
array of
block_header
(a structure containing block header information. See get_last_block_header ). - status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted
(true),
or when the daemon is fully synced(false).
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_block_headers_range",
"params": {
"start_height": 123,
"end_height": 125
}
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"headers": [
{
"block_size": 80,
"depth": 191809,
"difficulty": 16359,
"hash": "5f2c43760f54e7c4ac529e731631b21e9099a705851309742a61919a1b47effb",
"height": 123,
"major_version": 1,
"minor_version": 1,
"nonce": 2054154951,
"num_txes": 0,
"orphan_status": false,
"prev_hash": "3a959d549804eb325432b06d0d7f5964834bd2c9cea33a4329b4ac08f4ee6304",
"reward": 32000000000,
"timestamp": 1492507280
},
{
"block_size": 90,
"depth": 191808,
"difficulty": 16525,
"hash": "4aca8ef763241978e3fdc0af6fb55322ac28fa4a4401c2c396d9259bb7d0b2fc",
"height": 124,
"major_version": 1,
"minor_version": 1,
"nonce": 2266,
"num_txes": 0,
"orphan_status": false,
"prev_hash": "5f2c43760f54e7c4ac529e731631b21e9099a705851309742a61919a1b47effb",
"reward": 32000000000,
"timestamp": 1492507283
},
{
"block_size": 90,
"depth": 191807,
"difficulty": 16713,
"hash": "0d6d59bfb02a5528d1799734c3eb0ab2158b4f612f40184dd00ebc423f81e5b0",
"height": 125,
"major_version": 1,
"minor_version": 1,
"nonce": 443,
"num_txes": 0,
"orphan_status": false,
"prev_hash": "4aca8ef763241978e3fdc0af6fb55322ac28fa4a4401c2c396d9259bb7d0b2fc",
"reward": 32000000000,
"timestamp": 1492507339
}
],
"status": "OK",
"untrusted": false
}
}
get_block
Full block information can be retrieved by either block height or hash, like with the above block header calls. For full block information, both lookups use the same method, but with different input parameters.
Input
- height unsigned int Required
The block's height.
- hash string Required
The block's hash.
Output
- blob string
Hexadecimal blob of block information.
- block_header string
A structure containing block header information. See get_last_block_header.
- json json string
JSON formatted block details:
- major_version
Same as in block header.
- minor_version
Same as in block header.
- timestamp
Same as in block header.
- prev_id
Same as
prev_hash
in block header. - nonce
Same as in block header.
- miner_tx
Miner transaction information
- version
Transaction version number.
- unlock_time
The block height when the coinbase transaction becomes spendable.
- vin
List of transaction inputs:
- gen
Miner txs are coinbase txs, or "gen".
- height
This block height, a.k.a. when the coinbase is generated.
- vout
List of transaction outputs. Each output contains:
- amount
The amount of the output, in atomic units.
- target
structure with the following parameters:
- key string
- extra
Usually called the "transaction ID" but can be used to include any random 32 byte/64 character hex string.
- signatures
Contain signatures of tx signers. Coinbased txs do not have signatures.
- tx_hashes
List of hashes of non-coinbase transactions in the block. If there are no other transactions, this will be an empty list.
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted
(true),
or when the daemon is fully synced(false).
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_block",
"params": {
"height": 345
}
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"block_header": {
"block_size": 99,
"depth": 0,
"difficulty": 781134457,
"hash": "6f27aac753bbe51030847319c64e0b0f1d4ced4518613422a85159822fb7c167",
"height": 191929,
"major_version": 5,
"minor_version": 5,
"nonce": 3252007811,
"num_txes": 0,
"orphan_status": false,
"prev_hash": "fe1020f3c74ea7b852176334859d80e87e5b7cb17926976d05f10a85217a8b3b",
"reward": 41970000000,
"timestamp": 1541163146
},
"status": "OK",
"untrusted": false
}
}
get_connections
Retrieve information about incoming and outgoing connections to your node.
Output
- connections
List of all connections and their info:
- address string
The peer's address, actually IPv4 & port
- avg_download unsigned int
Average bytes of data downloaded by node.
- avg_upload unsigned int
Average bytes of data uploaded by node.
- connection_id string
The connection ID
- current_download unsigned int
Current bytes downloaded by node.
- current_upload unsigned int
Current bytes uploaded by node.
- height unsigned int
The peer height
- host string
The peer host
- incoming boolean
Is the node getting information from your node?
- ip string
The node's IP address.
- live_time unsigned int
- local_ip boolean
- localhost boolean
- peer_id string
The node's ID on the network
- port string
The port that the node is using to connect to the network.
- recv_count unsigned int
- recv_idle_time unsigned int
- send_count unsigned int
- send_idle_time unsigned int
- state string
- support_flags unsigned int
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_connections"
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"connections": [
{
"address": "5.2.65.14:50474",
"avg_download": 0,
"avg_upload": 0,
"connection_id": "45d2d386075db6402d4d6025106ab4bc",
"current_download": 2,
"current_upload": 0,
"height": 191935,
"host": "5.2.65.14",
"incoming": true,
"ip": "5.2.65.14",
"live_time": 2644028,
"local_ip": false,
"localhost": false,
"peer_id": "2bc73e240c424687",
"port": "50474",
"recv_count": 1167493168,
"recv_idle_time": 7,
"send_count": 987026736,
"send_idle_time": 7,
"state": "state_normal",
"support_flags": 1
}
],
"status": "OK"
}
}
get_info
Retrieve general information about the state of your node and the network. See other RPC Methods /get_info (not JSON)
Output
- alt_blocks_count unsigned int
Number of alternative blocks to main chain.
- block_size_limit unsigned int
Maximum allowed block size
- block_size_median unsigned int
Median block size of latest 100 blocks
- bootstrap_daemon_address string
bootstrap node to give immediate usability to wallets while syncing by proxying RPC to it. (Note: the replies may be untrustworthy).
- cumulative_difficulty unsigned int
Cumulative difficulty of all blocks in the blockchain.
- difficulty unsigned int
Network difficulty (analogous to the strength of the network)
- free_space unsigned int
Available disk space on the node.
- grey_peerlist_size unsigned int
Grey Peerlist Size
- height unsigned int
Current length of longest chain known to daemon.
- height_without_bootstrap unsigned int
Current length of the local chain of the daemon.
- incoming_connections_count unsigned int
Number of peers connected to and pulling from your node.
- mainnet boolean
States if the node is on the mainnet (
true
) or not (false
). - offline boolean
States if the node is offline (
true
) or online (false
). - outgoing_connections_count unsigned int
Number of peers that you are connected to and getting information from.
- rpc_connections_count unsigned int
Number of RPC client connected to the daemon (Including this RPC request).
- stagenet boolean
States if the node is on the stagenet (
true
) or not (false
). - start_time unsigned int
Start time of the daemon, as UNIX time.
- status string
General RPC error code. "OK" means everything looks good.
- target unsigned int
Current target for next proof of work.
- target_height unsigned int
The height of the next block in the chain.
- testnet boolean
States if the node is on the testnet (
true
) or not (false
). - top_block_hash string
Hash of the highest block in the chain.
- tx_count unsigned int
Total number of non-coinbase transaction in the chain.
- tx_pool_size unsigned int
Number of transactions that have been broadcast but not included in a block.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (
true
), or when the daemon is fully synced (false
). - was_bootstrap_ever_used boolean
States if a bootstrap node has ever been used since the daemon started.
- white_peerlist_size unsigned int
White Peerlist Size
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_info"
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"alt_blocks_count": 9,
"block_size_limit": 491520,
"block_size_median": 14675,
"bootstrap_daemon_address": "",
"cumulative_difficulty": 311189958911269,
"difficulty": 861184095,
"free_space": 7467184128,
"grey_peerlist_size": 636,
"height": 192009,
"height_without_bootstrap": 192009,
"incoming_connections_count": 30,
"is_ready": true,
"mainnet": true,
"offline": false,
"outgoing_connections_count": 8,
"rpc_connections_count": 2,
"stagenet": false,
"start_time": 1538516750,
"status": "OK",
"target": 240,
"target_height": 191791,
"testnet": false,
"top_block_hash": "75c63c6231a9cf01ef4ac13497c4618d9de7cdb763deac6ad996cdd964814120",
"tx_count": 510900,
"tx_pool_size": 5,
"untrusted": false,
"was_bootstrap_ever_used": false,
"white_peerlist_size": 451
}
}
hard_fork_info
Look up information regarding hard fork voting and readiness.
Output
- earliest_height unsigned int
Block height at which hard fork would be enabled if voted in.
- enabled boolean
Tells if hard fork is enforced.
- state unsigned int
Current hard fork state: 0 (There is likely a hard fork), 1 (An update is needed to fork properly), or 2 (Everything looks good).
- status string
General RPC error code. "OK" means everything looks good.
- threshold unsigned int
Minimum percent of votes to trigger hard fork. Default is 80.
- version unsigned int
The major block version for the fork.
- votes unsigned int
Number of votes towards hard fork.
- voting unsigned int
Hard fork voting status.
- window unsigned int
Number of blocks over which current votes are cast. Default is 10080 blocks.
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "hard_fork_info"
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"earliest_height": 161500,
"enabled": true,
"state": 2,
"status": "OK",
"threshold": 0,
"untrusted": false,
"version": 5,
"votes": 10080,
"voting": 5,
"window": 10080
}
}
set_bans
Ban another node by IP.
Input
- bans Required
A list of nodes to ban:
- host string Required
Host to ban (IP in A.B.C.D form - will support I2P address in the future).
- ip unsigned int Required
IP address to ban, in Int format.
- ban boolean Required
Set
true
to ban. - seconds unsigned int Required
Number of seconds to ban node.
Output
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "set_bans",
"params": {
"bans": [
{
"host": "192.168.1.51",
"ban": true,
"seconds": 30
}
]
}
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"status": "OK"
}
}
get_bans
Get list of banned IPs.
Output
- bans
A list of nodes to ban:
- host string
Banned host (IP in A.B.C.D form).
- ip unsigned int
Banned IP address, in Int format.
- seconds unsigned int
Local Unix time that IP is banned until.
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_bans"
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"status": "OK"
}
}
or
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"bans": [
{
"host": "188.166.98.76",
"ip": 1281533628,
"seconds": 26450
},
{
"host": "206.81.3.50",
"ip": 839078350,
"seconds": 30467
}
],
"status": "OK"
}
}
flush_txpool
Flush tx ids from transaction pool
Output
- txids array of strings
Optional, list of transactions IDs to flush from pool (all tx ids flushed if empty).
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "flush_txpool",
"params": {
"txids": [
"d0f43e0e98b29c85fe918fb91319d34fed9d676bae2eeafa4447121697d7b69f",
""
]
}
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"status": "OK"
}
}
get_output_histogram
Get a histogram of output amounts. For all amounts (possibly filtered by parameters), gives the number of outputs on the chain for that amount. RingCT outputs counts as 0 amount.
Input
- amounts list of unsigned int Required
- min_count unsigned int Required
- max_count unsigned int Required
- unlocked unsigned int Required
- recent_cutoff unsigned int Required
Output
- histogram
list of histogram entries, in the following structure:
- amount unsigned int
Output amount in atomic units
- total_instances unsigned int
Output amount in atomic units
- unlocked_instances unsigned int
Output amount in atomic units
- recent_instances unsigned int
Output amount in atomic units
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted
(true),
or when the daemon is fully synced(false).
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_output_historam",
"params": {
"amounts": [
2000000000
]
}
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"histogram": [
{
"amount": 2000000000,
"recent_instances": 0,
"total_instances": 0,
"unlocked_instances": 0
}
],
"status": "OK",
"untrusted": false
}
}
get_coinbase_tx_sum
Get the coinbase ammount and the fees ammount for n last blocks starting at particular height.
Input
- height unsigned int Required
Block height from which getting the amounts
- count unsigned int Required
number of blocks to include in the sum
Output
- emission_amount unsigned int
amount of coinbase reward in atomic units
- fee_amount unsigned int
amount of fees in atomic units
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_coinbase_tx_um",
"params": {
"height": 6000,
"count": 100
}
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"emission_amount": 3200000000000,
"fee_amount": 217153700,
"status": "OK"
}
}
get_version
Give the node current version
Output
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (true), or when the daemon is fully synced (false).
- version unsigned int
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_version"
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"status": "OK",
"untrusted": false,
"version": 65555
}
}
get_alternate_chains
Display alternative chains seen by the node.
Output
- chains string
array of chains, the following structure:
- block_hash string
the block hash of the first diverging block of this alternative chain.
- difficulty unsigned int
the cumulative difficulty of all blocks in the alternative chain.
- height unsigned int
the block height of the first diverging block of this alternative chain.
- length unsigned int
the length in blocks of this alternative chain, after divergence.
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_alternate_chains"
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"chains": [
{
"block_hash": "7de4684a0c1ed90a257865c6a2cebb9ad896545fd4dcd8121088807038f3df42",
"difficulty": 308653395254775,
"height": 188941,
"length": 1
},
{
"block_hash": "f94f80f930a2a6844b49eed3e4f3a53ea55e8b02695be6f7360c344c419e821f",
"difficulty": 303628545431417,
"height": 182124,
"length": 1
}
],
"status": "OK"
}
}
relay_tx
Relay a list of transaction IDs.
Input
- txids array of string Required
list of transaction IDs to relay
Output
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "relay_tx",
"params": {
"txids": [
"f5612f356cd3b982f64c74831b52d0b91cb331151c01429e9320d468efa9ec82"
]
}
}'
{
"error": {
"code": -32700,
"message": "Parse error"
},
"id": 0,
"jsonrpc": ""
}
or
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"status": "OK"
}
}
sync_info
Get synchronisation informations
Output
- height unsigned int
- peers array of peer structure
defined as follows
- info
structure of connection info, as defined in get_connections
- spans array of span structure
defined as follows (optional, absent if node is fully synced):
- connection_id string
Id of connection
- nblocks unsigned int
number of blocks in that span
- rate unsigned int
connection rate
- remote_address string
peer address the node is downloading (or has downloaded) than span from
- size unsigned int
total number of bytes in that span's blocks (including txes)
- speed unsigned int
connection speed
- start_block_height unsigned int
block height of the first block in that span
- status string
General RPC error code. "OK" means everything looks good.
- target_height unsigned int
target height the node is syncing from (optional, absent if node is fully synced)
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_output_distribution",
"params": {
"amounts": [
62878000
],
"from_height": 12078
}
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"distributions": [
{
"amount": 62878000,
"base": 0,
"distribution": "",
"start_height": 12078
}
],
"status": "OK"
}
}
get_txpool_backlog
Get all transaction pool backlog
Output
- backlog
array of structures tx_backlog_entry (in binary form):
- blob_size unsigned int (in binary form)
- fee unsigned int (in binary form)
- time_in_pool unsigned int (in binary form)
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted
(true),
or when the daemon is fully synced(false).
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_txpool_backlog"
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"backlog": "5`â–’â–’â–’â–’â–’â–’â–’â–’â–’75`â–’â–’
â–’â–’â–’â–’â–’â–’â–’5`â–’â–’â–’â–’â–’â–’â–’â–’â–’45`â–’â–’â–’â–’â–’â–’â–’â–’â–’45`â–’â–’â–’â–’â–’â–’â–’â–’â–’",
"status": "OK",
"untrusted": false
}
}
get_output_distribution
Input
- amounts array of unsigned int Required
amounts to look for
- cumulative boolean
(optional, default is false) States if the result should be cumulative (true) or not (false)
- from_height unsigned int
(optional, default is 0) starting height to check from
- to_height unsigned int
(optional, default is 0) ending height to check up to
Output
- distributions
array of structure distribution as follows:
- amount
unsigned int
- base
unsigned int
- distribution
array of unsigned int
- start_height
unsigned int
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/json_rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "0",
"method": "get_txpool_backlog"
}'
{
"id": "0",
"jsonrpc": "2.0",
"result": {
"backlog": "5`â–’â–’â–’â–’â–’â–’â–’â–’â–’75`â–’â–’
â–’â–’â–’â–’â–’â–’â–’5`â–’â–’â–’â–’â–’â–’â–’â–’â–’45`â–’â–’â–’â–’â–’â–’â–’â–’â–’45`â–’â–’â–’â–’â–’â–’â–’â–’â–’",
"status": "OK",
"untrusted": false
}
}
Other Daemon RPC Calls
Not all daemon RPC calls use the JSON_RPC interface. This section gives examples of these
calls.
The data structure for these calls is different than the JSON RPC calls. Whereas the JSON RPC
methods were called using the /json_rpc
extension and specifying a method, these methods are called at their own extensions. For example:
Note: It is recommended to use JSON RPC where such alternatives exist, rather than the following
methods. For example, the recommended way to get a node's height is via the JSON RPC methods
get_info or get_last_block_header, rather than getheight below.
For calls that end with .bin , the data is exchanged in the form of binary, serialized objects, as defined in the Core RPC
Server.
/get_height
Get the node's current height.
Output
- height unsigned int
Current length of longest chain known to daemon.
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (true), or when the daemon is fully synced (false).
curl -X POST http://127.0.0.1:12211/get_height \
-H "Content-Type: application/json"
{
"height": 192251,
"status": "OK",
"untrusted": false
}
/get_blocks.bin
Get all blocks info. Binary request.
Input
- block_ids
binary array of hashes; first 10 blocks id goes sequential, next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 and so on, and the last one is always genesis block
- start_height unsigned int
- prune boolean
Output
- blocks
array of block complete entries
- current_height unsigned int
- output_indices
structure as follows
- indices
array of tx output indices, structure as follows:
- indices array of unsigned int
- start_height unsigned int
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (true), or when the daemon is fully synced (false).
/get_blocks_by_height.bin
Get blocks by height. Binary request.
Input
- heights array of unsigned int
list of block heights
Output
- blocks
array of block complete entries
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (true), or when the daemon is fully synced (false).
/get_hashes.bin
Get hashes. Binary request.
Input
- block_ids binary array of hashes
first 10 blocks id goes sequential, next goes in pow(2,n) offset, like 2, 4, 8, 16, 32, 64 and so on, and the last one is always genesis block
- start_height unsigned int
Output
- current_height unsigned int
- m_block_ids binary array of hashes
see block_ids above.
- start_height unsigned int
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (true), or when the daemon is fully synced (false).
/get_o_indexes.bin
Get global outputs of transactions. Binary request.
Input
- txid
binary txid
Output
- o_indexes array of unsigned int
List of output indexes
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (true), or when the daemon is fully synced (false).
/get_random_outs.bin
Get a list of random outputs for a specific list of amounts. Binary request.
Input
- amounts array of unsigned int
amounts to get random outputs for
- outs_count unsigned int
Number of output to get
Output
- outs
array of structure
- amount unsigned int
- outs
array of structure out_entry as follows:
- global_amount_index unsigned int
- public key
public key
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (true), or when the daemon is fully synced (false).
/get_outs.bin
Get outputs. Binary request.
Input
- outputs
array of structure get_outputs_out as follows
- amount unsigned int
- index unsigned int
Output
- outs
array of structure outkey as follows:
- amount unsigned int
- height unsigned int
block height of the output
- key
the public key of the output
- mask
- txid
transaction id
- unlocked boolean
States if output is locked
(false)
or not(true)
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (true), or when the daemon is fully synced (false).
/get_outs.bin
Get outputs. Binary request.
Input
- outputs
array of structure get_outputs_out as follows
- amount unsigned int
- index unsigned int
Output
- outs
array of structure outkey as follows:
- amount unsigned int
- height unsigned int
block height of the output
- key
the public key of the output
- mask
- txid
transaction id
- unlocked boolean
States if output is locked
(false)
or not(true)
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (true), or when the daemon is fully synced (false).
/get_random_rctouts.bin
Get random RingCT outputs. Binary request.
Input
- outs_count unsigned int
amount of RingCT output to get
Output
- outs
array of structure out_entry as follows:
- amount unsigned int
- commitment
RingCT Key
- global_amount_index unsigned int
- out_key
public key
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (
true
), or when the daemon is fully synced (false
).
/get_transactions
Look up one or more transactions by hash.
Input
- txs_hashes string list Required
List of transaction hashes to look up.
- decode_as_json boolean
Optional (
false
by default). If settrue
, the returned transaction information will be decoded rather than binary. - prune boolean
Optional (
false
by default).
Output
- missed_tx array of strings
Optional - returned if not empty. Transaction hashes that could not be found.
- status
General RPC error code. "OK" means everything looks good.
- txs
array of structure entry as follows:
- as_hex string
Full transaction information as a hex string.
- as_json json string
List of transaction info:
- version
Transaction version
- unlock_time
If not 0, this tells when a transaction output is spendable.
- vin
List of inputs into transaction:
- key
The public key of the previous output spent in this transaction.
- amount
The amount of the input, in atomic units.
- key_offsets
A list of integer offets to the input.
- k_image
The key image for the given input
- vout
List of outputs from transaction:
- amount
Amount of transaction output, in atomic units.
- target
Output destination information:
- key
The stealth public key of the receiver. Whoever owns the private key associated with this key controls this transaction output.
- extra
Usually called the "payment ID" but can be used to include any random 32 bytes.
- signatures
List of signatures used in ring signature to hide the true origin of the transaction.
- block_height unsigned int
block height including the transaction
- block_timestamp unsigned int
Unix time at which the block has been added to the blockchain
- double_spend_seen boolean
States if the transaction is a double-spend (
true
) or not (false
) - in_pool boolean
States if the transaction is in pool (
true
) or included in a block (false
) - output_indices array of unsigned int
transaction indexes
- tx_hash string
transaction hash
- txs_as_hex string
Full transaction information as a hex string (old compatibility parameter)
- txs_as_json json string
(Optional - returned if set in inputs. Old compatibility parameter) List of transaction as in as_json above:
curl -X POST http://127.0.0.1:12211/get_transactions \
-H "Content-Type: application/json" \
-d '{
"txs_hashes": [
"b049e3f468f3421e4cfe6feab4b69b27a26203b1370470da7103b340caa23a1e"
]
}'
{
"status": "OK",
"txs": [{
"as_hex": "03000502000d9cfe4df0fa1ac7ed08c6f101c611c931df2fb414d80aed02f1037e15f7b3aa78fe29e26ac20ee62dca29eec2368afaed9467badb1a4f03f3ccc6470a02000deb8f28ab9e36eedb06b4e907d121eca201859401979d05d6028e029001767852ca72865af790144aa47d29844d47696b3a5233e783e7aecd9a9e4a9ecacd0102000db68112af9512deff25ab3d8be50ed6bd02a6bf11d9d106d918874d90030b214b2463f9eac5b410b1e3207df7ddaf77dd52962b4afbb40a71a79ed29a285c6802000da4d055f3870fcf9904f79906f90fc7ea01bddb038108b803d501c4011cad0214621cfd62916fc6e713a21e3dc39e6b85968a7c9dccb3b3089dea654fa16df602000db6963bb7bd028aa40ad6af14b39201c3de039d03b536b2c307b0d70b6b79be0110db8ed64be36f2d3d8e5a984811208e8f3e4a81ebd786429d4f4833a42dff97020002e9d6d245254bff7a315f2ac8bce62c9a1b6e9e0de9a457246b2e468f15f45fc30002f0d725c3069af8013cb238b729777b56e90fc41f130c37cc8ee62a743e15fd862c02090175ea3c296ac2437a010860fa1818a8e62063884825532997113c4cc0938bc01f0f0a9f26a6c7c0bfcc02e085b207c3f66ec3ddce80f67e12a9884d0f85686b5725ba733a7d7604ac308d42602c8b079a0b6a5b888c75ad01dbf79c08986bfc928f639c7424dc0eefc9d9fede87e61048d2613619cf3b9215856ba34f880533c839fd57c038db777916cd420f92e6e034146113807df465861a98a664a76f4cd2d4ff397ff8ed24932a71e49afd5ce0fa5301cd60e44a98830444a795d9334208e52cde92fcbf2e1bce1041908c54677dccb3960a5f905a85e09120cb39a0d84bbf65ca6e3473fa1e9c1ebd2d9603e53e65e961bc29d8a7c8335b08827194199e36e0aa23fc2160f04bc4bb81390c905b2fb38461bcef62426267ed58e319cd82f9a517507ff6e1fa5e7e3d06e2028de09d2dec89e18d6440dc8d181f2bbda92afc40b59bf10ae3f7778ae49a060ef77cd8fdee1f39b2f244163810f1323a17b61ca6b1eddf51e2f7c9cbb2751a566047831b93e6c40f60d998f3ff8822856383bb27cac229eb670c6f8e033aeca96a0d1ff3d7d1745f06af37bbd7f23423d90665e5d0244a7fd168fb19149a40047ab98174ca82438df3368a016ecc0e45682b067e0a8e42d8e1390445722d8a049955794fa0e2ba263358e3e408eafa696d2b8c82a56c73c4e7867ff45b976a030c827176c5a7369a46b01554208a9f18cf1270011870b80f9bc50cd5988b7d0b6f1ba4f677252f2a9848d9559a0c5d5e4bf29450ceb22bb67ba26195cfc64f03cf62171807f24bf26ca1fa6cbf8e230995d29afe516cd445eabc13846a3d960255000bebcf438351108f0588f4b00691a86bcaf74a21e5b8e7593579226d450e6fd998a7334d5f725055090f670ff91bc9e31c42b2e8f8a579bab302af38b10f5fd03ceb021fff02794c21d48f57dc1c2a1711304fa2482b7db59ea34eb8000baefd910fc420f8feceeeba01f79a016c3fe1d622a1d18837e1298b489a27590f3ec7d708bd600128e5fbf2ffa207ef15b50a98390c0835d8d37d9037c55e29096ee5a9ccc0c5f6a49d94e439842b34d30aab256a2f3f0d77f855aaabc40fcf056301848811e3f2b13d9a4b5fd3b5a3fbd37a32c857a5a03d7b6a6f43bb40130dd374ccec2f39784e9ec784c713b4bd9b5b3e1f5274060651d6b4caf016545901a91f08f9164dcbe30d24069a4acd1d4f98a576162d92ff35286740528a9fbc0fccbf38a41fcca929661ba2218fd82080b989d6f2375a6ef310310a16c0fdc300c95a62a75f0ce12b582769d69be4b73ebd45dc62328e53b2db7e5c6a1963bb056c4ae9109041618ffab8dd3d796eed7996985b8d848c24315e323db2e5dbc9086c07c5230a1e2bfc2769f36d9ccf8485f577abae6485b72abbbb04331c74ee060b23e7325d7263bc0123353d63feaa2d393d46d905e6b4078abbf0e9aefb470cfe9a30759f28920ca67eea05c50f7d5710ef247ef601ee328b0be7aa85a1990010c8f9ce03cf052559c7b6aa73982481c838f60bb09745fe9e07cce1dba4a60a37cf6d2c2da8f068b280e75910907e3b939e023832448214d72c82cea09268016508ef3b8b447b185389ec1389cba270868efb88cd9d4fcc2350f4756de3d3002edf8bfdb2c1c7f15a31b455f7e834ac82f5c72b32d2115ed29ba45175146d0337d7fe0019c027feb1c42143221f5dd3bd777bbb9dff14adaeb054daa9d26a0e4f3ba3b5147daf94187c844f5ff5138a214e27723d1f17463bfbd6ad99950c0927ea1d171336aa6e3e57e0864d8fc36e631dd2f6045b33029feed037834d640d2d0e2788b4212c309652a4fccc8caef6d36f5e853415f02932f99a7fa1f3300cc74279deae0ef9d22827934363e41f30aca544efb5f25d4136139b2d46ae150519767a29598ecaebb6476bbec4944c5453b88ddd140922f9f01d39f272fade091546d66de47f67de8fdbdc9e20bbe9263eb36d9266c4edd57e9b5a7a9b11b404c827331bda025d13ed2fce1e6b74b38171869bb901db14eb58e5fdbeae36ef0382a880b704371905e5573184c720887864bdbadd26f0a8e95e74f87b3c78bf062dbf106ffd060ab2239fd15071f0b0d16531b604e1aaf2076603ba6b515e740b93a8b6c36cbb35bb8e7e6b4cb9e3e0df69e0170bd4fb290b745c5b6c39098e030ff4c42af350e4e260b619c32dca21c57d7211f7f3cfb87a8208989ec7d132083c90759d8fb4c9a82189953b7461f765087105681347a6834820a90dab3a8508bd4682687e957369cabbd300dfdba1cc6284a7fd714d7ee5fa99de4f69a5690fa8974f6d04f1d57cdd8d826d79f87aef07dfcd78bdfc3a2869da8c45aa05940fcec2cbf2dcbcc0ae44142a53552b63abb2a5ab4b690f419575cc4e8ea084c60b6fd32431e66e48ffdae48a8378a04688a972058f70874d48f85247c4a7eb9c00b67bc3c7cc9cc100659953b40e6234714ccc8adf8b5a0e72b5615ce958099d021292592301bb041b5e2adaac30a298e4c7f0ec65db8667294ac1e951fa2d0007026054d9d6c7458ab8b5ff80dc10e76f2697b3e78bb4390156d9e4de2e300b095af23606c7d963ed316f5468373a82cd18f3a0e5e149afe4d3fb56c5a3397b0e83c8560ab3cf589738bcecf8600a35b7a9bfd4d6fdf26d23eb38637a4911810c42eafe3065f3bdb7cbe2f750c39ee0217a60d6ee8bab7da9829032710af75d0b66b1d893a3dba9d370aa4816d5639e605f50320963d6f43833009e55a27701086ee11ba0c670d5000e918cdd030207f014f477d0694c8023d4087b13aa942204dcf5700daef769361c4cea7959f29fb6d15bb97d0b6a0f65a0ab5cb9cef55a09b16d8369a045f45984b4ac030f9f72610ff704edaab1b865baad0c86260da60700430bba0f5711babe2dbcc6eea7520caed9437199243c74ecaac259e2034c0fd54831a537f56c96eea4e19045220b9973266f554f8c2bc13476c8f9576a8c00f008ac2f6a5b236c609fda9e344e582b873e554dc73b6854375bb19e49e0360045ce38f6c12081e0c820484ec4ce94fd8caa7621593b4416a9a229602aebb5068c238ed2d2acab520dc3f2b5a2566e783ad32fce9f50ed8de3d3b9361e0f6c091cec2231546a6c56072741fb1bea98f4cc3cd657c575ae86d8d5c1123bea790f3a3a78a51ff10571a99fb34f34911b5cbcf8cbaa3912a5da99a74155deb4ca0b32615a15fadcc63cf72e1e4e342d947c86a371ca9572696588091291af80650df6c64b224d9dc11afdf61491bbcc55676a2877b629656d75b094ae37aed29f0a9fde975836da50a0adfe99220609c62c98273ce5380ce00bbc685eadc3f2c1060c1067aa5957bb5215b147161b8109056bf2487206a1e0b894c503dda8ce25032952c6856a5e36da99fe92d069e6509a3c1cb9aa849bb2f440da12f446bbdd08c81816fd146b45edbaf70f199638668cfc2dd9aaa0f92512d0774ee32395050f39c40b3dd1bb39cf054b864c4e8ec393f5446cde37e7c053871876ca64ae930d28dc4d7a135fd7f09e20ccbcfaa73b3c2988c6bc1bcd163d3873f3b07e03e504a77ba36c19067a4a231816429ee5eb2e61169dd09d5ee23e69a9ff3af79c6a0d2366c45c7853507e9a3c018d7aa4cc6c0c38f2983b49edcec6a1432fdc20d207f45e8f44f132a57647031cc3e3bcc512ac9c9ce63d0520c8df4f21822e4a5b0d8a11d850cfde49ff766d07d87981beafca813afc63260a39d5fe577c34944105b238feace2b4985c7599fb0639f4c2bbfb4a05e27776d3cf7d5fa2bb2ef384009930e1c8fb5595eff857aba15cb7561b6fb99bc1de2f4f39577a26e036f1fd0ed25895922ea740cf2ea316e2da226021f6da57a2519d2e6e51507f25d99a5a0c3f3dd3664ba52eeb1b4e5c97ca5dd418971566ffc3482309779b175223b7da0c85b32d2ac73a3af1c3fcc771e388895197717b060a6f448da6b1a6e550363b06c9818d26fb95269d77263dd55ebfac145b7c9062c92b29204ec3829d6a0acd0ef4c3be558d1213c30d15ddc665f5743437e7e9d41ef10929a8ebac88594e330f99f6ea8be7bb53a3da25d63676113bc3841ff42d10ef07aadeebeea4cdcf6104c7059d24b69894a7c9933419fe66545d07e1bab10e939b336f147af20727c201fbaceff8f896af920e49917025e854b4e9d1b6a77cd4bf3913a1b7991aad4605ab53b606632924170f1ebda69fb4f68f00cc577a5549a48effc119206c257a0d912d93bf8b34bbda8323a8ef03195b51955cf6968b0147e00de618077f33c107586bdb97c8d2cf99968586fa2b25de0dbf220b81977234280c70043e2ab2d90f7477e733afae08219b53194ee699c97753791e01cfcfec4f70328cbfe68b160ee8ef059514772526be582f90692ffca917b15c19993ba1bc73c45d235acb0801c1a69be536b8c56885a775a38d9d9b5839ca6b6ebff0bbf5f951af681bbdd3049aa45a3180e9a78cc7a6ac3ff720c6369976969eafa4e9c8ad992b71e0259002fb54cffbe3edae3ddc31f2af5bf9fd3bc329305c29773782ae3c3c480c64ff00737095cc9b15a3f5e2ec81eb8754c938bedbb22695a39df3c28da66e1abfdb0e15df272b2e474d000715328e1aa0003453c23518244ca30b1267896fb27d080cc54d011d59cd8d6e7f33cfb6bdb10a60e2318762be8472d0bc2bb668b58af506f889918ac4e21df31516c7070a36a9991a985e47fdb0f7e265f6ebfb63329101c9eae2a6edcadb6b84ecedf7b970b0b2d565b5bf66280e305dff6e956859760c51c7ca1b903d0725c10ec36f49df419c8cc95b0df66a0af2631fbe2f8680a002602c5c16d5eb0f73994bd5f23aaaca5a8dddf566e904e7207f0a4e725d3e2d0586369f9e5ff9837e7c8f97f96d4e760284974677b68072c160ae5be287a94d06d04b0ea07d7dd042333375ba48eec905e79ff15cf70294432d2ec5603e2ce302d75b445a6bc3abc6bfe57fd5b63ff392814bacd5b8ca51269a1277085846db019dc2451384273e3de5e2b1197aceebc6b9f36bc4cb0c01f4d85e1d13e921040d2c735376cedcc6c96668f6be1edc23b40ae1c46db4bc6da939351e7e9740ff0efe375210fde9bc70e8630a174f604c11ff03ce3f99421023d7c5f16f9e0a0a0268ab562cdf9d75cc24d4d778d60c8d4b9a466c7a2a007590141b2feffb30200ce7ea5abff3dbb6212e26a2d7d5f5e3217d89ecb78f03b0f0f9692c2bfff85d0009a0dd827502e946feeb2d084f6ea239da394215ae6881b4c72f9410e587b905dee627662aa184f5f12d08ae069df8a605fda77f6b87bcc870969691600baf00ff8cf6d0ffd2e7584e85a765c99a1636000a0312e21e392a393f4758774c29076a0ef0585ac8765caa614da326ca708b54b39422f3be6f36905670f07b7e640078a2402c819f80b633a66d0b2319d392042d15d60a90c6a7e64990c1efa9420563c8e5c908cbde8d97b5f8d4b7d82537da3f170234b4279a8839035e84baf50d28e242464e1fbcc44e0cbee634a3547bcf123f6b935c13546848eb734c672b042a5096ce8f018e3f02224b20cad904ccee3a9bfcb59ffe28b1aee3165d7c510b8c49ebae5a4c245bdc8845d2f5e541989a4690819bc87f2ef197d55c041a8306c2aa3f10d52a1a60e25cbc4d5dba7cfebdd23fec4369a0701eeeb1e3d989d70519924ae40272e4b3832a676b965711e734ccec27687c6ee6a06955121a65c602f2814c3519d7f7ea3f441e1661ae140755cf68f04aab6c204b1ffa0eadca6c07cc5888ffd7f709afbc709ee67ae68dfee3674357ddb7679ec5d24b951e49be0071d66a876702e5de41666f4948e4f618699f5677284f80cdab2a2e0a2d07890b9939e9eeb86f4777435caa19c9d488345ebeda58aa94acc85ef54ef342a1a40d44aee4bdd4741f96869b710051359dad05aca087703277565a0ed9258771260f66d1e864df2d428e448c834b82ea0d3905cc20f9601f714a1e0fea9d6a2f4f040e3c071944b950e31fc892c0ae04ee3d64e8c9bd1c8b69b08f39dc8973b6450c6aecf08a8814636e9bfa33376ca62e3a727b11fd7d1ed8d62496239f8eedf0041750182f89e337759a309890a8034dfc3e2e20a868fbb0b7578b24544984a6065937ab14506da8546e042bf8daba5485f3a6e0a6f8c409221b3b8a7dee2e26042536ae45fb30e56e19087abe8c776a5351865d40f6687ccf23e9867fcdfad507ee7d66c87bec3d2b52f8435bbe96ce61f5d52737f15c2179a5c0c0781cce310eaed4261bf24eec9b87d7abaffcc8875d2ea621100e2f62e0b7f0a5193827790d9f699ef69c0105bd9381e072a56033b7f6bb3583898d6f800c27bba371f2fd07d8c65f475887185de80ac9210da22ac5237624219fa5685be0a827beafb7d962b0aba75211f41d61679ba0bbd7f2c848ef07a3cefa8fa6928f0a98ebbf6ef7ccd9d96e978e091d6fc07e4f0ae5bb182b82106509635056ff08a6ebb6e57a240fd16ad986416f3068a83b84f757390759b3af46dc5fea13bda89d593d2abc462a8caed872d2ed2ea5c5f2a6cc9712882194133732d8fcf445c042dad4a7bac13e992e418fcbf94cd8428b763e71b2d38d265280861e709028327b2ba3dea81860f172b77d83bce2793f0ceef40ef1ee8a7b2d8bba4f54bfa194da25fe39cc8e57c1b019836d0a2345b067e057d811de900ff8eab103fbdf06d3eadcd2bc95032ba7d3c9ace1183e4cbe8683cd593cc0e0bc972f0c9f6e78875607f2752ca353f8df576def433c55c6e7811fa85be6a8239be5a5974e40960443c32d517646d90939cf937c48e059cdb5d3630eae04ba1d0d8987bc2939bddec064b4c023a791f372fa7963346bd86fad82d8e841cf4c78bd75aae19b149e5c9b929d29b1fb8e4fef736b7a0ce61aaca35040817156b4cc766d381fd607cbede75d507f558d2d63676eb55e5947c67bc28670283b024d38d3f295baab408ed052f923e548bad17e121bc6f42de162c2bf9255066fa76d7f9e5aa605d725986d540b38e8da1b6d22a244c3a2bc168915cfa07a95054ae5e71ad91adff429ae84dfd52ca42d88281a39794102f25ff8e01f5b0dc84e782f0b9a336088b5efe9d84705b46db465fc13ccf94baa2ab333a2796af1cab7ffe2d83f2531c7b669ea092279470acfa3111212e882aedc5c7e7b5eed6a1ace2ca918c8012e5bf3ad84322e4ec6f81feaa6102749bcca332253664f17d0ca903021730d62ea94139e9de8342d51837a3cebd034412839bd5baeff00862108ec58c015db77e52725101e5f5a957d0b644058097d686bc493ac220940d6020a2afca421190291b6e6f5836bfeea32a895b0af3409ef8bf375a5d06276f2380a321a103d6f377a3e671985ae91b10b8e3fdc6fe0088e85381f03bcf4cf479f16d0019bd5b482d9dbf893812742895bfbb930c04342ee3fcec3326ca127e6b66f562bc5051dd127fe13f5733768ad55909fbe0df7998f17434806b5169a81cfc4620b48e80607ab7871ba790720aa6194fa8bf073a0e0608a9da33eba6d83b94ab22c6eadaabf931e1af7022eb294a9e862537e076f9df7e9dc924adfaabe29f4241457989c1a2d8d6848379259c586ca715bc1c17b8eacd6c9936e0ea2241ee621332ea1ba782639e0f6bc221bc0f4fd824455970aac86d25cc2246c2125c5663fef76a83843cae6e7204eeafc2c88e340b3a5422e921c6de52d8eb6da250b681d1ce071c3b792063c84b55e158bf7f9d93b4179f7670905e6c1fa6323efb81a64e679b27b2112cef48c7282f889fd24ee138d01c8a99efee7e17cf9435d404d1360ed33ddb76aa0cc8e0165c8f26f274fdf9cecb04d6f476b6ce7205f73152178560d048dea2bb4daf5e0cc771a0b3e1b91983357fc320999e509bffd84006716a79cbf049a78874d1f69890e672f9aca9b298813667dd0753914a73274fa9cc421e35a5d1b71d947c4a84ebaa54d8a0d845e199c1cb730f0287033bd3601ff6a2aabafbd53242fe28694f47fac96790c1ac154d186a1e764092fee42c0523e63eff600048afdfdadd9856f1578792d96c61114255527d14a6a79199d807107e7c4381c5ac08207a8a62d6ee30efd9a4ba15303bf44bde70eeb809bcba67b3e92fff28d4af7f06fc41c3cdb74b5bc0668852bc898ee7bb689db0ae706fff3a102cf4672c93990ef079f778b0327fde00ac5a565df1c8b69d2d83ac3173cdb250e77d8d0622af932d576c9daee13c5c2ee6e7af24d2e9123b621de7bef80617b75f0dc9fe93aaf9dd3b94786d63f071dc4288afaa32cb05d2880ed7d15329c41cca14ad77c7f557566d7beef61c37402a78ef07fe83f29560fe28b15f26f32fe6887ebc038682e7d04e999dcac1af2cc604c703b5366c5ab4c8c441e8141d9b8551481a4af602d6035464c7e8020764281b6a190942e7f7e085783ee071b47f66dd77349273954a0a9f44960420b9cee023a7ab4a5acc4fee6dfcd8132ceb4796b5a47d6f546f332642cf5c8b47be7009e489481c9a4c26f2f3d0e03f0e931a42f2d3be3fa3535964a6e3d36c850bcc3a355fdb2c4c169f16fa6b3590e64dc0b9baf38c1d307f85602a2653ec9f89b162083d89f220e7a4a8aac0ff4f28d84d76bf17a6792c7c1bfba97e806ab608477efbe0555f7ff46963d8c9c6a5cfc17e75274aa3fa02ed41996f376e79c2861edd8d6488e7ade5ba81e9b23f21c16f7e455fff2cb6056ec9bb9b7a176d560453acfd0e6fd56023cc9d1f5735fba97428d8af63d051b68f6192464d9e09825fad81845a897be84de1b8fa988d3b1410805c4f7762f37f894cf044e05983009a536a9c41088c6ecada785013ac581aace5369c9febb37394135169c84d3aa9e3da52b8795e4cfd31220bb1bd96ee1323c1065afcf439912d3fa0135706da11e42efeb2a8fcb497e6b9d9d47c1900163e482a0177ee55bd17ac9e5f323de103186b7362eeb536098b1a9d51a230f495f34f739ac393dbb23ef74fb0f839effbd6d0c72feb6a215a3a72941af172f8f68fda0f9831cc1c0a676fb3ae7a7e95f96202de0bb0d917909a81ad8cb8ae733bb4402e8c217130225f029fd0d14a695a0be8c174860edc2535f7db6a953cea4fecef0a4acb8f9915dcbed8d13cb46d7bb859c656a6aa9fc9b67744dd611e2e44c6fe309b690f848d00e9f7c18b9ecfb5f6df3326a33b5fc6656fbe6d84c0ca0e999604ed852ddff3b2dcf524263950fbd5ce039a3f6322ae6b3dfe74ebf2b8e56ec9e3847c6e34f06474b4ff31c575e89bcc955f15706a89bbce87a44c7663990cdafa4ea69ce1650dd03897812aa7c5574ffeafe0e0e554f8181078c5d1b82fe0973667a461e48752c34159524978260ed93e2789e0109461e5dfbb5f72f5e51afcb516ce35f3882780e84ff69628e874497b66be70c3ad6521b2397e943cc1397a2d88397d4b44dc57d4823c8507e6c5585b691a60e38978f9d45f55a409f447639bf23de8af83683191d4cabea4b3c23c53be20b0ba8a8a1564fdb0c86753dbe464cec3dee9cf9bd6984b87757d771d80484b0b7042ae133cdb7ef094c849739f739081d24489b73a8a3ae3a2407288b08c123f7032795a3f474d153dcf4e348e41d490ce77004e6ae298cce850221f6d465fcb70b83f487cad160d13627189efbdee043c944ea5b691a083458b02450892544bf0d7d1969731302a1e6daec138b64eec8fbed06f6a8e8222637b3fd36ee4852de0b1e8896bb12b2c2f6fabe83a8a381b6c4f2cde807eb7190e942e25f0b835478014d30a4ed976e3ebfc2c060f03686e7f6778d292f8a0ae3d77e0873dea5f0b70c2d27c6caa9802b5d7a88770b27bffcff1369e78c3f2c4b7037cd32a1f489cb06e3d22df1a4b01f0633ed44193d41bc89e47e7adbfe9e0c46afb88c7abe066507f8f2d22c6bb789275cf8879078fa6abc913c4f03509a26f94baf2402d2baab0a7b3c352d5f24c8682f92a22ac5444a83eef713dadf20a5e92093a9e34d107c073db51427db02aef6f76cebfb51ea3667b34c5eb7d097aeb3059c495072630d0284479c2ce81ee2e891bb46bb304b59b1424833c4d4853dc601d99cd5d938ef002dabef242bf5494a5f6a6327678d1fcdee1282d733b09edb8a67588fd8c64603ad1e2e7d59e0bc9a8dc1a18fddd1b0ad1f7467ff3f071f3a150110817ac4af01885dbebb27fa5224a21e5a90e015e56b6c26912ff31a99aef386d7f6fc4d7f045852c4a5cc614ff75d67553139d0ffb9e366cbb54595fc470a6f9857b6f533016cbb51e765c5310d81caca67298cf4f0f6e26cd21b9f7944b84e914483d8010d77a40af51a44408497a5f31a7bd7d4286df7bf4b0319729cb76e0323f976f40e27c1f1af2d2ba98b5851b71a22ca899405b867544e899e7236a5b7264f411a00bf283caf69d83ae5323965375e72d0ea849731da1b0f950ec8db6321148775065614b803b89806cfb6619c10094186198af18bd5519c60e178d013bba69ced01ea9f0ef05eccf18b48a41ee458037d9a76a4495b88b8149f7841c10ba248f108c6b7caf3042881efb1a40441eb73941395db4811c3d464a93e8f53288a1ae7096e8daf375a9120d32322b01adaec99366a5f2b352e117d32b0a8661b29d5f905b90e31b8a90a08790de30bb238d566ccafb5bacaa7bef8be9e17338f20b42c04370a3f08129c51a3e6b82b9b52e4c8835af91ba8cebbe8bb0fdd71283ffd8c088322e100f746c66d1803a25c2341a428cea5db5401f9b43f841d6031fac5ec0ceaa5017114c8d576031f6565e317d825766239a790c18df311be7bf1ff5ba101408a233aaee53bb2556c9845bfa249ddb171f2b77e3cb0d322aa6d45ed2bb7026f042d35244511a028ca2abe55d11ddf9e2690976ac8142f7e68b97608e4420380dacec973f661318b501dcb652dd0d4314624aee0366b3ffbaae97cb42a9802695bcf6e36aa1092e6a7abd9fa6652184193c8fa414cf0d013f945141b3ee80aafc340eeb493b9d7f03d15f18059808b78c53d0393ec0feffe977c452cbd1b007d5b558b1436f687fe1e80e007f0335949f9519fd523b1a8ec74b4ea5eb2bb05114bf356ef96cd6429ab18654f8fb062877aefc9d74b6d05934f6f008a7551030a99c9a90793ba2a663d88d6e097c875dacc1c103682dab6c472f9e08110080c588ebe7bb5f00cf18ba6cab8bdb4f44498a0733ede517822d1ea3587637694081f6d1fa58cc18b1189282c3bd55808c636dc1f258b5bedfb68b1d6a729352709261d59b23cca54edf2f83f01db88e3a75905d44d46584822661caf6606dc3703a7b9fa2660acf3e413d36af86c34d029968b253c88b6a2901d4be41c0baffc08bf365485e9cc3b211966ef5ee6350cf1481aed6352c3e65a035759c4968247059b2cea2118c6e4c10c83ba817fbdc20f92784fd630f9aa633a94207237b2d60cb888850dc399447bde6c11617dfc1e9ec50283ab6e3e4979e4e90f6c9322cf03db9c0265b0d6d7b195fc7953954ab26d120ccf0d47173d423a4bf17c573e1202f4babc95a1cc1b9a3ca9e0b2091e458c37ce41d1f398e4a6a27ebdf389845d048691b5cdf6fca40ba08b8bb956026ea48280ccce04911d8122a68252151616016f759be211b4430070bdc9c88ade714b9812b1a3d42a9070fc9f27c00d7c540490d97719950112f39edaf0f34b429225340bedf66a4bc80d93a7dfce08e15c053774f995adcd655b0eec2ec227168f606e6126899d4e1cc8d0579c3e3862e70a290fb09a0c4b10c6be2f6d1da2718ab40487eeaa73c2262c0b182218d33afd0e4cc89b623b08caab4c31f785a166ea6d6e44672d2f8c095ebbf630ed6c2de00b2f9d942c69951c649686b7e2fc18843c69eba5a5f564c5c6cd3cc485d5811401f30094aa7cf72e03bd726a3433c9b9f4353c21fa774eab7f97a9f63dc57193001c1d83773859cfdfa44c008938f7e3a7b2242c80037048427951c56944fa140b9f9071d5f8e6db0b23f2bb4c8a3c8d7e0c1bd6f84ece612b3058b4446b772d09518713cb9a653e81f100b0897ae4713aaacc1a3a8a1cc650e2e7147b7fb6410a415029971966a517470a1f367a0a283d3c043f36c1cb062877693ae275666301c4e42312e727f2d873ec85478e8621b4862be0c232e0e3b41c3327d67afa8a0b18a4aa8ed1d2904c06acae21198a25156d78900d853b417853f38d0d0363840211ccb0f59044dba0ff60535425609a391108a301d4f258d7478bc2ef5b987904d6fab14010b58a35c81cc1351c0b1e05c772310b14aa2851b5efdb0431c6b20782fb1bd9ee48c44ad2ffa7aedc9309c89b4be4385e0f355045ca3ac10221390152b222977b64bbf6b8734814ea90387f47e01bb8a84c061076d6399db1aa5806696ff684a9407435866fae14e34b1b8a1368a3857b59a2deaeb91fc197bfdb012f0f58aa354f8c3d6611eff2d79371644090a54a26f7083a2cedaf841cbbb308b42700e5a14504df26c430dd13a72086e5ba9897b5dd3273d0b492c404bc6506329ddbdc83279e134c03c311ddce572b46a5a73690ac701123f9e25a9bcd3b0514a4b8bb256be8ff04034747ee40cd0fc03135c67e81764c55750dc4766b9f099ee7ca3109d5d4b0e8f0eacef8e9879d2dc962b8080156e98db18262c1f4a6013ddaa6773135769306d0c621390ec8a6e2717554b6249d46404ec9d1ef70c606ef355a0a74c0642e0d66be4ea3dae8a571e930058d8c5c1441cf5b9ef7216906b63e669b25ae3c49ed58269034b44472a47bddf79803cb2eebd2f1202a32020bfec9adef127fe3bb9d7cf3becbf4c2a4ce4a4eb83e2c4f920e0c746e65e68304f3beb5fddb9ce5c2b25cc2ee862736bec3b7e5081b3a97cf0fff496678879a0736119c4ca41c597bedde2ad40ca265b49deea7e6dac1805fe2a955166dba92063d5b782d7ca6c96736ce630b813f292d06b9df7949488ab92ecedeb48c47d505d7436aaaf3eede9c3c599c4b3208729105b68cff2bce45b92abaaa802ae9c30da8ce947887aaf4dd75eb083753b1a019768e98ac9291d596bd021660e8b09401270dd13526677127b5526ae69669952d188897e577f9166b62d5727cea91d20741613dddba467a85d8e7d4dbe54226c4c662fa311269714e9dda38858ccae90daafbfbcbd8e64abbf5ad0630ab8d7ba77355865691951caa392aa51d23d89f01791f9930ddabe1ea2d9e7d81821306c61714c40ba437780c94372e341a8a890ab7a9fc3663a1d4c57bfe1ceb5c4e70cec7cfb05ea250b31c8b0e8a5fd5d8c60c2251501b73c851d0b6f0bbe401bdeffe4c70b01fb694d8ff7b51e29d6a694c03ec62aa1c55f941e61d0ef154665a90975dfb95dff00919d7e478062193300a0ef443ad37d039211f9d2a74e134201ecb9cc360d26a6c6ab2522cc774543b740b65134c6966efe3a0f8fe17b1b7246777cbba39fcbfc25509a3e2f795d32a880c27081c258aa2235f7e5ec513e77b4a0609c4e287fd399938c974187c99259c080ea6ce1274cf00de0e24bb3fe91df5ee3db8e25d198d4e2ea44a01d87ee2170895918886d9ffd7a88e58b4dd28f8d558285cbcb0b9ab8359d0471354f587fd01f06b6b6370bb281a601a68eaeea4c154901fa1878184a05b6f118145e35ee409d9dbeb4b73552e85ceb60b4c96de91fab5f754b237b6e60673af96a7e603b50daa04a7667ccf2d78f249d81e32136b7a3fb2e83740a1546d4822bc99f6c05c04081bcfc4aec7a6fb65406bd342bf0adde07270d9495954234079b65fcdb3f3063793af6756edc45857e306464be5508e349ce080e9f62bba8fc54fc35c6b0c042de94bdf761a460654e6dbdec4cd8cd84ca3c96d4b4644a7ba2d2391d78647081373874cdd6dfee70fc440738c6852a817e993001108933740bb96d4b0661f0d73a9a21c46b14cb83f0f2149a41a3fa1a90db18885a871493309e61bf05ebe0ca14fa3d3bd7b03a73e3559e2d9ea06166c1385cad8c2d3e324a30fd872f1950851890b4a1178b1c989228e021060b31eb8eca71d04e8502e59274b249feba30c7769b01ae87bf0dd2b4f2cc75f2044c7c4c3ab513e6d5af7f328286bdf112e0633f600c2c75be2483e412a84f3b137cf59ae502d11c1ac645dc9763e8d542f085135330e6a3441ef6723d1b0cb22169667b247a97ba70b9928ae2471405b4b0a9c97b425f6ea3246ab58a9ed0e3fadba4434f4f9ed5fec0ad7e218393ff6db05fba1eecd8a13fcd0f4b547cfe23b4d3643b7593ce5e1c43de8fab5e17b84ff0e14d4c8434bf5d4e3f084ba3badfea3bac9bcd1b34597ba3bc9c48e3a057267054dddef3bd293dfb560be0fb64983908a43fc118f287afaf59eeb66a9f4b2d708892f8501dce95855e5c1c31832d16e2aeaa911789dd46dd96502fb216546fe025ae9b4ea03a8a405466cd20206d2eec109d08601dc87bc2e72d1bb82164e8c0f2b5957b48b1576a08f536cc219e778e515d713090d6ffc56869244a4428f56094d44b2be23fd8931c40202cafbab749bb5441719994324361dc4b676c21624070111f7dd3a8fe3fe0b7cfdd37382e93fa71e339b1aa0f69657972a55c2684903e5a9f657c728ee65ac77767579490331b73daa6e803120e47ce95067f81ea809aeedd5fb0360abd61aa5da69137701c6f008adfec99b00d64204ac4249b3dc0d8c08c00e4f7009530d0ff3aab1ca3d1b7297304a03207119298eeec646b56502fb0eb810172276b77828de960d4371dc172bdc09f477d53c29a9f45089c49503f3c48613f70974be5a7e2db0a6db1f2e08bbb38ada1469e42ba96c7e664b2905c5b91add5aed6b08c601d6bbc5cde8ec07ebd06ac13259c88f07bafa995189048a39a2791e85cb30b99d51cc943945f8c1c23e0889b6462741b9d757290e0c040878228722d092c7037c80ca0748e8843e25ed1f35ad5d0b19229594b9793d0fb52d3e69f38d8f37590086b7fba6e50196c9b22b4fd3f4b2b1f222d5a10244054593dfbc5b36073991dfe5b37787c8bc75acd478844045e9448b2e01682d3009d1f21d292e28708314d289710d4c316e17ea2dc917eb4cdf3605eef3d460941fd0f628926aecbc1cc58ea18a06fd8ff6de0591c697987c8493b6f103924b3ad2a7e6c6d7761d32d2293ffe8bcb2f4505948576421ef9968d7876d425a08cb2b844e027f44681c9655f085ff3aeb270cebc0430944214460675394056899711c156a57666477ab0d00d361443a34dfcc182ac615af490224be0147dbb8b75767148563a1976b560a138fc6600ad3cc3282fcdd57fe810b04158a31325a17aceed1e801cef581565f18e73f7a119983dbc56b6c43f91cc236ea16b8878cca83b104e621ba9a1f38bdaa360ee30428aafdaa7bc5c970e67e30ba8fe71e7652c26ae4e3418e891016c0dd23fee78d1b9b7cf26a572bc52bd3e3a9d7f3ebc98aa51aabe53e752ad0641bc13d235893a272bf106c1b55e86b2bb9da8d1f89baf7ee7e933b3ca8d3b7a3e3093c3c43e686a826addab1bfda32c04e722fe1189df1aac7f2107e8a6aa9ef89b64d0fd2ea2536e7ded99560dafdf3a504493e2913902686774863084bf4d5557ce3a993f7a11d4c9ffc5af8cddb69fe5f7e8a9c80c2cad3ef9774a251f0d030b3a123952c72b732b05b5d1b5e4acada11b69607f899a8ddc9e84c883f2480a53a4c269d28d5fc241fa133ef9d7a40f2de1c67a61508db78ee697df3abd1ba2bd1f5e05dea47288aacad5712cfe406e3dafd0230b5f315dc319be10268cacdcf76198867efc2b05cf816ca3bd7c363ac37b03192efc129acdce301b1077bd137be2a609b07256ab6601ec2d4ca6daa55e0f3f4789e74e96672829f88d32ab199615d1d90a0e0681c3f3c29c75e661a013f8130b39ead94db39a3535ed241538eacddfbf2e223b9b46d0bd5b68bfe7ea7376c16587403dbba3c7563d94bf320670d96ce901f3340598ebe8197954426eea1385245af9e79cffa9d7e3284adb3d421d24b545bd6352440d396b56b96ba666e339df5b3be01990daf7ca3557f8070c4ff79c0931fa6940a327d29dfb0654ed00d6ebdef72ee4fc6cda55f0d3bb0172dfaad522425421c855557428ac647d20952965b299d194b5b4d6f774d09105d2aea8174c70d75cd901898a2cc7c8cbbd8be0c709464ec780b5e1b05e1a5b69b2ced334ec706a231693d73b94058e06a6e64a1000d41d0a6a20a5575c3397bb5a66bf0faaefc9d703bf87aa99dcb945cedcb61924b9c957b7be212deb682dd3d862b04f473a41e46a9594cd9d853b2511eae7db523e5a51aaeffc69fe5103ddb8da9ed1a8c0bec321d0df7895fcb4810157b7cf97a88c62b7de24fedc021f4cee6b03f70eedae210b9189bb4865e75caf24d230788f33da7fc51c325bbfaa17d381374afc4613186ac434b5ed4463b9792f59d85b265b00b544818b2b9244275c724f32206e2e1278e2250b211fa4cd0dede23c6e36121ecfe11978dfc28b86cd21c89d07ce6e67ffee976f9ec4afe68f804c3dc6765a0645cb011fcdd58c57a1bc80f1f33e55c98b62e2fe831f4104e79a4f985faa3afa1c78b5079c860198da9b9635b4fa5b874c94d56d9dca474b6b32687cbc4b80e2235e3b3ddeac6c3da3f752f5e434683e5954c98940395ea84820e332b4a2819f453ed5914c9630461c7607f1febeab2d64a743f6c04980e438d9be0bf73df2f1c012fe412cdd3994fc7626b7a24fca5843925cefa42e6df01466c6204c7fb3d7f8edb9f38d0e13bfcb09276c400266f2233b9708b47ec7afeef69fc26f64a6cf0f8fb64892e0d4fdb1c6638996ad4f80569be8b542f09e422afcb70b6569a4fab0ab5077fa88e637ac70f1d588dc086a119d53ba1073d83df817b9f10347c202852a3e7755442e0e97f4a8a8eebd4637e3f35f9e23649aaec8d77395ee01674d625180f3be406c587f732203e8e09146e07d4e2a754f118d45b59fc8680d47632f330236265c97f841533f4e215949a98d03007968acf1a335730112e5f8cafda1de78df3f6bf38dc530ca03b3c0d7dfdb01ad2ce42bbe59483e8b7a3f82939f6e39a2bfedd8c63d42a1d03aa3dcbb6c7089ac46de5308ca35b396bc771633202aa2f2309dcaf8f06e373d670e05e714889d337c640e138983f91738e7096504675a666f987ea858ae222115b45868ca3db65d7ee080c40a2f6c4064e7d23a91b4f1d2330c21b2110fc1bfaf03ec1d8b79444f4a16da20f586f027633508c193fd9abd8ca0cdafb0989b2ec223fa34738c58e999253480f9e18b50e4e8e0984d5f996f2e0a45c60cf3df1d6d1757e652587f0daede3e9ec7142084988dfe9b6b61085061a1a32e7e78e47eb664b18402f6e3fb8a73ff3f0f74cf17c27997ca676e9f98f9966de59abba9511228fdf2b4b18591fdd56bcf13a57b2a1f5befa0fd27db2e5d80450b356087b51adebcf32186bc4008abe9cfd69a3ec6c8cf07e085e0ed82c81bf527e68068107b57320160ee5728bcbab1fe53f71f2f2e9e3abe74180cbee52383d739d0b2a9038dc1aba1e0500bf8b97c63a3639974024bb83641f0031a006db4b8de386e86743776c37031ad7893638db8202b8e3e1bc4b4ebd24512021b8652c42d0c3e9ef56834fc8600715ed4876bb94d2b88ee6112f6ba90cf7f351a463eba4e7bc9b1d8c50facf2a55bcdb77ab40f72f1caceee4824681471ac0d8d501e1a33056286b9c74ca4a9212f5c26d00249a205f658bb5e35a630f5cb4fbab2e546f004c37955f940e1730cfac86698c31de0730dad0bf1eb5a478da073ede45c6155ef45a94d10b72be776f9c4d8aa4e730120087612e1f3f2bd0cc514bb78df127da911d3e21c59620cd120f74b8d92b7014382551d93b91c371f84a4a648e901df3e4a4afb8f7fb6df6de84eebf8419f40cc6a745076fa489ebda46ebd0a4aa7a0efb96c59364ae12d4d922c0e3b12379ca5612610f03fcde40ad208dc279f6a4202145cd504d20430eb4e16ed3d8f07369da4158d95f80fe20556bb18a22b20218d05f514c9cefe9d07d875cea62f4fb7a1b358dcee5ad1ac08f735fe98f11931a16a96b5f91d489f1574da1fa32ab4c4e81ee95da587aeb20305e7a94a8df6eab9567d5525ca3dcb81787d83cc368d66542f8229f055125c03001883b0947575458812d7229c5090ac7d5fec1b6fe52385a31ddd9ec88ac60ed481d96e161eb70688ddca9c34e3d29c96bb4d4c0099a69d6e15c319249b020314ac6238d21c2e96d5bbe9c6010ebef3ed7a5741c78b40dfd45f23ce438eb2019f39cf39989247d07460c0a9e6c245cff2663898fb8dc18678dfc86b2c44d80f6b994b9a1e96ece9e6ee2db408591b3d8533ac5155a33c16206a603a123ddd0a9866fef25a5d5369abe28e8829f8cb0d1cb7b3e49d29739d221ff6c6e9a26205d0e9d8306ee182dc202c840c277cc3b388b3f59307a766658c8317062dcb0901fe44761f48941ec24d2a1a4743f45eede0253a45c6787d22b047b2c8bbf1370284ccd98d973d41f3c000e64c7d8dcda32829951f376207a0c2e8de42b4105c0fd76e53cba0b6e2dc8d01cc13a192df222b9ae38607a1f9f472e438d9af45ec00a4b6374c1ce0023ae1a274a30b2849d64d800e94eee3aa0ff637e1989a88d10ad70bd8b4c380b6dd573973f2b95a6322dd59b3d20527bf5debb8449a59c01b089a90fa9090d59c5ec6f29a91e6544e43137f68897d40156e8e1d14664f7a8406c3117b3dc8e7a96fd338066cd80031a0ba76dd194f846d0464aa7b052e66190098017166366187269397694bd89398d7a8e3f94ed1e713573bd2ab449d85f3002676aa3e6e072cd74d7372aa29089e47d83b261f8ec970bc60dd80b77b0c3e0d1f154d5c0ad71cdd3e4738ab6cdfd302d58cc44c9e72248952c262dcca517a0f7fe04e6baa17ab43db16da60c54572d6be8b3bbc556bd0f6176f21600a606b0b73403b71e66aad4bf39297d2638139e8b3aa4b9d84416402ec557a1dbc066c0977a85b1177f62f0e6f0165f5e00305c39c18293a7d23e58a2540958d2de9c5054f54237c104615e58a52877dbbe0437c7811d098f31c690e146a327d231376091820670003b0299ff17940b8a947caa3b43de2cb3b0e38568378723ea87acd029c2a5709766f264bf06c6ea3b5c44fd514512a04542fb11469aefcdaeab6e80acbe04b07b1e44c2a1910e9317064efab5c417f5210d134fdd3d6979e060f8009cc0b23dba29061dc65b2f8695a4d894a0c6376fc7ac9c92201c02c553b334707df2597bc098176cb5a4e0f39b341fa58deb83da6bc2e7c64fabb49a4d35f680d50973d4355ef50773b29b0d5ba6203c81bc4eb3fe1029d395c5b7c9cac7da400c75e82a82a0599645714158e427f27469df1a3f9da5df0d5bda8a68e11ea580b055cf211a8c1d35324241e3eac2176d690e38f749564a1f3c740905788995b05aaa5d1ad99f2930b8f355a4b3612c9761cd72c2d3e44af21d973d2554a82270512d62398c135ad431bf1dcee11eb5aef8e79584b6c7e59f2b6f81c4b11c9e0048f998a7d72c681a13b4fe8cab41fccab31d5e07a8d619bb9f9dfd40efac57e04a883844b02a6358facf3ee25e407900c4fa572d1da4ed9af916991affbf119078beeb47d484ccc5429285a9e530e66ebc99d921fbeb4e61a2bf1ac8b8c7b340a665ce03447b2e95df083ee3eb59c63421583bcf33b3644fcb851ac607e63d70ef5629be2a079bb10b2dbec2ba3b3bc7dd61f83d6f9bbc2bc5a30836d0ff8270a82565ef62b39616dfc694f16e773682f6e6abe42b65595cd4d9249e2bb4e3c019b17a7dcec6d742910124f97507943127282d3c2fdbe41b52348215aad744104c3dd2ba68f3747136acfa7674c64c7c5c488b9f415ed45df5cbed5fd79401c08f16360ffcd8161aa7da3c5214269212cae4ad148f15007ea0a257e8516a2a20fe9faf40aae72c368b77a1a7ddd7dd5bc8b1d87977fa6bc1d6191a79148b3290f5484a825ecfded4e6d1018488de22116fb54f51322ebe33f9d9b1d61e2669903c6c17266f46f9aa134c2a171513f01390bbd3e5987955eafd25c61a19a38d80ba4f423671ac2d1eb9a1e529b17c0633c4b336cad8450764576197475f2fb790a840e6cb44ddf73ffd813759193e68262a96d5d0ad0cf720149c4e461e7e8120c08ae3a1fde1881f1be1616695b26e61b90a5f9346dcd8560ba57caa04c75b10c6c9cb8802507801fbed5023e104b4461b82f2b929f4e0a9a942b4d7f4e897d0d583fbd118ef1aeed2687330542de892cc51f4ff6e7184a58b9c5049fb838e600de79ca8ba976a06ebd53a89c4fbfc34070adb5cbee85a3db4e8eb9708ba253083b7ee96e5fdf7de5796a93ba6a729281e89307c8190beff53a9949f3f55d500b78f1dd1e92cbc7ab6368c31dad15d9f9bede1524fce938fd97d85642177f1a05edfe5412a0a2dd60e58a320f44eaac09e9aec40a6dac063cbdc3822795892402b42dbe1ccdcad777066c9a3c0de3c0ca08a8d2a1d927baf06b730ea6a4ee950c1afd7e8d5fe4b63bf69100deda5ff7647f175ef695c74159724086b2511d130035260ff051d6ee0d809fb5f8240b51d1b0a9b9c323d6c28d3248b8a2197ca20f0cc6bce7385586098a616d098c28db26603121fad91c891b1219db714ae6350fe63c977da6b744788cbe892014b0fb179b18d2235a4c29e353f054c1e9251b068488ceca6feba7200ab7b9ac3c1546013bfe43e7e54c88d97e8b95b69fcbc70da9f20b41e98a944f80731497e6d2899ec07250fd0b08bbfe8df6ca9d8fab9e07ed7a27393e6ab0f1ee5dc35915e099baf529f15853a1487794797a1ea5f60d01debcff56f49a8762e3fbb1746846cb04b2047e3b90e9dfdc577024fd50d89303baa1ece572dea74a9dfd47c88c690a374f0d7e277dc0a4d7e8be914be7348308b630bdba8987e2ea13012217ba6c1f3cba432a3fcfcf26a129c6d0a0f289190b4a3e418898307b6e503d97ebd5013734ddefee2b32e91d282b1acb4e954c6f06e484717e9f6d305e0242c1c3b3ee5f6277eec1555e945e0f9773e423d2318c0ec533606b43d2e4c710e22630697b0e90ec6d772bdb5c94718561ab1846e9310d65a112c3bb2dae40a95a29a703beb398a7ac557256be4c735a9a89da5a63390aff29d02e32683419e30dd11d36b367727115a734791be878e493ddb876d1ff0d709539f8fb45dac5974e034bf57f298d7e99e02ded50dd4392b206fb9ea7cd02fb90b568632f9c2f1404a7f46b2db28630be5323e0beba01c9c52be8e7c1d300ad45c732a447a1b46f14d9c264335ae6b3ec8c432d882816219f80cdeeca9c0daab6cf88026425c9a14208b13f0b16ce65de090d286026ce420eae21fe480e063390be3ec8ff28cfa9cbae095b6343aafdc1028050bfff8d32fa979138f6f60681843f3aefb24c23b888cc392437e9da504226bf80f997b6c3cf9fd91973e1081dc77509fc2f170dbf7aca58fad691813f7601963507a3247f8988b88b922e0464294471314a8ccc85a477c96f64c9caf5c9017365044c203f2d3adbd978fc0f04d8dc34c1a98f3bfaa4f46b7f5f220f9fe398efc1e4a8cb01defb29427b86097618197d2d594a6c31e27c36ad9bf4a5d0a352c1ff9186a827d8d384a0433500deba383186d5f6dc07c3204bc4e9c7b0455ec07e39f82ee917ab053cfcbfcb05a39f7066cca47c1e8b2e0cd96397b93495dc53a45b4b9aea45d687ea1e10760b19fe015082e8b88e8811d54b6e533a510e387ce7dbbddb430bb8b538baed3d0aebf558867f43a8e4a038e511f6f735a6691fc782dda15ad001ecf601904dbb01a3aecb9fdbf1bd5a90222965e42179a4ba8a148e474919889a28eb0b91b1f30e9acbb7dbe30f3d7314deaaa76f2dc27a658dd2964afb79b3ce2890b1c866dd03e706449088011091f8e742ffdc6b420f848985b2211748dd6ca34ed53051a20f8178fd299c360ff3b69403298ec39c1c3576b43a29749c15e687e3772b266f0e2567c4e88aa9ff8bd7f4898801c41f2d1b0133de64e827beba8d6433cf33f20e1d7bc0d9e27d05454539fec6b0834b555b5770ae771f470f03005f2b98773e0b5360a993ad9a147620f849057e77531426520beeea808071924925a7b1855209218f0ac86b237e0ec4b131b2b63bdd1c1ef74842e5cfab5fcda673aff1fdb703e2686b57d713490b0b576bf3cc7a86ce9c8ad4ee320ae750a46453f509b3f90056207e950b877f969736a49387ae3ff8ce793d61e5a0591886fadbef4373180c8b221ec8c9e40b37e7473ac16501552679057da6766f210aede37e8ee760610fd5ac0e35ba0404aed3bb6c17de532ebf574d47377b9a90594fde8c96cf61cc09c479f81f0f7f8ef2473c4be207027fa6901508a1898c022cc30986c2dcf2b201e68d2226820fab3251f233c3580644125a356dbdd1c30eec406bca64e904700d689e1a0a38bc9c7e8d91d3d4ea7049352902abd252bd9fb28fffe6bb12c1ed050dccba204f15cb3f4c9ecc85688eb2bbefc6d53a3e81012866311a88752a6303684d8e827b27b4fb855093b560ca82b22be87beeb7905bbdd295c81345e3e7015d11e983c0c12aa5cc20cd48105ce0d1bd332ce9c1a3af9614b08af42d69af0fa8788104043e374554c0cd194b1c94bae9d50e8c5c511e6d93569111d7e12b0b2330e051132470f91460d01da30fe8d5b3442251badcc0f0fcfc5cbd517db2061d0cd35765db01278da067b2d469e9fac3979eaf07bb85bd7ac06700794df3096bba6804df1b442c2dae56bdf2012bbb04f505c06d7639a7ae45bbab7f5039084a26ae692f9c6c342f20cff3fa4c3dcc39d35601073e0cc0021edabce5866e0bfade771bfd0f0ac243c2555f5f4c3e3986fe864ccf47d93c5cf157b892a4480718a309c2c3814289b0e1a20baf061003a9455b67b36ce951f024ff1b8714b707a829afc20d688b08b74aca83c55a33ad614bbc5fa5099500d92caf61fef9150b2563c431d915723730fe5f27d02893c42f70cb6ddaa3d0018c48989e06e0b80598bd8b6c932d0d8866ff48953a7b8a083b1ed51604d9c29a94c04047e87d620419b215283ac0fa38b38ba05f5585463e4f4543c53b081e8fd8e0447a21679f0ae4f6ba1523f7806b7eb3f57b492db5cdbe6bd032d5ccdd4be8fbe352496e6f0bb5f5f1977177977b4bd74ea2ed2b6908a9694415546762578e16fcdb11fc220f13a427693db462639f72d0bc54d49c1b9f14dea9ca53837adcb7e814a3039f0c1881447a31c1fdf02831be24836766120baeac5b81f5ec189ccdd5fd43b98a0f7561ec58e0958e2f42e48f6c23ed0d5d86d79b652b9c04d023fc75f87cffe10f84aad3f8cf3c684f46ce28a19e357cc3676080fb44e72ddba7e17e67246d960dcd5cdbc5e4b91a416463ed02c2eadc1a48bd5aec15bf082ec5e7fec1f4f01a0e3e1bac65b6062751acad645ed00c641be825e88cf8f7cc51ffdf934e4d60020a96e23b5ab46e37d3daa2c9947e8783d08246f32eb7d52884741c16a6b8e23609cce3ff8e8dbdb95e727bbfbae679b81ef17c45beedb1d523400b3018e2c8710564c41d2108f5368cb8c960ab7587f571853c0da68bda82000f94b38631aa3b05c4fe8d45608f23f311dedcd1fdfdf3a6bd9970dc779282d4dc38de8d30c53205cfbf9a9045a1fbcbe5cd0909025420a324678342fc8b39a32de22b7f4604960a96b6ebbbc8c19f63e6ab953f4d88497b8403fb8335a12b4287004de5fbfe83084e5d16f2823d57404d54a0339b01c63471d8b9ebb001ddb2d09e4874eb1bab0a542ecfd8d9ae5fb63f4f557e568532e8be80c76d00c7a29b8229996156d0180b9d3dbfed3d49738abc1d08fae6d9f1bfe97240a595d95912f2328233a76e19020432d31bc2d0dd105d3e18b3b2ad4863b0585548954e9b0fd4b04bd303e7850421873ff2b756a48de0411796cfc9d682104aa78afc4f5bf816f0a8a712277e0d",
"as_json": "",
"block_height": 192055,
"block_timestamp": 1541192974,
"double_spend_seen": false,
"in_pool": false,
"output_indices": [1915328,1915329],
"tx_hash": "b049e3f468f3421e4cfe6feab4b69b27a26203b1370470da7103b340caa23a1e"
}],
"txs_as_hex": ["03000502000d9cfe4df0fa1ac7ed08c6f101c611c931df2fb414d80aed02f1037e15f7b3aa78fe29e26ac20ee62dca29eec2368afaed9467badb1a4f03f3ccc6470a02000deb8f28ab9e36eedb06b4e907d121eca201859401979d05d6028e029001767852ca72865af790144aa47d29844d47696b3a5233e783e7aecd9a9e4a9ecacd0102000db68112af9512deff25ab3d8be50ed6bd02a6bf11d9d106d918874d90030b214b2463f9eac5b410b1e3207df7ddaf77dd52962b4afbb40a71a79ed29a285c6802000da4d055f3870fcf9904f79906f90fc7ea01bddb038108b803d501c4011cad0214621cfd62916fc6e713a21e3dc39e6b85968a7c9dccb3b3089dea654fa16df602000db6963bb7bd028aa40ad6af14b39201c3de039d03b536b2c307b0d70b6b79be0110db8ed64be36f2d3d8e5a984811208e8f3e4a81ebd786429d4f4833a42dff97020002e9d6d245254bff7a315f2ac8bce62c9a1b6e9e0de9a457246b2e468f15f45fc30002f0d725c3069af8013cb238b729777b56e90fc41f130c37cc8ee62a743e15fd862c02090175ea3c296ac2437a010860fa1818a8e62063884825532997113c4cc0938bc01f0f0a9f26a6c7c0bfcc02e085b207c3f66ec3ddce80f67e12a9884d0f85686b5725ba733a7d7604ac308d42602c8b079a0b6a5b888c75ad01dbf79c08986bfc928f639c7424dc0eefc9d9fede87e61048d2613619cf3b9215856ba34f880533c839fd57c038db777916cd420f92e6e034146113807df465861a98a664a76f4cd2d4ff397ff8ed24932a71e49afd5ce0fa5301cd60e44a98830444a795d9334208e52cde92fcbf2e1bce1041908c54677dccb3960a5f905a85e09120cb39a0d84bbf65ca6e3473fa1e9c1ebd2d9603e53e65e961bc29d8a7c8335b08827194199e36e0aa23fc2160f04bc4bb81390c905b2fb38461bcef62426267ed58e319cd82f9a517507ff6e1fa5e7e3d06e2028de09d2dec89e18d6440dc8d181f2bbda92afc40b59bf10ae3f7778ae49a060ef77cd8fdee1f39b2f244163810f1323a17b61ca6b1eddf51e2f7c9cbb2751a566047831b93e6c40f60d998f3ff8822856383bb27cac229eb670c6f8e033aeca96a0d1ff3d7d1745f06af37bbd7f23423d90665e5d0244a7fd168fb19149a40047ab98174ca82438df3368a016ecc0e45682b067e0a8e42d8e1390445722d8a049955794fa0e2ba263358e3e408eafa696d2b8c82a56c73c4e7867ff45b976a030c827176c5a7369a46b01554208a9f18cf1270011870b80f9bc50cd5988b7d0b6f1ba4f677252f2a9848d9559a0c5d5e4bf29450ceb22bb67ba26195cfc64f03cf62171807f24bf26ca1fa6cbf8e230995d29afe516cd445eabc13846a3d960255000bebcf438351108f0588f4b00691a86bcaf74a21e5b8e7593579226d450e6fd998a7334d5f725055090f670ff91bc9e31c42b2e8f8a579bab302af38b10f5fd03ceb021fff02794c21d48f57dc1c2a1711304fa2482b7db59ea34eb8000baefd910fc420f8feceeeba01f79a016c3fe1d622a1d18837e1298b489a27590f3ec7d708bd600128e5fbf2ffa207ef15b50a98390c0835d8d37d9037c55e29096ee5a9ccc0c5f6a49d94e439842b34d30aab256a2f3f0d77f855aaabc40fcf056301848811e3f2b13d9a4b5fd3b5a3fbd37a32c857a5a03d7b6a6f43bb40130dd374ccec2f39784e9ec784c713b4bd9b5b3e1f5274060651d6b4caf016545901a91f08f9164dcbe30d24069a4acd1d4f98a576162d92ff35286740528a9fbc0fccbf38a41fcca929661ba2218fd82080b989d6f2375a6ef310310a16c0fdc300c95a62a75f0ce12b582769d69be4b73ebd45dc62328e53b2db7e5c6a1963bb056c4ae9109041618ffab8dd3d796eed7996985b8d848c24315e323db2e5dbc9086c07c5230a1e2bfc2769f36d9ccf8485f577abae6485b72abbbb04331c74ee060b23e7325d7263bc0123353d63feaa2d393d46d905e6b4078abbf0e9aefb470cfe9a30759f28920ca67eea05c50f7d5710ef247ef601ee328b0be7aa85a1990010c8f9ce03cf052559c7b6aa73982481c838f60bb09745fe9e07cce1dba4a60a37cf6d2c2da8f068b280e75910907e3b939e023832448214d72c82cea09268016508ef3b8b447b185389ec1389cba270868efb88cd9d4fcc2350f4756de3d3002edf8bfdb2c1c7f15a31b455f7e834ac82f5c72b32d2115ed29ba45175146d0337d7fe0019c027feb1c42143221f5dd3bd777bbb9dff14adaeb054daa9d26a0e4f3ba3b5147daf94187c844f5ff5138a214e27723d1f17463bfbd6ad99950c0927ea1d171336aa6e3e57e0864d8fc36e631dd2f6045b33029feed037834d640d2d0e2788b4212c309652a4fccc8caef6d36f5e853415f02932f99a7fa1f3300cc74279deae0ef9d22827934363e41f30aca544efb5f25d4136139b2d46ae150519767a29598ecaebb6476bbec4944c5453b88ddd140922f9f01d39f272fade091546d66de47f67de8fdbdc9e20bbe9263eb36d9266c4edd57e9b5a7a9b11b404c827331bda025d13ed2fce1e6b74b38171869bb901db14eb58e5fdbeae36ef0382a880b704371905e5573184c720887864bdbadd26f0a8e95e74f87b3c78bf062dbf106ffd060ab2239fd15071f0b0d16531b604e1aaf2076603ba6b515e740b93a8b6c36cbb35bb8e7e6b4cb9e3e0df69e0170bd4fb290b745c5b6c39098e030ff4c42af350e4e260b619c32dca21c57d7211f7f3cfb87a8208989ec7d132083c90759d8fb4c9a82189953b7461f765087105681347a6834820a90dab3a8508bd4682687e957369cabbd300dfdba1cc6284a7fd714d7ee5fa99de4f69a5690fa8974f6d04f1d57cdd8d826d79f87aef07dfcd78bdfc3a2869da8c45aa05940fcec2cbf2dcbcc0ae44142a53552b63abb2a5ab4b690f419575cc4e8ea084c60b6fd32431e66e48ffdae48a8378a04688a972058f70874d48f85247c4a7eb9c00b67bc3c7cc9cc100659953b40e6234714ccc8adf8b5a0e72b5615ce958099d021292592301bb041b5e2adaac30a298e4c7f0ec65db8667294ac1e951fa2d0007026054d9d6c7458ab8b5ff80dc10e76f2697b3e78bb4390156d9e4de2e300b095af23606c7d963ed316f5468373a82cd18f3a0e5e149afe4d3fb56c5a3397b0e83c8560ab3cf589738bcecf8600a35b7a9bfd4d6fdf26d23eb38637a4911810c42eafe3065f3bdb7cbe2f750c39ee0217a60d6ee8bab7da9829032710af75d0b66b1d893a3dba9d370aa4816d5639e605f50320963d6f43833009e55a27701086ee11ba0c670d5000e918cdd030207f014f477d0694c8023d4087b13aa942204dcf5700daef769361c4cea7959f29fb6d15bb97d0b6a0f65a0ab5cb9cef55a09b16d8369a045f45984b4ac030f9f72610ff704edaab1b865baad0c86260da60700430bba0f5711babe2dbcc6eea7520caed9437199243c74ecaac259e2034c0fd54831a537f56c96eea4e19045220b9973266f554f8c2bc13476c8f9576a8c00f008ac2f6a5b236c609fda9e344e582b873e554dc73b6854375bb19e49e0360045ce38f6c12081e0c820484ec4ce94fd8caa7621593b4416a9a229602aebb5068c238ed2d2acab520dc3f2b5a2566e783ad32fce9f50ed8de3d3b9361e0f6c091cec2231546a6c56072741fb1bea98f4cc3cd657c575ae86d8d5c1123bea790f3a3a78a51ff10571a99fb34f34911b5cbcf8cbaa3912a5da99a74155deb4ca0b32615a15fadcc63cf72e1e4e342d947c86a371ca9572696588091291af80650df6c64b224d9dc11afdf61491bbcc55676a2877b629656d75b094ae37aed29f0a9fde975836da50a0adfe99220609c62c98273ce5380ce00bbc685eadc3f2c1060c1067aa5957bb5215b147161b8109056bf2487206a1e0b894c503dda8ce25032952c6856a5e36da99fe92d069e6509a3c1cb9aa849bb2f440da12f446bbdd08c81816fd146b45edbaf70f199638668cfc2dd9aaa0f92512d0774ee32395050f39c40b3dd1bb39cf054b864c4e8ec393f5446cde37e7c053871876ca64ae930d28dc4d7a135fd7f09e20ccbcfaa73b3c2988c6bc1bcd163d3873f3b07e03e504a77ba36c19067a4a231816429ee5eb2e61169dd09d5ee23e69a9ff3af79c6a0d2366c45c7853507e9a3c018d7aa4cc6c0c38f2983b49edcec6a1432fdc20d207f45e8f44f132a57647031cc3e3bcc512ac9c9ce63d0520c8df4f21822e4a5b0d8a11d850cfde49ff766d07d87981beafca813afc63260a39d5fe577c34944105b238feace2b4985c7599fb0639f4c2bbfb4a05e27776d3cf7d5fa2bb2ef384009930e1c8fb5595eff857aba15cb7561b6fb99bc1de2f4f39577a26e036f1fd0ed25895922ea740cf2ea316e2da226021f6da57a2519d2e6e51507f25d99a5a0c3f3dd3664ba52eeb1b4e5c97ca5dd418971566ffc3482309779b175223b7da0c85b32d2ac73a3af1c3fcc771e388895197717b060a6f448da6b1a6e550363b06c9818d26fb95269d77263dd55ebfac145b7c9062c92b29204ec3829d6a0acd0ef4c3be558d1213c30d15ddc665f5743437e7e9d41ef10929a8ebac88594e330f99f6ea8be7bb53a3da25d63676113bc3841ff42d10ef07aadeebeea4cdcf6104c7059d24b69894a7c9933419fe66545d07e1bab10e939b336f147af20727c201fbaceff8f896af920e49917025e854b4e9d1b6a77cd4bf3913a1b7991aad4605ab53b606632924170f1ebda69fb4f68f00cc577a5549a48effc119206c257a0d912d93bf8b34bbda8323a8ef03195b51955cf6968b0147e00de618077f33c107586bdb97c8d2cf99968586fa2b25de0dbf220b81977234280c70043e2ab2d90f7477e733afae08219b53194ee699c97753791e01cfcfec4f70328cbfe68b160ee8ef059514772526be582f90692ffca917b15c19993ba1bc73c45d235acb0801c1a69be536b8c56885a775a38d9d9b5839ca6b6ebff0bbf5f951af681bbdd3049aa45a3180e9a78cc7a6ac3ff720c6369976969eafa4e9c8ad992b71e0259002fb54cffbe3edae3ddc31f2af5bf9fd3bc329305c29773782ae3c3c480c64ff00737095cc9b15a3f5e2ec81eb8754c938bedbb22695a39df3c28da66e1abfdb0e15df272b2e474d000715328e1aa0003453c23518244ca30b1267896fb27d080cc54d011d59cd8d6e7f33cfb6bdb10a60e2318762be8472d0bc2bb668b58af506f889918ac4e21df31516c7070a36a9991a985e47fdb0f7e265f6ebfb63329101c9eae2a6edcadb6b84ecedf7b970b0b2d565b5bf66280e305dff6e956859760c51c7ca1b903d0725c10ec36f49df419c8cc95b0df66a0af2631fbe2f8680a002602c5c16d5eb0f73994bd5f23aaaca5a8dddf566e904e7207f0a4e725d3e2d0586369f9e5ff9837e7c8f97f96d4e760284974677b68072c160ae5be287a94d06d04b0ea07d7dd042333375ba48eec905e79ff15cf70294432d2ec5603e2ce302d75b445a6bc3abc6bfe57fd5b63ff392814bacd5b8ca51269a1277085846db019dc2451384273e3de5e2b1197aceebc6b9f36bc4cb0c01f4d85e1d13e921040d2c735376cedcc6c96668f6be1edc23b40ae1c46db4bc6da939351e7e9740ff0efe375210fde9bc70e8630a174f604c11ff03ce3f99421023d7c5f16f9e0a0a0268ab562cdf9d75cc24d4d778d60c8d4b9a466c7a2a007590141b2feffb30200ce7ea5abff3dbb6212e26a2d7d5f5e3217d89ecb78f03b0f0f9692c2bfff85d0009a0dd827502e946feeb2d084f6ea239da394215ae6881b4c72f9410e587b905dee627662aa184f5f12d08ae069df8a605fda77f6b87bcc870969691600baf00ff8cf6d0ffd2e7584e85a765c99a1636000a0312e21e392a393f4758774c29076a0ef0585ac8765caa614da326ca708b54b39422f3be6f36905670f07b7e640078a2402c819f80b633a66d0b2319d392042d15d60a90c6a7e64990c1efa9420563c8e5c908cbde8d97b5f8d4b7d82537da3f170234b4279a8839035e84baf50d28e242464e1fbcc44e0cbee634a3547bcf123f6b935c13546848eb734c672b042a5096ce8f018e3f02224b20cad904ccee3a9bfcb59ffe28b1aee3165d7c510b8c49ebae5a4c245bdc8845d2f5e541989a4690819bc87f2ef197d55c041a8306c2aa3f10d52a1a60e25cbc4d5dba7cfebdd23fec4369a0701eeeb1e3d989d70519924ae40272e4b3832a676b965711e734ccec27687c6ee6a06955121a65c602f2814c3519d7f7ea3f441e1661ae140755cf68f04aab6c204b1ffa0eadca6c07cc5888ffd7f709afbc709ee67ae68dfee3674357ddb7679ec5d24b951e49be0071d66a876702e5de41666f4948e4f618699f5677284f80cdab2a2e0a2d07890b9939e9eeb86f4777435caa19c9d488345ebeda58aa94acc85ef54ef342a1a40d44aee4bdd4741f96869b710051359dad05aca087703277565a0ed9258771260f66d1e864df2d428e448c834b82ea0d3905cc20f9601f714a1e0fea9d6a2f4f040e3c071944b950e31fc892c0ae04ee3d64e8c9bd1c8b69b08f39dc8973b6450c6aecf08a8814636e9bfa33376ca62e3a727b11fd7d1ed8d62496239f8eedf0041750182f89e337759a309890a8034dfc3e2e20a868fbb0b7578b24544984a6065937ab14506da8546e042bf8daba5485f3a6e0a6f8c409221b3b8a7dee2e26042536ae45fb30e56e19087abe8c776a5351865d40f6687ccf23e9867fcdfad507ee7d66c87bec3d2b52f8435bbe96ce61f5d52737f15c2179a5c0c0781cce310eaed4261bf24eec9b87d7abaffcc8875d2ea621100e2f62e0b7f0a5193827790d9f699ef69c0105bd9381e072a56033b7f6bb3583898d6f800c27bba371f2fd07d8c65f475887185de80ac9210da22ac5237624219fa5685be0a827beafb7d962b0aba75211f41d61679ba0bbd7f2c848ef07a3cefa8fa6928f0a98ebbf6ef7ccd9d96e978e091d6fc07e4f0ae5bb182b82106509635056ff08a6ebb6e57a240fd16ad986416f3068a83b84f757390759b3af46dc5fea13bda89d593d2abc462a8caed872d2ed2ea5c5f2a6cc9712882194133732d8fcf445c042dad4a7bac13e992e418fcbf94cd8428b763e71b2d38d265280861e709028327b2ba3dea81860f172b77d83bce2793f0ceef40ef1ee8a7b2d8bba4f54bfa194da25fe39cc8e57c1b019836d0a2345b067e057d811de900ff8eab103fbdf06d3eadcd2bc95032ba7d3c9ace1183e4cbe8683cd593cc0e0bc972f0c9f6e78875607f2752ca353f8df576def433c55c6e7811fa85be6a8239be5a5974e40960443c32d517646d90939cf937c48e059cdb5d3630eae04ba1d0d8987bc2939bddec064b4c023a791f372fa7963346bd86fad82d8e841cf4c78bd75aae19b149e5c9b929d29b1fb8e4fef736b7a0ce61aaca35040817156b4cc766d381fd607cbede75d507f558d2d63676eb55e5947c67bc28670283b024d38d3f295baab408ed052f923e548bad17e121bc6f42de162c2bf9255066fa76d7f9e5aa605d725986d540b38e8da1b6d22a244c3a2bc168915cfa07a95054ae5e71ad91adff429ae84dfd52ca42d88281a39794102f25ff8e01f5b0dc84e782f0b9a336088b5efe9d84705b46db465fc13ccf94baa2ab333a2796af1cab7ffe2d83f2531c7b669ea092279470acfa3111212e882aedc5c7e7b5eed6a1ace2ca918c8012e5bf3ad84322e4ec6f81feaa6102749bcca332253664f17d0ca903021730d62ea94139e9de8342d51837a3cebd034412839bd5baeff00862108ec58c015db77e52725101e5f5a957d0b644058097d686bc493ac220940d6020a2afca421190291b6e6f5836bfeea32a895b0af3409ef8bf375a5d06276f2380a321a103d6f377a3e671985ae91b10b8e3fdc6fe0088e85381f03bcf4cf479f16d0019bd5b482d9dbf893812742895bfbb930c04342ee3fcec3326ca127e6b66f562bc5051dd127fe13f5733768ad55909fbe0df7998f17434806b5169a81cfc4620b48e80607ab7871ba790720aa6194fa8bf073a0e0608a9da33eba6d83b94ab22c6eadaabf931e1af7022eb294a9e862537e076f9df7e9dc924adfaabe29f4241457989c1a2d8d6848379259c586ca715bc1c17b8eacd6c9936e0ea2241ee621332ea1ba782639e0f6bc221bc0f4fd824455970aac86d25cc2246c2125c5663fef76a83843cae6e7204eeafc2c88e340b3a5422e921c6de52d8eb6da250b681d1ce071c3b792063c84b55e158bf7f9d93b4179f7670905e6c1fa6323efb81a64e679b27b2112cef48c7282f889fd24ee138d01c8a99efee7e17cf9435d404d1360ed33ddb76aa0cc8e0165c8f26f274fdf9cecb04d6f476b6ce7205f73152178560d048dea2bb4daf5e0cc771a0b3e1b91983357fc320999e509bffd84006716a79cbf049a78874d1f69890e672f9aca9b298813667dd0753914a73274fa9cc421e35a5d1b71d947c4a84ebaa54d8a0d845e199c1cb730f0287033bd3601ff6a2aabafbd53242fe28694f47fac96790c1ac154d186a1e764092fee42c0523e63eff600048afdfdadd9856f1578792d96c61114255527d14a6a79199d807107e7c4381c5ac08207a8a62d6ee30efd9a4ba15303bf44bde70eeb809bcba67b3e92fff28d4af7f06fc41c3cdb74b5bc0668852bc898ee7bb689db0ae706fff3a102cf4672c93990ef079f778b0327fde00ac5a565df1c8b69d2d83ac3173cdb250e77d8d0622af932d576c9daee13c5c2ee6e7af24d2e9123b621de7bef80617b75f0dc9fe93aaf9dd3b94786d63f071dc4288afaa32cb05d2880ed7d15329c41cca14ad77c7f557566d7beef61c37402a78ef07fe83f29560fe28b15f26f32fe6887ebc038682e7d04e999dcac1af2cc604c703b5366c5ab4c8c441e8141d9b8551481a4af602d6035464c7e8020764281b6a190942e7f7e085783ee071b47f66dd77349273954a0a9f44960420b9cee023a7ab4a5acc4fee6dfcd8132ceb4796b5a47d6f546f332642cf5c8b47be7009e489481c9a4c26f2f3d0e03f0e931a42f2d3be3fa3535964a6e3d36c850bcc3a355fdb2c4c169f16fa6b3590e64dc0b9baf38c1d307f85602a2653ec9f89b162083d89f220e7a4a8aac0ff4f28d84d76bf17a6792c7c1bfba97e806ab608477efbe0555f7ff46963d8c9c6a5cfc17e75274aa3fa02ed41996f376e79c2861edd8d6488e7ade5ba81e9b23f21c16f7e455fff2cb6056ec9bb9b7a176d560453acfd0e6fd56023cc9d1f5735fba97428d8af63d051b68f6192464d9e09825fad81845a897be84de1b8fa988d3b1410805c4f7762f37f894cf044e05983009a536a9c41088c6ecada785013ac581aace5369c9febb37394135169c84d3aa9e3da52b8795e4cfd31220bb1bd96ee1323c1065afcf439912d3fa0135706da11e42efeb2a8fcb497e6b9d9d47c1900163e482a0177ee55bd17ac9e5f323de103186b7362eeb536098b1a9d51a230f495f34f739ac393dbb23ef74fb0f839effbd6d0c72feb6a215a3a72941af172f8f68fda0f9831cc1c0a676fb3ae7a7e95f96202de0bb0d917909a81ad8cb8ae733bb4402e8c217130225f029fd0d14a695a0be8c174860edc2535f7db6a953cea4fecef0a4acb8f9915dcbed8d13cb46d7bb859c656a6aa9fc9b67744dd611e2e44c6fe309b690f848d00e9f7c18b9ecfb5f6df3326a33b5fc6656fbe6d84c0ca0e999604ed852ddff3b2dcf524263950fbd5ce039a3f6322ae6b3dfe74ebf2b8e56ec9e3847c6e34f06474b4ff31c575e89bcc955f15706a89bbce87a44c7663990cdafa4ea69ce1650dd03897812aa7c5574ffeafe0e0e554f8181078c5d1b82fe0973667a461e48752c34159524978260ed93e2789e0109461e5dfbb5f72f5e51afcb516ce35f3882780e84ff69628e874497b66be70c3ad6521b2397e943cc1397a2d88397d4b44dc57d4823c8507e6c5585b691a60e38978f9d45f55a409f447639bf23de8af83683191d4cabea4b3c23c53be20b0ba8a8a1564fdb0c86753dbe464cec3dee9cf9bd6984b87757d771d80484b0b7042ae133cdb7ef094c849739f739081d24489b73a8a3ae3a2407288b08c123f7032795a3f474d153dcf4e348e41d490ce77004e6ae298cce850221f6d465fcb70b83f487cad160d13627189efbdee043c944ea5b691a083458b02450892544bf0d7d1969731302a1e6daec138b64eec8fbed06f6a8e8222637b3fd36ee4852de0b1e8896bb12b2c2f6fabe83a8a381b6c4f2cde807eb7190e942e25f0b835478014d30a4ed976e3ebfc2c060f03686e7f6778d292f8a0ae3d77e0873dea5f0b70c2d27c6caa9802b5d7a88770b27bffcff1369e78c3f2c4b7037cd32a1f489cb06e3d22df1a4b01f0633ed44193d41bc89e47e7adbfe9e0c46afb88c7abe066507f8f2d22c6bb789275cf8879078fa6abc913c4f03509a26f94baf2402d2baab0a7b3c352d5f24c8682f92a22ac5444a83eef713dadf20a5e92093a9e34d107c073db51427db02aef6f76cebfb51ea3667b34c5eb7d097aeb3059c495072630d0284479c2ce81ee2e891bb46bb304b59b1424833c4d4853dc601d99cd5d938ef002dabef242bf5494a5f6a6327678d1fcdee1282d733b09edb8a67588fd8c64603ad1e2e7d59e0bc9a8dc1a18fddd1b0ad1f7467ff3f071f3a150110817ac4af01885dbebb27fa5224a21e5a90e015e56b6c26912ff31a99aef386d7f6fc4d7f045852c4a5cc614ff75d67553139d0ffb9e366cbb54595fc470a6f9857b6f533016cbb51e765c5310d81caca67298cf4f0f6e26cd21b9f7944b84e914483d8010d77a40af51a44408497a5f31a7bd7d4286df7bf4b0319729cb76e0323f976f40e27c1f1af2d2ba98b5851b71a22ca899405b867544e899e7236a5b7264f411a00bf283caf69d83ae5323965375e72d0ea849731da1b0f950ec8db6321148775065614b803b89806cfb6619c10094186198af18bd5519c60e178d013bba69ced01ea9f0ef05eccf18b48a41ee458037d9a76a4495b88b8149f7841c10ba248f108c6b7caf3042881efb1a40441eb73941395db4811c3d464a93e8f53288a1ae7096e8daf375a9120d32322b01adaec99366a5f2b352e117d32b0a8661b29d5f905b90e31b8a90a08790de30bb238d566ccafb5bacaa7bef8be9e17338f20b42c04370a3f08129c51a3e6b82b9b52e4c8835af91ba8cebbe8bb0fdd71283ffd8c088322e100f746c66d1803a25c2341a428cea5db5401f9b43f841d6031fac5ec0ceaa5017114c8d576031f6565e317d825766239a790c18df311be7bf1ff5ba101408a233aaee53bb2556c9845bfa249ddb171f2b77e3cb0d322aa6d45ed2bb7026f042d35244511a028ca2abe55d11ddf9e2690976ac8142f7e68b97608e4420380dacec973f661318b501dcb652dd0d4314624aee0366b3ffbaae97cb42a9802695bcf6e36aa1092e6a7abd9fa6652184193c8fa414cf0d013f945141b3ee80aafc340eeb493b9d7f03d15f18059808b78c53d0393ec0feffe977c452cbd1b007d5b558b1436f687fe1e80e007f0335949f9519fd523b1a8ec74b4ea5eb2bb05114bf356ef96cd6429ab18654f8fb062877aefc9d74b6d05934f6f008a7551030a99c9a90793ba2a663d88d6e097c875dacc1c103682dab6c472f9e08110080c588ebe7bb5f00cf18ba6cab8bdb4f44498a0733ede517822d1ea3587637694081f6d1fa58cc18b1189282c3bd55808c636dc1f258b5bedfb68b1d6a729352709261d59b23cca54edf2f83f01db88e3a75905d44d46584822661caf6606dc3703a7b9fa2660acf3e413d36af86c34d029968b253c88b6a2901d4be41c0baffc08bf365485e9cc3b211966ef5ee6350cf1481aed6352c3e65a035759c4968247059b2cea2118c6e4c10c83ba817fbdc20f92784fd630f9aa633a94207237b2d60cb888850dc399447bde6c11617dfc1e9ec50283ab6e3e4979e4e90f6c9322cf03db9c0265b0d6d7b195fc7953954ab26d120ccf0d47173d423a4bf17c573e1202f4babc95a1cc1b9a3ca9e0b2091e458c37ce41d1f398e4a6a27ebdf389845d048691b5cdf6fca40ba08b8bb956026ea48280ccce04911d8122a68252151616016f759be211b4430070bdc9c88ade714b9812b1a3d42a9070fc9f27c00d7c540490d97719950112f39edaf0f34b429225340bedf66a4bc80d93a7dfce08e15c053774f995adcd655b0eec2ec227168f606e6126899d4e1cc8d0579c3e3862e70a290fb09a0c4b10c6be2f6d1da2718ab40487eeaa73c2262c0b182218d33afd0e4cc89b623b08caab4c31f785a166ea6d6e44672d2f8c095ebbf630ed6c2de00b2f9d942c69951c649686b7e2fc18843c69eba5a5f564c5c6cd3cc485d5811401f30094aa7cf72e03bd726a3433c9b9f4353c21fa774eab7f97a9f63dc57193001c1d83773859cfdfa44c008938f7e3a7b2242c80037048427951c56944fa140b9f9071d5f8e6db0b23f2bb4c8a3c8d7e0c1bd6f84ece612b3058b4446b772d09518713cb9a653e81f100b0897ae4713aaacc1a3a8a1cc650e2e7147b7fb6410a415029971966a517470a1f367a0a283d3c043f36c1cb062877693ae275666301c4e42312e727f2d873ec85478e8621b4862be0c232e0e3b41c3327d67afa8a0b18a4aa8ed1d2904c06acae21198a25156d78900d853b417853f38d0d0363840211ccb0f59044dba0ff60535425609a391108a301d4f258d7478bc2ef5b987904d6fab14010b58a35c81cc1351c0b1e05c772310b14aa2851b5efdb0431c6b20782fb1bd9ee48c44ad2ffa7aedc9309c89b4be4385e0f355045ca3ac10221390152b222977b64bbf6b8734814ea90387f47e01bb8a84c061076d6399db1aa5806696ff684a9407435866fae14e34b1b8a1368a3857b59a2deaeb91fc197bfdb012f0f58aa354f8c3d6611eff2d79371644090a54a26f7083a2cedaf841cbbb308b42700e5a14504df26c430dd13a72086e5ba9897b5dd3273d0b492c404bc6506329ddbdc83279e134c03c311ddce572b46a5a73690ac701123f9e25a9bcd3b0514a4b8bb256be8ff04034747ee40cd0fc03135c67e81764c55750dc4766b9f099ee7ca3109d5d4b0e8f0eacef8e9879d2dc962b8080156e98db18262c1f4a6013ddaa6773135769306d0c621390ec8a6e2717554b6249d46404ec9d1ef70c606ef355a0a74c0642e0d66be4ea3dae8a571e930058d8c5c1441cf5b9ef7216906b63e669b25ae3c49ed58269034b44472a47bddf79803cb2eebd2f1202a32020bfec9adef127fe3bb9d7cf3becbf4c2a4ce4a4eb83e2c4f920e0c746e65e68304f3beb5fddb9ce5c2b25cc2ee862736bec3b7e5081b3a97cf0fff496678879a0736119c4ca41c597bedde2ad40ca265b49deea7e6dac1805fe2a955166dba92063d5b782d7ca6c96736ce630b813f292d06b9df7949488ab92ecedeb48c47d505d7436aaaf3eede9c3c599c4b3208729105b68cff2bce45b92abaaa802ae9c30da8ce947887aaf4dd75eb083753b1a019768e98ac9291d596bd021660e8b09401270dd13526677127b5526ae69669952d188897e577f9166b62d5727cea91d20741613dddba467a85d8e7d4dbe54226c4c662fa311269714e9dda38858ccae90daafbfbcbd8e64abbf5ad0630ab8d7ba77355865691951caa392aa51d23d89f01791f9930ddabe1ea2d9e7d81821306c61714c40ba437780c94372e341a8a890ab7a9fc3663a1d4c57bfe1ceb5c4e70cec7cfb05ea250b31c8b0e8a5fd5d8c60c2251501b73c851d0b6f0bbe401bdeffe4c70b01fb694d8ff7b51e29d6a694c03ec62aa1c55f941e61d0ef154665a90975dfb95dff00919d7e478062193300a0ef443ad37d039211f9d2a74e134201ecb9cc360d26a6c6ab2522cc774543b740b65134c6966efe3a0f8fe17b1b7246777cbba39fcbfc25509a3e2f795d32a880c27081c258aa2235f7e5ec513e77b4a0609c4e287fd399938c974187c99259c080ea6ce1274cf00de0e24bb3fe91df5ee3db8e25d198d4e2ea44a01d87ee2170895918886d9ffd7a88e58b4dd28f8d558285cbcb0b9ab8359d0471354f587fd01f06b6b6370bb281a601a68eaeea4c154901fa1878184a05b6f118145e35ee409d9dbeb4b73552e85ceb60b4c96de91fab5f754b237b6e60673af96a7e603b50daa04a7667ccf2d78f249d81e32136b7a3fb2e83740a1546d4822bc99f6c05c04081bcfc4aec7a6fb65406bd342bf0adde07270d9495954234079b65fcdb3f3063793af6756edc45857e306464be5508e349ce080e9f62bba8fc54fc35c6b0c042de94bdf761a460654e6dbdec4cd8cd84ca3c96d4b4644a7ba2d2391d78647081373874cdd6dfee70fc440738c6852a817e993001108933740bb96d4b0661f0d73a9a21c46b14cb83f0f2149a41a3fa1a90db18885a871493309e61bf05ebe0ca14fa3d3bd7b03a73e3559e2d9ea06166c1385cad8c2d3e324a30fd872f1950851890b4a1178b1c989228e021060b31eb8eca71d04e8502e59274b249feba30c7769b01ae87bf0dd2b4f2cc75f2044c7c4c3ab513e6d5af7f328286bdf112e0633f600c2c75be2483e412a84f3b137cf59ae502d11c1ac645dc9763e8d542f085135330e6a3441ef6723d1b0cb22169667b247a97ba70b9928ae2471405b4b0a9c97b425f6ea3246ab58a9ed0e3fadba4434f4f9ed5fec0ad7e218393ff6db05fba1eecd8a13fcd0f4b547cfe23b4d3643b7593ce5e1c43de8fab5e17b84ff0e14d4c8434bf5d4e3f084ba3badfea3bac9bcd1b34597ba3bc9c48e3a057267054dddef3bd293dfb560be0fb64983908a43fc118f287afaf59eeb66a9f4b2d708892f8501dce95855e5c1c31832d16e2aeaa911789dd46dd96502fb216546fe025ae9b4ea03a8a405466cd20206d2eec109d08601dc87bc2e72d1bb82164e8c0f2b5957b48b1576a08f536cc219e778e515d713090d6ffc56869244a4428f56094d44b2be23fd8931c40202cafbab749bb5441719994324361dc4b676c21624070111f7dd3a8fe3fe0b7cfdd37382e93fa71e339b1aa0f69657972a55c2684903e5a9f657c728ee65ac77767579490331b73daa6e803120e47ce95067f81ea809aeedd5fb0360abd61aa5da69137701c6f008adfec99b00d64204ac4249b3dc0d8c08c00e4f7009530d0ff3aab1ca3d1b7297304a03207119298eeec646b56502fb0eb810172276b77828de960d4371dc172bdc09f477d53c29a9f45089c49503f3c48613f70974be5a7e2db0a6db1f2e08bbb38ada1469e42ba96c7e664b2905c5b91add5aed6b08c601d6bbc5cde8ec07ebd06ac13259c88f07bafa995189048a39a2791e85cb30b99d51cc943945f8c1c23e0889b6462741b9d757290e0c040878228722d092c7037c80ca0748e8843e25ed1f35ad5d0b19229594b9793d0fb52d3e69f38d8f37590086b7fba6e50196c9b22b4fd3f4b2b1f222d5a10244054593dfbc5b36073991dfe5b37787c8bc75acd478844045e9448b2e01682d3009d1f21d292e28708314d289710d4c316e17ea2dc917eb4cdf3605eef3d460941fd0f628926aecbc1cc58ea18a06fd8ff6de0591c697987c8493b6f103924b3ad2a7e6c6d7761d32d2293ffe8bcb2f4505948576421ef9968d7876d425a08cb2b844e027f44681c9655f085ff3aeb270cebc0430944214460675394056899711c156a57666477ab0d00d361443a34dfcc182ac615af490224be0147dbb8b75767148563a1976b560a138fc6600ad3cc3282fcdd57fe810b04158a31325a17aceed1e801cef581565f18e73f7a119983dbc56b6c43f91cc236ea16b8878cca83b104e621ba9a1f38bdaa360ee30428aafdaa7bc5c970e67e30ba8fe71e7652c26ae4e3418e891016c0dd23fee78d1b9b7cf26a572bc52bd3e3a9d7f3ebc98aa51aabe53e752ad0641bc13d235893a272bf106c1b55e86b2bb9da8d1f89baf7ee7e933b3ca8d3b7a3e3093c3c43e686a826addab1bfda32c04e722fe1189df1aac7f2107e8a6aa9ef89b64d0fd2ea2536e7ded99560dafdf3a504493e2913902686774863084bf4d5557ce3a993f7a11d4c9ffc5af8cddb69fe5f7e8a9c80c2cad3ef9774a251f0d030b3a123952c72b732b05b5d1b5e4acada11b69607f899a8ddc9e84c883f2480a53a4c269d28d5fc241fa133ef9d7a40f2de1c67a61508db78ee697df3abd1ba2bd1f5e05dea47288aacad5712cfe406e3dafd0230b5f315dc319be10268cacdcf76198867efc2b05cf816ca3bd7c363ac37b03192efc129acdce301b1077bd137be2a609b07256ab6601ec2d4ca6daa55e0f3f4789e74e96672829f88d32ab199615d1d90a0e0681c3f3c29c75e661a013f8130b39ead94db39a3535ed241538eacddfbf2e223b9b46d0bd5b68bfe7ea7376c16587403dbba3c7563d94bf320670d96ce901f3340598ebe8197954426eea1385245af9e79cffa9d7e3284adb3d421d24b545bd6352440d396b56b96ba666e339df5b3be01990daf7ca3557f8070c4ff79c0931fa6940a327d29dfb0654ed00d6ebdef72ee4fc6cda55f0d3bb0172dfaad522425421c855557428ac647d20952965b299d194b5b4d6f774d09105d2aea8174c70d75cd901898a2cc7c8cbbd8be0c709464ec780b5e1b05e1a5b69b2ced334ec706a231693d73b94058e06a6e64a1000d41d0a6a20a5575c3397bb5a66bf0faaefc9d703bf87aa99dcb945cedcb61924b9c957b7be212deb682dd3d862b04f473a41e46a9594cd9d853b2511eae7db523e5a51aaeffc69fe5103ddb8da9ed1a8c0bec321d0df7895fcb4810157b7cf97a88c62b7de24fedc021f4cee6b03f70eedae210b9189bb4865e75caf24d230788f33da7fc51c325bbfaa17d381374afc4613186ac434b5ed4463b9792f59d85b265b00b544818b2b9244275c724f32206e2e1278e2250b211fa4cd0dede23c6e36121ecfe11978dfc28b86cd21c89d07ce6e67ffee976f9ec4afe68f804c3dc6765a0645cb011fcdd58c57a1bc80f1f33e55c98b62e2fe831f4104e79a4f985faa3afa1c78b5079c860198da9b9635b4fa5b874c94d56d9dca474b6b32687cbc4b80e2235e3b3ddeac6c3da3f752f5e434683e5954c98940395ea84820e332b4a2819f453ed5914c9630461c7607f1febeab2d64a743f6c04980e438d9be0bf73df2f1c012fe412cdd3994fc7626b7a24fca5843925cefa42e6df01466c6204c7fb3d7f8edb9f38d0e13bfcb09276c400266f2233b9708b47ec7afeef69fc26f64a6cf0f8fb64892e0d4fdb1c6638996ad4f80569be8b542f09e422afcb70b6569a4fab0ab5077fa88e637ac70f1d588dc086a119d53ba1073d83df817b9f10347c202852a3e7755442e0e97f4a8a8eebd4637e3f35f9e23649aaec8d77395ee01674d625180f3be406c587f732203e8e09146e07d4e2a754f118d45b59fc8680d47632f330236265c97f841533f4e215949a98d03007968acf1a335730112e5f8cafda1de78df3f6bf38dc530ca03b3c0d7dfdb01ad2ce42bbe59483e8b7a3f82939f6e39a2bfedd8c63d42a1d03aa3dcbb6c7089ac46de5308ca35b396bc771633202aa2f2309dcaf8f06e373d670e05e714889d337c640e138983f91738e7096504675a666f987ea858ae222115b45868ca3db65d7ee080c40a2f6c4064e7d23a91b4f1d2330c21b2110fc1bfaf03ec1d8b79444f4a16da20f586f027633508c193fd9abd8ca0cdafb0989b2ec223fa34738c58e999253480f9e18b50e4e8e0984d5f996f2e0a45c60cf3df1d6d1757e652587f0daede3e9ec7142084988dfe9b6b61085061a1a32e7e78e47eb664b18402f6e3fb8a73ff3f0f74cf17c27997ca676e9f98f9966de59abba9511228fdf2b4b18591fdd56bcf13a57b2a1f5befa0fd27db2e5d80450b356087b51adebcf32186bc4008abe9cfd69a3ec6c8cf07e085e0ed82c81bf527e68068107b57320160ee5728bcbab1fe53f71f2f2e9e3abe74180cbee52383d739d0b2a9038dc1aba1e0500bf8b97c63a3639974024bb83641f0031a006db4b8de386e86743776c37031ad7893638db8202b8e3e1bc4b4ebd24512021b8652c42d0c3e9ef56834fc8600715ed4876bb94d2b88ee6112f6ba90cf7f351a463eba4e7bc9b1d8c50facf2a55bcdb77ab40f72f1caceee4824681471ac0d8d501e1a33056286b9c74ca4a9212f5c26d00249a205f658bb5e35a630f5cb4fbab2e546f004c37955f940e1730cfac86698c31de0730dad0bf1eb5a478da073ede45c6155ef45a94d10b72be776f9c4d8aa4e730120087612e1f3f2bd0cc514bb78df127da911d3e21c59620cd120f74b8d92b7014382551d93b91c371f84a4a648e901df3e4a4afb8f7fb6df6de84eebf8419f40cc6a745076fa489ebda46ebd0a4aa7a0efb96c59364ae12d4d922c0e3b12379ca5612610f03fcde40ad208dc279f6a4202145cd504d20430eb4e16ed3d8f07369da4158d95f80fe20556bb18a22b20218d05f514c9cefe9d07d875cea62f4fb7a1b358dcee5ad1ac08f735fe98f11931a16a96b5f91d489f1574da1fa32ab4c4e81ee95da587aeb20305e7a94a8df6eab9567d5525ca3dcb81787d83cc368d66542f8229f055125c03001883b0947575458812d7229c5090ac7d5fec1b6fe52385a31ddd9ec88ac60ed481d96e161eb70688ddca9c34e3d29c96bb4d4c0099a69d6e15c319249b020314ac6238d21c2e96d5bbe9c6010ebef3ed7a5741c78b40dfd45f23ce438eb2019f39cf39989247d07460c0a9e6c245cff2663898fb8dc18678dfc86b2c44d80f6b994b9a1e96ece9e6ee2db408591b3d8533ac5155a33c16206a603a123ddd0a9866fef25a5d5369abe28e8829f8cb0d1cb7b3e49d29739d221ff6c6e9a26205d0e9d8306ee182dc202c840c277cc3b388b3f59307a766658c8317062dcb0901fe44761f48941ec24d2a1a4743f45eede0253a45c6787d22b047b2c8bbf1370284ccd98d973d41f3c000e64c7d8dcda32829951f376207a0c2e8de42b4105c0fd76e53cba0b6e2dc8d01cc13a192df222b9ae38607a1f9f472e438d9af45ec00a4b6374c1ce0023ae1a274a30b2849d64d800e94eee3aa0ff637e1989a88d10ad70bd8b4c380b6dd573973f2b95a6322dd59b3d20527bf5debb8449a59c01b089a90fa9090d59c5ec6f29a91e6544e43137f68897d40156e8e1d14664f7a8406c3117b3dc8e7a96fd338066cd80031a0ba76dd194f846d0464aa7b052e66190098017166366187269397694bd89398d7a8e3f94ed1e713573bd2ab449d85f3002676aa3e6e072cd74d7372aa29089e47d83b261f8ec970bc60dd80b77b0c3e0d1f154d5c0ad71cdd3e4738ab6cdfd302d58cc44c9e72248952c262dcca517a0f7fe04e6baa17ab43db16da60c54572d6be8b3bbc556bd0f6176f21600a606b0b73403b71e66aad4bf39297d2638139e8b3aa4b9d84416402ec557a1dbc066c0977a85b1177f62f0e6f0165f5e00305c39c18293a7d23e58a2540958d2de9c5054f54237c104615e58a52877dbbe0437c7811d098f31c690e146a327d231376091820670003b0299ff17940b8a947caa3b43de2cb3b0e38568378723ea87acd029c2a5709766f264bf06c6ea3b5c44fd514512a04542fb11469aefcdaeab6e80acbe04b07b1e44c2a1910e9317064efab5c417f5210d134fdd3d6979e060f8009cc0b23dba29061dc65b2f8695a4d894a0c6376fc7ac9c92201c02c553b334707df2597bc098176cb5a4e0f39b341fa58deb83da6bc2e7c64fabb49a4d35f680d50973d4355ef50773b29b0d5ba6203c81bc4eb3fe1029d395c5b7c9cac7da400c75e82a82a0599645714158e427f27469df1a3f9da5df0d5bda8a68e11ea580b055cf211a8c1d35324241e3eac2176d690e38f749564a1f3c740905788995b05aaa5d1ad99f2930b8f355a4b3612c9761cd72c2d3e44af21d973d2554a82270512d62398c135ad431bf1dcee11eb5aef8e79584b6c7e59f2b6f81c4b11c9e0048f998a7d72c681a13b4fe8cab41fccab31d5e07a8d619bb9f9dfd40efac57e04a883844b02a6358facf3ee25e407900c4fa572d1da4ed9af916991affbf119078beeb47d484ccc5429285a9e530e66ebc99d921fbeb4e61a2bf1ac8b8c7b340a665ce03447b2e95df083ee3eb59c63421583bcf33b3644fcb851ac607e63d70ef5629be2a079bb10b2dbec2ba3b3bc7dd61f83d6f9bbc2bc5a30836d0ff8270a82565ef62b39616dfc694f16e773682f6e6abe42b65595cd4d9249e2bb4e3c019b17a7dcec6d742910124f97507943127282d3c2fdbe41b52348215aad744104c3dd2ba68f3747136acfa7674c64c7c5c488b9f415ed45df5cbed5fd79401c08f16360ffcd8161aa7da3c5214269212cae4ad148f15007ea0a257e8516a2a20fe9faf40aae72c368b77a1a7ddd7dd5bc8b1d87977fa6bc1d6191a79148b3290f5484a825ecfded4e6d1018488de22116fb54f51322ebe33f9d9b1d61e2669903c6c17266f46f9aa134c2a171513f01390bbd3e5987955eafd25c61a19a38d80ba4f423671ac2d1eb9a1e529b17c0633c4b336cad8450764576197475f2fb790a840e6cb44ddf73ffd813759193e68262a96d5d0ad0cf720149c4e461e7e8120c08ae3a1fde1881f1be1616695b26e61b90a5f9346dcd8560ba57caa04c75b10c6c9cb8802507801fbed5023e104b4461b82f2b929f4e0a9a942b4d7f4e897d0d583fbd118ef1aeed2687330542de892cc51f4ff6e7184a58b9c5049fb838e600de79ca8ba976a06ebd53a89c4fbfc34070adb5cbee85a3db4e8eb9708ba253083b7ee96e5fdf7de5796a93ba6a729281e89307c8190beff53a9949f3f55d500b78f1dd1e92cbc7ab6368c31dad15d9f9bede1524fce938fd97d85642177f1a05edfe5412a0a2dd60e58a320f44eaac09e9aec40a6dac063cbdc3822795892402b42dbe1ccdcad777066c9a3c0de3c0ca08a8d2a1d927baf06b730ea6a4ee950c1afd7e8d5fe4b63bf69100deda5ff7647f175ef695c74159724086b2511d130035260ff051d6ee0d809fb5f8240b51d1b0a9b9c323d6c28d3248b8a2197ca20f0cc6bce7385586098a616d098c28db26603121fad91c891b1219db714ae6350fe63c977da6b744788cbe892014b0fb179b18d2235a4c29e353f054c1e9251b068488ceca6feba7200ab7b9ac3c1546013bfe43e7e54c88d97e8b95b69fcbc70da9f20b41e98a944f80731497e6d2899ec07250fd0b08bbfe8df6ca9d8fab9e07ed7a27393e6ab0f1ee5dc35915e099baf529f15853a1487794797a1ea5f60d01debcff56f49a8762e3fbb1746846cb04b2047e3b90e9dfdc577024fd50d89303baa1ece572dea74a9dfd47c88c690a374f0d7e277dc0a4d7e8be914be7348308b630bdba8987e2ea13012217ba6c1f3cba432a3fcfcf26a129c6d0a0f289190b4a3e418898307b6e503d97ebd5013734ddefee2b32e91d282b1acb4e954c6f06e484717e9f6d305e0242c1c3b3ee5f6277eec1555e945e0f9773e423d2318c0ec533606b43d2e4c710e22630697b0e90ec6d772bdb5c94718561ab1846e9310d65a112c3bb2dae40a95a29a703beb398a7ac557256be4c735a9a89da5a63390aff29d02e32683419e30dd11d36b367727115a734791be878e493ddb876d1ff0d709539f8fb45dac5974e034bf57f298d7e99e02ded50dd4392b206fb9ea7cd02fb90b568632f9c2f1404a7f46b2db28630be5323e0beba01c9c52be8e7c1d300ad45c732a447a1b46f14d9c264335ae6b3ec8c432d882816219f80cdeeca9c0daab6cf88026425c9a14208b13f0b16ce65de090d286026ce420eae21fe480e063390be3ec8ff28cfa9cbae095b6343aafdc1028050bfff8d32fa979138f6f60681843f3aefb24c23b888cc392437e9da504226bf80f997b6c3cf9fd91973e1081dc77509fc2f170dbf7aca58fad691813f7601963507a3247f8988b88b922e0464294471314a8ccc85a477c96f64c9caf5c9017365044c203f2d3adbd978fc0f04d8dc34c1a98f3bfaa4f46b7f5f220f9fe398efc1e4a8cb01defb29427b86097618197d2d594a6c31e27c36ad9bf4a5d0a352c1ff9186a827d8d384a0433500deba383186d5f6dc07c3204bc4e9c7b0455ec07e39f82ee917ab053cfcbfcb05a39f7066cca47c1e8b2e0cd96397b93495dc53a45b4b9aea45d687ea1e10760b19fe015082e8b88e8811d54b6e533a510e387ce7dbbddb430bb8b538baed3d0aebf558867f43a8e4a038e511f6f735a6691fc782dda15ad001ecf601904dbb01a3aecb9fdbf1bd5a90222965e42179a4ba8a148e474919889a28eb0b91b1f30e9acbb7dbe30f3d7314deaaa76f2dc27a658dd2964afb79b3ce2890b1c866dd03e706449088011091f8e742ffdc6b420f848985b2211748dd6ca34ed53051a20f8178fd299c360ff3b69403298ec39c1c3576b43a29749c15e687e3772b266f0e2567c4e88aa9ff8bd7f4898801c41f2d1b0133de64e827beba8d6433cf33f20e1d7bc0d9e27d05454539fec6b0834b555b5770ae771f470f03005f2b98773e0b5360a993ad9a147620f849057e77531426520beeea808071924925a7b1855209218f0ac86b237e0ec4b131b2b63bdd1c1ef74842e5cfab5fcda673aff1fdb703e2686b57d713490b0b576bf3cc7a86ce9c8ad4ee320ae750a46453f509b3f90056207e950b877f969736a49387ae3ff8ce793d61e5a0591886fadbef4373180c8b221ec8c9e40b37e7473ac16501552679057da6766f210aede37e8ee760610fd5ac0e35ba0404aed3bb6c17de532ebf574d47377b9a90594fde8c96cf61cc09c479f81f0f7f8ef2473c4be207027fa6901508a1898c022cc30986c2dcf2b201e68d2226820fab3251f233c3580644125a356dbdd1c30eec406bca64e904700d689e1a0a38bc9c7e8d91d3d4ea7049352902abd252bd9fb28fffe6bb12c1ed050dccba204f15cb3f4c9ecc85688eb2bbefc6d53a3e81012866311a88752a6303684d8e827b27b4fb855093b560ca82b22be87beeb7905bbdd295c81345e3e7015d11e983c0c12aa5cc20cd48105ce0d1bd332ce9c1a3af9614b08af42d69af0fa8788104043e374554c0cd194b1c94bae9d50e8c5c511e6d93569111d7e12b0b2330e051132470f91460d01da30fe8d5b3442251badcc0f0fcfc5cbd517db2061d0cd35765db01278da067b2d469e9fac3979eaf07bb85bd7ac06700794df3096bba6804df1b442c2dae56bdf2012bbb04f505c06d7639a7ae45bbab7f5039084a26ae692f9c6c342f20cff3fa4c3dcc39d35601073e0cc0021edabce5866e0bfade771bfd0f0ac243c2555f5f4c3e3986fe864ccf47d93c5cf157b892a4480718a309c2c3814289b0e1a20baf061003a9455b67b36ce951f024ff1b8714b707a829afc20d688b08b74aca83c55a33ad614bbc5fa5099500d92caf61fef9150b2563c431d915723730fe5f27d02893c42f70cb6ddaa3d0018c48989e06e0b80598bd8b6c932d0d8866ff48953a7b8a083b1ed51604d9c29a94c04047e87d620419b215283ac0fa38b38ba05f5585463e4f4543c53b081e8fd8e0447a21679f0ae4f6ba1523f7806b7eb3f57b492db5cdbe6bd032d5ccdd4be8fbe352496e6f0bb5f5f1977177977b4bd74ea2ed2b6908a9694415546762578e16fcdb11fc220f13a427693db462639f72d0bc54d49c1b9f14dea9ca53837adcb7e814a3039f0c1881447a31c1fdf02831be24836766120baeac5b81f5ec189ccdd5fd43b98a0f7561ec58e0958e2f42e48f6c23ed0d5d86d79b652b9c04d023fc75f87cffe10f84aad3f8cf3c684f46ce28a19e357cc3676080fb44e72ddba7e17e67246d960dcd5cdbc5e4b91a416463ed02c2eadc1a48bd5aec15bf082ec5e7fec1f4f01a0e3e1bac65b6062751acad645ed00c641be825e88cf8f7cc51ffdf934e4d60020a96e23b5ab46e37d3daa2c9947e8783d08246f32eb7d52884741c16a6b8e23609cce3ff8e8dbdb95e727bbfbae679b81ef17c45beedb1d523400b3018e2c8710564c41d2108f5368cb8c960ab7587f571853c0da68bda82000f94b38631aa3b05c4fe8d45608f23f311dedcd1fdfdf3a6bd9970dc779282d4dc38de8d30c53205cfbf9a9045a1fbcbe5cd0909025420a324678342fc8b39a32de22b7f4604960a96b6ebbbc8c19f63e6ab953f4d88497b8403fb8335a12b4287004de5fbfe83084e5d16f2823d57404d54a0339b01c63471d8b9ebb001ddb2d09e4874eb1bab0a542ecfd8d9ae5fb63f4f557e568532e8be80c76d00c7a29b8229996156d0180b9d3dbfed3d49738abc1d08fae6d9f1bfe97240a595d95912f2328233a76e19020432d31bc2d0dd105d3e18b3b2ad4863b0585548954e9b0fd4b04bd303e7850421873ff2b756a48de0411796cfc9d682104aa78afc4f5bf816f0a8a712277e0d"],
"untrusted": false
}
/get_alt_blocks_hashes
Get the known blocks hashes which are not on the main chain.
Output
- blks_hashes array of strings
list of alternative blocks hashes to main chain
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (
true
), or when the daemon is fully synced (false
).
curl -X POST http://127.0.0.1:12211/get_alt_blocks_hashes \
-H "Content-Type: application/json"
{
"blks_hashes":[
"7de4684a0c1ed90a257865c6a2cebb9ad896545fd4dcd8121088807038f3df42",
"f94f80f930a2a6844b49eed3e4f3a53ea55e8b02695be6f7360c344c419e821f",
"19966fe8963fb8e60a33c778ad1a91cceaf2e554286e3bb1ddcf605d7c407e14",
"798b2b1f8edc4ebb87652c9156de20ca8bd7122baa9c5e2e9b6cfa79461eb67d",
"365842c65e227972ce400e0ce4ddce3aab136cc179509c90420255b03cbcd354",
"7be80b37d074996d18715b81eb647a9fee49d52f859092529b189979b4280883",
"dc0642c7301491566ca0d013ee0e4bd694e71ca5a8d8a2ec5ba81540636c474b",
"11d4b8fea795fcccc5b913ad547d872b1c431446a1536bd3ff27055b96fabc03",
"133024be52fdb76f6042ac04b210297cf5bba87193eaed5dc0a1eb1b3b6955f2"
],
"status":"OK",
"untrusted":false
}
/is_key_image_spent
Check if outputs have been spent using the key image associated with the output.
Input
- key_images string list
List of key image hex strings to check.
Output
- spent_status unsigned int list
List of statuses for each image checked. Statuses are follows: 0 = unspent, 1 = spent in blockchain, 2 = spent in transaction pool
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (
true
), or when the daemon is fully synced (false
).
curl -X POST http://127.0.0.1:12211/is_key_image_spent \
-H "Content-Type: application/json" \
-d '{
"key_images": [
"e550b4d67bba7ad0b7adc1e4c19fd287e78b393c23d892e51677e2506880e443"
]
}'
{
"spent_status": [1],
"status": "OK",
"untrusted": false
}
/send_raw_transaction
Broadcast a raw transaction to the network.
Input
- tx_as_hex string
Full transaction information as hexidecimal string.
- do_not_relay boolean
Stop relaying transaction to other nodes (default is
false
).
Output
- double_spend boolean
Transaction is a double spend (
true
) or not (false
). - fee_too_low boolean
Fee is too low (
true
) or OK (false
). - invalid_input boolean
Input is invalid (
true
) or valid (false
). - invalid_output boolean
Output is invalid (
true
) or valid (false
). - low_mixin boolean
Mixin count is too low (
true
) or OK (false
). - not_rct boolean
Transaction is a standard ring transaction (
true
) or a ring confidential transaction (false
). - not_relayed boolean
Transaction was not relayed (
true
) or relayed (false
). - overspend boolean
Transaction uses more money than available (
true
) or not (false
). - reason string
Additional information. Currently empty or "Not relayed" if transaction was accepted but not relayed.
- status string
General RPC error code. "OK" means everything looks good. Any other value means that something went wrong.
- too_big boolean
Transaction size is too big (
true
) or OK (false
). - untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (
true
), or when the daemon is fully synced (false
).
curl -X POST http://127.0.0.1:12211/send_raw_transaction \
-H "Content-Type: application/json" \
-d '{
"tx_as_hex": "01f1634efb..",
"do_not_relay": false
}'
{
"double_spend": false,
"fee_too_low": false,
"invalid_input": false,
"invalid_output": false,
"low_mixin": false,
"not_rct": false,
"not_relayed": false,
"overspend": false,
"reason": "",
"status": "Failed",
"too_big": false,
"untrusted": false
}
/start_mining
Start mining on the daemon.
Input
- do_background_mining boolean
States if the mining should run in background (
true
) or foreground (false
). - ignore_battery boolean
States if batery state (on laptop) should be ignored (
true
) or not (false
). - miner_address string
Account address to mine to.
- threads_count unsigned int
Number of mining thread to run.
Output
- status string
General RPC error code. "OK" means everything looks good. Any other value means that something went wrong.
curl -X POST http://127.0.0.1:12211/start_mining \
-H "Content-Type: application/json" \
-d '{
"do_background_mining": false,
"ignore_battery": true,
"miner_address": "RYoKsrxkNqTKByFzQveBUhMWPwwwddzvPR5S7sqjcLkEhXHqVCc6qJQ",
"threads_count": 1
}'
{
"status":"OK"
}
/stop_mining
Stop mining on the daemon.
Output
- status string
General RPC error code. "OK" means everything looks good. Any other value means that something went wrong.
curl -X POST http://127.0.0.1:12211/stop_mining \
-H "Content-Type: application/json"
{
"status":"OK"
}
/mining_status
Get the mining status of the daemon.
Output
- active boolean
States if mining is enabled (
true
) or disabled (false
). - address string
Account address daemon is mining to. Empty if not mining.
- is_background_mining_enabled boolean
States if the mining is running in background (
true
) or foreground (false
). - speed unsigned int
Mining power in hashes per seconds.
- status string
General RPC error code. "OK" means everything looks good. Any other value means that something went wrong.
- threads_count unsigned int
Number of running mining threads.
curl -X POST http://127.0.0.1:12211/mining_status \
-H "Content-Type: application/json"
{
"active":false,
"address":"",
"is_background_mining_enabled":false,
"speed":0,
"status":"OK",
"threads_count":0
}
/save_bc
Save the blockchain. The blockchain does not need saving and is always saved when modified, however it does a sync to flush the filesystem cache onto the disk for safety purposes against Operating System or Harware crashes.
Output
- status string
General RPC error code. "OK" means everything looks good. Any other value means that something went wrong.
curl -X POST http://127.0.0.1:12211/save_bc \
-H "Content-Type: application/json"
{
"status":"OK"
}
/get_peer_list
Get the known peers list.
Output
- gray_list
array of offline peer structure as follows:
- host unsigned int
IP address in integer format
- id string
Peer id
- ip unsigned int
IP address in integer format
- last_seen unsigned int
unix time at which the peer has been seen for the last time
- port unsigned int
TCP port the peer is using to connect to ryo network.
- status string
General RPC error code. "OK" means everything looks good. Any other value means that something went wrong.
- white_list
array of online peer structure, as above.
curl -X POST http://127.0.0.1:12211/get_peer_list \
-H "Content-Type: application/json"
{
"gray_list":[{
"host":"205114005",
"id":18227960725881384098,
"ip":205114005,
"last_seen":1525540510,
"port":12210
}]
}
/set_log_hash_rate
Set the log hash rate display mode.
Input
- visible boolean
States if hash rate logs should be visible (
true
) or hidden (false
)
Output
- status string
General RPC error code. "OK" means everything looks good. Any other value means that something went wrong.
curl -X POST http://127.0.0.1:12211/set_log_hash_rate \
-H "Content-Type: application/json" \
-d '{
"visible": true
}'
{
"status":"OK"
}
/set_log_level
Set the daemon log level. By default, log level is set to 0
.
Input
- level integer
daemon log level to set from
0
(less verbose) to4
(most verbose)
Output
- status string
General RPC error code. "OK" means everything looks good. Any other value means that something went wrong.
curl -X POST http://127.0.0.1:12211/set_log_level \
-H "Content-Type: application/json" \
-d '{
"level": 1
}'
{
"status":"OK"
}
/set_log_categories
Set the daemon log categories. Categories are represented as a comma separated list of <Category>:<level>
(similarly to syslog standard <Facility>:<Severity-level>
), where:
- Category is one of the following:
- * - All facilities
- default
- net
- net.http
- net.p2p
- logging
- net.throttle
- blockchain.db
- blockchain.db.lmdb
- bcutil
- checkpoints
- net.dns
- net.dl
- i18n
- perf
- stacktrace
- updates
- account
- cn
- difficulty
- hardfork
- miner
- blockchain
- txpool
- cn.block_queue
- net.cn
- daemon
- debugtools.deserialize
- debugtools.objectsizes
- device.ledger
- wallet.gen_multisig
- multisig
- bulletproofs
- ringct
- daemon.rpc
- wallet.simplewallet
- WalletAPI
- wallet.ringdb
- wallet.wallet2
- wallet.rpc
- tests.core
- Level is one of the following:
- FATAL - higher level
- ERROR
- WARNING
- INFO
- DEBUG
- TRACE - lower level A level automatically includes higher level. By default, categories are
set to
*:WARNING,net:FATAL,net.p2p:FATAL,net.cn:FATAL,global:INFO,verify:FATAL,stacktrace:INFO,logging:INFO,msgwriter:INFO
. Setting the categories to "" prevent any logs to be outputed.
Input
- categories string
Optional, daemon log categories to enable
Output
- categories string
daemon log enabled categories
- status string
General RPC error code. "OK" means everything looks good. Any other value means that something went wrong.
curl -X POST http://127.0.0.1:12211/set_log_categories \
-H "Content-Type: application/json" \
-d '{
"categories": "*:INFO"
}'
{
"categories":"*:INFO",
"status":"OK"
}
/get_transaction_pool
Show information about valid transactions seen by the node but not yet mined into a block, as well as spent key image information for the txpool in the node's memory.
Output
- spent_key_images
List of spent output key images:
- id_hash string
Key image.
- txs_hashes string list
tx hashes of the txes (usually one) spending that key image.
- status string
General RPC error code. "OK" means everything looks good.
- transactions
List of transactions in the mempool are not in a block on the main chain at the moment:
- blob_size unsigned int
The size of the full transaction blob.
- double_spend_seen boolean
States if this transaction has been seen as double spend.
- do_not_relay boolean
- fee unsigned int
The amount of the mining fee included in the transaction, in atomic units.
- id_hash string
The transaction ID hash.
- kept_by_block boolean
States if the tx was included in a block at least once (
true
) or not (false
). - last_failed_height unsigned int
If the transaction validation has previously failed, this tells at what height that occured.
- last_failed_id_hash string
Like the previous, this tells the previous transaction ID hash.
- last_relayed_time unsigned int
Last unix time at which the transaction has been relayed.
- max_used_block_height unsigned int
Tells the height of the most recent block with an output used in this transaction.
- max_used_block_hash string
Tells the hash of the most recent block with an output used in this transaction.
- receive_time unsigned int
The Unix time that the transaction was first seen on the network by the node.
- relayed boolean
States if this transaction has been relayed
- tx_blob unsigned int
Hexadecimal blob represnting the transaction.
- tx_json json string
JSON structure of all information in the transaction:
- version
Transaction version
- unlock_time
If not 0, this tells when a transaction output is spendable.
- vin
List of inputs into transaction:
- key
The public key of the previous output spent in this transaction.
- amount
The amount of the input, in atomic units.
- key_offsets
A list of integer offets to the input.
- k_image
The key image for the given input
- vout
List of outputs from transaction:
- amount
Amount of transaction output, in atomic units.
- target
Output destination information:
- key
The stealth public key of the receiver. Whoever owns the private key associated with this key controls this transaction output.
- extra
Usually called the "transaction ID" but can be used to include any random 32 bytes.
- rct_signatures
Ring signatures:
- type
- txnFee
- ecdhInfo
array of Diffie Helman Elipctic curves structures as follows:
- mask string
- amount string
- outPk
- rctsig_prunable
- rangeSigs
array of structures as follows:
- asig
- Ci
- MGs
array of structures as follows:
- ss
array of arrays of two strings.
- cc string
curl -X POST http://127.0.0.1:12211/get_transaction_pool \
-H "Content-Type: application/json"
(some info was truncated due to too high display size)
{
"transactions":[
{
"blob_size":65029,
"do_not_relay":false,
"double_spend_seen":false,
"fee":77000000,
"id_hash":"bbbb24eff14a838b9f9fbdd9d2b9c41f5abe44808f6bf8434e7a4ceb6f71d400",
"kept_by_block":false,
"last_failed_height":0,
"last_failed_id_hash":"0000000000000000000000000000000000000000000000000000000000000000",
"last_relayed_time":1541270092,
"max_used_block_height":192329,
"max_used_block_id_hash":"e01fcf11731db0d3157cf1aae2f205b28de87c7e6f25b88180a81ba9210c10c7",
"receive_time":1541270092,
"relayed":true,
"tx_blob":
}
/get_transaction_pool_hashes.bin
Get hashes from transaction pool. Binary request.
Output
- status string
General RPC error code. "OK" means everything looks good.
- tx_hashes
binary array of transaction hashes.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (
true
), or when the daemon is fully synced (false
).
curl -X POST http://127.0.0.1:12211/get_transaction_pool_hashes.bin \
-H "Content-Type: application/json"
{
"status":"OK",
"tx_hashes":"â–’â–’a'â–’â–’â–’Ä€Uâ–’Úâ–’â–’â–’â–’lâ–’iâ–’â–’â–’â–’Pâ–’;*▒Õ▒1â–’â–’KJâ–’fâ–’bâ–’vâ–’kgâ–’iâ–’Gâ–’&â–’â–’â–’â–’7Jâ–’â–’GPâ–’oâ–’â–’%â–’'ZepUʉ▒ â–’â–’9QJ,+â–’â–’ â–’jeYâ–’2V)?â–’â–’Iâ–’7mÓ€[*[â–’râ–’Q`â–’s\fQâ–’â–’â–’â–’3φ▒ٻ▒Yâ–’â–’â–’â–’1\râ–’Kâ–’Hâ–’â–’â–’â–’4r\/â–’â–’â–’â–’Qâ–’AÔ—&oâ–’â–’bâ–’QB▒▒▒~-J▒ۇ▒r▒ĸjâ–’â–’sâ–’â–’\/@â–’Qâ–’iE%lâ–’jâ–’â–’8\râ–’suâ–’N\"<â–’@6â–’ÆŠâ–’zâ–’â–’â–’",
"untrusted":false
}
/get_transaction_pool_stats
Get the transaction pool statistics.
Output
- pool_stats
Structure as follows:
- bytes_max unsigned int
Max transaction size in pool
- bytes_med unsigned int
Median transaction size in pool
- bytes_min unsigned int
Min transaction size in pool
- bytes_total unsigned int
total size of all transactions in pool
- histo
structure txpool_histo as follows:
- txs unsigned int
number of transactions
- bytes unsigned int
size in bytes.
- histo_98pc
- num_10m
- num_double_spends
- num_failing
- num_not_relayed
- oldest
- txs_total
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (
true
), or when the daemon is fully synced (false
).
curl -X POST http://127.0.0.1:12211/get_transaction_pool_stats \
-H "Content-Type: application/json"
{
"pool_stats":{
"bytes_max":13585,
"bytes_med":13585,
"bytes_min":13585,
"bytes_total":13585,
"fee_total":13500000,
"histo_98pc":0,
"num_10m":0,
"num_double_spends":0,
"num_failing":0,
"num_not_relayed":0,
"oldest":1541270675,
"txs_total":1
},
"status":"OK",
"untrusted":false
}
/stop_daemon
Send a command to the daemon to safely disconnect and shut down.
Output
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/stop_daemon \
-H "Content-Type: application/json"
{
"status": "OK"
}
/get_info (not JSON)
This method is a convenient backward support and should not be used anymore. See get_info JSON RPC for details.
curl -X POST http://127.0.0.1:12211/get_limit \
-H "Content-Type: application/json"
{
"limit_down":8192,
"limit_up":2048,
"status":"OK",
"untrusted":false
}
/get_limit
Get daemon bandwidth limits.
Output
- limit_down unsigned int
Download limit in kBytes per second
- limit_up unsigned int
Upload limit in kBytes per second
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (
true
), or when the daemon is fully synced (false
).
curl -X POST http://127.0.0.1:12211/get_limit \
-H "Content-Type: application/json"
{
"limit_down":8192,
"limit_up":2048,
"status":"OK",
"untrusted":false
}
/set_limit
Set daemon bandwidth limits.
Input
- limit_down signed int
Download limit in kBytes per second (-1 reset to default, 0 don't change the current limit)
- limit_up signed int
Upload limit in kBytes per second (-1 reset to default, 0 don't change the current limit)
Output
- limit_down unsigned int
Download limit in kBytes per second
- limit_up unsigned int
Upload limit in kBytes per second
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/set_limit \
-H "Content-Type: application/json" \
-d '{
"limit_down": 1024
}'
{
"limit_down": 1024,
"limit_up": 2048,
"status": "OK"
}
/out_peers
Limit number of Outgoing peers.
Input
- out_peers unsigned int
Max number of outgoing peers
Output
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/out_peers \
-H "Content-Type: application/json" \
-d '{
"out_peers": 3232235535
}'
{
"status":"OK"
}
/in_peers
Limit number of Incoming peers.
Input
- in_peers unsigned int
Max number of incoming peers
Output
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/out_peers \
-H "Content-Type: application/json" \
-d '{
"in_peers": 3232235535
}'
{
"status":"OK"
}
/in_peers
Limit number of Incoming peers.
Input
- in_peers unsigned int
Max number of incoming peers
Output
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/out_peers \
-H "Content-Type: application/json" \
-d '{
"in_peers": 3232235535
}'
{
"status":"OK"
}
/start_save_graph
Obsolete. Conserved here for reference.
Output
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:18081/start_save_graph \
-H "Content-Type: application/json"
{
"status":"OK"
}
/stop_save_graph
Obsolete. Conserved here for reference.
Output
- status string
General RPC error code. "OK" means everything looks good.
curl -X POST http://127.0.0.1:12211/stop_save_graph \
-H "Content-Type: application/json"
{
"status":"OK"
}
/get_outs
Get outputs.
Input
- outputs
- amount unsigned int
- index unsigned int
Output
- outs
array of structure outkey as follows:
- height unsigned int
block height of the output
- key string
the public key of the output
- mask string
- txid string
transaction id
- unlocked boolean
States if output is locked (
false
) or not (true
)
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (
true
), or when the daemon is fully synced (false
).
/get_outs
Get outputs.
Input
- outputs
- amount unsigned int
- index unsigned int
Output
- outs
array of structure outkey as follows:
- height unsigned int
block height of the output
- key string
the public key of the output
- mask string
- txid string
transaction id
- unlocked boolean
States if output is locked (
false
) or not (true
)
- status string
General RPC error code. "OK" means everything looks good.
- untrusted boolean
States if the result is obtained using the bootstrap mode, and is therefore not trusted (
true
), or when the daemon is fully synced (false
).
/update
Update daemon.
Input
- command string Required
command to use, either
check
ordownload
- path string
Optional, path where to download the update.
Output
- auto_uri string
- hash string
- path string
path to download the update
- status string
General RPC error code. "OK" means everything looks good.
- update boolean
States if an update is available to download (
true
) or not (false
) - user_uri string
- version string
Version available for download.
curl -X POST http://127.0.0.1:12211/update \
-H "Content-Type: application/json" \
-d '{
"command": "check"
}'
{
"auto_uri":"",
"hash":"",
"path":"",
"status":"'update' not implemented yet",
"update":false,
"user_uri":"",
"version":""
}