UNPKG

@tokamak-network/thanos-contracts

Version:
1 lines 27.1 kB
{"abi":[],"bytecode":{"object":"0x602c6032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c634300081a000a","sourceMap":"154:3315:71:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;154:3315:71;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c634300081a000a","sourceMap":"154:3315:71:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Storage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Storage handles reading and writing to arbitary storage locations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Storage.sol\":\"Storage\"},\"evmVersion\":\"cancun\",\"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/Storage.sol\":{\"keccak256\":\"0x7ce27a05552aa69afa6b2ab6684dfe99f27366cf8ef2046baeb1fb62fff0022f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a24f3ed56681720707a5ab0372fd67fcb1a4f6fb072c7140cda28bdb70f269\",\"dweb:/ipfs/QmW9uTpUULV4xmP7A7MoBDeDhVfQgmJG5qVUFGtXxWpWWK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"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/Storage.sol":"Storage"},"evmVersion":"cancun","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/libraries/Storage.sol":{"keccak256":"0x7ce27a05552aa69afa6b2ab6684dfe99f27366cf8ef2046baeb1fb62fff0022f","urls":["bzz-raw://a6a24f3ed56681720707a5ab0372fd67fcb1a4f6fb072c7140cda28bdb70f269","dweb:/ipfs/QmW9uTpUULV4xmP7A7MoBDeDhVfQgmJG5qVUFGtXxWpWWK"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","notice":"Storage handles reading and writing to arbitary storage locations"},"devdoc":{"version":1,"kind":"dev","title":"Storage"},"ast":{"absolutePath":"src/libraries/Storage.sol","id":56888,"exportedSymbols":{"Storage":[56887]},"nodeType":"SourceUnit","src":"32:3438:71","nodes":[{"id":56805,"nodeType":"PragmaDirective","src":"32:23:71","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":56887,"nodeType":"ContractDefinition","src":"154:3315:71","nodes":[{"id":56816,"nodeType":"FunctionDefinition","src":"420:143:71","nodes":[],"body":{"id":56815,"nodeType":"Block","src":"493:70:71","nodes":[],"statements":[{"AST":{"nativeSrc":"512:45:71","nodeType":"YulBlock","src":"512:45:71","statements":[{"nativeSrc":"526:21:71","nodeType":"YulAssignment","src":"526:21:71","value":{"arguments":[{"name":"_slot","nativeSrc":"541:5:71","nodeType":"YulIdentifier","src":"541:5:71"}],"functionName":{"name":"sload","nativeSrc":"535:5:71","nodeType":"YulIdentifier","src":"535:5:71"},"nativeSrc":"535:12:71","nodeType":"YulFunctionCall","src":"535:12:71"},"variableNames":[{"name":"addr_","nativeSrc":"526:5:71","nodeType":"YulIdentifier","src":"526:5:71"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":56809,"isOffset":false,"isSlot":false,"src":"541:5:71","valueSize":1},{"declaration":56812,"isOffset":false,"isSlot":false,"src":"526:5:71","valueSize":1}],"id":56814,"nodeType":"InlineAssembly","src":"503:54:71"}]},"documentation":{"id":56807,"nodeType":"StructuredDocumentation","src":"176:239:71","text":"@notice Returns an address stored in an arbitrary storage slot.\n These storage slots decouple the storage layout from\n solc's automation.\n @param _slot The storage slot to retrieve the address from."},"implemented":true,"kind":"function","modifiers":[],"name":"getAddress","nameLocation":"429:10:71","parameters":{"id":56810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56809,"mutability":"mutable","name":"_slot","nameLocation":"448:5:71","nodeType":"VariableDeclaration","scope":56816,"src":"440:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56808,"name":"bytes32","nodeType":"ElementaryTypeName","src":"440:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"439:15:71"},"returnParameters":{"id":56813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56812,"mutability":"mutable","name":"addr_","nameLocation":"486:5:71","nodeType":"VariableDeclaration","scope":56816,"src":"478:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56811,"name":"address","nodeType":"ElementaryTypeName","src":"478:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"477:15:71"},"scope":56887,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":56826,"nodeType":"FunctionDefinition","src":"900:134:71","nodes":[],"body":{"id":56825,"nodeType":"Block","src":"962:72:71","nodes":[],"statements":[{"AST":{"nativeSrc":"981:47:71","nodeType":"YulBlock","src":"981:47:71","statements":[{"expression":{"arguments":[{"name":"_slot","nativeSrc":"1002:5:71","nodeType":"YulIdentifier","src":"1002:5:71"},{"name":"_address","nativeSrc":"1009:8:71","nodeType":"YulIdentifier","src":"1009:8:71"}],"functionName":{"name":"sstore","nativeSrc":"995:6:71","nodeType":"YulIdentifier","src":"995:6:71"},"nativeSrc":"995:23:71","nodeType":"YulFunctionCall","src":"995:23:71"},"nativeSrc":"995:23:71","nodeType":"YulExpressionStatement","src":"995:23:71"}]},"evmVersion":"cancun","externalReferences":[{"declaration":56821,"isOffset":false,"isSlot":false,"src":"1009:8:71","valueSize":1},{"declaration":56819,"isOffset":false,"isSlot":false,"src":"1002:5:71","valueSize":1}],"id":56824,"nodeType":"InlineAssembly","src":"972:56:71"}]},"documentation":{"id":56817,"nodeType":"StructuredDocumentation","src":"569:326:71","text":"@notice Stores an address in an arbitrary storage slot, `_slot`.\n @param _slot The storage slot to store the address in.\n @param _address The protocol version to store\n @dev WARNING! This function must be used cautiously, as it allows for overwriting addresses\n in arbitrary storage slots."},"implemented":true,"kind":"function","modifiers":[],"name":"setAddress","nameLocation":"909:10:71","parameters":{"id":56822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56819,"mutability":"mutable","name":"_slot","nameLocation":"928:5:71","nodeType":"VariableDeclaration","scope":56826,"src":"920:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56818,"name":"bytes32","nodeType":"ElementaryTypeName","src":"920:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56821,"mutability":"mutable","name":"_address","nameLocation":"943:8:71","nodeType":"VariableDeclaration","scope":56826,"src":"935:16:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56820,"name":"address","nodeType":"ElementaryTypeName","src":"935:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"919:33:71"},"returnParameters":{"id":56823,"nodeType":"ParameterList","parameters":[],"src":"962:0:71"},"scope":56887,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56836,"nodeType":"FunctionDefinition","src":"1283:142:71","nodes":[],"body":{"id":56835,"nodeType":"Block","src":"1354:71:71","nodes":[],"statements":[{"AST":{"nativeSrc":"1373:46:71","nodeType":"YulBlock","src":"1373:46:71","statements":[{"nativeSrc":"1387:22:71","nodeType":"YulAssignment","src":"1387:22:71","value":{"arguments":[{"name":"_slot","nativeSrc":"1403:5:71","nodeType":"YulIdentifier","src":"1403:5:71"}],"functionName":{"name":"sload","nativeSrc":"1397:5:71","nodeType":"YulIdentifier","src":"1397:5:71"},"nativeSrc":"1397:12:71","nodeType":"YulFunctionCall","src":"1397:12:71"},"variableNames":[{"name":"value_","nativeSrc":"1387:6:71","nodeType":"YulIdentifier","src":"1387:6:71"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":56829,"isOffset":false,"isSlot":false,"src":"1403:5:71","valueSize":1},{"declaration":56832,"isOffset":false,"isSlot":false,"src":"1387:6:71","valueSize":1}],"id":56834,"nodeType":"InlineAssembly","src":"1364:55:71"}]},"documentation":{"id":56827,"nodeType":"StructuredDocumentation","src":"1040:238:71","text":"@notice Returns a uint256 stored in an arbitrary storage slot.\n These storage slots decouple the storage layout from\n solc's automation.\n @param _slot The storage slot to retrieve the address from."},"implemented":true,"kind":"function","modifiers":[],"name":"getUint","nameLocation":"1292:7:71","parameters":{"id":56830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56829,"mutability":"mutable","name":"_slot","nameLocation":"1308:5:71","nodeType":"VariableDeclaration","scope":56836,"src":"1300:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56828,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1300:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1299:15:71"},"returnParameters":{"id":56833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56832,"mutability":"mutable","name":"value_","nameLocation":"1346:6:71","nodeType":"VariableDeclaration","scope":56836,"src":"1338:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56831,"name":"uint256","nodeType":"ElementaryTypeName","src":"1338:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1337:16:71"},"scope":56887,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":56846,"nodeType":"FunctionDefinition","src":"1754:127:71","nodes":[],"body":{"id":56845,"nodeType":"Block","src":"1811:70:71","nodes":[],"statements":[{"AST":{"nativeSrc":"1830:45:71","nodeType":"YulBlock","src":"1830:45:71","statements":[{"expression":{"arguments":[{"name":"_slot","nativeSrc":"1851:5:71","nodeType":"YulIdentifier","src":"1851:5:71"},{"name":"_value","nativeSrc":"1858:6:71","nodeType":"YulIdentifier","src":"1858:6:71"}],"functionName":{"name":"sstore","nativeSrc":"1844:6:71","nodeType":"YulIdentifier","src":"1844:6:71"},"nativeSrc":"1844:21:71","nodeType":"YulFunctionCall","src":"1844:21:71"},"nativeSrc":"1844:21:71","nodeType":"YulExpressionStatement","src":"1844:21:71"}]},"evmVersion":"cancun","externalReferences":[{"declaration":56839,"isOffset":false,"isSlot":false,"src":"1851:5:71","valueSize":1},{"declaration":56841,"isOffset":false,"isSlot":false,"src":"1858:6:71","valueSize":1}],"id":56844,"nodeType":"InlineAssembly","src":"1821:54:71"}]},"documentation":{"id":56837,"nodeType":"StructuredDocumentation","src":"1431:318:71","text":"@notice Stores a value in an arbitrary storage slot, `_slot`.\n @param _slot The storage slot to store the address in.\n @param _value The protocol version to store\n @dev WARNING! This function must be used cautiously, as it allows for overwriting values\n in arbitrary storage slots."},"implemented":true,"kind":"function","modifiers":[],"name":"setUint","nameLocation":"1763:7:71","parameters":{"id":56842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56839,"mutability":"mutable","name":"_slot","nameLocation":"1779:5:71","nodeType":"VariableDeclaration","scope":56846,"src":"1771:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56838,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1771:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56841,"mutability":"mutable","name":"_value","nameLocation":"1794:6:71","nodeType":"VariableDeclaration","scope":56846,"src":"1786:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56840,"name":"uint256","nodeType":"ElementaryTypeName","src":"1786:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1770:31:71"},"returnParameters":{"id":56843,"nodeType":"ParameterList","parameters":[],"src":"1811:0:71"},"scope":56887,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56856,"nodeType":"FunctionDefinition","src":"2130:145:71","nodes":[],"body":{"id":56855,"nodeType":"Block","src":"2204:71:71","nodes":[],"statements":[{"AST":{"nativeSrc":"2223:46:71","nodeType":"YulBlock","src":"2223:46:71","statements":[{"nativeSrc":"2237:22:71","nodeType":"YulAssignment","src":"2237:22:71","value":{"arguments":[{"name":"_slot","nativeSrc":"2253:5:71","nodeType":"YulIdentifier","src":"2253:5:71"}],"functionName":{"name":"sload","nativeSrc":"2247:5:71","nodeType":"YulIdentifier","src":"2247:5:71"},"nativeSrc":"2247:12:71","nodeType":"YulFunctionCall","src":"2247:12:71"},"variableNames":[{"name":"value_","nativeSrc":"2237:6:71","nodeType":"YulIdentifier","src":"2237:6:71"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":56849,"isOffset":false,"isSlot":false,"src":"2253:5:71","valueSize":1},{"declaration":56852,"isOffset":false,"isSlot":false,"src":"2237:6:71","valueSize":1}],"id":56854,"nodeType":"InlineAssembly","src":"2214:55:71"}]},"documentation":{"id":56847,"nodeType":"StructuredDocumentation","src":"1887:238:71","text":"@notice Returns a bytes32 stored in an arbitrary storage slot.\n These storage slots decouple the storage layout from\n solc's automation.\n @param _slot The storage slot to retrieve the address from."},"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32","nameLocation":"2139:10:71","parameters":{"id":56850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56849,"mutability":"mutable","name":"_slot","nameLocation":"2158:5:71","nodeType":"VariableDeclaration","scope":56856,"src":"2150:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56848,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2150:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2149:15:71"},"returnParameters":{"id":56853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56852,"mutability":"mutable","name":"value_","nameLocation":"2196:6:71","nodeType":"VariableDeclaration","scope":56856,"src":"2188:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56851,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2188:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2187:16:71"},"scope":56887,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":56866,"nodeType":"FunctionDefinition","src":"2610:130:71","nodes":[],"body":{"id":56865,"nodeType":"Block","src":"2670:70:71","nodes":[],"statements":[{"AST":{"nativeSrc":"2689:45:71","nodeType":"YulBlock","src":"2689:45:71","statements":[{"expression":{"arguments":[{"name":"_slot","nativeSrc":"2710:5:71","nodeType":"YulIdentifier","src":"2710:5:71"},{"name":"_value","nativeSrc":"2717:6:71","nodeType":"YulIdentifier","src":"2717:6:71"}],"functionName":{"name":"sstore","nativeSrc":"2703:6:71","nodeType":"YulIdentifier","src":"2703:6:71"},"nativeSrc":"2703:21:71","nodeType":"YulFunctionCall","src":"2703:21:71"},"nativeSrc":"2703:21:71","nodeType":"YulExpressionStatement","src":"2703:21:71"}]},"evmVersion":"cancun","externalReferences":[{"declaration":56859,"isOffset":false,"isSlot":false,"src":"2710:5:71","valueSize":1},{"declaration":56861,"isOffset":false,"isSlot":false,"src":"2717:6:71","valueSize":1}],"id":56864,"nodeType":"InlineAssembly","src":"2680:54:71"}]},"documentation":{"id":56857,"nodeType":"StructuredDocumentation","src":"2281:324:71","text":"@notice Stores a bytes32 value in an arbitrary storage slot, `_slot`.\n @param _slot The storage slot to store the address in.\n @param _value The bytes32 value to store.\n @dev WARNING! This function must be used cautiously, as it allows for overwriting values\n in arbitrary storage slots."},"implemented":true,"kind":"function","modifiers":[],"name":"setBytes32","nameLocation":"2619:10:71","parameters":{"id":56862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56859,"mutability":"mutable","name":"_slot","nameLocation":"2638:5:71","nodeType":"VariableDeclaration","scope":56866,"src":"2630:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56858,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2630:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56861,"mutability":"mutable","name":"_value","nameLocation":"2653:6:71","nodeType":"VariableDeclaration","scope":56866,"src":"2645:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56860,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2645:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2629:31:71"},"returnParameters":{"id":56863,"nodeType":"ParameterList","parameters":[],"src":"2670:0:71"},"scope":56887,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56876,"nodeType":"FunctionDefinition","src":"3065:124:71","nodes":[],"body":{"id":56875,"nodeType":"Block","src":"3119:70:71","nodes":[],"statements":[{"AST":{"nativeSrc":"3138:45:71","nodeType":"YulBlock","src":"3138:45:71","statements":[{"expression":{"arguments":[{"name":"_slot","nativeSrc":"3159:5:71","nodeType":"YulIdentifier","src":"3159:5:71"},{"name":"_value","nativeSrc":"3166:6:71","nodeType":"YulIdentifier","src":"3166:6:71"}],"functionName":{"name":"sstore","nativeSrc":"3152:6:71","nodeType":"YulIdentifier","src":"3152:6:71"},"nativeSrc":"3152:21:71","nodeType":"YulFunctionCall","src":"3152:21:71"},"nativeSrc":"3152:21:71","nodeType":"YulExpressionStatement","src":"3152:21:71"}]},"evmVersion":"cancun","externalReferences":[{"declaration":56869,"isOffset":false,"isSlot":false,"src":"3159:5:71","valueSize":1},{"declaration":56871,"isOffset":false,"isSlot":false,"src":"3166:6:71","valueSize":1}],"id":56874,"nodeType":"InlineAssembly","src":"3129:54:71"}]},"documentation":{"id":56867,"nodeType":"StructuredDocumentation","src":"2746:314:71","text":"@notice Stores a bool value in an arbitrary storage slot, `_slot`.\n @param _slot The storage slot to store the bool in.\n @param _value The bool value to store\n @dev WARNING! This function must be used cautiously, as it allows for overwriting values\n in arbitrary storage slots."},"implemented":true,"kind":"function","modifiers":[],"name":"setBool","nameLocation":"3074:7:71","parameters":{"id":56872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56869,"mutability":"mutable","name":"_slot","nameLocation":"3090:5:71","nodeType":"VariableDeclaration","scope":56876,"src":"3082:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3082:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56871,"mutability":"mutable","name":"_value","nameLocation":"3102:6:71","nodeType":"VariableDeclaration","scope":56876,"src":"3097:11:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":56870,"name":"bool","nodeType":"ElementaryTypeName","src":"3097:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3081:28:71"},"returnParameters":{"id":56873,"nodeType":"ParameterList","parameters":[],"src":"3119:0:71"},"scope":56887,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56886,"nodeType":"FunctionDefinition","src":"3328:139:71","nodes":[],"body":{"id":56885,"nodeType":"Block","src":"3396:71:71","nodes":[],"statements":[{"AST":{"nativeSrc":"3415:46:71","nodeType":"YulBlock","src":"3415:46:71","statements":[{"nativeSrc":"3429:22:71","nodeType":"YulAssignment","src":"3429:22:71","value":{"arguments":[{"name":"_slot","nativeSrc":"3445:5:71","nodeType":"YulIdentifier","src":"3445:5:71"}],"functionName":{"name":"sload","nativeSrc":"3439:5:71","nodeType":"YulIdentifier","src":"3439:5:71"},"nativeSrc":"3439:12:71","nodeType":"YulFunctionCall","src":"3439:12:71"},"variableNames":[{"name":"value_","nativeSrc":"3429:6:71","nodeType":"YulIdentifier","src":"3429:6:71"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":56879,"isOffset":false,"isSlot":false,"src":"3445:5:71","valueSize":1},{"declaration":56882,"isOffset":false,"isSlot":false,"src":"3429:6:71","valueSize":1}],"id":56884,"nodeType":"InlineAssembly","src":"3406:55:71"}]},"documentation":{"id":56877,"nodeType":"StructuredDocumentation","src":"3195:128:71","text":"@notice Returns a bool stored in an arbitrary storage slot.\n @param _slot The storage slot to retrieve the bool from."},"implemented":true,"kind":"function","modifiers":[],"name":"getBool","nameLocation":"3337:7:71","parameters":{"id":56880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56879,"mutability":"mutable","name":"_slot","nameLocation":"3353:5:71","nodeType":"VariableDeclaration","scope":56886,"src":"3345:13:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3345:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3344:15:71"},"returnParameters":{"id":56883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56882,"mutability":"mutable","name":"value_","nameLocation":"3388:6:71","nodeType":"VariableDeclaration","scope":56886,"src":"3383:11:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":56881,"name":"bool","nodeType":"ElementaryTypeName","src":"3383:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3382:13:71"},"scope":56887,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Storage","contractDependencies":[],"contractKind":"library","documentation":{"id":56806,"nodeType":"StructuredDocumentation","src":"57:97:71","text":"@title Storage\n @notice Storage handles reading and writing to arbitary storage locations"},"fullyImplemented":true,"linearizedBaseContracts":[56887],"name":"Storage","nameLocation":"162:7:71","scope":56888,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":71}