@tokamak-network/thanos-contracts
Version:
1 lines • 26.8 kB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"implementation","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]}],"bytecode":{"object":"0x60806040526040516103b43803806103b48339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561024d575f80fd5b82516001600160a01b0381168114610263575f80fd5b60208401519092506001600160401b0381111561027e575f80fd5b8301601f8101851361028e575f80fd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f80fd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60878061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156076573d5ff35b3d5ffdfea164736f6c634300081a000a","sourceMap":"601:1116:84:-:0;;;1082:133;;;;;;;;;;;;;;;;;;:::i;:::-;1156:52;1186:14;1202:5;1156:29;:52::i;:::-;1082:133;;601:1116;;2756:335:85;2847:37;2866:17;2847:18;:37::i;:::-;2899:27;;-1:-1:-1;;;;;2899:27:85;;;;;;;;2941:11;;:15;2937:148;;2972:53;3001:17;3020:4;2972:28;:53::i;:::-;;2756:335;;:::o;2937:148::-;3056:18;:16;:18::i;:::-;2756:335;;:::o;2163:281::-;2240:17;-1:-1:-1;;;;;2240:29:85;;2273:1;2240:34;2236:119;;2297:47;;-1:-1:-1;;;2297:47:85;;-1:-1:-1;;;;;1416:32:100;;2297:47:85;;;1398:51:100;1371:18;;2297:47:85;;;;;;;;2236:119;1304:66;2364:73;;-1:-1:-1;;;;;;2364:73:85;-1:-1:-1;;;;;2364:73:85;;;;;;;;;;2163:281::o;4122:253:83:-;4205:12;4230;4244:23;4271:6;-1:-1:-1;;;;;4271:19:83;4291:4;4271:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4229:67:83;;-1:-1:-1;4229:67:83;-1:-1:-1;4313:55:83;4340:6;4229:67;;4313:26;:55::i;:::-;4306:62;4122:253;-1:-1:-1;;;;;4122:253:83:o;6575:122:85:-;6625:9;:13;6621:70;;6661:19;;-1:-1:-1;;;6661:19:85;;;;;;;;;;;6621:70;6575:122::o;4641:610:83:-;4809:12;4842:7;4837:408;;4865:19;4873:10;4865:7;:19::i;:::-;4837:408;;;5089:17;;:22;:49;;;;-1:-1:-1;;;;;;5115:18:83;;;:23;5089:49;5085:119;;;5165:24;;-1:-1:-1;;;5165:24:83;;-1:-1:-1;;;;;1416:32:100;;5165:24:83;;;1398:51:100;1371:18;;5165:24:83;1252:203:100;5085:119:83;-1:-1:-1;5224:10:83;4837:408;4641:610;;;;;:::o;5787:516::-;5918:17;;:21;5914:383;;6146:10;6140:17;6202:15;6189:10;6185:2;6181:19;6174:44;5914:383;6269:17;;-1:-1:-1;;;6269:17:83;;;;;;;;;;;14:127:100;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1101;234:6;242;295:2;283:9;274:7;270:23;266:32;263:52;;;311:1;308;301:12;263:52;337:16;;-1:-1:-1;;;;;382:31:100;;372:42;;362:70;;428:1;425;418:12;362:70;500:2;485:18;;479:25;451:5;;-1:-1:-1;;;;;;516:30:100;;513:50;;;559:1;556;549:12;513:50;582:22;;635:4;627:13;;623:27;-1:-1:-1;613:55:100;;664:1;661;654:12;613:55;691:9;;-1:-1:-1;;;;;712:30:100;;709:56;;;745:18;;:::i;:::-;794:2;788:9;886:2;848:17;;-1:-1:-1;;844:31:100;;;877:2;840:40;836:54;824:67;;-1:-1:-1;;;;;906:34:100;;942:22;;;903:62;900:88;;;968:18;;:::i;:::-;1004:2;997:22;1028;;;1069:15;;;1086:2;1065:24;1062:37;-1:-1:-1;1059:57:100;;;1112:1;1109;1102:12;1059:57;1161:6;1156:2;1152;1148:11;1143:2;1135:6;1131:15;1125:43;1214:1;1209:2;1200:6;1192;1188:19;1184:28;1177:39;1235:6;1225:16;;;;;146:1101;;;;;:::o;1460:301::-;1589:3;1627:6;1621:13;1673:6;1666:4;1658:6;1654:17;1649:3;1643:37;1735:1;1699:16;;1724:13;;;-1:-1:-1;1699:16:100;1460:301;-1:-1:-1;1460:301:100:o;:::-;601:1116:84;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156076573d5ff35b3d5ffdfea164736f6c634300081a000a","sourceMap":"601:1116:84:-:0;;;2592:11:89;:9;:11::i;:::-;601:1116:84;2266:83:89;2314:28;2324:17;:15;:17::i;:::-;2314:9;:28::i;:::-;2266:83::o;1583:132:84:-;1650:7;1676:32;1304:66:85;2012:53;;;;1934:138;1676:32:84;1669:39;;1583:132;:::o;948:839:89:-;1286:14;1283:1;1280;1267:34;1500:1;1497;1481:14;1478:1;1462:14;1455:5;1442:60;1576:16;1573:1;1570;1555:38;1614:6;1681:38;;;;1752:16;1749:1;1742:27;1681:38;1700:16;1697:1;1690:27","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/tokamak-contracts/USDC/L1/libraries/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"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/tokamak-contracts/USDC/L1/libraries/Address.sol\":{\"keccak256\":\"0x7a2becd0fc138ccd81f63dc85f73aa43ac9e16107b1060dfb9bfcbc46e089060\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9cfc1478aba538118b63dca8c71983d8d522b9ac97b96364ae27dc505b675a3\",\"dweb:/ipfs/QmQJnCRPn61XoPbDtykyGGcXS4YYydmMCxcWDymhBTG6JJ\"]},\"src/tokamak-contracts/USDC/L1/libraries/ERC1967Proxy.sol\":{\"keccak256\":\"0xa55c5aec3df1b79882376aa8a6ab8d67f97fae24ee8a26a1114ce1f77535a18b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4093b9a18b985a8306caae2dcec1b8a110d78058c4860f07fbb8d65796730ee4\",\"dweb:/ipfs/QmdirgM5e2g6XJ6XewEhdtCacmg22iSWwjsJkAif4G82jJ\"]},\"src/tokamak-contracts/USDC/L1/libraries/ERC1967Utils.sol\":{\"keccak256\":\"0xa2fa39ddac02eecd313cddb1353698256a9cbeab1fcd2047d92285bf4519a23a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb3ac2962400411740195781a6f4df2646b0475fc007ae741b3c5946c1b394bc\",\"dweb:/ipfs/QmWr1if5nFDoUN8xpz5V21Lqcy2hXghbqui1aoZUEgqpY3\"]},\"src/tokamak-contracts/USDC/L1/libraries/IBeacon.sol\":{\"keccak256\":\"0x716e742ed4bfcb97311d7d9d388bdc490cec880d9a4f52665d86ade99fca3b47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24a0fd4d5e3d505f19d8e7023048d7b312eff22d264247c03af42eb15d480656\",\"dweb:/ipfs/QmczJSWDXryDzppqPHZ4mLELen6z3M3vJmN5p3QTB8Y6EM\"]},\"src/tokamak-contracts/USDC/L1/libraries/Proxy.sol\":{\"keccak256\":\"0x8ebb7e89fb0a19c7c980aead431b48b0fc3a42e62807cd33ab45ed4703e5d653\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2cc0a35cb482a3393304835b4346eb8af66a71ce67810659cf06221c647258f\",\"dweb:/ipfs/QmW24rg4bhq9tKysX5MpYTHbcW6CBABsMeA8B3PJjQcG8c\"]},\"src/tokamak-contracts/USDC/L1/libraries/StorageSlot.sol\":{\"keccak256\":\"0x787e1146303d8c96198e87b7af989cbebd915244bee4020d9f159de952e98b4f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49f31c7732b2b886b9b6718745627936007aa23e8d6d309c316f8a60b936131a\",\"dweb:/ipfs/QmXVu5oFjH7eTM4oKrsiHAW5BrEk5d86RvZ2xMWBZvdw4G\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero."}},"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/tokamak-contracts/USDC/L1/libraries/ERC1967Proxy.sol":"ERC1967Proxy"},"evmVersion":"cancun","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/tokamak-contracts/USDC/L1/libraries/Address.sol":{"keccak256":"0x7a2becd0fc138ccd81f63dc85f73aa43ac9e16107b1060dfb9bfcbc46e089060","urls":["bzz-raw://a9cfc1478aba538118b63dca8c71983d8d522b9ac97b96364ae27dc505b675a3","dweb:/ipfs/QmQJnCRPn61XoPbDtykyGGcXS4YYydmMCxcWDymhBTG6JJ"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/ERC1967Proxy.sol":{"keccak256":"0xa55c5aec3df1b79882376aa8a6ab8d67f97fae24ee8a26a1114ce1f77535a18b","urls":["bzz-raw://4093b9a18b985a8306caae2dcec1b8a110d78058c4860f07fbb8d65796730ee4","dweb:/ipfs/QmdirgM5e2g6XJ6XewEhdtCacmg22iSWwjsJkAif4G82jJ"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/ERC1967Utils.sol":{"keccak256":"0xa2fa39ddac02eecd313cddb1353698256a9cbeab1fcd2047d92285bf4519a23a","urls":["bzz-raw://bb3ac2962400411740195781a6f4df2646b0475fc007ae741b3c5946c1b394bc","dweb:/ipfs/QmWr1if5nFDoUN8xpz5V21Lqcy2hXghbqui1aoZUEgqpY3"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/IBeacon.sol":{"keccak256":"0x716e742ed4bfcb97311d7d9d388bdc490cec880d9a4f52665d86ade99fca3b47","urls":["bzz-raw://24a0fd4d5e3d505f19d8e7023048d7b312eff22d264247c03af42eb15d480656","dweb:/ipfs/QmczJSWDXryDzppqPHZ4mLELen6z3M3vJmN5p3QTB8Y6EM"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/Proxy.sol":{"keccak256":"0x8ebb7e89fb0a19c7c980aead431b48b0fc3a42e62807cd33ab45ed4703e5d653","urls":["bzz-raw://d2cc0a35cb482a3393304835b4346eb8af66a71ce67810659cf06221c647258f","dweb:/ipfs/QmW24rg4bhq9tKysX5MpYTHbcW6CBABsMeA8B3PJjQcG8c"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/StorageSlot.sol":{"keccak256":"0x787e1146303d8c96198e87b7af989cbebd915244bee4020d9f159de952e98b4f","urls":["bzz-raw://49f31c7732b2b886b9b6718745627936007aa23e8d6d309c316f8a60b936131a","dweb:/ipfs/QmXVu5oFjH7eTM4oKrsiHAW5BrEk5d86RvZ2xMWBZvdw4G"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","details":"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero."}},"events":{"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidImplementation(address)":[{"details":"The `implementation` of the proxy is invalid."}],"ERC1967NonPayable()":[{"details":"An upgrade function sees `msg.value > 0` that may be lost."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}]}},"ast":{"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/ERC1967Proxy.sol","id":59320,"exportedSymbols":{"ERC1967Proxy":[59319],"ERC1967Utils":[59622],"Proxy":[59782]},"nodeType":"SourceUnit","src":"114:1604:84","nodes":[{"id":59283,"nodeType":"PragmaDirective","src":"114:23:84","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":59285,"nodeType":"ImportDirective","src":"139:36:84","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/Proxy.sol","file":"./Proxy.sol","nameLocation":"-1:-1:-1","scope":59320,"sourceUnit":59783,"symbolAliases":[{"foreign":{"id":59284,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59782,"src":"148:5:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":59287,"nodeType":"ImportDirective","src":"176:50:84","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/ERC1967Utils.sol","file":"./ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":59320,"sourceUnit":59623,"symbolAliases":[{"foreign":{"id":59286,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59622,"src":"185:12:84","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":59319,"nodeType":"ContractDefinition","src":"601:1116:84","nodes":[{"id":59306,"nodeType":"FunctionDefinition","src":"1082:133:84","nodes":[],"body":{"id":59305,"nodeType":"Block","src":"1146:69:84","nodes":[],"statements":[{"expression":{"arguments":[{"id":59301,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59293,"src":"1186:14:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":59302,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59295,"src":"1202:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":59298,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59622,"src":"1156:12:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$59622_$","typeString":"type(library ERC1967Utils)"}},"id":59300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1169:16:84","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":59441,"src":"1156:29:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":59303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1156:52:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59304,"nodeType":"ExpressionStatement","src":"1156:52:84"}]},"documentation":{"id":59291,"nodeType":"StructuredDocumentation","src":"638:439:84","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":59296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59293,"mutability":"mutable","name":"implementation","nameLocation":"1102:14:84","nodeType":"VariableDeclaration","scope":59306,"src":"1094:22:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59292,"name":"address","nodeType":"ElementaryTypeName","src":"1094:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":59295,"mutability":"mutable","name":"_data","nameLocation":"1131:5:84","nodeType":"VariableDeclaration","scope":59306,"src":"1118:18:84","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":59294,"name":"bytes","nodeType":"ElementaryTypeName","src":"1118:5:84","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1093:44:84"},"returnParameters":{"id":59297,"nodeType":"ParameterList","parameters":[],"src":"1146:0:84"},"scope":59319,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":59318,"nodeType":"FunctionDefinition","src":"1583:132:84","nodes":[],"body":{"id":59317,"nodeType":"Block","src":"1659:56:84","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":59313,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59622,"src":"1676:12:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$59622_$","typeString":"type(library ERC1967Utils)"}},"id":59314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1689:17:84","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":59380,"src":"1676:30:84","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":59315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1676:32:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":59312,"id":59316,"nodeType":"Return","src":"1669:39:84"}]},"baseFunctions":[59763],"documentation":{"id":59307,"nodeType":"StructuredDocumentation","src":"1221:357:84","text":" @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1592:15:84","overrides":{"id":59309,"nodeType":"OverrideSpecifier","overrides":[],"src":"1632:8:84"},"parameters":{"id":59308,"nodeType":"ParameterList","parameters":[],"src":"1607:2:84"},"returnParameters":{"id":59312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59311,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59318,"src":"1650:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59310,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1649:9:84"},"scope":59319,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":59289,"name":"Proxy","nameLocations":["626:5:84"],"nodeType":"IdentifierPath","referencedDeclaration":59782,"src":"626:5:84"},"id":59290,"nodeType":"InheritanceSpecifier","src":"626:5:84"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":59288,"nodeType":"StructuredDocumentation","src":"228:372:84","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"linearizedBaseContracts":[59319,59782],"name":"ERC1967Proxy","nameLocation":"610:12:84","scope":59320,"usedErrors":[59041,59044,59354,59367],"usedEvents":[59333]}],"license":"MIT"},"id":84}