0 txs
18 calls
constructor
No constructor.
functions
accessControl
viewfunction accessControl() view returns (address)
BLACKLIST_OPERATOR_ROLE
viewfunction BLACKLIST_OPERATOR_ROLE() view returns (bytes32)
BLACKLISTED_ROLE
viewfunction BLACKLISTED_ROLE() view returns (bytes32)
currentRequestId
viewfunction currentRequestId() view returns (uint256 _value)
dailyLimits
viewfunction dailyLimits(uint256) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
feeReceiver
viewfunction feeReceiver() view returns (address)
fiatAdditionalFee
viewfunction fiatAdditionalFee() view returns (uint256)
fiatFlatFee
viewfunction fiatFlatFee() view returns (uint256)
fnPaused
viewfunction fnPaused(bytes4) view returns (bool)
getPaymentTokens
viewfunction getPaymentTokens() view returns (address[])
GREENLIST_OPERATOR_ROLE
viewfunction GREENLIST_OPERATOR_ROLE() view returns (bytes32)
GREENLISTED_ROLE
viewfunction GREENLISTED_ROLE() view returns (bytes32)
greenlistedRole
viewfunction greenlistedRole() view returns (bytes32)
greenlistEnabled
viewfunction greenlistEnabled() view returns (bool)
greenlistTogglerRole
viewfunction greenlistTogglerRole() view returns (bytes32)
instantDailyLimit
viewfunction instantDailyLimit() view returns (uint256)
instantFee
viewfunction instantFee() view returns (uint256)
isFreeFromMinAmount
viewfunction isFreeFromMinAmount(address) view returns (bool)
liquidityProvider
viewfunction liquidityProvider() view returns (address)
M_HYPER_BTC_CUSTOM_AGGREGATOR_FEED_ADMIN_ROLE
viewfunction M_HYPER_BTC_CUSTOM_AGGREGATOR_FEED_ADMIN_ROLE() view returns (bytes32)
M_HYPER_BTC_DEPOSIT_VAULT_ADMIN_ROLE
viewfunction M_HYPER_BTC_DEPOSIT_VAULT_ADMIN_ROLE() view returns (bytes32)
M_HYPER_BTC_REDEMPTION_VAULT_ADMIN_ROLE
viewfunction M_HYPER_BTC_REDEMPTION_VAULT_ADMIN_ROLE() view returns (bytes32)
MANUAL_FULLFILMENT_TOKEN
viewfunction MANUAL_FULLFILMENT_TOKEN() view returns (address)
MAX_UINT
viewfunction MAX_UINT() view returns (uint256)
minAmount
viewfunction minAmount() view returns (uint256)
minFiatRedeemAmount
viewfunction minFiatRedeemAmount() view returns (uint256)
mTbillRedemptionVault
viewfunction mTbillRedemptionVault() view returns (address)
mToken
viewfunction mToken() view returns (address)
mTokenDataFeed
viewfunction mTokenDataFeed() view returns (address)
ONE_HUNDRED_PERCENT
viewfunction ONE_HUNDRED_PERCENT() view returns (uint256)
pauseAdminRole
viewfunction pauseAdminRole() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
redeemRequests
viewfunction redeemRequests(uint256) view returns (address sender, address tokenOut, uint8 status, uint256 amountMToken, uint256 mTokenRate, uint256 tokenOutRate)
requestRedeemer
viewfunction requestRedeemer() view returns (address)
sanctionsList
viewfunction sanctionsList() view returns (address)
sanctionsListAdminRole
viewfunction sanctionsListAdminRole() view returns (bytes32)
STABLECOIN_RATE
viewfunction STABLECOIN_RATE() view returns (uint256)
tokensConfig
viewfunction tokensConfig(address) view returns (address dataFeed, uint256 fee, uint256 allowance, bool stable)
tokensReceiver
viewfunction tokensReceiver() view returns (address)
variationTolerance
viewfunction variationTolerance() view returns (uint256)
vaultRole
purefunction vaultRole() pure returns (bytes32)
waivedFeeRestriction
viewfunction waivedFeeRestriction(address) view returns (bool)
addPaymentToken
nonpayablefunction addPaymentToken(address token, address dataFeed, uint256 tokenFee, uint256 allowance, bool stable)
addWaivedFeeAccount
nonpayablefunction addWaivedFeeAccount(address account)
approveRequest
nonpayablefunction approveRequest(uint256 requestId, uint256 newMTokenRate)
changeTokenAllowance
nonpayablefunction changeTokenAllowance(address token, uint256 allowance)
changeTokenFee
nonpayablefunction changeTokenFee(address token, uint256 fee)
freeFromMinAmount
nonpayablefunction freeFromMinAmount(address user, bool enable)
initialize
nonpayablefunction initialize(address _ac, tuple _mTokenInitParams, tuple _receiversInitParams, tuple _instantInitParams, address _sanctionsList, uint256 _variationTolerance, uint256 _minAmount, tuple _fiatRedemptionInitParams, address _requestRedeemer, address _mTbillRedemptionVault, address _liquidityProvider)
initialize
nonpayablefunction initialize(address _ac, tuple _mTokenInitParams, tuple _receiversInitParams, tuple _instantInitParams, address _sanctionsList, uint256 _variationTolerance, uint256 _minAmount, tuple _fiatRedemptionInitParams, address _requestRedeemer)
pause
nonpayablefunction pause()
pauseFn
nonpayablefunction pauseFn(bytes4 fn)
redeemFiatRequest
nonpayablefunction redeemFiatRequest(uint256 amountMTokenIn) returns (uint256)
redeemInstant
nonpayablefunction redeemInstant(address tokenOut, uint256 amountMTokenIn, uint256 minReceiveAmount, address recipient)
redeemInstant
nonpayablefunction redeemInstant(address tokenOut, uint256 amountMTokenIn, uint256 minReceiveAmount)
redeemRequest
nonpayablefunction redeemRequest(address tokenOut, uint256 amountMTokenIn, address recipient) returns (uint256)
redeemRequest
nonpayablefunction redeemRequest(address tokenOut, uint256 amountMTokenIn) returns (uint256)
rejectRequest
nonpayablefunction rejectRequest(uint256 requestId)
removePaymentToken
nonpayablefunction removePaymentToken(address token)
removeWaivedFeeAccount
nonpayablefunction removeWaivedFeeAccount(address account)
safeApproveRequest
nonpayablefunction safeApproveRequest(uint256 requestId, uint256 newMTokenRate)
safeBulkApproveRequest
nonpayablefunction safeBulkApproveRequest(uint256[] requestIds, uint256 newOutRate)
safeBulkApproveRequest
nonpayablefunction safeBulkApproveRequest(uint256[] requestIds)
safeBulkApproveRequestAtSavedRate
nonpayablefunction safeBulkApproveRequestAtSavedRate(uint256[] requestIds)
setFeeReceiver
nonpayablefunction setFeeReceiver(address receiver)
setFiatAdditionalFee
nonpayablefunction setFiatAdditionalFee(uint256 newFee)
setFiatFlatFee
nonpayablefunction setFiatFlatFee(uint256 feeInMToken)
setGreenlistEnable
nonpayablefunction setGreenlistEnable(bool enable)
setInstantDailyLimit
nonpayablefunction setInstantDailyLimit(uint256 newInstantDailyLimit)
setInstantFee
nonpayablefunction setInstantFee(uint256 newInstantFee)
setLiquidityProvider
nonpayablefunction setLiquidityProvider(address provider)
setMinAmount
nonpayablefunction setMinAmount(uint256 newAmount)
setMinFiatRedeemAmount
nonpayablefunction setMinFiatRedeemAmount(uint256 newValue)
setRequestRedeemer
nonpayablefunction setRequestRedeemer(address redeemer)
setSanctionsList
nonpayablefunction setSanctionsList(address newSanctionsList)
setSwapperVault
nonpayablefunction setSwapperVault(address newVault)
setTokensReceiver
nonpayablefunction setTokensReceiver(address receiver)
setVariationTolerance
nonpayablefunction setVariationTolerance(uint256 tolerance)
unpause
nonpayablefunction unpause()
unpauseFn
nonpayablefunction unpauseFn(bytes4 fn)
withdrawToken
nonpayablefunction withdrawToken(address token, uint256 amount, address withdrawTo)
events
AddPaymentToken
event AddPaymentToken(address indexed caller, address indexed token, address indexed dataFeed, uint256 fee, uint256 allowance, bool stable)
AddWaivedFeeAccount
event AddWaivedFeeAccount(address indexed account, address indexed caller)
ApproveRequest
event ApproveRequest(uint256 indexed requestId, uint256 newMTokenRate)
ChangeTokenAllowance
event ChangeTokenAllowance(address indexed token, address indexed caller, uint256 allowance)
ChangeTokenFee
event ChangeTokenFee(address indexed token, address indexed caller, uint256 fee)
FreeFromMinAmount
event FreeFromMinAmount(address indexed user, bool enable)
Initialized
event Initialized(uint8 version)
Paused
event Paused(address account)
PauseFn
event PauseFn(address indexed caller, bytes4 fn)
RedeemInstant
event RedeemInstant(address indexed user, address indexed tokenOut, uint256 amount, uint256 feeAmount, uint256 amountTokenOut)
RedeemInstantWithCustomRecipient
event RedeemInstantWithCustomRecipient(address indexed user, address indexed tokenOut, address recipient, uint256 amount, uint256 feeAmount, uint256 amountTokenOut)
RedeemRequest
event RedeemRequest(uint256 indexed requestId, address indexed user, address indexed tokenOut, uint256 amountMTokenIn, uint256 feeAmount)
RedeemRequestWithCustomRecipient
event RedeemRequestWithCustomRecipient(uint256 indexed requestId, address indexed user, address indexed tokenOut, address recipient, uint256 amountMTokenIn, uint256 feeAmount)
RejectRequest
event RejectRequest(uint256 indexed requestId, address indexed user)
RemovePaymentToken
event RemovePaymentToken(address indexed token, address indexed caller)
RemoveWaivedFeeAccount
event RemoveWaivedFeeAccount(address indexed account, address indexed caller)
SafeApproveRequest
event SafeApproveRequest(uint256 indexed requestId, uint256 newMTokenRate)
SetFeeReceiver
event SetFeeReceiver(address indexed caller, address indexed reciever)
SetFiatAdditionalFee
event SetFiatAdditionalFee(address indexed caller, uint256 newfee)
SetFiatFlatFee
event SetFiatFlatFee(address indexed caller, uint256 feeInMToken)
SetGreenlistEnable
event SetGreenlistEnable(address indexed sender, bool enable)
SetInstantDailyLimit
event SetInstantDailyLimit(address indexed caller, uint256 newLimit)
SetInstantFee
event SetInstantFee(address indexed caller, uint256 newFee)
SetLiquidityProvider
event SetLiquidityProvider(address indexed caller, address indexed provider)
SetMinAmount
event SetMinAmount(address indexed caller, uint256 newAmount)
SetMinFiatRedeemAmount
event SetMinFiatRedeemAmount(address indexed caller, uint256 newMinAmount)
SetRequestRedeemer
event SetRequestRedeemer(address indexed caller, address redeemer)
SetSanctionsList
event SetSanctionsList(address indexed caller, address indexed newSanctionsList)
SetSwapperVault
event SetSwapperVault(address indexed caller, address indexed vault)
SetTokensReceiver
event SetTokensReceiver(address indexed caller, address indexed reciever)
SetVariationTolerance
event SetVariationTolerance(address indexed caller, uint256 newTolerance)
Unpaused
event Unpaused(address account)
UnpauseFn
event UnpauseFn(address indexed caller, bytes4 fn)
WithdrawToken
event WithdrawToken(address indexed caller, address indexed token, address indexed withdrawTo, uint256 amount)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6150c680620000f36000396000f3fe608060405234801561001057600080fd5b50600436106104965760003560e01c8063868bf3c511610262578063c3b6f93911610151578063db74d8b5116100ce578063e85ba3e911610092578063e85ba3e914610afc578063eaf896fd14610b62578063ec571c6a14610b6a578063efdcd97414610b7e578063f41759e714610b91578063f5d46c5114610ba457600080fd5b8063db74d8b514610ab1578063dd0081c714610ac4578063e428877e14610acd578063e5b5019a14610ae0578063e624c4bc14610ae957600080fd5b8063d5f73f5c11610115578063d5f73f5c14610a53578063d7fd2bae14610a66578063d9fbce8114610a8a578063daddcb1614610637578063db6c68e314610a9e57600080fd5b8063c3b6f93914610a0d578063c47d51be14610a21578063ca5e553e14610a2b578063cabccc7f14610637578063d35780b414610a4057600080fd5b8063a0c74afc116101df578063ad9e5649116101a3578063ad9e56491461093e578063b3f0067414610951578063bbae408614610965578063bc979af61461098b578063bfc2d46a146109fa57600080fd5b8063a0c74afc146108f3578063a217fddf14610906578063a3ece8931461090e578063a512542114610918578063a8f9a71d1461092b57600080fd5b80638b53f75e116102265780638b53f75e1461089857806396f3373f146108ab578063978ff560146108d25780639af40265146108e15780639b2cb5d8146108e957600080fd5b8063868bf3c51461082557806388a6de681461084c578063897b06371461085f57806389cbaae6146108725780638a0ae6151461088557600080fd5b80633ccdbb28116103895780636254afb61161030657806373b7f873116102ca57806373b7f873146107c657806373e9e01f146107d9578063769bc79c146107ed5780637af5ca99146108005780638456cb591461080a57806385ab2c131461081257600080fd5b80636254afb61461074d57806362b199c5146107615780636957463a146107885780636dc69e031461079b5780637192de4b146107bc57600080fd5b80635300b4ba1161034d5780635300b4ba146106e9578063563b1dbf146107105780635ae2bfdb146107235780635b8bec551461072e5780635c975abb1461074257600080fd5b80633ccdbb28146106955780633f4ba83a146106a8578063476abc76146106b057806349dc5e8d146106c35780634a5971eb146106d657600080fd5b80631fa1e8d41161041757806334c24489116103db57806334c244891461063f5780633733337d146106525780633807be7d146106655780633972183c1461067857806339dac34d1461068257600080fd5b80631fa1e8d4146105ea57806327abf518146105fe5780632c0a90a9146106115780632d7788db1461062457806332b30cce1461063757600080fd5b806315b9598a1161045e57806315b9598a1461055657806316683aa51461057d578063191f3a3e146105925780631a9462241461059c5780631ed41163146105c357600080fd5b8063042da5ee1461049b5780630b5a57bd146104d4578063105ed2b2146104f757806313007d551461050457806315571a0414610535575b600080fd5b6104bf6104a9366004614782565b61016b6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6104bf6104e236600461479f565b60976020526000908152604090205460ff1681565b60fc546104bf9060ff1681565b60005461051d906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016104cb565b6105486105433660046147c9565b610bb7565b6040519081526020016104cb565b6105487f77c5b782690f31cd39b1abf2448215259a688a75920040c399d96a676bd1999d81565b61059061058b366004614782565b610cbb565b005b6105486101a45481565b6105487fa8a5d84b506c7f678f2cc98f457f4eac3c3d6663b76db30e8cbb4b7665a4de3581565b6105487fd2576bd6a4c5558421de15cb8ecdf4eb3282aac06b94d4f004e8cd0d00f3ebd881565b6101655461051d906001600160a01b031681565b61059061060c366004614819565b610d71565b61059061061f366004614836565b610e16565b610590610632366004614858565b610e6d565b610548610f75565b61059061064d366004614858565b610f84565b61059061066036600461479f565b610fd2565b61059061067336600461479f565b61106e565b6105486101675481565b610590610690366004614871565b61112e565b6105906106a33660046147c9565b6111f5565b610590611270565b6105906106be366004614782565b611285565b6105906106d1366004614782565b6112e8565b6105906106e43660046148d4565b611340565b6105487f2fdc6683bc8d03effec5b41d3834f28bd219e06ca0a6a26fc737e44b1c7889ff81565b61059061071e366004614858565b61141c565b610162546105489081565b61020d5461051d906001600160a01b031681565b60655460ff166104bf565b6101645461051d906001600160a01b031681565b6105487f548c7f0307ab2a7ea894e5c7e8c5353cc750bb9385ee2e945f189a9a83daa8ed81565b610590610796366004614858565b61145f565b6105486107a9366004614858565b6101686020526000908152604090205481565b61054861016a5481565b6105906107d4366004614858565b6114e3565b6101a75461051d906001600160a01b031681565b6105906107fb366004614858565b611531565b6105486101a35481565b610590611574565b61059061082036600461497d565b611587565b6105487f2e55e4462941cb91f5ff782032797a0cbda0aa6618f1558ba5b912d781b45be181565b61059061085a366004614836565b611685565b61059061086d366004614858565b6116d1565b610590610880366004614782565b611714565b6105906108933660046149c7565b6117cf565b6105906108a63660046149f3565b611897565b6105487faed1dfcb561f850481cdb3d35a3076d203b3bf6785bb0e8b8a52f608d0f8298481565b610548670de0b6b3a764000081565b61051d600081565b61054861016f5481565b610590610901366004614a74565b61196f565b610548600081565b6105486101a55481565b610590610926366004614782565b61198b565b610590610939366004614782565b611a4a565b61059061094c366004614858565b611ab1565b6101695461051d906001600160a01b031681565b7fd2576bd6a4c5558421de15cb8ecdf4eb3282aac06b94d4f004e8cd0d00f3ebd8610548565b6109ce610999366004614782565b61016e6020526000908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff1684565b604080516001600160a01b039095168552602085019390935291830152151560608201526080016104cb565b610548610a083660046149c7565b611aff565b6101635461051d906001600160a01b031681565b6105486101665481565b610a33611be5565b6040516104cb9190614ab6565b610590610a4e366004614b03565b611bf2565b610548610a61366004614858565b611d18565b6104bf610a74366004614782565b6101706020526000908152604090205460ff1681565b61020c5461051d906001600160a01b031681565b610590610aac366004614a74565b611dcf565b610590610abf3660046149c7565b611eb5565b61054861271081565b610590610adb366004614782565b611f28565b61054860001981565b610590610af7366004614782565b611fe0565b610b50610b0a366004614858565b6101a660205260009081526040902080546001820154600283015460038401546004909401546001600160a01b039384169493831693600160a01b90930460ff16929086565b6040516104cb96959493929190614bea565b61054861209b565b61012f5461051d906001600160a01b031681565b610590610b8c366004614782565b6120bf565b610590610b9f366004614c43565b612122565b610590610bb2366004614ca2565b612254565b60007f15571a04db30fd97c63b5be63c944e52a0a9a2af487d66beb3260a16c32f9bc2610be261230a565b6001600160e01b0319811660009081526097602052604090205460ff1615610c255760405162461bcd60e51b8152600401610c1c90614cee565b60405180910390fd5b610c2e33612350565b6001600160a01b0383163314610c4757610c4783612350565b600080610c578787600088612444565b8051604080516001600160a01b038a81168252602082018c9052818301939093529051939550919350891691339185917f691cd372bb63a5126a324513b634040d0ba3747c0a625207d99b6ba302c51a239181900360600190a45095945050505050565b610ccc610cc661209b565b336126cd565b6001600160a01b038116600090815261016b602052604090205460ff16610d255760405162461bcd60e51b815260206004820152600d60248201526c13558e881b9bdd08199bdd5b99609a1b6044820152606401610c1c565b6001600160a01b038116600081815261016b6020526040808220805460ff19169055513392917f57c4a95f59c12f0d4d846443c2d54c7d97f1505080199522fca2819e65213ca291a350565b610d7a3361279b565b60fc5460ff1615158115151415610dcc5760405162461bcd60e51b8152602060048201526016602482015275474c3a2073616d6520656e61626c652073746174757360501b6044820152606401610c1c565b60fc805460ff191682151590811790915560405190815233907fa8434267b880129bc4ba30249aa4a2ac349e8997c699282a9f70562f0f152f54906020015b60405180910390a250565b610e21610cc661209b565b610e2e82826000806127ae565b50817ff7d1fde87f32720fc30ce6847e0aae77e640b59bfac41b11b270358ccfa7a0ac82604051610e6191815260200190565b60405180910390a25050565b610e78610cc661209b565b60008181526101a660209081526040808320815160c08101835281546001600160a01b039081168252600183015490811694820194909452929091830190600160a01b900460ff166002811115610ed157610ed1614bd4565b6002811115610ee257610ee2614bd4565b815260200160028201548152602001600382015481526020016004820154815250509050610f1881600001518260400151612a3e565b60008281526101a66020526040808220600101805460ff60a01b1916600160a11b179055825190516001600160a01b039091169184917ece63cc55966b103e4f4cb39f3426cb91718ad4f8eb4ad08c14a7ee749d81579190a35050565b6000610f7f61209b565b905090565b610f8f610cc661209b565b610f9a816001612aed565b61016a81905560405181815233907f018be394ba93a0dbca235443cfdc7173b2479180ad766083ce05199fbf3fc62490602001610e0b565b610fdd610cc6610f75565b6001600160e01b0319811660009081526097602052604090205460ff16156110175760405162461bcd60e51b8152600401610c1c90614cee565b6001600160e01b03198116600081815260976020908152604091829020805460ff19166001179055905191825233917f2278e547293e53a66144c1743877f8388ac3101bd21cfd7c7f4ce8c15c14f5c19101610e0b565b611079610cc6610f75565b6001600160e01b0319811660009081526097602052604090205460ff166110da5760405162461bcd60e51b815260206004820152601560248201527414185d5cd8589b194e88199b881d5b9c185d5cd959605a1b6044820152606401610c1c565b6001600160e01b03198116600081815260976020908152604091829020805460ff19169055905191825233917f929135cc6324f958693bb5f24a4dbc226a83c721523fc2785545019a3423b2d79101610e0b565b611139610cc661209b565b6001600160a01b0382166000908152610170602052604090205460ff161515811515141561119c5760405162461bcd60e51b815260206004820152601060248201526f44563a20616c7265616479206672656560801b6044820152606401610c1c565b6001600160a01b03821660008181526101706020908152604091829020805460ff191685151590811790915591519182527f80f6f2f8801c6ac8fc60bf218b44fde97744d8709f69281972ec5557c10226cc9101610e61565b611200610cc661209b565b6112146001600160a01b0384168284612b6d565b806001600160a01b0316836001600160a01b0316336001600160a01b03167f9ca7c1e047552a8048d924a5a8d3c150eb861086a72a9100e5f19d1176c1b7468560405161126391815260200190565b60405180910390a4505050565b61127b610cc6610f75565b611283612bd0565b565b611290610cc661209b565b61129b816001612c22565b61016580546001600160a01b0319166001600160a01b03831690811790915560405133907fdb5a411e1a379f981ff6bc5284aa2c2522a9b8fd33a9db9ca19b34006cefbe9c90600090a350565b6112f3610cc6610f75565b61012f80546001600160a01b0319166001600160a01b03831690811790915560405133907f7f0c791852a03e270d4c2b78bbd4b959bca234de8d1ccf27eee03afaeafe63c490600090a350565b600054610100900460ff16158080156113605750600054600160ff909116105b8061137a5750303b15801561137a575060005460ff166001145b6113965760405162461bcd60e51b8152600401610c1c90614d1b565b6000805460ff1916600117905580156113b9576000805461ff0019166101001790555b6113ca8a8a8a8a8a8a8a8a8a612cb8565b8015611410576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b611427610cc661209b565b6101a581905560405181815233907f72bae0b4c0979f93d77dce748bd8dfbc89d0f1cd524eee95367e3d2ce5eca93f90602001610e0b565b61146a610cc661209b565b600081116114ab5760405162461bcd60e51b815260206004820152600e60248201526d4d563a206c696d6974207a65726f60901b6044820152606401610c1c565b61016781905560405181815233907f5e8309fc6b2360e7438bc53790b00913395fffa870f39043fe63ddc8a438a9b290602001610e0b565b6114ee610cc661209b565b6114f9816000612aed565b6101a481905560405181815233907fa627d2a34207df740c6b90691350e2a762296cbf59affeb2282e6a54d631d4db90602001610e0b565b61153c610cc661209b565b6101a381905560405181815233907f8855fe6f9cbc4052017b3546fa14e167c5af2daad7f1c64db7f897fbcfb657b090602001610e0b565b61157f610cc6610f75565b611283612d47565b7f85ab2c1384c32949856b8251e03c48dafd9a1c9e9661d6ee6d38a46b7a508daa6115b061230a565b6001600160e01b0319811660009081526097602052604090205460ff16156115ea5760405162461bcd60e51b8152600401610c1c90614cee565b6115f333612350565b6001600160a01b038216331461160c5761160c82612350565b60008061161b87878787612d84565b8151604080516001600160a01b038981168252602082018c905291810192909252606082018390529294509092509088169033907f4fd0e2f3f27549d8d0c242f7193eaa0f61546e887fec39e69dfbff6b2384a4c39060800160405180910390a350505050505050565b611690610cc661209b565b61169e8282600160006127ae565b50817f03ea09e71742c9c754c9746b3e671ecb27fc372e3d29c31bac0192458ffd9d4b82604051610e6191815260200190565b6116dc610cc661209b565b61016f81905560405181815233907f57e764c1fef224e74706b109734513889970db6f1dde107b1bda66e10d80ca9b90602001610e0b565b61171f610cc661209b565b61020c546001600160a01b03828116911614156117775760405162461bcd60e51b815260206004820152601660248201527526a92b299d1030b63932b0b23c90383937bb34b232b960511b6044820152606401610c1c565b611782816001612c22565b61020c80546001600160a01b0319166001600160a01b03831690811790915560405133907fd081462190bc4f588c3e60685e37e27b800f5ac8b62c3edd7eecba5d1cecb9d590600090a350565b6117da610cc661209b565b6001600160a01b038216156117f2576117f28261315b565b600081116118375760405162461bcd60e51b81526020600482015260126024820152714d563a207a65726f20616c6c6f77616e636560701b6044820152606401610c1c565b6001600160a01b038216600081815261016e602052604090819020600201839055513391907ff7273742887a46d8b97d83d1d12b6d8d8e6d21d814072369e2f4b355690221d79061188b9085815260200190565b60405180910390a35050565b7f8b53f75ebd6e3af54b2d42f7b3f6d41d997973b4f29dcd155e6a81f98c0f7d5a6118c061230a565b6001600160e01b0319811660009081526097602052604090205460ff16156118fa5760405162461bcd60e51b8152600401610c1c90614cee565b61190333612350565b60008061191286868633612d84565b8151604080518981526020810192909252810182905291935091506001600160a01b0387169033907f1af12536d161c2c30ad907b0abe442f94c4a7824f2463585b3fc893275247cce9060600160405180910390a3505050505050565b60006119796131ad565b9050611986838383612254565b505050565b611996610cc661209b565b6119a261016c8261320c565b6119df5760405162461bcd60e51b815260206004820152600e60248201526d4d563a206e6f742065786973747360901b6044820152606401610c1c565b6001600160a01b038116600081815261016e602052604080822080546001600160a01b03191681556001810183905560028101839055600301805460ff19169055513392917f652fa2f5d587d3f1c189df0081b7bf3121f47d51d5471bf58d7d2c8a084894c391a350565b611a55610cc661209b565b611a60816000612c22565b6101a780546001600160a01b0319166001600160a01b03831690811790915560405190815233907f5059e224ac539671fe0261fc6672c365607aa98da29c849726ac5956902221b490602001610e0b565b611abc610cc661209b565b611ac7816000612aed565b61016681905560405181815233907f45acc8bd6ebd6fbb59ce049b682c124aeccc93c468fcf60fecf61340e86e79d390602001610e0b565b60007fbfc2d46a919432a5240e2d1b08da2f7ce0add499a19be62446ee561d32e12e22611b2a61230a565b6001600160e01b0319811660009081526097602052604090205460ff1615611b645760405162461bcd60e51b8152600401610c1c90614cee565b611b6d33612350565b600080611b7d8686600033612444565b91509150856001600160a01b0316336001600160a01b0316837f55ba94d231fa70a45e82b0a1c6a60ef72e41bb2455385128ee5cf8d98c0c1c0e888560000151604051611bd4929190918252602082015260400190565b60405180910390a450949350505050565b6060610f7f61016c61322a565b600054610100900460ff1615808015611c125750600054600160ff909116105b80611c2c5750303b158015611c2c575060005460ff166001145b611c485760405162461bcd60e51b8152600401610c1c90614d1b565b6000805460ff191660011790558015611c6b576000805461ff0019166101001790555b611c7c8c8c8c8c8c8c8c8c8c612cb8565b611c87836001612c22565b611c92826000612c22565b61020c80546001600160a01b038086166001600160a01b03199283161790925561020d8054928516929091169190911790558015611d0a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b600063357dcfd760e21b611d2a61230a565b6001600160e01b0319811660009081526097602052604090205460ff1615611d645760405162461bcd60e51b8152600401610c1c90614cee565b611d6d33612350565b600080611d7e600086600133612444565b8051604080518981526020810192909252929450909250600091339185917f55ba94d231fa70a45e82b0a1c6a60ef72e41bb2455385128ee5cf8d98c0c1c0e910160405180910390a4509392505050565b611dda610cc661209b565b60005b818110156119865760006101a66000858585818110611dfe57611dfe614d69565b9050602002013581526020019081526020016000206003015490506000611e40858585818110611e3057611e30614d69565b90506020020135836001806127ae565b905080611e4e575050611ea3565b848484818110611e6057611e60614d69565b905060200201357f03ea09e71742c9c754c9746b3e671ecb27fc372e3d29c31bac0192458ffd9d4b83604051611e9891815260200190565b60405180910390a250505b80611ead81614d95565b915050611ddd565b611ec0610cc661209b565b611ec98261315b565b611ed4816000612aed565b6001600160a01b038216600081815261016e602052604090819020600101839055513391907f1582567d288d96695cf3fe7280c630a4f1c82fc7e665e1db58468f2960fef8699061188b9085815260200190565b611f33610cc661209b565b6001600160a01b038116600090815261016b602052604090205460ff1615611f915760405162461bcd60e51b815260206004820152601160248201527013558e88185b1c9958591e481859191959607a1b6044820152606401610c1c565b6001600160a01b038116600081815261016b6020526040808220805460ff19166001179055513392917f221f04b37331150bcfd05e2de362f50785c29ee4ab14f26d4495a51f3c02906091a350565b611feb610cc661209b565b61020d546001600160a01b03828116911614156120435760405162461bcd60e51b815260206004820152601660248201527526a92b299d1030b63932b0b23c90383937bb34b232b960511b6044820152606401610c1c565b61204e816000612c22565b61020d80546001600160a01b0319166001600160a01b03831690811790915560405133907f96210ef89e9bcdbde362a89b05013b89c67c586c9de1243edbf07af800c5da1290600090a350565b7faed1dfcb561f850481cdb3d35a3076d203b3bf6785bb0e8b8a52f608d0f8298490565b6120ca610cc661209b565b6120d5816001612c22565b61016980546001600160a01b0319166001600160a01b03831690811790915560405133907f1b092cca381ac00a07e1226c164f47c475d212f5e55699475a7f411811f77dd490600090a350565b61212d610cc661209b565b61213961016c8661323e565b6121795760405162461bcd60e51b815260206004820152601160248201527013558e88185b1c9958591e481859191959607a1b6044820152606401610c1c565b612184846000612c22565b61218f836000612aed565b604080516080810182526001600160a01b03868116808352602080840188815284860188815287151560608088018281528e8816600081815261016e88528b902099518a546001600160a01b0319169916989098178955935160018901559151600288015591516003909601805460ff19169615159690961790955585518981529182018890529481019490945292909133917f049000a9db89588d7bfb162bc0f7e4299ee8762430a468131c2caf0824f1f995910160405180910390a45050505050565b61225f610cc661209b565b60005b8281101561230457600061229185858481811061228157612281614d69565b90506020020135846001806127ae565b90508061229e57506122f2565b8484838181106122b0576122b0614d69565b905060200201357f03ea09e71742c9c754c9746b3e671ecb27fc372e3d29c31bac0192458ffd9d4b846040516122e891815260200190565b60405180910390a2505b806122fc81614d95565b915050612262565b50505050565b60655460ff16156112835760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610c1c565b60fc54819060ff16156123665761236681613253565b8161237081613279565b61012f5483906001600160a01b0316801561243d5760405163df592f7d60e01b81526001600160a01b03838116600483015282169063df592f7d9060240160206040518083038186803b1580156123c657600080fd5b505afa1580156123da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123fe9190614db0565b1561243d5760405162461bcd60e51b815260206004820152600f60248201526e15d4d30e881cd85b98dd1a5bdb9959608a1b6044820152606401610c1c565b5050505050565b6000612463604051806040016040528060008152602001600081525090565b836124b5576001600160a01b0386166124b55760405162461bcd60e51b815260206004820152601460248201527314958e881d1bdad95b93dd5d080f4f48199a585d60621b6044820152606401610c1c565b336124c48188886000896132a5565b915086670de0b6b3a76400008661250b576001600160a01b03808316600090815261016e602052604090208054600382015491926125079291169060ff1661349d565b9150505b6101645460408051636369290560e01b815290516000926001600160a01b0316916363692905916004808301926020929190829003018186803b15801561255157600080fd5b505afa158015612565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125899190614dcd565b6101635460208701519192506125ae916001600160a01b03909116903090601261352a565b508451156125db57610163546101695486516125d9926001600160a01b03908116921690601261352a565b505b6101625495506125f061016280546001019055565b6040805160c0810182526001600160a01b03808a1682528516602082015290810160008152602087810151818301526040808301859052606090920185905260008981526101a68252829020835181546001600160a01b039182166001600160a01b0319918216178355928501516001830180549190921693811684178255938501519193919290916001600160a81b03191617600160a01b83600281111561269b5761269b614bd4565b0217905550606082015160028201556080820151600382015560a0909101516004909101555050505094509492505050565b600054604051632474521560e21b8152600481018490526001600160a01b03838116602483015262010000909204909116906391d148549060440160206040518083038186803b15801561272057600080fd5b505afa158015612734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127589190614db0565b6127975760405162461bcd60e51b815260206004820152601060248201526f574d41433a206861736e7420726f6c6560801b6044820152606401610c1c565b5050565b6127a3610f75565b8161198682826126cd565b60008481526101a660209081526040808320815160c08101835281546001600160a01b03908116825260018301549081169482019490945284939092830190600160a01b900460ff16600281111561280857612808614bd4565b600281111561281957612819614bd4565b81526020016002820154815260200160038201548152602001600482015481525050905061284f81600001518260400151612a3e565b831561286357612863816080015186613575565b60208101516001600160a01b03161560008161288b576128868360200151613608565b61288e565b60125b60ff16905060006128bd8460a001518986606001516128ad9190614de6565b6128b79190614e05565b8361367b565b905082612910578580156128dd57506128db8460200151828461368b565b155b156128ef576000945050505050612a36565b60208401516101a754855161291092916001600160a01b0316908486613724565b61291e846020015182613777565b610163546060850151604051632770a7eb60e21b815230600482015260248101919091526001600160a01b0390911690639dc29fac90604401600060405180830381600087803b15801561297157600080fd5b505af1158015612985573d6000803e3d6000fd5b505060016040878101828152608089018d905260008e81526101a66020908152929020895181546001600160a01b03199081166001600160a01b03928316178355938b0151948201805494851695909116948517815591518a96509094509290916001600160a81b03191617600160a01b836002811115612a0857612a08614bd4565b0217905550606082015160028201556080820151600382015560a09091015160049091015550600193505050505b949350505050565b6001600160a01b038216612a8c5760405162461bcd60e51b815260206004820152601560248201527414958e881c995c5d595cdd081b9bdd08195e1a5cdd605a1b6044820152606401610c1c565b6000816002811115612aa057612aa0614bd4565b146127975760405162461bcd60e51b815260206004820152601760248201527f52563a2072657175657374206e6f742070656e64696e670000000000000000006044820152606401610c1c565b612710821115612b2c5760405162461bcd60e51b815260206004820152600a602482015269666565203e203130302560b01b6044820152606401610c1c565b801561279757600082116127975760405162461bcd60e51b81526020600482015260086024820152670666565203d3d20360c41b6044820152606401610c1c565b6040516001600160a01b03831660248201526044810182905261198690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613820565b612bd86138f5565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216612c675760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610c1c565b8015612797576001600160a01b0382163014156127975760405162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b6044820152606401610c1c565b600054610100900460ff16612cdf5760405162461bcd60e51b8152600401610c1c90614e27565b612cee8989898989898961393e565b612cfa82356000612aed565b612d05816000612c22565b60408201356101a35581356101a4556020909101356101a5556101a780546001600160a01b0319166001600160a01b0390921691909117905550505050505050565b612d4f61230a565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612c053390565b6040805180820190915260008082526020820152600033612da98188886001866132a5565b92506000612db688613608565b60ff169050868887600080612dca85613b16565b91509150600080612ddb8487613b89565b91509150612e0381848d60200151612df39190614de6565b612dfd9190614e05565b8961367b565b9950848a1015612e555760405162461bcd60e51b815260206004820152601e60248201527f5256533a206d696e52656365697665416d6f756e74203e2061637475616c00006044820152606401610c1c565b8a5115612e815761016354610169548c51612e7f926001600160a01b03908116921690601261352a565b505b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a082319060240160206040518083038186803b158015612ec357600080fd5b505afa158015612ed7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efb9190614dcd565b9050612f0688613c69565b612f108784613777565b612f1a8b8a613cf3565b8110612f91576101635460208d0151604051632770a7eb60e21b81526001600160a01b038d811660048301526024820192909252911690639dc29fac90604401600060405180830381600087803b158015612f7457600080fd5b505af1158015612f88573d6000803e3d6000fd5b5050505061313c565b6000612fa08d60200151613d01565b61020c546040805163c3b6f93960e01b81529051929350613039926001600160a01b03909216918491839163c3b6f93991600480820192602092909190829003018186803b158015612ff157600080fd5b505afa158015613005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130299190614e72565b6001600160a01b03169190613f5f565b61020c546040516345a9fbaf60e11b81526001600160a01b038a8116600483015260248201849052604482018a905290911690638b53f75e90606401600060405180830381600087803b15801561308f57600080fd5b505af11580156130a3573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b038b1691506370a082319060240160206040518083038186803b1580156130e957600080fd5b505afa1580156130fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131219190614dcd565b90506131378b6131318584614e8f565b9061401b565b9c5050505b613148878e8d8c614029565b5050505050505050505094509492505050565b61316761016c82614073565b6131aa5760405162461bcd60e51b81526020600482015260146024820152734d563a20746f6b656e206e6f742065786973747360601b6044820152606401610c1c565b50565b610164546000906131c7906001600160a01b03168261349d565b9050600081116132095760405162461bcd60e51b815260206004820152600d60248201526c52563a2072617465207a65726f60981b6044820152606401610c1c565b90565b6000613221836001600160a01b038416614095565b90505b92915050565b6060600061323783614188565b9392505050565b6000613221836001600160a01b0384166141e4565b7fd2576bd6a4c5558421de15cb8ecdf4eb3282aac06b94d4f004e8cd0d00f3ebd86127a3565b7f548c7f0307ab2a7ea894e5c7e8c5353cc750bb9385ee2e945f189a9a83daa8ed816119868282614233565b6040805180820190915260008082526020820152600084116132fe5760405162461bcd60e51b815260206004820152601260248201527114958e881a5b9d985b1a5908185b5bdd5b9d60721b6044820152606401610c1c565b6001600160a01b0386166000908152610170602052604090205460ff1661337b5760008261332f5761016f54613334565b6101a3545b9050848111156133795760405162461bcd60e51b815260206004820152601060248201526f292b1d1030b6b7bab73a101e1036b4b760811b6044820152606401610c1c565b505b613397868686868661338e5760006142fc565b6101a4546142fc565b8152811561342a576001600160a01b038516156133ed5760405162461bcd60e51b815260206004820152601460248201527314958e881d1bdad95b93dd5d08084f48199a585d60621b6044820152606401610c1c565b6001600160a01b038616600090815261016b602052604090205460ff16613425576101a55481518290613421908390614ea6565b9052505b613433565b6134338561315b565b805184116134835760405162461bcd60e51b815260206004820152601860248201527f52563a20616d6f756e744d546f6b656e496e203c2066656500000000000000006044820152606401610c1c565b805161348f9085614e8f565b602082015295945050505050565b600080836001600160a01b031663636929056040518163ffffffff1660e01b815260040160206040518083038186803b1580156134d957600080fd5b505afa1580156134ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135119190614dcd565b9050821561322157670de0b6b3a7640000915050613224565b60006135368383613cf3565b9050613542818361401b565b83146135605760405162461bcd60e51b8152600401610c1c90614ebe565b612a366001600160a01b03861633868461439d565b60008282101561358e576135898284614e8f565b613598565b6135988383614e8f565b90506000836135a961271084614de6565b6135b39190614e05565b905061016a548111156123045760405162461bcd60e51b815260206004820152601a60248201527f4d563a2065786365656420707269636520646976696174696f6e0000000000006044820152606401610c1c565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561364357600080fd5b505afa158015613657573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132249190614eec565b6000613221826131318582613cf3565b6101a7546040516370a0823160e01b81526001600160a01b0391821660048201526000918291908616906370a082319060240160206040518083038186803b1580156136d657600080fd5b505afa1580156136ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370e9190614dcd565b905061371a8484613cf3565b1115949350505050565b60006137308383613cf3565b905061373c818361401b565b831461375a5760405162461bcd60e51b8152600401610c1c90614ebe565b61376f6001600160a01b03871686868461439d565b505050505050565b6001600160a01b038216600090815261016e60205260409020600201546000198114156137a357505050565b818110156137ea5760405162461bcd60e51b81526020600482015260146024820152734d563a2065786365656420616c6c6f77616e636560601b6044820152606401610c1c565b6001600160a01b038316600090815261016e602052604081206002018054849290613816908490614e8f565b9091555050505050565b6000613875826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166143d59092919063ffffffff16565b90508051600014806138965750808060200190518101906138969190614db0565b6119865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610c1c565b60655460ff166112835760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610c1c565b600054610100900460ff166139655760405162461bcd60e51b8152600401610c1c90614e27565b61397c6139756020880188614782565b6000612c22565b61398f6139756040880160208901614782565b6139a661399f6020870187614782565b6001612c22565b6139b961399f6040870160208801614782565b60008460200135116139fa5760405162461bcd60e51b815260206004820152600a6024820152691e995c9bc81b1a5b5a5d60b21b6044820152606401610c1c565b613a05826001612aed565b613a1184356000612aed565b613a1e6020870187614782565b61016380546001600160a01b0319166001600160a01b0392909216919091179055613a48876143e4565b613a5061441c565b613a5861441c565b613a6183614443565b613a6e6020860186614782565b61016580546001600160a01b0319166001600160a01b0392909216919091179055613a9f6040860160208701614782565b61016980546001600160a01b0319166001600160a01b03929092169190911790558335610166556020808501356101675561016f82905561016a839055613aec9060408801908801614782565b61016480546001600160a01b0319166001600160a01b039290921691909117905550505050505050565b60008060008311613b5b5760405162461bcd60e51b815260206004820152600f60248201526e52563a20616d6f756e74207a65726f60881b6044820152606401610c1c565b613b636131ad565b9050670de0b6b3a7640000613b788285614de6565b613b829190614e05565b9150915091565b60008060008411613bce5760405162461bcd60e51b815260206004820152600f60248201526e52563a20616d6f756e74207a65726f60881b6044820152606401610c1c565b6001600160a01b03808416600090815261016e60205260409020805460038201549192613c009291169060ff1661349d565b915060008211613c425760405162461bcd60e51b815260206004820152600d60248201526c52563a2072617465207a65726f60981b6044820152606401610c1c565b81613c5586670de0b6b3a7640000614de6565b613c5f9190614e05565b9250509250929050565b6000613c786201518042614e05565b6000818152610168602052604081205491925090613c97908490614ea6565b905061016754811115613cdf5760405162461bcd60e51b815260206004820152601060248201526f13558e88195e18d95959081b1a5b5a5d60821b6044820152606401610c1c565b600091825261016860205260409091205550565b60006132218360128461448d565b6101635461020d54600091613d25916001600160a01b03918216911684601261352a565b5061020c546040805163312a57db60e11b815290516000926001600160a01b031691636254afb6916004808301926020929190829003018186803b158015613d6c57600080fd5b505afa158015613d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da49190614e72565b6001600160a01b031663636929056040518163ffffffff1660e01b815260040160206040518083038186803b158015613ddc57600080fd5b505afa158015613df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e149190614dcd565b9050600061016460009054906101000a90046001600160a01b03166001600160a01b031663636929056040518163ffffffff1660e01b815260040160206040518083038186803b158015613e6757600080fd5b505afa158015613e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9f9190614dcd565b905081613eac8286614de6565b613eb69190614e05565b9250613f5861020c60009054906101000a90046001600160a01b03166001600160a01b031663c3b6f9396040518163ffffffff1660e01b815260040160206040518083038186803b158015613f0a57600080fd5b505afa158015613f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f429190614e72565b61020d546001600160a01b031630866012613724565b5050919050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e9060440160206040518083038186803b158015613faa57600080fd5b505afa158015613fbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fe29190614dcd565b90506123048463095ea7b360e01b85613ffb8686614ea6565b6040516001600160a01b0390921660248301526044820152606401612b99565b60006132218383601261448d565b60006140358383613cf3565b9050614041818361401b565b831461405f5760405162461bcd60e51b8152600401610c1c90614ebe565b61243d6001600160a01b0386168583612b6d565b6001600160a01b03811660009081526001830160205260408120541515613221565b6000818152600183016020526040812054801561417e5760006140b9600183614e8f565b85549091506000906140cd90600190614e8f565b90508181146141325760008660000182815481106140ed576140ed614d69565b906000526020600020015490508087600001848154811061411057614110614d69565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061414357614143614f0f565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613224565b6000915050613224565b6060816000018054806020026020016040519081016040528092919081815260200182805480156141d857602002820191906000526020600020905b8154815260200190600101908083116141c4575b50505050509050919050565b600081815260018301602052604081205461422b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155613224565b506000613224565b600054604051632474521560e21b8152600481018490526001600160a01b03838116602483015262010000909204909116906391d148549060440160206040518083038186803b15801561428657600080fd5b505afa15801561429a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142be9190614db0565b156127975760405162461bcd60e51b815260206004820152600e60248201526d574d41433a2068617320726f6c6560901b6044820152606401610c1c565b6001600160a01b038516600090815261016b602052604081205460ff161561432657506000614394565b60008261435057506001600160a01b038516600090815261016e6020526040902060010154614353565b50815b831561436a57610166546143679082614ea6565b90505b61271081111561437957506127105b6127106143868287614de6565b6143909190614e05565b9150505b95945050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526123049085906323b872dd60e01b90608401612b99565b6060612a3684846000856144fa565b600054610100900460ff1661440b5760405162461bcd60e51b8152600401610c1c90614e27565b6144136145d5565b6131aa81614604565b600054610100900460ff166112835760405162461bcd60e51b8152600401610c1c90614e27565b600054610100900460ff1661446a5760405162461bcd60e51b8152600401610c1c90614e27565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b60008361449c57506000613237565b818314156144ab575082613237565b6000828411156144db576144bf8385614e8f565b6144ca90600a615009565b6144d49086614e05565b9050612a36565b6144e58484614e8f565b6144f090600a615009565b6143949086614de6565b60608247101561455b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610c1c565b600080866001600160a01b031685876040516145779190615041565b60006040518083038185875af1925050503d80600081146145b4576040519150601f19603f3d011682016040523d82523d6000602084013e6145b9565b606091505b50915091506145ca8783838761469a565b979650505050505050565b600054610100900460ff166145fc5760405162461bcd60e51b8152600401610c1c90614e27565b611283614710565b600054610100900460ff1661462b5760405162461bcd60e51b8152600401610c1c90614e27565b6001600160a01b0381166146705760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610c1c565b600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b606083156147065782516146ff576001600160a01b0385163b6146ff5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c1c565b5081612a36565b612a368383614743565b600054610100900460ff166147375760405162461bcd60e51b8152600401610c1c90614e27565b6065805460ff19169055565b8151156147535781518083602001fd5b8060405162461bcd60e51b8152600401610c1c919061505d565b6001600160a01b03811681146131aa57600080fd5b60006020828403121561479457600080fd5b81356132218161476d565b6000602082840312156147b157600080fd5b81356001600160e01b03198116811461322157600080fd5b6000806000606084860312156147de57600080fd5b83356147e98161476d565b92506020840135915060408401356148008161476d565b809150509250925092565b80151581146131aa57600080fd5b60006020828403121561482b57600080fd5b81356132218161480b565b6000806040838503121561484957600080fd5b50508035926020909101359150565b60006020828403121561486a57600080fd5b5035919050565b6000806040838503121561488457600080fd5b823561488f8161476d565b9150602083013561489f8161480b565b809150509250929050565b6000604082840312156148bc57600080fd5b50919050565b6000606082840312156148bc57600080fd5b60008060008060008060008060006101c08a8c0312156148f357600080fd5b89356148fe8161476d565b985061490d8b60208c016148aa565b975061491c8b60608c016148aa565b965061492b8b60a08c016148aa565b955060e08a013561493b8161476d565b94506101008a013593506101208a0135925061495b8b6101408c016148c2565b91506101a08a013561496c8161476d565b809150509295985092959850929598565b6000806000806080858703121561499357600080fd5b843561499e8161476d565b9350602085013592506040850135915060608501356149bc8161476d565b939692955090935050565b600080604083850312156149da57600080fd5b82356149e58161476d565b946020939093013593505050565b600080600060608486031215614a0857600080fd5b8335614a138161476d565b95602085013595506040909401359392505050565b60008083601f840112614a3a57600080fd5b50813567ffffffffffffffff811115614a5257600080fd5b6020830191508360208260051b8501011115614a6d57600080fd5b9250929050565b60008060208385031215614a8757600080fd5b823567ffffffffffffffff811115614a9e57600080fd5b614aaa85828601614a28565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614af75783516001600160a01b031683529284019291840191600101614ad2565b50909695505050505050565b60008060008060008060008060008060006102008c8e031215614b2557600080fd5b8b35614b308161476d565b9a50614b3f8d60208e016148aa565b9950614b4e8d60608e016148aa565b9850614b5d8d60a08e016148aa565b975060e08c0135614b6d8161476d565b96506101008c013595506101208c01359450614b8d8d6101408e016148c2565b93506101a08c0135614b9e8161476d565b92506101c08c0135614baf8161476d565b91506101e08c0135614bc08161476d565b809150509295989b509295989b9093969950565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0387811682528616602082015260c0810160038610614c2057634e487b7160e01b600052602160045260246000fd5b8560408301528460608301528360808301528260a0830152979650505050505050565b600080600080600060a08688031215614c5b57600080fd5b8535614c668161476d565b94506020860135614c768161476d565b935060408601359250606086013591506080860135614c948161480b565b809150509295509295909350565b600080600060408486031215614cb757600080fd5b833567ffffffffffffffff811115614cce57600080fd5b614cda86828701614a28565b909790965060209590950135949350505050565b60208082526013908201527214185d5cd8589b194e88199b881c185d5cd959606a1b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415614da957614da9614d7f565b5060010190565b600060208284031215614dc257600080fd5b81516132218161480b565b600060208284031215614ddf57600080fd5b5051919050565b6000816000190483118215151615614e0057614e00614d7f565b500290565b600082614e2257634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215614e8457600080fd5b81516132218161476d565b600082821015614ea157614ea1614d7f565b500390565b60008219821115614eb957614eb9614d7f565b500190565b6020808252601490820152734d563a20696e76616c696420726f756e64696e6760601b604082015260600190565b600060208284031215614efe57600080fd5b815160ff8116811461322157600080fd5b634e487b7160e01b600052603160045260246000fd5b600181815b80851115614f60578160001904821115614f4657614f46614d7f565b80851615614f5357918102915b93841c9390800290614f2a565b509250929050565b600082614f7757506001613224565b81614f8457506000613224565b8160018114614f9a5760028114614fa457614fc0565b6001915050613224565b60ff841115614fb557614fb5614d7f565b50506001821b613224565b5060208310610133831016604e8410600b8410161715614fe3575081810a613224565b614fed8383614f25565b806000190482111561500157615001614d7f565b029392505050565b60006132218383614f68565b60005b83811015615030578181015183820152602001615018565b838111156123045750506000910152565b60008251615053818460208701615015565b9190910192915050565b602081526000825180602084015261507c816040850160208701615015565b601f01601f1916919091016040019291505056fea2646970667358221220cfff06d64f2cd277947670617ecf97d53b416ef455672d59c7fcbb10ce3db8f064736f6c63430008090033