0 txs
0 calls
constructor
constructor(address _CAKE, address _nonfungiblePositionManager, address _WETH)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
BOOST_PRECISION
viewfunction BOOST_PRECISION() view returns (uint256)
CAKE
viewfunction CAKE() view returns (address)
cakeAmountBelongToMC
viewfunction cakeAmountBelongToMC() view returns (uint256)
emergency
viewfunction emergency() view returns (bool)
FARM_BOOSTER
viewfunction FARM_BOOSTER() view returns (address)
getLatestPeriodInfo
viewfunction getLatestPeriodInfo(address _v3Pool) view returns (uint256 cakePerSecond, uint256 endTime)
getLatestPeriodInfoByPid
viewfunction getLatestPeriodInfoByPid(uint256 _pid) view returns (uint256 cakePerSecond, uint256 endTime)
latestPeriodCakePerSecond
viewfunction latestPeriodCakePerSecond() view returns (uint256)
latestPeriodEndTime
viewfunction latestPeriodEndTime() view returns (uint256)
latestPeriodNumber
viewfunction latestPeriodNumber() view returns (uint256)
latestPeriodStartTime
viewfunction latestPeriodStartTime() view returns (uint256)
LMPoolDeployer
viewfunction LMPoolDeployer() view returns (address)
MAX_BOOST_PRECISION
viewfunction MAX_BOOST_PRECISION() view returns (uint256)
MAX_DURATION
viewfunction MAX_DURATION() view returns (uint256)
MIN_DURATION
viewfunction MIN_DURATION() view returns (uint256)
nonfungiblePositionManager
viewfunction nonfungiblePositionManager() view returns (address)
operatorAddress
viewfunction operatorAddress() view returns (address)
owner
viewfunction owner() view returns (address)
pendingCake
viewfunction pendingCake(uint256 _tokenId) view returns (uint256 reward)
PERIOD_DURATION
viewfunction PERIOD_DURATION() view returns (uint256)
poolInfo
viewfunction poolInfo(uint256) view returns (uint256 allocPoint, address v3Pool, address token0, address token1, uint24 fee, uint256 totalLiquidity, uint256 totalBoostLiquidity)
poolLength
viewfunction poolLength() view returns (uint256)
PRECISION
viewfunction PRECISION() view returns (uint256)
receiver
viewfunction receiver() view returns (address)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
totalAllocPoint
viewfunction totalAllocPoint() view returns (uint256)
userPositionInfos
viewfunction userPositionInfos(uint256) view returns (uint128 liquidity, uint128 boostLiquidity, int24 tickLower, int24 tickUpper, uint256 rewardGrowthInside, uint256 reward, address user, uint256 pid, uint256 boostMultiplier)
v3PoolAddressPid
viewfunction v3PoolAddressPid(address) view returns (uint256)
WETH
viewfunction WETH() view returns (address)
add
nonpayablefunction add(uint256 _allocPoint, address _v3Pool, bool _withUpdate)
burn
nonpayablefunction burn(uint256 _tokenId)
collect
nonpayablefunction collect(tuple params) returns (uint256 amount0, uint256 amount1)
collectTo
nonpayablefunction collectTo(tuple params, address to) returns (uint256 amount0, uint256 amount1)
decreaseLiquidity
nonpayablefunction decreaseLiquidity(tuple params) returns (uint256 amount0, uint256 amount1)
harvest
nonpayablefunction harvest(uint256 _tokenId, address _to) returns (uint256 reward)
increaseLiquidity
payablefunction increaseLiquidity(tuple params) payable returns (uint128 liquidity, uint256 amount0, uint256 amount1)
multicall
payablefunction multicall(bytes[] data) payable returns (bytes[] results)
onERC721Received
nonpayablefunction onERC721Received(address, address _from, uint256 _tokenId, bytes) returns (bytes4)
renounceOwnership
nonpayablefunction renounceOwnership()
set
nonpayablefunction set(uint256 _pid, uint256 _allocPoint, bool _withUpdate)
setEmergency
nonpayablefunction setEmergency(bool _emergency)
setLMPoolDeployer
nonpayablefunction setLMPoolDeployer(address _LMPoolDeployer)
setOperator
nonpayablefunction setOperator(address _operatorAddress)
setPeriodDuration
nonpayablefunction setPeriodDuration(uint256 _periodDuration)
setReceiver
nonpayablefunction setReceiver(address _receiver)
sweepToken
nonpayablefunction sweepToken(address token, uint256 amountMinimum, address recipient)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unwrapWETH9
nonpayablefunction unwrapWETH9(uint256 amountMinimum, address recipient)
updateBoostMultiplier
nonpayablefunction updateBoostMultiplier(uint256 _tokenId, uint256 _newMultiplier)
updateFarmBoostContract
nonpayablefunction updateFarmBoostContract(address _newFarmBoostContract)
updateLiquidity
nonpayablefunction updateLiquidity(uint256 _tokenId)
updatePools
nonpayablefunction updatePools(uint256[] pids)
upkeep
nonpayablefunction upkeep(uint256 _amount, uint256 _duration, bool _withUpdate)
withdraw
nonpayablefunction withdraw(uint256 _tokenId, address _to) returns (uint256 reward)
events
AddPool
event AddPool(uint256 indexed pid, uint256 allocPoint, address indexed v3Pool, address indexed lmPool)
Deposit
event Deposit(address indexed from, uint256 indexed pid, uint256 indexed tokenId, uint256 liquidity, int24 tickLower, int24 tickUpper)
Harvest
event Harvest(address indexed sender, address to, uint256 indexed pid, uint256 indexed tokenId, uint256 reward)
NewLMPoolDeployerAddress
event NewLMPoolDeployerAddress(address deployer)
NewOperatorAddress
event NewOperatorAddress(address operator)
NewPeriodDuration
event NewPeriodDuration(uint256 periodDuration)
NewReceiver
event NewReceiver(address receiver)
NewUpkeepPeriod
event NewUpkeepPeriod(uint256 indexed periodNumber, uint256 startTime, uint256 endTime, uint256 cakePerSecond, uint256 cakeAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SetEmergency
event SetEmergency(bool emergency)
SetPool
event SetPool(uint256 indexed pid, uint256 allocPoint)
UpdateFarmBoostContract
event UpdateFarmBoostContract(address indexed farmBoostContract)
UpdateLiquidity
event UpdateLiquidity(address indexed from, uint256 indexed pid, uint256 indexed tokenId, int128 liquidity, int24 tickLower, int24 tickUpper)
UpdateUpkeepPeriod
event UpdateUpkeepPeriod(uint256 indexed periodNumber, uint256 oldEndTime, uint256 newEndTime, uint256 remainingCake)
Withdraw
event Withdraw(address indexed from, address to, uint256 indexed pid, uint256 indexed tokenId)
errors
DuplicatedPool
error DuplicatedPool(uint256 pid)
InconsistentAmount
error InconsistentAmount()
InsufficientAmount
error InsufficientAmount()
InvalidNFT
error InvalidNFT()
InvalidPeriodDuration
error InvalidPeriodDuration()
InvalidPid
error InvalidPid()
NoBalance
error NoBalance()
NoLiquidity
error NoLiquidity()
NoLMPool
error NoLMPool()
NotEmpty
error NotEmpty()
NotOwner
error NotOwner()
NotOwnerOrOperator
error NotOwnerOrOperator()
NotPancakeNFT
error NotPancakeNFT()
WrongReceiver
error WrongReceiver()
ZeroAddress
error ZeroAddress()
creation bytecode
0x60e0604052620151806013553480156200001857600080fd5b5060405162005af638038062005af68339810160408190526200003b91620000d1565b620000463362000068565b600180556001600160a01b0392831660805290821660c0521660a05262000125565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000ce57600080fd5b50565b600080600060608486031215620000e757600080fd5b8351620000f481620000b8565b60208501519093506200010781620000b8565b60408501519092506200011a81620000b8565b809150509250925092565b60805160a05160c0516158cf620002276000396000818161037301528181610a6a01528181611010015281816111e8015281816115c401528181611715015281816117d101528181611f0e01528181611f9401528181611fd80152818161205e0152818161248301528181612859015281816139a301528181613dd6015261483a0152600081816103a7015281816109ff01528181612392015281816123d301528181612b2201528181612bd401528181614559015281816145a70152818161476001526147f40152600081816108390152818161130001528181612fa80152818161375801528181614500015281816149e00152614a8c01526158cf6000f3fe6080604052600436106103635760003560e01c8063715018a6116101c6578063c4f6a8ce116100f7578063cfb8ccfb11610095578063f7260d3e1161006f578063f7260d3e14610be0578063fbc911d014610c00578063fc6f786514610c20578063fcf0b9d814610c4057600080fd5b8063cfb8ccfb14610b80578063df2ab5bb14610ba0578063f2fde38b14610bc057600080fd5b8063cc6db2da116100d1578063cc6db2da146109b4578063ce5f39c614610b20578063ced0911214610b40578063cf24284914610b6057600080fd5b8063c4f6a8ce14610ac3578063c97cef1e14610ad9578063caa6fea414610aef57600080fd5b8063ac9650d811610164578063b3ab15fb1161013e578063b3ab15fb14610a38578063b44a272214610a58578063b4ce128014610a8c578063b6a6d17714610aac57600080fd5b8063ac9650d8146109cd578063ad5c4648146109ed578063b1724b4614610a2157600080fd5b80638da5cb5b116101a05780638da5cb5b14610956578063a15ea89f14610974578063a80a71bd14610994578063aaf5eb68146109b457600080fd5b8063715018a614610901578063718da7ee146109165780637c2d6e011461093657600080fd5b8063219f5d17116102a05780634ca6ef281161023e57806369746a1d1161021857806369746a1d1461089157806369b02128146108b15780636d4cec78146108cb57806370a08231146108e157600080fd5b80634ca6ef281461082757806364482f791461085b5780636558954f1461087b57600080fd5b80633b1acf741161027a5780633b1acf74146106e757806342966c68146107c757806344780994146107e757806349404b7c1461080757600080fd5b8063219f5d17146106795780632f745c59146106b157806330ec24cc146106d157600080fd5b80630d55f9131161030d5780631526fe27116102e75780631526fe271461056f57806317caf6f11461062357806318fccc76146106395780631eaaa0451461065957600080fd5b80630d55f913146104c6578063127effb2146104e6578063150b7a021461051e57600080fd5b8063081e3eda1161033e578063081e3eda1461045b5780630c49ccbe146104715780630ce5d4cc146104a657600080fd5b8062f714ce146103db5780630501d5561461040e5780630743384d1461042e57600080fd5b366103d657336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906103ca5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b156103d457600080fd5b005b600080fd5b3480156103e757600080fd5b506103fb6103f6366004614eea565b610c56565b6040519081526020015b60405180910390f35b34801561041a57600080fd5b506103d4610429366004614f28565b6110c1565b34801561043a57600080fd5b506103fb610449366004614f4c565b60096020526000908152604090205481565b34801561046757600080fd5b506103fb60055481565b34801561047d57600080fd5b5061049161048c366004614f94565b611140565b60408051928352602083019190915201610405565b3480156104b257600080fd5b506103d46104c136600461500d565b611290565b3480156104d257600080fd5b506104916104e13660046150c6565b61149c565b3480156104f257600080fd5b50601254610506906001600160a01b031681565b6040516001600160a01b039091168152602001610405565b34801561052a57600080fd5b5061053e6105393660046150f3565b611700565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610405565b34801561057b57600080fd5b506105da61058a366004615192565b60066020526000908152604090208054600182015460028301546003840154600485015460059095015493946001600160a01b039384169492841693821692600160a01b90920462ffffff169187565b604080519788526001600160a01b0396871660208901529486169487019490945293909116606085015262ffffff16608084015260a083019190915260c082015260e001610405565b34801561062f57600080fd5b506103fb600d5481565b34801561064557600080fd5b506103fb610654366004614eea565b611bcd565b34801561066557600080fd5b506103d46106743660046151ab565b611c61565b61068c6106873660046151e2565b6122bd565b604080516001600160801b039094168452602084019290925290820152606001610405565b3480156106bd57600080fd5b506103fb6106cc36600461525c565b612588565b3480156106dd57600080fd5b506103fb600e5481565b3480156106f357600080fd5b50610767610702366004615192565b6007602052600090815260409020805460018201546002808401546003850154600486015460058701546006909701546001600160801b0380881698600160801b909804169686860b966301000000900490950b946001600160a01b03909216919089565b604080516001600160801b039a8b1681529990981660208a0152600296870b978901979097529390940b6060870152608086019190915260a08501526001600160a01b0390911660c084015260e083015261010082015261012001610405565b3480156107d357600080fd5b506103d46107e2366004615192565b61263e565b3480156107f357600080fd5b506103d46108023660046152cd565b612907565b34801561081357600080fd5b506103d4610822366004614eea565b612b02565b34801561083357600080fd5b506105067f000000000000000000000000000000000000000000000000000000000000000081565b34801561086757600080fd5b506103d461087636600461500d565b612c50565b34801561088757600080fd5b506103fb60135481565b34801561089d57600080fd5b506103d46108ac36600461530f565b612dfb565b3480156108bd57600080fd5b506103fb6501d1a94a200081565b3480156108d757600080fd5b506103fb60105481565b3480156108ed57600080fd5b506103fb6108fc366004614f4c565b612ea2565b34801561090d57600080fd5b506103d4612f3c565b34801561092257600080fd5b506103d4610931366004614f4c565b612f50565b34801561094257600080fd5b506103d4610951366004615192565b61306d565b34801561096257600080fd5b506000546001600160a01b0316610506565b34801561098057600080fd5b5061049161098f366004614f4c565b6130f4565b3480156109a057600080fd5b506104916109af366004615192565b61314f565b3480156109c057600080fd5b506103fb64e8d4a5100081565b6109e06109db3660046152cd565b61317c565b6040516104059190615389565b3480156109f957600080fd5b506105067f000000000000000000000000000000000000000000000000000000000000000081565b348015610a2d57600080fd5b506103fb62278d0081565b348015610a4457600080fd5b506103d4610a53366004614f4c565b6132d4565b348015610a6457600080fd5b506105067f000000000000000000000000000000000000000000000000000000000000000081565b348015610a9857600080fd5b50600b54610506906001600160a01b031681565b348015610ab857600080fd5b506103fb6201518081565b348015610acf57600080fd5b506103fb60115481565b348015610ae557600080fd5b506103fb60145481565b348015610afb57600080fd5b50600c54610b1090600160a01b900460ff1681565b6040519015158152602001610405565b348015610b2c57600080fd5b506103fb610b3b366004615192565b613351565b348015610b4c57600080fd5b506103d4610b5b366004615192565b6135b7565b348015610b6c57600080fd5b506103d4610b7b366004614f4c565b613612565b348015610b8c57600080fd5b506103d4610b9b366004614f4c565b61368f565b348015610bac57600080fd5b506103d4610bbb3660046153eb565b6136e1565b348015610bcc57600080fd5b506103d4610bdb366004614f4c565b6137ee565b348015610bec57600080fd5b50600a54610506906001600160a01b031681565b348015610c0c57600080fd5b50600c54610506906001600160a01b031681565b348015610c2c57600080fd5b50610491610c3b366004615422565b61387b565b348015610c4c57600080fd5b506103fb600f5481565b6000610c60613a21565b6001600160a01b038216301480610c7e57506001600160a01b038216155b15610cb5576040517f32c98ae600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260076020526040902060048101546001600160a01b03163314610cf0576040516330cd747160e01b815260040160405180910390fd5b610cfb818585613a7b565b6005820154600081815260066020908152604080832060018101548251630a81a92360e31b81529251969850949590946001600160a01b03169263540d491892600480820193918290030181865afa158015610d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7f919061544e565b90506001600160a01b03811615801590610da35750600c54600160a01b900460ff16155b15610ea3578354600090610dc690600160801b90046001600160801b0316615481565b6001860154604051638910faf160e01b8152600282810b6004830152630100000090920490910b6024820152600f82900b60448201529091506001600160a01b03831690638910faf190606401600060405180830381600087803b158015610e2d57600080fd5b505af1158015610e41573d6000803e3d6000fd5b50505050600185015460408051600f84900b8152600283810b6020830152630100000090930490920b908201528890859033907fee8f6362d59839b4b3c990d7e085a63a0fe2c58f4eff4a9a2b6de93a4c645ae39060600160405180910390a4505b83546004830180546001600160801b0390921691600090610ec59084906154b1565b90915550508354600583018054600160801b9092046001600160801b031691600090610ef29084906154b1565b9091555050600087815260076020526040812081815560018101805465ffffffffffff1916905560028101829055600381018290556004810180546001600160a01b03191690556005810182905560060155610f4e3388613d49565b600c546001600160a01b031615610fcb57600c5460405163622cd4e160e11b815233600482015260248101899052604481018590526001600160a01b039091169063c459a9c290606401600060405180830381600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b505050505b6040517f42842e0e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038781166024830152604482018990527f000000000000000000000000000000000000000000000000000000000000000016906342842e0e90606401600060405180830381600087803b15801561105457600080fd5b505af1158015611068573d6000803e3d6000fd5b50506040516001600160a01b038916815289925085915033907ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679060200160405180910390a4505050506110bb60018055565b92915050565b6110c9613d75565b600c80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b8315158102919091179182905560405160ff9190920416151581527fc749456be5379ac4cfc1f856208b32ddcf01b9db3ce6c37784ad91a8390ae9a8906020015b60405180910390a150565b60008061114b613a21565b8251600090815260076020526040902060048101546001600160a01b03163314611188576040516330cd747160e01b815260040160405180910390fd5b604080517f0c49ccbe0000000000000000000000000000000000000000000000000000000081528551600482015260208601516001600160801b0316602482015290850151604482015260608501516064820152608085015160848201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630c49ccbe9060a40160408051808303816000875af1158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125c91906154c8565b855191945092506112709082906000613a7b565b506112818185600001516000613dcf565b5061128b60018055565b915091565b600a546001600160a01b031633146112ef5760405162461bcd60e51b815260206004820152600c60248201527f4e6f74207265636569766572000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600a5461132a906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691163086614270565b6014805484019055801561134057611340614321565b601354620151808310801590611359575062278d008311155b156113615750815b42600061136e83836154ec565b905060008087905083601054111561140557600064e8d4a510006011548660105461139991906154b1565b6113a39190615504565b6113ad9190615523565b600e5460105460408051918252602082018990528101839052919250907f317bea91082b2a8d33761ba0bdd38a785d60acc1b964e3ead01706baaebf548b9060600160405180910390a261140181836154ec565b9150505b8461141564e8d4a5100083615504565b61141f9190615523565b600e8054600190810191829055868101600f5560108690556011839055919350907f44521c2bbb0ee364592908d6177ce446d5554c5a6c4ebd12adf86912c617a78b9061146d9087906154ec565b604080519182526020820187905281018590526060810184905260800160405180910390a25050505050505050565b6000806114a7613a21565b835160009081526007602090815260409182902082516101208101845281546001600160801b038082168352600160801b90910416928101929092526001810154600281810b9484019490945263010000009004830b6060830152918201546080820152600382015460a082015260048201546001600160a01b031660c08201819052600583015460e0830152600690920154610100820152903314611560576040516330cd747160e01b815260040160405180910390fd5b60208501516001600160a01b0316611579573060208601525b6040805163fc6f786560e01b81528651600482015260208701516001600160a01b039081166024830152918701516001600160801b03908116604483015260608801511660648201527f00000000000000000000000000000000000000000000000000000000000000009091169063fc6f78659060840160408051808303816000875af115801561160e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163291906154c8565b602087015191945092506001600160a01b03163014156116ef5760e081810151600090815260066020908152604091829020825193840183528054845260018101546001600160a01b0390811692850192909252600281015482169284019290925260038201548082166060850152600160a01b900462ffffff166080840152600482015460a084015260059091015460c083015285166116d1573394505b6116df816040015186614491565b6116ed816060015186614491565b505b506116f960018055565b9250929050565b600061170a613a21565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461176c576040517f0bf3405700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c081018252600080825260208201819052818301819052606082018190526080820181905260a082015290517f99fbab88000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906399fbab889060240161018060405180830381865afa158015611819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183d9190615575565b505050506001600160801b031660a08901819052600291820b60808a015291900b606088015262ffffff9190911660408701526001600160a01b03918216602087015291168452151591506118a7905057604051636180f03f60e11b815260040160405180910390fd5b80516001600160a01b0390811660009081526008602090815260408083208286015190941683529281528282208385015162ffffff16835290522054806119015760405163079f151f60e11b815260040160405180910390fd5b6000818152600660209081526040808320815160e0810183528154815260018201546001600160a01b03908116828601819052600284015482168386015260038401549182166060840152600160a01b90910462ffffff16608083015260048084015460a084015260059093015460c08301528351630a81a92360e31b81529351919594909363540d49189381810193918290030181865afa1580156119ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cf919061544e565b90506001600160a01b0381166119f85760405163ef3d9b2160e01b815260040160405180910390fd5b600088815260076020526040908190206060860151600182018054608089015162ffffff90811663010000000265ffffffffffff19909216931692909217919091179055600480820180546001600160a01b03808f166001600160a01b0319909216919091179091556005830187905592516310a537f160e11b8152919284169163214a6fe291611a979142910163ffffffff91909116815260200190565b600060405180830381600087803b158015611ab157600080fd5b505af1158015611ac5573d6000803e3d6000fd5b50505050611ad5818a6000613dcf565b611b288a8a6001600160a01b039190911660008181526002602081815260408084208054600384528286208187528452828620889055968552600483529084209590955592909152905280546001019055565b60a08501516060808701516080880151604080516001600160801b039095168552600292830b6020860152910b908301528a9186916001600160a01b038e16917fb19157bff94fdd40c58c7d4a5d52e8eb8c2d570ca17b322b49a2bbbeedc82fbf910160405180910390a4507f150b7a0200000000000000000000000000000000000000000000000000000000945050505050611bc460018055565b95945050505050565b6000611bd7613a21565b600083815260076020526040902060048101546001600160a01b03163314611c12576040516330cd747160e01b815260040160405180910390fd5b80546001600160801b0316158015611c2c57506003810154155b15611c4a57604051636180f03f60e11b815260040160405180910390fd5b611c55818585613a7b565b9150506110bb60018055565b611c69613d75565b8015611c7757611c77614321565b600b546040517f4c96a3890000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301526000921690634c96a389906024016020604051808303816000875af1158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d01919061544e565b905083600d6000828254611d1591906154ec565b925050819055506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d80919061544e565b90506000846001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de6919061544e565b90506000856001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4c9190615656565b6001600160a01b038085166000908152600860209081526040808320938716835292815282822062ffffff851683529052205490915015611ef1576001600160a01b038381166000908152600860209081526040808320938616835292815282822062ffffff8516835290528190205490517f7d38f65f00000000000000000000000000000000000000000000000000000000815260048101919091526024016112e6565b604051636eb1769f60e11b81523060048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015284169063dd62ed3e90604401602060405180830381865afa158015611f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f819190615671565b611fbb57611fbb6001600160a01b0384167f0000000000000000000000000000000000000000000000000000000000000000600019614629565b604051636eb1769f60e11b81523060048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015283169063dd62ed3e90604401602060405180830381865afa158015612027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204b9190615671565b612085576120856001600160a01b0383167f0000000000000000000000000000000000000000000000000000000000000000600019614629565b6005600081548092919060010191905055506040518060e00160405280888152602001876001600160a01b03168152602001846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020016000815260200160008152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160030160146101000a81548162ffffff021916908362ffffff16021790555060a0820151816004015560c0820151816005015590505060055460086000856001600160a01b03166001600160a01b031681526020019081526020016000206000846001600160a01b03166001600160a01b0316815260200190815260200160002060008362ffffff1662ffffff1681526020019081526020016000208190555060055460096000886001600160a01b03166001600160a01b0316815260200190815260200160002081905550836001600160a01b0316866001600160a01b03166005547f0621c8de33a230aec1aee0d4f7b6c81d97bd3ce0a2040ca33fbd668e521ecafe8a6040516122ac91815260200190565b60405180910390a450505050505050565b60008060006122ca613a21565b8351600090815260076020526040902060058101546122fc5760405163079f151f60e11b815260040160405180910390fd5b600581810154600090815260066020908152604091829020825160e0810184528154815260018201546001600160a01b03908116828501526002830154811694820185905260038301549081166060830152600160a01b900462ffffff166080820152600482015460a082015293015460c084015287015161237e919061475e565b6123908160600151876040015161475e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681604001516001600160a01b03161415801561240c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681606001516001600160a01b031614155b80156124185750600034115b1561242257600080fd5b604080517f219f5d170000000000000000000000000000000000000000000000000000000081528751600482015260208801516024820152908701516044820152606087015160648201526080870151608482015260a087015160a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063219f5d1790349060c40160606040518083038185885af11580156124d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124fa919061568a565b602089015192975090955093506000906125159086906154b1565b9050600084886040015161252991906154b1565b9050811561253f5761253f8360400151836147f2565b8015612553576125538360600151826147f2565b6125638489600001516000613a7b565b506125748489600001516000613dcf565b5050505061258160018055565b9193909250565b6001600160a01b03821660009081526002602052604081205482106126155760405162461bcd60e51b815260206004820152602560248201527f456e756d657261626c653a206f776e657220696e646578206f7574206f66206260448201527f6f756e647300000000000000000000000000000000000000000000000000000060648201526084016112e6565b506001600160a01b03919091166000908152600360209081526040808320938352929052205490565b612646613a21565b60008181526007602090815260409182902082516101208101845281546001600160801b038082168352600160801b90910416928101929092526001810154600281810b9484019490945263010000009004830b6060830152918201546080820152600382015460a082015260048201546001600160a01b031660c08201819052600583015460e08301526006909201546101008201529033146126fd576040516330cd747160e01b815260040160405180910390fd5b60008160a001511180612719575080516001600160801b031615155b15612750576040517f32e7879300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040812081815560018101805465ffffffffffff1916905560028101829055600381018290556004810180546001600160a01b031916905560058101829055600601556127a73383613d49565b600c546001600160a01b03161561282a57600c5460e082015160405163622cd4e160e11b81523360048201526024810185905260448101919091526001600160a01b039091169063c459a9c290606401600060405180830381600087803b15801561281157600080fd5b505af1158015612825573d6000803e3d6000fd5b505050505b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c6890602401600060405180830381600087803b1580156128a557600080fd5b505af11580156128b9573d6000803e3d6000fd5b50505060e08201516040516000815284925033907ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679060200160405180910390a45061290460018055565b50565b6012546001600160a01b0316331480159061292d57506000546001600160a01b03163314155b15612964576040517f98f76d0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4260005b82811015612afc57600060066000868685818110612988576129886156c1565b602090810292909201358352508181019290925260409081016000908120825160e0810184528154815260018201546001600160a01b03908116828701819052600284015482168387015260038401549182166060840152600160a01b90910462ffffff16608083015260048084015460a084015260059093015460c08301528451630a81a92360e31b815294519196509294929363540d491893818401939092918290030181865afa158015612a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a67919061544e565b825190915015801590612a8257506001600160a01b03811615155b15612ae7576040516310a537f160e11b815263ffffffff851660048201526001600160a01b0382169063214a6fe290602401600060405180830381600087803b158015612ace57600080fd5b505af1158015612ae2573d6000803e3d6000fd5b505050505b50508080612af4906156d7565b915050612968565b50505050565b612b0a613a21565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b959190615671565b905082811015612bb857604051632ca2f52b60e11b815260040160405180910390fd5b8015612c4257604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015612c2057600080fd5b505af1158015612c34573d6000803e3d6000fd5b50505050612c4282826148c9565b50612c4c60018055565b5050565b612c58613d75565b82801580612c67575060055481115b15612c9e576040517f87e8068300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084815260066020908152604080832060018101548251630a81a92360e31b815292514295929492936001600160a01b039092169263540d491892600480820193918290030181865afa158015612cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1e919061544e565b90506001600160a01b03811615612d8f576040516310a537f160e11b815263ffffffff841660048201526001600160a01b0382169063214a6fe290602401600060405180830381600087803b158015612d7657600080fd5b505af1158015612d8a573d6000803e3d6000fd5b505050505b8415612d9d57612d9d614321565b8154600d548791612dad916154b1565b612db791906154ec565b600d5585825560405186815287907fc0cfd54d2de2b55f1e6e108d3ec53ff0a1abe6055401d32c61e9433b747ef9f89060200160405180910390a250505050505050565b600c546001600160a01b03163314612e555760405162461bcd60e51b815260206004820152601760248201527f4e6f74206661726d20626f6f737420636f6e747261637400000000000000000060448201526064016112e6565b60008281526007602052604090206005810154612e855760405163079f151f60e11b815260040160405180910390fd5b612e9181846000613a7b565b50612e9d818484613dcf565b505050565b60006001600160a01b038216612f205760405162461bcd60e51b815260206004820152602d60248201527f456e756d657261626c653a2061646472657373207a65726f206973206e6f742060448201527f612076616c6964206f776e65720000000000000000000000000000000000000060648201526084016112e6565b506001600160a01b031660009081526002602052604090205490565b612f44613d75565b612f4e6000614929565b565b612f58613d75565b6001600160a01b038116612f7f5760405163d92e233d60e01b815260040160405180910390fd5b604051636eb1769f60e11b81526001600160a01b038281166004830152306024830152600019917f00000000000000000000000000000000000000000000000000000000000000009091169063dd62ed3e90604401602060405180830381865afa158015612ff1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130159190615671565b1461301f57600080fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f4a2963bfc20b87a0c055468a66e6638d57725e93fb4d65733fb2f25587ae8c4f90602001611135565b613075613d75565b62015180811080613088575062278d0081115b156130bf576040517f9e11b5e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60138190556040518181527fb5521c8a03b484502769158d9dd83186bd0748f3ece2fbf358233994c2a2097690602001611135565b6000806000600d54111561314557600d546001600160a01b038416600090815260096020908152604080832054835260069091529020546011546131389190615504565b6131429190615523565b91505b6010549050915091565b6000806000600d54111561314557600d546000848152600660205260409020546011546131389190615504565b60608167ffffffffffffffff81111561319757613197614f69565b6040519080825280602002602001820160405280156131ca57816020015b60608152602001906001900390816131b55790505b50905060005b828110156132cd57600080308686858181106131ee576131ee6156c1565b905060200281019061320091906156f2565b60405161320e929190615739565b600060405180830381855af49150503d8060008114613249576040519150601f19603f3d011682016040523d82523d6000602084013e61324e565b606091505b50915091508161329a5760448151101561326757600080fd5b600481019050808060200190518101906132819190615749565b60405162461bcd60e51b81526004016112e691906157eb565b808484815181106132ad576132ad6156c1565b6020026020010181905250505080806132c5906156d7565b9150506131d0565b5092915050565b6132dc613d75565b6001600160a01b0381166133035760405163d92e233d60e01b815260040160405180910390fd5b601280546001600160a01b0319166001600160a01b0383169081179091556040519081527fc47d127c07bdd56c5ccba00463ce3bd3c1bca71b4670eea6e5d0c02e4aa156e290602001611135565b600081815260076020908152604080832081516101208101835281546001600160801b038082168352600160801b90910416938101939093526001810154600281810b9385019390935263010000009004820b6060840152908101546080830152600381015460a083015260048101546001600160a01b031660c0830152600581015460e08301819052600690910154610100830152156135b15760e0818101516000908152600660209081526040808320815194850182528054855260018101546001600160a01b03908116868501819052600283015482168785015260038301549182166060880152600160a01b90910462ffffff16608087015260048083015460a088015260059092015460c08701528251630a81a92360e31b81529251909363540d49189380840193919291908290030181865afa15801561349b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134bf919061544e565b90506001600160a01b0381161561359d5760408381015160608501519151633816bae960e11b8152600291820b600482015291900b60248201526000906001600160a01b0383169063702d75d290604401602060405180830381865afa15801561352d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135519190615671565b608085015190915081036135686002600019615523565b81101561359a57600160801b85602001516001600160801b03168261358d9190615504565b6135979190615523565b95505b50505b60a08301516135ac90856154ec565b935050505b50919050565b6135bf613a21565b600081815260076020526040902060058101546135ef5760405163079f151f60e11b815260040160405180910390fd5b6135fb81836000613a7b565b5061360881836000613dcf565b5061290460018055565b61361a613d75565b6001600160a01b0381166136415760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f29e3e57b4a1e4513d009781598c7e4b8b2a68e4b71fe977e362d1b591016fade90602001611135565b613697613d75565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517ff32244aa081c72b930bb47bb702115e112d779ed353d6b1a70b28babc9822b7a90600090a250565b6136e9613a21565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015613730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137549190615671565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614156137a95760145481106137a35760145490036137a9565b60145560005b828110156137ca57604051632ca2f52b60e11b815260040160405180910390fd5b80156137e4576137e46001600160a01b0385168383614979565b50612e9d60018055565b6137f6613d75565b6001600160a01b0381166138725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016112e6565b61290481614929565b600080613886613a21565b825160009081526007602090815260409182902082516101208101845281546001600160801b038082168352600160801b90910416928101929092526001810154600281810b9484019490945263010000009004830b6060830152918201546080820152600382015460a082015260048201546001600160a01b031660c08201819052600583015460e083015260069092015461010082015290331461393f576040516330cd747160e01b815260040160405180910390fd5b60208401516001600160a01b0316613958573060208501525b6040805163fc6f786560e01b81528551600482015260208601516001600160a01b039081166024830152918601516001600160801b03908116604483015260608701511660648201527f00000000000000000000000000000000000000000000000000000000000000009091169063fc6f78659060840160408051808303816000875af11580156139ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1191906154c8565b909350915061128b905060018055565b60026001541415613a745760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016112e6565b6002600155565b6005838101546000908152600660209081526040808320815160e0810183528154815260018201546001600160a01b03908116828601819052600284015482168386015260038401549182166060840152600160a01b90910462ffffff16608083015260048084015460a0840152929096015460c08201528251630a81a92360e31b81529251949590948694919363540d4918938181019392918290030181865afa158015613b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b52919061544e565b90506001600160a01b03811615801590613b765750600c54600160a01b900460ff16155b15613cb0576040516310a537f160e11b815263ffffffff421660048201526001600160a01b0382169063214a6fe290602401600060405180830381600087803b158015613bc257600080fd5b505af1158015613bd6573d6000803e3d6000fd5b505050506001860154604051633816bae960e11b8152600282810b6004830152630100000090920490910b60248201526000906001600160a01b0383169063702d75d290604401602060405180830381865afa158015613c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c5e9190615671565b60028089015491925090820390613c7790600019615523565b811015613ca9578754600160801b90613c9c908290046001600160801b031683615504565b613ca69190615523565b94505b5060028701555b6003860154613cbf90846154ec565b92508215613d40576001600160a01b03841615613d385760006003870155613ce784846149c2565b6005860154604080516001600160a01b03871681526020810186905287929133917fd25759d838eb0a46600f8f327cce144e61d7caefbef27010fe31e2aab091704f910160405180910390a4613d40565b600386018390555b50509392505050565b613d538282614ab3565b506001600160a01b031660009081526002602052604090208054600019019055565b6000546001600160a01b03163314612f4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016112e6565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166399fbab88866040518263ffffffff1660e01b8152600401613e2291815260200190565b61018060405180830381865afa158015613e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e649190615575565b5050505060058e015460009081526006602052604090208e54939b50919950975095506001600160801b038088169116149350613ef09250505057865460048201546001600160801b0380851692613ebe929116906154b1565b613ec891906154ec565b600482015586546fffffffffffffffffffffffffffffffff19166001600160801b0383161787555b600c5464e8d4a51000906001600160a01b031615801590613f0f575085155b15613fa357600c546040517f44e7bf06000000000000000000000000000000000000000000000000000000008152600481018990526001600160a01b03909116906344e7bf06906024016020604051808303816000875af1158015613f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f9c9190615671565b9050613fac565b8515613fac5750845b64e8d4a51000811015613fc5575064e8d4a51000613fdc565b6501d1a94a2000811115613fdc57506501d1a94a20005b60068801819055600061401064e8d4a51000614001846001600160801b038816615504565b61400b9190615523565b614bcd565b895490915060009061403290600160801b90046001600160801b0316836157fe565b905080600f0b60001461426457895460058501546001600160801b038085169261406792600160801b909104909116906154b1565b61407191906154ec565b600585015589546001600160801b03808416600160801b029116178a55600184015460408051630a81a92360e31b815290516000926001600160a01b03169163540d49189160048083019260209291908290030181865afa1580156140da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140fe919061544e565b90506001600160a01b0381166141275760405163ef3d9b2160e01b815260040160405180910390fd5b604051638910faf160e01b8152600289810b600483015288900b6024820152600f83900b60448201526001600160a01b03821690638910faf190606401600060405180830381600087803b15801561417e57600080fd5b505af1158015614192573d6000803e3d6000fd5b5050604051633816bae960e11b815260028b810b60048301528a900b60248201526001600160a01b038416925063702d75d29150604401602060405180830381865afa1580156141e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420a9190615671565b60028c81019190915560058c015460408051600f86900b81528b840b6020820152928a900b83820152518c9233917fee8f6362d59839b4b3c990d7e085a63a0fe2c58f4eff4a9a2b6de93a4c645ae39181900360600190a4505b50505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052612afc9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614c4c565b4260015b6005548111612c4c576000818152600660209081526040808320815160e0810183528154815260018201546001600160a01b03908116828601819052600284015482168386015260038401549182166060840152600160a01b90910462ffffff16608083015260048084015460a084015260059093015460c08301528351630a81a92360e31b81529351919594909363540d49189381810193918290030181865afa1580156143d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143fc919061544e565b82519091501580159061441757506001600160a01b03811615155b1561447c576040516310a537f160e11b815263ffffffff851660048201526001600160a01b0382169063214a6fe290602401600060405180830381600087803b15801561446357600080fd5b505af1158015614477573d6000803e3d6000fd5b505050505b50508080614489906156d7565b915050614325565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156144d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144fc9190615671565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561455157601454811061454b576014549003614551565b60145560005b8015612e9d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561461557604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156145f357600080fd5b505af1158015614607573d6000803e3d6000fd5b50505050612e9d82826148c9565b612e9d6001600160a01b0384168383614979565b8015806146a35750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561467d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a19190615671565b155b6147155760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016112e6565b6040516001600160a01b038316602482015260448101829052612e9d9084907f095ea7b300000000000000000000000000000000000000000000000000000000906064016142bd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614801561479f5750600034115b156147dd57803414612c4c576040517f4b508fef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c4c6001600160a01b038316333084614270565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480156148335750600034115b156148b5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166312210e8a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561489357600080fd5b505af11580156148a7573d6000803e3d6000fd5b50505050612c4c33476148c9565b612c4c6001600160a01b0383163383614979565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114614916576040519150601f19603f3d011682016040523d82523d6000602084013e61491b565b606091505b5050905080612e9d57600080fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b038316602482015260448101829052612e9d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016142bd565b8015612c4c576040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015614a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a539190615671565b905081811015614a61578091505b8160145410614a7857601480548390039055614a7f565b8181036014555b612e9d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484614979565b6001600160a01b038216600090815260026020526040812054614ad8906001906154b1565b6000838152600460209081526040808320546001600160a01b03881684526003835281842081855290925290912054919250908314614b595760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420746f6b656e4964000000000000000000000000000000000060448201526064016112e6565b818114614b9a576001600160a01b03841660009081526003602090815260408083208584528252808320548484528184208190558352600490915290208190555b5060009182526004602090815260408084208490556001600160a01b039094168352600381528383209183525290812055565b6000600160801b8210614c485760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f323820626974730000000000000000000000000000000000000000000000000060648201526084016112e6565b5090565b6000614ca1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614d319092919063ffffffff16565b805190915015612e9d5780806020019051810190614cbf9190615860565b612e9d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016112e6565b6060614d408484600085614d48565b949350505050565b606082471015614dc05760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016112e6565b600080866001600160a01b03168587604051614ddc919061587d565b60006040518083038185875af1925050503d8060008114614e19576040519150601f19603f3d011682016040523d82523d6000602084013e614e1e565b606091505b5091509150614e2f87838387614e3a565b979650505050505050565b60608315614ea6578251614e9f576001600160a01b0385163b614e9f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016112e6565b5081614d40565b614d408383815115614ebb5781518083602001fd5b8060405162461bcd60e51b81526004016112e691906157eb565b6001600160a01b038116811461290457600080fd5b60008060408385031215614efd57600080fd5b823591506020830135614f0f81614ed5565b809150509250929050565b801515811461290457600080fd5b600060208284031215614f3a57600080fd5b8135614f4581614f1a565b9392505050565b600060208284031215614f5e57600080fd5b8135614f4581614ed5565b634e487b7160e01b600052604160045260246000fd5b6001600160801b038116811461290457600080fd5b600060a08284031215614fa657600080fd5b60405160a0810181811067ffffffffffffffff82111715614fc957614fc9614f69565b604052823581526020830135614fde81614f7f565b806020830152506040830135604082015260608301356060820152608083013560808201528091505092915050565b60008060006060848603121561502257600080fd5b8335925060208401359150604084013561503b81614f1a565b809150509250925092565b60006080828403121561505857600080fd5b6040516080810181811067ffffffffffffffff8211171561507b5761507b614f69565b60405282358152905080602083013561509381614ed5565b602082015260408301356150a681614f7f565b604082015260608301356150b981614f7f565b6060919091015292915050565b60008060a083850312156150d957600080fd5b6150e38484615046565b91506080830135614f0f81614ed5565b60008060008060006080868803121561510b57600080fd5b853561511681614ed5565b9450602086013561512681614ed5565b935060408601359250606086013567ffffffffffffffff8082111561514a57600080fd5b818801915088601f83011261515e57600080fd5b81358181111561516d57600080fd5b89602082850101111561517f57600080fd5b9699959850939650602001949392505050565b6000602082840312156151a457600080fd5b5035919050565b6000806000606084860312156151c057600080fd5b8335925060208401356151d281614ed5565b9150604084013561503b81614f1a565b600060c082840312156151f457600080fd5b60405160c0810181811067ffffffffffffffff8211171561521757615217614f69565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b6000806040838503121561526f57600080fd5b823561527a81614ed5565b946020939093013593505050565b60008083601f84011261529a57600080fd5b50813567ffffffffffffffff8111156152b257600080fd5b6020830191508360208260051b85010111156116f957600080fd5b600080602083850312156152e057600080fd5b823567ffffffffffffffff8111156152f757600080fd5b61530385828601615288565b90969095509350505050565b6000806040838503121561532257600080fd5b50508035926020909101359150565b60005b8381101561534c578181015183820152602001615334565b83811115612afc5750506000910152565b60008151808452615375816020860160208601615331565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156153de57603f198886030184526153cc85835161535d565b945092850192908501906001016153b0565b5092979650505050505050565b60008060006060848603121561540057600080fd5b833561540b81614ed5565b925060208401359150604084013561503b81614ed5565b60006080828403121561543457600080fd5b614f458383615046565b805161544981614ed5565b919050565b60006020828403121561546057600080fd5b8151614f4581614ed5565b634e487b7160e01b600052601160045260246000fd5b600081600f0b6f7fffffffffffffffffffffffffffffff198114156154a8576154a861546b565b60000392915050565b6000828210156154c3576154c361546b565b500390565b600080604083850312156154db57600080fd5b505080516020909101519092909150565b600082198211156154ff576154ff61546b565b500190565b600081600019048311821515161561551e5761551e61546b565b500290565b60008261554057634e487b7160e01b600052601260045260246000fd5b500490565b805162ffffff8116811461544957600080fd5b8051600281900b811461544957600080fd5b805161544981614f7f565b6000806000806000806000806000806000806101808d8f03121561559857600080fd5b8c516bffffffffffffffffffffffff811681146155b457600080fd5b9b506155c260208e0161543e565b9a506155d060408e0161543e565b99506155de60608e0161543e565b98506155ec60808e01615545565b97506155fa60a08e01615558565b965061560860c08e01615558565b955061561660e08e0161556a565b94506101008d015193506101208d015192506156356101408e0161556a565b91506156446101608e0161556a565b90509295989b509295989b509295989b565b60006020828403121561566857600080fd5b614f4582615545565b60006020828403121561568357600080fd5b5051919050565b60008060006060848603121561569f57600080fd5b83516156aa81614f7f565b602085015160409095015190969495509392505050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156156eb576156eb61546b565b5060010190565b6000808335601e1984360301811261570957600080fd5b83018035915067ffffffffffffffff82111561572457600080fd5b6020019150368190038213156116f957600080fd5b8183823760009101908152919050565b60006020828403121561575b57600080fd5b815167ffffffffffffffff8082111561577357600080fd5b818401915084601f83011261578757600080fd5b81518181111561579957615799614f69565b604051601f8201601f19908116603f011681019083821181831017156157c1576157c1614f69565b816040528281528760208487010111156157da57600080fd5b614e2f836020830160208801615331565b602081526000614f45602083018461535d565b600081600f0b83600f0b60008112816f7fffffffffffffffffffffffffffffff19018312811516156158325761583261546b565b816f7fffffffffffffffffffffffffffffff0183138116156158565761585661546b565b5090039392505050565b60006020828403121561587257600080fd5b8151614f4581614f1a565b6000825161588f818460208701615331565b919091019291505056fea264697066735822122072ec80fa8e333aa3103f3bc0bab41a0204e324f822bc4100c0b68f10c602a98364736f6c634300080a00330000000000000000000000001b896893dfc86bb67cf57767298b9073d2c1ba2c00000000000000000000000046a15b0b27311cedf172ab29e4f4766fbe7f43640000000000000000000000005300000000000000000000000000000000000004