0 txs
44 calls
constructor
No constructor.
functions
adapterWhitelist
viewfunction adapterWhitelist(address) view returns (bool)
delay
viewfunction delay() view returns (uint64)
dollar
viewfunction dollar() view returns (address)
dollarIsStableToken
viewfunction dollarIsStableToken() view returns (bool)
etNextDelay
viewfunction etNextDelay() view returns (uint64)
etNextOperator
viewfunction etNextOperator() view returns (uint64)
etNextRevoker
viewfunction etNextRevoker() view returns (uint64)
etNextUpgradeToAndCall
viewfunction etNextUpgradeToAndCall() view returns (uint64)
fee
viewfunction fee() view returns (uint256)
feeToClaim
viewfunction feeToClaim() view returns (uint256)
getActiveOrders
viewfunction getActiveOrders(uint256 startIndex, uint256 pageSize) view returns (tuple[], uint256 activeOrdersCount)
getActiveOrdersByUser
viewfunction getActiveOrdersByUser(address user, uint256 startIndex, uint256 pageSize) view returns (tuple[])
getActiveOrdersLengthByUser
viewfunction getActiveOrdersLengthByUser(address user) view returns (uint256)
getAmountByShare
viewfunction getAmountByShare(uint256 share) view returns (uint256 amount)
getOrder
viewfunction getOrder(uint64 id) view returns (tuple)
getOrdersLength
viewfunction getOrdersLength() view returns (uint256)
getTotalFee
viewfunction getTotalFee(uint256 initAmount, uint256 amountPerTrade) view returns (uint256)
isRebaseToken
viewfunction isRebaseToken() view returns (bool)
legalAccount
viewfunction legalAccount() view returns (address)
MIN_PARAM_SET_DELAY
viewfunction MIN_PARAM_SET_DELAY() view returns (uint64)
minDollarAmount
viewfunction minDollarAmount() view returns (uint256)
minDollarPriceAllowed
viewfunction minDollarPriceAllowed() view returns (uint224)
minter
viewfunction minter() view returns (address)
minTradeInterval
viewfunction minTradeInterval() view returns (uint256)
nextDelay
viewfunction nextDelay() view returns (uint64)
nextImplementation
viewfunction nextImplementation() view returns (address)
nextOperator
viewfunction nextOperator() view returns (address)
nextRevoker
viewfunction nextRevoker() view returns (address)
nextUpgradeToAndCallDataHash
viewfunction nextUpgradeToAndCallDataHash() view returns (bytes32)
operator
viewfunction operator() view returns (address)
orders
viewfunction orders(uint256) view returns (uint64 id, uint64 interval, uint64 lastTradeTime, uint32 status, uint256 dollarInitBalance, uint256 dollarPerTrade, uint256 dollarBalance, uint256 dollarShareInitAmount, uint256 dollarShareBalance, uint256 xaumBalance, uint256 xaumPending, address owner, address receiver)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
revoker
viewfunction revoker() view returns (address)
router
viewfunction router() view returns (address)
stableToken
viewfunction stableToken() view returns (address)
STATUS_ACTIVE
viewfunction STATUS_ACTIVE() view returns (uint32)
STATUS_CANCELED
viewfunction STATUS_CANCELED() view returns (uint32)
STATUS_COMPLETED_WITHOUT_CLAIM
viewfunction STATUS_COMPLETED_WITHOUT_CLAIM() view returns (uint32)
STATUS_COMPLETED_WITHOUT_COLLECT
viewfunction STATUS_COMPLETED_WITHOUT_COLLECT() view returns (uint32)
STATUS_COMPLETED
viewfunction STATUS_COMPLETED() view returns (uint32)
totalShares
viewfunction totalShares() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
userBlacklist
viewfunction userBlacklist(address) view returns (bool)
userOrders
viewfunction userOrders(address, uint256) view returns (uint64)
xaum
viewfunction xaum() view returns (address)
claimAllXAUm
nonpayablefunction claimAllXAUm(uint64 id)
claimFee
nonpayablefunction claimFee(address receiver)
closeOrder
nonpayablefunction closeOrder(address user, uint64 id, address receiver)
closeOrderByOperator
nonpayablefunction closeOrderByOperator(uint64 id)
collectXAUm
nonpayablefunction collectXAUm(uint64 id)
createOrder
nonpayablefunction createOrder(address user, uint256 initDollarAmount, uint256 amountPerTrade, uint64 interval, address receiver)
executeOrder
nonpayablefunction executeOrder(uint64 id, address adapter, bytes data)
executeOrder
nonpayablefunction executeOrder(uint64 id)
executeOrderAndClaim
nonpayablefunction executeOrderAndClaim(uint64 id, address adapter, bytes data)
executeOrderAndClaim
nonpayablefunction executeOrderAndClaim(uint64 id)
initialize
nonpayablefunction initialize(address _minter, address _dollar, bool _isRebaseToken, address _xaum, address _stableToken, address _legalAccount, address _operator, address _owner, address _router, uint64 _delay, uint256 _minDollarAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
requestUpgradeToAndCall
nonpayablefunction requestUpgradeToAndCall(address _newImplementation, bytes _data)
revokeNextDelay
nonpayablefunction revokeNextDelay()
revokeNextOperator
nonpayablefunction revokeNextOperator()
revokeNextRevoker
nonpayablefunction revokeNextRevoker()
revokeNextUpgrade
nonpayablefunction revokeNextUpgrade()
setAdapterWhitelist
nonpayablefunction setAdapterWhitelist(address _adapter, bool isEnabled)
setDCARouter
nonpayablefunction setDCARouter(address _newDCARouter)
setDelay
nonpayablefunction setDelay(uint64 _delay)
setFee
nonpayablefunction setFee(uint256 _fee)
setLegalAccount
nonpayablefunction setLegalAccount(address _legalAccount)
setMinDollarAmount
nonpayablefunction setMinDollarAmount(uint256 _minDollarAmount)
setMinDollarPriceAllowed
nonpayablefunction setMinDollarPriceAllowed(uint224 _minDollarPriceAllowed)
setMinTradeInterval
nonpayablefunction setMinTradeInterval(uint256 minInterval)
setOperator
nonpayablefunction setOperator(address _operator)
setPaused
nonpayablefunction setPaused(bool isPaused)
setRevoker
nonpayablefunction setRevoker(address _revoker)
setUserBlacklist
nonpayablefunction setUserBlacklist(address user, bool inBlacklist)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address _newImplementation, bytes _data) payable
withdrawERC20
nonpayablefunction withdrawERC20(address token, address recipient, uint256 amount)
withdrawERC721
nonpayablefunction withdrawERC721(address token, address recipient, uint256 tokenId)
events
CloseOrder
event CloseOrder(address indexed user, uint64 id, address indexed receiver, uint256 xaumBalance, uint256 dollarBalance)
Initialized
event Initialized(uint64 version)
NewOrder
event NewOrder(address indexed user, uint64 id, uint256 initDollarAmount, uint256 amountPerTrade, uint64 interval, address receiver)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
SetDelayEffected
event SetDelayEffected(uint64 newDelay)
SetDelayRequest
event SetDelayRequest(uint64 oldDelay, uint64 newDelay, uint64 et)
SetOperatorEffected
event SetOperatorEffected(address newAddr)
SetOperatorRequest
event SetOperatorRequest(address oldAddr, address newAddr, uint64 et)
SetRevokerEffected
event SetRevokerEffected(address newAddr)
SetRevokerRequest
event SetRevokerRequest(address oldAddr, address newAddr, uint64 et)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
UpgradeToAndCallRequest
event UpgradeToAndCallRequest(address newImplementation, bytes data)
XAUmClaimByOperator
event XAUmClaimByOperator(address indexed user, uint64 id, uint256 amount, address receiver, bool isOrderFinished)
XaumCollect
event XaumCollect(address indexed user, uint64 id, uint256 xaumAmount)
XaumConvert
event XaumConvert(address indexed user, uint64 id, uint256 dollarDelta, uint256 stableTokenDelta, uint256 xaumAmountOut, uint256 fee)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
CallFailed
error CallFailed(bytes)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
InvalidUpgradeToAndCallData
error InvalidUpgradeToAndCallData()
InvalidUpgradeToAndCallImpl
error InvalidUpgradeToAndCallImpl()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TooEarlyToUpgradeToAndCall
error TooEarlyToUpgradeToAndCall()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
ZeroAddress
error ZeroAddress()
creation bytecode
0x60a06040523060805234801561001457600080fd5b506080516158746200003f60003960008181613e3e01528181613e670152613f1001526158746000f3fe6080604052600436106105735760003560e01c8063715018a6116102ca578063a85c38ef11610179578063b280e6a6116100d6578063d3c3bbd01161008a578063f2fde38b1161006f578063f2fde38b14610fc5578063f887ea4014610fe5578063ff0572d31461100557600080fd5b8063d3c3bbd014610f88578063ddca3f4314610faf57600080fd5b8063c1073302116100bb578063c107330214610f1b578063ccddf0b014610f3b578063cdf9d07c14610f5b57600080fd5b8063b280e6a614610ee6578063b3ab15fb14610efb57600080fd5b8063acbbd9971161012d578063ae8bd78411610112578063ae8bd78414610e69578063b0bb719b14610e90578063b130a9df14610eb057600080fd5b8063acbbd99714610df3578063ad3cb1cc14610e1357600080fd5b8063a9d75b2b1161015e578063a9d75b2b14610d86578063aa6710f214610da6578063aa8aaac114610dc657600080fd5b8063a85c38ef14610d2d578063a86b06e514610d6657600080fd5b80638da5cb5b116102275780639e451a49116101db578063a0941d0c116101c0578063a0941d0c14610cd8578063a67ffbee14610ced578063a769318714610d0d57600080fd5b80639e451a4914610ca3578063a07ac76f14610cc357600080fd5b80639083dd9d1161020c5780639083dd9d14610c4357806392b8075d14610c63578063950e61c614610c8357600080fd5b80638da5cb5b14610be5578063907b9b8b14610c2257600080fd5b80637f4e6e2f1161027e578063843bd65311610263578063843bd65314610b7e578063856652e914610b9e5780638781352d14610bbe57600080fd5b80637f4e6e2f14610b2e57806382641e7f14610b5e57600080fd5b806373dbcc55116102af57806373dbcc5514610ab95780637478015c14610ad95780637c95cdc614610b0057600080fd5b8063715018a614610a8f578063724f27ee14610aa457600080fd5b80633edd054411610426578063570ca7351161038357806369fe0e2d116103375780636ab8fc181161031c5780636ab8fc1814610a445780636d71e64214610a595780636ebc51e114610a6f57600080fd5b806369fe0e2d14610a045780636a42b8f814610a2457600080fd5b80635c975abb116103685780635c975abb1461098a57806364b371ca146109c1578063654e621c146109ef57600080fd5b8063570ca7351461094a5780635c8f7f911461096a57600080fd5b80634f1ef286116103da57806351adeb57116103bf57806351adeb57146108f957806352d1902d1461092057806356f65bee1461093557600080fd5b80634f1ef286146108c65780634fb878d6146108d957600080fd5b80634389cc221161040b5780634389cc221461085c57806344004cc1146108865780634a506553146108a657600080fd5b80633edd05441461081c5780634025feb21461083c57600080fd5b80632a4a58d9116104d457806333b9b15c116104885780633863e35b1161046d5780633863e35b146107c65780633a98ef39146107e65780633abeeb3d146107fc57600080fd5b806333b9b15c1461078557806335dec5d1146107a657600080fd5b80632e3e3ef2116104b95780632e3e3ef2146107105780632f2073451461075057806331c3fa8a1461077057600080fd5b80632a4a58d9146106d05780632bfae270146106f057600080fd5b806316c38b3c1161052b5780631acdbffe116105105780631acdbffe1461067a5780631cfe343a1461069a5780631d9d406a146106ba57600080fd5b806316c38b3c146106205780631aa1e9ed1461064257600080fd5b806309ff18f01161055c57806309ff18f0146105d45780630f24e72a146105f457806311532e771461060a57600080fd5b8063075461721461057857806307c2e16c146105b5575b600080fd5b34801561058457600080fd5b50600554610598906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156105c157600080fd5b506013545b6040519081526020016105ac565b3480156105e057600080fd5b50600054610598906001600160a01b031681565b34801561060057600080fd5b506105c660075481565b34801561061657600080fd5b506105c660015481565b34801561062c57600080fd5b5061064061063b366004614f51565b611025565b005b34801561064e57600080fd5b50600954610662906001600160e01b031681565b6040516001600160e01b0390911681526020016105ac565b34801561068657600080fd5b50610640610695366004614f8a565b611046565b3480156106a657600080fd5b506106406106b5366004614fbc565b61115e565b3480156106c657600080fd5b506105c660085481565b3480156106dc57600080fd5b506106406106eb3660046150a1565b6113b1565b3480156106fc57600080fd5b50600354610598906001600160a01b031681565b34801561071c57600080fd5b5061074061072b3660046150fe565b60166020526000908152604090205460ff1681565b60405190151581526020016105ac565b34801561075c57600080fd5b5061064061076b366004615119565b611420565b34801561077c57600080fd5b50610640611453565b34801561079157600080fd5b5060025461074090600160e01b900460ff1681565b3480156107b257600080fd5b50600d54610598906001600160a01b031681565b3480156107d257600080fd5b506106406107e1366004615150565b6114b5565b3480156107f257600080fd5b506105c660125481565b34801561080857600080fd5b506106406108173660046150fe565b611a6c565b34801561082857600080fd5b506106406108373660046150a1565b611a96565b34801561084857600080fd5b506106406108573660046151a7565b611aee565b34801561086857600080fd5b50610871600181565b60405163ffffffff90911681526020016105ac565b34801561089257600080fd5b506106406108a13660046151a7565b611b7c565b3480156108b257600080fd5b506106406108c13660046151e3565b611b98565b6106406108d43660046151e3565b611c3a565b3480156108e557600080fd5b506106406108f4366004615230565b611d2c565b34801561090557600080fd5b5060025461059890600160401b90046001600160a01b031681565b34801561092c57600080fd5b506105c6611d39565b34801561094157600080fd5b50610871600281565b34801561095657600080fd5b50600b54610598906001600160a01b031681565b34801561097657600080fd5b50600654610598906001600160a01b031681565b34801561099657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610740565b3480156109cd57600080fd5b506109d7610e1081565b6040516001600160401b0390911681526020016105ac565b3480156109fb57600080fd5b50610871600481565b348015610a1057600080fd5b50610640610a1f366004615230565b611d68565b348015610a3057600080fd5b50600a546109d7906001600160401b031681565b348015610a5057600080fd5b50610640611d75565b348015610a6557600080fd5b506105c660115481565b348015610a7b57600080fd5b50610640610a8a3660046150fe565b611d93565b348015610a9b57600080fd5b50610640611dc0565b348015610ab057600080fd5b50610871600581565b348015610ac557600080fd5b50610640610ad4366004615249565b611dd4565b348015610ae557600080fd5b50600a546109d790600160401b90046001600160401b031681565b348015610b0c57600080fd5b50610b20610b1b366004615310565b6120e2565b6040516105ac929190615457565b348015610b3a57600080fd5b50610740610b493660046150fe565b60156020526000908152604090205460ff1681565b348015610b6a57600080fd5b50600e54610598906001600160a01b031681565b348015610b8a57600080fd5b50610640610b99366004614f8a565b6122b2565b348015610baa57600080fd5b506109d7610bb9366004615479565b612308565b348015610bca57600080fd5b50600c546109d790600160a01b90046001600160401b031681565b348015610bf157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610598565b348015610c2e57600080fd5b5060025461074090600160e81b900460ff1681565b348015610c4f57600080fd5b50610640610c5e3660046150fe565b612354565b348015610c6f57600080fd5b50610640610c7e366004614f8a565b6124b3565b348015610c8f57600080fd5b506002546109d7906001600160401b031681565b348015610caf57600080fd5b506105c6610cbe366004615310565b612509565b348015610ccf57600080fd5b50610871600381565b348015610ce457600080fd5b50610640612542565b348015610cf957600080fd5b50610640610d08366004615230565b6125a1565b348015610d1957600080fd5b506105c6610d28366004615230565b6125ae565b348015610d3957600080fd5b50610d4d610d48366004615230565b61263d565b6040516105ac9d9c9b9a999897969594939291906154a3565b348015610d7257600080fd5b50600c54610598906001600160a01b031681565b348015610d9257600080fd5b50600454610598906001600160a01b031681565b348015610db257600080fd5b50610640610dc13660046150fe565b6126d4565b348015610dd257600080fd5b50610de6610de1366004615547565b6126fe565b6040516105ac919061557a565b348015610dff57600080fd5b50610640610e0e366004614f8a565b612955565b348015610e1f57600080fd5b50610e5c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516105ac91906155dd565b348015610e7557600080fd5b50600a546109d790600160801b90046001600160401b031681565b348015610e9c57600080fd5b50610640610eab3660046155f0565b612a16565b348015610ebc57600080fd5b506105c6610ecb3660046150fe565b6001600160a01b031660009081526014602052604090205490565b348015610ef257600080fd5b50610640612a58565b348015610f0757600080fd5b50610640610f163660046150fe565b612aba565b348015610f2757600080fd5b50610640610f36366004614f8a565b612c19565b348015610f4757600080fd5b50610640610f56366004615119565b612ddf565b348015610f6757600080fd5b50610f7b610f76366004614f8a565b612e12565b6040516105ac9190615619565b348015610f9457600080fd5b50600e546109d790600160a01b90046001600160401b031681565b348015610fbb57600080fd5b506105c660105481565b348015610fd157600080fd5b50610640610fe03660046150fe565b612f0c565b348015610ff157600080fd5b50600f54610598906001600160a01b031681565b34801561101157600080fd5b50610640611020366004614f8a565b612f60565b61102d61302a565b801561103e5761103b61309e565b50565b61103b613113565b600b546001600160a01b031633146110985760405162461bcd60e51b815260206004820152601060248201526f2221a0afa727aa2fa7a822a920aa27a960811b60448201526064015b60405180910390fd5b60006013826001600160401b0316815481106110b6576110b6615628565b600091825260208083206008600a90930201918201546001600160a01b031683526015905260409091205490915060ff1615156001146111385760405162461bcd60e51b815260206004820152601460248201527f4443415f4e4f545f494e5f424c41434b4c495354000000000000000000000000604482015260640161108f565b600881015460065461115a9183916001600160a01b039182169186911661316b565b5050565b6111666132f8565b600f546001600160a01b031633146111c05760405162461bcd60e51b815260206004820152600e60248201527f4443415f4e4f545f524f55544552000000000000000000000000000000000000604482015260640161108f565b6001600160a01b03831660009081526015602052604090205460ff1615801561120257506001600160a01b03811660009081526015602052604090205460ff16155b6112415760405162461bcd60e51b815260206004820152601060248201526f1110d057d25397d0931050d2d31254d560821b604482015260640161108f565b60006013836001600160401b03168154811061125f5761125f615628565b600091825260209091206008600a90920201908101549091506001600160a01b038581169116146112d25760405162461bcd60e51b815260206004820152600f60248201527f4e4f545f4f524445525f4f574e45520000000000000000000000000000000000604482015260640161108f565b836001600160a01b0316826001600160a01b03161480611301575060098101546001600160a01b038381169116145b61134d5760405162461bcd60e51b815260206004820152601460248201527f4443415f494e56414c49445f5245434549564552000000000000000000000000604482015260640161108f565b60078101541561139f5760405162461bcd60e51b815260206004820152601460248201527f4443415f4841535f50454e44494e475f5841554d000000000000000000000000604482015260640161108f565b6113ab8185858561316b565b50505050565b600b546001600160a01b031633146113fe5760405162461bcd60e51b815260206004820152601060248201526f2221a0afa727aa2fa7a822a920aa27a960811b604482015260640161108f565b611409838383613354565b611412836137fe565b61141b83613a42565b505050565b61142861302a565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b600d546001600160a01b0316331461149f5760405162461bcd60e51b815260206004820152600f60248201526e2221a0afa727aa2fa922ab27a5a2a960891b604482015260640161108f565b600c805467ffffffffffffffff60a01b19169055565b600f546001600160a01b0316331461150f5760405162461bcd60e51b815260206004820152600e60248201527f4443415f4e4f545f524f55544552000000000000000000000000000000000000604482015260640161108f565b6115176132f8565b6007548310156115695760405162461bcd60e51b815260206004820152601c60248201527f4443415f494e56414c49445f414d4f554e545f5045525f545241444500000000604482015260640161108f565b828410158015611580575061157e8385615654565b155b6115cc5760405162461bcd60e51b815260206004820152601e60248201527f4443415f494e56414c49445f494e49545f444f4c4c41525f414d4f554e540000604482015260640161108f565b600854826001600160401b0316101580156115fa57506008546115f8906001600160401b038416615654565b155b6116465760405162461bcd60e51b815260206004820152601a60248201527f4443415f494e56414c49445f54524144455f494e54455256414c000000000000604482015260640161108f565b6001600160a01b03851660009081526015602052604090205460ff1615801561168857506001600160a01b03811660009081526015602052604090205460ff16155b6116c75760405162461bcd60e51b815260206004820152601060248201526f1110d057d25397d0931050d2d31254d560821b604482015260640161108f565b6116cf614ea8565b6013546001600160401b0390811682526001600160a01b038781166101608401526080830187905260a0830186905290841660208301526000604083015260c082018690528216610180820152600254600160e01b900460ff16156117455761173785613d05565b60e082018190526101008201525b6001606082810182815260138054808501825560009182528551600a9091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090810180546020808a01516040808c0151985163ffffffff16600160c01b0263ffffffff60c01b196001600160401b039a8b16600160801b02167fffffffff000000000000000000000000ffffffffffffffffffffffffffffffff938b16600160401b027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909616988b1698909817949094179190911695909517919091179091556080808901517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09184015560a0808a01517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09285015560c08a01517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09385015560e08a01517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a094850155610100808b01517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0958601556101208b01517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0968601556101408b01517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0978601556101608b01517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a098860180546001600160a01b039283166001600160a01b0319918216179091556101808d01517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a099909701805497831697909116969096179095558f8516808852601485528688208c5181549c8d0182559089529785902060048c04018054988a166003909c1660080290920a9a8b029a890219909716999099179098558851845190871681529182018d90529281018b9052938916948401949094529286169282019290925290917fd88ded3ac25cf132b0baa897f13b9358177defdf903c41bb297056bf71c77133910160405180910390a2505050505050565b611a7461302a565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b03163314611ae35760405162461bcd60e51b815260206004820152601060248201526f2221a0afa727aa2fa7a822a920aa27a960811b604482015260640161108f565b61141b838383613354565b611af661302a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152604482018390528416906323b872dd90606401600060405180830381600087803b158015611b5f57600080fd5b505af1158015611b73573d6000803e3d6000fd5b50505050505050565b611b8461302a565b61141b6001600160a01b0384168383613dd4565b611ba061302a565b600080546001600160a01b0319166001600160a01b03841617905580516020820120600155600a546001600160401b0316611bdb904261567e565b6002805467ffffffffffffffff19166001600160401b03929092169190911790556040517fcc54b42f78b332711d2d2b40bd7edb325a1fef0124753b0689728b7209ca1e2e90611c2e90849084906156a5565b60405180910390a15050565b611c42613e33565b6000546001600160a01b03838116911614611c89576040517f9ab1811500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001548151602083012014611cca576040517fefac8be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160401b0316801580611ceb575042816001600160401b0316115b15611d22576040517f260343ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61141b8383613eea565b611d3461302a565b600855565b6000611d43613f05565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b611d7061302a565b601055565b611d7d61302a565b600e805467ffffffffffffffff60a01b19169055565b611d9b61302a565b601154600454611db8916001600160a01b03909116908390613dd4565b506000601155565b611dc861302a565b611dd26000613f4e565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611e195750825b90506000826001600160401b03166001148015611e355750303b155b905081158015611e43575080155b15611e7a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ea957845468ff00000000000000001916600160401b1785555b611eb289613fbf565b611eba613fd0565b86600a60006101000a8154816001600160401b0302191690836001600160401b031602179055508f600560006101000a8154816001600160a01b0302191690836001600160a01b031602179055508e600260086101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6002601c6101000a81548160ff0219169083151502179055508c600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600460006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a600660006101000a8154816001600160a01b0302191690836001600160a01b0316021790555089600b60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555087600f60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555085600781905550600460009054906101000a90046001600160a01b03166001600160a01b0316600260089054906101000a90046001600160a01b03166001600160a01b03160361208557600280547fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e81b1790555b83156120d057845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050505050565b6060600080836001600160401b038111156120ff576120ff614fff565b60405190808252806020026020018201604052801561213857816020015b612125614ea8565b81526020019060019003908161211d5790505b5090506000855b60135481108015612158575061215586886156cf565b81105b156122a65760006013828154811061217257612172615628565b6000918252602091829020604080516101a081018252600a9390930290910180546001600160401b038082168552600160401b8204811695850195909552600160801b810490941691830191909152600160c01b90920463ffffffff166060820181905260018301546080830152600283015460a0830152600383015460c0830152600483015460e08301526005808401546101008401526006840154610120840152600784015461014084015260088401546001600160a01b03908116610160850152600990940154909316610180830152909250148015906122615750606081015163ffffffff16600214155b15612293578084848151811061227957612279615628565b6020026020010181905250828061228f906156e2565b9350505b508061229e816156e2565b91505061213f565b50909590945092505050565b600b546001600160a01b031633146122ff5760405162461bcd60e51b815260206004820152601060248201526f2221a0afa727aa2fa7a822a920aa27a960811b604482015260640161108f565b61103b816137fe565b6014602052816000526040600020818154811061232457600080fd5b9060005260206000209060049182820401919006600802915091509054906101000a90046001600160401b031681565b61235c61302a565b61236581614003565b600e546001600160401b03600160a01b820416906001600160a01b03838116911614801561239b57506001600160401b03811615155b80156123af575042816001600160401b0316105b1561240257600d80546001600160a01b0319166001600160a01b0384169081179091556040519081527fc1f235bba1c838187a7f50f73c2940cd988836882c74b7dfc478d28a37d79d5890602001611c2e565b600e80546001600160a01b0319166001600160a01b038416179055600a54612433906001600160401b03164261567e565b600e805467ffffffffffffffff60a01b1916600160a01b6001600160401b0393841681029190911791829055600d54604080516001600160a01b039283168152918716602083015291909204909216918101919091527f8a674bc274bfa5b54e4ea4c4831280b18b2ccbb2aadfc7075f9cec0eecd0fb6490606001611c2e565b600b546001600160a01b031633146125005760405162461bcd60e51b815260206004820152601060248201526f2221a0afa727aa2fa7a822a920aa27a960811b604482015260640161108f565b61103b81613a42565b600081600161251882866156cf565b61252291906156fb565b61252c919061570e565b6010546125399190615722565b90505b92915050565b600d546001600160a01b0316331461258e5760405162461bcd60e51b815260206004820152600f60248201526e2221a0afa727aa2fa922ab27a5a2a960891b604482015260640161108f565b6002805467ffffffffffffffff19169055565b6125a961302a565b600755565b6012546002546040516370a0823160e01b8152306004820152600092918491600160401b9091046001600160a01b0316906370a0823190602401602060405180830381865afa158015612605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126299190615739565b6126339190615722565b61253c919061570e565b6013818154811061264d57600080fd5b60009182526020909120600a909102018054600182015460028301546003840154600485015460058601546006870154600788015460088901546009909901546001600160401b03808a169b50600160401b8a0481169a600160801b8b0490911699600160c01b900463ffffffff1698979695949392916001600160a01b0391821691168d565b6126dc61302a565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316600090815260146020908152604080832080548251818502810185019093528083526060949383018282801561278f57602002820191906000526020600020906000905b82829054906101000a90046001600160401b03166001600160401b03168152602001906008019060208260070104928301926001038202915080841161274c5790505b505050505090506000836001600160401b038111156127b0576127b0614fff565b6040519080825280602002602001820160405280156127e957816020015b6127d6614ea8565b8152602001906001900390816127ce5790505b509050845b825181108015612806575061280385876156cf565b81105b1561294957601383828151811061281f5761281f615628565b60200260200101516001600160401b03168154811061284057612840615628565b6000918252602091829020604080516101a081018252600a9390930290910180546001600160401b038082168552600160401b8204811695850195909552600160801b810490941691830191909152600160c01b90920463ffffffff16606082015260018201546080820152600282015460a0820152600382015460c0820152600482015460e082015260058201546101008201526006820154610120820152600782015461014082015260088201546001600160a01b039081166101608301526009909201549091166101808201528261291b88846156fb565b8151811061292b5761292b615628565b60200260200101819052508080612941906156e2565b9150506127ee565b509150505b9392505050565b600b546001600160a01b031633146129a25760405162461bcd60e51b815260206004820152601060248201526f2221a0afa727aa2fa7a822a920aa27a960811b604482015260640161108f565b600254600160e81b900460ff166129fb5760405162461bcd60e51b815260206004820152601f60248201527f4443415f444f4c4c41525f4d5553545f42455f535441424c455f544f4b454e00604482015260640161108f565b61103b81600060405180602001604052806000815250613354565b612a1e61302a565b600980547fffffffff00000000000000000000000000000000000000000000000000000000166001600160e01b0392909216919091179055565b600d546001600160a01b03163314612aa45760405162461bcd60e51b815260206004820152600f60248201526e2221a0afa727aa2fa922ab27a5a2a960891b604482015260640161108f565b600a805467ffffffffffffffff60801b19169055565b612ac261302a565b612acb81614003565b600c546001600160401b03600160a01b820416906001600160a01b038381169116148015612b0157506001600160401b03811615155b8015612b15575042816001600160401b0316105b15612b6857600b80546001600160a01b0319166001600160a01b0384169081179091556040519081527f1fac8e1a48aa1912f53ebcb6e8d81f4f8cdf744982c7aa4aaf0152a30c02696e90602001611c2e565b600c80546001600160a01b0319166001600160a01b038416179055600a54612b99906001600160401b03164261567e565b600c805467ffffffffffffffff60a01b1916600160a01b6001600160401b0393841681029190911791829055600b54604080516001600160a01b039283168152918716602083015291909204909216918101919091527f12b711c994caeaba10a597eb355ca2db4a74639902e3d300f9370caee0da4b0b90606001611c2e565b612c2161302a565b610e106001600160401b0382161015612c7c5760405162461bcd60e51b815260206004820152601360248201527f4443415f44454c41595f544f4f5f534d414c4c00000000000000000000000000604482015260640161108f565b600a54600160801b81046001600160401b0390811691600160401b90048116908316148015612cb357506001600160401b03811615155b8015612cc7575042816001600160401b0316105b15612d1b57600a805467ffffffffffffffff19166001600160401b0384169081179091556040519081527f0ed594aee59a2d00c8a1183779743ed2c0f8e413f761a48b181a72cb86e1a05a90602001611c2e565b600a80546001600160401b03808516600160401b027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff83168117909355612d679281169116174261567e565b600a805467ffffffffffffffff60801b198116600160801b6001600160401b03948516810291821793849055604080519386169286169290921783528685166020840152909204909216908201527f8189ce093e30309b5e2dffeabdf7adf977853585d6b56995e8c8098342f6546f90606001611c2e565b612de761302a565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b612e1a614ea8565b6013826001600160401b031681548110612e3657612e36615628565b6000918252602091829020604080516101a081018252600a9390930290910180546001600160401b038082168552600160401b8204811695850195909552600160801b810490941691830191909152600160c01b90920463ffffffff16606082015260018201546080820152600282015460a0820152600382015460c0820152600482015460e082015260058201546101008201526006820154610120820152600782015461014082015260088201546001600160a01b0390811661016083015260099092015490911661018082015292915050565b612f1461302a565b6001600160a01b038116612f57576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161108f565b61103b81613f4e565b600b546001600160a01b03163314612fad5760405162461bcd60e51b815260206004820152601060248201526f2221a0afa727aa2fa7a822a920aa27a960811b604482015260640161108f565b600254600160e81b900460ff166130065760405162461bcd60e51b815260206004820152601f60248201527f4443415f444f4c4c41525f4d5553545f42455f535441424c455f544f4b454e00604482015260640161108f565b61302181600060405180602001604052806000815250613354565b612500816137fe565b3361305c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611dd2576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161108f565b6130a66132f8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b61311b614043565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336130f5565b8354600160c01b900463ffffffff166001146131c95760405162461bcd60e51b815260206004820152601860248201527f4443415f494e56414c49445f4f524445525f5354415455530000000000000000604482015260640161108f565b6006840154600385015481156131f757600060068701556003546131f7906001600160a01b03168484613dd4565b80156132635760006003870155600254600160e01b900460ff161561324557600586018054600090915561322a816125ae565b9150806012600082825461323e91906156fb565b9091555050505b60025461326390600160401b90046001600160a01b03168483613dd4565b855463ffffffff60c01b19167802000000000000000000000000000000000000000000000000178655613296858561409e565b604080516001600160401b0386168152602081018490529081018290526001600160a01b0380851691908716907f85ca05cab446089db0e769ffee516106e31e578b8751b0c323d1aba7000e0ab89060600160405180910390a3505050505050565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611dd2576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006013846001600160401b03168154811061337257613372615628565b60009182526020909120600a909102018054909150600160c01b900463ffffffff166001146133e35760405162461bcd60e51b815260206004820152601860248201527f4443415f494e56414c49445f4f524445525f5354415455530000000000000000604482015260640161108f565b805460649061340390600160401b90046001600160401b0316605f615752565b61340d919061577d565b81546134299190600160801b90046001600160401b031661567e565b6001600160401b03164210156134815760405162461bcd60e51b815260206004820152601560248201527f4443415f4e4f545f54494d455f544f5f54524144450000000000000000000000604482015260640161108f565b60028181015490548190600160e81b900460ff16613517576001600160a01b03851660009081526016602052604090205460ff1615156001146135065760405162461bcd60e51b815260206004820152601c60248201527f4443415f414441505445525f4e4f545f494e5f57484954454c49535400000000604482015260640161108f565b613511838686614200565b90925090505b6010548082116135695760405162461bcd60e51b815260206004820152601e60248201527f4443415f494e56414c49445f535441424c455f544f4b454e5f44454c54410000604482015260640161108f565b806011600082825461357b91906156cf565b9091555061358b905081836156fb565b9150836003015483116135b757828460030160008282546135ac91906156fb565b909155506135bf9050565b600060038501555b600254600160e01b900460ff16156135f3576135da83614742565b8460050160008282546135ed91906156fb565b90915550505b835467ffffffffffffffff60801b1916600160801b426001600160401b031602178455600554600454613633916001600160a01b039182169116846147f1565b6005546008850154600480546040517f73ab208c0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841692810192909252821660248201526044810185905260009291909116906373ab208c906064016020604051808303816000875af11580156136b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d99190615739565b9050808560070160008282546136ef91906156cf565b9091555050600385015460000361378b57845463ffffffff60c01b1916780300000000000000000000000000000000000000000000000017855560058501541561378b5760058501805460009182905590613749826125ae565b9050816012600082825461375d91906156fb565b90915550506009870154600254613788916001600160a01b03600160401b9092048216911683613dd4565b50505b6008850154604080516001600160401b038b1681526020810187905290810185905260608101839052608081018490526001600160a01b03909116907f6f49bcc9f4019e90eb9a00624687b8d61017a74995df27a7a1e757bd2633ba009060a00160405180910390a25050505050505050565b60006013826001600160401b03168154811061381c5761381c615628565b600091825260209091206008600a909202019081015481549192506001600160a01b031690600160c01b900463ffffffff166001148061386a57508154600160c01b900463ffffffff166003145b6138b65760405162461bcd60e51b815260206004820152601860248201527f4443415f494e56414c49445f4f524445525f5354415455530000000000000000604482015260640161108f565b600082600701541161390a5760405162461bcd60e51b815260206004820152601f60248201527f4443415f494e56414c49445f50454e44494e475f5841554d5f414d4f554e5400604482015260640161108f565b60078201805460009091556005546040517fe35eddb80000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018490529091169063e35eddb890604401600060405180830381600087803b15801561397c57600080fd5b505af1158015613990573d6000803e3d6000fd5b50505050808360060160008282546139a891906156cf565b90915550508254600219600160c01b90910463ffffffff16016139ef57825463ffffffff60c01b191678040000000000000000000000000000000000000000000000001783555b604080516001600160401b0386168152602081018390526001600160a01b038416917f97e7c8d5da2acf0e328ee5cd98a06570d9e294e799d456078fb5296173bdd49e910160405180910390a250505050565b60006013826001600160401b031681548110613a6057613a60615628565b60009182526020909120600a909102018054909150600160c01b900463ffffffff1660011480613a9e57508054600160c01b900463ffffffff166004145b613aea5760405162461bcd60e51b815260206004820152601860248201527f4443415f494e56414c49445f4f524445525f5354415455530000000000000000604482015260640161108f565b6000816006015411613b3e5760405162461bcd60e51b815260206004820152601860248201527f4443415f494e56414c49445f5841554d5f42414c414e43450000000000000000604482015260640161108f565b6008810154600982015460068301546001600160a01b0392831660008181526015602052604090205490939092169160ff16158015613b9657506001600160a01b03821660009081526015602052604090205460ff16155b613bd55760405162461bcd60e51b815260206004820152601060248201526f1110d057d25397d0931050d2d31254d560821b604482015260640161108f565b60006006850155600354613bf3906001600160a01b03168383613dd4565b8354600319600160c01b90910463ffffffff1601613ca057835463ffffffff60c01b19167805000000000000000000000000000000000000000000000000178455613c3e838661409e565b604080516001600160401b0387168152602081018390526001600160a01b0384811682840152600160608301529151918516917f8137a3f187ea4b1f8dd8ccfc62014c318e42e74c2006c11dfa68526f10adafba9181900360800190a2613cfe565b604080516001600160401b0387168152602081018390526001600160a01b0384811682840152600060608301529151918516917f8137a3f187ea4b1f8dd8ccfc62014c318e42e74c2006c11dfa68526f10adafba9181900360800190a25b5050505050565b6002546040516370a0823160e01b81523060048201526000918291600160401b9091046001600160a01b0316906370a0823190602401602060405180830381865afa158015613d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d7c9190615739565b9050601254600003613d92575050601281905590565b613d9c83826156fb565b83601254613daa9190615722565b613db4919061570e565b91508160126000828254613dc891906156cf565b90915550919392505050565b6040516001600160a01b0383811660248301526044820183905261141b91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614894565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480613ecc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316613ec07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611dd25760405163703e46dd60e11b815260040160405180910390fd5b613ef2613e33565b613efb82614910565b61115a8282614918565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611dd25760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b613fc7614a00565b61103b81614a62565b613fd8614a00565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b6001600160a01b03811661103b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611dd2576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0382166000908152601460205260408120905b81548110156113ab57826001600160401b03168282815481106140dd576140dd615628565b6000918252602090912060048204015460039091166008026101000a90046001600160401b0316036141f8578154614117906001906156fb565b81146141b2578154829061412d906001906156fb565b8154811061413d5761413d615628565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b031682828154811061417857614178615628565b90600052602060002090600491828204019190066008026101000a8154816001600160401b0302191690836001600160401b031602179055505b818054806141c2576141c26157a3565b60008281526020902060046000199092019182040180546001600160401b03600860038516026101000a021916905590556113ab565b6001016140b8565b60038301546002808501549054600480546040516370a0823160e01b81523092810192909252600094859490939092600160401b9091046001600160a01b03908116921690859083906370a0823190602401602060405180830381865afa15801561426f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142939190615739565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156142dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143019190615739565b600254909150600090600160e01b900460ff1680156143295750614326866002615722565b87105b1561434d5761433b8c600501546125ae565b6143469060016156cf565b9050614350565b50845b61437c8b600a61436184600b615722565b61436b919061570e565b6001600160a01b0388169190614a6a565b6000808c6001600160a01b03168c60405161439791906157b9565b6000604051808303816000865af19150503d80600081146143d4576040519150601f19603f3d011682016040523d82523d6000602084013e6143d9565b606091505b50915091508161441757806040517fa5fa8d2b00000000000000000000000000000000000000000000000000000000815260040161108f91906155dd565b6040516370a0823160e01b81523060048201526000906001600160a01b038916906370a0823190602401602060405180830381865afa15801561445e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144829190615739565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038916906370a0823190602401602060405180830381865afa1580156144cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144f09190615739565b90506144fc82886156fb565b9c5061450886826156fb565b9b5060008d1161455a5760405162461bcd60e51b815260206004820152601e60248201527f4443415f444f4c4c41525f44454c54415f4d5553545f504f5349544956450000604482015260640161108f565b600254600160e01b900460ff16801561457c57506145798a6002615722565b8b105b156145d657848d11156145d15760405162461bcd60e51b815260206004820152601860248201527f4443415f494e56414c49445f444f4c4c41525f44454c54410000000000000000604482015260640161108f565b614648565b600a6145e38b600b615722565b6145ed919061570e565b8d111580156145fc57508a8d11155b6146485760405162461bcd60e51b815260206004820152601860248201527f4443415f494e56414c49445f444f4c4c41525f44454c54410000000000000000604482015260640161108f565b60008c116146985760405162461bcd60e51b815260206004820152601f60248201527f4443415f494e56414c49445f535441424c455f544f4b454e5f414d4f554e5400604482015260640161108f565b60006dffffffffffffffffffffffffffff8e166146c48e6e0100000000000000000000000000006157d5565b6146ce9190615807565b6009546001600160e01b0391821692501681101561472e5760405162461bcd60e51b815260206004820152601860248201527f4443415f494e56414c49445f444f4c4c41525f50524943450000000000000000604482015260640161108f565b505050505050505050505050935093915050565b6002546040516370a0823160e01b81523060048201526000918291600160401b9091046001600160a01b0316906370a0823190602401602060405180830381865afa158015614795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147b99190615739565b90506147c583826156cf565b836012546147d39190615722565b6147dd919061570e565b91508160126000828254613dc891906156fb565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561485a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061487e9190615739565b90506113ab848461488f85856156cf565b614a6a565b60006148a96001600160a01b03841683614b13565b905080516000141580156148ce5750808060200190518101906148cc9190615821565b155b1561141b576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161108f565b61103b61302a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015614972575060408051601f3d908101601f1916820190925261496f91810190615739565b60015b61499a57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161108f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146149f6576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161108f565b61141b8383614b21565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611dd2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f14614a00565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b03167f095ea7b300000000000000000000000000000000000000000000000000000000179052614ad48482614b77565b6113ab576040516001600160a01b03848116602483015260006044830152614b0991869182169063095ea7b390606401613e01565b6113ab8482614894565b606061253983836000614c1f565b614b2a82614cd5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115614b6f5761141b8282614d4c565b61115a614db9565b6000806000846001600160a01b031684604051614b9491906157b9565b6000604051808303816000865af19150503d8060008114614bd1576040519150601f19603f3d011682016040523d82523d6000602084013e614bd6565b606091505b5091509150818015614c00575080511580614c00575080806020019051810190614c009190615821565b8015614c1657506000856001600160a01b03163b115b95945050505050565b606081471015614c5d576040517fcd78605900000000000000000000000000000000000000000000000000000000815230600482015260240161108f565b600080856001600160a01b03168486604051614c7991906157b9565b60006040518083038185875af1925050503d8060008114614cb6576040519150601f19603f3d011682016040523d82523d6000602084013e614cbb565b606091505b5091509150614ccb868383614df1565b9695505050505050565b806001600160a01b03163b600003614d0b57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161108f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051614d6991906157b9565b600060405180830381855af49150503d8060008114614da4576040519150601f19603f3d011682016040523d82523d6000602084013e614da9565b606091505b5091509150614c16858383614df1565b3415611dd2576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082614e0657614e0182614e66565b61294e565b8151158015614e1d57506001600160a01b0384163b155b15614e5f576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161108f565b508061294e565b805115614e765780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806101a0016040528060006001600160401b0316815260200160006001600160401b0316815260200160006001600160401b03168152602001600063ffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b801515811461103b57600080fd5b600060208284031215614f6357600080fd5b813561294e81614f43565b80356001600160401b0381168114614f8557600080fd5b919050565b600060208284031215614f9c57600080fd5b61253982614f6e565b80356001600160a01b0381168114614f8557600080fd5b600080600060608486031215614fd157600080fd5b614fda84614fa5565b9250614fe860208501614f6e565b9150614ff660408501614fa5565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261502657600080fd5b81356001600160401b038082111561504057615040614fff565b604051601f8301601f19908116603f0116810190828211818310171561506857615068614fff565b8160405283815286602085880101111561508157600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156150b657600080fd5b6150bf84614f6e565b92506150cd60208501614fa5565b915060408401356001600160401b038111156150e857600080fd5b6150f486828701615015565b9150509250925092565b60006020828403121561511057600080fd5b61253982614fa5565b6000806040838503121561512c57600080fd5b61513583614fa5565b9150602083013561514581614f43565b809150509250929050565b600080600080600060a0868803121561516857600080fd5b61517186614fa5565b9450602086013593506040860135925061518d60608701614f6e565b915061519b60808701614fa5565b90509295509295909350565b6000806000606084860312156151bc57600080fd5b6151c584614fa5565b92506151d360208501614fa5565b9150604084013590509250925092565b600080604083850312156151f657600080fd5b6151ff83614fa5565b915060208301356001600160401b0381111561521a57600080fd5b61522685828601615015565b9150509250929050565b60006020828403121561524257600080fd5b5035919050565b60008060008060008060008060008060006101608c8e03121561526b57600080fd5b6152748c614fa5565b9a5061528260208d01614fa5565b995060408c013561529281614f43565b98506152a060608d01614fa5565b97506152ae60808d01614fa5565b96506152bc60a08d01614fa5565b95506152ca60c08d01614fa5565b94506152d860e08d01614fa5565b93506152e76101008d01614fa5565b92506152f66101208d01614f6e565b91506101408c013590509295989b509295989b9093969950565b6000806040838503121561532357600080fd5b50508035926020909101359150565b80516001600160401b03168252602081015161535960208401826001600160401b03169052565b50604081015161537460408401826001600160401b03169052565b50606081015161538c606084018263ffffffff169052565b506080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201518184015250610120808201518184015250610140808201518184015250610160808201516153f4828501826001600160a01b03169052565b5050610180818101516001600160a01b038116848301526113ab565b60008151808452602080850194506020840160005b8381101561544c57615438878351615332565b6101a0969096019590820190600101615425565b509495945050505050565b60408152600061546a6040830185615410565b90508260208301529392505050565b6000806040838503121561548c57600080fd5b61549583614fa5565b946020939093013593505050565b60006101a0820190506001600160401b038f1682526001600160401b038e1660208301526001600160401b038d16604083015263ffffffff8c1660608301528a60808301528960a08301528860c08301528760e08301528661010083015285610120830152846101408301526155256101608301856001600160a01b03169052565b6001600160a01b0383166101808301529e9d5050505050505050505050505050565b60008060006060848603121561555c57600080fd5b61556584614fa5565b95602085013595506040909401359392505050565b6020815260006125396020830184615410565b60005b838110156155a8578181015183820152602001615590565b50506000910152565b600081518084526155c981602086016020860161558d565b601f01601f19169290920160200192915050565b60208152600061253960208301846155b1565b60006020828403121561560257600080fd5b81356001600160e01b038116811461294e57600080fd5b6101a0810161253c8284615332565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826156635761566361563e565b500690565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821601908082111561569e5761569e615668565b5092915050565b6001600160a01b03831681526040602082015260006156c760408301846155b1565b949350505050565b8082018082111561253c5761253c615668565b6000600182016156f4576156f4615668565b5060010190565b8181038181111561253c5761253c615668565b60008261571d5761571d61563e565b500490565b808202811582820484141761253c5761253c615668565b60006020828403121561574b57600080fd5b5051919050565b6001600160401b0381811683821602808216919082811461577557615775615668565b505092915050565b60006001600160401b03808416806157975761579761563e565b92169190910492915050565b634e487b7160e01b600052603160045260246000fd5b600082516157cb81846020870161558d565b9190910192915050565b6001600160e01b038281168282168181028316929181158285048214176157fe576157fe615668565b50505092915050565b60006001600160e01b03808416806157975761579761563e565b60006020828403121561583357600080fd5b815161294e81614f4356fea2646970667358221220cc8aa7d763f50d8c7ed8d455b180b3aadffb634fa12f428b8edfa1a1c018c14d64736f6c63430008180033