@funkit/core 2.1.0 → 2.1.2-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1,3358 @@
1
- { "abi": [{ "type": "constructor", "inputs": [{ "name": "entryPoint", "type": "address", "internalType": "contract IEntryPoint" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "VERSION", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "activateAndCall", "inputs": [{ "name": "target", "type": "address", "internalType": "address" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }], "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }], "stateMutability": "payable" }, { "type": "function", "name": "addStake", "inputs": [{ "name": "unstakeDelaySec", "type": "uint32", "internalType": "uint32" }], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "deposit", "inputs": [], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "entryPoint", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract IEntryPoint" }], "stateMutability": "view" }, { "type": "function", "name": "getDeposit", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "getLastOpMode", "inputs": [], "outputs": [{ "name": "", "type": "uint8", "internalType": "enum IPaymaster.PostOpMode" }], "stateMutability": "view" }, { "type": "function", "name": "owner", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "postOp", "inputs": [{ "name": "mode", "type": "uint8", "internalType": "enum IPaymaster.PostOpMode" }, { "name": "context", "type": "bytes", "internalType": "bytes" }, { "name": "actualGasCost", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "renounceOwnership", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "setOperators", "inputs": [{ "name": "operators", "type": "address[]", "internalType": "address[]" }, { "name": "isAllowed", "type": "bool", "internalType": "bool" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "transferOwnership", "inputs": [{ "name": "newOwner", "type": "address", "internalType": "address" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "unlockStake", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "validatePaymasterUserOp", "inputs": [{ "name": "userOp", "type": "tuple", "internalType": "struct UserOperation", "components": [{ "name": "sender", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "initCode", "type": "bytes", "internalType": "bytes" }, { "name": "callData", "type": "bytes", "internalType": "bytes" }, { "name": "callGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "verificationGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "preVerificationGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "maxPriorityFeePerGas", "type": "uint256", "internalType": "uint256" }, { "name": "paymasterAndData", "type": "bytes", "internalType": "bytes" }, { "name": "signature", "type": "bytes", "internalType": "bytes" }] }, { "name": "userOpHash", "type": "bytes32", "internalType": "bytes32" }, { "name": "maxCost", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "context", "type": "bytes", "internalType": "bytes" }, { "name": "validationData", "type": "uint256", "internalType": "uint256" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "withdrawStake", "inputs": [{ "name": "withdrawAddress", "type": "address", "internalType": "address payable" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "withdrawTo", "inputs": [{ "name": "withdrawAddress", "type": "address", "internalType": "address payable" }, { "name": "amount", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "event", "name": "OwnershipTransferred", "inputs": [{ "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" }, { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "error", "name": "Inactive", "inputs": [] }, { "type": "error", "name": "InvalidOperator", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }] }, { "type": "error", "name": "InvalidPaymasterAndDataLength", "inputs": [{ "name": "length", "type": "uint256", "internalType": "uint256" }] }], "bytecode": { "object": "0x60a060405234801561001057600080fd5b50604051610f03380380610f0383398101604081905261002f916100ae565b806100393361005e565b6001600160a01b0316608052506000805460ff60a01b1916600160a01b1790556100de565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100c057600080fd5b81516001600160a01b03811681146100d757600080fd5b9392505050565b608051610dd961012a600039600081816101f60152818161031d015281816103b4015281816104af01528181610543015281816105b30152818161071c01526108bb0152610dd96000f3fe6080604052600436106100f35760003560e01c8063bb9fe6bf1161008a578063d0e30db011610059578063d0e30db014610290578063f2fde38b14610298578063f465c77e146102b8578063ffa1ad74146102e657600080fd5b8063bb9fe6bf14610218578063c23a5cea1461022d578063c399ec881461024d578063c458b07b1461027057600080fd5b80638da5cb5b116100c65780638da5cb5b14610172578063a3111bdb146101a4578063a9a23409146101c4578063b0d691fe146101e457600080fd5b80630396cb60146100f8578063205c28781461010d578063255ed9471461012d578063715018a61461015d575b600080fd5b61010b6101063660046109d5565b6102fb565b005b34801561011957600080fd5b5061010b610128366004610a17565b610386565b34801561013957600080fd5b50600054600160a81b900460ff166040516101549190610a59565b60405180910390f35b34801561016957600080fd5b5061010b6103f8565b34801561017e57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610154565b3480156101b057600080fd5b5061010b6101bf366004610a81565b61040c565b3480156101d057600080fd5b5061010b6101df366004610b55565b61048b565b3480156101f057600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561022457600080fd5b5061010b6104a5565b34801561023957600080fd5b5061010b610248366004610bb5565b61051c565b34801561025957600080fd5b5061026261059b565b604051908152602001610154565b61028361027e366004610bd2565b61062b565b6040516101549190610c6d565b61010b610707565b3480156102a457600080fd5b5061010b6102b3366004610bb5565b610769565b3480156102c457600080fd5b506102d86102d3366004610c80565b6107e2565b604051610154929190610cd4565b3480156102f257600080fd5b50610262600181565b610303610806565b604051621cb65b60e51b815263ffffffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630396cb609034906024016000604051808303818588803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b505050505050565b61038e610806565b60405163040b850f60e31b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561036a57600080fd5b610400610806565b61040a6000610860565b565b610414610806565b8160005b8181101561048457826001600087878581811061043757610437610cf6565b905060200201602081019061044c9190610bb5565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561047d81610d0c565b9050610418565b5050505050565b6104936108b0565b61049f84848484610920565b50505050565b6104ad610806565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561050857600080fd5b505af115801561049f573d6000803e3d6000fd5b610524610806565b60405163611d2e7560e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561058757600080fd5b505af1158015610484573d6000803e3d6000fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190610d33565b905090565b3360009081526001602052604090205460609060ff1661066557604051633eaa03e360e01b81523360048201526024015b60405180910390fd5b6000805460ff60a01b1916600160a11b17815560405181906001600160a01b0387169034906106979088908890610d4c565b60006040518083038185875af1925050503d80600081146106d4576040519150601f19603f3d011682016040523d82523d6000602084013e6106d9565b606091505b5091509150816106eb57805160208201fd5b6000805460ff60a01b1916600160a01b17905595945050505050565b60405163b760faf960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b760faf99034906024016000604051808303818588803b15801561058757600080fd5b610771610806565b6001600160a01b0381166107d65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065c565b6107df81610860565b50565b606060006107ee6108b0565b6107f985858561098e565b915091505b935093915050565b6000546001600160a01b0316331461040a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461040a5760405162461bcd60e51b815260206004820152601560248201527414d95b99195c881b9bdd08115b9d1c9e541bda5b9d605a1b604482015260640161065c565b6002600054600160a01b900460ff16600281111561094057610940610a43565b1461095e57604051632e8acb0d60e01b815260040160405180910390fd5b6000805485919060ff60a81b1916600160a81b83600281111561098357610983610a43565b021790555050505050565b606060006109a0610120860186610d5c565b90506014146107fe576109b7610120860186610d5c565b604051635ae9bb9760e01b815261065c925060040190815260200190565b6000602082840312156109e757600080fd5b813563ffffffff811681146109fb57600080fd5b9392505050565b6001600160a01b03811681146107df57600080fd5b60008060408385031215610a2a57600080fd5b8235610a3581610a02565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310610a7b57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600060408486031215610a9657600080fd5b833567ffffffffffffffff80821115610aae57600080fd5b818601915086601f830112610ac257600080fd5b813581811115610ad157600080fd5b8760208260051b8501011115610ae657600080fd5b602092830195509350508401358015158114610b0157600080fd5b809150509250925092565b60008083601f840112610b1e57600080fd5b50813567ffffffffffffffff811115610b3657600080fd5b602083019150836020828501011115610b4e57600080fd5b9250929050565b60008060008060608587031215610b6b57600080fd5b843560038110610b7a57600080fd5b9350602085013567ffffffffffffffff811115610b9657600080fd5b610ba287828801610b0c565b9598909750949560400135949350505050565b600060208284031215610bc757600080fd5b81356109fb81610a02565b600080600060408486031215610be757600080fd5b8335610bf281610a02565b9250602084013567ffffffffffffffff811115610c0e57600080fd5b610c1a86828701610b0c565b9497909650939450505050565b6000815180845260005b81811015610c4d57602081850181015186830182015201610c31565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006109fb6020830184610c27565b600080600060608486031215610c9557600080fd5b833567ffffffffffffffff811115610cac57600080fd5b84016101608187031215610cbf57600080fd5b95602085013595506040909401359392505050565b604081526000610ce76040830185610c27565b90508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b600060018201610d2c57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610d4557600080fd5b5051919050565b8183823760009101908152919050565b6000808335601e19843603018112610d7357600080fd5b83018035915067ffffffffffffffff821115610d8e57600080fd5b602001915036819003821315610b4e57600080fdfea26469706673582212206ca98fa625bb450eac6fbf76f3fdd1ad097fee4001bd72ad8d66bb88a9b49f6d64736f6c63430008140033", "sourceMap": "678:2943:74:-:0;;;1428:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1478:10;936:32:32;719:10:51;936:18:32;:32::i;:::-;-1:-1:-1;;;;;564:24:1;;;-1:-1:-1;1500:14:74::1;:37:::0;;-1:-1:-1;;;;1500:37:74::1;-1:-1:-1::0;;;1500:37:74::1;::::0;;678:2943;;2426:187:32;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:32;;;-1:-1:-1;;;;;;2534:17:32;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;14:309:88:-;103:6;156:2;144:9;135:7;131:23;127:32;124:52;;;172:1;169;162:12;124:52;198:16;;-1:-1:-1;;;;;243:31:88;;233:42;;223:70;;289:1;286;279:12;223:70;312:5;14:309;-1:-1:-1;;;14:309:88:o;328:127::-;678:2943:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x6080604052600436106100f35760003560e01c8063bb9fe6bf1161008a578063d0e30db011610059578063d0e30db014610290578063f2fde38b14610298578063f465c77e146102b8578063ffa1ad74146102e657600080fd5b8063bb9fe6bf14610218578063c23a5cea1461022d578063c399ec881461024d578063c458b07b1461027057600080fd5b80638da5cb5b116100c65780638da5cb5b14610172578063a3111bdb146101a4578063a9a23409146101c4578063b0d691fe146101e457600080fd5b80630396cb60146100f8578063205c28781461010d578063255ed9471461012d578063715018a61461015d575b600080fd5b61010b6101063660046109d5565b6102fb565b005b34801561011957600080fd5b5061010b610128366004610a17565b610386565b34801561013957600080fd5b50600054600160a81b900460ff166040516101549190610a59565b60405180910390f35b34801561016957600080fd5b5061010b6103f8565b34801561017e57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610154565b3480156101b057600080fd5b5061010b6101bf366004610a81565b61040c565b3480156101d057600080fd5b5061010b6101df366004610b55565b61048b565b3480156101f057600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561022457600080fd5b5061010b6104a5565b34801561023957600080fd5b5061010b610248366004610bb5565b61051c565b34801561025957600080fd5b5061026261059b565b604051908152602001610154565b61028361027e366004610bd2565b61062b565b6040516101549190610c6d565b61010b610707565b3480156102a457600080fd5b5061010b6102b3366004610bb5565b610769565b3480156102c457600080fd5b506102d86102d3366004610c80565b6107e2565b604051610154929190610cd4565b3480156102f257600080fd5b50610262600181565b610303610806565b604051621cb65b60e51b815263ffffffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630396cb609034906024016000604051808303818588803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b505050505050565b61038e610806565b60405163040b850f60e31b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561036a57600080fd5b610400610806565b61040a6000610860565b565b610414610806565b8160005b8181101561048457826001600087878581811061043757610437610cf6565b905060200201602081019061044c9190610bb5565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561047d81610d0c565b9050610418565b5050505050565b6104936108b0565b61049f84848484610920565b50505050565b6104ad610806565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561050857600080fd5b505af115801561049f573d6000803e3d6000fd5b610524610806565b60405163611d2e7560e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561058757600080fd5b505af1158015610484573d6000803e3d6000fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190610d33565b905090565b3360009081526001602052604090205460609060ff1661066557604051633eaa03e360e01b81523360048201526024015b60405180910390fd5b6000805460ff60a01b1916600160a11b17815560405181906001600160a01b0387169034906106979088908890610d4c565b60006040518083038185875af1925050503d80600081146106d4576040519150601f19603f3d011682016040523d82523d6000602084013e6106d9565b606091505b5091509150816106eb57805160208201fd5b6000805460ff60a01b1916600160a01b17905595945050505050565b60405163b760faf960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b760faf99034906024016000604051808303818588803b15801561058757600080fd5b610771610806565b6001600160a01b0381166107d65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065c565b6107df81610860565b50565b606060006107ee6108b0565b6107f985858561098e565b915091505b935093915050565b6000546001600160a01b0316331461040a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461040a5760405162461bcd60e51b815260206004820152601560248201527414d95b99195c881b9bdd08115b9d1c9e541bda5b9d605a1b604482015260640161065c565b6002600054600160a01b900460ff16600281111561094057610940610a43565b1461095e57604051632e8acb0d60e01b815260040160405180910390fd5b6000805485919060ff60a81b1916600160a81b83600281111561098357610983610a43565b021790555050505050565b606060006109a0610120860186610d5c565b90506014146107fe576109b7610120860186610d5c565b604051635ae9bb9760e01b815261065c925060040190815260200190565b6000602082840312156109e757600080fd5b813563ffffffff811681146109fb57600080fd5b9392505050565b6001600160a01b03811681146107df57600080fd5b60008060408385031215610a2a57600080fd5b8235610a3581610a02565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310610a7b57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600060408486031215610a9657600080fd5b833567ffffffffffffffff80821115610aae57600080fd5b818601915086601f830112610ac257600080fd5b813581811115610ad157600080fd5b8760208260051b8501011115610ae657600080fd5b602092830195509350508401358015158114610b0157600080fd5b809150509250925092565b60008083601f840112610b1e57600080fd5b50813567ffffffffffffffff811115610b3657600080fd5b602083019150836020828501011115610b4e57600080fd5b9250929050565b60008060008060608587031215610b6b57600080fd5b843560038110610b7a57600080fd5b9350602085013567ffffffffffffffff811115610b9657600080fd5b610ba287828801610b0c565b9598909750949560400135949350505050565b600060208284031215610bc757600080fd5b81356109fb81610a02565b600080600060408486031215610be757600080fd5b8335610bf281610a02565b9250602084013567ffffffffffffffff811115610c0e57600080fd5b610c1a86828701610b0c565b9497909650939450505050565b6000815180845260005b81811015610c4d57602081850181015186830182015201610c31565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006109fb6020830184610c27565b600080600060608486031215610c9557600080fd5b833567ffffffffffffffff811115610cac57600080fd5b84016101608187031215610cbf57600080fd5b95602085013595506040909401359392505050565b604081526000610ce76040830185610c27565b90508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b600060018201610d2c57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610d4557600080fd5b5051919050565b8183823760009101908152919050565b6000808335601e19843603018112610d7357600080fd5b83018035915067ffffffffffffffff821115610d8e57600080fd5b602001915036819003821315610b4e57600080fdfea26469706673582212206ca98fa625bb450eac6fbf76f3fdd1ad097fee4001bd72ad8d66bb88a9b49f6d64736f6c63430008140033", "sourceMap": "678:2943:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3094:141:1;;;;;;:::i;:::-;;:::i;:::-;;2721:149;;;;;;;;;;-1:-1:-1;2721:149:1;;;;;:::i;:::-;;:::i;2242:98:74:-;;;;;;;;;;-1:-1:-1;2290:10:74;2319:14;-1:-1:-1;;;2319:14:74;;;;2242:98;;;;;;:::i;:::-;;;;;;;;1824:101:32;;;;;;;;;;;;;:::i;1201:85::-;;;;;;;;;;-1:-1:-1;1247:7:32;1273:6;-1:-1:-1;;;;;1273:6:32;1201:85;;;-1:-1:-1;;;;;1418:32:88;;;1400:51;;1388:2;1373:18;1201:85:32;1254:203:88;1550:253:74;;;;;;;;;;-1:-1:-1;1550:253:74;;;;;:::i;:::-;;:::i;1143:186:1:-;;;;;;;;;;-1:-1:-1;1143:186:1;;;;;:::i;:::-;;:::i;471:39::-;;;;;;;;;;;;;;;3588:83;;;;;;;;;;;;;:::i;3890:133::-;;;;;;;;;;-1:-1:-1;3890:133:1;;;;;:::i;:::-;;:::i;3318:111::-;;;;;;;;;;;;;:::i;:::-;;;3882:25:88;;;3870:2;3855:18;3318:111:1;3736:177:88;1809:427:74;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2474:105:1:-;;;:::i;2074:198:32:-;;;;;;;;;;-1:-1:-1;2074:198:32;;;;;:::i;:::-;;:::i;632:290:1:-;;;;;;;;;;-1:-1:-1;632:290:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;805:35:74:-;;;;;;;;;;;;839:1;805:35;;3094:141:1;1094:13:32;:11;:13::i;:::-;3173:55:1::1;::::0;-1:-1:-1;;;3173:55:1;;6385:10:88;6373:23;;3173:55:1::1;::::0;::::1;6355:42:88::0;3173:10:1::1;-1:-1:-1::0;;;;;3173:19:1::1;::::0;::::1;::::0;3201:9:::1;::::0;6328:18:88;;3173:55:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;3094:141:::0;:::o;2721:149::-;1094:13:32;:11;:13::i;:::-;2817:46:1::1;::::0;-1:-1:-1;;;2817:46:1;;-1:-1:-1;;;;;6616:32:88;;;2817:46:1::1;::::0;::::1;6598:51:88::0;6665:18;;;6658:34;;;2817:10:1::1;:21;::::0;::::1;::::0;6571:18:88;;2817:46:1::1;;;;;;;;;;;;;;;;;::::0;::::1;1824:101:32::0;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1550:253:74:-;1094:13:32;:11;:13::i;:::-;1681:9:74;1669::::1;1707:90;1727:1;1723;:5;1707:90;;;1777:9;1749:11;:25;1761:9;;1771:1;1761:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1749:25:74::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;1749:25:74;:37;;-1:-1:-1;;1749:37:74::1;::::0;::::1;;::::0;;;::::1;::::0;;1730:3:::1;::::0;::::1;:::i;:::-;;;1707:90;;;;1659:144;1550:253:::0;;;:::o;1143:186:1:-;1251:24;:22;:24::i;:::-;1285:37;1293:4;1299:7;;1308:13;1285:7;:37::i;:::-;1143:186;;;;:::o;3588:83::-;1094:13:32;:11;:13::i;:::-;3640:10:1::1;-1:-1:-1::0;;;;;3640:22:1::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;3890:133:::0;1094:13:32;:11;:13::i;:::-;3975:41:1::1;::::0;-1:-1:-1;;;3975:41:1;;-1:-1:-1;;;;;1418:32:88;;;3975:41:1::1;::::0;::::1;1400:51:88::0;3975:10:1::1;:24;::::0;::::1;::::0;1373:18:88;;3975:41:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;3318:111:::0;3387:35;;-1:-1:-1;;;3387:35:1;;3416:4;3387:35;;;1400:51:88;3361:7:1;;3387:10;-1:-1:-1;;;;;3387:20:1;;;;1373:18:88;;3387:35:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3380:42;;3318:111;:::o;1809:427:74:-;1104:10;1092:23;;;;:11;:23;;;;;;1932:12;;1092:23;;1087:89;;1138:27;;-1:-1:-1;;;1138:27:74;;1154:10;1138:27;;;1400:51:88;1373:18;;1138:27:74;;;;;;;;1087:89;1185:14;:35;;-1:-1:-1;;;;1185:35:74;-1:-1:-1;;;1185:35:74;;;1998:70:::1;::::0;1185:14;;-1:-1:-1;;;;;1998:20:74;::::1;::::0;2039:9:::1;::::0;1998:70:::1;::::0;2059:8;;;;1998:70:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1956:112;;;;2083:7;2078:125;;2167:10;2161:17;2156:2;2144:10;2140:19;2133:46;2078:125;1241:14:::0;:37;;-1:-1:-1;;;;1241:37:74;-1:-1:-1;;;1241:37:74;;;2219:10;;-1:-1:-1;;;;;1809:427:74:o;2474:105:1:-;2518:54;;-1:-1:-1;;;2518:54:1;;2566:4;2518:54;;;1400:51:88;2518:10:1;-1:-1:-1;;;;;2518:20:1;;;;2547:9;;1373:18:88;;2518:54:1;;;;;;;;;;;;;;;;;;;2074:198:32;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:32;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:32;;7963:2:88;2154:73:32::1;::::0;::::1;7945:21:88::0;8002:2;7982:18;;;7975:30;8041:34;8021:18;;;8014:62;-1:-1:-1;;;8092:18:88;;;8085:36;8138:19;;2154:73:32::1;7761:402:88::0;2154:73:32::1;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;632:290:1:-;764:20;786:22;821:24;:22;:24::i;:::-;862:53;887:6;895:10;907:7;862:24;:53::i;:::-;855:60;;;;632:290;;;;;;;:::o;1359:130:32:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:32;719:10:51;1422:23:32;1414:68;;;;-1:-1:-1;;;1414:68:32;;8370:2:88;1414:68:32;;;8352:21:88;;;8389:18;;;8382:30;8448:34;8428:18;;;8421:62;8500:18;;1414:68:32;8168:356:88;2426:187:32;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:32;;;-1:-1:-1;;;;;;2534:17:32;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;4087:135:1:-;4156:10;-1:-1:-1;;;;;4178:10:1;4156:33;;4148:67;;;;-1:-1:-1;;;4148:67:1;;8731:2:88;4148:67:1;;;8713:21:88;8770:2;8750:18;;;8743:30;-1:-1:-1;;;8789:18:88;;;8782:51;8850:18;;4148:67:1;8529:345:88;3431:188:74;1343:18;1325:14;;-1:-1:-1;;;1325:14:74;;;;:36;;;;;;;;:::i;:::-;;1321:84;;1384:10;;-1:-1:-1;;;1384:10:74;;;;;;;;;;;1321:84;3591:14:::1;:21:::0;;3608:4;;3591:14;-1:-1:-1;;;;3591:21:74::1;-1:-1:-1::0;;;3608:4:74;3591:21:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;3431:188:::0;;;;:::o;2641:435::-;2845:20;2867:22;2909:23;;;;:6;:23;:::i;:::-;:30;;2943:2;2909:36;2905:165;;3015:23;;;;:6;:23;:::i;:::-;2968:91;;-1:-1:-1;;;2968:91:74;;;;-1:-1:-1;2968:91:74;;3882:25:88;;;3870:2;3855:18;;3736:177;14:276;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:10;223:5;219:22;212:5;209:33;199:61;;256:1;253;246:12;199:61;279:5;14:276;-1:-1:-1;;;14:276:88:o;295:139::-;-1:-1:-1;;;;;378:31:88;;368:42;;358:70;;424:1;421;414:12;439:331;515:6;523;576:2;564:9;555:7;551:23;547:32;544:52;;;592:1;589;582:12;544:52;631:9;618:23;650:39;683:5;650:39;:::i;:::-;708:5;760:2;745:18;;;;732:32;;-1:-1:-1;;;439:331:88:o;775:127::-;836:10;831:3;827:20;824:1;817:31;867:4;864:1;857:15;891:4;888:1;881:15;907:342;1053:2;1038:18;;1086:1;1075:13;;1065:144;;1131:10;1126:3;1122:20;1119:1;1112:31;1166:4;1163:1;1156:15;1194:4;1191:1;1184:15;1065:144;1218:25;;;907:342;:::o;1462:782::-;1554:6;1562;1570;1623:2;1611:9;1602:7;1598:23;1594:32;1591:52;;;1639:1;1636;1629:12;1591:52;1679:9;1666:23;1708:18;1749:2;1741:6;1738:14;1735:34;;;1765:1;1762;1755:12;1735:34;1803:6;1792:9;1788:22;1778:32;;1848:7;1841:4;1837:2;1833:13;1829:27;1819:55;;1870:1;1867;1860:12;1819:55;1910:2;1897:16;1936:2;1928:6;1925:14;1922:34;;;1952:1;1949;1942:12;1922:34;2007:7;2000:4;1990:6;1987:1;1983:14;1979:2;1975:23;1971:34;1968:47;1965:67;;;2028:1;2025;2018:12;1965:67;2059:4;2051:13;;;;-1:-1:-1;2083:6:88;-1:-1:-1;;2124:20:88;;2111:34;2181:13;;2174:21;2164:32;;2154:60;;2210:1;2207;2200:12;2154:60;2233:5;2223:15;;;1462:782;;;;;:::o;2249:347::-;2300:8;2310:6;2364:3;2357:4;2349:6;2345:17;2341:27;2331:55;;2382:1;2379;2372:12;2331:55;-1:-1:-1;2405:20:88;;2448:18;2437:30;;2434:50;;;2480:1;2477;2470:12;2434:50;2517:4;2509:6;2505:17;2493:29;;2569:3;2562:4;2553:6;2545;2541:19;2537:30;2534:39;2531:59;;;2586:1;2583;2576:12;2531:59;2249:347;;;;;:::o;2601:635::-;2703:6;2711;2719;2727;2780:2;2768:9;2759:7;2755:23;2751:32;2748:52;;;2796:1;2793;2786:12;2748:52;2835:9;2822:23;2874:1;2867:5;2864:12;2854:40;;2890:1;2887;2880:12;2854:40;2913:5;-1:-1:-1;2969:2:88;2954:18;;2941:32;2996:18;2985:30;;2982:50;;;3028:1;3025;3018:12;2982:50;3067:58;3117:7;3108:6;3097:9;3093:22;3067:58;:::i;:::-;2601:635;;3144:8;;-1:-1:-1;3041:84:88;;3226:2;3211:18;3198:32;;2601:635;-1:-1:-1;;;;2601:635:88:o;3468:263::-;3535:6;3588:2;3576:9;3567:7;3563:23;3559:32;3556:52;;;3604:1;3601;3594:12;3556:52;3643:9;3630:23;3662:39;3695:5;3662:39;:::i;3918:552::-;3997:6;4005;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:39;4173:5;4140:39;:::i;:::-;4198:5;-1:-1:-1;4254:2:88;4239:18;;4226:32;4281:18;4270:30;;4267:50;;;4313:1;4310;4303:12;4267:50;4352:58;4402:7;4393:6;4382:9;4378:22;4352:58;:::i;:::-;3918:552;;4429:8;;-1:-1:-1;4326:84:88;;-1:-1:-1;;;;3918:552:88:o;4475:422::-;4516:3;4554:5;4548:12;4581:6;4576:3;4569:19;4606:1;4616:162;4630:6;4627:1;4624:13;4616:162;;;4692:4;4748:13;;;4744:22;;4738:29;4720:11;;;4716:20;;4709:59;4645:12;4616:162;;;4620:3;4823:1;4816:4;4807:6;4802:3;4798:16;4794:27;4787:38;4886:4;4879:2;4875:7;4870:2;4862:6;4858:15;4854:29;4849:3;4845:39;4841:50;4834:57;;;4475:422;;;;:::o;4902:217::-;5049:2;5038:9;5031:21;5012:4;5069:44;5109:2;5098:9;5094:18;5086:6;5069:44;:::i;5384:529::-;5494:6;5502;5510;5563:2;5551:9;5542:7;5538:23;5534:32;5531:52;;;5579:1;5576;5569:12;5531:52;5619:9;5606:23;5652:18;5644:6;5641:30;5638:50;;;5684:1;5681;5674:12;5638:50;5707:22;;5763:3;5745:16;;;5741:26;5738:46;;;5780:1;5777;5770:12;5738:46;5803:2;5852;5837:18;;5824:32;;-1:-1:-1;5903:2:88;5888:18;;;5875:32;;5384:529;-1:-1:-1;;;5384:529:88:o;5918:288::-;6093:2;6082:9;6075:21;6056:4;6113:44;6153:2;6142:9;6138:18;6130:6;6113:44;:::i;:::-;6105:52;;6193:6;6188:2;6177:9;6173:18;6166:34;5918:288;;;;;:::o;6703:127::-;6764:10;6759:3;6755:20;6752:1;6745:31;6795:4;6792:1;6785:15;6819:4;6816:1;6809:15;6835:232;6874:3;6895:17;;;6892:140;;6954:10;6949:3;6945:20;6942:1;6935:31;6989:4;6986:1;6979:15;7017:4;7014:1;7007:15;6892:140;-1:-1:-1;7059:1:88;7048:13;;6835:232::o;7296:184::-;7366:6;7419:2;7407:9;7398:7;7394:23;7390:32;7387:52;;;7435:1;7432;7425:12;7387:52;-1:-1:-1;7458:16:88;;7296:184;-1:-1:-1;7296:184:88:o;7485:271::-;7668:6;7660;7655:3;7642:33;7624:3;7694:16;;7719:13;;;7694:16;7485:271;-1:-1:-1;7485:271:88:o;8879:521::-;8956:4;8962:6;9022:11;9009:25;9116:2;9112:7;9101:8;9085:14;9081:29;9077:43;9057:18;9053:68;9043:96;;9135:1;9132;9125:12;9043:96;9162:33;;9214:20;;;-1:-1:-1;9257:18:88;9246:30;;9243:50;;;9289:1;9286;9279:12;9243:50;9322:4;9310:17;;-1:-1:-1;9353:14:88;9349:27;;;9339:38;;9336:58;;;9390:1;9387;9380:12", "linkReferences": {}, "immutableReferences": { "155": [{ "start": 502, "length": 32 }, { "start": 797, "length": 32 }, { "start": 948, "length": 32 }, { "start": 1199, "length": 32 }, { "start": 1347, "length": 32 }, { "start": 1459, "length": 32 }, { "start": 1820, "length": 32 }, { "start": 2235, "length": 32 }] } }, "methodIdentifiers": { "VERSION()": "ffa1ad74", "activateAndCall(address,bytes)": "c458b07b", "addStake(uint32)": "0396cb60", "deposit()": "d0e30db0", "entryPoint()": "b0d691fe", "getDeposit()": "c399ec88", "getLastOpMode()": "255ed947", "owner()": "8da5cb5b", "postOp(uint8,bytes,uint256)": "a9a23409", "renounceOwnership()": "715018a6", "setOperators(address[],bool)": "a3111bdb", "transferOwnership(address)": "f2fde38b", "unlockStake()": "bb9fe6bf", "validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": "f465c77e", "withdrawStake(address)": "c23a5cea", "withdrawTo(address,uint256)": "205c2878" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IEntryPoint\",\"name\":\"entryPoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Inactive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidPaymasterAndDataLength\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"activateAndCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"}],\"name\":\"addStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"entryPoint\",\"outputs\":[{\"internalType\":\"contract IEntryPoint\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastOpMode\",\"outputs\":[{\"internalType\":\"enum IPaymaster.PostOpMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IPaymaster.PostOpMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"actualGasCost\",\"type\":\"uint256\"}],\"name\":\"postOp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"}],\"name\":\"setOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maxCost\",\"type\":\"uint256\"}],\"name\":\"validatePaymasterUserOp\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"}],\"name\":\"withdrawStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Fun.xyz\",\"kind\":\"dev\",\"methods\":{\"addStake(uint32)\":{\"params\":{\"unstakeDelaySec\":\"- the unstake delay for this paymaster. Can only be increased.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"postOp(uint8,bytes,uint256)\":{\"params\":{\"actualGasCost\":\"- actual gas used so far (without this postOp call).\",\"context\":\"- the context value returned by validatePaymasterUserOp\",\"mode\":\"enum with the following options: opSucceeded - user operation succeeded. opReverted - user op reverted. still has to pay for gas. postOpReverted - user op succeeded, but caused postOp (in mode=opSucceeded) to revert. Now this is the 2nd call, after user's op was deliberately reverted.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\":{\"params\":{\"maxCost\":\"the maximum cost of this transaction (based on maximum gas and gas price from userOp)\",\"userOp\":\"the user operation\",\"userOpHash\":\"hash of the user's request data.\"},\"returns\":{\"context\":\"value to send to a postOp zero length to signify postOp is not required.\",\"validationData\":\"signature and time-range of this operation, encoded the same as the return value of validateUserOperation <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\"authorizer\\\" contract. <6-byte> validUntil - last timestamp this operation is valid. 0 for \\\"indefinite\\\" <6-byte> validAfter - first timestamp this operation is valid Note that the validation code cannot use block.timestamp (or block.number) directly.\"}},\"withdrawStake(address)\":{\"params\":{\"withdrawAddress\":\"the address to send withdrawn value.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"amount\":\"to withdraw\",\"withdrawAddress\":\"target to send to\"}}},\"title\":\"CheckoutPaymaster\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addStake(uint32)\":{\"notice\":\"add stake for this paymaster. This method can also carry eth value to add to the current stake.\"},\"deposit()\":{\"notice\":\"add a deposit for this paymaster, used for paying for transaction fees\"},\"getDeposit()\":{\"notice\":\"return current paymaster's deposit on the entryPoint.\"},\"postOp(uint8,bytes,uint256)\":{\"notice\":\"post-operation handler. Must verify sender is the entryPoint\"},\"unlockStake()\":{\"notice\":\"unlock the stake, in order to withdraw it. The paymaster can't serve requests once unlocked, until it calls addStake again\"},\"validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\":{\"notice\":\"payment validation: check if paymaster agrees to pay. Must verify sender is the entryPoint. Revert to reject this request. Note that bundlers will reject this method if it changes the state, unless the paymaster is trusted (whitelisted) The paymaster pre-pays using its deposit, and receive back a refund after the postOp method returns.\"},\"withdrawStake(address)\":{\"notice\":\"withdraw the entire paymaster's stake. stake must be unlocked first (and then wait for the unstakeDelay to be over)\"},\"withdrawTo(address,uint256)\":{\"notice\":\"withdraw value from the deposit\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/paymaster/CheckoutPaymaster.sol\":\"CheckoutPaymaster\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@account-abstraction/contracts/=lib/account-abstraction/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"lib/account-abstraction/contracts/core/BasePaymaster.sol\":{\"keccak256\":\"0x27f658d545b5f26c2e09a7ac4fba72f9975433839d10225a520e557540b84443\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://426f0c6565ae612d34ae184fb1582e6fc360abf79450975c1c2dd439184094a0\",\"dweb:/ipfs/QmZMeMosC1P6Z5BQyT6iGFQrY6ui5ART65ycVWmXFnDpoq\"]},\"lib/account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction/contracts/interfaces/IAggregator.sol\":{\"keccak256\":\"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b\",\"dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP\"]},\"lib/account-abstraction/contracts/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf\",\"dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd\"]},\"lib/account-abstraction/contracts/interfaces/INonceManager.sol\":{\"keccak256\":\"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2\",\"dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b\"]},\"lib/account-abstraction/contracts/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8\",\"dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia\"]},\"lib/account-abstraction/contracts/interfaces/IStakeManager.sol\":{\"keccak256\":\"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3\",\"dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ\"]},\"lib/account-abstraction/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/interfaces/InspectablePaymasterInterface.sol\":{\"keccak256\":\"0xfa01cf6d6c5c7585be4ffba481461417568e83e4326e4d4f3f978f448c494c05\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://359879084737d058f0098e12d25170e8181bf597231cb440302a945d6483e638\",\"dweb:/ipfs/QmWjJtxkBGXk8MmrVQCqp2gjyyibTmMc6b6GwQLcrcGyNp\"]},\"src/paymaster/CheckoutPaymaster.sol\":{\"keccak256\":\"0x750ce14a013dca17e026f47f3e1f141c7941983a9e38d66d79ad32f7dd4f64d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e0a9a642e69bbba805719b3c12144f2e32d3e2b70d24392ae7b09dd72a9510c6\",\"dweb:/ipfs/Qma8sDR2eC1pjAjkizjNhBnBbMvZV1x6pv82Z4xjNHvnaW\"]},\"src/paymaster/CheckoutPaymasterEventsAndErrors.sol\":{\"keccak256\":\"0xff791f10ae484b55407bdfa6f82516187388264e8e84bccd7571486c6ee08c37\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0df9a5fbbe1aa679422daa50a9f25a1fdd84df2a939903d9dd3f90d3a88f99e2\",\"dweb:/ipfs/QmPFaWWrb49R8WZizNKC7LN9YhWuhF7wey6cZKQg2WkMnr\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.20+commit.a1b79de6" }, "language": "Solidity", "output": { "abi": [{ "inputs": [{ "internalType": "contract IEntryPoint", "name": "entryPoint", "type": "address" }], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "type": "error", "name": "Inactive" }, { "inputs": [{ "internalType": "address", "name": "operator", "type": "address" }], "type": "error", "name": "InvalidOperator" }, { "inputs": [{ "internalType": "uint256", "name": "length", "type": "uint256" }], "type": "error", "name": "InvalidPaymasterAndDataLength" }, { "inputs": [{ "internalType": "address", "name": "previousOwner", "type": "address", "indexed": true }, { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true }], "type": "event", "name": "OwnershipTransferred", "anonymous": false }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "VERSION", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [{ "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }], "stateMutability": "payable", "type": "function", "name": "activateAndCall", "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }] }, { "inputs": [{ "internalType": "uint32", "name": "unstakeDelaySec", "type": "uint32" }], "stateMutability": "payable", "type": "function", "name": "addStake" }, { "inputs": [], "stateMutability": "payable", "type": "function", "name": "deposit" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "entryPoint", "outputs": [{ "internalType": "contract IEntryPoint", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getDeposit", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "getLastOpMode", "outputs": [{ "internalType": "enum IPaymaster.PostOpMode", "name": "", "type": "uint8" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "owner", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "enum IPaymaster.PostOpMode", "name": "mode", "type": "uint8" }, { "internalType": "bytes", "name": "context", "type": "bytes" }, { "internalType": "uint256", "name": "actualGasCost", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "postOp" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "renounceOwnership" }, { "inputs": [{ "internalType": "address[]", "name": "operators", "type": "address[]" }, { "internalType": "bool", "name": "isAllowed", "type": "bool" }], "stateMutability": "nonpayable", "type": "function", "name": "setOperators" }, { "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "transferOwnership" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "unlockStake" }, { "inputs": [{ "internalType": "struct UserOperation", "name": "userOp", "type": "tuple", "components": [{ "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "initCode", "type": "bytes" }, { "internalType": "bytes", "name": "callData", "type": "bytes" }, { "internalType": "uint256", "name": "callGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "verificationGasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "preVerificationGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxFeePerGas", "type": "uint256" }, { "internalType": "uint256", "name": "maxPriorityFeePerGas", "type": "uint256" }, { "internalType": "bytes", "name": "paymasterAndData", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }] }, { "internalType": "bytes32", "name": "userOpHash", "type": "bytes32" }, { "internalType": "uint256", "name": "maxCost", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "validatePaymasterUserOp", "outputs": [{ "internalType": "bytes", "name": "context", "type": "bytes" }, { "internalType": "uint256", "name": "validationData", "type": "uint256" }] }, { "inputs": [{ "internalType": "address payable", "name": "withdrawAddress", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "withdrawStake" }, { "inputs": [{ "internalType": "address payable", "name": "withdrawAddress", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }], "stateMutability": "nonpayable", "type": "function", "name": "withdrawTo" }], "devdoc": { "kind": "dev", "methods": { "addStake(uint32)": { "params": { "unstakeDelaySec": "- the unstake delay for this paymaster. Can only be increased." } }, "owner()": { "details": "Returns the address of the current owner." }, "postOp(uint8,bytes,uint256)": { "params": { "actualGasCost": "- actual gas used so far (without this postOp call).", "context": "- the context value returned by validatePaymasterUserOp", "mode": "enum with the following options: opSucceeded - user operation succeeded. opReverted - user op reverted. still has to pay for gas. postOpReverted - user op succeeded, but caused postOp (in mode=opSucceeded) to revert. Now this is the 2nd call, after user's op was deliberately reverted." } }, "renounceOwnership()": { "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner." }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." }, "validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": { "params": { "maxCost": "the maximum cost of this transaction (based on maximum gas and gas price from userOp)", "userOp": "the user operation", "userOpHash": "hash of the user's request data." }, "returns": { "context": "value to send to a postOp zero length to signify postOp is not required.", "validationData": "signature and time-range of this operation, encoded the same as the return value of validateUserOperation <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \"authorizer\" contract. <6-byte> validUntil - last timestamp this operation is valid. 0 for \"indefinite\" <6-byte> validAfter - first timestamp this operation is valid Note that the validation code cannot use block.timestamp (or block.number) directly." } }, "withdrawStake(address)": { "params": { "withdrawAddress": "the address to send withdrawn value." } }, "withdrawTo(address,uint256)": { "params": { "amount": "to withdraw", "withdrawAddress": "target to send to" } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "addStake(uint32)": { "notice": "add stake for this paymaster. This method can also carry eth value to add to the current stake." }, "deposit()": { "notice": "add a deposit for this paymaster, used for paying for transaction fees" }, "getDeposit()": { "notice": "return current paymaster's deposit on the entryPoint." }, "postOp(uint8,bytes,uint256)": { "notice": "post-operation handler. Must verify sender is the entryPoint" }, "unlockStake()": { "notice": "unlock the stake, in order to withdraw it. The paymaster can't serve requests once unlocked, until it calls addStake again" }, "validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": { "notice": "payment validation: check if paymaster agrees to pay. Must verify sender is the entryPoint. Revert to reject this request. Note that bundlers will reject this method if it changes the state, unless the paymaster is trusted (whitelisted) The paymaster pre-pays using its deposit, and receive back a refund after the postOp method returns." }, "withdrawStake(address)": { "notice": "withdraw the entire paymaster's stake. stake must be unlocked first (and then wait for the unstakeDelay to be over)" }, "withdrawTo(address,uint256)": { "notice": "withdraw value from the deposit" } }, "version": 1 } }, "settings": { "remappings": ["@account-abstraction/contracts/=lib/account-abstraction/contracts/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "account-abstraction/=lib/account-abstraction/contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin/=lib/openzeppelin-contracts/contracts/"], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "src/paymaster/CheckoutPaymaster.sol": "CheckoutPaymaster" }, "libraries": {} }, "sources": { "lib/account-abstraction/contracts/core/BasePaymaster.sol": { "keccak256": "0x27f658d545b5f26c2e09a7ac4fba72f9975433839d10225a520e557540b84443", "urls": ["bzz-raw://426f0c6565ae612d34ae184fb1582e6fc360abf79450975c1c2dd439184094a0", "dweb:/ipfs/QmZMeMosC1P6Z5BQyT6iGFQrY6ui5ART65ycVWmXFnDpoq"], "license": "GPL-3.0" }, "lib/account-abstraction/contracts/core/Helpers.sol": { "keccak256": "0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a", "urls": ["bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746", "dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU"], "license": "GPL-3.0" }, "lib/account-abstraction/contracts/interfaces/IAggregator.sol": { "keccak256": "0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a", "urls": ["bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b", "dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP"], "license": "GPL-3.0" }, "lib/account-abstraction/contracts/interfaces/IEntryPoint.sol": { "keccak256": "0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8", "urls": ["bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf", "dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd"], "license": "GPL-3.0" }, "lib/account-abstraction/contracts/interfaces/INonceManager.sol": { "keccak256": "0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12", "urls": ["bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2", "dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b"], "license": "GPL-3.0" }, "lib/account-abstraction/contracts/interfaces/IPaymaster.sol": { "keccak256": "0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456", "urls": ["bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8", "dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia"], "license": "GPL-3.0" }, "lib/account-abstraction/contracts/interfaces/IStakeManager.sol": { "keccak256": "0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f", "urls": ["bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3", "dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ"], "license": "GPL-3.0-only" }, "lib/account-abstraction/contracts/interfaces/UserOperation.sol": { "keccak256": "0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c", "urls": ["bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c", "dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN"], "license": "GPL-3.0" }, "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { "keccak256": "0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218", "urls": ["bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32", "dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Context.sol": { "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", "urls": ["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"], "license": "MIT" }, "src/interfaces/InspectablePaymasterInterface.sol": { "keccak256": "0xfa01cf6d6c5c7585be4ffba481461417568e83e4326e4d4f3f978f448c494c05", "urls": ["bzz-raw://359879084737d058f0098e12d25170e8181bf597231cb440302a945d6483e638", "dweb:/ipfs/QmWjJtxkBGXk8MmrVQCqp2gjyyibTmMc6b6GwQLcrcGyNp"], "license": "UNLICENSED" }, "src/paymaster/CheckoutPaymaster.sol": { "keccak256": "0x750ce14a013dca17e026f47f3e1f141c7941983a9e38d66d79ad32f7dd4f64d3", "urls": ["bzz-raw://e0a9a642e69bbba805719b3c12144f2e32d3e2b70d24392ae7b09dd72a9510c6", "dweb:/ipfs/Qma8sDR2eC1pjAjkizjNhBnBbMvZV1x6pv82Z4xjNHvnaW"], "license": "UNLICENSED" }, "src/paymaster/CheckoutPaymasterEventsAndErrors.sol": { "keccak256": "0xff791f10ae484b55407bdfa6f82516187388264e8e84bccd7571486c6ee08c37", "urls": ["bzz-raw://0df9a5fbbe1aa679422daa50a9f25a1fdd84df2a939903d9dd3f90d3a88f99e2", "dweb:/ipfs/QmPFaWWrb49R8WZizNKC7LN9YhWuhF7wey6cZKQg2WkMnr"], "license": "UNLICENSED" } }, "version": 1 }, "ast": { "absolutePath": "src/paymaster/CheckoutPaymaster.sol", "id": 54009, "exportedSymbols": { "ActiveState": [53806], "BasePaymaster": [361], "CheckoutPaymaster": [54008], "CheckoutPaymasterEventsAndErrors": [54021], "IEntryPoint": [857], "InspectablePaymasterInterface": [53775], "UserOperation": [1045] }, "nodeType": "SourceUnit", "src": "39:3583:74", "nodes": [{ "id": 53792, "nodeType": "PragmaDirective", "src": "39:24:74", "nodes": [], "literals": ["solidity", "^", "0.8", ".13"] }, { "id": 53794, "nodeType": "ImportDirective", "src": "65:90:74", "nodes": [], "absolutePath": "lib/account-abstraction/contracts/core/BasePaymaster.sol", "file": "@account-abstraction/contracts/core/BasePaymaster.sol", "nameLocation": "-1:-1:-1", "scope": 54009, "sourceUnit": 362, "symbolAliases": [{ "foreign": { "id": 53793, "name": "BasePaymaster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 361, "src": "78:13:74", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 53796, "nodeType": "ImportDirective", "src": "156:92:74", "nodes": [], "absolutePath": "lib/account-abstraction/contracts/interfaces/IEntryPoint.sol", "file": "@account-abstraction/contracts/interfaces/IEntryPoint.sol", "nameLocation": "-1:-1:-1", "scope": 54009, "sourceUnit": 858, "symbolAliases": [{ "foreign": { "id": 53795, "name": "IEntryPoint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 857, "src": "169:11:74", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 53798, "nodeType": "ImportDirective", "src": "249:96:74", "nodes": [], "absolutePath": "lib/account-abstraction/contracts/interfaces/UserOperation.sol", "file": "@account-abstraction/contracts/interfaces/UserOperation.sol", "nameLocation": "-1:-1:-1", "scope": 54009, "sourceUnit": 1216, "symbolAliases": [{ "foreign": { "id": 53797, "name": "UserOperation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1045, "src": "262:13:74", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 53800, "nodeType": "ImportDirective", "src": "347:100:74", "nodes": [], "absolutePath": "src/interfaces/InspectablePaymasterInterface.sol", "file": "../interfaces/InspectablePaymasterInterface.sol", "nameLocation": "-1:-1:-1", "scope": 54009, "sourceUnit": 53776, "symbolAliases": [{ "foreign": { "id": 53799, "name": "InspectablePaymasterInterface", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53775, "src": "360:29:74", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 53802, "nodeType": "ImportDirective", "src": "448:94:74", "nodes": [], "absolutePath": "src/paymaster/CheckoutPaymasterEventsAndErrors.sol", "file": "./CheckoutPaymasterEventsAndErrors.sol", "nameLocation": "-1:-1:-1", "scope": 54009, "sourceUnit": 54022, "symbolAliases": [{ "foreign": { "id": 53801, "name": "CheckoutPaymasterEventsAndErrors", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54021, "src": "461:32:74", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 53806, "nodeType": "EnumDefinition", "src": "544:77:74", "nodes": [], "canonicalName": "ActiveState", "members": [{ "id": 53803, "name": "UNSPECIFIED", "nameLocation": "567:11:74", "nodeType": "EnumValue", "src": "567:11:74" }, { "id": 53804, "name": "INACTIVE", "nameLocation": "589:8:74", "nodeType": "EnumValue", "src": "589:8:74" }, { "id": 53805, "name": "ACTIVE", "nameLocation": "608:6:74", "nodeType": "EnumValue", "src": "608:6:74" }], "name": "ActiveState", "nameLocation": "549:11:74" }, { "id": 54008, "nodeType": "ContractDefinition", "src": "678:2943:74", "nodes": [{ "id": 53816, "nodeType": "VariableDeclaration", "src": "805:35:74", "nodes": [], "constant": true, "functionSelector": "ffa1ad74", "mutability": "constant", "name": "VERSION", "nameLocation": "829:7:74", "scope": 54008, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 53814, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "805:7:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": { "hexValue": "31", "id": 53815, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "839:1:74", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "visibility": "public" }, { "id": 53819, "nodeType": "VariableDeclaration", "src": "846:35:74", "nodes": [], "constant": false, "mutability": "mutable", "name": "_ACTIVE_STATE_", "nameLocation": "867:14:74", "scope": 54008, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" }, "typeName": { "id": 53818, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 53817, "name": "ActiveState", "nameLocations": ["846:11:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 53806, "src": "846:11:74" }, "referencedDeclaration": 53806, "src": "846:11:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "visibility": "internal" }, { "id": 53822, "nodeType": "VariableDeclaration", "src": "887:34:74", "nodes": [], "constant": false, "mutability": "mutable", "name": "_LAST_OP_MODE_", "nameLocation": "907:14:74", "scope": 54008, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_PostOpMode_$884", "typeString": "enum IPaymaster.PostOpMode" }, "typeName": { "id": 53821, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 53820, "name": "PostOpMode", "nameLocations": ["887:10:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 884, "src": "887:10:74" }, "referencedDeclaration": 884, "src": "887:10:74", "typeDescriptions": { "typeIdentifier": "t_enum$_PostOpMode_$884", "typeString": "enum IPaymaster.PostOpMode" } }, "visibility": "internal" }, { "id": 53826, "nodeType": "VariableDeclaration", "src": "1005:45:74", "nodes": [], "constant": false, "mutability": "mutable", "name": "_OPERATORS_", "nameLocation": "1039:11:74", "scope": 54008, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "typeName": { "id": 53825, "keyName": "", "keyNameLocation": "-1:-1:-1", "keyType": { "id": 53823, "name": "address", "nodeType": "ElementaryTypeName", "src": "1013:7:74", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1005:24:74", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueName": "", "valueNameLocation": "-1:-1:-1", "valueType": { "id": 53824, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1024:4:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "visibility": "internal" }, { "id": 53852, "nodeType": "ModifierDefinition", "src": "1057:228:74", "nodes": [], "body": { "id": 53851, "nodeType": "Block", "src": "1077:208:74", "nodes": [], "statements": [{ "condition": { "id": 53832, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "1091:24:74", "subExpression": { "baseExpression": { "id": 53828, "name": "_OPERATORS_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53826, "src": "1092:11:74", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 53831, "indexExpression": { "expression": { "id": 53829, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1104:3:74", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 53830, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1108:6:74", "memberName": "sender", "nodeType": "MemberAccess", "src": "1104:10:74", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1092:23:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 53839, "nodeType": "IfStatement", "src": "1087:89:74", "trueBody": { "id": 53838, "nodeType": "Block", "src": "1117:59:74", "statements": [{ "errorCall": { "arguments": [{ "expression": { "id": 53834, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1154:3:74", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 53835, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1158:6:74", "memberName": "sender", "nodeType": "MemberAccess", "src": "1154:10:74", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 53833, "name": "InvalidOperator", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54016, "src": "1138:15:74", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", "typeString": "function (address) pure" } }, "id": 53836, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1138:27:74", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 53837, "nodeType": "RevertStatement", "src": "1131:34:74" }] } }, { "expression": { "id": 53843, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 53840, "name": "_ACTIVE_STATE_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53819, "src": "1185:14:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 53841, "name": "ActiveState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53806, "src": "1202:11:74", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ActiveState_$53806_$", "typeString": "type(enum ActiveState)" } }, "id": 53842, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1214:6:74", "memberName": "ACTIVE", "nodeType": "MemberAccess", "referencedDeclaration": 53805, "src": "1202:18:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "src": "1185:35:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "id": 53844, "nodeType": "ExpressionStatement", "src": "1185:35:74" }, { "id": 53845, "nodeType": "PlaceholderStatement", "src": "1230:1:74" }, { "expression": { "id": 53849, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 53846, "name": "_ACTIVE_STATE_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53819, "src": "1241:14:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 53847, "name": "ActiveState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53806, "src": "1258:11:74", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ActiveState_$53806_$", "typeString": "type(enum ActiveState)" } }, "id": 53848, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1270:8:74", "memberName": "INACTIVE", "nodeType": "MemberAccess", "referencedDeclaration": 53804, "src": "1258:20:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "src": "1241:37:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "id": 53850, "nodeType": "ExpressionStatement", "src": "1241:37:74" }] }, "name": "activate", "nameLocation": "1066:8:74", "parameters": { "id": 53827, "nodeType": "ParameterList", "parameters": [], "src": "1074:2:74" }, "virtual": false, "visibility": "internal" }, { "id": 53865, "nodeType": "ModifierDefinition", "src": "1291:131:74", "nodes": [], "body": { "id": 53864, "nodeType": "Block", "src": "1311:111:74", "nodes": [], "statements": [{ "condition": { "commonType": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" }, "id": 53857, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 53854, "name": "_ACTIVE_STATE_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53819, "src": "1325:14:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "expression": { "id": 53855, "name": "ActiveState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53806, "src": "1343:11:74", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ActiveState_$53806_$", "typeString": "type(enum ActiveState)" } }, "id": 53856, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1355:6:74", "memberName": "ACTIVE", "nodeType": "MemberAccess", "referencedDeclaration": 53805, "src": "1343:18:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "src": "1325:36:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 53862, "nodeType": "IfStatement", "src": "1321:84:74", "trueBody": { "id": 53861, "nodeType": "Block", "src": "1363:42:74", "statements": [{ "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 53858, "name": "Inactive", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54012, "src": "1384:8:74", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 53859, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1384:10:74", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 53860, "nodeType": "RevertStatement", "src": "1377:17:74" }] } }, { "id": 53863, "nodeType": "PlaceholderStatement", "src": "1414:1:74" }] }, "name": "isActive", "nameLocation": "1300:8:74", "parameters": { "id": 53853, "nodeType": "ParameterList", "parameters": [], "src": "1308:2:74" }, "virtual": false, "visibility": "internal" }, { "id": 53880, "nodeType": "FunctionDefinition", "src": "1428:116:74", "nodes": [], "body": { "id": 53879, "nodeType": "Block", "src": "1490:54:74", "nodes": [], "statements": [{ "expression": { "id": 53877, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 53874, "name": "_ACTIVE_STATE_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53819, "src": "1500:14:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 53875, "name": "ActiveState", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53806, "src": "1517:11:74", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ActiveState_$53806_$", "typeString": "type(enum ActiveState)" } }, "id": 53876, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1529:8:74", "memberName": "INACTIVE", "nodeType": "MemberAccess", "referencedDeclaration": 53804, "src": "1517:20:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "src": "1500:37:74", "typeDescriptions": { "typeIdentifier": "t_enum$_ActiveState_$53806", "typeString": "enum ActiveState" } }, "id": 53878, "nodeType": "ExpressionStatement", "src": "1500:37:74" }] }, "implemented": true, "kind": "constructor", "modifiers": [{ "arguments": [{ "id": 53871, "name": "entryPoint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53868, "src": "1478:10:74", "typeDescriptions": { "typeIdentifier": "t_contract$_IEntryPoint_$857", "typeString": "contract IEntryPoint" } }], "id": 53872, "kind": "baseConstructorSpecifier", "modifierName": { "id": 53870, "name": "BasePaymaster", "nameLocations": ["1464:13:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 361, "src": "1464:13:74" }, "nodeType": "ModifierInvocation", "src": "1464:25:74" }], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 53869, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 53868, "mutability": "mutable", "name": "entryPoint", "nameLocation": "1452:10:74", "nodeType": "VariableDeclaration", "scope": 53880, "src": "1440:22:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IEntryPoint_$857", "typeString": "contract IEntryPoint" }, "typeName": { "id": 53867, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 53866, "name": "IEntryPoint", "nameLocations": ["1440:11:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 857, "src": "1440:11:74" }, "referencedDeclaration": 857, "src": "1440:11:74", "typeDescriptions": { "typeIdentifier": "t_contract$_IEntryPoint_$857", "typeString": "contract IEntryPoint" } }, "visibility": "internal" }], "src": "1439:24:74" }, "returnParameters": { "id": 53873, "nodeType": "ParameterList", "parameters": [], "src": "1490:0:74" }, "scope": 54008, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 53915, "nodeType": "FunctionDefinition", "src": "1550:253:74", "nodes": [], "body": { "id": 53914, "nodeType": "Block", "src": "1659:144:74", "nodes": [], "statements": [{ "assignments": [53891], "declarations": [{ "constant": false, "id": 53891, "mutability": "mutable", "name": "n", "nameLocation": "1677:1:74", "nodeType": "VariableDeclaration", "scope": 53914, "src": "1669:9:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 53890, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1669:7:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "id": 53894, "initialValue": { "expression": { "id": 53892, "name": "operators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53883, "src": "1681:9:74", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" } }, "id": 53893, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1691:6:74", "memberName": "length", "nodeType": "MemberAccess", "src": "1681:16:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "1669:28:74" }, { "body": { "id": 53912, "nodeType": "Block", "src": "1735:62:74", "statements": [{ "expression": { "id": 53910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 53904, "name": "_OPERATORS_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53826, "src": "1749:11:74", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 53908, "indexExpression": { "baseExpression": { "id": 53905, "name": "operators", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53883, "src": "1761:9:74", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[] calldata" } }, "id": 53907, "indexExpression": { "id": 53906, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53896, "src": "1771:1:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1761:12:74", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1749:25:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 53909, "name": "isAllowed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53885, "src": "1777:9:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1749:37:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 53911, "nodeType": "ExpressionStatement", "src": "1749:37:74" }] }, "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 53900, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 53898, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53896, "src": "1723:1:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "id": 53899, "name": "n", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53891, "src": "1727:1:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1723:5:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 53913, "initializationExpression": { "assignments": [53896], "declarations": [{ "constant": false, "id": 53896, "mutability": "mutable", "name": "i", "nameLocation": "1720:1:74", "nodeType": "VariableDeclaration", "scope": 53913, "src": "1712:9:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 53895, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1712:7:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "id": 53897, "nodeType": "VariableDeclarationStatement", "src": "1712:9:74" }, "loopExpression": { "expression": { "id": 53902, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": true, "src": "1730:3:74", "subExpression": { "id": 53901, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53896, "src": "1732:1:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 53903, "nodeType": "ExpressionStatement", "src": "1730:3:74" }, "nodeType": "ForStatement", "src": "1707:90:74" }] }, "functionSelector": "a3111bdb", "implemented": true, "kind": "function", "modifiers": [{ "id": 53888, "kind": "modifierInvocation", "modifierName": { "id": 53887, "name": "onlyOwner", "nameLocations": ["1649:9:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 45215, "src": "1649:9:74" }, "nodeType": "ModifierInvocation", "src": "1649:9:74" }], "name": "setOperators", "nameLocation": "1559:12:74", "parameters": { "id": 53886, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 53883, "mutability": "mutable", "name": "operators", "nameLocation": "1600:9:74", "nodeType": "VariableDeclaration", "scope": 53915, "src": "1581:28:74", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 53881, "name": "address", "nodeType": "ElementaryTypeName", "src": "1581:7:74", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 53882, "nodeType": "ArrayTypeName", "src": "1581:9:74", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "visibility": "internal" }, { "constant": false, "id": 53885, "mutability": "mutable", "name": "isAllowed", "nameLocation": "1624:9:74", "nodeType": "VariableDeclaration", "scope": 53915, "src": "1619:14:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 53884, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1619:4:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "1571:68:74" }, "returnParameters": { "id": 53889, "nodeType": "ParameterList", "parameters": [], "src": "1659:0:74" }, "scope": 54008, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 53949, "nodeType": "FunctionDefinition", "src": "1809:427:74", "nodes": [], "body": { "id": 53948, "nodeType": "Block", "src": "1946:290:74", "nodes": [], "statements": [{ "assignments": [53927, 53929], "declarations": [{ "constant": false, "id": 53927, "mutability": "mutable", "name": "success", "nameLocation": "1962:7:74", "nodeType": "VariableDeclaration", "scope": 53948, "src": "1957:12:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 53926, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1957:4:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }, { "constant": false, "id": 53929, "mutability": "mutable", "name": "returnData", "nameLocation": "1984:10:74", "nodeType": "VariableDeclaration", "scope": 53948, "src": "1971:23:74", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 53928, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1971:5:74", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "id": 53940, "initialValue": { "arguments": [{ "id": 53938, "name": "callData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53919, "src": "2059:8:74", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }], "expression": { "arguments": [{ "id": 53932, "name": "target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53917, "src": "2006:6:74", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 53931, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1998:8:74", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { "id": 53930, "name": "address", "nodeType": "ElementaryTypeName", "src": "1998:8:74", "stateMutability": "payable", "typeDescriptions": {} } }, "id": 53933, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1998:15:74", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 53934, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2014:4:74", "memberName": "call", "nodeType": "MemberAccess", "src": "1998:20:74", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, "id": 53937, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{ "expression": { "id": 53935, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2039:3:74", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 53936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2043:5:74", "memberName": "value", "nodeType": "MemberAccess", "src": "2039:9:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "src": "1998:60:74", "typeDescriptions": { "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, "id": 53939, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1998:70:74", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", "typeString": "tuple(bool,bytes memory)" } }, "nodeType": "VariableDeclarationStatement", "src": "1956:112:74" }, { "condition": { "id": 53942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2082:8:74", "subExpression": { "id": 53941, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53927, "src": "2083:7:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 53945, "nodeType": "IfStatement", "src": "2078:125:74", "trueBody": { "id": 53944, "nodeType": "Block", "src": "2092:111:74", "statements": [{ "AST": { "nodeType": "YulBlock", "src": "2115:78:74", "statements": [{ "expression": { "arguments": [{ "arguments": [{ "name": "returnData", "nodeType": "YulIdentifier", "src": "2144:10:74" }, { "kind": "number", "nodeType": "YulLiteral", "src": "2156:2:74", "type": "", "value": "32" }], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "2140:3:74" }, "nodeType": "YulFunctionCall", "src": "2140:19:74" }, { "arguments": [{ "name": "returnData", "nodeType": "YulIdentifier", "src": "2167:10:74" }], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "2161:5:74" }, "nodeType": "YulFunctionCall", "src": "2161:17:74" }], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "2133:6:74" }, "nodeType": "YulFunctionCall", "src": "2133:46:74" }, "nodeType": "YulExpressionStatement", "src": "2133:46:74" }] }, "evmVersion": "paris", "externalReferences": [{ "declaration": 53929, "isOffset": false, "isSlot": false, "src": "2144:10:74", "valueSize": 1 }, { "declaration": 53929, "isOffset": false, "isSlot": false, "src": "2167:10:74", "valueSize": 1 }], "id": 53943, "nodeType": "InlineAssembly", "src": "2106:87:74" }] } }, { "expression": { "id": 53946, "name": "returnData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53929, "src": "2219:10:74", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "functionReturnParameters": 53925, "id": 53947, "nodeType": "Return", "src": "2212:17:74" }] }, "functionSelector": "c458b07b", "implemented": true, "kind": "function", "modifiers": [{ "id": 53922, "kind": "modifierInvocation", "modifierName": { "id": 53921, "name": "activate", "nameLocations": ["1914:8:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 53852, "src": "1914:8:74" }, "nodeType": "ModifierInvocation", "src": "1914:8:74" }], "name": "activateAndCall", "nameLocation": "1818:15:74", "parameters": { "id": 53920, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 53917, "mutability": "mutable", "name": "target", "nameLocation": "1851:6:74", "nodeType": "VariableDeclaration", "scope": 53949, "src": "1843:14:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 53916, "name": "address", "nodeType": "ElementaryTypeName", "src": "1843:7:74", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 53919, "mutability": "mutable", "name": "callData", "nameLocation": "1882:8:74", "nodeType": "VariableDeclaration", "scope": 53949, "src": "1867:23:74", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 53918, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1867:5:74", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "1833:63:74" }, "returnParameters": { "id": 53925, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 53924, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 53949, "src": "1932:12:74", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 53923, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1932:5:74", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "1931:14:74" }, "scope": 54008, "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "id": 53958, "nodeType": "FunctionDefinition", "src": "2242:98:74", "nodes": [], "body": { "id": 53957, "nodeType": "Block", "src": "2302:38:74", "nodes": [], "statements": [{ "expression": { "id": 53955, "name": "_LAST_OP_MODE_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53822, "src": "2319:14:74", "typeDescriptions": { "typeIdentifier": "t_enum$_PostOpMode_$884", "typeString": "enum IPaymaster.PostOpMode" } }, "functionReturnParameters": 53954, "id": 53956, "nodeType": "Return", "src": "2312:21:74" }] }, "baseFunctions": [53774], "functionSelector": "255ed947", "implemented": true, "kind": "function", "modifiers": [], "name": "getLastOpMode", "nameLocation": "2251:13:74", "parameters": { "id": 53950, "nodeType": "ParameterList", "parameters": [], "src": "2264:2:74" }, "returnParameters": { "id": 53954, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 53953, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 53958, "src": "2290:10:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_PostOpMode_$884", "typeString": "enum IPaymaster.PostOpMode" }, "typeName": { "id": 53952, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 53951, "name": "PostOpMode", "nameLocations": ["2290:10:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 884, "src": "2290:10:74" }, "referencedDeclaration": 884, "src": "2290:10:74", "typeDescriptions": { "typeIdentifier": "t_enum$_PostOpMode_$884", "typeString": "enum IPaymaster.PostOpMode" } }, "visibility": "internal" }], "src": "2289:12:74" }, "scope": 54008, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 53988, "nodeType": "FunctionDefinition", "src": "2641:435:74", "nodes": [], "body": { "id": 53987, "nodeType": "Block", "src": "2895:181:74", "nodes": [], "statements": [{ "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 53978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "expression": { "id": 53974, "name": "userOp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53962, "src": "2909:6:74", "typeDescriptions": { "typeIdentifier": "t_struct$_UserOperation_$1045_calldata_ptr", "typeString": "struct UserOperation calldata" } }, "id": 53975, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2916:16:74", "memberName": "paymasterAndData", "nodeType": "MemberAccess", "referencedDeclaration": 1042, "src": "2909:23:74", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 53976, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2933:6:74", "memberName": "length", "nodeType": "MemberAccess", "src": "2909:30:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "hexValue": "3230", "id": 53977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2943:2:74", "typeDescriptions": { "typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20" }, "value": "20" }, "src": "2909:36:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 53986, "nodeType": "IfStatement", "src": "2905:165:74", "trueBody": { "id": 53985, "nodeType": "Block", "src": "2947:123:74", "statements": [{ "errorCall": { "arguments": [{ "expression": { "expression": { "id": 53980, "name": "userOp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53962, "src": "3015:6:74", "typeDescriptions": { "typeIdentifier": "t_struct$_UserOperation_$1045_calldata_ptr", "typeString": "struct UserOperation calldata" } }, "id": 53981, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3022:16:74", "memberName": "paymasterAndData", "nodeType": "MemberAccess", "referencedDeclaration": 1042, "src": "3015:23:74", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 53982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3039:6:74", "memberName": "length", "nodeType": "MemberAccess", "src": "3015:30:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 53979, "name": "InvalidPaymasterAndDataLength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 54020, "src": "2968:29:74", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 53983, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2968:91:74", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 53984, "nodeType": "RevertStatement", "src": "2961:98:74" }] } }] }, "baseFunctions": [206], "documentation": { "id": 53959, "nodeType": "StructuredDocumentation", "src": "2346:290:74", "text": " @notice Validate a user operation that is using this paymaster.\n @param userOp ERC-4337 UserOperation.\n @return context The context containing the sponsor, spender, gasPriceUserOp, and opHash.\n @return validationData The validation result." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_validatePaymasterUserOp", "nameLocation": "2650:24:74", "overrides": { "id": 53968, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2819:8:74" }, "parameters": { "id": 53967, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 53962, "mutability": "mutable", "name": "userOp", "nameLocation": "2707:6:74", "nodeType": "VariableDeclaration", "scope": 53988, "src": "2684:29:74", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_struct$_UserOperation_$1045_calldata_ptr", "typeString": "struct UserOperation" }, "typeName": { "id": 53961, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 53960, "name": "UserOperation", "nameLocations": ["2684:13:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 1045, "src": "2684:13:74" }, "referencedDeclaration": 1045, "src": "2684:13:74", "typeDescriptions": { "typeIdentifier": "t_struct$_UserOperation_$1045_storage_ptr", "typeString": "struct UserOperation" } }, "visibility": "internal" }, { "constant": false, "id": 53964, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 53988, "src": "2723:7:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 53963, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2723:7:74", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }, { "constant": false, "id": 53966, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 53988, "src": "2753:7:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 53965, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2753:7:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "2674:106:74" }, "returnParameters": { "id": 53973, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 53970, "mutability": "mutable", "name": "context", "nameLocation": "2858:7:74", "nodeType": "VariableDeclaration", "scope": 53988, "src": "2845:20:74", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 53969, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2845:5:74", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }, { "constant": false, "id": 53972, "mutability": "mutable", "name": "validationData", "nameLocation": "2875:14:74", "nodeType": "VariableDeclaration", "scope": 53988, "src": "2867:22:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 53971, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2867:7:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "2844:46:74" }, "scope": 54008, "stateMutability": "pure", "virtual": false, "visibility": "internal" }, { "id": 54007, "nodeType": "FunctionDefinition", "src": "3431:188:74", "nodes": [], "body": { "id": 54006, "nodeType": "Block", "src": "3581:38:74", "nodes": [], "statements": [{ "expression": { "id": 54004, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 54002, "name": "_LAST_OP_MODE_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53822, "src": "3591:14:74", "typeDescriptions": { "typeIdentifier": "t_enum$_PostOpMode_$884", "typeString": "enum IPaymaster.PostOpMode" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 54003, "name": "mode", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 53992, "src": "3608:4:74", "typeDescriptions": { "typeIdentifier": "t_enum$_PostOpMode_$884", "typeString": "enum IPaymaster.PostOpMode" } }, "src": "3591:21:74", "typeDescriptions": { "typeIdentifier": "t_enum$_PostOpMode_$884", "typeString": "enum IPaymaster.PostOpMode" } }, "id": 54005, "nodeType": "ExpressionStatement", "src": "3591:21:74" }] }, "baseFunctions": [249], "documentation": { "id": 53989, "nodeType": "StructuredDocumentation", "src": "3082:344:74", "text": " @notice Post-operation handler.\n @dev Records the result of the user operation (e.g. success or revert).\n Also, reverts if the paymaster was not active, ensuring that only allowed\n operators can make use of this paymaster.\n @param mode The mode enum representing the operation result." }, "implemented": true, "kind": "function", "modifiers": [{ "id": 54000, "kind": "modifierInvocation", "modifierName": { "id": 53999, "name": "isActive", "nameLocations": ["3572:8:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 53865, "src": "3572:8:74" }, "nodeType": "ModifierInvocation", "src": "3572:8:74" }], "name": "_postOp", "nameLocation": "3440:7:74", "overrides": { "id": 53998, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3563:8:74" }, "parameters": { "id": 53997, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 53992, "mutability": "mutable", "name": "mode", "nameLocation": "3468:4:74", "nodeType": "VariableDeclaration", "scope": 54007, "src": "3457:15:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_enum$_PostOpMode_$884", "typeString": "enum IPaymaster.PostOpMode" }, "typeName": { "id": 53991, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 53990, "name": "PostOpMode", "nameLocations": ["3457:10:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 884, "src": "3457:10:74" }, "referencedDeclaration": 884, "src": "3457:10:74", "typeDescriptions": { "typeIdentifier": "t_enum$_PostOpMode_$884", "typeString": "enum IPaymaster.PostOpMode" } }, "visibility": "internal" }, { "constant": false, "id": 53994, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 54007, "src": "3482:14:74", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 53993, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3482:5:74", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }, { "constant": false, "id": 53996, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 54007, "src": "3520:7:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 53995, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3520:7:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "3447:106:74" }, "returnParameters": { "id": 54001, "nodeType": "ParameterList", "parameters": [], "src": "3581:0:74" }, "scope": 54008, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }], "abstract": false, "baseContracts": [{ "baseName": { "id": 53808, "name": "BasePaymaster", "nameLocations": ["712:13:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 361, "src": "712:13:74" }, "id": 53809, "nodeType": "InheritanceSpecifier", "src": "712:13:74" }, { "baseName": { "id": 53810, "name": "InspectablePaymasterInterface", "nameLocations": ["731:29:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 53775, "src": "731:29:74" }, "id": 53811, "nodeType": "InheritanceSpecifier", "src": "731:29:74" }, { "baseName": { "id": 53812, "name": "CheckoutPaymasterEventsAndErrors", "nameLocations": ["766:32:74"], "nodeType": "IdentifierPath", "referencedDeclaration": 54021, "src": "766:32:74" }, "id": 53813, "nodeType": "InheritanceSpecifier", "src": "766:32:74" }], "canonicalName": "CheckoutPaymaster", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 53807, "nodeType": "StructuredDocumentation", "src": "623:54:74", "text": " @title CheckoutPaymaster\n @author Fun.xyz" }, "fullyImplemented": true, "linearizedBaseContracts": [54008, 54021, 53775, 361, 45296, 47631, 911], "name": "CheckoutPaymaster", "nameLocation": "687:17:74", "scope": 54009, "usedErrors": [54012, 54016, 54020], "usedEvents": [45197] }], "license": "UNLICENSED" }, "id": 74 }
1
+ {
2
+ "abi": [
3
+ {
4
+ "type": "constructor",
5
+ "inputs": [
6
+ {
7
+ "name": "entryPoint",
8
+ "type": "address",
9
+ "internalType": "contract IEntryPoint"
10
+ }
11
+ ],
12
+ "stateMutability": "nonpayable"
13
+ },
14
+ {
15
+ "type": "function",
16
+ "name": "VERSION",
17
+ "inputs": [],
18
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
19
+ "stateMutability": "view"
20
+ },
21
+ {
22
+ "type": "function",
23
+ "name": "activateAndCall",
24
+ "inputs": [
25
+ { "name": "target", "type": "address", "internalType": "address" },
26
+ { "name": "callData", "type": "bytes", "internalType": "bytes" }
27
+ ],
28
+ "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
29
+ "stateMutability": "payable"
30
+ },
31
+ {
32
+ "type": "function",
33
+ "name": "addStake",
34
+ "inputs": [
35
+ {
36
+ "name": "unstakeDelaySec",
37
+ "type": "uint32",
38
+ "internalType": "uint32"
39
+ }
40
+ ],
41
+ "outputs": [],
42
+ "stateMutability": "payable"
43
+ },
44
+ {
45
+ "type": "function",
46
+ "name": "deposit",
47
+ "inputs": [],
48
+ "outputs": [],
49
+ "stateMutability": "payable"
50
+ },
51
+ {
52
+ "type": "function",
53
+ "name": "entryPoint",
54
+ "inputs": [],
55
+ "outputs": [
56
+ {
57
+ "name": "",
58
+ "type": "address",
59
+ "internalType": "contract IEntryPoint"
60
+ }
61
+ ],
62
+ "stateMutability": "view"
63
+ },
64
+ {
65
+ "type": "function",
66
+ "name": "getDeposit",
67
+ "inputs": [],
68
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
69
+ "stateMutability": "view"
70
+ },
71
+ {
72
+ "type": "function",
73
+ "name": "getLastOpMode",
74
+ "inputs": [],
75
+ "outputs": [
76
+ {
77
+ "name": "",
78
+ "type": "uint8",
79
+ "internalType": "enum IPaymaster.PostOpMode"
80
+ }
81
+ ],
82
+ "stateMutability": "view"
83
+ },
84
+ {
85
+ "type": "function",
86
+ "name": "owner",
87
+ "inputs": [],
88
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
89
+ "stateMutability": "view"
90
+ },
91
+ {
92
+ "type": "function",
93
+ "name": "postOp",
94
+ "inputs": [
95
+ {
96
+ "name": "mode",
97
+ "type": "uint8",
98
+ "internalType": "enum IPaymaster.PostOpMode"
99
+ },
100
+ { "name": "context", "type": "bytes", "internalType": "bytes" },
101
+ {
102
+ "name": "actualGasCost",
103
+ "type": "uint256",
104
+ "internalType": "uint256"
105
+ }
106
+ ],
107
+ "outputs": [],
108
+ "stateMutability": "nonpayable"
109
+ },
110
+ {
111
+ "type": "function",
112
+ "name": "renounceOwnership",
113
+ "inputs": [],
114
+ "outputs": [],
115
+ "stateMutability": "nonpayable"
116
+ },
117
+ {
118
+ "type": "function",
119
+ "name": "setOperators",
120
+ "inputs": [
121
+ {
122
+ "name": "operators",
123
+ "type": "address[]",
124
+ "internalType": "address[]"
125
+ },
126
+ { "name": "isAllowed", "type": "bool", "internalType": "bool" }
127
+ ],
128
+ "outputs": [],
129
+ "stateMutability": "nonpayable"
130
+ },
131
+ {
132
+ "type": "function",
133
+ "name": "transferOwnership",
134
+ "inputs": [
135
+ { "name": "newOwner", "type": "address", "internalType": "address" }
136
+ ],
137
+ "outputs": [],
138
+ "stateMutability": "nonpayable"
139
+ },
140
+ {
141
+ "type": "function",
142
+ "name": "unlockStake",
143
+ "inputs": [],
144
+ "outputs": [],
145
+ "stateMutability": "nonpayable"
146
+ },
147
+ {
148
+ "type": "function",
149
+ "name": "validatePaymasterUserOp",
150
+ "inputs": [
151
+ {
152
+ "name": "userOp",
153
+ "type": "tuple",
154
+ "internalType": "struct UserOperation",
155
+ "components": [
156
+ { "name": "sender", "type": "address", "internalType": "address" },
157
+ { "name": "nonce", "type": "uint256", "internalType": "uint256" },
158
+ { "name": "initCode", "type": "bytes", "internalType": "bytes" },
159
+ { "name": "callData", "type": "bytes", "internalType": "bytes" },
160
+ {
161
+ "name": "callGasLimit",
162
+ "type": "uint256",
163
+ "internalType": "uint256"
164
+ },
165
+ {
166
+ "name": "verificationGasLimit",
167
+ "type": "uint256",
168
+ "internalType": "uint256"
169
+ },
170
+ {
171
+ "name": "preVerificationGas",
172
+ "type": "uint256",
173
+ "internalType": "uint256"
174
+ },
175
+ {
176
+ "name": "maxFeePerGas",
177
+ "type": "uint256",
178
+ "internalType": "uint256"
179
+ },
180
+ {
181
+ "name": "maxPriorityFeePerGas",
182
+ "type": "uint256",
183
+ "internalType": "uint256"
184
+ },
185
+ {
186
+ "name": "paymasterAndData",
187
+ "type": "bytes",
188
+ "internalType": "bytes"
189
+ },
190
+ { "name": "signature", "type": "bytes", "internalType": "bytes" }
191
+ ]
192
+ },
193
+ { "name": "userOpHash", "type": "bytes32", "internalType": "bytes32" },
194
+ { "name": "maxCost", "type": "uint256", "internalType": "uint256" }
195
+ ],
196
+ "outputs": [
197
+ { "name": "context", "type": "bytes", "internalType": "bytes" },
198
+ {
199
+ "name": "validationData",
200
+ "type": "uint256",
201
+ "internalType": "uint256"
202
+ }
203
+ ],
204
+ "stateMutability": "nonpayable"
205
+ },
206
+ {
207
+ "type": "function",
208
+ "name": "withdrawStake",
209
+ "inputs": [
210
+ {
211
+ "name": "withdrawAddress",
212
+ "type": "address",
213
+ "internalType": "address payable"
214
+ }
215
+ ],
216
+ "outputs": [],
217
+ "stateMutability": "nonpayable"
218
+ },
219
+ {
220
+ "type": "function",
221
+ "name": "withdrawTo",
222
+ "inputs": [
223
+ {
224
+ "name": "withdrawAddress",
225
+ "type": "address",
226
+ "internalType": "address payable"
227
+ },
228
+ { "name": "amount", "type": "uint256", "internalType": "uint256" }
229
+ ],
230
+ "outputs": [],
231
+ "stateMutability": "nonpayable"
232
+ },
233
+ {
234
+ "type": "event",
235
+ "name": "OwnershipTransferred",
236
+ "inputs": [
237
+ {
238
+ "name": "previousOwner",
239
+ "type": "address",
240
+ "indexed": true,
241
+ "internalType": "address"
242
+ },
243
+ {
244
+ "name": "newOwner",
245
+ "type": "address",
246
+ "indexed": true,
247
+ "internalType": "address"
248
+ }
249
+ ],
250
+ "anonymous": false
251
+ },
252
+ { "type": "error", "name": "Inactive", "inputs": [] },
253
+ {
254
+ "type": "error",
255
+ "name": "InvalidOperator",
256
+ "inputs": [
257
+ { "name": "operator", "type": "address", "internalType": "address" }
258
+ ]
259
+ },
260
+ {
261
+ "type": "error",
262
+ "name": "InvalidPaymasterAndDataLength",
263
+ "inputs": [
264
+ { "name": "length", "type": "uint256", "internalType": "uint256" }
265
+ ]
266
+ }
267
+ ],
268
+ "bytecode": {
269
+ "object": "0x60a060405234801561001057600080fd5b50604051610f03380380610f0383398101604081905261002f916100ae565b806100393361005e565b6001600160a01b0316608052506000805460ff60a01b1916600160a01b1790556100de565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100c057600080fd5b81516001600160a01b03811681146100d757600080fd5b9392505050565b608051610dd961012a600039600081816101f60152818161031d015281816103b4015281816104af01528181610543015281816105b30152818161071c01526108bb0152610dd96000f3fe6080604052600436106100f35760003560e01c8063bb9fe6bf1161008a578063d0e30db011610059578063d0e30db014610290578063f2fde38b14610298578063f465c77e146102b8578063ffa1ad74146102e657600080fd5b8063bb9fe6bf14610218578063c23a5cea1461022d578063c399ec881461024d578063c458b07b1461027057600080fd5b80638da5cb5b116100c65780638da5cb5b14610172578063a3111bdb146101a4578063a9a23409146101c4578063b0d691fe146101e457600080fd5b80630396cb60146100f8578063205c28781461010d578063255ed9471461012d578063715018a61461015d575b600080fd5b61010b6101063660046109d5565b6102fb565b005b34801561011957600080fd5b5061010b610128366004610a17565b610386565b34801561013957600080fd5b50600054600160a81b900460ff166040516101549190610a59565b60405180910390f35b34801561016957600080fd5b5061010b6103f8565b34801561017e57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610154565b3480156101b057600080fd5b5061010b6101bf366004610a81565b61040c565b3480156101d057600080fd5b5061010b6101df366004610b55565b61048b565b3480156101f057600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561022457600080fd5b5061010b6104a5565b34801561023957600080fd5b5061010b610248366004610bb5565b61051c565b34801561025957600080fd5b5061026261059b565b604051908152602001610154565b61028361027e366004610bd2565b61062b565b6040516101549190610c6d565b61010b610707565b3480156102a457600080fd5b5061010b6102b3366004610bb5565b610769565b3480156102c457600080fd5b506102d86102d3366004610c80565b6107e2565b604051610154929190610cd4565b3480156102f257600080fd5b50610262600181565b610303610806565b604051621cb65b60e51b815263ffffffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630396cb609034906024016000604051808303818588803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b505050505050565b61038e610806565b60405163040b850f60e31b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561036a57600080fd5b610400610806565b61040a6000610860565b565b610414610806565b8160005b8181101561048457826001600087878581811061043757610437610cf6565b905060200201602081019061044c9190610bb5565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561047d81610d0c565b9050610418565b5050505050565b6104936108b0565b61049f84848484610920565b50505050565b6104ad610806565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561050857600080fd5b505af115801561049f573d6000803e3d6000fd5b610524610806565b60405163611d2e7560e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561058757600080fd5b505af1158015610484573d6000803e3d6000fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190610d33565b905090565b3360009081526001602052604090205460609060ff1661066557604051633eaa03e360e01b81523360048201526024015b60405180910390fd5b6000805460ff60a01b1916600160a11b17815560405181906001600160a01b0387169034906106979088908890610d4c565b60006040518083038185875af1925050503d80600081146106d4576040519150601f19603f3d011682016040523d82523d6000602084013e6106d9565b606091505b5091509150816106eb57805160208201fd5b6000805460ff60a01b1916600160a01b17905595945050505050565b60405163b760faf960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b760faf99034906024016000604051808303818588803b15801561058757600080fd5b610771610806565b6001600160a01b0381166107d65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065c565b6107df81610860565b50565b606060006107ee6108b0565b6107f985858561098e565b915091505b935093915050565b6000546001600160a01b0316331461040a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461040a5760405162461bcd60e51b815260206004820152601560248201527414d95b99195c881b9bdd08115b9d1c9e541bda5b9d605a1b604482015260640161065c565b6002600054600160a01b900460ff16600281111561094057610940610a43565b1461095e57604051632e8acb0d60e01b815260040160405180910390fd5b6000805485919060ff60a81b1916600160a81b83600281111561098357610983610a43565b021790555050505050565b606060006109a0610120860186610d5c565b90506014146107fe576109b7610120860186610d5c565b604051635ae9bb9760e01b815261065c925060040190815260200190565b6000602082840312156109e757600080fd5b813563ffffffff811681146109fb57600080fd5b9392505050565b6001600160a01b03811681146107df57600080fd5b60008060408385031215610a2a57600080fd5b8235610a3581610a02565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310610a7b57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600060408486031215610a9657600080fd5b833567ffffffffffffffff80821115610aae57600080fd5b818601915086601f830112610ac257600080fd5b813581811115610ad157600080fd5b8760208260051b8501011115610ae657600080fd5b602092830195509350508401358015158114610b0157600080fd5b809150509250925092565b60008083601f840112610b1e57600080fd5b50813567ffffffffffffffff811115610b3657600080fd5b602083019150836020828501011115610b4e57600080fd5b9250929050565b60008060008060608587031215610b6b57600080fd5b843560038110610b7a57600080fd5b9350602085013567ffffffffffffffff811115610b9657600080fd5b610ba287828801610b0c565b9598909750949560400135949350505050565b600060208284031215610bc757600080fd5b81356109fb81610a02565b600080600060408486031215610be757600080fd5b8335610bf281610a02565b9250602084013567ffffffffffffffff811115610c0e57600080fd5b610c1a86828701610b0c565b9497909650939450505050565b6000815180845260005b81811015610c4d57602081850181015186830182015201610c31565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006109fb6020830184610c27565b600080600060608486031215610c9557600080fd5b833567ffffffffffffffff811115610cac57600080fd5b84016101608187031215610cbf57600080fd5b95602085013595506040909401359392505050565b604081526000610ce76040830185610c27565b90508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b600060018201610d2c57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610d4557600080fd5b5051919050565b8183823760009101908152919050565b6000808335601e19843603018112610d7357600080fd5b83018035915067ffffffffffffffff821115610d8e57600080fd5b602001915036819003821315610b4e57600080fdfea26469706673582212206ca98fa625bb450eac6fbf76f3fdd1ad097fee4001bd72ad8d66bb88a9b49f6d64736f6c63430008140033",
270
+ "sourceMap": "678:2943:74:-:0;;;1428:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1478:10;936:32:32;719:10:51;936:18:32;:32::i;:::-;-1:-1:-1;;;;;564:24:1;;;-1:-1:-1;1500:14:74::1;:37:::0;;-1:-1:-1;;;;1500:37:74::1;-1:-1:-1::0;;;1500:37:74::1;::::0;;678:2943;;2426:187:32;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:32;;;-1:-1:-1;;;;;;2534:17:32;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;14:309:88:-;103:6;156:2;144:9;135:7;131:23;127:32;124:52;;;172:1;169;162:12;124:52;198:16;;-1:-1:-1;;;;;243:31:88;;233:42;;223:70;;289:1;286;279:12;223:70;312:5;14:309;-1:-1:-1;;;14:309:88:o;328:127::-;678:2943:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
271
+ "linkReferences": {}
272
+ },
273
+ "deployedBytecode": {
274
+ "object": "0x6080604052600436106100f35760003560e01c8063bb9fe6bf1161008a578063d0e30db011610059578063d0e30db014610290578063f2fde38b14610298578063f465c77e146102b8578063ffa1ad74146102e657600080fd5b8063bb9fe6bf14610218578063c23a5cea1461022d578063c399ec881461024d578063c458b07b1461027057600080fd5b80638da5cb5b116100c65780638da5cb5b14610172578063a3111bdb146101a4578063a9a23409146101c4578063b0d691fe146101e457600080fd5b80630396cb60146100f8578063205c28781461010d578063255ed9471461012d578063715018a61461015d575b600080fd5b61010b6101063660046109d5565b6102fb565b005b34801561011957600080fd5b5061010b610128366004610a17565b610386565b34801561013957600080fd5b50600054600160a81b900460ff166040516101549190610a59565b60405180910390f35b34801561016957600080fd5b5061010b6103f8565b34801561017e57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610154565b3480156101b057600080fd5b5061010b6101bf366004610a81565b61040c565b3480156101d057600080fd5b5061010b6101df366004610b55565b61048b565b3480156101f057600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561022457600080fd5b5061010b6104a5565b34801561023957600080fd5b5061010b610248366004610bb5565b61051c565b34801561025957600080fd5b5061026261059b565b604051908152602001610154565b61028361027e366004610bd2565b61062b565b6040516101549190610c6d565b61010b610707565b3480156102a457600080fd5b5061010b6102b3366004610bb5565b610769565b3480156102c457600080fd5b506102d86102d3366004610c80565b6107e2565b604051610154929190610cd4565b3480156102f257600080fd5b50610262600181565b610303610806565b604051621cb65b60e51b815263ffffffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630396cb609034906024016000604051808303818588803b15801561036a57600080fd5b505af115801561037e573d6000803e3d6000fd5b505050505050565b61038e610806565b60405163040b850f60e31b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561036a57600080fd5b610400610806565b61040a6000610860565b565b610414610806565b8160005b8181101561048457826001600087878581811061043757610437610cf6565b905060200201602081019061044c9190610bb5565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561047d81610d0c565b9050610418565b5050505050565b6104936108b0565b61049f84848484610920565b50505050565b6104ad610806565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561050857600080fd5b505af115801561049f573d6000803e3d6000fd5b610524610806565b60405163611d2e7560e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561058757600080fd5b505af1158015610484573d6000803e3d6000fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190610d33565b905090565b3360009081526001602052604090205460609060ff1661066557604051633eaa03e360e01b81523360048201526024015b60405180910390fd5b6000805460ff60a01b1916600160a11b17815560405181906001600160a01b0387169034906106979088908890610d4c565b60006040518083038185875af1925050503d80600081146106d4576040519150601f19603f3d011682016040523d82523d6000602084013e6106d9565b606091505b5091509150816106eb57805160208201fd5b6000805460ff60a01b1916600160a01b17905595945050505050565b60405163b760faf960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b760faf99034906024016000604051808303818588803b15801561058757600080fd5b610771610806565b6001600160a01b0381166107d65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065c565b6107df81610860565b50565b606060006107ee6108b0565b6107f985858561098e565b915091505b935093915050565b6000546001600160a01b0316331461040a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461040a5760405162461bcd60e51b815260206004820152601560248201527414d95b99195c881b9bdd08115b9d1c9e541bda5b9d605a1b604482015260640161065c565b6002600054600160a01b900460ff16600281111561094057610940610a43565b1461095e57604051632e8acb0d60e01b815260040160405180910390fd5b6000805485919060ff60a81b1916600160a81b83600281111561098357610983610a43565b021790555050505050565b606060006109a0610120860186610d5c565b90506014146107fe576109b7610120860186610d5c565b604051635ae9bb9760e01b815261065c925060040190815260200190565b6000602082840312156109e757600080fd5b813563ffffffff811681146109fb57600080fd5b9392505050565b6001600160a01b03811681146107df57600080fd5b60008060408385031215610a2a57600080fd5b8235610a3581610a02565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310610a7b57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600060408486031215610a9657600080fd5b833567ffffffffffffffff80821115610aae57600080fd5b818601915086601f830112610ac257600080fd5b813581811115610ad157600080fd5b8760208260051b8501011115610ae657600080fd5b602092830195509350508401358015158114610b0157600080fd5b809150509250925092565b60008083601f840112610b1e57600080fd5b50813567ffffffffffffffff811115610b3657600080fd5b602083019150836020828501011115610b4e57600080fd5b9250929050565b60008060008060608587031215610b6b57600080fd5b843560038110610b7a57600080fd5b9350602085013567ffffffffffffffff811115610b9657600080fd5b610ba287828801610b0c565b9598909750949560400135949350505050565b600060208284031215610bc757600080fd5b81356109fb81610a02565b600080600060408486031215610be757600080fd5b8335610bf281610a02565b9250602084013567ffffffffffffffff811115610c0e57600080fd5b610c1a86828701610b0c565b9497909650939450505050565b6000815180845260005b81811015610c4d57602081850181015186830182015201610c31565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006109fb6020830184610c27565b600080600060608486031215610c9557600080fd5b833567ffffffffffffffff811115610cac57600080fd5b84016101608187031215610cbf57600080fd5b95602085013595506040909401359392505050565b604081526000610ce76040830185610c27565b90508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b600060018201610d2c57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610d4557600080fd5b5051919050565b8183823760009101908152919050565b6000808335601e19843603018112610d7357600080fd5b83018035915067ffffffffffffffff821115610d8e57600080fd5b602001915036819003821315610b4e57600080fdfea26469706673582212206ca98fa625bb450eac6fbf76f3fdd1ad097fee4001bd72ad8d66bb88a9b49f6d64736f6c63430008140033",
275
+ "sourceMap": "678:2943:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3094:141:1;;;;;;:::i;:::-;;:::i;:::-;;2721:149;;;;;;;;;;-1:-1:-1;2721:149:1;;;;;:::i;:::-;;:::i;2242:98:74:-;;;;;;;;;;-1:-1:-1;2290:10:74;2319:14;-1:-1:-1;;;2319:14:74;;;;2242:98;;;;;;:::i;:::-;;;;;;;;1824:101:32;;;;;;;;;;;;;:::i;1201:85::-;;;;;;;;;;-1:-1:-1;1247:7:32;1273:6;-1:-1:-1;;;;;1273:6:32;1201:85;;;-1:-1:-1;;;;;1418:32:88;;;1400:51;;1388:2;1373:18;1201:85:32;1254:203:88;1550:253:74;;;;;;;;;;-1:-1:-1;1550:253:74;;;;;:::i;:::-;;:::i;1143:186:1:-;;;;;;;;;;-1:-1:-1;1143:186:1;;;;;:::i;:::-;;:::i;471:39::-;;;;;;;;;;;;;;;3588:83;;;;;;;;;;;;;:::i;3890:133::-;;;;;;;;;;-1:-1:-1;3890:133:1;;;;;:::i;:::-;;:::i;3318:111::-;;;;;;;;;;;;;:::i;:::-;;;3882:25:88;;;3870:2;3855:18;3318:111:1;3736:177:88;1809:427:74;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2474:105:1:-;;;:::i;2074:198:32:-;;;;;;;;;;-1:-1:-1;2074:198:32;;;;;:::i;:::-;;:::i;632:290:1:-;;;;;;;;;;-1:-1:-1;632:290:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;805:35:74:-;;;;;;;;;;;;839:1;805:35;;3094:141:1;1094:13:32;:11;:13::i;:::-;3173:55:1::1;::::0;-1:-1:-1;;;3173:55:1;;6385:10:88;6373:23;;3173:55:1::1;::::0;::::1;6355:42:88::0;3173:10:1::1;-1:-1:-1::0;;;;;3173:19:1::1;::::0;::::1;::::0;3201:9:::1;::::0;6328:18:88;;3173:55:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;3094:141:::0;:::o;2721:149::-;1094:13:32;:11;:13::i;:::-;2817:46:1::1;::::0;-1:-1:-1;;;2817:46:1;;-1:-1:-1;;;;;6616:32:88;;;2817:46:1::1;::::0;::::1;6598:51:88::0;6665:18;;;6658:34;;;2817:10:1::1;:21;::::0;::::1;::::0;6571:18:88;;2817:46:1::1;;;;;;;;;;;;;;;;;::::0;::::1;1824:101:32::0;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1550:253:74:-;1094:13:32;:11;:13::i;:::-;1681:9:74;1669::::1;1707:90;1727:1;1723;:5;1707:90;;;1777:9;1749:11;:25;1761:9;;1771:1;1761:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1749:25:74::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;1749:25:74;:37;;-1:-1:-1;;1749:37:74::1;::::0;::::1;;::::0;;;::::1;::::0;;1730:3:::1;::::0;::::1;:::i;:::-;;;1707:90;;;;1659:144;1550:253:::0;;;:::o;1143:186:1:-;1251:24;:22;:24::i;:::-;1285:37;1293:4;1299:7;;1308:13;1285:7;:37::i;:::-;1143:186;;;;:::o;3588:83::-;1094:13:32;:11;:13::i;:::-;3640:10:1::1;-1:-1:-1::0;;;;;3640:22:1::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;3890:133:::0;1094:13:32;:11;:13::i;:::-;3975:41:1::1;::::0;-1:-1:-1;;;3975:41:1;;-1:-1:-1;;;;;1418:32:88;;;3975:41:1::1;::::0;::::1;1400:51:88::0;3975:10:1::1;:24;::::0;::::1;::::0;1373:18:88;;3975:41:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;3318:111:::0;3387:35;;-1:-1:-1;;;3387:35:1;;3416:4;3387:35;;;1400:51:88;3361:7:1;;3387:10;-1:-1:-1;;;;;3387:20:1;;;;1373:18:88;;3387:35:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3380:42;;3318:111;:::o;1809:427:74:-;1104:10;1092:23;;;;:11;:23;;;;;;1932:12;;1092:23;;1087:89;;1138:27;;-1:-1:-1;;;1138:27:74;;1154:10;1138:27;;;1400:51:88;1373:18;;1138:27:74;;;;;;;;1087:89;1185:14;:35;;-1:-1:-1;;;;1185:35:74;-1:-1:-1;;;1185:35:74;;;1998:70:::1;::::0;1185:14;;-1:-1:-1;;;;;1998:20:74;::::1;::::0;2039:9:::1;::::0;1998:70:::1;::::0;2059:8;;;;1998:70:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1956:112;;;;2083:7;2078:125;;2167:10;2161:17;2156:2;2144:10;2140:19;2133:46;2078:125;1241:14:::0;:37;;-1:-1:-1;;;;1241:37:74;-1:-1:-1;;;1241:37:74;;;2219:10;;-1:-1:-1;;;;;1809:427:74:o;2474:105:1:-;2518:54;;-1:-1:-1;;;2518:54:1;;2566:4;2518:54;;;1400:51:88;2518:10:1;-1:-1:-1;;;;;2518:20:1;;;;2547:9;;1373:18:88;;2518:54:1;;;;;;;;;;;;;;;;;;;2074:198:32;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:32;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:32;;7963:2:88;2154:73:32::1;::::0;::::1;7945:21:88::0;8002:2;7982:18;;;7975:30;8041:34;8021:18;;;8014:62;-1:-1:-1;;;8092:18:88;;;8085:36;8138:19;;2154:73:32::1;7761:402:88::0;2154:73:32::1;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;632:290:1:-;764:20;786:22;821:24;:22;:24::i;:::-;862:53;887:6;895:10;907:7;862:24;:53::i;:::-;855:60;;;;632:290;;;;;;;:::o;1359:130:32:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:32;719:10:51;1422:23:32;1414:68;;;;-1:-1:-1;;;1414:68:32;;8370:2:88;1414:68:32;;;8352:21:88;;;8389:18;;;8382:30;8448:34;8428:18;;;8421:62;8500:18;;1414:68:32;8168:356:88;2426:187:32;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:32;;;-1:-1:-1;;;;;;2534:17:32;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;4087:135:1:-;4156:10;-1:-1:-1;;;;;4178:10:1;4156:33;;4148:67;;;;-1:-1:-1;;;4148:67:1;;8731:2:88;4148:67:1;;;8713:21:88;8770:2;8750:18;;;8743:30;-1:-1:-1;;;8789:18:88;;;8782:51;8850:18;;4148:67:1;8529:345:88;3431:188:74;1343:18;1325:14;;-1:-1:-1;;;1325:14:74;;;;:36;;;;;;;;:::i;:::-;;1321:84;;1384:10;;-1:-1:-1;;;1384:10:74;;;;;;;;;;;1321:84;3591:14:::1;:21:::0;;3608:4;;3591:14;-1:-1:-1;;;;3591:21:74::1;-1:-1:-1::0;;;3608:4:74;3591:21:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;3431:188:::0;;;;:::o;2641:435::-;2845:20;2867:22;2909:23;;;;:6;:23;:::i;:::-;:30;;2943:2;2909:36;2905:165;;3015:23;;;;:6;:23;:::i;:::-;2968:91;;-1:-1:-1;;;2968:91:74;;;;-1:-1:-1;2968:91:74;;3882:25:88;;;3870:2;3855:18;;3736:177;14:276;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:10;223:5;219:22;212:5;209:33;199:61;;256:1;253;246:12;199:61;279:5;14:276;-1:-1:-1;;;14:276:88:o;295:139::-;-1:-1:-1;;;;;378:31:88;;368:42;;358:70;;424:1;421;414:12;439:331;515:6;523;576:2;564:9;555:7;551:23;547:32;544:52;;;592:1;589;582:12;544:52;631:9;618:23;650:39;683:5;650:39;:::i;:::-;708:5;760:2;745:18;;;;732:32;;-1:-1:-1;;;439:331:88:o;775:127::-;836:10;831:3;827:20;824:1;817:31;867:4;864:1;857:15;891:4;888:1;881:15;907:342;1053:2;1038:18;;1086:1;1075:13;;1065:144;;1131:10;1126:3;1122:20;1119:1;1112:31;1166:4;1163:1;1156:15;1194:4;1191:1;1184:15;1065:144;1218:25;;;907:342;:::o;1462:782::-;1554:6;1562;1570;1623:2;1611:9;1602:7;1598:23;1594:32;1591:52;;;1639:1;1636;1629:12;1591:52;1679:9;1666:23;1708:18;1749:2;1741:6;1738:14;1735:34;;;1765:1;1762;1755:12;1735:34;1803:6;1792:9;1788:22;1778:32;;1848:7;1841:4;1837:2;1833:13;1829:27;1819:55;;1870:1;1867;1860:12;1819:55;1910:2;1897:16;1936:2;1928:6;1925:14;1922:34;;;1952:1;1949;1942:12;1922:34;2007:7;2000:4;1990:6;1987:1;1983:14;1979:2;1975:23;1971:34;1968:47;1965:67;;;2028:1;2025;2018:12;1965:67;2059:4;2051:13;;;;-1:-1:-1;2083:6:88;-1:-1:-1;;2124:20:88;;2111:34;2181:13;;2174:21;2164:32;;2154:60;;2210:1;2207;2200:12;2154:60;2233:5;2223:15;;;1462:782;;;;;:::o;2249:347::-;2300:8;2310:6;2364:3;2357:4;2349:6;2345:17;2341:27;2331:55;;2382:1;2379;2372:12;2331:55;-1:-1:-1;2405:20:88;;2448:18;2437:30;;2434:50;;;2480:1;2477;2470:12;2434:50;2517:4;2509:6;2505:17;2493:29;;2569:3;2562:4;2553:6;2545;2541:19;2537:30;2534:39;2531:59;;;2586:1;2583;2576:12;2531:59;2249:347;;;;;:::o;2601:635::-;2703:6;2711;2719;2727;2780:2;2768:9;2759:7;2755:23;2751:32;2748:52;;;2796:1;2793;2786:12;2748:52;2835:9;2822:23;2874:1;2867:5;2864:12;2854:40;;2890:1;2887;2880:12;2854:40;2913:5;-1:-1:-1;2969:2:88;2954:18;;2941:32;2996:18;2985:30;;2982:50;;;3028:1;3025;3018:12;2982:50;3067:58;3117:7;3108:6;3097:9;3093:22;3067:58;:::i;:::-;2601:635;;3144:8;;-1:-1:-1;3041:84:88;;3226:2;3211:18;3198:32;;2601:635;-1:-1:-1;;;;2601:635:88:o;3468:263::-;3535:6;3588:2;3576:9;3567:7;3563:23;3559:32;3556:52;;;3604:1;3601;3594:12;3556:52;3643:9;3630:23;3662:39;3695:5;3662:39;:::i;3918:552::-;3997:6;4005;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:39;4173:5;4140:39;:::i;:::-;4198:5;-1:-1:-1;4254:2:88;4239:18;;4226:32;4281:18;4270:30;;4267:50;;;4313:1;4310;4303:12;4267:50;4352:58;4402:7;4393:6;4382:9;4378:22;4352:58;:::i;:::-;3918:552;;4429:8;;-1:-1:-1;4326:84:88;;-1:-1:-1;;;;3918:552:88:o;4475:422::-;4516:3;4554:5;4548:12;4581:6;4576:3;4569:19;4606:1;4616:162;4630:6;4627:1;4624:13;4616:162;;;4692:4;4748:13;;;4744:22;;4738:29;4720:11;;;4716:20;;4709:59;4645:12;4616:162;;;4620:3;4823:1;4816:4;4807:6;4802:3;4798:16;4794:27;4787:38;4886:4;4879:2;4875:7;4870:2;4862:6;4858:15;4854:29;4849:3;4845:39;4841:50;4834:57;;;4475:422;;;;:::o;4902:217::-;5049:2;5038:9;5031:21;5012:4;5069:44;5109:2;5098:9;5094:18;5086:6;5069:44;:::i;5384:529::-;5494:6;5502;5510;5563:2;5551:9;5542:7;5538:23;5534:32;5531:52;;;5579:1;5576;5569:12;5531:52;5619:9;5606:23;5652:18;5644:6;5641:30;5638:50;;;5684:1;5681;5674:12;5638:50;5707:22;;5763:3;5745:16;;;5741:26;5738:46;;;5780:1;5777;5770:12;5738:46;5803:2;5852;5837:18;;5824:32;;-1:-1:-1;5903:2:88;5888:18;;;5875:32;;5384:529;-1:-1:-1;;;5384:529:88:o;5918:288::-;6093:2;6082:9;6075:21;6056:4;6113:44;6153:2;6142:9;6138:18;6130:6;6113:44;:::i;:::-;6105:52;;6193:6;6188:2;6177:9;6173:18;6166:34;5918:288;;;;;:::o;6703:127::-;6764:10;6759:3;6755:20;6752:1;6745:31;6795:4;6792:1;6785:15;6819:4;6816:1;6809:15;6835:232;6874:3;6895:17;;;6892:140;;6954:10;6949:3;6945:20;6942:1;6935:31;6989:4;6986:1;6979:15;7017:4;7014:1;7007:15;6892:140;-1:-1:-1;7059:1:88;7048:13;;6835:232::o;7296:184::-;7366:6;7419:2;7407:9;7398:7;7394:23;7390:32;7387:52;;;7435:1;7432;7425:12;7387:52;-1:-1:-1;7458:16:88;;7296:184;-1:-1:-1;7296:184:88:o;7485:271::-;7668:6;7660;7655:3;7642:33;7624:3;7694:16;;7719:13;;;7694:16;7485:271;-1:-1:-1;7485:271:88:o;8879:521::-;8956:4;8962:6;9022:11;9009:25;9116:2;9112:7;9101:8;9085:14;9081:29;9077:43;9057:18;9053:68;9043:96;;9135:1;9132;9125:12;9043:96;9162:33;;9214:20;;;-1:-1:-1;9257:18:88;9246:30;;9243:50;;;9289:1;9286;9279:12;9243:50;9322:4;9310:17;;-1:-1:-1;9353:14:88;9349:27;;;9339:38;;9336:58;;;9390:1;9387;9380:12",
276
+ "linkReferences": {},
277
+ "immutableReferences": {
278
+ "155": [
279
+ { "start": 502, "length": 32 },
280
+ { "start": 797, "length": 32 },
281
+ { "start": 948, "length": 32 },
282
+ { "start": 1199, "length": 32 },
283
+ { "start": 1347, "length": 32 },
284
+ { "start": 1459, "length": 32 },
285
+ { "start": 1820, "length": 32 },
286
+ { "start": 2235, "length": 32 }
287
+ ]
288
+ }
289
+ },
290
+ "methodIdentifiers": {
291
+ "VERSION()": "ffa1ad74",
292
+ "activateAndCall(address,bytes)": "c458b07b",
293
+ "addStake(uint32)": "0396cb60",
294
+ "deposit()": "d0e30db0",
295
+ "entryPoint()": "b0d691fe",
296
+ "getDeposit()": "c399ec88",
297
+ "getLastOpMode()": "255ed947",
298
+ "owner()": "8da5cb5b",
299
+ "postOp(uint8,bytes,uint256)": "a9a23409",
300
+ "renounceOwnership()": "715018a6",
301
+ "setOperators(address[],bool)": "a3111bdb",
302
+ "transferOwnership(address)": "f2fde38b",
303
+ "unlockStake()": "bb9fe6bf",
304
+ "validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": "f465c77e",
305
+ "withdrawStake(address)": "c23a5cea",
306
+ "withdrawTo(address,uint256)": "205c2878"
307
+ },
308
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IEntryPoint\",\"name\":\"entryPoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Inactive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidPaymasterAndDataLength\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"activateAndCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"unstakeDelaySec\",\"type\":\"uint32\"}],\"name\":\"addStake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"entryPoint\",\"outputs\":[{\"internalType\":\"contract IEntryPoint\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastOpMode\",\"outputs\":[{\"internalType\":\"enum IPaymaster.PostOpMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IPaymaster.PostOpMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"actualGasCost\",\"type\":\"uint256\"}],\"name\":\"postOp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\"}],\"name\":\"setOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maxCost\",\"type\":\"uint256\"}],\"name\":\"validatePaymasterUserOp\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"}],\"name\":\"withdrawStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"withdrawAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Fun.xyz\",\"kind\":\"dev\",\"methods\":{\"addStake(uint32)\":{\"params\":{\"unstakeDelaySec\":\"- the unstake delay for this paymaster. Can only be increased.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"postOp(uint8,bytes,uint256)\":{\"params\":{\"actualGasCost\":\"- actual gas used so far (without this postOp call).\",\"context\":\"- the context value returned by validatePaymasterUserOp\",\"mode\":\"enum with the following options: opSucceeded - user operation succeeded. opReverted - user op reverted. still has to pay for gas. postOpReverted - user op succeeded, but caused postOp (in mode=opSucceeded) to revert. Now this is the 2nd call, after user's op was deliberately reverted.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\":{\"params\":{\"maxCost\":\"the maximum cost of this transaction (based on maximum gas and gas price from userOp)\",\"userOp\":\"the user operation\",\"userOpHash\":\"hash of the user's request data.\"},\"returns\":{\"context\":\"value to send to a postOp zero length to signify postOp is not required.\",\"validationData\":\"signature and time-range of this operation, encoded the same as the return value of validateUserOperation <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\"authorizer\\\" contract. <6-byte> validUntil - last timestamp this operation is valid. 0 for \\\"indefinite\\\" <6-byte> validAfter - first timestamp this operation is valid Note that the validation code cannot use block.timestamp (or block.number) directly.\"}},\"withdrawStake(address)\":{\"params\":{\"withdrawAddress\":\"the address to send withdrawn value.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"amount\":\"to withdraw\",\"withdrawAddress\":\"target to send to\"}}},\"title\":\"CheckoutPaymaster\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addStake(uint32)\":{\"notice\":\"add stake for this paymaster. This method can also carry eth value to add to the current stake.\"},\"deposit()\":{\"notice\":\"add a deposit for this paymaster, used for paying for transaction fees\"},\"getDeposit()\":{\"notice\":\"return current paymaster's deposit on the entryPoint.\"},\"postOp(uint8,bytes,uint256)\":{\"notice\":\"post-operation handler. Must verify sender is the entryPoint\"},\"unlockStake()\":{\"notice\":\"unlock the stake, in order to withdraw it. The paymaster can't serve requests once unlocked, until it calls addStake again\"},\"validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\":{\"notice\":\"payment validation: check if paymaster agrees to pay. Must verify sender is the entryPoint. Revert to reject this request. Note that bundlers will reject this method if it changes the state, unless the paymaster is trusted (whitelisted) The paymaster pre-pays using its deposit, and receive back a refund after the postOp method returns.\"},\"withdrawStake(address)\":{\"notice\":\"withdraw the entire paymaster's stake. stake must be unlocked first (and then wait for the unstakeDelay to be over)\"},\"withdrawTo(address,uint256)\":{\"notice\":\"withdraw value from the deposit\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/paymaster/CheckoutPaymaster.sol\":\"CheckoutPaymaster\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@account-abstraction/contracts/=lib/account-abstraction/contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"lib/account-abstraction/contracts/core/BasePaymaster.sol\":{\"keccak256\":\"0x27f658d545b5f26c2e09a7ac4fba72f9975433839d10225a520e557540b84443\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://426f0c6565ae612d34ae184fb1582e6fc360abf79450975c1c2dd439184094a0\",\"dweb:/ipfs/QmZMeMosC1P6Z5BQyT6iGFQrY6ui5ART65ycVWmXFnDpoq\"]},\"lib/account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction/contracts/interfaces/IAggregator.sol\":{\"keccak256\":\"0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b\",\"dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP\"]},\"lib/account-abstraction/contracts/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf\",\"dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd\"]},\"lib/account-abstraction/contracts/interfaces/INonceManager.sol\":{\"keccak256\":\"0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2\",\"dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b\"]},\"lib/account-abstraction/contracts/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8\",\"dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia\"]},\"lib/account-abstraction/contracts/interfaces/IStakeManager.sol\":{\"keccak256\":\"0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3\",\"dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ\"]},\"lib/account-abstraction/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/interfaces/InspectablePaymasterInterface.sol\":{\"keccak256\":\"0xfa01cf6d6c5c7585be4ffba481461417568e83e4326e4d4f3f978f448c494c05\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://359879084737d058f0098e12d25170e8181bf597231cb440302a945d6483e638\",\"dweb:/ipfs/QmWjJtxkBGXk8MmrVQCqp2gjyyibTmMc6b6GwQLcrcGyNp\"]},\"src/paymaster/CheckoutPaymaster.sol\":{\"keccak256\":\"0x750ce14a013dca17e026f47f3e1f141c7941983a9e38d66d79ad32f7dd4f64d3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e0a9a642e69bbba805719b3c12144f2e32d3e2b70d24392ae7b09dd72a9510c6\",\"dweb:/ipfs/Qma8sDR2eC1pjAjkizjNhBnBbMvZV1x6pv82Z4xjNHvnaW\"]},\"src/paymaster/CheckoutPaymasterEventsAndErrors.sol\":{\"keccak256\":\"0xff791f10ae484b55407bdfa6f82516187388264e8e84bccd7571486c6ee08c37\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0df9a5fbbe1aa679422daa50a9f25a1fdd84df2a939903d9dd3f90d3a88f99e2\",\"dweb:/ipfs/QmPFaWWrb49R8WZizNKC7LN9YhWuhF7wey6cZKQg2WkMnr\"]}},\"version\":1}",
309
+ "metadata": {
310
+ "compiler": { "version": "0.8.20+commit.a1b79de6" },
311
+ "language": "Solidity",
312
+ "output": {
313
+ "abi": [
314
+ {
315
+ "inputs": [
316
+ {
317
+ "internalType": "contract IEntryPoint",
318
+ "name": "entryPoint",
319
+ "type": "address"
320
+ }
321
+ ],
322
+ "stateMutability": "nonpayable",
323
+ "type": "constructor"
324
+ },
325
+ { "inputs": [], "type": "error", "name": "Inactive" },
326
+ {
327
+ "inputs": [
328
+ { "internalType": "address", "name": "operator", "type": "address" }
329
+ ],
330
+ "type": "error",
331
+ "name": "InvalidOperator"
332
+ },
333
+ {
334
+ "inputs": [
335
+ { "internalType": "uint256", "name": "length", "type": "uint256" }
336
+ ],
337
+ "type": "error",
338
+ "name": "InvalidPaymasterAndDataLength"
339
+ },
340
+ {
341
+ "inputs": [
342
+ {
343
+ "internalType": "address",
344
+ "name": "previousOwner",
345
+ "type": "address",
346
+ "indexed": true
347
+ },
348
+ {
349
+ "internalType": "address",
350
+ "name": "newOwner",
351
+ "type": "address",
352
+ "indexed": true
353
+ }
354
+ ],
355
+ "type": "event",
356
+ "name": "OwnershipTransferred",
357
+ "anonymous": false
358
+ },
359
+ {
360
+ "inputs": [],
361
+ "stateMutability": "view",
362
+ "type": "function",
363
+ "name": "VERSION",
364
+ "outputs": [
365
+ { "internalType": "uint256", "name": "", "type": "uint256" }
366
+ ]
367
+ },
368
+ {
369
+ "inputs": [
370
+ { "internalType": "address", "name": "target", "type": "address" },
371
+ { "internalType": "bytes", "name": "callData", "type": "bytes" }
372
+ ],
373
+ "stateMutability": "payable",
374
+ "type": "function",
375
+ "name": "activateAndCall",
376
+ "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }]
377
+ },
378
+ {
379
+ "inputs": [
380
+ {
381
+ "internalType": "uint32",
382
+ "name": "unstakeDelaySec",
383
+ "type": "uint32"
384
+ }
385
+ ],
386
+ "stateMutability": "payable",
387
+ "type": "function",
388
+ "name": "addStake"
389
+ },
390
+ {
391
+ "inputs": [],
392
+ "stateMutability": "payable",
393
+ "type": "function",
394
+ "name": "deposit"
395
+ },
396
+ {
397
+ "inputs": [],
398
+ "stateMutability": "view",
399
+ "type": "function",
400
+ "name": "entryPoint",
401
+ "outputs": [
402
+ {
403
+ "internalType": "contract IEntryPoint",
404
+ "name": "",
405
+ "type": "address"
406
+ }
407
+ ]
408
+ },
409
+ {
410
+ "inputs": [],
411
+ "stateMutability": "view",
412
+ "type": "function",
413
+ "name": "getDeposit",
414
+ "outputs": [
415
+ { "internalType": "uint256", "name": "", "type": "uint256" }
416
+ ]
417
+ },
418
+ {
419
+ "inputs": [],
420
+ "stateMutability": "view",
421
+ "type": "function",
422
+ "name": "getLastOpMode",
423
+ "outputs": [
424
+ {
425
+ "internalType": "enum IPaymaster.PostOpMode",
426
+ "name": "",
427
+ "type": "uint8"
428
+ }
429
+ ]
430
+ },
431
+ {
432
+ "inputs": [],
433
+ "stateMutability": "view",
434
+ "type": "function",
435
+ "name": "owner",
436
+ "outputs": [
437
+ { "internalType": "address", "name": "", "type": "address" }
438
+ ]
439
+ },
440
+ {
441
+ "inputs": [
442
+ {
443
+ "internalType": "enum IPaymaster.PostOpMode",
444
+ "name": "mode",
445
+ "type": "uint8"
446
+ },
447
+ { "internalType": "bytes", "name": "context", "type": "bytes" },
448
+ {
449
+ "internalType": "uint256",
450
+ "name": "actualGasCost",
451
+ "type": "uint256"
452
+ }
453
+ ],
454
+ "stateMutability": "nonpayable",
455
+ "type": "function",
456
+ "name": "postOp"
457
+ },
458
+ {
459
+ "inputs": [],
460
+ "stateMutability": "nonpayable",
461
+ "type": "function",
462
+ "name": "renounceOwnership"
463
+ },
464
+ {
465
+ "inputs": [
466
+ {
467
+ "internalType": "address[]",
468
+ "name": "operators",
469
+ "type": "address[]"
470
+ },
471
+ { "internalType": "bool", "name": "isAllowed", "type": "bool" }
472
+ ],
473
+ "stateMutability": "nonpayable",
474
+ "type": "function",
475
+ "name": "setOperators"
476
+ },
477
+ {
478
+ "inputs": [
479
+ { "internalType": "address", "name": "newOwner", "type": "address" }
480
+ ],
481
+ "stateMutability": "nonpayable",
482
+ "type": "function",
483
+ "name": "transferOwnership"
484
+ },
485
+ {
486
+ "inputs": [],
487
+ "stateMutability": "nonpayable",
488
+ "type": "function",
489
+ "name": "unlockStake"
490
+ },
491
+ {
492
+ "inputs": [
493
+ {
494
+ "internalType": "struct UserOperation",
495
+ "name": "userOp",
496
+ "type": "tuple",
497
+ "components": [
498
+ {
499
+ "internalType": "address",
500
+ "name": "sender",
501
+ "type": "address"
502
+ },
503
+ {
504
+ "internalType": "uint256",
505
+ "name": "nonce",
506
+ "type": "uint256"
507
+ },
508
+ {
509
+ "internalType": "bytes",
510
+ "name": "initCode",
511
+ "type": "bytes"
512
+ },
513
+ {
514
+ "internalType": "bytes",
515
+ "name": "callData",
516
+ "type": "bytes"
517
+ },
518
+ {
519
+ "internalType": "uint256",
520
+ "name": "callGasLimit",
521
+ "type": "uint256"
522
+ },
523
+ {
524
+ "internalType": "uint256",
525
+ "name": "verificationGasLimit",
526
+ "type": "uint256"
527
+ },
528
+ {
529
+ "internalType": "uint256",
530
+ "name": "preVerificationGas",
531
+ "type": "uint256"
532
+ },
533
+ {
534
+ "internalType": "uint256",
535
+ "name": "maxFeePerGas",
536
+ "type": "uint256"
537
+ },
538
+ {
539
+ "internalType": "uint256",
540
+ "name": "maxPriorityFeePerGas",
541
+ "type": "uint256"
542
+ },
543
+ {
544
+ "internalType": "bytes",
545
+ "name": "paymasterAndData",
546
+ "type": "bytes"
547
+ },
548
+ {
549
+ "internalType": "bytes",
550
+ "name": "signature",
551
+ "type": "bytes"
552
+ }
553
+ ]
554
+ },
555
+ {
556
+ "internalType": "bytes32",
557
+ "name": "userOpHash",
558
+ "type": "bytes32"
559
+ },
560
+ { "internalType": "uint256", "name": "maxCost", "type": "uint256" }
561
+ ],
562
+ "stateMutability": "nonpayable",
563
+ "type": "function",
564
+ "name": "validatePaymasterUserOp",
565
+ "outputs": [
566
+ { "internalType": "bytes", "name": "context", "type": "bytes" },
567
+ {
568
+ "internalType": "uint256",
569
+ "name": "validationData",
570
+ "type": "uint256"
571
+ }
572
+ ]
573
+ },
574
+ {
575
+ "inputs": [
576
+ {
577
+ "internalType": "address payable",
578
+ "name": "withdrawAddress",
579
+ "type": "address"
580
+ }
581
+ ],
582
+ "stateMutability": "nonpayable",
583
+ "type": "function",
584
+ "name": "withdrawStake"
585
+ },
586
+ {
587
+ "inputs": [
588
+ {
589
+ "internalType": "address payable",
590
+ "name": "withdrawAddress",
591
+ "type": "address"
592
+ },
593
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
594
+ ],
595
+ "stateMutability": "nonpayable",
596
+ "type": "function",
597
+ "name": "withdrawTo"
598
+ }
599
+ ],
600
+ "devdoc": {
601
+ "kind": "dev",
602
+ "methods": {
603
+ "addStake(uint32)": {
604
+ "params": {
605
+ "unstakeDelaySec": "- the unstake delay for this paymaster. Can only be increased."
606
+ }
607
+ },
608
+ "owner()": { "details": "Returns the address of the current owner." },
609
+ "postOp(uint8,bytes,uint256)": {
610
+ "params": {
611
+ "actualGasCost": "- actual gas used so far (without this postOp call).",
612
+ "context": "- the context value returned by validatePaymasterUserOp",
613
+ "mode": "enum with the following options: opSucceeded - user operation succeeded. opReverted - user op reverted. still has to pay for gas. postOpReverted - user op succeeded, but caused postOp (in mode=opSucceeded) to revert. Now this is the 2nd call, after user's op was deliberately reverted."
614
+ }
615
+ },
616
+ "renounceOwnership()": {
617
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
618
+ },
619
+ "transferOwnership(address)": {
620
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
621
+ },
622
+ "validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": {
623
+ "params": {
624
+ "maxCost": "the maximum cost of this transaction (based on maximum gas and gas price from userOp)",
625
+ "userOp": "the user operation",
626
+ "userOpHash": "hash of the user's request data."
627
+ },
628
+ "returns": {
629
+ "context": "value to send to a postOp zero length to signify postOp is not required.",
630
+ "validationData": "signature and time-range of this operation, encoded the same as the return value of validateUserOperation <20-byte> sigAuthorizer - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \"authorizer\" contract. <6-byte> validUntil - last timestamp this operation is valid. 0 for \"indefinite\" <6-byte> validAfter - first timestamp this operation is valid Note that the validation code cannot use block.timestamp (or block.number) directly."
631
+ }
632
+ },
633
+ "withdrawStake(address)": {
634
+ "params": {
635
+ "withdrawAddress": "the address to send withdrawn value."
636
+ }
637
+ },
638
+ "withdrawTo(address,uint256)": {
639
+ "params": {
640
+ "amount": "to withdraw",
641
+ "withdrawAddress": "target to send to"
642
+ }
643
+ }
644
+ },
645
+ "version": 1
646
+ },
647
+ "userdoc": {
648
+ "kind": "user",
649
+ "methods": {
650
+ "addStake(uint32)": {
651
+ "notice": "add stake for this paymaster. This method can also carry eth value to add to the current stake."
652
+ },
653
+ "deposit()": {
654
+ "notice": "add a deposit for this paymaster, used for paying for transaction fees"
655
+ },
656
+ "getDeposit()": {
657
+ "notice": "return current paymaster's deposit on the entryPoint."
658
+ },
659
+ "postOp(uint8,bytes,uint256)": {
660
+ "notice": "post-operation handler. Must verify sender is the entryPoint"
661
+ },
662
+ "unlockStake()": {
663
+ "notice": "unlock the stake, in order to withdraw it. The paymaster can't serve requests once unlocked, until it calls addStake again"
664
+ },
665
+ "validatePaymasterUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": {
666
+ "notice": "payment validation: check if paymaster agrees to pay. Must verify sender is the entryPoint. Revert to reject this request. Note that bundlers will reject this method if it changes the state, unless the paymaster is trusted (whitelisted) The paymaster pre-pays using its deposit, and receive back a refund after the postOp method returns."
667
+ },
668
+ "withdrawStake(address)": {
669
+ "notice": "withdraw the entire paymaster's stake. stake must be unlocked first (and then wait for the unstakeDelay to be over)"
670
+ },
671
+ "withdrawTo(address,uint256)": {
672
+ "notice": "withdraw value from the deposit"
673
+ }
674
+ },
675
+ "version": 1
676
+ }
677
+ },
678
+ "settings": {
679
+ "remappings": [
680
+ "@account-abstraction/contracts/=lib/account-abstraction/contracts/",
681
+ "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
682
+ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
683
+ "account-abstraction/=lib/account-abstraction/contracts/",
684
+ "ds-test/=lib/forge-std/lib/ds-test/src/",
685
+ "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
686
+ "forge-std/=lib/forge-std/src/",
687
+ "openzeppelin-contracts/=lib/openzeppelin-contracts/",
688
+ "openzeppelin/=lib/openzeppelin-contracts/contracts/"
689
+ ],
690
+ "optimizer": { "enabled": true, "runs": 200 },
691
+ "metadata": { "bytecodeHash": "ipfs" },
692
+ "compilationTarget": {
693
+ "src/paymaster/CheckoutPaymaster.sol": "CheckoutPaymaster"
694
+ },
695
+ "libraries": {}
696
+ },
697
+ "sources": {
698
+ "lib/account-abstraction/contracts/core/BasePaymaster.sol": {
699
+ "keccak256": "0x27f658d545b5f26c2e09a7ac4fba72f9975433839d10225a520e557540b84443",
700
+ "urls": [
701
+ "bzz-raw://426f0c6565ae612d34ae184fb1582e6fc360abf79450975c1c2dd439184094a0",
702
+ "dweb:/ipfs/QmZMeMosC1P6Z5BQyT6iGFQrY6ui5ART65ycVWmXFnDpoq"
703
+ ],
704
+ "license": "GPL-3.0"
705
+ },
706
+ "lib/account-abstraction/contracts/core/Helpers.sol": {
707
+ "keccak256": "0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a",
708
+ "urls": [
709
+ "bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746",
710
+ "dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU"
711
+ ],
712
+ "license": "GPL-3.0"
713
+ },
714
+ "lib/account-abstraction/contracts/interfaces/IAggregator.sol": {
715
+ "keccak256": "0x060e9ddb0152250c269ba0640dc5753834ac44cf182a2837d508c0c529cae26a",
716
+ "urls": [
717
+ "bzz-raw://20ed837bc5909c89ff1910246bf245a5dad6840aa939382e1694964eb7dbd37b",
718
+ "dweb:/ipfs/QmTMybRq5yyghPDDs1ZCNAVB9sSJ4WHe6Q9mejuKPTAdNP"
719
+ ],
720
+ "license": "GPL-3.0"
721
+ },
722
+ "lib/account-abstraction/contracts/interfaces/IEntryPoint.sol": {
723
+ "keccak256": "0x3a90bf308819ed125fa4202f880999caff8a8686633b8ddb79a30ca240d5b8f8",
724
+ "urls": [
725
+ "bzz-raw://d2d21cc92c2fdab2b58d21bc25d4cd0e8c284b922528a186b087b818d54bc6cf",
726
+ "dweb:/ipfs/QmT1qrfuBjsv2rmRCDn8mgPXHp94hARJwzbcDuBLDTbFWd"
727
+ ],
728
+ "license": "GPL-3.0"
729
+ },
730
+ "lib/account-abstraction/contracts/interfaces/INonceManager.sol": {
731
+ "keccak256": "0x509871e6c63663cdcc3eba19920fe84e991f38b289b1377ac3c3a6d9f22d7e12",
732
+ "urls": [
733
+ "bzz-raw://00fe21b4349b24c50df60e1a705179293982bd9e7a32b78d4bac9620f89e7fe2",
734
+ "dweb:/ipfs/QmSFFYGfUwQbVa6hASjU7YxTvgi2HkfrPr4X5oPHscHg8b"
735
+ ],
736
+ "license": "GPL-3.0"
737
+ },
738
+ "lib/account-abstraction/contracts/interfaces/IPaymaster.sol": {
739
+ "keccak256": "0x36858ba8685024974f533530420688da3454d29996ebc42e410673a1ed2ec456",
740
+ "urls": [
741
+ "bzz-raw://616cbcf51778b1961b7f20a547bec7efae6d1d565df0f651926241ed8bde9ad8",
742
+ "dweb:/ipfs/QmaVsgffUUmeUJYgStvRr8cNZ1LBbrc3FYNLW4JT1dVLia"
743
+ ],
744
+ "license": "GPL-3.0"
745
+ },
746
+ "lib/account-abstraction/contracts/interfaces/IStakeManager.sol": {
747
+ "keccak256": "0xd227b02888cd4ac68daebcdfd992ec00f9fff66fa3b3bb16f656cd582fa3480f",
748
+ "urls": [
749
+ "bzz-raw://b389da4714a138be63704a576a482505eab2855e263b38a93706395d8d42e7c3",
750
+ "dweb:/ipfs/QmeeAZpdHwUXxqP8pxA7GNtoCGBmmH4FaqLLwScVKGxtxZ"
751
+ ],
752
+ "license": "GPL-3.0-only"
753
+ },
754
+ "lib/account-abstraction/contracts/interfaces/UserOperation.sol": {
755
+ "keccak256": "0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c",
756
+ "urls": [
757
+ "bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c",
758
+ "dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN"
759
+ ],
760
+ "license": "GPL-3.0"
761
+ },
762
+ "lib/openzeppelin-contracts/contracts/access/Ownable.sol": {
763
+ "keccak256": "0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218",
764
+ "urls": [
765
+ "bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32",
766
+ "dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"
767
+ ],
768
+ "license": "MIT"
769
+ },
770
+ "lib/openzeppelin-contracts/contracts/utils/Context.sol": {
771
+ "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
772
+ "urls": [
773
+ "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
774
+ "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
775
+ ],
776
+ "license": "MIT"
777
+ },
778
+ "src/interfaces/InspectablePaymasterInterface.sol": {
779
+ "keccak256": "0xfa01cf6d6c5c7585be4ffba481461417568e83e4326e4d4f3f978f448c494c05",
780
+ "urls": [
781
+ "bzz-raw://359879084737d058f0098e12d25170e8181bf597231cb440302a945d6483e638",
782
+ "dweb:/ipfs/QmWjJtxkBGXk8MmrVQCqp2gjyyibTmMc6b6GwQLcrcGyNp"
783
+ ],
784
+ "license": "UNLICENSED"
785
+ },
786
+ "src/paymaster/CheckoutPaymaster.sol": {
787
+ "keccak256": "0x750ce14a013dca17e026f47f3e1f141c7941983a9e38d66d79ad32f7dd4f64d3",
788
+ "urls": [
789
+ "bzz-raw://e0a9a642e69bbba805719b3c12144f2e32d3e2b70d24392ae7b09dd72a9510c6",
790
+ "dweb:/ipfs/Qma8sDR2eC1pjAjkizjNhBnBbMvZV1x6pv82Z4xjNHvnaW"
791
+ ],
792
+ "license": "UNLICENSED"
793
+ },
794
+ "src/paymaster/CheckoutPaymasterEventsAndErrors.sol": {
795
+ "keccak256": "0xff791f10ae484b55407bdfa6f82516187388264e8e84bccd7571486c6ee08c37",
796
+ "urls": [
797
+ "bzz-raw://0df9a5fbbe1aa679422daa50a9f25a1fdd84df2a939903d9dd3f90d3a88f99e2",
798
+ "dweb:/ipfs/QmPFaWWrb49R8WZizNKC7LN9YhWuhF7wey6cZKQg2WkMnr"
799
+ ],
800
+ "license": "UNLICENSED"
801
+ }
802
+ },
803
+ "version": 1
804
+ },
805
+ "ast": {
806
+ "absolutePath": "src/paymaster/CheckoutPaymaster.sol",
807
+ "id": 54009,
808
+ "exportedSymbols": {
809
+ "ActiveState": [53806],
810
+ "BasePaymaster": [361],
811
+ "CheckoutPaymaster": [54008],
812
+ "CheckoutPaymasterEventsAndErrors": [54021],
813
+ "IEntryPoint": [857],
814
+ "InspectablePaymasterInterface": [53775],
815
+ "UserOperation": [1045]
816
+ },
817
+ "nodeType": "SourceUnit",
818
+ "src": "39:3583:74",
819
+ "nodes": [
820
+ {
821
+ "id": 53792,
822
+ "nodeType": "PragmaDirective",
823
+ "src": "39:24:74",
824
+ "nodes": [],
825
+ "literals": ["solidity", "^", "0.8", ".13"]
826
+ },
827
+ {
828
+ "id": 53794,
829
+ "nodeType": "ImportDirective",
830
+ "src": "65:90:74",
831
+ "nodes": [],
832
+ "absolutePath": "lib/account-abstraction/contracts/core/BasePaymaster.sol",
833
+ "file": "@account-abstraction/contracts/core/BasePaymaster.sol",
834
+ "nameLocation": "-1:-1:-1",
835
+ "scope": 54009,
836
+ "sourceUnit": 362,
837
+ "symbolAliases": [
838
+ {
839
+ "foreign": {
840
+ "id": 53793,
841
+ "name": "BasePaymaster",
842
+ "nodeType": "Identifier",
843
+ "overloadedDeclarations": [],
844
+ "referencedDeclaration": 361,
845
+ "src": "78:13:74",
846
+ "typeDescriptions": {}
847
+ },
848
+ "nameLocation": "-1:-1:-1"
849
+ }
850
+ ],
851
+ "unitAlias": ""
852
+ },
853
+ {
854
+ "id": 53796,
855
+ "nodeType": "ImportDirective",
856
+ "src": "156:92:74",
857
+ "nodes": [],
858
+ "absolutePath": "lib/account-abstraction/contracts/interfaces/IEntryPoint.sol",
859
+ "file": "@account-abstraction/contracts/interfaces/IEntryPoint.sol",
860
+ "nameLocation": "-1:-1:-1",
861
+ "scope": 54009,
862
+ "sourceUnit": 858,
863
+ "symbolAliases": [
864
+ {
865
+ "foreign": {
866
+ "id": 53795,
867
+ "name": "IEntryPoint",
868
+ "nodeType": "Identifier",
869
+ "overloadedDeclarations": [],
870
+ "referencedDeclaration": 857,
871
+ "src": "169:11:74",
872
+ "typeDescriptions": {}
873
+ },
874
+ "nameLocation": "-1:-1:-1"
875
+ }
876
+ ],
877
+ "unitAlias": ""
878
+ },
879
+ {
880
+ "id": 53798,
881
+ "nodeType": "ImportDirective",
882
+ "src": "249:96:74",
883
+ "nodes": [],
884
+ "absolutePath": "lib/account-abstraction/contracts/interfaces/UserOperation.sol",
885
+ "file": "@account-abstraction/contracts/interfaces/UserOperation.sol",
886
+ "nameLocation": "-1:-1:-1",
887
+ "scope": 54009,
888
+ "sourceUnit": 1216,
889
+ "symbolAliases": [
890
+ {
891
+ "foreign": {
892
+ "id": 53797,
893
+ "name": "UserOperation",
894
+ "nodeType": "Identifier",
895
+ "overloadedDeclarations": [],
896
+ "referencedDeclaration": 1045,
897
+ "src": "262:13:74",
898
+ "typeDescriptions": {}
899
+ },
900
+ "nameLocation": "-1:-1:-1"
901
+ }
902
+ ],
903
+ "unitAlias": ""
904
+ },
905
+ {
906
+ "id": 53800,
907
+ "nodeType": "ImportDirective",
908
+ "src": "347:100:74",
909
+ "nodes": [],
910
+ "absolutePath": "src/interfaces/InspectablePaymasterInterface.sol",
911
+ "file": "../interfaces/InspectablePaymasterInterface.sol",
912
+ "nameLocation": "-1:-1:-1",
913
+ "scope": 54009,
914
+ "sourceUnit": 53776,
915
+ "symbolAliases": [
916
+ {
917
+ "foreign": {
918
+ "id": 53799,
919
+ "name": "InspectablePaymasterInterface",
920
+ "nodeType": "Identifier",
921
+ "overloadedDeclarations": [],
922
+ "referencedDeclaration": 53775,
923
+ "src": "360:29:74",
924
+ "typeDescriptions": {}
925
+ },
926
+ "nameLocation": "-1:-1:-1"
927
+ }
928
+ ],
929
+ "unitAlias": ""
930
+ },
931
+ {
932
+ "id": 53802,
933
+ "nodeType": "ImportDirective",
934
+ "src": "448:94:74",
935
+ "nodes": [],
936
+ "absolutePath": "src/paymaster/CheckoutPaymasterEventsAndErrors.sol",
937
+ "file": "./CheckoutPaymasterEventsAndErrors.sol",
938
+ "nameLocation": "-1:-1:-1",
939
+ "scope": 54009,
940
+ "sourceUnit": 54022,
941
+ "symbolAliases": [
942
+ {
943
+ "foreign": {
944
+ "id": 53801,
945
+ "name": "CheckoutPaymasterEventsAndErrors",
946
+ "nodeType": "Identifier",
947
+ "overloadedDeclarations": [],
948
+ "referencedDeclaration": 54021,
949
+ "src": "461:32:74",
950
+ "typeDescriptions": {}
951
+ },
952
+ "nameLocation": "-1:-1:-1"
953
+ }
954
+ ],
955
+ "unitAlias": ""
956
+ },
957
+ {
958
+ "id": 53806,
959
+ "nodeType": "EnumDefinition",
960
+ "src": "544:77:74",
961
+ "nodes": [],
962
+ "canonicalName": "ActiveState",
963
+ "members": [
964
+ {
965
+ "id": 53803,
966
+ "name": "UNSPECIFIED",
967
+ "nameLocation": "567:11:74",
968
+ "nodeType": "EnumValue",
969
+ "src": "567:11:74"
970
+ },
971
+ {
972
+ "id": 53804,
973
+ "name": "INACTIVE",
974
+ "nameLocation": "589:8:74",
975
+ "nodeType": "EnumValue",
976
+ "src": "589:8:74"
977
+ },
978
+ {
979
+ "id": 53805,
980
+ "name": "ACTIVE",
981
+ "nameLocation": "608:6:74",
982
+ "nodeType": "EnumValue",
983
+ "src": "608:6:74"
984
+ }
985
+ ],
986
+ "name": "ActiveState",
987
+ "nameLocation": "549:11:74"
988
+ },
989
+ {
990
+ "id": 54008,
991
+ "nodeType": "ContractDefinition",
992
+ "src": "678:2943:74",
993
+ "nodes": [
994
+ {
995
+ "id": 53816,
996
+ "nodeType": "VariableDeclaration",
997
+ "src": "805:35:74",
998
+ "nodes": [],
999
+ "constant": true,
1000
+ "functionSelector": "ffa1ad74",
1001
+ "mutability": "constant",
1002
+ "name": "VERSION",
1003
+ "nameLocation": "829:7:74",
1004
+ "scope": 54008,
1005
+ "stateVariable": true,
1006
+ "storageLocation": "default",
1007
+ "typeDescriptions": {
1008
+ "typeIdentifier": "t_uint256",
1009
+ "typeString": "uint256"
1010
+ },
1011
+ "typeName": {
1012
+ "id": 53814,
1013
+ "name": "uint256",
1014
+ "nodeType": "ElementaryTypeName",
1015
+ "src": "805:7:74",
1016
+ "typeDescriptions": {
1017
+ "typeIdentifier": "t_uint256",
1018
+ "typeString": "uint256"
1019
+ }
1020
+ },
1021
+ "value": {
1022
+ "hexValue": "31",
1023
+ "id": 53815,
1024
+ "isConstant": false,
1025
+ "isLValue": false,
1026
+ "isPure": true,
1027
+ "kind": "number",
1028
+ "lValueRequested": false,
1029
+ "nodeType": "Literal",
1030
+ "src": "839:1:74",
1031
+ "typeDescriptions": {
1032
+ "typeIdentifier": "t_rational_1_by_1",
1033
+ "typeString": "int_const 1"
1034
+ },
1035
+ "value": "1"
1036
+ },
1037
+ "visibility": "public"
1038
+ },
1039
+ {
1040
+ "id": 53819,
1041
+ "nodeType": "VariableDeclaration",
1042
+ "src": "846:35:74",
1043
+ "nodes": [],
1044
+ "constant": false,
1045
+ "mutability": "mutable",
1046
+ "name": "_ACTIVE_STATE_",
1047
+ "nameLocation": "867:14:74",
1048
+ "scope": 54008,
1049
+ "stateVariable": true,
1050
+ "storageLocation": "default",
1051
+ "typeDescriptions": {
1052
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1053
+ "typeString": "enum ActiveState"
1054
+ },
1055
+ "typeName": {
1056
+ "id": 53818,
1057
+ "nodeType": "UserDefinedTypeName",
1058
+ "pathNode": {
1059
+ "id": 53817,
1060
+ "name": "ActiveState",
1061
+ "nameLocations": ["846:11:74"],
1062
+ "nodeType": "IdentifierPath",
1063
+ "referencedDeclaration": 53806,
1064
+ "src": "846:11:74"
1065
+ },
1066
+ "referencedDeclaration": 53806,
1067
+ "src": "846:11:74",
1068
+ "typeDescriptions": {
1069
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1070
+ "typeString": "enum ActiveState"
1071
+ }
1072
+ },
1073
+ "visibility": "internal"
1074
+ },
1075
+ {
1076
+ "id": 53822,
1077
+ "nodeType": "VariableDeclaration",
1078
+ "src": "887:34:74",
1079
+ "nodes": [],
1080
+ "constant": false,
1081
+ "mutability": "mutable",
1082
+ "name": "_LAST_OP_MODE_",
1083
+ "nameLocation": "907:14:74",
1084
+ "scope": 54008,
1085
+ "stateVariable": true,
1086
+ "storageLocation": "default",
1087
+ "typeDescriptions": {
1088
+ "typeIdentifier": "t_enum$_PostOpMode_$884",
1089
+ "typeString": "enum IPaymaster.PostOpMode"
1090
+ },
1091
+ "typeName": {
1092
+ "id": 53821,
1093
+ "nodeType": "UserDefinedTypeName",
1094
+ "pathNode": {
1095
+ "id": 53820,
1096
+ "name": "PostOpMode",
1097
+ "nameLocations": ["887:10:74"],
1098
+ "nodeType": "IdentifierPath",
1099
+ "referencedDeclaration": 884,
1100
+ "src": "887:10:74"
1101
+ },
1102
+ "referencedDeclaration": 884,
1103
+ "src": "887:10:74",
1104
+ "typeDescriptions": {
1105
+ "typeIdentifier": "t_enum$_PostOpMode_$884",
1106
+ "typeString": "enum IPaymaster.PostOpMode"
1107
+ }
1108
+ },
1109
+ "visibility": "internal"
1110
+ },
1111
+ {
1112
+ "id": 53826,
1113
+ "nodeType": "VariableDeclaration",
1114
+ "src": "1005:45:74",
1115
+ "nodes": [],
1116
+ "constant": false,
1117
+ "mutability": "mutable",
1118
+ "name": "_OPERATORS_",
1119
+ "nameLocation": "1039:11:74",
1120
+ "scope": 54008,
1121
+ "stateVariable": true,
1122
+ "storageLocation": "default",
1123
+ "typeDescriptions": {
1124
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
1125
+ "typeString": "mapping(address => bool)"
1126
+ },
1127
+ "typeName": {
1128
+ "id": 53825,
1129
+ "keyName": "",
1130
+ "keyNameLocation": "-1:-1:-1",
1131
+ "keyType": {
1132
+ "id": 53823,
1133
+ "name": "address",
1134
+ "nodeType": "ElementaryTypeName",
1135
+ "src": "1013:7:74",
1136
+ "typeDescriptions": {
1137
+ "typeIdentifier": "t_address",
1138
+ "typeString": "address"
1139
+ }
1140
+ },
1141
+ "nodeType": "Mapping",
1142
+ "src": "1005:24:74",
1143
+ "typeDescriptions": {
1144
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
1145
+ "typeString": "mapping(address => bool)"
1146
+ },
1147
+ "valueName": "",
1148
+ "valueNameLocation": "-1:-1:-1",
1149
+ "valueType": {
1150
+ "id": 53824,
1151
+ "name": "bool",
1152
+ "nodeType": "ElementaryTypeName",
1153
+ "src": "1024:4:74",
1154
+ "typeDescriptions": {
1155
+ "typeIdentifier": "t_bool",
1156
+ "typeString": "bool"
1157
+ }
1158
+ }
1159
+ },
1160
+ "visibility": "internal"
1161
+ },
1162
+ {
1163
+ "id": 53852,
1164
+ "nodeType": "ModifierDefinition",
1165
+ "src": "1057:228:74",
1166
+ "nodes": [],
1167
+ "body": {
1168
+ "id": 53851,
1169
+ "nodeType": "Block",
1170
+ "src": "1077:208:74",
1171
+ "nodes": [],
1172
+ "statements": [
1173
+ {
1174
+ "condition": {
1175
+ "id": 53832,
1176
+ "isConstant": false,
1177
+ "isLValue": false,
1178
+ "isPure": false,
1179
+ "lValueRequested": false,
1180
+ "nodeType": "UnaryOperation",
1181
+ "operator": "!",
1182
+ "prefix": true,
1183
+ "src": "1091:24:74",
1184
+ "subExpression": {
1185
+ "baseExpression": {
1186
+ "id": 53828,
1187
+ "name": "_OPERATORS_",
1188
+ "nodeType": "Identifier",
1189
+ "overloadedDeclarations": [],
1190
+ "referencedDeclaration": 53826,
1191
+ "src": "1092:11:74",
1192
+ "typeDescriptions": {
1193
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
1194
+ "typeString": "mapping(address => bool)"
1195
+ }
1196
+ },
1197
+ "id": 53831,
1198
+ "indexExpression": {
1199
+ "expression": {
1200
+ "id": 53829,
1201
+ "name": "msg",
1202
+ "nodeType": "Identifier",
1203
+ "overloadedDeclarations": [],
1204
+ "referencedDeclaration": -15,
1205
+ "src": "1104:3:74",
1206
+ "typeDescriptions": {
1207
+ "typeIdentifier": "t_magic_message",
1208
+ "typeString": "msg"
1209
+ }
1210
+ },
1211
+ "id": 53830,
1212
+ "isConstant": false,
1213
+ "isLValue": false,
1214
+ "isPure": false,
1215
+ "lValueRequested": false,
1216
+ "memberLocation": "1108:6:74",
1217
+ "memberName": "sender",
1218
+ "nodeType": "MemberAccess",
1219
+ "src": "1104:10:74",
1220
+ "typeDescriptions": {
1221
+ "typeIdentifier": "t_address",
1222
+ "typeString": "address"
1223
+ }
1224
+ },
1225
+ "isConstant": false,
1226
+ "isLValue": true,
1227
+ "isPure": false,
1228
+ "lValueRequested": false,
1229
+ "nodeType": "IndexAccess",
1230
+ "src": "1092:23:74",
1231
+ "typeDescriptions": {
1232
+ "typeIdentifier": "t_bool",
1233
+ "typeString": "bool"
1234
+ }
1235
+ },
1236
+ "typeDescriptions": {
1237
+ "typeIdentifier": "t_bool",
1238
+ "typeString": "bool"
1239
+ }
1240
+ },
1241
+ "id": 53839,
1242
+ "nodeType": "IfStatement",
1243
+ "src": "1087:89:74",
1244
+ "trueBody": {
1245
+ "id": 53838,
1246
+ "nodeType": "Block",
1247
+ "src": "1117:59:74",
1248
+ "statements": [
1249
+ {
1250
+ "errorCall": {
1251
+ "arguments": [
1252
+ {
1253
+ "expression": {
1254
+ "id": 53834,
1255
+ "name": "msg",
1256
+ "nodeType": "Identifier",
1257
+ "overloadedDeclarations": [],
1258
+ "referencedDeclaration": -15,
1259
+ "src": "1154:3:74",
1260
+ "typeDescriptions": {
1261
+ "typeIdentifier": "t_magic_message",
1262
+ "typeString": "msg"
1263
+ }
1264
+ },
1265
+ "id": 53835,
1266
+ "isConstant": false,
1267
+ "isLValue": false,
1268
+ "isPure": false,
1269
+ "lValueRequested": false,
1270
+ "memberLocation": "1158:6:74",
1271
+ "memberName": "sender",
1272
+ "nodeType": "MemberAccess",
1273
+ "src": "1154:10:74",
1274
+ "typeDescriptions": {
1275
+ "typeIdentifier": "t_address",
1276
+ "typeString": "address"
1277
+ }
1278
+ }
1279
+ ],
1280
+ "expression": {
1281
+ "argumentTypes": [
1282
+ {
1283
+ "typeIdentifier": "t_address",
1284
+ "typeString": "address"
1285
+ }
1286
+ ],
1287
+ "id": 53833,
1288
+ "name": "InvalidOperator",
1289
+ "nodeType": "Identifier",
1290
+ "overloadedDeclarations": [],
1291
+ "referencedDeclaration": 54016,
1292
+ "src": "1138:15:74",
1293
+ "typeDescriptions": {
1294
+ "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
1295
+ "typeString": "function (address) pure"
1296
+ }
1297
+ },
1298
+ "id": 53836,
1299
+ "isConstant": false,
1300
+ "isLValue": false,
1301
+ "isPure": false,
1302
+ "kind": "functionCall",
1303
+ "lValueRequested": false,
1304
+ "nameLocations": [],
1305
+ "names": [],
1306
+ "nodeType": "FunctionCall",
1307
+ "src": "1138:27:74",
1308
+ "tryCall": false,
1309
+ "typeDescriptions": {
1310
+ "typeIdentifier": "t_tuple$__$",
1311
+ "typeString": "tuple()"
1312
+ }
1313
+ },
1314
+ "id": 53837,
1315
+ "nodeType": "RevertStatement",
1316
+ "src": "1131:34:74"
1317
+ }
1318
+ ]
1319
+ }
1320
+ },
1321
+ {
1322
+ "expression": {
1323
+ "id": 53843,
1324
+ "isConstant": false,
1325
+ "isLValue": false,
1326
+ "isPure": false,
1327
+ "lValueRequested": false,
1328
+ "leftHandSide": {
1329
+ "id": 53840,
1330
+ "name": "_ACTIVE_STATE_",
1331
+ "nodeType": "Identifier",
1332
+ "overloadedDeclarations": [],
1333
+ "referencedDeclaration": 53819,
1334
+ "src": "1185:14:74",
1335
+ "typeDescriptions": {
1336
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1337
+ "typeString": "enum ActiveState"
1338
+ }
1339
+ },
1340
+ "nodeType": "Assignment",
1341
+ "operator": "=",
1342
+ "rightHandSide": {
1343
+ "expression": {
1344
+ "id": 53841,
1345
+ "name": "ActiveState",
1346
+ "nodeType": "Identifier",
1347
+ "overloadedDeclarations": [],
1348
+ "referencedDeclaration": 53806,
1349
+ "src": "1202:11:74",
1350
+ "typeDescriptions": {
1351
+ "typeIdentifier": "t_type$_t_enum$_ActiveState_$53806_$",
1352
+ "typeString": "type(enum ActiveState)"
1353
+ }
1354
+ },
1355
+ "id": 53842,
1356
+ "isConstant": false,
1357
+ "isLValue": false,
1358
+ "isPure": true,
1359
+ "lValueRequested": false,
1360
+ "memberLocation": "1214:6:74",
1361
+ "memberName": "ACTIVE",
1362
+ "nodeType": "MemberAccess",
1363
+ "referencedDeclaration": 53805,
1364
+ "src": "1202:18:74",
1365
+ "typeDescriptions": {
1366
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1367
+ "typeString": "enum ActiveState"
1368
+ }
1369
+ },
1370
+ "src": "1185:35:74",
1371
+ "typeDescriptions": {
1372
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1373
+ "typeString": "enum ActiveState"
1374
+ }
1375
+ },
1376
+ "id": 53844,
1377
+ "nodeType": "ExpressionStatement",
1378
+ "src": "1185:35:74"
1379
+ },
1380
+ {
1381
+ "id": 53845,
1382
+ "nodeType": "PlaceholderStatement",
1383
+ "src": "1230:1:74"
1384
+ },
1385
+ {
1386
+ "expression": {
1387
+ "id": 53849,
1388
+ "isConstant": false,
1389
+ "isLValue": false,
1390
+ "isPure": false,
1391
+ "lValueRequested": false,
1392
+ "leftHandSide": {
1393
+ "id": 53846,
1394
+ "name": "_ACTIVE_STATE_",
1395
+ "nodeType": "Identifier",
1396
+ "overloadedDeclarations": [],
1397
+ "referencedDeclaration": 53819,
1398
+ "src": "1241:14:74",
1399
+ "typeDescriptions": {
1400
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1401
+ "typeString": "enum ActiveState"
1402
+ }
1403
+ },
1404
+ "nodeType": "Assignment",
1405
+ "operator": "=",
1406
+ "rightHandSide": {
1407
+ "expression": {
1408
+ "id": 53847,
1409
+ "name": "ActiveState",
1410
+ "nodeType": "Identifier",
1411
+ "overloadedDeclarations": [],
1412
+ "referencedDeclaration": 53806,
1413
+ "src": "1258:11:74",
1414
+ "typeDescriptions": {
1415
+ "typeIdentifier": "t_type$_t_enum$_ActiveState_$53806_$",
1416
+ "typeString": "type(enum ActiveState)"
1417
+ }
1418
+ },
1419
+ "id": 53848,
1420
+ "isConstant": false,
1421
+ "isLValue": false,
1422
+ "isPure": true,
1423
+ "lValueRequested": false,
1424
+ "memberLocation": "1270:8:74",
1425
+ "memberName": "INACTIVE",
1426
+ "nodeType": "MemberAccess",
1427
+ "referencedDeclaration": 53804,
1428
+ "src": "1258:20:74",
1429
+ "typeDescriptions": {
1430
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1431
+ "typeString": "enum ActiveState"
1432
+ }
1433
+ },
1434
+ "src": "1241:37:74",
1435
+ "typeDescriptions": {
1436
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1437
+ "typeString": "enum ActiveState"
1438
+ }
1439
+ },
1440
+ "id": 53850,
1441
+ "nodeType": "ExpressionStatement",
1442
+ "src": "1241:37:74"
1443
+ }
1444
+ ]
1445
+ },
1446
+ "name": "activate",
1447
+ "nameLocation": "1066:8:74",
1448
+ "parameters": {
1449
+ "id": 53827,
1450
+ "nodeType": "ParameterList",
1451
+ "parameters": [],
1452
+ "src": "1074:2:74"
1453
+ },
1454
+ "virtual": false,
1455
+ "visibility": "internal"
1456
+ },
1457
+ {
1458
+ "id": 53865,
1459
+ "nodeType": "ModifierDefinition",
1460
+ "src": "1291:131:74",
1461
+ "nodes": [],
1462
+ "body": {
1463
+ "id": 53864,
1464
+ "nodeType": "Block",
1465
+ "src": "1311:111:74",
1466
+ "nodes": [],
1467
+ "statements": [
1468
+ {
1469
+ "condition": {
1470
+ "commonType": {
1471
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1472
+ "typeString": "enum ActiveState"
1473
+ },
1474
+ "id": 53857,
1475
+ "isConstant": false,
1476
+ "isLValue": false,
1477
+ "isPure": false,
1478
+ "lValueRequested": false,
1479
+ "leftExpression": {
1480
+ "id": 53854,
1481
+ "name": "_ACTIVE_STATE_",
1482
+ "nodeType": "Identifier",
1483
+ "overloadedDeclarations": [],
1484
+ "referencedDeclaration": 53819,
1485
+ "src": "1325:14:74",
1486
+ "typeDescriptions": {
1487
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1488
+ "typeString": "enum ActiveState"
1489
+ }
1490
+ },
1491
+ "nodeType": "BinaryOperation",
1492
+ "operator": "!=",
1493
+ "rightExpression": {
1494
+ "expression": {
1495
+ "id": 53855,
1496
+ "name": "ActiveState",
1497
+ "nodeType": "Identifier",
1498
+ "overloadedDeclarations": [],
1499
+ "referencedDeclaration": 53806,
1500
+ "src": "1343:11:74",
1501
+ "typeDescriptions": {
1502
+ "typeIdentifier": "t_type$_t_enum$_ActiveState_$53806_$",
1503
+ "typeString": "type(enum ActiveState)"
1504
+ }
1505
+ },
1506
+ "id": 53856,
1507
+ "isConstant": false,
1508
+ "isLValue": false,
1509
+ "isPure": true,
1510
+ "lValueRequested": false,
1511
+ "memberLocation": "1355:6:74",
1512
+ "memberName": "ACTIVE",
1513
+ "nodeType": "MemberAccess",
1514
+ "referencedDeclaration": 53805,
1515
+ "src": "1343:18:74",
1516
+ "typeDescriptions": {
1517
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1518
+ "typeString": "enum ActiveState"
1519
+ }
1520
+ },
1521
+ "src": "1325:36:74",
1522
+ "typeDescriptions": {
1523
+ "typeIdentifier": "t_bool",
1524
+ "typeString": "bool"
1525
+ }
1526
+ },
1527
+ "id": 53862,
1528
+ "nodeType": "IfStatement",
1529
+ "src": "1321:84:74",
1530
+ "trueBody": {
1531
+ "id": 53861,
1532
+ "nodeType": "Block",
1533
+ "src": "1363:42:74",
1534
+ "statements": [
1535
+ {
1536
+ "errorCall": {
1537
+ "arguments": [],
1538
+ "expression": {
1539
+ "argumentTypes": [],
1540
+ "id": 53858,
1541
+ "name": "Inactive",
1542
+ "nodeType": "Identifier",
1543
+ "overloadedDeclarations": [],
1544
+ "referencedDeclaration": 54012,
1545
+ "src": "1384:8:74",
1546
+ "typeDescriptions": {
1547
+ "typeIdentifier": "t_function_error_pure$__$returns$__$",
1548
+ "typeString": "function () pure"
1549
+ }
1550
+ },
1551
+ "id": 53859,
1552
+ "isConstant": false,
1553
+ "isLValue": false,
1554
+ "isPure": false,
1555
+ "kind": "functionCall",
1556
+ "lValueRequested": false,
1557
+ "nameLocations": [],
1558
+ "names": [],
1559
+ "nodeType": "FunctionCall",
1560
+ "src": "1384:10:74",
1561
+ "tryCall": false,
1562
+ "typeDescriptions": {
1563
+ "typeIdentifier": "t_tuple$__$",
1564
+ "typeString": "tuple()"
1565
+ }
1566
+ },
1567
+ "id": 53860,
1568
+ "nodeType": "RevertStatement",
1569
+ "src": "1377:17:74"
1570
+ }
1571
+ ]
1572
+ }
1573
+ },
1574
+ {
1575
+ "id": 53863,
1576
+ "nodeType": "PlaceholderStatement",
1577
+ "src": "1414:1:74"
1578
+ }
1579
+ ]
1580
+ },
1581
+ "name": "isActive",
1582
+ "nameLocation": "1300:8:74",
1583
+ "parameters": {
1584
+ "id": 53853,
1585
+ "nodeType": "ParameterList",
1586
+ "parameters": [],
1587
+ "src": "1308:2:74"
1588
+ },
1589
+ "virtual": false,
1590
+ "visibility": "internal"
1591
+ },
1592
+ {
1593
+ "id": 53880,
1594
+ "nodeType": "FunctionDefinition",
1595
+ "src": "1428:116:74",
1596
+ "nodes": [],
1597
+ "body": {
1598
+ "id": 53879,
1599
+ "nodeType": "Block",
1600
+ "src": "1490:54:74",
1601
+ "nodes": [],
1602
+ "statements": [
1603
+ {
1604
+ "expression": {
1605
+ "id": 53877,
1606
+ "isConstant": false,
1607
+ "isLValue": false,
1608
+ "isPure": false,
1609
+ "lValueRequested": false,
1610
+ "leftHandSide": {
1611
+ "id": 53874,
1612
+ "name": "_ACTIVE_STATE_",
1613
+ "nodeType": "Identifier",
1614
+ "overloadedDeclarations": [],
1615
+ "referencedDeclaration": 53819,
1616
+ "src": "1500:14:74",
1617
+ "typeDescriptions": {
1618
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1619
+ "typeString": "enum ActiveState"
1620
+ }
1621
+ },
1622
+ "nodeType": "Assignment",
1623
+ "operator": "=",
1624
+ "rightHandSide": {
1625
+ "expression": {
1626
+ "id": 53875,
1627
+ "name": "ActiveState",
1628
+ "nodeType": "Identifier",
1629
+ "overloadedDeclarations": [],
1630
+ "referencedDeclaration": 53806,
1631
+ "src": "1517:11:74",
1632
+ "typeDescriptions": {
1633
+ "typeIdentifier": "t_type$_t_enum$_ActiveState_$53806_$",
1634
+ "typeString": "type(enum ActiveState)"
1635
+ }
1636
+ },
1637
+ "id": 53876,
1638
+ "isConstant": false,
1639
+ "isLValue": false,
1640
+ "isPure": true,
1641
+ "lValueRequested": false,
1642
+ "memberLocation": "1529:8:74",
1643
+ "memberName": "INACTIVE",
1644
+ "nodeType": "MemberAccess",
1645
+ "referencedDeclaration": 53804,
1646
+ "src": "1517:20:74",
1647
+ "typeDescriptions": {
1648
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1649
+ "typeString": "enum ActiveState"
1650
+ }
1651
+ },
1652
+ "src": "1500:37:74",
1653
+ "typeDescriptions": {
1654
+ "typeIdentifier": "t_enum$_ActiveState_$53806",
1655
+ "typeString": "enum ActiveState"
1656
+ }
1657
+ },
1658
+ "id": 53878,
1659
+ "nodeType": "ExpressionStatement",
1660
+ "src": "1500:37:74"
1661
+ }
1662
+ ]
1663
+ },
1664
+ "implemented": true,
1665
+ "kind": "constructor",
1666
+ "modifiers": [
1667
+ {
1668
+ "arguments": [
1669
+ {
1670
+ "id": 53871,
1671
+ "name": "entryPoint",
1672
+ "nodeType": "Identifier",
1673
+ "overloadedDeclarations": [],
1674
+ "referencedDeclaration": 53868,
1675
+ "src": "1478:10:74",
1676
+ "typeDescriptions": {
1677
+ "typeIdentifier": "t_contract$_IEntryPoint_$857",
1678
+ "typeString": "contract IEntryPoint"
1679
+ }
1680
+ }
1681
+ ],
1682
+ "id": 53872,
1683
+ "kind": "baseConstructorSpecifier",
1684
+ "modifierName": {
1685
+ "id": 53870,
1686
+ "name": "BasePaymaster",
1687
+ "nameLocations": ["1464:13:74"],
1688
+ "nodeType": "IdentifierPath",
1689
+ "referencedDeclaration": 361,
1690
+ "src": "1464:13:74"
1691
+ },
1692
+ "nodeType": "ModifierInvocation",
1693
+ "src": "1464:25:74"
1694
+ }
1695
+ ],
1696
+ "name": "",
1697
+ "nameLocation": "-1:-1:-1",
1698
+ "parameters": {
1699
+ "id": 53869,
1700
+ "nodeType": "ParameterList",
1701
+ "parameters": [
1702
+ {
1703
+ "constant": false,
1704
+ "id": 53868,
1705
+ "mutability": "mutable",
1706
+ "name": "entryPoint",
1707
+ "nameLocation": "1452:10:74",
1708
+ "nodeType": "VariableDeclaration",
1709
+ "scope": 53880,
1710
+ "src": "1440:22:74",
1711
+ "stateVariable": false,
1712
+ "storageLocation": "default",
1713
+ "typeDescriptions": {
1714
+ "typeIdentifier": "t_contract$_IEntryPoint_$857",
1715
+ "typeString": "contract IEntryPoint"
1716
+ },
1717
+ "typeName": {
1718
+ "id": 53867,
1719
+ "nodeType": "UserDefinedTypeName",
1720
+ "pathNode": {
1721
+ "id": 53866,
1722
+ "name": "IEntryPoint",
1723
+ "nameLocations": ["1440:11:74"],
1724
+ "nodeType": "IdentifierPath",
1725
+ "referencedDeclaration": 857,
1726
+ "src": "1440:11:74"
1727
+ },
1728
+ "referencedDeclaration": 857,
1729
+ "src": "1440:11:74",
1730
+ "typeDescriptions": {
1731
+ "typeIdentifier": "t_contract$_IEntryPoint_$857",
1732
+ "typeString": "contract IEntryPoint"
1733
+ }
1734
+ },
1735
+ "visibility": "internal"
1736
+ }
1737
+ ],
1738
+ "src": "1439:24:74"
1739
+ },
1740
+ "returnParameters": {
1741
+ "id": 53873,
1742
+ "nodeType": "ParameterList",
1743
+ "parameters": [],
1744
+ "src": "1490:0:74"
1745
+ },
1746
+ "scope": 54008,
1747
+ "stateMutability": "nonpayable",
1748
+ "virtual": false,
1749
+ "visibility": "public"
1750
+ },
1751
+ {
1752
+ "id": 53915,
1753
+ "nodeType": "FunctionDefinition",
1754
+ "src": "1550:253:74",
1755
+ "nodes": [],
1756
+ "body": {
1757
+ "id": 53914,
1758
+ "nodeType": "Block",
1759
+ "src": "1659:144:74",
1760
+ "nodes": [],
1761
+ "statements": [
1762
+ {
1763
+ "assignments": [53891],
1764
+ "declarations": [
1765
+ {
1766
+ "constant": false,
1767
+ "id": 53891,
1768
+ "mutability": "mutable",
1769
+ "name": "n",
1770
+ "nameLocation": "1677:1:74",
1771
+ "nodeType": "VariableDeclaration",
1772
+ "scope": 53914,
1773
+ "src": "1669:9:74",
1774
+ "stateVariable": false,
1775
+ "storageLocation": "default",
1776
+ "typeDescriptions": {
1777
+ "typeIdentifier": "t_uint256",
1778
+ "typeString": "uint256"
1779
+ },
1780
+ "typeName": {
1781
+ "id": 53890,
1782
+ "name": "uint256",
1783
+ "nodeType": "ElementaryTypeName",
1784
+ "src": "1669:7:74",
1785
+ "typeDescriptions": {
1786
+ "typeIdentifier": "t_uint256",
1787
+ "typeString": "uint256"
1788
+ }
1789
+ },
1790
+ "visibility": "internal"
1791
+ }
1792
+ ],
1793
+ "id": 53894,
1794
+ "initialValue": {
1795
+ "expression": {
1796
+ "id": 53892,
1797
+ "name": "operators",
1798
+ "nodeType": "Identifier",
1799
+ "overloadedDeclarations": [],
1800
+ "referencedDeclaration": 53883,
1801
+ "src": "1681:9:74",
1802
+ "typeDescriptions": {
1803
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
1804
+ "typeString": "address[] calldata"
1805
+ }
1806
+ },
1807
+ "id": 53893,
1808
+ "isConstant": false,
1809
+ "isLValue": false,
1810
+ "isPure": false,
1811
+ "lValueRequested": false,
1812
+ "memberLocation": "1691:6:74",
1813
+ "memberName": "length",
1814
+ "nodeType": "MemberAccess",
1815
+ "src": "1681:16:74",
1816
+ "typeDescriptions": {
1817
+ "typeIdentifier": "t_uint256",
1818
+ "typeString": "uint256"
1819
+ }
1820
+ },
1821
+ "nodeType": "VariableDeclarationStatement",
1822
+ "src": "1669:28:74"
1823
+ },
1824
+ {
1825
+ "body": {
1826
+ "id": 53912,
1827
+ "nodeType": "Block",
1828
+ "src": "1735:62:74",
1829
+ "statements": [
1830
+ {
1831
+ "expression": {
1832
+ "id": 53910,
1833
+ "isConstant": false,
1834
+ "isLValue": false,
1835
+ "isPure": false,
1836
+ "lValueRequested": false,
1837
+ "leftHandSide": {
1838
+ "baseExpression": {
1839
+ "id": 53904,
1840
+ "name": "_OPERATORS_",
1841
+ "nodeType": "Identifier",
1842
+ "overloadedDeclarations": [],
1843
+ "referencedDeclaration": 53826,
1844
+ "src": "1749:11:74",
1845
+ "typeDescriptions": {
1846
+ "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
1847
+ "typeString": "mapping(address => bool)"
1848
+ }
1849
+ },
1850
+ "id": 53908,
1851
+ "indexExpression": {
1852
+ "baseExpression": {
1853
+ "id": 53905,
1854
+ "name": "operators",
1855
+ "nodeType": "Identifier",
1856
+ "overloadedDeclarations": [],
1857
+ "referencedDeclaration": 53883,
1858
+ "src": "1761:9:74",
1859
+ "typeDescriptions": {
1860
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
1861
+ "typeString": "address[] calldata"
1862
+ }
1863
+ },
1864
+ "id": 53907,
1865
+ "indexExpression": {
1866
+ "id": 53906,
1867
+ "name": "i",
1868
+ "nodeType": "Identifier",
1869
+ "overloadedDeclarations": [],
1870
+ "referencedDeclaration": 53896,
1871
+ "src": "1771:1:74",
1872
+ "typeDescriptions": {
1873
+ "typeIdentifier": "t_uint256",
1874
+ "typeString": "uint256"
1875
+ }
1876
+ },
1877
+ "isConstant": false,
1878
+ "isLValue": false,
1879
+ "isPure": false,
1880
+ "lValueRequested": false,
1881
+ "nodeType": "IndexAccess",
1882
+ "src": "1761:12:74",
1883
+ "typeDescriptions": {
1884
+ "typeIdentifier": "t_address",
1885
+ "typeString": "address"
1886
+ }
1887
+ },
1888
+ "isConstant": false,
1889
+ "isLValue": true,
1890
+ "isPure": false,
1891
+ "lValueRequested": true,
1892
+ "nodeType": "IndexAccess",
1893
+ "src": "1749:25:74",
1894
+ "typeDescriptions": {
1895
+ "typeIdentifier": "t_bool",
1896
+ "typeString": "bool"
1897
+ }
1898
+ },
1899
+ "nodeType": "Assignment",
1900
+ "operator": "=",
1901
+ "rightHandSide": {
1902
+ "id": 53909,
1903
+ "name": "isAllowed",
1904
+ "nodeType": "Identifier",
1905
+ "overloadedDeclarations": [],
1906
+ "referencedDeclaration": 53885,
1907
+ "src": "1777:9:74",
1908
+ "typeDescriptions": {
1909
+ "typeIdentifier": "t_bool",
1910
+ "typeString": "bool"
1911
+ }
1912
+ },
1913
+ "src": "1749:37:74",
1914
+ "typeDescriptions": {
1915
+ "typeIdentifier": "t_bool",
1916
+ "typeString": "bool"
1917
+ }
1918
+ },
1919
+ "id": 53911,
1920
+ "nodeType": "ExpressionStatement",
1921
+ "src": "1749:37:74"
1922
+ }
1923
+ ]
1924
+ },
1925
+ "condition": {
1926
+ "commonType": {
1927
+ "typeIdentifier": "t_uint256",
1928
+ "typeString": "uint256"
1929
+ },
1930
+ "id": 53900,
1931
+ "isConstant": false,
1932
+ "isLValue": false,
1933
+ "isPure": false,
1934
+ "lValueRequested": false,
1935
+ "leftExpression": {
1936
+ "id": 53898,
1937
+ "name": "i",
1938
+ "nodeType": "Identifier",
1939
+ "overloadedDeclarations": [],
1940
+ "referencedDeclaration": 53896,
1941
+ "src": "1723:1:74",
1942
+ "typeDescriptions": {
1943
+ "typeIdentifier": "t_uint256",
1944
+ "typeString": "uint256"
1945
+ }
1946
+ },
1947
+ "nodeType": "BinaryOperation",
1948
+ "operator": "<",
1949
+ "rightExpression": {
1950
+ "id": 53899,
1951
+ "name": "n",
1952
+ "nodeType": "Identifier",
1953
+ "overloadedDeclarations": [],
1954
+ "referencedDeclaration": 53891,
1955
+ "src": "1727:1:74",
1956
+ "typeDescriptions": {
1957
+ "typeIdentifier": "t_uint256",
1958
+ "typeString": "uint256"
1959
+ }
1960
+ },
1961
+ "src": "1723:5:74",
1962
+ "typeDescriptions": {
1963
+ "typeIdentifier": "t_bool",
1964
+ "typeString": "bool"
1965
+ }
1966
+ },
1967
+ "id": 53913,
1968
+ "initializationExpression": {
1969
+ "assignments": [53896],
1970
+ "declarations": [
1971
+ {
1972
+ "constant": false,
1973
+ "id": 53896,
1974
+ "mutability": "mutable",
1975
+ "name": "i",
1976
+ "nameLocation": "1720:1:74",
1977
+ "nodeType": "VariableDeclaration",
1978
+ "scope": 53913,
1979
+ "src": "1712:9:74",
1980
+ "stateVariable": false,
1981
+ "storageLocation": "default",
1982
+ "typeDescriptions": {
1983
+ "typeIdentifier": "t_uint256",
1984
+ "typeString": "uint256"
1985
+ },
1986
+ "typeName": {
1987
+ "id": 53895,
1988
+ "name": "uint256",
1989
+ "nodeType": "ElementaryTypeName",
1990
+ "src": "1712:7:74",
1991
+ "typeDescriptions": {
1992
+ "typeIdentifier": "t_uint256",
1993
+ "typeString": "uint256"
1994
+ }
1995
+ },
1996
+ "visibility": "internal"
1997
+ }
1998
+ ],
1999
+ "id": 53897,
2000
+ "nodeType": "VariableDeclarationStatement",
2001
+ "src": "1712:9:74"
2002
+ },
2003
+ "loopExpression": {
2004
+ "expression": {
2005
+ "id": 53902,
2006
+ "isConstant": false,
2007
+ "isLValue": false,
2008
+ "isPure": false,
2009
+ "lValueRequested": false,
2010
+ "nodeType": "UnaryOperation",
2011
+ "operator": "++",
2012
+ "prefix": true,
2013
+ "src": "1730:3:74",
2014
+ "subExpression": {
2015
+ "id": 53901,
2016
+ "name": "i",
2017
+ "nodeType": "Identifier",
2018
+ "overloadedDeclarations": [],
2019
+ "referencedDeclaration": 53896,
2020
+ "src": "1732:1:74",
2021
+ "typeDescriptions": {
2022
+ "typeIdentifier": "t_uint256",
2023
+ "typeString": "uint256"
2024
+ }
2025
+ },
2026
+ "typeDescriptions": {
2027
+ "typeIdentifier": "t_uint256",
2028
+ "typeString": "uint256"
2029
+ }
2030
+ },
2031
+ "id": 53903,
2032
+ "nodeType": "ExpressionStatement",
2033
+ "src": "1730:3:74"
2034
+ },
2035
+ "nodeType": "ForStatement",
2036
+ "src": "1707:90:74"
2037
+ }
2038
+ ]
2039
+ },
2040
+ "functionSelector": "a3111bdb",
2041
+ "implemented": true,
2042
+ "kind": "function",
2043
+ "modifiers": [
2044
+ {
2045
+ "id": 53888,
2046
+ "kind": "modifierInvocation",
2047
+ "modifierName": {
2048
+ "id": 53887,
2049
+ "name": "onlyOwner",
2050
+ "nameLocations": ["1649:9:74"],
2051
+ "nodeType": "IdentifierPath",
2052
+ "referencedDeclaration": 45215,
2053
+ "src": "1649:9:74"
2054
+ },
2055
+ "nodeType": "ModifierInvocation",
2056
+ "src": "1649:9:74"
2057
+ }
2058
+ ],
2059
+ "name": "setOperators",
2060
+ "nameLocation": "1559:12:74",
2061
+ "parameters": {
2062
+ "id": 53886,
2063
+ "nodeType": "ParameterList",
2064
+ "parameters": [
2065
+ {
2066
+ "constant": false,
2067
+ "id": 53883,
2068
+ "mutability": "mutable",
2069
+ "name": "operators",
2070
+ "nameLocation": "1600:9:74",
2071
+ "nodeType": "VariableDeclaration",
2072
+ "scope": 53915,
2073
+ "src": "1581:28:74",
2074
+ "stateVariable": false,
2075
+ "storageLocation": "calldata",
2076
+ "typeDescriptions": {
2077
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
2078
+ "typeString": "address[]"
2079
+ },
2080
+ "typeName": {
2081
+ "baseType": {
2082
+ "id": 53881,
2083
+ "name": "address",
2084
+ "nodeType": "ElementaryTypeName",
2085
+ "src": "1581:7:74",
2086
+ "stateMutability": "nonpayable",
2087
+ "typeDescriptions": {
2088
+ "typeIdentifier": "t_address",
2089
+ "typeString": "address"
2090
+ }
2091
+ },
2092
+ "id": 53882,
2093
+ "nodeType": "ArrayTypeName",
2094
+ "src": "1581:9:74",
2095
+ "typeDescriptions": {
2096
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
2097
+ "typeString": "address[]"
2098
+ }
2099
+ },
2100
+ "visibility": "internal"
2101
+ },
2102
+ {
2103
+ "constant": false,
2104
+ "id": 53885,
2105
+ "mutability": "mutable",
2106
+ "name": "isAllowed",
2107
+ "nameLocation": "1624:9:74",
2108
+ "nodeType": "VariableDeclaration",
2109
+ "scope": 53915,
2110
+ "src": "1619:14:74",
2111
+ "stateVariable": false,
2112
+ "storageLocation": "default",
2113
+ "typeDescriptions": {
2114
+ "typeIdentifier": "t_bool",
2115
+ "typeString": "bool"
2116
+ },
2117
+ "typeName": {
2118
+ "id": 53884,
2119
+ "name": "bool",
2120
+ "nodeType": "ElementaryTypeName",
2121
+ "src": "1619:4:74",
2122
+ "typeDescriptions": {
2123
+ "typeIdentifier": "t_bool",
2124
+ "typeString": "bool"
2125
+ }
2126
+ },
2127
+ "visibility": "internal"
2128
+ }
2129
+ ],
2130
+ "src": "1571:68:74"
2131
+ },
2132
+ "returnParameters": {
2133
+ "id": 53889,
2134
+ "nodeType": "ParameterList",
2135
+ "parameters": [],
2136
+ "src": "1659:0:74"
2137
+ },
2138
+ "scope": 54008,
2139
+ "stateMutability": "nonpayable",
2140
+ "virtual": false,
2141
+ "visibility": "external"
2142
+ },
2143
+ {
2144
+ "id": 53949,
2145
+ "nodeType": "FunctionDefinition",
2146
+ "src": "1809:427:74",
2147
+ "nodes": [],
2148
+ "body": {
2149
+ "id": 53948,
2150
+ "nodeType": "Block",
2151
+ "src": "1946:290:74",
2152
+ "nodes": [],
2153
+ "statements": [
2154
+ {
2155
+ "assignments": [53927, 53929],
2156
+ "declarations": [
2157
+ {
2158
+ "constant": false,
2159
+ "id": 53927,
2160
+ "mutability": "mutable",
2161
+ "name": "success",
2162
+ "nameLocation": "1962:7:74",
2163
+ "nodeType": "VariableDeclaration",
2164
+ "scope": 53948,
2165
+ "src": "1957:12:74",
2166
+ "stateVariable": false,
2167
+ "storageLocation": "default",
2168
+ "typeDescriptions": {
2169
+ "typeIdentifier": "t_bool",
2170
+ "typeString": "bool"
2171
+ },
2172
+ "typeName": {
2173
+ "id": 53926,
2174
+ "name": "bool",
2175
+ "nodeType": "ElementaryTypeName",
2176
+ "src": "1957:4:74",
2177
+ "typeDescriptions": {
2178
+ "typeIdentifier": "t_bool",
2179
+ "typeString": "bool"
2180
+ }
2181
+ },
2182
+ "visibility": "internal"
2183
+ },
2184
+ {
2185
+ "constant": false,
2186
+ "id": 53929,
2187
+ "mutability": "mutable",
2188
+ "name": "returnData",
2189
+ "nameLocation": "1984:10:74",
2190
+ "nodeType": "VariableDeclaration",
2191
+ "scope": 53948,
2192
+ "src": "1971:23:74",
2193
+ "stateVariable": false,
2194
+ "storageLocation": "memory",
2195
+ "typeDescriptions": {
2196
+ "typeIdentifier": "t_bytes_memory_ptr",
2197
+ "typeString": "bytes"
2198
+ },
2199
+ "typeName": {
2200
+ "id": 53928,
2201
+ "name": "bytes",
2202
+ "nodeType": "ElementaryTypeName",
2203
+ "src": "1971:5:74",
2204
+ "typeDescriptions": {
2205
+ "typeIdentifier": "t_bytes_storage_ptr",
2206
+ "typeString": "bytes"
2207
+ }
2208
+ },
2209
+ "visibility": "internal"
2210
+ }
2211
+ ],
2212
+ "id": 53940,
2213
+ "initialValue": {
2214
+ "arguments": [
2215
+ {
2216
+ "id": 53938,
2217
+ "name": "callData",
2218
+ "nodeType": "Identifier",
2219
+ "overloadedDeclarations": [],
2220
+ "referencedDeclaration": 53919,
2221
+ "src": "2059:8:74",
2222
+ "typeDescriptions": {
2223
+ "typeIdentifier": "t_bytes_calldata_ptr",
2224
+ "typeString": "bytes calldata"
2225
+ }
2226
+ }
2227
+ ],
2228
+ "expression": {
2229
+ "argumentTypes": [
2230
+ {
2231
+ "typeIdentifier": "t_bytes_calldata_ptr",
2232
+ "typeString": "bytes calldata"
2233
+ }
2234
+ ],
2235
+ "expression": {
2236
+ "argumentTypes": [
2237
+ {
2238
+ "typeIdentifier": "t_bytes_calldata_ptr",
2239
+ "typeString": "bytes calldata"
2240
+ }
2241
+ ],
2242
+ "expression": {
2243
+ "arguments": [
2244
+ {
2245
+ "id": 53932,
2246
+ "name": "target",
2247
+ "nodeType": "Identifier",
2248
+ "overloadedDeclarations": [],
2249
+ "referencedDeclaration": 53917,
2250
+ "src": "2006:6:74",
2251
+ "typeDescriptions": {
2252
+ "typeIdentifier": "t_address",
2253
+ "typeString": "address"
2254
+ }
2255
+ }
2256
+ ],
2257
+ "expression": {
2258
+ "argumentTypes": [
2259
+ {
2260
+ "typeIdentifier": "t_address",
2261
+ "typeString": "address"
2262
+ }
2263
+ ],
2264
+ "id": 53931,
2265
+ "isConstant": false,
2266
+ "isLValue": false,
2267
+ "isPure": true,
2268
+ "lValueRequested": false,
2269
+ "nodeType": "ElementaryTypeNameExpression",
2270
+ "src": "1998:8:74",
2271
+ "typeDescriptions": {
2272
+ "typeIdentifier": "t_type$_t_address_payable_$",
2273
+ "typeString": "type(address payable)"
2274
+ },
2275
+ "typeName": {
2276
+ "id": 53930,
2277
+ "name": "address",
2278
+ "nodeType": "ElementaryTypeName",
2279
+ "src": "1998:8:74",
2280
+ "stateMutability": "payable",
2281
+ "typeDescriptions": {}
2282
+ }
2283
+ },
2284
+ "id": 53933,
2285
+ "isConstant": false,
2286
+ "isLValue": false,
2287
+ "isPure": false,
2288
+ "kind": "typeConversion",
2289
+ "lValueRequested": false,
2290
+ "nameLocations": [],
2291
+ "names": [],
2292
+ "nodeType": "FunctionCall",
2293
+ "src": "1998:15:74",
2294
+ "tryCall": false,
2295
+ "typeDescriptions": {
2296
+ "typeIdentifier": "t_address_payable",
2297
+ "typeString": "address payable"
2298
+ }
2299
+ },
2300
+ "id": 53934,
2301
+ "isConstant": false,
2302
+ "isLValue": false,
2303
+ "isPure": false,
2304
+ "lValueRequested": false,
2305
+ "memberLocation": "2014:4:74",
2306
+ "memberName": "call",
2307
+ "nodeType": "MemberAccess",
2308
+ "src": "1998:20:74",
2309
+ "typeDescriptions": {
2310
+ "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
2311
+ "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
2312
+ }
2313
+ },
2314
+ "id": 53937,
2315
+ "isConstant": false,
2316
+ "isLValue": false,
2317
+ "isPure": false,
2318
+ "lValueRequested": false,
2319
+ "names": ["value"],
2320
+ "nodeType": "FunctionCallOptions",
2321
+ "options": [
2322
+ {
2323
+ "expression": {
2324
+ "id": 53935,
2325
+ "name": "msg",
2326
+ "nodeType": "Identifier",
2327
+ "overloadedDeclarations": [],
2328
+ "referencedDeclaration": -15,
2329
+ "src": "2039:3:74",
2330
+ "typeDescriptions": {
2331
+ "typeIdentifier": "t_magic_message",
2332
+ "typeString": "msg"
2333
+ }
2334
+ },
2335
+ "id": 53936,
2336
+ "isConstant": false,
2337
+ "isLValue": false,
2338
+ "isPure": false,
2339
+ "lValueRequested": false,
2340
+ "memberLocation": "2043:5:74",
2341
+ "memberName": "value",
2342
+ "nodeType": "MemberAccess",
2343
+ "src": "2039:9:74",
2344
+ "typeDescriptions": {
2345
+ "typeIdentifier": "t_uint256",
2346
+ "typeString": "uint256"
2347
+ }
2348
+ }
2349
+ ],
2350
+ "src": "1998:60:74",
2351
+ "typeDescriptions": {
2352
+ "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
2353
+ "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
2354
+ }
2355
+ },
2356
+ "id": 53939,
2357
+ "isConstant": false,
2358
+ "isLValue": false,
2359
+ "isPure": false,
2360
+ "kind": "functionCall",
2361
+ "lValueRequested": false,
2362
+ "nameLocations": [],
2363
+ "names": [],
2364
+ "nodeType": "FunctionCall",
2365
+ "src": "1998:70:74",
2366
+ "tryCall": false,
2367
+ "typeDescriptions": {
2368
+ "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
2369
+ "typeString": "tuple(bool,bytes memory)"
2370
+ }
2371
+ },
2372
+ "nodeType": "VariableDeclarationStatement",
2373
+ "src": "1956:112:74"
2374
+ },
2375
+ {
2376
+ "condition": {
2377
+ "id": 53942,
2378
+ "isConstant": false,
2379
+ "isLValue": false,
2380
+ "isPure": false,
2381
+ "lValueRequested": false,
2382
+ "nodeType": "UnaryOperation",
2383
+ "operator": "!",
2384
+ "prefix": true,
2385
+ "src": "2082:8:74",
2386
+ "subExpression": {
2387
+ "id": 53941,
2388
+ "name": "success",
2389
+ "nodeType": "Identifier",
2390
+ "overloadedDeclarations": [],
2391
+ "referencedDeclaration": 53927,
2392
+ "src": "2083:7:74",
2393
+ "typeDescriptions": {
2394
+ "typeIdentifier": "t_bool",
2395
+ "typeString": "bool"
2396
+ }
2397
+ },
2398
+ "typeDescriptions": {
2399
+ "typeIdentifier": "t_bool",
2400
+ "typeString": "bool"
2401
+ }
2402
+ },
2403
+ "id": 53945,
2404
+ "nodeType": "IfStatement",
2405
+ "src": "2078:125:74",
2406
+ "trueBody": {
2407
+ "id": 53944,
2408
+ "nodeType": "Block",
2409
+ "src": "2092:111:74",
2410
+ "statements": [
2411
+ {
2412
+ "AST": {
2413
+ "nodeType": "YulBlock",
2414
+ "src": "2115:78:74",
2415
+ "statements": [
2416
+ {
2417
+ "expression": {
2418
+ "arguments": [
2419
+ {
2420
+ "arguments": [
2421
+ {
2422
+ "name": "returnData",
2423
+ "nodeType": "YulIdentifier",
2424
+ "src": "2144:10:74"
2425
+ },
2426
+ {
2427
+ "kind": "number",
2428
+ "nodeType": "YulLiteral",
2429
+ "src": "2156:2:74",
2430
+ "type": "",
2431
+ "value": "32"
2432
+ }
2433
+ ],
2434
+ "functionName": {
2435
+ "name": "add",
2436
+ "nodeType": "YulIdentifier",
2437
+ "src": "2140:3:74"
2438
+ },
2439
+ "nodeType": "YulFunctionCall",
2440
+ "src": "2140:19:74"
2441
+ },
2442
+ {
2443
+ "arguments": [
2444
+ {
2445
+ "name": "returnData",
2446
+ "nodeType": "YulIdentifier",
2447
+ "src": "2167:10:74"
2448
+ }
2449
+ ],
2450
+ "functionName": {
2451
+ "name": "mload",
2452
+ "nodeType": "YulIdentifier",
2453
+ "src": "2161:5:74"
2454
+ },
2455
+ "nodeType": "YulFunctionCall",
2456
+ "src": "2161:17:74"
2457
+ }
2458
+ ],
2459
+ "functionName": {
2460
+ "name": "revert",
2461
+ "nodeType": "YulIdentifier",
2462
+ "src": "2133:6:74"
2463
+ },
2464
+ "nodeType": "YulFunctionCall",
2465
+ "src": "2133:46:74"
2466
+ },
2467
+ "nodeType": "YulExpressionStatement",
2468
+ "src": "2133:46:74"
2469
+ }
2470
+ ]
2471
+ },
2472
+ "evmVersion": "paris",
2473
+ "externalReferences": [
2474
+ {
2475
+ "declaration": 53929,
2476
+ "isOffset": false,
2477
+ "isSlot": false,
2478
+ "src": "2144:10:74",
2479
+ "valueSize": 1
2480
+ },
2481
+ {
2482
+ "declaration": 53929,
2483
+ "isOffset": false,
2484
+ "isSlot": false,
2485
+ "src": "2167:10:74",
2486
+ "valueSize": 1
2487
+ }
2488
+ ],
2489
+ "id": 53943,
2490
+ "nodeType": "InlineAssembly",
2491
+ "src": "2106:87:74"
2492
+ }
2493
+ ]
2494
+ }
2495
+ },
2496
+ {
2497
+ "expression": {
2498
+ "id": 53946,
2499
+ "name": "returnData",
2500
+ "nodeType": "Identifier",
2501
+ "overloadedDeclarations": [],
2502
+ "referencedDeclaration": 53929,
2503
+ "src": "2219:10:74",
2504
+ "typeDescriptions": {
2505
+ "typeIdentifier": "t_bytes_memory_ptr",
2506
+ "typeString": "bytes memory"
2507
+ }
2508
+ },
2509
+ "functionReturnParameters": 53925,
2510
+ "id": 53947,
2511
+ "nodeType": "Return",
2512
+ "src": "2212:17:74"
2513
+ }
2514
+ ]
2515
+ },
2516
+ "functionSelector": "c458b07b",
2517
+ "implemented": true,
2518
+ "kind": "function",
2519
+ "modifiers": [
2520
+ {
2521
+ "id": 53922,
2522
+ "kind": "modifierInvocation",
2523
+ "modifierName": {
2524
+ "id": 53921,
2525
+ "name": "activate",
2526
+ "nameLocations": ["1914:8:74"],
2527
+ "nodeType": "IdentifierPath",
2528
+ "referencedDeclaration": 53852,
2529
+ "src": "1914:8:74"
2530
+ },
2531
+ "nodeType": "ModifierInvocation",
2532
+ "src": "1914:8:74"
2533
+ }
2534
+ ],
2535
+ "name": "activateAndCall",
2536
+ "nameLocation": "1818:15:74",
2537
+ "parameters": {
2538
+ "id": 53920,
2539
+ "nodeType": "ParameterList",
2540
+ "parameters": [
2541
+ {
2542
+ "constant": false,
2543
+ "id": 53917,
2544
+ "mutability": "mutable",
2545
+ "name": "target",
2546
+ "nameLocation": "1851:6:74",
2547
+ "nodeType": "VariableDeclaration",
2548
+ "scope": 53949,
2549
+ "src": "1843:14:74",
2550
+ "stateVariable": false,
2551
+ "storageLocation": "default",
2552
+ "typeDescriptions": {
2553
+ "typeIdentifier": "t_address",
2554
+ "typeString": "address"
2555
+ },
2556
+ "typeName": {
2557
+ "id": 53916,
2558
+ "name": "address",
2559
+ "nodeType": "ElementaryTypeName",
2560
+ "src": "1843:7:74",
2561
+ "stateMutability": "nonpayable",
2562
+ "typeDescriptions": {
2563
+ "typeIdentifier": "t_address",
2564
+ "typeString": "address"
2565
+ }
2566
+ },
2567
+ "visibility": "internal"
2568
+ },
2569
+ {
2570
+ "constant": false,
2571
+ "id": 53919,
2572
+ "mutability": "mutable",
2573
+ "name": "callData",
2574
+ "nameLocation": "1882:8:74",
2575
+ "nodeType": "VariableDeclaration",
2576
+ "scope": 53949,
2577
+ "src": "1867:23:74",
2578
+ "stateVariable": false,
2579
+ "storageLocation": "calldata",
2580
+ "typeDescriptions": {
2581
+ "typeIdentifier": "t_bytes_calldata_ptr",
2582
+ "typeString": "bytes"
2583
+ },
2584
+ "typeName": {
2585
+ "id": 53918,
2586
+ "name": "bytes",
2587
+ "nodeType": "ElementaryTypeName",
2588
+ "src": "1867:5:74",
2589
+ "typeDescriptions": {
2590
+ "typeIdentifier": "t_bytes_storage_ptr",
2591
+ "typeString": "bytes"
2592
+ }
2593
+ },
2594
+ "visibility": "internal"
2595
+ }
2596
+ ],
2597
+ "src": "1833:63:74"
2598
+ },
2599
+ "returnParameters": {
2600
+ "id": 53925,
2601
+ "nodeType": "ParameterList",
2602
+ "parameters": [
2603
+ {
2604
+ "constant": false,
2605
+ "id": 53924,
2606
+ "mutability": "mutable",
2607
+ "name": "",
2608
+ "nameLocation": "-1:-1:-1",
2609
+ "nodeType": "VariableDeclaration",
2610
+ "scope": 53949,
2611
+ "src": "1932:12:74",
2612
+ "stateVariable": false,
2613
+ "storageLocation": "memory",
2614
+ "typeDescriptions": {
2615
+ "typeIdentifier": "t_bytes_memory_ptr",
2616
+ "typeString": "bytes"
2617
+ },
2618
+ "typeName": {
2619
+ "id": 53923,
2620
+ "name": "bytes",
2621
+ "nodeType": "ElementaryTypeName",
2622
+ "src": "1932:5:74",
2623
+ "typeDescriptions": {
2624
+ "typeIdentifier": "t_bytes_storage_ptr",
2625
+ "typeString": "bytes"
2626
+ }
2627
+ },
2628
+ "visibility": "internal"
2629
+ }
2630
+ ],
2631
+ "src": "1931:14:74"
2632
+ },
2633
+ "scope": 54008,
2634
+ "stateMutability": "payable",
2635
+ "virtual": false,
2636
+ "visibility": "external"
2637
+ },
2638
+ {
2639
+ "id": 53958,
2640
+ "nodeType": "FunctionDefinition",
2641
+ "src": "2242:98:74",
2642
+ "nodes": [],
2643
+ "body": {
2644
+ "id": 53957,
2645
+ "nodeType": "Block",
2646
+ "src": "2302:38:74",
2647
+ "nodes": [],
2648
+ "statements": [
2649
+ {
2650
+ "expression": {
2651
+ "id": 53955,
2652
+ "name": "_LAST_OP_MODE_",
2653
+ "nodeType": "Identifier",
2654
+ "overloadedDeclarations": [],
2655
+ "referencedDeclaration": 53822,
2656
+ "src": "2319:14:74",
2657
+ "typeDescriptions": {
2658
+ "typeIdentifier": "t_enum$_PostOpMode_$884",
2659
+ "typeString": "enum IPaymaster.PostOpMode"
2660
+ }
2661
+ },
2662
+ "functionReturnParameters": 53954,
2663
+ "id": 53956,
2664
+ "nodeType": "Return",
2665
+ "src": "2312:21:74"
2666
+ }
2667
+ ]
2668
+ },
2669
+ "baseFunctions": [53774],
2670
+ "functionSelector": "255ed947",
2671
+ "implemented": true,
2672
+ "kind": "function",
2673
+ "modifiers": [],
2674
+ "name": "getLastOpMode",
2675
+ "nameLocation": "2251:13:74",
2676
+ "parameters": {
2677
+ "id": 53950,
2678
+ "nodeType": "ParameterList",
2679
+ "parameters": [],
2680
+ "src": "2264:2:74"
2681
+ },
2682
+ "returnParameters": {
2683
+ "id": 53954,
2684
+ "nodeType": "ParameterList",
2685
+ "parameters": [
2686
+ {
2687
+ "constant": false,
2688
+ "id": 53953,
2689
+ "mutability": "mutable",
2690
+ "name": "",
2691
+ "nameLocation": "-1:-1:-1",
2692
+ "nodeType": "VariableDeclaration",
2693
+ "scope": 53958,
2694
+ "src": "2290:10:74",
2695
+ "stateVariable": false,
2696
+ "storageLocation": "default",
2697
+ "typeDescriptions": {
2698
+ "typeIdentifier": "t_enum$_PostOpMode_$884",
2699
+ "typeString": "enum IPaymaster.PostOpMode"
2700
+ },
2701
+ "typeName": {
2702
+ "id": 53952,
2703
+ "nodeType": "UserDefinedTypeName",
2704
+ "pathNode": {
2705
+ "id": 53951,
2706
+ "name": "PostOpMode",
2707
+ "nameLocations": ["2290:10:74"],
2708
+ "nodeType": "IdentifierPath",
2709
+ "referencedDeclaration": 884,
2710
+ "src": "2290:10:74"
2711
+ },
2712
+ "referencedDeclaration": 884,
2713
+ "src": "2290:10:74",
2714
+ "typeDescriptions": {
2715
+ "typeIdentifier": "t_enum$_PostOpMode_$884",
2716
+ "typeString": "enum IPaymaster.PostOpMode"
2717
+ }
2718
+ },
2719
+ "visibility": "internal"
2720
+ }
2721
+ ],
2722
+ "src": "2289:12:74"
2723
+ },
2724
+ "scope": 54008,
2725
+ "stateMutability": "view",
2726
+ "virtual": false,
2727
+ "visibility": "external"
2728
+ },
2729
+ {
2730
+ "id": 53988,
2731
+ "nodeType": "FunctionDefinition",
2732
+ "src": "2641:435:74",
2733
+ "nodes": [],
2734
+ "body": {
2735
+ "id": 53987,
2736
+ "nodeType": "Block",
2737
+ "src": "2895:181:74",
2738
+ "nodes": [],
2739
+ "statements": [
2740
+ {
2741
+ "condition": {
2742
+ "commonType": {
2743
+ "typeIdentifier": "t_uint256",
2744
+ "typeString": "uint256"
2745
+ },
2746
+ "id": 53978,
2747
+ "isConstant": false,
2748
+ "isLValue": false,
2749
+ "isPure": false,
2750
+ "lValueRequested": false,
2751
+ "leftExpression": {
2752
+ "expression": {
2753
+ "expression": {
2754
+ "id": 53974,
2755
+ "name": "userOp",
2756
+ "nodeType": "Identifier",
2757
+ "overloadedDeclarations": [],
2758
+ "referencedDeclaration": 53962,
2759
+ "src": "2909:6:74",
2760
+ "typeDescriptions": {
2761
+ "typeIdentifier": "t_struct$_UserOperation_$1045_calldata_ptr",
2762
+ "typeString": "struct UserOperation calldata"
2763
+ }
2764
+ },
2765
+ "id": 53975,
2766
+ "isConstant": false,
2767
+ "isLValue": false,
2768
+ "isPure": false,
2769
+ "lValueRequested": false,
2770
+ "memberLocation": "2916:16:74",
2771
+ "memberName": "paymasterAndData",
2772
+ "nodeType": "MemberAccess",
2773
+ "referencedDeclaration": 1042,
2774
+ "src": "2909:23:74",
2775
+ "typeDescriptions": {
2776
+ "typeIdentifier": "t_bytes_calldata_ptr",
2777
+ "typeString": "bytes calldata"
2778
+ }
2779
+ },
2780
+ "id": 53976,
2781
+ "isConstant": false,
2782
+ "isLValue": false,
2783
+ "isPure": false,
2784
+ "lValueRequested": false,
2785
+ "memberLocation": "2933:6:74",
2786
+ "memberName": "length",
2787
+ "nodeType": "MemberAccess",
2788
+ "src": "2909:30:74",
2789
+ "typeDescriptions": {
2790
+ "typeIdentifier": "t_uint256",
2791
+ "typeString": "uint256"
2792
+ }
2793
+ },
2794
+ "nodeType": "BinaryOperation",
2795
+ "operator": "!=",
2796
+ "rightExpression": {
2797
+ "hexValue": "3230",
2798
+ "id": 53977,
2799
+ "isConstant": false,
2800
+ "isLValue": false,
2801
+ "isPure": true,
2802
+ "kind": "number",
2803
+ "lValueRequested": false,
2804
+ "nodeType": "Literal",
2805
+ "src": "2943:2:74",
2806
+ "typeDescriptions": {
2807
+ "typeIdentifier": "t_rational_20_by_1",
2808
+ "typeString": "int_const 20"
2809
+ },
2810
+ "value": "20"
2811
+ },
2812
+ "src": "2909:36:74",
2813
+ "typeDescriptions": {
2814
+ "typeIdentifier": "t_bool",
2815
+ "typeString": "bool"
2816
+ }
2817
+ },
2818
+ "id": 53986,
2819
+ "nodeType": "IfStatement",
2820
+ "src": "2905:165:74",
2821
+ "trueBody": {
2822
+ "id": 53985,
2823
+ "nodeType": "Block",
2824
+ "src": "2947:123:74",
2825
+ "statements": [
2826
+ {
2827
+ "errorCall": {
2828
+ "arguments": [
2829
+ {
2830
+ "expression": {
2831
+ "expression": {
2832
+ "id": 53980,
2833
+ "name": "userOp",
2834
+ "nodeType": "Identifier",
2835
+ "overloadedDeclarations": [],
2836
+ "referencedDeclaration": 53962,
2837
+ "src": "3015:6:74",
2838
+ "typeDescriptions": {
2839
+ "typeIdentifier": "t_struct$_UserOperation_$1045_calldata_ptr",
2840
+ "typeString": "struct UserOperation calldata"
2841
+ }
2842
+ },
2843
+ "id": 53981,
2844
+ "isConstant": false,
2845
+ "isLValue": false,
2846
+ "isPure": false,
2847
+ "lValueRequested": false,
2848
+ "memberLocation": "3022:16:74",
2849
+ "memberName": "paymasterAndData",
2850
+ "nodeType": "MemberAccess",
2851
+ "referencedDeclaration": 1042,
2852
+ "src": "3015:23:74",
2853
+ "typeDescriptions": {
2854
+ "typeIdentifier": "t_bytes_calldata_ptr",
2855
+ "typeString": "bytes calldata"
2856
+ }
2857
+ },
2858
+ "id": 53982,
2859
+ "isConstant": false,
2860
+ "isLValue": false,
2861
+ "isPure": false,
2862
+ "lValueRequested": false,
2863
+ "memberLocation": "3039:6:74",
2864
+ "memberName": "length",
2865
+ "nodeType": "MemberAccess",
2866
+ "src": "3015:30:74",
2867
+ "typeDescriptions": {
2868
+ "typeIdentifier": "t_uint256",
2869
+ "typeString": "uint256"
2870
+ }
2871
+ }
2872
+ ],
2873
+ "expression": {
2874
+ "argumentTypes": [
2875
+ {
2876
+ "typeIdentifier": "t_uint256",
2877
+ "typeString": "uint256"
2878
+ }
2879
+ ],
2880
+ "id": 53979,
2881
+ "name": "InvalidPaymasterAndDataLength",
2882
+ "nodeType": "Identifier",
2883
+ "overloadedDeclarations": [],
2884
+ "referencedDeclaration": 54020,
2885
+ "src": "2968:29:74",
2886
+ "typeDescriptions": {
2887
+ "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$",
2888
+ "typeString": "function (uint256) pure"
2889
+ }
2890
+ },
2891
+ "id": 53983,
2892
+ "isConstant": false,
2893
+ "isLValue": false,
2894
+ "isPure": false,
2895
+ "kind": "functionCall",
2896
+ "lValueRequested": false,
2897
+ "nameLocations": [],
2898
+ "names": [],
2899
+ "nodeType": "FunctionCall",
2900
+ "src": "2968:91:74",
2901
+ "tryCall": false,
2902
+ "typeDescriptions": {
2903
+ "typeIdentifier": "t_tuple$__$",
2904
+ "typeString": "tuple()"
2905
+ }
2906
+ },
2907
+ "id": 53984,
2908
+ "nodeType": "RevertStatement",
2909
+ "src": "2961:98:74"
2910
+ }
2911
+ ]
2912
+ }
2913
+ }
2914
+ ]
2915
+ },
2916
+ "baseFunctions": [206],
2917
+ "documentation": {
2918
+ "id": 53959,
2919
+ "nodeType": "StructuredDocumentation",
2920
+ "src": "2346:290:74",
2921
+ "text": " @notice Validate a user operation that is using this paymaster.\n @param userOp ERC-4337 UserOperation.\n @return context The context containing the sponsor, spender, gasPriceUserOp, and opHash.\n @return validationData The validation result."
2922
+ },
2923
+ "implemented": true,
2924
+ "kind": "function",
2925
+ "modifiers": [],
2926
+ "name": "_validatePaymasterUserOp",
2927
+ "nameLocation": "2650:24:74",
2928
+ "overrides": {
2929
+ "id": 53968,
2930
+ "nodeType": "OverrideSpecifier",
2931
+ "overrides": [],
2932
+ "src": "2819:8:74"
2933
+ },
2934
+ "parameters": {
2935
+ "id": 53967,
2936
+ "nodeType": "ParameterList",
2937
+ "parameters": [
2938
+ {
2939
+ "constant": false,
2940
+ "id": 53962,
2941
+ "mutability": "mutable",
2942
+ "name": "userOp",
2943
+ "nameLocation": "2707:6:74",
2944
+ "nodeType": "VariableDeclaration",
2945
+ "scope": 53988,
2946
+ "src": "2684:29:74",
2947
+ "stateVariable": false,
2948
+ "storageLocation": "calldata",
2949
+ "typeDescriptions": {
2950
+ "typeIdentifier": "t_struct$_UserOperation_$1045_calldata_ptr",
2951
+ "typeString": "struct UserOperation"
2952
+ },
2953
+ "typeName": {
2954
+ "id": 53961,
2955
+ "nodeType": "UserDefinedTypeName",
2956
+ "pathNode": {
2957
+ "id": 53960,
2958
+ "name": "UserOperation",
2959
+ "nameLocations": ["2684:13:74"],
2960
+ "nodeType": "IdentifierPath",
2961
+ "referencedDeclaration": 1045,
2962
+ "src": "2684:13:74"
2963
+ },
2964
+ "referencedDeclaration": 1045,
2965
+ "src": "2684:13:74",
2966
+ "typeDescriptions": {
2967
+ "typeIdentifier": "t_struct$_UserOperation_$1045_storage_ptr",
2968
+ "typeString": "struct UserOperation"
2969
+ }
2970
+ },
2971
+ "visibility": "internal"
2972
+ },
2973
+ {
2974
+ "constant": false,
2975
+ "id": 53964,
2976
+ "mutability": "mutable",
2977
+ "name": "",
2978
+ "nameLocation": "-1:-1:-1",
2979
+ "nodeType": "VariableDeclaration",
2980
+ "scope": 53988,
2981
+ "src": "2723:7:74",
2982
+ "stateVariable": false,
2983
+ "storageLocation": "default",
2984
+ "typeDescriptions": {
2985
+ "typeIdentifier": "t_bytes32",
2986
+ "typeString": "bytes32"
2987
+ },
2988
+ "typeName": {
2989
+ "id": 53963,
2990
+ "name": "bytes32",
2991
+ "nodeType": "ElementaryTypeName",
2992
+ "src": "2723:7:74",
2993
+ "typeDescriptions": {
2994
+ "typeIdentifier": "t_bytes32",
2995
+ "typeString": "bytes32"
2996
+ }
2997
+ },
2998
+ "visibility": "internal"
2999
+ },
3000
+ {
3001
+ "constant": false,
3002
+ "id": 53966,
3003
+ "mutability": "mutable",
3004
+ "name": "",
3005
+ "nameLocation": "-1:-1:-1",
3006
+ "nodeType": "VariableDeclaration",
3007
+ "scope": 53988,
3008
+ "src": "2753:7:74",
3009
+ "stateVariable": false,
3010
+ "storageLocation": "default",
3011
+ "typeDescriptions": {
3012
+ "typeIdentifier": "t_uint256",
3013
+ "typeString": "uint256"
3014
+ },
3015
+ "typeName": {
3016
+ "id": 53965,
3017
+ "name": "uint256",
3018
+ "nodeType": "ElementaryTypeName",
3019
+ "src": "2753:7:74",
3020
+ "typeDescriptions": {
3021
+ "typeIdentifier": "t_uint256",
3022
+ "typeString": "uint256"
3023
+ }
3024
+ },
3025
+ "visibility": "internal"
3026
+ }
3027
+ ],
3028
+ "src": "2674:106:74"
3029
+ },
3030
+ "returnParameters": {
3031
+ "id": 53973,
3032
+ "nodeType": "ParameterList",
3033
+ "parameters": [
3034
+ {
3035
+ "constant": false,
3036
+ "id": 53970,
3037
+ "mutability": "mutable",
3038
+ "name": "context",
3039
+ "nameLocation": "2858:7:74",
3040
+ "nodeType": "VariableDeclaration",
3041
+ "scope": 53988,
3042
+ "src": "2845:20:74",
3043
+ "stateVariable": false,
3044
+ "storageLocation": "memory",
3045
+ "typeDescriptions": {
3046
+ "typeIdentifier": "t_bytes_memory_ptr",
3047
+ "typeString": "bytes"
3048
+ },
3049
+ "typeName": {
3050
+ "id": 53969,
3051
+ "name": "bytes",
3052
+ "nodeType": "ElementaryTypeName",
3053
+ "src": "2845:5:74",
3054
+ "typeDescriptions": {
3055
+ "typeIdentifier": "t_bytes_storage_ptr",
3056
+ "typeString": "bytes"
3057
+ }
3058
+ },
3059
+ "visibility": "internal"
3060
+ },
3061
+ {
3062
+ "constant": false,
3063
+ "id": 53972,
3064
+ "mutability": "mutable",
3065
+ "name": "validationData",
3066
+ "nameLocation": "2875:14:74",
3067
+ "nodeType": "VariableDeclaration",
3068
+ "scope": 53988,
3069
+ "src": "2867:22:74",
3070
+ "stateVariable": false,
3071
+ "storageLocation": "default",
3072
+ "typeDescriptions": {
3073
+ "typeIdentifier": "t_uint256",
3074
+ "typeString": "uint256"
3075
+ },
3076
+ "typeName": {
3077
+ "id": 53971,
3078
+ "name": "uint256",
3079
+ "nodeType": "ElementaryTypeName",
3080
+ "src": "2867:7:74",
3081
+ "typeDescriptions": {
3082
+ "typeIdentifier": "t_uint256",
3083
+ "typeString": "uint256"
3084
+ }
3085
+ },
3086
+ "visibility": "internal"
3087
+ }
3088
+ ],
3089
+ "src": "2844:46:74"
3090
+ },
3091
+ "scope": 54008,
3092
+ "stateMutability": "pure",
3093
+ "virtual": false,
3094
+ "visibility": "internal"
3095
+ },
3096
+ {
3097
+ "id": 54007,
3098
+ "nodeType": "FunctionDefinition",
3099
+ "src": "3431:188:74",
3100
+ "nodes": [],
3101
+ "body": {
3102
+ "id": 54006,
3103
+ "nodeType": "Block",
3104
+ "src": "3581:38:74",
3105
+ "nodes": [],
3106
+ "statements": [
3107
+ {
3108
+ "expression": {
3109
+ "id": 54004,
3110
+ "isConstant": false,
3111
+ "isLValue": false,
3112
+ "isPure": false,
3113
+ "lValueRequested": false,
3114
+ "leftHandSide": {
3115
+ "id": 54002,
3116
+ "name": "_LAST_OP_MODE_",
3117
+ "nodeType": "Identifier",
3118
+ "overloadedDeclarations": [],
3119
+ "referencedDeclaration": 53822,
3120
+ "src": "3591:14:74",
3121
+ "typeDescriptions": {
3122
+ "typeIdentifier": "t_enum$_PostOpMode_$884",
3123
+ "typeString": "enum IPaymaster.PostOpMode"
3124
+ }
3125
+ },
3126
+ "nodeType": "Assignment",
3127
+ "operator": "=",
3128
+ "rightHandSide": {
3129
+ "id": 54003,
3130
+ "name": "mode",
3131
+ "nodeType": "Identifier",
3132
+ "overloadedDeclarations": [],
3133
+ "referencedDeclaration": 53992,
3134
+ "src": "3608:4:74",
3135
+ "typeDescriptions": {
3136
+ "typeIdentifier": "t_enum$_PostOpMode_$884",
3137
+ "typeString": "enum IPaymaster.PostOpMode"
3138
+ }
3139
+ },
3140
+ "src": "3591:21:74",
3141
+ "typeDescriptions": {
3142
+ "typeIdentifier": "t_enum$_PostOpMode_$884",
3143
+ "typeString": "enum IPaymaster.PostOpMode"
3144
+ }
3145
+ },
3146
+ "id": 54005,
3147
+ "nodeType": "ExpressionStatement",
3148
+ "src": "3591:21:74"
3149
+ }
3150
+ ]
3151
+ },
3152
+ "baseFunctions": [249],
3153
+ "documentation": {
3154
+ "id": 53989,
3155
+ "nodeType": "StructuredDocumentation",
3156
+ "src": "3082:344:74",
3157
+ "text": " @notice Post-operation handler.\n @dev Records the result of the user operation (e.g. success or revert).\n Also, reverts if the paymaster was not active, ensuring that only allowed\n operators can make use of this paymaster.\n @param mode The mode enum representing the operation result."
3158
+ },
3159
+ "implemented": true,
3160
+ "kind": "function",
3161
+ "modifiers": [
3162
+ {
3163
+ "id": 54000,
3164
+ "kind": "modifierInvocation",
3165
+ "modifierName": {
3166
+ "id": 53999,
3167
+ "name": "isActive",
3168
+ "nameLocations": ["3572:8:74"],
3169
+ "nodeType": "IdentifierPath",
3170
+ "referencedDeclaration": 53865,
3171
+ "src": "3572:8:74"
3172
+ },
3173
+ "nodeType": "ModifierInvocation",
3174
+ "src": "3572:8:74"
3175
+ }
3176
+ ],
3177
+ "name": "_postOp",
3178
+ "nameLocation": "3440:7:74",
3179
+ "overrides": {
3180
+ "id": 53998,
3181
+ "nodeType": "OverrideSpecifier",
3182
+ "overrides": [],
3183
+ "src": "3563:8:74"
3184
+ },
3185
+ "parameters": {
3186
+ "id": 53997,
3187
+ "nodeType": "ParameterList",
3188
+ "parameters": [
3189
+ {
3190
+ "constant": false,
3191
+ "id": 53992,
3192
+ "mutability": "mutable",
3193
+ "name": "mode",
3194
+ "nameLocation": "3468:4:74",
3195
+ "nodeType": "VariableDeclaration",
3196
+ "scope": 54007,
3197
+ "src": "3457:15:74",
3198
+ "stateVariable": false,
3199
+ "storageLocation": "default",
3200
+ "typeDescriptions": {
3201
+ "typeIdentifier": "t_enum$_PostOpMode_$884",
3202
+ "typeString": "enum IPaymaster.PostOpMode"
3203
+ },
3204
+ "typeName": {
3205
+ "id": 53991,
3206
+ "nodeType": "UserDefinedTypeName",
3207
+ "pathNode": {
3208
+ "id": 53990,
3209
+ "name": "PostOpMode",
3210
+ "nameLocations": ["3457:10:74"],
3211
+ "nodeType": "IdentifierPath",
3212
+ "referencedDeclaration": 884,
3213
+ "src": "3457:10:74"
3214
+ },
3215
+ "referencedDeclaration": 884,
3216
+ "src": "3457:10:74",
3217
+ "typeDescriptions": {
3218
+ "typeIdentifier": "t_enum$_PostOpMode_$884",
3219
+ "typeString": "enum IPaymaster.PostOpMode"
3220
+ }
3221
+ },
3222
+ "visibility": "internal"
3223
+ },
3224
+ {
3225
+ "constant": false,
3226
+ "id": 53994,
3227
+ "mutability": "mutable",
3228
+ "name": "",
3229
+ "nameLocation": "-1:-1:-1",
3230
+ "nodeType": "VariableDeclaration",
3231
+ "scope": 54007,
3232
+ "src": "3482:14:74",
3233
+ "stateVariable": false,
3234
+ "storageLocation": "calldata",
3235
+ "typeDescriptions": {
3236
+ "typeIdentifier": "t_bytes_calldata_ptr",
3237
+ "typeString": "bytes"
3238
+ },
3239
+ "typeName": {
3240
+ "id": 53993,
3241
+ "name": "bytes",
3242
+ "nodeType": "ElementaryTypeName",
3243
+ "src": "3482:5:74",
3244
+ "typeDescriptions": {
3245
+ "typeIdentifier": "t_bytes_storage_ptr",
3246
+ "typeString": "bytes"
3247
+ }
3248
+ },
3249
+ "visibility": "internal"
3250
+ },
3251
+ {
3252
+ "constant": false,
3253
+ "id": 53996,
3254
+ "mutability": "mutable",
3255
+ "name": "",
3256
+ "nameLocation": "-1:-1:-1",
3257
+ "nodeType": "VariableDeclaration",
3258
+ "scope": 54007,
3259
+ "src": "3520:7:74",
3260
+ "stateVariable": false,
3261
+ "storageLocation": "default",
3262
+ "typeDescriptions": {
3263
+ "typeIdentifier": "t_uint256",
3264
+ "typeString": "uint256"
3265
+ },
3266
+ "typeName": {
3267
+ "id": 53995,
3268
+ "name": "uint256",
3269
+ "nodeType": "ElementaryTypeName",
3270
+ "src": "3520:7:74",
3271
+ "typeDescriptions": {
3272
+ "typeIdentifier": "t_uint256",
3273
+ "typeString": "uint256"
3274
+ }
3275
+ },
3276
+ "visibility": "internal"
3277
+ }
3278
+ ],
3279
+ "src": "3447:106:74"
3280
+ },
3281
+ "returnParameters": {
3282
+ "id": 54001,
3283
+ "nodeType": "ParameterList",
3284
+ "parameters": [],
3285
+ "src": "3581:0:74"
3286
+ },
3287
+ "scope": 54008,
3288
+ "stateMutability": "nonpayable",
3289
+ "virtual": false,
3290
+ "visibility": "internal"
3291
+ }
3292
+ ],
3293
+ "abstract": false,
3294
+ "baseContracts": [
3295
+ {
3296
+ "baseName": {
3297
+ "id": 53808,
3298
+ "name": "BasePaymaster",
3299
+ "nameLocations": ["712:13:74"],
3300
+ "nodeType": "IdentifierPath",
3301
+ "referencedDeclaration": 361,
3302
+ "src": "712:13:74"
3303
+ },
3304
+ "id": 53809,
3305
+ "nodeType": "InheritanceSpecifier",
3306
+ "src": "712:13:74"
3307
+ },
3308
+ {
3309
+ "baseName": {
3310
+ "id": 53810,
3311
+ "name": "InspectablePaymasterInterface",
3312
+ "nameLocations": ["731:29:74"],
3313
+ "nodeType": "IdentifierPath",
3314
+ "referencedDeclaration": 53775,
3315
+ "src": "731:29:74"
3316
+ },
3317
+ "id": 53811,
3318
+ "nodeType": "InheritanceSpecifier",
3319
+ "src": "731:29:74"
3320
+ },
3321
+ {
3322
+ "baseName": {
3323
+ "id": 53812,
3324
+ "name": "CheckoutPaymasterEventsAndErrors",
3325
+ "nameLocations": ["766:32:74"],
3326
+ "nodeType": "IdentifierPath",
3327
+ "referencedDeclaration": 54021,
3328
+ "src": "766:32:74"
3329
+ },
3330
+ "id": 53813,
3331
+ "nodeType": "InheritanceSpecifier",
3332
+ "src": "766:32:74"
3333
+ }
3334
+ ],
3335
+ "canonicalName": "CheckoutPaymaster",
3336
+ "contractDependencies": [],
3337
+ "contractKind": "contract",
3338
+ "documentation": {
3339
+ "id": 53807,
3340
+ "nodeType": "StructuredDocumentation",
3341
+ "src": "623:54:74",
3342
+ "text": " @title CheckoutPaymaster\n @author Fun.xyz"
3343
+ },
3344
+ "fullyImplemented": true,
3345
+ "linearizedBaseContracts": [
3346
+ 54008, 54021, 53775, 361, 45296, 47631, 911
3347
+ ],
3348
+ "name": "CheckoutPaymaster",
3349
+ "nameLocation": "687:17:74",
3350
+ "scope": 54009,
3351
+ "usedErrors": [54012, 54016, 54020],
3352
+ "usedEvents": [45197]
3353
+ }
3354
+ ],
3355
+ "license": "UNLICENSED"
3356
+ },
3357
+ "id": 74
3358
+ }