0 txs
348 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
allowedClosers
viewfunction allowedClosers(address) view returns (bool)
allowedSenders
viewfunction allowedSenders(address) view returns (bool)
allUsers
viewfunction allUsers(uint256) view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
burner
viewfunction burner(address) view returns (bool)
closePositionAmount
viewfunction closePositionAmount(address, uint256) view returns (uint256)
closePositionRequest
viewfunction closePositionRequest(address, uint256) view returns (bool)
decimals
viewfunction decimals() view returns (uint8)
feeConfiguration
viewfunction feeConfiguration() view returns (address feeReceiver, uint256 withdrawalFee, address waterFeeReceiver, uint256 liquidatorsRewardPercentage, uint256 fixedFeeSplit)
getAllUsers
viewfunction getAllUsers() view returns (address[])
getClaimable
viewfunction getClaimable() view returns (uint256)
getCurrentPosition
viewfunction getCurrentPosition(uint256 _positionID, uint256 _shares, address _user) view returns (uint256 currentPosition, uint256 previousValueInUSDC)
getPositionOpenTimestamp
viewfunction getPositionOpenTimestamp(address _user, uint256 _positionId) view returns (uint256)
getStakedVlpBalance
viewfunction getStakedVlpBalance() view returns (uint256)
getTotalNumbersOfOpenPositionBy
viewfunction getTotalNumbersOfOpenPositionBy(address _user) view returns (uint256)
getUpdatedDebt
viewfunction getUpdatedDebt(uint256 _positionID, address _user) view returns (uint256 currentDTV, uint256 currentPosition, uint256 currentDebt)
getVlpBalance
viewfunction getVlpBalance() view returns (uint256)
getVLPCooldownPeriod
viewfunction getVLPCooldownPeriod() view returns (uint256)
getVLPPrice
viewfunction getVLPPrice() view returns (uint256)
isUser
viewfunction isUser(address) view returns (bool)
isWhitelistedAsset
viewfunction isWhitelistedAsset(address) view returns (bool)
keeper
viewfunction keeper() view returns (address)
MAX_BPS
viewfunction MAX_BPS() view returns (uint256)
MAX_LEVERAGE
viewfunction MAX_LEVERAGE() view returns (uint256)
MCPID
viewfunction MCPID() view returns (uint256)
MIN_LEVERAGE
viewfunction MIN_LEVERAGE() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
strategyAddresses
viewfunction strategyAddresses() view returns (address USDC, address water, address velaMintBurnVault, address velaStakingVault, address velaSettingManager, address vlpToken, address esVela, address VELA, address MasterChef, address KyberRouter)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
userInfo
viewfunction userInfo(address, uint256) view returns (address user, uint256 deposit, uint256 leverage, uint256 position, uint256 price, bool liquidated, uint256 cooldownPeriodElapse, uint256 closedPositionValue, address liquidator, uint256 closePNL, uint256 leverageAmount, uint256 positionId, bool closed)
userTimelock
viewfunction userTimelock(address) view returns (uint256)
vaultMaturityTime
viewfunction vaultMaturityTime() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
burn
nonpayablefunction burn(uint256 amount)
burnFrom
nonpayablefunction burnFrom(address account, uint256 amount)
claim
nonpayablefunction claim()
closePosition
nonpayablefunction closePosition(uint256 _positionID, address _user, bool _sameSwap)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
depositVesting
nonpayablefunction depositVesting()
fulfilledRequestSwap
nonpayablefunction fulfilledRequestSwap(uint256 _positionID, bytes _data, bool _swapSimple, address _outputAsset)
harvestMany
nonpayablefunction harvestMany(bool _vela, bool _esvela, bool _vlp, bool _vesting)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(address _usdc, address _water, address _velaMintBurnVault, address _velaStakingVault, address _velaSettingManager, address _velaToken)
liquidatePosition
nonpayablefunction liquidatePosition(uint256 _positionId, address _user)
openPosition
nonpayablefunction openPosition(uint256 _amount, uint256 _leverage, bytes _data, bool _swapSimple, address _inputAsset)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setAllowed
nonpayablefunction setAllowed(address _sender, bool _allowed)
setAssetWhitelist
nonpayablefunction setAssetWhitelist(address _asset, bool _status)
setBurner
nonpayablefunction setBurner(address _burner, bool _allowed)
setCloser
nonpayablefunction setCloser(address _closer, bool _allowed)
setKeeper
nonpayablefunction setKeeper(address _keeper)
setKyberRouter
nonpayablefunction setKyberRouter(address _KyberRouter)
setMaxAndMinLeverage
nonpayablefunction setMaxAndMinLeverage(uint256 _maxLeverage, uint256 _minLeverage)
setMC
nonpayablefunction setMC(address _MasterChef, uint256 _MCPID)
setProtocolFee
nonpayablefunction setProtocolFee(address _feeReceiver, uint256 _withdrawalFee, address _waterFeeReceiver, uint256 _liquidatorsRewardPercentage, uint256 _fixedFeeSplit, uint256 _mFeePercent, address _mFeeReceiver)
setVaultMaturityTime
nonpayablefunction setVaultMaturityTime(uint256 _timeInSeconds)
setVelaContracts
nonpayablefunction setVelaContracts(address _velaMintBurnVault, address _velaStakingVault, address _velaSettingManager, address _vlpToken, address _water)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdrawAllESVELA
nonpayablefunction withdrawAllESVELA()
withdrawAllVELA
nonpayablefunction withdrawAllVELA()
withdrawArb
nonpayablefunction withdrawArb(address _arb, address _to)
withdrawVesting
nonpayablefunction withdrawVesting()
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Deposit
event Deposit(address indexed depositer, uint256 depositTokenAmount, uint256 createdAt, uint256 vlpAmount)
Harvested
event Harvested(bool vela, bool esVela, bool vlp, bool vesting)
Initialized
event Initialized(uint8 version)
Liquidated
event Liquidated(address indexed user, uint256 indexed positionId, address liquidator, uint256 amount, uint256 reward)
Liquidation
event Liquidation(address indexed liquidator, address indexed borrower, uint256 positionId, uint256 liquidatedAmount, uint256 outputAmount, uint256 time)
OpenRequest
event OpenRequest(address indexed user, uint256 amountAfterFee)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
ProtocolFeeChanged
event ProtocolFeeChanged(address newFeeReceiver, uint256 newWithdrawalFee, address newWaterFeeReceiver, uint256 liquidatorsRewardPercentage, uint256 fixedFeeSplit)
RequestFulfilled
event RequestFulfilled(address indexed user, uint256 openAmount, uint256 closedAmount)
SetAllowedClosers
event SetAllowedClosers(address indexed closer, bool allowed)
SetAllowedSenders
event SetAllowedSenders(address indexed sender, bool allowed)
SetAssetWhitelist
event SetAssetWhitelist(address indexed asset, bool isWhitelisted)
SetBurner
event SetBurner(address indexed burner, bool allowed)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
UpdateKyberRouter
event UpdateKyberRouter(address newKyberRouter)
UpdateMaxAndMinLeverage
event UpdateMaxAndMinLeverage(uint256 maxLeverage, uint256 minLeverage)
UpdateMCAndPID
event UpdateMCAndPID(address indexed newMC, uint256 mcpPid)
VaultContractChanged
event VaultContractChanged(address newVault, address newTokenFarm, address newSettingManager, address newVlpToken)
WaterContractChanged
event WaterContractChanged(address newWater)
Withdraw
event Withdraw(address indexed user, uint256 amount, uint256 time, uint256 vlpAmount)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615e9980620000f36000396000f3fe608060405234801561001057600080fd5b50600436106103225760003560e01c8063057963631461032757806306fdde031461033c578063095ea7b31461035a5780630a1cb8bc1461037d5780630d895ee114610393578063100e196d146103a657806318160ddd1461045d57806318261aaa146104655780631919bafc146104785780631c9fbd38146104a757806321ce919d146104ba57806323b872dd146105475780632e52f7201461055a578063302b486a1461056d57806330b1a1a21461058e578063313ce567146105a157806334c1557d146105b057806339509351146105ba5780633d3b4ebc146105cd5780633f4ba83a146105f95780634209fff11461060157806342966c68146106255780634697f05d1461063857806349035c8c1461064b5780634e71d92d1461065357806355c4347b1461065b5780635c975abb1461067d5780635f036de11461068857806368817be01461069b57806370a08231146106a3578063715018a6146106b6578063745f9f32146106be578063748747e6146106d157806379cc6790146106e45780637e856484146106f75780637f4d551e1461071b57806381c0a5f5146107235780638456cb591461072b57806384ad48d7146107335780638680c92a1461073b5780638b33203c1461074e5780638be5fd5a146107615780638da5cb5b1461077457806392ecfe9f14610789578063944c979d1461079157806395d89b41146107bb57806398c47e8c146107c35780639b45ec97146107ff578063a2bdedf414610809578063a457c2d71461081c578063a9059cbb1461082f578063ab1dc42714610842578063aced166114610866578063b666e0321461087a578063bb67f74a1461088d578063c990e30c146108b1578063cc2a9a5b146108d2578063d0e6a917146108e5578063dd62ed3e146108ef578063de87eb5014610902578063e2842d7914610939578063ed4fec731461094e578063ee28b74414610958578063f2fde38b14610960578063f4abf03714610973578063f915965514610986578063fadbcf4814610999578063fd40b7e6146109bd578063fd967f47146109d0578063fe7feaac146109da575b600080fd5b61033a610335366004614f4a565b6109e2565b005b610344610a4f565b6040516103519190614fa7565b60405180910390f35b61036d610368366004614fda565b610ae1565b6040519015158152602001610351565b610385610afb565b604051908152602001610351565b61033a6103a1366004614f4a565b610b73565b610132546101335461013454610135546101365461013754610138546101395461013a5461013b546103fa996001600160a01b0390811699811698811697811696811695811694811693811692811691168a565b604080516001600160a01b039b8c168152998b1660208b0152978a16978901979097529488166060880152928716608087015290861660a0860152851660c0850152841660e0840152831661010083015290911661012082015261014001610351565b60cb54610385565b61033a61047336600461504e565b610c11565b61036d610486366004614fda565b61014860209081526000928352604080842090915290825290205460ff1681565b61033a6104b5366004614f4a565b610da8565b6104cd6104c8366004614fda565b610e30565b604080516001600160a01b039e8f168152602081019d909d528c019a909a5260608b019890985260808a019690965293151560a089015260c088019290925260e08701529095166101008501526101208401949094526101408301939093526101608201929092529015156101808201526101a001610351565b61036d6105553660046150c1565b610ec8565b61033a610568366004615102565b610f6e565b61038561057b366004615165565b6101466020526000908152604090205481565b61033a61059c366004615182565b61105f565b60405160128152602001610351565b6103856101405481565b61036d6105c8366004614fda565b61163f565b6103856105db366004614fda565b61014960209081526000928352604080842090915290825290205481565b61033a611661565b61036d61060f366004615165565b6101456020526000908152604090205460ff1681565b61033a6106333660046151fd565b611673565b61033a610646366004614f4a565b6116d6565b61033a61175e565b61033a611976565b61066e610669366004615216565b611a19565b6040516103519392919061523b565b60975460ff1661036d565b61033a610696366004615216565b611b6b565b6103856121d0565b6103856106b1366004615165565b61221b565b61033a612236565b61033a6106cc366004615251565b612248565b61033a6106df366004615165565b6122f5565b61033a6106f2366004614fda565b612348565b61036d610705366004615165565b6101436020526000908152604090205460ff1681565b61033a61235d565b610385612455565b61033a612487565b61033a612497565b61033a61074936600461527f565b61253e565b61033a61075c366004615165565b6125f7565b61033a61076f366004614fda565b612672565b61077c6126f6565b60405161035191906152a1565b610385612705565b61038561079f366004615165565b6001600160a01b03166000908152610141602052604090205490565b610344612750565b61012d5461012e5461012f5461013054610131546107ee946001600160a01b03908116949316919085565b6040516103519594939291906152b5565b61038561013f5481565b61077c6108173660046151fd565b61275f565b61036d61082a366004614fda565b61278a565b61036d61083d366004614fda565b612810565b61036d610850366004615165565b6101476020526000908152604090205460ff1681565b61014d5461077c906001600160a01b031681565b61033a6108883660046152e9565b612872565b61036d61089b366004615165565b6101446020526000908152604090205460ff1681565b6108c46108bf366004615345565b612926565b60405161035192919061537e565b61033a6108e036600461538c565b612a51565b61038561014e5481565b6103856108fd366004615251565b612dd1565b610385610910366004614fda565b6001600160a01b0391909116600090815261014a60209081526040808320938352929052205490565b610941612dfc565b6040516103519190615400565b61038561013d5481565b610385612e5e565b61033a61096e366004615165565b612e90565b61033a6109813660046151fd565b612f06565b61033a61099436600461544d565b612f14565b61036d6109a7366004615165565b6101426020526000908152604090205460ff1681565b61033a6109cb366004615484565b61367f565b61038561013e5481565b61033a61380e565b6109ea613851565b6001600160a01b0382166000818152610147602052604090819020805460ff1916841515179055517f2b463d61ebd15caae2de0d061d3348ecb853b4efb6a399093448ec863eb315ef90610a4390841515815260200190565b60405180910390a25050565b606060cc8054610a5e906154f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8a906154f6565b8015610ad75780601f10610aac57610100808354040283529160200191610ad7565b820191906000526020600020905b815481529060010190602001808311610aba57829003601f168201915b5050505050905090565b600033610aef8185856138b0565b60019150505b92915050565b610135546040516344b988f960e11b81526000916001600160a01b03169063897311f290610b2d9030906004016152a1565b602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190615530565b905090565b610b7b613851565b816001600160a01b038116610bab5760405162461bcd60e51b8152600401610ba290615549565b60405180910390fd5b6001600160a01b0383166000818152610144602052604090819020805460ff1916851515179055517f0bdf09706f801a2715bf57b2317eb8608c34792ad040988dc6e5f0c3687a9bac90610c0490851515815260200190565b60405180910390a2505050565b610c196139d4565b336000908152610149602090815260408083208884528252808320546001600160a01b03851684526101479092529091205460ff16610c6a5760405162461bcd60e51b8152600401610ba29061556f565b60008111610c8a5760405162461bcd60e51b8152600401610ba2906155a5565b3360009081526101486020908152604080832089845290915290205460ff16610cf55760405162461bcd60e51b815260206004820152601e60248201527f53414b453a20436c6f7365206f6e6c79206f70656e20706f736974696f6e00006044820152606401610ba2565b336000818152610149602090815260408083208a8452825280832083905592825261014881528282208983529052908120805460ff19169055610d3c828787878588613a2d565b9050610d526001600160a01b0384163383613ff0565b336001600160a01b03167f1165aa98d42fbaef9bacc273d7b5cca8edc94909519f8f949ec33562963c87e48383604051610d8d92919061537e565b60405180910390a25050610da16001606555565b5050505050565b610db0613851565b816001600160a01b038116610dd75760405162461bcd60e51b8152600401610ba290615549565b6001600160a01b0383166000818152610143602052604090819020805460ff1916851515179055517f2626e1501ac007a99ed3bca0402984dce31d222879c878c4a5fb3952b6733a0290610c0490851515815260200190565b6101416020528160005260406000208181548110610e4d57600080fd5b60009182526020909120600d9091020180546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b8c0154600c909c01546001600160a01b039b8c169e50999c50979a9699959860ff95861698949793969092169490939291168d565b6001600160a01b03831660009081526101426020526040812054339060ff1680610f0b57506001600160a01b0384166000908152610142602052604090205460ff165b80610f2f57506001600160a01b0381166000908152610142602052604090205460ff165b610f4b5760405162461bcd60e51b8152600401610ba2906155ea565b610f56858285614052565b610f618585856140cc565b60019150505b9392505050565b610f76613851565b61013480546001600160a01b038781166001600160a01b031992831681179093556101358054888316908416811790915561013680548884169085168117909155610137805488851690861681179091556101338054948816949095169390931790935560408051948552602085019190915283019190915260608201527f8f4c50a92c56a56187104b7e3515437d64cad891103e84ff41d12920e419de209060800160405180910390a17f972ed5c634ef9fc32707219587f15214445640f24be7e7552568de1558b8ebc38160405161105091906152a1565b60405180910390a15050505050565b611067614265565b61106f6139d4565b610140548510158015611085575061013f548511155b6110ca5760405162461bcd60e51b815260206004820152601660248201527553616b653a20496e76616c6964206c6576657261676560501b6044820152606401610ba2565b600086116111295760405162461bcd60e51b815260206004820152602660248201527f53616b653a20616d6f756e74206d7573742062652067726561746572207468616044820152656e207a65726f60d01b6064820152608401610ba2565b61113e6001600160a01b0382163330896142ab565b610132546000906001600160a01b038381169116146111a6576001600160a01b0382166000908152610147602052604090205460ff166111905760405162461bcd60e51b8152600401610ba29061556f565b61119f87868686600187613a2d565b90506111a9565b50855b6000816111b981896103e86142cc565b6111c39190615635565b61013354604051632c6211d160e21b8152600481018390523060248201529192506000916001600160a01b039091169063b1884744906044016020604051808303816000875af115801561121b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123f9190615648565b9050806112835760405162461bcd60e51b815260206004820152601260248201527115d85d195c8e8813195b990819985a5b195960721b6044820152606401610ba2565b600061128f8385615665565b61013454610132549192506112b1916001600160a01b039081169116836143b6565b60006112bb612455565b610134546101325460405163bf6eac2f60e01b81529293506001600160a01b039182169263bf6eac2f926112f89230929116908790600401615678565b600060405180830381600087803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b505050506000611334612455565b905060006113428383615635565b6101355461013754919250611364916001600160a01b039081169116836143b6565b33600090815261014160205260409081902054610135546101375492516356e4bb9760e11b815291926001600160a01b039182169263adc9772e926113af921690869060040161569c565b600060405180830381600087803b1580156113c957600080fd5b505af11580156113dd573d6000803e3d6000fd5b505050506000604051806101a00160405280336001600160a01b031681526020018a81526020018f81526020018481526020016114186121d0565b8152600060208083018290526040808401839052606084018390526080840183905260a0840183905260c084018d905260e084018790526101009093018290523380835261014a82528383208784528252838320429055825261014590529081205491925060ff909116151590036114e95733600081815261014560205260408120805460ff1916600190811790915561013c805491820181559091527fa55c1639d917d7b7cbf3837f1642937d4507076edbe26b1a6008234bb0c495300180546001600160a01b03191690911790555b33600081815261014160209081526040808320805460018082018355918552938390208651600d9095020180546001600160a01b03199081166001600160a01b039687161782559387015191810191909155908501516002820155606085015160038201556080850151600482015560a085015160058201805460ff1990811692151592909217905560c0860151600683015560e086015160078301556101008601516008830180549094169416939093179091556101208401516009820155610140840151600a820155610160840151600b820155610180840151600c90910180549092169015151790556115df9084614454565b336001600160a01b03167f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e8a428660405161161c9392919061523b565b60405180910390a25050505050505050506116376001606555565b505050505050565b600033610aef8185856116528383612dd1565b61165c9190615665565b6138b0565b611669613851565b611671614503565b565b336000908152610144602052604090205460ff166116c95760405162461bcd60e51b81526020600482015260136024820152722737ba1030b63637bbb2b2103a3790313ab93760691b6044820152606401610ba2565b6116d3338261454f565b50565b6116de613851565b816001600160a01b0381166117055760405162461bcd60e51b8152600401610ba290615549565b6001600160a01b0383166000818152610142602052604090819020805460ff1916851515179055517f517f822e464108de7eae872891e1892b76f69daefe64b715b0b844e02ae045ce90610c0490851515815260200190565b611766613851565b610138546040516370a0823160e01b81526000916001600160a01b0316906370a08231906117989030906004016152a1565b602060405180830381865afa1580156117b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d99190615530565b6101355460408051631240d72360e21b815290519293506001600160a01b03909116916349035c8c9160048082019260009290919082900301818387803b15801561182357600080fd5b505af1158015611837573d6000803e3d6000fd5b5050610138546040516370a0823160e01b8152600093506001600160a01b0390911691506370a082319061186f9030906004016152a1565b602060405180830381865afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b09190615530565b61012d549091506118e2906001600160a01b03166118ce8484615635565b610138546001600160a01b03169190613ff0565b61012d54610139546040516370a0823160e01b8152611972926001600160a01b039081169216906370a082319061191d9030906004016152a1565b602060405180830381865afa15801561193a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195e9190615530565b610139546001600160a01b03169190613ff0565b5050565b61197e613851565b6101355460408051634e71d92d60e01b815290516001600160a01b0390921691634e71d92d9160048082019260009290919082900301818387803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b505061012d54610139546040516370a0823160e01b815261167194506001600160a01b0392831693509116906370a082319061191d9030906004016152a1565b6001600160a01b03811660009081526101416020526040812080548291829182919087908110611a4b57611a4b6156b5565b6000918252602091829020604080516101a081018252600d90930290910180546001600160a01b0390811684526001820154948401949094526002810154918301919091526003810154606083015260048101546080830152600581015460ff908116151560a0840152600682015460c0840152600782015460e084015260088201549093166101008301526009810154610120830152600a810154610140830152600b810154610160830152600c01549091161515610180820181905290915080611b1857508060a001515b15611b2e57600080600093509350935050611b64565b6000611b3f87836060015188612926565b6101408401519195509150611b5d81670de0b6b3a7640000876142cc565b9550925050505b9250925092565b611b736139d4565b61014d546001600160a01b03163314611b9e5760405162461bcd60e51b8152600401610ba2906156cb565b6001600160a01b038116600090815261014160205260408120805484908110611bc957611bc96156b5565b60009182526020909120600d90910201600581015490915060ff1615611c2c5760405162461bcd60e51b815260206004820152601860248201527714d85ad94e88105b1c9958591e481b1a5c5d5a59185d195960421b6044820152606401610ba2565b80546001600160a01b0316611c945760405162461bcd60e51b815260206004820152602860248201527f53616b653a206c69717569646174696f6e207265717565737420646f6573206e6044820152671bdd08195e1a5cdd60c21b6064820152608401610ba2565b6000611ca08484611a19565b50509050670d2f13f7789f0000811015611d0a5760405162461bcd60e51b815260206004820152602560248201527f4c69717569646174696f6e205468726573686f6c6420486173204e6f742052656044820152641858da195960da1b6064820152608401610ba2565b6003820154611d198482614671565b6101375461013554600385015460405163095ea7b360e01b81526001600160a01b039384169363095ea7b393611d549391169160040161569c565b6020604051808303816000875af1158015611d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d979190615648565b506000611da2612455565b6101355461013754604051630615339760e51b81529293506001600160a01b039182169263c2a672e092611ddc921690869060040161569c565b600060405180830381600087803b158015611df657600080fd5b505af1158015611e0a573d6000803e3d6000fd5b505050506000611e18612455565b610132546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190611e4f9030906004016152a1565b602060405180830381865afa158015611e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e909190615530565b61013454610132549192506001600160a01b039081169163c2a672e09116611eb88686615635565b6040518363ffffffff1660e01b8152600401611ed592919061569c565b600060405180830381600087803b158015611eef57600080fd5b505af1158015611f03573d6000803e3d6000fd5b5050610132546040516370a0823160e01b8152600093506001600160a01b0390911691506370a0823190611f3b9030906004016152a1565b602060405180830381865afa158015611f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7c9190615530565b90506000611f8a8383615635565b6008890180546001600160a01b0319163317905560058901805460ff19166001179055600a89015490915060009082106120d557600a890154611fcd9083615635565b6101305461013e54919350611fe4918491906142cc565b61013254909150611fff906001600160a01b03163383613ff0565b600061200b8284615635565b9050801561203057895461013254612030916001600160a01b03918216911683613ff0565b61013354600a8b015461013254612055926001600160a01b03918216929116906143b6565b61013354600a8b015460405163015cb0a560e01b81526001600160a01b039092169163015cb0a59161208b91819060040161537e565b6020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190615648565b505061216f565b61013354610132546120f4916001600160a01b039182169116846143b6565b61013354600a8a015460405163015cb0a560e01b81526001600160a01b039092169163015cb0a59161212a91869060040161537e565b6020604051808303816000875af1158015612149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216d9190615648565b505b60408051338152602081018490529081018290528b906001600160a01b038c16907fe086979fec7c5bf71045df524eb3ac4a59b9ed8aec05d1969c844aee1db6fc629060600160405180910390a35050505050505050506119726001606555565b61013454604080516303440bdf60e51b815290516000926001600160a01b0316916368817be09160048083019260209291908290030181865afa158015610b4a573d6000803e3d6000fd5b6001600160a01b0316600090815260c9602052604090205490565b61223e613851565b6116716000614732565b61014d546001600160a01b031633146122735760405162461bcd60e51b8152600401610ba2906156cb565b61197281836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016122a391906152a1565b602060405180830381865afa1580156122c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e49190615530565b6001600160a01b0385169190613ff0565b6122fd613851565b806001600160a01b0381166123245760405162461bcd60e51b8152600401610ba290615549565b5061014d80546001600160a01b0319166001600160a01b0392909216919091179055565b612353823383614052565b611972828261454f565b612365613851565b610138546040516370a0823160e01b81526000916001600160a01b0316906370a08231906123979030906004016152a1565b602060405180830381865afa1580156123b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d89190615530565b61013554610138549192506123fa916001600160a01b039081169116836143b6565b61013554604051636d2225bb60e11b8152600481018390526001600160a01b039091169063da444b7690602401600060405180830381600087803b15801561244157600080fd5b505af1158015610da1573d6000803e3d6000fd5b610137546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610b2d9030906004016152a1565b61248f613851565b611671614784565b61014d546001600160a01b031633146124c25760405162461bcd60e51b8152600401610ba2906156cb565b61012f54610138546040516370a0823160e01b8152611671926001600160a01b039081169216906370a08231906124fd9030906004016152a1565b602060405180830381865afa15801561251a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ce9190615530565b612546613851565b808210156125ad5760405162461bcd60e51b815260206004820152602e60248201527f4d6178206c65766572616765206d75737420626520677265617465722074686160448201526d6e206d696e206c6576657261676560901b6064820152608401610ba2565b61013f8290556101408190556040517f40254bd61c8f9c81b9b18020a0fda4a16c4ac76dfaedbdd61b6a2fc7a59c029f906125eb908490849061537e565b60405180910390a15050565b6125ff613851565b806001600160a01b0381166126265760405162461bcd60e51b8152600401610ba290615549565b61013b80546001600160a01b0319166001600160a01b0384161790556040517fb21afe5ca57ccf9f62bef88b6612992ca3e47e835fbff278e9444419fb09c0ad906125eb9084906152a1565b61267a613851565b816001600160a01b0381166126a15760405162461bcd60e51b8152600401610ba290615549565b61013a80546001600160a01b0319166001600160a01b03851690811790915561013d8390556040518381527f4b6840fc0f11a77523ff55dc04e1d1b2202302f97fed87e335f46f1dcc8f57fc90602001610c04565b6033546001600160a01b031690565b6101355460408051633526931560e01b815290516000926001600160a01b03169163352693159160048083019260209291908290030181865afa158015610b4a573d6000803e3d6000fd5b606060cd8054610a5e906154f6565b61013c818154811061277057600080fd5b6000918252602090912001546001600160a01b0316905081565b600033816127988286612dd1565b9050838110156127f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ba2565b61280582868684036138b0565b506001949350505050565b336000818152610142602052604081205490919060ff168061284b57506001600160a01b0384166000908152610142602052604090205460ff165b6128675760405162461bcd60e51b8152600401610ba2906155ea565b610aef8185856140cc565b61287a613851565b61013554604051635b33701960e11b81526001600160a01b039091169063b666e032906128b19087908790879087906004016156f0565b600060405180830381600087803b1580156128cb57600080fd5b505af11580156128df573d6000803e3d6000fd5b505050507f358c913a7169870a25695e643a0c0ef3739a8c76b886ada8ec074f3470ee2e0a8484848460405161291894939291906156f0565b60405180910390a150505050565b6001600160a01b03811660009081526101416020526040812080548291829187908110612955576129556156b5565b60009182526020808320604080516101a081018252600d90940290910180546001600160a01b0390811685526001820154938501939093526002810154918401919091526003810154606084015260048101546080840152600581015460ff908116151560a0850152600682015460c0850152600782015460e085015260088201549092166101008401526009810154610120840152600a810154610140840152600b810154610160840152600c015416151561018082015291508515612a1c5785612a22565b81606001515b9050612a3581612a306121d0565b6147c1565b612a438284608001516147c1565b935093505050935093915050565b600054610100900460ff1615808015612a715750600054600160ff909116105b80612a925750612a80306147e1565b158015612a92575060005460ff166001145b612af55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ba2565b6000805460ff191660011790558015612b18576000805461ff0019166101001790555b6001600160a01b03871615801590612b3857506001600160a01b03861615155b8015612b4c57506001600160a01b03851615155b8015612b6057506001600160a01b03841615155b8015612b7457506001600160a01b03831615155b8015612b8857506001600160a01b03821615155b612ba45760405162461bcd60e51b8152600401610ba290615549565b61013280546001600160a01b03199081166001600160a01b038a81169190911790925561013380548216898416179055610134805482168884161790556101358054821687841690811790915561013680548316878516179055610137805490921692851692909217905560408051632731e0d760e01b81529051632731e0d7916004808201926020929091908290030181865afa158015612c4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6e9190615711565b61013880546001600160a01b0319166001600160a01b0392831617905560408051633e0dbc3960e01b8152905191861691633e0dbc39916004808201926020929091908290030181865afa158015612cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cee9190615711565b61013980546001600160a01b0319166001600160a01b0392909216919091179055620186a061013e5561271061013f556107d061014055612d2d6147f0565b612d3561481f565b612d3d61484e565b612d826040518060400160405280600781526020016614d85ad95413d160ca1b8152506040518060400160405280600481526020016314d413d160e21b81525061487d565b8015612dc8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b606061013c805480602002602001604051908101604052809291908181526020018280548015610ad757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612e37575050505050905090565b6101355460405163402914f560e01b81526000916001600160a01b03169063402914f590610b2d9030906004016152a1565b612e98613851565b6001600160a01b038116612efd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ba2565b6116d381614732565b612f0e613851565b61014e55565b6001600160a01b03821660009081526101416020526040902054839083908210612f805760405162461bcd60e51b815260206004820152601d60248201527f53616b653a20706f736974696f6e4944206973206e6f742076616c69640000006044820152606401610ba2565b612f886139d4565b6001600160a01b038416600090815261014160205260408120805487908110612fb357612fb36156b5565b60009182526020909120600d90910201600581015490915060ff161561301a5760405162461bcd60e51b815260206004820152601c60248201527b14d85ad94e881c1bdcda5d1a5bdb881a5cc81b1a5c5d5a59185d195960221b6044820152606401610ba2565b600c81015460ff161561306a5760405162461bcd60e51b815260206004820152601860248201527714d85ad94e881c1bdcda5d1a5bdb881a5cc810db1bdcd95960421b6044820152606401610ba2565b600081600301541161308e5760405162461bcd60e51b8152600401610ba2906155a5565b336000908152610143602052604090205460ff16806130b6575080546001600160a01b031633145b61310e5760405162461bcd60e51b815260206004820152602360248201527f53414b453a206e6f7420616c6c6f77656420746f20636c6f736520706f73697460448201526234b7b760e91b6064820152608401610ba2565b336000908152610143602052604090205460ff16156131a55761014e546001600160a01b038616600090815261014a602090815260408083208a845290915290205461315a9190615665565b4210156131a55760405162461bcd60e51b815260206004820152601960248201527853414b453a5761697420666f72204d6174757265206461746560381b6044820152606401610ba2565b6131ad614eeb565b6131f560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6131fd614eeb565b6132078989611a19565b602085015250808352670d2f13f7789f00001161325d5760405162461bcd60e51b81526020600482015260146024820152732bb0b4ba103337b9103634b8bab4b230ba34b7b760611b6044820152606401610ba2565b6003840154808252845461327c916001600160a01b0390911690614671565b61328984600301546148ae565b506040830152600a84015460018501546000916132a591615665565b600c8601805460ff1916600117905560408401519091508110156132d9578083604001516132d39190615635565b60208501525b600083602001518460400151101561331957506008850180546001600160a01b0319163317905560058501805460ff19166001179055604083015161337f565b6020850151156133455761333585602001518760020154614ad3565b606087015260c086015260a08501525b50602083015160c084015160a08501516040860151613365908490615635565b61336f9190615635565b6133799190615635565b60e08501525b610133546101325461339e916001600160a01b039182169116836143b6565b61013354600a87015460405163015cb0a560e01b81526001600160a01b039092169163015cb0a5916133d491859060040161537e565b6020604051808303816000875af11580156133f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134179190615648565b15156060860152600586015460ff161561343657505050505050613675565b60a0840151156134655761012f5460a085015161013254613465926001600160a01b0391821692911690613ff0565b60c0840151156134945761014c5460c085015161013254613494926001600160a01b0391821692911690613ff0565b61012e54600090156134f35761012e5461013e5460e08701516000926134b9926142cc565b61012d54610132549192506134db916001600160a01b03908116911683613ff0565b808660e001516134eb9190615635565b9150506134fa565b5060e08401515b891561351d5761013254613518906001600160a01b03168c83613ff0565b6135ed565b8061014960008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002081905550600161014860008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060006101000a81548160ff0219169083151502179055508a6001600160a01b03167f1619bf864f3c9eb588f44859b87dc90dae33d7c93b447467351b783df2aa42b3826040516135e491815260200190565b60405180910390a25b84604001518760070160008282546136059190615665565b92505081905550808760090160008282546136209190615665565b909155505083516040516001600160a01b038d16917f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca949161366591859142919061523b565b60405180910390a2505050505050505b610da16001606555565b613687613851565b866001600160a01b0381166136ae5760405162461bcd60e51b8152600401610ba290615549565b856001600160a01b0381166136d55760405162461bcd60e51b8152600401610ba290615549565b61013e5488111580156136e85750606485105b6137235760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610ba2565b61271084111561376b5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081b51995954195c98d95b9d606a1b6044820152606401610ba2565b61012d80546001600160a01b03808c166001600160a01b03199283161790925561012e8a905561012f80548a841690831617905561013088905561013187905561014c80549286169290911691909117905561014b8490556040517f6172d4892352963ac47905f316acac8008e4817561fc256d88f6a75a43f9d65b906137fb908b908b908b908b908b906152b5565b60405180910390a1505050505050505050565b613816613851565b61012d54610139546040516370a0823160e01b8152611671926001600160a01b039081169216906370a082319061191d9030906004016152a1565b3361385a6126f6565b6001600160a01b0316146116715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ba2565b6001600160a01b0383166139125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ba2565b6001600160a01b0382166139735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ba2565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600260655403613a265760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ba2565b6002606555565b6000613aa760405180610160016040528060006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160608152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b8415613ad6576000613abc876004818b61572e565b810190613ac99190615a7d565b50909350613afa92505050565b6000613ae5876004818b61572e565b810190613af29190615b17565b606001519150505b60c08101516001600160a01b03163014613b565760405162461bcd60e51b815260206004820152601e60248201527f5265636569766572206d757374206265207468697320636f6e747261637400006044820152606401610ba2565b878160e0015114613ba35760405162461bcd60e51b81526020600482015260176024820152760a6eec2e040c2dadeeadce8e640daeae6e840dac2e8c6d604b1b6044820152606401610ba2565b60008060008615613d89576101325460208501516001600160a01b03908116911614613be15760405162461bcd60e51b8152600401610ba290615bed565b856001600160a01b031684600001516001600160a01b031614613c165760405162461bcd60e51b8152600401610ba290615c33565b610132546040516370a0823160e01b81526001600160a01b03909116906370a0823190613c479030906004016152a1565b602060405180830381865afa158015613c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c889190615530565b61013b5460e0860151919450613cab916001600160a01b038981169216906143b6565b61013b546040516001600160a01b0390911690613ccb908c908c90615c78565b6000604051808303816000865af19150503d8060008114613d08576040519150601f19603f3d011682016040523d82523d6000602084013e613d0d565b606091505b5050610132546040516370a0823160e01b81529192506001600160a01b0316906370a0823190613d419030906004016152a1565b602060405180830381865afa158015613d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d829190615530565b9150613f59565b856001600160a01b031684602001516001600160a01b031614613dbe5760405162461bcd60e51b8152600401610ba290615bed565b6101325484516001600160a01b03908116911614613dee5760405162461bcd60e51b8152600401610ba290615c33565b6040516370a0823160e01b81526001600160a01b038716906370a0823190613e1a9030906004016152a1565b602060405180830381865afa158015613e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5b9190615530565b61013b5460e086015161013254929550613e82926001600160a01b039081169216906143b6565b61013b546040516001600160a01b0390911690613ea2908c908c90615c78565b6000604051808303816000865af19150503d8060008114613edf576040519150601f19603f3d011682016040523d82523d6000602084013e613ee4565b606091505b50506040516370a0823160e01b81529091506001600160a01b038716906370a0823190613f159030906004016152a1565b602060405180830381865afa158015613f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f569190615530565b91505b80613f945760405162461bcd60e51b815260206004820152600b60248201526a14ddd85c0819985a5b195960aa1b6044820152606401610ba2565b828211613fd75760405162461bcd60e51b815260206004820152601160248201527014d052d14e8814ddd85c0819985a5b1959607a1b6044820152606401610ba2565b613fe18383615635565b9b9a5050505050505050505050565b6140468363a9059cbb60e01b848460405160240161400f92919061569c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614b75565b505050565b6001606555565b600061405e8484612dd1565b905060001981146140c657818110156140b95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ba2565b6140c684848484036138b0565b50505050565b6001600160a01b0383166141305760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ba2565b6001600160a01b0382166141925760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ba2565b6001600160a01b038316600090815260c960205260409020548181101561420a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ba2565b6001600160a01b03808516600081815260c960205260408082208686039055928616808252908390208054860190559151600080516020615e44833981519152906142589086815260200190565b60405180910390a36140c6565b60975460ff16156116715760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610ba2565b6140c6846323b872dd60e01b85858560405160240161400f93929190615678565b6000808060001985870985870292508281108382030391505080600003614306578382816142fc576142fc615c88565b0492505050610f67565b80841161434d5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610ba2565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015614406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061442a9190615530565b90506140c68463095ea7b360e01b856144438686615665565b60405160240161400f92919061569c565b6001600160a01b0382166144aa5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ba2565b8060cb60008282546144bc9190615665565b90915550506001600160a01b038216600081815260c96020908152604080832080548601905551848152600080516020615e44833981519152910160405180910390a35050565b61450b614c4a565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405161454591906152a1565b60405180910390a1565b6001600160a01b0382166145af5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ba2565b6001600160a01b038216600090815260c96020526040902054818110156146235760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ba2565b6001600160a01b038316600081815260c960209081526040808320868603905560cb8054879003905551858152919291600080516020615e44833981519152910160405180910390a3505050565b61013a546001600160a01b03161561235357600061468e8361221b565b90508181106146a157614046838361454f565b6146ab838261454f565b60006146b78284615635565b61013a5461013d546040516362e69a4d60e11b815260048101919091526001600160a01b0387811660248301526044820184905292935091169063c5cd349a90606401600060405180830381600087803b15801561471457600080fd5b505af1158015614728573d6000803e3d6000fd5b5050505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61478c614265565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586145383390565b6000610f676147d183600a615c9e565b8490670de0b6b3a76400006142cc565b6001600160a01b03163b151590565b600054610100900460ff166148175760405162461bcd60e51b8152600401610ba290615cb5565b611671614c93565b600054610100900460ff166148465760405162461bcd60e51b8152600401610ba290615cb5565b611671614cc3565b600054610100900460ff166148755760405162461bcd60e51b8152600401610ba290615cb5565b611671614cf6565b600054610100900460ff166148a45760405162461bcd60e51b8152600401610ba290615cb5565b6119728282614d1d565b610135546101375460009182916148d2916001600160a01b039182169116856143b6565b60006148dc612455565b6101355461013754604051630615339760e51b81529293506001600160a01b039182169263c2a672e092614916921690889060040161569c565b600060405180830381600087803b15801561493057600080fd5b505af1158015614944573d6000803e3d6000fd5b505050506000614952612455565b610132546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906149899030906004016152a1565b602060405180830381865afa1580156149a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149ca9190615530565b905060006149d88484615635565b6101345461013254604051630615339760e51b81529293506001600160a01b039182169263c2a672e092614a12921690859060040161569c565b600060405180830381600087803b158015614a2c57600080fd5b505af1158015614a40573d6000803e3d6000fd5b5050610132546040516370a0823160e01b8152600093506001600160a01b0390911691506370a0823190614a789030906004016152a1565b602060405180830381865afa158015614a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ab99190615530565b9050614ac58382615635565b989197509095505050505050565b600080600080606461012d60040154612710614aef9190615c9e565b61013154614afe908890615c9e565b614b089190615665565b614b129190615d00565b90506000612710614b238389615c9e565b614b2d9190615d00565b9050600061271061014b5489614b439190615c9e565b614b4d9190615d00565b90506000614b5b8284615665565b614b65908a615635565b9299919850919650945050505050565b6000614bca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614d5d9092919063ffffffff16565b9050805160001480614beb575080806020019051810190614beb9190615648565b6140465760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ba2565b60975460ff166116715760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610ba2565b600054610100900460ff16614cba5760405162461bcd60e51b8152600401610ba290615cb5565b61167133614732565b600054610100900460ff16614cea5760405162461bcd60e51b8152600401610ba290615cb5565b6097805460ff19169055565b600054610100900460ff1661404b5760405162461bcd60e51b8152600401610ba290615cb5565b600054610100900460ff16614d445760405162461bcd60e51b8152600401610ba290615cb5565b60cc614d508382615d68565b5060cd6140468282615d68565b6060614d6c8484600085614d74565b949350505050565b606082471015614dd55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ba2565b600080866001600160a01b03168587604051614df19190615e27565b60006040518083038185875af1925050503d8060008114614e2e576040519150601f19603f3d011682016040523d82523d6000602084013e614e33565b606091505b5091509150614e4487838387614e4f565b979650505050505050565b60608315614ebc578251600003614eb557614e69856147e1565b614eb55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ba2565b5081614d6c565b614d6c8383815115614ed15781518083602001fd5b8060405162461bcd60e51b8152600401610ba29190614fa7565b604051806080016040528060008152602001600081526020016000151581526020016000151581525090565b6001600160a01b03811681146116d357600080fd5b8035614f3781614f17565b919050565b80151581146116d357600080fd5b60008060408385031215614f5d57600080fd5b8235614f6881614f17565b91506020830135614f7881614f3c565b809150509250929050565b60005b83811015614f9e578181015183820152602001614f86565b50506000910152565b6020815260008251806020840152614fc6816040850160208701614f83565b601f01601f19169190910160400192915050565b60008060408385031215614fed57600080fd5b8235614ff881614f17565b946020939093013593505050565b60008083601f84011261501857600080fd5b5081356001600160401b0381111561502f57600080fd5b60208301915083602082850101111561504757600080fd5b9250929050565b60008060008060006080868803121561506657600080fd5b8535945060208601356001600160401b0381111561508357600080fd5b61508f88828901615006565b90955093505060408601356150a381614f3c565b915060608601356150b381614f17565b809150509295509295909350565b6000806000606084860312156150d657600080fd5b83356150e181614f17565b925060208401356150f181614f17565b929592945050506040919091013590565b600080600080600060a0868803121561511a57600080fd5b853561512581614f17565b9450602086013561513581614f17565b9350604086013561514581614f17565b9250606086013561515581614f17565b915060808601356150b381614f17565b60006020828403121561517757600080fd5b8135610f6781614f17565b60008060008060008060a0878903121561519b57600080fd5b863595506020870135945060408701356001600160401b038111156151bf57600080fd5b6151cb89828a01615006565b90955093505060608701356151df81614f3c565b915060808701356151ef81614f17565b809150509295509295509295565b60006020828403121561520f57600080fd5b5035919050565b6000806040838503121561522957600080fd5b823591506020830135614f7881614f17565b9283526020830191909152604082015260600190565b6000806040838503121561526457600080fd5b823561526f81614f17565b91506020830135614f7881614f17565b6000806040838503121561529257600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b6001600160a01b03958616815260208101949094529190931660408301526060820192909252608081019190915260a00190565b600080600080608085870312156152ff57600080fd5b843561530a81614f3c565b9350602085013561531a81614f3c565b9250604085013561532a81614f3c565b9150606085013561533a81614f3c565b939692955090935050565b60008060006060848603121561535a57600080fd5b8335925060208401359150604084013561537381614f17565b809150509250925092565b918252602082015260400190565b60008060008060008060c087890312156153a557600080fd5b86356153b081614f17565b955060208701356153c081614f17565b945060408701356153d081614f17565b935060608701356153e081614f17565b925060808701356153f081614f17565b915060a08701356151ef81614f17565b6020808252825182820181905260009190848201906040850190845b818110156154415783516001600160a01b03168352928401929184019160010161541c565b50909695505050505050565b60008060006060848603121561546257600080fd5b83359250602084013561547481614f17565b9150604084013561537381614f3c565b600080600080600080600060e0888a03121561549f57600080fd5b87356154aa81614f17565b96506020880135955060408801356154c181614f17565b9450606088013593506080880135925060a0880135915060c08801356154e681614f17565b8091505092959891949750929550565b600181811c9082168061550a57607f821691505b60208210810361552a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561554257600080fd5b5051919050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b6020808252601c908201527b29b0b5b29d1024b73b30b634b21030b9b9b2ba399031b437b7b9b2b760211b604082015260600190565b60208082526025908201527f53616b653a20706f736974696f6e206973206e6f7420656e6f75676820746f20604082015264636c6f736560d81b606082015260800190565b6020808252601b908201527a115490cc8c0e881d1c985b9cd9995c881b9bdd08185b1b1bddd959602a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610af557610af561561f565b60006020828403121561565a57600080fd5b8151610f6781614f3c565b80820180821115610af557610af561561f565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6020808252600b908201526a27b7363c9025b2b2b832b960a91b604082015260600190565b93151584529115156020840152151560408301521515606082015260800190565b60006020828403121561572357600080fd5b8151610f6781614f17565b6000808585111561573e57600080fd5b8386111561574b57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b038111828210171561579157615791615758565b60405290565b60405160a081016001600160401b038111828210171561579157615791615758565b604051601f8201601f191681016001600160401b03811182821017156157e1576157e1615758565b604052919050565b60006001600160401b0382111561580257615802615758565b5060051b60200190565b600082601f83011261581d57600080fd5b8135602061583261582d836157e9565b6157b9565b82815260059290921b8401810191818101908684111561585157600080fd5b8286015b8481101561587557803561586881614f17565b8352918301918301615855565b509695505050505050565b600082601f83011261589157600080fd5b813560206158a161582d836157e9565b82815260059290921b840181019181810190868411156158c057600080fd5b8286015b8481101561587557803583529183019183016158c4565b600082601f8301126158ec57600080fd5b81356001600160401b0381111561590557615905615758565b615918601f8201601f19166020016157b9565b81815284602083860101111561592d57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610160828403121561595d57600080fd5b61596561576e565b905061597082614f2c565b815261597e60208301614f2c565b602082015260408201356001600160401b038082111561599d57600080fd5b6159a98583860161580c565b604084015260608401359150808211156159c257600080fd5b6159ce85838601615880565b606084015260808401359150808211156159e757600080fd5b6159f38583860161580c565b608084015260a0840135915080821115615a0c57600080fd5b615a1885838601615880565b60a0840152615a2960c08501614f2c565b60c084015260e084810135908401526101008085013590840152610120808501359084015261014091508184013581811115615a6457600080fd5b615a70868287016158db565b8385015250505092915050565b60008060008060808587031215615a9357600080fd5b8435615a9e81614f17565b935060208501356001600160401b0380821115615aba57600080fd5b615ac68883890161594a565b94506040870135915080821115615adc57600080fd5b615ae8888389016158db565b93506060870135915080821115615afe57600080fd5b50615b0b878288016158db565b91505092959194509250565b600060208284031215615b2957600080fd5b81356001600160401b0380821115615b4057600080fd5b9083019060a08286031215615b5457600080fd5b615b5c615797565b615b6583614f2c565b8152615b7360208401614f2c565b6020820152604083013582811115615b8a57600080fd5b615b96878286016158db565b604083015250606083013582811115615bae57600080fd5b615bba8782860161594a565b606083015250608083013582811115615bd257600080fd5b615bde878286016158db565b60808301525095945050505050565b60208082526026908201527f4f7574707574206d757374206265207468652073616d65206173205f696e70756040820152651d105cdcd95d60d21b606082015260800190565b60208082526025908201527f496e707574206d757374206265207468652073616d65206173205f696e707574604082015264105cdcd95d60da1b606082015260800190565b8183823760009101908152919050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610af557610af561561f565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082615d1d57634e487b7160e01b600052601260045260246000fd5b500490565b601f82111561404657600081815260208120601f850160051c81016020861015615d495750805b601f850160051c820191505b8181101561163757828155600101615d55565b81516001600160401b03811115615d8157615d81615758565b615d9581615d8f84546154f6565b84615d22565b602080601f831160018114615dca5760008415615db25750858301515b600019600386901b1c1916600185901b178555611637565b600085815260208120601f198616915b82811015615df957888601518255948401946001909101908401615dda565b5085821015615e175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615e39818460208701614f83565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a6391b5a41fae782f8fda00033760d0033fa1b649f2b5d54a3f013007406352b64736f6c63430008120033