0 txs
1 call
constructor
constructor(address initialOwner, address _auctioneer, address _permit2, address _externalCallHandler)
functions
auctioneer
viewfunction auctioneer() 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()
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
0x6101a060405234801561001157600080fd5b50604051614422380380614422833981016040819052610030916102dc565b604080518082018252601381527f53696e676c65436861696e477561726444636100000000000000000000000000602080830191909152825180840190935260018352603160f81b9083015290848484886001600160a01b0381166100b057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100b9816101ea565b506001600160a01b03831615806100d757506001600160a01b038216155b806100e957506001600160a01b038116155b156101075760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b039485161790559082166080521660a052610138826003610206565b61016052610147816004610206565b61018052815160208084019190912061012052815190820120610140524660e0526101d66101205161014051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60c052505030610100525061050a92505050565b600180546001600160a01b031916905561020381610239565b50565b60006020835110156102225761021b83610289565b9050610233565b8161022d84826103da565b5060ff90505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080829050601f815111156102b4578260405163305a27a960e01b81526004016100a79190610498565b80516102bf826104e6565b179392505050565b6001600160a01b038116811461020357600080fd5b600080600080608085870312156102f257600080fd5b84516102fd816102c7565b602086015190945061030e816102c7565b604086015190935061031f816102c7565b6060860151909250610330816102c7565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061036557607f821691505b60208210810361038557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156103d557806000526020600020601f840160051c810160208510156103b25750805b601f840160051c820191505b818110156103d257600081556001016103be565b50505b505050565b81516001600160401b038111156103f3576103f361033b565b610407816104018454610351565b8461038b565b6020601f82116001811461043b57600083156104235750848201515b600019600385901b1c1916600184901b1784556103d2565b600084815260208120601f198516915b8281101561046b578785015182556020948501946001909201910161044b565b50848210156104895786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000825180602084015260005b818110156104c657602081860181015160408684010152016104a9565b506000604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156103855760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516101605161018051613e9361058f6000396000611b9501526000611b630152600061249c01526000612474015260006123cf015260006123f90152600061242301526000818161026e015281816120e90152612a3801526000818161010801526116f40152613e936000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806379ba50971161008c578063c4cd9ed311610066578063c4cd9ed3146101f6578063df3be9b914610269578063e30c397814610290578063f2fde38b146102ae57600080fd5b806379ba5097146101b557806384b0196e146101bd5780638da5cb5b146101d857600080fd5b80631e5de78f116100c85780631e5de78f146101675780635450b9d71461017a5780635ec2c7bf1461018d578063715018a6146101ad57600080fd5b8062ede7e4146100ee57806312261ee7146101035780631dce887c14610154575b600080fd5b6101016100fc366004612cb5565b6102c1565b005b61012a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610101610162366004612ceb565b61038f565b610101610175366004612ceb565b610876565b610101610188366004612d7c565b610b11565b60025461012a9073ffffffffffffffffffffffffffffffffffffffff1681565b610101610c85565b610101610c99565b6101c5610d15565b60405161014b9796959493929190612ef0565b60005473ffffffffffffffffffffffffffffffffffffffff1661012a565b61023c610204366004612fb1565b60056020526000908152604090205460ff8082169161010081049091169062ffffff6201000082048116916501000000000090041684565b604080519415158552921515602085015262ffffff9182169284019290925216606082015260800161014b565b61012a7f000000000000000000000000000000000000000000000000000000000000000081565b60015473ffffffffffffffffffffffffffffffffffffffff1661012a565b6101016102bc366004612cb5565b610d77565b6102c9610e27565b73ffffffffffffffffffffffffffffffffffffffff8116610316576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f4ee0985a129917c72eab0afe7ec6060bf6c6e0796bedc42de903d9dbbadfc51d9060200160405180910390a150565b61039c6020820182612cb5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610400576040517f25602e6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081013515806104255750600261041e60a0830160808401612fdd565b62ffffff16105b806104565750600061043e610100830160e08401612cb5565b73ffffffffffffffffffffffffffffffffffffffff16145b1561048d576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061049f6040830160208401612cb5565b73ffffffffffffffffffffffffffffffffffffffff16036104ec576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426104ff6101808301610160840161300c565b63ffffffff16101561053d576040517fa99f132a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4261054e606083016040840161300c565b63ffffffff161180610580575061025861056e606083016040840161300c565b61057e9063ffffffff1642613056565b115b156105b7576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105ca6105c5836132a6565b610e7a565b60008181526005602052604090205490915060ff1615610616576040517fe1379d2c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061062860a0840160808501612fdd565b61063b9062ffffff1660608501356133ac565b9050600061064f6040850160208601612cb5565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156106bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106df91906133c3565b90506107153330846106f76040890160208a01612cb5565b73ffffffffffffffffffffffffffffffffffffffff1692919061103f565b6000816107286040870160208801612cb5565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b891906133c3565b6107c29190613056565b9050828110156107fe576040517fe1628f7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517fdcef777a456015e43fb48986c15368416c3103dcf3ec68d9ae8c3111006ff69c906108679086815260200190565b60405180910390a15050505050565b6108836020820182612cb5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108e7576040517f25602e6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108f56105c5836132a6565b60008181526005602052604090205490915060ff16610940576040517f8059be5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260056020526040902054610100900460ff161561098e576040517f9330384700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320815160808082018452915460ff8082161515835261010082041615159482019490945262ffffff62010000850481169382018490526501000000000090940490931660608401529192916109f99060a08701908701612fdd565b610a0391906133dc565b90508062ffffff16600003610a44576040517ff51e0fdb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a59606086013562ffffff84166133ac565b9050610a99610a6b6020870187612cb5565b82610a7c6040890160208a01612cb5565b73ffffffffffffffffffffffffffffffffffffffff1691906110ce565b6000848152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055517fc5820a7d17c581757d0bb051601ad85633eb364ab3f4841d79f5702b4fbbeae190610867908690859091825262ffffff16602082015260400190565b6000610b1f6105c58b6132a6565b6000818152600560209081526040918290208251608081018452905460ff8082161515835261010082041615159282019290925262ffffff620100008304811693820193909352650100000000009091049091166060820152909150610b8a82828e8e8c8c8c611111565b8051610b9c57610b9c828c8c8c611639565b610bb8858c606001358d6020016020810190610a7c9190612cb5565b6000610bc88d8d8b898989611948565b9050827f0ec7a2aa914787efd31384a291a0eaf6d9200506ba50855f8aad62803ea721d283604001516001610bfd91906133f7565b6040805162ffffff9092168252602082018590520160405180910390a2610c2a60a08d0160808e01612fdd565b62ffffff1682604001516001610c4091906133f7565b62ffffff1603610c765760405183907f48224e98144457f56f46e15959589d8155a9e29ca79439ab9ba37f60561b5c5690600090a25b50505050505050505050505050565b610c8d610e27565b610c976000611b2b565b565b600154339073ffffffffffffffffffffffffffffffffffffffff168114610d09576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b610d1281611b2b565b50565b600060608060008060006060610d29611b5c565b610d31611b8e565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b610d7f610e27565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610de260005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c97576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610d00565b6000808260e001515167ffffffffffffffff811115610e9b57610e9b613069565b604051908082528060200260200182016040528015610ec4578160200160208202803683370190505b50905060005b8360e0015151811015610f2257610efd8460e001518281518110610ef057610ef0613412565b6020026020010151611bbb565b828281518110610f0f57610f0f613412565b6020908102919091010152600101610eca565b50604051602001610f3290613441565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152603b808352909190613e236020830139604051602001610f85929190613613565b60405160208183030381529060405280519060200120836000015184602001518560400151866060015187608001518860a00151610fc68a60c00151611bbb565b88604051602001610fd79190613642565b604051602081830303815290604052805190602001208b6101000151805190602001208c61012001518d61014001516040516020016110219c9b9a99989796959493929190613678565b60405160208183030381529060405280519060200120915050919050565b60405173ffffffffffffffffffffffffffffffffffffffff84811660248301528381166044830152606482018390526110c89186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611c7b565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261110c91859182169063a9059cbb90606401611081565b505050565b600061111c85611d1f565b905086602001511561115a576040517fe3cc793300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61116a60a0860160808701612fdd565b62ffffff16876040015162ffffff16036111b0576040517ff51e0fdb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8062ffffff16876060015162ffffff16106111f7576040517fc4c8080e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060850135158061121c5750600261121560a0870160808801612fdd565b62ffffff16105b8061124d57506000611235610100870160e08801612cb5565b73ffffffffffffffffffffffffffffffffffffffff16145b15611284576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426112976101808701610160880161300c565b63ffffffff1610806112be5750426112b6610100860160e0870161300c565b63ffffffff16105b156112f5576040517fa99f132a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336113036020860186612cb5565b73ffffffffffffffffffffffffffffffffffffffff161461137e5761271061132d6103e882613724565b61133b9060608701356133ac565b6113459190613737565b86101561137e576040517f95b2fb6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83606001358610156113bc576040517f9463b69700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360200135881415806113f7575060408701516113da9060016133f7565b62ffffff166113ef6060860160408701612fdd565b62ffffff1614155b1561142e576040517f868a64de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061148161144561144088611d4f565b611e5f565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ea792505050565b509092509050600081600381111561149b5761149b613772565b1415806114bc575073ffffffffffffffffffffffffffffffffffffffff8216155b806114e2575060025473ffffffffffffffffffffffffffffffffffffffff838116911614155b15611519576040517f070f548200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505060408051608081018252600180825260006020830152898301519192830191611543916133f7565b62ffffff90811682529283166020918201526000998a52600581526040998a902082518154928401519b8401516060909401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009093169015157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16176101009b15159b909b029a909a177fffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffff1662010000928416929092027fffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffff169190911765010000000000919092160217909655505050505050565b600061164b6040850160208601612cb5565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db91906133c3565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663137c29fe61172a611725876132a6565b611ef4565b61173d30611737896132a6565b90611f9c565b61174a6020890189612cb5565b8960405160200161175a90613441565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190613df560208301396040518060600160405280603b8152602001613e23603b91396040516020016117c7939291906137a1565b60405160208183030381529060405289896040518863ffffffff1660e01b81526004016117fa9796959493929190613810565b600060405180830381600087803b15801561181457600080fd5b505af1158015611828573d6000803e3d6000fd5b505050506000818560200160208101906118429190612cb5565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d291906133c3565b6118dc9190613056565b905060006118f060a0870160808801612fdd565b6119039062ffffff1660608801356133ac565b90508082101561193f576040517fe1628f7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b604080516060810190915260009081908061196960e08a0160c08b01612cb5565b73ffffffffffffffffffffffffffffffffffffffff1681526020016119956101008a0160e08b01612cb5565b73ffffffffffffffffffffffffffffffffffffffff168152602001898152509050611b1f6040518061010001604052808960200160208101906119d89190612cb5565b73ffffffffffffffffffffffffffffffffffffffff1681526060808b013560208301526040820185905201611a15368a90038a0160808b0161390d565b8152602001611a286101208b018b613929565b808060200260200160405190810160405280939291908181526020016000905b82821015611a7457611a656060830286013681900381019061390d565b81526020019060010190611a48565b505050505081526020018773ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001611ae46101408b018b613990565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250611ffc565b98975050505050505050565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610d1281612281565b6060611b897f000000000000000000000000000000000000000000000000000000000000000060036122f6565b905090565b6060611b897f000000000000000000000000000000000000000000000000000000000000000060046122f6565b60006040518060600160405280603b8152602001613e23603b9139604051602001611be691906139f5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120855186830151878501519386019290925273ffffffffffffffffffffffffffffffffffffffff90811693850193909352919091166060830152608082015260a0015b604051602081830303815290604052805190602001209050919050565b600080602060008451602086016000885af180611c9e576040513d6000823e3d81fd5b50506000513d91508115611cb6578060011415611cd0565b73ffffffffffffffffffffffffffffffffffffffff84163b155b156110c8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610d00565b6000611d49611d34606084016040850161300c565b611d4460c0850160a0860161300c565b6123a1565b92915050565b60006040518060600160405280603b8152602001613e23603b9139604051602001611d7a9190613a11565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209182012090611dbd90840184612cb5565b6020840135611dd26060860160408701612fdd565b6060860135611df1611dec36899003890160808a0161390d565b611bbb565b611e02610100890160e08a0161300c565b60408051602081019890985273ffffffffffffffffffffffffffffffffffffffff90961695870195909552606086019390935262ffffff909116608085015260a084015260c083015263ffffffff1660e082015261010001611c5e565b6000611d49611e6c6123b5565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b60008060008351604103611ee15760208401516040850151606086015160001a611ed3888285856124ed565b955095509550505050611eed565b50508151600091506002905b9250925092565b6040805160a08101825260006060820181815260808301829052825260208201819052918101919091526000826080015162ffffff168360600151611f3991906133ac565b905060405180606001604052806040518060400160405280866020015173ffffffffffffffffffffffffffffffffffffffff168152602001848152508152602001846101400151815260200184610120015163ffffffff16815250915050919050565b60408051808201909152600080825260208201526000836080015162ffffff168460600151611fcb91906133ac565b6040805180820190915273ffffffffffffffffffffffffffffffffffffffff90941684526020840152509092915050565b60e081015151608082015151600091151590829061201b906002613724565b67ffffffffffffffff81111561203357612033613069565b60405190808252806020026020018201604052801561209c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816120515790505b509050600061213781604051806060016040528088604001516000015173ffffffffffffffffffffffffffffffffffffffff168152602001866120e757886040015160200151612109565b7f00000000000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff1681526040808a015101516020909101528491906125e7565b9050612152818660600151846125e79092919063ffffffff16565b905060005b8560800151518110156121a057612196828760800151838151811061217e5761217e613412565b6020026020010151856125e79092919063ffffffff16565b9150600101612157565b5080825260006121af83612765565b60a08701518751602089015160c08a01516040517f3071d61d00000000000000000000000000000000000000000000000000000000815294955073ffffffffffffffffffffffffffffffffffffffff90931693633071d61d93612219939291899190600401613b60565b600060405180830381600087803b15801561223357600080fd5b505af1158015612247573d6000803e3d6000fd5b5050505061225e818461282b90919063ffffffff16565b945083156122785761227886604001518760e001516129cf565b50505050919050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060ff83146123105761230983612aae565b9050611d49565b81805461231c90613c1b565b80601f016020809104026020016040519081016040528092919081815260200182805461234890613c1b565b80156123955780601f1061236a57610100808354040283529160200191612395565b820191906000526020600020905b81548152906001019060200180831161237857829003601f168201915b50505050509050611d49565b60006123ae838342612aed565b9392505050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561241b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561244557507f000000000000000000000000000000000000000000000000000000000000000090565b611b89604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561252857506000915060039050826125dd565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561257c573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166125d3575060009250600191508290506125dd565b9250600091508190505b9450945094915050565b600081604001516000036125fc5750816123ae565b8351831115612637576040517f2116eb0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8381101561273357826000015173ffffffffffffffffffffffffffffffffffffffff1685828151811061266f5761266f613412565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff161480156126ea5750826020015173ffffffffffffffffffffffffffffffffffffffff168582815181106126c6576126c6613412565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff16145b1561272b57826040015185828151811061270657612706613412565b602002602001015160400181815161271e9190613724565b9052508391506123ae9050565b60010161263a565b508184848151811061274757612747613412565b602090810291909101015261275d836001613724565b949350505050565b60606000825167ffffffffffffffff81111561278357612783613069565b6040519080825280602002602001820160405280156127ac578160200160208202803683370190505b50905060005b8351811015612824576127ff8482815181106127d0576127d0613412565b6020026020010151600001518583815181106127ee576127ee613412565b602002602001015160200151612b25565b82828151811061281157612811613412565b60209081029190910101526001016127b2565b5092915050565b60008251825114612868576040517f2116eb0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000805b83518110156128245760006128ab85838151811061288d5761288d613412565b6020026020010151600001518684815181106127ee576127ee613412565b905060008483815181106128c1576128c1613412565b6020026020010151826128d49190613056565b9050826000036128e2578093505b8583815181106128f4576128f4613412565b6020026020010151604001518110156129c55785838151811061291957612919613412565b60200260200101516000015186848151811061293757612937613412565b60200260200101516020015187858151811061295557612955613412565b602090810291909101015160409081015190517f1f00e79900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152929091166024830152604482015260648101829052608401610d00565b505060010161286d565b600080600080848060200190518101906129e99190613c77565b895160208b01516040517f9aca0642000000000000000000000000000000000000000000000000000000008152959950939750919550935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692639aca064292612a7492918990899089908990600401613d27565b600060405180830381600087803b158015612a8e57600080fd5b505af1158015612aa2573d6000803e3d6000fd5b50505050505050505050565b60606000612abb83612bf5565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000612b1a8363ffffffff168563ffffffff1684612b0b9190613056565b612b159190613737565b612c36565b61275d9060016133f7565b600073ffffffffffffffffffffffffffffffffffffffff831615612bd8576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015612baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd391906133c3565b6123ae565b5073ffffffffffffffffffffffffffffffffffffffff1631919050565b600060ff8216601f811115611d49576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062ffffff821115612c7f576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526018600482015260248101839052604401610d00565b5090565b73ffffffffffffffffffffffffffffffffffffffff81168114610d1257600080fd5b8035612cb081612c83565b919050565b600060208284031215612cc757600080fd5b81356123ae81612c83565b60006101a08284031215612ce557600080fd5b50919050565b600060208284031215612cfd57600080fd5b813567ffffffffffffffff811115612d1457600080fd5b61275d84828501612cd2565b60008083601f840112612d3257600080fd5b50813567ffffffffffffffff811115612d4a57600080fd5b602083019150836020828501011115612d6257600080fd5b9250929050565b60006101008284031215612ce557600080fd5b6000806000806000806000806000806101c08b8d031215612d9c57600080fd5b8a35995060208b013567ffffffffffffffff811115612dba57600080fd5b612dc68d828e01612cd2565b99505060408b013567ffffffffffffffff811115612de357600080fd5b612def8d828e01612d20565b9099509750612e0390508c60608d01612d69565b95506101608b013567ffffffffffffffff811115612e2057600080fd5b612e2c8d828e01612d20565b9096509450612e4090506101808c01612ca5565b92506101a08b013567ffffffffffffffff811115612e5d57600080fd5b612e698d828e01612d20565b915080935050809150509295989b9194979a5092959850565b60005b83811015612e9d578181015183820152602001612e85565b50506000910152565b60008151808452612ebe816020860160208601612e82565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201526000612f2b60e0830189612ea6565b8281036040840152612f3d8189612ea6565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b81811015612fa0578351835260209384019390920191600101612f82565b50909b9a5050505050505050505050565b600060208284031215612fc357600080fd5b5035919050565b803562ffffff81168114612cb057600080fd5b600060208284031215612fef57600080fd5b6123ae82612fca565b803563ffffffff81168114612cb057600080fd5b60006020828403121561301e57600080fd5b6123ae82612ff8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115611d4957611d49613027565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610160810167ffffffffffffffff811182821017156130bc576130bc613069565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561310957613109613069565b604052919050565b60006060828403121561312357600080fd5b6040516060810167ffffffffffffffff8111828210171561314657613146613069565b604052905080823561315781612c83565b8152602083013561316781612c83565b6020820152604092830135920191909152919050565b600082601f83011261318e57600080fd5b813567ffffffffffffffff8111156131a8576131a8613069565b6131b760208260051b016130c2565b808282526020820191506020606084028601019250858311156131d957600080fd5b602085015b83811015613200576131f08782613111565b83526020909201916060016131de565b5095945050505050565b600067ffffffffffffffff82111561322457613224613069565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261326157600080fd5b813561327461326f8261320a565b6130c2565b81815284602083860101111561328957600080fd5b816020850160208301376000918101602001919091529392505050565b60006101a082360312156132b957600080fd5b6132c1613098565b6132ca83612ca5565b81526132d860208401612ca5565b60208201526132e960408401612ff8565b60408201526060838101359082015261330460808401612fca565b608082015261331560a08401612ff8565b60a08201526133273660c08501613111565b60c082015261012083013567ffffffffffffffff81111561334757600080fd5b6133533682860161317d565b60e08301525061014083013567ffffffffffffffff81111561337457600080fd5b61338036828601613250565b610100830152506133946101608401612ff8565b61012082015261018092909201356101408301525090565b8082028115828204841417611d4957611d49613027565b6000602082840312156133d557600080fd5b5051919050565b62ffffff8281168282160390811115611d4957611d49613027565b62ffffff8181168382160190811115611d4957611d49613027565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f53696e676c65436861696e4463614f726465722800000000000000000000000081527f6164647265737320757365722c0000000000000000000000000000000000000060148201527f6164647265737320746f6b656e496e2c0000000000000000000000000000000060218201527f75696e74333220737461727454696d652c00000000000000000000000000000060318201527f75696e7432353620616d6f756e74496e506572496e74657276616c2c0000000060428201527f75696e74323420746f74616c496e74657276616c732c00000000000000000000605e8201527f75696e74333220696e74657276616c4475726174696f6e2c000000000000000060748201527f5472616e7366657244617461207265717565737465644f75747075742c000000608c8201527f5472616e73666572446174615b5d2065787472615472616e73666572732c000060a98201527f627974657320656e636f64656445787465726e616c43616c6c446174612c000060c78201527f75696e74333220646561646c696e652c0000000000000000000000000000000060e5820152600060f582016123ae817f75696e74323536206e6f6e6365290000000000000000000000000000000000008152600e0190565b60008351613625818460208801612e82565b835190830190613639818360208801612e82565b01949350505050565b8151600090829060208501835b8281101561366d57815184526020938401939091019060010161364f565b509195945050505050565b6000610180820190508d825273ffffffffffffffffffffffffffffffffffffffff8d16602083015273ffffffffffffffffffffffffffffffffffffffff8c16604083015263ffffffff8b16606083015289608083015262ffffff891660a083015263ffffffff881660c08301528660e0830152856101008301528461012083015261370c61014083018563ffffffff169052565b826101608301529d9c50505050505050505050505050565b80820180821115611d4957611d49613027565b60008261376d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f53696e676c65436861696e4463614f72646572207769746e65737329000000008152600084516137d981601c850160208901612e82565b8451908301906137f081601c840160208901612e82565b84519101601c0190613806818360208801612e82565b0195945050505050565b61383b818951805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602088015160408201526040880151606082015261387c6080820188805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff861660c08201528460e082015261014061010082015260006138b7610140830186612ea6565b8281036101208401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011682010191505098975050505050505050565b60006060828403121561391f57600080fd5b6123ae8383613111565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261395e57600080fd5b83018035915067ffffffffffffffff82111561397957600080fd5b6020019150606081023603821315612d6257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126139c557600080fd5b83018035915067ffffffffffffffff8211156139e057600080fd5b602001915036819003821315612d6257600080fd5b60008251613a07818460208701612e82565b9190910192915050565b7f53696e676c65436861696e446361536f6c7665725065726d697373696f6e280081527f6164647265737320736f6c7665722c0000000000000000000000000000000000601f8201527f62797465733332206f72646572486173682c0000000000000000000000000000602e8201527f75696e74323420696e74657276616c4e756d626572546f457865637574652c0060408201527f75696e7432353620616d6f756e744f75744d696e2c0000000000000000000000605f8201527f5472616e73666572446174612070726f746f636f6c4665655472616e7366657260748201527f2c0000000000000000000000000000000000000000000000000000000000000060948201527f75696e743332207065726d697373696f6e446561646c696e6529000000000000609582015260008251613b538160af850160208701612e82565b9190910160af0192915050565b60006080820173ffffffffffffffffffffffffffffffffffffffff871683528560208401526080604084015280855180835260a08501915060208701925060005b81811015613c0757835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff60208201511660208501526040810151604085015250606083019250602084019350600181019050613ba1565b50508381036060850152611b1f8186612ea6565b600181811c90821680613c2f57607f821691505b602082108103612ce5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b805160028110612cb057600080fd5b60008060008060808587031215613c8d57600080fd5b8451613c9881612c83565b6020860151909450613ca981612c83565b604086015190935067ffffffffffffffff811115613cc657600080fd5b8501601f81018713613cd757600080fd5b8051613ce561326f8261320a565b818152886020838501011115613cfa57600080fd5b613d0b826020830160208601612e82565b9350613d1c91505060608601613c68565b905092959194509250565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015273ffffffffffffffffffffffffffffffffffffffff8516604082015273ffffffffffffffffffffffffffffffffffffffff8416606082015260c060808201526000613daa60c0830185612ea6565b905060028310613de3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8260a083015297965050505050505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74295472616e7366657244617461286164647265737320746f6b656e2c616464726573732072656365697665722c75696e7432353620616d6f756e7429a26469706673582212205f7b143cd52c49bea7401759fec624b2379be3d64dd33d4374d77f4c1eb4bc9564736f6c634300081c0033000000000000000000000000d8655d1154a74748ac48f673264efba5c369f4bd0000000000000000000000007a66eb9f5b2808a3039442ab3155734b78ff4b91000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000878ca4122e961fc7c1098456aabf0bcf7138d2de