0 txs
6.5k calls
constructor
constructor()
functions
balances
viewfunction balances() view returns (uint256 token0Bal, uint256 token1Bal)
balancesOfPool
viewfunction balancesOfPool() view returns (uint256 token0Bal, uint256 token1Bal, uint256 mainAmount0, uint256 mainAmount1, uint256 altAmount0, uint256 altAmount1)
balancesOfThis
viewfunction balancesOfThis() view returns (uint256 token0Bal, uint256 token1Bal)
beefyFeeConfig
viewfunction beefyFeeConfig() view returns (address)
beefyFeeRecipient
viewfunction beefyFeeRecipient() view returns (address)
currentTick
viewfunction currentTick() view returns (int24 tick)
depositFee
viewfunction depositFee() view returns (uint256)
factory
viewfunction factory() view returns (address)
fees0
viewfunction fees0() view returns (uint256)
fees1
viewfunction fees1() view returns (uint256)
gauge
viewfunction gauge() view returns (address)
getAllFees
viewfunction getAllFees() view returns (tuple)
getKeys
viewfunction getKeys() view returns (bytes32 keyMain, bytes32 keyAlt)
getStratFeeId
viewfunction getStratFeeId() view returns (uint256)
isCalm
viewfunction isCalm() view returns (bool)
keeper
viewfunction keeper() view returns (address)
lastHarvest
viewfunction lastHarvest() view returns (uint256)
lastPositionAdjustment
viewfunction lastPositionAdjustment() view returns (uint256)
lockedProfit
viewfunction lockedProfit() view returns (uint256 locked0, uint256 locked1)
lpToken0
viewfunction lpToken0() view returns (address)
lpToken1
viewfunction lpToken1() view returns (address)
maxTickDeviation
viewfunction maxTickDeviation() view returns (int56)
native
viewfunction native() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pool
viewfunction pool() view returns (address)
positionAlt
viewfunction positionAlt() view returns (int24 tickLower, int24 tickUpper)
positionMain
viewfunction positionMain() view returns (int24 tickLower, int24 tickUpper)
positionWidth
viewfunction positionWidth() view returns (int24)
price
viewfunction price() view returns (uint256 _price)
range
viewfunction range() view returns (uint256 lowerPrice, uint256 upperPrice)
rewardBalances
viewfunction rewardBalances(address) view returns (uint256)
rewardPool
viewfunction rewardPool() view returns (address)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
sqrtPrice
viewfunction sqrtPrice() view returns (uint160 sqrtPriceX96)
strategist
viewfunction strategist() view returns (address)
swapFee
viewfunction swapFee() view returns (uint256 fee)
totalLocked0
viewfunction totalLocked0() view returns (uint256)
totalLocked1
viewfunction totalLocked1() view returns (uint256)
twap
viewfunction twap() view returns (int56 twapTick)
twapInterval
viewfunction twapInterval() view returns (uint32)
unirouter
viewfunction unirouter() view returns (address)
vault
viewfunction vault() view returns (address)
withdrawFee
viewfunction withdrawFee() view returns (uint256)
addRewardToken
nonpayablefunction addRewardToken(address _token)
beforeAction
nonpayablefunction beforeAction()
claimEarnings
nonpayablefunction claimEarnings() returns (uint256 fee0, uint256 fee1, uint256 feeAlt0, uint256 feeAlt1)
deposit
nonpayablefunction deposit()
harvest
nonpayablefunction harvest()
harvest
nonpayablefunction harvest(address _callFeeRecipient)
initialize
nonpayablefunction initialize(address _pool, address _gauge, address _rewardPool, int24 _positionWidth, tuple _commonAddresses)
moveTicks
nonpayablefunction moveTicks()
panic
nonpayablefunction panic(uint256 _minAmount0, uint256 _minAmount1)
ramsesV2MintCallback
nonpayablefunction ramsesV2MintCallback(uint256 amount0, uint256 amount1, bytes)
renounceOwnership
nonpayablefunction renounceOwnership()
resetRewards
nonpayablefunction resetRewards()
retireVault
nonpayablefunction retireVault()
setDeviation
nonpayablefunction setDeviation(int56 _maxDeviation)
setPositionWidth
nonpayablefunction setPositionWidth(int24 _width)
setRewardPool
nonpayablefunction setRewardPool(address _rewardPool)
setStrategist
nonpayablefunction setStrategist(address _strategist)
setStratFeeId
nonpayablefunction setStratFeeId(uint256 _feeId)
setTwapInterval
nonpayablefunction setTwapInterval(uint32 _interval)
setUnirouter
nonpayablefunction setUnirouter(address _unirouter)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(uint256 _amount0, uint256 _amount1)
events
ChargedFees
event ChargedFees(uint256 callFeeAmount, uint256 beefyFeeAmount, uint256 strategistFeeAmount)
ClaimedFees
event ClaimedFees(uint256 feeMain0, uint256 feeMain1, uint256 feeAlt0, uint256 feeAlt1)
Harvest
event Harvest(uint256 fee0, uint256 fee1)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
SetDeviation
event SetDeviation(int56 maxTickDeviation)
SetPositionWidth
event SetPositionWidth(int24 oldWidth, int24 width)
SetRewardPool
event SetRewardPool(address rewardPool)
SetStrategist
event SetStrategist(address strategist)
SetStratFeeId
event SetStratFeeId(uint256 feeId)
SetTwapInterval
event SetTwapInterval(uint32 oldInterval, uint32 interval)
SetUnirouter
event SetUnirouter(address unirouter)
TVL
event TVL(uint256 bal0, uint256 bal1)
Unpaused
event Unpaused(address account)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
InvalidEntry
error InvalidEntry()
InvalidInput
error InvalidInput()
InvalidOutput
error InvalidOutput()
InvalidTicks
error InvalidTicks()
NotAuthorized
error NotAuthorized()
NotCalm
error NotCalm()
NotManager
error NotManager()
NotPool
error NotPool()
NotStrategist
error NotStrategist()
NotVault
error NotVault()
OverLimit
error OverLimit()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StrategyPaused
error StrategyPaused()
TooMuchSlippage
error TooMuchSlippage()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615b3480620000f36000396000f3fe608060405234801561001057600080fd5b50600436106103f05760003560e01c806378238c3711610215578063ad29f5da11610125578063d0e30db0116100b8578063e97206a911610087578063e97206a914610814578063f1a392da1461081c578063f2fde38b14610825578063fbfa77cf14610838578063fcc25e131461084b57600080fd5b8063d0e30db0146107d1578063d92f3d73146107d9578063d9ceab13146107ec578063e941fa781461062857600080fd5b8063bc415d8a116100f4578063bc415d8a1461078a578063c45a0155146107a3578063c7b9d530146107b6578063c7d54132146107c957600080fd5b8063ad29f5da1461075d578063b20feaaf14610765578063b3a60cb31461077a578063b83d26831461078257600080fd5b80638e145459116101a85780639bdde46b116101775780639bdde46b1461071f578063a035b1fe14610727578063a6f19c841461072f578063a80f35b814610742578063aced16611461075557600080fd5b80638e145459146106bb57806393c8dc6d146106c357806393f1c442146106e357806399cd2446146106ec57600080fd5b8063865238d4116101e4578063865238d414610686578063877562b61461068f5780638cfc0250146106a25780638da5cb5b146106aa57600080fd5b806378238c371461064b5780637bb7bed11461065e5780637bb98a68146106715780638097e2491461067957600080fd5b80633c1d5df0116103105780634c02a21c116102a35780636099134611610272578063609913461461060257806366666aa91461061557806367a5279314610628578063696c58e51461062f578063715018a61461064357600080fd5b80634c02a21c146105c757806354cf2aeb146105d05780635c975abb146105d85780635ee167c0146105ef57600080fd5b8063441a3e70116102df578063441a3e701461059c57806344b81396146105af5780634641257d146105b75780634746fb55146105bf57600080fd5b80633c1d5df0146105425780633e48f4171461056e5780633e55f932146105815780633f4ba83a1461059457600080fd5b806317dd7a72116103885780632150c518116103575780632150c5181461050b578063257ae0de146105135780632b950b6614610526578063362c28c61461052f57600080fd5b806317dd7a72146104ca5780631c03e6cc146104d25780631d27050f146104e55780631fe4a686146104f857600080fd5b806311b0b42d116103c457806311b0b42d1461045e5780631208aa181461048957806312cf1381146104a457806316f0115b146104b757600080fd5b8062a4b5c9146103f557806304c404b314610417578063065e53601461042e5780630e5c011e14610449575b600080fd5b6103fd610880565b604080519283526020830191909152015b60405180910390f35b610420609d5481565b60405190815260200161040e565b610436610a8d565b60405160029190910b815260200161040e565b61045c610457366004614e82565b610b07565b005b609754610471906001600160a01b031681565b6040516001600160a01b03909116815260200161040e565b610491610b13565b60405160069190910b815260200161040e565b61045c6104b2366004614eae565b610c82565b60d154610471906001600160a01b031681565b61045c610d03565b61045c6104e0366004614e82565b610d21565b61045c6104f3366004614ecb565b610e33565b609a54610471906001600160a01b031681565b6103fd610ed4565b609954610471906001600160a01b031681565b610420609c5481565b61045c61053d366004614f00565b610f5b565b60dc5461055990600160501b900463ffffffff1681565b60405163ffffffff909116815260200161040e565b61045c61057c366004614fb5565b610ffe565b61045c61058f366004615048565b6110ab565b61045c6111a0565b61045c6105aa366004615061565b61124d565b6103fd611310565b61045c61141d565b610471611426565b61042060d95481565b610420611499565b60655460ff165b604051901515815260200161040e565b60d454610471906001600160a01b031681565b61045c610610366004615061565b611538565b60d354610471906001600160a01b031681565b6000610420565b60dc54610491906301000000900460060b81565b61045c6115ee565b61045c610659366004614e82565b611600565b61047161066c366004615048565b61166c565b6103fd611696565b60dc546104369060020b81565b610420609f5481565b60d554610471906001600160a01b031681565b610420611742565b6033546001600160a01b0316610471565b6104716117b6565b6104206106d1366004614e82565b60d76020526000908152604090205481565b61042060d85481565b60db5461070590600281810b9163010000009004900b82565b60408051600293840b81529190920b60208201520161040e565b6105df611800565b6104206118a8565b60d254610471906001600160a01b031681565b61045c610750366004615083565b6118e7565b610471611b74565b61045c611bbe565b61076d611c9e565b60405161040e9190615121565b61045c611cce565b610471611eba565b60da5461070590600281810b9163010000009004900b82565b609b54610471906001600160a01b031681565b61045c6107c4366004614e82565b611f34565b61045c611fad565b61045c6120b1565b61045c6107e7366004614e82565b612141565b6107f46121ad565b60408051948552602085019390935291830152606082015260800161040e565b6103fd6121db565b610420609e5481565b61045c610833366004614e82565b61224a565b609854610471906001600160a01b031681565b6108536122c0565b604080519687526020870195909552938501929092526060840152608083015260a082015260c00161040e565b60008060008060005b60d6548110156109935760d45460d680546001600160a01b0390921691839081106108b6576108b66151b7565b6000918252602090912001546001600160a01b03160361090f5760d7600060d683815481106108e7576108e76151b7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205492505b60d55460d680546001600160a01b039092169183908110610932576109326151b7565b6000918252602090912001546001600160a01b03160361098b5760d7600060d68381548110610963576109636151b7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205491505b600101610889565b5060d4546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa1580156109dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0091906151cd565b610a0a91906151fc565b60d5546040516370a0823160e01b815230600482015291955082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610a57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7b91906151cd565b610a8591906151fc565b925050509091565b60d15460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa158015610ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afb9190615231565b50939695505050505050565b610b10816124bd565b50565b6040805160028082526060820183526000928392919060208301908036833701905050905060dc600a9054906101000a900463ffffffff1681600081518110610b5e57610b5e6151b7565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110610b8d57610b8d6151b7565b63ffffffff9092166020928302919091019091015260d15460405163883bdbfd60e01b81526000916001600160a01b03169063883bdbfd90610bd39085906004016152c4565b600060405180830381865afa158015610bf0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c1891908101906153a5565b50905060dc600a9054906101000a900463ffffffff1660030b81600081518110610c4457610c446151b7565b602002602001015182600181518110610c5f57610c5f6151b7565b6020026020010151610c71919061546a565b610c7b91906154ad565b9250505090565b610c8a61257c565b60dc5460408051600292830b81529183900b60208301527f69d927977053f4ff4a26e8d792564e367e844a869cda4df12630bf7b62a632de910160405180910390a1610cd46125d6565b50505050610ce06129d5565b60dc805462ffffff191662ffffff8316179055610cfb612d27565b610b10612d7d565b610d0b613030565b610d136125d6565b50505050610d1f6129d5565b565b6033546001600160a01b03163314801590610d555750610d3f611b74565b6001600160a01b0316336001600160a01b031614155b15610d735760405163607e454560e11b815260040160405180910390fd5b60d354610d8e906001600160a01b038381169116600061305b565b60d354610daa906001600160a01b03838116911660001961305b565b609954610dc5906001600160a01b038381169116600061305b565b609954610de1906001600160a01b03838116911660001961305b565b60d680546001810182556000919091527fe767803f8ecf1dee6bb0345811f7312cda556058b19db6389ad9ae3568643ddd0180546001600160a01b0319166001600160a01b0392909216919091179055565b610e3b61257c565b60dc546040805163ffffffff600160501b9093048316815291831660208301527f86139943149914833c057d2c24f3a3967cce8e6aba2eb12e422500d8a51ffc7b910160405180910390a1603c8163ffffffff161015610eae5760405163b4fa3fb360e01b815260040160405180910390fd5b60dc805463ffffffff909216600160501b0263ffffffff60501b19909216919091179055565b60da546040516000918291610f009130918491600281810b926301000000909204900b906020016154eb565b60408051601f1981840301815290829052805160209182012060db54909450610f3f923092600092600281810b936301000000909204900b91016154eb565b6040516020818303038152906040528051906020012090509091565b610f6361257c565b604051600682900b81527f69d3f73bfb3c2f0de63dc1de2ed486cf45d88ebfff8cb1e8f124b085d2bafb979060200160405180910390a1610fa2613119565b610fad906004615520565b60020b8160060b12610fd25760405163b4fa3fb360e01b815260040160405180910390fd5b60dc805466ffffffffffffff90921663010000000269ffffffffffffff00000019909216919091179055565b60d1546001600160a01b0316331461102957604051636f61f64160e01b815260040160405180910390fd5b60dc54600160701b900460ff166110535760405163887efaa560e01b815260040160405180910390fd5b82156110765760d15460d454611076916001600160a01b03918216911685613187565b81156110995760d15460d554611099916001600160a01b03918216911684613187565b505060dc805460ff60701b1916905550565b6033546001600160a01b031633148015906110df57506110c9611b74565b6001600160a01b0316336001600160a01b031614155b156110fd5760405163607e454560e11b815260040160405180910390fd5b611105611426565b6001600160a01b0316633e55f932826040518263ffffffff1660e01b815260040161113291815260200190565b600060405180830381600087803b15801561114c57600080fd5b505af1158015611160573d6000803e3d6000fd5b505050507f9163810ee1e29168d4ce900e48a333fb8fbd3fd070d2bef67f6d4db0846a469f8160405161119591815260200190565b60405180910390a150565b6033546001600160a01b031633148015906111d457506111be611b74565b6001600160a01b0316336001600160a01b031614155b156111f25760405163607e454560e11b815260040160405180910390fd5b60006112066033546001600160a01b031690565b6001600160a01b03160361122d5760405163ea8e4eb560e01b815260040160405180910390fd5b6112356131b8565b61123d6132ad565b611245612d27565b610d1f612d7d565b611255613030565b60dd544203611266576112666132ff565b81156112895760985460d454611289916001600160a01b03918216911684613187565b80156112ac5760985460d5546112ac916001600160a01b03918216911683613187565b6112b4613324565b6112c0576112c0612d7d565b6000806112cb611696565b60408051838152602081018390529294509092507f631c4f79c14099a717f4be2f25e6cef89e310b3944ef0e44ea2c0811ebb982a8910160405180910390a150505050565b60008060008061131e610880565b9150915060008061132d6122c0565b5050505091509150600082856113439190615547565b905060006113518386615547565b90506000609e544261136391906151fc565b90506000610e108210611377576000611383565b61138382610e106151fc565b9050609c548411156113b157610e1081609c546113a0919061555a565b6113aa9190615571565b99506113cb565b610e106113be828661555a565b6113c89190615571565b99505b609d548311156113f757610e1081609d546113e6919061555a565b6113f09190615571565b9850611411565b610e10611404828561555a565b61140e9190615571565b98505b50505050505050509091565b610d1f326124bd565b609b5460408051634746fb5560e01b815290516000926001600160a01b031691634746fb559160048083019260209291908290030181865afa158015611470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114949190615585565b905090565b6000620f4240670de0b6b3a764000060d160009054906101000a90046001600160a01b03166001600160a01b031663da3c300d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151f91906155a2565b62ffffff1661152e919061555a565b6114949190615571565b6033546001600160a01b0316331480159061156c5750611556611b74565b6001600160a01b0316336001600160a01b031614155b1561158a5760405163607e454560e11b815260040160405180910390fd5b6115926125d6565b5050505061159e6129d5565b6115a66133af565b6115ae613450565b6000806115b9611696565b91509150838210806115ca57508281105b156115e85760405163fa6ad35560e01b815260040160405180910390fd5b50505050565b6115f661257c565b610d1f600061348d565b61160861257c565b6116106133af565b60d380546001600160a01b0319166001600160a01b0383161790556116336131b8565b6040516001600160a01b03821681527f173d73afad648e625c4a53878536f7a2debed1f51a04f21d728bce3cf534fcc190602001611195565b60d6818154811061167c57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000806000806116a4610880565b915091506000806116b36122c0565b50505050915091506000806116c6611310565b90925090506000826116d88689615547565b6116e291906151fc565b90506000826116f18689615547565b6116fb91906151fc565b60d85460d9549192509083821115611711578391505b8281111561171c5750815b61172682856151fc565b61173082856151fc565b9b509b50505050505050505050509091565b600061174c611426565b604051636788231160e11b81523060048201526001600160a01b03919091169063cf10462290602401602060405180830381865afa158015611792573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149491906151cd565b609b5460408051638e14545960e01b815290516000926001600160a01b031691638e1454599160048083019260209291908290030181865afa158015611470573d6000803e3d6000fd5b60008061180b610a8d565b90506000611817610b13565b60dc5490915060009061184590611838906301000000900460060b8461546a565b60060b620d89e7196134df565b60dc5490915060009061187290611866906301000000900460060b856155c7565b60060b620d89e86134f9565b90508360020b8260060b138061188d57508360020b8160060b125b1561189d57600094505050505090565b600194505050505090565b6000806118b3611eba565b905060026118d7826001600160a01b0316670de0b6b3a7640000600160601b613508565b6118e191906156d8565b91505090565b600054610100900460ff16158080156119075750600054600160ff909116105b806119215750303b158015611921575060005460ff166001145b6119895760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156119ac576000805461ff0019166101001790555b6119b5826135bc565b60d180546001600160a01b038089166001600160a01b0319928316811790935560d2805489831690841617905560d380549188169190921617905560408051630dfe168160e01b81529051630dfe1681916004808201926020929091908290030181865afa158015611a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4f9190615585565b60d460006101000a8154816001600160a01b0302191690836001600160a01b03160217905550856001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad79190615585565b60d580546001600160a01b0319166001600160a01b039290921691909117905560dc805462ffffff85166dffffffff00000000000000ffffff1990911617600f60531b179055611b256131b8565b8015611b6c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050505050565b609b546040805163aced166160e01b815290516000926001600160a01b03169163aced16619160048083019260209291908290030181865afa158015611470573d6000803e3d6000fd5b6033546001600160a01b03163314801590611bf25750611bdc611b74565b6001600160a01b0316336001600160a01b031614155b15611c105760405163607e454560e11b815260040160405180910390fd5b60005b60d654811015611c915760d35460d68054611c61926001600160a01b03169160009185908110611c4557611c456151b7565b6000918252602090912001546001600160a01b0316919061305b565b60995460d68054611c89926001600160a01b03169160009185908110611c4557611c456151b7565b600101611c13565b50610d1f60d66000614ddc565b611ca6614dfa565b6040518060600160405280611cb9613731565b81526020016000815260200160009052919050565b611cd661257c565b609860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4d91906151cd565b6103e814611d6e5760405163ea8e4eb560e01b815260040160405180910390fd5b611d79600080611538565b6000611d836117b6565b9050600080611d90610880565b90925090508115611e205760d4546040516370a0823160e01b8152306004820152611e209185916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0d91906151cd565b60d4546001600160a01b03169190613187565b8015611eab5760d5546040516370a0823160e01b8152306004820152611eab9185916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9891906151cd565b60d5546001600160a01b03169190613187565b611eb5600061348d565b505050565b60d15460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e09291908290030181865afa158015611f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f289190615231565b50949695505050505050565b609a546001600160a01b03163314611f5f57604051633163ba6d60e11b815260040160405180910390fd5b609a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f46d58e3fa07bf19b1d27240f0e286b27e9f7c1b0d88933333fe833b60eec541290602001611195565b611fb56132ff565b609b546040516305226abd60e51b81523360048201526001600160a01b039091169063a44d57a090602401602060405180830381865afa158015611ffd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202191906156e7565b61203e5760405163ea8e4eb560e01b815260040160405180910390fd5b6120466125d6565b505050506120526129d5565b61205a612d27565b612062612d7d565b60008061206d611696565b60408051838152602081018390529294509092507f631c4f79c14099a717f4be2f25e6cef89e310b3944ef0e44ea2c0811ebb982a891015b60405180910390a15050565b6120b96132ff565b6120c1613030565b60dc54600160781b900460ff166120ee576120da612d27565b60dc805460ff60781b1916600160781b1790555b6120f6612d7d565b600080612101611696565b4260dd5560408051838152602081018390529294509092507f631c4f79c14099a717f4be2f25e6cef89e310b3944ef0e44ea2c0811ebb982a891016120a5565b61214961257c565b6121516133af565b609980546001600160a01b0319166001600160a01b0383161790556121746131b8565b6040516001600160a01b03821681527f5ca6e64c4522e68e154aa9372f2c5969cd37d9640e59f66953dc472f54ee86fa90602001611195565b6000806000806121bb6125d6565b60d65493975091955093509150156121d5576121d56137e2565b90919293565b60da546000908190600290612211906121f590830b613afc565b6001600160a01b0316670de0b6b3a7640000600160601b613508565b61221b91906156d8565b60da5490925060029061223a906121f59063010000009004830b613afc565b61224491906156d8565b90509091565b61225261257c565b6001600160a01b0381166122b75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611980565b610b108161348d565b6000806000806000806000806122d4610ed4565b9150915060006122e2611eba565b60d15460405163514ea4bf60e01b815260048101869052919250600091829182916001600160a01b039091169063514ea4bf9060240160a060405180830381865afa158015612335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123599190615719565b60d15460405163514ea4bf60e01b8152600481018c90529598506001600160801b039283169750911694506000938493508392506001600160a01b039091169063514ea4bf9060240160a060405180830381865afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e39190615719565b60da549497506001600160801b039182169650169350612429928a925061240d915060020b613afc565b60da54612423906301000000900460020b613afc565b89613e32565b60db54919e509c5061245f9088906124439060020b613afc565b60db54612459906301000000900460020b613afc565b86613e32565b909b50995061246e858e615547565b9c5061247a848d615547565b9b50612486828c615547565b9a50612492818b615547565b995061249e8b8e615547565b9e506124aa8a8d615547565b9d50505050505050505050909192939495565b6124c56132ff565b6124cd6121ad565b505050506124d96129d5565b60d654600090156124ef576124ec613ece565b90505b6000806125028460d85460d954866141dc565b9150915061250e612d7d565b600060d881905560d981905580612523611310565b90925090506125328285615547565b609c5561253f8184615547565b609d5542609e5560408051858152602081018590527f6c8433a8e155f0af04dba058d4e4695f7da554578963d876bdf4a6d8d6399d9c9101611b63565b6033546001600160a01b03163314610d1f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611980565b6000806000806000806125e7610ed4565b60d15460405163514ea4bf60e01b8152600481018490529294509092506000916001600160a01b039091169063514ea4bf9060240160a060405180830381865afa158015612639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265d9190615719565b505060d15460405163514ea4bf60e01b8152600481018790529394506000936001600160a01b03909116925063514ea4bf915060240160a060405180830381865afa1580156126b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d49190615719565b5050505090506000826001600160801b031611156127755760d15460da5460405163a34123a760e01b81526001600160a01b039092169163a34123a79161273091600282810b9263010000009004900b90600090600401615770565b60408051808303816000875af115801561274e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127729190615796565b50505b6001600160801b0381161561280d5760d15460db5460405163a34123a760e01b81526001600160a01b039092169163a34123a7916127c891600282810b9263010000009004900b90600090600401615770565b60408051808303816000875af11580156127e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280a9190615796565b50505b60d15460da546040516309e3d67b60e31b81526001600160a01b0390921691634f1eb3d89161285c913091600281810b926301000000909204900b906001600160801b039081906004016157ba565b60408051808303816000875af115801561287a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289e91906157f7565b60d15460db546040516309e3d67b60e31b81526001600160801b039485169c509284169a506001600160a01b0390911692634f1eb3d8926128f6923092600282810b936301000000909304900b9181906004016157ba565b60408051808303816000875af1158015612914573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293891906157f7565b60d8546001600160801b039283169850911695508690612959908a90615547565b6129639190615547565b60d85560d9548590612976908990615547565b6129809190615547565b60d9556040805189815260208101899052908101879052606081018690527f6fe7c663aa15def6e80578b76ddd894fcefeabf14a0106afbec24da4a6c578729060800160405180910390a15050505090919293565b6000806129e0610ed4565b60d15460405163514ea4bf60e01b8152600481018490529294509092506000916001600160a01b039091169063514ea4bf9060240160a060405180830381865afa158015612a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a569190615719565b505060d15460405163514ea4bf60e01b8152600481018790529394506000936001600160a01b03909116925063514ea4bf915060240160a060405180830381865afa158015612aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612acd9190615719565b5050505090506000826001600160801b03161115612c005760d15460da5460405163a34123a760e01b81526001600160a01b039092169163a34123a791612b2891600282810b9263010000009004900b908790600401615770565b60408051808303816000875af1158015612b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6a9190615796565b505060d15460da546040516309e3d67b60e31b81526001600160a01b0390921691634f1eb3d891612bbb913091600281810b926301000000909204900b906001600160801b039081906004016157ba565b60408051808303816000875af1158015612bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfd91906157f7565b50505b6001600160801b038116156115e85760d15460db5460405163a34123a760e01b81526001600160a01b039092169163a34123a791612c5291600282810b9263010000009004900b908690600401615770565b60408051808303816000875af1158015612c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c949190615796565b505060d15460db546040516309e3d67b60e31b81526001600160a01b0390921691634f1eb3d891612ce5913091600281810b926301000000909204900b906001600160801b039081906004016157ba565b60408051808303816000875af1158015612d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6c91906157f7565b612d2f6132ff565b6000612d39610a8d565b90506000612d45613119565b60dc54909150600090612d5c90839060020b615520565b9050612d6983838361451c565b612d74838383614557565b505042609f5550565b612d856132ff565b612d8d6146a7565b600080612d98610880565b915091506000612da6611eba565b60da54909150600090612dde908390612dc19060020b613afc565b60da54612dd7906301000000900460020b613afc565b8787614748565b60da54909150600090612e01908390600281810b9163010000009004900b61480c565b90506000826001600160801b0316118015612e195750805b15612efa5760dc805460ff60701b1916600160701b17905560d15460da54604051638221b8c160e01b815230600482015260006024820152600282810b6044830152630100000090920490910b60648201526001600160801b038416608482015260c060a4820152600a60c4820152692132b2b33c9026b0b4b760b11b60e48201526001600160a01b0390911690638221b8c1906101040160408051808303816000875af1158015612ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef39190615796565b5050612f02565b612f026132ff565b612f0a610880565b60db549196509450612f41908490612f249060020b613afc565b60db54612f3a906301000000900460020b613afc565b8888614748565b91506001600160801b038216156130295760dc805460ff60701b1916600160701b17905560d15460db54604051638221b8c160e01b815230600482015260006024820152600282810b6044830152630100000090920490910b60648201526001600160801b038416608482015260c060a4820152600960c482015268109959599e48105b1d60ba1b60e48201526001600160a01b0390911690638221b8c1906101040160408051808303816000875af1158015613002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130269190615796565b50505b5050505050565b6098546001600160a01b03163314610d1f576040516362df054560e01b815260040160405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526130ac848261485a565b6115e8576040516001600160a01b0384811660248301526000604483015261310f91869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506148fd565b6115e884826148fd565b60d154604080516334324e9f60e21b815290516000926001600160a01b03169163d0c93a7c9160048083019260209291908290030181865afa158015613163573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611494919061582a565b6040516001600160a01b03838116602483015260448201839052611eb591859182169063a9059cbb906064016130dd565b60995460d4546131d7916001600160a01b03918216911660001961305b565b60995460d5546131f6916001600160a01b03918216911660001961305b565b60005b60d654811015610b105760995460d6805461322b926001600160a01b03169160009185908110611c4557611c456151b7565b60995460d68054613254926001600160a01b0316916000199185908110611c4557611c456151b7565b60d35460d6805461327c926001600160a01b03169160009185908110611c4557611c456151b7565b60d35460d680546132a5926001600160a01b0316916000199185908110611c4557611c456151b7565b6001016131f9565b6132b5614960565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b613307611800565b610d1f576040516313643c3b60e11b815260040160405180910390fd5b600061333260655460ff1690565b806114945750609b60009054906101000a90046001600160a01b03166001600160a01b031663f12d54d86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561338b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149491906156e7565b60995460d4546133cd916001600160a01b039182169116600061305b565b60995460d5546133eb916001600160a01b039182169116600061305b565b60005b60d654811015610b105760995460d68054613420926001600160a01b03169160009185908110611c4557611c456151b7565b60d35460d68054613448926001600160a01b03169160009185908110611c4557611c456151b7565b6001016133ee565b6134586149a9565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586132e23390565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008183136134ee57816134f0565b825b90505b92915050565b60008183126134ee57816134f0565b6000808060001985870985870292508281108382030391505080600003613541576000841161353657600080fd5b5082900490506135b5565b80841161354d57600080fd5b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b600054610100900460ff166135e35760405162461bcd60e51b815260040161198090615847565b6135eb6149ef565b6135f3614a1e565b6136006020820182614e82565b609880546001600160a01b0319166001600160a01b03929092169190911790556136306040820160208301614e82565b609980546001600160a01b0319166001600160a01b03929092169190911790556136606060820160408301614e82565b609a80546001600160a01b0319166001600160a01b03929092169190911790556136906080820160608301614e82565b609b80546001600160a01b0319166001600160a01b03929092169182179055604080516311b0b42d60e01b815290516311b0b42d916004808201926020929091908290030181865afa1580156136ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370e9190615585565b609780546001600160a01b0319166001600160a01b039290921691909117905550565b61376c6040518060c0016040528060008152602001600081526020016000815260200160008152602001606081526020016000151581525090565b613774611426565b604051639af608c960e01b81523060048201526001600160a01b039190911690639af608c990602401600060405180830381865afa1580156137ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114949190810190615892565b60d65460009067ffffffffffffffff81111561380057613800614f1d565b604051908082528060200260200182016040528015613829578160200160208202803683370190505b50905060005b60d6548110156138e65760d6818154811061384c5761384c6151b7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561389d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c191906151cd565b8282815181106138d3576138d36151b7565b602090810291909101015260010161382f565b5060d25460da546040516318d9dceb60e31b81526001600160a01b039092169163c6cee75891613932913091600091600282810b9263010000009004900b9060d6908590600401615970565b600060405180830381600087803b15801561394c57600080fd5b505af1158015613960573d6000803e3d6000fd5b505060d25460db546040516318d9dceb60e31b81526001600160a01b03909216935063c6cee75892506139af913091600091600282810b9263010000009004900b9060d6908590600401615970565b600060405180830381600087803b1580156139c957600080fd5b505af11580156139dd573d6000803e3d6000fd5b5050505060005b60d654811015613af8576000828281518110613a0257613a026151b7565b602002602001015160d68381548110613a1d57613a1d6151b7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a9291906151cd565b613a9c91906151fc565b90508060d7600060d68581548110613ab657613ab66151b7565b60009182526020808320909101546001600160a01b0316835282019290925260400181208054909190613aea908490615547565b9091555050506001016139e4565b5050565b60008060008360020b12613b13578260020b613b1b565b8260020b6000035b9050620d89e8811115613b545760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611980565b600081600116600003613b6b57600160801b613b7d565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613bb1576ffff97272373d413259a46990580e213a0260801c5b6004821615613bd0576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613bef576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613c0e576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613c2d576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613c4c576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613c6b576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613c8b576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613cab576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613ccb576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613ceb576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613d0b576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613d2b576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613d4b576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613d6b576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613d8c576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613dac576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613dcb576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613de8576b048a170391f7dc42444e8fa20260801c5b60008460020b1315613e09578060001981613e0557613e05615497565b0490505b640100000000810615613e1d576001613e20565b60005b60ff16602082901c0192505050919050565b600080836001600160a01b0316856001600160a01b03161115613e53579293925b846001600160a01b0316866001600160a01b031611613e7e57613e77858585614a4d565b9150613ec5565b836001600160a01b0316866001600160a01b03161015613eb757613ea3868585614a4d565b9150613eb0858785614ac8565b9050613ec5565b613ec2858585614ac8565b90505b94509492505050565b600080613ed9613731565b905060005b60d6548110156141d757600060d7600060d68481548110613f0157613f016151b7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411156141cf576000670de0b6b3a7640000836000015160d7600060d68681548110613f5357613f536151b7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054613f82919061555a565b613f8c9190615571565b60975460d680549293506000926001600160a01b039092169185908110613fb557613fb56151b7565b6000918252602090912001546001600160a01b0316146140875760995460d680546001600160a01b039092169163df791e50919086908110613ff957613ff96151b7565b60009182526020909120015460975460405160e084901b6001600160e01b03191681526001600160a01b03928316600482015291166024820152604481018590526064016020604051808303816000875af115801561405c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061408091906151cd565b905061408a565b50805b60d35460d680546001600160a01b039092169163a3cd8ac49190869081106140b4576140b46151b7565b9060005260206000200160009054906101000a90046001600160a01b03168460d7600060d689815481106140ea576140ea6151b7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461411991906151fc565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152620151806044820152606401600060405180830381600087803b15801561416857600080fd5b505af115801561417c573d6000803e3d6000fd5b50505050808561418c9190615547565b9450600060d7600060d686815481106141a7576141a76151b7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205550505b600101613ede565b505090565b60008060006141e9613731565b90508386156142ff578151600090670de0b6b3a76400009061420b908a61555a565b6142159190615571565b905061422181896151fc565b60975460d4549196506000916001600160a01b039081169116146142c65760995460d454609754604051630df791e560e41b81526001600160a01b03928316600482015290821660248201526044810185905291169063df791e50906064016020604051808303816000875af115801561429f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c391906151cd565b90505b60975460d4546001600160a01b039182169116036142ef576142e88284615547565b92506142fc565b6142f98184615547565b92505b50505b8515614412578151600090670de0b6b3a76400009061431e908961555a565b6143289190615571565b905061433481886151fc565b60975460d5549195506000916001600160a01b039081169116146143d95760995460d554609754604051630df791e560e41b81526001600160a01b03928316600482015290821660248201526044810185905291169063df791e50906064016020604051808303816000875af11580156143b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143d691906151cd565b90505b60975460d5546001600160a01b03918216911603614402576143fb8284615547565b925061440f565b61440c8184615547565b92505b50505b6000670de0b6b3a764000083604001518361442d919061555a565b6144379190615571565b609754909150614451906001600160a01b03168a83613187565b6000670de0b6b3a764000084606001518461446c919061555a565b6144769190615571565b609a54609754919250614496916001600160a01b03908116911683613187565b6000816144a384866151fc565b6144ad91906151fc565b90506144cd6144ba6117b6565b6097546001600160a01b03169083613187565b60408051848152602081018390529081018390527fd255b592c7f268a73e534da5219a60ff911b4cf6daae21c7d20527dd657bd99a9060600160405180910390a1505050505094509492505050565b614527838284614b12565b60da805465ffffffffffff1916630100000062ffffff9384160262ffffff19161792909116919091179055505050565b600080614562610880565b90925090506000821561459e576ec097ce7bc90715b34b9f10000000006145876118a8565b614591908561555a565b61459b9190615571565b90505b818110156145fd576145b1868587614b12565b5060db805462ffffff191662ffffff929092169190911790556145d5868680614b12565b5060db805462ffffff90921663010000000265ffffff00000019909216919091179055614658565b8082101561465857614610868687614b12565b60db805462ffffff191662ffffff9290921691909117905550614634868587614b12565b60db805462ffffff90921663010000000265ffffff00000019909216919091179055505b60db5460da54600291820b910b148015614689575060db5460da54630100000091829004600290810b92909104900b145b15611b6c57604051631434ed7f60e01b815260040160405180910390fd5b60655460ff168061472a5750609b60009054906101000a90046001600160a01b03166001600160a01b031663f12d54d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015614706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061472a91906156e7565b15610d1f5760405163e628b94960e01b815260040160405180910390fd5b6000836001600160a01b0316856001600160a01b03161115614768579293925b846001600160a01b0316866001600160a01b0316116147935761478c858585614b44565b9050614803565b836001600160a01b0316866001600160a01b031610156147f55760006147ba878686614b44565b905060006147c9878986614bae565b9050806001600160801b0316826001600160801b0316106147ea57806147ec565b815b92505050614803565b614800858584614bae565b90505b95945050505050565b600080600061482e61481c611eba565b61482587613afc565b61242387613afc565b91509150816000148061483f575080155b1561484f576000925050506135b5565b6001925050506135b5565b6000806000846001600160a01b0316846040516148779190615a02565b6000604051808303816000865af19150503d80600081146148b4576040519150601f19603f3d011682016040523d82523d6000602084013e6148b9565b606091505b50915091508180156148e35750805115806148e35750808060200190518101906148e391906156e7565b80156148035750505050506001600160a01b03163b151590565b60006149126001600160a01b03841683614be4565b9050805160001415801561493757508080602001905181019061493591906156e7565b155b15611eb557604051635274afe760e01b81526001600160a01b0384166004820152602401611980565b60655460ff16610d1f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401611980565b60655460ff1615610d1f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401611980565b600054610100900460ff16614a165760405162461bcd60e51b815260040161198090615847565b610d1f614bf2565b600054610100900460ff16614a455760405162461bcd60e51b815260040161198090615847565b610d1f614c22565b6000826001600160a01b0316846001600160a01b03161115614a6d579192915b6001600160a01b038416614ab66fffffffffffffffffffffffffffffffff60601b606085901b16614a9e8787615a1e565b6001600160a01b0316866001600160a01b0316613508565b614ac09190615571565b949350505050565b6000826001600160a01b0316846001600160a01b03161115614ae8579192915b614ac06001600160801b038316614aff8686615a1e565b6001600160a01b0316600160601b613508565b6000806000614b218685614c55565b9050614b2d8582615a3e565b9250614b398582615a63565b915050935093915050565b6000826001600160a01b0316846001600160a01b03161115614b64579192915b6000614b87856001600160a01b0316856001600160a01b0316600160601b613508565b9050614803614ba98483614b9b8989615a1e565b6001600160a01b0316613508565b614c9f565b6000826001600160a01b0316846001600160a01b03161115614bce579192915b614ac0614ba983600160601b614b9b8888615a1e565b60606134f083836000614cba565b600054610100900460ff16614c195760405162461bcd60e51b815260040161198090615847565b610d1f3361348d565b600054610100900460ff16614c495760405162461bcd60e51b815260040161198090615847565b6065805460ff19169055565b600080614c628385615a88565b905060008460020b128015614c825750614c7c8385615ab9565b60020b15155b15614c955780614c9181615adb565b9150505b614ac08382615520565b806001600160801b0381168114614cb557600080fd5b919050565b606081471015614cdf5760405163cd78605960e01b8152306004820152602401611980565b600080856001600160a01b03168486604051614cfb9190615a02565b60006040518083038185875af1925050503d8060008114614d38576040519150601f19603f3d011682016040523d82523d6000602084013e614d3d565b606091505b5091509150614d4d868383614d57565b9695505050505050565b606082614d6c57614d6782614db3565b6135b5565b8151158015614d8357506001600160a01b0384163b155b15614dac57604051639996b31560e01b81526001600160a01b0385166004820152602401611980565b50806135b5565b805115614dc35780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546000825590600052602060002090810190610b109190614e54565b6040518060600160405280614e406040518060c0016040528060008152602001600081526020016000815260200160008152602001606081526020016000151581525090565b815260200160008152602001600081525090565b5b80821115614e695760008155600101614e55565b5090565b6001600160a01b0381168114610b1057600080fd5b600060208284031215614e9457600080fd5b81356135b581614e6d565b8060020b8114610b1057600080fd5b600060208284031215614ec057600080fd5b81356135b581614e9f565b600060208284031215614edd57600080fd5b813563ffffffff811681146135b557600080fd5b8060060b8114610b1057600080fd5b600060208284031215614f1257600080fd5b81356135b581614ef1565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715614f5657614f56614f1d565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f8557614f85614f1d565b604052919050565b600067ffffffffffffffff821115614fa757614fa7614f1d565b50601f01601f191660200190565b600080600060608486031215614fca57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614fef57600080fd5b8401601f8101861361500057600080fd5b803561501361500e82614f8d565b614f5c565b81815287602083850101111561502857600080fd5b816020840160208301376000602083830101528093505050509250925092565b60006020828403121561505a57600080fd5b5035919050565b6000806040838503121561507457600080fd5b50508035926020909101359150565b600080600080600085870361010081121561509d57600080fd5b86356150a881614e6d565b955060208701356150b881614e6d565b945060408701356150c881614e6d565b935060608701356150d881614e9f565b92506080607f19820112156150ec57600080fd5b506080860190509295509295909350565b60005b83811015615118578181015183820152602001615100565b50506000910152565b60208152600082516060602084015280516080840152602081015160a0840152604081015160c0840152606081015160e0840152608081015160c061010085015280518061014086015261016061517e82828801602086016150fd565b60a08401511515610120870152602087015160408701526040870151606087015280601f19601f84011687010194505050505092915050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156151df57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156134f3576134f36151e6565b805161ffff81168114614cb557600080fd5b80518015158114614cb557600080fd5b600080600080600080600060e0888a03121561524c57600080fd5b875161525781614e6d565b602089015190975061526881614e9f565b95506152766040890161520f565b94506152846060890161520f565b93506152926080890161520f565b925060a088015160ff811681146152a857600080fd5b91506152b660c08901615221565b905092959891949750929550565b6020808252825182820181905260009190848201906040850190845b8181101561530257835163ffffffff16835292840192918401916001016152e0565b50909695505050505050565b600067ffffffffffffffff82111561532857615328614f1d565b5060051b60200190565b600082601f83011261534357600080fd5b8151602061535361500e8361530e565b8083825260208201915060208460051b87010193508684111561537557600080fd5b602086015b8481101561539a57805161538d81614e6d565b835291830191830161537a565b509695505050505050565b600080604083850312156153b857600080fd5b825167ffffffffffffffff808211156153d057600080fd5b818501915085601f8301126153e457600080fd5b815160206153f461500e8361530e565b82815260059290921b8401810191818101908984111561541357600080fd5b948201945b8386101561543a57855161542b81614ef1565b82529482019490820190615418565b9188015191965090935050508082111561545357600080fd5b5061546085828601615332565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff821317156134f3576134f36151e6565b634e487b7160e01b600052601260045260246000fd5b60008160060b8360060b806154c4576154c4615497565b667fffffffffffff198214600019821416156154e2576154e26151e6565b90059392505050565b60609490941b6bffffffffffffffffffffffff19168452601484019290925260e890811b60348401521b6037820152603a0190565b60008260020b8260020b028060020b9150808214615540576155406151e6565b5092915050565b808201808211156134f3576134f36151e6565b80820281158282048414176134f3576134f36151e6565b60008261558057615580615497565b500490565b60006020828403121561559757600080fd5b81516135b581614e6d565b6000602082840312156155b457600080fd5b815162ffffff811681146135b557600080fd5b600681810b9083900b01667fffffffffffff8113667fffffffffffff19821217156134f3576134f36151e6565b600181815b8085111561562f578160001904821115615615576156156151e6565b8085161561562257918102915b93841c93908002906155f9565b509250929050565b600082615646575060016134f3565b81615653575060006134f3565b816001811461566957600281146156735761568f565b60019150506134f3565b60ff841115615684576156846151e6565b50506001821b6134f3565b5060208310610133831016604e8410600b84101617156156b2575081810a6134f3565b6156bc83836155f4565b80600019048211156156d0576156d06151e6565b029392505050565b60006134f060ff841683615637565b6000602082840312156156f957600080fd5b6134f082615221565b80516001600160801b0381168114614cb557600080fd5b600080600080600060a0868803121561573157600080fd5b61573a86615702565b9450602086015193506040860151925061575660608701615702565b915061576460808701615702565b90509295509295909350565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b600080604083850312156157a957600080fd5b505080516020909101519092909150565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6000806040838503121561580a57600080fd5b61581383615702565b915061582160208401615702565b90509250929050565b60006020828403121561583c57600080fd5b81516135b581614e9f565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208083850312156158a557600080fd5b825167ffffffffffffffff808211156158bd57600080fd5b9084019060c082870312156158d157600080fd5b6158d9614f33565b825181528383015184820152604083015160408201526060830151606082015260808301518281111561590b57600080fd5b83019150601f8201871361591e57600080fd5b815161592c61500e82614f8d565b818152888683860101111561594057600080fd5b61594f828783018887016150fd565b60808301525061596160a08401615221565b60a08201529695505050505050565b600060c0820160018060a01b03808a16845260208960208601528860020b60408601528760020b606086015260c0608086015282875480855260e087019150886000526020600020945060005b818110156159db5785548516835260019586019592840192016159bd565b50506001600160a01b03871660a087015293506159f792505050565b979650505050505050565b60008251615a148184602087016150fd565b9190910192915050565b6001600160a01b03828116828216039080821115615540576155406151e6565b600282810b9082900b03627fffff198112627fffff821317156134f3576134f36151e6565b600281810b9083900b01627fffff8113627fffff19821217156134f3576134f36151e6565b60008160020b8360020b80615a9f57615a9f615497565b627fffff198214600019821416156154e2576154e26151e6565b60008260020b80615acc57615acc615497565b808360020b0791505092915050565b60008160020b627fffff198103615af457615af46151e6565b600019019291505056fea26469706673582212205f21a2359d0a36d0c91d7be607b1725b3d68556cbd8bc8067c6e34391114636e64736f6c63430008170033