0 txs
1 call
constructor
constructor(address initialOwner, address _auctioneer, address _permit2, address _externalCallHandler, address _cancelAuthoritiesManager)
functions
auctioneer
viewfunction auctioneer() view returns (address)
cancelAuthoritiesManager
viewfunction cancelAuthoritiesManager() view returns (address)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
externalCallHandler
viewfunction externalCallHandler() view returns (address)
orderData
viewfunction orderData(bytes32 orderHash) view returns (bool initialized, bool cancelled, uint24 totalExecutedIntervals, uint24 lastExecutedIntervalIndex)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
permit2
viewfunction permit2() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
cancelOrder
nonpayablefunction cancelOrder(tuple order)
createOrderManually
nonpayablefunction createOrderManually(tuple order)
fulfillDcaOrder
nonpayablefunction fulfillDcaOrder(uint256 promisedAmountOut, tuple order, bytes userSignature, tuple permission, bytes auctioneerSignature, address fulfillerContract, bytes callBackData)
renounceOwnership
nonpayablefunction renounceOwnership()
setAuctioneer
nonpayablefunction setAuctioneer(address newAuctioneer)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AuctioneerSet
event AuctioneerSet(address)
EIP712DomainChanged
event EIP712DomainChanged()
OrderCancelled
event OrderCancelled(bytes32 orderHash, uint24 remainingIntervals)
OrderFulfilled
event OrderFulfilled(bytes32 indexed orderHash)
OrderIntervalFulfilled
event OrderIntervalFulfilled(bytes32 indexed orderHash, uint24 intervalNumber, uint256 mainAmountOut)
OrderManuallyInitialized
event OrderManuallyInitialized(bytes32 orderHash)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
errors
FeeOnTransferTokensNotSupported
error FeeOnTransferTokensNotSupported()
IntervalIsAlreadyExecuted
error IntervalIsAlreadyExecuted()
InvalidAuctioneerSignature
error InvalidAuctioneerSignature()
InvalidOrder
error InvalidOrder()
InvalidPermission
error InvalidPermission()
InvalidPromisedAmountOut
error InvalidPromisedAmountOut()
InvalidShortString
error InvalidShortString()
InvalidStartTime
error InvalidStartTime()
NotASolver
error NotASolver()
NotAUser
error NotAUser()
NotAUserOrCancelAuthority
error NotAUserOrCancelAuthority()
OrderIsCancelled
error OrderIsCancelled()
OrderIsFulfilled
error OrderIsFulfilled()
OrderWasAlreadyCancelled
error OrderWasAlreadyCancelled()
OrderWasAlreadyInitialized
error OrderWasAlreadyInitialized()
OrderWasNotInitialized
error OrderWasNotInitialized()
OverdueDeadline
error OverdueDeadline()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RequestedTransferNotFulfilled
error RequestedTransferNotFulfilled(address token, address account, uint256 minAmount, uint256 received)
RequestedTransfersLengthMismatch
error RequestedTransfersLengthMismatch()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StringTooLong
error StringTooLong(string str)
ZeroAddress
error ZeroAddress()
creation bytecode
0x6101c060405234801561001157600080fd5b506040516146033803806146038339810160408190526100309161035f565b604080518082018252601381527f53696e676c65436861696e477561726444636100000000000000000000000000602080830191909152825180840190935260018352603160f81b9083015290858585896001600160a01b0381166100b057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100b98161026d565b506001600160a01b03831615806100d757506001600160a01b038216155b806100e957506001600160a01b038116155b156101075760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b039485161790559082166080521660a052610138826003610289565b61016052610147816004610289565b61018052815160208084019190912061012052815190820120610140524660e0526101d66101205161014051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60c05250503061010081905260405163a04770f760e01b815260048101919091526001600160a01b0382169063a04770f790602401602060405180830381865afa158015610228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024c91906103d4565b1561025657600080fd5b6001600160a01b03166101a052506105cc92505050565b600180546001600160a01b0319169055610286816102bc565b50565b60006020835110156102a55761029e8361030c565b90506102b6565b816102b0848261049c565b5060ff90505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080829050601f81511115610337578260405163305a27a960e01b81526004016100a7919061055a565b8051610342826105a8565b179392505050565b6001600160a01b038116811461028657600080fd5b600080600080600060a0868803121561037757600080fd5b85516103828161034a565b60208701519095506103938161034a565b60408701519094506103a48161034a565b60608701519093506103b58161034a565b60808701519092506103c68161034a565b809150509295509295909350565b6000602082840312156103e657600080fd5b815180151581146103f657600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061042757607f821691505b60208210810361044757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561049757806000526020600020601f840160051c810160208510156104745750805b601f840160051c820191505b818110156104945760008155600101610480565b50505b505050565b81516001600160401b038111156104b5576104b56103fd565b6104c9816104c38454610413565b8461044d565b6020601f8211600181146104fd57600083156104e55750848201515b600019600385901b1c1916600184901b178455610494565b600084815260208120601f198516915b8281101561052d578785015182556020948501946001909201910161050d565b508482101561054b5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000825180602084015260005b81811015610588576020818601810151604086840101520161056b565b506000604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104475760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051613fa0610663600039600081816102a0015261091901526000611c8001526000611c4e015260006125870152600061255f015260006124ba015260006124e40152600061250e015260008181610279015281816121d40152612b2301526000818161011301526117df0152613fa06000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c806379ba509711610097578063df3be9b911610066578063df3be9b914610274578063e19bc33f1461029b578063e30c3978146102c2578063f2fde38b146102e057600080fd5b806379ba5097146101c057806384b0196e146101c85780638da5cb5b146101e3578063c4cd9ed31461020157600080fd5b80631e5de78f116100d35780631e5de78f146101725780635450b9d7146101855780635ec2c7bf14610198578063715018a6146101b857600080fd5b8062ede7e4146100f957806312261ee71461010e5780631dce887c1461015f575b600080fd5b61010c610107366004612da0565b6102f3565b005b6101357f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61010c61016d366004612dd6565b6103c1565b61010c610180366004612dd6565b6108a8565b61010c610193366004612e67565b610bfc565b6002546101359073ffffffffffffffffffffffffffffffffffffffff1681565b61010c610d70565b61010c610d84565b6101d0610e00565b6040516101569796959493929190612fdb565b60005473ffffffffffffffffffffffffffffffffffffffff16610135565b61024761020f36600461309c565b60056020526000908152604090205460ff8082169161010081049091169062ffffff6201000082048116916501000000000090041684565b604080519415158552921515602085015262ffffff91821692840192909252166060820152608001610156565b6101357f000000000000000000000000000000000000000000000000000000000000000081565b6101357f000000000000000000000000000000000000000000000000000000000000000081565b60015473ffffffffffffffffffffffffffffffffffffffff16610135565b61010c6102ee366004612da0565b610e62565b6102fb610f12565b73ffffffffffffffffffffffffffffffffffffffff8116610348576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f4ee0985a129917c72eab0afe7ec6060bf6c6e0796bedc42de903d9dbbadfc51d9060200160405180910390a150565b6103ce6020820182612da0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610432576040517f25602e6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081013515806104575750600261045060a08301608084016130c8565b62ffffff16105b8061048857506000610470610100830160e08401612da0565b73ffffffffffffffffffffffffffffffffffffffff16145b156104bf576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104d16040830160208401612da0565b73ffffffffffffffffffffffffffffffffffffffff160361051e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42610531610180830161016084016130f7565b63ffffffff16101561056f576040517fa99f132a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4261058060608301604084016130f7565b63ffffffff1611806105b257506102586105a060608301604084016130f7565b6105b09063ffffffff1642613141565b115b156105e9576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105fc6105f783613391565b610f65565b60008181526005602052604090205490915060ff1615610648576040517fe1379d2c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061065a60a08401608085016130c8565b61066d9062ffffff166060850135613497565b905060006106816040850160208601612da0565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156106ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071191906134ae565b90506107473330846107296040890160208a01612da0565b73ffffffffffffffffffffffffffffffffffffffff1692919061112a565b60008161075a6040870160208801612da0565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156107c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ea91906134ae565b6107f49190613141565b905082811015610830576040517fe1628f7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517fdcef777a456015e43fb48986c15368416c3103dcf3ec68d9ae8c3111006ff69c906108999086815260200190565b60405180910390a15050505050565b6108b56020820182612da0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561099b57506040517fa04770f70000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a04770f790602401602060405180830381865afa158015610975573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099991906134c7565b155b156109d2576040517f3b5d3a2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109e06105f783613391565b60008181526005602052604090205490915060ff16610a2b576040517f8059be5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260056020526040902054610100900460ff1615610a79576040517f9330384700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320815160808082018452915460ff8082161515835261010082041615159482019490945262ffffff6201000085048116938201849052650100000000009094049093166060840152919291610ae49060a087019087016130c8565b610aee91906134e9565b90508062ffffff16600003610b2f576040517ff51e0fdb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610b44606086013562ffffff8416613497565b9050610b84610b566020870187612da0565b82610b676040890160208a01612da0565b73ffffffffffffffffffffffffffffffffffffffff1691906111b9565b6000848152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055517fc5820a7d17c581757d0bb051601ad85633eb364ab3f4841d79f5702b4fbbeae190610899908690859091825262ffffff16602082015260400190565b6000610c0a6105f78b613391565b6000818152600560209081526040918290208251608081018452905460ff8082161515835261010082041615159282019290925262ffffff620100008304811693820193909352650100000000009091049091166060820152909150610c7582828e8e8c8c8c6111fc565b8051610c8757610c87828c8c8c611724565b610ca3858c606001358d6020016020810190610b679190612da0565b6000610cb38d8d8b898989611a33565b9050827f0ec7a2aa914787efd31384a291a0eaf6d9200506ba50855f8aad62803ea721d283604001516001610ce89190613504565b6040805162ffffff9092168252602082018590520160405180910390a2610d1560a08d0160808e016130c8565b62ffffff1682604001516001610d2b9190613504565b62ffffff1603610d615760405183907f48224e98144457f56f46e15959589d8155a9e29ca79439ab9ba37f60561b5c5690600090a25b50505050505050505050505050565b610d78610f12565b610d826000611c16565b565b600154339073ffffffffffffffffffffffffffffffffffffffff168114610df4576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b610dfd81611c16565b50565b600060608060008060006060610e14611c47565b610e1c611c79565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b610e6a610f12565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610ecd60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d82576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610deb565b6000808260e001515167ffffffffffffffff811115610f8657610f86613154565b604051908082528060200260200182016040528015610faf578160200160208202803683370190505b50905060005b8360e001515181101561100d57610fe88460e001518281518110610fdb57610fdb61351f565b6020026020010151611ca6565b828281518110610ffa57610ffa61351f565b6020908102919091010152600101610fb5565b5060405160200161101d9061354e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152603b808352909190613f306020830139604051602001611070929190613720565b60405160208183030381529060405280519060200120836000015184602001518560400151866060015187608001518860a001516110b18a60c00151611ca6565b886040516020016110c2919061374f565b604051602081830303815290604052805190602001208b6101000151805190602001208c61012001518d610140015160405160200161110c9c9b9a99989796959493929190613785565b60405160208183030381529060405280519060200120915050919050565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526111b39186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611d66565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526111f791859182169063a9059cbb9060640161116c565b505050565b600061120785611e0a565b9050866020015115611245576040517fe3cc793300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61125560a08601608087016130c8565b62ffffff16876040015162ffffff160361129b576040517ff51e0fdb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8062ffffff16876060015162ffffff16106112e2576040517fc4c8080e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606085013515806113075750600261130060a08701608088016130c8565b62ffffff16105b8061133857506000611320610100870160e08801612da0565b73ffffffffffffffffffffffffffffffffffffffff16145b1561136f576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b42611382610180870161016088016130f7565b63ffffffff1610806113a95750426113a1610100860160e087016130f7565b63ffffffff16105b156113e0576040517fa99f132a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336113ee6020860186612da0565b73ffffffffffffffffffffffffffffffffffffffff1614611469576127106114186103e882613831565b611426906060870135613497565b6114309190613844565b861015611469576040517f95b2fb6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83606001358610156114a7576040517f9463b69700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360200135881415806114e2575060408701516114c5906001613504565b62ffffff166114da60608601604087016130c8565b62ffffff1614155b15611519576040517f868a64de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061156c61153061152b88611e3a565b611f4a565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f9292505050565b50909250905060008160038111156115865761158661387f565b1415806115a7575073ffffffffffffffffffffffffffffffffffffffff8216155b806115cd575060025473ffffffffffffffffffffffffffffffffffffffff838116911614155b15611604576040517f070f548200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50506040805160808101825260018082526000602083015289830151919283019161162e91613504565b62ffffff90811682529283166020918201526000998a52600581526040998a902082518154928401519b8401516060909401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009093169015157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16176101009b15159b909b029a909a177fffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff1662010000928416929092027fffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff169190911765010000000000919092160217909655505050505050565b60006117366040850160208601612da0565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156117a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c691906134ae565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663137c29fe61181561181087613391565b611fdf565b6118283061182289613391565b90612087565b6118356020890189612da0565b896040516020016118459061354e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190613f0260208301396040518060600160405280603b8152602001613f30603b91396040516020016118b2939291906138ae565b60405160208183030381529060405289896040518863ffffffff1660e01b81526004016118e5979695949392919061391d565b600060405180830381600087803b1580156118ff57600080fd5b505af1158015611913573d6000803e3d6000fd5b5050505060008185602001602081019061192d9190612da0565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015611999573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bd91906134ae565b6119c79190613141565b905060006119db60a08701608088016130c8565b6119ee9062ffffff166060880135613497565b905080821015611a2a576040517fe1628f7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6040805160608101909152600090819080611a5460e08a0160c08b01612da0565b73ffffffffffffffffffffffffffffffffffffffff168152602001611a806101008a0160e08b01612da0565b73ffffffffffffffffffffffffffffffffffffffff168152602001898152509050611c0a604051806101000160405280896020016020810190611ac39190612da0565b73ffffffffffffffffffffffffffffffffffffffff1681526060808b013560208301526040820185905201611b00368a90038a0160808b01613a1a565b8152602001611b136101208b018b613a36565b808060200260200160405190810160405280939291908181526020016000905b82821015611b5f57611b5060608302860136819003810190613a1a565b81526020019060010190611b33565b505050505081526020018773ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001611bcf6101408b018b613a9d565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506120e7565b98975050505050505050565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610dfd8161236c565b6060611c747f000000000000000000000000000000000000000000000000000000000000000060036123e1565b905090565b6060611c747f000000000000000000000000000000000000000000000000000000000000000060046123e1565b60006040518060600160405280603b8152602001613f30603b9139604051602001611cd19190613b02565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120855186830151878501519386019290925273ffffffffffffffffffffffffffffffffffffffff90811693850193909352919091166060830152608082015260a0015b604051602081830303815290604052805190602001209050919050565b600080602060008451602086016000885af180611d89576040513d6000823e3d81fd5b50506000513d91508115611da1578060011415611dbb565b73ffffffffffffffffffffffffffffffffffffffff84163b155b156111b3576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610deb565b6000611e34611e1f60608401604085016130f7565b611e2f60c0850160a086016130f7565b61248c565b92915050565b60006040518060600160405280603b8152602001613f30603b9139604051602001611e659190613b1e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209182012090611ea890840184612da0565b6020840135611ebd60608601604087016130c8565b6060860135611edc611ed736899003890160808a01613a1a565b611ca6565b611eed610100890160e08a016130f7565b60408051602081019890985273ffffffffffffffffffffffffffffffffffffffff90961695870195909552606086019390935262ffffff909116608085015260a084015260c083015263ffffffff1660e082015261010001611d49565b6000611e34611f576124a0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060008351604103611fcc5760208401516040850151606086015160001a611fbe888285856125d8565b955095509550505050611fd8565b50508151600091506002905b9250925092565b6040805160a08101825260006060820181815260808301829052825260208201819052918101919091526000826080015162ffffff1683606001516120249190613497565b905060405180606001604052806040518060400160405280866020015173ffffffffffffffffffffffffffffffffffffffff168152602001848152508152602001846101400151815260200184610120015163ffffffff16815250915050919050565b60408051808201909152600080825260208201526000836080015162ffffff1684606001516120b69190613497565b6040805180820190915273ffffffffffffffffffffffffffffffffffffffff90941684526020840152509092915050565b60e0810151516080820151516000911515908290612106906002613831565b67ffffffffffffffff81111561211e5761211e613154565b60405190808252806020026020018201604052801561218757816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161213c5790505b509050600061222281604051806060016040528088604001516000015173ffffffffffffffffffffffffffffffffffffffff168152602001866121d2578860400151602001516121f4565b7f00000000000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff1681526040808a015101516020909101528491906126d2565b905061223d818660600151846126d29092919063ffffffff16565b905060005b85608001515181101561228b5761228182876080015183815181106122695761226961351f565b6020026020010151856126d29092919063ffffffff16565b9150600101612242565b50808252600061229a83612850565b60a08701518751602089015160c08a01516040517f3071d61d00000000000000000000000000000000000000000000000000000000815294955073ffffffffffffffffffffffffffffffffffffffff90931693633071d61d93612304939291899190600401613c6d565b600060405180830381600087803b15801561231e57600080fd5b505af1158015612332573d6000803e3d6000fd5b50505050612349818461291690919063ffffffff16565b945083156123635761236386604001518760e00151612aba565b50505050919050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060ff83146123fb576123f483612b99565b9050611e34565b81805461240790613d28565b80601f016020809104026020016040519081016040528092919081815260200182805461243390613d28565b80156124805780601f1061245557610100808354040283529160200191612480565b820191906000526020600020905b81548152906001019060200180831161246357829003601f168201915b50505050509050611e34565b6000612499838342612bd8565b9392505050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561250657507f000000000000000000000000000000000000000000000000000000000000000046145b1561253057507f000000000000000000000000000000000000000000000000000000000000000090565b611c74604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561261357506000915060039050826126c8565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612667573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166126be575060009250600191508290506126c8565b9250600091508190505b9450945094915050565b600081604001516000036126e7575081612499565b8351831115612722576040517f2116eb0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8381101561281e57826000015173ffffffffffffffffffffffffffffffffffffffff1685828151811061275a5761275a61351f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff161480156127d55750826020015173ffffffffffffffffffffffffffffffffffffffff168582815181106127b1576127b161351f565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff16145b156128165782604001518582815181106127f1576127f161351f565b60200260200101516040018181516128099190613831565b9052508391506124999050565b600101612725565b50818484815181106128325761283261351f565b6020908102919091010152612848836001613831565b949350505050565b60606000825167ffffffffffffffff81111561286e5761286e613154565b604051908082528060200260200182016040528015612897578160200160208202803683370190505b50905060005b835181101561290f576128ea8482815181106128bb576128bb61351f565b6020026020010151600001518583815181106128d9576128d961351f565b602002602001015160200151612c10565b8282815181106128fc576128fc61351f565b602090810291909101015260010161289d565b5092915050565b60008251825114612953576040517f2116eb0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000805b835181101561290f5760006129968583815181106129785761297861351f565b6020026020010151600001518684815181106128d9576128d961351f565b905060008483815181106129ac576129ac61351f565b6020026020010151826129bf9190613141565b9050826000036129cd578093505b8583815181106129df576129df61351f565b602002602001015160400151811015612ab057858381518110612a0457612a0461351f565b602002602001015160000151868481518110612a2257612a2261351f565b602002602001015160200151878581518110612a4057612a4061351f565b602090810291909101015160409081015190517f1f00e79900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152929091166024830152604482015260648101829052608401610deb565b5050600101612958565b60008060008084806020019051810190612ad49190613d84565b895160208b01516040517f9aca0642000000000000000000000000000000000000000000000000000000008152959950939750919550935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692639aca064292612b5f92918990899089908990600401613e34565b600060405180830381600087803b158015612b7957600080fd5b505af1158015612b8d573d6000803e3d6000fd5b50505050505050505050565b60606000612ba683612ce0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000612c058363ffffffff168563ffffffff1684612bf69190613141565b612c009190613844565b612d21565b612848906001613504565b600073ffffffffffffffffffffffffffffffffffffffff831615612cc3576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015612c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbe91906134ae565b612499565b5073ffffffffffffffffffffffffffffffffffffffff1631919050565b600060ff8216601f811115611e34576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062ffffff821115612d6a576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526018600482015260248101839052604401610deb565b5090565b73ffffffffffffffffffffffffffffffffffffffff81168114610dfd57600080fd5b8035612d9b81612d6e565b919050565b600060208284031215612db257600080fd5b813561249981612d6e565b60006101a08284031215612dd057600080fd5b50919050565b600060208284031215612de857600080fd5b813567ffffffffffffffff811115612dff57600080fd5b61284884828501612dbd565b60008083601f840112612e1d57600080fd5b50813567ffffffffffffffff811115612e3557600080fd5b602083019150836020828501011115612e4d57600080fd5b9250929050565b60006101008284031215612dd057600080fd5b6000806000806000806000806000806101c08b8d031215612e8757600080fd5b8a35995060208b013567ffffffffffffffff811115612ea557600080fd5b612eb18d828e01612dbd565b99505060408b013567ffffffffffffffff811115612ece57600080fd5b612eda8d828e01612e0b565b9099509750612eee90508c60608d01612e54565b95506101608b013567ffffffffffffffff811115612f0b57600080fd5b612f178d828e01612e0b565b9096509450612f2b90506101808c01612d90565b92506101a08b013567ffffffffffffffff811115612f4857600080fd5b612f548d828e01612e0b565b915080935050809150509295989b9194979a5092959850565b60005b83811015612f88578181015183820152602001612f70565b50506000910152565b60008151808452612fa9816020860160208601612f6d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e06020820152600061301660e0830189612f91565b82810360408401526130288189612f91565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b8181101561308b57835183526020938401939092019160010161306d565b50909b9a5050505050505050505050565b6000602082840312156130ae57600080fd5b5035919050565b803562ffffff81168114612d9b57600080fd5b6000602082840312156130da57600080fd5b612499826130b5565b803563ffffffff81168114612d9b57600080fd5b60006020828403121561310957600080fd5b612499826130e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115611e3457611e34613112565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610160810167ffffffffffffffff811182821017156131a7576131a7613154565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156131f4576131f4613154565b604052919050565b60006060828403121561320e57600080fd5b6040516060810167ffffffffffffffff8111828210171561323157613231613154565b604052905080823561324281612d6e565b8152602083013561325281612d6e565b6020820152604092830135920191909152919050565b600082601f83011261327957600080fd5b813567ffffffffffffffff81111561329357613293613154565b6132a260208260051b016131ad565b808282526020820191506020606084028601019250858311156132c457600080fd5b602085015b838110156132eb576132db87826131fc565b83526020909201916060016132c9565b5095945050505050565b600067ffffffffffffffff82111561330f5761330f613154565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261334c57600080fd5b813561335f61335a826132f5565b6131ad565b81815284602083860101111561337457600080fd5b816020850160208301376000918101602001919091529392505050565b60006101a082360312156133a457600080fd5b6133ac613183565b6133b583612d90565b81526133c360208401612d90565b60208201526133d4604084016130e3565b6040820152606083810135908201526133ef608084016130b5565b608082015261340060a084016130e3565b60a08201526134123660c085016131fc565b60c082015261012083013567ffffffffffffffff81111561343257600080fd5b61343e36828601613268565b60e08301525061014083013567ffffffffffffffff81111561345f57600080fd5b61346b3682860161333b565b6101008301525061347f61016084016130e3565b61012082015261018092909201356101408301525090565b8082028115828204841417611e3457611e34613112565b6000602082840312156134c057600080fd5b5051919050565b6000602082840312156134d957600080fd5b8151801515811461249957600080fd5b62ffffff8281168282160390811115611e3457611e34613112565b62ffffff8181168382160190811115611e3457611e34613112565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f53696e676c65436861696e4463614f726465722800000000000000000000000081527f6164647265737320757365722c0000000000000000000000000000000000000060148201527f6164647265737320746f6b656e496e2c0000000000000000000000000000000060218201527f75696e74333220737461727454696d652c00000000000000000000000000000060318201527f75696e7432353620616d6f756e74496e506572496e74657276616c2c0000000060428201527f75696e74323420746f74616c496e74657276616c732c00000000000000000000605e8201527f75696e74333220696e74657276616c4475726174696f6e2c000000000000000060748201527f5472616e7366657244617461207265717565737465644f75747075742c000000608c8201527f5472616e73666572446174615b5d2065787472615472616e73666572732c000060a98201527f627974657320656e636f64656445787465726e616c43616c6c446174612c000060c78201527f75696e74333220646561646c696e652c0000000000000000000000000000000060e5820152600060f58201612499817f75696e74323536206e6f6e6365290000000000000000000000000000000000008152600e0190565b60008351613732818460208801612f6d565b835190830190613746818360208801612f6d565b01949350505050565b8151600090829060208501835b8281101561377a57815184526020938401939091019060010161375c565b509195945050505050565b6000610180820190508d825273ffffffffffffffffffffffffffffffffffffffff8d16602083015273ffffffffffffffffffffffffffffffffffffffff8c16604083015263ffffffff8b16606083015289608083015262ffffff891660a083015263ffffffff881660c08301528660e0830152856101008301528461012083015261381961014083018563ffffffff169052565b826101608301529d9c50505050505050505050505050565b80820180821115611e3457611e34613112565b60008261387a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f53696e676c65436861696e4463614f72646572207769746e65737329000000008152600084516138e681601c850160208901612f6d565b8451908301906138fd81601c840160208901612f6d565b84519101601c0190613913818360208801612f6d565b0195945050505050565b613948818951805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208801516040820152604088015160608201526139896080820188805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff861660c08201528460e082015261014061010082015260006139c4610140830186612f91565b8281036101208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011682010191505098975050505050505050565b600060608284031215613a2c57600080fd5b61249983836131fc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613a6b57600080fd5b83018035915067ffffffffffffffff821115613a8657600080fd5b6020019150606081023603821315612e4d57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ad257600080fd5b83018035915067ffffffffffffffff821115613aed57600080fd5b602001915036819003821315612e4d57600080fd5b60008251613b14818460208701612f6d565b9190910192915050565b7f53696e676c65436861696e446361536f6c7665725065726d697373696f6e280081527f6164647265737320736f6c7665722c0000000000000000000000000000000000601f8201527f62797465733332206f72646572486173682c0000000000000000000000000000602e8201527f75696e74323420696e74657276616c4e756d626572546f457865637574652c0060408201527f75696e7432353620616d6f756e744f75744d696e2c0000000000000000000000605f8201527f5472616e73666572446174612070726f746f636f6c4665655472616e7366657260748201527f2c0000000000000000000000000000000000000000000000000000000000000060948201527f75696e743332207065726d697373696f6e446561646c696e6529000000000000609582015260008251613c608160af850160208701612f6d565b9190910160af0192915050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683528560208401526080604084015280855180835260a08501915060208701925060005b81811015613d1457835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff60208201511660208501526040810151604085015250606083019250602084019350600181019050613cae565b50508381036060850152611c0a8186612f91565b600181811c90821680613d3c57607f821691505b602082108103612dd0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b805160028110612d9b57600080fd5b60008060008060808587031215613d9a57600080fd5b8451613da581612d6e565b6020860151909450613db681612d6e565b604086015190935067ffffffffffffffff811115613dd357600080fd5b8501601f81018713613de457600080fd5b8051613df261335a826132f5565b818152886020838501011115613e0757600080fd5b613e18826020830160208601612f6d565b9350613e2991505060608601613d75565b905092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015273ffffffffffffffffffffffffffffffffffffffff8516604082015273ffffffffffffffffffffffffffffffffffffffff8416606082015260c060808201526000613eb760c0830185612f91565b905060028310613ef0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8260a083015297965050505050505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74295472616e7366657244617461286164647265737320746f6b656e2c616464726573732072656365697665722c75696e7432353620616d6f756e7429a2646970667358221220db4232b43ea89cf6196055e3515c7a67ffa84e176b3e661ede403bca7147784a64736f6c634300081c0033000000000000000000000000d8655d1154a74748ac48f673264efba5c369f4bd00000000000000000000000055ff31601c08fd06bc3563949a9216ed517a1654000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000730a818775a0291f066f3cbb82b34e3c92b61dc200000000000000000000000046be9cb9b0f506bbb286742bdd5a7f217168976e