0 txs
33 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)
strategyVersion
viewfunction strategyVersion() view returns (string)
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
0x6080604052601c805460ff191660011790553480156200001e57600080fd5b506040516200712f3803806200712f83398101604081905262000041916200116a565b8662000050813380806200006e565b5062000061868686868686620002cd565b505050505050506200166c565b6006546001600160a01b031615620000cd5760405162461bcd60e51b815260206004820152601c60248201527f537472617465677920616c726561647920696e697469616c697a65640000000060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b03861690811790915560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa15801562000127573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014d9190620011e4565b600680546001600160a01b0319166001600160a01b039290921691821790556200017b908560001962000702565b600380546001600160a01b038086166001600160a01b031992831617909255600480548584169083161781556005805485851693169290921790915562278d006008556002546040805163313ce56760e01b81529051919093169263313ce56792818101926020929091908290030181865afa15801562000200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000226919062001209565b6200023390600a62001338565b6200024290620f424062001346565b600a556002546004805460405163095ea7b360e01b81526001600160a01b039182169281019290925260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015620002a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c6919062001360565b5050505050565b600b5461010090046001600160a01b0316156200032d5760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401620000c4565b601a80546001600160a01b03199081166001600160a01b0389811691909117909255600d879055600c805490911686831617905560188490556019839055600b8054610100600160a81b031916610100928416928302179055604051639abbdf4b60e01b815260048101879052639abbdf4b906024016020604051808303816000875af1158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e99190620011e4565b600e80546001600160a01b0319166001600160a01b039290921691821790556040805163923c1d6160e01b8152905163923c1d61916004808201926020929091908290030181865afa15801562000444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046a9190620011e4565b601680546001600160a01b0319166001600160a01b03928316179055600e5460408051636a4874a160e01b815290519190921691636a4874a19160048083019260209291908290030181865afa158015620004c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ef9190620011e4565b601580546001600160a01b0319166001600160a01b03928316179055600e5460408051633ea11a2360e11b815290519190921691637d4234469160048083019260209291908290030181865afa1580156200054e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005749190620011e4565b601780546001600160a01b0319166001600160a01b03928316179055600654600e5460405163095ea7b360e01b81529083166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620005df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000605919062001360565b506301e13380600855690a968163f0a57b400000600a55602080546001600160801b0319166005178155600c5460408051636e27cef960e01b815290516001600160a01b0390921692636e27cef9926004808401938290030181865afa15801562000674573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200069a919062001209565b601e55601f80547fff00000000000000000000000000000000000000000000000000000000000000167e01000000000069e10de76676d0800000000000000000056bc75e2d63100000179055620006f062000851565b620006fa6200091c565b505050505050565b801580620007805750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000758573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200077e919062001209565b155b620007f45760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401620000c4565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526200084c91859162000d0616565b505050565b6200085f601b60006200110f565b60006200086b62000dda565b5080519091506003811115620009185760015b6200088b60028362001384565b8110156200084c576000838281518110620008aa57620008aa6200139a565b6020908102919091010151601b80546001810182556000919091527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10180546001600160a01b0319166001600160a01b03909216919091179055506200091081620013b0565b90506200087e565b5050565b601a5460065460155460405163095ea7b360e01b81526001600160a01b0393841660048201819052600019602483015293928316928492169063095ea7b3906044016020604051808303816000875af11580156200097e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009a4919062001360565b50601554604051632642a09360e11b81526001600160a01b039182166004820152838216602482015290821690634c85412690604401600060405180830381600087803b158015620009f557600080fd5b505af115801562000a0a573d6000803e3d6000fd5b5050505060005b601b5481101562000b36576000601b828154811062000a345762000a346200139a565b60009182526020909120015460405163095ea7b360e01b81526001600160a01b03878116600483015260001960248301529091169150819063095ea7b3906044016020604051808303816000875af115801562000a95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000abb919062001360565b50604051632642a09360e11b81526001600160a01b0382811660048301528581166024830152841690634c85412690604401600060405180830381600087803b15801562000b0857600080fd5b505af115801562000b1d573d6000803e3d6000fd5b50505050508062000b2e90620013b0565b905062000a11565b5060165460405163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000b8c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bb2919062001360565b50601654604051632642a09360e11b81526001600160a01b039182166004820152838216602482015290821690634c85412690604401600060405180830381600087803b15801562000c0357600080fd5b505af115801562000c18573d6000803e3d6000fd5b505060175460405163095ea7b360e01b81526001600160a01b0387811660048301526000196024830152909116925063095ea7b391506044016020604051808303816000875af115801562000c71573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c97919062001360565b50601754604051632642a09360e11b81526001600160a01b039182166004820152838216602482015290821690634c85412690604401600060405180830381600087803b15801562000ce857600080fd5b505af115801562000cfd573d6000803e3d6000fd5b50505050505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649082015260009062000d55906001600160a01b03851690849062000f6b565b905080516000148062000d7957508080602001905181019062000d79919062001360565b6200084c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620000c4565b606080602c600d54101562000e7057600e60009054906101000a90046001600160a01b03166001600160a01b031663d6f192626040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000e67919081019062001519565b90925090509091565b600c54600e546040516246613160e11b81526001600160a01b039182166004820152911690628cc26290602401600060405180830381865afa15801562000ebb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000ee5919081019062001583565b9050600c60009054906101000a90046001600160a01b03166001600160a01b03166312edb24c6040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000f3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f659190810190620015bb565b91509091565b606062000f7c848460008562000f84565b949350505050565b60608247101562000fe75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401620000c4565b600080866001600160a01b0316858760405162001005919062001619565b60006040518083038185875af1925050503d806000811462001044576040519150601f19603f3d011682016040523d82523d6000602084013e62001049565b606091505b5090925090506200105d8783838762001068565b979650505050505050565b60608315620010dc578251600003620010d4576001600160a01b0385163b620010d45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620000c4565b508162000f7c565b62000f7c8383815115620010f35781518083602001fd5b8060405162461bcd60e51b8152600401620000c4919062001637565b50805460008255906000526020600020908101906200112f919062001132565b50565b5b8082111562001149576000815560010162001133565b5090565b80516001600160a01b03811681146200116557600080fd5b919050565b600080600080600080600060e0888a0312156200118657600080fd5b62001191886200114d565b9650620011a1602089016200114d565b955060408801519450620011b8606089016200114d565b93506080880151925060a08801519150620011d660c089016200114d565b905092959891949750929550565b600060208284031215620011f757600080fd5b62001202826200114d565b9392505050565b6000602082840312156200121c57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200127a5781600019048211156200125e576200125e62001223565b808516156200126c57918102915b93841c93908002906200123e565b509250929050565b600082620012935750600162001332565b81620012a25750600062001332565b8160018114620012bb5760028114620012c657620012e6565b600191505062001332565b60ff841115620012da57620012da62001223565b50506001821b62001332565b5060208310610133831016604e8410600b84101617156200130b575081810a62001332565b62001317838362001239565b80600019048211156200132e576200132e62001223565b0290505b92915050565b600062001202838362001282565b808202811582820484141762001332576200133262001223565b6000602082840312156200137357600080fd5b815180151581146200120257600080fd5b8181038181111562001332576200133262001223565b634e487b7160e01b600052603260045260246000fd5b600060018201620013c557620013c562001223565b5060010190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200140d576200140d620013cc565b604052919050565b60006001600160401b03821115620014315762001431620013cc565b5060051b60200190565b600082601f8301126200144d57600080fd5b8151602062001466620014608362001415565b620013e2565b82815260059290921b840181019181810190868411156200148657600080fd5b8286015b84811015620014ac576200149e816200114d565b83529183019183016200148a565b509695505050505050565b600082601f830112620014c957600080fd5b81516020620014dc620014608362001415565b82815260059290921b84018101918181019086841115620014fc57600080fd5b8286015b84811015620014ac578051835291830191830162001500565b600080604083850312156200152d57600080fd5b82516001600160401b03808211156200154557600080fd5b62001553868387016200143b565b935060208501519150808211156200156a57600080fd5b506200157985828601620014b7565b9150509250929050565b6000602082840312156200159657600080fd5b81516001600160401b03811115620015ad57600080fd5b62000f7c84828501620014b7565b600060208284031215620015ce57600080fd5b81516001600160401b03811115620015e557600080fd5b62000f7c848285016200143b565b60005b8381101562001610578181015183820152602001620015f6565b50506000910152565b600082516200162d818460208701620015f3565b9190910192915050565b602081526000825180602084015262001658816040850160208701620015f3565b601f01601f19169190910160400192915050565b615ab3806200167c6000396000f3fe608060405234801561001057600080fd5b50600436106104805760003560e01c806379139f0111610257578063b6d0dcd811610146578063ec38a862116100c3578063fa4e2df911610087578063fa4e2df9146109ec578063fbfa77cf146109f5578063fc7795e214610a08578063fcf2d0ad14610a1b578063fe2508a614610a2357600080fd5b8063ec38a86214610998578063ed882c2b146109ab578063ee6497f1146109be578063efbb5cb0146109d1578063f017c92f146109d957600080fd5b8063d8c658c21161010a578063d8c658c214610944578063e09575a414610957578063e5e19b4a1461096a578063e89133b21461097d578063e91717951461099057600080fd5b8063b6d0dcd8146108f0578063c1a3d44c14610903578063c7b9d5301461090b578063ce5494bb1461091e578063d7b4be241461093157600080fd5b8063a25db5e2116101d4578063aced166111610198578063aced166114610897578063ae04d45d146108aa578063b084e97b146108bd578063b252720b146108d0578063b5762114146108e857600080fd5b8063a25db5e214610837578063a544ae0a1461085b578063a763cf5b1461086e578063aa5480cf1461087b578063ac00ff261461088457600080fd5b806395e80c501161021b57806395e80c50146107e257806397f72f8f146107eb5780639daafec7146107fe5780639ec5a894146108115780639f450b5a1461082457600080fd5b806379139f011461076a5780637d423446146107a8578063826cddf6146107bb5780638e6350e2146107d357806395326e2d146107da57600080fd5b806339a172a8116103735780636718835f116102f057806371e1a9e0116102b457806371e1a9e01461071a57806373fd827f1461072d578063748747e614610736578063750521f514610749578063780022a01461075c57600080fd5b80636718835f146106d15780636785686d146106de5780636a4874a1146106f15780636f392ce71461070457806370799be71461071157600080fd5b806358aea9181161033757806358aea918146106795780635b6374b21461068c5780635b9f0016146106a2578063650d1880146106aa57806365d2ebbf146106be57600080fd5b806339a172a8146106415780633e158b0c14610654578063440368a31461065c5780634641257d146106645780635641ec031461066c57600080fd5b80631f05719b1161040157806328b7ccf7116103c557806328b7ccf71461060057806328f30a4c146106095780632e1a7d4d1461061257806336b7710714610625578063377c58bf1461062e57600080fd5b80631f05719b1461058e5780631f1fcd51146105a15780631fe4a686146105b457806322f3e2d4146105c757806325829410146105df57600080fd5b80630ada4dab116104485780630ada4dab146105035780630d6680871461051657806311bc82451461051f57806314954964146105325780631769fe6a1461058557600080fd5b806301681a6214610485578063034dfaf21461049a57806303ee438c146104cf57806306fdde03146104e4578063090c4922146104ec575b600080fd5b610498610493366004614e48565b610a36565b005b600b546104b29061010090046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6104d7610be1565b6040516104c69190614e90565b6104d7610c6f565b6104f560185481565b6040519081526020016104c6565b610498610511366004614ed1565b610d05565b6104f5601e5481565b61049861052d366004614e48565b610d55565b601f5461055d906001600160781b0380821691600160781b810490911690600160f01b900460ff1683565b604080516001600160781b0394851681529390921660208401521515908201526060016104c6565b6104f560115481565b6014546104b2906001600160a01b031681565b6006546104b2906001600160a01b031681565b6003546104b2906001600160a01b031681565b6105cf610dc1565b60405190151581526020016104c6565b60408051808201909152600581526418171a171b60d91b60208201526104d7565b6104f560085481565b6104f560105481565b6104f5610620366004614eee565b610e4f565b6104f5601d5481565b61049861063c366004614eee565b610ec3565b61049861064f366004614eee565b610fb7565b610498610ff4565b610498611040565b6104986110be565b6009546105cf9060ff1681565b610498610687366004614f07565b61146c565b610694611583565b6040516104c6929190614f33565b6104f561170a565b6105cf6106b8366004614eee565b50600090565b6012546104b2906001600160a01b031681565b6001546105cf9060ff1681565b6104986106ec366004614fd3565b611780565b6015546104b2906001600160a01b031681565b601c546105cf9060ff1681565b6104f5600d5481565b61049861072836600461501a565b61182e565b6104f5600f5481565b610498610744366004614e48565b611854565b6104986107573660046150cf565b6118bd565b6104f56106b8366004614eee565b602054610788906001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016104c6565b6017546104b2906001600160a01b031681565b6009546104b29061010090046001600160a01b031681565b60006104f5565b6105cf611910565b6104f560075481565b6104986107f9366004615141565b6119a5565b600e546104b2906001600160a01b031681565b6004546104b2906001600160a01b031681565b610498610832366004614e48565b6119ec565b6104d7604051806040016040528060058152602001640322e312e360dc1b81525081565b6104b261086936600461501a565b611a4a565b600b546105cf9060ff1681565b6104f5600a5481565b610498610892366004614ed1565b611bc8565b6005546104b2906001600160a01b031681565b6104986108b8366004614eee565b611c18565b6013546104b2906001600160a01b031681565b6001546104b29061010090046001600160a01b031681565b6104f5611d62565b6104b26108fe366004614eee565b61202d565b6104f5612057565b610498610919366004614e48565b612088565b61049861092c366004614e48565b6120f1565b600c546104b2906001600160a01b031681565b610498610952366004614e48565b612219565b610498610965366004614ed1565b612281565b601a546104b2906001600160a01b031681565b6016546104b2906001600160a01b031681565b6104f5612292565b6104986109a6366004614e48565b6123c9565b6105cf6109b9366004614eee565b612523565b6104986109cc366004615181565b6126fa565b6104f561270d565b6104986109e7366004614eee565b612729565b6104f560195481565b6002546104b2906001600160a01b031681565b610498610a16366004614eee565b612766565b6104986129f1565b610498610a31366004614eee565b612b10565b610a3e612b4d565b6006546001600160a01b0390811690821603610a895760405162461bcd60e51b8152602060048201526005602482015264085dd85b9d60da1b60448201526064015b60405180910390fd5b6002546001600160a01b0390811690821603610ad15760405162461bcd60e51b81526020600482015260076024820152662173686172657360c81b6044820152606401610a80565b606060005b8151811015610b5857818181518110610af157610af16151a3565b60200260200101516001600160a01b0316836001600160a01b031603610b465760405162461bcd60e51b815260206004820152600a602482015269085c1c9bdd1958dd195960b21b6044820152606401610a80565b80610b50816151cf565b915050610ad6565b50610bdd610b64612b72565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcc91906151e8565b6001600160a01b0385169190612be0565b5050565b60008054610bee90615201565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1a90615201565b8015610c675780601f10610c3c57610100808354040283529160200191610c67565b820191906000526020600020905b815481529060010190602001808311610c4a57829003601f168201915b505050505081565b600654604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b419160048083019260009291908290030181865afa158015610cb9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ce191908101906152c9565b604051602001610cf1919061535d565b604051602081830303815290604052905090565b610d0d612c3b565b600b805460ff19168215159081179091556040519081527f6ad28df1b554fa6cacd46ae82fa811748d53798feeb437ddf234bf3083953319906020015b60405180910390a150565b610d5d612c3b565b6040516001600160a01b03821681527fc8db9c35f716b87af1fbb83f03c78646061931269301fd7ba6dcf189b4cdc2fc9060200160405180910390a1600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6002546040516339ebf82360e01b815230600482015260009182916001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015610e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3391906153a2565b604001511180610e4a57506000610e4861270d565b115b905090565b6002546000906001600160a01b03163314610e955760405162461bcd60e51b8152602060048201526006602482015265085d985d5b1d60d21b6044820152606401610a80565b6000610ea083612cdd565b600654909350909150610ebd906001600160a01b03163383612be0565b50919050565b610ecb612c3b565b600e54600c54604051631e090f0160e01b81526001600160a01b039283166004820181905292634ab794a3921690631e090f0190602401600060405180830381865afa158015610f1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f479190810190615441565b8381518110610f5857610f586151a3565b6020026020010151600001516040518263ffffffff1660e01b8152600401610f8291815260200190565b600060405180830381600087803b158015610f9c57600080fd5b505af1158015610fb0573d6000803e3d6000fd5b5050505050565b610fbf612ddd565b60078190556040518181527fbb2c369a0355a34b02ab5fce0643150c87e1c8dfe7c918d465591879f57948b190602001610d4a565b610ffc612b4d565b601a546001600160a01b03166110126001612df9565b61101a6131f1565b601a80546001600160a01b0319166001600160a01b03831617905561103d6132aa565b50565b611048613670565b6002546040805163bf3759b560e01b815290516110bc926001600160a01b03169163bf3759b59160048083019260209291908290030181865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b791906151e8565b6137c5565b565b6110c6613670565b6000806000600260009054906101000a90046001600160a01b03166001600160a01b031663bf3759b56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114291906151e8565b60095490915060009060ff161561119f57600061115d613c09565b905082811015611178576111718184615518565b935061118d565b8281111561118d5761118a8382615518565b94505b6111978484615518565b9150506111b0565b6111a882613c1e565b919550935090505b600b805460ff19169055604051600081527f6ad28df1b554fa6cacd46ae82fa811748d53798feeb437ddf234bf30839533199060200160405180910390a16002546040516339ebf82360e01b81523060048201526000916001600160a01b0316906339ebf8239060240161012060405180830381865afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125c91906153a2565b60c001516002546040516328766ebf60e21b81526004810188905260248101879052604481018590529192506001600160a01b03169063a1d9bafc906064016020604051808303816000875af11580156112ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112de91906151e8565b92506112e9836137c5565b60015460ff16801561130a575060015461010090046001600160a01b031615155b156113dc5760015460405163c70fa00b60e01b815260048101879052602481018690526044810184905260648101859052608481018390526101009091046001600160a01b03169063c70fa00b9060a401602060405180830381865afa158015611378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139c919061552b565b6113d75760405162461bcd60e51b815260206004820152600c60248201526b216865616c7468636865636b60a01b6044820152606401610a80565b61141d565b604051600181527ff769f6bf659bbbdabf212d830720ce893eedc57f25ebb8e44edf5b300618a35b9060200160405180910390a16001805460ff1916811790555b6040805186815260208101869052908101839052606081018490527f4c0f499ffe6befa0ca7c826b0916cf87bea98de658013e76938489368d60d5099060800160405180910390a15050505050565b611474612b4d565b612710831180611485575061271082115b80611491575061271081115b156114d35760405162461bcd60e51b815260206004820152601260248201527104b656570206d61782069732031302c3030360741b6044820152606401610a80565b6000831180156114ec57506012546001600160a01b0316155b156115095760405162461bcd60e51b8152600401610a8090615548565b60008211801561152257506013546001600160a01b0316155b1561153f5760405162461bcd60e51b8152600401610a8090615548565b60008111801561155857506014546001600160a01b0316155b156115755760405162461bcd60e51b8152600401610a8090615548565b600f92909255601055601155565b606080602c600d54101561161557600e60009054906101000a90046001600160a01b03166001600160a01b031663d6f192626040518163ffffffff1660e01b8152600401600060405180830381865afa1580156115e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160c9190810190615642565b90925090509091565b600c54600e546040516246613160e11b81526001600160a01b039182166004820152911690628cc26290602401600060405180830381865afa15801561165f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261168791908101906156a6565b9050600c60009054906101000a90046001600160a01b03166001600160a01b03166312edb24c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156116dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261170491908101906156db565b91509091565b600c54600e5460405163d9f96e8d60e01b81526001600160a01b039182166004820152600092919091169063d9f96e8d906024015b602060405180830381865afa15801561175c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a91906151e8565b611788612c3b565b826001600160781b0316826001600160781b0316116117e95760405162461bcd60e51b815260206004820152601c60248201527f4d6178206d7573742062652067726561746572207468616e206d696e000000006044820152606401610a80565b601f8054911515600160f01b0260ff60f01b196001600160781b03948516600160781b026001600160f01b031990941694909516939093179190911792909216179055565b61183a8a8a8a8a613fd8565b611848868686868686614218565b50505050505050505050565b61185c612ddd565b6001600160a01b03811661186f57600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f202ddb4a2e345f6323ed90f8fc8559d770a7abbbeee84dde8aca3351fe715490602001610d4a565b6118c5612ddd565b60006118d2828483615756565b507f300e67d5a415b6d015a471d9c7b95dd58f3e8290af965e84e0f845de2996dda68282604051611904929190615816565b60405180910390a15050565b60095460009061010090046001600160a01b031661192e5750600190565b600960019054906101000a90046001600160a01b03166001600160a01b03166334a9e75c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611981573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a919061552b565b6119ad612b4d565b601280546001600160a01b039485166001600160a01b031991821617909155601380549385169382169390931790925560148054919093169116179055565b6119f4612c3b565b60098054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f711be97287cb9ec921887b9be36e148e1a27c6b158547b22b9704ffc54447a0f90602001610d4a565b601c5460009060ff16611a965760405162461bcd60e51b815260206004820152601460248201527343616e277420636c6f6e65206120636c6f6e652760601b6044820152606401610a80565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81523060601b601482018190526e5af43d82803e903d91602b57fd5bf360881b6028830152906037816000f060405163038f0d4f60e51b81526001600160a01b038f811660048301528e811660248301528d811660448301528c811660648301528b8116608483015260a482018b905289811660c483015260e48201899052610104820188905286811661012483015291945090841691506371e1a9e09061014401600060405180830381600087803b158015611b6d57600080fd5b505af1158015611b81573d6000803e3d6000fd5b50506040516001600160a01b03851692507f783540fb4221a3238720dc7038937d0d79982bcf895274aa6ad179f82cf0d53c9150600090a2509a9950505050505050505050565b611bd0612c3b565b60405181151581527ff769f6bf659bbbdabf212d830720ce893eedc57f25ebb8e44edf5b300618a35b9060200160405180910390a16001805460ff1916911515919091179055565b611c20612c3b565b600c5460408051636e27cef960e01b8152905183926001600160a01b031691636e27cef99160048083019260209291908290030181865afa158015611c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8d91906151e8565b11158015611d115750600c60009054906101000a90046001600160a01b03166001600160a01b031663b94c4dcb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0d91906151e8565b8111155b611d5d5760405162461bcd60e51b815260206004820152601d60248201527f446973616c6c6f776564206279207374616b696e6720616464726573730000006044820152606401610a80565b601e55565b6000806000611d6f611583565b8151919350915060007347fb2585d2c56fe188d0e6ec628a38b74fceeedf63bcfd032d858385611da157611da16151a3565b60200260200101516103486040518363ffffffff1660e01b8152600401611dc9929190615845565b60a060405180830381865afa158015611de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0a9190615879565b50505091505060007347fb2585d2c56fe188d0e6ec628a38b74fceeedf6001600160a01b031663bcfd032d86600286611e439190615518565b81518110611e5357611e536151a3565b60200260200101516103486040518363ffffffff1660e01b8152600401611e7b929190615845565b60a060405180830381865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc9190615879565b50505091505060007347fb2585d2c56fe188d0e6ec628a38b74fceeedf6001600160a01b031663bcfd032d87600187611ef59190615518565b81518110611f0557611f056151a3565b60200260200101516103486040518363ffffffff1660e01b8152600401611f2d929190615845565b60a060405180830381865afa158015611f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6e9190615879565b50505091505068056bc75e2d6310000085600186611f8c9190615518565b81518110611f9c57611f9c6151a3565b602002602001015182611faf91906158c9565b86611fbb600288615518565b81518110611fcb57611fcb6151a3565b602002602001015184611fde91906158c9565b87600081518110611ff157611ff16151a3565b60200260200101518661200491906158c9565b61200e91906158e0565b61201891906158e0565b61202291906158f3565b965050505050505090565b601b818154811061203d57600080fd5b6000918252602090912001546001600160a01b0316905081565b6006546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240161173f565b612090612ddd565b6001600160a01b0381166120a357600080fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f352ececae6d7d1e6d26bcf2c549dfd55be1637e9b22dc0cf3b71ddb36097a6b490602001610d4a565b6002546001600160a01b0316331461210857600080fd5b6002546040805163fbfa77cf60e01b815290516001600160a01b039283169284169163fbfa77cf9160048083019260209291908290030181865afa158015612154573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121789190615915565b6001600160a01b03161461218b57600080fd5b61219481614615565b6006546040516370a0823160e01b815230600482015261103d9183916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156121e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220691906151e8565b6006546001600160a01b03169190612be0565b612221612b4d565b6001600160a01b0381166122775760405162461bcd60e51b815260206004820152601f60248201527f43616e27742072656d6f7665207769746820746869732066756e6374696f6e006044820152606401610a80565b61101a6001612df9565b612289612c3b565b61103d81612df9565b600c54600e54604051631e090f0160e01b81526001600160a01b03918216600482015260009283921690631e090f0190602401600060405180830381865afa1580156122e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261230a9190810190615441565b6020549091506001600160801b03600160801b8204811691166123586040518060a0016040528060008019168152602001600081526020016000815260200160008152602001600081525090565b426000838511612369576000612373565b6123738486615518565b90505b848110156123c057858181518110612390576123906151a3565b6020026020010151925081836060015111156123b0578260400151870196505b6123b9816151cf565b9050612376565b50505050505090565b6123d1614847565b6001600160a01b0381166123e457600080fd5b6002546004805460405163095ea7b360e01b81526001600160a01b039384169363095ea7b39361241b939091169160009101615932565b6020604051808303816000875af115801561243a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245e919061552b565b50600480546001600160a01b0319166001600160a01b03838116918217835560025460405163095ea7b360e01b815291169263095ea7b3926124a69290916000199101615932565b6020604051808303816000875af11580156124c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e9919061552b565b506040516001600160a01b03821681527fafbb66abf8f3b719799940473a4052a3717cdd8e40fb6c8a3faadab316b1a06990602001610d4a565b600061252d610dc1565b61253957506000919050565b6000612543611d62565b90506019548111156125585750600192915050565b612560611910565b61256d5750600092915050565b600b5460ff16156125815750600192915050565b6018548111156125945750600192915050565b6002546040516339ebf82360e01b81523060048201526000916001600160a01b0316906339ebf8239060240161012060405180830381865afa1580156125de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260291906153a2565b90506008548160a00151426126179190615518565b1115612627575060019392505050565b600a54600260009054906101000a90046001600160a01b03166001600160a01b031663112c1f9b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561267d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a191906151e8565b11156126b1575060019392505050565b601f546001600160781b03166126c5612057565b1180156126e1575060075460a08201516126df9042615518565b115b156126f0575060019392505050565b5060009392505050565b612702612c3b565b601891909155601955565b600061271761170a565b61271f612057565b610e4a91906158e0565b612731612ddd565b60088190556040518181527f5430e11864ad7aa9775b07d12657fe52df9aa2ba734355bd8ef8747be2c800c590602001610d4a565b61276e612c3b565b600081116127ab5760405162461bcd60e51b815260206004820152600a60248201526904d757374206265203e360b41b6044820152606401610a80565b6020546001600160801b03600160801b820481169116808310156129cd57818310156129cd5760008183116127e9576127e48484615518565b6127f3565b6127f38483615518565b600c54600e54604051631e090f0160e01b81526001600160a01b039182166004820152929350600092911690631e090f0190602401600060405180830381865afa158015612845573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261286d9190810190615441565b90506128a46040518060a0016040528060008019168152602001600081526020016000815260200160008152602001600081525090565b60005b838110156129c8578585116128e95782816128c28789615518565b6128cc91906158e0565b815181106128dc576128dc6151a3565b6020026020010151612904565b8281815181106128fb576128fb6151a3565b60200260200101515b6040810151909250156129b857428260600151106129515760405162461bcd60e51b815260206004820152600a602482015269139bdd081b1a5c5d5a5960b21b6044820152606401610a80565b600e548251604051634ab794a360e01b81526001600160a01b0390921691634ab794a3916129859160040190815260200190565b600060405180830381600087803b15801561299f57600080fd5b505af11580156129b3573d6000803e3d6000fd5b505050505b6129c1816151cf565b90506128a7565b505050505b5050602080546001600160801b0319166001600160801b0392909216919091179055565b6129f9614880565b6009805460ff191660011790556002546040516339ebf82360e01b81523060048201526001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015612a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7391906153a2565b6040015115612ae557600260009054906101000a90046001600160a01b03166001600160a01b031663a0e4af9a6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612acc57600080fd5b505af1158015612ae0573d6000803e3d6000fd5b505050505b6040517f97e963041e952738788b9d4871d854d282065b8f90a464928d6528f2e9a4fd0b90600090a1565b612b18612c3b565b600a8190556040518181527fe5ef7832c564a10cbe7b4f1e01ac33a406cb63fcf430a97a9af8616d150af5f390602001610d4a565b612b55612b72565b6001600160a01b0316336001600160a01b0316146110bc57600080fd5b60025460408051635aa6e67560e01b815290516000926001600160a01b031691635aa6e6759160048083019260209291908290030181865afa158015612bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a9190615915565b612c368363a9059cbb60e01b8484604051602401612bff929190615932565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261489c565b505050565b600260009054906101000a90046001600160a01b03166001600160a01b03166388a8d6026040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb29190615915565b6001600160a01b0316336001600160a01b03161480612cd45750612b55612b72565b6110bc57600080fd5b6000806000612cea612057565b905080841115612dcc576000612cfe61170a565b90508015612da857601e54601d54838703914291612d1c91906158e0565b1115612d9d5780612d2b612292565b612d3361170a565b612d3d9190615518565b1015612d9d5760405162461bcd60e51b815260206004820152602960248201527f4e65656420746f207761697420756e74696c206f6c64657374206465706f73696044820152687420756e6c6f636b7360b81b6064820152608401610a80565b612da681614971565b505b6000612db2612057565b9050612dbe8682614b54565b945084860393505050612dd7565b509192600092509050565b50915091565b6003546001600160a01b0316331480612cd45750612b55612b72565b601a546001600160a01b031680612e0e575050565b60065460155460405163095ea7b360e01b815283926001600160a01b0390811692169063095ea7b390612e48908590600090600401615932565b6020604051808303816000875af1158015612e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8b919061552b565b508315612ef957601554604051639cd38be560e01b81526001600160a01b0384811692639cd38be592612ec692909116908590600401615845565b600060405180830381600087803b158015612ee057600080fd5b505af1158015612ef4573d6000803e3d6000fd5b505050505b60005b601b54811015613012576000601b8281548110612f1b57612f1b6151a3565b600091825260208220015460405163095ea7b360e01b81526001600160a01b039091169250829163095ea7b391612f56918991600401615932565b6020604051808303816000875af1158015612f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f99919061552b565b50851561300157604051639cd38be560e01b81526001600160a01b03851690639cd38be590612fce9084908790600401615845565b600060405180830381600087803b158015612fe857600080fd5b505af1158015612ffc573d6000803e3d6000fd5b505050505b5061300b816151cf565b9050612efc565b5060165460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390613046908690600090600401615932565b6020604051808303816000875af1158015613065573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613089919061552b565b5083156130f757601654604051639cd38be560e01b81526001600160a01b0384811692639cd38be5926130c492909116908590600401615845565b600060405180830381600087803b1580156130de57600080fd5b505af11580156130f2573d6000803e3d6000fd5b505050505b60175460405163095ea7b360e01b81526001600160a01b039091169063095ea7b39061312a908690600090600401615932565b6020604051808303816000875af1158015613149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316d919061552b565b5083156131db57601754604051639cd38be560e01b81526001600160a01b0384811692639cd38be5926131a892909116908590600401615845565b600060405180830381600087803b1580156131c257600080fd5b505af11580156131d6573d6000803e3d6000fd5b505050505b5050601a80546001600160a01b03191690555050565b6131fd601b6000614e01565b6000613207611583565b5080519091506003811115610bdd5760015b613224600283615518565b811015612c3657600083828151811061323f5761323f6151a3565b6020908102919091010151601b80546001810182556000919091527f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc10180546001600160a01b0319166001600160a01b03909216919091179055506132a3816151cf565b9050613219565b601a5460065460155460405163095ea7b360e01b81526001600160a01b0393841693928316928492169063095ea7b3906132ec90849060001990600401615932565b6020604051808303816000875af115801561330b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332f919061552b565b50601554604051632642a09360e11b81526001600160a01b0383811692634c8541269261336492909116908690600401615845565b600060405180830381600087803b15801561337e57600080fd5b505af1158015613392573d6000803e3d6000fd5b5050505060005b601b548110156134ae576000601b82815481106133b8576133b86151a3565b60009182526020909120015460405163095ea7b360e01b81526001600160a01b039091169150819063095ea7b3906133f890889060001990600401615932565b6020604051808303816000875af1158015613417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343b919061552b565b50604051632642a09360e11b81526001600160a01b03841690634c8541269061346a9084908890600401615845565b600060405180830381600087803b15801561348457600080fd5b505af1158015613498573d6000803e3d6000fd5b5050505050806134a7906151cf565b9050613399565b5060165460405163095ea7b360e01b81526001600160a01b039091169063095ea7b3906134e390869060001990600401615932565b6020604051808303816000875af1158015613502573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613526919061552b565b50601654604051632642a09360e11b81526001600160a01b0383811692634c8541269261355b92909116908690600401615845565b600060405180830381600087803b15801561357557600080fd5b505af1158015613589573d6000803e3d6000fd5b505060175460405163095ea7b360e01b81526001600160a01b03909116925063095ea7b391506135c190869060001990600401615932565b6020604051808303816000875af11580156135e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613604919061552b565b50601754604051632642a09360e11b81526001600160a01b0383811692634c8541269261363992909116908690600401615845565b600060405180830381600087803b15801561365357600080fd5b505af1158015613667573d6000803e3d6000fd5b50505050505050565b6005546001600160a01b031633148061369357506003546001600160a01b031633145b806136b657506136a1612b72565b6001600160a01b0316336001600160a01b0316145b806137485750600260009054906101000a90046001600160a01b03166001600160a01b031663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa15801561370f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137339190615915565b6001600160a01b0316336001600160a01b0316145b80612cd45750600260009054906101000a90046001600160a01b03166001600160a01b03166388a8d6026040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b559190615915565b60095460ff16156137d35750565b60006137dd612057565b601f549091506001600160781b0316808210156137f957505050565b601f54600160781b90046001600160781b031680831115613818578092505b6020546001600160801b03600160801b820481169116808210613b3c57600c54600e54604051631e090f0160e01b81526001600160a01b0391821660048201526000929190911690631e090f0190602401600060405180830381865afa158015613886573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138ae9190810190615441565b601f54909150600160f01b900460ff16156139c5576000816138d1600186615518565b815181106138e1576138e16151a3565b60209081029190910101518051604082015191925090600185146139585760025b85811161395657846139148289615518565b81518110613924576139246151a3565b6020026020010151935081846040015110156139465760408401518451935091505b61394f816151cf565b9050613902565b505b600e54604051630687c4bd60e01b815260048101849052602481018b90526001600160a01b0390911690630687c4bd90604401600060405180830381600087803b1580156139a557600080fd5b505af11580156139b9573d6000803e3d6000fd5b50505050505050613b36565b6000816139d28486615518565b815181106139e2576139e26151a3565b60200260200101519050600081604001511115613a7457600e548151604051634ab794a360e01b81526001600160a01b0390921691634ab794a391613a2d9160040190815260200190565b600060405180830381600087803b158015613a4757600080fd5b505af1158015613a5b573d6000803e3d6000fd5b5050505080604001518701965084871115613a74578496505b600e54601e5460405163a41ce7e960e01b8152600481018a905260248101919091526001600160a01b039091169063a41ce7e9906044016020604051808303816000875af1158015613aca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aee91906151e8565b5060208054600160801b90046001600160801b0316906010613b0f8361594b565b91906101000a8154816001600160801b0302191690836001600160801b0316021790555050505b50613bfd565b600e54601e5460405163a41ce7e960e01b81526004810188905260248101919091526001600160a01b039091169063a41ce7e9906044016020604051808303816000875af1158015613b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb691906151e8565b5060208054600160801b90046001600160801b0316906010613bd78361594b565b91906101000a8154816001600160801b0302191690836001600160801b03160217905550505b505042601d5550505050565b6000613c16600019614971565b610e4a612057565b6000806000600e60009054906101000a90046001600160a01b03166001600160a01b0316633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613c7357600080fd5b505af1158015613c87573d6000803e3d6000fd5b5050600f546012549092506001600160a01b0316905060008215801590613cb657506001600160a01b03821615155b15613d52576015546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d2891906151e8565b90506127108482020491508115613d5057601554613d50906001600160a01b03168484612be0565b505b6010546013546001600160a01b03168115801590613d7857506001600160a01b03811615155b15613e14576016546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613dc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dea91906151e8565b90506127108382020493508315613e1257601654613e12906001600160a01b03168386612be0565b505b6011546014546001600160a01b03168115801590613e3a57506001600160a01b03811615155b15613ed6576017546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eac91906151e8565b90506127108382020495508515613ed457601754613ed4906001600160a01b03168388612be0565b505b6000613ee061270d565b6002546040516339ebf82360e01b81523060048201529192506000916001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015613f2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5391906153a2565b60c001519050808210613fbb57613f6a8183615518565b9b508c99506000613f7b8b8e6158e0565b90506000613f8882612cdd565b50905080821115613fb457808c1115613fa757809b5060009d50613fb4565b613fb18c82615518565b9d505b5050613fc8565b613fc58282615518565b9a505b5050505050505050509193909250565b6006546001600160a01b0316156140315760405162461bcd60e51b815260206004820152601c60248201527f537472617465677920616c726561647920696e697469616c697a6564000000006044820152606401610a80565b600280546001600160a01b0319166001600160a01b03861690811790915560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa15801561408a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ae9190615915565b600680546001600160a01b0319166001600160a01b039290921691821790556140da9085600019614b6e565b600380546001600160a01b038086166001600160a01b031992831617909255600480548584169083161781556005805485851693169290921790915562278d006008556002546040805163313ce56760e01b81529051919093169263313ce56792818101926020929091908290030181865afa15801561415e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418291906151e8565b61418d90600a615a55565b61419a90620f42406158c9565b600a556002546004805460405163095ea7b360e01b81526001600160a01b039384169363095ea7b3936141d593909116916000199101615932565b6020604051808303816000875af11580156141f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb0919061552b565b600b5461010090046001600160a01b03161561426c5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610a80565b601a80546001600160a01b03199081166001600160a01b0389811691909117909255600d879055600c805490911686831617905560188490556019839055600b8054610100600160a81b031916610100928416928302179055604051639abbdf4b60e01b815260048101879052639abbdf4b906024016020604051808303816000875af1158015614301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143259190615915565b600e80546001600160a01b0319166001600160a01b039290921691821790556040805163923c1d6160e01b8152905163923c1d61916004808201926020929091908290030181865afa15801561437f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143a39190615915565b601680546001600160a01b0319166001600160a01b03928316179055600e5460408051636a4874a160e01b815290519190921691636a4874a19160048083019260209291908290030181865afa158015614401573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144259190615915565b601580546001600160a01b0319166001600160a01b03928316179055600e5460408051633ea11a2360e11b815290519190921691637d4234469160048083019260209291908290030181865afa158015614483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a79190615915565b601780546001600160a01b0319166001600160a01b03928316179055600654600e5460405163095ea7b360e01b81529183169263095ea7b3926144f4929091169060001990600401615932565b6020604051808303816000875af1158015614513573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614537919061552b565b506301e13380600855690a968163f0a57b400000600a55602080546001600160801b0319166005178155600c5460408051636e27cef960e01b815290516001600160a01b0390921692636e27cef9926004808401938290030181865afa1580156145a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c991906151e8565b601e55601f80546001600160f81b0319167e01000000000069e10de76676d0800000000000000000056bc75e2d631000001790556146056131f1565b61460d6132aa565b505050505050565b42601e54601d5461462691906158e0565b1061468c5760405162461bcd60e51b815260206004820152603060248201527f4c6174657374206465706f736974206973206e6f7420617669616c61626c652060448201526f79657420666f7220776974686472617760801b6064820152608401610a80565b614697600019614971565b6015546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156146e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061470491906151e8565b6016546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015614752573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061477691906151e8565b6017546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156147c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e891906151e8565b9050821561480757601554614807906001600160a01b03168585612be0565b811561482457601654614824906001600160a01b03168584612be0565b801561484157601754614841906001600160a01b03168583612be0565b50505050565b61484f612b72565b6001600160a01b0316336001600160a01b03161480612cd457506003546001600160a01b031633146110bc57600080fd5b6003546001600160a01b03163314806136b657506136a1612b72565b60006148f1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614c719092919063ffffffff16565b9050805160001480614912575080806020019051810190614912919061552b565b612c365760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a80565b600c54600e54604051631e090f0160e01b81526001600160a01b0391821660048201526000929190911690631e090f0190602401600060405180830381865afa1580156149c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526149ea9190810190615441565b6020549091506001600160801b03600160801b8204811691166000818311614a13576000614a1d565b614a1d8284615518565b90506000614a3286614a2d61170a565b614b54565b9050614a696040518060a0016040528060008019168152602001600081526020016000815260200160008152602001600081525090565b60005b600083118015614a7b57508584105b15614b4a57868481518110614a9257614a926151a3565b6020026020010151915081604001519050600081118015614ab7575042826060015111155b15614b3f57600e548251604051634ab794a360e01b81526001600160a01b0390921691634ab794a391614af09160040190815260200190565b600060405180830381600087803b158015614b0a57600080fd5b505af1158015614b1e573d6000803e3d6000fd5b5050505082811015614b3a576001909301929182900391614a6c565b614b4a565b600190930192614a6c565b5050505050505050565b6000818310614b635781614b65565b825b90505b92915050565b801580614be75750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90614ba49030908690600401615845565b602060405180830381865afa158015614bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614be591906151e8565b155b614c525760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610a80565b612c368363095ea7b360e01b8484604051602401612bff929190615932565b6060614c808484600085614c88565b949350505050565b606082471015614ce95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610a80565b600080866001600160a01b03168587604051614d059190615a61565b60006040518083038185875af1925050503d8060008114614d42576040519150601f19603f3d011682016040523d82523d6000602084013e614d47565b606091505b5091509150614d5887838387614d63565b979650505050505050565b60608315614dd2578251600003614dcb576001600160a01b0385163b614dcb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a80565b5081614c80565b614c808383815115614de75781518083602001fd5b8060405162461bcd60e51b8152600401610a809190614e90565b508054600082559060005260206000209081019061103d91905b80821115614e2f5760008155600101614e1b565b5090565b6001600160a01b038116811461103d57600080fd5b600060208284031215614e5a57600080fd5b8135614e6581614e33565b9392505050565b60005b83811015614e87578181015183820152602001614e6f565b50506000910152565b6020815260008251806020840152614eaf816040850160208701614e6c565b601f01601f19169190910160400192915050565b801515811461103d57600080fd5b600060208284031215614ee357600080fd5b8135614e6581614ec3565b600060208284031215614f0057600080fd5b5035919050565b600080600060608486031215614f1c57600080fd5b505081359360208301359350604090920135919050565b604080825283519082018190526000906020906060840190828701845b82811015614f755781516001600160a01b031684529284019290840190600101614f50565b5050508381038285015284518082528583019183019060005b81811015614faa57835183529284019291840191600101614f8e565b5090979650505050505050565b80356001600160781b0381168114614fce57600080fd5b919050565b600080600060608486031215614fe857600080fd5b614ff184614fb7565b9250614fff60208501614fb7565b9150604084013561500f81614ec3565b809150509250925092565b6000806000806000806000806000806101408b8d03121561503a57600080fd5b8a3561504581614e33565b995060208b013561505581614e33565b985060408b013561506581614e33565b975060608b013561507581614e33565b965060808b013561508581614e33565b955060a08b0135945060c08b013561509c81614e33565b935060e08b013592506101008b013591506101208b01356150bc81614e33565b809150509295989b9194979a5092959850565b600080602083850312156150e257600080fd5b823567ffffffffffffffff808211156150fa57600080fd5b818501915085601f83011261510e57600080fd5b81358181111561511d57600080fd5b86602082850101111561512f57600080fd5b60209290920196919550909350505050565b60008060006060848603121561515657600080fd5b833561516181614e33565b9250602084013561517181614e33565b9150604084013561500f81614e33565b6000806040838503121561519457600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016151e1576151e16151b9565b5060010190565b6000602082840312156151fa57600080fd5b5051919050565b600181811c9082168061521557607f821691505b602082108103610ebd57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff8111828210171561526f5761526f615235565b60405290565b60405160a0810167ffffffffffffffff8111828210171561526f5761526f615235565b604051601f8201601f1916810167ffffffffffffffff811182821017156152c1576152c1615235565b604052919050565b6000602082840312156152db57600080fd5b815167ffffffffffffffff808211156152f357600080fd5b818401915084601f83011261530757600080fd5b81518181111561531957615319615235565b61532c601f8201601f1916602001615298565b915080825285602082850101111561534357600080fd5b615354816020840160208601614e6c565b50949350505050565b7f5374726174656779436f6e76657846726178466163746f72792d00000000000081526000825161539581601a850160208701614e6c565b91909101601a0192915050565b600061012082840312156153b557600080fd5b6153bd61524b565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b600067ffffffffffffffff82111561543757615437615235565b5060051b60200190565b6000602080838503121561545457600080fd5b825167ffffffffffffffff81111561546b57600080fd5b8301601f8101851361547c57600080fd5b805161548f61548a8261541d565b615298565b81815260a091820283018401918482019190888411156154ae57600080fd5b938501935b8385101561550c5780858a0312156154cb5760008081fd5b6154d3615275565b855181528686015187820152604080870151908201526060808701519082015260808087015190820152835293840193918501916154b3565b50979650505050505050565b81810381811115614b6857614b686151b9565b60006020828403121561553d57600080fd5b8151614e6581614ec3565b602080825260169082015275053657420766f746572207768656e206b656570203e360541b604082015260600190565b600082601f83011261558957600080fd5b8151602061559961548a8361541d565b82815260059290921b840181019181810190868411156155b857600080fd5b8286015b848110156155dc5780516155cf81614e33565b83529183019183016155bc565b509695505050505050565b600082601f8301126155f857600080fd5b8151602061560861548a8361541d565b82815260059290921b8401810191818101908684111561562757600080fd5b8286015b848110156155dc578051835291830191830161562b565b6000806040838503121561565557600080fd5b825167ffffffffffffffff8082111561566d57600080fd5b61567986838701615578565b9350602085015191508082111561568f57600080fd5b5061569c858286016155e7565b9150509250929050565b6000602082840312156156b857600080fd5b815167ffffffffffffffff8111156156cf57600080fd5b614c80848285016155e7565b6000602082840312156156ed57600080fd5b815167ffffffffffffffff81111561570457600080fd5b614c8084828501615578565b601f821115612c3657600081815260208120601f850160051c810160208610156157375750805b601f850160051c820191505b8181101561460d57828155600101615743565b67ffffffffffffffff83111561576e5761576e615235565b6157828361577c8354615201565b83615710565b6000601f8411600181146157b6576000851561579e5750838201355b600019600387901b1c1916600186901b178355610fb0565b600083815260209020601f19861690835b828110156157e757868501358255602094850194600190920191016157c7565b50868210156158045760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6001600160a01b0392831681529116602082015260400190565b805169ffffffffffffffffffff81168114614fce57600080fd5b600080600080600060a0868803121561589157600080fd5b61589a8661585f565b94506020860151935060408601519250606086015191506158bd6080870161585f565b90509295509295909350565b8082028115828204841417614b6857614b686151b9565b80820180821115614b6857614b686151b9565b60008261591057634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561592757600080fd5b8151614e6581614e33565b6001600160a01b03929092168252602082015260400190565b60006001600160801b03808316818103615967576159676151b9565b6001019392505050565b600181815b808511156159ac578160001904821115615992576159926151b9565b8085161561599f57918102915b93841c9390800290615976565b509250929050565b6000826159c357506001614b68565b816159d057506000614b68565b81600181146159e657600281146159f057615a0c565b6001915050614b68565b60ff841115615a0157615a016151b9565b50506001821b614b68565b5060208310610133831016604e8410600b8410161715615a2f575081810a614b68565b615a398383615971565b8060001904821115615a4d57615a4d6151b9565b029392505050565b6000614b6583836159b4565b60008251615a73818460208701614e6c565b919091019291505056fea2646970667358221220e1e22d48595f43568ff2cb7bfb8c93144f65db5a6d84379759a63c7bceb8818f64736f6c63430008130033000000000000000000000000d395dec4f1733ff09b750d869eefa7e0d37c3ee6000000000000000000000000b634316e06cc0b358437cbadd4dc94f1d3a92b3b000000000000000000000000000000000000000000000000000000000000001b000000000000000000000000e7211e87d60177575846936f2123b5fa6f0ce8ab000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000002540be4000000000000000000000000002b8b301b90eb8801f1eefe73285eec117d2ffc95