diff --git a/.gitmodules b/.gitmodules index 888d42d..2451d17 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,9 @@ [submodule "lib/forge-std"] path = lib/forge-std url = https://github.com/foundry-rs/forge-std +[submodule "lib/v4-core"] + path = lib/v4-core + url = https://github.com/Uniswap/v4-core +[submodule "lib/v4-periphery"] + path = lib/v4-periphery + url = https://github.com/Uniswap/v4-periphery diff --git a/broadcast/DeployPLTestAndPool.s.sol/84532/run-1774165251799.json b/broadcast/DeployPLTestAndPool.s.sol/84532/run-1774165251799.json new file mode 100644 index 0000000..d3f78f4 --- /dev/null +++ b/broadcast/DeployPLTestAndPool.s.sol/84532/run-1774165251799.json @@ -0,0 +1,566 @@ +{ + "transactions": [ + { + "hash": "0x5ba6dc91f6f622ba2e921215ea183c187776915dd6309b0b888975f4f3b6c8a9", + "transactionType": "CREATE", + "contractName": "PLTest", + "contractAddress": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "function": null, + "arguments": [ + "10000000000000000000000" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "gas": "0x1161bf", + "value": "0x0", + "input": "0x608060405234801561000f575f5ffd5b50604051610fd1380380610fd183398181016040528101906100319190610191565b3360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610081338261008760201b60201c565b50610244565b805f5f82825461009791906101e9565b925050819055508060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546100ea91906101e9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161014e919061022b565b60405180910390a35050565b5f5ffd5b5f819050919050565b6101708161015e565b811461017a575f5ffd5b50565b5f8151905061018b81610167565b92915050565b5f602082840312156101a6576101a561015a565b5b5f6101b38482850161017d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6101f38261015e565b91506101fe8361015e565b9250828201905080821115610216576102156101bc565b5b92915050565b6102258161015e565b82525050565b5f60208201905061023e5f83018461021c565b92915050565b610d80806102515f395ff3fe608060405234801561000f575f5ffd5b50600436106100a7575f3560e01c806340c10f191161006f57806340c10f191461016557806370a08231146101815780638da5cb5b146101b157806395d89b41146101cf578063a9059cbb146101ed578063dd62ed3e1461021d576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100f957806323b872dd14610117578063313ce56714610147575b5f5ffd5b6100b361024d565b6040516100c09190610920565b60405180910390f35b6100e360048036038101906100de91906109d1565b610286565b6040516100f09190610a29565b60405180910390f35b610101610373565b60405161010e9190610a51565b60405180910390f35b610131600480360381019061012c9190610a6a565b610378565b60405161013e9190610a29565b60405180910390f35b61014f6104fd565b60405161015c9190610ad5565b60405180910390f35b61017f600480360381019061017a91906109d1565b610502565b005b61019b60048036038101906101969190610aee565b61059f565b6040516101a89190610a51565b60405180910390f35b6101b96105b4565b6040516101c69190610b28565b60405180910390f35b6101d76105d9565b6040516101e49190610920565b60405180910390f35b610207600480360381019061020291906109d1565b610612565b6040516102149190610a29565b60405180910390f35b61023760048036038101906102329190610b41565b610626565b6040516102449190610a51565b60405180910390f35b6040518060400160405280600781526020017f706c2d746573740000000000000000000000000000000000000000000000000081525081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103619190610a51565b60405180910390a36001905092915050565b5f5481565b5f5f60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e8578281101561045f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045690610bc9565b60405180910390fd5b828161046b9190610c14565b60035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6104f3858585610646565b9150509392505050565b601281565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890610c91565b60405180910390fd5b61059b82826107dd565b5050565b6002602052805f5260405f205f915090505481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600781526020017f504c5f544553540000000000000000000000000000000000000000000000000081525081565b5f61061e338484610646565b905092915050565b6003602052815f5260405f20602052805f5260405f205f91509150505481565b5f8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106be90610cf9565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107139190610c14565b925050819055508160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107669190610d17565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107ca9190610a51565b60405180910390a3600190509392505050565b805f5f8282546107ed9190610d17565b925050819055508060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108409190610d17565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108a49190610a51565b60405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6108f2826108b0565b6108fc81856108ba565b935061090c8185602086016108ca565b610915816108d8565b840191505092915050565b5f6020820190508181035f83015261093881846108e8565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61096d82610944565b9050919050565b61097d81610963565b8114610987575f5ffd5b50565b5f8135905061099881610974565b92915050565b5f819050919050565b6109b08161099e565b81146109ba575f5ffd5b50565b5f813590506109cb816109a7565b92915050565b5f5f604083850312156109e7576109e6610940565b5b5f6109f48582860161098a565b9250506020610a05858286016109bd565b9150509250929050565b5f8115159050919050565b610a2381610a0f565b82525050565b5f602082019050610a3c5f830184610a1a565b92915050565b610a4b8161099e565b82525050565b5f602082019050610a645f830184610a42565b92915050565b5f5f5f60608486031215610a8157610a80610940565b5b5f610a8e8682870161098a565b9350506020610a9f8682870161098a565b9250506040610ab0868287016109bd565b9150509250925092565b5f60ff82169050919050565b610acf81610aba565b82525050565b5f602082019050610ae85f830184610ac6565b92915050565b5f60208284031215610b0357610b02610940565b5b5f610b108482850161098a565b91505092915050565b610b2281610963565b82525050565b5f602082019050610b3b5f830184610b19565b92915050565b5f5f60408385031215610b5757610b56610940565b5b5f610b648582860161098a565b9250506020610b758582860161098a565b9150509250929050565b7f696e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f610bb36016836108ba565b9150610bbe82610b7f565b602082019050919050565b5f6020820190508181035f830152610be081610ba7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c1e8261099e565b9150610c298361099e565b9250828203905081811115610c4157610c40610be7565b5b92915050565b7f6f6e6c79206f776e6572000000000000000000000000000000000000000000005f82015250565b5f610c7b600a836108ba565b9150610c8682610c47565b602082019050919050565b5f6020820190508181035f830152610ca881610c6f565b9050919050565b7f696e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f610ce36014836108ba565b9150610cee82610caf565b602082019050919050565b5f6020820190508181035f830152610d1081610cd7565b9050919050565b5f610d218261099e565b9150610d2c8361099e565b9250828201905080821115610d4457610d43610be7565b5b9291505056fea26469706673582212205ac6d9765353f2bb68d7dd561f040cf26280a9c66ea1b12ef879355c3141eefa64736f6c634300081c003300000000000000000000000000000000000000000000021e19e0c9bab2400000", + "nonce": "0x55", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf38c61346cf2932c8201f76e6e827456a30678b1907cb8e1876f975816eaaead", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x05e73354cfdd6745c338b50bcfdfa3aa6fa03408", + "function": "initialize((address,address,uint24,int24,address),uint160)", + "arguments": [ + "(0x4200000000000000000000000000000000000006, 0x6Ef4A3f654F2AfcEa8A8704D61Be5271536c13Fa, 3000, 60, 0x0000000000000000000000000000000000000000)", + "11204562847321190656000" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x05e73354cfdd6745c338b50bcfdfa3aa6fa03408", + "gas": "0x1274c", + "value": "0x0", + "input": "0x6276cbbe00000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025f668bb15206e96800", + "nonce": "0x56", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1babe8d76f9d68b7f2d34e5b9f7a20470dbf97a4b6cd252bb4cf44d466d9453b", + "transactionType": "CALL", + "contractName": "PLTest", + "contractAddress": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "function": "approve(address,uint256)", + "arguments": [ + "0x000000000022D473030F116dDEE9F6B43aC78BA3", + "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "gas": "0x10c49", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "nonce": "0x57", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x94b4c381933e1fad01cfecb2185eaf60cec731cc154e46467a885b6874be1eae", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x4200000000000000000000000000000000000006", + "function": "deposit()", + "arguments": [], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4200000000000000000000000000000000000006", + "gas": "0x95cf", + "value": "0x11c37937e08000", + "input": "0xd0e30db0", + "nonce": "0x58", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf666818fe1ed33e57c0f01799dce3e52d2d1d05854ebb8061c6186e09eff0735", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x4200000000000000000000000000000000000006", + "function": "approve(address,uint256)", + "arguments": [ + "0x000000000022D473030F116dDEE9F6B43aC78BA3", + "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4200000000000000000000000000000000000006", + "gas": "0x10868", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "nonce": "0x59", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf2663b51fbda65555e7722d981cfc0ec9c024c3a77cc59f177e4505322df0688", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "function": "approve(address,address,uint160,uint48)", + "arguments": [ + "0x6Ef4A3f654F2AfcEa8A8704D61Be5271536c13Fa", + "0x4B2C77d209D3405F41a037Ec6c77F7F5b8e2ca80", + "1461501637330902918203684832716283019655932542975", + "281474976710655" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "gas": "0x1112d", + "value": "0x0", + "input": "0x87517c450000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000004b2c77d209d3405f41a037ec6c77f7f5b8e2ca80000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "nonce": "0x5a", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x296ccf7e020d43568fc2fb53c4419157d22998a36133a9a753cf87c2460992e7", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "function": "approve(address,address,uint160,uint48)", + "arguments": [ + "0x4200000000000000000000000000000000000006", + "0x4B2C77d209D3405F41a037Ec6c77F7F5b8e2ca80", + "1461501637330902918203684832716283019655932542975", + "281474976710655" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "gas": "0x10ff1", + "value": "0x0", + "input": "0x87517c4500000000000000000000000042000000000000000000000000000000000000060000000000000000000000004b2c77d209d3405f41a037ec6c77f7f5b8e2ca80000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "nonce": "0x5b", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x4b2c77d209d3405f41a037ec6c77f7f5b8e2ca80", + "function": "modifyLiquidities(bytes,uint256)", + "arguments": [ + "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002020d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb1874fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb475400000000000000000000000000000000000000000000000000000000a20413a50000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa", + "1774165358" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4b2c77d209d3405f41a037ec6c77f7f5b8e2ca80", + "gas": "0x88a36", + "value": "0x0", + "input": "0xdd46508f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000069bf9d6e0000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002020d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb1874fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb475400000000000000000000000000000000000000000000000000000000a20413a50000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa", + "nonce": "0x5c", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x2099fb", + "logs": [ + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf" + ], + "data": "0x00000000000000000000000000000000000000000000021e19e0c9bab2400000", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0xf38c61346cf2932c8201f76e6e827456a30678b1907cb8e1876f975816eaaead", + "transactionIndex": "0x6", + "logIndex": "0x41", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000200000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000010000000000000010000000000000000000000000000000000000000000000000000000000000800000200000000002000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf38c61346cf2932c8201f76e6e827456a30678b1907cb8e1876f975816eaaead", + "transactionIndex": "0x6", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xd5ee2", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x3c933", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": null, + "contractAddress": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x6f92" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2163e5", + "logs": [ + { + "address": "0x05e73354cfdd6745c338b50bcfdfa3aa6fa03408", + "topics": [ + "0xdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438", + "0xcb801750c03be6e5db09148460fa58d19e87526b1d371223ea668656ac0d1786", + "0x0000000000000000000000004200000000000000000000000000000000000006", + "0x0000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025f668bb15206e96800fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2fc9", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0xf666818fe1ed33e57c0f01799dce3e52d2d1d05854ebb8061c6186e09eff0735", + "transactionIndex": "0x7", + "logIndex": "0x42", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000100000000000000000000000000000000000000000000100000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000004000008000000000000000000000001000000000000000000200000000000000000000000000100000000000000000000000000000000000080000000000000001004000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002", + "type": "0x2", + "transactionHash": "0xf666818fe1ed33e57c0f01799dce3e52d2d1d05854ebb8061c6186e09eff0735", + "transactionIndex": "0x7", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xc9ea", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x3efc", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x05e73354cfdd6745c338b50bcfdfa3aa6fa03408", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x745" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x221b57", + "logs": [ + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0xf2663b51fbda65555e7722d981cfc0ec9c024c3a77cc59f177e4505322df0688", + "transactionIndex": "0x8", + "logIndex": "0x43", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000800000000000000000200000000000000000000000004000000000000000000000000800000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000010000000020000000000000000000000000000000000000000000000000000800000200000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf2663b51fbda65555e7722d981cfc0ec9c024c3a77cc59f177e4505322df0688", + "transactionIndex": "0x8", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xb772", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x364c", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2287cd", + "logs": [ + { + "address": "0x4200000000000000000000000000000000000006", + "topics": [ + "0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf" + ], + "data": "0x0000000000000000000000000000000000000000000000000011c37937e08000", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x5ba6dc91f6f622ba2e921215ea183c187776915dd6309b0b888975f4f3b6c8a9", + "transactionIndex": "0x9", + "logIndex": "0x44", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000040000040000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001002000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000", + "type": "0x2", + "transactionHash": "0x5ba6dc91f6f622ba2e921215ea183c187776915dd6309b0b888975f4f3b6c8a9", + "transactionIndex": "0x9", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0x6c76", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x364c", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4200000000000000000000000000000000000006", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x233c98", + "logs": [ + { + "address": "0x4200000000000000000000000000000000000006", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x1babe8d76f9d68b7f2d34e5b9f7a20470dbf97a4b6cd252bb4cf44d466d9453b", + "transactionIndex": "0xa", + "logIndex": "0x45", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000040000040000000000000000000000000000100000000000000000800000000000000000200000000000000000000000004000000000000000000000000800000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000020000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1babe8d76f9d68b7f2d34e5b9f7a20470dbf97a4b6cd252bb4cf44d466d9453b", + "transactionIndex": "0xa", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xb4cb", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x364c", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4200000000000000000000000000000000000006", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x23f762", + "logs": [ + { + "address": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "topics": [ + "0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x0000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa", + "0x0000000000000000000000004b2c77d209d3405f41a037ec6c77f7f5b8e2ca80" + ], + "data": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x94b4c381933e1fad01cfecb2185eaf60cec731cc154e46467a885b6874be1eae", + "transactionIndex": "0xb", + "logIndex": "0x46", + "removed": false + } + ], + "logsBloom": "0x00010000000000010000000000100000000000000000000000000000040000000000000000000000000000000000000000000000000000000008000010080000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000880080000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000402", + "type": "0x2", + "transactionHash": "0x94b4c381933e1fad01cfecb2185eaf60cec731cc154e46467a885b6874be1eae", + "transactionIndex": "0xb", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xbaca", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x3cd0", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x702" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x24b154", + "logs": [ + { + "address": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "topics": [ + "0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x0000000000000000000000004200000000000000000000000000000000000006", + "0x0000000000000000000000004b2c77d209d3405f41a037ec6c77f7f5b8e2ca80" + ], + "data": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x296ccf7e020d43568fc2fb53c4419157d22998a36133a9a753cf87c2460992e7", + "transactionIndex": "0xc", + "logIndex": "0x47", + "removed": false + } + ], + "logsBloom": "0x00010000000000010000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000028000010080000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000010000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000880000000000000000000004000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000400", + "type": "0x2", + "transactionHash": "0x296ccf7e020d43568fc2fb53c4419157d22998a36133a9a753cf87c2460992e7", + "transactionIndex": "0xc", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xb9f2", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x3878", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x68a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2a882d", + "logs": [ + { + "address": "0x4b2c77d209d3405f41a037ec6c77f7f5b8e2ca80", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x0000000000000000000000000000000000000000000000000000000000005170" + ], + "data": "0x", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionIndex": "0xd", + "logIndex": "0x48", + "removed": false + }, + { + "address": "0x05e73354cfdd6745c338b50bcfdfa3aa6fa03408", + "topics": [ + "0xf208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec", + "0xcb801750c03be6e5db09148460fa58d19e87526b1d371223ea668656ac0d1786", + "0x0000000000000000000000004b2c77d209d3405f41a037ec6c77f7f5b8e2ca80" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb1874fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb475400000000000000000000000000000000000000000000000000000000a20413a50000000000000000000000000000000000000000000000000000000000005170", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionIndex": "0xd", + "logIndex": "0x49", + "removed": false + }, + { + "address": "0x4200000000000000000000000000000000000006", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x00000000000000000000000005e73354cfdd6745c338b50bcfdfa3aa6fa03408" + ], + "data": "0x0000000000000000000000000000000000000000000000000011c37937c7d541", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionIndex": "0xd", + "logIndex": "0x4a", + "removed": false + }, + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x00000000000000000000000005e73354cfdd6745c338b50bcfdfa3aa6fa03408" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000064", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionIndex": "0xd", + "logIndex": "0x4b", + "removed": false + } + ], + "logsBloom": "0x00000000000000010000000000000000000000000000000000040000040000000100000100000000000000100000000000000000000000000008000090000800000000000010000000000008000000000000000000100000000000008000000200000000020000100000000000000800000000000000000000000010000000000000000005000000000000000000000000000000012000000000000010000000000004000000000000000100000000000000000000000000000000800000200000000002001000000000800000000000000000000000000000000000000020000000000000400000000000000800000004000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionIndex": "0xd", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0x5d6d9", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x80af", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4b2c77d209d3405f41a037ec6c77f7f5b8e2ca80", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0xeda" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1774165251799, + "chain": 84532, + "commit": "5c6b019" +} \ No newline at end of file diff --git a/broadcast/DeployPLTestAndPool.s.sol/84532/run-latest.json b/broadcast/DeployPLTestAndPool.s.sol/84532/run-latest.json new file mode 100644 index 0000000..d3f78f4 --- /dev/null +++ b/broadcast/DeployPLTestAndPool.s.sol/84532/run-latest.json @@ -0,0 +1,566 @@ +{ + "transactions": [ + { + "hash": "0x5ba6dc91f6f622ba2e921215ea183c187776915dd6309b0b888975f4f3b6c8a9", + "transactionType": "CREATE", + "contractName": "PLTest", + "contractAddress": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "function": null, + "arguments": [ + "10000000000000000000000" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "gas": "0x1161bf", + "value": "0x0", + "input": "0x608060405234801561000f575f5ffd5b50604051610fd1380380610fd183398181016040528101906100319190610191565b3360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610081338261008760201b60201c565b50610244565b805f5f82825461009791906101e9565b925050819055508060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546100ea91906101e9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161014e919061022b565b60405180910390a35050565b5f5ffd5b5f819050919050565b6101708161015e565b811461017a575f5ffd5b50565b5f8151905061018b81610167565b92915050565b5f602082840312156101a6576101a561015a565b5b5f6101b38482850161017d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6101f38261015e565b91506101fe8361015e565b9250828201905080821115610216576102156101bc565b5b92915050565b6102258161015e565b82525050565b5f60208201905061023e5f83018461021c565b92915050565b610d80806102515f395ff3fe608060405234801561000f575f5ffd5b50600436106100a7575f3560e01c806340c10f191161006f57806340c10f191461016557806370a08231146101815780638da5cb5b146101b157806395d89b41146101cf578063a9059cbb146101ed578063dd62ed3e1461021d576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100f957806323b872dd14610117578063313ce56714610147575b5f5ffd5b6100b361024d565b6040516100c09190610920565b60405180910390f35b6100e360048036038101906100de91906109d1565b610286565b6040516100f09190610a29565b60405180910390f35b610101610373565b60405161010e9190610a51565b60405180910390f35b610131600480360381019061012c9190610a6a565b610378565b60405161013e9190610a29565b60405180910390f35b61014f6104fd565b60405161015c9190610ad5565b60405180910390f35b61017f600480360381019061017a91906109d1565b610502565b005b61019b60048036038101906101969190610aee565b61059f565b6040516101a89190610a51565b60405180910390f35b6101b96105b4565b6040516101c69190610b28565b60405180910390f35b6101d76105d9565b6040516101e49190610920565b60405180910390f35b610207600480360381019061020291906109d1565b610612565b6040516102149190610a29565b60405180910390f35b61023760048036038101906102329190610b41565b610626565b6040516102449190610a51565b60405180910390f35b6040518060400160405280600781526020017f706c2d746573740000000000000000000000000000000000000000000000000081525081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103619190610a51565b60405180910390a36001905092915050565b5f5481565b5f5f60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104e8578281101561045f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045690610bc9565b60405180910390fd5b828161046b9190610c14565b60035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6104f3858585610646565b9150509392505050565b601281565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890610c91565b60405180910390fd5b61059b82826107dd565b5050565b6002602052805f5260405f205f915090505481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600781526020017f504c5f544553540000000000000000000000000000000000000000000000000081525081565b5f61061e338484610646565b905092915050565b6003602052815f5260405f20602052805f5260405f205f91509150505481565b5f8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106be90610cf9565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107139190610c14565b925050819055508160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107669190610d17565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107ca9190610a51565b60405180910390a3600190509392505050565b805f5f8282546107ed9190610d17565b925050819055508060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108409190610d17565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108a49190610a51565b60405180910390a35050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6108f2826108b0565b6108fc81856108ba565b935061090c8185602086016108ca565b610915816108d8565b840191505092915050565b5f6020820190508181035f83015261093881846108e8565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61096d82610944565b9050919050565b61097d81610963565b8114610987575f5ffd5b50565b5f8135905061099881610974565b92915050565b5f819050919050565b6109b08161099e565b81146109ba575f5ffd5b50565b5f813590506109cb816109a7565b92915050565b5f5f604083850312156109e7576109e6610940565b5b5f6109f48582860161098a565b9250506020610a05858286016109bd565b9150509250929050565b5f8115159050919050565b610a2381610a0f565b82525050565b5f602082019050610a3c5f830184610a1a565b92915050565b610a4b8161099e565b82525050565b5f602082019050610a645f830184610a42565b92915050565b5f5f5f60608486031215610a8157610a80610940565b5b5f610a8e8682870161098a565b9350506020610a9f8682870161098a565b9250506040610ab0868287016109bd565b9150509250925092565b5f60ff82169050919050565b610acf81610aba565b82525050565b5f602082019050610ae85f830184610ac6565b92915050565b5f60208284031215610b0357610b02610940565b5b5f610b108482850161098a565b91505092915050565b610b2281610963565b82525050565b5f602082019050610b3b5f830184610b19565b92915050565b5f5f60408385031215610b5757610b56610940565b5b5f610b648582860161098a565b9250506020610b758582860161098a565b9150509250929050565b7f696e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f610bb36016836108ba565b9150610bbe82610b7f565b602082019050919050565b5f6020820190508181035f830152610be081610ba7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c1e8261099e565b9150610c298361099e565b9250828203905081811115610c4157610c40610be7565b5b92915050565b7f6f6e6c79206f776e6572000000000000000000000000000000000000000000005f82015250565b5f610c7b600a836108ba565b9150610c8682610c47565b602082019050919050565b5f6020820190508181035f830152610ca881610c6f565b9050919050565b7f696e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f610ce36014836108ba565b9150610cee82610caf565b602082019050919050565b5f6020820190508181035f830152610d1081610cd7565b9050919050565b5f610d218261099e565b9150610d2c8361099e565b9250828201905080821115610d4457610d43610be7565b5b9291505056fea26469706673582212205ac6d9765353f2bb68d7dd561f040cf26280a9c66ea1b12ef879355c3141eefa64736f6c634300081c003300000000000000000000000000000000000000000000021e19e0c9bab2400000", + "nonce": "0x55", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf38c61346cf2932c8201f76e6e827456a30678b1907cb8e1876f975816eaaead", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x05e73354cfdd6745c338b50bcfdfa3aa6fa03408", + "function": "initialize((address,address,uint24,int24,address),uint160)", + "arguments": [ + "(0x4200000000000000000000000000000000000006, 0x6Ef4A3f654F2AfcEa8A8704D61Be5271536c13Fa, 3000, 60, 0x0000000000000000000000000000000000000000)", + "11204562847321190656000" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x05e73354cfdd6745c338b50bcfdfa3aa6fa03408", + "gas": "0x1274c", + "value": "0x0", + "input": "0x6276cbbe00000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025f668bb15206e96800", + "nonce": "0x56", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1babe8d76f9d68b7f2d34e5b9f7a20470dbf97a4b6cd252bb4cf44d466d9453b", + "transactionType": "CALL", + "contractName": "PLTest", + "contractAddress": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "function": "approve(address,uint256)", + "arguments": [ + "0x000000000022D473030F116dDEE9F6B43aC78BA3", + "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "gas": "0x10c49", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "nonce": "0x57", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x94b4c381933e1fad01cfecb2185eaf60cec731cc154e46467a885b6874be1eae", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x4200000000000000000000000000000000000006", + "function": "deposit()", + "arguments": [], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4200000000000000000000000000000000000006", + "gas": "0x95cf", + "value": "0x11c37937e08000", + "input": "0xd0e30db0", + "nonce": "0x58", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf666818fe1ed33e57c0f01799dce3e52d2d1d05854ebb8061c6186e09eff0735", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x4200000000000000000000000000000000000006", + "function": "approve(address,uint256)", + "arguments": [ + "0x000000000022D473030F116dDEE9F6B43aC78BA3", + "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4200000000000000000000000000000000000006", + "gas": "0x10868", + "value": "0x0", + "input": "0x095ea7b3000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "nonce": "0x59", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf2663b51fbda65555e7722d981cfc0ec9c024c3a77cc59f177e4505322df0688", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "function": "approve(address,address,uint160,uint48)", + "arguments": [ + "0x6Ef4A3f654F2AfcEa8A8704D61Be5271536c13Fa", + "0x4B2C77d209D3405F41a037Ec6c77F7F5b8e2ca80", + "1461501637330902918203684832716283019655932542975", + "281474976710655" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "gas": "0x1112d", + "value": "0x0", + "input": "0x87517c450000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000004b2c77d209d3405f41a037ec6c77f7f5b8e2ca80000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "nonce": "0x5a", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x296ccf7e020d43568fc2fb53c4419157d22998a36133a9a753cf87c2460992e7", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "function": "approve(address,address,uint160,uint48)", + "arguments": [ + "0x4200000000000000000000000000000000000006", + "0x4B2C77d209D3405F41a037Ec6c77F7F5b8e2ca80", + "1461501637330902918203684832716283019655932542975", + "281474976710655" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "gas": "0x10ff1", + "value": "0x0", + "input": "0x87517c4500000000000000000000000042000000000000000000000000000000000000060000000000000000000000004b2c77d209d3405f41a037ec6c77f7f5b8e2ca80000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "nonce": "0x5b", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x4b2c77d209d3405f41a037ec6c77f7f5b8e2ca80", + "function": "modifyLiquidities(bytes,uint256)", + "arguments": [ + "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002020d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb1874fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb475400000000000000000000000000000000000000000000000000000000a20413a50000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa", + "1774165358" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4b2c77d209d3405f41a037ec6c77f7f5b8e2ca80", + "gas": "0x88a36", + "value": "0x0", + "input": "0xdd46508f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000069bf9d6e0000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002020d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb1874fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb475400000000000000000000000000000000000000000000000000000000a20413a50000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa", + "nonce": "0x5c", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x2099fb", + "logs": [ + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf" + ], + "data": "0x00000000000000000000000000000000000000000000021e19e0c9bab2400000", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0xf38c61346cf2932c8201f76e6e827456a30678b1907cb8e1876f975816eaaead", + "transactionIndex": "0x6", + "logIndex": "0x41", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000200000000020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000010000000000000010000000000000000000000000000000000000000000000000000000000000800000200000000002000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf38c61346cf2932c8201f76e6e827456a30678b1907cb8e1876f975816eaaead", + "transactionIndex": "0x6", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xd5ee2", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x3c933", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": null, + "contractAddress": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x6f92" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2163e5", + "logs": [ + { + "address": "0x05e73354cfdd6745c338b50bcfdfa3aa6fa03408", + "topics": [ + "0xdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438", + "0xcb801750c03be6e5db09148460fa58d19e87526b1d371223ea668656ac0d1786", + "0x0000000000000000000000004200000000000000000000000000000000000006", + "0x0000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025f668bb15206e96800fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb2fc9", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0xf666818fe1ed33e57c0f01799dce3e52d2d1d05854ebb8061c6186e09eff0735", + "transactionIndex": "0x7", + "logIndex": "0x42", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000100000000000000000000000000000000000000000000100000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000004000008000000000000000000000001000000000000000000200000000000000000000000000100000000000000000000000000000000000080000000000000001004000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002", + "type": "0x2", + "transactionHash": "0xf666818fe1ed33e57c0f01799dce3e52d2d1d05854ebb8061c6186e09eff0735", + "transactionIndex": "0x7", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xc9ea", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x3efc", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x05e73354cfdd6745c338b50bcfdfa3aa6fa03408", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x745" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x221b57", + "logs": [ + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0xf2663b51fbda65555e7722d981cfc0ec9c024c3a77cc59f177e4505322df0688", + "transactionIndex": "0x8", + "logIndex": "0x43", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000800000000000000000200000000000000000000000004000000000000000000000000800000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000010000000020000000000000000000000000000000000000000000000000000800000200000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf2663b51fbda65555e7722d981cfc0ec9c024c3a77cc59f177e4505322df0688", + "transactionIndex": "0x8", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xb772", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x364c", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2287cd", + "logs": [ + { + "address": "0x4200000000000000000000000000000000000006", + "topics": [ + "0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf" + ], + "data": "0x0000000000000000000000000000000000000000000000000011c37937e08000", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x5ba6dc91f6f622ba2e921215ea183c187776915dd6309b0b888975f4f3b6c8a9", + "transactionIndex": "0x9", + "logIndex": "0x44", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000040000040000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001002000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000", + "type": "0x2", + "transactionHash": "0x5ba6dc91f6f622ba2e921215ea183c187776915dd6309b0b888975f4f3b6c8a9", + "transactionIndex": "0x9", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0x6c76", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x364c", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4200000000000000000000000000000000000006", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x233c98", + "logs": [ + { + "address": "0x4200000000000000000000000000000000000006", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x1babe8d76f9d68b7f2d34e5b9f7a20470dbf97a4b6cd252bb4cf44d466d9453b", + "transactionIndex": "0xa", + "logIndex": "0x45", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000040000040000000000000000000000000000100000000000000000800000000000000000200000000000000000000000004000000000000000000000000800000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000020000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1babe8d76f9d68b7f2d34e5b9f7a20470dbf97a4b6cd252bb4cf44d466d9453b", + "transactionIndex": "0xa", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xb4cb", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x364c", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4200000000000000000000000000000000000006", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x23f762", + "logs": [ + { + "address": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "topics": [ + "0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x0000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa", + "0x0000000000000000000000004b2c77d209d3405f41a037ec6c77f7f5b8e2ca80" + ], + "data": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x94b4c381933e1fad01cfecb2185eaf60cec731cc154e46467a885b6874be1eae", + "transactionIndex": "0xb", + "logIndex": "0x46", + "removed": false + } + ], + "logsBloom": "0x00010000000000010000000000100000000000000000000000000000040000000000000000000000000000000000000000000000000000000008000010080000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000880080000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000402", + "type": "0x2", + "transactionHash": "0x94b4c381933e1fad01cfecb2185eaf60cec731cc154e46467a885b6874be1eae", + "transactionIndex": "0xb", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xbaca", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x3cd0", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x702" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x24b154", + "logs": [ + { + "address": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "topics": [ + "0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x0000000000000000000000004200000000000000000000000000000000000006", + "0x0000000000000000000000004b2c77d209d3405f41a037ec6c77f7f5b8e2ca80" + ], + "data": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000ffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x296ccf7e020d43568fc2fb53c4419157d22998a36133a9a753cf87c2460992e7", + "transactionIndex": "0xc", + "logIndex": "0x47", + "removed": false + } + ], + "logsBloom": "0x00010000000000010000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000028000010080000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000010000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000880000000000000000000004000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000400", + "type": "0x2", + "transactionHash": "0x296ccf7e020d43568fc2fb53c4419157d22998a36133a9a753cf87c2460992e7", + "transactionIndex": "0xc", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0xb9f2", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x3878", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x000000000022d473030f116ddee9f6b43ac78ba3", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0x68a" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2a882d", + "logs": [ + { + "address": "0x4b2c77d209d3405f41a037ec6c77f7f5b8e2ca80", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x0000000000000000000000000000000000000000000000000000000000005170" + ], + "data": "0x", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionIndex": "0xd", + "logIndex": "0x48", + "removed": false + }, + { + "address": "0x05e73354cfdd6745c338b50bcfdfa3aa6fa03408", + "topics": [ + "0xf208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec", + "0xcb801750c03be6e5db09148460fa58d19e87526b1d371223ea668656ac0d1786", + "0x0000000000000000000000004b2c77d209d3405f41a037ec6c77f7f5b8e2ca80" + ], + "data": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb1874fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb475400000000000000000000000000000000000000000000000000000000a20413a50000000000000000000000000000000000000000000000000000000000005170", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionIndex": "0xd", + "logIndex": "0x49", + "removed": false + }, + { + "address": "0x4200000000000000000000000000000000000006", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x00000000000000000000000005e73354cfdd6745c338b50bcfdfa3aa6fa03408" + ], + "data": "0x0000000000000000000000000000000000000000000000000011c37937c7d541", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionIndex": "0xd", + "logIndex": "0x4a", + "removed": false + }, + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "0x00000000000000000000000005e73354cfdd6745c338b50bcfdfa3aa6fa03408" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000064", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "blockTimestamp": "0x69bf9d04", + "transactionHash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionIndex": "0xd", + "logIndex": "0x4b", + "removed": false + } + ], + "logsBloom": "0x00000000000000010000000000000000000000000000000000040000040000000100000100000000000000100000000000000000000000000008000090000800000000000010000000000008000000000000000000100000000000008000000200000000020000100000000000000800000000000000000000000010000000000000000005000000000000000000000000000000012000000000000010000000000004000000000000000100000000000000000000000000000000800000200000000002001000000000800000000000000000000000000000000000000020000000000000400000000000000800000004000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x440ad5c6affc15bd09dec661599a14db2a0602ceb62aec47041a787612c41070", + "transactionIndex": "0xd", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f12", + "gasUsed": "0x5d6d9", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x80af", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": "0x4b2c77d209d3405f41a037ec6c77f7f5b8e2ca80", + "contractAddress": null, + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x185", + "l1GasPrice": "0x47", + "l1GasUsed": "0xeda" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1774165251799, + "chain": 84532, + "commit": "5c6b019" +} \ No newline at end of file diff --git a/broadcast/DeployZapPlotLink.s.sol/84532/run-1774165266841.json b/broadcast/DeployZapPlotLink.s.sol/84532/run-1774165266841.json new file mode 100644 index 0000000..ff0398f --- /dev/null +++ b/broadcast/DeployZapPlotLink.s.sol/84532/run-1774165266841.json @@ -0,0 +1,77 @@ +{ + "transactions": [ + { + "hash": "0xad52da826aab9618f5a06820a44e5f58b4b2475e9407b625e4de0a9ba7851c4a", + "transactionType": "CREATE", + "contractName": "ZapPlotLink", + "contractAddress": "0x38b010f2eff786d44048e290325d00dc642aa0d7", + "function": null, + "arguments": [ + "0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408", + "0x5dfA75b0185efBaEF286E80B847ce84ff8a62C2d", + "0x4200000000000000000000000000000000000006", + "0x6Ef4A3f654F2AfcEa8A8704D61Be5271536c13Fa", + "(0x4200000000000000000000000000000000000006, 0x6Ef4A3f654F2AfcEa8A8704D61Be5271536c13Fa, 3000, 60, 0x0000000000000000000000000000000000000000)" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "gas": "0x3fe4fc", + "value": "0x0", + "input": "0x60e060405234801561000f575f5ffd5b50604051613f11380380613f118339818101604052810190610031919061066c565b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061009657505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b806100cc57505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061010257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610139576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548162ffffff021916908362ffffff16021790555060608201518160010160176101000a81548162ffffff021916908360020b62ffffff1602179055506080820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016103d292919061070b565b6020604051808303815f875af11580156103ee573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104129190610767565b505050505050610792565b5f604051905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104538261042a565b9050919050565b61046381610449565b811461046d575f5ffd5b50565b5f8151905061047e8161045a565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6104ce82610488565b810181811067ffffffffffffffff821117156104ed576104ec610498565b5b80604052505050565b5f6104ff61041d565b905061050b82826104c5565b919050565b61051981610449565b8114610523575f5ffd5b50565b5f8151905061053481610510565b92915050565b5f62ffffff82169050919050565b6105518161053a565b811461055b575f5ffd5b50565b5f8151905061056c81610548565b92915050565b5f8160020b9050919050565b61058781610572565b8114610591575f5ffd5b50565b5f815190506105a28161057e565b92915050565b5f6105b282610449565b9050919050565b6105c2816105a8565b81146105cc575f5ffd5b50565b5f815190506105dd816105b9565b92915050565b5f60a082840312156105f8576105f7610484565b5b61060260a06104f6565b90505f61061184828501610526565b5f83015250602061062484828501610526565b60208301525060406106388482850161055e565b604083015250606061064c84828501610594565b6060830152506080610660848285016105cf565b60808301525092915050565b5f5f5f5f5f610120868803121561068657610685610426565b5b5f61069388828901610470565b95505060206106a488828901610470565b94505060406106b588828901610470565b93505060606106c688828901610470565b92505060806106d7888289016105e3565b9150509295509295909350565b6106ed81610449565b82525050565b5f819050919050565b610705816106f3565b82525050565b5f60408201905061071e5f8301856106e4565b61072b60208301846106fc565b9392505050565b5f8115159050919050565b61074681610732565b8114610750575f5ffd5b50565b5f815190506107618161073d565b92915050565b5f6020828403121561077c5761077b610426565b5b5f61078984828501610753565b91505092915050565b60805160a05160c0516136a661086b5f395f818161054401528181610726015281816109bf01528181610a9701528181611a350152611aa901525f81816105cd015281816108ee01528181610abb0152818161140801528181611632015281816116e701528181611fa4015281816120a1015261216701525f8181610c5d01528181610d3a01528181610e7801528181610f0101528181610fe10152818161106a01528181611106015281816111bf0152818161160c01528181611ae501528181611bc401528181611da50152611e8401526136a65ff3fe60806040526004361061010c575f3560e01c80638da5cb5b11610094578063dc4c90d311610063578063dc4c90d314610367578063f0cb916b14610391578063f0ec98d7146103cd578063f2fde38b146103f5578063fbb3e2841461041d57610113565b80638da5cb5b146102b157806391dd7346146102db578063cb75882414610317578063cea9d26f1461033f57610113565b80631fba7603116100db5780631fba7603146101c757806324671f40146102035780633fc8cef31461023357806364c9ec6f1461025d578063683e76e01461028757610113565b806304824e70146101175780630d4d15131461013f578063161a226e1461016f578063182148ef1461019957610113565b3661011357005b5f5ffd5b348015610122575f5ffd5b5061013d6004803603810190610138919061230a565b610447565b005b610159600480360381019061015491906123a3565b610541565b6040516101669190612402565b60405180910390f35b34801561017a575f5ffd5b50610183610828565b604051610190919061242a565b60405180910390f35b3480156101a4575f5ffd5b506101ad61084d565b6040516101be9594939291906124f6565b60405180910390f35b3480156101d2575f5ffd5b506101ed60048036038101906101e89190612547565b6108e9565b6040516101fa9190612402565b60405180910390f35b61021d600480360381019061021891906123a3565b6109bc565b60405161022a9190612402565b60405180910390f35b34801561023e575f5ffd5b50610247610a95565b604051610254919061242a565b60405180910390f35b348015610268575f5ffd5b50610271610ab9565b60405161027e91906125a5565b60405180910390f35b348015610292575f5ffd5b5061029b610add565b6040516102a89190612660565b60405180910390f35b3480156102bc575f5ffd5b506102c5610c35565b6040516102d2919061242a565b60405180910390f35b3480156102e6575f5ffd5b5061030160048036038101906102fc91906126da565b610c59565b60405161030e9190612795565b60405180910390f35b348015610322575f5ffd5b5061033d600480360381019061033891906127b5565b61129b565b005b34801561034a575f5ffd5b50610365600480360381019061036091906127e0565b611504565b005b348015610372575f5ffd5b5061037b61160a565b6040516103889190612850565b60405180910390f35b34801561039c575f5ffd5b506103b760048036038101906103b29190612547565b61162e565b6040516103c49190612402565b60405180910390f35b3480156103d8575f5ffd5b506103f360048036038101906103ee919061288b565b6117c4565b005b348015610400575f5ffd5b5061041b600480360381019061041691906127b5565b61185e565b005b348015610428575f5ffd5b50610431611a09565b60405161043e919061242a565b60405180910390f35b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104cc576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff16476040516104f1906128e3565b5f6040518083038185875af1925050503d805f811461052b576040519150601f19603f3d011682016040523d82523d5f602084013e610530565b606091505b505090508061053d575f5ffd5b5050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156105a8575f5ffd5b505af11580156105ba573d5f5f3e3d5ffd5b50505050505f6105c934611a31565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e868684876040518563ffffffff1660e01b815260040161062a94939291906128f7565b6020604051808303815f875af1158015610646573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066a919061294e565b91505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106c7919061242a565b602060405180830381865afa1580156106e2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610706919061294e565b90505f81111561081f575f61071a82611cef565b90505f81111561081d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040161077d9190612402565b5f604051808303815f87803b158015610794575f5ffd5b505af11580156107a6573d5f5f3e3d5ffd5b505050505f3373ffffffffffffffffffffffffffffffffffffffff16826040516107cf906128e3565b5f6040518083038185875af1925050503d805f8114610809576040519150601f19603f3d011682016040523d82523d5f602084013e61080e565b606091505b505090508061081b575f5ffd5b505b505b50509392505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900462ffffff16908060010160179054906101000a900460020b90806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b5f5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166376a9864b86866040518363ffffffff1660e01b8152600401610947929190612979565b6040805180830381865afa158015610961573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098591906129a0565b915091505f81836109969190612a0b565b905060646065826109a79190612a3e565b6109b19190612aac565b935050505092915050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610a23575f5ffd5b505af1158015610a35573d5f5f3e3d5ffd5b50505050505f610a4434611a31565b9050610a51858285611f76565b915083821015610a8d576040517fbb2875c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610ae561222b565b60026040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681526020016001820160179054906101000a900460020b60020b60020b8152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517ff655705d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610cf09190612c21565b90505f8160200151610d2257600173fffd8963efd1fc6a506488495d951d5263988d26610d1d9190612c4c565b610d35565b60016401000276a3610d349190612c93565b5b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f3cd914c60026040518060600160405280876020015115158152602001876040015181526020018673ffffffffffffffffffffffffffffffffffffffff168152506040518363ffffffff1660e01b8152600401610dce929190612ed7565b6020604051808303815f875af1158015610dea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0e9190612f3d565b90505f610e1a82612213565b90505f610e268361221f565b90505f82600f0b1215610f90575f60025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f000000000000000000000000000000000000000000000000000000000000000085610ea190612f74565b6040518363ffffffff1660e01b8152600401610ebe929190613005565b6020604051808303815f875af1158015610eda573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efe9190613040565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8d919061294e565b50505b5f81600f0b12156110f9575f60026001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f00000000000000000000000000000000000000000000000000000000000000008461100a90612f74565b6040518363ffffffff1660e01b8152600401611027929190613005565b6020604051808303815f875af1158015611043573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110679190613040565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f6919061294e565b50505b5f82600f0b13156111b2577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630b0d9c0960025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630856040518463ffffffff1660e01b81526004016111849392919061306b565b5f604051808303815f87803b15801561119b575f5ffd5b505af11580156111ad573d5f5f3e3d5ffd5b505050505b5f81600f0b131561126c577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630b0d9c0960026001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630846040518463ffffffff1660e01b815260040161123e9392919061306b565b5f604051808303815f87803b158015611255575f5ffd5b505af1158015611267573d5f5f3e3d5ffd5b505050505b818160405160200161127f9291906130af565b6040516020818303038152906040529550505050505092915050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611320576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611385576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611465929190612979565b6020604051808303815f875af1158015611481573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114a59190613040565b508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5a1a9bb5f826487cf43e61548d79ffa19cc00e1a554bd9962825f51fa9c767d160405160405180910390a35050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611589576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016115c4929190612979565b6020604051808303815f875af11580156115e0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116049190613040565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c9cb204b85670de0b6b3a76400006040518363ffffffff1660e01b815260040161169392919061310f565b6040805180830381865afa1580156116ad573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d191906129a0565b5090505f81036116e4575f9150506117be565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166376a9864b86670de0b6b3a76400006040518363ffffffff1660e01b815260040161174892919061310f565b6040805180830381865afa158015611762573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178691906129a0565b5090505f810361179a575f925050506117be565b80670de0b6b3a7640000856117af9190612a3e565b6117b99190612aac565b925050505b92915050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611849576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600281816118589190613479565b90505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118e3576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611948576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000856040518363ffffffff1660e01b8152600401611b22929190612979565b6020604051808303815f875af1158015611b3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b629190613040565b505f60405180606001604052803073ffffffffffffffffffffffffffffffffffffffff168152602001831515815260200185611b9d90613487565b815250604051602001611bb0919061351c565b60405160208183030381529060405290505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c89491836040518263ffffffff1660e01b8152600401611c1b9190612795565b5f604051808303815f875af1158015611c36573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611c5e91906135d7565b90505f5f82806020019051810190611c769190613632565b80925081935050508415611c9a575f8113611c91575f611c93565b805b9550611cac565b5f8213611ca7575f611ca9565b815b95505b5f8603611ce5576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050919050565b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000856040518363ffffffff1660e01b8152600401611de2929190612979565b6020604051808303815f875af1158015611dfe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e229190613040565b505f60405180606001604052803073ffffffffffffffffffffffffffffffffffffffff168152602001831515815260200185611e5d90613487565b815250604051602001611e70919061351c565b60405160208183030381529060405290505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c89491836040518263ffffffff1660e01b8152600401611edb9190612795565b5f604051808303815f875af1158015611ef6573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611f1e91906135d7565b90505f5f82806020019051810190611f369190613632565b80925081935050508415611f5a575f8113611f51575f611f53565b805b9550611f6c565b5f8213611f67575f611f69565b815b95505b5050505050919050565b5f5f5f90505f670de0b6b3a764000085611f909190612a3e565b90505f5f5f90505b601481101561206d575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166376a9864b8a866040518363ffffffff1660e01b8152600401611ffd929190612979565b6040805180830381865afa158015612017573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203b91906129a0565b509050878111612059576002846120529190612a3e565b935061205f565b5061206d565b508080600101915050611f98565b505f5f90505b602881101561215c576002838561208a9190612a0b565b6120949190612aac565b91508382031561215c575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166376a9864b8a856040518363ffffffff1660e01b81526004016120fa929190612979565b6040805180830381865afa158015612114573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213891906129a0565b50905087811161214a5782945061214e565b8293505b508080600101915050612073565b505f831115612209577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e888589896040518563ffffffff1660e01b81526004016121c494939291906128f7565b6020604051808303815f875af11580156121e0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612204919061294e565b508293505b5050509392505050565b5f8160801d9050919050565b5f81600f0b9050919050565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122d9826122b0565b9050919050565b6122e9816122cf565b81146122f3575f5ffd5b50565b5f81359050612304816122e0565b92915050565b5f6020828403121561231f5761231e6122a8565b5b5f61232c848285016122f6565b91505092915050565b5f61233f826122b0565b9050919050565b61234f81612335565b8114612359575f5ffd5b50565b5f8135905061236a81612346565b92915050565b5f819050919050565b61238281612370565b811461238c575f5ffd5b50565b5f8135905061239d81612379565b92915050565b5f5f5f606084860312156123ba576123b96122a8565b5b5f6123c78682870161235c565b93505060206123d88682870161238f565b92505060406123e98682870161235c565b9150509250925092565b6123fc81612370565b82525050565b5f6020820190506124155f8301846123f3565b92915050565b61242481612335565b82525050565b5f60208201905061243d5f83018461241b565b92915050565b5f819050919050565b5f61246661246161245c846122b0565b612443565b6122b0565b9050919050565b5f6124778261244c565b9050919050565b5f6124888261246d565b9050919050565b6124988161247e565b82525050565b5f62ffffff82169050919050565b6124b58161249e565b82525050565b5f8160020b9050919050565b6124d0816124bb565b82525050565b5f6124e08261246d565b9050919050565b6124f0816124d6565b82525050565b5f60a0820190506125095f83018861248f565b612516602083018761248f565b61252360408301866124ac565b61253060608301856124c7565b61253d60808301846124e7565b9695505050505050565b5f5f6040838503121561255d5761255c6122a8565b5b5f61256a8582860161235c565b925050602061257b8582860161238f565b9150509250929050565b5f61258f8261246d565b9050919050565b61259f81612585565b82525050565b5f6020820190506125b85f830184612596565b92915050565b6125c78161247e565b82525050565b6125d68161249e565b82525050565b6125e5816124bb565b82525050565b6125f4816124d6565b82525050565b60a082015f82015161260e5f8501826125be565b50602082015161262160208501826125be565b50604082015161263460408501826125cd565b50606082015161264760608501826125dc565b50608082015161265a60808501826125eb565b50505050565b5f60a0820190506126735f8301846125fa565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261269a57612699612679565b5b8235905067ffffffffffffffff8111156126b7576126b661267d565b5b6020830191508360018202830111156126d3576126d2612681565b5b9250929050565b5f5f602083850312156126f0576126ef6122a8565b5b5f83013567ffffffffffffffff81111561270d5761270c6122ac565b5b61271985828601612685565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61276782612725565b612771818561272f565b935061278181856020860161273f565b61278a8161274d565b840191505092915050565b5f6020820190508181035f8301526127ad818461275d565b905092915050565b5f602082840312156127ca576127c96122a8565b5b5f6127d78482850161235c565b91505092915050565b5f5f5f606084860312156127f7576127f66122a8565b5b5f6128048682870161235c565b93505060206128158682870161235c565b92505060406128268682870161238f565b9150509250925092565b5f61283a8261246d565b9050919050565b61284a81612830565b82525050565b5f6020820190506128635f830184612841565b92915050565b5f5ffd5b5f60a0828403121561288257612881612869565b5b81905092915050565b5f60a082840312156128a05761289f6122a8565b5b5f6128ad8482850161286d565b91505092915050565b5f81905092915050565b50565b5f6128ce5f836128b6565b91506128d9826128c0565b5f82019050919050565b5f6128ed826128c3565b9150819050919050565b5f60808201905061290a5f83018761241b565b61291760208301866123f3565b61292460408301856123f3565b612931606083018461241b565b95945050505050565b5f8151905061294881612379565b92915050565b5f60208284031215612963576129626122a8565b5b5f6129708482850161293a565b91505092915050565b5f60408201905061298c5f83018561241b565b61299960208301846123f3565b9392505050565b5f5f604083850312156129b6576129b56122a8565b5b5f6129c38582860161293a565b92505060206129d48582860161293a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612a1582612370565b9150612a2083612370565b9250828201905080821115612a3857612a376129de565b5b92915050565b5f612a4882612370565b9150612a5383612370565b9250828202612a6181612370565b91508282048414831517612a7857612a776129de565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ab682612370565b9150612ac183612370565b925082612ad157612ad0612a7f565b5b828204905092915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b168261274d565b810181811067ffffffffffffffff82111715612b3557612b34612ae0565b5b80604052505050565b5f612b4761229f565b9050612b538282612b0d565b919050565b5f8115159050919050565b612b6c81612b58565b8114612b76575f5ffd5b50565b5f81359050612b8781612b63565b92915050565b5f819050919050565b612b9f81612b8d565b8114612ba9575f5ffd5b50565b5f81359050612bba81612b96565b92915050565b5f60608284031215612bd557612bd4612adc565b5b612bdf6060612b3e565b90505f612bee8482850161235c565b5f830152506020612c0184828501612b79565b6020830152506040612c1584828501612bac565b60408301525092915050565b5f60608284031215612c3657612c356122a8565b5b5f612c4384828501612bc0565b91505092915050565b5f612c56826122b0565b9150612c61836122b0565b9250828203905073ffffffffffffffffffffffffffffffffffffffff811115612c8d57612c8c6129de565b5b92915050565b5f612c9d826122b0565b9150612ca8836122b0565b9250828201905073ffffffffffffffffffffffffffffffffffffffff811115612cd457612cd36129de565b5b92915050565b5f815f1c9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d16612d1183612cda565b612ce5565b9050919050565b5f8160a01c9050919050565b5f62ffffff82169050919050565b5f612d49612d4483612d1d565b612d29565b9050919050565b5f8160b81c9050919050565b5f8160020b9050919050565b5f612d7a612d7583612d50565b612d5c565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612db2612dad83612cda565b612d81565b9050919050565b60a082015f5f8301549050612dcd81612d04565b612dd95f8601826125be565b5060018301549050612dea81612d04565b612df760208601826125be565b50612e0181612d37565b612e0e60408601826125cd565b50612e1881612d68565b612e2560608601826125dc565b5060028301549050612e3681612da0565b612e4360808601826125eb565b5050505050565b612e5381612b58565b82525050565b612e6281612b8d565b82525050565b612e71816122b0565b82525050565b606082015f820151612e8b5f850182612e4a565b506020820151612e9e6020850182612e59565b506040820151612eb16040850182612e68565b50505050565b5f612ec25f8361272f565b9150612ecd826128c0565b5f82019050919050565b5f61012082019050612eeb5f830185612db9565b612ef860a0830184612e77565b818103610100830152612f0a81612eb7565b90509392505050565b612f1c81612b8d565b8114612f26575f5ffd5b50565b5f81519050612f3781612f13565b92915050565b5f60208284031215612f5257612f516122a8565b5b5f612f5f84828501612f29565b91505092915050565b5f81600f0b9050919050565b5f612f7e82612f68565b91507fffffffffffffffffffffffffffffffff800000000000000000000000000000008203612fb057612faf6129de565b5b815f039050919050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f612fef612fea612fe584612fba565b612443565b612370565b9050919050565b612fff81612fd5565b82525050565b5f6040820190506130185f83018561241b565b6130256020830184612ff6565b9392505050565b5f8151905061303a81612b63565b92915050565b5f60208284031215613055576130546122a8565b5b5f6130628482850161302c565b91505092915050565b5f60608201905061307e5f83018661248f565b61308b602083018561241b565b6130986040830184612ff6565b949350505050565b6130a981612f68565b82525050565b5f6040820190506130c25f8301856130a0565b6130cf60208301846130a0565b9392505050565b5f819050919050565b5f6130f96130f46130ef846130d6565b612443565b612370565b9050919050565b613109816130df565b82525050565b5f6040820190506131225f83018561241b565b61312f6020830184613100565b9392505050565b61313f81612335565b8114613149575f5ffd5b50565b5f813561315881613136565b80915050919050565b5f815f1b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff61318b84613161565b9350801983169250808416831791505092915050565b5f819050919050565b6131b38261247e565b6131c66131bf826131a1565b835461316c565b8255505050565b6131d68161249e565b81146131e0575f5ffd5b50565b5f81356131ef816131cd565b80915050919050565b5f8160a01b9050919050565b5f76ffffff0000000000000000000000000000000000000000613226846131f8565b9350801983169250808416831791505092915050565b5f61325661325161324c8461249e565b612443565b61249e565b9050919050565b5f819050919050565b61326f8261323c565b61328261327b8261325d565b8354613204565b8255505050565b613292816124bb565b811461329c575f5ffd5b50565b5f81356132ab81613289565b80915050919050565b5f8160b81b9050919050565b5f79ffffff00000000000000000000000000000000000000000000006132e5846132b4565b9350801983169250808416831791505092915050565b5f61331561331061330b846124bb565b612443565b6124bb565b9050919050565b5f819050919050565b61332e826132fb565b61334161333a8261331c565b83546132c0565b8255505050565b5f61335282612335565b9050919050565b61336281613348565b811461336c575f5ffd5b50565b5f813561337b81613359565b80915050919050565b5f61338e8261244c565b9050919050565b5f61339f82613384565b9050919050565b5f819050919050565b6133b882613395565b6133cb6133c4826133a6565b835461316c565b8255505050565b5f81015f8301806133e28161314c565b90506133ee81846131aa565b5050506001810160208301806134038161314c565b905061340f81846131aa565b505050600181016040830180613424816131e3565b90506134308184613266565b5050506001810160608301806134458161329f565b90506134518184613325565b5050506002810160808301806134668161336f565b905061347281846133af565b5050505050565b61348382826133d2565b5050565b5f61349182612b8d565b91507f800000000000000000000000000000000000000000000000000000000000000082036134c3576134c26129de565b5b815f039050919050565b6134d681612335565b82525050565b606082015f8201516134f05f8501826134cd565b5060208201516135036020850182612e4a565b5060408201516135166040850182612e59565b50505050565b5f60608201905061352f5f8301846134dc565b92915050565b5f5ffd5b5f67ffffffffffffffff82111561355357613552612ae0565b5b61355c8261274d565b9050602081019050919050565b5f61357b61357684613539565b612b3e565b90508281526020810184848401111561359757613596613535565b5b6135a284828561273f565b509392505050565b5f82601f8301126135be576135bd612679565b5b81516135ce848260208601613569565b91505092915050565b5f602082840312156135ec576135eb6122a8565b5b5f82015167ffffffffffffffff811115613609576136086122ac565b5b613615848285016135aa565b91505092915050565b5f8151905061362c81612b96565b92915050565b5f5f60408385031215613648576136476122a8565b5b5f6136558582860161361e565b92505060206136668582860161361e565b915050925092905056fea2646970667358221220631729cba0043f309ea95468491881d63d46925bf43b8105a04e8384e1b6ca5b64736f6c634300081c003300000000000000000000000005e73354cfdd6745c338b50bcfdfa3aa6fa034080000000000000000000000005dfa75b0185efbaef286e80b847ce84ff8a62c2d00000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa00000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x5d", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x4a4592", + "logs": [ + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x00000000000000000000000038b010f2eff786d44048e290325d00dc642aa0d7", + "0x0000000000000000000000005dfa75b0185efbaef286e80b847ce84ff8a62c2d" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f1a", + "blockTimestamp": "0x69bf9d14", + "transactionHash": "0xad52da826aab9618f5a06820a44e5f58b4b2475e9407b625e4de0a9ba7851c4a", + "transactionIndex": "0x10", + "logIndex": "0x12", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000004000000000000000000000000010008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000010000000020000000000000000000000000000000000000000000000000000000000200000000040000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000020000000000", + "type": "0x2", + "transactionHash": "0xad52da826aab9618f5a06820a44e5f58b4b2475e9407b625e4de0a9ba7851c4a", + "transactionIndex": "0x10", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561f1a", + "gasUsed": "0x31264c", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0xd5e55", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": null, + "contractAddress": "0x38b010f2eff786d44048e290325d00dc642aa0d7", + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x4", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x181", + "l1GasPrice": "0x45", + "l1GasUsed": "0x189f1" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1774165266841, + "chain": 84532, + "commit": "5c6b019" +} \ No newline at end of file diff --git a/broadcast/DeployZapPlotLink.s.sol/84532/run-1774165648503.json b/broadcast/DeployZapPlotLink.s.sol/84532/run-1774165648503.json new file mode 100644 index 0000000..179f80e --- /dev/null +++ b/broadcast/DeployZapPlotLink.s.sol/84532/run-1774165648503.json @@ -0,0 +1,94 @@ +{ + "transactions": [ + { + "hash": "0x5f37af91dc7742c2a3ed1a7fde7538671529b39dc8788b5d74745acb2d9247f6", + "transactionType": "CREATE", + "contractName": "ZapPlotLink", + "contractAddress": "0xc7c47d820d2d5b09797be2f438cf329ad7315682", + "function": null, + "arguments": [ + "0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408", + "0x5dfA75b0185efBaEF286E80B847ce84ff8a62C2d", + "0x20fBC8a650d75e4C2Dab8b7e85C27135f0D64e89", + "0x4200000000000000000000000000000000000006", + "0x6Ef4A3f654F2AfcEa8A8704D61Be5271536c13Fa", + "(0x4200000000000000000000000000000000000006, 0x6Ef4A3f654F2AfcEa8A8704D61Be5271536c13Fa, 3000, 60, 0x0000000000000000000000000000000000000000)" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "gas": "0x4077a4", + "value": "0x0", + "input": "0x6101006040526001600555348015610015575f5ffd5b50604051613fcb380380613fcb83398181016040528101906100379190610779565b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061009c57505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b806100d257505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8061010857505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061013e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610175576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508373ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548162ffffff021916908362ffffff16021790555060608201518160010160176101000a81548162ffffff021916908360020b62ffffff1602179055506080820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161044292919061082a565b6020604051808303815f875af115801561045e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104829190610886565b508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016104de92919061082a565b6020604051808303815f875af11580156104fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051e9190610886565b505050505050506108b1565b5f604051905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61056082610537565b9050919050565b61057081610556565b811461057a575f5ffd5b50565b5f8151905061058b81610567565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6105db82610595565b810181811067ffffffffffffffff821117156105fa576105f96105a5565b5b80604052505050565b5f61060c61052a565b905061061882826105d2565b919050565b61062681610556565b8114610630575f5ffd5b50565b5f815190506106418161061d565b92915050565b5f62ffffff82169050919050565b61065e81610647565b8114610668575f5ffd5b50565b5f8151905061067981610655565b92915050565b5f8160020b9050919050565b6106948161067f565b811461069e575f5ffd5b50565b5f815190506106af8161068b565b92915050565b5f6106bf82610556565b9050919050565b6106cf816106b5565b81146106d9575f5ffd5b50565b5f815190506106ea816106c6565b92915050565b5f60a0828403121561070557610704610591565b5b61070f60a0610603565b90505f61071e84828501610633565b5f83015250602061073184828501610633565b60208301525060406107458482850161066b565b6040830152506060610759848285016106a1565b606083015250608061076d848285016106dc565b60808301525092915050565b5f5f5f5f5f5f610140878903121561079457610793610533565b5b5f6107a189828a0161057d565b96505060206107b289828a0161057d565b95505060406107c389828a0161057d565b94505060606107d489828a0161057d565b93505060806107e589828a0161057d565b92505060a06107f689828a016106f0565b9150509295509295509295565b61080c81610556565b82525050565b5f819050919050565b61082481610812565b82525050565b5f60408201905061083d5f830185610803565b61084a602083018461081b565b9392505050565b5f8115159050919050565b61086581610851565b811461086f575f5ffd5b50565b5f815190506108808161085c565b92915050565b5f6020828403121561089b5761089a610533565b5b5f6108a884828501610872565b91505092915050565b60805160a05160c05160e0516136386109935f395f818161011e0152818161063801528181610880015281816109f401528181611c920152611f0b01525f81816105cf0152818161090901528181610b950152818161166301526117fb01525f81816106c101528181610a18015281816113e9015281816115c7015261173f01525f8181610c5f01528181610d3b01528181610e3501528181610f1d01528181610fa6015281816110410152818161112b015281816111b40152818161124f01528181611308015281816119ff01528181611d4901526120db01526136385ff3fe608060405260043610610117575f3560e01c80637f3aa4551161009f578063cea9d26f11610063578063cea9d26f14610407578063dc4c90d31461042f578063f0ec98d714610459578063f2fde38b14610481578063fbb3e284146104a957610175565b80637f3aa455146103015780638da5cb5b1461033d57806391dd734614610367578063ac4b8500146103a3578063cb758824146103df57610175565b8063182148ef116100e6578063182148ef1461022557806324671f40146102535780633fc8cef31461028357806364c9ec6f146102ad578063683e76e0146102d757610175565b806304824e701461017957806307da6144146101a15780630d4d1513146101cb578063161a226e146101fb57610175565b36610175577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610173575f5ffd5b005b5f5ffd5b348015610184575f5ffd5b5061019f600480360381019061019a9190612289565b6104d3565b005b3480156101ac575f5ffd5b506101b56105cd565b6040516101c2919061230f565b60405180910390f35b6101e560048036038101906101e09190612396565b6105f1565b6040516101f291906123f5565b60405180910390f35b348015610206575f5ffd5b5061020f610778565b60405161021c919061241d565b60405180910390f35b348015610230575f5ffd5b5061023961079d565b60405161024a9594939291906124ae565b60405180910390f35b61026d60048036038101906102689190612396565b610839565b60405161027a91906123f5565b60405180910390f35b34801561028e575f5ffd5b506102976109f2565b6040516102a4919061241d565b60405180910390f35b3480156102b8575f5ffd5b506102c1610a16565b6040516102ce919061251f565b60405180910390f35b3480156102e2575f5ffd5b506102eb610a3a565b6040516102f891906125da565b60405180910390f35b34801561030c575f5ffd5b50610327600480360381019061032291906125f3565b610b92565b60405161033491906123f5565b60405180910390f35b348015610348575f5ffd5b50610351610c37565b60405161035e919061241d565b60405180910390f35b348015610372575f5ffd5b5061038d60048036038101906103889190612692565b610c5b565b60405161039a919061274d565b60405180910390f35b3480156103ae575f5ffd5b506103c960048036038101906103c491906125f3565b6113e4565b6040516103d691906123f5565b60405180910390f35b3480156103ea575f5ffd5b506104056004803603810190610400919061276d565b61149a565b005b348015610412575f5ffd5b5061042d60048036038101906104289190612798565b6118f7565b005b34801561043a575f5ffd5b506104436119fd565b6040516104509190612808565b60405180910390f35b348015610464575f5ffd5b5061047f600480360381019061047a9190612843565b611a21565b005b34801561048c575f5ffd5b506104a760048036038101906104a2919061276d565b611abb565b005b3480156104b4575f5ffd5b506104bd611c66565b6040516104ca919061241d565b60405180910390f35b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610558576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff164760405161057d9061289b565b5f6040518083038185875af1925050503d805f81146105b7576040519150601f19603f3d011682016040523d82523d5f602084013e6105bc565b606091505b50509050806105c9575f5ffd5b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60026005540361062e576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026005819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b15801561069c575f5ffd5b505af11580156106ae573d5f5f3e3d5ffd5b50505050505f6106bd34611c8e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e868684876040518563ffffffff1660e01b815260040161071e94939291906128af565b6020604051808303815f875af115801561073a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075e9190612906565b9150610768611e51565b5060016005819055509392505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900462ffffff16908060010160179054906101000a900460020b90806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b5f600260055403610876576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026005819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156108e4575f5ffd5b505af11580156108f6573d5f5f3e3d5ffd5b50505050505f61090534611c8e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630144c5f386835f876040518563ffffffff1660e01b8152600401610966949392919061296a565b6020604051808303815f875af1158015610982573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a69190612906565b9150838210156109e2576040517fbb2875c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060016005819055509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610a426121aa565b60026040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681526020016001820160179054906101000a900460020b60020b60020b8152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663755493a484846040518363ffffffff1660e01b8152600401610bee9291906129ad565b6040805180830381865afa158015610c08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2c91906129e8565b508091505092915050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ce2576040517ff655705d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610cf29190612b57565b90505f815f0151610d2357600173fffd8963efd1fc6a506488495d951d5263988d26610d1e9190612baf565b610d36565b60016401000276a3610d359190612bf6565b5b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f3cd914c60026040518060600160405280875f015115158152602001876020015181526020018673ffffffffffffffffffffffffffffffffffffffff168152506040518363ffffffff1660e01b8152600401610dce929190612e3a565b6020604051808303815f875af1158015610dea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0e9190612ea0565b90505f610e1a82612007565b90505f610e2683612013565b90505f82600f0b1215611034577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a584119460025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610eaf9190612ecb565b5f604051808303815f87803b158015610ec6575f5ffd5b505af1158015610ed8573d5f5f3e3d5ffd5b5050505060025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f000000000000000000000000000000000000000000000000000000000000000084610f4690612ef0565b6040518363ffffffff1660e01b8152600401610f63929190612f81565b6020604051808303815f875af1158015610f7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa39190612fbc565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af115801561100e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110329190612906565b505b5f81600f0b1215611242577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a584119460026001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016110bc9190612ecb565b5f604051808303815f87803b1580156110d3575f5ffd5b505af11580156110e5573d5f5f3e3d5ffd5b5050505060026001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f00000000000000000000000000000000000000000000000000000000000000008361115490612ef0565b6040518363ffffffff1660e01b8152600401611171929190612f81565b6020604051808303815f875af115801561118d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b19190612fbc565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af115801561121c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112409190612906565b505b5f82600f0b13156112fb577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630b0d9c0960025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630856040518463ffffffff1660e01b81526004016112cd93929190612fe7565b5f604051808303815f87803b1580156112e4575f5ffd5b505af11580156112f6573d5f5f3e3d5ffd5b505050505b5f81600f0b13156113b5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630b0d9c0960026001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630846040518463ffffffff1660e01b815260040161138793929190612fe7565b5f604051808303815f87803b15801561139e575f5ffd5b505af11580156113b0573d5f5f3e3d5ffd5b505050505b81816040516020016113c892919061302b565b6040516020818303038152906040529550505050505092915050565b5f5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166376a9864b86866040518363ffffffff1660e01b81526004016114429291906129ad565b6040805180830381865afa15801561145c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114809190613052565b9150915080826114909190613090565b9250505092915050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461151f576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611584576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000005f6040518363ffffffff1660e01b81526004016116049291906130c3565b6020604051808303815f875af1158015611620573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116449190612fbc565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000005f6040518363ffffffff1660e01b81526004016116a09291906130c3565b6020604051808303815f875af11580156116bc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e09190612fbc565b508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161179c9291906129ad565b6020604051808303815f875af11580156117b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117dc9190612fbc565b508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118589291906129ad565b6020604051808303815f875af1158015611874573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118989190612fbc565b508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5a1a9bb5f826487cf43e61548d79ffa19cc00e1a554bd9962825f51fa9c767d160405160405180910390a35050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461197c576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016119b79291906129ad565b6020604051808303815f875af11580156119d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f79190612fbc565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060028181611ab5919061342d565b90505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b40576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505f6040518060400160405280831515815260200185611d229061343b565b815250604051602001611d3591906134ae565b60405160208183030381529060405290505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c89491836040518263ffffffff1660e01b8152600401611da0919061274d565b5f604051808303815f875af1158015611dbb573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611de39190613569565b90505f5f82806020019051810190611dfb91906135c4565b9150915084611e0a5781611e0c565b805b95505f8603611e47576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050919050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611eac919061241d565b602060405180830381865afa158015611ec7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eeb9190612906565b90505f811115612004575f611eff8261201f565b90505f811115612002577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401611f6291906123f5565b5f604051808303815f87803b158015611f79575f5ffd5b505af1158015611f8b573d5f5f3e3d5ffd5b505050505f3373ffffffffffffffffffffffffffffffffffffffff1682604051611fb49061289b565b5f6040518083038185875af1925050503d805f8114611fee576040519150601f19603f3d011682016040523d82523d5f602084013e611ff3565b606091505b5050905080612000575f5ffd5b505b505b50565b5f8160801d9050919050565b5f81600f0b9050919050565b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505f60405180604001604052808315158152602001856120b49061343b565b8152506040516020016120c791906134ae565b60405160208183030381529060405290505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c89491836040518263ffffffff1660e01b8152600401612132919061274d565b5f604051808303815f875af115801561214d573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906121759190613569565b90505f5f8280602001905181019061218d91906135c4565b915091508461219c578161219e565b805b95505050505050919050565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122588261222f565b9050919050565b6122688161224e565b8114612272575f5ffd5b50565b5f813590506122838161225f565b92915050565b5f6020828403121561229e5761229d612227565b5b5f6122ab84828501612275565b91505092915050565b5f819050919050565b5f6122d76122d26122cd8461222f565b6122b4565b61222f565b9050919050565b5f6122e8826122bd565b9050919050565b5f6122f9826122de565b9050919050565b612309816122ef565b82525050565b5f6020820190506123225f830184612300565b92915050565b5f6123328261222f565b9050919050565b61234281612328565b811461234c575f5ffd5b50565b5f8135905061235d81612339565b92915050565b5f819050919050565b61237581612363565b811461237f575f5ffd5b50565b5f813590506123908161236c565b92915050565b5f5f5f606084860312156123ad576123ac612227565b5b5f6123ba8682870161234f565b93505060206123cb86828701612382565b92505060406123dc8682870161234f565b9150509250925092565b6123ef81612363565b82525050565b5f6020820190506124085f8301846123e6565b92915050565b61241781612328565b82525050565b5f6020820190506124305f83018461240e565b92915050565b5f612440826122de565b9050919050565b61245081612436565b82525050565b5f62ffffff82169050919050565b61246d81612456565b82525050565b5f8160020b9050919050565b61248881612473565b82525050565b5f612498826122de565b9050919050565b6124a88161248e565b82525050565b5f60a0820190506124c15f830188612447565b6124ce6020830187612447565b6124db6040830186612464565b6124e8606083018561247f565b6124f5608083018461249f565b9695505050505050565b5f612509826122de565b9050919050565b612519816124ff565b82525050565b5f6020820190506125325f830184612510565b92915050565b61254181612436565b82525050565b61255081612456565b82525050565b61255f81612473565b82525050565b61256e8161248e565b82525050565b60a082015f8201516125885f850182612538565b50602082015161259b6020850182612538565b5060408201516125ae6040850182612547565b5060608201516125c16060850182612556565b5060808201516125d46080850182612565565b50505050565b5f60a0820190506125ed5f830184612574565b92915050565b5f5f6040838503121561260957612608612227565b5b5f6126168582860161234f565b925050602061262785828601612382565b9150509250929050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261265257612651612631565b5b8235905067ffffffffffffffff81111561266f5761266e612635565b5b60208301915083600182028301111561268b5761268a612639565b5b9250929050565b5f5f602083850312156126a8576126a7612227565b5b5f83013567ffffffffffffffff8111156126c5576126c461222b565b5b6126d18582860161263d565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61271f826126dd565b61272981856126e7565b93506127398185602086016126f7565b61274281612705565b840191505092915050565b5f6020820190508181035f8301526127658184612715565b905092915050565b5f6020828403121561278257612781612227565b5b5f61278f8482850161234f565b91505092915050565b5f5f5f606084860312156127af576127ae612227565b5b5f6127bc8682870161234f565b93505060206127cd8682870161234f565b92505060406127de86828701612382565b9150509250925092565b5f6127f2826122de565b9050919050565b612802816127e8565b82525050565b5f60208201905061281b5f8301846127f9565b92915050565b5f5ffd5b5f60a0828403121561283a57612839612821565b5b81905092915050565b5f60a0828403121561285857612857612227565b5b5f61286584828501612825565b91505092915050565b5f81905092915050565b50565b5f6128865f8361286e565b915061289182612878565b5f82019050919050565b5f6128a58261287b565b9150819050919050565b5f6080820190506128c25f83018761240e565b6128cf60208301866123e6565b6128dc60408301856123e6565b6128e9606083018461240e565b95945050505050565b5f815190506129008161236c565b92915050565b5f6020828403121561291b5761291a612227565b5b5f612928848285016128f2565b91505092915050565b5f819050919050565b5f61295461294f61294a84612931565b6122b4565b612363565b9050919050565b6129648161293a565b82525050565b5f60808201905061297d5f83018761240e565b61298a60208301866123e6565b612997604083018561295b565b6129a4606083018461240e565b95945050505050565b5f6040820190506129c05f83018561240e565b6129cd60208301846123e6565b9392505050565b5f815190506129e281612339565b92915050565b5f5f604083850312156129fe576129fd612227565b5b5f612a0b858286016128f2565b9250506020612a1c858286016129d4565b9150509250929050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a6082612705565b810181811067ffffffffffffffff82111715612a7f57612a7e612a2a565b5b80604052505050565b5f612a9161221e565b9050612a9d8282612a57565b919050565b5f8115159050919050565b612ab681612aa2565b8114612ac0575f5ffd5b50565b5f81359050612ad181612aad565b92915050565b5f819050919050565b612ae981612ad7565b8114612af3575f5ffd5b50565b5f81359050612b0481612ae0565b92915050565b5f60408284031215612b1f57612b1e612a26565b5b612b296040612a88565b90505f612b3884828501612ac3565b5f830152506020612b4b84828501612af6565b60208301525092915050565b5f60408284031215612b6c57612b6b612227565b5b5f612b7984828501612b0a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bb98261222f565b9150612bc48361222f565b9250828203905073ffffffffffffffffffffffffffffffffffffffff811115612bf057612bef612b82565b5b92915050565b5f612c008261222f565b9150612c0b8361222f565b9250828201905073ffffffffffffffffffffffffffffffffffffffff811115612c3757612c36612b82565b5b92915050565b5f815f1c9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c79612c7483612c3d565b612c48565b9050919050565b5f8160a01c9050919050565b5f62ffffff82169050919050565b5f612cac612ca783612c80565b612c8c565b9050919050565b5f8160b81c9050919050565b5f8160020b9050919050565b5f612cdd612cd883612cb3565b612cbf565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d15612d1083612c3d565b612ce4565b9050919050565b60a082015f5f8301549050612d3081612c67565b612d3c5f860182612538565b5060018301549050612d4d81612c67565b612d5a6020860182612538565b50612d6481612c9a565b612d716040860182612547565b50612d7b81612ccb565b612d886060860182612556565b5060028301549050612d9981612d03565b612da66080860182612565565b5050505050565b612db681612aa2565b82525050565b612dc581612ad7565b82525050565b612dd48161222f565b82525050565b606082015f820151612dee5f850182612dad565b506020820151612e016020850182612dbc565b506040820151612e146040850182612dcb565b50505050565b5f612e255f836126e7565b9150612e3082612878565b5f82019050919050565b5f61012082019050612e4e5f830185612d1c565b612e5b60a0830184612dda565b818103610100830152612e6d81612e1a565b90509392505050565b612e7f81612ad7565b8114612e89575f5ffd5b50565b5f81519050612e9a81612e76565b92915050565b5f60208284031215612eb557612eb4612227565b5b5f612ec284828501612e8c565b91505092915050565b5f602082019050612ede5f830184612447565b92915050565b5f81600f0b9050919050565b5f612efa82612ee4565b91507fffffffffffffffffffffffffffffffff800000000000000000000000000000008203612f2c57612f2b612b82565b5b815f039050919050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f612f6b612f66612f6184612f36565b6122b4565b612363565b9050919050565b612f7b81612f51565b82525050565b5f604082019050612f945f83018561240e565b612fa16020830184612f72565b9392505050565b5f81519050612fb681612aad565b92915050565b5f60208284031215612fd157612fd0612227565b5b5f612fde84828501612fa8565b91505092915050565b5f606082019050612ffa5f830186612447565b613007602083018561240e565b6130146040830184612f72565b949350505050565b61302581612ee4565b82525050565b5f60408201905061303e5f83018561301c565b61304b602083018461301c565b9392505050565b5f5f6040838503121561306857613067612227565b5b5f613075858286016128f2565b9250506020613086858286016128f2565b9150509250929050565b5f61309a82612363565b91506130a583612363565b92508282019050808211156130bd576130bc612b82565b5b92915050565b5f6040820190506130d65f83018561240e565b6130e3602083018461295b565b9392505050565b6130f381612328565b81146130fd575f5ffd5b50565b5f813561310c816130ea565b80915050919050565b5f815f1b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff61313f84613115565b9350801983169250808416831791505092915050565b5f819050919050565b61316782612436565b61317a61317382613155565b8354613120565b8255505050565b61318a81612456565b8114613194575f5ffd5b50565b5f81356131a381613181565b80915050919050565b5f8160a01b9050919050565b5f76ffffff00000000000000000000000000000000000000006131da846131ac565b9350801983169250808416831791505092915050565b5f61320a61320561320084612456565b6122b4565b612456565b9050919050565b5f819050919050565b613223826131f0565b61323661322f82613211565b83546131b8565b8255505050565b61324681612473565b8114613250575f5ffd5b50565b5f813561325f8161323d565b80915050919050565b5f8160b81b9050919050565b5f79ffffff000000000000000000000000000000000000000000000061329984613268565b9350801983169250808416831791505092915050565b5f6132c96132c46132bf84612473565b6122b4565b612473565b9050919050565b5f819050919050565b6132e2826132af565b6132f56132ee826132d0565b8354613274565b8255505050565b5f61330682612328565b9050919050565b613316816132fc565b8114613320575f5ffd5b50565b5f813561332f8161330d565b80915050919050565b5f613342826122bd565b9050919050565b5f61335382613338565b9050919050565b5f819050919050565b61336c82613349565b61337f6133788261335a565b8354613120565b8255505050565b5f81015f83018061339681613100565b90506133a2818461315e565b5050506001810160208301806133b781613100565b90506133c3818461315e565b5050506001810160408301806133d881613197565b90506133e4818461321a565b5050506001810160608301806133f981613253565b905061340581846132d9565b50505060028101608083018061341a81613323565b90506134268184613363565b5050505050565b6134378282613386565b5050565b5f61344582612ad7565b91507f8000000000000000000000000000000000000000000000000000000000000000820361347757613476612b82565b5b815f039050919050565b604082015f8201516134955f850182612dad565b5060208201516134a86020850182612dbc565b50505050565b5f6040820190506134c15f830184613481565b92915050565b5f5ffd5b5f67ffffffffffffffff8211156134e5576134e4612a2a565b5b6134ee82612705565b9050602081019050919050565b5f61350d613508846134cb565b612a88565b905082815260208101848484011115613529576135286134c7565b5b6135348482856126f7565b509392505050565b5f82601f8301126135505761354f612631565b5b81516135608482602086016134fb565b91505092915050565b5f6020828403121561357e5761357d612227565b5b5f82015167ffffffffffffffff81111561359b5761359a61222b565b5b6135a78482850161353c565b91505092915050565b5f815190506135be81612ae0565b92915050565b5f5f604083850312156135da576135d9612227565b5b5f6135e7858286016135b0565b92505060206135f8858286016135b0565b915050925092905056fea2646970667358221220ed63d1384ac46498cf344cc0313f10eae5b8d86ca90a24da5961be72588155aa64736f6c634300081c003300000000000000000000000005e73354cfdd6745c338b50bcfdfa3aa6fa034080000000000000000000000005dfa75b0185efbaef286e80b847ce84ff8a62c2d00000000000000000000000020fbc8a650d75e4c2dab8b7e85c27135f0d64e8900000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa00000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x5e", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x3f2372", + "logs": [ + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000c7c47d820d2d5b09797be2f438cf329ad7315682", + "0x0000000000000000000000005dfa75b0185efbaef286e80b847ce84ff8a62c2d" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561fd9", + "blockTimestamp": "0x69bf9e92", + "transactionHash": "0x5f37af91dc7742c2a3ed1a7fde7538671529b39dc8788b5d74745acb2d9247f6", + "transactionIndex": "0xb", + "logIndex": "0x12", + "removed": false + }, + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000c7c47d820d2d5b09797be2f438cf329ad7315682", + "0x00000000000000000000000020fbc8a650d75e4c2dab8b7e85c27135f0d64e89" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561fd9", + "blockTimestamp": "0x69bf9e92", + "transactionHash": "0x5f37af91dc7742c2a3ed1a7fde7538671529b39dc8788b5d74745acb2d9247f6", + "transactionIndex": "0xb", + "logIndex": "0x13", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000001000000000000000000000000000000000000000000800000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000010000000020001800000000000000000000000000000000000000000000000000000200000000042000000000000000000000000000000000000000400000000000000000010000000000000000000000000000000000000000000000000020000000000", + "type": "0x2", + "transactionHash": "0x5f37af91dc7742c2a3ed1a7fde7538671529b39dc8788b5d74745acb2d9247f6", + "transactionIndex": "0xb", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561fd9", + "gasUsed": "0x31971c", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0xd0df9", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": null, + "contractAddress": "0xc7c47d820d2d5b09797be2f438cf329ad7315682", + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x3", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x4901", + "l1GasPrice": "0x3c", + "l1GasUsed": "0x180b0" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1774165648503, + "chain": 84532, + "commit": "c4e307a" +} \ No newline at end of file diff --git a/broadcast/DeployZapPlotLink.s.sol/84532/run-latest.json b/broadcast/DeployZapPlotLink.s.sol/84532/run-latest.json new file mode 100644 index 0000000..179f80e --- /dev/null +++ b/broadcast/DeployZapPlotLink.s.sol/84532/run-latest.json @@ -0,0 +1,94 @@ +{ + "transactions": [ + { + "hash": "0x5f37af91dc7742c2a3ed1a7fde7538671529b39dc8788b5d74745acb2d9247f6", + "transactionType": "CREATE", + "contractName": "ZapPlotLink", + "contractAddress": "0xc7c47d820d2d5b09797be2f438cf329ad7315682", + "function": null, + "arguments": [ + "0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408", + "0x5dfA75b0185efBaEF286E80B847ce84ff8a62C2d", + "0x20fBC8a650d75e4C2Dab8b7e85C27135f0D64e89", + "0x4200000000000000000000000000000000000006", + "0x6Ef4A3f654F2AfcEa8A8704D61Be5271536c13Fa", + "(0x4200000000000000000000000000000000000006, 0x6Ef4A3f654F2AfcEa8A8704D61Be5271536c13Fa, 3000, 60, 0x0000000000000000000000000000000000000000)" + ], + "transaction": { + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "gas": "0x4077a4", + "value": "0x0", + "input": "0x6101006040526001600555348015610015575f5ffd5b50604051613fcb380380613fcb83398181016040528101906100379190610779565b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16148061009c57505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b806100d257505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8061010857505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061013e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610175576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508373ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060025f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548162ffffff021916908362ffffff16021790555060608201518160010160176101000a81548162ffffff021916908360020b62ffffff1602179055506080820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161044292919061082a565b6020604051808303815f875af115801561045e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104829190610886565b508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016104de92919061082a565b6020604051808303815f875af11580156104fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051e9190610886565b505050505050506108b1565b5f604051905090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61056082610537565b9050919050565b61057081610556565b811461057a575f5ffd5b50565b5f8151905061058b81610567565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6105db82610595565b810181811067ffffffffffffffff821117156105fa576105f96105a5565b5b80604052505050565b5f61060c61052a565b905061061882826105d2565b919050565b61062681610556565b8114610630575f5ffd5b50565b5f815190506106418161061d565b92915050565b5f62ffffff82169050919050565b61065e81610647565b8114610668575f5ffd5b50565b5f8151905061067981610655565b92915050565b5f8160020b9050919050565b6106948161067f565b811461069e575f5ffd5b50565b5f815190506106af8161068b565b92915050565b5f6106bf82610556565b9050919050565b6106cf816106b5565b81146106d9575f5ffd5b50565b5f815190506106ea816106c6565b92915050565b5f60a0828403121561070557610704610591565b5b61070f60a0610603565b90505f61071e84828501610633565b5f83015250602061073184828501610633565b60208301525060406107458482850161066b565b6040830152506060610759848285016106a1565b606083015250608061076d848285016106dc565b60808301525092915050565b5f5f5f5f5f5f610140878903121561079457610793610533565b5b5f6107a189828a0161057d565b96505060206107b289828a0161057d565b95505060406107c389828a0161057d565b94505060606107d489828a0161057d565b93505060806107e589828a0161057d565b92505060a06107f689828a016106f0565b9150509295509295509295565b61080c81610556565b82525050565b5f819050919050565b61082481610812565b82525050565b5f60408201905061083d5f830185610803565b61084a602083018461081b565b9392505050565b5f8115159050919050565b61086581610851565b811461086f575f5ffd5b50565b5f815190506108808161085c565b92915050565b5f6020828403121561089b5761089a610533565b5b5f6108a884828501610872565b91505092915050565b60805160a05160c05160e0516136386109935f395f818161011e0152818161063801528181610880015281816109f401528181611c920152611f0b01525f81816105cf0152818161090901528181610b950152818161166301526117fb01525f81816106c101528181610a18015281816113e9015281816115c7015261173f01525f8181610c5f01528181610d3b01528181610e3501528181610f1d01528181610fa6015281816110410152818161112b015281816111b40152818161124f01528181611308015281816119ff01528181611d4901526120db01526136385ff3fe608060405260043610610117575f3560e01c80637f3aa4551161009f578063cea9d26f11610063578063cea9d26f14610407578063dc4c90d31461042f578063f0ec98d714610459578063f2fde38b14610481578063fbb3e284146104a957610175565b80637f3aa455146103015780638da5cb5b1461033d57806391dd734614610367578063ac4b8500146103a3578063cb758824146103df57610175565b8063182148ef116100e6578063182148ef1461022557806324671f40146102535780633fc8cef31461028357806364c9ec6f146102ad578063683e76e0146102d757610175565b806304824e701461017957806307da6144146101a15780630d4d1513146101cb578063161a226e146101fb57610175565b36610175577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610173575f5ffd5b005b5f5ffd5b348015610184575f5ffd5b5061019f600480360381019061019a9190612289565b6104d3565b005b3480156101ac575f5ffd5b506101b56105cd565b6040516101c2919061230f565b60405180910390f35b6101e560048036038101906101e09190612396565b6105f1565b6040516101f291906123f5565b60405180910390f35b348015610206575f5ffd5b5061020f610778565b60405161021c919061241d565b60405180910390f35b348015610230575f5ffd5b5061023961079d565b60405161024a9594939291906124ae565b60405180910390f35b61026d60048036038101906102689190612396565b610839565b60405161027a91906123f5565b60405180910390f35b34801561028e575f5ffd5b506102976109f2565b6040516102a4919061241d565b60405180910390f35b3480156102b8575f5ffd5b506102c1610a16565b6040516102ce919061251f565b60405180910390f35b3480156102e2575f5ffd5b506102eb610a3a565b6040516102f891906125da565b60405180910390f35b34801561030c575f5ffd5b50610327600480360381019061032291906125f3565b610b92565b60405161033491906123f5565b60405180910390f35b348015610348575f5ffd5b50610351610c37565b60405161035e919061241d565b60405180910390f35b348015610372575f5ffd5b5061038d60048036038101906103889190612692565b610c5b565b60405161039a919061274d565b60405180910390f35b3480156103ae575f5ffd5b506103c960048036038101906103c491906125f3565b6113e4565b6040516103d691906123f5565b60405180910390f35b3480156103ea575f5ffd5b506104056004803603810190610400919061276d565b61149a565b005b348015610412575f5ffd5b5061042d60048036038101906104289190612798565b6118f7565b005b34801561043a575f5ffd5b506104436119fd565b6040516104509190612808565b60405180910390f35b348015610464575f5ffd5b5061047f600480360381019061047a9190612843565b611a21565b005b34801561048c575f5ffd5b506104a760048036038101906104a2919061276d565b611abb565b005b3480156104b4575f5ffd5b506104bd611c66565b6040516104ca919061241d565b60405180910390f35b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610558576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff164760405161057d9061289b565b5f6040518083038185875af1925050503d805f81146105b7576040519150601f19603f3d011682016040523d82523d5f602084013e6105bc565b606091505b50509050806105c9575f5ffd5b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60026005540361062e576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026005819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b15801561069c575f5ffd5b505af11580156106ae573d5f5f3e3d5ffd5b50505050505f6106bd34611c8e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f74bfe8e868684876040518563ffffffff1660e01b815260040161071e94939291906128af565b6020604051808303815f875af115801561073a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075e9190612906565b9150610768611e51565b5060016005819055509392505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900462ffffff16908060010160179054906101000a900460020b90806002015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905085565b5f600260055403610876576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026005819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156108e4575f5ffd5b505af11580156108f6573d5f5f3e3d5ffd5b50505050505f61090534611c8e565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630144c5f386835f876040518563ffffffff1660e01b8152600401610966949392919061296a565b6020604051808303815f875af1158015610982573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a69190612906565b9150838210156109e2576040517fbb2875c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060016005819055509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610a426121aa565b60026040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681526020016001820160179054906101000a900460020b60020b60020b8152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663755493a484846040518363ffffffff1660e01b8152600401610bee9291906129ad565b6040805180830381865afa158015610c08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2c91906129e8565b508091505092915050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ce2576040517ff655705d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610cf29190612b57565b90505f815f0151610d2357600173fffd8963efd1fc6a506488495d951d5263988d26610d1e9190612baf565b610d36565b60016401000276a3610d359190612bf6565b5b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f3cd914c60026040518060600160405280875f015115158152602001876020015181526020018673ffffffffffffffffffffffffffffffffffffffff168152506040518363ffffffff1660e01b8152600401610dce929190612e3a565b6020604051808303815f875af1158015610dea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0e9190612ea0565b90505f610e1a82612007565b90505f610e2683612013565b90505f82600f0b1215611034577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a584119460025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610eaf9190612ecb565b5f604051808303815f87803b158015610ec6575f5ffd5b505af1158015610ed8573d5f5f3e3d5ffd5b5050505060025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f000000000000000000000000000000000000000000000000000000000000000084610f4690612ef0565b6040518363ffffffff1660e01b8152600401610f63929190612f81565b6020604051808303815f875af1158015610f7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa39190612fbc565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af115801561100e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110329190612906565b505b5f81600f0b1215611242577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a584119460026001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016110bc9190612ecb565b5f604051808303815f87803b1580156110d3575f5ffd5b505af11580156110e5573d5f5f3e3d5ffd5b5050505060026001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f00000000000000000000000000000000000000000000000000000000000000008361115490612ef0565b6040518363ffffffff1660e01b8152600401611171929190612f81565b6020604051808303815f875af115801561118d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b19190612fbc565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af115801561121c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112409190612906565b505b5f82600f0b13156112fb577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630b0d9c0960025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630856040518463ffffffff1660e01b81526004016112cd93929190612fe7565b5f604051808303815f87803b1580156112e4575f5ffd5b505af11580156112f6573d5f5f3e3d5ffd5b505050505b5f81600f0b13156113b5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630b0d9c0960026001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630846040518463ffffffff1660e01b815260040161138793929190612fe7565b5f604051808303815f87803b15801561139e575f5ffd5b505af11580156113b0573d5f5f3e3d5ffd5b505050505b81816040516020016113c892919061302b565b6040516020818303038152906040529550505050505092915050565b5f5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166376a9864b86866040518363ffffffff1660e01b81526004016114429291906129ad565b6040805180830381865afa15801561145c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114809190613052565b9150915080826114909190613090565b9250505092915050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461151f576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611584576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000005f6040518363ffffffff1660e01b81526004016116049291906130c3565b6020604051808303815f875af1158015611620573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116449190612fbc565b508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000005f6040518363ffffffff1660e01b81526004016116a09291906130c3565b6020604051808303815f875af11580156116bc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e09190612fbc565b508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161179c9291906129ad565b6020604051808303815f875af11580156117b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117dc9190612fbc565b508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016118589291906129ad565b6020604051808303815f875af1158015611874573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118989190612fbc565b508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5a1a9bb5f826487cf43e61548d79ffa19cc00e1a554bd9962825f51fa9c767d160405160405180910390a35050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461197c576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016119b79291906129ad565b6020604051808303815f875af11580156119d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f79190612fbc565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060028181611ab5919061342d565b90505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b40576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505f6040518060400160405280831515815260200185611d229061343b565b815250604051602001611d3591906134ae565b60405160208183030381529060405290505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c89491836040518263ffffffff1660e01b8152600401611da0919061274d565b5f604051808303815f875af1158015611dbb573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611de39190613569565b90505f5f82806020019051810190611dfb91906135c4565b9150915084611e0a5781611e0c565b805b95505f8603611e47576040517f81ceff3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050919050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611eac919061241d565b602060405180830381865afa158015611ec7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eeb9190612906565b90505f811115612004575f611eff8261201f565b90505f811115612002577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401611f6291906123f5565b5f604051808303815f87803b158015611f79575f5ffd5b505af1158015611f8b573d5f5f3e3d5ffd5b505050505f3373ffffffffffffffffffffffffffffffffffffffff1682604051611fb49061289b565b5f6040518083038185875af1925050503d805f8114611fee576040519150601f19603f3d011682016040523d82523d5f602084013e611ff3565b606091505b5050905080612000575f5ffd5b505b505b50565b5f8160801d9050919050565b5f81600f0b9050919050565b5f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490505f60405180604001604052808315158152602001856120b49061343b565b8152506040516020016120c791906134ae565b60405160208183030381529060405290505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c89491836040518263ffffffff1660e01b8152600401612132919061274d565b5f604051808303815f875af115801561214d573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906121759190613569565b90505f5f8280602001905181019061218d91906135c4565b915091508461219c578161219e565b805b95505050505050919050565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122588261222f565b9050919050565b6122688161224e565b8114612272575f5ffd5b50565b5f813590506122838161225f565b92915050565b5f6020828403121561229e5761229d612227565b5b5f6122ab84828501612275565b91505092915050565b5f819050919050565b5f6122d76122d26122cd8461222f565b6122b4565b61222f565b9050919050565b5f6122e8826122bd565b9050919050565b5f6122f9826122de565b9050919050565b612309816122ef565b82525050565b5f6020820190506123225f830184612300565b92915050565b5f6123328261222f565b9050919050565b61234281612328565b811461234c575f5ffd5b50565b5f8135905061235d81612339565b92915050565b5f819050919050565b61237581612363565b811461237f575f5ffd5b50565b5f813590506123908161236c565b92915050565b5f5f5f606084860312156123ad576123ac612227565b5b5f6123ba8682870161234f565b93505060206123cb86828701612382565b92505060406123dc8682870161234f565b9150509250925092565b6123ef81612363565b82525050565b5f6020820190506124085f8301846123e6565b92915050565b61241781612328565b82525050565b5f6020820190506124305f83018461240e565b92915050565b5f612440826122de565b9050919050565b61245081612436565b82525050565b5f62ffffff82169050919050565b61246d81612456565b82525050565b5f8160020b9050919050565b61248881612473565b82525050565b5f612498826122de565b9050919050565b6124a88161248e565b82525050565b5f60a0820190506124c15f830188612447565b6124ce6020830187612447565b6124db6040830186612464565b6124e8606083018561247f565b6124f5608083018461249f565b9695505050505050565b5f612509826122de565b9050919050565b612519816124ff565b82525050565b5f6020820190506125325f830184612510565b92915050565b61254181612436565b82525050565b61255081612456565b82525050565b61255f81612473565b82525050565b61256e8161248e565b82525050565b60a082015f8201516125885f850182612538565b50602082015161259b6020850182612538565b5060408201516125ae6040850182612547565b5060608201516125c16060850182612556565b5060808201516125d46080850182612565565b50505050565b5f60a0820190506125ed5f830184612574565b92915050565b5f5f6040838503121561260957612608612227565b5b5f6126168582860161234f565b925050602061262785828601612382565b9150509250929050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261265257612651612631565b5b8235905067ffffffffffffffff81111561266f5761266e612635565b5b60208301915083600182028301111561268b5761268a612639565b5b9250929050565b5f5f602083850312156126a8576126a7612227565b5b5f83013567ffffffffffffffff8111156126c5576126c461222b565b5b6126d18582860161263d565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61271f826126dd565b61272981856126e7565b93506127398185602086016126f7565b61274281612705565b840191505092915050565b5f6020820190508181035f8301526127658184612715565b905092915050565b5f6020828403121561278257612781612227565b5b5f61278f8482850161234f565b91505092915050565b5f5f5f606084860312156127af576127ae612227565b5b5f6127bc8682870161234f565b93505060206127cd8682870161234f565b92505060406127de86828701612382565b9150509250925092565b5f6127f2826122de565b9050919050565b612802816127e8565b82525050565b5f60208201905061281b5f8301846127f9565b92915050565b5f5ffd5b5f60a0828403121561283a57612839612821565b5b81905092915050565b5f60a0828403121561285857612857612227565b5b5f61286584828501612825565b91505092915050565b5f81905092915050565b50565b5f6128865f8361286e565b915061289182612878565b5f82019050919050565b5f6128a58261287b565b9150819050919050565b5f6080820190506128c25f83018761240e565b6128cf60208301866123e6565b6128dc60408301856123e6565b6128e9606083018461240e565b95945050505050565b5f815190506129008161236c565b92915050565b5f6020828403121561291b5761291a612227565b5b5f612928848285016128f2565b91505092915050565b5f819050919050565b5f61295461294f61294a84612931565b6122b4565b612363565b9050919050565b6129648161293a565b82525050565b5f60808201905061297d5f83018761240e565b61298a60208301866123e6565b612997604083018561295b565b6129a4606083018461240e565b95945050505050565b5f6040820190506129c05f83018561240e565b6129cd60208301846123e6565b9392505050565b5f815190506129e281612339565b92915050565b5f5f604083850312156129fe576129fd612227565b5b5f612a0b858286016128f2565b9250506020612a1c858286016129d4565b9150509250929050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a6082612705565b810181811067ffffffffffffffff82111715612a7f57612a7e612a2a565b5b80604052505050565b5f612a9161221e565b9050612a9d8282612a57565b919050565b5f8115159050919050565b612ab681612aa2565b8114612ac0575f5ffd5b50565b5f81359050612ad181612aad565b92915050565b5f819050919050565b612ae981612ad7565b8114612af3575f5ffd5b50565b5f81359050612b0481612ae0565b92915050565b5f60408284031215612b1f57612b1e612a26565b5b612b296040612a88565b90505f612b3884828501612ac3565b5f830152506020612b4b84828501612af6565b60208301525092915050565b5f60408284031215612b6c57612b6b612227565b5b5f612b7984828501612b0a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bb98261222f565b9150612bc48361222f565b9250828203905073ffffffffffffffffffffffffffffffffffffffff811115612bf057612bef612b82565b5b92915050565b5f612c008261222f565b9150612c0b8361222f565b9250828201905073ffffffffffffffffffffffffffffffffffffffff811115612c3757612c36612b82565b5b92915050565b5f815f1c9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c79612c7483612c3d565b612c48565b9050919050565b5f8160a01c9050919050565b5f62ffffff82169050919050565b5f612cac612ca783612c80565b612c8c565b9050919050565b5f8160b81c9050919050565b5f8160020b9050919050565b5f612cdd612cd883612cb3565b612cbf565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d15612d1083612c3d565b612ce4565b9050919050565b60a082015f5f8301549050612d3081612c67565b612d3c5f860182612538565b5060018301549050612d4d81612c67565b612d5a6020860182612538565b50612d6481612c9a565b612d716040860182612547565b50612d7b81612ccb565b612d886060860182612556565b5060028301549050612d9981612d03565b612da66080860182612565565b5050505050565b612db681612aa2565b82525050565b612dc581612ad7565b82525050565b612dd48161222f565b82525050565b606082015f820151612dee5f850182612dad565b506020820151612e016020850182612dbc565b506040820151612e146040850182612dcb565b50505050565b5f612e255f836126e7565b9150612e3082612878565b5f82019050919050565b5f61012082019050612e4e5f830185612d1c565b612e5b60a0830184612dda565b818103610100830152612e6d81612e1a565b90509392505050565b612e7f81612ad7565b8114612e89575f5ffd5b50565b5f81519050612e9a81612e76565b92915050565b5f60208284031215612eb557612eb4612227565b5b5f612ec284828501612e8c565b91505092915050565b5f602082019050612ede5f830184612447565b92915050565b5f81600f0b9050919050565b5f612efa82612ee4565b91507fffffffffffffffffffffffffffffffff800000000000000000000000000000008203612f2c57612f2b612b82565b5b815f039050919050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b5f612f6b612f66612f6184612f36565b6122b4565b612363565b9050919050565b612f7b81612f51565b82525050565b5f604082019050612f945f83018561240e565b612fa16020830184612f72565b9392505050565b5f81519050612fb681612aad565b92915050565b5f60208284031215612fd157612fd0612227565b5b5f612fde84828501612fa8565b91505092915050565b5f606082019050612ffa5f830186612447565b613007602083018561240e565b6130146040830184612f72565b949350505050565b61302581612ee4565b82525050565b5f60408201905061303e5f83018561301c565b61304b602083018461301c565b9392505050565b5f5f6040838503121561306857613067612227565b5b5f613075858286016128f2565b9250506020613086858286016128f2565b9150509250929050565b5f61309a82612363565b91506130a583612363565b92508282019050808211156130bd576130bc612b82565b5b92915050565b5f6040820190506130d65f83018561240e565b6130e3602083018461295b565b9392505050565b6130f381612328565b81146130fd575f5ffd5b50565b5f813561310c816130ea565b80915050919050565b5f815f1b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff61313f84613115565b9350801983169250808416831791505092915050565b5f819050919050565b61316782612436565b61317a61317382613155565b8354613120565b8255505050565b61318a81612456565b8114613194575f5ffd5b50565b5f81356131a381613181565b80915050919050565b5f8160a01b9050919050565b5f76ffffff00000000000000000000000000000000000000006131da846131ac565b9350801983169250808416831791505092915050565b5f61320a61320561320084612456565b6122b4565b612456565b9050919050565b5f819050919050565b613223826131f0565b61323661322f82613211565b83546131b8565b8255505050565b61324681612473565b8114613250575f5ffd5b50565b5f813561325f8161323d565b80915050919050565b5f8160b81b9050919050565b5f79ffffff000000000000000000000000000000000000000000000061329984613268565b9350801983169250808416831791505092915050565b5f6132c96132c46132bf84612473565b6122b4565b612473565b9050919050565b5f819050919050565b6132e2826132af565b6132f56132ee826132d0565b8354613274565b8255505050565b5f61330682612328565b9050919050565b613316816132fc565b8114613320575f5ffd5b50565b5f813561332f8161330d565b80915050919050565b5f613342826122bd565b9050919050565b5f61335382613338565b9050919050565b5f819050919050565b61336c82613349565b61337f6133788261335a565b8354613120565b8255505050565b5f81015f83018061339681613100565b90506133a2818461315e565b5050506001810160208301806133b781613100565b90506133c3818461315e565b5050506001810160408301806133d881613197565b90506133e4818461321a565b5050506001810160608301806133f981613253565b905061340581846132d9565b50505060028101608083018061341a81613323565b90506134268184613363565b5050505050565b6134378282613386565b5050565b5f61344582612ad7565b91507f8000000000000000000000000000000000000000000000000000000000000000820361347757613476612b82565b5b815f039050919050565b604082015f8201516134955f850182612dad565b5060208201516134a86020850182612dbc565b50505050565b5f6040820190506134c15f830184613481565b92915050565b5f5ffd5b5f67ffffffffffffffff8211156134e5576134e4612a2a565b5b6134ee82612705565b9050602081019050919050565b5f61350d613508846134cb565b612a88565b905082815260208101848484011115613529576135286134c7565b5b6135348482856126f7565b509392505050565b5f82601f8301126135505761354f612631565b5b81516135608482602086016134fb565b91505092915050565b5f6020828403121561357e5761357d612227565b5b5f82015167ffffffffffffffff81111561359b5761359a61222b565b5b6135a78482850161353c565b91505092915050565b5f815190506135be81612ae0565b92915050565b5f5f604083850312156135da576135d9612227565b5b5f6135e7858286016135b0565b92505060206135f8858286016135b0565b915050925092905056fea2646970667358221220ed63d1384ac46498cf344cc0313f10eae5b8d86ca90a24da5961be72588155aa64736f6c634300081c003300000000000000000000000005e73354cfdd6745c338b50bcfdfa3aa6fa034080000000000000000000000005dfa75b0185efbaef286e80b847ce84ff8a62c2d00000000000000000000000020fbc8a650d75e4c2dab8b7e85c27135f0d64e8900000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa00000000000000000000000042000000000000000000000000000000000000060000000000000000000000006ef4a3f654f2afcea8a8704d61be5271536c13fa0000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x5e", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x3f2372", + "logs": [ + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000c7c47d820d2d5b09797be2f438cf329ad7315682", + "0x0000000000000000000000005dfa75b0185efbaef286e80b847ce84ff8a62c2d" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561fd9", + "blockTimestamp": "0x69bf9e92", + "transactionHash": "0x5f37af91dc7742c2a3ed1a7fde7538671529b39dc8788b5d74745acb2d9247f6", + "transactionIndex": "0xb", + "logIndex": "0x12", + "removed": false + }, + { + "address": "0x6ef4a3f654f2afcea8a8704d61be5271536c13fa", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x000000000000000000000000c7c47d820d2d5b09797be2f438cf329ad7315682", + "0x00000000000000000000000020fbc8a650d75e4c2dab8b7e85c27135f0d64e89" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561fd9", + "blockTimestamp": "0x69bf9e92", + "transactionHash": "0x5f37af91dc7742c2a3ed1a7fde7538671529b39dc8788b5d74745acb2d9247f6", + "transactionIndex": "0xb", + "logIndex": "0x13", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000001000000000000000000000000000000000000000000800000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000010000000020001800000000000000000000000000000000000000000000000000000200000000042000000000000000000000000000000000000000400000000000000000010000000000000000000000000000000000000000000000000020000000000", + "type": "0x2", + "transactionHash": "0x5f37af91dc7742c2a3ed1a7fde7538671529b39dc8788b5d74745acb2d9247f6", + "transactionIndex": "0xb", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x2561fd9", + "gasUsed": "0x31971c", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0xd0df9", + "from": "0x017596303ee2f3c1250aa67d2d33dbae1d1c4dbf", + "to": null, + "contractAddress": "0xc7c47d820d2d5b09797be2f438cf329ad7315682", + "daFootprintGasScalar": "0x8b", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x3", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x4901", + "l1GasPrice": "0x3c", + "l1GasUsed": "0x180b0" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1774165648503, + "chain": 84532, + "commit": "c4e307a" +} \ No newline at end of file diff --git a/foundry.lock b/foundry.lock index bc06b89..2489a50 100644 --- a/foundry.lock +++ b/foundry.lock @@ -4,5 +4,11 @@ "name": "v1.15.0", "rev": "0844d7e1fc5e60d77b68e469bff60265f236c398" } + }, + "lib/v4-core": { + "tag": { + "name": "v4.0.0", + "rev": "e50237c43811bd9b526eff40f26772152a42daba" + } } } \ No newline at end of file diff --git a/lib/v4-core b/lib/v4-core new file mode 160000 index 0000000..e50237c --- /dev/null +++ b/lib/v4-core @@ -0,0 +1 @@ +Subproject commit e50237c43811bd9b526eff40f26772152a42daba diff --git a/lib/v4-periphery b/lib/v4-periphery new file mode 160000 index 0000000..686f621 --- /dev/null +++ b/lib/v4-periphery @@ -0,0 +1 @@ +Subproject commit 686f621d9b675fc78bf02781f59ec1ad36921706 diff --git a/remappings.txt b/remappings.txt new file mode 100644 index 0000000..c8754a5 --- /dev/null +++ b/remappings.txt @@ -0,0 +1,6 @@ +forge-std/=lib/forge-std/src/ +@uniswap/v4-core/=lib/v4-core/ +v4-core/=lib/v4-core/src/ +v4-periphery/=lib/v4-periphery/src/ +solmate/=lib/v4-core/lib/solmate/ +openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/ diff --git a/script/DeployPLTestAndPool.s.sol b/script/DeployPLTestAndPool.s.sol new file mode 100644 index 0000000..47c6276 --- /dev/null +++ b/script/DeployPLTestAndPool.s.sol @@ -0,0 +1,141 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.28; + +import {Script, console} from "forge-std/Script.sol"; +import {PLTest} from "../src/PLTest.sol"; +import {IPoolManager} from "v4-core/interfaces/IPoolManager.sol"; +import {PoolKey} from "v4-core/types/PoolKey.sol"; +import {Currency} from "v4-core/types/Currency.sol"; +import {IHooks} from "v4-core/interfaces/IHooks.sol"; +import {TickMath} from "v4-core/libraries/TickMath.sol"; +import {IPositionManager} from "v4-periphery/interfaces/IPositionManager.sol"; +import {Actions} from "v4-periphery/libraries/Actions.sol"; +import {LiquidityAmounts} from "v4-periphery/libraries/LiquidityAmounts.sol"; + +/// @title DeployPLTestAndPool — Deploy PL_TEST token + Uniswap V4 pool on Base Sepolia +/// @notice Creates PL_TEST ERC-20, initializes a V4 pool (PL_TEST/WETH), and seeds liquidity. +contract DeployPLTestAndPool is Script { + // Base Sepolia Uniswap V4 addresses + address constant POOL_MANAGER = 0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408; + address constant POSITION_MANAGER = 0x4B2C77d209D3405F41a037Ec6c77F7F5b8e2ca80; + address constant PERMIT2 = 0x000000000022D473030F116dDEE9F6B43aC78BA3; + address constant WETH = 0x4200000000000000000000000000000000000006; + + // Pool parameters + uint24 constant POOL_FEE = 3000; // 0.30% + int24 constant TICK_SPACING = 60; + + // Liquidity seed amounts + uint256 constant PL_TEST_SEED = 100e18; // 100 PL_TEST + uint256 constant WETH_SEED = 0.005 ether; // 0.005 ETH + + // Initial supply for PL_TEST + uint256 constant INITIAL_SUPPLY = 10_000e18; // 10,000 PL_TEST + + function run() external { + uint256 deployerKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); + address deployer = vm.addr(deployerKey); + + vm.startBroadcast(deployerKey); + + // 1. Deploy PL_TEST token + PLTest plTest = new PLTest(INITIAL_SUPPLY); + console.log("PL_TEST deployed at:", address(plTest)); + + // 2. Sort tokens for PoolKey (currency0 < currency1) + (address token0, address token1) = _sortTokens(address(plTest), WETH); + bool plTestIsToken0 = token0 == address(plTest); + + // 3. Build pool key + PoolKey memory poolKey = PoolKey({ + currency0: Currency.wrap(token0), + currency1: Currency.wrap(token1), + fee: POOL_FEE, + tickSpacing: TICK_SPACING, + hooks: IHooks(address(0)) + }); + + // 4. Initialize pool + uint160 sqrtPriceX96 = _getSqrtPrice(plTestIsToken0); + int24 tick = IPoolManager(POOL_MANAGER).initialize(poolKey, sqrtPriceX96); + console.log("Pool initialized at tick:"); + console.logInt(tick); + + // 5. Approvals + plTest.approve(PERMIT2, type(uint256).max); + IWETH(WETH).deposit{value: WETH_SEED}(); + IWETH(WETH).approve(PERMIT2, type(uint256).max); + IPermit2(PERMIT2).approve(address(plTest), POSITION_MANAGER, type(uint160).max, type(uint48).max); + IPermit2(PERMIT2).approve(WETH, POSITION_MANAGER, type(uint160).max, type(uint48).max); + + // 6. Add liquidity + _addLiquidity(poolKey, tick, sqrtPriceX96, plTestIsToken0, deployer); + + vm.stopBroadcast(); + + console.log("Pool Key:"); + console.log(" currency0:", token0); + console.log(" currency1:", token1); + } + + function _sortTokens(address a, address b) internal pure returns (address token0, address token1) { + if (uint160(a) < uint160(b)) { + token0 = a; + token1 = b; + } else { + token0 = b; + token1 = a; + } + } + + function _getSqrtPrice(bool plTestIsToken0) internal pure returns (uint160) { + // Price: 100 PL_TEST = 0.005 WETH => 1 PL_TEST = 0.00005 WETH + if (plTestIsToken0) { + // price = token1/token0 = WETH/PL_TEST = 0.00005 + // sqrt(0.00005) * 2^96 ≈ 560_228_142_366_059_520 + return 560_228_142_366_059_520; + } else { + // price = token1/token0 = PL_TEST/WETH = 20000 + // sqrt(20000) * 2^96 ≈ 11_204_562_847_321_190_656_000 + return uint160(11_204_562_847_321_190_656_000); + } + } + + function _addLiquidity( + PoolKey memory poolKey, + int24 tick, + uint160 sqrtPriceX96, + bool plTestIsToken0, + address deployer + ) internal { + int24 tickLower = ((tick - 6000) / TICK_SPACING) * TICK_SPACING; + int24 tickUpper = ((tick + 6000) / TICK_SPACING) * TICK_SPACING; + + uint160 sqrtLower = TickMath.getSqrtPriceAtTick(tickLower); + uint160 sqrtUpper = TickMath.getSqrtPriceAtTick(tickUpper); + + uint256 amt0 = plTestIsToken0 ? PL_TEST_SEED : WETH_SEED; + uint256 amt1 = plTestIsToken0 ? WETH_SEED : PL_TEST_SEED; + + uint128 liquidity = LiquidityAmounts.getLiquidityForAmounts(sqrtPriceX96, sqrtLower, sqrtUpper, amt0, amt1); + + bytes memory actions = abi.encodePacked(uint8(Actions.MINT_POSITION), uint8(Actions.SETTLE_PAIR)); + + bytes[] memory params = new bytes[](2); + params[0] = abi.encode(poolKey, tickLower, tickUpper, liquidity, amt0, amt1, deployer, ""); + params[1] = abi.encode(poolKey.currency0, poolKey.currency1); + + IPositionManager(POSITION_MANAGER).modifyLiquidities(abi.encode(actions, params), block.timestamp + 120); + + console.log("Liquidity seeded:", liquidity); + } +} + +interface IWETH { + function deposit() external payable; + function approve(address spender, uint256 amount) external returns (bool); +} + +interface IPermit2 { + function approve(address token, address spender, uint160 amount, uint48 expiration) external; +} diff --git a/script/DeployZapPlotLink.s.sol b/script/DeployZapPlotLink.s.sol new file mode 100644 index 0000000..057181f --- /dev/null +++ b/script/DeployZapPlotLink.s.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.28; + +import {Script, console} from "forge-std/Script.sol"; +import {ZapPlotLink} from "../src/ZapPlotLink.sol"; +import {PoolKey} from "v4-core/types/PoolKey.sol"; +import {Currency} from "v4-core/types/Currency.sol"; +import {IHooks} from "v4-core/interfaces/IHooks.sol"; + +/// @title DeployZapPlotLink — Deploy ZapPlotLink contract on Base Sepolia +/// @notice Reads PL_TEST and pool addresses from env vars set after P5-8a deployment. +contract DeployZapPlotLink is Script { + // Base Sepolia addresses (fixed) + address constant POOL_MANAGER = 0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408; + address constant MCV2_BOND = 0x5dfA75b0185efBaEF286E80B847ce84ff8a62C2d; + address constant MCV2_BOND_PERIPHERY = 0x20fBC8a650d75e4C2Dab8b7e85C27135f0D64e89; + address constant WETH = 0x4200000000000000000000000000000000000006; + + // Pool parameters (must match pool creation) + uint24 constant POOL_FEE = 3000; + int24 constant TICK_SPACING = 60; + + function run() external { + uint256 deployerKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); + address plTestAddr = vm.envAddress("PL_TEST_ADDRESS"); + + // Sort tokens for PoolKey + address token0; + address token1; + if (uint160(plTestAddr) < uint160(WETH)) { + token0 = plTestAddr; + token1 = WETH; + } else { + token0 = WETH; + token1 = plTestAddr; + } + + PoolKey memory poolKey = PoolKey({ + currency0: Currency.wrap(token0), + currency1: Currency.wrap(token1), + fee: POOL_FEE, + tickSpacing: TICK_SPACING, + hooks: IHooks(address(0)) + }); + + vm.startBroadcast(deployerKey); + + ZapPlotLink zap = new ZapPlotLink(POOL_MANAGER, MCV2_BOND, MCV2_BOND_PERIPHERY, WETH, plTestAddr, poolKey); + + vm.stopBroadcast(); + + console.log("ZapPlotLink deployed at:", address(zap)); + console.log("PL_TEST:", plTestAddr); + console.log("Pool currency0:", token0); + console.log("Pool currency1:", token1); + } +} diff --git a/src/PLTest.sol b/src/PLTest.sol new file mode 100644 index 0000000..095b5e9 --- /dev/null +++ b/src/PLTest.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.28; + +/// @title PLTest — Simple ERC-20 test token for Base Sepolia +/// @notice Mintable by owner. Used as PLOT_TOKEN stand-in on testnet. +contract PLTest { + string public constant name = "pl-test"; + string public constant symbol = "PL_TEST"; + uint8 public constant decimals = 18; + + uint256 public totalSupply; + address public owner; + + mapping(address => uint256) public balanceOf; + mapping(address => mapping(address => uint256)) public allowance; + + event Transfer(address indexed from, address indexed to, uint256 value); + event Approval(address indexed owner, address indexed spender, uint256 value); + + constructor(uint256 initialSupply) { + owner = msg.sender; + _mint(msg.sender, initialSupply); + } + + function mint(address to, uint256 amount) external { + require(msg.sender == owner, "only owner"); + _mint(to, amount); + } + + function approve(address spender, uint256 amount) external returns (bool) { + allowance[msg.sender][spender] = amount; + emit Approval(msg.sender, spender, amount); + return true; + } + + function transfer(address to, uint256 amount) external returns (bool) { + return _transfer(msg.sender, to, amount); + } + + function transferFrom(address from, address to, uint256 amount) external returns (bool) { + uint256 allowed = allowance[from][msg.sender]; + if (allowed != type(uint256).max) { + require(allowed >= amount, "insufficient allowance"); + allowance[from][msg.sender] = allowed - amount; + } + return _transfer(from, to, amount); + } + + function _transfer(address from, address to, uint256 amount) internal returns (bool) { + require(balanceOf[from] >= amount, "insufficient balance"); + balanceOf[from] -= amount; + balanceOf[to] += amount; + emit Transfer(from, to, amount); + return true; + } + + function _mint(address to, uint256 amount) internal { + totalSupply += amount; + balanceOf[to] += amount; + emit Transfer(address(0), to, amount); + } +} diff --git a/src/ZapPlotLink.sol b/src/ZapPlotLink.sol new file mode 100644 index 0000000..b8dde92 --- /dev/null +++ b/src/ZapPlotLink.sol @@ -0,0 +1,340 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.28; + +import {IPoolManager} from "v4-core/interfaces/IPoolManager.sol"; +import {IUnlockCallback} from "v4-core/interfaces/callback/IUnlockCallback.sol"; +import {PoolKey} from "v4-core/types/PoolKey.sol"; +import {Currency} from "v4-core/types/Currency.sol"; +import {BalanceDelta} from "v4-core/types/BalanceDelta.sol"; +import {TickMath} from "v4-core/libraries/TickMath.sol"; +import {IMCV2_Bond} from "./interfaces/IMCV2_Bond.sol"; +import {IERC20} from "./interfaces/IERC20.sol"; + +/// @title ZapPlotLink — One-click buy: swap ETH via Uniswap V4, then mint storyline tokens on MCV2 bonding curve +/// @notice Accepts ETH, swaps to PLOT token via Uniswap V4, then mints storyline tokens via MCV2_Bond. +/// Supports exact-output (mint) and exact-input (mintReverse) patterns. +/// @dev Owner can update the plot token address via setPlotToken(). +contract ZapPlotLink is IUnlockCallback { + // --- Errors --- + error OnlyOwner(); + error OnlyPoolManager(); + error ZeroAddress(); + error InsufficientOutput(); + error SwapFailed(); + error Reentrancy(); + + // --- Events --- + event PlotTokenUpdated(address indexed oldToken, address indexed newToken); + event OwnershipTransferred(address indexed oldOwner, address indexed newOwner); + + // --- Immutables --- + IPoolManager public immutable poolManager; + IMCV2_Bond public immutable bond; + IMCV2_BondPeriphery public immutable bondPeriphery; + address public immutable weth; + + // --- State --- + address public owner; + address public plotToken; + PoolKey public poolKey; + uint256 private _locked = 1; + + // --- Transient callback data --- + struct SwapCallbackData { + bool zeroForOne; + int256 amountSpecified; + } + + /// @param _poolManager Uniswap V4 PoolManager + /// @param _bond MCV2_Bond bonding curve contract + /// @param _bondPeriphery MCV2_BondPeriphery for mintWithReserveAmount + /// @param _weth WETH address + /// @param _plotToken Initial PLOT token address (reserve token for bonding curves) + /// @param _poolKey The Uniswap V4 pool key for PLOT/WETH + constructor( + address _poolManager, + address _bond, + address _bondPeriphery, + address _weth, + address _plotToken, + PoolKey memory _poolKey + ) { + if ( + _poolManager == address(0) || _bond == address(0) || _bondPeriphery == address(0) || _weth == address(0) + || _plotToken == address(0) + ) { + revert ZeroAddress(); + } + poolManager = IPoolManager(_poolManager); + bond = IMCV2_Bond(_bond); + bondPeriphery = IMCV2_BondPeriphery(_bondPeriphery); + weth = _weth; + plotToken = _plotToken; + poolKey = _poolKey; + owner = msg.sender; + + // Pre-approve PLOT token to Bond and BondPeriphery for minting + IERC20(_plotToken).approve(_bond, type(uint256).max); + IERC20(_plotToken).approve(_bondPeriphery, type(uint256).max); + } + + modifier onlyOwner() { + if (msg.sender != owner) revert OnlyOwner(); + _; + } + + modifier nonReentrant() { + if (_locked == 2) revert Reentrancy(); + _locked = 2; + _; + _locked = 1; + } + + // ==================== Owner Functions ==================== + + /// @notice Update the plot token address (e.g., when migrating from testnet WETH to real PLOT) + /// @param newPlotToken The new plot token address + function setPlotToken(address newPlotToken) external onlyOwner { + if (newPlotToken == address(0)) revert ZeroAddress(); + address old = plotToken; + + // Revoke old approvals + IERC20(old).approve(address(bond), 0); + IERC20(old).approve(address(bondPeriphery), 0); + + plotToken = newPlotToken; + + // Approve new token to Bond and BondPeriphery + IERC20(newPlotToken).approve(address(bond), type(uint256).max); + IERC20(newPlotToken).approve(address(bondPeriphery), type(uint256).max); + + emit PlotTokenUpdated(old, newPlotToken); + } + + /// @notice Update the pool key (e.g., when pool changes) + function setPoolKey(PoolKey calldata newPoolKey) external onlyOwner { + poolKey = newPoolKey; + } + + /// @notice Transfer ownership + function transferOwnership(address newOwner) external onlyOwner { + if (newOwner == address(0)) revert ZeroAddress(); + address old = owner; + owner = newOwner; + emit OwnershipTransferred(old, newOwner); + } + + /// @notice Rescue stuck tokens + function rescueTokens(address token, address to, uint256 amount) external onlyOwner { + IERC20(token).transfer(to, amount); + } + + /// @notice Rescue stuck ETH + function rescueETH(address payable to) external onlyOwner { + (bool ok,) = to.call{value: address(this).balance}(""); + require(ok); + } + + // ==================== Mint Functions ==================== + + /// @notice Exact output: swap ETH → PLOT, then mint exact `tokensToMint` storyline tokens + /// @param storylineToken The storyline token to mint on the bonding curve + /// @param tokensToMint Exact number of storyline tokens desired + /// @param receiver Address to receive minted tokens + /// @return reserveUsed Amount of PLOT used for minting + function mint(address storylineToken, uint256 tokensToMint, address receiver) + external + payable + nonReentrant + returns (uint256 reserveUsed) + { + // 1. Wrap ETH to WETH + IWETH(weth).deposit{value: msg.value}(); + + // 2. Swap WETH → PLOT via Uniswap V4 + uint256 plotReceived = _swapExactInput(msg.value); + + // 3. Mint storyline tokens on bonding curve + reserveUsed = bond.mint(storylineToken, tokensToMint, plotReceived, receiver); + + // 4. Refund excess PLOT as ETH + _refundExcessPlot(); + } + + /// @notice Exact input: swap all sent ETH → PLOT, then mint as many storyline tokens as possible + /// @param storylineToken The storyline token to mint + /// @param minTokensOut Minimum acceptable storyline tokens (slippage protection) + /// @param receiver Address to receive minted tokens + /// @return tokensMinted Number of storyline tokens minted + function mintReverse(address storylineToken, uint256 minTokensOut, address receiver) + external + payable + nonReentrant + returns (uint256 tokensMinted) + { + // 1. Wrap ETH to WETH + IWETH(weth).deposit{value: msg.value}(); + + // 2. Swap all WETH → PLOT via Uniswap V4 + uint256 plotReceived = _swapExactInput(msg.value); + + // 3. Mint max storyline tokens using BondPeriphery.mintWithReserveAmount + tokensMinted = bondPeriphery.mintWithReserveAmount(storylineToken, plotReceived, 0, receiver); + + if (tokensMinted < minTokensOut) revert InsufficientOutput(); + } + + // ==================== View / Estimate Functions ==================== + + /// @notice Get the PLOT reserve cost to mint `tokensToMint` storyline tokens (bonding curve only) + /// @dev Frontend should convert PLOT→ETH via Uniswap V4 Quoter off-chain for the full ETH estimate. + /// Call Quoter.quoteExactOutput(poolKey, plotRequired, ...) to get the ETH amount. + /// @param storylineToken The storyline token + /// @param tokensToMint Number of tokens to mint + /// @return plotRequired PLOT tokens needed (reserve + royalty) + function estimateMintCostInPlot(address storylineToken, uint256 tokensToMint) + external + view + returns (uint256 plotRequired) + { + (uint256 reserveAmount, uint256 royalty) = bond.getReserveForToken(storylineToken, tokensToMint); + plotRequired = reserveAmount + royalty; + } + + /// @notice Estimate how many storyline tokens can be minted with `plotAmount` of PLOT + /// @dev Frontend should first convert ETH→PLOT via Uniswap V4 Quoter off-chain, + /// then pass the quoted PLOT amount here. + /// @param storylineToken The storyline token + /// @param plotAmount Amount of PLOT tokens available for minting + /// @return tokensOut Estimated storyline tokens receivable + function estimateMintReverseFromPlot(address storylineToken, uint256 plotAmount) + external + view + returns (uint256 tokensOut) + { + (tokensOut,) = bondPeriphery.getTokensForReserve(storylineToken, plotAmount); + } + + /// @notice Get the current PLOT token address + function getPlotToken() external view returns (address) { + return plotToken; + } + + /// @notice Get the current pool key + function getPoolKey() external view returns (PoolKey memory) { + return poolKey; + } + + // ==================== Internal Swap Functions ==================== + + /// @dev Swap exact WETH input → PLOT output via Uniswap V4 + function _swapExactInput(uint256 wethAmount) internal returns (uint256 plotReceived) { + bool zeroForOne = Currency.unwrap(poolKey.currency0) == weth; + + bytes memory callbackData = + abi.encode(SwapCallbackData({zeroForOne: zeroForOne, amountSpecified: -int256(wethAmount)})); + + bytes memory result = poolManager.unlock(callbackData); + (int256 delta0, int256 delta1) = abi.decode(result, (int256, int256)); + + plotReceived = uint256(zeroForOne ? delta1 : delta0); + if (plotReceived == 0) revert SwapFailed(); + } + + /// @dev Swap exact PLOT input → WETH output (for refunding excess) + function _swapExactInputPlotToWeth(uint256 plotAmount) internal returns (uint256 wethReceived) { + bool zeroForOne = Currency.unwrap(poolKey.currency0) == plotToken; + + bytes memory callbackData = + abi.encode(SwapCallbackData({zeroForOne: zeroForOne, amountSpecified: -int256(plotAmount)})); + + bytes memory result = poolManager.unlock(callbackData); + (int256 delta0, int256 delta1) = abi.decode(result, (int256, int256)); + + wethReceived = uint256(zeroForOne ? delta1 : delta0); + } + + /// @dev Refund any excess PLOT tokens back to msg.sender as ETH + function _refundExcessPlot() internal { + uint256 plotRemaining = IERC20(plotToken).balanceOf(address(this)); + if (plotRemaining > 0) { + uint256 wethBack = _swapExactInputPlotToWeth(plotRemaining); + if (wethBack > 0) { + IWETH(weth).withdraw(wethBack); + (bool ok,) = msg.sender.call{value: wethBack}(""); + require(ok); + } + } + } + + // ==================== Uniswap V4 Callback ==================== + + /// @notice Called by PoolManager during unlock + function unlockCallback(bytes calldata data) external override returns (bytes memory) { + if (msg.sender != address(poolManager)) revert OnlyPoolManager(); + + SwapCallbackData memory swapData = abi.decode(data, (SwapCallbackData)); + + uint160 sqrtPriceLimitX96 = swapData.zeroForOne ? TickMath.MIN_SQRT_PRICE + 1 : TickMath.MAX_SQRT_PRICE - 1; + + BalanceDelta delta = poolManager.swap( + poolKey, + IPoolManager.SwapParams({ + zeroForOne: swapData.zeroForOne, + amountSpecified: swapData.amountSpecified, + sqrtPriceLimitX96: sqrtPriceLimitX96 + }), + "" + ); + + // Settle: pay input token to PoolManager + // ERC-20 settlement requires: sync(currency) → transfer → settle() + int128 amount0 = delta.amount0(); + int128 amount1 = delta.amount1(); + + if (amount0 < 0) { + poolManager.sync(poolKey.currency0); + IERC20(Currency.unwrap(poolKey.currency0)).transfer(address(poolManager), uint128(-amount0)); + poolManager.settle(); + } + if (amount1 < 0) { + poolManager.sync(poolKey.currency1); + IERC20(Currency.unwrap(poolKey.currency1)).transfer(address(poolManager), uint128(-amount1)); + poolManager.settle(); + } + + // Take: receive output tokens from PoolManager + if (amount0 > 0) { + poolManager.take(poolKey.currency0, address(this), uint128(amount0)); + } + if (amount1 > 0) { + poolManager.take(poolKey.currency1, address(this), uint128(amount1)); + } + + return abi.encode(amount0, amount1); + } + + // ==================== Receive ETH ==================== + + /// @dev Only accepts ETH from WETH unwrap. Not a general-purpose deposit. + receive() external payable { + require(msg.sender == weth); + } +} + +interface IWETH { + function deposit() external payable; + function withdraw(uint256 amount) external; + function approve(address spender, uint256 amount) external returns (bool); + function balanceOf(address) external view returns (uint256); +} + +interface IMCV2_BondPeriphery { + function mintWithReserveAmount(address token, uint256 reserveAmount, uint256 minTokensToMint, address receiver) + external + returns (uint256 tokensMinted); + function getTokensForReserve(address tokenAddress, uint256 reserveAmount) + external + view + returns (uint256 tokensToMint, address reserveAddress); +}