0 txs
3 calls
constructor
No constructor.
functions
activeEmergencyMode
nonpayablefunction activeEmergencyMode()
addBridge
nonpayablefunction addBridge(address bridge)
addSymbol
nonpayablefunction addSymbol(string name, uint256 minAcceptableQuoteValue, uint256 minAcceptablePortionLF, uint256 tradingFee, uint256 maxLeverage, uint256 fundingRateEpochDuration, uint256 fundingRateWindowTime)
addSymbols
nonpayablefunction addSymbols(tuple[] symbols)
deactiveEmergencyMode
nonpayablefunction deactiveEmergencyMode()
deregisterAffiliate
nonpayablefunction deregisterAffiliate(address affiliate)
deregisterPartyB
nonpayablefunction deregisterPartyB(address partyB, uint256 index)
grantRole
nonpayablefunction grantRole(address user, bytes32 role)
pauseAccounting
nonpayablefunction pauseAccounting()
pauseGlobal
nonpayablefunction pauseGlobal()
pauseInternalTransfer
nonpayablefunction pauseInternalTransfer()
pauseLiquidation
nonpayablefunction pauseLiquidation()
pausePartyAActions
nonpayablefunction pausePartyAActions()
pausePartyBActions
nonpayablefunction pausePartyBActions()
registerAffiliate
nonpayablefunction registerAffiliate(address affiliate)
registerPartyB
nonpayablefunction registerPartyB(address partyB)
removeBridge
nonpayablefunction removeBridge(address bridge)
revokeRole
nonpayablefunction revokeRole(address user, bytes32 role)
setAdmin
nonpayablefunction setAdmin(address user)
setBalanceLimitPerUser
nonpayablefunction setBalanceLimitPerUser(uint256 balanceLimitPerUser)
setCollateral
nonpayablefunction setCollateral(address collateral)
setDeallocateCooldown
nonpayablefunction setDeallocateCooldown(uint256 deallocateCooldown)
setDeallocateDebounceTime
nonpayablefunction setDeallocateDebounceTime(uint256 deallocateDebounceTime)
setDefaultFeeCollector
nonpayablefunction setDefaultFeeCollector(address feeCollector)
setFeeCollector
nonpayablefunction setFeeCollector(address affiliate, address feeCollector)
setForceCancelCloseCooldown
nonpayablefunction setForceCancelCloseCooldown(uint256 forceCancelCloseCooldown)
setForceCancelCooldown
nonpayablefunction setForceCancelCooldown(uint256 forceCancelCooldown)
setForceCloseCooldowns
nonpayablefunction setForceCloseCooldowns(uint256 forceCloseFirstCooldown, uint256 forceCloseSecondCooldown)
setForceCloseGapRatio
nonpayablefunction setForceCloseGapRatio(uint256 symbolId, uint256 forceCloseGapRatio)
setForceCloseMinSigPeriod
nonpayablefunction setForceCloseMinSigPeriod(uint256 forceCloseMinSigPeriod)
setForceClosePricePenalty
nonpayablefunction setForceClosePricePenalty(uint256 forceClosePricePenalty)
setInvalidBridgedAmountsPool
nonpayablefunction setInvalidBridgedAmountsPool(address pool)
setLiquidationTimeout
nonpayablefunction setLiquidationTimeout(uint256 liquidationTimeout)
setLiquidatorShare
nonpayablefunction setLiquidatorShare(uint256 liquidatorShare)
setMuonConfig
nonpayablefunction setMuonConfig(uint256 upnlValidTime, uint256 priceValidTime)
setMuonIds
nonpayablefunction setMuonIds(uint256 muonAppId, address validGateway, tuple publicKey)
setPartyBEmergencyStatus
nonpayablefunction setPartyBEmergencyStatus(address[] partyBs, bool status)
setPendingQuotesValidLength
nonpayablefunction setPendingQuotesValidLength(uint256 pendingQuotesValidLength)
setSettlementCooldown
nonpayablefunction setSettlementCooldown(uint256 settlementCooldown)
setSymbolAcceptableValues
nonpayablefunction setSymbolAcceptableValues(uint256 symbolId, uint256 minAcceptableQuoteValue, uint256 minAcceptablePortionLF)
setSymbolFundingState
nonpayablefunction setSymbolFundingState(uint256 symbolId, uint256 fundingRateEpochDuration, uint256 fundingRateWindowTime)
setSymbolMaxLeverage
nonpayablefunction setSymbolMaxLeverage(uint256 symbolId, uint256 maxLeverage)
setSymbolName
nonpayablefunction setSymbolName(uint256 symbolId, string name)
setSymbolTradingFee
nonpayablefunction setSymbolTradingFee(uint256 symbolId, uint256 tradingFee)
setSymbolValidationState
nonpayablefunction setSymbolValidationState(uint256 symbolId, bool isValid)
suspendedAddress
nonpayablefunction suspendedAddress(address user)
transferOwnership
nonpayablefunction transferOwnership(address owner)
unpauseAccounting
nonpayablefunction unpauseAccounting()
unpauseGlobal
nonpayablefunction unpauseGlobal()
unpauseInternalTransfer
nonpayablefunction unpauseInternalTransfer()
unpauseLiquidation
nonpayablefunction unpauseLiquidation()
unpausePartyAActions
nonpayablefunction unpausePartyAActions()
unpausePartyBActions
nonpayablefunction unpausePartyBActions()
unsuspendedAddress
nonpayablefunction unsuspendedAddress(address user)
events
ActiveEmergencyMode
event ActiveEmergencyMode()
AddBridge
event AddBridge(address bridge)
AddSymbol
event AddSymbol(uint256 symbolId, string name, uint256 minAcceptableQuoteValue, uint256 minAcceptablePortionLF, uint256 tradingFee, uint256 maxLeverage, uint256 fundingRateEpochDuration, uint256 fundingRateWindowTime)
DeactiveEmergencyMode
event DeactiveEmergencyMode()
DeregisterAffiliate
event DeregisterAffiliate(address affilate)
DeregisterPartyB
event DeregisterPartyB(address partyB, uint256 index)
PauseAccounting
event PauseAccounting()
PauseGlobal
event PauseGlobal()
PauseInternalTransfer
event PauseInternalTransfer()
PauseLiquidation
event PauseLiquidation()
PausePartyAActions
event PausePartyAActions()
PausePartyBActions
event PausePartyBActions()
RegisterAffiliate
event RegisterAffiliate(address affilate)
RegisterPartyB
event RegisterPartyB(address partyB)
RemoveBridge
event RemoveBridge(address bridge)
RoleGranted
event RoleGranted(bytes32 role, address user)
RoleRevoked
event RoleRevoked(bytes32 role, address user)
SetBalanceLimitPerUser
event SetBalanceLimitPerUser(uint256 balanceLimitPerUser)
SetCollateral
event SetCollateral(address collateral)
SetDeallocateCooldown
event SetDeallocateCooldown(uint256 oldDeallocateCooldown, uint256 newDeallocateCooldown)
SetDeallocateDebounceTime
event SetDeallocateDebounceTime(uint256 oldDeallocateDebounceTime, uint256 newDeallocateDebounceTime)
SetDefaultFeeCollector
event SetDefaultFeeCollector(address oldDefaultFeeCollector, address newDefaultFeeCollector)
SetFeeCollector
event SetFeeCollector(address affiliate, address oldFeeCollector, address newFeeCollector)
SetForceCancelCloseCooldown
event SetForceCancelCloseCooldown(uint256 oldForceCancelCloseCooldown, uint256 newForceCancelCloseCooldown)
SetForceCancelCooldown
event SetForceCancelCooldown(uint256 oldForceCancelCooldown, uint256 newForceCancelCooldown)
SetForceCloseCooldowns
event SetForceCloseCooldowns(uint256 oldForceCloseFirstCooldown, uint256 newForceCloseFirstCooldown, uint256 oldForceCloseSecondCooldown, uint256 newForceCloseSecondCooldown)
SetForceCloseGapRatio
event SetForceCloseGapRatio(uint256 symbolId, uint256 oldForceCloseGapRatio, uint256 newForceCloseGapRatio)
SetForceCloseMinSigPeriod
event SetForceCloseMinSigPeriod(uint256 oldCloseMinSigPeriod, uint256 newCloseMinSigPeriod)
SetForceClosePricePenalty
event SetForceClosePricePenalty(uint256 oldPricePenalty, uint256 newPricePenalty)
SetInvalidBridgedAmountsPool
event SetInvalidBridgedAmountsPool(address oldInvalidBridgedAmountsPool, address newInvalidBridgedAmountsPool)
SetLiquidationTimeout
event SetLiquidationTimeout(uint256 oldLiquidationTimeout, uint256 newLiquidationTimeout)
SetLiquidatorShare
event SetLiquidatorShare(uint256 oldLiquidatorShare, uint256 newLiquidatorShare)
SetMuonConfig
event SetMuonConfig(uint256 upnlValidTime, uint256 priceValidTime)
SetMuonIds
event SetMuonIds(uint256 muonAppId, address gateway, uint256 x, uint8 parity)
SetPartyBEmergencyStatus
event SetPartyBEmergencyStatus(address partyB, bool status)
SetPendingQuotesValidLength
event SetPendingQuotesValidLength(uint256 oldPendingQuotesValidLength, uint256 newPendingQuotesValidLength)
SetSettlementCooldown
event SetSettlementCooldown(uint256 oldSettlementCooldown, uint256 newSettlementCooldown)
SetSuspendedAddress
event SetSuspendedAddress(address user, bool isSuspended)
SetSymbolAcceptableValues
event SetSymbolAcceptableValues(uint256 symbolId, uint256 oldMinAcceptableQuoteValue, uint256 oldMinAcceptablePortionLF, uint256 minAcceptableQuoteValue, uint256 minAcceptablePortionLF)
SetSymbolFundingState
event SetSymbolFundingState(uint256 symbolId, uint256 fundingRateEpochDuration, uint256 fundingRateWindowTime)
SetSymbolMaxLeverage
event SetSymbolMaxLeverage(uint256 symbolId, uint256 oldMaxLeverage, uint256 maxLeverage)
SetSymbolMaxSlippage
event SetSymbolMaxSlippage(uint256 symbolId, uint256 oldMaxSlippage, uint256 maxSlippage)
SetSymbolName
event SetSymbolName(uint256 symbolId, string oldName, string newName)
SetSymbolTradingFee
event SetSymbolTradingFee(uint256 symbolId, uint256 oldTradingFee, uint256 tradingFee)
SetSymbolValidationState
event SetSymbolValidationState(uint256 symbolId, bool oldState, bool isValid)
UnpauseAccounting
event UnpauseAccounting()
UnpauseGlobal
event UnpauseGlobal()
UnpauseInternalTransfer
event UnpauseInternalTransfer()
UnpauseLiquidation
event UnpauseLiquidation()
UnpausePartyAActions
event UnpausePartyAActions()
UnpausePartyBActions
event UnpausePartyBActions()
errors
No errors.
creation bytecode
0x6080806040523461001657613c5c908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806304df017d146134f157806308e63001146134435780630be41b621461337e5780631492df37146132a3578063154ae6b6146132225780631b00137a146131715780631d966e81146130ea578063207f186314613063578063208dd1ff14612fb857806325ce5e6214612f3157806326106ff214612e9957806329069cf414612b7857806329149799146129e357806346b6aa231461294b57806351adb2d9146128b357806356ea676a146127a55780635c7a5975146127245780635d76bca7146126a357806360a38861146125bd57806367b9f368146124ea57806367f460bb146124635780636cc524c2146123e2578063700b0bb314612361578063704b6c02146122ca57806372890285146121f657806372ab7db71461215e57806380e2bfb51461207c578063825009c714611edf57806384563bd214611e4e578063873bb5e814611db6578063880f25cb14611d23578063886abef514611aa95780638ac3a1f8146119155780638f002d021461187d5780639712fdf8146117b757806398e9a95214611730578063ab2742dc14611577578063afa13859146114df578063b3fa1c68146113f2578063b764907b1461136b578063bc336026146112db578063c37d3bbf14611146578063c47dd02814611080578063c678739d14610f87578063c885058e14610ea1578063caa7943814610ddc578063ccceb7cd14610d2e578063e30c213914610a8e578063e983af151461054f578063ea2b87df146104ce578063f2fde38b1461043b578063f96866dd146103a3578063fdf3082d1461030b5763ff7e42651461026e57600080fd5b346103065760203660031901126103065760043561028b3361370b565b600080516020613bd08339815191526000526020526102b160ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f877f3d29333c6c4ab37c2cddaa531d66359af6bcab4742c6424e30794021e25268df604082548151908152846020820152a155005b600080fd5b34610306576020366003190112610306576004356103283361370b565b600080516020613bd083398151915260005260205261034e60ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f8b7f9b64f9c84b5f5a4138c5f53085c1c8434624efec71636f8bb622543d6507a8eb604082548151908152846020820152a155005b34610306576020366003190112610306576004356103c03361370b565b600080516020613bd08339815191526000526020526103e660ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f977f065ee0d91866142cfe173795c3d83b51ac8d8161f88fb533d5c7b92be52dde3d604082548151908152846020820152a155005b34610306576020366003190112610306576104546135aa565b61045c613aac565b6001600160a01b03908116906104738215156136bf565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f80546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b34610306576000366003190112610306576104e83361370b565b600080516020613bf083398151915260005260205261050e60ff604060002054166137b6565b600080516020613b70833981519152805460ff60b01b191690557f7e1524de6a85a3640aa02bae9423081bbb57bee3a66e3bd4acd43ee3bd0b581a600080a1005b34610306576020366003190112610306576004356001600160401b038111610306573660238201121561030657806004013561058a81613699565b916105986040519384613608565b8183526024602084019260051b820101903682116103065760248101925b8284106109ce57846105c73361370b565b600080516020613b508339815191526000526020526105ed60ff604060002054166137b6565b6000905b80519160ff8116928310156109cc57602061060c8484613a4c565b510151606061061b8585613a4c565b510151608061062a8686613a4c565b51015160a06106398787613a4c565b51015160c06106488888613a4c565b5101519061010061066860e061065e8b8b613a4c565b5101519989613a4c565b510151926106753361370b565b600080516020613b5083398151915260005260205261069b60ff604060002054166137b6565b6106a98960011c8510613975565b670de0b6b3a7640000821161098757600080516020613b90833981519152549560001987146109715760018701600080516020613b90833981519152556040516106f2816135ec565b600188018152816020820152600160408201528660608201528260808201528360a08201528460c08201528a60e08201528561010082015260018801600052600080516020613bb08339815191526020526040600020908051825560208101518051906001600160401b03821161095b5761077060018501546139c1565b601f8111610914575b50602090601f831160011461087d5793600861086c9e9f97946101009085600080516020613c308339815191529f9d9b989660019f9d9a9661084598600092610872575b5050600019600383901b1c1916908f1b17848f01555b6107f260408201511515600286019060ff801983541691151516179055565b606081015160038501556080810151600485015560a0810151600585015560c0810151600685015560e081015160078501550151910155604051998a9901895261010060208a01526101008901906139fb565b9560408801526060870152608086015260a085015260c084015260e08301520390a1613a3b565b906105f1565b0151905038806107bd565b906001850160005260206000209160005b601f19851681106108fc575061086c9e9f9794610100906001600080516020613c308339815191529f9d9b989496819f9d9a966108459860089683601f198116106108e3575b505050811b018e8501556107d3565b015160001960f88460031b161c191690553880806108d4565b9192602060018192868501518155019401920161088e565b600185016000526020600020601f840160051c810160208510610954575b601f830160051c82018110610948575050610779565b60008155600101610932565b5080610932565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b815260206004820152601e60248201527f436f6e74726f6c46616365743a20486967682074726164696e672066656500006044820152606490fd5b005b83356001600160401b038111610306578201610120602319823603011261030657604051916109fc836135ec565b6024820135835260448201356001600160401b03811161030657610a269060243691850101613629565b602084015260648201359283151584036103065761012460209493859460408401526084810135606084015260a4810135608084015260c481013560a084015260e481013560c084015261010481013560e084015201356101008201528152019301926105b6565b34610306576040366003190112610306576001600160401b0360043560243582811161030657610ac2903690600401613629565b91610acc3361370b565b600080516020613b508339815191526000526020908152610af460ff604060002054166137b6565b6001928381101580610d15575b610b0a90613a60565b80600052600080516020613bb0833981519152908183528460406000200160405190828252606085830152600090805490610b44826139c1565b918260608601528981169081600014610cee5750600114610cac575b50509080610b9783827fec0da363c18a8a4b56960a3edcabefe7611c120a4d9822a1e59d2447492a366b950360408401528a6139fb565b0390a160005281528260406000200193805192831161095b57610bba85546139c1565b601f8111610c63575b5081601f8411600114610c005750928293918392600094610bf5575b50501b916000199060031b1c1916179055600080f35b015192508580610bdf565b919083601f1981168760005284600020946000905b88838310610c495750505010610c30575b505050811b019055005b015160001960f88460031b161c19169055838080610c26565b858701518855909601959485019487935090810190610c15565b8560005282600020601f850160051c810191848610610ca2575b601f0160051c019085905b828110610c96575050610bc3565b60008155018590610c88565b9091508190610c7d565b909150600052846000209085886000935b838510610cd65750505050810160800181610b97610b60565b805486860160800152919093019287918a9101610cbd565b60ff191660808087019190915292151560051b85019092019250839150610b979050610b60565b50600080516020613b9083398151915254811115610b01565b3461030657602036600319011261030657610d476135aa565b610d503361370b565b600080516020613bd0833981519152600052602052610d7660ff604060002054166137b6565b600080516020613b708339815191528054604080516001600160a01b03808416825285811660208301529394929392917f8dbea30b2853a786c3d1a810594b45f39ad4854722107ce977f26c99dd59df4691a16001600160a01b03199092169116179055005b3461030657610dea366135d6565b90610df43361370b565b600080516020613bd0833981519152600052602052610e1a60ff604060002054166137b6565b806000527f316cd9f80e16af2a12ce33cac96aeb1f3125dc040f5be132549ff7c414a113d490816020527f4c27a7082e0f4acd39221a808520aed5a72fe15055bdcb7abb8859b13f2e3e3483604060002054610e8d60405192839286846040919493926060820195825260208201520152565b0390a1600052602052604060002055600080f35b3461030657610eaf366135d6565b90610eb93361370b565b600080516020613b50833981519152600052602052610edf60ff604060002054166137b6565b600181101580610f6e575b610ef390613a60565b80600052600080516020613bb083398151915290816020527fc4326680f67b65d1054ff34a0932513de9ebcc69762ef03e7eba305c13211a2d83600660406000200154610f5760405192839286846040919493926060820195825260208201520152565b0390a1600052602052600660406000200155600080f35b50600080516020613b9083398151915254811115610eea565b34610306576040366003190112610306576109cc600435610fa66136b0565b90610fb03361370b565b600080516020613b50833981519152600052602052610fd660ff604060002054166137b6565b600181101580611067575b610fea90613a60565b80600052600080516020613bb083398151915290816020527fc5b31e6a40e8d069d9cce727be6d32654bd1dea532d13f8a3c3999a3461fb79d606060ff6002604060002001541660405190848252151560208201528515156040820152a160005260205260026040600020019060ff801983541691151516179055565b50600080516020613b9083398151915254811115610fe1565b346103065761108e366135d6565b906110983361370b565b600080516020613bd08339815191526000526020526110be60ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f8a908154917f2758958aab683e196d810f526b03bd3886defd68a432b38780ea515de863ed4460807f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f959485546040519182528560208301526040820152866060820152a15555005b34610306576080366003190112610306576004356111626135c0565b60403660431901126103065760405191604083018381106001600160401b0382111761095b5760405260443583526064359260ff84168403610306577f25a713125adaaeaacbcc48646938c97cd57f1ffad1ab9f2685b123f4b500bca19360ff608094602084019283526111d53361370b565b7fb048589f9ee6ae43a7d6093c04bc48fc93d622d76009b51a2c566fc7cda84ce760005260205261120c82604060002054166137b6565b847f27436b8f74caac3ab9de71cfb0971b5326ec400f880709c18d86f9d76139d79d5560018060a01b0316927f27436b8f74caac3ab9de71cfb0971b5326ec400f880709c18d86f9d76139d7a0846bffffffffffffffffffffffff60a01b8254161790555191827f27436b8f74caac3ab9de71cfb0971b5326ec400f880709c18d86f9d76139d79e555116917f27436b8f74caac3ab9de71cfb0971b5326ec400f880709c18d86f9d76139d79f8360ff19825416179055604051938452602084015260408301526060820152a1005b34610306576000366003190112610306576112f53361370b565b600080516020613bf083398151915260005260205261131b60ff604060002054166137b6565b7f9a4861c42efbcffcc59654e070976ca1f4a2ce14007af3ccc7b4998e5b0326b6805460ff191690557fd7e7f14117ea9641e7e23b76d02707b8ee55bc905af5cbcb906f0ce14bcef32d600080a1005b34610306576000366003190112610306576113853361370b565b600080516020613c108339815191526000526020526113ab60ff604060002054166137b6565b600080516020613b70833981519152805460ff60b81b1916600160b81b1790557f760bba3498dc2362c18c8a7e6d22d1cf48226959fdc12db1aa967a19138b50d8600080a1005b346103065760046114023661367f565b929161140d3361370b565b600080516020613b5083398151915260005260205261143360ff604060002054166137b6565b6001811015806114c6575b61144790613a60565b80600052600080516020613bb083398151915290816020527fcbfeaa42abc0cc8e330b5ee005a80314b4e38b3279ca89706f03b4d7788079c160a060406000208660038201549101546040519185835260208301526040820152856060820152876080820152a160005260205260406000209060038201550155600080f35b50600080516020613b908339815191525481111561143e565b34610306576020366003190112610306576004356114fc3361370b565b600080516020613bd083398151915260005260205261152260ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f967fc64c0a158f12d90a1715bbdf71615e58d62c8cb01a74379d46a0c96b81a76ff2604082548151908152846020820152a155005b34610306576040366003190112610306576115906135aa565b6024359061159d3361370b565b600080516020613b308339815191526000526020526115c360ff604060002054166137b6565b6001600160a01b0381166115d88115156136bf565b7f5e17fc5225d4a099df75359ce1f405503ca79498a8dc46a7d583235a0ee45c168314611666575b507f2ae6a113c0ed5b78a53413ffbb7679881f11145ccfba4fb92e863dfcd5a1d2f39161162c8261370b565b60008281526020918252604090819020805460ff1916600117905580519283526001600160a01b039093169082015290819081015b0390a1005b6000527f6e3ce8ccb9896cca9f260ce5aafef55eeba408a86f8fca5b71d23e31e7ad596760205260406000205415806116ff575b156116a55782611600565b60405162461bcd60e51b815260206004820152602c60248201527f436f6e74726f6c46616365743a205061727479412063616e2774206265636f6d60448201526b32903634b8bab4b230ba37b960a11b6064820152608490fd5b507f6e3ce8ccb9896cca9f260ce5aafef55eeba408a86f8fca5b71d23e31e7ad59696020526040600020541561169a565b346103065760003660031901126103065761174a3361370b565b600080516020613c1083398151915260005260205261177060ff604060002054166137b6565b600080516020613b70833981519152805460ff60a01b1916600160a01b1790557ff615943f52483d0cd1a6dd4d82a199d9b8fbca801abc63ab6ebee49b01cb5b41600080a1005b34610306576020366003190112610306576118706117d36135aa565b6117dc3361370b565b600080516020613b3083398151915260005260205261180260ff604060002054166137b6565b6040516001600160a01b03821681527fe22143109a0b97b4ff9e4b5131738f39f6e03a2959fffc3e799cbc8e0cbb9bc790602090a16001600160a01b031660009081527f96f3566354b79280d8f2a61023f0233b9c0b813879455c0242330ff335cff5ab6020526040902090565b805460ff19166001179055005b346103065760203660031901126103065760043561189a3361370b565b600080516020613bd08339815191526000526020526118c060ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f8d7f6bc386c11118ebdbf7b0a3c76f140be415d68a983f4166ed81575a624b1dcc1b604082548151908152846020820152a155005b34610306576040366003190112610306576004356001600160401b038111610306573660238201121561030657806004013561195081613699565b9161195e6040519384613608565b81835260209160248385019160051b8301019136831161030657602401905b828210611a8a5750505061198f6136b0565b916119993361370b565b600080516020613b30833981519152600052825260ff6119bf81604060002054166137b6565b8315159260005b835190838116918210156109cc57611a85917ff22daca5a501fa26ba29dec77e6adb9b2edff32ece6571c6518229b4998943f5906040906001600160a01b0390611a7390611a2183611a18838d613a4c565b511615156136bf565b82611a2c828c613a4c565b51166000527f9a4861c42efbcffcc59654e070976ca1f4a2ce14007af3ccc7b4998e5b0326b48852611a6d8c856000209060ff801983541691151516179055565b89613a4c565b511681519081528886820152a1613a3b565b6119c6565b81356001600160a01b038116810361030657815290830190830161197d565b346103065760208060031936011261030657611ac36135aa565b90611acd3361370b565b600080516020613b308339815191526000528152611af260ff604060002054166137b6565b6001600160a01b03918216611b088115156136bf565b60405163313ce56760e01b81528281600481855afa908115611c7457600091611ceb575b5060ff6012911611611c80577f9a4861c42efbcffcc59654e070976ca1f4a2ce14007af3ccc7b4998e5b0326b1805493841680611ba5575b50817fc32c0deb1265118db5bbdf1fe97ba1426a3365eca3792bee2c3d01174dcb2799946bffffffffffffffffffffffff60a01b16179055604051908152a1005b83602491604051928380926370a0823160e01b82523060048301525afa908115611c7457600091611c47575b50611bdc5784611b64565b60405162461bcd60e51b815260048101849052603760248201527f436f6e74726f6c46616365743a205468657265206973207374696c6c20636f6c60448201527f6c61746572616c20696e2074686520636f6e74726163740000000000000000006064820152608490fd5b90508381813d8311611c6d575b611c5e8183613608565b81010312610306575185611bd1565b503d611c54565b6040513d6000823e3d90fd5b60405162461bcd60e51b815260048101839052603a60248201527f436f6e74726f6c46616365743a20546f6b656e2077697468206d6f726520746860448201527f616e20313820646563696d616c73206e6f7420616c6c6f7765640000000000006064820152608490fd5b90508281813d8311611d1c575b611d028183613608565b81010312610306575160ff811681036103065760ff611b2c565b503d611cf8565b3461030657600036600319011261030657611d3d3361370b565b600080516020613c10833981519152600052602052611d6360ff604060002054166137b6565b7f9a4861c42efbcffcc59654e070976ca1f4a2ce14007af3ccc7b4998e5b0326b6805460ff191660011790557f78cb1cf2b60c841ba7cca148d571efdf5e51b304a2b83dede73331fa8983223c600080a1005b3461030657602036600319011261030657600435611dd33361370b565b600080516020613bd0833981519152600052602052611df960ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f887f7f6e7bbc5fd930506cc654d13db3f98cb98cc824ece8386e1facf105dcf2fd64604082548151908152846020820152a155005b3461030657602036600319011261030657600435611e6b3361370b565b600080516020613b30833981519152600052602052611e9160ff604060002054166137b6565b7f550e358cb58beb803c5803bf577bef30d12f3a610fb2f516356bf1731a2940096020604051838152a17f9a4861c42efbcffcc59654e070976ca1f4a2ce14007af3ccc7b4998e5b0326b355005b3461030657604036600319011261030657611ef86135aa565b602435611f043361370b565b7f23288e74cb14deb13fd69e749986e8975f19aa3efb14b2fe5e9b512d772f19b3600052602052611f3c60ff604060002054166137b6565b6001600160a01b039082821690611f548215156136bf565b611f6960ff611f628661377d565b54166138cd565b611f858284611f7784613862565b90549060031b1c1614613929565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f94928354946000199586810190811161097157611fe281611fd561201294611fd08795891115613929565b61377d565b805460ff19169055613862565b90549060031b1c16611ff384613862565b90919082549060031b9160018060a01b03809116831b921b1916179055565b8354938415612066577f72c7cb9f4f33062d91bf746c0d71c23b07089f1fdd54566bfb0b6977483bb56a95604095019161204b83613862565b909182549160031b1b191690555582519182526020820152a1005b634e487b7160e01b600052603160045260246000fd5b34610306577f7a0c7f02a3f2078317da0f37417b134d463548a29b6f6af545e1d12793cf6b5b6116616120ae3661367f565b6120ba9391933361370b565b600080516020613b508339815191526000526020526120e060ff604060002054166137b6565b600183101580612145575b6120f490613a60565b6121028460011c8210613975565b82600052600080516020613bb083398151915260205280600860406000208660078201550155604051938493846040919493926060820195825260208201520152565b50600080516020613b90833981519152548311156120eb565b346103065760203660031901126103065760043561217b3361370b565b600080516020613bd08339815191526000526020526121a160ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f897fe19f8d7397e217781da9f2a8e83c145e7b3241a3f8e517d6ff77cce8d0f7c558604082548151908152846020820152a155005b346103065760203660031901126103065761220f6135aa565b6122183361370b565b600080516020613bd083398151915260005260205261223e60ff604060002054166137b6565b6001600160a01b03818116906122558215156136bf565b7f96f3566354b79280d8f2a61023f0233b9c0b813879455c0242330ff335cff5af8054604080516001600160a01b0394831685168152959093166020860152909390917fdce96840b1e47844720af155bc481fb0b182cd9116a79b9bfce339499885175791a16001600160a01b031916179055005b34610306576020366003190112610306577f2ae6a113c0ed5b78a53413ffbb7679881f11145ccfba4fb92e863dfcd5a1d2f360406123066135aa565b61230e613aac565b6001600160a01b0381169061232d906123288315156136bf565b61370b565b90600080516020613b30833981519152918260005260205282600020600160ff1982541617905582519182526020820152a1005b346103065760003660031901126103065761237b3361370b565b600080516020613b308339815191526000526020526123a160ff604060002054166137b6565b600080516020613b70833981519152805460ff60c81b191690557f510f0a4387d353f64f9a99dca8ab581e8a23a2daf6dcf1c12ca861c49df8ec03600080a1005b34610306576000366003190112610306576123fc3361370b565b600080516020613bf083398151915260005260205261242260ff604060002054166137b6565b600080516020613b70833981519152805460ff60c01b191690557f56bbf4d5c48057713c4c7e8474fd071602d05ef20e763232d21ab3ed49094275600080a1005b346103065760003660031901126103065761247d3361370b565b600080516020613c108339815191526000526020526124a360ff604060002054166137b6565b600080516020613b70833981519152805460ff60c01b1916600160c01b1790557f0a92c5b66bbac4689abfde0a2f963f196b21f53af383085ba777b136152e4b48600080a1005b34610306576020366003190112610306576125b36125066135aa565b61250f3361370b565b600080516020613b3083398151915260005260205261253560ff604060002054166137b6565b7fc4c73bb1419a59406925cfd45c7d8769c4ef9024ed48cbf4179dca4cdf19a35e60406001600160a01b03831661256d8115156136bf565b815190815260006020820152a16001600160a01b031660009081527fdd1d6d04e1f24037b02215b0852708bab55d9f1305ee6cb777ad46ae2573bb226020526040902090565b805460ff19169055005b34610306576125cb366135d6565b906125d53361370b565b600080516020613b508339815191526000526020526125fb60ff604060002054166137b6565b60018110158061268a575b61260f90613a60565b80600052600080516020613bb083398151915290816020527fb3fa62526d2d8ef309416f61c40b61267dc218e23c3b998c9e0d5826ff362ce58360056040600020015461267360405192839286846040919493926060820195825260208201520152565b0390a1600052602052600560406000200155600080f35b50600080516020613b9083398151915254811115612606565b34610306576000366003190112610306576126bd3361370b565b600080516020613bf08339815191526000526020526126e360ff604060002054166137b6565b600080516020613b70833981519152805460ff60b81b191690557f0252a84960699cef849402fcae6a4fe2dd8ddb946a1d15efb03ae0af07c0aef7600080a1005b346103065760003660031901126103065761273e3361370b565b600080516020613bf083398151915260005260205261276460ff604060002054166137b6565b600080516020613b70833981519152805460ff60a81b191690557fdf4a9b005f757e8715aefece611b5f793f89dd1991fc7717cef83d8f9a7f416b600080a1005b34610306576020366003190112610306576127be6135aa565b6127c73361370b565b7f23288e74cb14deb13fd69e749986e8975f19aa3efb14b2fe5e9b512d772f19b36000526020526127ff60ff604060002054166137b6565b6001600160a01b0381166128148115156136bf565b61282a60ff6128228461377d565b541615613802565b6128338261377d565b600160ff198254161790557f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f949081546801000000000000000081101561095b577fb1e55b64272332caa21275155200a2bdbfa776c6b6051b41c899dc4d1e34cb4293611ff38260209560016128aa95019055613862565b604051908152a1005b34610306576020366003190112610306576004356128d03361370b565b600080516020613bd08339815191526000526020526128f660ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f8c7fbe1e11e3bb51c23dfc7aab2e5e5564668d6e4bffa9386fe579c0d5dbba628abd604082548151908152846020820152a155005b34610306576020366003190112610306576004356129683361370b565b600080516020613bd083398151915260005260205261298e60ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f9a7ff737752a526b3d2336dd5866c5152b7ef3446c08e10b2d57dc0c90f39543a9b7604082548151908152846020820152a155005b34610306576040366003190112610306576129fc6135aa565b612a046135c0565b612a0d3361370b565b7f931c8e73074924ecdce1f1602777505305e234e4ae359fdf7ed84d5fd0cfdbee600052602052612a4560ff604060002054166137b6565b6001600160a01b0390811691612a5c8315156136bf565b60ff612a6782613744565b541615612b33577fc81f8f164cdb4534165aa36b8321c011daa716daee0b66cb3d4f4aaacbd04a7a606083612b2094612ad18560018060a01b03166000527f9a4861c42efbcffcc59654e070976ca1f4a2ce14007af3ccc7b4998e5b0326b7602052604060002090565b541660405191851682526020820152856040820152a16001600160a01b031660009081527f9a4861c42efbcffcc59654e070976ca1f4a2ce14007af3ccc7b4998e5b0326b76020526040902090565b80546001600160a01b0319169091179055005b60405162461bcd60e51b815260206004820152601f60248201527f436f6e74726f6c46616365743a20496e76616c696420616666696c69617465006044820152606490fd5b346103065760e0366003190112610306576004356001600160401b03811161030657612ba8903690600401613629565b612bb13361370b565b600080516020613b50833981519152600052602052612bd760ff604060002054166137b6565b612be960a43560011c60c43510613975565b670de0b6b3a76400006064351161098757600080516020613b90833981519152549060001982146109715760018201600080516020613b9083398151915255604051612c34816135ec565b600183018152816020820152600160408201526024356060820152604435608082015260643560a082015260843560c082015260a43560e082015260c43561010082015260018301600052600080516020613bb08339815191526020526040600020908051825560208101518051906001600160401b03821161095b57612cbe60018501546139c1565b601f8111612e52575b50602090601f8311600114612dc757610100612d87948460019895600080516020613c308339815191529a9895600895600092612dbc575b5050600019600383901b1c191690891b17848901555b612d3460408201511515600286019060ff801983541691151516179055565b606081015160038501556080810151600485015560a0810151600585015560c0810151600685015560e08101516007850155015191015560405193849301835261010060208401526101008301906139fb565b60243560408301526044356060830152606435608083015260843560a083015260a43560c083015260c43560e08301520390a1005b015190508b80612cff565b906001850160005260206000209160005b601f1985168110612e3a5750612d8794600185600080516020613c308339815191529a989560089561010095849c99601f19811610612e21575b505050811b0188850155612d15565b015160001960f88460031b161c191690558b8080612e12565b91926020600181928685015181550194019201612dd8565b600185016000526020600020601f840160051c810160208510612e92575b601f830160051c82018110612e86575050612cc7565b60008155600101612e70565b5080612e70565b3461030657602036600319011261030657600435612eb63361370b565b600080516020613bd0833981519152600052602052612edc60ff604060002054166137b6565b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f987fac2a3e84bbe006689192685813e6d463d4fd6abcac6f1dace8c9524e4815e6d7604082548151908152846020820152a155005b3461030657600036600319011261030657612f4b3361370b565b600080516020613c10833981519152600052602052612f7160ff604060002054166137b6565b600080516020613b70833981519152805460ff60b01b1916600160b01b1790557f210af087e616bec0c7243741c12d61101395c15cd453278af2c5a3132f8cb008600080a1005b34610306576040366003190112610306577f155aaafb6329a2098580462df33ec4b7441b19729b9601c5fc17ae1cf99a8a52612ff26135aa565b602435612ffe3361370b565b600080516020613b3083398151915260005260205261302460ff604060002054166137b6565b61302d8261370b565b60008281526020918252604090819020805460ff1916905580519283526001600160a01b03909316908201529081908101611661565b346103065760003660031901126103065761307d3361370b565b600080516020613b308339815191526000526020526130a360ff604060002054166137b6565b600080516020613b70833981519152805460ff60c81b1916600160c81b1790557f748307c5a35a4d1a6ade29e1dd4a34fd81e6183e32dac85d11e57ea49260c875600080a1005b34610306576000366003190112610306576131043361370b565b600080516020613c1083398151915260005260205261312a60ff604060002054166137b6565b600080516020613b70833981519152805460ff60a81b1916600160a81b1790557f1df45a58e6f80f004c66a55bb5ff3b139258cb4eaa98baf1e72105fa5239eaf6600080a1005b34610306576020366003190112610306577f8a4c5cf3cc09d41ad65dff6a70adf0b819eedf473e9f888d7306b6ed5b409a9460206131ad6135aa565b6131b63361370b565b7f931c8e73074924ecdce1f1602777505305e234e4ae359fdf7ed84d5fd0cfdbee60005282526131ed60ff604060002054166137b6565b6131fb60ff61282283613744565b61320481613744565b805460ff191660011790556040516001600160a01b039091168152a1005b346103065760003660031901126103065761323c3361370b565b600080516020613bf083398151915260005260205261326260ff604060002054166137b6565b600080516020613b70833981519152805460ff60a01b191690557f870608ab1026068fb59b0278131a6618ef6559545ddc149029a434805aa67460600080a1005b34610306576020366003190112610306576118706132bf6135aa565b6132c83361370b565b7f905e7c6bceabadb31a2ebbb666d0d6df4dfb3156f376c424680851d38988ea8460005260205261330060ff604060002054166137b6565b7fc4c73bb1419a59406925cfd45c7d8769c4ef9024ed48cbf4179dca4cdf19a35e60406001600160a01b0383166133388115156136bf565b815190815260016020820152a16001600160a01b031660009081527fdd1d6d04e1f24037b02215b0852708bab55d9f1305ee6cb777ad46ae2573bb226020526040902090565b346103065761338c366135d6565b906133963361370b565b7fb048589f9ee6ae43a7d6093c04bc48fc93d622d76009b51a2c566fc7cda84ce76000526020526133ce60ff604060002054166137b6565b7fc0c4d64896b9a9c3ef27ed39674bd2b1f5d2293b8a2429768b0656c9cd03374660408051838152846020820152a17f27436b8f74caac3ab9de71cfb0971b5326ec400f880709c18d86f9d76139d79a557f27436b8f74caac3ab9de71cfb0971b5326ec400f880709c18d86f9d76139d79b55005b34610306576020366003190112610306577f84628267a1cc1152c14981102dd216ad4228835c2b5009cfb273420fd0e49ac8602061347f6135aa565b6134883361370b565b7f931c8e73074924ecdce1f1602777505305e234e4ae359fdf7ed84d5fd0cfdbee60005282526134bf60ff604060002054166137b6565b6134cd60ff611f6283613744565b6134d681613744565b805460ff191690556040516001600160a01b039091168152a1005b34610306576020366003190112610306576125b361350d6135aa565b6135163361370b565b600080516020613b3083398151915260005260205261353c60ff604060002054166137b6565b6040516001600160a01b03821681527f5a4a11544e990107dd21eb0cfb2bc681795302f00d74be6879b854c18e6f2cca90602090a16001600160a01b031660009081527f96f3566354b79280d8f2a61023f0233b9c0b813879455c0242330ff335cff5ab6020526040902090565b600435906001600160a01b038216820361030657565b602435906001600160a01b038216820361030657565b6040906003190112610306576004359060243590565b61012081019081106001600160401b0382111761095b57604052565b90601f801991011681019081106001600160401b0382111761095b57604052565b81601f82011215610306578035906001600160401b03821161095b576040519261365d601f8401601f191660200185613608565b8284526020838301011161030657816000926020809301838601378301015290565b606090600319011261030657600435906024359060443590565b6001600160401b03811161095b5760051b60200190565b60243590811515820361030657565b156136c657565b60405162461bcd60e51b815260206004820152601a60248201527f436f6e74726f6c46616365743a205a65726f20616464726573730000000000006044820152606490fd5b6001600160a01b031660009081527f9a4861c42efbcffcc59654e070976ca1f4a2ce14007af3ccc7b4998e5b0326b56020526040902090565b6001600160a01b031660009081527f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f996020526040902090565b6001600160a01b031660009081527f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f8f6020526040902090565b156137bd57565b60405162461bcd60e51b815260206004820152601c60248201527f4163636573736962696c6974793a204d7573742068617320726f6c65000000006044820152606490fd5b1561380957565b60405162461bcd60e51b815260206004820152602b60248201527f436f6e74726f6c46616365743a204164647265737320697320616c726561647960448201526a081c9959da5cdd195c995960aa1b6064820152608490fd5b7f0e82e3bc6a0f65adfd723bc988cd4fad093e63c62b76ca41e910a3b2adf78f9480548210156138b7576000527fed544540a2bd15a00cfa5958b09606e24500c626700f2574dfaa1732c148f7de0190600090565b634e487b7160e01b600052603260045260246000fd5b156138d457565b60405162461bcd60e51b815260206004820152602760248201527f436f6e74726f6c46616365743a2041646472657373206973206e6f74207265676044820152661a5cdd195c995960ca1b6064820152608490fd5b1561393057565b60405162461bcd60e51b815260206004820152601b60248201527f436f6e74726f6c46616365743a20496e76616c696420696e64657800000000006044820152606490fd5b1561397c57565b60405162461bcd60e51b815260206004820152601e60248201527f436f6e74726f6c46616365743a20486967682077696e646f772074696d6500006044820152606490fd5b90600182811c921680156139f1575b60208310146139db57565b634e487b7160e01b600052602260045260246000fd5b91607f16916139d0565b919082519283825260005b848110613a27575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201613a06565b60ff1660ff81146109715760010190565b80518210156138b75760209160051b010190565b15613a6757565b60405162461bcd60e51b815260206004820152601860248201527f436f6e74726f6c46616365743a20496e76616c696420696400000000000000006044820152606490fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f546001600160a01b03163303613adf57565b60405162461bcd60e51b815260206004820152602260248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60448201526132b960f11b6064820152608490fdfe1effbbff9c66c5e59634f24fe842750c60d18891155c32dd155fc2d661a4c86dddf732565ddd4d1d3a527786b8b1e425a602b603d457c0a999938869f38049b09a4861c42efbcffcc59654e070976ca1f4a2ce14007af3ccc7b4998e5b0326b2316cd9f80e16af2a12ce33cac96aeb1f3125dc040f5be132549ff7c414a113d3316cd9f80e16af2a12ce33cac96aeb1f3125dc040f5be132549ff7c414a113d261c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862af688a4e13cb28e5c12cf045718e469d8f189222cc94e8ffd4225f0703da46a72a164736f6c6343000812000a