3 txs
7 calls
constructor
constructor(address _weth, address _titanX, address _bnb, (address v3Router, address v3Factory, address positionManager, address owner) _state, uint24 _stakingCooldown, uint256 _firstStakeMin)
functions
lastActiveInstance
viewfunction lastActiveInstance() view returns (address)
lastId
viewfunction lastId() view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
changeBuyActionState
nonpayablefunction changeBuyActionState(address _instance, address _token, tuple _state)
changeIncentive
nonpayablefunction changeIncentive(address _instance, uint64 _incentive)
changeMaxStakeAmount
nonpayablefunction changeMaxStakeAmount(address _instance, uint88 _newMaxStakeAmount)
changeMinStakeAmount
nonpayablefunction changeMinStakeAmount(address _instance, uint88 _minStakeAmount)
changeSlippageConfig
nonpayablefunction changeSlippageConfig(address _instance, address _pool, uint224 _newSlippage, uint32 _newLookback)
changeStakingCooldown
nonpayablefunction changeStakingCooldown(address _instance, uint24 _newCooldown)
deployInstance
nonpayablefunction deployInstance()
renounceOwnership
nonpayablefunction renounceOwnership()
stake
nonpayablefunction stake() returns (uint96 id)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
errors
Address0
error Address0()
Amount0
error Amount0()
Expired
error Expired()
GreaterThan
error GreaterThan(uint256 a, uint256 b)
MaxStakeNotYetReached
error MaxStakeNotYetReached()
MaxStakePositionsReached
error MaxStakePositionsReached()
OnlyEOA
error OnlyEOA()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60e060405234801561000f575f5ffd5b506040516175eb3803806175eb83398101604081905261002e916102a3565b60608301516001600160a01b03811661006057604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100698161010c565b506001600160a01b0386811660805285811660a05284811660c05230606085018190528451600380546001600160a01b0319908116928516929092179055602086015160048054831691851691909117905560408601516005805483169190941617909255600680549092161790556001805462ffffff60a01b1916600160a01b62ffffff8516021790556002819055610101610128565b5050505050506103b0565b600180546001600160a01b03191690556101258161021a565b50565b5f60075f81546101379061038c565b91905081905590505f60805160a05160c0516003600160149054906101000a900462ffffff1660025460405161016c90610269565b6001600160a01b039687168152948616602086015292851660408501528154851660608501526001820154851660808501526002820154851660a085015260039091015490931660c083015262ffffff90921660e082015261010081019190915261012001604051809103905ff0801580156101ea573d5f5f3e3d5ffd5b505f9283526008602052604090922080546001600160a01b0319166001600160a01b039093169290921790915550565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6132948061435783390190565b80516001600160a01b038116811461028c575f5ffd5b919050565b805162ffffff8116811461028c575f5ffd5b5f5f5f5f5f5f8688036101208112156102ba575f5ffd5b6102c388610276565b96506102d160208901610276565b95506102df60408901610276565b94506080605f19820112156102f2575f5ffd5b50604051608081016001600160401b038111828210171561032157634e487b7160e01b5f52604160045260245ffd5b60405261033060608901610276565b815261033e60808901610276565b602082015261034f60a08901610276565b604082015261036060c08901610276565b6060820152925061037360e08801610291565b91505f6101008801519050809150509295509295509295565b5f600182016103a957634e487b7160e01b5f52601160045260245ffd5b5060010190565b60805160a05160c051613f766103e15f395f61080b01525f81816102ea01526107ea01525f6107c90152613f765ff3fe608060405234801561000f575f5ffd5b50600436106100f0575f3560e01c8063a1cfd66d11610093578063dcb71dd311610063578063dcb71dd3146101e9578063e30c3978146101fc578063e51eaf2c1461020d578063f2fde38b14610215575f5ffd5b8063a1cfd66d14610199578063c1292cc3146101ac578063d6559dbb146101c3578063d6def7b1146101d6575f5ffd5b8063715018a6116100ce578063715018a61461016657806379ba50971461016e5780638da5cb5b1461017657806392b3862714610186575f5ffd5b80633a4b66f1146100f45780634f3a8aaa1461011e5780635908baf114610151575b5f5ffd5b6100fc610228565b6040516bffffffffffffffffffffffff90911681526020015b60405180910390f35b6007545f908152600860205260409020546001600160a01b03165b6040516001600160a01b039091168152602001610115565b61016461015f366004610982565b610444565b005b6101646104aa565b6101646104bd565b5f546001600160a01b0316610139565b6101646101943660046109b7565b610506565b6101646101a73660046109b7565b610547565b6101b560075481565b604051908152602001610115565b6101646101d1366004610a0c565b610588565b6101646101e4366004610a83565b610607565b6101646101f7366004610aca565b610645565b6001546001600160a01b0316610139565b6101646106ea565b610164610223366004610b88565b6106fa565b6007545f9081526008602052604081205481906001600160a01b031690505f816001600160a01b031663c19d93fb6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610283573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a79190610bc8565b50505050925050506103e88161ffff16106102d5576040516331ec7c0f60e11b815260040160405180910390fd5b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb90849083906370a0823190602401602060405180830381865afa158015610341573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103659190610c3f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156103ad573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d19190610c56565b50604051630991d88160e21b81523360048201526001600160a01b038316906326476204906024016020604051808303815f875af1158015610415573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104399190610c6f565b61ffff169250505090565b61044c61076a565b60405163046e7f3360e41b815262ffffff821660048201526001600160a01b038316906346e7f330906024015b5f604051808303815f87803b158015610490575f5ffd5b505af11580156104a2573d5f5f3e3d5ffd5b505050505050565b6104b261076a565b6104bb5f610796565b565b60015433906001600160a01b031681146104fa5760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b61050381610796565b50565b61050e61076a565b604051631910ba5160e01b81526affffffffffffffffffffff821660048201526001600160a01b03831690631910ba5190602401610479565b61054f61076a565b60405163dd924acd60e01b81526affffffffffffffffffffff821660048201526001600160a01b0383169063dd924acd90602401610479565b61059061076a565b6040516313e8fe0960e31b81526001600160a01b0384811660048301526001600160e01b038416602483015263ffffffff83166044830152851690639f47f048906064015f604051808303815f87803b1580156105eb575f5ffd5b505af11580156105fd573d5f5f3e3d5ffd5b5050505050505050565b61060f61076a565b60405163160c903360e11b815267ffffffffffffffff821660048201526001600160a01b03831690632c19206690602401610479565b61064d61076a565b60408051632f9b058560e21b81526001600160a01b038481166004830152835163ffffffff90811660248401526020850151166044830152918301516001600160801b03166064820152606083015167ffffffffffffffff1660848201529084169063be6c16149060a4015f604051808303815f87803b1580156106cf575f5ffd5b505af11580156106e1573d5f5f3e3d5ffd5b50505050505050565b6106f261076a565b6104bb6107af565b61070261076a565b600180546001600160a01b0383166001600160a01b031990911681179091556107325f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f546001600160a01b031633146104bb5760405163118cdaa760e01b81523360048201526024016104f1565b600180546001600160a01b0319169055610503816108fb565b5f60075f81546107be90610c88565b91905081905590505f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006003600160149054906101000a900462ffffff1660025460405161084d9061094a565b6001600160a01b039687168152948616602086015292851660408501528154851660608501526001820154851660808501526002820154851660a085015260039091015490931660c083015262ffffff90921660e082015261010081019190915261012001604051809103905ff0801580156108cb573d5f5f3e3d5ffd5b505f9283526008602052604090922080546001600160a01b0319166001600160a01b039093169290921790915550565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61329480610cad83390190565b80356001600160a01b038116811461096d575f5ffd5b919050565b62ffffff81168114610503575f5ffd5b5f5f60408385031215610993575f5ffd5b61099c83610957565b915060208301356109ac81610972565b809150509250929050565b5f5f604083850312156109c8575f5ffd5b6109d183610957565b915060208301356affffffffffffffffffffff811681146109ac575f5ffd5b63ffffffff81168114610503575f5ffd5b803561096d816109f0565b5f5f5f5f60808587031215610a1f575f5ffd5b610a2885610957565b9350610a3660208601610957565b925060408501356001600160e01b0381168114610a51575f5ffd5b91506060850135610a61816109f0565b939692955090935050565b803567ffffffffffffffff8116811461096d575f5ffd5b5f5f60408385031215610a94575f5ffd5b610a9d83610957565b9150610aab60208401610a6c565b90509250929050565b80356001600160801b038116811461096d575f5ffd5b5f5f5f83850360c0811215610add575f5ffd5b610ae685610957565b9350610af460208601610957565b92506080603f1982011215610b07575f5ffd5b506040516080810181811067ffffffffffffffff82111715610b3757634e487b7160e01b5f52604160045260245ffd5b8060405250610b4860408601610a01565b8152610b5660608601610a01565b6020820152610b6760808601610ab4565b6040820152610b7860a08601610a6c565b6060820152809150509250925092565b5f60208284031215610b98575f5ffd5b610ba182610957565b9392505050565b805161ffff8116811461096d575f5ffd5b8051801515811461096d575f5ffd5b5f5f5f5f5f5f5f60e0888a031215610bde575f5ffd5b8751610be981610972565b6020890151909750610bfa816109f0565b9550610c0860408901610ba8565b606089015160808a015191965094509250610c2560a08901610bb9565b91505f60c089015190508091505092959891949750929550565b5f60208284031215610c4f575f5ffd5b5051919050565b5f60208284031215610c66575f5ffd5b610ba182610bb9565b5f60208284031215610c7f575f5ffd5b610ba182610ba8565b5f60018201610ca557634e487b7160e01b5f52601160045260245ffd5b506001019056fe610140604052348015610010575f5ffd5b5060405161329438038061329483398101604081905261002f91610292565b8282828280606001515f6001600160a01b0316816001600160a01b03160361007057604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610079816101ec565b5080516100858161023b565b60208201516100938161023b565b50506040808201516001600160a01b0390811660a052825181166080908152602080850151831660c052606094850151600180549185166001600160a01b03199092169190911790556003805462ffffff90981662ffffff1990981697909717909655600494909455998a1660e0529989166101209081529789166101005289519182018a525f808352610258838501908152662386f26fc100009284019283526c01431e0fae6d7217caa000000060055566038d7ea4c680006007556703782dace9d90000848d019081529951909a168152600890935298909120905181549751965198516001600160401b03908116600160c01b026001600160c01b036001600160801b039b909b1668010000000000000000029a909a1663ffffffff988916640100000000026001600160401b0319909a1692909816919091179790971790961694909417959095179093555061037b92505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116610262576040516359c662df60e11b815260040160405180910390fd5b50565b80516001600160a01b038116811461027b575f5ffd5b919050565b805162ffffff8116811461027b575f5ffd5b5f5f5f5f5f5f8688036101208112156102a9575f5ffd5b6102b288610265565b96506102c060208901610265565b95506102ce60408901610265565b94506080605f19820112156102e1575f5ffd5b50604051608081016001600160401b038111828210171561031057634e487b7160e01b5f52604160045260245ffd5b60405261031f60608901610265565b815261032d60808901610265565b602082015261033e60a08901610265565b604082015261034f60c08901610265565b6060820152925061036260e08801610280565b91505f6101008801519050809150509295509295509295565b60805160a05160c05160e0516101005161012051612e4661044e5f395f818161015101528181610ace01528181610b010152610f4d01525f610b7a01525f818161063e015281816106860152818161079b015281816109000152818161098301528181610b2201528181610b4b01528181610c1a01528181610cdd01528181610d3001528181610e2e01528181610edf01528181611097015281816110df015261181701525f8181610387015261139501525f61035401525f81816101d10152818161229301526123b80152612e465ff3fe60806040526004361061014a575f3560e01c80637c887c59116100b3578063c19d93fb1161006d578063c19d93fb14610453578063c86a41f7146104e8578063dd924acd14610588578063e121ce41146105a7578063f2fde38b1461060e578063f9119bbd1461062d575f5ffd5b80637c887c59146103765780638da5cb5b146103a957806392486ba9146103c55780639f47f048146103d9578063be6c1614146103f8578063beb1e79d14610417575f5ffd5b80633a237aa0116101045780633a237aa0146102b3578063453e944f146102d2578063457c7afa146102f157806346e7f33014610310578063715018a61461032f578063791b98bc14610343575f5ffd5b80630dc91306146101c05780631910ba5114610210578063264762041461022f5780632c1920661461026157806330c93cef14610280578063372500ab1461029f575f5ffd5b366101bc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b1580156101a8575f5ffd5b505af11580156101ba573d5f5f3e3d5ffd5b005b5f5ffd5b3480156101cb575f5ffd5b506101f37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021b575f5ffd5b506101ba61022a366004612500565b610660565b34801561023a575f5ffd5b5061024e61024936600461252b565b610678565b60405161ffff9091168152602001610207565b34801561026c575f5ffd5b506101ba61027b366004612561565b610a8c565b34801561028b575f5ffd5b506101ba61029a36600461258b565b610ac1565b3480156102aa575f5ffd5b506101ba610e13565b3480156102be575f5ffd5b506001546101f3906001600160a01b031681565b3480156102dd575f5ffd5b506101ba6102ec3660046125b3565b610ffa565b3480156102fc575f5ffd5b506101ba61030b36600461252b565b611015565b34801561031b575f5ffd5b506101ba61032a3660046125ce565b61104a565b34801561033a575f5ffd5b506101ba61106c565b34801561034e575f5ffd5b506101f37f000000000000000000000000000000000000000000000000000000000000000081565b348015610381575f5ffd5b506101f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b4575f5ffd5b505f546001600160a01b03166101f3565b3480156103d0575f5ffd5b506101ba61107f565b3480156103e4575f5ffd5b506101ba6103f33660046125f0565b6111da565b348015610403575f5ffd5b506101ba6104123660046126af565b611277565b348015610422575f5ffd5b50610436610431366004612745565b61138d565b604080519283526001600160e01b03909116602083015201610207565b34801561045e575f5ffd5b5060035460045460055460065460075461049f9462ffffff8116946301000000820463ffffffff1694600160381b90920461ffff1693909260ff9091169087565b6040805162ffffff909816885263ffffffff909616602088015261ffff909416948601949094526060850191909152608084015290151560a083015260c082015260e001610207565b3480156104f3575f5ffd5b5061054961050236600461252b565b60086020525f908152604090205463ffffffff80821691640100000000810490911690600160401b81046001600160801b031690600160c01b90046001600160401b031684565b6040805163ffffffff95861681529490931660208501526001600160801b03909116918301919091526001600160401b03166060820152608001610207565b348015610593575f5ffd5b506101ba6105a2366004612500565b6114eb565b3480156105b2575f5ffd5b506105ea6105c136600461252b565b60026020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b604080516001600160e01b03909316835263ffffffff909116602083015201610207565b348015610619575f5ffd5b506101ba61062836600461252b565b611503565b348015610638575f5ffd5b506101f37f000000000000000000000000000000000000000000000000000000000000000081565b610668611542565b806106728161156e565b50600555565b5f610681611542565b60035f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156106f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071a9190612783565b90505f61072c8260036004015461158e565b90506107408360020154846004015461158e565b836002015461074f91906127ae565b82111561084a576107688360020154846004015461158e565b90505f81846002015461077b91906127ae565b61078590846127c1565b905081846002015461079791906127ae565b92507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6107d95f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610823573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084791906127d4565b50505b61085481836127c1565b83549092506301000000900463ffffffff16151580610877575082600101548210155b61089457604051632792526560e21b815260040160405180910390fd5b825462ffffff8116906108b4906301000000900463ffffffff16426127c1565b1015806108c5575082600101548210155b6108e257604051632792526560e21b815260040160405180910390fd5b604051630945fe5760e11b815260048101839052610dac60248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063128bfcae906044015f604051808303815f87803b158015610949575f5ffd5b505af115801561095b573d5f5f3e3d5ffd5b505060405163a9059cbb60e01b81526001600160a01b038881166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb91506044016020604051808303815f875af11580156109cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ef91906127d4565b50825466ffffffff000000191663010000004263ffffffff1602178084558390600790610a2690600160381b900461ffff166127ef565b91906101000a81548161ffff021916908361ffff1602179055935081835f0160079054906101000a900461ffff1661ffff167feafbca5d1297b7d933756ac62fa891874ff03e66cc07967b3740b3ebe2ac338260405160405180910390a3505050919050565b610a94611542565b6001600160401b038116670de0b6b3a7640000610ab182826115b9565b50506001600160401b0316600755565b610ac96115e5565b610af27f0000000000000000000000000000000000000000000000000000000000000000611610565b610afb8161156e565b5f610b477f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008561167e565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb7f0000000000000000000000000000000000000000000000000000000000000000610bab8467063eb89da4ed000061158e565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610bf3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1791906127d4565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb7324bf5ce05f732381cbcb79966607977fc21b4a18610c6e846706f05b59d3b2000061158e565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610cb6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cda91906127d4565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb610d1b5f546001600160a01b031690565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da19190612783565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610de9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0d91906127d4565b50505050565b610e1b6115e5565b610e23611815565b5f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e33a3c94306040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303815f875af1158015610e97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebb9190612783565b9050805f03610edd576040516312d37ee560e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633dda78816040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610f35575f5ffd5b505af1158015610f47573d5f5f3e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb33610f8a8460036004015461158e565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610fd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff691906127d4565b5050565b611002611542565b6006805460ff1916911515919091179055565b8061101f8161187f565b611027611542565b50600180546001600160a01b0319166001600160a01b0392909216919091179055565b611052611542565b6003805462ffffff191662ffffff92909216919091179055565b611074611542565b61107d5f6118a6565b565b600354600160381b900461ffff166103e80361107d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6110d55f546001600160a01b031690565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166370a08231306040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611147573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116b9190612783565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156111b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d791906127d4565b50565b8063ffffffff166111ea8161156e565b6111f26118f5565b670de0b6b3a76400006001600160e01b0384161115611224576040516338fd8f3960e21b815260040160405180910390fd5b506040805180820182526001600160e01b03938416815263ffffffff92831660208083019182526001600160a01b039096165f90815260029096529190942093519051909116600160e01b029116179055565b60608101516001600160401b0316670de0b6b3a764000061129882826115b9565b826020015163ffffffff166112ac8161156e565b83604001516001600160801b03166112c38161156e565b6112cb611542565b6001600160a01b0386165f90815260086020526040902054855163ffffffff9081169116146112f8575f5ffd5b5050506001600160a01b039092165f908152600860209081526040918290208351815492850151938501516060909501516001600160401b03908116600160c01b026001600160c01b036001600160801b03909716600160401b029690961663ffffffff9586166401000000000267ffffffffffffffff19909516959092169490941792909217929092161791909117905550565b5f5f5f6113c67f00000000000000000000000000000000000000000000000000000000000000006113c18888612710611934565b6119aa565b6001600160a01b0381165f908152600260209081526040918290208251808401909352546001600160e01b0381168352600160e01b900463ffffffff1690820181905291925090158015611422575080516001600160e01b0316155b156114645760405180604001604052806702c68af0bb140000670de0b6b3a764000061144e919061280f565b6001600160401b03168152600f60209091015290505b5f8160200151603c611476919061282e565b90505f61148284611a90565b90508163ffffffff168163ffffffff1610156114b15760405163c15607ef60e01b815260040160405180910390fd5b5f6114bc8584611c48565b5090505f6114c982611e7d565b8551975090506114db818a8d8d612198565b9750505050505050935093915050565b6114f3611542565b806114fd8161156e565b50600455565b61150b611542565b6001600160a01b03811661153957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111d7816118a6565b5f546001600160a01b0316331461107d5760405163118cdaa760e01b8152336004820152602401611530565b805f036111d757604051635a53a6e960e01b815260040160405180910390fd5b5f815f190483118202156115a95763c4c5d7f55f526004601cfd5b50670de0b6b3a764000091020490565b818181811015610e0d5760405163f5c38b6160e01b815260048101929092526024820152604401611530565b333b1580156115f357503233145b61107d57604051639f8129d160e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611654573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116789190612783565b92915050565b6001600160a01b0383165f908152600860205260408120805463ffffffff808216916116b49164010000000090910416426127c1565b10156116d357604051637b22948960e01b815260040160405180910390fd5b5f6116dd86611610565b8254909150600160401b90046001600160801b031681111561170d57508054600160401b90046001600160801b03165b81545f9061172c908390600160c01b90046001600160401b031661158e565b905061173881836127c1565b91506117468787848861226e565b60405163a9059cbb60e01b8152336004820152602481018390529094506001600160a01b0388169063a9059cbb906044016020604051808303815f875af1158015611793573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b791906127d4565b5083866001600160a01b0316886001600160a01b03167f089c02e97a69a4f00ded600e029a273a5729f89d2373fee461bd4c6021d96fb060405160405180910390a45050805463ffffffff19164263ffffffff161790559392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632277d1bd6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561186d575f5ffd5b505af1158015610e0d573d5f5f3e3d5ffd5b6001600160a01b0381166111d7576040516359c662df60e11b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001546001600160a01b031633148061191757505f546001600160a01b031633145b61107d576040516322a6b32160e21b815260040160405180910390fd5b604080516060810182525f8082526020820181905291810191909152826001600160a01b0316846001600160a01b0316111561196e579192915b6040518060600160405280856001600160a01b03168152602001846001600160a01b031681526020018362ffffff1681525090505b9392505050565b5f81602001516001600160a01b0316825f01516001600160a01b0316106119cf575f5ffd5b815160208084015160408086015181516001600160a01b0395861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201206001600160f81b031960a08401529085901b6bffffffffffffffffffffffff191660a183015260b58201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d582015260f50160408051601f1981840301815291905280516020909101209392505050565b5f5f5f836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611acf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611af39190612865565b5050509350935050505f8161ffff1611611b345760405162461bcd60e51b81526020600482015260026024820152614e4960f01b6044820152606401611530565b5f806001600160a01b03861663252c09d784611b518760016128fd565b611b5b919061292b565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401608060405180830381865afa158015611b98573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bbc919061295f565b93505050915080611c345760405163252c09d760e01b81525f60048201526001600160a01b0387169063252c09d790602401608060405180830381865afa158015611c09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c2d919061295f565b5091935050505b611c3e82426129b7565b9695505050505050565b5f5f8263ffffffff165f03611c845760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401611530565b6040805160028082526060820183525f9260208301908036833701905050905083815f81518110611cb757611cb76129d3565b602002602001019063ffffffff16908163ffffffff16815250505f81600181518110611ce557611ce56129d3565b602002602001019063ffffffff16908163ffffffff16815250505f5f866001600160a01b031663883bdbfd846040518263ffffffff1660e01b8152600401611d2d91906129e7565b5f60405180830381865afa158015611d47573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d6e9190810190612ac4565b915091505f825f81518110611d8557611d856129d3565b602002602001015183600181518110611da057611da06129d3565b6020026020010151611db29190612b87565b90505f825f81518110611dc757611dc76129d3565b602002602001015183600181518110611de257611de26129d3565b6020026020010151611df49190612bb4565b905063ffffffff8816611e078184612bd3565b97505f8360060b128015611e265750611e208184612c0f565b60060b15155b15611e395787611e3581612c30565b9850505b63ffffffff8916640100000000600160c01b03602084901b16611e636001600160a01b0383612c51565b611e6d9190612c82565b9750505050505050509250929050565b5f5f5f8360020b12611e92578260020b611e99565b8260020b5f035b9050620d89e8811115611ebf576040516315e4079d60e11b815260040160405180910390fd5b5f816001165f03611ed457600160801b611ee6565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611f1a576ffff97272373d413259a46990580e213a0260801c5b6004821615611f39576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611f58576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611f77576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611f96576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611fb5576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611fd4576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611ff4576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612014576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612034576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612054576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612074576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612094576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156120b4576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156120d4576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156120f5576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612115576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612134576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612151576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561217057805f198161216c5761216c612917565b0490505b640100000000810615612184576001612186565b5f5b60ff16602082901c0192505050919050565b5f6001600160801b036001600160a01b0386161161220b575f6121c560026001600160a01b038816612d93565b9050826001600160a01b0316846001600160a01b0316106121f4576121ef600160c01b8683612439565b612203565b6122038186600160c01b612439565b915050612266565b5f6122246001600160a01b03871680600160401b612439565b9050826001600160a01b0316846001600160a01b0316106122535761224e600160801b8683612439565b612262565b6122628186600160801b612439565b9150505b949350505050565b5f5f5f61227c87878761138d565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018990529294509092509088169063095ea7b3906044016020604051808303815f875af11580156122ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231391906127d4565b506040805160a081019091526bffffffffffffffffffffffff19606089811b821660c084015261027160ec1b60d484015288901b1660d78201525f908060eb81016040516020818303038152906040528152602001306001600160a01b031681526020018663ffffffff16815260200187815260200161239c85856001600160e01b031661158e565b905260405163c04b8d5960e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c04b8d59906123ed908490600401612da1565b6020604051808303815f875af1158015612409573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242d9190612783565b98975050505050505050565b5f838302815f1985870982811083820303915050805f0361246d5783828161246357612463612917565b04925050506119a3565b8084116124845761248460038515026011186124ef565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b634e487b715f52806020526024601cfd5b5f60208284031215612510575f5ffd5b5035919050565b6001600160a01b03811681146111d7575f5ffd5b5f6020828403121561253b575f5ffd5b81356119a381612517565b80356001600160401b038116811461255c575f5ffd5b919050565b5f60208284031215612571575f5ffd5b6119a382612546565b63ffffffff811681146111d7575f5ffd5b5f6020828403121561259b575f5ffd5b81356119a38161257a565b80151581146111d7575f5ffd5b5f602082840312156125c3575f5ffd5b81356119a3816125a6565b5f602082840312156125de575f5ffd5b813562ffffff811681146119a3575f5ffd5b5f5f5f60608486031215612602575f5ffd5b833561260d81612517565b925060208401356001600160e01b0381168114612628575f5ffd5b915060408401356126388161257a565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561267957612679612643565b60405290565b604051601f8201601f191681016001600160401b03811182821017156126a7576126a7612643565b604052919050565b5f5f82840360a08112156126c1575f5ffd5b83356126cc81612517565b92506080601f19820112156126df575f5ffd5b506126e8612657565b60208401356126f68161257a565b815260408401356127068161257a565b602082015260608401356001600160801b0381168114612724575f5ffd5b604082015261273560808501612546565b6060820152809150509250929050565b5f5f5f60608486031215612757575f5ffd5b833561276281612517565b9250602084013561277281612517565b929592945050506040919091013590565b5f60208284031215612793575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116785761167861279a565b818103818111156116785761167861279a565b5f602082840312156127e4575f5ffd5b81516119a3816125a6565b5f61ffff821661ffff81036128065761280661279a565b60010192915050565b6001600160401b0382811682821603908111156116785761167861279a565b63ffffffff818116838216029081169081811461284d5761284d61279a565b5092915050565b805161ffff8116811461255c575f5ffd5b5f5f5f5f5f5f5f60e0888a03121561287b575f5ffd5b875161288681612517565b8097505060208801518060020b811461289d575f5ffd5b95506128ab60408901612854565b94506128b960608901612854565b93506128c760808901612854565b925060a088015160ff811681146128dc575f5ffd5b60c08901519092506128ed816125a6565b8091505092959891949750929550565b61ffff81811683821601908111156116785761167861279a565b634e487b7160e01b5f52601260045260245ffd5b5f61ffff83168061293e5761293e612917565b8061ffff84160691505092915050565b8051600681900b811461255c575f5ffd5b5f5f5f5f60808587031215612972575f5ffd5b845161297d8161257a565b935061298b6020860161294e565b9250604085015161299b81612517565b60608601519092506129ac816125a6565b939692955090935050565b63ffffffff82811682821603908111156116785761167861279a565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b81811015612a2457835163ffffffff16835260209384019390920191600101612a00565b509095945050505050565b5f6001600160401b03821115612a4757612a47612643565b5060051b60200190565b5f82601f830112612a60575f5ffd5b8151612a73612a6e82612a2f565b61267f565b8082825260208201915060208360051b860101925085831115612a94575f5ffd5b602085015b83811015612aba578051612aac81612517565b835260209283019201612a99565b5095945050505050565b5f5f60408385031215612ad5575f5ffd5b82516001600160401b03811115612aea575f5ffd5b8301601f81018513612afa575f5ffd5b8051612b08612a6e82612a2f565b8082825260208201915060208360051b850101925087831115612b29575f5ffd5b6020840193505b82841015612b5257612b418461294e565b825260209384019390910190612b30565b8095505050505060208301516001600160401b03811115612b71575f5ffd5b612b7d85828601612a51565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff821317156116785761167861279a565b6001600160a01b0382811682821603908111156116785761167861279a565b5f8160060b8360060b80612be957612be9612917565b667fffffffffffff1982145f1982141615612c0657612c0661279a565b90059392505050565b5f8260060b80612c2157612c21612917565b808360060b0791505092915050565b5f8160020b627fffff198103612c4857612c4861279a565b5f190192915050565b6001600160c01b03818116838216818102909216918183048114821517612c7a57612c7a61279a565b505092915050565b5f6001600160c01b03831680612c9a57612c9a612917565b6001600160c01b03929092169190910492915050565b6001815b6001841115612ceb57808504811115612ccf57612ccf61279a565b6001841615612cdd57908102905b60019390931c928002612cb4565b935093915050565b5f82612d0157506001611678565b81612d0d57505f611678565b8160018114612d235760028114612d2d57612d49565b6001915050611678565b60ff841115612d3e57612d3e61279a565b50506001821b611678565b5060208310610133831016604e8410600b8410161715612d6c575081810a611678565b612d785f198484612cb0565b805f1904821115612d8b57612d8b61279a565b029392505050565b5f6119a360ff841683612cf3565b602081525f825160a0602084015280518060c0850152806020830160e086015e5f60e0828601015260018060a01b0360208601511660408501526040850151606085015260608501516080850152608085015160a085015260e0601f19601f830116850101925050509291505056fea26469706673582212201c1137d489440c204b4266d41e9631fa691ecec8c35afe2f867e233c503c5f5e64736f6c634300081b0033a26469706673582212209135afb63d41275e0148cdfcae65d4f9934932d01d9d78f89da9961a23b097a264736f6c634300081b0033610140604052348015610010575f5ffd5b5060405161329438038061329483398101604081905261002f91610292565b8282828280606001515f6001600160a01b0316816001600160a01b03160361007057604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b610079816101ec565b5080516100858161023b565b60208201516100938161023b565b50506040808201516001600160a01b0390811660a052825181166080908152602080850151831660c052606094850151600180549185166001600160a01b03199092169190911790556003805462ffffff90981662ffffff1990981697909717909655600494909455998a1660e0529989166101209081529789166101005289519182018a525f808352610258838501908152662386f26fc100009284019283526c01431e0fae6d7217caa000000060055566038d7ea4c680006007556703782dace9d90000848d019081529951909a168152600890935298909120905181549751965198516001600160401b03908116600160c01b026001600160c01b036001600160801b039b909b1668010000000000000000029a909a1663ffffffff988916640100000000026001600160401b0319909a1692909816919091179790971790961694909417959095179093555061037b92505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116610262576040516359c662df60e11b815260040160405180910390fd5b50565b80516001600160a01b038116811461027b575f5ffd5b919050565b805162ffffff8116811461027b575f5ffd5b5f5f5f5f5f5f8688036101208112156102a9575f5ffd5b6102b288610265565b96506102c060208901610265565b95506102ce60408901610265565b94506080605f19820112156102e1575f5ffd5b50604051608081016001600160401b038111828210171561031057634e487b7160e01b5f52604160045260245ffd5b60405261031f60608901610265565b815261032d60808901610265565b602082015261033e60a08901610265565b604082015261034f60c08901610265565b6060820152925061036260e08801610280565b91505f6101008801519050809150509295509295509295565b60805160a05160c05160e0516101005161012051612e4661044e5f395f818161015101528181610ace01528181610b010152610f4d01525f610b7a01525f818161063e015281816106860152818161079b015281816109000152818161098301528181610b2201528181610b4b01528181610c1a01528181610cdd01528181610d3001528181610e2e01528181610edf01528181611097015281816110df015261181701525f8181610387015261139501525f61035401525f81816101d10152818161229301526123b80152612e465ff3fe60806040526004361061014a575f3560e01c80637c887c59116100b3578063c19d93fb1161006d578063c19d93fb14610453578063c86a41f7146104e8578063dd924acd14610588578063e121ce41146105a7578063f2fde38b1461060e578063f9119bbd1461062d575f5ffd5b80637c887c59146103765780638da5cb5b146103a957806392486ba9146103c55780639f47f048146103d9578063be6c1614146103f8578063beb1e79d14610417575f5ffd5b80633a237aa0116101045780633a237aa0146102b3578063453e944f146102d2578063457c7afa146102f157806346e7f33014610310578063715018a61461032f578063791b98bc14610343575f5ffd5b80630dc91306146101c05780631910ba5114610210578063264762041461022f5780632c1920661461026157806330c93cef14610280578063372500ab1461029f575f5ffd5b366101bc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b1580156101a8575f5ffd5b505af11580156101ba573d5f5f3e3d5ffd5b005b5f5ffd5b3480156101cb575f5ffd5b506101f37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021b575f5ffd5b506101ba61022a366004612500565b610660565b34801561023a575f5ffd5b5061024e61024936600461252b565b610678565b60405161ffff9091168152602001610207565b34801561026c575f5ffd5b506101ba61027b366004612561565b610a8c565b34801561028b575f5ffd5b506101ba61029a36600461258b565b610ac1565b3480156102aa575f5ffd5b506101ba610e13565b3480156102be575f5ffd5b506001546101f3906001600160a01b031681565b3480156102dd575f5ffd5b506101ba6102ec3660046125b3565b610ffa565b3480156102fc575f5ffd5b506101ba61030b36600461252b565b611015565b34801561031b575f5ffd5b506101ba61032a3660046125ce565b61104a565b34801561033a575f5ffd5b506101ba61106c565b34801561034e575f5ffd5b506101f37f000000000000000000000000000000000000000000000000000000000000000081565b348015610381575f5ffd5b506101f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b4575f5ffd5b505f546001600160a01b03166101f3565b3480156103d0575f5ffd5b506101ba61107f565b3480156103e4575f5ffd5b506101ba6103f33660046125f0565b6111da565b348015610403575f5ffd5b506101ba6104123660046126af565b611277565b348015610422575f5ffd5b50610436610431366004612745565b61138d565b604080519283526001600160e01b03909116602083015201610207565b34801561045e575f5ffd5b5060035460045460055460065460075461049f9462ffffff8116946301000000820463ffffffff1694600160381b90920461ffff1693909260ff9091169087565b6040805162ffffff909816885263ffffffff909616602088015261ffff909416948601949094526060850191909152608084015290151560a083015260c082015260e001610207565b3480156104f3575f5ffd5b5061054961050236600461252b565b60086020525f908152604090205463ffffffff80821691640100000000810490911690600160401b81046001600160801b031690600160c01b90046001600160401b031684565b6040805163ffffffff95861681529490931660208501526001600160801b03909116918301919091526001600160401b03166060820152608001610207565b348015610593575f5ffd5b506101ba6105a2366004612500565b6114eb565b3480156105b2575f5ffd5b506105ea6105c136600461252b565b60026020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b604080516001600160e01b03909316835263ffffffff909116602083015201610207565b348015610619575f5ffd5b506101ba61062836600461252b565b611503565b348015610638575f5ffd5b506101f37f000000000000000000000000000000000000000000000000000000000000000081565b610668611542565b806106728161156e565b50600555565b5f610681611542565b60035f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156106f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071a9190612783565b90505f61072c8260036004015461158e565b90506107408360020154846004015461158e565b836002015461074f91906127ae565b82111561084a576107688360020154846004015461158e565b90505f81846002015461077b91906127ae565b61078590846127c1565b905081846002015461079791906127ae565b92507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6107d95f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610823573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084791906127d4565b50505b61085481836127c1565b83549092506301000000900463ffffffff16151580610877575082600101548210155b61089457604051632792526560e21b815260040160405180910390fd5b825462ffffff8116906108b4906301000000900463ffffffff16426127c1565b1015806108c5575082600101548210155b6108e257604051632792526560e21b815260040160405180910390fd5b604051630945fe5760e11b815260048101839052610dac60248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063128bfcae906044015f604051808303815f87803b158015610949575f5ffd5b505af115801561095b573d5f5f3e3d5ffd5b505060405163a9059cbb60e01b81526001600160a01b038881166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb91506044016020604051808303815f875af11580156109cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ef91906127d4565b50825466ffffffff000000191663010000004263ffffffff1602178084558390600790610a2690600160381b900461ffff166127ef565b91906101000a81548161ffff021916908361ffff1602179055935081835f0160079054906101000a900461ffff1661ffff167feafbca5d1297b7d933756ac62fa891874ff03e66cc07967b3740b3ebe2ac338260405160405180910390a3505050919050565b610a94611542565b6001600160401b038116670de0b6b3a7640000610ab182826115b9565b50506001600160401b0316600755565b610ac96115e5565b610af27f0000000000000000000000000000000000000000000000000000000000000000611610565b610afb8161156e565b5f610b477f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008561167e565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb7f0000000000000000000000000000000000000000000000000000000000000000610bab8467063eb89da4ed000061158e565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610bf3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1791906127d4565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb7324bf5ce05f732381cbcb79966607977fc21b4a18610c6e846706f05b59d3b2000061158e565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610cb6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cda91906127d4565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb610d1b5f546001600160a01b031690565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da19190612783565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610de9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0d91906127d4565b50505050565b610e1b6115e5565b610e23611815565b5f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e33a3c94306040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303815f875af1158015610e97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ebb9190612783565b9050805f03610edd576040516312d37ee560e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633dda78816040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610f35575f5ffd5b505af1158015610f47573d5f5f3e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb33610f8a8460036004015461158e565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610fd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff691906127d4565b5050565b611002611542565b6006805460ff1916911515919091179055565b8061101f8161187f565b611027611542565b50600180546001600160a01b0319166001600160a01b0392909216919091179055565b611052611542565b6003805462ffffff191662ffffff92909216919091179055565b611074611542565b61107d5f6118a6565b565b600354600160381b900461ffff166103e80361107d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6110d55f546001600160a01b031690565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166370a08231306040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611147573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116b9190612783565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156111b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d791906127d4565b50565b8063ffffffff166111ea8161156e565b6111f26118f5565b670de0b6b3a76400006001600160e01b0384161115611224576040516338fd8f3960e21b815260040160405180910390fd5b506040805180820182526001600160e01b03938416815263ffffffff92831660208083019182526001600160a01b039096165f90815260029096529190942093519051909116600160e01b029116179055565b60608101516001600160401b0316670de0b6b3a764000061129882826115b9565b826020015163ffffffff166112ac8161156e565b83604001516001600160801b03166112c38161156e565b6112cb611542565b6001600160a01b0386165f90815260086020526040902054855163ffffffff9081169116146112f8575f5ffd5b5050506001600160a01b039092165f908152600860209081526040918290208351815492850151938501516060909501516001600160401b03908116600160c01b026001600160c01b036001600160801b03909716600160401b029690961663ffffffff9586166401000000000267ffffffffffffffff19909516959092169490941792909217929092161791909117905550565b5f5f5f6113c67f00000000000000000000000000000000000000000000000000000000000000006113c18888612710611934565b6119aa565b6001600160a01b0381165f908152600260209081526040918290208251808401909352546001600160e01b0381168352600160e01b900463ffffffff1690820181905291925090158015611422575080516001600160e01b0316155b156114645760405180604001604052806702c68af0bb140000670de0b6b3a764000061144e919061280f565b6001600160401b03168152600f60209091015290505b5f8160200151603c611476919061282e565b90505f61148284611a90565b90508163ffffffff168163ffffffff1610156114b15760405163c15607ef60e01b815260040160405180910390fd5b5f6114bc8584611c48565b5090505f6114c982611e7d565b8551975090506114db818a8d8d612198565b9750505050505050935093915050565b6114f3611542565b806114fd8161156e565b50600455565b61150b611542565b6001600160a01b03811661153957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111d7816118a6565b5f546001600160a01b0316331461107d5760405163118cdaa760e01b8152336004820152602401611530565b805f036111d757604051635a53a6e960e01b815260040160405180910390fd5b5f815f190483118202156115a95763c4c5d7f55f526004601cfd5b50670de0b6b3a764000091020490565b818181811015610e0d5760405163f5c38b6160e01b815260048101929092526024820152604401611530565b333b1580156115f357503233145b61107d57604051639f8129d160e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611654573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116789190612783565b92915050565b6001600160a01b0383165f908152600860205260408120805463ffffffff808216916116b49164010000000090910416426127c1565b10156116d357604051637b22948960e01b815260040160405180910390fd5b5f6116dd86611610565b8254909150600160401b90046001600160801b031681111561170d57508054600160401b90046001600160801b03165b81545f9061172c908390600160c01b90046001600160401b031661158e565b905061173881836127c1565b91506117468787848861226e565b60405163a9059cbb60e01b8152336004820152602481018390529094506001600160a01b0388169063a9059cbb906044016020604051808303815f875af1158015611793573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b791906127d4565b5083866001600160a01b0316886001600160a01b03167f089c02e97a69a4f00ded600e029a273a5729f89d2373fee461bd4c6021d96fb060405160405180910390a45050805463ffffffff19164263ffffffff161790559392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632277d1bd6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561186d575f5ffd5b505af1158015610e0d573d5f5f3e3d5ffd5b6001600160a01b0381166111d7576040516359c662df60e11b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001546001600160a01b031633148061191757505f546001600160a01b031633145b61107d576040516322a6b32160e21b815260040160405180910390fd5b604080516060810182525f8082526020820181905291810191909152826001600160a01b0316846001600160a01b0316111561196e579192915b6040518060600160405280856001600160a01b03168152602001846001600160a01b031681526020018362ffffff1681525090505b9392505050565b5f81602001516001600160a01b0316825f01516001600160a01b0316106119cf575f5ffd5b815160208084015160408086015181516001600160a01b0395861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201206001600160f81b031960a08401529085901b6bffffffffffffffffffffffff191660a183015260b58201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d582015260f50160408051601f1981840301815291905280516020909101209392505050565b5f5f5f836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611acf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611af39190612865565b5050509350935050505f8161ffff1611611b345760405162461bcd60e51b81526020600482015260026024820152614e4960f01b6044820152606401611530565b5f806001600160a01b03861663252c09d784611b518760016128fd565b611b5b919061292b565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401608060405180830381865afa158015611b98573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bbc919061295f565b93505050915080611c345760405163252c09d760e01b81525f60048201526001600160a01b0387169063252c09d790602401608060405180830381865afa158015611c09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c2d919061295f565b5091935050505b611c3e82426129b7565b9695505050505050565b5f5f8263ffffffff165f03611c845760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401611530565b6040805160028082526060820183525f9260208301908036833701905050905083815f81518110611cb757611cb76129d3565b602002602001019063ffffffff16908163ffffffff16815250505f81600181518110611ce557611ce56129d3565b602002602001019063ffffffff16908163ffffffff16815250505f5f866001600160a01b031663883bdbfd846040518263ffffffff1660e01b8152600401611d2d91906129e7565b5f60405180830381865afa158015611d47573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d6e9190810190612ac4565b915091505f825f81518110611d8557611d856129d3565b602002602001015183600181518110611da057611da06129d3565b6020026020010151611db29190612b87565b90505f825f81518110611dc757611dc76129d3565b602002602001015183600181518110611de257611de26129d3565b6020026020010151611df49190612bb4565b905063ffffffff8816611e078184612bd3565b97505f8360060b128015611e265750611e208184612c0f565b60060b15155b15611e395787611e3581612c30565b9850505b63ffffffff8916640100000000600160c01b03602084901b16611e636001600160a01b0383612c51565b611e6d9190612c82565b9750505050505050509250929050565b5f5f5f8360020b12611e92578260020b611e99565b8260020b5f035b9050620d89e8811115611ebf576040516315e4079d60e11b815260040160405180910390fd5b5f816001165f03611ed457600160801b611ee6565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611f1a576ffff97272373d413259a46990580e213a0260801c5b6004821615611f39576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611f58576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611f77576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611f96576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611fb5576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611fd4576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611ff4576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612014576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612034576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612054576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612074576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612094576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156120b4576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156120d4576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156120f5576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612115576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612134576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612151576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561217057805f198161216c5761216c612917565b0490505b640100000000810615612184576001612186565b5f5b60ff16602082901c0192505050919050565b5f6001600160801b036001600160a01b0386161161220b575f6121c560026001600160a01b038816612d93565b9050826001600160a01b0316846001600160a01b0316106121f4576121ef600160c01b8683612439565b612203565b6122038186600160c01b612439565b915050612266565b5f6122246001600160a01b03871680600160401b612439565b9050826001600160a01b0316846001600160a01b0316106122535761224e600160801b8683612439565b612262565b6122628186600160801b612439565b9150505b949350505050565b5f5f5f61227c87878761138d565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018990529294509092509088169063095ea7b3906044016020604051808303815f875af11580156122ef573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231391906127d4565b506040805160a081019091526bffffffffffffffffffffffff19606089811b821660c084015261027160ec1b60d484015288901b1660d78201525f908060eb81016040516020818303038152906040528152602001306001600160a01b031681526020018663ffffffff16815260200187815260200161239c85856001600160e01b031661158e565b905260405163c04b8d5960e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c04b8d59906123ed908490600401612da1565b6020604051808303815f875af1158015612409573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242d9190612783565b98975050505050505050565b5f838302815f1985870982811083820303915050805f0361246d5783828161246357612463612917565b04925050506119a3565b8084116124845761248460038515026011186124ef565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b634e487b715f52806020526024601cfd5b5f60208284031215612510575f5ffd5b5035919050565b6001600160a01b03811681146111d7575f5ffd5b5f6020828403121561253b575f5ffd5b81356119a381612517565b80356001600160401b038116811461255c575f5ffd5b919050565b5f60208284031215612571575f5ffd5b6119a382612546565b63ffffffff811681146111d7575f5ffd5b5f6020828403121561259b575f5ffd5b81356119a38161257a565b80151581146111d7575f5ffd5b5f602082840312156125c3575f5ffd5b81356119a3816125a6565b5f602082840312156125de575f5ffd5b813562ffffff811681146119a3575f5ffd5b5f5f5f60608486031215612602575f5ffd5b833561260d81612517565b925060208401356001600160e01b0381168114612628575f5ffd5b915060408401356126388161257a565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561267957612679612643565b60405290565b604051601f8201601f191681016001600160401b03811182821017156126a7576126a7612643565b604052919050565b5f5f82840360a08112156126c1575f5ffd5b83356126cc81612517565b92506080601f19820112156126df575f5ffd5b506126e8612657565b60208401356126f68161257a565b815260408401356127068161257a565b602082015260608401356001600160801b0381168114612724575f5ffd5b604082015261273560808501612546565b6060820152809150509250929050565b5f5f5f60608486031215612757575f5ffd5b833561276281612517565b9250602084013561277281612517565b929592945050506040919091013590565b5f60208284031215612793575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116785761167861279a565b818103818111156116785761167861279a565b5f602082840312156127e4575f5ffd5b81516119a3816125a6565b5f61ffff821661ffff81036128065761280661279a565b60010192915050565b6001600160401b0382811682821603908111156116785761167861279a565b63ffffffff818116838216029081169081811461284d5761284d61279a565b5092915050565b805161ffff8116811461255c575f5ffd5b5f5f5f5f5f5f5f60e0888a03121561287b575f5ffd5b875161288681612517565b8097505060208801518060020b811461289d575f5ffd5b95506128ab60408901612854565b94506128b960608901612854565b93506128c760808901612854565b925060a088015160ff811681146128dc575f5ffd5b60c08901519092506128ed816125a6565b8091505092959891949750929550565b61ffff81811683821601908111156116785761167861279a565b634e487b7160e01b5f52601260045260245ffd5b5f61ffff83168061293e5761293e612917565b8061ffff84160691505092915050565b8051600681900b811461255c575f5ffd5b5f5f5f5f60808587031215612972575f5ffd5b845161297d8161257a565b935061298b6020860161294e565b9250604085015161299b81612517565b60608601519092506129ac816125a6565b939692955090935050565b63ffffffff82811682821603908111156116785761167861279a565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b81811015612a2457835163ffffffff16835260209384019390920191600101612a00565b509095945050505050565b5f6001600160401b03821115612a4757612a47612643565b5060051b60200190565b5f82601f830112612a60575f5ffd5b8151612a73612a6e82612a2f565b61267f565b8082825260208201915060208360051b860101925085831115612a94575f5ffd5b602085015b83811015612aba578051612aac81612517565b835260209283019201612a99565b5095945050505050565b5f5f60408385031215612ad5575f5ffd5b82516001600160401b03811115612aea575f5ffd5b8301601f81018513612afa575f5ffd5b8051612b08612a6e82612a2f565b8082825260208201915060208360051b850101925087831115612b29575f5ffd5b6020840193505b82841015612b5257612b418461294e565b825260209384019390910190612b30565b8095505050505060208301516001600160401b03811115612b71575f5ffd5b612b7d85828601612a51565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff821317156116785761167861279a565b6001600160a01b0382811682821603908111156116785761167861279a565b5f8160060b8360060b80612be957612be9612917565b667fffffffffffff1982145f1982141615612c0657612c0661279a565b90059392505050565b5f8260060b80612c2157612c21612917565b808360060b0791505092915050565b5f8160020b627fffff198103612c4857612c4861279a565b5f190192915050565b6001600160c01b03818116838216818102909216918183048114821517612c7a57612c7a61279a565b505092915050565b5f6001600160c01b03831680612c9a57612c9a612917565b6001600160c01b03929092169190910492915050565b6001815b6001841115612ceb57808504811115612ccf57612ccf61279a565b6001841615612cdd57908102905b60019390931c928002612cb4565b935093915050565b5f82612d0157506001611678565b81612d0d57505f611678565b8160018114612d235760028114612d2d57612d49565b6001915050611678565b60ff841115612d3e57612d3e61279a565b50506001821b611678565b5060208310610133831016604e8410600b8410161715612d6c575081810a611678565b612d785f198484612cb0565b805f1904821115612d8b57612d8b61279a565b029392505050565b5f6119a360ff841683612cf3565b602081525f825160a0602084015280518060c0850152806020830160e086015e5f60e0828601015260018060a01b0360208601511660408501526040850151606085015260608501516080850152608085015160a085015260e0601f19601f830116850101925050509291505056fea26469706673582212201c1137d489440c204b4266d41e9631fa691ecec8c35afe2f867e233c503c5f5e64736f6c634300081b0033000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000f19308f923582a6f7c465e5ce7a9dc1bec6665b100000000000000000000000097ebd4f9ffcfe0cbc8f63a4e0b296fbb54f0a185000000000000000000000000e592427a0aece92de3edee1f18e0157c058615640000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe880000000000000000000000008d40e3bb356a02a3a4dd6dba6cc890fd89675bda0000000000000000000000000000000000000000000000000000000000093a800000000000000000000000000000000000000001431e0fae6d7217caa0000000