0 txs
1 call
constructor
constructor((address factory, address events, address configs, address usdAsset, address automate, address taskCreator, address gainsTrading, address pyth) _params)
functions
automate
viewfunction automate() view returns (address)
availableFund
viewfunction availableFund() view returns (uint256)
availableFundD18
viewfunction availableFundD18() view returns (uint256)
dedicatedMsgSender
viewfunction dedicatedMsgSender() view returns (address)
delegates
viewfunction delegates(address delegate) view returns (bool)
ethToUsd
viewfunction ethToUsd(uint256 _amount) view returns (uint256)
executor
viewfunction executor() view returns (address)
getKeyIndex
viewfunction getKeyIndex(address _source, uint32 _sourceIndex) view returns (uint32 index)
getTraderPosition
viewfunction getTraderPosition(uint32 _index) view returns (tuple traderPosition)
hasCloseCharged
viewfunction hasCloseCharged(uint32 _index) view returns (bool)
isAuth
viewfunction isAuth(address msgSender) view returns (bool)
isOwner
viewfunction isOwner(address msgSender) view returns (bool)
lockedFund
viewfunction lockedFund() view returns (uint256)
lockedFundD18
viewfunction lockedFundD18() view returns (uint256)
owner
viewfunction owner() view returns (address)
positions
viewfunction positions(uint256 _key) view returns (tuple)
taskId
viewfunction taskId() view returns (uint256)
VERSION
viewfunction VERSION() view returns (bytes32)
addDelegate
nonpayablefunction addDelegate(address _delegate)
chargeCloseFee
nonpayablefunction chargeCloseFee(uint32 _index)
closePosition
nonpayablefunction closePosition(uint32 _index)
execute
payablefunction execute(uint8[] _commands, bytes[] _inputs) payable
init
nonpayablefunction init(address _owner, address _executor)
removeDelegate
nonpayablefunction removeDelegate(address _delegate)
setExecutor
nonpayablefunction setExecutor(address _executor)
transferOwnership
nonpayablefunction transferOwnership(address _newOwner)
events
DelegatedCopyWalletAdded
event DelegatedCopyWalletAdded(address indexed caller, address indexed delegate)
DelegatedCopyWalletRemoved
event DelegatedCopyWalletRemoved(address indexed caller, address indexed delegate)
OwnershipTransferred
event OwnershipTransferred(address indexed caller, address indexed newOwner)
errors
AlreadyCharged
error AlreadyCharged()
CannotExecuteTask
error CannotExecuteTask(uint256 taskId, address executor)
EthWithdrawalFailed
error EthWithdrawalFailed()
ExecutionFeeNotEnough
error ExecutionFeeNotEnough()
InsufficientAvailableFund
error InsufficientAvailableFund(uint256 available, uint256 required)
InvalidCollateralDelta
error InvalidCollateralDelta()
InvalidCommandType
error InvalidCommandType(uint256 commandType)
InvalidDelegateAddress
error InvalidDelegateAddress(address delegateAddress)
InvalidLeverage
error InvalidLeverage()
LengthMismatch
error LengthMismatch()
NoOpenPosition
error NoOpenPosition()
NoOrderFound
error NoOrderFound()
NoTaskFound
error NoTaskFound()
PositionExist
error PositionExist()
SourceMismatch
error SourceMismatch()
TradeMismatch
error TradeMismatch()
TradeOpening
error TradeOpening()
Unauthorized
error Unauthorized()
ZeroSizeDelta
error ZeroSizeDelta()
creation bytecode
0x6101c06040818152346200061457819062004401803803809162000024828662000619565b843961010093849181010312620006145780516001600160401b039284820184811183821017620005fe5783526200005c816200063d565b9384835260206200006f8184016200063d565b8082860152620000818685016200063d565b90818787015262000095606086016200063d565b97886060880152620000aa608087016200063d565b93846080890152620000bf60a088016200063d565b8060a08a015260e0620000e981620000da60c08c016200063d565b9a60c08d019b8c52016200063d565b990198895260018060a01b03808097169116968a519360c085019185831090831117620005fe5787918c521683528582840194168452858a84019516855285606084019b168b5280608084015260a083019680885260009160018060a01b031983541683558b5183807f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3608082905263573ea57560e01b81528481600481855afa908115620005b05789918e87928792620005ba575b50516331056e5760e21b81529283916004918391165afa908115620005b05790859185916200056a575b5060c0528c5163cd3d4fb960e01b81526002600482015291829060249082905afa9081156200051a578892918d8692869262000524575b5051632e8743fd60e21b81529384916004918391165afa9182156200051a57918c9184938a9592620004ce575b50602490835195869384926337b6269f60e21b84526004840152165afa928315620004c25790879594939291819362000465575b50505060a052600160155551821660e05251811689529051811661012090815296518116610140908152925181166101609081529351166101809081529351166101a09081529351613dae969095908762000653883960805187818161071c01526130eb015260a05187612a1e015260c05187505060e0518781816101f801526102a10152518681816107f201528181610ba001528181610ce201528181610e0701528181611ffa01528181612ef3015261384201525185818161066301528181610a2e015281816115be01528181611f4f015281816126e101528181612e6201528181613058015281816137a50152613bfe0152518481816107be015281816108e001528181610b6801528181610caa015281816110380152818161157b01528181611bca01528181611fc201528181612ec10152818161381101528181613ae50152613cec015251836106e0015251828181610f3b01528181610fdf015281816110b5015281816111080152818161133a01528181611525015281816116020152818161174a015281816119e701528181611aee01528181611b7201528181611c0e01528181611c93015281816121210152818161217d015281816121f401528181612250015281816122ee0152818161235c015281816124ed015281816125c00152818161264b01528181612bbc0152613558015251816132610152f35b9180949596508c809294503d8311620004ba575b62000485818362000619565b81010312620004b65762000499836200063d565b92015180151503620004b357508492919083838162000264565b80fd5b5080fd5b503d62000479565b508a51903d90823e3d90fd5b9250929350508381813d831162000512575b620004ec818362000619565b810103126200050e578792916024620005068e936200063d565b919062000230565b8280fd5b503d620004e0565b8c513d85823e3d90fd5b939450505081813d831162000562575b62000540818362000619565b810103126200050e5790838c60046200055a8b956200063d565b919062000203565b503d62000534565b82819392503d8311620005a8575b62000584818362000619565b81010312620005a4576024916200059c86926200063d565b9092620001cc565b8380fd5b503d62000578565b8d513d86823e3d90fd5b9350505081813d8311620005f6575b620005d5818362000619565b81010312620005a457518881168103620005a457889085908e6004620001a2565b503d620005c9565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b03821190821017620005fe57604052565b51906001600160a01b0382168203620006145756fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c908163049aacfe146130cd575080630b638e5414612b515780631c3c0ea814612b1d57806322bfbf9d14612a6f5780632520e7ff14612a4257806328f150eb146129fe5780632f54bf6e146129cb5780633322b23d146129ad578063373257251461291057806351f954bf146128575780635595de82146127db578063587cde1e1461279c578063608d60eb146105d257806367e7646f146105405780638da5cb5b14610519578063946d1480146104fb57806399fbab881461045e578063c34c08e514610437578063cea1fa0414610419578063d0cb3cd1146103fe578063d270444f146103db578063e71bdf411461032f578063f05ed16a14610309578063f09a401614610271578063f2fde38b146101885763ffa1ad7414610148573861000f565b346101835760003660031901126101835760206040517f302e312e300000000000000000000000000000000000000000000000000000008152f35b600080fd5b34610183576020366003190112610183576101a1613122565b600054906001600160a01b0391828116330361026057826001600160a01b0319921691829116176000556040519181337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37f000000000000000000000000000000000000000000000000000000000000000016803b1561018357604483600081938195637eecd31b60e11b845260048401523360248401525af180156102545761024b57005b61001b90613185565b6040513d6000823e3d90fd5b6040516282b42960e81b8152600490fd5b346101835760403660031901126101835761028a613122565b6024356001600160a01b03808216820361018357807f00000000000000000000000000000000000000000000000000000000000000001633036102605761001b9216806001600160a01b0319600054161760005560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3613b5e565b34610183576000366003190112610183576020610327601754613cbc565b604051908152f35b3461018357602036600319011261018357610348613122565b6001600160a01b0390816000541633036102605716801580156103c3575b6103ab578060005260016020526040600020600160ff19825416179055337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3005b6024906040519063a3653d9f60e01b82526004820152fd5b5080600052600160205260ff60406000205416610366565b346101835760003660031901126101835760206103276103f9613aca565b613cbc565b34610183576000366003190112610183576020610327613aca565b34610183576000366003190112610183576020601754604051908152f35b346101835760003660031901126101835760206001600160a01b0360165416604051908152f35b34610183576020366003190112610183576000606060405161047f816131b6565b8281528260208201528260408201520152600435600052601a602052608060406000206040516104ae816131b6565b6001600160a01b0382541691828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b34610183576020366003190112610183576020610327600435613226565b346101835760003660031901126101835760206001600160a01b0360005416604051908152f35b3461018357602036600319011261018357610559613122565b6001600160a01b0390816000541633036102605716801580156105b9575b6103ab57806000526001602052604060002060ff198154169055337f2e164a064eb9f0b2ca2868638164f74f683f65ddac9edfe30b907e032301fb1d600080a3005b5080600052600160205260ff6040600020541615610577565b60403660031901126101835760043567ffffffffffffffff8111610183576105fe903690600401613138565b9060243567ffffffffffffffff81116101835761061f903690600401613138565b92909161062a613343565b5a938281036127715760005b838110610a9f57856001600160a01b03806016541633148015610a12575b610660575b6001601555005b807f00000000000000000000000000000000000000000000000000000000000000001690604051630160eef160e61b81526020938482600481875afa918215610254576000926109e1575b506106bc6106c3916106ca93613bba565b5a90613abd565b3a90613209565b600c810290808204600c14901517156109cb57337f00000000000000000000000000000000000000000000000000000000000000008316036109bf575060408051635c08631b60e11b815290816004817f000000000000000000000000000000000000000000000000000000000000000086165afa80156102545760009061097f575b60049150935b8061075d86613226565b9460405193848092632cfc019d60e21b82525afa91821561025457600092610948575b508361078a613aca565b811161089f575060405163a9059cbb60e01b81526001600160a01b03831660048201526024810185905290808260448160007f000000000000000000000000000000000000000000000000000000000000000089165af180156102545761086b575b50505b817f00000000000000000000000000000000000000000000000000000000000000001690813b1561018357600060849281956040519788968795639f4db69560e01b8752336004880152166024860152604485015260648401525af180156102545761085c575b80610659565b61086590613185565b80610856565b81813d8311610898575b61087f81836131d2565b810103126101835761089090613399565b5084806107ec565b503d610875565b6000546040516323b872dd60e01b81526001600160a01b039186168216600482015290841660248201526044810191909152908082806064810103816000887f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457610914575b50506107ef565b81813d8311610941575b61092881836131d2565b810103126101835761093990613399565b50848061090d565b503d61091e565b9080925081813d8311610978575b61096081836131d2565b8101031261018357610971906133a6565b9085610780565b503d610956565b506040813d6040116109b7575b81610999604093836131d2565b8101031261018357806109b1856004935192016133a6565b5061074d565b3d915061098c565b600a6004910493610753565b634e487b7160e01b600052601160045260246000fd5b91508482813d8311610a0b575b6109f881836131d2565b81010312610183579051906106bc6106ab565b503d6109ee565b50604051639ac2a01160e01b81523360048201526020816024817f000000000000000000000000000000000000000000000000000000000000000086165afa90811561025457600091610a66575b50610654565b90506020813d8211610a97575b81610a80602093836131d2565b8101031261018357610a9190613399565b83610a60565b3d9150610a73565b8060051b90600d828501351015610183578281101561275b578186013591601e1987360301831215610183578287013567ffffffffffffffff811161018357360360208489010113610183576003858201351015610eae576001600160a01b036000541633036102605784810135610d905750908501602001356000811315610c4f576040516323b872dd60e01b815233600482015230602482015260ff82901c6000039182019091186044820181905291906020818060648101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457610c16575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156101835760405163145d426560e11b815233600482015260248101939093526000908390604490829084905af191821561025457600192610c07575b505b01610636565b610c1090613185565b87610bff565b6020813d602011610c47575b81610c2f602093836131d2565b8101031261018357610c4090613399565b5087610b95565b3d9150610c22565b60008112610c61575b50600190610c01565b610c6a81613c7a565b60405163a9059cbb60e01b815233600482015260ff82901c6000039182019091186024820181905291906020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457610d57575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156101835760405163b014da2160e01b815233600482015260248101939093526000908390604490829084905af191821561025457600192610d48575b5090610c58565b610d5190613185565b87610d41565b6020813d602011610d88575b81610d70602093836131d2565b8101031261018357610d8190613399565b5087610cd7565b3d9150610d63565b840135600114610da4575b60019150610c01565b6020828701013515610d9b5760008080806020868b010135335af13d15610ea9573d67ffffffffffffffff8111610e935760405190610ded601f8201601f1916602001836131d2565b8152600060203d92013e5b15610e81576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b15610183576040516379a4952760e01b815233600482015292870160200135602484015260009083908183816044810103925af191821561025457600192610e72575b50610d9b565b610e7b90613185565b87610e6c565b604051630ca79afd60e01b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b610df8565b9091610eb933613d6e565b15806126c5575b6102605760038286013503610f00575b50600c8185013511610ee55750600190610c01565b604051636bb50f4f60e11b8152908401356004820152602490fd5b84820135600403611270576040516315878e0760e01b81523060048201526020828901013563ffffffff1660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025457600092611243575b505060a081015115611231576001600160781b03610100820151166001600160781b036040848b010135168091016001600160781b0381116109cb579089840160600135156111d357606902806001600160781b038116036109cb5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260646001600160781b039283160490911660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457611188575b506001600160781b038061108f6060945b82610100820151169062ffffff968791015116906134ff565b1691169081156111725704166107d081108015611166575b611154576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610183576040516305e74d5560e11b81529188016020013563ffffffff1660048301526024820152600081604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561025457611145575b505b87610ed0565b61114e90613185565b8761113d565b604051633fe89cb960e11b8152600490fd5b50620249f081116110a7565b634e487b7160e01b600052601260045260246000fd5b6020813d6020116111cb575b816111a1602093836131d2565b81010312610183576001600160781b0361108f6060946111c18394613399565b5094505050611065565b3d9150611194565b90506001600160781b036101008301511681101561121f576001600160781b036101008301511603906001600160781b0382116109cb576001600160781b038061108f60609493611076565b604051636488ef4160e11b8152600490fd5b60405163556729af60e01b8152600490fd5b6112629250803d10611269575b61125a81836131d2565b8101906133f0565b8980610f74565b503d611250565b848201356005036123f057610160818801013561ffff8116156123e7575b61129e610140838a010135613bc7565b8782016101400135611a605760408051838a0160208181013560601b6bffffffffffffffffffffffff1916908301529091013563ffffffff1660348201526112f381605481015b03601f1981018352826131d2565b602081519101209081600052601b60205263ffffffff60406000205416806119bb575b50604051630109786b60e11b815230600482015260006024820152906060826044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610254578a9260009161194a575b5063ffffffff9067ffffffffffffffff610120876040519661139588613199565b60006020890152600060e08901526000610180890152308852600160a08901526080828201013515156080890152600360c089015261ffff606083830101351660408901526001600160781b0360a083830101351661010089015262ffffff60c083830101351660608901528360e08383010135168389015283610100838301013516610140890152010135166101608501525116602083015260405161143b81613169565b6001600160a01b036020868d0101351681528a63ffffffff6040876020850193010135168152604082016000815263ffffffff60208601511686600052601b60205260406000209063ffffffff1982541617905563ffffffff602086015116600052601c6020527fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffff00000000000000000000000000000000000000006001600160a01b036040600020955116935160a01b16915160c01b16911717905560a06020858c61156d604051948593849363095ea7b360e01b85520101356001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600484019092916001600160781b036020916001600160a01b03604085019616845216910152565b038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561025457611911575b50604051632cfc019d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610254576000916118d7575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156101835761ffff6001600160a01b039277ffffffffffffffffffffffffffffffffffffffffffffffff6101806040519663111970f960e21b885286815116600489015263ffffffff602082015116602489015284604082015116604489015262ffffff606082015116606489015260808101511515608489015260a0810151151560a489015260ff60c08201511660c489015260e08101516116c581613bc7565b60e48901526001600160781b036101008201511661010489015267ffffffffffffffff6101208201511661012489015267ffffffffffffffff6101408201511661014489015267ffffffffffffffff61016082015116610164890152015116610184860152166101a4840152166101c48201526000816101e481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610254576118c8575b506103e86001600160781b0361179d8a850160c081013562ffffff169060a001356134ff565b16049080600052601a602052604060002060606003604051926117bf846131b6565b6001600160a01b038154168452600181015460208501526002810154604085015201549101526001600160781b0382166002600160791b038360011b16046002146001600160781b0383161517156109cb57816118296002600160791b0360039460011b16613be7565b9161183383613c7a565b8260ff1c60000361184b601791858101188254613bba565b90556001600160a01b03602060405196611864886131b6565b8d0101351685526020850190600082526001600160781b03604087019316835260608601938452600052601a6020526001600160a01b0360406000209551166001600160a01b0319865416178555516001850155516002840155519101555b61113f565b6118d190613185565b89611777565b90506020813d602011611909575b816118f2602093836131d2565b8101031261018357611903906133a6565b8c6115f7565b3d91506118e5565b6020813d602011611942575b8161192a602093836131d2565b810103126101835761193b90613399565b508b6115a8565b3d915061191d565b9250506060823d6060116119b3575b81611966606093836131d2565b810103126101835763ffffffff8a926119a8604080519261198684613169565b61198f816133ba565b845261199d602082016133ba565b6020850152016133cb565b604082015290611374565b3d9150611959565b6040516315878e0760e01b815230600482015263ffffffff9190911660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102545760a092600092611a43575b50500151611a31578a611316565b604051632d852ff160e21b8152600490fd5b611a599250803d106112695761125a81836131d2565b8c80611a23565b611a70610140838a010135613bc7565b60408051838a0160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff166034820152611ab081605481016112e5565b5190206000818152601b6020526040908190205490516315878e0760e01b815230600482015263ffffffff90911660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610254576000926123ca575b505060a0810151156112315761ffff60408201511661ffff6060868d01013516148015906123b2575b6123a15789840161014001356001036122df5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526001600160781b038b860160a001351660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610254576122a6575b5063ffffffff602082015116926001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b15610183576040516324058ad360e01b815260048101949094528a850160a08101356001600160781b0316602486015260c081013562ffffff16604486015260e0013567ffffffffffffffff16606485015261ffff16608484015260008360a481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1928315610254578a93612297575b505b610100848401013567ffffffffffffffff81166121dd575b50610120848401013567ffffffffffffffff811661210a575b506001600160781b03611d268262ffffff6060846101006103e89701511692015116906134ff565b16046103e86001600160781b03611d4d85870160c081013562ffffff169060a001356134ff565b160490600083600052601a6020526040600020604051611d6c816131b6565b6001600160a01b038254168152600182015480602083015260036002840154936040840194855201546060830152806001600160781b0386161160001461210257611dc0906001600160781b038616613abd565b809281611ef1575b5050505080936001610140888801013514611e58575b6001600160a01b03916040918360206003999a85519b611dfd8d6131b6565b0101351689526001600160781b0360208a01951685526001600160781b03838a0196168652606089019687528152601a602052209551166001600160a01b03198654161785555160018501555160028401555191015561113f565b9193509193506001600160781b038416806002600160791b038660011b160460021490151715611edd57916001600160a01b03604085938d9795836020611eac6002600160791b0360039b60011b16613be7565b98611eb68a613c7a565b8960ff1c8503611ecd6017918c8101188254613bba565b90559a9950505091509150611dde565b634e487b7160e01b82526011600452602482fd5b9091929750518091116120fa575b50858060011b04600214861517156109cb576060611f1f8760011b613be7565b9101518082116120f2575b611f376017918254613abd565b9055604051632cfc019d60e21b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610254576000926120b6575b5060405163a9059cbb60e01b81526001600160a01b0383166004820152602481018290526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156102545761207d575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018357600092836064926001600160a01b03946040519b8c968795633317f54960e21b8752166004860152602485015260448401525af1948515610254578c9561206b575b808080611dc8565b6120759150613185565b60008d612063565b6020813d6020116120ae575b81612096602093836131d2565b81010312610183576120a790613399565b508f611fef565b3d9150612089565b9091506020813d6020116120ea575b816120d2602093836131d2565b81010312610183576120e3906133a6565b908f611f88565b3d91506120c5565b905080611f2a565b95508e611eff565b506000611dc0565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561018357604051630b5d9e9d60e41b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561025457611d266103e8926001600160781b03928d966121ce575b50925050611cfe565b6121d790613185565b8e6121c5565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b156101835760405163f401f2bb60e01b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1928315610254578a9315611ce55761229190613185565b8b611ce5565b6122a090613185565b8b611ccb565b6020813d6020116122d7575b816122bf602093836131d2565b81010312610183576122d090613399565b508b611bf7565b3d91506122b2565b602081015163ffffffff1692507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1561018357604051926369f6bde160e01b845260048401526001600160781b0360a0858c01013516602484015260006044840152600083606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1928315610254578a93612392575b50611ccd565b61239b90613185565b8b61238c565b60405162e45f0360e21b8152600490fd5b50608080820151151590858c01013515151415611b50565b6123e09250803d106112695761125a81836131d2565b8b80611b27565b5061012c61128e565b848201356006036124d8576040602082890101359163ffffffff9182918a01013516906040516020810190612448816112e586888690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209081600052601b60205280604060002054169283600052601c6020526040600020916040519261247a84613169565b54926001600160a01b03906040828616938483528660a01c169586602084015260c01c910152861614918215926124cd575b50506124bb576118c39261351d565b60405163c4d1e76d60e01b8152600490fd5b141590508b806124ac565b84820135600703612561576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018357604051638588633360e01b81529188016020013563ffffffff1660048301526000908290602490829084905af1801561025457612552575b5061113f565b61255b90613185565b8761254c565b60088286013503612572575061113f565b600c828601350361254c5786016040810135906020810135906060013567ffffffffffffffff8116612641575b5067ffffffffffffffff82166125b6575b5061254c565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156101835760405163f401f2bb60e01b815263ffffffff92909216600483015267ffffffffffffffff166024820152906000908290604490829084905af1801561025457612632575b806125b0565b61263b90613185565b8761262c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561018357604051630b5d9e9d60e41b815263ffffffff8416600482015267ffffffffffffffff9290921660248301526000908290604490829084905af18015610254571561259f576126bf90613185565b8961259f565b50604051639ac2a01160e01b81523360048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025457600091612721575b5015610ec0565b90506020813d602011612753575b8161273c602093836131d2565b810103126101835761274d90613399565b8961271a565b3d915061272f565b634e487b7160e01b600052603260045260246000fd5b6040517fff633a38000000000000000000000000000000000000000000000000000000008152600490fd5b34610183576020366003190112610183576001600160a01b036127bd613122565b166000526001602052602060ff604060002054166040519015158152f35b34610183576040366003190112610183576127f4613122565b6024359063ffffffff908183168093036101835760405160609190911b6bffffffffffffffffffffffff1916602082810191825260348301949094529061283e81605481016112e5565b519020600052601b825260406000205416604051908152f35b346101835760203660031901126101835761287061310f565b612878613343565b6001600160a01b039081600054163303610260576106599163ffffffff90818316600052601c6020526040600020916112e5612905604051946128ba86613169565b54848116938487528160a01c169081602088015260c01c604087015260405192839160208301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b51902091511661351d565b3461018357602036600319011261018357606061292b61310f565b60006040805161293a81613169565b828152826020820152015263ffffffff809116600052601c60205267ffffffffffffffff6040600020916040519261297184613169565b54906001600160a01b0382169384815260406020820191838560a01c168352019260c01c83526040519485525116602084015251166040820152f35b34610183576000366003190112610183576020601854604051908152f35b346101835760203660031901126101835760206129e6613122565b6001600160a01b038060005416911614604051908152f35b346101835760003660031901126101835760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610183576020366003190112610183576020612a65612a60613122565b613d6e565b6040519015158152f35b34610183576020806003193601126101835763ffffffff80612a8f61310f565b16600052601c82526112e5612b00604060002060405190612aaf82613169565b549060406001600160a01b038316958683528360a01c1692838884015260c01c910152604051928391868301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020600052601d815260ff604060002054166040519015158152f35b3461018357602036600319011261018357612b36613122565b6001600160a01b036000541633036102605761001b90613b5e565b346101835760208060031936011261018357612b6b61310f565b90612b74613343565b612b7d33613d6e565b158061303d575b610260576040516315878e0760e01b815230600482015263ffffffff831660248201526101a091906001600160a01b039083816044817f000000000000000000000000000000000000000000000000000000000000000086165afa9384156102545760009461301e575b505060a083015161300c5763ffffffff809416600052601c82526040600020936112e5612c6a60405196612c2188613169565b54848116938489528160a01c169081878a015260c01c6040890152604051928391878301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209081600052601d835260ff60406000205416612ffa57806103e8612cae956001600160781b03968162ffffff60608a610100819601511692015116906134ff565b160494851695511690600095869184600052601a865260406000209660405197612cd7896131b6565b82815416895260019889820154808a830152606060036002850154946040850195865201549201918252808611600014612ff257612d159086613abd565b809281612e08575b5050505083612d9a575b5090601d96976003939260405195612d3e876131b6565b865260408887019284845281880194855260608801958652888152601a8a52209551166001600160a01b03198654161785555188850155516002840155519101556000525260406000208160ff19825416179055601555600080f35b6002600160791b03919350871b1681810460021482151715612df45790601d9697612dc760039493613be7565b92612dd184613c7a565b612de68460ff1c830385810118601754613bba565b601755919293509796612d27565b634e487b7160e01b88526011600452602488fd5b909192939495965051809111612fea575b5081891b828104600214831517156109cb57612e3490613be7565b9051808211612fe2575b612e4a90601754613abd565b601755604051632cfc019d60e21b81529088826004817f000000000000000000000000000000000000000000000000000000000000000089165afa91821561025457600092612fab575b5060405163a9059cbb60e01b81526001600160a01b038316600482015260248101829052898160448160007f00000000000000000000000000000000000000000000000000000000000000008b165af1801561025457612f77575b50847f000000000000000000000000000000000000000000000000000000000000000016803b15610183576000928360649288946040519788968795633317f54960e21b8752166004860152602485015260448401525af1801561025457612f5f575b908180808b969594612d1d565b612f6c9193929850613185565b600096909188612f52565b8981813d8311612fa4575b612f8c81836131d2565b8101031261018357612f9d90613399565b508b612eef565b503d612f82565b9091508881813d8311612fdb575b612fc381836131d2565b8101031261018357612fd4906133a6565b908b612e94565b503d612fb9565b905080612e3e565b91508a612e19565b506000612d15565b60405163361ec56f60e11b8152600490fd5b60405163a29ebd7360e01b8152600490fd5b613035929450803d106112695761125a81836131d2565b918480612bee565b50604051639ac2a01160e01b815233600482015281816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025457600091613098575b5015612b84565b90508181813d83116130c6575b6130af81836131d2565b81010312610183576130c090613399565b83613091565b503d6130a5565b34610183576000366003190112610183576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359063ffffffff8216820361018357565b600435906001600160a01b038216820361018357565b9181601f840112156101835782359167ffffffffffffffff8311610183576020808501948460051b01011161018357565b6060810190811067ffffffffffffffff821117610e9357604052565b67ffffffffffffffff8111610e9357604052565b6101a0810190811067ffffffffffffffff821117610e9357604052565b6080810190811067ffffffffffffffff821117610e9357604052565b90601f8019910116810190811067ffffffffffffffff821117610e9357604052565b519067ffffffffffffffff8216820361018357565b818102929181159184041417156109cb57565b8115611172570490565b6040516396834ad360e01b81527fff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace60048201526080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610254576000916132ba575b50670de0b6b3a7640000916132b16132b6926139f2565b613209565b0490565b6080813d821161333b575b816132d2608093836131d2565b8101031261333757604051916132e7836131b6565b81518060070b8103613337578352613301602083016131f4565b60208401526040820151908160030b82036133345750604083015260609081015190820152670de0b6b3a764000061329a565b80fd5b5080fd5b3d91506132c5565b600260155414613354576002601555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b5190811515820361018357565b51906001600160a01b038216820361018357565b519063ffffffff8216820361018357565b519077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361018357565b90816101a0910312610183576040519061340982613199565b613412816133a6565b8252613420602082016133ba565b6020830152604081015161ffff81168103610183576040830152606081015162ffffff8116810361018357606083015261345c60808201613399565b608083015261346d60a08201613399565b60a083015260c081015160ff811681036101835760c083015260e081015160038110156101835760e083015261010080820151906001600160781b0382168203610183578301526101206134c28183016131f4565b908301526101406134d48183016131f4565b908301526101606134e68183016131f4565b908301526134f86101808092016133cb565b9082015290565b9190916001600160781b03808094169116029182169182036109cb57565b604080516315878e0760e01b81523060048083019190915263ffffffff861660248301526001600160a01b039695929491936101a0939091907f00000000000000000000000000000000000000000000000000000000000000008916908587604481855afa9687156139d35760009687986139b4575b5050813b156139b05763ffffffff60248792838b51958694859363bdb340cd60e01b855216888401525af180156139a65761398f575b506103e86135f594956001600160781b03958162ffffff606089610100819601511692015116906134ff565b160493841660008092858252602096601a8852898c896060600384882085519461361e866131b6565b815416855260018101548094860152600281015495850195865201549201918252808711600014613988576136539087613abd565b809281613749575b5050505082946136d3575b505090600392918a899a9b601d999a5196613680886131b6565b1686528a8887019284845281880194855260608801958652888152601a8a52209551166001600160a01b03198654161785555160018501555160028401555191015583525220600160ff19825416179055565b6002600160791b03919b945060011b168281046002148315171561373657601d9798999a50906137066003949392613be7565b9261371084613c7a565b6137258460ff1c830385810118601754613bba565b6017559a9998978192939450613666565b634e487b7160e01b825260118b52602482fd5b9091929394955051809111613980575b508160011b8281046002148315171561396d5790898e6137798794613be7565b9251808411613965575b61378f90601754613abd565b6017558d51632cfc019d60e21b815293849182907f0000000000000000000000000000000000000000000000000000000000000000165afa91821561395b578e88878f8e94839761390e575b505163a9059cbb60e01b81526001600160a01b0387169181019182526020820186905293928492909183919082906040015b03927f0000000000000000000000000000000000000000000000000000000000000000165af18015613904576138d0575b508d7f00000000000000000000000000000000000000000000000000000000000000001690813b156138cc5787928f9284908f93606494519788968795633317f54960e21b8752168b860152602485015260448401525af180156138c2576138ad575b9081808087959461365b565b6138ba9094919294613185565b9290386138a1565b8a513d87823e3d90fd5b8780fd5b8a81813d83116138fd575b6138e581836131d2565b810103126138cc576138f690613399565b503861383e565b503d6138db565b8d513d8a823e3d90fd5b9596505050505081813d8311613954575b61392981836131d2565b81010312613950579061380d8a8f83908f8b6139458b986133a6565b9792949550926137db565b8680fd5b503d61391f565b8c513d89823e3d90fd5b925082613783565b634e487b7160e01b875260118552602487fd5b915038613759565b5084613653565b6135f59461399f6103e892613185565b94506135c9565b87513d87823e3d90fd5b8580fd5b6139cb929850803d106112695761125a81836131d2565b953880613593565b88513d6000823e3d90fd5b63ffffffff16604d81116109cb57600a0a90565b600080825160070b128015613aad575b8015613a9b575b61333457604082015160030b8103808060030b03611edd5760ff169167ffffffffffffffff9060068411613a74575116916006039060ff8211613a60575090613a5760ff613a5d93166139de565b90613209565b90565b634e487b7160e01b81526011600452602490fd5b511691600519019060ff8211613a60575090613a9560ff613a5d93166139de565b9061321c565b5060fe19604083015160030b12613a09565b5080604083015160030b13613a02565b919082039182116109cb57565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561025457600090613b2b575b613a5d915060175490613abd565b6020823d8211613b56575b81613b43602093836131d2565b810103126133345750613a5d9051613b1d565b3d9150613b36565b6001600160a01b03168060005260016020526040600020600160ff19825416179055806001600160a01b03196016541617601655337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3565b919082018092116109cb57565b60031115613bd157565b634e487b7160e01b600052602160045260246000fd5b6040516358710f4560e11b815291906020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561025457600093613c43575b5091613a5d919261321c565b6020813d8211613c72575b81613c5b602093836131d2565b81010312613c6e57519250613a5d613c37565b8380fd5b3d9150613c4e565b8060ff1c60000390810118613c8d613aca565b8111613c965750565b604490613ca1613aca565b906040519163038f2bdb60e41b835260048301526024820152fd5b670de0b6b3a7640000908181029181830414901517156109cb5760405163313ce56760e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561025457600092613d3b575b50604d82116109cb57613a5d91600a0a9061321c565b90916020823d8211613d66575b81613d55602093836131d2565b810103126133345750519038613d25565b3d9150613d48565b6001600160a01b0380600054169116908114908115613d8b575090565b9050600052600160205260ff604060002054169056fea164736f6c6343000812000a000000000000000000000000afaae4be2c07948eb83e003ffdb859b5e6cabc630000000000000000000000006c212e97390c124b37888bf4b491a1f9f63451ed000000000000000000000000bd5662b3385f4951f1ba1c51705c85d4725f1d4a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0000000000000000000000000397a9bb1273fed4a4af9777df9c256f1609709f0000000000000000000000000ff162c694eaa571f685030649814282ea457f169000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c