0 txs
0 calls
constructor
constructor()
functions
borrowTargetFactorNumerator
viewfunction borrowTargetFactorNumerator() view returns (uint256)
bVault
viewfunction bVault() view returns (address)
collateralFactorNumerator
viewfunction collateralFactorNumerator() view returns (uint256)
comptroller
viewfunction comptroller() view returns (address)
controller
viewfunction controller() view returns (address)
cToken
viewfunction cToken() view returns (address)
depositArbCheck
purefunction depositArbCheck() pure returns (bool)
factorDenominator
viewfunction factorDenominator() view returns (uint256)
feeDenominator
viewfunction feeDenominator() view returns (uint256)
fold
viewfunction fold() view returns (bool)
governance
viewfunction governance() view returns (address)
harvestMSIG
viewfunction harvestMSIG() view returns (address)
investedUnderlyingBalance
viewfunction investedUnderlyingBalance() view returns (uint256)
nextImplementation
viewfunction nextImplementation() view returns (address)
nextImplementationDelay
viewfunction nextImplementationDelay() view returns (uint256)
nextImplementationTimestamp
viewfunction nextImplementationTimestamp() view returns (uint256)
pausedInvesting
viewfunction pausedInvesting() view returns (bool)
pendingFee
viewfunction pendingFee() view returns (uint256)
platformFeeNumerator
viewfunction platformFeeNumerator() view returns (uint256)
profitSharingNumerator
viewfunction profitSharingNumerator() view returns (uint256)
rewardPool
viewfunction rewardPool() view returns (address)
rewardToken
viewfunction rewardToken() view returns (address)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
sell
viewfunction sell() view returns (bool)
shouldUpgrade
viewfunction shouldUpgrade() view returns (bool, address)
storedBalance
viewfunction storedBalance() view returns (uint256)
strategist
viewfunction strategist() view returns (address)
strategistFeeNumerator
viewfunction strategistFeeNumerator() view returns (uint256)
totalFeeNumerator
viewfunction totalFeeNumerator() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
universalLiquidator
viewfunction universalLiquidator() view returns (address)
unsalvagableTokens
viewfunction unsalvagableTokens(address token) view returns (bool)
vault
viewfunction vault() view returns (address)
_setCollateralFactorNumerator
nonpayablefunction _setCollateralFactorNumerator(uint256 _numerator)
addRewardToken
nonpayablefunction addRewardToken(address _token)
continueInvesting
nonpayablefunction continueInvesting()
currentBalance
nonpayablefunction currentBalance() returns (uint256)
doHardWork
nonpayablefunction doHardWork()
emergencyExit
nonpayablefunction emergencyExit()
finalizeUpgrade
nonpayablefunction finalizeUpgrade()
initialize
nonpayablefunction initialize()
initialize
nonpayablefunction initialize(address _storage, address _underlying, address _vault, address _rewardPool, address _rewardToken, address _strategist)
initialize
nonpayablefunction initialize(address _storage)
initializeBaseStrategy
nonpayablefunction initializeBaseStrategy(address _storage, address _underlying, address _vault, address _cToken, address _comptroller, address _rewardToken, uint256 _borrowTargetFactorNumerator, uint256 _collateralFactorNumerator, uint256 _factorDenominator, bool _fold)
initializeStrategy
nonpayablefunction initializeStrategy(address _storage, address _vault)
receiveFlashLoan
nonpayablefunction receiveFlashLoan(address[], uint256[] amounts, uint256[] feeAmounts, bytes)
salvage
nonpayablefunction salvage(address recipient, address token, uint256 amount)
scheduleUpgrade
nonpayablefunction scheduleUpgrade(address impl)
setBorrowTargetFactorNumerator
nonpayablefunction setBorrowTargetFactorNumerator(uint256 _numerator)
setFold
nonpayablefunction setFold(bool _fold)
setStorage
nonpayablefunction setStorage(address _store)
toggleMerklOperator
nonpayablefunction toggleMerklOperator(address merklClaim, address operator)
withdrawAllToVault
nonpayablefunction withdrawAllToVault()
withdrawToVault
nonpayablefunction withdrawToVault(uint256 amountUnderlying)
events
PlatformFeeLogInReward
event PlatformFeeLogInReward(address indexed treasury, address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitLogInReward
event ProfitLogInReward(address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitLogInReward
event ProfitLogInReward(uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitsNotCollected
event ProfitsNotCollected(address indexed rewardToken, bool sell, bool floor)
ProfitsNotCollected
event ProfitsNotCollected(bool sell, bool floor)
StrategistFeeLogInReward
event StrategistFeeLogInReward(address indexed strategist, address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b5061003c60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe266107bc565b7f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe251461006a5761006a6107e3565b61009560017fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dd6107bc565b7fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc146100c3576100c36107e3565b6100ee60017fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5316107bc565b7fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5301461011c5761011c6107e3565b61014760017fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d426107bc565b7fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4114610175576101756107e3565b6101a060017fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bc06107bc565b7fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf146101ce576101ce6107e3565b6101f960017f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b96107bc565b7f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b814610227576102276107e3565b61025260017f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb76107bc565b7f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb614610280576102806107e3565b6102ab60017fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591b6107bc565b7fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a146102d9576102d96107e3565b61030460017fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c02a6107bc565b7fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c02914610332576103326107e3565b61035d60017f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3c6107bc565b7f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3b1461038b5761038b6107e3565b6103b660017f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844486107bc565b7f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb84447146103e4576103e46107e3565b61040f60017f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22f6107bc565b7f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22e1461043d5761043d6107e3565b61046860017f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b326107bc565b7f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b3114610496576104966107e3565b6104c160017f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458e6107bc565b7f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d146104ef576104ef6107e3565b61051a60017f316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d5696107bc565b7f316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d56814610548576105486107e3565b61057360017f21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e2366107bc565b7f21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e235146105a1576105a16107e3565b6105cc60017f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a36107bc565b7f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a2146105fa576105fa6107e3565b61062560017f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd986107bc565b7f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd9714610653576106536107e3565b61067e60017f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64b6107bc565b7f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a146106ac576106ac6107e3565b6106d760017f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ef6107bc565b7f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ee14610705576107056107e3565b61073060017fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1ce6107bc565b7fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cd1461075e5761075e6107e3565b61078960017f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44bb6107bc565b7f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44ba146107b7576107b76107e3565b6107f9565b818103818111156107dd57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052600160045260246000fd5b6159b1806108086000396000f3fe6080604052600436106102695760003560e01c806303140ff41461027557806306974e8d1461029d57806309ff18f0146102bf5780630c80447a146102d45780631113ef52146102f6578063180b0d7e146103165780631c03e6cc1461032b5780631fe4a6861461034b57806320d1ceaf1461036057806320d88ac714610375578063394b71cf1461038a5780633f282b8d146103ac57806345710074146103cc57806345d01e4a146103f15780634d352ab2146104065780634ed65416146104265780634fa5d85414610446578063501859461461045b5780635641ec031461047b5780635aa6e675146104905780635fe3b567146104a5578063643090bc146104ba57806366666aa9146104cf57806369e527da146104e45780636f307dc3146104f9578063759098881461050e57806375f6d6ce146105235780637bb7bed1146105435780638129fc1c1461056357806382de9c1b146105785780639137c1a71461058d5780639a138d6d146105ad5780639a508c8e146105cd5780639d16acfd146105e2578063a836569314610616578063b5d7a94f1461062b578063b60f151a14610640578063b8d3370b14610655578063bfd131f11461066a578063c23ff8b61461067f578063c2a2a07b1461069f578063c4d66de8146106b3578063cc2a9a5b146106d3578063ce845d1d146106f3578063ce8c42e814610708578063d3df8aa414610728578063db6204851461073d578063e684f46a14610752578063e9eca99414610767578063ec0956061461077c578063f04f2707146107a4578063f77c4791146107c4578063f7c618c1146107d9578063fbfa77cf146107ee57600080fd5b3661027057005b600080fd5b34801561028157600080fd5b5061028a610803565b6040519081526020015b60405180910390f35b3480156102a957600080fd5b506102b2610873565b6040516102949190614db1565b3480156102cb57600080fd5b506102b26108de565b3480156102e057600080fd5b506102f46102ef366004614dda565b6108f6565b005b34801561030257600080fd5b506102f4610311366004614df7565b6109b5565b34801561032257600080fd5b5061028a610abf565b34801561033757600080fd5b506102f4610346366004614dda565b610b06565b34801561035757600080fd5b506102b2610be7565b34801561036c57600080fd5b5061028a610bff565b34801561038157600080fd5b5061028a610c46565b34801561039657600080fd5b506102b26000805160206158dc83398151915281565b3480156103b857600080fd5b506102f46103c7366004614e38565b610c5e565b3480156103d857600080fd5b506103e1610d70565b6040519015158152602001610294565b3480156103fd57600080fd5b5061028a610d89565b34801561041257600080fd5b506102f4610421366004614e51565b610e2b565b34801561043257600080fd5b506102f4610441366004614e98565b610f2b565b34801561045257600080fd5b506102f4611253565b34801561046757600080fd5b506103e1610476366004614dda565b6112fb565b34801561048757600080fd5b506102f4611365565b34801561049c57600080fd5b506102b2611409565b3480156104b157600080fd5b506102b2611450565b3480156104c657600080fd5b5061028a611468565b3480156104db57600080fd5b506102b2611480565b3480156104f057600080fd5b506102b2611498565b34801561050557600080fd5b506102b26114b0565b34801561051a57600080fd5b5061028a6114c8565b34801561052f57600080fd5b506102f461053e366004614f4d565b6114e0565b34801561054f57600080fd5b506102b261055e366004614e38565b611588565b34801561056f57600080fd5b506102f46115b2565b34801561058457600080fd5b5061028a611641565b34801561059957600080fd5b506102f46105a8366004614dda565b611659565b3480156105b957600080fd5b506102f46105c8366004614e51565b611748565b3480156105d957600080fd5b506102f461183c565b3480156105ee57600080fd5b506105f76118d4565b6040805192151583526001600160a01b03909116602083015201610294565b34801561062257600080fd5b5061028a611920565b34801561063757600080fd5b5061028a611967565b34801561064c57600080fd5b5061028a61197f565b34801561066157600080fd5b5061028a6119c6565b34801561067657600080fd5b506102f46119ec565b34801561068b57600080fd5b506102f461069a366004614e38565b611b20565b3480156106ab57600080fd5b5060016103e1565b3480156106bf57600080fd5b506102f46106ce366004614dda565b611ca0565b3480156106df57600080fd5b506102f46106ee366004614f6a565b611d15565b3480156106ff57600080fd5b5061028a611dd1565b34801561071457600080fd5b506102f4610723366004614e38565b611ed6565b34801561073457600080fd5b506103e16120ba565b34801561074957600080fd5b506102f46120d3565b34801561075e57600080fd5b506103e161216d565b34801561077357600080fd5b5061028a612186565b34801561078857600080fd5b506102b273f3d1a027e858976634f81b7c41b09a05a46eda2181565b3480156107b057600080fd5b506102f46107bf366004615131565b61219e565b3480156107d057600080fd5b506102b2612420565b3480156107e557600080fd5b506102b2612467565b3480156107fa57600080fd5b506102b261247f565b600061080d612420565b6001600160a01b03166303140ff46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061524f565b905090565b600061087d612420565b6001600160a01b03166306974e8d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190615268565b600061086e60008051602061575c8339815191525490565b6108fe612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016109299190614db1565b602060405180830381865afa158015610946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190615285565b61098f5760405162461bcd60e51b8152600401610986906152a2565b60405180910390fd5b610998816124aa565b6109b26109ad6109a6611920565b42906124c1565b6124d4565b50565b6109bd612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016109e89190614db1565b602060405180830381865afa158015610a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a299190615285565b610a455760405162461bcd60e51b8152600401610986906152a2565b610a4e826112fb565b15610aa65760405162461bcd60e51b815260206004820152602260248201527f746f6b656e20697320646566696e6564206173206e6f742073616c76616761626044820152616c6560f01b6064820152608401610986565b610aba6001600160a01b03831684836124eb565b505050565b6000610ac9612420565b6001600160a01b031663180b0d7e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b610b0e612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401610b399190614db1565b602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190615285565b610b965760405162461bcd60e51b8152600401610986906152a2565b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0392909216919091179055565b600061086e60008051602061577c8339815191525490565b6000610c09612420565b6001600160a01b03166320d1ceaf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e60008051602061595c8339815191525490565b610c66612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401610c919190614db1565b602060405180830381865afa158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd29190615285565b610cee5760405162461bcd60e51b8152600401610986906152a2565b610cf6611967565b8110610d595760405162461bcd60e51b815260206004820152602c60248201527f5461726765742073686f756c64206265206c6f776572207468616e20636f6c6c60448201526b185d195c985b081b1a5b5a5d60a21b6064820152608401610986565b6109b260008051602061591c833981519152829055565b600061086e6000805160206156dc833981519152612541565b600080610d946114b0565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610dbf9190614db1565b602060405180830381865afa158015610ddc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e00919061524f565b9050610e25610e0d611468565b610e1f610e18612186565b84906124c1565b90612554565b91505090565b600054610100900460ff1680610e44575060005460ff16155b610e605760405162461bcd60e51b8152600401610986906152ca565b600054610100900460ff16158015610e82576000805461ffff19166101011790555b7382af49447d8a07e3bd95bd0d56f35241523fbab17339d6d13ea59548637104e40e729e4aabe27fe1067352bab1af7ff770551bd05b9fc2329a0bf5e23f1673c1eb7689147c81ac840d4ff0d298489fc7986d52610eec878588868686600060016103e882610f2b565b60408051602081019091526001600160a01b0382168152610f109060019081614d37565b50505050508015610aba576000805461ff0019169055505050565b600054610100900460ff1680610f44575060005460ff16155b610f605760405162461bcd60e51b8152600401610986906152ca565b600054610100900460ff16158015610f82576000805461ffff19166101011790555b610fa48b8b8b8a8a73f3d1a027e858976634f81b7c41b09a05a46eda21611d15565b896001600160a01b0316886001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110109190615268565b6001600160a01b03161461105c5760405162461bcd60e51b81526020600482015260136024820152720aadcc8cae4d8f2d2dcce40dad2e6dac2e8c6d606b1b6044820152606401610986565b61106588612560565b61106e87612577565b8284106110d25760405162461bcd60e51b815260206004820152602c60248201527f4e756d657261746f722073686f756c6420626520736d616c6c6572207468616e60448201526b103232b737b6b4b730ba37b960a11b6064820152608401610986565b83851061112b5760405162461bcd60e51b815260206004820152602160248201527f5461726765742073686f756c64206265206c6f776572207468616e206c696d696044820152601d60fa1b6064820152608401610986565b6111348361258e565b61114b60008051602061573c833981519152859055565b61116260008051602061591c833981519152869055565b61117a60008051602061589c833981519152836125a5565b6040805160018082528183019092526000916020808301908036833701905050905088816000815181106111b0576111b0615318565b6001600160a01b039283166020918202929092010152604051631853304760e31b81529089169063c2998238906111eb908490600401615373565b6000604051808303816000875af115801561120a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112329190810190615386565b50508015611246576000805461ff00191690555b5050505050505050505050565b61125b61247f565b6001600160a01b0316336001600160a01b03161480611292575061127d612420565b6001600160a01b0316336001600160a01b0316145b806112b557506112a0611409565b6001600160a01b0316336001600160a01b0316145b6112d15760405162461bcd60e51b81526004016109869061541b565b6112d96125bf565b6112e16126bc565b6112e96127c2565b6112f1612b7d565b6112f9612c65565b565b6000611305612467565b6001600160a01b0316826001600160a01b0316148061133c57506113276114b0565b6001600160a01b0316826001600160a01b0316145b8061135f575061134a611498565b6001600160a01b0316826001600160a01b0316145b92915050565b61136d612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016113989190614db1565b602060405180830381865afa1580156113b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d99190615285565b6113f55760405162461bcd60e51b8152600401610986906152a2565b6113ff6000612c88565b6112f16001612cbb565b6000611413612497565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b600061086e60008051602061585c8339815191525490565b600061086e6000805160206158fc8339815191525490565b600061086e60008051602061579c8339815191525490565b600061086e6000805160206156fc8339815191525490565b600061086e6000805160206158bc8339815191525490565b600061086e60008051602061591c8339815191525490565b6114e8612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016115139190614db1565b602060405180830381865afa158015611530573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115549190615285565b6115705760405162461bcd60e51b8152600401610986906152a2565b6109b260008051602061589c833981519152826125a5565b6001818154811061159857600080fd5b6000918252602090912001546001600160a01b0316905081565b600054610100900460ff16806115cb575060005460ff16155b6115e75760405162461bcd60e51b8152600401610986906152ca565b600054610100900460ff16158015611609576000805461ffff19166101011790555b60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe255580156109b2576000805461ff001916905550565b600061086e60008051602061581c8339815191525490565b611661612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161168c9190614db1565b602060405180830381865afa1580156116a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cd9190615285565b6116e95760405162461bcd60e51b8152600401610986906152a2565b6001600160a01b03811661173f5760405162461bcd60e51b815260206004820152601e60248201527f6e65772073746f726167652073686f756c646e277420626520656d70747900006044820152606401610986565b6109b281612cd3565b611750612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161177b9190614db1565b602060405180830381865afa158015611798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bc9190615285565b6117d85760405162461bcd60e51b8152600401610986906152a2565b60405163bdac7ca360e01b81526001600160a01b0383169063bdac7ca3906118069030908590600401615440565b600060405180830381600087803b15801561182057600080fd5b505af1158015611834573d6000803e3d6000fd5b505050505050565b611844612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161186f9190614db1565b602060405180830381865afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b09190615285565b6118cc5760405162461bcd60e51b8152600401610986906152a2565b6112f9612ce5565b6000806118df611641565b158015906118f357506118f0611641565b42115b8015611910575060006119046108de565b6001600160a01b031614155b6119186108de565b915091509091565b600061192a612420565b6001600160a01b031663a83656936040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e60008051602061573c8339815191525490565b6000611989612420565b6001600160a01b031663b60f151a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e6119d361197f565b6119e66119de610bff565b6119e6610803565b906124c1565b6119f461247f565b6001600160a01b0316336001600160a01b03161480611a2b5750611a16612420565b6001600160a01b0316336001600160a01b0316145b80611a4e5750611a39611409565b6001600160a01b0316336001600160a01b0316145b611a6a5760405162461bcd60e51b81526004016109869061541b565b6000611a746114b0565b9050611a806001612c88565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611aaf903090600401614db1565b602060405180830381865afa158015611acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af0919061524f565b90508015611b1457611b14611b0361247f565b6001600160a01b03841690836124eb565b611b1c612c65565b5050565b611b28612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401611b539190614db1565b602060405180830381865afa158015611b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b949190615285565b611bb05760405162461bcd60e51b8152600401610986906152a2565b611bb8610c46565b811115611c155760405162461bcd60e51b815260206004820152602560248201527f436f6c6c61746572616c20666163746f722063616e6e6f742062652074686973604482015264040d0d2ced60db1b6064820152608401610986565b611c1d6114c8565b8111611c895760405162461bcd60e51b815260206004820152603560248201527f436f6c6c61746572616c20666163746f722073686f756c642062652068696768604482015274195c881d1a185b88189bdc9c9bddc81d185c99d95d605a1b6064820152608401610986565b6109b260008051602061573c833981519152829055565b600054610100900460ff1680611cb9575060005460ff16155b611cd55760405162461bcd60e51b8152600401610986906152ca565b600054610100900460ff16158015611cf7576000805461ffff19166101011790555b611d0082612cf9565b8015611b1c576000805461ff00191690555050565b600054610100900460ff1680611d2e575060005460ff16155b611d4a5760405162461bcd60e51b8152600401610986906152ca565b600054610100900460ff16158015611d6c576000805461ffff19166101011790555b611d7587611ca0565b611d7e86612d61565b611d8785612d78565b611d9084612d8f565b611d9983612da6565b611da282612dbd565b611dac6001612dd4565b611db66000612cbb565b8015611dc8576000805461ff00191690555b50505050505050565b600080611ddc611498565b90506000816001600160a01b0316633af9e669306040518263ffffffff1660e01b8152600401611e0c9190614db1565b6020604051808303816000875af1158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f919061524f565b90506000826001600160a01b03166317bfdfbc306040518263ffffffff1660e01b8152600401611e7f9190614db1565b6020604051808303816000875af1158015611e9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec2919061524f565b9050611ece8282612554565b935050505090565b611ede61247f565b6001600160a01b0316336001600160a01b03161480611f155750611f00612420565b6001600160a01b0316336001600160a01b0316145b80611f385750611f23611409565b6001600160a01b0316336001600160a01b0316145b611f545760405162461bcd60e51b81526004016109869061541b565b611f5c612dec565b6000611f666114b0565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611f969190614db1565b602060405180830381865afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd7919061524f565b9050808311611ffc57610aba611feb61247f565b6001600160a01b03841690856124eb565b60006120088483612554565b905061201381612e62565b61202f61201e61247f565b6001600160a01b03851690866124eb565b6040516370a0823160e01b81526001600160a01b038416906370a082319061205b903090600401614db1565b602060405180830381865afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c919061524f565b915081156120ac576120ac612b7d565b6120b4612c65565b50505050565b600061086e60008051602061583c833981519152612541565b6120db612497565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016121069190614db1565b602060405180830381865afa158015612123573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121479190615285565b6121635760405162461bcd60e51b8152600401610986906152a2565b6112f96000612cbb565b600061086e60008051602061589c833981519152612541565b600061086e60008051602061587c8339815191525490565b336000805160206158dc833981519152146121b857600080fd5b60005462010000900460ff1615806121da57506000546301000000900460ff16155b61221d5760405162461bcd60e51b81526020600482015260146024820152734f6e6c79206f6e652063616e206265207472756560601b6044820152606401610986565b60005462010000900460ff168061223d57506000546301000000900460ff165b61227e5760405162461bcd60e51b81526020600482015260126024820152714f6e652068617320746f206265207472756560701b6044820152606401610986565b60006122886114b0565b905060006122d3846000815181106122a2576122a2615318565b6020026020010151866000815181106122bd576122bd615318565b60200260200101516124c190919063ffffffff16565b60005490915062010000900460ff16156123185761230a856000815181106122fd576122fd615318565b6020026020010151612fe5565b612313816131f2565b6123fe565b6000612322611498565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016123529190614db1565b6020604051808303816000875af1158015612371573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612395919061524f565b905060006123bd886000815181106123af576123af615318565b602002602001015183613275565b90506123d46001600160a01b03861684600061328b565b6123e86001600160a01b038616848361328b565b6123f18161338e565b6123fa84613446565b5050505b6118346001600160a01b0383166000805160206158dc833981519152836124eb565b600061242a612497565b6001600160a01b031663f77c47916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b600061086e6000805160206157fc8339815191525490565b600061086e6000805160206157bc8339815191525490565b60008051602061571c8339815191525490565b6109b260008051602061575c833981519152829055565b60006124cd8284615470565b9392505050565b6109b260008051602061581c833981519152829055565b610aba8363a9059cbb60e01b848460405160240161250a929190615483565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613538565b600061254b825490565b60011492915050565b60006124cd828461549c565b6109b26000805160206156fc833981519152829055565b6109b260008051602061585c833981519152829055565b6109b260008051602061595c833981519152829055565b611b1c82826125b55760006125b8565b60015b60ff169055565b6125c7612dec565b60006125d1611468565b905060648111156109b2576125e581613446565b60006125ef6114b0565b905061266782826001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016126219190614db1565b602060405180830381865afa15801561263e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612662919061524f565b613275565b9150600061268e6126766119c6565b612688612681610abf565b869061360d565b90613619565b905061269a8282613625565b610aba6000805160206158fc8339815191526126b885610e1f611468565b9055565b60006126c6611450565b6001600160a01b03166361252fd16040518163ffffffff1660e01b8152600401600060405180830381865afa158015612703573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261272b91908101906154af565b905060005b8151811015611b1c57600082828151811061274d5761274d615318565b60200260200101519050806001600160a01b031663ca37271b306040518263ffffffff1660e01b81526004016127839190614db1565b600060405180830381600087803b15801561279d57600080fd5b505af11580156127b1573d6000803e3d6000fd5b505060019093019250612730915050565b6127ca610d70565b612812577f408a4b113351e616bb41bad991f29bbad84b43c3810e7492a6bc7c6388dfe0c26127f7610d70565b604080519115158252600060208301520160405180910390a1565b600061281c612467565b90506000612828610873565b905060006128346114b0565b905060005b6001548110156129aa5760006001828154811061285857612858615318565b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190612893903090600401614db1565b602060405180830381865afa1580156128b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d4919061524f565b90506000811180156128f85750856001600160a01b0316826001600160a01b031614155b156129a0576129126001600160a01b03831686600061328b565b6129266001600160a01b038316868361328b565b60405163d5bcb9b560e01b81526001600160a01b0386169063d5bcb9b59061295b9085908a9086906001903090600401615543565b6020604051808303816000875af115801561297a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299e919061524f565b505b5050600101612839565b506040516370a0823160e01b81526000906001600160a01b038516906370a08231906129da903090600401614db1565b602060405180830381865afa1580156129f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1b919061524f565b9050655af3107a4000811015612a315750505050565b612a3b8482613625565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190612a6a903090600401614db1565b602060405180830381865afa158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061524f565b905080600003612abc575050505050565b846001600160a01b0316836001600160a01b031614612b7657612aea6001600160a01b03861685600061328b565b612afe6001600160a01b038616858361328b565b60405163d5bcb9b560e01b81526001600160a01b0385169063d5bcb9b590612b33908890879086906001903090600401615543565b6020604051808303816000875af1158015612b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611834919061524f565b5050505050565b612b856120ba565b15612bc45760405162461bcd60e51b815260206004820152600f60248201526e656d657267656e637920737461746560881b6044820152606401610986565b6000612bce6114b0565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612bfe9190614db1565b602060405180830381865afa158015612c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3f919061524f565b90508015612c5057612c5081612fe5565b612c5861216d565b15611b1c57611b1c6139db565b6000612c6f611dd1565b90506109b260008051602061587c833981519152829055565b8015612cab57612c966125bf565b612c9e6126bc565b612ca66127c2565b612cb3565b612cb3612dec565b6109b2613fb4565b6109b260008051602061583c833981519152826125a5565b60008051602061571c83398151915255565b612cef60006124aa565b6112f960006124d4565b600054610100900460ff1680612d12575060005460ff16155b612d2e5760405162461bcd60e51b8152600401610986906152ca565b600054610100900460ff16158015612d50576000805461ffff19166101011790555b612d5982612cd3565b611d006115b2565b6109b26000805160206158bc833981519152829055565b6109b26000805160206157bc833981519152829055565b6109b260008051602061579c833981519152829055565b6109b26000805160206157fc833981519152829055565b6109b260008051602061577c833981519152829055565b6109b26000805160206156dc833981519152826125a5565b6000612df6612186565b612dfe611dd1565b1115612e3c576000612e19612e11612186565b610e1f611dd1565b9050612e38612e26610abf565b612688612e316119c6565b849061360d565b9150505b612e5a6000805160206158fc8339815191526126b8836119e6611468565b6109b2612c65565b6000612e6c6114b0565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e9c9190614db1565b602060405180830381865afa158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd919061524f565b9050612f0383612eeb61216d565b612ef6576000614249565b612efe6114c8565b614249565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190612f32903090600401614db1565b602060405180830381865afa158015612f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f73919061524f565b905083612f808284612554565b10156120b45760405162461bcd60e51b815260206004820152602e60248201527f556e61626c6520746f2077697468647261772074686520656e7469726520616d60448201526d6f756e74556e6465726c79696e6760901b6064820152608401610986565b80600003612ff05750565b6000612ffa6114b0565b90506000613006611498565b90506000613012611450565b6001600160a01b03166302c3bcbb836040518263ffffffff1660e01b815260040161303d9190614db1565b602060405180830381865afa15801561305a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307e919061524f565b90508060000361308d57506000195b600061316a670de0b6b3a7640000612688856001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156130de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613102919061524f565b866001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613140573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613164919061524f565b9061360d565b905081811061317a575050505050565b846131858383612554565b1161319c576131996002610e1f8484612554565b94505b6131b16001600160a01b03851684600061328b565b6131c56001600160a01b038516848761328b565b60405163140e25ad60e31b8152600481018690526001600160a01b0384169063a0712d6890602401612b33565b806000036131fd5750565b613205611498565b6001600160a01b031663c5ebeaec826040518263ffffffff1660e01b815260040161323291815260200190565b6020604051808303816000875af1158015613251573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1c919061524f565b600081831061328457816124cd565b5090919050565b8015806133045750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906132c19030908690600401615440565b602060405180830381865afa1580156132de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613302919061524f565b155b61336f5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610986565b610aba8363095ea7b360e01b848460405160240161250a929190615483565b806000036133995750565b60006133a36114b0565b905060006133af611498565b90506133c66001600160a01b03831682600061328b565b6133da6001600160a01b038316828561328b565b60405163073a938160e11b8152600481018490526001600160a01b03821690630e752702906024015b6020604051808303816000875af1158015613422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b4919061524f565b806000036134515750565b600061345b611498565b90506000816001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561349f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c3919061524f565b9050806134d884670de0b6b3a764000061360d565b101561350b5760405163db006a7560e01b8152600160048201526001600160a01b0383169063db006a7590602401613403565b60405163852a12e360e01b8152600481018490526001600160a01b0383169063852a12e390602401613403565b600061358d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145909092919063ffffffff16565b90508051600014806135ae5750808060200190518101906135ae9190615285565b610aba5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610986565b60006124cd8284615573565b60006124cd828461558a565b60648111156138b8576000613638610abf565b9050600061364b82612688612681610803565b905060006136658361268861365e610bff565b879061360d565b9050600061367f8461268861367861197f565b889061360d565b9050600061368b610be7565b90506000613697612420565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f89190615268565b9050876001600160a01b03166000805160206156bc833981519152888542604051613725939291906155ac565b60405180910390a2876001600160a01b0316816001600160a01b031660008051602061593c833981519152898742604051613762939291906155ac565b60405180910390a3876001600160a01b0316826001600160a01b03166000805160206157dc83398151915289884260405161379f939291906155ac565b60405180910390a360006137b1612420565b6001600160a01b031663a98e929c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138129190615268565b90506138296001600160a01b038a1682600061328b565b61383d6001600160a01b038a16828a61328b565b604051631112a1b760e11b81526001600160a01b038a81166004830152602482018690526044820188905260648201879052821690632225436e90608401600060405180830381600087803b15801561389557600080fd5b505af11580156138a9573d6000803e3d6000fd5b50505050505050505050505050565b816001600160a01b03166000805160206156bc833981519152600080426040516138e4939291906155ac565b60405180910390a2816001600160a01b03166138fe612420565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561393b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061395f9190615268565b6001600160a01b031660008051602061593c8339815191526000804260405161398a939291906155ac565b60405180910390a3816001600160a01b03166139a4610be7565b6001600160a01b03166000805160206157dc833981519152600080426040516139cf939291906155ac565b60405180910390a35050565b60006139e5611498565b905060006139f1610c46565b905060006139fd6114c8565b90506000836001600160a01b0316633af9e669306040518263ffffffff1660e01b8152600401613a2d9190614db1565b6020604051808303816000875af1158015613a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a70919061524f565b90506000846001600160a01b03166317bfdfbc306040518263ffffffff1660e01b8152600401613aa09190614db1565b6020604051808303816000875af1158015613abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae3919061524f565b90506000613af18383612554565b90506000613b0c613b028787612554565b612688848861360d565b905080831115613b2757613b206000612e62565b5081613db0565b6000613b31611450565b90506000816001600160a01b0316634a5844328a6040518263ffffffff1660e01b8152600401613b619190614db1565b602060405180830381865afa158015613b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba2919061524f565b90506000826001600160a01b03166302c3bcbb8b6040518263ffffffff1660e01b8152600401613bd29190614db1565b602060405180830381865afa158015613bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c13919061524f565b905081600003613c235760001991505b80600003613c3057506000195b60008a6001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c94919061524f565b90506000613d49670de0b6b3a76400006126888e6001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613ce7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d0b919061524f565b8f6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613140573d6000803e3d6000fd5b9050600084831015613d9557613d646002610e1f8786612554565b905083821015613d8d57613d86613d806002610e1f8786612554565b82613275565b9050613d99565b506000613d99565b5060005b613da7876126628b846124c1565b96505050505050505b6000613dbc8285612554565b90506000613dc86114b0565b90506000816001600160a01b03166370a082316000805160206158dc8339815191526040518263ffffffff1660e01b8152600401613e069190614db1565b602060405180830381865afa158015613e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e47919061524f565b905080831115613e5f57613e5a846145a7565b613fa8565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505060408051600060208201819052929350016040516020818303038152906040529050613ecc6114b0565b83600081518110613edf57613edf615318565b60200260200101906001600160a01b031690816001600160a01b0316815250508582600081518110613f1357613f13615318565b60209081029190910101526000805462ff0000191662010000179055604051632e1c224f60e11b81526000805160206158dc83398151915290635c38449e90613f66903090879087908790600401615612565b600060405180830381600087803b158015613f8057600080fd5b505af1158015613f94573d6000803e3d6000fd5b50506000805462ff00001916905550505050505b50505050505050505050565b6000613fbe611498565b90506000816001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015614000573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614024919061524f565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016140549190614db1565b6020604051808303816000875af1158015614073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614097919061524f565b90506000836001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016140c79190614db1565b6020604051808303816000875af11580156140e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061410a919061524f565b90506000614123614119611468565b610e1f8585612554565b90506141396141328286613275565b6000614249565b846001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015614177573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419b919061524f565b604051633af9e66960e01b81529094506001600160a01b03861690633af9e669906141ca903090600401614db1565b6020604051808303816000875af11580156141e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420d919061524f565b9250614217611468565b6142218486613275565b1115612b7657612b7661424461423a60016119e6611468565b610e1f8688613275565b613446565b6000614253611498565b90506000816001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016142839190614db1565b6020604051808303816000875af11580156142a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c6919061524f565b90506000826001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016142f69190614db1565b6020604051808303816000875af1158015614315573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614339919061524f565b90506000806143488484612554565b905060006143568289612554565b905061437161436788610e1f610c46565b612688838a61360d565b9250505060008183101561438757506000614394565b6143918383612554565b90505b600061439e6114b0565b90506000816001600160a01b03166370a082316000805160206158dc8339815191526040518263ffffffff1660e01b81526004016143dc9190614db1565b602060405180830381865afa1580156143f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441d919061524f565b905080831115614436576144318985614858565b614585565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050506040805160006020820181905292935001604051602081830303815290604052905084836000815181106144af576144af615318565b60200260200101906001600160a01b031690816001600160a01b03168152505085826000815181106144e3576144e3615318565b60209081029190910101526000805463ff00000019166301000000179055604051632e1c224f60e11b81526000805160206158dc83398151915290635c38449e90614538903090879087908790600401615612565b600060405180830381600087803b15801561455257600080fd5b505af1158015614566573d6000803e3d6000fd5b50506000805463ff000000191690555061458190508c613446565b5050505b505050505050505050565b606061459f8484600085614bbe565b949350505050565b60006145b16114b0565b905060006145bd611498565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016145ed9190614db1565b6020604051808303816000875af115801561460c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614630919061524f565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016146609190614db1565b6020604051808303816000875af115801561467f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a3919061524f565b90505b84821015612b765760006146ba8684612554565b905060006146d884610e1f6146cd610c46565b612688613678611967565b90506146ec6146e78383613275565b6131f2565b6040516370a0823160e01b81526000906001600160a01b038816906370a082319061471b903090600401614db1565b602060405180830381865afa158015614738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061475c919061524f565b9050801561476d5761476d81612fe5565b6040516305eff7ef60e21b81526001600160a01b038716906317bfdfbc90614799903090600401614db1565b6020604051808303816000875af11580156147b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147dc919061524f565b604051633af9e66960e01b81529095506001600160a01b03871690633af9e6699061480b903090600401614db1565b6020604051808303816000875af115801561482a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061484e919061524f565b93505050506146a6565b60006148626114b0565b9050600061486e611498565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b815260040161489e9190614db1565b6020604051808303816000875af11580156148bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148e1919061524f565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016149119190614db1565b6020604051808303816000875af1158015614930573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614954919061524f565b90505b84821115614b1b57600061497761496c611967565b612688612681610c46565b905060006149858488612554565b905060006149a06149968585612554565b6126628b856124c1565b90506149ab81613446565b6040516370a0823160e01b81526000906001600160a01b038916906370a08231906149da903090600401614db1565b602060405180830381865afa1580156149f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a1b919061524f565b9050614a2f614a2a8483613275565b61338e565b6040516305eff7ef60e21b81526001600160a01b038816906317bfdfbc90614a5b903090600401614db1565b6020604051808303816000875af1158015614a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a9e919061524f565b604051633af9e66960e01b81529096506001600160a01b03881690633af9e66990614acd903090600401614db1565b6020604051808303816000875af1158015614aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b10919061524f565b945050505050614957565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190614b4a903090600401614db1565b602060405180830381865afa158015614b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b8b919061524f565b905086811015611dc8576000614ba18883612554565b90506000614baf8486612554565b90506145856142448383613275565b606082471015614c1f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610986565b600080866001600160a01b03168587604051614c3b919061568c565b60006040518083038185875af1925050503d8060008114614c78576040519150601f19603f3d011682016040523d82523d6000602084013e614c7d565b606091505b5091509150614c8e87838387614c99565b979650505050505050565b60608315614d08578251600003614d01576001600160a01b0385163b614d015760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610986565b508161459f565b61459f8383815115614d1d5781518083602001fd5b8060405162461bcd60e51b815260040161098691906156a8565b828054828255906000526020600020908101928215614d8c579160200282015b82811115614d8c57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614d57565b50614d98929150614d9c565b5090565b5b80821115614d985760008155600101614d9d565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146109b257600080fd5b600060208284031215614dec57600080fd5b81356124cd81614dc5565b600080600060608486031215614e0c57600080fd5b8335614e1781614dc5565b92506020840135614e2781614dc5565b929592945050506040919091013590565b600060208284031215614e4a57600080fd5b5035919050565b60008060408385031215614e6457600080fd5b8235614e6f81614dc5565b91506020830135614e7f81614dc5565b809150509250929050565b80151581146109b257600080fd5b6000806000806000806000806000806101408b8d031215614eb857600080fd5b8a35614ec381614dc5565b995060208b0135614ed381614dc5565b985060408b0135614ee381614dc5565b975060608b0135614ef381614dc5565b965060808b0135614f0381614dc5565b955060a08b0135614f1381614dc5565b945060c08b0135935060e08b013592506101008b013591506101208b0135614f3a81614e8a565b809150509295989b9194979a5092959850565b600060208284031215614f5f57600080fd5b81356124cd81614e8a565b60008060008060008060c08789031215614f8357600080fd5b8635614f8e81614dc5565b95506020870135614f9e81614dc5565b94506040870135614fae81614dc5565b93506060870135614fbe81614dc5565b92506080870135614fce81614dc5565b915060a0870135614fde81614dc5565b809150509295509295509295565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561502a5761502a614fec565b604052919050565b60006001600160401b0382111561504b5761504b614fec565b5060051b60200190565b600082601f83011261506657600080fd5b813561507961507482615032565b615002565b8082825260208201915060208360051b86010192508583111561509b57600080fd5b602085015b838110156150b85780358352602092830192016150a0565b5095945050505050565b600082601f8301126150d357600080fd5b81356001600160401b038111156150ec576150ec614fec565b6150ff601f8201601f1916602001615002565b81815284602083860101111561511457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561514757600080fd5b84356001600160401b0381111561515d57600080fd5b8501601f8101871361516e57600080fd5b803561517c61507482615032565b8082825260208201915060208360051b85010192508983111561519e57600080fd5b6020840193505b828410156151c95783356151b881614dc5565b8252602093840193909101906151a5565b965050505060208501356001600160401b038111156151e757600080fd5b6151f387828801615055565b93505060408501356001600160401b0381111561520f57600080fd5b61521b87828801615055565b92505060608501356001600160401b0381111561523757600080fd5b615243878288016150c2565b91505092959194509250565b60006020828403121561526157600080fd5b5051919050565b60006020828403121561527a57600080fd5b81516124cd81614dc5565b60006020828403121561529757600080fd5b81516124cd81614e8a565b6020808252600e908201526d4e6f7420676f7665726e616e636560901b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b828110156153695781516001600160a01b0316865260209586019590910190600101615342565b5093949350505050565b6020815260006124cd602083018461532e565b60006020828403121561539857600080fd5b81516001600160401b038111156153ae57600080fd5b8201601f810184136153bf57600080fd5b80516153cd61507482615032565b8082825260208201915060208360051b8501019250868311156153ef57600080fd5b6020840193505b828410156154115783518252602093840193909101906153f6565b9695505050505050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561135f5761135f61545a565b6001600160a01b03929092168252602082015260400190565b8181038181111561135f5761135f61545a565b6000602082840312156154c157600080fd5b81516001600160401b038111156154d757600080fd5b8201601f810184136154e857600080fd5b80516154f661507482615032565b8082825260208201915060208360051b85010192508683111561551857600080fd5b6020840193505b8284101561541157835161553281614dc5565b82526020938401939091019061551f565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b808202811582820484141761135f5761135f61545a565b6000826155a757634e487b7160e01b600052601260045260246000fd5b500490565b9283526020830191909152604082015260600190565b60005b838110156155dd5781810151838201526020016155c5565b50506000910152565b600081518084526155fe8160208601602086016155c2565b601f01601f19169290920160200192915050565b6001600160a01b03851681526080602082018190526000906156369083018661532e565b82810360408401528451808252602080870192019060005b8181101561566c57835183526020938401939092019160010161564e565b5050838103606085015261568081866155e6565b98975050505050505050565b6000825161569e8184602087016155c2565b9190910192915050565b6020815260006124cd60208301846155e656fe1072be0ffac0739a43e2bbe8b9b7dd277f79e5eed4fc2bac67005b3f09118a7d656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb6316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d568a7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844476a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b8efd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4111b8e2ade018b082c0f17123af08137fdf13800d50b83fda08b49ba4ca2aa5cddae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22ea07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e235280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a21841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44baa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e530000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c80af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd97a65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cda9dc538e563d9581dd26a09bae7f821924cec58d0811f80e8462740f2adab4c74e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3eea2646970667358221220b48c8ba17548e84eb40a675c4f073590760e93bc2150860ef06da871b9217d7e64736f6c634300081a0033