0 txs
0 calls
constructor
constructor(address _entryPoint, address _owner)
functions
COST_OF_POST
viewfunction COST_OF_POST() view returns (uint256)
entryPoint
viewfunction entryPoint() view returns (address)
getDeposit
viewfunction getDeposit() view returns (uint256)
getHash
viewfunction getHash(tuple userOp, tuple paymasterData) view returns (bytes32)
getTokenExchangeRate
viewfunction getTokenExchangeRate(uint8 slot) view returns (uint256)
getTokens
viewfunction getTokens(uint8[] slots) view returns (tuple[])
owner
viewfunction owner() view returns (address)
parsePaymasterAndData
viewfunction parsePaymasterAndData(bytes paymasterAndData) view returns (tuple)
pendingOwner
viewfunction pendingOwner() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addStake
payablefunction addStake(uint32 unstakeDelaySec) payable
addSupportedToken
nonpayablefunction addSupportedToken(uint8 slot, tuple token)
deposit
payablefunction deposit() payable
postOp
nonpayablefunction postOp(uint8 mode, bytes context, uint256 actualGasCost, uint256 actualUserOpFeePerGas)
renounceOwnership
nonpayablefunction renounceOwnership()
revokeSupportedToken
nonpayablefunction revokeSupportedToken(uint8 slot)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unlockStake
nonpayablefunction unlockStake()
updateTokensExchangeRates
nonpayablefunction updateTokensExchangeRates(uint8[] slots)
validatePaymasterUserOp
nonpayablefunction validatePaymasterUserOp(tuple userOp, bytes32 userOpHash, uint256 maxCost) returns (bytes context, uint256 validationData)
withdrawStake
nonpayablefunction withdrawStake(address withdrawAddress)
withdrawTo
nonpayablefunction withdrawTo(address withdrawAddress, uint256 amount)
withdrawTokensTo
nonpayablefunction withdrawTokensTo(address token, address target, uint256 amount)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
PostOpReverted
event PostOpReverted(bytes32 indexed userOpHash, address indexed sender, address indexed token)
UserOperationSponsored
event UserOperationSponsored(bytes32 indexed userOpHash, address indexed sender, address indexed token, uint256 cost)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
FailedInnerCall
error FailedInnerCall()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a0806040523461019b57604081613d44803803809161001f82856101a0565b83398101031261019b578051906001600160a01b0382169081830361019b5760200151906001600160a01b038216820361019b573315610185576020602491610067336101d9565b6040516301ffc9a760e01b8152631313998b60e31b600482015292839182905afa90811561017957600091610137575b50156100f2576100a9916080526101d9565b604051613b15908161022f82396080518181816101e4015281816102ec01528181610dc9015281816111470152818161120d01528181611308015281816115de0152612bf30152f35b60405162461bcd60e51b815260206004820152601e60248201527f49456e747279506f696e7420696e74657266616365206d69736d6174636800006044820152606490fd5b6020813d602011610171575b81610150602093836101a0565b8101031261016d575190811515820361016a575038610097565b80fd5b5080fd5b3d9150610143565b6040513d6000823e3d90fd5b631e4fbdf760e01b600052600060045260246000fd5b600080fd5b601f909101601f19168101906001600160401b038211908210176101c357604052565b634e487b7160e01b600052604160045260246000fd5b600180546001600160a01b0319908116909155600080546001600160a01b03938416928116831782559192909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a356fe6080604052600436101561001257600080fd5b60003560e01c80630396cb6014610187578063205c2878146101825780632c7f92cc1461017d57806352b7512c146101785780635ab244d914610173578063715018a61461016e578063796d43711461016957806379ba5097146101645780637c627b211461015f5780637fa5c1901461015a5780638da5cb5b1461015557806394d4ad60146101505780639a6e85f01461014b578063b0d691fe14610146578063b9221a4014610141578063bb9fe6bf1461013c578063c23a5cea14610137578063c399ec8814610132578063cc9c837c1461012d578063d0e30db014610128578063e30c397814610123578063ed9f0ef11461011e5763f2fde38b1461011957600080fd5b611703565b61169e565b61164c565b61159c565b61137c565b611290565b6111b0565b6110f7565b610fb0565b610d7e565b610c46565b610b4b565b610aef565b6109f9565b610985565b610832565b6107f7565b610733565b610650565b61043e565b610383565b61028b565b600060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102655760043563ffffffff8116809103610263576101cc61265b565b8173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b15610263576024604051809481937f0396cb60000000000000000000000000000000000000000000000000000000008352600483015234905af1801561025e5782906102505780f35b61025991610e3d565b388180f35b6117c6565b505b80fd5b73ffffffffffffffffffffffffffffffffffffffff81160361028657565b600080fd5b3461028657600060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610265576004356102c881610268565b81602435916102d561265b565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156103745773ffffffffffffffffffffffffffffffffffffffff918360449260405196879586947f205c287800000000000000000000000000000000000000000000000000000000865216600485015260248401525af1801561025e5782906102505780f35b8280fd5b60ff81160361028657565b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865760206103c86004356103c381610378565b6119bc565b604051908152f35b90816101209103126102865790565b919082519283825260005b8481106104295750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016103ea565b346102865760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865760043567ffffffffffffffff8111610286576104a76104936104bb9236906004016103d0565b602435604435916104a2612bdc565b612d67565b6040519283926040845260408401906103df565b9060208301520390f35b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102865760043567ffffffffffffffff811161028657826023820112156102865780600401359267ffffffffffffffff84116102865760248460051b83010111610286576024019190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002111561057057565b610537565b9073ffffffffffffffffffffffffffffffffffffffff8251168152602082015160028110156105705760208201526080806105bf604085015160a0604086015260a08501906103df565b9360608101516060850152015191015290565b602081016020825282518091526040820191602060408360051b8301019401926000915b83831061060557505050505090565b9091929394602080610641837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951610575565b970193019301919392906105f6565b346102865761065e366104c5565b9061066882611b2d565b916106766040519384610e3d565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06106a382611b2d565b0160005b81811061071c57505060005b8181106106cc57604051806106c886826105d2565b0390f35b806107006106fb6106e86106e36001958789611ba0565b611bb5565b60ff166000526002602052604060002090565b611825565b61070a8287611bbf565b526107158186611bbf565b50016106b3565b602090610727611b45565b828288010152016106a7565b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865761076a61265b565b7fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155600073ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865760206040516188b88152f35b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286573373ffffffffffffffffffffffffffffffffffffffff6001541603610912577fffffffffffffffffffffffff000000000000000000000000000000000000000060015416600155600054337fffffffffffffffffffffffff000000000000000000000000000000000000000082161760005573ffffffffffffffffffffffffffffffffffffffff3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b6003111561028657565b359061095582610940565b565b9181601f840112156102865782359167ffffffffffffffff8311610286576020838186019501011161028657565b346102865760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286576109bf600435610940565b60243567ffffffffffffffff8111610286576109e26109f7913690600401610957565b60443590606435926109f2612bdc565b6130ff565b005b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657600435610a3481610378565b73ffffffffffffffffffffffffffffffffffffffff600054163303610a6b5760ff1660005260026020526109f76040600020611c44565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f435030323a206f6e6c79206f776e65722063616e207265766f6b65207375707060448201527f6f7274656420746f6b656e7300000000000000000000000000000000000000006064820152fd5b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b6003111561057057565b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865760043567ffffffffffffffff811161028657610ba6610ba06106c8923690600401610957565b90611f7d565b604051918291602083528051610bbb81610b41565b60208401526020810151610bce81610b41565b604084015260c0610bef604083015160e06060870152610100860190610575565b9160608101516080860152608081015160a086015265ffffffffffff60a0820151168286015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160e08501526103df565b346102865760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657600435610c8181610378565b60243567ffffffffffffffff81116102865760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126102865773ffffffffffffffffffffffffffffffffffffffff600054163303610cfa5760ff6109f7921660005260026020526004016040600020612231565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f435030313a206f6e6c79206f776e65722063616e2061646420737570706f727460448201527f656420746f6b656e7300000000000000000000000000000000000000000000006064820152fd5b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff821117610e3857604052565b610ded565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610e3857604052565b6040519061095560e083610e3d565b6002111561028657565b67ffffffffffffffff8111610e3857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610edd82610e97565b91610eeb6040519384610e3d565b829481845281830111610286578281602093846000960137010152565b9080601f8301121561028657816020610f2393359101610ed1565b90565b91909160a0818403126102865760405190610f4082610e1c565b81938135610f4d81610268565b83526020820135610f5d81610e8d565b602084015260408201359167ffffffffffffffff831161028657610f876080939284938301610f08565b6040850152606081013560608501520135910152565b359065ffffffffffff8216820361028657565b346102865760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865760043567ffffffffffffffff811161028657610fff9036906004016103d0565b60243567ffffffffffffffff81116102865760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261028657611045610e7e565b6110518260040161094a565b815261105f6024830161094a565b6020820152604482013567ffffffffffffffff8111610286576110889060043691850101610f26565b604082015260648201356060820152608482013560808201526110ad60a48301610f9d565b60a082015260c48201359267ffffffffffffffff8411610286576110dd6110e79360046106c89636920101610f08565b60c0830152612496565b6040519081529081906020820190565b34610286576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102655761112f61265b565b8073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156111ad5781906004604051809481937fbb9fe6bf0000000000000000000000000000000000000000000000000000000083525af1801561025e5782906102505780f35b50fd5b3461028657600060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610265576004356111ed81610268565b6111f561265b565b8173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b1561026357602473ffffffffffffffffffffffffffffffffffffffff918360405195869485937fc23a5cea0000000000000000000000000000000000000000000000000000000085521660048401525af1801561025e5782906102505780f35b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa801561025e576106c89160009161134d575b506040519081529081906020820190565b61136f915060203d602011611375575b6113678183610e3d565b81019061264c565b3861133c565b503d61135d565b346102865760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610286576004356113b781610268565b602435906113c482610268565b6044359173ffffffffffffffffffffffffffffffffffffffff600054163303611519576000809173ffffffffffffffffffffffffffffffffffffffff6114979416946040519073ffffffffffffffffffffffffffffffffffffffff60208301937fa9059cbb000000000000000000000000000000000000000000000000000000008552166024830152604482015260448152611461606482610e3d565b519082865af13d15611511573d9061147882610e97565b916114866040519384610e3d565b82523d6000602084013e5b83613a42565b80519081151591826114ef575b50506114ac57005b7f5274afe70000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b61150a9250906020806115069383010191016136e4565b1590565b38806114a4565b606090611491565b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f435030303a206f6e6c79206f776e65722063616e20776974686472617720746f60448201527f6b656e73000000000000000000000000000000000000000000000000000000006064820152fd5b6000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102655773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001681813b1561026557602491604051928380927fb760faf900000000000000000000000000000000000000000000000000000000825230600483015234905af1801561025e5782906102505780f35b346102865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261028657602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b34610286576116ac366104c5565b60005b8181106116b857005b806116c66001928486611ba0565b356116d081610378565b6116d9816119bc565b90816116e8575b5050016116af565b60ff16600052600260205260026040600020015538806116e0565b346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865773ffffffffffffffffffffffffffffffffffffffff60043561175381610268565b61175b61265b565b16807fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015573ffffffffffffffffffffffffffffffffffffffff600054167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b6040513d6000823e3d90fd5b90600182811c9216801561181b575b60208310146117ec57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916117e1565b9060405161183281610e1c565b809260ff815473ffffffffffffffffffffffffffffffffffffffff8116845260a01c166002811015610570576020830152604051600182018054600091611878826117d2565b80855291600181169081156118f857506001146118ba575b505091816118a46003936080950382610e3d565b6040850152600281015460608501520154910152565b6000908152602081209092505b8183106118de5750508101602001816118a4611890565b6001816020929493945483858801015201910191906118c7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208087019190915292151560051b850190920192508391506118a49050611890565b90602082519201517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081169260148110611975575050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000929350829060140360031b1b161690565b908160209103126102865751610f2381610378565b6106fb6119d69160ff166000526002602052604060002090565b73ffffffffffffffffffffffffffffffffffffffff611a25611a0c835173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b1615611b27576000906020810151611a3c81610566565b611a4581610566565b611b16576004915060408101906020611aa0611a0c611a85611a78611a73611a7e611a78611a738a51612761565b61193d565b60601c90565b97516127de565b935173ffffffffffffffffffffffffffffffffffffffff1690565b604051948580927f313ce5670000000000000000000000000000000000000000000000000000000082525afa91821561025e57610f2393600093611ae5575b506129d4565b611b0891935060203d602011611b0f575b611b008183610e3d565b8101906119a7565b9138611adf565b503d611af6565b6040611b23910151612761565b5090565b50600090565b67ffffffffffffffff8111610e385760051b60200190565b60405190611b5282610e1c565b6000608083828152826020820152606060408201528260608201520152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9190811015611bb05760051b0190565b611b71565b35610f2381610378565b8051821015611bb05760209160051b010190565b818110611bde575050565b60008155600101611bd3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90816188b802916188b8830403611c2c57565b611bea565b81810292918115918404141715611c2c57565b600360009182815560018101611c5a81546117d2565b9081611c6d575b50508260028201550155565b81601f869311600114611c845750555b3880611c61565b81835260208320611ca091601f0160051c810190600101611bd3565b808252602082209081548360011b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85881b1c191617905555611c7d565b6040519060e0820182811067ffffffffffffffff821117610e3857604052606060c0836000815260006020820152611d15611b45565b604082015260008382015260006080820152600060a08201520152565b906001116102865790600190565b906002116102865760010190600190565b906008116102865760020190600690565b909291928360081161028657831161028657600801917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80190565b906003116102865760020190600190565b906009116102865760030190600690565b906029116102865760090190602090565b909291928360341161028657831161028657603401917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc0190565b909291928360141161028657831161028657601401917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec0190565b90939293848311610286578411610286578101920390565b919091357fff0000000000000000000000000000000000000000000000000000000000000081169260018110611e92575050565b7fff00000000000000000000000000000000000000000000000000000000000000929350829060010360031b1b161690565b60ff16610f2381610b41565b919091357fffffffffffff000000000000000000000000000000000000000000000000000081169260068110611f04575050565b7fffffffffffff0000000000000000000000000000000000000000000000000000929350829060060360031b1b161690565b359060208110611f44575090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060200360031b1b1690565b611f7a82610b41565b52565b611f85611cdf565b50611faa611fa5611f9f611f998585611d32565b90611e5e565b60f81c90565b611ec4565b91611fbe611fa5611f9f611f998486611d40565b60008052600260205291611ff17fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b611825565b60006a52b7d2dcc80cd2e40000008160609361200c89610b41565b886120ca575050505050906120a4928261202f611f9f611f99856120c297611d9d565b9061208561204f6120496120438785611dae565b90611ed0565b60d01c90565b9461207d6106fb6120696120638487611dbf565b90611f36565b9560ff166000526002602052604060002090565b928386613358565b9690935b61209b612094610e7e565b998a611f71565b60208901611f71565b60408701526060860152608085015265ffffffffffff1660a0840152565b60c082015290565b6120d389610b41565b6001890361213d575050505050906120a492826120f9611f9f611f99856120c297611d9d565b926121356121276106fb6121136120496120438688611dae565b9660ff166000526002602052604060002090565b91606083015193838661328c565b969093612089565b91939561214d8996929496610b41565b60028914612165575b50506120a46120c29596612089565b6120c2965081955061218e8180612188612049612043612195966120a498611d51565b98611d62565b3691610ed1565b95612156565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610286570180359067ffffffffffffffff82116102865760200191813603831361028657565b9190601f81116121fb57505050565b610955926000526020600020906020601f840160051c83019310612227575b601f0160051c0190611bd3565b909150819061221a565b90612281813561224081610268565b839073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b602081013561228f81610e8d565b6002811015610570577fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff74ff000000000000000000000000000000000000000084549260a01b169116178255600182016122ec604083018361219b565b9067ffffffffffffffff8211610e38576123108261230a85546117d2565b856121ec565b600090601f83116001146123845782600395936080959361236593600092612379575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b90555b606081013560028501550135910155565b013590503880612333565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316916123b785600052602060002090565b92815b81811061241957509260019285926003989660809896106123e3575b505050811b019055612368565b01357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83891b60f8161c191690553880806123d6565b919360206001819287870135815501950192016123ba565b94909897969373ffffffffffffffffffffffffffffffffffffffff65ffffffffffff9460e0989461010089019c8952602089015216604087015261247481610b41565b606086015261248281610b41565b60808501521660a083015260c08201520152565b906124ba916124b16124ab60e083018361219b565b90613414565b9491509161345d565b9061252b83516124c981610b41565b6124ff60208601968751946124dd86610b41565b60a088015165ffffffffffff166040519687956020870199309046908c612431565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610e3d565b519020916002825161253c81610b41565b61254581610b41565b036125e5575b815161255681610b41565b61255f81610b41565b156125ad575b6002905161257281610b41565b61257b81610b41565b14612584575090565b608001516040805160208101938452908101919091526125a781606081016124ff565b51902090565b916002906124ff6125da606085015160405192839160208301958660209093929193604081019481520152565b519020929050612565565b916124ff612643612612611a0c604086015173ffffffffffffffffffffffffffffffffffffffff90511690565b604080516020810195865273ffffffffffffffffffffffffffffffffffffffff909216908201529182906060820190565b5190209161254b565b90816020910312610286575190565b73ffffffffffffffffffffffffffffffffffffffff60005416330361091257565b9060208201809211611c2c57565b91908201809211611c2c57565b1561269e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152fd5b1561270357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152fd5b61276b6001612697565b612783815161277c6014600061268a565b11156126fc565b6040519060148083019101602883015b8083106127cb57505060148252601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660405290565b9091602080918451815201920190612793565b6127e86001612697565b6127f9815161277c6028601461268a565b604051906008820190601c01603083015b80831061284257505060288252601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660405290565b909160208091845181520192019061280a565b1561285c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c6964205f646563696d616c730000000000000000000000000000006044820152fd5b604d8111611c2c57600a0a90565b519069ffffffffffffffffffff8216820361028657565b908160a0910312610286576128f3816128c8565b91602082015191604081015191610f236080606084015193016128c8565b8181029291600082127f8000000000000000000000000000000000000000000000000000000000000000821416611c2c578184051490151715611c2c57565b81156129a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82147f8000000000000000000000000000000000000000000000000000000000000000821416611c2c570590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff612a0760ff851680151580612bd1575b612a0290612855565b6128ba565b9116604051907ffeaf968c00000000000000000000000000000000000000000000000000000000825260a082600481845afa90811561025e57600492600092612ba8575b50602090604051938480927f313ce5670000000000000000000000000000000000000000000000000000000082525afa91821561025e5773ffffffffffffffffffffffffffffffffffffffff92612aac928792600092612b4b575b5061352c565b921690604051917ffeaf968c00000000000000000000000000000000000000000000000000000000835260a083600481845afa92831561025e57600093612b6c575b506020600491604051928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa94851561025e57610f2395612b4694612b4093600092612b4b575061352c565b92612911565b612950565b612b6591925060203d602011611b0f57611b008183610e3d565b9038612aa6565b6004919350612b9460209160a03d60a011612ba1575b612b8c8183610e3d565b8101906128df565b5050509050939150612aee565b503d612b82565b6020919250612bc59060a03d60a011612ba157612b8c8183610e3d565b50505090509190612a4b565b5060128111156129f9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303612c1b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152fd5b15612c8057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f435030313a20696e76616c6964207369676e6174757265206c656e677468206960448201527f6e207061796d6173746572416e644461746100000000000000000000000000006064820152fd5b35610f2381610268565b60405190612d1d602083610e3d565b60008252565b919360809373ffffffffffffffffffffffffffffffffffffffff929796958360a08601991685526020850152612d5881610b41565b60408401521660608201520152565b909291612d84610ba0612d7d60e085018561219b565b8091611dd0565b9160c08301612da1815151604081149081156130b2575b50612c79565b612df1612dad83612d04565b93612deb612de660c0860135612de0612dd96fffffffffffffffffffffffffffffffff83169260801c90565b489061268a565b90613585565b611c19565b9061268a565b9184606081019384519460028351612e0881610b41565b612e1181610b41565b03612f84575b5050611a0c612e70612e41612e919373ffffffffffffffffffffffffffffffffffffffff95612496565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002090565b60005473ffffffffffffffffffffffffffffffffffffffff16945190613597565b911603612f3b5782612f0c612f1993612ee060a094610f239751612eb481610b41565b60408601515173ffffffffffffffffffffffffffffffffffffffff16906040519b8c9560208701612d23565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101885287610e3d565b015165ffffffffffff1690565b60a01b79ffffffffffff00000000000000000000000000000000000000001690565b505060a00151909150612f779065ffffffffffff165b79ffffffffffff00000000000000000000000000000000000000009060a01b1660011790565b90612f80612d0e565b9190565b9091608001519081613088575b5050604086015151612fb89073ffffffffffffffffffffffffffffffffffffffff16611a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015290602090829060249082905afa91821561025e57859160009361305d575b506130349161302691611c31565b670de0b6b3a7640000900490565b1161304157843880612e17565b5050505060a00151909150612f779065ffffffffffff16612f51565b6130269193509161307f6130349360203d602011611375576113678183610e3d565b93915091613018565b6130aa929550906130999151611c31565b6a52b7d2dcc80cd2e4000000900490565b923880612f91565b604191501438612d9b565b908160a09103126102865780356130d381610268565b9160208201359160408101356130e881610940565b91608060608301356130f981610268565b92013590565b9161312473ffffffffffffffffffffffffffffffffffffffff936002938101906130bd565b949397929591969097169561313881610b41565b14613253579161315161302692612deb61315695611c19565b611c31565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff84166024820152306044820152606481018290529093906131c690611506906131c081608481016124ff565b836135ad565b6132145760405193845273ffffffffffffffffffffffffffffffffffffffff16927fa050a122b4c0e369e3385eb6b7cccd8019638b2764de67bec0af99130ddf84719080602081015b0390a4565b73ffffffffffffffffffffffffffffffffffffffff1692507ffd192c7f8c08f26e917720fa6006252183cc42217b5f8269b8fafa9764f48cfe600080a4565b5050604051600080825294507fa050a122b4c0e369e3385eb6b7cccd8019638b2764de67bec0af99130ddf84719150806020810161320f565b939291936a52b7d2dcc80cd2e4000000906000916060916132ac81610b41565b600181036132cd5750505050816009610f2393608061218e94015196611e46565b90919293506132db81610b41565b6002810361331257505050610f239161218e9150613300612063602960098489611e46565b948161330c600961267c565b91611e46565b6133228197939795949295610b41565b1561332f575b5050509190565b92945090916009831061026557509060098061334f930191033691610ed1565b91388080613328565b939291936a52b7d2dcc80cd2e40000009060009160609161337881610b41565b600181036133995750505050816029610f2393608061218e94015196611e46565b90919293506133a781610b41565b600281036133d857505050610f239161218e91506133cc612063604960298489611e46565b948161330c602961267c565b6133e88197939795949295610b41565b156133f4575050509190565b92945090916029831061026557509060298061334f930191033691610ed1565b909182601411610286578260241161028657601482013560801c926000906034116102655750813560601c926fffffffffffffffffffffffffffffffff16916024013560801c90565b6134668161363e565b80156134fb575b6125a761347983612d04565b926124ff60208201359161349361218e606083018361219b565b6020815191012090608081013560c060a083013592013592604051978896602088019a8b93909796959260c0959273ffffffffffffffffffffffffffffffffffffffff60e087019a168652602086015260408501526060840152608083015260a08201520152565b5061350c61218e604083018361219b565b6020815191012061346d565b9060ff8091169116039060ff8211611c2c57565b9060ff831660ff821681811060001461355f57505060ff61355361355992610f2395613518565b166128ba565b90612911565b9392931161356c57505090565b60ff613553610f23949361357f93613518565b90612950565b9080821015613592575090565b905090565b610f23916135a4916136fc565b90929192613742565b906000602091828151910182855af1903d60005190836135ce575b50505090565b919250906135f9575073ffffffffffffffffffffffffffffffffffffffff163b15155b3880806135c8565b60019150146135f1565b909280927fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060149560601b1683528483013701016000815290565b61364b604082018261219b565b909161365a611506838561380f565b6136dc5761366a61366f91612d04565b61385f565b91601482116136b85750506040516125a7816124ff6020820194857fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060149260601b1681520190565b816125a7926136c692611e0b565b91906124ff604051938492602084019687613603565b505050600090565b90816020910312610286575180151581036102865790565b815191906041830361372d5761372692506020820151906060604084015193015160001a906139ac565b9192909190565b505060009160029190565b6004111561057057565b61374b81613738565b80613754575050565b61375d81613738565b6001810361378f577ff645eedf0000000000000000000000000000000000000000000000000000000060005260046000fd5b61379881613738565b600281036137ce57507ffce698f70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b806137da600392613738565b146137e25750565b7fd78bce0c0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b90600211611b2757357fffffffffffffffffffffffffffffffffffffffff000000000000000000000000167f77020000000000000000000000000000000000000000000000000000000000001490565b6017600080833c600051907fef010000000000000000000000000000000000000000000000000000000000007fffffff00000000000000000000000000000000000000000000000000000000008316036138e95750611a786138c4610f239260181b90565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690565b3b1561394e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6e6f7420616e204549502d373730322064656c656761746500000000000000006044820152606490fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f73656e64657220686173206e6f20636f646500000000000000000000000000006044820152fd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613a36579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa1561025e5760005173ffffffffffffffffffffffffffffffffffffffff811615613a2a5790600090600090565b50600090600190600090565b50505060009160039190565b90613a815750805115613a5757805190602001fd5b7f1425ea420000000000000000000000000000000000000000000000000000000060005260046000fd5b81511580613ad6575b613a92575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50803b15613a8a56fea26469706673582212203c138c8a8cdaaaa47b7cd7101a8e487a33b24f33786af858c8e0aaf9004f7c6d64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff1080000000000000000000000003cfdc212769c890907bce93d3d8c2c53de6a7a89