42 txs
43 calls
constructor
constructor((uint256 fundraisingGoal, string name, string symbol, uint256 fundraisingDeadline, uint256 fundExpiry, address kosherManager, uint256 maxWhitelistAmount, address protocolAdmin, uint256 maxPublicContributionAmount, bool isCbBTCFund, uint256 stakeRequiredPerContribution, address uniswapV3Factory, address positionManager, address shekelToken, address cbbtcToken, address shekelStakingContract, address lockerFactory) params)
functions
getContributionBalance
viewfunction getContributionBalance(address contributor) view returns (uint256)
getFundExpiry
viewfunction getFundExpiry() view returns (uint256)
getFundraisingDeadline
viewfunction getFundraisingDeadline() view returns (uint256)
getFundraisingFinalized
viewfunction getFundraisingFinalized() view returns (bool)
getFundraisingGoal
viewfunction getFundraisingGoal() view returns (uint256)
getFundTokenStakingContract
viewfunction getFundTokenStakingContract() view returns (address)
getGoalReached
viewfunction getGoalReached() view returns (bool)
getIsCbBTCFund
viewfunction getIsCbBTCFund() view returns (bool)
getIsLiquidityUnlocked
viewfunction getIsLiquidityUnlocked() view returns (bool)
getKosherToken
viewfunction getKosherToken() view returns (address)
getLiquidityLocker
viewfunction getLiquidityLocker() view returns (address)
getMaxPublicContributionAmount
viewfunction getMaxPublicContributionAmount() view returns (uint256)
getShekelLocker
viewfunction getShekelLocker() view returns (address)
getStakeRequiredPerContribution
viewfunction getStakeRequiredPerContribution() view returns (uint256)
getTotalRaised
viewfunction getTotalRaised() view returns (uint256)
getUserContributionLimit
viewfunction getUserContributionLimit(address user) view returns (uint256)
getWhitelistManager
viewfunction getWhitelistManager() view returns (address)
name
viewfunction name() view returns (string)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
symbol
viewfunction symbol() view returns (string)
contribute
payablefunction contribute(uint256 amount) payable
distributeTokens
nonpayablefunction distributeTokens(uint256 startIndex, uint256 endIndex)
emergencyEscape
nonpayablefunction emergencyEscape()
execute
nonpayablefunction execute(address[] contracts, bytes[] data, uint256[] msgValues)
extendFundExpiry
nonpayablefunction extendFundExpiry(uint256 newFundExpiry)
extendFundraisingDeadline
nonpayablefunction extendFundraisingDeadline(uint256 newFundraisingDeadline)
finalizeFundraising
nonpayablefunction finalizeFundraising(int24 initialTick, int24 upperTick, bytes32 salt)
initiateShekelUnlock
nonpayablefunction initiateShekelUnlock()
lockShekel
nonpayablefunction lockShekel(uint256 amount)
redeemFundTokens
nonpayablefunction redeemFundTokens(uint256 amount)
refund
nonpayablefunction refund()
renounceOwnership
nonpayablefunction renounceOwnership()
setFundraisingGoal
nonpayablefunction setFundraisingGoal(uint256 newGoal)
setmaxPublicContributionAmount
nonpayablefunction setmaxPublicContributionAmount(uint256 _maxPublicContributionAmount)
setStakeRequiredPerContribution
nonpayablefunction setStakeRequiredPerContribution(uint256 newValue)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unlockLiquidityPosition
nonpayablefunction unlockLiquidityPosition()
unlockShekel
nonpayablefunction unlockShekel()
events
Contribution
event Contribution(address indexed contributor, uint256 amount)
FundExpiryExtended
event FundExpiryExtended(uint256 newExpiry)
FundraisingDeadlineExtended
event FundraisingDeadlineExtended(uint256 oldDeadline, uint256 newDeadline)
FundraisingFinalized
event FundraisingFinalized(bool success)
FundraisingGoalUpdated
event FundraisingGoalUpdated(uint256 oldGoal, uint256 newGoal)
FundTokensRedeemed
event FundTokensRedeemed(address indexed user, uint256 fundTokenAmount, uint256 cbbtcAmount)
FundTokenStakingDeployed
event FundTokenStakingDeployed(address stakingContract)
LiquidityUnlocked
event LiquidityUnlocked(uint256 tokenId, uint256 amount0, uint256 amount1)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Refund
event Refund(address indexed contributor, uint256 amount)
ShekelLockerDeployed
event ShekelLockerDeployed(address lockerAddress)
StakeRequiredPerContributionUpdated
event StakeRequiredPerContributionUpdated(uint256 oldValue, uint256 newValue)
errors
AlreadyFinalized
error AlreadyFinalized()
CBBTCAmountRequired
error CBBTCAmountRequired()
DistributionRatioNotSet
error DistributionRatioNotSet()
ETHNotAccepted
error ETHNotAccepted()
ExceedsPublicLimit
error ExceedsPublicLimit()
ExceedsStakedBasedLimit
error ExceedsStakedBasedLimit()
ExceedsWhitelistLimit
error ExceedsWhitelistLimit()
ExecutionFailed
error ExecutionFailed()
FailedCall
error FailedCall()
FailedToUnlockLiquidity
error FailedToUnlockLiquidity()
FundNotExpired
error FundNotExpired()
FundraisingAlreadyFinalized
error FundraisingAlreadyFinalized()
FundraisingDeadlinePassed
error FundraisingDeadlinePassed()
FundraisingGoalReached
error FundraisingGoalReached()
FundraisingNotFinalized
error FundraisingNotFinalized()
FundStillActive
error FundStillActive()
GoalNotReached
error GoalNotReached()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InsufficientCBBTCBalance
error InsufficientCBBTCBalance()
InvalidAddress
error InvalidAddress()
InvalidContribution
error InvalidContribution()
InvalidDeadline
error InvalidDeadline()
InvalidExecuteParams
error InvalidExecuteParams()
InvalidFundExpiry
error InvalidFundExpiry()
InvalidFundExpiryTime
error InvalidFundExpiryTime()
InvalidFundraisingDeadline
error InvalidFundraisingDeadline()
InvalidFundraisingGoal
error InvalidFundraisingGoal()
InvalidIndexRange
error InvalidIndexRange()
InvalidStakeRequirement
error InvalidStakeRequirement()
InvalidStartIndex
error InvalidStartIndex()
InvalidTokenDeployment
error InvalidTokenDeployment()
LiquidityAlreadyUnlocked
error LiquidityAlreadyUnlocked()
NewGoalBelowRaised
error NewGoalBelowRaised()
NoContributionsToRefund
error NoContributionsToRefund()
NoFundTokensToRedeem
error NoFundTokensToRedeem()
NotAuthorized
error NotAuthorized()
NotWhitelisted
error NotWhitelisted()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
RefundNotAvailable
error RefundNotAvailable()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ShekelLockerNotDeployed
error ShekelLockerNotDeployed()
StakingDeploymentFailed
error StakingDeploymentFailed()
T
error T()
creation bytecode
0x6101e060405262127500608052683635c9adc5dea0000060a05261271060c0526a52b7d2dcc80cd2e400000060e0526b033b2e3c9fd0803ce8000000610100526002805460ff60a01b1916604b60a01b17905534801561005e57600080fd5b50604051617c95380380617c9583398101604081905261007d9161062c565b60a08101516001600160a01b0381166100b057604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100b9816104a2565b506001805580516000036100e057604051632d47cb8f60e11b815260040160405180910390fd5b4281606001511161010457604051631da7447960e21b815260040160405180910390fd5b806060015181608001511161012c576040516302a0464f60e51b815260040160405180910390fd5b8061014001516000036101525760405163c195a09760e01b815260040160405180910390fd5b6101608101516001600160a01b031661017e5760405163e6c4247b60e01b815260040160405180910390fd5b6101808101516001600160a01b03166101aa5760405163e6c4247b60e01b815260040160405180910390fd5b6101a08101516001600160a01b03166101d65760405163e6c4247b60e01b815260040160405180910390fd5b6101c08101516001600160a01b03166102025760405163e6c4247b60e01b815260040160405180910390fd5b6101e08101516001600160a01b031661022e5760405163e6c4247b60e01b815260040160405180910390fd5b6102008101516001600160a01b031661025a5760405163e6c4247b60e01b815260040160405180910390fd5b610160808201516001600160a01b0390811661012052610180808401518216610140526101a08085015183169093526101c08085015183169091526101e0840151821690925261020083015116905260208101516011906102bb9082610835565b5060408101516012906102ce9082610835565b5080516005556060810151600755608081015160085560c0810151600a5560e0810151600380546001600160a01b0319166001600160a01b03909216919091179055610100810151600b55610120810151600d805460ff60a01b1916600160a01b92151583021790819055610140830151600c5560ff9190041615610373576101c0810151600280546001600160a01b0319166001600160a01b039092169190911790555b6101a08101516003546008546040516001600160a01b0390921691610397906104f2565b6001600160a01b0393841681529290911660208301526040820152606001604051809103906000f0801580156103d1573d6000803e3d6000fd5b50600f80546001600160a01b0319166001600160a01b039290921691821790556040519081527f4d034e7999b73c980126bf84dde16d9a4c8432586a8e50e56c93bb965f4b974b9060200160405180910390a18060e001518160c001518260a0015160405161043f906104ff565b6001600160a01b03938416815260208101929092529091166040820152606001604051809103906000f08015801561047b573d6000803e3d6000fd5b50601080546001600160a01b0319166001600160a01b0392909216919091179055506108f3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a148061681483390190565b610a6d8061722883390190565b634e487b7160e01b600052604160045260246000fd5b60405161022081016001600160401b03811182821017156105455761054561050c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156105735761057361050c565b604052919050565b600082601f83011261058c57600080fd5b81516001600160401b038111156105a5576105a561050c565b6105b8601f8201601f191660200161054b565b8181528460208386010111156105cd57600080fd5b60005b828110156105ec576020818601810151838301820152016105d0565b506000918101602001919091529392505050565b80516001600160a01b038116811461061757600080fd5b919050565b8051801515811461061757600080fd5b60006020828403121561063e57600080fd5b81516001600160401b0381111561065457600080fd5b8201610220818503121561066757600080fd5b61066f610522565b8151815260208201516001600160401b0381111561068c57600080fd5b6106988682850161057b565b60208301525060408201516001600160401b038111156106b757600080fd5b6106c38682850161057b565b60408301525060608281015190820152608080830151908201526106e960a08301610600565b60a082015260c0828101519082015261070460e08301610600565b60e08201526101008281015190820152610721610120830161061c565b610120820152610140828101519082015261073f6101608301610600565b6101608201526107526101808301610600565b6101808201526107656101a08301610600565b6101a08201526107786101c08301610600565b6101c082015261078b6101e08301610600565b6101e082015261079e6102008301610600565b610200820152949350505050565b600181811c908216806107c057607f821691505b6020821081036107e057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561083057806000526020600020601f840160051c8101602085101561080d5750805b601f840160051c820191505b8181101561082d5760008155600101610819565b50505b505050565b81516001600160401b0381111561084e5761084e61050c565b6108628161085c84546107ac565b846107e6565b6020601f821160018114610896576000831561087e5750848201515b600019600385901b1c1916600184901b17845561082d565b600084815260208120601f198516915b828110156108c657878501518255602094850194600190920191016108a6565b50848210156108e45786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c051615e246109f06000396000612a3e0152600061126a015260008181611018015281816110db01526125a10152600081816117f001528181611e4301528181611ecf015281816123b7015281816127270152612865015260008181611af201528181611be901528181611cda01528181611dbd01528181612921015281816129bd01528181612a6d0152612b7201526000612780015260008181611615015261248701526000818161240a01526128c9015260008181612753015261288d015260006125ee015260006125c80152615e246000f3fe6080604052600436106102345760003560e01c806372e041a01161012e578063c1cbbca7116100ab578063d96290491161006f578063d962904914610694578063ed3655eb146106b2578063f0c5d549146106d0578063f2fde38b146106e5578063f47586861461070557600080fd5b8063c1cbbca714610619578063c2b7d79f1461062c578063c6e5546c14610641578063d07f848214610661578063d1e56e541461067f57600080fd5b80638da5cb5b116100f25780638da5cb5b1461059c578063947fe812146105ba57806395d89b41146105da5780639f550293146105ef578063bb2e37e51461060457600080fd5b806372e041a01461050857806374c515ae1461052857806375d8d68d146105475780638153f8f81461055c57806383694cf01461057c57600080fd5b8063341872ed116101bc57806357fbcda51161018057806357fbcda514610475578063590e1ae3146104ab57806364e9a9b6146104c057806366a10368146104d5578063715018a6146104f357600080fd5b8063341872ed146103dd5780633a008606146103fd578063421aef371461041d578063541d45e71461044b57806356e1b2cf1461046057600080fd5b80631b8df586116102035780631b8df586146103405780632109db591461036957806327c5425c146103895780632b517d21146103a85780632ea44681146103bd57600080fd5b806306fdde031461027e578063150b7a02146102a95780631aadcf46146102ee5780631af1a5021461032057600080fd5b3661027957600654610100900460ff16158015610252575060075442105b80156102685750600d54600160a01b900460ff16155b1561027757610277600061071d565b005b600080fd5b34801561028a57600080fd5b50610293610ad7565b6040516102a09190613055565b60405180910390f35b3480156102b557600080fd5b506102d56102c436600461307d565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016102a0565b3480156102fa57600080fd5b50600f546001600160a01b03165b6040516001600160a01b0390911681526020016102a0565b34801561032c57600080fd5b5061027761033b36600461311e565b610b65565b34801561034c57600080fd5b50600654610100900460ff165b60405190151581526020016102a0565b34801561037557600080fd5b5061027761038436600461311e565b610c2e565b34801561039557600080fd5b50600d54600160a01b900460ff16610359565b3480156103b457600080fd5b50610277610d03565b3480156103c957600080fd5b506102776103d836600461311e565b610daf565b3480156103e957600080fd5b506102776103f836600461311e565b610e76565b34801561040957600080fd5b5061027761041836600461311e565b610ebf565b34801561042957600080fd5b5061043d610438366004613137565b611198565b6040519081526020016102a0565b34801561045757600080fd5b5060085461043d565b34801561046c57600080fd5b506102776112ff565b34801561048157600080fd5b5061043d610490366004613137565b6001600160a01b031660009081526016602052604090205490565b3480156104b757600080fd5b5061027761148c565b3480156104cc57600080fd5b5060075461043d565b3480156104e157600080fd5b50600d546001600160a01b0316610308565b3480156104ff57600080fd5b50610277611599565b34801561051457600080fd5b50610277610523366004613163565b6115ab565b34801561053457600080fd5b50601054600160a01b900460ff16610359565b34801561055357600080fd5b5061027761169e565b34801561056857600080fd5b5061027761057736600461311e565b611727565b34801561058857600080fd5b5061027761059736600461311e565b61178e565b3480156105a857600080fd5b506000546001600160a01b0316610308565b3480156105c657600080fd5b506102776105d53660046131f0565b6118c7565b3480156105e657600080fd5b50610293611a6d565b3480156105fb57600080fd5b5060045461043d565b34801561061057600080fd5b50610277611a7a565b61027761062736600461311e565b61071d565b34801561063857600080fd5b5060055461043d565b34801561064d57600080fd5b5061027761065c366004613296565b611f95565b34801561066d57600080fd5b506009546001600160a01b0316610308565b34801561068b57600080fd5b50600c5461043d565b3480156106a057600080fd5b506010546001600160a01b0316610308565b3480156106be57600080fd5b50600e546001600160a01b0316610308565b3480156106dc57600080fd5b50600b5461043d565b3480156106f157600080fd5b50610277610700366004613137565b61211d565b34801561071157600080fd5b5060065460ff16610359565b610725612158565b600654610100900460ff161561074e57604051631df969b760e01b815260040160405180910390fd5b60075442106107705760405163e478792360e01b815260040160405180910390fd5b600d54600090600160a01b900460ff16156107e45734156107a3576040516248c6b960e61b815260040160405180910390fd5b816000036107c45760405163244d19c360e21b815260040160405180910390fd5b5060025481906107df906001600160a01b0316333084612182565b610827565b346000036108055760405163652122d960e01b815260040160405180910390fd5b81156108245760405163652122d960e01b815260040160405180910390fd5b50345b600a54156108fa57601054604051633af32abf60e01b81523360048201526001600160a01b0390911690633af32abf90602401602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b91906132b8565b6108b857604051630b094f2760e31b815260040160405180910390fd5b600a54336000908152601660205260409020546108d69083906132f0565b11156108f55760405163a6bd512160e01b815260040160405180910390fd5b610946565b600061090533611198565b3360009081526016602052604090205490915081906109259084906132f0565b11156109445760405163613abeb360e11b815260040160405180910390fd5b505b60055460045482919061095a9083906132f0565b11156109e3576004546005546109709190613303565b600d54909150600160a01b900460ff16156109ab576109a6336109938385613303565b6002546001600160a01b031691906121ef565b6109e3565b336108fc6109b98385613303565b6040518115909202916000818181858888f193505050501580156109e1573d6000803e3d6000fd5b505b336000908152601660205260408120549003610a3c57601380546001810182556000919091527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b031916331790555b3360009081526016602052604081208054839290610a5b9084906132f0565b925050819055508060046000828254610a7491906132f0565b909155505060405181815233907f4d154d4aae216bed6d0926db77c00df2b57c6b5ba4eee05775de20facede3a7b9060200160405180910390a260055460045403610ac9576006805461ff0019166101001790555b5050610ad460018055565b50565b60118054610ae490613316565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1090613316565b8015610b5d5780601f10610b3257610100808354040283529160200191610b5d565b820191906000526020600020905b815481529060010190602001808311610b4057829003601f168201915b505050505081565b610b6d612225565b6008548111610b8f57604051639ae7e6a760e01b815260040160405180910390fd5b6008819055600d54604051630d78d28160e11b8152600481018390526001600160a01b0390911690631af1a50290602401600060405180830381600087803b158015610bda57600080fd5b505af1158015610bee573d6000803e3d6000fd5b505050507f4e5dd36969507fae1e69607cd3b2492dafc0c3ae1bf1c50f921a5642847fa30981604051610c2391815260200190565b60405180910390a150565b6000546001600160a01b03163314801590610c5457506003546001600160a01b03163314155b15610c725760405163ea8e4eb560e01b815260040160405180910390fd5b600654610100900460ff1615610c9b57604051631df969b760e01b815260040160405180910390fd5b6007548111610cbd5760405163d71c2da560e01b815260040160405180910390fd5b600780549082905560408051828152602081018490527fcf8355056cd2d0cfbb80a34af77420d1e6eceacc85186e561d75a1a210179a9191015b60405180910390a15050565b610d0b612158565b610d13612225565b600f546001600160a01b0316610d3c5760405163a86ab33d60e01b815260040160405180910390fd5b600f60009054906101000a90046001600160a01b03166001600160a01b031663a69df4b56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b50505050610dad60018055565b565b610db7612225565b60065460ff1615610ddb57604051631c6cb8d360e21b815260040160405180910390fd5b80600003610dfc57604051632d47cb8f60e11b815260040160405180910390fd5b600454811015610e1f5760405163447f926160e01b815260040160405180910390fd5b60058054908290556004546006805461ff0019169184146101000291909117905560408051828152602081018490527f961c8b414cced5fba2600265359474975f844fcadb7ee9d50f7f9d19ff1711ea9101610cf7565b6000546001600160a01b03163314801590610e9c57506003546001600160a01b03163314155b15610eba5760405163ea8e4eb560e01b815260040160405180910390fd5b600b55565b610ec7612158565b600854421015610eea5760405163f6bc0a2960e01b815260040160405180910390fd5b80600003610f0b57604051636c8dbc8560e01b815260040160405180910390fd5b6009546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610f62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8691906132b8565b50600954604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff59190613350565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110839190613350565b90506000826110928386613369565b61109c9190613396565b9050806000036110bf5760405163136cc93360e11b815260040160405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561112c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115091906132b8565b50604080518581526020810183905233917f14a63150777b38b4fc5ed9116132ab2a2bc8357bbbc698378fd605b9eaa65907910160405180910390a2505050610ad460018055565b600a546000901561124857601054604051633af32abf60e01b81526001600160a01b03848116600483015290911690633af32abf90602401602060405180830381865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121191906132b8565b61121c576000611242565b6001600160a01b038216600090815260166020526040902054600a546112429190613303565b92915050565b6040516326d352ab60e11b81526001600160a01b0383811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690634da6a55690602401602060405180830381865afa1580156112b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d79190613350565b90506000600c54826112e99190613396565b90506112f781600b54612252565b949350505050565b6003546001600160a01b0316331461132a5760405163ea8e4eb560e01b815260040160405180910390fd5b60065460ff161561134e5760405163475a253560e01b815260040160405180910390fd5b600d54600160a01b900460ff16156113f2576002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156113a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cd9190613350565b90508015610ad457600354600254610ad4916001600160a01b039182169116836121ef565b6003546040516000916001600160a01b03169047908381818185875af1925050503d806000811461143f576040519150601f19603f3d011682016040523d82523d6000602084013e611444565b606091505b5050905080610ad45760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064015b60405180910390fd5b611494612158565b600654610100900460ff16156114bd57604051630b4d698160e01b815260040160405180910390fd5b60075442116114df57604051630b4d698160e01b815260040160405180910390fd5b33600090815260166020526040812054900361150e576040516307e3a5c760e01b815260040160405180910390fd5b3360009081526016602052604081208054919055600d54600160a01b900460ff16156115505760025461154b906001600160a01b031633836121ef565b61155a565b61155a3382612265565b60405181815233907fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d9060200160405180910390a250610dad60018055565b6115a1612225565b610dad6000612303565b6115b3612225565b600654610100900460ff166115db576040516378c754c960e01b815260040160405180910390fd5b60065460ff16156115ff5760405163475a253560e01b815260040160405180910390fd5b600061160a82612353565b6004549091506116427f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000613369565b61164c9190613396565b60155561165881612560565b6116638185856126fa565b604051600181527fe64f408051437053caebc2ec8b10a45148f5acee3a6922908871b997f80d335d906020015b60405180910390a150505050565b6116a6612158565b6116ae612225565b600f546001600160a01b03166116d75760405163a86ab33d60e01b815260040160405180910390fd5b600f60009054906101000a90046001600160a01b03166001600160a01b031663c4c77bda6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d8c57600080fd5b61172f612225565b806000036117505760405163c195a09760e01b815260040160405180910390fd5b600c80549082905560408051828152602081018490527f290cd4e7df75ba05266ada6bd18ad0cf12aa3ff31e30c6af92166d26c27e267e9101610cf7565b611796612158565b61179e612225565b600f546001600160a01b03166117c75760405163a86ab33d60e01b815260040160405180910390fd5b600f5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af115801561183b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185f91906132b8565b50600f5460405163083694cf60e41b8152600481018390526001600160a01b03909116906383694cf090602401600060405180830381600087803b1580156118a657600080fd5b505af11580156118ba573d6000803e3d6000fd5b50505050610ad460018055565b6118cf612225565b60065460ff166118f257604051633e79acbd60e11b815260040160405180910390fd5b84831415806119015750828114155b1561191f57604051636ed7379360e11b815260040160405180910390fd5b60005b85811015611a6457600087878381811061193e5761193e6133b8565b90506020020160208101906119539190613137565b6001600160a01b03160361197a5760405163e6c4247b60e01b815260040160405180910390fd5b600087878381811061198e5761198e6133b8565b90506020020160208101906119a39190613137565b6001600160a01b03168484848181106119be576119be6133b8565b905060200201358787858181106119d7576119d76133b8565b90506020028101906119e991906133ce565b6040516119f7929190613415565b60006040518083038185875af1925050503d8060008114611a34576040519150601f19603f3d011682016040523d82523d6000602084013e611a39565b606091505b5050905080611a5b57604051632b3f6d1160e21b815260040160405180910390fd5b50600101611922565b50505050505050565b60128054610ae490613316565b611a82612158565b611a8a612225565b600854421015611aad576040516360c1868d60e01b815260040160405180910390fd5b601054600160a01b900460ff1615611ad8576040516356968a7d60e11b815260040160405180910390fd5b600d54604051632614965760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526000921690639852595c90602401602060405180830381865afa158015611b43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b679190613350565b9050600d60009054906101000a90046001600160a01b03166001600160a01b03166386d1a69f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611bb957600080fd5b505af1158015611bcd573d6000803e3d6000fd5b505060405163133f757160e31b815260048101849052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506399fbab889060240161018060405180830381865afa158015611c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5e919061346a565b50506040805160a0810182528d81526001600160801b038086166020830190815260008385018181526060850182815242608087019081529651630624e65f60e11b815295516004870152925190931660248501529151604484015251606483015291516084820152939b509950899850506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169650630c49ccbe95505060a4019250611d11915050565b60408051808303816000875af1158015611d2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d53919061354c565b6040805160808101825287815230602082019081526001600160801b0382840181815260608401828152945163fc6f786560e01b81529351600485015291516001600160a01b039081166024850152915181166044840152925190921660648201529294509092507f0000000000000000000000000000000000000000000000000000000000000000169063fc6f78659060840160408051808303816000875af1158015611e05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e29919061354c565b50506040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb69190613350565b604051630852cd8d60e31b8152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c6890602401600060405180830381600087803b158015611f1b57600080fd5b505af1158015611f2f573d6000803e3d6000fd5b50506010805460ff60a01b1916600160a01b179055505060408051868152602081018590529081018390527fdf0c1a545ab645f93aa68abd4aa321caaf9091cc92b18e72bd3d385cbaba62719060600160405180910390a15050505050610dad60018055565b611f9d612158565b60065460ff16611fc057604051633e79acbd60e11b815260040160405180910390fd5b601554600003611fe35760405163438fb48f60e11b815260040160405180910390fd5b6013548210612005576040516392c4425960e01b815260040160405180910390fd5b60135481111561201457506013545b808210612034576040516392f1b43560e01b815260040160405180910390fd5b6009546001600160a01b0316825b8281101561210e5760006013828154811061205f5761205f6133b8565b60009182526020808320909101546001600160a01b0316808352601490915260409091205490915060ff16612105576015546001600160a01b0382166000908152601660205260408120549091670de0b6b3a7640000916120c09190613369565b6120ca9190613396565b90506120e06001600160a01b03851683836121ef565b506001600160a01b0381166000908152601460205260409020805460ff191660011790555b50600101612042565b505061211960018055565b5050565b612125612225565b6001600160a01b03811661214f57604051631e4fbdf760e01b815260006004820152602401611483565b610ad481612303565b60026001540361217b57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6040516001600160a01b0384811660248301528381166044830152606482018390526121e99186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612c54565b50505050565b6040516001600160a01b0383811660248301526044820183905261222091859182169063a9059cbb906064016121b7565b505050565b6000546001600160a01b03163314610dad5760405163118cdaa760e01b8152336004820152602401611483565b60008282188284100282185b9392505050565b8047101561228f5760405163cf47918160e01b815247600482015260248101829052604401611483565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146122dc576040519150601f19603f3d011682016040523d82523d6000602084013e6122e1565b606091505b50509050806122205760405163d6bda27560e01b815260040160405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080826011601260405161236790612fe8565b612372929190613613565b8190604051809103906000f5905080158015612392573d6000803e3d6000fd5b50600980546001600160a01b0319166001600160a01b038381169182179092559192507f000000000000000000000000000000000000000000000000000000000000000016116123f557604051631b97c67d60e21b815260040160405180910390fd5b6040516340c10f1960e01b81523060048201527f000000000000000000000000000000000000000000000000000000000000000060248201526001600160a01b038216906340c10f1990604401600060405180830381600087803b15801561245c57600080fd5b505af1158015612470573d6000803e3d6000fd5b50506040516340c10f1960e01b81523060048201527f000000000000000000000000000000000000000000000000000000000000000060248201526001600160a01b03841692506340c10f199150604401600060405180830381600087803b1580156124db57600080fd5b505af11580156124ef573d6000803e3d6000fd5b50506006805460ff191660011790555050604080516338a80c5360e11b815290516001600160a01b0383169163715018a691600480830192600092919082900301818387803b15801561254157600080fd5b505af1158015612555573d6000803e3d6000fd5b509295945050505050565b600060405161256e90612ff5565b604051809103906000f08015801561258a573d6000803e3d6000fd5b50604080516001600160a01b0385811660248301527f00000000000000000000000000000000000000000000000000000000000000001660448201527f000000000000000000000000000000000000000000000000000000000000000060648201527f00000000000000000000000000000000000000000000000000000000000000006084808301919091528251808303909101815260a490910182526020810180516001600160e01b031663eb990c5960e01b1790529051919250906000908390839061265790613002565b612662929190613641565b604051809103906000f08015801561267e573d6000803e3d6000fd5b50600e80546001600160a01b0319166001600160a01b0383169081179091559091506126bd5760405163a534981f60e01b815260040160405180910390fd5b600e546040516001600160a01b0390911681527faf264c47e57edc70c48b9909cc631216bca721afc6cc9b5a3c1489731b1523b490602001611690565b60006127088360020b612cc5565b60405163a167129560e01b81526001600160a01b0386811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015262ffffff7f00000000000000000000000000000000000000000000000000000000000000001660448301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063a1671295906064016020604051808303816000875af11580156127c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ed9190613665565b60405163f637731d60e01b81526001600160a01b0384811660048301529192509082169063f637731d90602401600060405180830381600087803b15801561283457600080fd5b505af1158015612848573d6000803e3d6000fd5b505060408051610160810182526001600160a01b038981168083527f0000000000000000000000000000000000000000000000000000000000000000821660208401527f000000000000000000000000000000000000000000000000000000000000000062ffffff168385015260028a810b606085015289900b60808401527f000000000000000000000000000000000000000000000000000000000000000060a08401819052600060c0850181905260e085018190526101008501523061012085015242610140850152935163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000009092166004830152602482019390935290935090915063095ea7b3906044016020604051808303816000875af115801561297e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a291906132b8565b50604051634418b22b60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906388316456906129f2908590600401613682565b6080604051808303816000875af1158015612a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a359190613746565b505050905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166376b5c47d7f0000000000000000000000000000000000000000000000000000000000000000612a9e6000546001600160a01b031690565b6008546002546040516001600160e01b031960e087901b1681526001600160a01b03948516600482015293909216602484015267ffffffffffffffff1660448301526064820186905260ff600160a01b9091041660848201523060a482015260c4016020604051808303816000875af1158015612b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b439190613665565b604051632142170760e11b81523060048201526001600160a01b038083166024830152604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906342842e0e90606401600060405180830381600087803b158015612bb857600080fd5b505af1158015612bcc573d6000803e3d6000fd5b50506040516367a4d1c360e01b8152600481018590526001600160a01b03841692506367a4d1c39150602401600060405180830381600087803b158015612c1257600080fd5b505af1158015612c26573d6000803e3d6000fd5b5050600d80546001600160a01b0319166001600160a01b039490941693909317909255505050505050505050565b600080602060008451602086016000885af180612c77576040513d6000823e3d81fd5b50506000513d91508115612c8f578060011415612c9c565b6001600160a01b0384163b155b156121e957604051635274afe760e01b81526001600160a01b0385166004820152602401611483565b60008060008360020b12612cdc578260020b612ce4565b8260020b6000035b9050620d89e8811115612d0a576040516315e4079d60e11b815260040160405180910390fd5b600081600116600003612d2157600160801b612d33565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d67576ffff97272373d413259a46990580e213a0260801c5b6004821615612d86576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612da5576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dc4576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612de3576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e02576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e21576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e41576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e61576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e81576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612ea1576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ec1576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ee1576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f01576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f21576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f42576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f62576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f81576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612f9e576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fbf578060001981612fbb57612fbb613380565b0490505b640100000000810615612fd3576001612fd6565b60005b60ff16602082901c0192505050919050565b610c1c8061378383390190565b6116408061439f83390190565b610410806159df83390190565b6000815180845260005b8181101561303557602081850181015186830182015201613019565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061225e602083018461300f565b6001600160a01b0381168114610ad457600080fd5b60008060008060006080868803121561309557600080fd5b85356130a081613068565b945060208601356130b081613068565b935060408601359250606086013567ffffffffffffffff8111156130d357600080fd5b8601601f810188136130e457600080fd5b803567ffffffffffffffff8111156130fb57600080fd5b88602082840101111561310d57600080fd5b959894975092955050506020019190565b60006020828403121561313057600080fd5b5035919050565b60006020828403121561314957600080fd5b813561225e81613068565b8060020b8114610ad457600080fd5b60008060006060848603121561317857600080fd5b833561318381613154565b9250602084013561319381613154565b929592945050506040919091013590565b60008083601f8401126131b657600080fd5b50813567ffffffffffffffff8111156131ce57600080fd5b6020830191508360208260051b85010111156131e957600080fd5b9250929050565b6000806000806000806060878903121561320957600080fd5b863567ffffffffffffffff81111561322057600080fd5b61322c89828a016131a4565b909750955050602087013567ffffffffffffffff81111561324c57600080fd5b61325889828a016131a4565b909550935050604087013567ffffffffffffffff81111561327857600080fd5b61328489828a016131a4565b979a9699509497509295939492505050565b600080604083850312156132a957600080fd5b50508035926020909101359150565b6000602082840312156132ca57600080fd5b8151801515811461225e57600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115611242576112426132da565b81810381811115611242576112426132da565b600181811c9082168061332a57607f821691505b60208210810361334a57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561336257600080fd5b5051919050565b8082028115828204841417611242576112426132da565b634e487b7160e01b600052601260045260246000fd5b6000826133b357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126133e557600080fd5b83018035915067ffffffffffffffff82111561340057600080fd5b6020019150368190038213156131e957600080fd5b8183823760009101908152919050565b805161343081613068565b919050565b805162ffffff8116811461343057600080fd5b805161343081613154565b80516001600160801b038116811461343057600080fd5b6000806000806000806000806000806000806101808d8f03121561348d57600080fd5b8c516bffffffffffffffffffffffff811681146134a957600080fd5b9b506134b760208e01613425565b9a506134c560408e01613425565b99506134d360608e01613425565b98506134e160808e01613435565b97506134ef60a08e01613448565b96506134fd60c08e01613448565b955061350b60e08e01613453565b6101008e01516101208f01519196509450925061352b6101408e01613453565b915061353a6101608e01613453565b90509295989b509295989b509295989b565b6000806040838503121561355f57600080fd5b505080516020909101519092909150565b8054600090600181811c9082168061358957607f821691505b6020821081036135a957634e487b7160e01b600052602260045260246000fd5b818652602086018180156135c457600181146135da57613608565b60ff198516825283151560051b82019550613608565b60008781526020902060005b85811015613602578154848201526001909101906020016135e6565b83019650505b505050505092915050565b6040815260006136266040830185613570565b82810360208401526136388185613570565b95945050505050565b6001600160a01b03831681526040602082018190526000906112f79083018461300f565b60006020828403121561367757600080fd5b815161225e81613068565b81516001600160a01b03168152610160810160208301516136ae60208401826001600160a01b03169052565b5060408301516136c5604084018262ffffff169052565b5060608301516136da606084018260020b9052565b5060808301516136ef608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008301516101008301526101208301516137366101208401826001600160a01b03169052565b5061014092830151919092015290565b6000806000806080858703121561375c57600080fd5b8451935061376c60208601613453565b604086015160609096015194979096509250505056fe608060405234801561001057600080fd5b50604051610c1c380380610c1c83398101604081905261002f91610198565b338282600361003e838261028a565b50600461004b828261028a565b5050506001600160a01b03811661007c57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100858161008d565b505050610348565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261010657600080fd5b81516001600160401b0381111561011f5761011f6100df565b604051601f8201601f19908116603f011681016001600160401b038111828210171561014d5761014d6100df565b60405281815283820160200185101561016557600080fd5b60005b8281101561018457602081860181015183830182015201610168565b506000918101602001919091529392505050565b600080604083850312156101ab57600080fd5b82516001600160401b038111156101c157600080fd5b6101cd858286016100f5565b602085015190935090506001600160401b038111156101eb57600080fd5b6101f7858286016100f5565b9150509250929050565b600181811c9082168061021557607f821691505b60208210810361023557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561028557806000526020600020601f840160051c810160208510156102625750805b601f840160051c820191505b81811015610282576000815560010161026e565b50505b505050565b81516001600160401b038111156102a3576102a36100df565b6102b7816102b18454610201565b8461023b565b6020601f8211600181146102eb57600083156102d35750848201515b600019600385901b1c1916600184901b178455610282565b600084815260208120601f198516915b8281101561031b57878501518255602094850194600190920191016102fb565b50848210156103395786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6108c5806103576000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101aa578063a9059cbb146101b2578063dd62ed3e146101c5578063f2fde38b146101fe57600080fd5b806370a082311461015e578063715018a6146101875780638da5cb5b1461018f57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a57806340c10f1914610149575b600080fd5b6100dc610211565b6040516100e9919061070e565b60405180910390f35b610105610100366004610778565b6102a3565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046107a2565b6102bd565b604051601281526020016100e9565b61015c610157366004610778565b6102e1565b005b61011961016c3660046107df565b6001600160a01b031660009081526020819052604090205490565b61015c6102f7565b6005546040516001600160a01b0390911681526020016100e9565b6100dc61030b565b6101056101c0366004610778565b61031a565b6101196101d3366004610801565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61015c61020c3660046107df565b610328565b60606003805461022090610834565b80601f016020809104026020016040519081016040528092919081815260200182805461024c90610834565b80156102995780601f1061026e57610100808354040283529160200191610299565b820191906000526020600020905b81548152906001019060200180831161027c57829003601f168201915b5050505050905090565b6000336102b181858561036b565b60019150505b92915050565b6000336102cb85828561037d565b6102d68585856103fb565b506001949350505050565b6102e961045a565b6102f38282610487565b5050565b6102ff61045a565b61030960006104bd565b565b60606004805461022090610834565b6000336102b18185856103fb565b61033061045a565b6001600160a01b03811661035f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610368816104bd565b50565b610378838383600161050f565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103f557818110156103e657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610356565b6103f58484848403600061050f565b50505050565b6001600160a01b03831661042557604051634b637e8f60e11b815260006004820152602401610356565b6001600160a01b03821661044f5760405163ec442f0560e01b815260006004820152602401610356565b6103788383836105e4565b6005546001600160a01b031633146103095760405163118cdaa760e01b8152336004820152602401610356565b6001600160a01b0382166104b15760405163ec442f0560e01b815260006004820152602401610356565b6102f3600083836105e4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166105395760405163e602df0560e01b815260006004820152602401610356565b6001600160a01b03831661056357604051634a1406b160e11b815260006004820152602401610356565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d691815260200190565b60405180910390a350505050565b6001600160a01b03831661060f578060026000828254610604919061086e565b909155506106819050565b6001600160a01b038316600090815260208190526040902054818110156106625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610356565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661069d576002805482900390556106bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161070191815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561073c576020818601810151604086840101520161071f565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461077357600080fd5b919050565b6000806040838503121561078b57600080fd5b6107948361075c565b946020939093013593505050565b6000806000606084860312156107b757600080fd5b6107c08461075c565b92506107ce6020850161075c565b929592945050506040919091013590565b6000602082840312156107f157600080fd5b6107fa8261075c565b9392505050565b6000806040838503121561081457600080fd5b61081d8361075c565b915061082b6020840161075c565b90509250929050565b600181811c9082168061084857607f821691505b60208210810361086857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102b757634e487b7160e01b600052601160045260246000fdfea2646970667358221220eb714b401b41167a1733d37b7f7fb4919cb7fe6a8595671ffd03839b0aae18de64736f6c634300081c00336080604052348015600f57600080fd5b506016601a565b60d7565b600054610100900460ff161560855760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161460d5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61155a806100e66000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063715018a6116100de5780638da5cb5b11610097578063eb990c5911610071578063eb990c591461039e578063ed4906c0146103b1578063f2fde38b146103dd578063f7c618c1146103f057600080fd5b80638da5cb5b14610372578063a694fc3a14610383578063db2e21bc1461039657600080fd5b8063715018a6146102c957806372f702f3146102d1578063817b1cd2146102fc57806386cdb33d146103055780638b0b30ce146103145780638d23fc611461031d57600080fd5b80634da6a556116101305780634da6a556146101e157806356311bda1461020a5780635c2235861461021d57806365edf56a14610277578063668038e0146102ae5780636a3d9251146102b657600080fd5b80630f91922b146101785780632113342d1461019e5780633243c791146101a7578063375b3c0a146101bc5780633cb802b9146101c55780633d28ab8e146101ce575b600080fd5b61018b6101863660046112fe565b610403565b6040519081526020015b60405180910390f35b61018b609c5481565b6101ba6101b5366004611320565b610486565b005b61018b609a5481565b61018b609d5481565b6101ba6101dc366004611339565b6105d2565b61018b6101ef3660046112fe565b6001600160a01b03166000908152609e602052604090205490565b6101ba610218366004611320565b610715565b61025a61022b3660046113b0565b609f60209081526000928352604080842090915290825290208054600182015460029092015490919060ff1683565b604080519384526020840192909252151590820152606001610195565b61028a6102853660046113b0565b61088d565b60408051825181526020808401519082015291810151151590820152606001610195565b6101ba610907565b6101ba6102c4366004611320565b6109c9565b6101ba610a5c565b6097546102e4906001600160a01b031681565b6040516001600160a01b039091168152602001610195565b61018b609b5481565b61018b670de0b6b3a764000081565b61018b60995481565b61035261032b3660046112fe565b609e6020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610195565b6033546001600160a01b03166102e4565b6101ba610391366004611320565b610a6e565b6101ba610b68565b6101ba6103ac3660046113da565b610c4f565b61018b6103bf3660046112fe565b6001600160a01b03166000908152609e602052604090206001015490565b6101ba6103eb3660046112fe565b610ece565b6098546102e4906001600160a01b031681565b6001600160a01b0381166000908152609e60205260408120609c546002820154839061042f9083611432565b90506000670de0b6b3a764000082856000015461044c9190611445565b610456919061145c565b905060006104696402540be4008361145c565b905080856003015461047b919061147e565b979650505050505050565b61048e610f44565b6000609b54116104d85760405162461bcd60e51b815260206004820152601060248201526f4e6f207374616b656420746f6b656e7360801b60448201526064015b60405180910390fd5b600081116105195760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b60448201526064016104cf565b600061052a6402540be40083611445565b90506000609b54670de0b6b3a7640000836105459190611445565b61054f919061145c565b60985490915061056a906001600160a01b0316333086610f9e565b80609c600082825461057c919061147e565b9250508190555082609d6000828254610595919061147e565b90915550506040518381527f051019b59d3b24249903e46fd05b6def7f293fc3de54eca64b3d32743f27fc8e9060200160405180910390a1505050565b6105da61100b565b6000805b8281101561066957336000908152609f602052604081208186868581811061060857610608611491565b60209081029290920135835250810191909152604001600020600281015490915060ff1615801561063d575080600101544210155b1561066057805461064e908461147e565b60028201805460ff1916600117905592505b506001016105de565b50600081116106ba5760405162461bcd60e51b815260206004820152601e60248201527f4e6f20746f6b656e7320726561647920666f72207769746864726177616c000060448201526064016104cf565b6097546106d1906001600160a01b03163383611064565b60405181815233907f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d59060200160405180910390a2506107116001606555565b5050565b61071d61100b565b336000908152609e60205260409020805482111561077d5760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e74207374616b656420616d6f756e7400000000000060448201526064016104cf565b610786336110a1565b8181600001600082825461079a9190611432565b9250508190555081609b60008282546107b39190611432565b9091555050609c546002820155600181018054600091826107d3836114a7565b9190505590506000609954426107e9919061147e565b60408051606080820183528782526020808301858152600084860181815233808352609f85528783208b8452855291879020955186559151600186015590516002909401805460ff1916941515949094179093558351898152908101859052928301869052929350917ff265d6065ef1332d7a6da1a66115a5f51a6ffd1b5da52bcfff6510598b94ffb8910160405180910390a250505061088a6001606555565b50565b6108b3604051806060016040528060008152602001600081526020016000151581525090565b506001600160a01b0382166000908152609f602090815260408083208484528252918290208251606081018452815481526001820154928101929092526002015460ff161515918101919091525b92915050565b61090f61100b565b610918336110a1565b336000908152609e602052604090206003810154806109685760405162461bcd60e51b815260206004820152600c60248201526b4e6f206469766964656e647360a01b60448201526064016104cf565b60006003830155609854610986906001600160a01b03163383611064565b60405181815233907f16b8533c95f66ab8c192c98ddcf5031bcb3ee6f4022988bdadd57d3422da30739060200160405180910390a250506109c76001606555565b565b6109d1610f44565b60008111610a215760405162461bcd60e51b815260206004820152601a60248201527f556e626f6e64696e672074696d65206d757374206265203e203000000000000060448201526064016104cf565b60998190556040518181527fd8a43159bd7089803e737cde3c04fc38091766e96f67fb8f43df39416fde14fb9060200160405180910390a150565b610a64610f44565b6109c7600061116a565b610a7661100b565b609a54811015610abd5760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e74207374616b6560701b60448201526064016104cf565b336000818152609e6020526040902090610ad6906110a1565b81816000016000828254610aea919061147e565b9250508190555081609b6000828254610b03919061147e565b9091555050609c546002820155609754610b28906001600160a01b0316333085610f9e565b60405182815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9060200160405180910390a25061088a6001606555565b610b70610f44565b6097546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd91906114c0565b905060008111610c275760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b60448201526064016104cf565b61088a610c3c6033546001600160a01b031690565b6097546001600160a01b03169083611064565b600054610100900460ff1615808015610c6f5750600054600160ff909116105b80610c895750303b158015610c89575060005460ff166001145b610cec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104cf565b6000805460ff191660011790558015610d0f576000805461ff0019166101001790555b6001600160a01b038516610d5d5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b21039ba30b5b4b733903a37b5b2b760591b60448201526064016104cf565b6001600160a01b038416610daa5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b2103932bbb0b932103a37b5b2b760611b60448201526064016104cf565b60008311610df35760405162461bcd60e51b8152602060048201526016602482015275496e76616c696420756e626f6e64696e672074696d6560501b60448201526064016104cf565b60008211610e375760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964206d696e207374616b6560781b60448201526064016104cf565b610e3f6111bc565b610e476111eb565b609780546001600160a01b038088166001600160a01b03199283161790925560988054928716929091169190911790556099839055609a8290558015610ec7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610ed6610f44565b6001600160a01b038116610f3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104cf565b61088a8161116a565b6033546001600160a01b031633146109c75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104cf565b6040516001600160a01b0384811660248301528381166044830152606482018390526110059186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061121a565b50505050565b60026065540361105d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104cf565b6002606555565b6040516001600160a01b0383811660248301526044820183905261109591859182169063a9059cbb90606401610fd3565b505050565b6001606555565b6001600160a01b0381166000908152609e6020526040812080549091036110c6575050565b609c5460028201546000906110db9083611432565b9050806000036110eb5750505050565b6000670de0b6b3a76400008285600001546111069190611445565b611110919061145c565b905060006111236402540be4008361145c565b9050801561115e578085600301600082825461113f919061147e565b9250508190555080609d60008282546111589190611432565b90915550505b50505060029091015550565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166111e35760405162461bcd60e51b81526004016104cf906114d9565b6109c761128b565b600054610100900460ff166112125760405162461bcd60e51b81526004016104cf906114d9565b6109c76112bb565b600080602060008451602086016000885af18061123d576040513d6000823e3d81fd5b50506000513d91508115611255578060011415611262565b6001600160a01b0384163b155b1561100557604051635274afe760e01b81526001600160a01b03851660048201526024016104cf565b600054610100900460ff166112b25760405162461bcd60e51b81526004016104cf906114d9565b6109c73361116a565b600054610100900460ff1661109a5760405162461bcd60e51b81526004016104cf906114d9565b80356001600160a01b03811681146112f957600080fd5b919050565b60006020828403121561131057600080fd5b611319826112e2565b9392505050565b60006020828403121561133257600080fd5b5035919050565b6000806020838503121561134c57600080fd5b823567ffffffffffffffff81111561136357600080fd5b8301601f8101851361137457600080fd5b803567ffffffffffffffff81111561138b57600080fd5b8560208260051b84010111156113a057600080fd5b6020919091019590945092505050565b600080604083850312156113c357600080fd5b6113cc836112e2565b946020939093013593505050565b600080600080608085870312156113f057600080fd5b6113f9856112e2565b9350611407602086016112e2565b93969395505050506040820135916060013590565b634e487b7160e01b600052601160045260246000fd5b818103818111156109015761090161141c565b80820281158282048414176109015761090161141c565b60008261147957634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156109015761090161141c565b634e487b7160e01b600052603260045260246000fd5b6000600182016114b9576114b961141c565b5060010190565b6000602082840312156114d257600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea26469706673582212204cb20079cf6e27fb78f7f00c6b9cd23dec6164bca345dc9601aecae1e9c8868064736f6c634300081c0033608060405260405161041038038061041083398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220dcea5be7727728b321a6567a485cb0436c1c5ae9f51a138b242fa3b34ee7125c64736f6c634300081c0033a264697066735822122052b36a2fff1b2e01683b181edc7056e25ea82fb77e61e5d46b9319191cba0e5e64736f6c634300081c003360c060405234801561001057600080fd5b50604051610a14380380610a1483398101604081905261002f916100ea565b338061005557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61005e8161007e565b50600180556001600160a01b03928316608052911660a052600255610126565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100e557600080fd5b919050565b6000806000606084860312156100ff57600080fd5b610108846100ce565b9250610116602085016100ce565b9150604084015190509250925092565b60805160a05161089f6101756000396000818161012301528181610216015281816102af01526102d60152600081816101c60152818161028d015281816103ab01526104b5015261089f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637fabb2b21161008c578063a69df4b511610066578063a69df4b5146101b9578063b39c0bd6146101c1578063c4c77bda146101e8578063f2fde38b146101f057600080fd5b80637fabb2b21461017857806383694cf0146101955780638da5cb5b146101a857600080fd5b806359927044116100c8578063599270441461011e5780636ab28bc81461015d5780636e99d52f14610166578063715018a61461017057600080fd5b80631a8d949a146100ef578063251c1aa31461010b5780632526d96014610114575b600080fd5b6100f860025481565b6040519081526020015b60405180910390f35b6100f860045481565b61011c610203565b005b6101457f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610102565b6100f860035481565b6100f86212750081565b61011c610343565b6005546101859060ff1681565b6040519015158152602001610102565b61011c6101a33660046107f9565b610355565b6000546001600160a01b0316610145565b61011c610414565b6101457f000000000000000000000000000000000000000000000000000000000000000081565b61011c610522565b61011c6101fe366004610812565b6105fe565b61020b61063e565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461025457604051633146541560e01b815260040160405180910390fd5b60035460000361027757604051637821eecf60e11b815260040160405180910390fd5b6003805460009091556102d46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610668565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f7cc5928587a77e63d1ebaaf1787d7d3be3e99247fe1911f114df22196ec29af58260405161032f91815260200190565b60405180910390a25061034160018055565b565b61034b6106cc565b61034160006106f9565b61035d61063e565b6103656106cc565b8060000361038657604051637821eecf60e11b815260040160405180910390fd5b80600360008282546103989190610842565b909155506103d390506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084610749565b60405181815233907fbe5f14e7b1eb6f30fa11359637689973066e7022a639ac8da9d08a4ca76b4d8b9060200160405180910390a261041160018055565b50565b61041c61063e565b6104246106cc565b60055460ff1661044757604051635b89f32f60e11b815260040160405180910390fd5b60045442101561046a5760405163111bb2f160e31b815260040160405180910390fd5b60035460000361048d57604051637821eecf60e11b815260040160405180910390fd5b6003805460009091556104dc6104ab6000546001600160a01b031690565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083610668565b6000546001600160a01b03166001600160a01b03167f526feae8b9544a85d85696362d5f52bef82535afe21eb9782f5a4c393cb789048260405161032f91815260200190565b61052a61063e565b6105326106cc565b6002544210156105555760405163f6bc0a2960e01b815260040160405180910390fd5b60055460ff1615610579576040516305d89a4360e11b815260040160405180910390fd5b60035460000361059c57604051637821eecf60e11b815260040160405180910390fd5b6105a96212750042610842565b60048190556005805460ff191660011790556040517f02901e853899654221af46795765afdc65d7990718f4d2cf344120c336d83bbb916105ed9190815260200190565b60405180910390a161034160018055565b6106066106cc565b6001600160a01b03811661063557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610411816106f9565b60026001540361066157604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b6040516001600160a01b038381166024830152604482018390526106c791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610788565b505050565b6000546001600160a01b031633146103415760405163118cdaa760e01b815233600482015260240161062c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0384811660248301528381166044830152606482018390526107829186918216906323b872dd90608401610695565b50505050565b600080602060008451602086016000885af1806107ab576040513d6000823e3d81fd5b50506000513d915081156107c35780600114156107d0565b6001600160a01b0384163b155b1561078257604051635274afe760e01b81526001600160a01b038516600482015260240161062c565b60006020828403121561080b57600080fd5b5035919050565b60006020828403121561082457600080fd5b81356001600160a01b038116811461083b57600080fd5b9392505050565b8082018082111561086357634e487b7160e01b600052601160045260246000fd5b9291505056fea26469706673582212207e549f005df73b3cd1950c25a7281c9afb3a01eefc4179bc81547192ae6d4dfc64736f6c634300081c0033608060405234801561001057600080fd5b50604051610a6d380380610a6d83398101604081905261002f916100fe565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61006781610092565b5050600280546001600160a01b0319166001600160a01b03939093169290921790915560015561013a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100f957600080fd5b919050565b60008060006060848603121561011357600080fd5b61011c846100e2565b925060208401519150610131604085016100e2565b90509250925092565b610924806101496000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063715018a611610071578063715018a61461014e5780637f649783146101565780638ab1d681146101695780638da5cb5b1461017c578063ec10172d1461018d578063f2fde38b146101a257600080fd5b806329d645d6146100ae578063343365f6146100c35780633af32abf146100df578063420f68611461011b5780634f2582ed14610146575b600080fd5b6100c16100bc36600461078f565b6101b5565b005b6100cc60015481565b6040519081526020015b60405180910390f35b61010b6100ed3660046107a8565b6001600160a01b031660009081526004602052604090205460ff1690565b60405190151581526020016100d6565b60025461012e906001600160a01b031681565b6040516001600160a01b0390911681526020016100d6565b6100cc60c881565b6100c161023e565b6100c16101643660046107d8565b610252565b6100c16101773660046107a8565b6104a1565b6000546001600160a01b031661012e565b610195610672565b6040516100d6919061084f565b6100c16101b03660046107a8565b6106d4565b6000546001600160a01b031633148015906101db57506002546001600160a01b03163314155b156101f95760405163ea8e4eb560e01b815260040160405180910390fd5b600180549082905560408051828152602081018490527fae4200b26276622797f1ebfb6806e3cbd1911c353e24ec22225126d015db9b92910160405180910390a15050565b610246610712565b610250600061073f565b565b6000546001600160a01b0316331480159061027857506002546001600160a01b03163314155b156102965760405163ea8e4eb560e01b815260040160405180910390fd5b60c88111156102c757604051632948bf5b60e21b81526004810182905260c860248201526044015b60405180910390fd5b60005b8181101561049c5760008383838181106102e6576102e661089b565b90506020020160208101906102fb91906107a8565b6001600160a01b0316036103225760405163e6c4247b60e01b815260040160405180910390fd5b600460008484848181106103385761033861089b565b905060200201602081019061034d91906107a8565b6001600160a01b0316815260208101919091526040016000205460ff161561038857604051630f084ddf60e31b815260040160405180910390fd5b6001600460008585858181106103a0576103a061089b565b90506020020160208101906103b591906107a8565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905560038383838181106103f1576103f161089b565b905060200201602081019061040691906107a8565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b0390921691909117905582828281811061044a5761044a61089b565b905060200201602081019061045f91906107a8565b6001600160a01b03167fe463fa6bdecb16f96f58191d902152633214e760ea443684105a7eef1ad16b9d60405160405180910390a26001016102ca565b505050565b6000546001600160a01b031633148015906104c757506002546001600160a01b03163314155b156104e55760405163ea8e4eb560e01b815260040160405180910390fd5b6001600160a01b03811660009081526004602052604090205460ff1661051e5760405163ad7acb4760e01b815260040160405180910390fd5b6001600160a01b0381166000908152600460205260408120805460ff191690555b60035481101561063a57816001600160a01b0316600382815481106105665761056661089b565b6000918252602090912001546001600160a01b0316036106325760038054610590906001906108b1565b815481106105a0576105a061089b565b600091825260209091200154600380546001600160a01b0390921691839081106105cc576105cc61089b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600380548061060b5761060b6108d8565b600082815260209020810160001990810180546001600160a01b031916905501905561063a565b60010161053f565b506040516001600160a01b038216907fa6667e187c57c5b0fa4e1122a695ed0754287513bcb4901fa6c1f44ba22c018790600090a250565b606060038054806020026020016040519081016040528092919081815260200182805480156106ca57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106ac575b5050505050905090565b6106dc610712565b6001600160a01b03811661070657604051631e4fbdf760e01b8152600060048201526024016102be565b61070f8161073f565b50565b6000546001600160a01b031633146102505760405163118cdaa760e01b81523360048201526024016102be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156107a157600080fd5b5035919050565b6000602082840312156107ba57600080fd5b81356001600160a01b03811681146107d157600080fd5b9392505050565b600080602083850312156107eb57600080fd5b823567ffffffffffffffff81111561080257600080fd5b8301601f8101851361081357600080fd5b803567ffffffffffffffff81111561082a57600080fd5b8560208260051b840101111561083f57600080fd5b6020919091019590945092505050565b602080825282518282018190526000918401906040840190835b818110156108905783516001600160a01b0316835260209384019390920191600101610869565b509095945050505050565b634e487b7160e01b600052603260045260246000fd5b818103818111156108d257634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212206c0730d269ae14dd2d8cb147f0b6b968272ceee25090c072fb954d850e5d19bf64736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000067b0bc630000000000000000000000000000000000000000000000000000000067b4b0e3000000000000000000000000aa8d210f7c34a056bb573f15962673c5c24fbd10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058230e0c6918a018a28bf97185eff02c2edeb86000000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000009184e72a00000000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd00000000000000000000000003a520b32c04bf3beef7beb72e919cf822ed34f10000000000000000000000005f6a682a58854c7fbe228712aeeffccde0008ac0000000000000000000000000cbb7c0000ab88b473b1f5afd9ef808440eed33bf000000000000000000000000ad5b6c09a4edabb2c1be1ff4ab98ea59c4071fff000000000000000000000000255fb6c2854a48f6ddedf508d57450b143e2c601000000000000000000000000000000000000000000000000000000000000000b5949545a2054657374203600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045969743600000000000000000000000000000000000000000000000000000000