@owlprotocol/contracts-account-abstraction
Version:
ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.
284 lines (283 loc) • 30.2 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var VerifyingPaymaster_exports = {};
__export(VerifyingPaymaster_exports, {
ECDSAInvalidSignature: () => ECDSAInvalidSignature,
ECDSAInvalidSignatureLength: () => ECDSAInvalidSignatureLength,
ECDSAInvalidSignatureS: () => ECDSAInvalidSignatureS,
OwnableInvalidOwner: () => OwnableInvalidOwner,
OwnableUnauthorizedAccount: () => OwnableUnauthorizedAccount,
OwnershipTransferred: () => OwnershipTransferred,
VerifyingPaymaster: () => VerifyingPaymaster,
_constructor: () => _constructor,
abi: () => abi,
addStake: () => addStake,
bytecode: () => bytecode,
deployedBytecode: () => deployedBytecode,
deposit: () => deposit,
entryPoint: () => entryPoint,
errors: () => errors,
events: () => events,
functions: () => functions,
getDeposit: () => getDeposit,
getHash: () => getHash,
implementation: () => implementation,
owner: () => owner,
parsePaymasterAndData: () => parsePaymasterAndData,
postOp: () => postOp,
renounceOwnership: () => renounceOwnership,
transferOwnership: () => transferOwnership,
unlockStake: () => unlockStake,
validatePaymasterUserOp: () => validatePaymasterUserOp,
verifyingSigner: () => verifyingSigner,
withdrawStake: () => withdrawStake,
withdrawTo: () => withdrawTo
});
module.exports = __toCommonJS(VerifyingPaymaster_exports);
const _constructor = {
inputs: [
{ internalType: "contract IEntryPoint", name: "_entryPoint", type: "address" },
{ internalType: "address", name: "_verifyingSigner", type: "address" }
],
stateMutability: "nonpayable",
type: "constructor"
};
const ECDSAInvalidSignature = { inputs: [], name: "ECDSAInvalidSignature", type: "error" };
const ECDSAInvalidSignatureLength = {
inputs: [{ internalType: "uint256", name: "length", type: "uint256" }],
name: "ECDSAInvalidSignatureLength",
type: "error"
};
const ECDSAInvalidSignatureS = {
inputs: [{ internalType: "bytes32", name: "s", type: "bytes32" }],
name: "ECDSAInvalidSignatureS",
type: "error"
};
const OwnableInvalidOwner = {
inputs: [{ internalType: "address", name: "owner", type: "address" }],
name: "OwnableInvalidOwner",
type: "error"
};
const OwnableUnauthorizedAccount = {
inputs: [{ internalType: "address", name: "account", type: "address" }],
name: "OwnableUnauthorizedAccount",
type: "error"
};
const OwnershipTransferred = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "address", name: "previousOwner", type: "address" },
{ indexed: true, internalType: "address", name: "newOwner", type: "address" }
],
name: "OwnershipTransferred",
type: "event"
};
const addStake = {
inputs: [{ internalType: "uint32", name: "unstakeDelaySec", type: "uint32" }],
name: "addStake",
outputs: [],
stateMutability: "payable",
type: "function"
};
const deposit = {
inputs: [],
name: "deposit",
outputs: [],
stateMutability: "payable",
type: "function"
};
const entryPoint = {
inputs: [],
name: "entryPoint",
outputs: [{ internalType: "contract IEntryPoint", name: "", type: "address" }],
stateMutability: "view",
type: "function"
};
const getDeposit = {
inputs: [],
name: "getDeposit",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function"
};
const getHash = {
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: "bytes32", name: "accountGasLimits", type: "bytes32" },
{ internalType: "uint256", name: "preVerificationGas", type: "uint256" },
{ internalType: "bytes32", name: "gasFees", type: "bytes32" },
{ internalType: "bytes", name: "paymasterAndData", type: "bytes" },
{ internalType: "bytes", name: "signature", type: "bytes" }
],
internalType: "struct PackedUserOperation",
name: "userOp",
type: "tuple"
},
{ internalType: "uint48", name: "validUntil", type: "uint48" },
{ internalType: "uint48", name: "validAfter", type: "uint48" }
],
name: "getHash",
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
stateMutability: "view",
type: "function"
};
const owner = {
inputs: [],
name: "owner",
outputs: [{ internalType: "address", name: "", type: "address" }],
stateMutability: "view",
type: "function"
};
const parsePaymasterAndData = {
inputs: [{ internalType: "bytes", name: "paymasterAndData", type: "bytes" }],
name: "parsePaymasterAndData",
outputs: [
{ internalType: "uint48", name: "validUntil", type: "uint48" },
{ internalType: "uint48", name: "validAfter", type: "uint48" },
{ internalType: "bytes", name: "signature", type: "bytes" }
],
stateMutability: "pure",
type: "function"
};
const postOp = {
inputs: [
{ internalType: "enum IPaymaster.PostOpMode", name: "mode", type: "uint8" },
{ internalType: "bytes", name: "context", type: "bytes" },
{ internalType: "uint256", name: "actualGasCost", type: "uint256" },
{ internalType: "uint256", name: "actualUserOpFeePerGas", type: "uint256" }
],
name: "postOp",
outputs: [],
stateMutability: "nonpayable",
type: "function"
};
const renounceOwnership = {
inputs: [],
name: "renounceOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function"
};
const transferOwnership = {
inputs: [{ internalType: "address", name: "newOwner", type: "address" }],
name: "transferOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function"
};
const unlockStake = {
inputs: [],
name: "unlockStake",
outputs: [],
stateMutability: "nonpayable",
type: "function"
};
const validatePaymasterUserOp = {
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: "bytes32", name: "accountGasLimits", type: "bytes32" },
{ internalType: "uint256", name: "preVerificationGas", type: "uint256" },
{ internalType: "bytes32", name: "gasFees", type: "bytes32" },
{ internalType: "bytes", name: "paymasterAndData", type: "bytes" },
{ internalType: "bytes", name: "signature", type: "bytes" }
],
internalType: "struct PackedUserOperation",
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"
};
const verifyingSigner = {
inputs: [],
name: "verifyingSigner",
outputs: [{ internalType: "address", name: "", type: "address" }],
stateMutability: "view",
type: "function"
};
const withdrawStake = {
inputs: [{ internalType: "address payable", name: "withdrawAddress", type: "address" }],
name: "withdrawStake",
outputs: [],
stateMutability: "nonpayable",
type: "function"
};
const withdrawTo = {
inputs: [
{ internalType: "address payable", name: "withdrawAddress", type: "address" },
{ internalType: "uint256", name: "amount", type: "uint256" }
],
name: "withdrawTo",
outputs: [],
stateMutability: "nonpayable",
type: "function"
};
const functions = [
_constructor,
addStake,
deposit,
entryPoint,
getDeposit,
getHash,
owner,
parsePaymasterAndData,
postOp,
renounceOwnership,
transferOwnership,
unlockStake,
validatePaymasterUserOp,
verifyingSigner,
withdrawStake,
withdrawTo
];
const events = [OwnershipTransferred];
const errors = [
ECDSAInvalidSignature,
ECDSAInvalidSignatureLength,
ECDSAInvalidSignatureS,
OwnableInvalidOwner,
OwnableUnauthorizedAccount
];
const abi = [...functions, ...events, ...errors];
const bytecode = "0x60c060409080825234620001e5578181620015988038038091620000248285620001ea565b833981010312620001e55780516001600160a01b0391828216808303620001e557602080920151938085168503620001e5573315620001cd5760008054336001600160a01b031982168117835588519492938693869360249385939091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08880a36301ffc9a760e01b825263122a0e9b60e31b60048301525afa918215620001c157819262000179575b50501562000136575060805260a0525161137390816200022582396080518181816101fb01528181610304015281816103da0152818161049b0152818161054c01528181610a0f01528181610adf0152610ef5015260a05181818161099201526110120152f35b60649084519062461bcd60e51b82526004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d6174636800006044820152fd5b9091508281813d8311620001b9575b620001948183620001ea565b81010312620001b55751908115158203620001b257503880620000cf565b80fd5b5080fd5b503d62000188565b508551903d90823e3d90fd5b8551631e4fbdf760e01b815260006004820152602490fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176200020e57604052565b634e487b7160e01b600052604160045260246000fdfe60406080815260048036101561001457600080fd5b600091823560e01c80630396cb6014610a8457838163205c2878146109b65750806323d9ac9b1461094757806352b7512c146108695780635829c5f5146107de578063715018a6146107415780637c627b211461067f5780638da5cb5b1461062e57806394d4ad6014610574578063b0d691fe1461050157838163bb9fe6bf1461044b578163c23a5cea1461038057508063c399ec881461028d57838163d0e30db0146101b8575063f2fde38b146100cb57600080fd5b346101b45760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b45781359173ffffffffffffffffffffffffffffffffffffffff918284168094036101b057610125610e8d565b8315610181575050600054827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b908460249251917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352820152fd5b8480fd5b8280fd5b808484827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102895773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b1561028457839060248351809581937fb760faf9000000000000000000000000000000000000000000000000000000008352309083015234905af190811561027b57506102685750f35b61027190610bbb565b6102785780f35b80fd5b513d84823e3d90fd5b505050fd5b5050fd5b50346101b457827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b4578051917f70a08231000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa91821561037657839261033e575b6020838351908152f35b9091506020813d60201161036e575b8161035a60209383610c1a565b810103126101b45760209250519038610334565b3d915061034d565b81513d85823e3d90fd5b808484346102895760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610289576103ba610b57565b6103c2610e8d565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016803b1561044757859283602492865197889586947fc23a5cea00000000000000000000000000000000000000000000000000000000865216908401525af190811561027b57506102685750f35b8580fd5b8084843461028957827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028957610484610e8d565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b1561028457839283918351809581937fbb9fe6bf0000000000000000000000000000000000000000000000000000000083525af190811561027b57506102685750f35b83823461057057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610570576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b509190346105705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261057057803567ffffffffffffffff81116101b457601f60606105f56105ef608096957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095369101610b8d565b90610e09565b9389859398949a519a8b9965ffffffffffff8092168b521660208a01528801528160608801528787013785828601015201168101030190f35b83823461057057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105705773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b5091346102785760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027857600382351015610278576024359067ffffffffffffffff821161027857506064926106e060209236908501610b8d565b50506106ea610ede565b51917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600d60248201527f6d757374206f76657272696465000000000000000000000000000000000000006044820152fd5b833461027857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027857610778610e8d565b600073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5090346101b4577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc926060843601126102785781359367ffffffffffffffff851161057057610120908536030112610278575065ffffffffffff60243581811681036108645760443591821682036108645760209461085d9301610d11565b9051908152f35b600080fd5b508234610278576060927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906060823601126101b45780359167ffffffffffffffff8311610943576101209083360301126101b4576108d3849286926108cd610ede565b01610f7b565b9093835194859385855281518096860152825b86811061092c57505050837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092601f926060809787010152602085015201168101030190f35b6020838201810151898301840152889650016108e6565b8380fd5b83823461057057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610570576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8084843461028957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610289576109ef610b57565b6109f7610e8d565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016803b1561044757859283604492865197889586947f205c2878000000000000000000000000000000000000000000000000000000008652169084015260243560248401525af190811561027b57506102685750f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b45782823563ffffffff811680910361057057610ac8610e8d565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001693843b156101b457602490845195869384927f0396cb6000000000000000000000000000000000000000000000000000000000845283015234905af190811561027b5750610b4b575080f35b610b5490610bbb565b80f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361086457565b359065ffffffffffff8216820361086457565b9181601f840112156108645782359167ffffffffffffffff8311610864576020838186019501011161086457565b67ffffffffffffffff8111610bcf57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6020810190811067ffffffffffffffff821117610bcf57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bcf57604052565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610864570180359067ffffffffffffffff82116108645760200191813603831361086457565b92919267ffffffffffffffff8211610bcf5760405191610cf460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610c1a565b829481845281830111610864578281602093846000960137010152565b9091610d2a610d236040840184610c5b565b3691610cac565b6020815191012092610d42610d236060850185610c5b565b6020815191012092610d5760e0820182610c5b565b60349291921161086457601460c09260405196602088019873ffffffffffffffffffffffffffffffffffffffff8535168a52602085013560408a015260608901526080880152608083013560a088015201358286015260a081013560e08601520135610100840152466101208401523061014084015265ffffffffffff80911661016084015261018091168183015281526101a0810181811067ffffffffffffffff821117610bcf5760405251902090565b9190806034116108645760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc8483810103011261086457610e4d60348401610b7a565b91610e5a60548501610b7a565b92938260741161086457607401917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c0190565b73ffffffffffffffffffffffffffffffffffffffff600054163303610eae57565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610f1d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152fd5b90610f8c6105ef60e0840184610c5b565b604081969396148015611173575b156110ef57610fe8610fee92610fb48887610ff797610d11565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c600020923691610cac565b9061117d565b909291926111b9565b73ffffffffffffffffffffffffffffffffffffffff809116907f000000000000000000000000000000000000000000000000000000000000000016036110915779ffffffffffff00000000000000000000000000000000000000007fffffffffffff000000000000000000000000000000000000000000000000000060405161107f81610bfe565b600081529460d01b169160a01b161790565b60019079ffffffffffff00000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000006040516110dc81610bfe565b600081529560d01b169160a01b16171790565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604060248201527f566572696679696e675061796d61737465723a20696e76616c6964207369676e60448201527f6174757265206c656e67746820696e207061796d6173746572416e64446174616064820152fd5b5060418114610f9a565b81519190604183036111ae576111a792506020820151906060604084015193015160001a906112a0565b9192909190565b505060009160029190565b600481101561127157806111cb575050565b600181036111fd5760046040517ff645eedf000000000000000000000000000000000000000000000000000000008152fd5b6002810361123657602482604051907ffce698f70000000000000000000000000000000000000000000000000000000082526004820152fd5b6003146112405750565b602490604051907fd78bce0c0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161133157926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561132557805173ffffffffffffffffffffffffffffffffffffffff81161561131c57918190565b50809160019190565b604051903d90823e3d90fd5b5050506000916003919056fea26469706673582212204813be1a24d91615c67283633df5462f1e8d45e62d226cbe4e761e0a6932a62064736f6c63430008170033";
const deployedBytecode = "0x60406080815260048036101561001457600080fd5b600091823560e01c80630396cb6014610a8457838163205c2878146109b65750806323d9ac9b1461094757806352b7512c146108695780635829c5f5146107de578063715018a6146107415780637c627b211461067f5780638da5cb5b1461062e57806394d4ad6014610574578063b0d691fe1461050157838163bb9fe6bf1461044b578163c23a5cea1461038057508063c399ec881461028d57838163d0e30db0146101b8575063f2fde38b146100cb57600080fd5b346101b45760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b45781359173ffffffffffffffffffffffffffffffffffffffff918284168094036101b057610125610e8d565b8315610181575050600054827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b908460249251917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352820152fd5b8480fd5b8280fd5b808484827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102895773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b1561028457839060248351809581937fb760faf9000000000000000000000000000000000000000000000000000000008352309083015234905af190811561027b57506102685750f35b61027190610bbb565b6102785780f35b80fd5b513d84823e3d90fd5b505050fd5b5050fd5b50346101b457827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b4578051917f70a08231000000000000000000000000000000000000000000000000000000008352309083015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa91821561037657839261033e575b6020838351908152f35b9091506020813d60201161036e575b8161035a60209383610c1a565b810103126101b45760209250519038610334565b3d915061034d565b81513d85823e3d90fd5b808484346102895760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610289576103ba610b57565b6103c2610e8d565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016803b1561044757859283602492865197889586947fc23a5cea00000000000000000000000000000000000000000000000000000000865216908401525af190811561027b57506102685750f35b8580fd5b8084843461028957827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028957610484610e8d565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b1561028457839283918351809581937fbb9fe6bf0000000000000000000000000000000000000000000000000000000083525af190811561027b57506102685750f35b83823461057057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610570576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5080fd5b509190346105705760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261057057803567ffffffffffffffff81116101b457601f60606105f56105ef608096957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095369101610b8d565b90610e09565b9389859398949a519a8b9965ffffffffffff8092168b521660208a01528801528160608801528787013785828601015201168101030190f35b83823461057057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105705773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b5091346102785760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027857600382351015610278576024359067ffffffffffffffff821161027857506064926106e060209236908501610b8d565b50506106ea610ede565b51917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600d60248201527f6d757374206f76657272696465000000000000000000000000000000000000006044820152fd5b833461027857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027857610778610e8d565b600073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5090346101b4577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc926060843601126102785781359367ffffffffffffffff851161057057610120908536030112610278575065ffffffffffff60243581811681036108645760443591821682036108645760209461085d9301610d11565b9051908152f35b600080fd5b508234610278576060927ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906060823601126101b45780359167ffffffffffffffff8311610943576101209083360301126101b4576108d3849286926108cd610ede565b01610f7b565b9093835194859385855281518096860152825b86811061092c57505050837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092601f926060809787010152602085015201168101030190f35b6020838201810151898301840152889650016108e6565b8380fd5b83823461057057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610570576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8084843461028957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610289576109ef610b57565b6109f7610e8d565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016803b1561044757859283604492865197889586947f205c2878000000000000000000000000000000000000000000000000000000008652169084015260243560248401525af190811561027b57506102685750f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b45782823563ffffffff811680910361057057610ac8610e8d565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001693843b156101b457602490845195869384927f0396cb6000000000000000000000000000000000000000000000000000000000845283015234905af190811561027b5750610b4b575080f35b610b5490610bbb565b80f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361086457565b359065ffffffffffff8216820361086457565b9181601f840112156108645782359167ffffffffffffffff8311610864576020838186019501011161086457565b67ffffffffffffffff8111610bcf57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6020810190811067ffffffffffffffff821117610bcf57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610bcf57604052565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610864570180359067ffffffffffffffff82116108645760200191813603831361086457565b92919267ffffffffffffffff8211610bcf5760405191610cf460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610c1a565b829481845281830111610864578281602093846000960137010152565b9091610d2a610d236040840184610c5b565b3691610cac565b6020815191012092610d42610d236060850185610c5b565b6020815191012092610d5760e0820182610c5b565b60349291921161086457601460c09260405196602088019873ffffffffffffffffffffffffffffffffffffffff8535168a52602085013560408a015260608901526080880152608083013560a088015201358286015260a081013560e08601520135610100840152466101208401523061014084015265ffffffffffff80911661016084015261018091168183015281526101a0810181811067ffffffffffffffff821117610bcf5760405251902090565b9190806034116108645760407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc8483810103011261086457610e4d60348401610b7a565b91610e5a60548501610b7a565b92938260741161086457607401917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c0190565b73ffffffffffffffffffffffffffffffffffffffff600054163303610eae57565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610f1d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152fd5b90610f8c6105ef60e0840184610c5b565b604081969396148015611173575b156110ef57610fe8610fee92610fb48887610ff797610d11565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c600020923691610cac565b9061117d565b909291926111b9565b73ffffffffffffffffffffffffffffffffffffffff809116907f000000000000000000000000000000000000000000000000000000000000000016036110915779ffffffffffff00000000000000000000000000000000000000007fffffffffffff000000000000000000000000000000000000000000000000000060405161107f81610bfe565b600081529460d01b169160a01b161790565b60019079ffffffffffff00000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000006040516110dc81610bfe565b600081529560d01b169160a01b16171790565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604060248201527f566572696679696e675061796d61737465723a20696e76616c6964207369676e60448201527f6174757265206c656e67746820696e207061796d6173746572416e64446174616064820152fd5b5060418114610f9a565b81519190604183036111ae576111a792506020820151906060604084015193015160001a906112a0565b9192909190565b505060009160029190565b600481101561127157806111cb575050565b600181036111fd5760046040517ff645eedf000000000000000000000000000000000000000000000000000000008152fd5b6002810361123657602482604051907ffce698f70000000000000000000000000000000000000000000000000000000082526004820152fd5b6003146112405750565b602490604051907fd78bce0c0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161133157926020929160ff608095604051948552168484015260408301526060820152600092839182805260015afa1561132557805173ffffffffffffffffffffffffffffffffffffffff81161561131c57918190565b50809160019190565b604051903d90823e3d90fd5b5050506000916003919056fea26469706673582212204813be1a24d91615c67283633df5462f1e8d45e62d226cbe4e761e0a6932a62064736f6c63430008170033";
const implementation = "0xc4372b954A78e8089fE76dd2F1542F0956886a86";
const VerifyingPaymaster = {
abi,
bytecode,
deployedBytecode,
implementation
};