173.3k txs
177.4k calls
constructor
constructor(address addressProvider, address _adlExecutionLogic)
functions
ADDRESS_PROVIDER
viewfunction ADDRESS_PROVIDER() view returns (address)
adlExecutionLogic
viewfunction adlExecutionLogic() view returns (address)
needADL
viewfunction needADL(uint256 pairIndex, bool isLong, uint256 executionSize, uint256 executionPrice) view returns (bool need, uint256 needADLAmount)
paused
viewfunction paused() view returns (bool)
positionManager
viewfunction positionManager() view returns (address)
cleanInvalidPositionOrders
nonpayablefunction cleanInvalidPositionOrders(bytes32[] positionKeys)
setPaused
nonpayablefunction setPaused()
setPriceAndUpdateFundingRate
payablefunction setPriceAndUpdateFundingRate(uint256 pairIndex, tuple params) payable
setPricesAndExecuteADLOrders
payablefunction setPricesAndExecuteADLOrders(address[] tokens, uint256[] prices, bytes[] updateData, uint64[] publishTimes, uint256 pairIndex, tuple[] executePositions, tuple[] executeOrders) payable
setPricesAndExecuteADLOrdersV2
payablefunction setPricesAndExecuteADLOrdersV2(uint256 pairIndex, tuple priceFeedParams, tuple[] executePositions, tuple[] executeOrders) payable
setPricesAndExecuteADLOrdersV3
payablefunction setPricesAndExecuteADLOrdersV3(uint256 pairIndex, tuple priceFeedParams, tuple[] adlPositionParams, tuple orderParams) payable
setPricesAndExecuteDecreaseLimitOrders
payablefunction setPricesAndExecuteDecreaseLimitOrders(address[] tokens, uint256[] prices, bytes[] updateData, uint64[] publishTimes, tuple[] decreaseOrders) payable
setPricesAndExecuteDecreaseLimitOrdersV2
payablefunction setPricesAndExecuteDecreaseLimitOrdersV2(tuple priceFeedParams, tuple[] decreaseOrders) payable
setPricesAndExecuteDecreaseMarketOrders
payablefunction setPricesAndExecuteDecreaseMarketOrders(address[] tokens, uint256[] prices, bytes[] updateData, uint64[] publishTimes, tuple[] decreaseOrders) payable
setPricesAndExecuteDecreaseMarketOrdersV2
payablefunction setPricesAndExecuteDecreaseMarketOrdersV2(tuple priceFeedParams, tuple[] decreaseOrders) payable
setPricesAndExecuteIncreaseLimitOrders
payablefunction setPricesAndExecuteIncreaseLimitOrders(address[] tokens, uint256[] prices, bytes[] updateData, uint64[] publishTimes, tuple[] increaseOrders) payable
setPricesAndExecuteIncreaseLimitOrdersV2
payablefunction setPricesAndExecuteIncreaseLimitOrdersV2(tuple priceFeedParams, tuple[] increaseOrders) payable
setPricesAndExecuteIncreaseMarketOrders
payablefunction setPricesAndExecuteIncreaseMarketOrders(address[] tokens, uint256[] prices, bytes[] updateData, uint64[] publishTimes, tuple[] increaseOrders) payable
setPricesAndExecuteIncreaseMarketOrdersV2
payablefunction setPricesAndExecuteIncreaseMarketOrdersV2(tuple priceFeedParams, tuple[] increaseOrders) payable
setPricesAndExecuteOrders
payablefunction setPricesAndExecuteOrders(address[] tokens, uint256[] prices, bytes[] updateData, uint64[] publishTimes, tuple[] orders) payable
setPricesAndExecuteOrdersV2
payablefunction setPricesAndExecuteOrdersV2(tuple priceFeedParams, tuple[] orders) payable
setPricesAndLiquidatePositions
payablefunction setPricesAndLiquidatePositions(address[] _tokens, uint256[] _prices, tuple[] liquidatePositions) payable
setPricesAndLiquidatePositionsV2
payablefunction setPricesAndLiquidatePositionsV2(uint8 _oracleType, address[] _tokens, uint256[] _prices, tuple[] liquidatePositions) payable
setPricesAndLiquidatePositionsV3
payablefunction setPricesAndLiquidatePositionsV3(uint8 _oracleType, address[] _tokens, uint256[] _prices, tuple liquidatePosition, tuple[] adlPositions) payable
setUnPaused
nonpayablefunction setUnPaused()
updatePositionManager
nonpayablefunction updatePositionManager(address _positionManager)
events
ExecuteAdlOrder
event ExecuteAdlOrder(uint256[] adlOrderIds, bytes32[] adlPositionKeys, uint256[] orders)
ExecuteOrderError
event ExecuteOrderError(uint256 orderId, string errorMessage)
ExecuteOrderV2
event ExecuteOrderV2(address account, uint256 orderId, uint256 pairIndex, uint8 tradeType, int256 collateral, uint256 orderSize, uint256 orderPrice, uint256 executionSize, uint256 executionPrice, uint256 executedSize, int256 pnl, uint256 tradingFee, int256 fundingFee, uint8 paymentType, uint256 networkFeeAmount, uint256 flags)
ExecutePositionError
event ExecutePositionError(bytes32 positionKey, string errorMessage)
InvalidOrder
event InvalidOrder(address sender, uint256 orderId, string message)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
UpdateExecutorAddress
event UpdateExecutorAddress(address sender, address oldAddress, address newAddress)
UpdateMaxTimeDelay
event UpdateMaxTimeDelay(uint256 oldDelay, uint256 newDelay)
UpdatePositionManager
event UpdatePositionManager(address sender, address oldAddress, address newAddress)
ZeroPosition
event ZeroPosition(address sender, address account, uint256 pairIndex, bool isLong, string message)
errors
No errors.
creation bytecode
0x60a034620001f057601f62004e5a38819003918201601f19168301916001600160401b03831184841017620001f5578084926040948552833981010312620001f05780516001600160a01b03918282168203620001f05760200151918216809203620001f057608052600160005560ff196001541660015560018060a01b03196002541617600255604051614c4e90816200020c8239608051818181610174015281816102de01528181610486015281816105280152818161062c01528181610720015281816107fa015281816108e40152818161099a01528181610cdf01528181610ed20152818161112a015281816112440152818161135b015281816115180152818161170701528181611842015281816119cc01528181611b5701528181611c6901528181611e1701528181611f320152818161207f015281816121ee015281816123c30152818161242f015281816125a2015281816126450152818161275001528181612843015281816128ed015281816129d701528181612a7d01528181612d8c01528181612e2e01528181612f1c01528181613004015281816130b0015281816131b30152818161325701528181613f4e015281816142bb0152818161451201528181614626015281816146ef015281816147ba015281816148650152818161492801526149d30152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630be8ed6c14612cd05780630d3df17d1461250757806316d0c6fe146123f25780631848effa146123ad57806319aea824146123845780632a267a7c146122be5780632c41e71b146121b4578063349fdb091461204f57806337a66d8514611f025780633ef7293c14611d3e57806345b4166914611c2f578063556da2b414611ac75780635c975abb14611aa45780635f0c97811461198f5780636881d8cb14611804578063791b98bc146117d75780637d6b4010146116cd57806392d6cd281461142b5780639e68203714611321578063a8a9a7cc14611207578063b6cc273a146110ed578063da3bd91c14610e7b578063dee05e3f14610c6a578063f949a3ae146103f6578063fdd99e2d146102a15763fec131061461013b57600080fd5b61014436613bc9565b61014c613c74565b610154613e55565b60405162435da560e01b8152602092906001600160a01b039084816004817f000000000000000000000000000000000000000000000000000000000000000086165afa80156102965785918791610269575b506024604051809481936335d2155560e11b8352336004840152165afa90811561025e578591610216575b5090610207936101e361020293613cb8565b81015151604082015151148061020e575b6101fd90613eab565b6142a0565b6144c9565b6001815580f35b5060016101f4565b9190508382813d8311610257575b61022e8183613532565b8101031261025357610207936101e361024961020294613c2b565b92935050936101d1565b8480fd5b503d610224565b6040513d87823e3d90fd5b6102899150823d841161028f575b6102818183613532565b810190613c0c565b386101a6565b503d610277565b6040513d88823e3d90fd5b506102ab36613a95565b926102b7929192613c74565b6102bf613e55565b60405162435da560e01b81526020906001600160a01b039082816004817f000000000000000000000000000000000000000000000000000000000000000086165afa80156103eb5783918a916103ce575b506024604051809481936335d2155560e11b8352336004840152165afa9182156103c3578892610376575b50509061020795610350610369959493613cb8565b80518251148061036e575b61036490613eab565b613f29565b6146d1565b50600161035b565b90809594939250813d83116103bc575b6103908183613532565b810103126103b857610207956103506103ab61036996613c2b565b929394955081975061033b565b8680fd5b503d610386565b6040513d8a823e3d90fd5b6103e59150823d841161028f576102818183613532565b38610310565b6040513d8b823e3d90fd5b506060366003190112610c67576004356001600160401b038111610bc65761042290369060040161357e565b816024356001600160401b038111610bc6576104429036906004016135e4565b6044356001600160401b038111610c6357610461903690600401613857565b9261046a613c74565b610472613e55565b60405162435da560e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bf8576024916020918691610c46575b506040516335d2155560e11b815233600482015292839182906001600160a01b03165afa8015610bf8578490610c0b575b6104ff9150613cb8565b805182511480610c03575b61051390613eab565b604051635434a1df60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bf8578491610bd9575b506001600160a01b031691823b15610bd55761059592849283604051809681958294631a2b825160e21b845260048401613edc565b03925af18015610bca57610bb2575b505060005b8151811015610baa576105bc818361428c565b5160018060a01b0360015460081c166020608083015160246040518094819363ecaf4ca160e01b835260048301525afa8015610a285761061791600091610b7b575b506001600160401b038060608501511691161115614aa9565b604051632b47bb3d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a2857600091610b5c575b5060608201516001600160401b03166001600160a01b0382163b15610a3457604051634c77e2e560e01b81526004810191909152906000908290602490829084906001600160a01b03165af18015610a2857610b4d575b506040516106c981613517565b600181526020368183013781516001600160a01b03166106e882614269565b526106f1614ae5565b60208301516106ff82614269565b5261070981614269565b50604051632630c12f60e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215610a2857600092610b2c575b50604084015160608501516001600160401b0316926001600160a01b0381163b15610a34576000926107c49260405180968195829463078f27bd60e01b8452886004850152608060248501526107b2608485018c613d0d565b84810360031901604486015290613d8a565b606483019190915203926001600160a01b03165af18015610a2857610b1d575b5060405163477a86ef60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a2857600091610afe575b50608083015160c084015160e085015161010086015161012087015191946001600160a01b039081169460ff9094169392169190843b15610a345760009460c4938692604051988997889663063007c560e31b8852336004890152602488015260448701526064860152608485015260a48401525af19081610aef575b50610aea5760016108bf614b60565b6308c379a014610a86575b610a28575b604051632630c12f60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a28576001600160401b0391606091600091610a67575b5060018060a01b03169301511690823b15610a345761097592600092836040518096819582946361fedd4d60e11b84528460048501526024840152606060448401526064830190613d0d565b03925af18015610a2857610a58575b50604051632b47bb3d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a2857600091610a39575b506001600160a01b031690813b15610a34576000809260046040518095819363042ec5cb60e11b83525af1918215610a2857610a1492610a19575b50614431565b6105a9565b610a22906134d3565b38610a0e565b6040513d6000823e3d90fd5b600080fd5b610a52915060203d60201161028f576102818183613532565b386109d3565b610a61906134d3565b38610984565b610a80915060203d60201161028f576102818183613532565b38610929565b610a8e614b7e565b80610a9a575b506108ca565b90507fedd32c7c9778f5c32416a3b51524d565f0b6bd3bbe26fd7c951dbe3d65cd427f6000916080850151610ae16040519283928352604060208401526040830190613d4a565b0390a138610a94565b6108cf565b610af8906134d3565b386108b0565b610b17915060203d60201161028f576102818183613532565b38610833565b610b26906134d3565b386107e4565b610b4691925060203d60201161028f576102818183613532565b9038610759565b610b56906134d3565b386106bc565b610b75915060203d60201161028f576102818183613532565b38610665565b610b9d915060203d602011610ba3575b610b958183613532565b810190614a8a565b386105fe565b503d610b8b565b826001815580f35b610bbb906134d3565b610bc65781386105a4565b5080fd5b6040513d84823e3d90fd5b8380fd5b610bf2915060203d60201161028f576102818183613532565b38610560565b6040513d86823e3d90fd5b50600161050a565b506020813d602011610c3e575b81610c2560209383613532565b81010312610bd557610c396104ff91613c2b565b6104f5565b3d9150610c18565b610c5d9150823d841161028f576102818183613532565b386104c4565b8280fd5b80fd5b5034610c675780602080600319360112610e78576001600160401b03600435818111610e735736602382011215610e73578060040135918211610e73578160051b91366024848401011161025357610cc0613c74565b610cc8613e55565b60405162435da560e01b81526001600160a01b03907f00000000000000000000000000000000000000000000000000000000000000008216908681600481855afa9081156103c357839188918a91610e56575b506024604051809481936335d2155560e11b8352336004840152165afa80156103c35787918991610e14575b5091610d54600493613cb8565b60405163477a86ef60e01b815292839182905afa908115610e09578791610dec575b501690813b15610de85760405163dee05e3f60e01b81526004810195909552602485018190526001600160fb1b031061025357838560448286839760248398018484013781010301925af18015610bca57610dd4575b506001905580f35b610ddd906134d3565b610c67578038610dcc565b8580fd5b610e039150863d881161028f576102818183613532565b38610d76565b6040513d89823e3d90fd5b82819392503d8311610e4f575b610e2b8183613532565b81010312610e4b57600491610d54610e438993613c2b565b919350610d47565b8780fd5b503d610e21565b610e6d9150823d841161028f576102818183613532565b38610d1b565b505050fd5b50fd5b506040366003190112610c67576024356001600160401b038111610bc657610ea7903690600401613b1e565b90610eb0613c74565b610eb8613e55565b60405162435da560e01b81526001600160a01b03906020907f00000000000000000000000000000000000000000000000000000000000000008316908281600481855afa90811561025e578491849187916110d0575b506024604051809481936335d2155560e11b8352336004840152165afa90811561025e579083918691611092575b5091610f49600493613cb8565b604051632630c12f60e01b815292839182905afa908115610bf8579083918591611075575b501684519160028310156110615785015190606086015191608087015193823b156103b8579086939291610fb8604051968795869485946305fb264b60e01b865260048601613ddf565b039134905af1801561105657908391611042575b505060015460081c16915191600283101561102e578192813b1561102a576110166044849283604051958694859363e968c2d560e01b855260043560048601526024850190613cea565b5af18015610bca57610dd457506001905580f35b5050fd5b634e487b7160e01b82526021600452602482fd5b61104b906134d3565b610bc6578138610fcc565b6040513d85823e3d90fd5b634e487b7160e01b85526021600452602485fd5b61108c9150833d851161028f576102818183613532565b38610f6e565b82819392503d83116110c9575b6110a98183613532565b8101031261025357600491610f496110c18593613c2b565b919350610f3c565b503d61109f565b6110e79150823d841161028f576102818183613532565b38610f0e565b506110f736613a95565b92611103929192613c74565b61110b613e55565b60405162435da560e01b81526020906001600160a01b039082816004817f000000000000000000000000000000000000000000000000000000000000000086165afa80156103eb5783918a916111ea575b506024604051809481936335d2155560e11b8352336004840152165afa9182156103c35788926111a1575b5050906102079561035061119c959493613cb8565b61490a565b90809594939250813d83116111e3575b6111bb8183613532565b810103126103b857610207956103506111d661119c96613c2b565b9293949550819750611187565b503d6111b1565b6112019150823d841161028f576102818183613532565b3861115c565b5061121136613a95565b9261121d929192613c74565b611225613e55565b60405162435da560e01b81526020906001600160a01b039082816004817f000000000000000000000000000000000000000000000000000000000000000086165afa80156103eb5783918a91611304575b506024604051809481936335d2155560e11b8352336004840152165afa9182156103c35788926112bb575b505090610207956103506112b6959493613cb8565b61479c565b90809594939250813d83116112fd575b6112d58183613532565b810103126103b857610207956103506112f06112b696613c2b565b92939495508197506112a1565b503d6112cb565b61131b9150823d841161028f576102818183613532565b38611276565b5061132b36613bc9565b611333613c74565b61133b613e55565b60405162435da560e01b8152602092906001600160a01b039084816004817f000000000000000000000000000000000000000000000000000000000000000086165afa8015610296578591879161140e575b506024604051809481936335d2155560e11b8352336004840152165afa90811561025e5785916113ca575b5090610207936101e36112b693613cb8565b9190508382813d8311611407575b6113e28183613532565b8101031261025357610207936101e36113fd6112b694613c2b565b92935050936113b8565b503d6113d8565b6114259150823d841161028f576102818183613532565b3861138d565b5061014080600319360112610bc6576001600160401b03602435818111610bd55761145a903690600401613b1e565b90604435908111610bd557611473903690600401613778565b9060e0366063190112610a34576040519261148d846134fc565b6064358452608435926004841015610a34576020938486015260a4358015158103610a3457604086015260c43560ff81168103610a3457606086015260e43560808601526101043560a08601526001600160a01b0391610124358381168103610a345760c08701526114fd613c74565b611505613e55565b60405162435da560e01b815285816004817f000000000000000000000000000000000000000000000000000000000000000088165afa9081156103c357849187918a916116b0575b506024604051809781936335d2155560e11b8352336004840152165afa80156103c3578694899161166c575b506115db9561158a6115a492613cb8565b8581015151604082015151148061020e576101fd90613eab565b600254169087604051809681958294631876c6b560e01b845233600485015260043560248501526044840152610144830190614121565b6115e8606483018b6141a2565b03925af1918215610bf8578492611636575b50501561160a575b506001815580f35b611630906116166141f9565b9061162082614269565b5261162a81614269565b506144c9565b38611602565b90809250813d8311611665575b61164d8183613532565b81010312610c635761165e90613c2b565b38806115fa565b503d611643565b8581979692503d83116116a9575b6116848183613532565b81010312610e4b576115a4869461158a6116a06115db98613c2b565b92505095611579565b503d61167a565b6116c79150823d841161028f576102818183613532565b3861154d565b506116d736613bc9565b6116df613c74565b6116e7613e55565b60405162435da560e01b8152602092906001600160a01b039084816004817f000000000000000000000000000000000000000000000000000000000000000086165afa801561029657859187916117ba575b506024604051809481936335d2155560e11b8352336004840152165afa90811561025e578591611776575b5090610207936101e361119c93613cb8565b9190508382813d83116117b3575b61178e8183613532565b8101031261025357610207936101e36117a961119c94613c2b565b9293505093611764565b503d611784565b6117d19150823d841161028f576102818183613532565b38611739565b5034610c675780600319360112610c675760015460405160089190911c6001600160a01b03168152602090f35b5034610c6757602080600319360112610bc6576001600160a01b03906004359082821690818303610a345760405162435da560e01b815281816004817f000000000000000000000000000000000000000000000000000000000000000089165afa90811561029657859183918891611972575b50602460405180948193637be53ca160e01b8352336004840152165afa90811561029657869161190d575b50907f888f67ba778372c27e79bbfc2b6a7933c7f94ac44ea6110df376637c513641e4946118d36060959493613c38565b60015493610100600160a81b039060081b16610100600160a81b03198516176001556040519333855260081c16908301526040820152a180f35b93929180915084813d831161196b575b6119278183613532565b81010312610de8577f888f67ba778372c27e79bbfc2b6a7933c7f94ac44ea6110df376637c513641e4946118d361195f606096613c2b565b929394955050946118a2565b503d61191d565b6119899150823d841161028f576102818183613532565b38611877565b5061199936613a95565b926119a5929192613c74565b6119ad613e55565b60405162435da560e01b81526020906001600160a01b039082816004817f000000000000000000000000000000000000000000000000000000000000000086165afa80156103eb5783918a91611a87575b506024604051809481936335d2155560e11b8352336004840152165afa9182156103c3578892611a3e575b50509061020795610350610202959493613cb8565b90809594939250813d8311611a80575b611a588183613532565b810103126103b85761020795610350611a7361020296613c2b565b9293949550819750611a29565b503d611a4e565b611a9e9150823d841161028f576102818183613532565b386119fe565b5034610c675780600319360112610c6757602060ff600154166040519015158152f35b506080366003190112610c67576001600160401b03602435818111610c6357611af4903690600401613b1e565b90604435818111610bd557611b0d903690600401613778565b90606435908111610bd557611b269036906004016139bd565b90611b2f613c74565b611b37613e55565b60405162435da560e01b8152602093906001600160a01b039085816004817f000000000000000000000000000000000000000000000000000000000000000086165afa8015610e095786918891611c12575b506024604051809481936335d2155560e11b8352336004840152165afa908115610296578691611bce575b5090610207946101e3611bc693613cb8565b6004356149b5565b9190508482813d8311611c0b575b611be68183613532565b81010312610de857610207946101e3611c01611bc694613c2b565b9293505094611bb4565b503d611bdc565b611c299150823d841161028f576102818183613532565b38611b89565b50611c3936613bc9565b611c41613c74565b611c49613e55565b60405162435da560e01b8152602092906001600160a01b039084816004817f000000000000000000000000000000000000000000000000000000000000000086165afa80156102965785918791611d21575b506024604051809481936335d2155560e11b8352336004840152165afa90811561025e578591611cdd575b5090610207936101e3611cd893613cb8565b614847565b9190508382813d8311611d1a575b611cf58183613532565b8101031261025357610207936101e3611d10611cd894613c2b565b9293505093611cc6565b503d611ceb565b611d389150823d841161028f576102818183613532565b38611c9b565b5060e0366003190112610c67576001600160401b03600435818111610c6357611d6b90369060040161357e565b90602435818111610bd557611d849036906004016135e4565b9060443581811161025357611d9d9036906004016138d7565b606435828111610de857611db5903690600401613957565b9060a4358381116103b857611dce903690600401613778565b9260c4359081116103b857611de79036906004016139bd565b93611df0613c74565b611df8613e55565b60405162435da560e01b81526020906001600160a01b039082816004817f000000000000000000000000000000000000000000000000000000000000000086165afa8015611ef75783918b91611eda575b506024604051809481936335d2155560e11b8352336004840152165afa9182156103eb578992611e91575b50509061020796610350611e89959493613cb8565b6084356149b5565b90809594939250813d8311611ed3575b611eab8183613532565b81010312610e4b5761020796610350611ec6611e8996613c2b565b9293949550819850611e74565b503d611ea1565b611ef19150823d841161028f576102818183613532565b38611e49565b6040513d8c823e3d90fd5b5034610c675780600319360112610c675760405162435da560e01b81526001600160a01b039060209081816004817f000000000000000000000000000000000000000000000000000000000000000087165afa8015610bf85782918591612032575b50602460405180958193637be53ca160e01b8352336004840152165afa918215611056578392611fd8575b50611fba7f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25892613c38565b611fc2613c74565b600160ff1981541617600155604051338152a180f35b91508082813d831161202b575b611fef8183613532565b81010312610c6357611fba6120247f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25893613c2b565b9250611f8f565b503d611fe5565b6120499150823d841161028f576102818183613532565b38611f64565b5034610c675780600319360112610c675760405162435da560e01b81526020906001600160a01b039082816004817f000000000000000000000000000000000000000000000000000000000000000086165afa8015610bf85783918591612197575b50602460405180948193637be53ca160e01b8352336004840152165afa8015611056578390612161575b6120e59150613c38565b60015460ff8116156121255760ff19166001556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9190a180f35b60405162461bcd60e51b815260048101839052601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b508181813d8311612190575b6121778183613532565b81010312610c635761218b6120e591613c2b565b6120db565b503d61216d565b6121ae9150823d841161028f576102818183613532565b386120b1565b506121be36613bc9565b6121c6613c74565b6121ce613e55565b60405162435da560e01b8152602092906001600160a01b039084816004817f000000000000000000000000000000000000000000000000000000000000000086165afa801561029657859187916122a1575b506024604051809481936335d2155560e11b8352336004840152165afa90811561025e57859161225d575b5090610207936101e361036993613cb8565b9190508382813d831161229a575b6122758183613532565b8101031261025357610207936101e361229061036994613c2b565b929350509361224b565b503d61226b565b6122b89150823d841161028f576102818183613532565b38612220565b5034610c67576080366003190112610c6757602435801515809103610a3457604060018060a01b0360015460081c16916084825180948193630a899e9f60e21b835260043560048401526024830152604435604483015260643560648301525afa8015610bca5782918391612340575b60408383825191151582526020820152f35b9150506040813d60401161237c575b8161235c60409383613532565b81010312610bc65760409150602061237382613c2b565b9101513861232e565b3d915061234f565b5034610c675780600319360112610c67576002546040516001600160a01b039091168152602090f35b5034610c675780600319360112610c67576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506123fc36613a95565b92612408929192613c74565b612410613e55565b60405162435da560e01b81526020906001600160a01b039082816004817f000000000000000000000000000000000000000000000000000000000000000086165afa80156103eb5783918a916124ea575b506024604051809481936335d2155560e11b8352336004840152165afa9182156103c35788926124a1575b50509061020795610350611cd8959493613cb8565b90809594939250813d83116124e3575b6124bb8183613532565b810103126103b857610207956103506124d6611cd896613c2b565b929394955081975061248c565b503d6124b1565b6125019150823d841161028f576102818183613532565b38612461565b506080366003190112610c675760026004351015610c67576024356001600160401b038111610bc65761253e90369060040161357e565b816044356001600160401b038111610bc65761255e9036906004016135e4565b6064356001600160401b038111610c635761257d903690600401613857565b92612586613c74565b61258e613e55565b60405162435da560e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bf8576024916020918691612cb3575b506040516335d2155560e11b815233600482015292839182906001600160a01b03165afa8015610bf8578490612c78575b61261b9150613cb8565b805182511480612c70575b61262f90613eab565b604051635434a1df60e01b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa928315610bf8578493612c4f575b506001600160a01b0383163b15610bd5576126b192849283604051809681958294631a2b825160e21b845260048401613edc565b03926001600160a01b03165af18015610bca57612c3b575b505060005b8151811015610baa576126e1818361428c565b5160018060a01b0360015460081c166020608083015160246040518094819363ecaf4ca160e01b835260048301525afa8015610a285761273b91600091610b7b57506001600160401b038060608501511691161115614aa9565b604051632b47bb3d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a2857600091612c1c575b5060608201516001600160401b03166001600160a01b0382163b15610a3457604051634c77e2e560e01b81526004810191909152906000908290602490829084906001600160a01b03165af18015610a2857612c0d575b506040516127ed81613517565b600181526020368183013781516001600160a01b031661280c82614269565b52612815614ae5565b602083015161282382614269565b5261282d81614269565b50604051632630c12f60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a2857600091612bee575b5060018060a01b03166040840151906001600160401b0360608601511690803b15610a34576128c89360009360405180968195829463078f27bd60e01b84528a60043560048601614b1a565b03925af18015610a2857612bdf575b5060405163477a86ef60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a2857600091612bc0575b50608083015160c084015160e085015161010086015161012087015191946001600160a01b039081169460ff9094169392169190843b15610a345760009460c4938692604051988997889663063007c560e31b8852336004890152602488015260448701526064860152608485015260a48401525af19081612bb1575b50612bac5760016129b2614b60565b6308c379a014612b48575b610a28575b604051632630c12f60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a28576001600160401b0391606091600091612b29575b5060018060a01b03169301511690823b15610a3457612a5892600092836040518096819582946361fedd4d60e11b845260043560048501614bec565b03925af18015610a2857612b1a575b50604051632b47bb3d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610a2857600091612afb575b506001600160a01b031690813b15610a34576000809260046040518095819363042ec5cb60e11b83525af1918215610a2857612af692610a195750614431565b6126ce565b612b14915060203d60201161028f576102818183613532565b38612ab6565b612b23906134d3565b38612a67565b612b42915060203d60201161028f576102818183613532565b38612a1c565b612b50614b7e565b80612b5c575b506129bd565b90507fedd32c7c9778f5c32416a3b51524d565f0b6bd3bbe26fd7c951dbe3d65cd427f6000916080850151612ba36040519283928352604060208401526040830190613d4a565b0390a138612b56565b6129c2565b612bba906134d3565b386129a3565b612bd9915060203d60201161028f576102818183613532565b38612926565b612be8906134d3565b386128d7565b612c07915060203d60201161028f576102818183613532565b3861287c565b612c16906134d3565b386127e0565b612c35915060203d60201161028f576102818183613532565b38612789565b612c44906134d3565b610bc65781386126c9565b612c6991935060203d60201161028f576102818183613532565b913861267d565b506001612626565b506020813d602011612cab575b81612c9260209383613532565b81010312610bd557612ca661261b91613c2b565b612611565b3d9150612c85565b612cca9150823d841161028f576102818183613532565b386125e0565b5060a0366003190112610c675760026004351015610c67576024356001600160401b038111610bc657612d0790369060040161357e565b906044356001600160401b038111610bc657612d279036906004016135e4565b916064356001600160401b038111610c6357612d479036906004016136ba565b906084356001600160401b038111610bd557612d67903690600401613778565b90612d70613c74565b612d78613e55565b60405162435da560e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025e5760249160209187916134b6575b506040516335d2155560e11b815233600482015292839182906001600160a01b03165afa801561025e57859061347b575b612e059150613cb8565b805185511480613473575b612e1990613eab565b604051635434a1df60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025e578591613454575b506001600160a01b031690813b1561025357948491612e9c9683604051809981958294631a2b825160e21b845260048401613edc565b03925af1801561105657613440575b82935060018060a01b0360015460081c166020608084015160246040518094819363ecaf4ca160e01b835260048301525afa8015610bf857612f07918591613421575b506001600160401b038060608601511691161115614aa9565b604051632b47bb3d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bf8578491613402575b5060018060a01b03166001600160401b03606084015116813b15610253578491602483926040519485938492634c77e2e560e01b845260048401525af1908115610bf85784916133ee575b505060405190612fae82613517565b600182526020368184013782516001600160a01b0316612fcd83614269565b52612fd6614ae5565b6020840151612fe482614269565b52612fee81614269565b50604051632630c12f60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156102965786916133cf575b5060018060a01b03166040850151906001600160401b0360608701511690803b15610e4b5761308793889360405180968195829463078f27bd60e01b84528b60043560048601614b1a565b03925af190811561025e5785916133bb575b505060405163477a86ef60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561025e57859161339c575b5060018060a01b03169060808401519060ff60c0860151169060e0860151936101008701519160018060a01b036101208901511692823b15613398578995869561315e9587936040519a8b988997889663018614cf60e61b8852336004890152602488015260e0604488015260e4870190614121565b936064860152608485015260a484015260c483015203925af19182613384575b505061337f57600161318e614b60565b6308c379a01461331c575b610bca575b604051632630c12f60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bf8576001600160401b039160609186916132fd575b5060018060a01b03169301511690823b15610e7357613232928492836040518096819582946361fedd4d60e11b845260043560048501614bec565b03925af18015610bca576132e9575b50604051632b47bb3d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115610bca5782916132ca575b506001600160a01b0316803b15610e785781809160046040518094819363042ec5cb60e11b83525af18015610bca57610dd457506001905580f35b6132e3915060203d60201161028f576102818183613532565b3861328f565b6132f2906134d3565b610c67578038613241565b613316915060203d60201161028f576102818183613532565b386131f7565b613324614b7e565b80613330575b50613199565b90507fedd32c7c9778f5c32416a3b51524d565f0b6bd3bbe26fd7c951dbe3d65cd427f849160808501516133766040519283928352604060208401526040830190613d4a565b0390a13861332a565b61319e565b61338d906134d3565b610e7357833861317e565b8980fd5b6133b5915060203d60201161028f576102818183613532565b386130e8565b6133c4906134d3565b610e73578338613099565b6133e8915060203d60201161028f576102818183613532565b3861303c565b6133f7906134d3565b61102a578238612f9f565b61341b915060203d60201161028f576102818183613532565b38612f54565b61343a915060203d602011610ba357610b958183613532565b38612eee565b91909261344c906134d3565b908290612eab565b61346d915060203d60201161028f576102818183613532565b38612e66565b506001612e10565b506020813d6020116134ae575b8161349560209383613532565b81010312610253576134a9612e0591613c2b565b612dfb565b3d9150613488565b6134cd9150823d841161028f576102818183613532565b38612dca565b6001600160401b0381116134e657604052565b634e487b7160e01b600052604160045260246000fd5b60e081019081106001600160401b038211176134e657604052565b604081019081106001600160401b038211176134e657604052565b90601f801991011681019081106001600160401b038211176134e657604052565b6001600160401b0381116134e65760051b60200190565b35906001600160a01b0382168203610a3457565b81601f82011215610a345780359161359583613553565b926135a36040519485613532565b808452602092838086019260051b820101928311610a34578301905b8282106135cd575050505090565b8380916135d98461356a565b8152019101906135bf565b81601f82011215610a34578035916135fb83613553565b926136096040519485613532565b808452602092838086019260051b820101928311610a34578301905b828210613633575050505090565b81358152908301908301613625565b81601f82011215610a34578035906001600160401b0382116134e65760405192613676601f8401601f191660200185613532565b82845260208383010111610a3457816000926020809301838601378301015290565b35906001600160401b0382168203610a3457565b359060ff82168203610a3457565b919091610140908181850312610a34576040519182016001600160401b0390838110828211176134e65760405282946136f28361356a565b84526020830135918211610a345761370b918301613642565b60208301526040810135604083015261372660608201613698565b60608301526080810135608083015260a081013560a083015261374b60c082016136ac565b60c083015260e081013560e0830152610100808201359083015261377361012080920161356a565b910152565b81601f82011215610a345780359061378f82613553565b9260409061379f82519586613532565b838552602091828601918360c080970286010194818611610a34578401925b8584106137cf575050505050505090565b8684830312610a3457825190878201908282106001600160401b038311176138425788928792865286358152828701358382015261380e8688016136ac565b86820152606080880135908201526080808801359082015260a061383381890161356a565b908201528152019301926137be565b60246000634e487b7160e01b81526041600452fd5b9080601f83011215610a345781359061386f82613553565b9261387d6040519485613532565b828452602092838086019160051b83010192808411610a3457848301915b8483106138ab5750505050505090565b82356001600160401b038111610a345786916138cc848480948901016136ba565b81520192019161389b565b9080601f83011215610a34578135906138ef82613553565b926138fd6040519485613532565b828452602092838086019160051b83010192808411610a3457848301915b84831061392b5750505050505090565b82356001600160401b038111610a3457869161394c84848094890101613642565b81520192019161391b565b81601f82011215610a345780359161396e83613553565b9261397c6040519485613532565b808452602092838086019260051b820101928311610a34578301905b8282106139a6575050505090565b8380916139b284613698565b815201910190613998565b81601f82011215610a34578035906139d482613553565b926040906139e482519586613532565b838552602091828601918360e080970286010194818611610a34578401925b858410613a14575050505050505090565b8684830312610a3457825190613a29826134fc565b84358252858501356004811015610a34578683015283850135908115158203610a3457828792868b9501526060613a618189016136ac565b908201526080808801359082015260a0808801359082015260c0613a8681890161356a565b90820152815201930192613a03565b60a0600319820112610a34576004906001600160401b038235818111610a345782613ac191850161357e565b93602435828111610a345783613ad89186016135e4565b93604435838111610a345784613aef9183016138d7565b93606435848111610a345781613b06918401613957565b93608435908111610a3457613b1b92016139bd565b90565b91909160a081840312610a3457604051906001600160401b039060a08301828111848210176134e657604052829481356002811015610a345784526020820135838111610a345781613b7191840161357e565b60208501526040820135838111610a345781613b8e9184016135e4565b60408501526060820135838111610a345781613bab9184016138d7565b60608501526080820135928311610a34576080926137739201613957565b906040600319830112610a34576001600160401b03600435818111610a345783613bf591600401613b1e565b92602435918211610a3457613b1b916004016139bd565b90816020910312610a3457516001600160a01b0381168103610a345790565b51908115158203610a3457565b15613c3f57565b60405162461bcd60e51b815260206004820152600d60248201526c37b7363ca837b7b620b236b4b760991b6044820152606490fd5b60ff60015416613c8057565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b15613cbf57565b60405162461bcd60e51b81526020600482015260036024820152626f706b60e81b6044820152606490fd5b906002821015613cf75752565b634e487b7160e01b600052602160045260246000fd5b90815180825260208080930193019160005b828110613d2d575050505090565b83516001600160a01b031685529381019392810192600101613d1f565b919082519283825260005b848110613d76575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201613d55565b90815180825260208092019182818360051b85019501936000915b848310613db55750505050505090565b9091929394958480613dcf83856001950387528a51613d4a565b9801930193019194939290613da5565b9192613dee83613e1293613cea565b613e046020946080868601526080850190613d0d565b908382036040850152613d8a565b90606081830391015281808451928381520193019160005b828110613e38575050505090565b83516001600160401b031685529381019392810192600101613e2a565b600260005414613e66576002600055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b15613eb257565b60405162461bcd60e51b8152602060048201526002602482015261069760f41b6044820152606490fd5b90613eef90604083526040830190613d0d565b81810360209283015282518082529082019282019160005b828110613f15575050505090565b835185529381019392810192600101613f07565b60408051635434a1df60e01b81526000959294919360209392916001600160a01b03917f00000000000000000000000000000000000000000000000000000000000000008316918681600481865afa908115614117579084918b916140fa575b5016803b1561339857613fb5918a918a838b51809681958294631a2b825160e21b845260048401613edc565b03925af180156140f0576140da575b5084600491875192838092632630c12f60e01b82525afa9081156140d05788916140b3575b501692833b156103b85791614026959287949261403987519889966305fb264b60e01b885260006004890152608060248901526084880190613d0d565b6003199283888303016044890152613d8a565b9085820301606486015281808451928381520193019160005b8281106140905750505050828091039134905af19081156140875750614076575050565b61408082916134d3565b610c675750565b513d84823e3d90fd5b83516001600160401b031685528a97508996509381019392810192600101614052565b6140ca9150853d871161028f576102818183613532565b38613fe9565b86513d8a823e3d90fd5b600491986140e887926134d3565b989150613fc4565b87513d8b823e3d90fd5b6141119150883d8a1161028f576102818183613532565b38613f89565b88513d8c823e3d90fd5b90815180825260208080930193019160005b828110614141575050505090565b835180518652808301518684015260408082015160ff1690870152606080820151908701526080808201519087015260a0908101516001600160a01b03169086015260c09094019392810192600101614133565b906004821015613cf75752565b60c090805183526141bb60208201516020850190614195565b60408181015115159084015260608082015160ff16908401526080808201519084015260a080820151908401528101516001600160a01b0316910152565b60409081519161420883613517565b60018352829160005b6020808210156142615783516020929161422a826134fc565b600082526000818301526000868301526000606083015260006080830152600060a0830152600060c0830152828801015201614211565b505091925050565b8051156142765760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156142765760209160051b010190565b60408051635434a1df60e01b81526000926001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693926020908181600481895afa9081156143f4579083918891614414575b501694818401958651908686015191813b156133985791899161433393838a51809681958294631a2b825160e21b845260048401613edc565b03925af180156140d0576143fe575b5081600491865192838092632630c12f60e01b82525afa9182156143f45787926143d7575b50501681519360028510156143c357516080606084015193015194823b156103b85790869392916143ad8651978895869485946305fb264b60e01b865260048601613ddf565b039134905af19081156140875750614076575050565b634e487b7160e01b86526021600452602486fd5b6143ed9250803d1061028f576102818183613532565b3880614367565b85513d89823e3d90fd5b6004919761440c84926134d3565b979150614342565b61442b9150833d851161028f576102818183613532565b386142fa565b60001981146144405760010190565b634e487b7160e01b600052601160045260246000fd5b90815180825260208080930193019160005b828110614476575050505090565b909192938260e08261448b60019489516141a2565b01950193929101614468565b9392906144bf6144c79360409260018060a01b03168752606060208801526060870190614456565b940190614195565b565b906000915b80518310156146cc576144e1838261428c565b51604080820151909491901561460557845163c4aa304160e01b81526004906020906001600160a01b0390828185817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156145fa576000916145dd575b50169061454f6141f9565b938061455a86614269565b5261456485614269565b50015190828210156145c857803b15610a345761459b93600080948a5196879586948593632dc0e2db60e11b855233908501614497565b03925af180156145bd576145b693949550610a195750614431565b91906144ce565b85513d6000823e3d90fd5b602183634e487b7160e01b6000525260246000fd5b6145f49150833d851161028f576102818183613532565b38614544565b89513d6000823e3d90fd5b845163c4aa304160e01b81526004906020906001600160a01b0390828185817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156145fa576000916146af575b5016906146636141f9565b938061466e86614269565b5261467885614269565b50015190828210156145c857803b15610a345761459b93600080948a519687958694859363bb02ec9b60e01b855233908501614497565b6146c69150833d851161028f576102818183613532565b38614658565b509050565b60405163c4aa304160e01b81526001600160a01b03906020816004817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610a285760009161477e575b5016803b15610a345760405163bb02ec9b60e01b81523360048201526060602482015291600091839182908490829061475e906064830190614456565b82604483015203925af18015610a28576147755750565b6144c7906134d3565b614796915060203d811161028f576102818183613532565b38614721565b60405163c4aa304160e01b81526001600160a01b03906020816004817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610a2857600091614829575b5016803b15610a3457604051632dc0e2db60e11b81523360048201526060602482015291600091839182908490829061475e906064830190614456565b614841915060203d811161028f576102818183613532565b386147ec565b60405163c4aa304160e01b81526001600160a01b03906020816004817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610a28576000916148ec575b5016803b15610a3457604051632dc0e2db60e11b8152336004820152606060248201529160009183918290849082906148d4906064830190614456565b6001604483015203925af18015610a28576147755750565b614904915060203d811161028f576102818183613532565b38614897565b60405163c4aa304160e01b81526001600160a01b03906020816004817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610a2857600091614997575b5016803b15610a345760405163bb02ec9b60e01b8152336004820152606060248201529160009183918290849082906148d4906064830190614456565b6149af915060203d811161028f576102818183613532565b3861495a565b60405163c4aa304160e01b81526001600160a01b03906020816004817f000000000000000000000000000000000000000000000000000000000000000086165afa908115610a2857600091614a6c575b5016803b15610a345760009283614a4993614a5b6040519788968795869463174f3f3360e21b86523360048701526024860152608060448601526084850190614121565b83810360031901606485015290614456565b03925af18015610a28576147755750565b614a84915060203d811161028f576102818183613532565b38614a05565b90816020910312610a3457516001600160401b0381168103610a345790565b15614ab057565b60405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081c9bdd5b99609a1b6044820152606490fd5b604051614af181613517565b600181528060005b602080821015614b1457906060602092828501015201614af9565b50505090565b92614b5990614b4b606094614b3a876001600160401b03969a999a613cea565b608060208801526080870190613d0d565b908582036040870152613d8a565b9416910152565b60009060033d11614b6d57565b905060046000803e60005160e01c90565b600060443d10613b1b57604051600319913d83016004833e81516001600160401b03918282113d602484011117614bdb57818401948551938411614be3573d85010160208487010111614bdb5750613b1b92910160200190613532565b949350505050565b50949350505050565b6001600160401b03613b1b9493614c0583606095613cea565b1660208201528160408201520190613d0d56fea2646970667358221220295e43542bc52e1e6cb914c1ed7c38aa3915cf56e34eaed0858821e1901dec6c64736f6c63430008130033000000000000000000000000b1274e310910b35f211362dd92e208f4d5293ff00000000000000000000000003d9637fabbedadd945b6e3e7558398bd66087e06