{"abi":[],"bytecode":{"object":"0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"423:10792:232:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;423:10792:232;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"423:10792:232:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"MerkleTrie\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"MerkleTrie is a small library for verifying standard Ethereum Merkle-Patricia trie         inclusion proofs. By default, this library assumes a hexary trie. One can change the         trie radix constant to support other trie radixes.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/trie/MerkleTrie.sol\":\"MerkleTrie\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/libraries/Bytes.sol\":{\"keccak256\":\"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782\",\"dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9\"]},\"src/libraries/rlp/RLPErrors.sol\":{\"keccak256\":\"0x2b7fa174e6c62962f7c3ce1960298d325ed0e5ff4ee3fd426848e88b4500eb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5528dd355691e6e2dffa3ecf11388f51e3bd29f27693c5dcd11be182559ba47\",\"dweb:/ipfs/QmTqZ5ZzBPwLYg3JNZttHZYaXv5zyzQfakSz4B8sYkAz42\"]},\"src/libraries/rlp/RLPReader.sol\":{\"keccak256\":\"0x27cbbc74d603b301e0e4bc4d33bbbeb88e369f1a91191a33d89ea52360e003db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba58dfd78089a51f06638fa6c0d2287c6254907ad89c4ad58b6fbb331d5d5a96\",\"dweb:/ipfs/QmUjC5Pm2MxPgYm9DfW1MasHj5jz7xXvej88778QuUoNgp\"]},\"src/libraries/trie/MerkleTrie.sol\":{\"keccak256\":\"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74\",\"dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/libraries/trie/MerkleTrie.sol":"MerkleTrie"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/libraries/Bytes.sol":{"keccak256":"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859","urls":["bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782","dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9"],"license":"MIT"},"src/libraries/rlp/RLPErrors.sol":{"keccak256":"0x2b7fa174e6c62962f7c3ce1960298d325ed0e5ff4ee3fd426848e88b4500eb26","urls":["bzz-raw://f5528dd355691e6e2dffa3ecf11388f51e3bd29f27693c5dcd11be182559ba47","dweb:/ipfs/QmTqZ5ZzBPwLYg3JNZttHZYaXv5zyzQfakSz4B8sYkAz42"],"license":"MIT"},"src/libraries/rlp/RLPReader.sol":{"keccak256":"0x27cbbc74d603b301e0e4bc4d33bbbeb88e369f1a91191a33d89ea52360e003db","urls":["bzz-raw://ba58dfd78089a51f06638fa6c0d2287c6254907ad89c4ad58b6fbb331d5d5a96","dweb:/ipfs/QmUjC5Pm2MxPgYm9DfW1MasHj5jz7xXvej88778QuUoNgp"],"license":"MIT"},"src/libraries/trie/MerkleTrie.sol":{"keccak256":"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c","urls":["bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74","dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","notice":"MerkleTrie is a small library for verifying standard Ethereum Merkle-Patricia trie         inclusion proofs. By default, this library assumes a hexary trie. One can change the         trie radix constant to support other trie radixes."},"devdoc":{"version":1,"kind":"dev","title":"MerkleTrie"},"ast":{"absolutePath":"src/libraries/trie/MerkleTrie.sol","id":116629,"exportedSymbols":{"Bytes":[112764],"MerkleTrie":[116628],"RLPReader":[115562]},"nodeType":"SourceUnit","src":"32:11184:232","nodes":[{"id":116063,"nodeType":"PragmaDirective","src":"32:23:232","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":116065,"nodeType":"ImportDirective","src":"57:37:232","nodes":[],"absolutePath":"src/libraries/Bytes.sol","file":"../Bytes.sol","nameLocation":"-1:-1:-1","scope":116629,"sourceUnit":112765,"symbolAliases":[{"foreign":{"id":116064,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"66:5:232","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":116067,"nodeType":"ImportDirective","src":"95:49:232","nodes":[],"absolutePath":"src/libraries/rlp/RLPReader.sol","file":"../rlp/RLPReader.sol","nameLocation":"-1:-1:-1","scope":116629,"sourceUnit":115563,"symbolAliases":[{"foreign":{"id":116066,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115562,"src":"104:9:232","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":116628,"nodeType":"ContractDefinition","src":"423:10792:232","nodes":[{"id":116075,"nodeType":"StructDefinition","src":"608:83:232","nodes":[],"canonicalName":"MerkleTrie.TrieNode","members":[{"constant":false,"id":116070,"mutability":"mutable","name":"encoded","nameLocation":"640:7:232","nodeType":"VariableDeclaration","scope":116075,"src":"634:13:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":116069,"name":"bytes","nodeType":"ElementaryTypeName","src":"634:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":116074,"mutability":"mutable","name":"decoded","nameLocation":"677:7:232","nodeType":"VariableDeclaration","scope":116075,"src":"657:27:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_storage_$dyn_storage_ptr","typeString":"struct RLPReader.RLPItem[]"},"typeName":{"baseType":{"id":116072,"nodeType":"UserDefinedTypeName","pathNode":{"id":116071,"name":"RLPReader.RLPItem","nodeType":"IdentifierPath","referencedDeclaration":115043,"src":"657:17:232"},"referencedDeclaration":115043,"src":"657:17:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_storage_ptr","typeString":"struct RLPReader.RLPItem"}},"id":116073,"nodeType":"ArrayTypeName","src":"657:19:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_storage_$dyn_storage_ptr","typeString":"struct RLPReader.RLPItem[]"}},"visibility":"internal"}],"name":"TrieNode","nameLocation":"615:8:232","scope":116628,"visibility":"public"},{"id":116079,"nodeType":"VariableDeclaration","src":"764:41:232","nodes":[],"constant":true,"documentation":{"id":116076,"nodeType":"StructuredDocumentation","src":"697:62:232","text":"@notice Determines the number of elements per branch node."},"mutability":"constant","name":"TREE_RADIX","nameLocation":"790:10:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116077,"name":"uint256","nodeType":"ElementaryTypeName","src":"764:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3136","id":116078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"803:2:232","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"visibility":"internal"},{"id":116085,"nodeType":"VariableDeclaration","src":"889:61:232","nodes":[],"constant":true,"documentation":{"id":116080,"nodeType":"StructuredDocumentation","src":"812:72:232","text":"@notice Branch nodes have TREE_RADIX elements and one value element."},"mutability":"constant","name":"BRANCH_NODE_LENGTH","nameLocation":"915:18:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116081,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":116082,"name":"TREE_RADIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116079,"src":"936:10:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":116083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"949:1:232","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"936:14:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"id":116089,"nodeType":"VariableDeclaration","src":"1047:59:232","nodes":[],"constant":true,"documentation":{"id":116086,"nodeType":"StructuredDocumentation","src":"957:85:232","text":"@notice Leaf nodes and extension nodes have two elements, a `path` and a `value`."},"mutability":"constant","name":"LEAF_OR_EXTENSION_NODE_LENGTH","nameLocation":"1073:29:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116087,"name":"uint256","nodeType":"ElementaryTypeName","src":"1047:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":116088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1105:1:232","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":116093,"nodeType":"VariableDeclaration","src":"1175:49:232","nodes":[],"constant":true,"documentation":{"id":116090,"nodeType":"StructuredDocumentation","src":"1113:57:232","text":"@notice Prefix for even-nibbled extension node paths."},"mutability":"constant","name":"PREFIX_EXTENSION_EVEN","nameLocation":"1199:21:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116091,"name":"uint8","nodeType":"ElementaryTypeName","src":"1175:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30","id":116092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1223:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"id":116097,"nodeType":"VariableDeclaration","src":"1292:48:232","nodes":[],"constant":true,"documentation":{"id":116094,"nodeType":"StructuredDocumentation","src":"1231:56:232","text":"@notice Prefix for odd-nibbled extension node paths."},"mutability":"constant","name":"PREFIX_EXTENSION_ODD","nameLocation":"1316:20:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116095,"name":"uint8","nodeType":"ElementaryTypeName","src":"1292:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"31","id":116096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1339:1:232","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"id":116101,"nodeType":"VariableDeclaration","src":"1404:44:232","nodes":[],"constant":true,"documentation":{"id":116098,"nodeType":"StructuredDocumentation","src":"1347:52:232","text":"@notice Prefix for even-nibbled leaf node paths."},"mutability":"constant","name":"PREFIX_LEAF_EVEN","nameLocation":"1428:16:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116099,"name":"uint8","nodeType":"ElementaryTypeName","src":"1404:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"32","id":116100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1447:1:232","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":116105,"nodeType":"VariableDeclaration","src":"1511:43:232","nodes":[],"constant":true,"documentation":{"id":116102,"nodeType":"StructuredDocumentation","src":"1455:51:232","text":"@notice Prefix for odd-nibbled leaf node paths."},"mutability":"constant","name":"PREFIX_LEAF_ODD","nameLocation":"1535:15:232","scope":116628,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116103,"name":"uint8","nodeType":"ElementaryTypeName","src":"1511:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"33","id":116104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1553:1:232","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"id":116133,"nodeType":"FunctionDefinition","src":"2253:281:232","nodes":[],"body":{"id":116132,"nodeType":"Block","src":"2463:71:232","nodes":[],"statements":[{"expression":{"id":116130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116120,"name":"valid_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116118,"src":"2473:6:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":116123,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116110,"src":"2494:6:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":116125,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116108,"src":"2506:4:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":116126,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116113,"src":"2512:6:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":116127,"name":"_root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116115,"src":"2520:5:232","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":116124,"name":"get","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116481,"src":"2502:3:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory[] memory,bytes32) pure returns (bytes memory)"}},"id":116128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2502:24:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116121,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"2482:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":112763,"src":"2482:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":116129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2482:45:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2473:54:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":116131,"nodeType":"ExpressionStatement","src":"2473:54:232"}]},"documentation":{"id":116106,"nodeType":"StructuredDocumentation","src":"1561:687:232","text":"@notice Verifies a proof that a given key/value pair is present in the trie.\n @param _key   Key of the node to search for, as a hex string.\n @param _value Value of the node to search for, as a hex string.\n @param _proof Merkle trie inclusion proof for the desired node. Unlike traditional Merkle\n               trees, this proof is executed top-down and consists of a list of RLP-encoded\n               nodes that make a path down to the target node.\n @param _root  Known root of the Merkle trie. Used to verify that the included proof is\n               correctly constructed.\n @return valid_ Whether or not the proof is valid."},"implemented":true,"kind":"function","modifiers":[],"name":"verifyInclusionProof","nameLocation":"2262:20:232","parameters":{"id":116116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116108,"mutability":"mutable","name":"_key","nameLocation":"2305:4:232","nodeType":"VariableDeclaration","scope":116133,"src":"2292:17:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116107,"name":"bytes","nodeType":"ElementaryTypeName","src":"2292:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":116110,"mutability":"mutable","name":"_value","nameLocation":"2332:6:232","nodeType":"VariableDeclaration","scope":116133,"src":"2319:19:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116109,"name":"bytes","nodeType":"ElementaryTypeName","src":"2319:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":116113,"mutability":"mutable","name":"_proof","nameLocation":"2363:6:232","nodeType":"VariableDeclaration","scope":116133,"src":"2348:21:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":116111,"name":"bytes","nodeType":"ElementaryTypeName","src":"2348:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":116112,"nodeType":"ArrayTypeName","src":"2348:7:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":116115,"mutability":"mutable","name":"_root","nameLocation":"2387:5:232","nodeType":"VariableDeclaration","scope":116133,"src":"2379:13:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":116114,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2379:7:232","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2282:116:232"},"returnParameters":{"id":116119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116118,"mutability":"mutable","name":"valid_","nameLocation":"2451:6:232","nodeType":"VariableDeclaration","scope":116133,"src":"2446:11:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":116117,"name":"bool","nodeType":"ElementaryTypeName","src":"2446:4:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2445:13:232"},"scope":116628,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":116481,"nodeType":"FunctionDefinition","src":"2830:6314:232","nodes":[],"body":{"id":116480,"nodeType":"Block","src":"2944:6200:232","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":116147,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116136,"src":"2962:4:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2962:11:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":116149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2976:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2962:15:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20656d707479206b6579","id":116151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2979:23:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_17dfd6f947bddf18931410859a5573cdf382cb5bb1f99c6210bebd3fead2fea7","typeString":"literal_string \"MerkleTrie: empty key\""},"value":"MerkleTrie: empty key"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17dfd6f947bddf18931410859a5573cdf382cb5bb1f99c6210bebd3fead2fea7","typeString":"literal_string \"MerkleTrie: empty key\""}],"id":116146,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2954:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2954:49:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116153,"nodeType":"ExpressionStatement","src":"2954:49:232"},{"assignments":[116158],"declarations":[{"constant":false,"id":116158,"mutability":"mutable","name":"proof","nameLocation":"3032:5:232","nodeType":"VariableDeclaration","scope":116480,"src":"3014:23:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode[]"},"typeName":{"baseType":{"id":116156,"nodeType":"UserDefinedTypeName","pathNode":{"id":116155,"name":"TrieNode","nodeType":"IdentifierPath","referencedDeclaration":116075,"src":"3014:8:232"},"referencedDeclaration":116075,"src":"3014:8:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"id":116157,"nodeType":"ArrayTypeName","src":"3014:10:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_storage_$dyn_storage_ptr","typeString":"struct MerkleTrie.TrieNode[]"}},"visibility":"internal"}],"id":116162,"initialValue":{"arguments":[{"id":116160,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116139,"src":"3052:6:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"id":116159,"name":"_parseProof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116536,"src":"3040:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr_$","typeString":"function (bytes memory[] memory) pure returns (struct MerkleTrie.TrieNode memory[] memory)"}},"id":116161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3040:19:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3014:45:232"},{"assignments":[116164],"declarations":[{"constant":false,"id":116164,"mutability":"mutable","name":"key","nameLocation":"3082:3:232","nodeType":"VariableDeclaration","scope":116480,"src":"3069:16:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116163,"name":"bytes","nodeType":"ElementaryTypeName","src":"3069:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":116169,"initialValue":{"arguments":[{"id":116167,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116136,"src":"3104:4:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116165,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"3088:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toNibbles","nodeType":"MemberAccess","referencedDeclaration":112744,"src":"3088:15:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":116168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3088:21:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3069:40:232"},{"assignments":[116171],"declarations":[{"constant":false,"id":116171,"mutability":"mutable","name":"currentNodeID","nameLocation":"3132:13:232","nodeType":"VariableDeclaration","scope":116480,"src":"3119:26:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116170,"name":"bytes","nodeType":"ElementaryTypeName","src":"3119:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":116176,"initialValue":{"arguments":[{"id":116174,"name":"_root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116141,"src":"3165:5:232","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":116172,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3148:3:232","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":116173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3148:16:232","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":116175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3148:23:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3119:52:232"},{"assignments":[116178],"declarations":[{"constant":false,"id":116178,"mutability":"mutable","name":"currentKeyIndex","nameLocation":"3189:15:232","nodeType":"VariableDeclaration","scope":116480,"src":"3181:23:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116177,"name":"uint256","nodeType":"ElementaryTypeName","src":"3181:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":116180,"initialValue":{"hexValue":"30","id":116179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3207:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3181:27:232"},{"body":{"id":116474,"nodeType":"Block","src":"3333:5747:232","statements":[{"assignments":[116194],"declarations":[{"constant":false,"id":116194,"mutability":"mutable","name":"currentNode","nameLocation":"3363:11:232","nodeType":"VariableDeclaration","scope":116474,"src":"3347:27:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode"},"typeName":{"id":116193,"nodeType":"UserDefinedTypeName","pathNode":{"id":116192,"name":"TrieNode","nodeType":"IdentifierPath","referencedDeclaration":116075,"src":"3347:8:232"},"referencedDeclaration":116075,"src":"3347:8:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"visibility":"internal"}],"id":116198,"initialValue":{"baseExpression":{"id":116195,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116158,"src":"3377:5:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":116197,"indexExpression":{"id":116196,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116182,"src":"3383:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3377:8:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"nodeType":"VariableDeclarationStatement","src":"3347:38:232"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116200,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116178,"src":"3497:15:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":116201,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116164,"src":"3516:3:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3516:10:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3497:29:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a206b657920696e646578206578636565647320746f74616c206b6579206c656e677468","id":116204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3528:48:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_747adb1b361ddc1e95511e1d31ac90bd911f632b29f709cf7e15610b5ec189c7","typeString":"literal_string \"MerkleTrie: key index exceeds total key length\""},"value":"MerkleTrie: key index exceeds total key length"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_747adb1b361ddc1e95511e1d31ac90bd911f632b29f709cf7e15610b5ec189c7","typeString":"literal_string \"MerkleTrie: key index exceeds total key length\""}],"id":116199,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3489:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3489:88:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116206,"nodeType":"ExpressionStatement","src":"3489:88:232"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116207,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116178,"src":"3596:15:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":116208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3596:20:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":116226,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"3901:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":116070,"src":"3901:19:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3901:26:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":116229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3931:2:232","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3901:32:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":116257,"nodeType":"Block","src":"4236:193:232","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":116250,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"4336:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":116070,"src":"4336:19:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":116252,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116171,"src":"4357:13:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116248,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"4324:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":112763,"src":"4324:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":116253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4324:47:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f64652068617368","id":116254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4373:40:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af34cd7ef45676d2266bb59dda96165657e450eb56a41e0cea137633f1d86b6","typeString":"literal_string \"MerkleTrie: invalid internal node hash\""},"value":"MerkleTrie: invalid internal node hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9af34cd7ef45676d2266bb59dda96165657e450eb56a41e0cea137633f1d86b6","typeString":"literal_string \"MerkleTrie: invalid internal node hash\""}],"id":116247,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4316:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4316:98:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116256,"nodeType":"ExpressionStatement","src":"4316:98:232"}]},"id":116258,"nodeType":"IfStatement","src":"3897:532:232","trueBody":{"id":116246,"nodeType":"Block","src":"3935:295:232","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":116237,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"4097:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116238,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":116070,"src":"4097:19:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":116236,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4087:9:232","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":116239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4087:30:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":116234,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4070:3:232","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":116235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"4070:16:232","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":116240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4070:48:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":116241,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116171,"src":"4120:13:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116232,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"4058:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":112763,"src":"4058:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":116242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4058:76:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e616c2068617368","id":116243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4156:41:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_aa0e110f9f12fcd6157fb1b1e47852a950305dfac96bb19bb44ea49ab709a4c5","typeString":"literal_string \"MerkleTrie: invalid large internal hash\""},"value":"MerkleTrie: invalid large internal hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_aa0e110f9f12fcd6157fb1b1e47852a950305dfac96bb19bb44ea49ab709a4c5","typeString":"literal_string \"MerkleTrie: invalid large internal hash\""}],"id":116231,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4029:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4029:186:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116245,"nodeType":"ExpressionStatement","src":"4029:186:232"}]}},"id":116259,"nodeType":"IfStatement","src":"3592:837:232","trueBody":{"id":116225,"nodeType":"Block","src":"3618:273:232","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":116216,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"3768:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116217,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"encoded","nodeType":"MemberAccess","referencedDeclaration":116070,"src":"3768:19:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":116215,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3758:9:232","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":116218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3758:30:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":116213,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3741:3:232","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":116214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3741:16:232","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":116219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3741:48:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":116220,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116171,"src":"3791:13:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116211,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"3729:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"equal","nodeType":"MemberAccess","referencedDeclaration":112763,"src":"3729:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) pure returns (bool)"}},"id":116221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3729:76:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20696e76616c696420726f6f742068617368","id":116222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3827:31:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_342558ec2bcba5b6370917c9dde6b4444464f0bb10525814d761abf26512f307","typeString":"literal_string \"MerkleTrie: invalid root hash\""},"value":"MerkleTrie: invalid root hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_342558ec2bcba5b6370917c9dde6b4444464f0bb10525814d761abf26512f307","typeString":"literal_string \"MerkleTrie: invalid root hash\""}],"id":116210,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3700:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3700:176:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116224,"nodeType":"ExpressionStatement","src":"3700:176:232"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":116260,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"4447:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":116074,"src":"4447:19:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":116262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4447:26:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":116263,"name":"BRANCH_NODE_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116085,"src":"4477:18:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4447:48:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":116332,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"5885:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":116074,"src":"5885:19:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":116334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5885:26:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":116335,"name":"LEAF_OR_EXTENSION_NODE_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116089,"src":"5915:29:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5885:59:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":116471,"nodeType":"Block","src":"8987:83:232","statements":[{"expression":{"arguments":[{"hexValue":"4d65726b6c65547269653a20726563656976656420616e20756e706172736561626c65206e6f6465","id":116468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9012:42:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_95382f7a15c87c763345b363940580cf3535857c9d5691b55367dbf0fa2a14a3","typeString":"literal_string \"MerkleTrie: received an unparseable node\""},"value":"MerkleTrie: received an unparseable node"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_95382f7a15c87c763345b363940580cf3535857c9d5691b55367dbf0fa2a14a3","typeString":"literal_string \"MerkleTrie: received an unparseable node\""}],"id":116467,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9005:6:232","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":116469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9005:50:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116470,"nodeType":"ExpressionStatement","src":"9005:50:232"}]},"id":116472,"nodeType":"IfStatement","src":"5881:3189:232","trueBody":{"id":116466,"nodeType":"Block","src":"5946:3035:232","statements":[{"assignments":[116338],"declarations":[{"constant":false,"id":116338,"mutability":"mutable","name":"path","nameLocation":"5977:4:232","nodeType":"VariableDeclaration","scope":116466,"src":"5964:17:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116337,"name":"bytes","nodeType":"ElementaryTypeName","src":"5964:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":116342,"initialValue":{"arguments":[{"id":116340,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"5997:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}],"id":116339,"name":"_getNodePath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116585,"src":"5984:12:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_TrieNode_$116075_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct MerkleTrie.TrieNode memory) pure returns (bytes memory)"}},"id":116341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5984:25:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5964:45:232"},{"assignments":[116344],"declarations":[{"constant":false,"id":116344,"mutability":"mutable","name":"prefix","nameLocation":"6033:6:232","nodeType":"VariableDeclaration","scope":116466,"src":"6027:12:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116343,"name":"uint8","nodeType":"ElementaryTypeName","src":"6027:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":116351,"initialValue":{"arguments":[{"baseExpression":{"id":116347,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116338,"src":"6048:4:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116349,"indexExpression":{"hexValue":"30","id":116348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6053:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6048:7:232","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":116346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6042:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":116345,"name":"uint8","nodeType":"ElementaryTypeName","src":"6042:5:232","typeDescriptions":{}}},"id":116350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6042:14:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"6027:29:232"},{"assignments":[116353],"declarations":[{"constant":false,"id":116353,"mutability":"mutable","name":"offset","nameLocation":"6080:6:232","nodeType":"VariableDeclaration","scope":116466,"src":"6074:12:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116352,"name":"uint8","nodeType":"ElementaryTypeName","src":"6074:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":116360,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":116359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":116354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6089:1:232","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":116357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116355,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116344,"src":"6094:6:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":116356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6103:1:232","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6094:10:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":116358,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6093:12:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6089:16:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"6074:31:232"},{"assignments":[116362],"declarations":[{"constant":false,"id":116362,"mutability":"mutable","name":"pathRemainder","nameLocation":"6136:13:232","nodeType":"VariableDeclaration","scope":116466,"src":"6123:26:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116361,"name":"bytes","nodeType":"ElementaryTypeName","src":"6123:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":116368,"initialValue":{"arguments":[{"id":116365,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116338,"src":"6164:4:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":116366,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116353,"src":"6170:6:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":116363,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"6152:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slice","nodeType":"MemberAccess","referencedDeclaration":112729,"src":"6152:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (bytes memory)"}},"id":116367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6152:25:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6123:54:232"},{"assignments":[116370],"declarations":[{"constant":false,"id":116370,"mutability":"mutable","name":"keyRemainder","nameLocation":"6208:12:232","nodeType":"VariableDeclaration","scope":116466,"src":"6195:25:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116369,"name":"bytes","nodeType":"ElementaryTypeName","src":"6195:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":116376,"initialValue":{"arguments":[{"id":116373,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116164,"src":"6235:3:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":116374,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116178,"src":"6240:15:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":116371,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"6223:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"slice","nodeType":"MemberAccess","referencedDeclaration":112729,"src":"6223:11:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (bytes memory)"}},"id":116375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6223:33:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6195:61:232"},{"assignments":[116378],"declarations":[{"constant":false,"id":116378,"mutability":"mutable","name":"sharedNibbleLength","nameLocation":"6282:18:232","nodeType":"VariableDeclaration","scope":116466,"src":"6274:26:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116377,"name":"uint256","nodeType":"ElementaryTypeName","src":"6274:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":116383,"initialValue":{"arguments":[{"id":116380,"name":"pathRemainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116362,"src":"6326:13:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":116381,"name":"keyRemainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116370,"src":"6341:12:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":116379,"name":"_getSharedNibbleLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116627,"src":"6303:22:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory,bytes memory) pure returns (uint256)"}},"id":116382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6303:51:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6274:80:232"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":116385,"name":"pathRemainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116362,"src":"6637:13:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6637:20:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":116387,"name":"sharedNibbleLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116378,"src":"6661:18:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6637:42:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a20706174682072656d61696e646572206d75737420736861726520616c6c206e6962626c65732077697468206b6579","id":116389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6701:60:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_e00c0a3c263c4cd41f6878063f5ed597e0c0df3427662467867d311719309132","typeString":"literal_string \"MerkleTrie: path remainder must share all nibbles with key\""},"value":"MerkleTrie: path remainder must share all nibbles with key"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e00c0a3c263c4cd41f6878063f5ed597e0c0df3427662467867d311719309132","typeString":"literal_string \"MerkleTrie: path remainder must share all nibbles with key\""}],"id":116384,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6608:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6608:171:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116391,"nodeType":"ExpressionStatement","src":"6608:171:232"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":116398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":116394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116392,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116344,"src":"6802:6:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":116393,"name":"PREFIX_LEAF_EVEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116101,"src":"6812:16:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6802:26:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":116397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116395,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116344,"src":"6832:6:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":116396,"name":"PREFIX_LEAF_ODD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116105,"src":"6842:15:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6832:25:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6802:55:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":116444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":116440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116438,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116344,"src":"8376:6:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":116439,"name":"PREFIX_EXTENSION_EVEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116093,"src":"8386:21:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8376:31:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":116443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116441,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116344,"src":"8411:6:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":116442,"name":"PREFIX_EXTENSION_ODD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116097,"src":"8421:20:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8411:30:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8376:65:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":116463,"nodeType":"Block","src":"8866:101:232","statements":[{"expression":{"arguments":[{"hexValue":"4d65726b6c65547269653a2072656365697665642061206e6f6465207769746820616e20756e6b6e6f776e20707265666978","id":116460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8895:52:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_17ad93750016927b4cf4c8dd57757d90269d88ab22c31584f8c502a02cc50c70","typeString":"literal_string \"MerkleTrie: received a node with an unknown prefix\""},"value":"MerkleTrie: received a node with an unknown prefix"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_17ad93750016927b4cf4c8dd57757d90269d88ab22c31584f8c502a02cc50c70","typeString":"literal_string \"MerkleTrie: received a node with an unknown prefix\""}],"id":116459,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8888:6:232","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":116461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8888:60:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116462,"nodeType":"ExpressionStatement","src":"8888:60:232"}]},"id":116464,"nodeType":"IfStatement","src":"8372:595:232","trueBody":{"id":116458,"nodeType":"Block","src":"8443:417:232","statements":[{"expression":{"id":116452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116445,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116171,"src":"8732:13:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":116447,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"8759:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":116074,"src":"8759:19:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":116450,"indexExpression":{"hexValue":"31","id":116449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8779:1:232","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8759:22:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"id":116446,"name":"_getNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116562,"src":"8748:10:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$115043_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":116451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8748:34:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8732:50:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116453,"nodeType":"ExpressionStatement","src":"8732:50:232"},{"expression":{"id":116456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116454,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116178,"src":"8804:15:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":116455,"name":"sharedNibbleLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116378,"src":"8823:18:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8804:37:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":116457,"nodeType":"ExpressionStatement","src":"8804:37:232"}]}},"id":116465,"nodeType":"IfStatement","src":"6798:2169:232","trueBody":{"id":116437,"nodeType":"Block","src":"6859:1507:232","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":116400,"name":"keyRemainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116370,"src":"7475:12:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7475:19:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":116402,"name":"sharedNibbleLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116378,"src":"7498:18:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7475:41:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a206b65792072656d61696e646572206d757374206265206964656e746963616c20746f20706174682072656d61696e646572","id":116404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7542:63:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_67315a0e77a5536b39d0c39f888d5fdda6e387450ff0a5b97b04ce6f37156da2","typeString":"literal_string \"MerkleTrie: key remainder must be identical to path remainder\""},"value":"MerkleTrie: key remainder must be identical to path remainder"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_67315a0e77a5536b39d0c39f888d5fdda6e387450ff0a5b97b04ce6f37156da2","typeString":"literal_string \"MerkleTrie: key remainder must be identical to path remainder\""}],"id":116399,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7442:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7442:185:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116406,"nodeType":"ExpressionStatement","src":"7442:185:232"},{"expression":{"id":116415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116407,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116144,"src":"7976:6:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":116410,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"8005:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116411,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":116074,"src":"8005:19:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":116413,"indexExpression":{"hexValue":"31","id":116412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8025:1:232","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8005:22:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"expression":{"id":116408,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115562,"src":"7985:9:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$115562_$","typeString":"type(library RLPReader)"}},"id":116409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"readBytes","nodeType":"MemberAccess","referencedDeclaration":115263,"src":"7985:19:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$115043_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":116414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7985:43:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"7976:52:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116416,"nodeType":"ExpressionStatement","src":"7976:52:232"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":116418,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116144,"src":"8058:6:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8058:13:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":116420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8074:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8058:17:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a2076616c7565206c656e677468206d7573742062652067726561746572207468616e207a65726f20286c65616629","id":116422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8077:59:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_5071dda95a1eccba38d20abf92e4593bf594fe0eaab818c9628ffbdd69190c3a","typeString":"literal_string \"MerkleTrie: value length must be greater than zero (leaf)\""},"value":"MerkleTrie: value length must be greater than zero (leaf)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5071dda95a1eccba38d20abf92e4593bf594fe0eaab818c9628ffbdd69190c3a","typeString":"literal_string \"MerkleTrie: value length must be greater than zero (leaf)\""}],"id":116417,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8050:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8050:87:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116424,"nodeType":"ExpressionStatement","src":"8050:87:232"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116426,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116182,"src":"8229:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":116427,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116158,"src":"8234:5:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":116428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8234:12:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":116429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8249:1:232","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8234:16:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8229:21:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c617374206e6f646520696e2070726f6f6620286c65616629","id":116432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8252:58:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_56830735fd39b228c902ab2ed7133b442a549106a2e2a841e399162f79a7b994","typeString":"literal_string \"MerkleTrie: value node must be last node in proof (leaf)\""},"value":"MerkleTrie: value node must be last node in proof (leaf)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_56830735fd39b228c902ab2ed7133b442a549106a2e2a841e399162f79a7b994","typeString":"literal_string \"MerkleTrie: value node must be last node in proof (leaf)\""}],"id":116425,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8221:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8221:90:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116434,"nodeType":"ExpressionStatement","src":"8221:90:232"},{"expression":{"id":116435,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116144,"src":"8341:6:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":116145,"id":116436,"nodeType":"Return","src":"8334:13:232"}]}}]}},"id":116473,"nodeType":"IfStatement","src":"4443:4627:232","trueBody":{"id":116331,"nodeType":"Block","src":"4497:1378:232","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116265,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116178,"src":"4519:15:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":116266,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116164,"src":"4538:3:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4538:10:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4519:29:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":116329,"nodeType":"Block","src":"5447:414:232","statements":[{"assignments":[116301],"declarations":[{"constant":false,"id":116301,"mutability":"mutable","name":"branchKey","nameLocation":"5615:9:232","nodeType":"VariableDeclaration","scope":116329,"src":"5609:15:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":116300,"name":"uint8","nodeType":"ElementaryTypeName","src":"5609:5:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":116308,"initialValue":{"arguments":[{"baseExpression":{"id":116304,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116164,"src":"5633:3:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116306,"indexExpression":{"id":116305,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116178,"src":"5637:15:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5633:20:232","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":116303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5627:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":116302,"name":"uint8","nodeType":"ElementaryTypeName","src":"5627:5:232","typeDescriptions":{}}},"id":116307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5627:27:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5609:45:232"},{"assignments":[116313],"declarations":[{"constant":false,"id":116313,"mutability":"mutable","name":"nextNode","nameLocation":"5701:8:232","nodeType":"VariableDeclaration","scope":116329,"src":"5676:33:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem"},"typeName":{"id":116312,"nodeType":"UserDefinedTypeName","pathNode":{"id":116311,"name":"RLPReader.RLPItem","nodeType":"IdentifierPath","referencedDeclaration":115043,"src":"5676:17:232"},"referencedDeclaration":115043,"src":"5676:17:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_storage_ptr","typeString":"struct RLPReader.RLPItem"}},"visibility":"internal"}],"id":116318,"initialValue":{"baseExpression":{"expression":{"id":116314,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"5712:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":116074,"src":"5712:19:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":116317,"indexExpression":{"id":116316,"name":"branchKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116301,"src":"5732:9:232","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5712:30:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}},"nodeType":"VariableDeclarationStatement","src":"5676:66:232"},{"expression":{"id":116323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116319,"name":"currentNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116171,"src":"5764:13:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":116321,"name":"nextNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116313,"src":"5791:8:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"id":116320,"name":"_getNodeID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116562,"src":"5780:10:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$115043_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":116322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5780:20:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5764:36:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116324,"nodeType":"ExpressionStatement","src":"5764:36:232"},{"expression":{"id":116327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116325,"name":"currentKeyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116178,"src":"5822:15:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":116326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5841:1:232","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5822:20:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":116328,"nodeType":"ExpressionStatement","src":"5822:20:232"}]},"id":116330,"nodeType":"IfStatement","src":"4515:1346:232","trueBody":{"id":116299,"nodeType":"Block","src":"4550:891:232","statements":[{"expression":{"id":116277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116269,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116144,"src":"5038:6:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"expression":{"id":116272,"name":"currentNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116194,"src":"5067:11:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":116074,"src":"5067:19:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":116275,"indexExpression":{"id":116274,"name":"TREE_RADIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116079,"src":"5087:10:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5067:31:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"expression":{"id":116270,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115562,"src":"5047:9:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$115562_$","typeString":"type(library RLPReader)"}},"id":116271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"readBytes","nodeType":"MemberAccess","referencedDeclaration":115263,"src":"5047:19:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$115043_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":116276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5047:52:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5038:61:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116278,"nodeType":"ExpressionStatement","src":"5038:61:232"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":116280,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116144,"src":"5129:6:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5129:13:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":116282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5145:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5129:17:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a2076616c7565206c656e677468206d7573742062652067726561746572207468616e207a65726f20286272616e636829","id":116284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5148:61:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_8775b11e5be9767bdebc551fa79ad29ea4537352f4a48485de1a8db83bbe60c4","typeString":"literal_string \"MerkleTrie: value length must be greater than zero (branch)\""},"value":"MerkleTrie: value length must be greater than zero (branch)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8775b11e5be9767bdebc551fa79ad29ea4537352f4a48485de1a8db83bbe60c4","typeString":"literal_string \"MerkleTrie: value length must be greater than zero (branch)\""}],"id":116279,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5121:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5121:89:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116286,"nodeType":"ExpressionStatement","src":"5121:89:232"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116288,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116182,"src":"5302:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":116289,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116158,"src":"5307:5:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":116290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5307:12:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":116291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5322:1:232","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5307:16:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5302:21:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c617374206e6f646520696e2070726f6f6620286272616e636829","id":116294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5325:60:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_28518a26784b4bfc3bd75a215bb0df5bf2cba18845fca6d5d9ed89fab561e0ed","typeString":"literal_string \"MerkleTrie: value node must be last node in proof (branch)\""},"value":"MerkleTrie: value node must be last node in proof (branch)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28518a26784b4bfc3bd75a215bb0df5bf2cba18845fca6d5d9ed89fab561e0ed","typeString":"literal_string \"MerkleTrie: value node must be last node in proof (branch)\""}],"id":116287,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5294:7:232","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":116295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5294:92:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116296,"nodeType":"ExpressionStatement","src":"5294:92:232"},{"expression":{"id":116297,"name":"value_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116144,"src":"5416:6:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":116145,"id":116298,"nodeType":"Return","src":"5409:13:232"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116185,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116182,"src":"3310:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":116186,"name":"proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116158,"src":"3314:5:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":116187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3314:12:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3310:16:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":116475,"initializationExpression":{"assignments":[116182],"declarations":[{"constant":false,"id":116182,"mutability":"mutable","name":"i","nameLocation":"3303:1:232","nodeType":"VariableDeclaration","scope":116475,"src":"3295:9:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116181,"name":"uint256","nodeType":"ElementaryTypeName","src":"3295:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":116184,"initialValue":{"hexValue":"30","id":116183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3307:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3295:13:232"},"loopExpression":{"expression":{"id":116190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3328:3:232","subExpression":{"id":116189,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116182,"src":"3328:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":116191,"nodeType":"ExpressionStatement","src":"3328:3:232"},"nodeType":"ForStatement","src":"3290:5790:232"},{"expression":{"arguments":[{"hexValue":"4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656d656e7473","id":116477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9097:39:232","typeDescriptions":{"typeIdentifier":"t_stringliteral_3e37143e66f54939727845d07716cdc57b7efc6dc9f278b14a48ffe711866076","typeString":"literal_string \"MerkleTrie: ran out of proof elements\""},"value":"MerkleTrie: ran out of proof elements"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3e37143e66f54939727845d07716cdc57b7efc6dc9f278b14a48ffe711866076","typeString":"literal_string \"MerkleTrie: ran out of proof elements\""}],"id":116476,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9090:6:232","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":116478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9090:47:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":116479,"nodeType":"ExpressionStatement","src":"9090:47:232"}]},"documentation":{"id":116134,"nodeType":"StructuredDocumentation","src":"2540:285:232","text":"@notice Retrieves the value associated with a given key.\n @param _key   Key to search for, as hex bytes.\n @param _proof Merkle trie inclusion proof for the key.\n @param _root  Known root of the Merkle trie.\n @return value_ Value of the key if it exists."},"implemented":true,"kind":"function","modifiers":[],"name":"get","nameLocation":"2839:3:232","parameters":{"id":116142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116136,"mutability":"mutable","name":"_key","nameLocation":"2856:4:232","nodeType":"VariableDeclaration","scope":116481,"src":"2843:17:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116135,"name":"bytes","nodeType":"ElementaryTypeName","src":"2843:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":116139,"mutability":"mutable","name":"_proof","nameLocation":"2877:6:232","nodeType":"VariableDeclaration","scope":116481,"src":"2862:21:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":116137,"name":"bytes","nodeType":"ElementaryTypeName","src":"2862:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":116138,"nodeType":"ArrayTypeName","src":"2862:7:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":116141,"mutability":"mutable","name":"_root","nameLocation":"2893:5:232","nodeType":"VariableDeclaration","scope":116481,"src":"2885:13:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":116140,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2885:7:232","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2842:57:232"},"returnParameters":{"id":116145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116144,"mutability":"mutable","name":"value_","nameLocation":"2936:6:232","nodeType":"VariableDeclaration","scope":116481,"src":"2923:19:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116143,"name":"bytes","nodeType":"ElementaryTypeName","src":"2923:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2922:21:232"},"scope":116628,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":116536,"nodeType":"FunctionDefinition","src":"9434:390:232","nodes":[],"body":{"id":116535,"nodeType":"Block","src":"9526:298:232","nodes":[],"statements":[{"assignments":[116493],"declarations":[{"constant":false,"id":116493,"mutability":"mutable","name":"length","nameLocation":"9544:6:232","nodeType":"VariableDeclaration","scope":116535,"src":"9536:14:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116492,"name":"uint256","nodeType":"ElementaryTypeName","src":"9536:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":116496,"initialValue":{"expression":{"id":116494,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116485,"src":"9553:6:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":116495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9553:13:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9536:30:232"},{"expression":{"id":116504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116497,"name":"proof_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116490,"src":"9576:6:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":116502,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116493,"src":"9600:6:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":116501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9585:14:232","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct MerkleTrie.TrieNode memory[] memory)"},"typeName":{"baseType":{"id":116499,"nodeType":"UserDefinedTypeName","pathNode":{"id":116498,"name":"TrieNode","nodeType":"IdentifierPath","referencedDeclaration":116075,"src":"9589:8:232"},"referencedDeclaration":116075,"src":"9589:8:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"id":116500,"nodeType":"ArrayTypeName","src":"9589:10:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_storage_$dyn_storage_ptr","typeString":"struct MerkleTrie.TrieNode[]"}}},"id":116503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9585:22:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"src":"9576:31:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":116505,"nodeType":"ExpressionStatement","src":"9576:31:232"},{"body":{"id":116533,"nodeType":"Block","src":"9650:168:232","statements":[{"expression":{"id":116527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":116513,"name":"proof_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116490,"src":"9664:6:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory[] memory"}},"id":116515,"indexExpression":{"id":116514,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116507,"src":"9671:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9664:9:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":116517,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116485,"src":"9696:6:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":116519,"indexExpression":{"id":116518,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116507,"src":"9703:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9696:9:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"baseExpression":{"id":116522,"name":"_proof","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116485,"src":"9735:6:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":116524,"indexExpression":{"id":116523,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116507,"src":"9742:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9735:9:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116520,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115562,"src":"9716:9:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$115562_$","typeString":"type(library RLPReader)"}},"id":116521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"readList","nodeType":"MemberAccess","referencedDeclaration":115215,"src":"9716:18:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_struct$_RLPItem_$115043_memory_ptr_$dyn_memory_ptr_$","typeString":"function (bytes memory) pure returns (struct RLPReader.RLPItem memory[] memory)"}},"id":116525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9716:29:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}],"id":116516,"name":"TrieNode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116075,"src":"9676:8:232","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TrieNode_$116075_storage_ptr_$","typeString":"type(struct MerkleTrie.TrieNode storage pointer)"}},"id":116526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["encoded","decoded"],"nodeType":"FunctionCall","src":"9676:72:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"src":"9664:84:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116528,"nodeType":"ExpressionStatement","src":"9664:84:232"},{"id":116532,"nodeType":"UncheckedBlock","src":"9762:46:232","statements":[{"expression":{"id":116530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"9790:3:232","subExpression":{"id":116529,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116507,"src":"9792:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":116531,"nodeType":"ExpressionStatement","src":"9790:3:232"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116510,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116507,"src":"9637:1:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":116511,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116493,"src":"9641:6:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9637:10:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":116534,"initializationExpression":{"assignments":[116507],"declarations":[{"constant":false,"id":116507,"mutability":"mutable","name":"i","nameLocation":"9630:1:232","nodeType":"VariableDeclaration","scope":116534,"src":"9622:9:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116506,"name":"uint256","nodeType":"ElementaryTypeName","src":"9622:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":116509,"initialValue":{"hexValue":"30","id":116508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9634:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9622:13:232"},"nodeType":"ForStatement","src":"9617:201:232"}]},"documentation":{"id":116482,"nodeType":"StructuredDocumentation","src":"9150:279:232","text":"@notice Parses an array of proof elements into a new array that contains both the original\n         encoded element and the RLP-decoded element.\n @param _proof Array of proof elements to parse.\n @return proof_ Proof parsed into easily accessible structs."},"implemented":true,"kind":"function","modifiers":[],"name":"_parseProof","nameLocation":"9443:11:232","parameters":{"id":116486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116485,"mutability":"mutable","name":"_proof","nameLocation":"9470:6:232","nodeType":"VariableDeclaration","scope":116536,"src":"9455:21:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":116483,"name":"bytes","nodeType":"ElementaryTypeName","src":"9455:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":116484,"nodeType":"ArrayTypeName","src":"9455:7:232","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"9454:23:232"},"returnParameters":{"id":116491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116490,"mutability":"mutable","name":"proof_","nameLocation":"9518:6:232","nodeType":"VariableDeclaration","scope":116536,"src":"9500:24:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_memory_ptr_$dyn_memory_ptr","typeString":"struct MerkleTrie.TrieNode[]"},"typeName":{"baseType":{"id":116488,"nodeType":"UserDefinedTypeName","pathNode":{"id":116487,"name":"TrieNode","nodeType":"IdentifierPath","referencedDeclaration":116075,"src":"9500:8:232"},"referencedDeclaration":116075,"src":"9500:8:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"id":116489,"nodeType":"ArrayTypeName","src":"9500:10:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TrieNode_$116075_storage_$dyn_storage_ptr","typeString":"struct MerkleTrie.TrieNode[]"}},"visibility":"internal"}],"src":"9499:26:232"},"scope":116628,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":116562,"nodeType":"FunctionDefinition","src":"10121:193:232","nodes":[],"body":{"id":116561,"nodeType":"Block","src":"10213:101:232","nodes":[],"statements":[{"expression":{"id":116559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116545,"name":"id_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116543,"src":"10223:3:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":116546,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116540,"src":"10229:5:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}},"id":116547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":115039,"src":"10229:12:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3332","id":116548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10244:2:232","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10229:17:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":116556,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116540,"src":"10301:5:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"expression":{"id":116554,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115562,"src":"10281:9:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$115562_$","typeString":"type(library RLPReader)"}},"id":116555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"readBytes","nodeType":"MemberAccess","referencedDeclaration":115263,"src":"10281:19:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$115043_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":116557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10281:26:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10229:78:232","trueExpression":{"arguments":[{"id":116552,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116540,"src":"10272:5:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"expression":{"id":116550,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115562,"src":"10249:9:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$115562_$","typeString":"type(library RLPReader)"}},"id":116551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"readRawBytes","nodeType":"MemberAccess","referencedDeclaration":115300,"src":"10249:22:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$115043_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":116553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10249:29:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"10223:84:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116560,"nodeType":"ExpressionStatement","src":"10223:84:232"}]},"documentation":{"id":116537,"nodeType":"StructuredDocumentation","src":"9830:286:232","text":"@notice Picks out the ID for a node. Node ID is referred to as the \"hash\" within the\n         specification, but nodes < 32 bytes are not actually hashed.\n @param _node Node to pull an ID for.\n @return id_ ID for the node, depending on the size of its contents."},"implemented":true,"kind":"function","modifiers":[],"name":"_getNodeID","nameLocation":"10130:10:232","parameters":{"id":116541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116540,"mutability":"mutable","name":"_node","nameLocation":"10166:5:232","nodeType":"VariableDeclaration","scope":116562,"src":"10141:30:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem"},"typeName":{"id":116539,"nodeType":"UserDefinedTypeName","pathNode":{"id":116538,"name":"RLPReader.RLPItem","nodeType":"IdentifierPath","referencedDeclaration":115043,"src":"10141:17:232"},"referencedDeclaration":115043,"src":"10141:17:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_storage_ptr","typeString":"struct RLPReader.RLPItem"}},"visibility":"internal"}],"src":"10140:32:232"},"returnParameters":{"id":116544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116543,"mutability":"mutable","name":"id_","nameLocation":"10208:3:232","nodeType":"VariableDeclaration","scope":116562,"src":"10195:16:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116542,"name":"bytes","nodeType":"ElementaryTypeName","src":"10195:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10194:18:232"},"scope":116628,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":116585,"nodeType":"FunctionDefinition","src":"10495:172:232","nodes":[],"body":{"id":116584,"nodeType":"Block","src":"10585:82:232","nodes":[],"statements":[{"expression":{"id":116582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":116571,"name":"nibbles_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116569,"src":"10595:8:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"baseExpression":{"expression":{"id":116576,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116566,"src":"10642:5:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode memory"}},"id":116577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"decoded","nodeType":"MemberAccess","referencedDeclaration":116074,"src":"10642:13:232","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RLPItem_$115043_memory_ptr_$dyn_memory_ptr","typeString":"struct RLPReader.RLPItem memory[] memory"}},"id":116579,"indexExpression":{"hexValue":"30","id":116578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10656:1:232","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10642:16:232","typeDescriptions":{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RLPItem_$115043_memory_ptr","typeString":"struct RLPReader.RLPItem memory"}],"expression":{"id":116574,"name":"RLPReader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115562,"src":"10622:9:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_RLPReader_$115562_$","typeString":"type(library RLPReader)"}},"id":116575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"readBytes","nodeType":"MemberAccess","referencedDeclaration":115263,"src":"10622:19:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_RLPItem_$115043_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (struct RLPReader.RLPItem memory) pure returns (bytes memory)"}},"id":116580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10622:37:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":116572,"name":"Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112764,"src":"10606:5:232","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Bytes_$112764_$","typeString":"type(library Bytes)"}},"id":116573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toNibbles","nodeType":"MemberAccess","referencedDeclaration":112744,"src":"10606:15:232","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":116581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10606:54:232","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"10595:65:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116583,"nodeType":"ExpressionStatement","src":"10595:65:232"}]},"documentation":{"id":116563,"nodeType":"StructuredDocumentation","src":"10320:170:232","text":"@notice Gets the path for a leaf or extension node.\n @param _node Node to get a path for.\n @return nibbles_ Node path, converted to an array of nibbles."},"implemented":true,"kind":"function","modifiers":[],"name":"_getNodePath","nameLocation":"10504:12:232","parameters":{"id":116567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116566,"mutability":"mutable","name":"_node","nameLocation":"10533:5:232","nodeType":"VariableDeclaration","scope":116585,"src":"10517:21:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_memory_ptr","typeString":"struct MerkleTrie.TrieNode"},"typeName":{"id":116565,"nodeType":"UserDefinedTypeName","pathNode":{"id":116564,"name":"TrieNode","nodeType":"IdentifierPath","referencedDeclaration":116075,"src":"10517:8:232"},"referencedDeclaration":116075,"src":"10517:8:232","typeDescriptions":{"typeIdentifier":"t_struct$_TrieNode_$116075_storage_ptr","typeString":"struct MerkleTrie.TrieNode"}},"visibility":"internal"}],"src":"10516:23:232"},"returnParameters":{"id":116570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116569,"mutability":"mutable","name":"nibbles_","nameLocation":"10575:8:232","nodeType":"VariableDeclaration","scope":116585,"src":"10562:21:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116568,"name":"bytes","nodeType":"ElementaryTypeName","src":"10562:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10561:23:232"},"scope":116628,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":116627,"nodeType":"FunctionDefinition","src":"10892:321:232","nodes":[],"body":{"id":116626,"nodeType":"Block","src":"10997:216:232","nodes":[],"statements":[{"assignments":[116596],"declarations":[{"constant":false,"id":116596,"mutability":"mutable","name":"max","nameLocation":"11015:3:232","nodeType":"VariableDeclaration","scope":116626,"src":"11007:11:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116595,"name":"uint256","nodeType":"ElementaryTypeName","src":"11007:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":116608,"initialValue":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":116597,"name":"_a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116588,"src":"11022:2:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11022:9:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":116599,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116590,"src":"11034:2:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11034:9:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11022:21:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":116602,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11021:23:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":116605,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116590,"src":"11059:2:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11059:9:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":116607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11021:47:232","trueExpression":{"expression":{"id":116603,"name":"_a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116588,"src":"11047:2:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"11047:9:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11007:61:232"},{"body":{"id":116624,"nodeType":"Block","src":"11131:76:232","statements":[{"id":116623,"nodeType":"UncheckedBlock","src":"11145:52:232","statements":[{"expression":{"id":116621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11173:9:232","subExpression":{"id":116620,"name":"shared_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116593,"src":"11175:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":116622,"nodeType":"ExpressionStatement","src":"11173:9:232"}]}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":116619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":116611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":116609,"name":"shared_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116593,"src":"11085:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":116610,"name":"max","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116596,"src":"11095:3:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11085:13:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":116618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":116612,"name":"_a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116588,"src":"11102:2:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116614,"indexExpression":{"id":116613,"name":"shared_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116593,"src":"11105:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11102:11:232","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":116615,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116590,"src":"11117:2:232","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":116617,"indexExpression":{"id":116616,"name":"shared_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116593,"src":"11120:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11117:11:232","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"11102:26:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11085:43:232","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":116625,"nodeType":"ForStatement","src":"11078:129:232"}]},"documentation":{"id":116586,"nodeType":"StructuredDocumentation","src":"10673:214:232","text":"@notice Utility; determines the number of nibbles shared between two nibble arrays.\n @param _a First nibble array.\n @param _b Second nibble array.\n @return shared_ Number of shared nibbles."},"implemented":true,"kind":"function","modifiers":[],"name":"_getSharedNibbleLength","nameLocation":"10901:22:232","parameters":{"id":116591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116588,"mutability":"mutable","name":"_a","nameLocation":"10937:2:232","nodeType":"VariableDeclaration","scope":116627,"src":"10924:15:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116587,"name":"bytes","nodeType":"ElementaryTypeName","src":"10924:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":116590,"mutability":"mutable","name":"_b","nameLocation":"10954:2:232","nodeType":"VariableDeclaration","scope":116627,"src":"10941:15:232","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":116589,"name":"bytes","nodeType":"ElementaryTypeName","src":"10941:5:232","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10923:34:232"},"returnParameters":{"id":116594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116593,"mutability":"mutable","name":"shared_","nameLocation":"10988:7:232","nodeType":"VariableDeclaration","scope":116627,"src":"10980:15:232","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":116592,"name":"uint256","nodeType":"ElementaryTypeName","src":"10980:7:232","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10979:17:232"},"scope":116628,"stateMutability":"pure","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"MerkleTrie","contractDependencies":[],"contractKind":"library","documentation":{"id":116068,"nodeType":"StructuredDocumentation","src":"146:277:232","text":"@title MerkleTrie\n @notice MerkleTrie is a small library for verifying standard Ethereum Merkle-Patricia trie\n         inclusion proofs. By default, this library assumes a hexary trie. One can change the\n         trie radix constant to support other trie radixes."},"fullyImplemented":true,"linearizedBaseContracts":[116628],"name":"MerkleTrie","nameLocation":"431:10:232","scope":116629,"usedErrors":[]}],"license":"MIT"},"id":232}