diff --git a/.env.example b/.env.example index 8086609b..cfa173bc 100644 --- a/.env.example +++ b/.env.example @@ -3,6 +3,7 @@ export LOCALHOST_RPC_URL=http://127.0.0.1:8545 # Mainnet RPC URLs export MAINNET_RPC_URL= +export LINEA_RPC_URL= # Testnet RPC URLs export SEPOLIA_RPC_URL= diff --git a/Makefile b/Makefile index 8f0e7d03..668cea36 100644 --- a/Makefile +++ b/Makefile @@ -99,6 +99,9 @@ deploy-swap-facility-mainnet: deploy-swap-facility deploy-swap-facility-sepolia: RPC_URL=$(SEPOLIA_RPC_URL) deploy-swap-facility-sepolia: deploy-swap-facility +deploy-swap-facility-linea: RPC_URL=$(LINEA_RPC_URL) +deploy-swap-facility-linea: deploy-swap-facility + upgrade-swap-facility: FOUNDRY_PROFILE=production PRIVATE_KEY=$(PRIVATE_KEY) \ forge script script/upgrade/UpgradeSwapFacility.s.sol:UpgradeSwapFacility \ diff --git a/broadcast/DeploySwapFacility.s.sol/59144/run-1754962087.json b/broadcast/DeploySwapFacility.s.sol/59144/run-1754962087.json new file mode 100644 index 00000000..0c28a09c --- /dev/null +++ b/broadcast/DeploySwapFacility.s.sol/59144/run-1754962087.json @@ -0,0 +1,70 @@ +{ + "transactions": [ + { + "hash": "0xc803bf5d0f180c7e40ae53da41cb09120faadb07e1af12700a64840dde7842cc", + "transactionType": "CREATE", + "contractName": "SwapFacility", + "contractAddress": "0x8e33b64ad3a1276b3c3eb0b41a2acc26fbc3bbac", + "function": null, + "arguments": [ + "0x866A2BF4E572CbcF37D5071A7a58503Bfb36be1b", + "0x119FbeeDD4F4f4298Fb59B720d5654442b81ae2c" + ], + "transaction": { + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "gas": "0x380462", + "value": "0x0", + "input": "0x60c060405234801561000f575f80fd5b506040516133cc3803806133cc83398101604081905261002e91610162565b610036610095565b6001600160a01b03821660808190526100625760405163b01d5e2b60e01b815260040160405180910390fd5b6001600160a01b03811660a081905261008e576040516379a6314960e01b815260040160405180910390fd5b5050610193565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101445780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b038116811461015d575f80fd5b919050565b5f8060408385031215610173575f80fd5b61017c83610147565b915061018a60208401610147565b90509250929050565b60805160a0516131d96101f35f395f81816102d901528181612ada0152612bcb01525f81816104dd0152818161076f015281816115bc01528181611cb401528181611d800152818161208a015281816125a5015261293701526131d95ff3fe608060405234801561000f575f80fd5b50600436106101d1575f3560e01c8063799c44b2116100fe578063c3b6f9391161009e578063d547741f1161006e578063d547741f14610538578063d737d0c71461054b578063de3d425414610553578063e274ffb814610566575f80fd5b8063c3b6f939146104d8578063c4d66de8146104ff578063c64f535114610512578063ccf43d2f14610525575f80fd5b8063a217fddf116100d9578063a217fddf14610484578063a8ffb8a51461048b578063aaaad098146104b2578063af870157146104c5575f80fd5b8063799c44b2146103fa57806391d148541461040d5780639e5e91f414610471575f80fd5b80632af4d36e116101745780635a734520116101445780635a734520146103465780635d77e1ca1461036d57806360657bc6146103805780636e81221c146103e7575f80fd5b80632af4d36e146102c15780632b20e397146102d45780632f2ff15d1461032057806336568abe14610333575f80fd5b8063135597c3116101af578063135597c31461024757806314217eed1461025a578063248a9ca31461026d578063264e97e0146102ae575f80fd5b806301ffc9a7146101d55780630a85ce8c146101fd5780630cf52c2714610232575b5f80fd5b6101e86101e3366004612c52565b610579565b60405190151581526020015b60405180910390f35b6102247f6561726e6572735f6c6973745f69676e6f72656400000000000000000000000081565b6040519081526020016101f4565b610245610240366004612cfe565b610611565b005b6101e8610255366004612d75565b610813565b610245610268366004612da5565b610864565b61022461027b366004612e21565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6101e86102bc366004612d75565b610a65565b6102456102cf366004612e45565b610a8c565b6102fb7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f4565b61024561032e366004612e7c565b610ba1565b610245610341366004612e7c565b610bea565b6102247f6561726e6572730000000000000000000000000000000000000000000000000081565b61024561037b366004612e9f565b610c43565b6101e861038e366004612f28565b73ffffffffffffffffffffffffffffffffffffffff9182165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde016020908152604080832093909416825291909152205460ff1690565b6102456103f5366004612f54565b610e27565b610245610408366004612fa4565b610f83565b6101e861041b366004612e7c565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61024561047f366004612fec565b61113d565b6102245f81565b6102247fafa8499804819c4de3fc4b1a2e9723737c59b02467b5c043939709ac9f066b4381565b6102456104c0366004612cfe565b611291565b6102456104d3366004613020565b611442565b6102fb7f000000000000000000000000000000000000000000000000000000000000000081565b61024561050d366004612d75565b61162f565b610245610520366004612e45565b611798565b610245610533366004613020565b6118d4565b610245610546366004612e7c565b611aa1565b6102fb611ae4565b6101e8610561366004612d75565b611af2565b610245610574366004612fec565b611b3e565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061060b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f61063a7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614610687576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61069133610a65565b61069b5733610708565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610708919061308a565b9050610732817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517f9fd5a6cf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639fd5a6cf906107ae90339030908b908a908a908a906004016130a5565b5f604051808303815f87803b1580156107c5575f80fd5b505af19250505080156107d6575060015b506107e2878787611c66565b61080a5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b50505050505050565b5f7f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde005b73ffffffffffffffffffffffffffffffffffffffff9092165f90815260209290925250604090205460ff1690565b5f61088d7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff16146108da576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6108e433610a65565b6108ee573361095b565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610937573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095b919061308a565b9050610985817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c4810183905273ffffffffffffffffffffffffffffffffffffffff8a169063d505accf9060e4015f604051808303815f87803b158015610a14575f80fd5b505af1925050508015610a25575060015b50610a3289898989611eda565b610a5a5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b505050505050505050565b5f7f157708201859ed3ceee295d1baf4381ae5b622de496b1cee3705ed07c6a50200610836565b5f610a96816121ff565b73ffffffffffffffffffffffffffffffffffffffff8316610ae3576040517f2359556c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811515610aef84610813565b151514610b9c5773ffffffffffffffffffffffffffffffffffffffff83165f8181527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde00602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291517fa1e65189c2e656be12ff01879244361cbbc5fe8a08224278b332004fe3489f589281900390910190a25b505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bda816121ff565b610be4838361220c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610c39576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b9c828261232a565b5f610c6c7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614610cb9576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610cc333610a65565b610ccd5733610d3a565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3a919061308a565b9050610d64817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517f9fd5a6cf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff891690639fd5a6cf90610dc090339030908b908a908a908a906004016130a5565b5f604051808303815f87803b158015610dd7575f80fd5b505af1925050508015610de8575060015b50610df588888888611eda565b610e1d5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b5050505050505050565b5f610e507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614610e9d576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ea733610a65565b610eb15733610f1e565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610efa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1e919061308a565b9050610f48817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b610f5485858585611eda565b610f7c5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b5050505050565b5f610f8d816121ff565b73ffffffffffffffffffffffffffffffffffffffff8416610fda576040517f2359556c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316611027576040517f3099ab8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8481165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209387168352929052205460ff16151582151514610be45773ffffffffffffffffffffffffffffffffffffffff8481165f8181527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527fe315f6e65becaee65bf0cbc2a489ea61e16e2ab2845a5aa3ec92420dc284117a91015b60405180910390a350505050565b5f6111667f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff16146111b3576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6111bd33610a65565b6111c75733611234565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611210573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611234919061308a565b905061125e817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b611269848484612406565b610be45f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b5f6112ba7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614611307576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61131133610a65565b61131b5733611388565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611364573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611388919061308a565b90506113b2817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517f9fd5a6cf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881690639fd5a6cf9061140e90339030908b908a908a908a906004016130a5565b5f604051808303815f87803b158015611425575f80fd5b505af1925050508015611436575060015b506107e2878787612406565b5f61146b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff16146114b8576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6114c233610a65565b6114cc5733611539565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611515573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611539919061308a565b9050611563817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d505accf9060e4015f604051808303815f87803b158015611612575f80fd5b505af1925050508015611623575060015b50610df5888888611c66565b5f611638612671565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156116645750825b90505f8267ffffffffffffffff1660011480156116805750303b155b90508115801561168e575080155b156116c5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117265784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b61172f86612699565b83156117905784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f6117a2816121ff565b73ffffffffffffffffffffffffffffffffffffffff83166117ef576040517f920d929200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f9081527f157708201859ed3ceee295d1baf4381ae5b622de496b1cee3705ed07c6a50200602081905260409091205483151560ff90911615150361184b5750505050565b73ffffffffffffffffffffffffffffffffffffffff84165f818152602083815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527ff03b9904b8234e041267377d7a55ddb345d1ee737d0116a2e621e3a5fad07a7d910160405180910390a250505050565b5f6118fd7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff161461194a576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61195433610a65565b61195e57336119cb565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119cb919061308a565b90506119f5817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c4810183905273ffffffffffffffffffffffffffffffffffffffff89169063d505accf9060e4015f604051808303815f87803b158015611a84575f80fd5b505af1925050508015611a95575060015b50610df5888888612406565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611ada816121ff565b610be4838361232a565b5f611aed6126fc565b905090565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527f6b691b2d012e26a1efd9948ce05990847eae29d1cebd577c171024c61e06d6eb602052604081205460ff1661060b565b5f611b677f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614611bb4576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611bbe33610a65565b611bc85733611c35565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c35919061308a565b9050611c5f817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6112698484845b611c6f83612725565b611c798333612781565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015611d0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d339190613139565b506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015611dc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dea9190613139565b506040517fbf376c7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063bf376c7a906044015f604051808303815f87803b158015611e58575f80fd5b505af1158015611e6a573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fea5845e6161e56b30740f4a743f316fa77bd8f48b1c3ce6eff595ab0385ba74584604051611ecd91815260200190565b60405180910390a3505050565b611ee384612725565b611eec83612725565b611ef584612898565b611efe83612898565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810183905273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906064016020604051808303815f875af1158015611f74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f989190613139565b505f611fa3306128f0565b6040517f39f476930000000000000000000000000000000000000000000000000000000081523060048201526024810185905290915073ffffffffffffffffffffffffffffffffffffffff8616906339f47693906044015f604051808303815f87803b158015612011575f80fd5b505af1158015612023573d5f803e3d5ffd5b5050505080612031306128f0565b61203b9190613154565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018390529194507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af11580156120d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f69190613139565b506040517fbf376c7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820185905285169063bf376c7a906044015f604051808303815f87803b158015612164575f80fd5b505af1158015612176573d5f803e3d5ffd5b505050508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f7621e0d883c1038028d167fa29ecc01dbb8bc0cf673db584432530d693259e51866040516121f091815260200190565b60405180910390a45050505050565b61220981336129a2565b50565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16612321575f8481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556122bd3390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061060b565b5f91505061060b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615612321575f8481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061060b565b61240f83612725565b6124198333612781565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810183905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303815f875af115801561248f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b39190613139565b505f6124be306128f0565b6040517f39f476930000000000000000000000000000000000000000000000000000000081523060048201526024810185905290915073ffffffffffffffffffffffffffffffffffffffff8516906339f47693906044015f604051808303815f87803b15801561252c575f80fd5b505af115801561253e573d5f803e3d5ffd5b505050508061254c306128f0565b6125569190613154565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529194507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af11580156125ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126119190613139565b508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f20715489f1868041ab913834efbaabc996170336daf633a4999d62bd5c162f088560405161112f91815260200190565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061060b565b6126a1612a48565b73ffffffffffffffffffffffffffffffffffffffff81166126ee576040517f7289db0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126f85f8261220c565b5050565b5f611aed7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b61272e81612a88565b612209576040517f2d32af6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b61278a82610813565b156128395773ffffffffffffffffffffffffffffffffffffffff8083165f9081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209385168352929052205460ff166126f8576040517fe5fae0d000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152604401612778565b61284281611af2565b6126f8576040517f10833dfe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152604401612778565b6128a181610813565b15612209576040517f0bc7a0d000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401612778565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561297e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061060b919061318c565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166126f8576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401612778565b612a50612c34565b612a86576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081527f6561726e6572735f6c6973745f69676e6f72656400000000000000000000000060048201525f9081907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690638eaa6ac090602401602060405180830381865afa158015612b34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b58919061318c565b14158061060b57506040517fd7d1c1c00000000000000000000000000000000000000000000000000000000081527f6561726e65727300000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d7d1c1c090604401602060405180830381865afa158015612c10573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061060b9190613139565b5f612c3d612671565b5468010000000000000000900460ff16919050565b5f60208284031215612c62575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612c91575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114612209575f80fd5b5f8083601f840112612cc9575f80fd5b50813567ffffffffffffffff811115612ce0575f80fd5b602083019150836020828501011115612cf7575f80fd5b9250929050565b5f805f805f8060a08789031215612d13575f80fd5b8635612d1e81612c98565b9550602087013594506040870135612d3581612c98565b935060608701359250608087013567ffffffffffffffff811115612d57575f80fd5b612d6389828a01612cb9565b979a9699509497509295939492505050565b5f60208284031215612d85575f80fd5b8135612c9181612c98565b803560ff81168114612da0575f80fd5b919050565b5f805f805f805f80610100898b031215612dbd575f80fd5b8835612dc881612c98565b97506020890135612dd881612c98565b9650604089013595506060890135612def81612c98565b945060808901359350612e0460a08a01612d90565b979a969950949793969295929450505060c08201359160e0013590565b5f60208284031215612e31575f80fd5b5035919050565b8015158114612209575f80fd5b5f8060408385031215612e56575f80fd5b8235612e6181612c98565b91506020830135612e7181612e38565b809150509250929050565b5f8060408385031215612e8d575f80fd5b823591506020830135612e7181612c98565b5f805f805f805f60c0888a031215612eb5575f80fd5b8735612ec081612c98565b96506020880135612ed081612c98565b9550604088013594506060880135612ee781612c98565b93506080880135925060a088013567ffffffffffffffff811115612f09575f80fd5b612f158a828b01612cb9565b989b979a50959850939692959293505050565b5f8060408385031215612f39575f80fd5b8235612f4481612c98565b91506020830135612e7181612c98565b5f805f8060808587031215612f67575f80fd5b8435612f7281612c98565b93506020850135612f8281612c98565b9250604085013591506060850135612f9981612c98565b939692955090935050565b5f805f60608486031215612fb6575f80fd5b8335612fc181612c98565b92506020840135612fd181612c98565b91506040840135612fe181612e38565b809150509250925092565b5f805f60608486031215612ffe575f80fd5b833561300981612c98565b9250602084013591506040840135612fe181612c98565b5f805f805f805f60e0888a031215613036575f80fd5b873561304181612c98565b965060208801359550604088013561305881612c98565b94506060880135935061306d60808901612d90565b9699959850939692959460a0840135945060c09093013592915050565b5f6020828403121561309a575f80fd5b8151612c9181612c98565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010195945050505050565b5f60208284031215613149575f80fd5b8151612c9181612e38565b8181038181111561060b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6020828403121561319c575f80fd5b505191905056fea264697066735822122090aac15a22cce8155af7c14bbec5db63b9c2b9b44a034f8611a71dc29a06e9fc64736f6c634300081a0033000000000000000000000000866a2bf4e572cbcf37d5071a7a58503bfb36be1b000000000000000000000000119fbeedd4f4f4298fb59b720d5654442b81ae2c", + "nonce": "0x12", + "chainId": "0xe708" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "function": "deployCreate3(bytes32,bytes)", + "arguments": [ + "0xf2f1acbe0ba726fee8d75f3e32900526874740bb008b812a2c4f2db4a3562dde", + "0x60a06040526040516110c73803806110c78339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f805160206110a7833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f805160206110a78339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61064680610a6183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516105f96104685f395f601001526105f95ff3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d1575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c7576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100cf6100d9565b565b6100cf610107565b5f806100e8366004818461043e565b8101906100f59190610492565b915091506101038282610117565b5050565b6100cf61011261017e565b6101c2565b610120826101e0565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101765761017182826102b3565b505050565b610103610332565b5f6101bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156101dc573d5ff35b3d5ffd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361024d576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516102dc91906105ad565b5f60405180830381855af49150503d805f8114610314576040519150601f19603f3d011682016040523d82523d5f602084013e610319565b606091505b509150915061032985838361036a565b95945050505050565b34156100cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261037f5761037a826103fc565b6103f5565b81511580156103a3575073ffffffffffffffffffffffffffffffffffffffff84163b155b156103f2576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610244565b50805b9392505050565b80511561040c5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808585111561044c575f80fd5b83861115610458575f80fd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156104a3575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c6575f80fd5b9150602083013567ffffffffffffffff8111156104e1575f80fd5b8301601f810185136104f1575f80fd5b803567ffffffffffffffff81111561050b5761050b610465565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561057757610577610465565b60405281815282820160200187101561058e575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220ca1464c1bdbefead7e584e3785d80f593c7fac515c30284d45b39630bf329d4664736f6c634300081a0033608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea26469706673582212208aa75c791a69d4e66c8472a8fac6006bba38dad048a4499ea43fd9c02b44fc1a64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000008e33b64ad3a1276b3c3eb0b41a2acc26fbc3bbac000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "to": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "gas": "0x142ed7", + "value": "0x0", + "input": "0x9c36a286f2f1acbe0ba726fee8d75f3e32900526874740bb008b812a2c4f2db4a3562dde0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000118760a06040526040516110c73803806110c78339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f805160206110a7833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f805160206110a78339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61064680610a6183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516105f96104685f395f601001526105f95ff3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d1575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c7576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100cf6100d9565b565b6100cf610107565b5f806100e8366004818461043e565b8101906100f59190610492565b915091506101038282610117565b5050565b6100cf61011261017e565b6101c2565b610120826101e0565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101765761017182826102b3565b505050565b610103610332565b5f6101bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156101dc573d5ff35b3d5ffd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361024d576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516102dc91906105ad565b5f60405180830381855af49150503d805f8114610314576040519150601f19603f3d011682016040523d82523d5f602084013e610319565b606091505b509150915061032985838361036a565b95945050505050565b34156100cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261037f5761037a826103fc565b6103f5565b81511580156103a3575073ffffffffffffffffffffffffffffffffffffffff84163b155b156103f2576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610244565b50805b9392505050565b80511561040c5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808585111561044c575f80fd5b83861115610458575f80fd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156104a3575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c6575f80fd5b9150602083013567ffffffffffffffff8111156104e1575f80fd5b8301601f810185136104f1575f80fd5b803567ffffffffffffffff81111561050b5761050b610465565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561057757610577610465565b60405281815282820160200187101561058e575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220ca1464c1bdbefead7e584e3785d80f593c7fac515c30284d45b39630bf329d4664736f6c634300081a0033608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea26469706673582212208aa75c791a69d4e66c8472a8fac6006bba38dad048a4499ea43fd9c02b44fc1a64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000008e33b64ad3a1276b3c3eb0b41a2acc26fbc3bbac000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x13", + "chainId": "0xe708" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "address": "0x38862ac81f9ed0c39ca733bd0224b34885f40f10", + "initCode": "0x67363d3d37363d34f03d5260086018f3" + }, + { + "transactionType": "CREATE", + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "initCode": "0x60a06040526040516110c73803806110c78339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f805160206110a7833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f805160206110a78339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61064680610a6183390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516105f96104685f395f601001526105f95ff3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d1575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c7576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100cf6100d9565b565b6100cf610107565b5f806100e8366004818461043e565b8101906100f59190610492565b915091506101038282610117565b5050565b6100cf61011261017e565b6101c2565b610120826101e0565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101765761017182826102b3565b505050565b610103610332565b5f6101bd7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f80375f80365f845af43d5f803e8080156101dc573d5ff35b3d5ffd5b8073ffffffffffffffffffffffffffffffffffffffff163b5f0361024d576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60605f808473ffffffffffffffffffffffffffffffffffffffff16846040516102dc91906105ad565b5f60405180830381855af49150503d805f8114610314576040519150601f19603f3d011682016040523d82523d5f602084013e610319565b606091505b509150915061032985838361036a565b95945050505050565b34156100cf576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261037f5761037a826103fc565b6103f5565b81511580156103a3575073ffffffffffffffffffffffffffffffffffffffff84163b155b156103f2576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610244565b50805b9392505050565b80511561040c5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808585111561044c575f80fd5b83861115610458575f80fd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f80604083850312156104a3575f80fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c6575f80fd5b9150602083013567ffffffffffffffff8111156104e1575f80fd5b8301601f810185136104f1575f80fd5b803567ffffffffffffffff81111561050b5761050b610465565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561057757610577610465565b60405281815282820160200187101561058e575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220ca1464c1bdbefead7e584e3785d80f593c7fac515c30284d45b39630bf329d4664736f6c634300081a0033608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea26469706673582212208aa75c791a69d4e66c8472a8fac6006bba38dad048a4499ea43fd9c02b44fc1a64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000008e33b64ad3a1276b3c3eb0b41a2acc26fbc3bbac000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000" + }, + { + "transactionType": "CREATE", + "address": "0x0f38d8a5583f9316084e9c40737244870c565924", + "initCode": "0x608060405234801561000f575f80fd5b5060405161064638038061064683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610551806100f55f395ff3fe608060405260043610610058575f3560e01c80639623609d116100415780639623609d146100aa578063ad3cb1cc146100bd578063f2fde38b14610112575f80fd5b8063715018a61461005c5780638da5cb5b14610072575b5f80fd5b348015610067575f80fd5b50610070610131565b005b34801561007d575f80fd5b505f5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100706100b8366004610351565b610144565b3480156100c8575f80fd5b506101056040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a191906104b1565b34801561011d575f80fd5b5061007061012c3660046104ca565b6101d5565b61013961023d565b6101425f61028f565b565b61014c61023d565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101a290869086906004016104e5565b5f604051808303818588803b1580156101b9575f80fd5b505af11580156101cb573d5f803e3d5ffd5b5050505050505050565b6101dd61023d565b73ffffffffffffffffffffffffffffffffffffffff8116610231576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b61023a8161028f565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610142576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610228565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461023a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f60608486031215610363575f80fd5b833561036e81610303565b9250602084013561037e81610303565b9150604084013567ffffffffffffffff811115610399575f80fd5b8401601f810186136103a9575f80fd5b803567ffffffffffffffff8111156103c3576103c3610324565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561042f5761042f610324565b604052818152828201602001881015610446575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104c36020830184610465565b9392505050565b5f602082840312156104da575f80fd5b81356104c381610303565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105136040830184610465565b94935050505056fea26469706673582212208aa75c791a69d4e66c8472a8fac6006bba38dad048a4499ea43fd9c02b44fc1a64736f6c634300081a0033000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1754962087, + "chain": 59144, + "commit": "241c58c" +} diff --git a/broadcast/DeploySwapFacility.s.sol/59144/run-latest.json b/broadcast/DeploySwapFacility.s.sol/59144/run-latest.json new file mode 100644 index 00000000..74723c92 --- /dev/null +++ b/broadcast/DeploySwapFacility.s.sol/59144/run-latest.json @@ -0,0 +1,218 @@ +{ + "transactions": [ + { + "hash": "0x4759bf24fd623201b881e970fccf67e39ab011693bbbf7af2a9542130876cbd1", + "transactionType": "CREATE", + "contractName": "SwapFacility", + "contractAddress": "0x9e0fdb26954bc8998158c0c921c8254bd6dfe5ec", + "function": null, + "arguments": [ + "0x866A2BF4E572CbcF37D5071A7a58503Bfb36be1b", + "0x119FbeeDD4F4f4298Fb59B720d5654442b81ae2c" + ], + "transaction": { + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "gas": "0x38da37", + "value": "0x0", + "input": "0x60c060405234801561001057600080fd5b506040516134a63803806134a683398101604081905261002f91610164565b610037610096565b6001600160a01b03821660808190526100635760405163b01d5e2b60e01b815260040160405180910390fd5b6001600160a01b03811660a081905261008f576040516379a6314960e01b815260040160405180910390fd5b5050610197565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e65760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101455780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b038116811461015f57600080fd5b919050565b6000806040838503121561017757600080fd5b61018083610148565b915061018e60208401610148565b90509250929050565b60805160a0516132ab6101fb600039600081816102e401528181612b6c0152612c5f0152600081816104eb015281816107820152818161160101528181611d1001528181611ddf015281816120fa0152818161262b01526129c501526132ab6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063799c44b211610104578063c3b6f939116100a2578063d547741f11610071578063d547741f14610546578063d737d0c714610559578063de3d425414610561578063e274ffb81461057457600080fd5b8063c3b6f939146104e6578063c4d66de81461050d578063c64f535114610520578063ccf43d2f1461053357600080fd5b8063a217fddf116100de578063a217fddf14610491578063a8ffb8a514610499578063aaaad098146104c0578063af870157146104d357600080fd5b8063799c44b21461040657806391d14854146104195780639e5e91f41461047e57600080fd5b80632af4d36e1161017c5780635a7345201161014b5780635a734520146103515780635d77e1ca1461037857806360657bc61461038b5780636e81221c146103f357600080fd5b80632af4d36e146102cc5780632b20e397146102df5780632f2ff15d1461032b57806336568abe1461033e57600080fd5b8063135597c3116101b8578063135597c31461025157806314217eed14610264578063248a9ca314610277578063264e97e0146102b957600080fd5b806301ffc9a7146101df5780630a85ce8c146102075780630cf52c271461023c575b600080fd5b6101f26101ed366004612ce9565b610587565b60405190151581526020015b60405180910390f35b61022e7f6561726e6572735f6c6973745f69676e6f72656400000000000000000000000081565b6040519081526020016101fe565b61024f61024a366004612d9d565b610620565b005b6101f261025f366004612e19565b61082a565b61024f610272366004612e4c565b61087d565b61022e610285366004612ecd565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6101f26102c7366004612e19565b610a86565b61024f6102da366004612ef4565b610aae565b6103067f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b61024f610339366004612f2d565b610bc5565b61024f61034c366004612f2d565b610c0f565b61022e7f6561726e6572730000000000000000000000000000000000000000000000000081565b61024f610386366004612f52565b610c68565b6101f2610399366004612fe1565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde016020908152604080832093909416825291909152205460ff1690565b61024f61040136600461300f565b610e54565b61024f610414366004613062565b610fb5565b6101f2610427366004612f2d565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61024f61048c3660046130ad565b611172565b61022e600081565b61022e7fafa8499804819c4de3fc4b1a2e9723737c59b02467b5c043939709ac9f066b4381565b61024f6104ce366004612d9d565b6112cb565b61024f6104e13660046130e4565b611483565b6103067f000000000000000000000000000000000000000000000000000000000000000081565b61024f61051b366004612e19565b611677565b61024f61052e366004612ef4565b6117e3565b61024f6105413660046130e4565b611922565b61024f610554366004612f2d565b611af6565b610306611b3a565b6101f261056f366004612e19565b611b49565b61024f6105823660046130ad565b611b96565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061061a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061064a7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614610697576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106a233610a86565b6106ac573361071b565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071b9190613153565b9050610745817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517f9fd5a6cf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639fd5a6cf906107c190339030908b908a908a908a90600401613170565b600060405180830381600087803b1580156107db57600080fd5b505af19250505080156107ec575060015b506107f8878787611cc2565b61082160007f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b50505050505050565b60007f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde005b73ffffffffffffffffffffffffffffffffffffffff909216600090815260209290925250604090205460ff1690565b60006108a77f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff16146108f4576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108ff33610a86565b6109095733610978565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610954573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109789190613153565b90506109a2817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c4810183905273ffffffffffffffffffffffffffffffffffffffff8a169063d505accf9060e401600060405180830381600087803b158015610a3457600080fd5b505af1925050508015610a45575060015b50610a5289898989611f41565b610a7b60007f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b505050505050505050565b60007f157708201859ed3ceee295d1baf4381ae5b622de496b1cee3705ed07c6a5020061084e565b6000610ab981612277565b73ffffffffffffffffffffffffffffffffffffffff8316610b06576040517f2359556c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811515610b128461082a565b151514610bc05773ffffffffffffffffffffffffffffffffffffffff831660008181527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde00602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291517fa1e65189c2e656be12ff01879244361cbbc5fe8a08224278b332004fe3489f589281900390910190a25b505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610bff81612277565b610c098383612284565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610c5e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bc082826123a5565b6000610c927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614610cdf576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cea33610a86565b610cf45733610d63565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190613153565b9050610d8d817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517f9fd5a6cf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff891690639fd5a6cf90610de990339030908b908a908a908a90600401613170565b600060405180830381600087803b158015610e0357600080fd5b505af1925050508015610e14575060015b50610e2188888888611f41565b610e4a60007f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b5050505050505050565b6000610e7e7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ed633610a86565b610ee05733610f4f565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f9190613153565b9050610f79817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b610f8585858585611f41565b610fae60007f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b5050505050565b6000610fc081612277565b73ffffffffffffffffffffffffffffffffffffffff841661100d576040517f2359556c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831661105a576040517f3099ab8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84811660009081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209387168352929052205460ff16151582151514610c095773ffffffffffffffffffffffffffffffffffffffff84811660008181527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527fe315f6e65becaee65bf0cbc2a489ea61e16e2ab2845a5aa3ec92420dc284117a91015b60405180910390a350505050565b600061119c7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff16146111e9576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006111f433610a86565b6111fe573361126d565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d9190613153565b9050611297817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6112a2848484612483565b610c0960007f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b60006112f57f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614611342576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061134d33610a86565b61135757336113c6565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c69190613153565b90506113f0817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517f9fd5a6cf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881690639fd5a6cf9061144c90339030908b908a908a908a90600401613170565b600060405180830381600087803b15801561146657600080fd5b505af1925050508015611477575060015b506107f8878787612483565b60006114ad7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff16146114fa576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061150533610a86565b61150f573361157e565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157e9190613153565b90506115a8817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d505accf9060e401600060405180830381600087803b15801561165a57600080fd5b505af192505050801561166b575060015b50610e21888888611cc2565b60006116816126fa565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156116ae5750825b905060008267ffffffffffffffff1660011480156116cb5750303b155b9050811580156116d9575080155b15611710576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117715784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b61177a86612723565b83156117db5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60006117ee81612277565b73ffffffffffffffffffffffffffffffffffffffff831661183b576040517f920d929200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081527f157708201859ed3ceee295d1baf4381ae5b622de496b1cee3705ed07c6a50200602081905260409091205483151560ff9091161515036118985750505050565b73ffffffffffffffffffffffffffffffffffffffff84166000818152602083815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527ff03b9904b8234e041267377d7a55ddb345d1ee737d0116a2e621e3a5fad07a7d910160405180910390a250505050565b600061194c7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614611999576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006119a433610a86565b6119ae5733611a1d565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d9190613153565b9050611a47817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810186905260ff8516608482015260a4810184905260c4810183905273ffffffffffffffffffffffffffffffffffffffff89169063d505accf9060e401600060405180830381600087803b158015611ad957600080fd5b505af1925050508015611aea575060015b50610e21888888612483565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b3081612277565b610c0983836123a5565b6000611b44612787565b905090565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f6b691b2d012e26a1efd9948ce05990847eae29d1cebd577c171024c61e06d6eb602052604081205460ff1661061a565b6000611bc07f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b73ffffffffffffffffffffffffffffffffffffffff1614611c0d576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611c1833610a86565b611c225733611c91565b3373ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c919190613153565b9050611cbb817f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a55565b6112a28484845b611ccb836127b1565b611cd5833361280d565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af1158015611d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d929190613205565b506040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015611e28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4c9190613205565b506040517fbf376c7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526024820184905284169063bf376c7a90604401600060405180830381600087803b158015611ebd57600080fd5b505af1158015611ed1573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fea5845e6161e56b30740f4a743f316fa77bd8f48b1c3ce6eff595ab0385ba74584604051611f3491815260200190565b60405180910390a3505050565b611f4a846127b1565b611f53836127b1565b611f5c84612925565b611f6583612925565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810183905273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906064016020604051808303816000875af1158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120029190613205565b50600061200e3061297d565b6040517f39f476930000000000000000000000000000000000000000000000000000000081523060048201526024810185905290915073ffffffffffffffffffffffffffffffffffffffff8616906339f4769390604401600060405180830381600087803b15801561207f57600080fd5b505af1158015612093573d6000803e3d6000fd5b50505050806120a13061297d565b6120ab9190613222565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018390529194507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af1158015612145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121699190613205565b506040517fbf376c7a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820185905285169063bf376c7a90604401600060405180830381600087803b1580156121da57600080fd5b505af11580156121ee573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f7621e0d883c1038028d167fa29ecc01dbb8bc0cf673db584432530d693259e518660405161226891815260200190565b60405180910390a45050505050565b6122818133612a32565b50565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1661239b5760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556123373390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061061a565b600091505061061a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff161561239b5760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061061a565b61248c836127b1565b612496833361280d565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810183905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561250f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125339190613205565b50600061253f3061297d565b6040517f39f476930000000000000000000000000000000000000000000000000000000081523060048201526024810185905290915073ffffffffffffffffffffffffffffffffffffffff8516906339f4769390604401600060405180830381600087803b1580156125b057600080fd5b505af11580156125c4573d6000803e3d6000fd5b50505050806125d23061297d565b6125dc9190613222565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529194507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a9190613205565b508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f20715489f1868041ab913834efbaabc996170336daf633a4999d62bd5c162f088560405161116491815260200190565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061061a565b61272b612ad9565b73ffffffffffffffffffffffffffffffffffffffff8116612778576040517f7289db0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612783600082612284565b5050565b6000611b447f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5490565b6127ba81612b19565b612281576040517f2d32af6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b6128168261082a565b156128c65773ffffffffffffffffffffffffffffffffffffffff80831660009081527f2f6671d90ec6fb8a38d5fa4043e503b2789e716b6e5219d1b20da9c6434dde01602090815260408083209385168352929052205460ff16612783576040517fe5fae0d000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152604401612804565b6128cf81611b49565b612783576040517f10833dfe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152604401612804565b61292e8161082a565b15612281576040517f0bc7a0d000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401612804565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015612a0e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061a919061325c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16612783576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401612804565b612ae1612cca565b612b17576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081527f6561726e6572735f6c6973745f69676e6f726564000000000000000000000000600482015260009081907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690638eaa6ac090602401602060405180830381865afa158015612bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bec919061325c565b14158061061a57506040517fd7d1c1c00000000000000000000000000000000000000000000000000000000081527f6561726e65727300000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063d7d1c1c090604401602060405180830381865afa158015612ca6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061a9190613205565b6000612cd46126fa565b5468010000000000000000900460ff16919050565b600060208284031215612cfb57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612d2b57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461228157600080fd5b60008083601f840112612d6657600080fd5b50813567ffffffffffffffff811115612d7e57600080fd5b602083019150836020828501011115612d9657600080fd5b9250929050565b60008060008060008060a08789031215612db657600080fd5b8635612dc181612d32565b9550602087013594506040870135612dd881612d32565b935060608701359250608087013567ffffffffffffffff811115612dfb57600080fd5b612e0789828a01612d54565b979a9699509497509295939492505050565b600060208284031215612e2b57600080fd5b8135612d2b81612d32565b803560ff81168114612e4757600080fd5b919050565b600080600080600080600080610100898b031215612e6957600080fd5b8835612e7481612d32565b97506020890135612e8481612d32565b9650604089013595506060890135612e9b81612d32565b945060808901359350612eb060a08a01612e36565b979a969950949793969295929450505060c08201359160e0013590565b600060208284031215612edf57600080fd5b5035919050565b801515811461228157600080fd5b60008060408385031215612f0757600080fd5b8235612f1281612d32565b91506020830135612f2281612ee6565b809150509250929050565b60008060408385031215612f4057600080fd5b823591506020830135612f2281612d32565b600080600080600080600060c0888a031215612f6d57600080fd5b8735612f7881612d32565b96506020880135612f8881612d32565b9550604088013594506060880135612f9f81612d32565b93506080880135925060a088013567ffffffffffffffff811115612fc257600080fd5b612fce8a828b01612d54565b989b979a50959850939692959293505050565b60008060408385031215612ff457600080fd5b8235612fff81612d32565b91506020830135612f2281612d32565b6000806000806080858703121561302557600080fd5b843561303081612d32565b9350602085013561304081612d32565b925060408501359150606085013561305781612d32565b939692955090935050565b60008060006060848603121561307757600080fd5b833561308281612d32565b9250602084013561309281612d32565b915060408401356130a281612ee6565b809150509250925092565b6000806000606084860312156130c257600080fd5b83356130cd81612d32565b92506020840135915060408401356130a281612d32565b600080600080600080600060e0888a0312156130ff57600080fd5b873561310a81612d32565b965060208801359550604088013561312181612d32565b94506060880135935061313660808901612e36565b9699959850939692959460a0840135945060c09093013592915050565b60006020828403121561316557600080fd5b8151612d2b81612d32565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c0830137600081830160c090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010195945050505050565b60006020828403121561321757600080fd5b8151612d2b81612ee6565b8181038181111561061a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006020828403121561326e57600080fd5b505191905056fea2646970667358221220e5e487a39a5438cae91cfd7a7957b8a9b85509280fca09e7addbd4c530ce461e64736f6c634300081a0033000000000000000000000000866a2bf4e572cbcf37d5071a7a58503bfb36be1b000000000000000000000000119fbeedd4f4f4298fb59b720d5654442b81ae2c", + "nonce": "0x13", + "chainId": "0xe708" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbcdf895c4ce457fd4848bd68ba1047c59c374d85582c1e1d380ba22738201b51", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "function": "deployCreate3(bytes32,bytes)", + "arguments": [ + "0xf2f1acbe0ba726fee8d75f3e32900526874740bb008b812a2c4f2db4a3562dde", + "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220546eb0fad9a3a2b6a2e402db661fb7d135ce3a8c928ae6abed4e0a60201d6f5764736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea264697066735822122015b487152b3ee90272d5592223a36ff635510bef3d43606cc98e1f1541e2003464736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000009e0fdb26954bc8998158c0c921c8254bd6dfe5ec000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "to": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "gas": "0x14b3cb", + "value": "0x0", + "input": "0x9c36a286f2f1acbe0ba726fee8d75f3e32900526874740bb008b812a2c4f2db4a3562dde0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000123a60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220546eb0fad9a3a2b6a2e402db661fb7d135ce3a8c928ae6abed4e0a60201d6f5764736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea264697066735822122015b487152b3ee90272d5592223a36ff635510bef3d43606cc98e1f1541e2003464736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000009e0fdb26954bc8998158c0c921c8254bd6dfe5ec000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x14", + "chainId": "0xe708" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "address": "0x38862ac81f9ed0c39ca733bd0224b34885f40f10", + "initCode": "0x67363d3d37363d34f03d5260086018f3" + }, + { + "transactionType": "CREATE", + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "initCode": "0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea2646970667358221220546eb0fad9a3a2b6a2e402db661fb7d135ce3a8c928ae6abed4e0a60201d6f5764736f6c634300081a0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea264697066735822122015b487152b3ee90272d5592223a36ff635510bef3d43606cc98e1f1541e2003464736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000009e0fdb26954bc8998158c0c921c8254bd6dfe5ec000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb00000000000000000000000000000000000000000000000000000000" + }, + { + "transactionType": "CREATE", + "address": "0x0f38d8a5583f9316084e9c40737244870c565924", + "initCode": "0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea264697066735822122015b487152b3ee90272d5592223a36ff635510bef3d43606cc98e1f1541e2003464736f6c634300081a0033000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x358cf8", + "logs": [ + { + "address": "0x9e0fdb26954bc8998158c0c921c8254bd6dfe5ec", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xc2754c4b6c4a7250ed96b12e0eda4d3a50819d4ad4729a710db5cf022379aee5", + "blockNumber": "0x14e8a6d", + "transactionHash": "0x4759bf24fd623201b881e970fccf67e39ab011693bbbf7af2a9542130876cbd1", + "transactionIndex": "0x4", + "logIndex": "0x16", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800040000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000002000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4759bf24fd623201b881e970fccf67e39ab011693bbbf7af2a9542130876cbd1", + "transactionIndex": "0x4", + "blockHash": "0xc2754c4b6c4a7250ed96b12e0eda4d3a50819d4ad4729a710db5cf022379aee5", + "blockNumber": "0x14e8a6d", + "gasUsed": "0x2bbb8d", + "effectiveGasPrice": "0x288d643", + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "to": null, + "contractAddress": "0x9e0fdb26954bc8998158c0c921c8254bd6dfe5ec" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x166e79", + "logs": [ + { + "address": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "topics": [ + "0x2feea65dd4e9f9cbd86b74b7734210c59a1b2981b5b137bd0ee3e208200c9067", + "0x00000000000000000000000038862ac81f9ed0c39ca733bd0224b34885f40f10", + "0x71cf965fb04bcfeb2ee0ec3b03e0aaaeb87ea1d4bb55d5ad209603cfa3bf0d2c" + ], + "data": "0x", + "blockHash": "0xe2d527f1264f50faea90ac6c524ca05704bcfe40175f49697f41efe87b7af102", + "blockNumber": "0x14e8a70", + "transactionHash": "0xbcdf895c4ce457fd4848bd68ba1047c59c374d85582c1e1d380ba22738201b51", + "transactionIndex": "0x3", + "logIndex": "0xd", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000009e0fdb26954bc8998158c0c921c8254bd6dfe5ec" + ], + "data": "0x", + "blockHash": "0xe2d527f1264f50faea90ac6c524ca05704bcfe40175f49697f41efe87b7af102", + "blockNumber": "0x14e8a70", + "transactionHash": "0xbcdf895c4ce457fd4848bd68ba1047c59c374d85582c1e1d380ba22738201b51", + "transactionIndex": "0x3", + "logIndex": "0xe", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb", + "0x00000000000000000000000038862ac81f9ed0c39ca733bd0224b34885f40f10" + ], + "data": "0x", + "blockHash": "0xe2d527f1264f50faea90ac6c524ca05704bcfe40175f49697f41efe87b7af102", + "blockNumber": "0x14e8a70", + "transactionHash": "0xbcdf895c4ce457fd4848bd68ba1047c59c374d85582c1e1d380ba22738201b51", + "transactionIndex": "0x3", + "logIndex": "0xf", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe2d527f1264f50faea90ac6c524ca05704bcfe40175f49697f41efe87b7af102", + "blockNumber": "0x14e8a70", + "transactionHash": "0xbcdf895c4ce457fd4848bd68ba1047c59c374d85582c1e1d380ba22738201b51", + "transactionIndex": "0x3", + "logIndex": "0x10", + "removed": false + }, + { + "address": "0x0f38d8a5583f9316084e9c40737244870c565924", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f2f1acbe0ba726fee8d75f3e32900526874740bb" + ], + "data": "0x", + "blockHash": "0xe2d527f1264f50faea90ac6c524ca05704bcfe40175f49697f41efe87b7af102", + "blockNumber": "0x14e8a70", + "transactionHash": "0xbcdf895c4ce457fd4848bd68ba1047c59c374d85582c1e1d380ba22738201b51", + "transactionIndex": "0x3", + "logIndex": "0x11", + "removed": false + }, + { + "address": "0xb6807116b3b1b321a390594e31ecd6e0076f6278", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f38d8a5583f9316084e9c40737244870c565924", + "blockHash": "0xe2d527f1264f50faea90ac6c524ca05704bcfe40175f49697f41efe87b7af102", + "blockNumber": "0x14e8a70", + "transactionHash": "0xbcdf895c4ce457fd4848bd68ba1047c59c374d85582c1e1d380ba22738201b51", + "transactionIndex": "0x3", + "logIndex": "0x12", + "removed": false + }, + { + "address": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511", + "0x000000000000000000000000b6807116b3b1b321a390594e31ecd6e0076f6278" + ], + "data": "0x", + "blockHash": "0xe2d527f1264f50faea90ac6c524ca05704bcfe40175f49697f41efe87b7af102", + "blockNumber": "0x14e8a70", + "transactionHash": "0xbcdf895c4ce457fd4848bd68ba1047c59c374d85582c1e1d380ba22738201b51", + "transactionIndex": "0x3", + "logIndex": "0x13", + "removed": false + } + ], + "logsBloom": "0x00020004000000000000000000000000400000000000000400800000240000000000000000000000000000000000200000000000002804100000000000000000002000000000000000000000020012010001000000000000040000000000000000000000020000000000000000000800000020800020000000000040000100400000000000000001040800000000000004000000000080400000004000800000000000000000000000000000000000000000000000000000001400000000000000000020000000000200000020000000000000002404000100000000000020000000000000000210000000000000000000000000004000000000000000000000", + "type": "0x2", + "transactionHash": "0xbcdf895c4ce457fd4848bd68ba1047c59c374d85582c1e1d380ba22738201b51", + "transactionIndex": "0x3", + "blockHash": "0xe2d527f1264f50faea90ac6c524ca05704bcfe40175f49697f41efe87b7af102", + "blockNumber": "0x14e8a70", + "gasUsed": "0xe27cb", + "effectiveGasPrice": "0x288d643", + "from": "0xf2f1acbe0ba726fee8d75f3e32900526874740bb", + "to": "0xba5ed099633d3b313e4d5f7bdc1305d3c28ba5ed", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1754962237, + "chain": 59144, + "commit": "241c58c" +} diff --git a/deployments/59144.json b/deployments/59144.json new file mode 100644 index 00000000..c37335dd --- /dev/null +++ b/deployments/59144.json @@ -0,0 +1,6 @@ +{ + "extensionAddresses": [], + "extensionNames": [], + "swapAdapter": "0x0000000000000000000000000000000000000000", + "swapFacility": "0xB6807116b3B1B321a390594e31ECD6e0076f6278" +} diff --git a/foundry.toml b/foundry.toml index 92f8e894..5a31e493 100644 --- a/foundry.toml +++ b/foundry.toml @@ -42,6 +42,7 @@ depth = 250 localhost = "${LOCALHOST_RPC_URL}" mainnet = "${MAINNET_RPC_URL}" sepolia = "${SEPOLIA_RPC_URL}" +linea = "${LINEA_RPC_URL}" [etherscan] mainnet = { key = "${ETHERSCAN_API_KEY}", url = "https://api.etherscan.io/api" } diff --git a/script/Config.sol b/script/Config.sol index 72e465e8..1aca6363 100644 --- a/script/Config.sol +++ b/script/Config.sol @@ -35,6 +35,7 @@ contract Config { uint256 public constant ETHEREUM_CHAIN_ID = 1; uint256 public constant ARBITRUM_CHAIN_ID = 42161; uint256 public constant OPTIMISM_CHAIN_ID = 10; + uint256 public constant LINEA_CHAIN_ID = 59144; // Testnet chain IDs uint256 public constant LOCAL_CHAIN_ID = 31337; @@ -90,6 +91,15 @@ contract Config { return config; } + if (chainId_ == LINEA_CHAIN_ID) { + config.mToken = M_TOKEN; + config.wrappedMToken = address(0); + config.registrar = REGISTRAR; + config.uniswapV3Router = address(0); + config.admin = address(0xF2f1ACbe0BA726fEE8d75f3E32900526874740BB); + return config; + } + // Testnet configs if (chainId_ == LOCAL_CHAIN_ID) { config.mToken = M_TOKEN; diff --git a/script/ScriptBase.s.sol b/script/ScriptBase.s.sol index 2da38297..71bb961b 100644 --- a/script/ScriptBase.s.sol +++ b/script/ScriptBase.s.sol @@ -59,7 +59,11 @@ contract ScriptBase is Script, Config { function _writeDeployment(uint256 chainId_, string memory key_, address value_) internal { string memory root = ""; - Deployments memory deployments_ = _readDeployment(chainId_); + Deployments memory deployments_; + + if (vm.isFile(_deployOutputPath(chainId_))) { + deployments_ = _readDeployment(chainId_); + } if ( keccak256(bytes(key_)) != keccak256(bytes("swapAdapter")) && diff --git a/src/swap/ReentrancyLock.sol b/src/swap/ReentrancyLock.sol index 60f5ad3e..60282d9e 100644 --- a/src/swap/ReentrancyLock.sol +++ b/src/swap/ReentrancyLock.sol @@ -2,7 +2,7 @@ pragma solidity 0.8.26; -import { Locker } from "../../lib/uniswap-v4-periphery/src/libraries/Locker.sol"; +import { Locker } from "./libs/Locker.sol"; import { AccessControlUpgradeable diff --git a/src/swap/UniswapV3SwapAdapter.sol b/src/swap/UniswapV3SwapAdapter.sol index 055ff9a8..8154629e 100644 --- a/src/swap/UniswapV3SwapAdapter.sol +++ b/src/swap/UniswapV3SwapAdapter.sol @@ -14,8 +14,7 @@ import { AccessControl } from "../../lib/common/lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/access/AccessControl.sol"; -import { ReentrancyLock } from "../../lib/uniswap-v4-periphery/src/base/ReentrancyLock.sol"; - +import { ReentrancyLock } from "./libs/ReentrancyLock.sol"; import { IUniswapV3SwapAdapter } from "./interfaces/IUniswapV3SwapAdapter.sol"; import { ISwapFacility } from "./interfaces/ISwapFacility.sol"; import { IV3SwapRouter } from "./interfaces/uniswap/IV3SwapRouter.sol"; diff --git a/src/swap/libs/Locker.sol b/src/swap/libs/Locker.sol new file mode 100644 index 00000000..bd6721c1 --- /dev/null +++ b/src/swap/libs/Locker.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +/** + * @author Uniswap Labs. + * Adapted from https://github.com/Uniswap/v4-periphery/blob/main/src/libraries/Locker.sol for Linea deployment. + * @dev Use Uniswap version of the contract when Linea supports transient storage. + */ +library Locker { + // The slot holding the locker state. bytes32(uint256(keccak256("LockedBy")) - 1) + bytes32 constant LOCKED_BY_SLOT = 0x0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a; + + function set(address locker) internal { + assembly { + sstore(LOCKED_BY_SLOT, locker) + } + } + + function get() internal view returns (address locker) { + assembly { + locker := sload(LOCKED_BY_SLOT) + } + } +} diff --git a/src/swap/libs/ReentrancyLock.sol b/src/swap/libs/ReentrancyLock.sol new file mode 100644 index 00000000..ff82c5d5 --- /dev/null +++ b/src/swap/libs/ReentrancyLock.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import { Locker } from "./Locker.sol"; + +/** + * @author Uniswap Labs. + * Copied from https://github.com/Uniswap/v4-periphery/blob/main/src/base/ReentrancyLock.sol. + * @dev Use Uniswap version of the contract when Linea supports transient storage. + */ +contract ReentrancyLock { + error ContractLocked(); + + modifier isNotLocked() { + if (Locker.get() != address(0)) revert ContractLocked(); + Locker.set(msg.sender); + _; + Locker.set(address(0)); + } + + function _getLocker() internal view returns (address) { + return Locker.get(); + } +}