0 txs
3 calls
constructor
constructor(address _vault, address _tradeFactory, uint256 _fraxPid, address _stakingAddress, uint256 _harvestProfitMinInUsdc, uint256 _harvestProfitMaxInUsdc, address _booster)
functions
apiVersion
purefunction apiVersion() pure returns (string)
balanceOfWant
viewfunction balanceOfWant() view returns (uint256 wantBalance)
baseFeeOracle
viewfunction baseFeeOracle() view returns (address)
claimableProfitInUsdc
viewfunction claimableProfitInUsdc() view returns (uint256)
convexToken
viewfunction convexToken() view returns (address)
convexVoter
viewfunction convexVoter() view returns (address)
creditThreshold
viewfunction creditThreshold() view returns (uint256)
crv
viewfunction crv() view returns (address)
curveVoter
viewfunction curveVoter() view returns (address)
delegatedAssets
viewfunction delegatedAssets() view returns (uint256)
depositInfo
viewfunction depositInfo() view returns (uint120 minDeposit, uint120 maxSingleDeposit, bool addToExistingKeks)
doHealthCheck
viewfunction doHealthCheck() view returns (bool)
emergencyExit
viewfunction emergencyExit() view returns (bool)
estimatedTotalAssets
viewfunction estimatedTotalAssets() view returns (uint256 totalAssets)
ethToWant
viewfunction ethToWant(uint256 _ethAmount) view returns (uint256)
forceHarvestTriggerOnce
viewfunction forceHarvestTriggerOnce() view returns (bool)
fraxBooster
viewfunction fraxBooster() view returns (address)
fraxPid
viewfunction fraxPid() view returns (uint256)
fraxVoter
viewfunction fraxVoter() view returns (address)
fxs
viewfunction fxs() view returns (address)
getEarnedTokens
viewfunction getEarnedTokens() view returns (address[] tokenAddresses, uint256[] tokenAmounts)
harvestProfitMaxInUsdc
viewfunction harvestProfitMaxInUsdc() view returns (uint256)
harvestProfitMinInUsdc
viewfunction harvestProfitMinInUsdc() view returns (uint256)
harvestTrigger
viewfunction harvestTrigger(uint256 _callCostinEth) view returns (bool)
healthCheck
viewfunction healthCheck() view returns (address)
isActive
viewfunction isActive() view returns (bool)
isBaseFeeAcceptable
viewfunction isBaseFeeAcceptable() view returns (bool)
isOriginal
viewfunction isOriginal() view returns (bool)
keeper
viewfunction keeper() view returns (address)
kekInfo
viewfunction kekInfo() view returns (uint128 maxKeks, uint128 nextKek)
lastDeposit
viewfunction lastDeposit() view returns (uint256)
localKeepCRV
viewfunction localKeepCRV() view returns (uint256)
localKeepCVX
viewfunction localKeepCVX() view returns (uint256)
localKeepFXS
viewfunction localKeepFXS() view returns (uint256)
lockTime
viewfunction lockTime() view returns (uint256)
maxReportDelay
viewfunction maxReportDelay() view returns (uint256)
metadataURI
viewfunction metadataURI() view returns (string)
minReportDelay
viewfunction minReportDelay() view returns (uint256)
name
viewfunction name() view returns (string strategyName)
rewards
viewfunction rewards() view returns (address)
rewardsTokens
viewfunction rewardsTokens(uint256) view returns (address)
stakedBalance
viewfunction stakedBalance() view returns (uint256 balanceStaked)
stakingAddress
viewfunction stakingAddress() view returns (address)
stillLockedStake
viewfunction stillLockedStake() view returns (uint256 stillLocked)
strategist
viewfunction strategist() view returns (address)
tendTrigger
viewfunction tendTrigger(uint256 callCostInWei) view returns (bool)
tradeFactory
viewfunction tradeFactory() view returns (address)
userVault
viewfunction userVault() view returns (address)
vault
viewfunction vault() view returns (address)
want
viewfunction want() view returns (address)
cloneStrategyConvexFrax
nonpayablefunction cloneStrategyConvexFrax(address _vault, address _strategist, address _rewards, address _keeper, address _tradeFactory, uint256 _fraxPid, address _stakingAddress, uint256 _harvestProfitMinInUsdc, uint256 _harvestProfitMaxInUsdc, address _booster) returns (address newStrategy)
harvest
nonpayablefunction harvest()
initialize
nonpayablefunction initialize(address _vault, address _strategist, address _rewards, address _keeper, address _tradeFactory, uint256 _fraxPid, address _stakingAddress, uint256 _harvestProfitMinInUsdc, uint256 _harvestProfitMaxInUsdc, address _booster)
manualWithdraw
nonpayablefunction manualWithdraw(uint256 _index)
migrate
nonpayablefunction migrate(address _newStrategy)
removeTradeFactoryPermissions
nonpayablefunction removeTradeFactoryPermissions(bool _disableTf)
setBaseFeeOracle
nonpayablefunction setBaseFeeOracle(address _baseFeeOracle)
setCreditThreshold
nonpayablefunction setCreditThreshold(uint256 _creditThreshold)
setDepositParams
nonpayablefunction setDepositParams(uint120 _minDeposit, uint120 _maxSingleDeposit, bool _addToExistingKeks)
setDoHealthCheck
nonpayablefunction setDoHealthCheck(bool _doHealthCheck)
setEmergencyExit
nonpayablefunction setEmergencyExit()
setForceHarvestTriggerOnce
nonpayablefunction setForceHarvestTriggerOnce(bool _forceHarvestTriggerOnce)
setHarvestTriggerParams
nonpayablefunction setHarvestTriggerParams(uint256 _harvestProfitMinInUsdc, uint256 _harvestProfitMaxInUsdc)
setHealthCheck
nonpayablefunction setHealthCheck(address _healthCheck)
setKeeper
nonpayablefunction setKeeper(address _keeper)
setLocalKeepCrvs
nonpayablefunction setLocalKeepCrvs(uint256 _keepCrv, uint256 _keepCvx, uint256 _keepFxs)
setLockTime
nonpayablefunction setLockTime(uint256 _lockTime)
setMaxKeks
nonpayablefunction setMaxKeks(uint256 _newMaxKeks)
setMaxReportDelay
nonpayablefunction setMaxReportDelay(uint256 _delay)
setMetadataURI
nonpayablefunction setMetadataURI(string _metadataURI)
setMinReportDelay
nonpayablefunction setMinReportDelay(uint256 _delay)
setRewards
nonpayablefunction setRewards(address _rewards)
setStrategist
nonpayablefunction setStrategist(address _strategist)
setVoters
nonpayablefunction setVoters(address _curveVoter, address _convexVoter, address _convexFraxVoter)
sweep
nonpayablefunction sweep(address _token)
tend
nonpayablefunction tend()
updateRewards
nonpayablefunction updateRewards()
updateTradeFactory
nonpayablefunction updateTradeFactory(address _newTradeFactory)
withdraw
nonpayablefunction withdraw(uint256 _amountNeeded) returns (uint256 _loss)
events
Cloned
event Cloned(address indexed clone)
EmergencyExitEnabled
event EmergencyExitEnabled()
ForcedHarvestTrigger
event ForcedHarvestTrigger(bool triggerState)
Harvested
event Harvested(uint256 profit, uint256 loss, uint256 debtPayment, uint256 debtOutstanding)
SetDoHealthCheck
event SetDoHealthCheck(bool)
SetHealthCheck
event SetHealthCheck(address)
UpdatedBaseFeeOracle
event UpdatedBaseFeeOracle(address baseFeeOracle)
UpdatedCreditThreshold
event UpdatedCreditThreshold(uint256 creditThreshold)
UpdatedKeeper
event UpdatedKeeper(address newKeeper)
UpdatedMaxReportDelay
event UpdatedMaxReportDelay(uint256 delay)
UpdatedMetadataURI
event UpdatedMetadataURI(string metadataURI)
UpdatedMinReportDelay
event UpdatedMinReportDelay(uint256 delay)
UpdatedRewards
event UpdatedRewards(address rewards)
UpdatedStrategist
event UpdatedStrategist(address newStrategist)
errors
No errors.
creation bytecode
0x6080604052601c805460ff191660011790553480156200001e57600080fd5b506040516200715838038062007158833981016040819052620000419162001198565b8662000050813380806200006e565b5062000061868686868686620002cd565b505050505050506200169a565b6006546001600160a01b031615620000cd5760405162461bcd60e51b815260206004820152601c60248201527f537472617465677920616c726561647920696e697469616c697a65640000000060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b03861690811790915560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa15801562000127573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014d919062001212565b600680546001600160a01b0319166001600160a01b039290921691821790556200017b908560001962000702565b600380546001600160a01b038086166001600160a01b031992831617909255600480548584169083161781556005805485851693169290921790915562278d006008556002546040805163313ce56760e01b81529051919093169263313ce56792818101926020929091908290030181865afa15801562000200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000226919062001237565b6200023390600a62001366565b6200024290620f424062001374565b600a556002546004805460405163095ea7b360e01b81526001600160a01b039182169281019290925260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015620002a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c691906200138e565b5050505050565b600b5461010090046001600160a01b0316156200032d5760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401620000c4565b601a80546001600160a01b03199081166001600160a01b0389811691909117909255600d879055600c805490911686831617905560188490556019839055600b8054610100600160a81b031916610100928416928302179055604051639abbdf4b60e01b815260048101879052639abbdf4b906024016020604051808303816000875af1158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062001212565b600e80546001600160a01b0319166001600160a01b039290921691821790556040805163923c1d6160e01b8152905163923c1d61916004808201926020929091908290030181865afa15801562000444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046a919062001212565b601680546001600160a01b0319166001600160a01b03928316179055600e5460408051636a4874a160e01b815290519190921691636a4874a19160048083019260209291908290030181865afa158015620004c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ef919062001212565b601580546001600160a01b0319166001600160a01b03928316179055600e5460408051633ea11a2360e11b815290519190921691637d4234469160048083019260209291908290030181865afa1580156200054e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000574919062001212565b601780546001600160a01b0319166001600160a01b03928316179055600654600e5460405163095ea7b360e01b81529083166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620005df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060591906200138e565b506301e13380600855690a968163f0a57b400000600a55602080546001600160801b0319166005178155600c5460408051636e27cef960e01b815290516001600160a01b0390921692636e27cef9926004808401938290030181865afa15801562000674573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200069a919062001237565b601e55601f80547fff00000000000000000000000000000000000000000000000000000000000000167e01000000000069e10de76676d0800000000000000000056bc75e2d63100000179055620006f062000851565b620006fa6200091c565b505050505050565b801580620007805750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000758573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200077e919062001237565b155b620007f45760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401620000c4565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526200084c91859162000d0616565b505050565b6200085f601b60006200113d565b60006200086b62000dda565b5080519091506003811115620009185760015b6200088b600283620013b2565b8110156200084c576000838281518110620008aa57620008aa620013c8565b6020908102919091010151601b80546001810182556000919091527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10180546001600160a01b0319166001600160a01b03909216919091179055506200091081620013de565b90506200087e565b5050565b601a5460065460155460405163095ea7b360e01b81526001600160a01b0393841660048201819052600019602483015293928316928492169063095ea7b3906044016020604051808303816000875af11580156200097e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009a491906200138e565b50601554604051632642a09360e11b81526001600160a01b039182166004820152838216602482015290821690634c85412690604401600060405180830381600087803b158015620009f557600080fd5b505af115801562000a0a573d6000803e3d6000fd5b5050505060005b601b5481101562000b36576000601b828154811062000a345762000a34620013c8565b60009182526020909120015460405163095ea7b360e01b81526001600160a01b03878116600483015260001960248301529091169150819063095ea7b3906044016020604051808303816000875af115801562000a95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000abb91906200138e565b50604051632642a09360e11b81526001600160a01b0382811660048301528581166024830152841690634c85412690604401600060405180830381600087803b15801562000b0857600080fd5b505af115801562000b1d573d6000803e3d6000fd5b50505050508062000b2e90620013de565b905062000a11565b5060165460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000b8c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bb291906200138e565b50601654604051632642a09360e11b81526001600160a01b039182166004820152838216602482015290821690634c85412690604401600060405180830381600087803b15801562000c0357600080fd5b505af115801562000c18573d6000803e3d6000fd5b505060175460405163095ea7b360e01b81526001600160a01b0387811660048301526000196024830152909116925063095ea7b391506044016020604051808303816000875af115801562000c71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c9791906200138e565b50601754604051632642a09360e11b81526001600160a01b039182166004820152838216602482015290821690634c85412690604401600060405180830381600087803b15801562000ce857600080fd5b505af115801562000cfd573d6000803e3d6000fd5b50505050505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649082015260009062000d55906001600160a01b03851690849062000f99565b905080516000148062000d7957508080602001905181019062000d7991906200138e565b6200084c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620000c4565b60408051600481526024810182526020810180516001600160e01b0316636b78c93160e11b179052600e54915160609283929160009182916001600160a01b039091169062000e2b90859062001420565b600060405180830381855afa9150503d806000811462000e68576040519150601f19603f3d011682016040523d82523d6000602084013e62000e6d565b606091505b5091509150811562000e9a578080602001905181019062000e8f91906200158b565b909550935062000f92565b600c54600e546040516246613160e11b81526001600160a01b039182166004820152911690628cc26290602401600060405180830381865afa15801562000ee5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f0f9190810190620015f5565b9350600c60009054906101000a90046001600160a01b03166001600160a01b03166312edb24c6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000f65573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f8f91908101906200162d565b94505b5050509091565b606062000faa848460008562000fb2565b949350505050565b606082471015620010155760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401620000c4565b600080866001600160a01b0316858760405162001033919062001420565b60006040518083038185875af1925050503d806000811462001072576040519150601f19603f3d011682016040523d82523d6000602084013e62001077565b606091505b5090925090506200108b8783838762001096565b979650505050505050565b606083156200110a57825160000362001102576001600160a01b0385163b620011025760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620000c4565b508162000faa565b62000faa8383815115620011215781518083602001fd5b8060405162461bcd60e51b8152600401620000c4919062001665565b50805460008255906000526020600020908101906200115d919062001160565b50565b5b8082111562001177576000815560010162001161565b5090565b80516001600160a01b03811681146200119357600080fd5b919050565b600080600080600080600060e0888a031215620011b457600080fd5b620011bf886200117b565b9650620011cf602089016200117b565b955060408801519450620011e6606089016200117b565b93506080880151925060a088015191506200120460c089016200117b565b905092959891949750929550565b6000602082840312156200122557600080fd5b62001230826200117b565b9392505050565b6000602082840312156200124a57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620012a85781600019048211156200128c576200128c62001251565b808516156200129a57918102915b93841c93908002906200126c565b509250929050565b600082620012c15750600162001360565b81620012d05750600062001360565b8160018114620012e95760028114620012f45762001314565b600191505062001360565b60ff84111562001308576200130862001251565b50506001821b62001360565b5060208310610133831016604e8410600b841016171562001339575081810a62001360565b62001345838362001267565b80600019048211156200135c576200135c62001251565b0290505b92915050565b6000620012308383620012b0565b808202811582820484141762001360576200136062001251565b600060208284031215620013a157600080fd5b815180151581146200123057600080fd5b8181038181111562001360576200136062001251565b634e487b7160e01b600052603260045260246000fd5b600060018201620013f357620013f362001251565b5060010190565b60005b8381101562001417578181015183820152602001620013fd565b50506000910152565b6000825162001434818460208701620013fa565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200147f576200147f6200143e565b604052919050565b60006001600160401b03821115620014a357620014a36200143e565b5060051b60200190565b600082601f830112620014bf57600080fd5b81516020620014d8620014d28362001487565b62001454565b82815260059290921b84018101918181019086841115620014f857600080fd5b8286015b848110156200151e5762001510816200117b565b8352918301918301620014fc565b509695505050505050565b600082601f8301126200153b57600080fd5b815160206200154e620014d28362001487565b82815260059290921b840181019181810190868411156200156e57600080fd5b8286015b848110156200151e578051835291830191830162001572565b600080604083850312156200159f57600080fd5b82516001600160401b0380821115620015b757600080fd5b620015c586838701620014ad565b93506020850151915080821115620015dc57600080fd5b50620015eb8582860162001529565b9150509250929050565b6000602082840312156200160857600080fd5b81516001600160401b038111156200161f57600080fd5b62000faa8482850162001529565b6000602082840312156200164057600080fd5b81516001600160401b038111156200165757600080fd5b62000faa84828501620014ad565b602081526000825180602084015262001686816040850160208701620013fa565b601f01601f19169190910160400192915050565b615aae80620016aa6000396000f3fe608060405234801561001057600080fd5b50600436106104755760003560e01c8063780022a011610257578063b6d0dcd811610146578063ec38a862116100c3578063fa4e2df911610087578063fa4e2df9146109bd578063fbfa77cf146109c6578063fc7795e2146109d9578063fcf2d0ad146109ec578063fe2508a6146109f457600080fd5b8063ec38a86214610969578063ed882c2b1461097c578063ee6497f11461098f578063efbb5cb0146109a2578063f017c92f146109aa57600080fd5b8063d8c658c21161010a578063d8c658c214610915578063e09575a414610928578063e5e19b4a1461093b578063e89133b21461094e578063e91717951461096157600080fd5b8063b6d0dcd8146108c1578063c1a3d44c146108d4578063c7b9d530146108dc578063ce5494bb146108ef578063d7b4be241461090257600080fd5b80639f450b5a116101d4578063aced166111610198578063aced166114610868578063ae04d45d1461087b578063b084e97b1461088e578063b252720b146108a1578063b5762114146108b957600080fd5b80639f450b5a14610819578063a544ae0a1461082c578063a763cf5b1461083f578063aa5480cf1461084c578063ac00ff261461085557600080fd5b806395326e2d1161021b57806395326e2d146107cf57806395e80c50146107d757806397f72f8f146107e05780639daafec7146107f35780639ec5a8941461080657600080fd5b8063780022a01461075157806379139f011461075f5780637d4234461461079d578063826cddf6146107b05780638e6350e2146107c857600080fd5b8063377c58bf1161037357806365d2ebbf116102f057806370799be7116102b457806370799be71461070657806371e1a9e01461070f57806373fd827f14610722578063748747e61461072b578063750521f51461073e57600080fd5b806365d2ebbf146106b35780636718835f146106c65780636785686d146106d35780636a4874a1146106e65780636f392ce7146106f957600080fd5b80635641ec03116103375780635641ec031461066157806358aea9181461066e5780635b6374b2146106815780635b9f001614610697578063650d18801461069f57600080fd5b8063377c58bf1461062357806339a172a8146106365780633e158b0c14610649578063440368a3146106515780634641257d1461065957600080fd5b80631769fe6a1161040157806325829410116103c557806325829410146105d457806328b7ccf7146105f557806328f30a4c146105fe5780632e1a7d4d1461060757806336b771071461061a57600080fd5b80631769fe6a1461057a5780631f05719b146105835780631f1fcd51146105965780631fe4a686146105a957806322f3e2d4146105bc57600080fd5b8063090c492211610448578063090c4922146104e15780630ada4dab146104f85780630d6680871461050b57806311bc824514610514578063149549641461052757600080fd5b806301681a621461047a578063034dfaf21461048f57806303ee438c146104c457806306fdde03146104d9575b600080fd5b61048d610488366004614e43565b610a07565b005b600b546104a79061010090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6104cc610bb2565b6040516104bb9190614e8b565b6104cc610c40565b6104ea60185481565b6040519081526020016104bb565b61048d610506366004614ecc565b610cd6565b6104ea601e5481565b61048d610522366004614e43565b610d26565b601f54610552906001600160781b0380821691600160781b810490911690600160f01b900460ff1683565b604080516001600160781b0394851681529390921660208401521515908201526060016104bb565b6104ea60115481565b6014546104a7906001600160a01b031681565b6006546104a7906001600160a01b031681565b6003546104a7906001600160a01b031681565b6105c4610d92565b60405190151581526020016104bb565b60408051808201909152600581526418171a171b60d91b60208201526104cc565b6104ea60085481565b6104ea60105481565b6104ea610615366004614ee9565b610e20565b6104ea601d5481565b61048d610631366004614ee9565b610e94565b61048d610644366004614ee9565b610f88565b61048d610fc5565b61048d611011565b61048d61108f565b6009546105c49060ff1681565b61048d61067c366004614f02565b61143d565b610689611554565b6040516104bb929190614f2e565b6104ea611705565b6105c46106ad366004614ee9565b50600090565b6012546104a7906001600160a01b031681565b6001546105c49060ff1681565b61048d6106e1366004614fce565b61177b565b6015546104a7906001600160a01b031681565b601c546105c49060ff1681565b6104ea600d5481565b61048d61071d366004615015565b611829565b6104ea600f5481565b61048d610739366004614e43565b61184f565b61048d61074c3660046150ca565b6118b8565b6104ea6106ad366004614ee9565b60205461077d906001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016104bb565b6017546104a7906001600160a01b031681565b6009546104a79061010090046001600160a01b031681565b60006104ea565b6105c461190b565b6104ea60075481565b61048d6107ee36600461513c565b6119a0565b600e546104a7906001600160a01b031681565b6004546104a7906001600160a01b031681565b61048d610827366004614e43565b6119e7565b6104a761083a366004615015565b611a45565b600b546105c49060ff1681565b6104ea600a5481565b61048d610863366004614ecc565b611bc3565b6005546104a7906001600160a01b031681565b61048d610889366004614ee9565b611c13565b6013546104a7906001600160a01b031681565b6001546104a79061010090046001600160a01b031681565b6104ea611d5d565b6104a76108cf366004614ee9565b612028565b6104ea612052565b61048d6108ea366004614e43565b612083565b61048d6108fd366004614e43565b6120ec565b600c546104a7906001600160a01b031681565b61048d610923366004614e43565b612214565b61048d610936366004614ecc565b61227c565b601a546104a7906001600160a01b031681565b6016546104a7906001600160a01b031681565b6104ea61228d565b61048d610977366004614e43565b6123c4565b6105c461098a366004614ee9565b61251e565b61048d61099d36600461517c565b6126f5565b6104ea612708565b61048d6109b8366004614ee9565b612724565b6104ea60195481565b6002546104a7906001600160a01b031681565b61048d6109e7366004614ee9565b612761565b61048d6129ec565b61048d610a02366004614ee9565b612b0b565b610a0f612b48565b6006546001600160a01b0390811690821603610a5a5760405162461bcd60e51b8152602060048201526005602482015264085dd85b9d60da1b60448201526064015b60405180910390fd5b6002546001600160a01b0390811690821603610aa25760405162461bcd60e51b81526020600482015260076024820152662173686172657360c81b6044820152606401610a51565b606060005b8151811015610b2957818181518110610ac257610ac261519e565b60200260200101516001600160a01b0316836001600160a01b031603610b175760405162461bcd60e51b815260206004820152600a602482015269085c1c9bdd1958dd195960b21b6044820152606401610a51565b80610b21816151ca565b915050610aa7565b50610bae610b35612b6d565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610b79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9d91906151e3565b6001600160a01b0385169190612bdb565b5050565b60008054610bbf906151fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610beb906151fc565b8015610c385780601f10610c0d57610100808354040283529160200191610c38565b820191906000526020600020905b815481529060010190602001808311610c1b57829003601f168201915b505050505081565b600654604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b419160048083019260009291908290030181865afa158015610c8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cb291908101906152c4565b604051602001610cc29190615358565b604051602081830303815290604052905090565b610cde612c36565b600b805460ff19168215159081179091556040519081527f6ad28df1b554fa6cacd46ae82fa811748d53798feeb437ddf234bf3083953319906020015b60405180910390a150565b610d2e612c36565b6040516001600160a01b03821681527fc8db9c35f716b87af1fbb83f03c78646061931269301fd7ba6dcf189b4cdc2fc9060200160405180910390a1600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6002546040516339ebf82360e01b815230600482015260009182916001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015610de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e04919061539d565b604001511180610e1b57506000610e19612708565b115b905090565b6002546000906001600160a01b03163314610e665760405162461bcd60e51b8152602060048201526006602482015265085d985d5b1d60d21b6044820152606401610a51565b6000610e7183612cd8565b600654909350909150610e8e906001600160a01b03163383612bdb565b50919050565b610e9c612c36565b600e54600c54604051631e090f0160e01b81526001600160a01b039283166004820181905292634ab794a3921690631e090f0190602401600060405180830381865afa158015610ef0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f18919081019061543c565b8381518110610f2957610f2961519e565b6020026020010151600001516040518263ffffffff1660e01b8152600401610f5391815260200190565b600060405180830381600087803b158015610f6d57600080fd5b505af1158015610f81573d6000803e3d6000fd5b5050505050565b610f90612dd8565b60078190556040518181527fbb2c369a0355a34b02ab5fce0643150c87e1c8dfe7c918d465591879f57948b190602001610d1b565b610fcd612b48565b601a546001600160a01b0316610fe36001612df4565b610feb6131ec565b601a80546001600160a01b0319166001600160a01b03831617905561100e6132a5565b50565b61101961366b565b6002546040805163bf3759b560e01b8152905161108d926001600160a01b03169163bf3759b59160048083019260209291908290030181865afa158015611064573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108891906151e3565b6137c0565b565b61109761366b565b6000806000600260009054906101000a90046001600160a01b03166001600160a01b031663bf3759b56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111391906151e3565b60095490915060009060ff161561117057600061112e613c04565b905082811015611149576111428184615513565b935061115e565b8281111561115e5761115b8382615513565b94505b6111688484615513565b915050611181565b61117982613c19565b919550935090505b600b805460ff19169055604051600081527f6ad28df1b554fa6cacd46ae82fa811748d53798feeb437ddf234bf30839533199060200160405180910390a16002546040516339ebf82360e01b81523060048201526000916001600160a01b0316906339ebf8239060240161012060405180830381865afa158015611209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122d919061539d565b60c001516002546040516328766ebf60e21b81526004810188905260248101879052604481018590529192506001600160a01b03169063a1d9bafc906064016020604051808303816000875af115801561128b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112af91906151e3565b92506112ba836137c0565b60015460ff1680156112db575060015461010090046001600160a01b031615155b156113ad5760015460405163c70fa00b60e01b815260048101879052602481018690526044810184905260648101859052608481018390526101009091046001600160a01b03169063c70fa00b9060a401602060405180830381865afa158015611349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136d9190615526565b6113a85760405162461bcd60e51b815260206004820152600c60248201526b216865616c7468636865636b60a01b6044820152606401610a51565b6113ee565b604051600181527ff769f6bf659bbbdabf212d830720ce893eedc57f25ebb8e44edf5b300618a35b9060200160405180910390a16001805460ff1916811790555b6040805186815260208101869052908101839052606081018490527f4c0f499ffe6befa0ca7c826b0916cf87bea98de658013e76938489368d60d5099060800160405180910390a15050505050565b611445612b48565b612710831180611456575061271082115b80611462575061271081115b156114a45760405162461bcd60e51b815260206004820152601260248201527104b656570206d61782069732031302c3030360741b6044820152606401610a51565b6000831180156114bd57506012546001600160a01b0316155b156114da5760405162461bcd60e51b8152600401610a5190615543565b6000821180156114f357506013546001600160a01b0316155b156115105760405162461bcd60e51b8152600401610a5190615543565b60008111801561152957506014546001600160a01b0316155b156115465760405162461bcd60e51b8152600401610a5190615543565b600f92909255601055601155565b60408051600481526024810182526020810180516001600160e01b0316636b78c93160e11b179052600e54915160609283929160009182916001600160a01b03909116906115a3908590615573565b600060405180830381855afa9150503d80600081146115de576040519150601f19603f3d011682016040523d82523d6000602084013e6115e3565b606091505b5091509150811561160c57808060200190518101906116029190615659565b90955093506116fe565b600c54600e546040516246613160e11b81526001600160a01b039182166004820152911690628cc26290602401600060405180830381865afa158015611656573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261167e91908101906156bd565b9350600c60009054906101000a90046001600160a01b03166001600160a01b03166312edb24c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156116d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116fb91908101906156f2565b94505b5050509091565b600c54600e5460405163d9f96e8d60e01b81526001600160a01b039182166004820152600092919091169063d9f96e8d906024015b602060405180830381865afa158015611757573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1b91906151e3565b611783612c36565b826001600160781b0316826001600160781b0316116117e45760405162461bcd60e51b815260206004820152601c60248201527f4d6178206d7573742062652067726561746572207468616e206d696e000000006044820152606401610a51565b601f8054911515600160f01b0260ff60f01b196001600160781b03948516600160781b026001600160f01b031990941694909516939093179190911792909216179055565b6118358a8a8a8a613fd3565b611843868686868686614213565b50505050505050505050565b611857612dd8565b6001600160a01b03811661186a57600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f202ddb4a2e345f6323ed90f8fc8559d770a7abbbeee84dde8aca3351fe715490602001610d1b565b6118c0612dd8565b60006118cd82848361576d565b507f300e67d5a415b6d015a471d9c7b95dd58f3e8290af965e84e0f845de2996dda682826040516118ff92919061582d565b60405180910390a15050565b60095460009061010090046001600160a01b03166119295750600190565b600960019054906101000a90046001600160a01b03166001600160a01b03166334a9e75c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561197c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1b9190615526565b6119a8612b48565b601280546001600160a01b039485166001600160a01b031991821617909155601380549385169382169390931790925560148054919093169116179055565b6119ef612c36565b60098054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f711be97287cb9ec921887b9be36e148e1a27c6b158547b22b9704ffc54447a0f90602001610d1b565b601c5460009060ff16611a915760405162461bcd60e51b815260206004820152601460248201527343616e277420636c6f6e65206120636c6f6e652760601b6044820152606401610a51565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81523060601b601482018190526e5af43d82803e903d91602b57fd5bf360881b6028830152906037816000f060405163038f0d4f60e51b81526001600160a01b038f811660048301528e811660248301528d811660448301528c811660648301528b8116608483015260a482018b905289811660c483015260e48201899052610104820188905286811661012483015291945090841691506371e1a9e09061014401600060405180830381600087803b158015611b6857600080fd5b505af1158015611b7c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f783540fb4221a3238720dc7038937d0d79982bcf895274aa6ad179f82cf0d53c9150600090a2509a9950505050505050505050565b611bcb612c36565b60405181151581527ff769f6bf659bbbdabf212d830720ce893eedc57f25ebb8e44edf5b300618a35b9060200160405180910390a16001805460ff1916911515919091179055565b611c1b612c36565b600c5460408051636e27cef960e01b8152905183926001600160a01b031691636e27cef99160048083019260209291908290030181865afa158015611c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8891906151e3565b11158015611d0c5750600c60009054906101000a90046001600160a01b03166001600160a01b031663b94c4dcb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0891906151e3565b8111155b611d585760405162461bcd60e51b815260206004820152601d60248201527f446973616c6c6f776564206279207374616b696e6720616464726573730000006044820152606401610a51565b601e55565b6000806000611d6a611554565b8151919350915060007347fb2585d2c56fe188d0e6ec628a38b74fceeedf63bcfd032d858385611d9c57611d9c61519e565b60200260200101516103486040518363ffffffff1660e01b8152600401611dc492919061585c565b60a060405180830381865afa158015611de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e059190615890565b50505091505060007347fb2585d2c56fe188d0e6ec628a38b74fceeedf6001600160a01b031663bcfd032d86600286611e3e9190615513565b81518110611e4e57611e4e61519e565b60200260200101516103486040518363ffffffff1660e01b8152600401611e7692919061585c565b60a060405180830381865afa158015611e93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb79190615890565b50505091505060007347fb2585d2c56fe188d0e6ec628a38b74fceeedf6001600160a01b031663bcfd032d87600187611ef09190615513565b81518110611f0057611f0061519e565b60200260200101516103486040518363ffffffff1660e01b8152600401611f2892919061585c565b60a060405180830381865afa158015611f45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f699190615890565b50505091505068056bc75e2d6310000085600186611f879190615513565b81518110611f9757611f9761519e565b602002602001015182611faa91906158e0565b86611fb6600288615513565b81518110611fc657611fc661519e565b602002602001015184611fd991906158e0565b87600081518110611fec57611fec61519e565b602002602001015186611fff91906158e0565b61200991906158f7565b61201391906158f7565b61201d919061590a565b965050505050505090565b601b818154811061203857600080fd5b6000918252602090912001546001600160a01b0316905081565b6006546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240161173a565b61208b612dd8565b6001600160a01b03811661209e57600080fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f352ececae6d7d1e6d26bcf2c549dfd55be1637e9b22dc0cf3b71ddb36097a6b490602001610d1b565b6002546001600160a01b0316331461210357600080fd5b6002546040805163fbfa77cf60e01b815290516001600160a01b039283169284169163fbfa77cf9160048083019260209291908290030181865afa15801561214f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612173919061592c565b6001600160a01b03161461218657600080fd5b61218f81614610565b6006546040516370a0823160e01b815230600482015261100e9183916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156121dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220191906151e3565b6006546001600160a01b03169190612bdb565b61221c612b48565b6001600160a01b0381166122725760405162461bcd60e51b815260206004820152601f60248201527f43616e27742072656d6f7665207769746820746869732066756e6374696f6e006044820152606401610a51565b610feb6001612df4565b612284612c36565b61100e81612df4565b600c54600e54604051631e090f0160e01b81526001600160a01b03918216600482015260009283921690631e090f0190602401600060405180830381865afa1580156122dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612305919081019061543c565b6020549091506001600160801b03600160801b8204811691166123536040518060a0016040528060008019168152602001600081526020016000815260200160008152602001600081525090565b42600083851161236457600061236e565b61236e8486615513565b90505b848110156123bb5785818151811061238b5761238b61519e565b6020026020010151925081836060015111156123ab578260400151870196505b6123b4816151ca565b9050612371565b50505050505090565b6123cc614842565b6001600160a01b0381166123df57600080fd5b6002546004805460405163095ea7b360e01b81526001600160a01b039384169363095ea7b393612416939091169160009101615949565b6020604051808303816000875af1158015612435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124599190615526565b50600480546001600160a01b0319166001600160a01b03838116918217835560025460405163095ea7b360e01b815291169263095ea7b3926124a19290916000199101615949565b6020604051808303816000875af11580156124c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e49190615526565b506040516001600160a01b03821681527fafbb66abf8f3b719799940473a4052a3717cdd8e40fb6c8a3faadab316b1a06990602001610d1b565b6000612528610d92565b61253457506000919050565b600061253e611d5d565b90506019548111156125535750600192915050565b61255b61190b565b6125685750600092915050565b600b5460ff161561257c5750600192915050565b60185481111561258f5750600192915050565b6002546040516339ebf82360e01b81523060048201526000916001600160a01b0316906339ebf8239060240161012060405180830381865afa1580156125d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fd919061539d565b90506008548160a00151426126129190615513565b1115612622575060019392505050565b600a54600260009054906101000a90046001600160a01b03166001600160a01b031663112c1f9b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269c91906151e3565b11156126ac575060019392505050565b601f546001600160781b03166126c0612052565b1180156126dc575060075460a08201516126da9042615513565b115b156126eb575060019392505050565b5060009392505050565b6126fd612c36565b601891909155601955565b6000612712611705565b61271a612052565b610e1b91906158f7565b61272c612dd8565b60088190556040518181527f5430e11864ad7aa9775b07d12657fe52df9aa2ba734355bd8ef8747be2c800c590602001610d1b565b612769612c36565b600081116127a65760405162461bcd60e51b815260206004820152600a60248201526904d757374206265203e360b41b6044820152606401610a51565b6020546001600160801b03600160801b820481169116808310156129c857818310156129c85760008183116127e4576127df8484615513565b6127ee565b6127ee8483615513565b600c54600e54604051631e090f0160e01b81526001600160a01b039182166004820152929350600092911690631e090f0190602401600060405180830381865afa158015612840573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612868919081019061543c565b905061289f6040518060a0016040528060008019168152602001600081526020016000815260200160008152602001600081525090565b60005b838110156129c3578585116128e45782816128bd8789615513565b6128c791906158f7565b815181106128d7576128d761519e565b60200260200101516128ff565b8281815181106128f6576128f661519e565b60200260200101515b6040810151909250156129b3574282606001511061294c5760405162461bcd60e51b815260206004820152600a602482015269139bdd081b1a5c5d5a5960b21b6044820152606401610a51565b600e548251604051634ab794a360e01b81526001600160a01b0390921691634ab794a3916129809160040190815260200190565b600060405180830381600087803b15801561299a57600080fd5b505af11580156129ae573d6000803e3d6000fd5b505050505b6129bc816151ca565b90506128a2565b505050505b5050602080546001600160801b0319166001600160801b0392909216919091179055565b6129f461487b565b6009805460ff191660011790556002546040516339ebf82360e01b81523060048201526001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015612a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6e919061539d565b6040015115612ae057600260009054906101000a90046001600160a01b03166001600160a01b031663a0e4af9a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612ac757600080fd5b505af1158015612adb573d6000803e3d6000fd5b505050505b6040517f97e963041e952738788b9d4871d854d282065b8f90a464928d6528f2e9a4fd0b90600090a1565b612b13612c36565b600a8190556040518181527fe5ef7832c564a10cbe7b4f1e01ac33a406cb63fcf430a97a9af8616d150af5f390602001610d1b565b612b50612b6d565b6001600160a01b0316336001600160a01b03161461108d57600080fd5b60025460408051635aa6e67560e01b815290516000926001600160a01b031691635aa6e6759160048083019260209291908290030181865afa158015612bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1b919061592c565b612c318363a9059cbb60e01b8484604051602401612bfa929190615949565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614897565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b03166388a8d6026040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cad919061592c565b6001600160a01b0316336001600160a01b03161480612ccf5750612b50612b6d565b61108d57600080fd5b6000806000612ce5612052565b905080841115612dc7576000612cf9611705565b90508015612da357601e54601d54838703914291612d1791906158f7565b1115612d985780612d2661228d565b612d2e611705565b612d389190615513565b1015612d985760405162461bcd60e51b815260206004820152602960248201527f4e65656420746f207761697420756e74696c206f6c64657374206465706f73696044820152687420756e6c6f636b7360b81b6064820152608401610a51565b612da18161496c565b505b6000612dad612052565b9050612db98682614b4f565b945084860393505050612dd2565b509192600092509050565b50915091565b6003546001600160a01b0316331480612ccf5750612b50612b6d565b601a546001600160a01b031680612e09575050565b60065460155460405163095ea7b360e01b815283926001600160a01b0390811692169063095ea7b390612e43908590600090600401615949565b6020604051808303816000875af1158015612e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e869190615526565b508315612ef457601554604051639cd38be560e01b81526001600160a01b0384811692639cd38be592612ec19290911690859060040161585c565b600060405180830381600087803b158015612edb57600080fd5b505af1158015612eef573d6000803e3d6000fd5b505050505b60005b601b5481101561300d576000601b8281548110612f1657612f1661519e565b600091825260208220015460405163095ea7b360e01b81526001600160a01b039091169250829163095ea7b391612f51918991600401615949565b6020604051808303816000875af1158015612f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f949190615526565b508515612ffc57604051639cd38be560e01b81526001600160a01b03851690639cd38be590612fc9908490879060040161585c565b600060405180830381600087803b158015612fe357600080fd5b505af1158015612ff7573d6000803e3d6000fd5b505050505b50613006816151ca565b9050612ef7565b5060165460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390613041908690600090600401615949565b6020604051808303816000875af1158015613060573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130849190615526565b5083156130f257601654604051639cd38be560e01b81526001600160a01b0384811692639cd38be5926130bf9290911690859060040161585c565b600060405180830381600087803b1580156130d957600080fd5b505af11580156130ed573d6000803e3d6000fd5b505050505b60175460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390613125908690600090600401615949565b6020604051808303816000875af1158015613144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131689190615526565b5083156131d657601754604051639cd38be560e01b81526001600160a01b0384811692639cd38be5926131a39290911690859060040161585c565b600060405180830381600087803b1580156131bd57600080fd5b505af11580156131d1573d6000803e3d6000fd5b505050505b5050601a80546001600160a01b03191690555050565b6131f8601b6000614dfc565b6000613202611554565b5080519091506003811115610bae5760015b61321f600283615513565b811015612c3157600083828151811061323a5761323a61519e565b6020908102919091010151601b80546001810182556000919091527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10180546001600160a01b0319166001600160a01b039092169190911790555061329e816151ca565b9050613214565b601a5460065460155460405163095ea7b360e01b81526001600160a01b0393841693928316928492169063095ea7b3906132e790849060001990600401615949565b6020604051808303816000875af1158015613306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332a9190615526565b50601554604051632642a09360e11b81526001600160a01b0383811692634c8541269261335f9290911690869060040161585c565b600060405180830381600087803b15801561337957600080fd5b505af115801561338d573d6000803e3d6000fd5b5050505060005b601b548110156134a9576000601b82815481106133b3576133b361519e565b60009182526020909120015460405163095ea7b360e01b81526001600160a01b039091169150819063095ea7b3906133f390889060001990600401615949565b6020604051808303816000875af1158015613412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134369190615526565b50604051632642a09360e11b81526001600160a01b03841690634c85412690613465908490889060040161585c565b600060405180830381600087803b15801561347f57600080fd5b505af1158015613493573d6000803e3d6000fd5b5050505050806134a2906151ca565b9050613394565b5060165460405163095ea7b360e01b81526001600160a01b039091169063095ea7b3906134de90869060001990600401615949565b6020604051808303816000875af11580156134fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135219190615526565b50601654604051632642a09360e11b81526001600160a01b0383811692634c854126926135569290911690869060040161585c565b600060405180830381600087803b15801561357057600080fd5b505af1158015613584573d6000803e3d6000fd5b505060175460405163095ea7b360e01b81526001600160a01b03909116925063095ea7b391506135bc90869060001990600401615949565b6020604051808303816000875af11580156135db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ff9190615526565b50601754604051632642a09360e11b81526001600160a01b0383811692634c854126926136349290911690869060040161585c565b600060405180830381600087803b15801561364e57600080fd5b505af1158015613662573d6000803e3d6000fd5b50505050505050565b6005546001600160a01b031633148061368e57506003546001600160a01b031633145b806136b1575061369c612b6d565b6001600160a01b0316336001600160a01b0316145b806137435750600260009054906101000a90046001600160a01b03166001600160a01b031663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa15801561370a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372e919061592c565b6001600160a01b0316336001600160a01b0316145b80612ccf5750600260009054906101000a90046001600160a01b03166001600160a01b03166388a8d6026040518163ffffffff1660e01b8152600401602060405180830381865afa15801561379c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b50919061592c565b60095460ff16156137ce5750565b60006137d8612052565b601f549091506001600160781b0316808210156137f457505050565b601f54600160781b90046001600160781b031680831115613813578092505b6020546001600160801b03600160801b820481169116808210613b3757600c54600e54604051631e090f0160e01b81526001600160a01b0391821660048201526000929190911690631e090f0190602401600060405180830381865afa158015613881573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138a9919081019061543c565b601f54909150600160f01b900460ff16156139c0576000816138cc600186615513565b815181106138dc576138dc61519e565b60209081029190910101518051604082015191925090600185146139535760025b858111613951578461390f8289615513565b8151811061391f5761391f61519e565b6020026020010151935081846040015110156139415760408401518451935091505b61394a816151ca565b90506138fd565b505b600e54604051630687c4bd60e01b815260048101849052602481018b90526001600160a01b0390911690630687c4bd90604401600060405180830381600087803b1580156139a057600080fd5b505af11580156139b4573d6000803e3d6000fd5b50505050505050613b31565b6000816139cd8486615513565b815181106139dd576139dd61519e565b60200260200101519050600081604001511115613a6f57600e548151604051634ab794a360e01b81526001600160a01b0390921691634ab794a391613a289160040190815260200190565b600060405180830381600087803b158015613a4257600080fd5b505af1158015613a56573d6000803e3d6000fd5b5050505080604001518701965084871115613a6f578496505b600e54601e5460405163a41ce7e960e01b8152600481018a905260248101919091526001600160a01b039091169063a41ce7e9906044016020604051808303816000875af1158015613ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae991906151e3565b5060208054600160801b90046001600160801b0316906010613b0a83615962565b91906101000a8154816001600160801b0302191690836001600160801b0316021790555050505b50613bf8565b600e54601e5460405163a41ce7e960e01b81526004810188905260248101919091526001600160a01b039091169063a41ce7e9906044016020604051808303816000875af1158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb191906151e3565b5060208054600160801b90046001600160801b0316906010613bd283615962565b91906101000a8154816001600160801b0302191690836001600160801b03160217905550505b505042601d5550505050565b6000613c1160001961496c565b610e1b612052565b6000806000600e60009054906101000a90046001600160a01b03166001600160a01b0316633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613c6e57600080fd5b505af1158015613c82573d6000803e3d6000fd5b5050600f546012549092506001600160a01b0316905060008215801590613cb157506001600160a01b03821615155b15613d4d576015546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d2391906151e3565b90506127108482020491508115613d4b57601554613d4b906001600160a01b03168484612bdb565b505b6010546013546001600160a01b03168115801590613d7357506001600160a01b03811615155b15613e0f576016546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613de591906151e3565b90506127108382020493508315613e0d57601654613e0d906001600160a01b03168386612bdb565b505b6011546014546001600160a01b03168115801590613e3557506001600160a01b03811615155b15613ed1576017546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea791906151e3565b90506127108382020495508515613ecf57601754613ecf906001600160a01b03168388612bdb565b505b6000613edb612708565b6002546040516339ebf82360e01b81523060048201529192506000916001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015613f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4e919061539d565b60c001519050808210613fb657613f658183615513565b9b508c99506000613f768b8e6158f7565b90506000613f8382612cd8565b50905080821115613faf57808c1115613fa257809b5060009d50613faf565b613fac8c82615513565b9d505b5050613fc3565b613fc08282615513565b9a505b5050505050505050509193909250565b6006546001600160a01b03161561402c5760405162461bcd60e51b815260206004820152601c60248201527f537472617465677920616c726561647920696e697469616c697a6564000000006044820152606401610a51565b600280546001600160a01b0319166001600160a01b03861690811790915560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa158015614085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a9919061592c565b600680546001600160a01b0319166001600160a01b039290921691821790556140d59085600019614b69565b600380546001600160a01b038086166001600160a01b031992831617909255600480548584169083161781556005805485851693169290921790915562278d006008556002546040805163313ce56760e01b81529051919093169263313ce56792818101926020929091908290030181865afa158015614159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061417d91906151e3565b61418890600a615a6c565b61419590620f42406158e0565b600a556002546004805460405163095ea7b360e01b81526001600160a01b039384169363095ea7b3936141d093909116916000199101615949565b6020604051808303816000875af11580156141ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190615526565b600b5461010090046001600160a01b0316156142675760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610a51565b601a80546001600160a01b03199081166001600160a01b0389811691909117909255600d879055600c805490911686831617905560188490556019839055600b8054610100600160a81b031916610100928416928302179055604051639abbdf4b60e01b815260048101879052639abbdf4b906024016020604051808303816000875af11580156142fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614320919061592c565b600e80546001600160a01b0319166001600160a01b039290921691821790556040805163923c1d6160e01b8152905163923c1d61916004808201926020929091908290030181865afa15801561437a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061439e919061592c565b601680546001600160a01b0319166001600160a01b03928316179055600e5460408051636a4874a160e01b815290519190921691636a4874a19160048083019260209291908290030181865afa1580156143fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614420919061592c565b601580546001600160a01b0319166001600160a01b03928316179055600e5460408051633ea11a2360e11b815290519190921691637d4234469160048083019260209291908290030181865afa15801561447e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a2919061592c565b601780546001600160a01b0319166001600160a01b03928316179055600654600e5460405163095ea7b360e01b81529183169263095ea7b3926144ef929091169060001990600401615949565b6020604051808303816000875af115801561450e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145329190615526565b506301e13380600855690a968163f0a57b400000600a55602080546001600160801b0319166005178155600c5460408051636e27cef960e01b815290516001600160a01b0390921692636e27cef9926004808401938290030181865afa1580156145a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c491906151e3565b601e55601f80546001600160f81b0319167e01000000000069e10de76676d0800000000000000000056bc75e2d631000001790556146006131ec565b6146086132a5565b505050505050565b42601e54601d5461462191906158f7565b106146875760405162461bcd60e51b815260206004820152603060248201527f4c6174657374206465706f736974206973206e6f7420617669616c61626c652060448201526f79657420666f7220776974686472617760801b6064820152608401610a51565b61469260001961496c565b6015546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156146db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146ff91906151e3565b6016546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561474d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061477191906151e3565b6017546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156147bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e391906151e3565b9050821561480257601554614802906001600160a01b03168585612bdb565b811561481f5760165461481f906001600160a01b03168584612bdb565b801561483c5760175461483c906001600160a01b03168583612bdb565b50505050565b61484a612b6d565b6001600160a01b0316336001600160a01b03161480612ccf57506003546001600160a01b0316331461108d57600080fd5b6003546001600160a01b03163314806136b1575061369c612b6d565b60006148ec826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c6c9092919063ffffffff16565b905080516000148061490d57508080602001905181019061490d9190615526565b612c315760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a51565b600c54600e54604051631e090f0160e01b81526001600160a01b0391821660048201526000929190911690631e090f0190602401600060405180830381865afa1580156149bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149e5919081019061543c565b6020549091506001600160801b03600160801b8204811691166000818311614a0e576000614a18565b614a188284615513565b90506000614a2d86614a28611705565b614b4f565b9050614a646040518060a0016040528060008019168152602001600081526020016000815260200160008152602001600081525090565b60005b600083118015614a7657508584105b15614b4557868481518110614a8d57614a8d61519e565b6020026020010151915081604001519050600081118015614ab2575042826060015111155b15614b3a57600e548251604051634ab794a360e01b81526001600160a01b0390921691634ab794a391614aeb9160040190815260200190565b600060405180830381600087803b158015614b0557600080fd5b505af1158015614b19573d6000803e3d6000fd5b5050505082811015614b35576001909301929182900391614a67565b614b45565b600190930192614a67565b5050505050505050565b6000818310614b5e5781614b60565b825b90505b92915050565b801580614be25750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90614b9f903090869060040161585c565b602060405180830381865afa158015614bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614be091906151e3565b155b614c4d5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610a51565b612c318363095ea7b360e01b8484604051602401612bfa929190615949565b6060614c7b8484600085614c83565b949350505050565b606082471015614ce45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a51565b600080866001600160a01b03168587604051614d009190615573565b60006040518083038185875af1925050503d8060008114614d3d576040519150601f19603f3d011682016040523d82523d6000602084013e614d42565b606091505b5091509150614d5387838387614d5e565b979650505050505050565b60608315614dcd578251600003614dc6576001600160a01b0385163b614dc65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a51565b5081614c7b565b614c7b8383815115614de25781518083602001fd5b8060405162461bcd60e51b8152600401610a519190614e8b565b508054600082559060005260206000209081019061100e91905b80821115614e2a5760008155600101614e16565b5090565b6001600160a01b038116811461100e57600080fd5b600060208284031215614e5557600080fd5b8135614e6081614e2e565b9392505050565b60005b83811015614e82578181015183820152602001614e6a565b50506000910152565b6020815260008251806020840152614eaa816040850160208701614e67565b601f01601f19169190910160400192915050565b801515811461100e57600080fd5b600060208284031215614ede57600080fd5b8135614e6081614ebe565b600060208284031215614efb57600080fd5b5035919050565b600080600060608486031215614f1757600080fd5b505081359360208301359350604090920135919050565b604080825283519082018190526000906020906060840190828701845b82811015614f705781516001600160a01b031684529284019290840190600101614f4b565b5050508381038285015284518082528583019183019060005b81811015614fa557835183529284019291840191600101614f89565b5090979650505050505050565b80356001600160781b0381168114614fc957600080fd5b919050565b600080600060608486031215614fe357600080fd5b614fec84614fb2565b9250614ffa60208501614fb2565b9150604084013561500a81614ebe565b809150509250925092565b6000806000806000806000806000806101408b8d03121561503557600080fd5b8a3561504081614e2e565b995060208b013561505081614e2e565b985060408b013561506081614e2e565b975060608b013561507081614e2e565b965060808b013561508081614e2e565b955060a08b0135945060c08b013561509781614e2e565b935060e08b013592506101008b013591506101208b01356150b781614e2e565b809150509295989b9194979a5092959850565b600080602083850312156150dd57600080fd5b823567ffffffffffffffff808211156150f557600080fd5b818501915085601f83011261510957600080fd5b81358181111561511857600080fd5b86602082850101111561512a57600080fd5b60209290920196919550909350505050565b60008060006060848603121561515157600080fd5b833561515c81614e2e565b9250602084013561516c81614e2e565b9150604084013561500a81614e2e565b6000806040838503121561518f57600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016151dc576151dc6151b4565b5060010190565b6000602082840312156151f557600080fd5b5051919050565b600181811c9082168061521057607f821691505b602082108103610e8e57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff8111828210171561526a5761526a615230565b60405290565b60405160a0810167ffffffffffffffff8111828210171561526a5761526a615230565b604051601f8201601f1916810167ffffffffffffffff811182821017156152bc576152bc615230565b604052919050565b6000602082840312156152d657600080fd5b815167ffffffffffffffff808211156152ee57600080fd5b818401915084601f83011261530257600080fd5b81518181111561531457615314615230565b615327601f8201601f1916602001615293565b915080825285602082850101111561533e57600080fd5b61534f816020840160208601614e67565b50949350505050565b7f5374726174656779436f6e76657846726178466163746f72792d00000000000081526000825161539081601a850160208701614e67565b91909101601a0192915050565b600061012082840312156153b057600080fd5b6153b8615246565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b600067ffffffffffffffff82111561543257615432615230565b5060051b60200190565b6000602080838503121561544f57600080fd5b825167ffffffffffffffff81111561546657600080fd5b8301601f8101851361547757600080fd5b805161548a61548582615418565b615293565b81815260a091820283018401918482019190888411156154a957600080fd5b938501935b838510156155075780858a0312156154c65760008081fd5b6154ce615270565b855181528686015187820152604080870151908201526060808701519082015260808087015190820152835293840193918501916154ae565b50979650505050505050565b81810381811115614b6357614b636151b4565b60006020828403121561553857600080fd5b8151614e6081614ebe565b602080825260169082015275053657420766f746572207768656e206b656570203e360541b604082015260600190565b60008251615585818460208701614e67565b9190910192915050565b600082601f8301126155a057600080fd5b815160206155b061548583615418565b82815260059290921b840181019181810190868411156155cf57600080fd5b8286015b848110156155f35780516155e681614e2e565b83529183019183016155d3565b509695505050505050565b600082601f83011261560f57600080fd5b8151602061561f61548583615418565b82815260059290921b8401810191818101908684111561563e57600080fd5b8286015b848110156155f35780518352918301918301615642565b6000806040838503121561566c57600080fd5b825167ffffffffffffffff8082111561568457600080fd5b6156908683870161558f565b935060208501519150808211156156a657600080fd5b506156b3858286016155fe565b9150509250929050565b6000602082840312156156cf57600080fd5b815167ffffffffffffffff8111156156e657600080fd5b614c7b848285016155fe565b60006020828403121561570457600080fd5b815167ffffffffffffffff81111561571b57600080fd5b614c7b8482850161558f565b601f821115612c3157600081815260208120601f850160051c8101602086101561574e5750805b601f850160051c820191505b818110156146085782815560010161575a565b67ffffffffffffffff83111561578557615785615230565b6157998361579383546151fc565b83615727565b6000601f8411600181146157cd57600085156157b55750838201355b600019600387901b1c1916600186901b178355610f81565b600083815260209020601f19861690835b828110156157fe57868501358255602094850194600190920191016157de565b508682101561581b5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6001600160a01b0392831681529116602082015260400190565b805169ffffffffffffffffffff81168114614fc957600080fd5b600080600080600060a086880312156158a857600080fd5b6158b186615876565b94506020860151935060408601519250606086015191506158d460808701615876565b90509295509295909350565b8082028115828204841417614b6357614b636151b4565b80820180821115614b6357614b636151b4565b60008261592757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561593e57600080fd5b8151614e6081614e2e565b6001600160a01b03929092168252602082015260400190565b60006001600160801b0380831681810361597e5761597e6151b4565b6001019392505050565b600181815b808511156159c35781600019048211156159a9576159a96151b4565b808516156159b657918102915b93841c939080029061598d565b509250929050565b6000826159da57506001614b63565b816159e757506000614b63565b81600181146159fd5760028114615a0757615a23565b6001915050614b63565b60ff841115615a1857615a186151b4565b50506001821b614b63565b5060208310610133831016604e8410600b8410161715615a46575081810a614b63565b615a508383615988565b8060001904821115615a6457615a646151b4565b029392505050565b6000614b6083836159cb56fea264697066735822122031f8edf675187c15a97d5fa06de563fba9444d0d7981a2294831cff645de8f6264736f6c63430008130033000000000000000000000000d395dec4f1733ff09b750d869eefa7e0d37c3ee6000000000000000000000000b634316e06cc0b358437cbadd4dc94f1d3a92b3b000000000000000000000000000000000000000000000000000000000000001b000000000000000000000000e7211e87d60177575846936f2123b5fa6f0ce8ab000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000002540be4000000000000000000000000002b8b301b90eb8801f1eefe73285eec117d2ffc95