@tokamak-network/thanos-contracts
Version:
1 lines • 25.1 kB
JSON
{"abi":[],"bytecode":{"object":"0x6080604052348015600e575f80fd5b50601580601a5f395ff3fe60806040525f80fdfea164736f6c634300081a000a","sourceMap":"2303:224:72:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040525f80fdfea164736f6c634300081a000a","sourceMap":"2303:224:72:-:0;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"TransientReentrancyAware\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Reentrancy-aware modifier for transient storage, which increments and decrements the call depth when entering and exiting a function.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/TransientContext.sol\":\"TransientReentrancyAware\"},\"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/TransientContext.sol\":{\"keccak256\":\"0x7ae128d512768e928b3cd2d7604fcded205e5a99465360985fb0aaf985e888f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://555255ed8deedb8cb090d5f979b51356a98c12b259ec07664de33280d24738fd\",\"dweb:/ipfs/QmPUAfTpoqqUDEaRC2gRPr2CFbKSaz8J4yBQgLc9wM6Hss\"]}},\"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/TransientContext.sol":"TransientReentrancyAware"},"evmVersion":"cancun","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/libraries/TransientContext.sol":{"keccak256":"0x7ae128d512768e928b3cd2d7604fcded205e5a99465360985fb0aaf985e888f8","urls":["bzz-raw://555255ed8deedb8cb090d5f979b51356a98c12b259ec07664de33280d24738fd","dweb:/ipfs/QmPUAfTpoqqUDEaRC2gRPr2CFbKSaz8J4yBQgLc9wM6Hss"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user","notice":"Reentrancy-aware modifier for transient storage, which increments and decrements the call depth when entering and exiting a function."},"devdoc":{"version":1,"kind":"dev","title":"TransientReentrancyAware"},"ast":{"absolutePath":"src/libraries/TransientContext.sol","id":56953,"exportedSymbols":{"TransientContext":[56935],"TransientReentrancyAware":[56952]},"nodeType":"SourceUnit","src":"32:2496:72","nodes":[{"id":56889,"nodeType":"PragmaDirective","src":"32:24:72","nodes":[],"literals":["solidity","^","0.8",".24"]},{"id":56935,"nodeType":"ContractDefinition","src":"129:1978:72","nodes":[{"id":56894,"nodeType":"VariableDeclaration","src":"278:110:72","nodes":[],"constant":true,"documentation":{"id":56891,"nodeType":"StructuredDocumentation","src":"160:113:72","text":"@notice Slot for call depth.\n Equal to bytes32(uint256(keccak256(\"transient.calldepth\")) - 1)."},"mutability":"constant","name":"CALL_DEPTH_SLOT","nameLocation":"304:15:72","scope":56935,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56892,"name":"bytes32","nodeType":"ElementaryTypeName","src":"278:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307837613734666431363837363366643238306561656333626364326664363264306537393530323761646338313833613639336334393761376332623130623563","id":56893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"322:66:72","typeDescriptions":{"typeIdentifier":"t_rational_55388868535875649073547711647255167311425207837940097558979256947742365256540_by_1","typeString":"int_const 5538...(69 digits omitted)...6540"},"value":"0x7a74fd168763fd280eaec3bcd2fd62d0e795027adc8183a693c497a7c2b10b5c"},"visibility":"internal"},{"id":56902,"nodeType":"FunctionDefinition","src":"479:165:72","nodes":[],"body":{"id":56901,"nodeType":"Block","src":"543:101:72","nodes":[],"statements":[{"AST":{"nativeSrc":"578:60:72","nodeType":"YulBlock","src":"578:60:72","statements":[{"nativeSrc":"592:36:72","nodeType":"YulAssignment","src":"592:36:72","value":{"arguments":[{"name":"CALL_DEPTH_SLOT","nativeSrc":"612:15:72","nodeType":"YulIdentifier","src":"612:15:72"}],"functionName":{"name":"tload","nativeSrc":"606:5:72","nodeType":"YulIdentifier","src":"606:5:72"},"nativeSrc":"606:22:72","nodeType":"YulFunctionCall","src":"606:22:72"},"variableNames":[{"name":"callDepth_","nativeSrc":"592:10:72","nodeType":"YulIdentifier","src":"592:10:72"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":56894,"isOffset":false,"isSlot":false,"src":"612:15:72","valueSize":1},{"declaration":56898,"isOffset":false,"isSlot":false,"src":"592:10:72","valueSize":1}],"flags":["memory-safe"],"id":56900,"nodeType":"InlineAssembly","src":"553:85:72"}]},"documentation":{"id":56895,"nodeType":"StructuredDocumentation","src":"395:79:72","text":"@notice Gets the call depth.\n @return callDepth_ Current call depth."},"implemented":true,"kind":"function","modifiers":[],"name":"callDepth","nameLocation":"488:9:72","parameters":{"id":56896,"nodeType":"ParameterList","parameters":[],"src":"497:2:72"},"returnParameters":{"id":56899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56898,"mutability":"mutable","name":"callDepth_","nameLocation":"531:10:72","nodeType":"VariableDeclaration","scope":56902,"src":"523:18:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56897,"name":"uint256","nodeType":"ElementaryTypeName","src":"523:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"522:20:72"},"scope":56935,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":56912,"nodeType":"FunctionDefinition","src":"810:241:72","nodes":[],"body":{"id":56911,"nodeType":"Block","src":"877:174:72","nodes":[],"statements":[{"AST":{"nativeSrc":"912:133:72","nodeType":"YulBlock","src":"912:133:72","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"933:1:72","nodeType":"YulLiteral","src":"933:1:72","type":"","value":"0"},{"arguments":[{"name":"CALL_DEPTH_SLOT","nativeSrc":"942:15:72","nodeType":"YulIdentifier","src":"942:15:72"}],"functionName":{"name":"tload","nativeSrc":"936:5:72","nodeType":"YulIdentifier","src":"936:5:72"},"nativeSrc":"936:22:72","nodeType":"YulFunctionCall","src":"936:22:72"}],"functionName":{"name":"mstore","nativeSrc":"926:6:72","nodeType":"YulIdentifier","src":"926:6:72"},"nativeSrc":"926:33:72","nodeType":"YulFunctionCall","src":"926:33:72"},"nativeSrc":"926:33:72","nodeType":"YulExpressionStatement","src":"926:33:72"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"979:2:72","nodeType":"YulLiteral","src":"979:2:72","type":"","value":"32"},{"name":"_slot","nativeSrc":"983:5:72","nodeType":"YulIdentifier","src":"983:5:72"}],"functionName":{"name":"mstore","nativeSrc":"972:6:72","nodeType":"YulIdentifier","src":"972:6:72"},"nativeSrc":"972:17:72","nodeType":"YulFunctionCall","src":"972:17:72"},"nativeSrc":"972:17:72","nodeType":"YulExpressionStatement","src":"972:17:72"},{"nativeSrc":"1002:33:72","nodeType":"YulAssignment","src":"1002:33:72","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1028:1:72","nodeType":"YulLiteral","src":"1028:1:72","type":"","value":"0"},{"kind":"number","nativeSrc":"1031:2:72","nodeType":"YulLiteral","src":"1031:2:72","type":"","value":"64"}],"functionName":{"name":"keccak256","nativeSrc":"1018:9:72","nodeType":"YulIdentifier","src":"1018:9:72"},"nativeSrc":"1018:16:72","nodeType":"YulFunctionCall","src":"1018:16:72"}],"functionName":{"name":"tload","nativeSrc":"1012:5:72","nodeType":"YulIdentifier","src":"1012:5:72"},"nativeSrc":"1012:23:72","nodeType":"YulFunctionCall","src":"1012:23:72"},"variableNames":[{"name":"value_","nativeSrc":"1002:6:72","nodeType":"YulIdentifier","src":"1002:6:72"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":56894,"isOffset":false,"isSlot":false,"src":"942:15:72","valueSize":1},{"declaration":56905,"isOffset":false,"isSlot":false,"src":"983:5:72","valueSize":1},{"declaration":56908,"isOffset":false,"isSlot":false,"src":"1002:6:72","valueSize":1}],"flags":["memory-safe"],"id":56910,"nodeType":"InlineAssembly","src":"887:158:72"}]},"documentation":{"id":56903,"nodeType":"StructuredDocumentation","src":"650:155:72","text":"@notice Gets value in transient storage for a slot at the current call depth.\n @param _slot Slot to get.\n @return value_ Transient value."},"implemented":true,"kind":"function","modifiers":[],"name":"get","nameLocation":"819:3:72","parameters":{"id":56906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56905,"mutability":"mutable","name":"_slot","nameLocation":"831:5:72","nodeType":"VariableDeclaration","scope":56912,"src":"823:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56904,"name":"bytes32","nodeType":"ElementaryTypeName","src":"823:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"822:15:72"},"returnParameters":{"id":56909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56908,"mutability":"mutable","name":"value_","nameLocation":"869:6:72","nodeType":"VariableDeclaration","scope":56912,"src":"861:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56907,"name":"uint256","nodeType":"ElementaryTypeName","src":"861:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"860:16:72"},"scope":56935,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":56922,"nodeType":"FunctionDefinition","src":"1220:226:72","nodes":[],"body":{"id":56921,"nodeType":"Block","src":"1273:173:72","nodes":[],"statements":[{"AST":{"nativeSrc":"1308:132:72","nodeType":"YulBlock","src":"1308:132:72","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1329:1:72","nodeType":"YulLiteral","src":"1329:1:72","type":"","value":"0"},{"arguments":[{"name":"CALL_DEPTH_SLOT","nativeSrc":"1338:15:72","nodeType":"YulIdentifier","src":"1338:15:72"}],"functionName":{"name":"tload","nativeSrc":"1332:5:72","nodeType":"YulIdentifier","src":"1332:5:72"},"nativeSrc":"1332:22:72","nodeType":"YulFunctionCall","src":"1332:22:72"}],"functionName":{"name":"mstore","nativeSrc":"1322:6:72","nodeType":"YulIdentifier","src":"1322:6:72"},"nativeSrc":"1322:33:72","nodeType":"YulFunctionCall","src":"1322:33:72"},"nativeSrc":"1322:33:72","nodeType":"YulExpressionStatement","src":"1322:33:72"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1375:2:72","nodeType":"YulLiteral","src":"1375:2:72","type":"","value":"32"},{"name":"_slot","nativeSrc":"1379:5:72","nodeType":"YulIdentifier","src":"1379:5:72"}],"functionName":{"name":"mstore","nativeSrc":"1368:6:72","nodeType":"YulIdentifier","src":"1368:6:72"},"nativeSrc":"1368:17:72","nodeType":"YulFunctionCall","src":"1368:17:72"},"nativeSrc":"1368:17:72","nodeType":"YulExpressionStatement","src":"1368:17:72"},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1415:1:72","nodeType":"YulLiteral","src":"1415:1:72","type":"","value":"0"},{"kind":"number","nativeSrc":"1418:2:72","nodeType":"YulLiteral","src":"1418:2:72","type":"","value":"64"}],"functionName":{"name":"keccak256","nativeSrc":"1405:9:72","nodeType":"YulIdentifier","src":"1405:9:72"},"nativeSrc":"1405:16:72","nodeType":"YulFunctionCall","src":"1405:16:72"},{"name":"_value","nativeSrc":"1423:6:72","nodeType":"YulIdentifier","src":"1423:6:72"}],"functionName":{"name":"tstore","nativeSrc":"1398:6:72","nodeType":"YulIdentifier","src":"1398:6:72"},"nativeSrc":"1398:32:72","nodeType":"YulFunctionCall","src":"1398:32:72"},"nativeSrc":"1398:32:72","nodeType":"YulExpressionStatement","src":"1398:32:72"}]},"evmVersion":"cancun","externalReferences":[{"declaration":56894,"isOffset":false,"isSlot":false,"src":"1338:15:72","valueSize":1},{"declaration":56915,"isOffset":false,"isSlot":false,"src":"1379:5:72","valueSize":1},{"declaration":56917,"isOffset":false,"isSlot":false,"src":"1423:6:72","valueSize":1}],"flags":["memory-safe"],"id":56920,"nodeType":"InlineAssembly","src":"1283:157:72"}]},"documentation":{"id":56913,"nodeType":"StructuredDocumentation","src":"1057:158:72","text":"@notice Sets a value in transient storage for a slot at the current call depth.\n @param _slot Slot to set.\n @param _value Value to set."},"implemented":true,"kind":"function","modifiers":[],"name":"set","nameLocation":"1229:3:72","parameters":{"id":56918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56915,"mutability":"mutable","name":"_slot","nameLocation":"1241:5:72","nodeType":"VariableDeclaration","scope":56922,"src":"1233:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":56914,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1233:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":56917,"mutability":"mutable","name":"_value","nameLocation":"1256:6:72","nodeType":"VariableDeclaration","scope":56922,"src":"1248:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56916,"name":"uint256","nodeType":"ElementaryTypeName","src":"1248:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1232:31:72"},"returnParameters":{"id":56919,"nodeType":"ParameterList","parameters":[],"src":"1273:0:72"},"scope":56935,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56928,"nodeType":"FunctionDefinition","src":"1625:150:72","nodes":[],"body":{"id":56927,"nodeType":"Block","src":"1655:120:72","nodes":[],"statements":[{"AST":{"nativeSrc":"1690:79:72","nodeType":"YulBlock","src":"1690:79:72","statements":[{"expression":{"arguments":[{"name":"CALL_DEPTH_SLOT","nativeSrc":"1711:15:72","nodeType":"YulIdentifier","src":"1711:15:72"},{"arguments":[{"arguments":[{"name":"CALL_DEPTH_SLOT","nativeSrc":"1738:15:72","nodeType":"YulIdentifier","src":"1738:15:72"}],"functionName":{"name":"tload","nativeSrc":"1732:5:72","nodeType":"YulIdentifier","src":"1732:5:72"},"nativeSrc":"1732:22:72","nodeType":"YulFunctionCall","src":"1732:22:72"},{"kind":"number","nativeSrc":"1756:1:72","nodeType":"YulLiteral","src":"1756:1:72","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"1728:3:72","nodeType":"YulIdentifier","src":"1728:3:72"},"nativeSrc":"1728:30:72","nodeType":"YulFunctionCall","src":"1728:30:72"}],"functionName":{"name":"tstore","nativeSrc":"1704:6:72","nodeType":"YulIdentifier","src":"1704:6:72"},"nativeSrc":"1704:55:72","nodeType":"YulFunctionCall","src":"1704:55:72"},"nativeSrc":"1704:55:72","nodeType":"YulExpressionStatement","src":"1704:55:72"}]},"evmVersion":"cancun","externalReferences":[{"declaration":56894,"isOffset":false,"isSlot":false,"src":"1711:15:72","valueSize":1},{"declaration":56894,"isOffset":false,"isSlot":false,"src":"1738:15:72","valueSize":1}],"flags":["memory-safe"],"id":56926,"nodeType":"InlineAssembly","src":"1665:104:72"}]},"documentation":{"id":56923,"nodeType":"StructuredDocumentation","src":"1452:168:72","text":"@notice Increments call depth.\n This function can overflow. However, this is ok because there's still\n only one value stored per slot."},"implemented":true,"kind":"function","modifiers":[],"name":"increment","nameLocation":"1634:9:72","parameters":{"id":56924,"nodeType":"ParameterList","parameters":[],"src":"1643:2:72"},"returnParameters":{"id":56925,"nodeType":"ParameterList","parameters":[],"src":"1655:0:72"},"scope":56935,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56934,"nodeType":"FunctionDefinition","src":"1955:150:72","nodes":[],"body":{"id":56933,"nodeType":"Block","src":"1985:120:72","nodes":[],"statements":[{"AST":{"nativeSrc":"2020:79:72","nodeType":"YulBlock","src":"2020:79:72","statements":[{"expression":{"arguments":[{"name":"CALL_DEPTH_SLOT","nativeSrc":"2041:15:72","nodeType":"YulIdentifier","src":"2041:15:72"},{"arguments":[{"arguments":[{"name":"CALL_DEPTH_SLOT","nativeSrc":"2068:15:72","nodeType":"YulIdentifier","src":"2068:15:72"}],"functionName":{"name":"tload","nativeSrc":"2062:5:72","nodeType":"YulIdentifier","src":"2062:5:72"},"nativeSrc":"2062:22:72","nodeType":"YulFunctionCall","src":"2062:22:72"},{"kind":"number","nativeSrc":"2086:1:72","nodeType":"YulLiteral","src":"2086:1:72","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2058:3:72","nodeType":"YulIdentifier","src":"2058:3:72"},"nativeSrc":"2058:30:72","nodeType":"YulFunctionCall","src":"2058:30:72"}],"functionName":{"name":"tstore","nativeSrc":"2034:6:72","nodeType":"YulIdentifier","src":"2034:6:72"},"nativeSrc":"2034:55:72","nodeType":"YulFunctionCall","src":"2034:55:72"},"nativeSrc":"2034:55:72","nodeType":"YulExpressionStatement","src":"2034:55:72"}]},"evmVersion":"cancun","externalReferences":[{"declaration":56894,"isOffset":false,"isSlot":false,"src":"2041:15:72","valueSize":1},{"declaration":56894,"isOffset":false,"isSlot":false,"src":"2068:15:72","valueSize":1}],"flags":["memory-safe"],"id":56932,"nodeType":"InlineAssembly","src":"1995:104:72"}]},"documentation":{"id":56929,"nodeType":"StructuredDocumentation","src":"1781:169:72","text":"@notice Decrements call depth.\n This function can underflow. However, this is ok because there's still\n only one value stored per slot."},"implemented":true,"kind":"function","modifiers":[],"name":"decrement","nameLocation":"1964:9:72","parameters":{"id":56930,"nodeType":"ParameterList","parameters":[],"src":"1973:2:72"},"returnParameters":{"id":56931,"nodeType":"ParameterList","parameters":[],"src":"1985:0:72"},"scope":56935,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"TransientContext","contractDependencies":[],"contractKind":"library","documentation":{"id":56890,"nodeType":"StructuredDocumentation","src":"58:71:72","text":"@title TransientContext\n @notice Library for transient storage."},"fullyImplemented":true,"linearizedBaseContracts":[56935],"name":"TransientContext","nameLocation":"137:16:72","scope":56953,"usedErrors":[],"usedEvents":[]},{"id":56952,"nodeType":"ContractDefinition","src":"2303:224:72","nodes":[{"id":56951,"nodeType":"ModifierDefinition","src":"2405:120:72","nodes":[],"body":{"id":56950,"nodeType":"Block","src":"2431:94:72","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":56939,"name":"TransientContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56935,"src":"2441:16:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransientContext_$56935_$","typeString":"type(library TransientContext)"}},"id":56941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2458:9:72","memberName":"increment","nodeType":"MemberAccess","referencedDeclaration":56928,"src":"2441:26:72","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":56942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2441:28:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56943,"nodeType":"ExpressionStatement","src":"2441:28:72"},{"id":56944,"nodeType":"PlaceholderStatement","src":"2479:1:72"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":56945,"name":"TransientContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56935,"src":"2490:16:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransientContext_$56935_$","typeString":"type(library TransientContext)"}},"id":56947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2507:9:72","memberName":"decrement","nodeType":"MemberAccess","referencedDeclaration":56934,"src":"2490:26:72","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":56948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2490:28:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56949,"nodeType":"ExpressionStatement","src":"2490:28:72"}]},"documentation":{"id":56937,"nodeType":"StructuredDocumentation","src":"2343:57:72","text":"@notice Modifier to make a function reentrancy-aware."},"name":"reentrantAware","nameLocation":"2414:14:72","parameters":{"id":56938,"nodeType":"ParameterList","parameters":[],"src":"2428:2:72"},"virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"TransientReentrancyAware","contractDependencies":[],"contractKind":"contract","documentation":{"id":56936,"nodeType":"StructuredDocumentation","src":"2109:194:72","text":"@title TransientReentrancyAware\n @notice Reentrancy-aware modifier for transient storage, which increments and\n decrements the call depth when entering and exiting a function."},"fullyImplemented":true,"linearizedBaseContracts":[56952],"name":"TransientReentrancyAware","nameLocation":"2312:24:72","scope":56953,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":72}