Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Change | 15761403 | 816 days ago | IN | 0 ETH | 0.0003377 | ||||
Change | 15761331 | 816 days ago | IN | 0 ETH | 0.00040026 | ||||
Lock Tokens | 15761259 | 816 days ago | IN | 0.09133 ETH | 0.00364678 | ||||
Change Token Add... | 15761242 | 816 days ago | IN | 0 ETH | 0.0005527 | ||||
Change Tokens To... | 15761232 | 816 days ago | IN | 0 ETH | 0.00035795 | ||||
Changeaddress | 15759566 | 816 days ago | IN | 0 ETH | 0.00050708 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15761259 | 816 days ago | 0.09133 ETH |
Loading...
Loading
Contract Name:
EthereumUniswapV2Locker
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-15 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File: ca.sol //SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.16; interface IUniswapV2Pair { function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); } interface IUniFactory { function getPair(address tokenA, address tokenB) external view returns (address); } interface IUniswapV2Router02 { function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); } contract EthereumUniswapV2Locker { constructor(IUniFactory factory, IUniswapV2Router02 uniswaprouter) { owner = msg.sender; uniswapFactory = factory; uniswapRouter = uniswaprouter; } modifier onlyOwner() { require(msg.sender == owner); _; } struct newLock { address lockowner; address lpaddress; uint256 unlockdate; uint256 lockamount; uint256 lockid; } struct fastLock { address tokenaddress1; address tokenaddress2; uint256 amount1Desired; uint256 amount2Desired; uint256 amount1Min; uint256 amount2Min; } struct fastLockETH { address tokenaddress; address owner; uint256 amountTokenDesired; uint256 amountTokenMin; uint256 amountETHMin; } address owner; address payable devaddr; IUniswapV2Router02 public uniswapRouter; address _uniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; IUniFactory public uniswapFactory; uint256 Full = 9133 ether; uint256 Eth = Full / 100000; address public delugeToken; uint256 public tokensToHold = 1000000; newLock[] public locks; mapping(address => uint256[]) public ownerLocks; mapping(address => uint256[]) public tokenLocks; mapping(address => uint256) public approvedTimeFastLock; mapping(address => bool) public approvedFastBurn; event lpLocked( address indexed tokenaddress, uint256 amount, uint256 unlocktime, address indexed owner, uint256 indexed locknumber ); event lpWithdrawn( address indexed tokenaddress, uint256 amount, address indexed owner, uint256 indexed locknumber ); event newLPadded(uint256 newLPamount, uint256 locknumber); event lockExtended(uint256 newTime, uint256 locknumber); event ownerUpdated(address newOwner, uint256 locknumber); event lpBurnt(uint256 locknumber, uint256 lockamount); event lpFastBurnt(address indexed lptoken, uint256 indexed liquidity); event newTimeApproved(address indexed _address, uint256 approvedTime); event fastBurnApproved(address _address); function change(uint256 newFull) external onlyOwner { require(50000 >= newFull); Full = newFull; } function changeTokenAddress(address newaddress) external onlyOwner { delugeToken = newaddress; } function changeaddress(address payable newaddress) external onlyOwner { devaddr = newaddress; } function changeTokensToHold(uint256 newamount) external onlyOwner { tokensToHold = newamount; } function lockTokens( address token, uint256 amount, uint256 locktime, address _owner ) external payable returns (uint256 _lockNumber) { require(amount > 0); require(locktime > 3599); if (IERC20(delugeToken).balanceOf(msg.sender) < tokensToHold) { require(msg.value == Eth); devaddr.transfer(Eth); } else { require(msg.value == 0); } require(IERC20(token).allowance(msg.sender, address(this)) >= amount); uint256 oldBalance = IERC20(token).balanceOf(address(this)); IERC20(token).transferFrom(msg.sender, address(this), amount); uint256 newBalance = IERC20(token).balanceOf(address(this)); require(oldBalance == newBalance - amount); uint256 lockNumber = locks.length; ownerLocks[_owner].push(lockNumber); tokenLocks[token].push(lockNumber); uint256 unlocktime = block.timestamp + locktime; newLock memory newlock; newlock.lockowner = _owner; newlock.lpaddress = token; newlock.unlockdate = unlocktime; newlock.lockamount = amount; newlock.lockid = lockNumber; locks.push(newlock); emit lpLocked(token, amount, unlocktime, _owner, lockNumber); return lockNumber; } function withdrawLP(uint256 lockNumber) external { require(msg.sender == locks[lockNumber].lockowner); require(block.timestamp >= locks[lockNumber].unlockdate); require(locks[lockNumber].lockamount > 0); IERC20(locks[lockNumber].lpaddress).transfer( msg.sender, locks[lockNumber].lockamount ); emit lpWithdrawn( locks[lockNumber].lpaddress, locks[lockNumber].lockamount, locks[lockNumber].lockowner, locks[lockNumber].lockid ); } function addNewLP(uint256 locknumber, uint256 amount) external { require(amount > 0); require(locks[locknumber].unlockdate > block.timestamp); require(msg.sender == locks[locknumber].lockowner); require( IERC20(locks[locknumber].lpaddress).allowance( msg.sender, address(this) ) >= amount ); IERC20(locks[locknumber].lpaddress).transferFrom( msg.sender, address(this), amount ); locks[locknumber].lockamount = locks[locknumber].lockamount + amount; emit newLPadded(amount, locknumber); } function extendLock(uint256 locknumber, uint256 newunlocktime) external { require(locks[locknumber].unlockdate > block.timestamp); require(msg.sender == locks[locknumber].lockowner); require(newunlocktime > locks[locknumber].unlockdate); locks[locknumber].unlockdate = newunlocktime; emit lockExtended(newunlocktime, locknumber); } function updateOwner(uint256 locknumber, address newowner) external { require(locks[locknumber].unlockdate > block.timestamp); require(msg.sender == locks[locknumber].lockowner); require(newowner != locks[locknumber].lockowner); locks[locknumber].lockowner = newowner; emit ownerUpdated(newowner, locknumber); } function burnLP(uint256 locknumber) external { require(msg.sender == locks[locknumber].lockowner); uint256 lockamount = locks[locknumber].lockamount; locks[locknumber].lockamount = 0; IERC20(locks[locknumber].lpaddress).transfer(address(0), lockamount); emit lpBurnt(locknumber, lockamount); } function approveCustomTime(uint256 approveTime) external { approvedTimeFastLock[msg.sender] = approveTime; emit newTimeApproved(msg.sender, approveTime); } function approve365DaysLock() external { approvedTimeFastLock[msg.sender] = 31536000; emit newTimeApproved(msg.sender, 31536000); } function approve180DaysLock() external { approvedTimeFastLock[msg.sender] = 15552000; emit newTimeApproved(msg.sender, 15552000); } function approve90DaysLock() external { approvedTimeFastLock[msg.sender] = 7776000; emit newTimeApproved(msg.sender, 7776000); } function approve30DaysLock() external { approvedTimeFastLock[msg.sender] = 2592000; emit newTimeApproved(msg.sender, 2592000); } function approve15DaysLock() external { approvedTimeFastLock[msg.sender] = 1296000; emit newTimeApproved(msg.sender, 1296000); } function approve7DaysLock() external { approvedTimeFastLock[msg.sender] = 604800; emit newTimeApproved(msg.sender, 604800); } function approve1DayLock() external { approvedTimeFastLock[msg.sender] = 86400; emit newTimeApproved(msg.sender, 86400); } function approveFastBurnLP() external { approvedFastBurn[msg.sender] = true; emit fastBurnApproved(msg.sender); } function fastLockLpWithTokens( address tokenaddress1, address tokenaddress2, uint256 amount1Desired, uint256 amount2Desired, uint256 amount1Min, uint256 amount2Min, address _owner ) public payable returns (uint256 _lockNumber) { require(amount1Desired > 0 && amount2Desired > 0); require( IERC20(tokenaddress1).allowance(msg.sender, address(this)) >= amount1Desired ); require( IERC20(tokenaddress2).allowance(msg.sender, address(this)) >= amount2Desired ); require(approvedTimeFastLock[msg.sender] > 3599); if (IERC20(delugeToken).balanceOf(msg.sender) < tokensToHold) { require(msg.value == Eth); devaddr.transfer(Eth); } else { require(msg.value == 0); } fastLock memory fastlock; fastlock.tokenaddress1 = tokenaddress1; fastlock.tokenaddress2 = tokenaddress2; fastlock.amount1Desired = amount1Desired; fastlock.amount2Desired = amount2Desired; fastlock.amount1Min = amount1Min; fastlock.amount2Min = amount2Min; uint256 oldBalance1 = IERC20(tokenaddress1).balanceOf(address(this)); uint256 oldBalance2 = IERC20(tokenaddress2).balanceOf(address(this)); IERC20(tokenaddress1).transferFrom( msg.sender, address(this), amount1Desired ); IERC20(tokenaddress2).transferFrom( msg.sender, address(this), amount2Desired ); uint256 newBalance1 = IERC20(tokenaddress1).balanceOf(address(this)); uint256 newBalance2 = IERC20(tokenaddress2).balanceOf(address(this)); require( oldBalance1 == newBalance1 - amount1Desired && oldBalance2 == newBalance2 - amount2Desired ); IERC20(fastlock.tokenaddress1).approve(_uniswapRouter, amount1Desired); IERC20(fastlock.tokenaddress2).approve(_uniswapRouter, amount2Desired); (, , uint256 liquidity) = uniswapRouter.addLiquidity( fastlock.tokenaddress1, fastlock.tokenaddress2, fastlock.amount1Desired, fastlock.amount2Desired, fastlock.amount1Min, fastlock.amount2Min, address(this), block.timestamp ); if (IERC20(tokenaddress1).balanceOf(address(this)) > oldBalance1) { IERC20(tokenaddress1).transfer( msg.sender, IERC20(fastlock.tokenaddress1).balanceOf(address(this)) - oldBalance1 ); } if (IERC20(tokenaddress2).balanceOf(address(this)) > oldBalance2) { IERC20(tokenaddress2).transfer( msg.sender, IERC20(fastlock.tokenaddress2).balanceOf(address(this)) - oldBalance2 ); } address lptoken = uniswapFactory.getPair( fastlock.tokenaddress1, fastlock.tokenaddress2 ); uint256 locktime = approvedTimeFastLock[msg.sender]; approvedTimeFastLock[msg.sender] = 0; uint256 unlocktime = block.timestamp + locktime; uint256 lockNumber = locks.length; ownerLocks[_owner].push(lockNumber); tokenLocks[lptoken].push(lockNumber); newLock memory newlock; newlock.lockowner = _owner; newlock.lpaddress = lptoken; newlock.unlockdate = unlocktime; newlock.lockamount = liquidity; newlock.lockid = lockNumber; locks.push(newlock); emit lpLocked(lptoken, liquidity, unlocktime, _owner, lockNumber); return lockNumber; } function fastLockLPWithETH( address tokenaddress, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address _owner ) public payable returns (uint256 _lockNumber) { require(amountTokenDesired > 0); require( IERC20(tokenaddress).allowance(msg.sender, address(this)) >= amountTokenDesired ); require(approvedTimeFastLock[msg.sender] > 3599); uint256 ETHForLP; if (IERC20(delugeToken).balanceOf(msg.sender) < tokensToHold) { require(msg.value > Eth); devaddr.transfer(Eth); ETHForLP = msg.value - Eth; } else { ETHForLP = msg.value; } fastLockETH memory fastlocketh; fastlocketh.tokenaddress = tokenaddress; fastlocketh.owner = _owner; fastlocketh.amountTokenDesired = amountTokenDesired; fastlocketh.amountTokenMin = amountTokenMin; fastlocketh.amountETHMin = amountETHMin; uint256 oldBalance = IERC20(tokenaddress).balanceOf(address(this)); IERC20(tokenaddress).transferFrom( msg.sender, address(this), amountTokenDesired ); uint256 newBalance = IERC20(tokenaddress).balanceOf(address(this)); require(oldBalance == newBalance - amountTokenDesired); address payable msgsender = payable(msg.sender); uint256 oldBalanceETH = address(this).balance - ETHForLP; IERC20(tokenaddress).approve(_uniswapRouter, amountTokenDesired); (, , uint256 liquidity) = uniswapRouter.addLiquidityETH{ value: ETHForLP }( fastlocketh.tokenaddress, fastlocketh.amountTokenDesired, fastlocketh.amountTokenMin, fastlocketh.amountETHMin, address(this), block.timestamp ); uint256 newBalanceETH = address(this).balance; if (newBalanceETH > oldBalanceETH) { msgsender.transfer(newBalanceETH - oldBalanceETH); } if (IERC20(tokenaddress).balanceOf(address(this)) > oldBalance) { IERC20(tokenaddress).transfer( msg.sender, IERC20(fastlocketh.tokenaddress).balanceOf(address(this)) - oldBalance ); } address lptoken = uniswapFactory.getPair( fastlocketh.tokenaddress, 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 ); uint256 locktime = approvedTimeFastLock[msg.sender]; approvedTimeFastLock[msg.sender] = 0; uint256 unlocktime = block.timestamp + locktime; uint256 lockNumber = locks.length; ownerLocks[fastlocketh.owner].push(lockNumber); tokenLocks[lptoken].push(lockNumber); newLock memory newlock; newlock.lockowner = _owner; newlock.lpaddress = lptoken; newlock.unlockdate = unlocktime; newlock.lockamount = liquidity; newlock.lockid = lockNumber; locks.push(newlock); emit lpLocked(lptoken, liquidity, unlocktime, _owner, lockNumber); return lockNumber; } function fastBurnLPWithETH( address tokenaddress, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin ) public payable { require(amountTokenDesired > 0); require( IERC20(tokenaddress).allowance(msg.sender, address(this)) >= amountTokenDesired ); uint256 ETHForLP; if (IERC20(delugeToken).balanceOf(msg.sender) < tokensToHold) { require(msg.value > Eth); devaddr.transfer(Eth); ETHForLP = msg.value - Eth; } else { ETHForLP = msg.value; } require(approvedFastBurn[msg.sender] == true); uint256 oldBalance = IERC20(tokenaddress).balanceOf(address(this)); IERC20(tokenaddress).transferFrom( msg.sender, address(this), amountTokenDesired ); uint256 newBalance = IERC20(tokenaddress).balanceOf(address(this)); require(oldBalance == newBalance - amountTokenDesired); address payable msgsender = payable(msg.sender); uint256 oldBalanceETH = address(this).balance - ETHForLP; IERC20(tokenaddress).approve(_uniswapRouter, amountTokenDesired); (, , uint256 liquidity) = uniswapRouter.addLiquidityETH{ value: ETHForLP }( tokenaddress, amountTokenDesired, amountTokenMin, amountETHMin, address(0), block.timestamp ); uint256 newBalanceETH = address(this).balance; if (newBalanceETH > oldBalanceETH) { msgsender.transfer(newBalanceETH - oldBalanceETH); } if (IERC20(tokenaddress).balanceOf(address(this)) > oldBalance) { IERC20(tokenaddress).transfer( msg.sender, IERC20(tokenaddress).balanceOf(address(this)) - oldBalance ); } address lptoken = uniswapFactory.getPair( tokenaddress, 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 ); approvedFastBurn[msg.sender] = false; emit lpFastBurnt(lptoken, liquidity); } function fastBurnLpWithTokens( address tokenaddress1, address tokenaddress2, uint256 amount1Desired, uint256 amount2Desired, uint256 amount1Min, uint256 amount2Min ) public payable { require(amount1Desired > 0 && amount2Desired > 0); require( IERC20(tokenaddress1).allowance(msg.sender, address(this)) >= amount1Desired ); require( IERC20(tokenaddress2).allowance(msg.sender, address(this)) >= amount2Desired ); require(approvedFastBurn[msg.sender] == true); if (IERC20(delugeToken).balanceOf(msg.sender) < tokensToHold) { require(msg.value == Eth); devaddr.transfer(Eth); } else { require(msg.value == 0); } uint256 oldBalance1 = IERC20(tokenaddress1).balanceOf(address(this)); uint256 oldBalance2 = IERC20(tokenaddress2).balanceOf(address(this)); IERC20(tokenaddress1).transferFrom( msg.sender, address(this), amount1Desired ); IERC20(tokenaddress2).transferFrom( msg.sender, address(this), amount2Desired ); uint256 newBalance1 = IERC20(tokenaddress1).balanceOf(address(this)); uint256 newBalance2 = IERC20(tokenaddress2).balanceOf(address(this)); require( oldBalance1 == newBalance1 - amount1Desired && oldBalance2 == newBalance2 - amount2Desired ); IERC20(tokenaddress1).approve(_uniswapRouter, amount1Desired); IERC20(tokenaddress2).approve(_uniswapRouter, amount2Desired); (, , uint256 liquidity) = uniswapRouter.addLiquidity( tokenaddress1, tokenaddress2, amount1Desired, amount2Desired, amount1Min, amount2Min, address(0), block.timestamp ); if (IERC20(tokenaddress1).balanceOf(address(this)) > oldBalance1) { IERC20(tokenaddress1).transfer( msg.sender, IERC20(tokenaddress1).balanceOf(address(this)) - oldBalance1 ); } if (IERC20(tokenaddress2).balanceOf(address(this)) > oldBalance2) { IERC20(tokenaddress2).transfer( msg.sender, IERC20(tokenaddress2).balanceOf(address(this)) - oldBalance2 ); } address lptoken = uniswapFactory.getPair(tokenaddress1, tokenaddress2); approvedFastBurn[msg.sender] = false; emit lpFastBurnt(lptoken, liquidity); } function getLocksByOwnerAddress(address addr) external view returns (uint256[] memory) { return ownerLocks[addr]; } function getUserApprovedFastBurn(address addr) external view returns (bool) { return approvedFastBurn[addr]; } function getUserApprovedFastLock(address addr) external view returns (uint256) { return approvedTimeFastLock[addr]; } function getLocksByTokenAddress(address addr) external view returns (uint256[] memory) { return tokenLocks[addr]; } function getLockNumber() external view returns (uint256) { return locks.length; } function getLockInfo(uint256 lockNumber) external view returns ( address lockowner, address lpaddress, uint256 unlockdate, uint256 lockamount ) { (lockowner) = locks[lockNumber].lockowner; (lpaddress) = locks[lockNumber].lpaddress; (unlockdate) = locks[lockNumber].unlockdate; (lockamount) = locks[lockNumber].lockamount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IUniFactory","name":"factory","type":"address"},{"internalType":"contract IUniswapV2Router02","name":"uniswaprouter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"fastBurnApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"locknumber","type":"uint256"}],"name":"lockExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"locknumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lockamount","type":"uint256"}],"name":"lpBurnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"lptoken","type":"address"},{"indexed":true,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"lpFastBurnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenaddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlocktime","type":"uint256"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"locknumber","type":"uint256"}],"name":"lpLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenaddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"locknumber","type":"uint256"}],"name":"lpWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newLPamount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"locknumber","type":"uint256"}],"name":"newLPadded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"approvedTime","type":"uint256"}],"name":"newTimeApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"},{"indexed":false,"internalType":"uint256","name":"locknumber","type":"uint256"}],"name":"ownerUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"locknumber","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addNewLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approve15DaysLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approve180DaysLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approve1DayLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approve30DaysLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approve365DaysLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approve7DaysLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approve90DaysLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"approveTime","type":"uint256"}],"name":"approveCustomTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveFastBurnLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"approvedFastBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"approvedTimeFastLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"locknumber","type":"uint256"}],"name":"burnLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFull","type":"uint256"}],"name":"change","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newaddress","type":"address"}],"name":"changeTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newamount","type":"uint256"}],"name":"changeTokensToHold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newaddress","type":"address"}],"name":"changeaddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delugeToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"locknumber","type":"uint256"},{"internalType":"uint256","name":"newunlocktime","type":"uint256"}],"name":"extendLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenaddress","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"}],"name":"fastBurnLPWithETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenaddress1","type":"address"},{"internalType":"address","name":"tokenaddress2","type":"address"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount2Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"uint256","name":"amount2Min","type":"uint256"}],"name":"fastBurnLpWithTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenaddress","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"name":"fastLockLPWithETH","outputs":[{"internalType":"uint256","name":"_lockNumber","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenaddress1","type":"address"},{"internalType":"address","name":"tokenaddress2","type":"address"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount2Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"uint256","name":"amount2Min","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"name":"fastLockLpWithTokens","outputs":[{"internalType":"uint256","name":"_lockNumber","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockNumber","type":"uint256"}],"name":"getLockInfo","outputs":[{"internalType":"address","name":"lockowner","type":"address"},{"internalType":"address","name":"lpaddress","type":"address"},{"internalType":"uint256","name":"unlockdate","type":"uint256"},{"internalType":"uint256","name":"lockamount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getLocksByOwnerAddress","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getLocksByTokenAddress","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getUserApprovedFastBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getUserApprovedFastLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"locktime","type":"uint256"},{"internalType":"address","name":"_owner","type":"address"}],"name":"lockTokens","outputs":[{"internalType":"uint256","name":"_lockNumber","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"locks","outputs":[{"internalType":"address","name":"lockowner","type":"address"},{"internalType":"address","name":"lpaddress","type":"address"},{"internalType":"uint256","name":"unlockdate","type":"uint256"},{"internalType":"uint256","name":"lockamount","type":"uint256"},{"internalType":"uint256","name":"lockid","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerLocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenLocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensToHold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapFactory","outputs":[{"internalType":"contract IUniFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"locknumber","type":"uint256"},{"internalType":"address","name":"newowner","type":"address"}],"name":"updateOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lockNumber","type":"uint256"}],"name":"withdrawLP","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556901ef19d6074aca94000060058190556200004a90620186a090620000c1565b600655620f42406008553480156200006157600080fd5b50604051620053b8380380620053b88339810160408190526200008491620000fd565b600080546001600160a01b03199081163317909155600480546001600160a01b03948516908316179055600280549290931691161790556200013c565b600082620000df57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b0381168114620000fa57600080fd5b50565b600080604083850312156200011157600080fd5b82516200011e81620000e4565b60208401519092506200013181620000e4565b809150509250929050565b61526c806200014c6000396000f3fe6080604052600436106102855760003560e01c80638a4c9d0111610153578063ccebfa3f116100cb578063ed58cbad1161007f578063f656bab411610064578063f656bab414610786578063fa4662fd146107b6578063fc5ab0b0146107cb57600080fd5b8063ed58cbad14610706578063f4dadc611461072657600080fd5b8063e4456ecb116100b0578063e4456ecb146106a4578063eb5805e1146106c4578063ec924139146106d957600080fd5b8063ccebfa3f1461066f578063d50c78a21461068f57600080fd5b8063b0c8b5c911610122578063c6ef206111610107578063c6ef2061146105d7578063c9102afd146105f7578063c9cda91f1461064f57600080fd5b8063b0c8b5c91461056c578063bdc36114146105c257600080fd5b80638a4c9d01146105025780638bdb2afa14610515578063a42a0d7314610542578063b09042df1461055757600080fd5b806345d1b3bf11610201578063735de9f7116101b5578063754a27c11161019a578063754a27c1146104af578063774164d9146104cf5780637d0039b2146104e257600080fd5b8063735de9f71461043d57806375322e471461048f57600080fd5b80635f49aad7116101e65780635f49aad7146103f257806363bc4443146104075780637192711f1461041d57600080fd5b806345d1b3bf1461039a578063494d0ce0146103dd57600080fd5b8063279c160e116102585780633b4965b01161023d5780633b4965b0146103545780633b5cc0bc146103745780633cff666b1461038757600080fd5b8063279c160e146103075780632b30b8251461033457600080fd5b8063066161821461028a578063070d66bf146102a15780630aa393f3146102c15780631fb9d142146102e7575b600080fd5b34801561029657600080fd5b5061029f6107f8565b005b3480156102ad57600080fd5b5061029f6102bc366004614e5c565b610846565b6102d46102cf366004614ea3565b61095a565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b5061029f610302366004614eed565b610f50565b34801561031357600080fd5b50610327610322366004614eed565b610fbb565b6040516102de9190614f11565b34801561034057600080fd5b5061032761034f366004614eed565b611034565b34801561036057600080fd5b5061029f61036f366004614e5c565b6110ab565b61029f610382366004614f55565b61134d565b6102d4610395366004614f90565b611bcf565b3480156103a657600080fd5b506102d46103b5366004614eed565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602052604090205490565b3480156103e957600080fd5b5061029f612719565b3480156103fe57600080fd5b5061029f612761565b34801561041357600080fd5b506102d460085481565b34801561042957600080fd5b5061029f610438366004614fe6565b6127a9565b34801561044957600080fd5b5060025461046a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102de565b34801561049b57600080fd5b5061029f6104aa366004615016565b612903565b3480156104bb57600080fd5b5061029f6104ca366004615016565b61293b565b6102d46104dd36600461502f565b612964565b3480156104ee57600080fd5b5061029f6104fd366004615016565b613916565b61029f6105103660046150a1565b613965565b34801561052157600080fd5b5060045461046a9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561054e57600080fd5b5061029f614669565b34801561056357600080fd5b5061029f6146d7565b34801561057857600080fd5b506105b2610587366004614eed565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205460ff1690565b60405190151581526020016102de565b3480156105ce57600080fd5b5061029f61471f565b3480156105e357600080fd5b5061029f6105f2366004615016565b614767565b34801561060357600080fd5b50610617610612366004615016565b6148f5565b6040805173ffffffffffffffffffffffffffffffffffffffff95861681529490931660208501529183015260608201526080016102de565b34801561065b57600080fd5b5061029f61066a366004614eed565b6149d7565b34801561067b57600080fd5b506102d461068a3660046150fa565b614a42565b34801561069b57600080fd5b506009546102d4565b3480156106b057600080fd5b5061029f6106bf366004615016565b614a73565b3480156106d057600080fd5b5061029f614d55565b3480156106e557600080fd5b5060075461046a9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561071257600080fd5b506102d46107213660046150fa565b614d9e565b34801561073257600080fd5b50610746610741366004615016565b614dba565b6040805173ffffffffffffffffffffffffffffffffffffffff9687168152959094166020860152928401919091526060830152608082015260a0016102de565b34801561079257600080fd5b506105b26107a1366004614eed565b600d6020526000908152604090205460ff1681565b3480156107c257600080fd5b5061029f614e14565b3480156107d757600080fd5b506102d46107e6366004614eed565b600c6020526000908152604090205481565b336000818152600c602090815260409182902062093a809081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca43691015b60405180910390a2565b426009838154811061085a5761085a615126565b9060005260206000209060050201600201541161087657600080fd5b6009828154811061088957610889615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff1633146108bb57600080fd5b600982815481106108ce576108ce615126565b90600052602060002090600502016002015481116108eb57600080fd5b80600983815481106108ff576108ff615126565b9060005260206000209060050201600201819055507fea01a0e8a9700b245bbb63ee3ef23b07df2c41f2d08f77ef5bd17696f49bdfa5818360405161094e929190918252602082015260400190565b60405180910390a15050565b600080841161096857600080fd5b610e0f831161097657600080fd5b6008546007546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156109e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0b9190615155565b1015610a6e576006543414610a1f57600080fd5b60015460065460405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f19350505050158015610a68573d6000803e3d6000fd5b50610a79565b3415610a7957600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152849073ffffffffffffffffffffffffffffffffffffffff87169063dd62ed3e90604401602060405180830381865afa158015610aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0f9190615155565b1015610b1a57600080fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa158015610b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bab9190615155565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905290915073ffffffffffffffffffffffffffffffffffffffff8716906323b872dd906064016020604051808303816000875af1158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b919061516e565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd9190615155565b9050610ce986826151bf565b8214610cf457600080fd5b60095473ffffffffffffffffffffffffffffffffffffffff8086166000908152600a6020908152604080832080546001818101835591855283852001869055938c168352600b825282208054938401815582528120909101829055610d5987426151d8565b9050610db96040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b73ffffffffffffffffffffffffffffffffffffffff8088168083528b8216602084018181526040808601878152606087018f8152608088018a815260098054600181018255600091909152895160059091027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054928b167fffffffffffffffffffffffff000000000000000000000000000000000000000093841617905595517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b08701805491909a1691161790975590517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b1840155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b283015593517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b39091015591518592907fc29bd8befe207dd4b148f89e3d5a8aa08f0510f6671b784f80b5a99893a03bc290610f3a908e908890918252602082015260400190565b60405180910390a4509098975050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f7457600080fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602090815260409182902080548351818402810184019094528084526060939283018282801561102857602002820191906000526020600020905b815481526020019060010190808311611014575b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602090815260409182902080548351818402810184019094528084526060939283018282801561102857602002820191906000526020600020908154815260200190600101908083116110145750505050509050919050565b600081116110b857600080fd5b42600983815481106110cc576110cc615126565b906000526020600020906005020160020154116110e857600080fd5b600982815481106110fb576110fb615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff16331461112d57600080fd5b806009838154811061114157611141615126565b60009182526020909120600590910201600101546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015273ffffffffffffffffffffffffffffffffffffffff9091169063dd62ed3e90604401602060405180830381865afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190615155565b10156111f557600080fd5b6009828154811061120857611208615126565b60009182526020909120600590910201600101546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810183905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba919061516e565b5080600983815481106112cf576112cf615126565b9060005260206000209060050201600301546112eb91906151d8565b600983815481106112fe576112fe615126565b9060005260206000209060050201600301819055507fdc8bd6103a9b0cf120d7228c7dfb5baecadc91faa17121fbf078484aecf3dee6818360405161094e929190918252602082015260400190565b6000831161135a57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152839073ffffffffffffffffffffffffffffffffffffffff86169063dd62ed3e90604401602060405180830381865afa1580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f09190615155565b10156113fb57600080fd5b6008546007546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561146e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114929190615155565b10156115045760065434116114a657600080fd5b60015460065460405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156114ef573d6000803e3d6000fd5b506006546114fd90346151bf565b9050611507565b50345b336000908152600d602052604090205460ff16151560011461152857600080fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa158015611595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190615155565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905290915073ffffffffffffffffffffffffffffffffffffffff8716906323b872dd906064016020604051808303816000875af1158015611635573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611659919061516e565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa1580156116c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116eb9190615155565b90506116f786826151bf565b821461170257600080fd5b33600061170f85476151bf565b6003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018b90529192508a169063095ea7b3906044016020604051808303816000875af115801561178a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ae919061516e565b506002546040517ff305d71900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152602482018b9052604482018a9052606482018990526000608483018190524260a484015292169063f305d71990889060c40160606040518083038185885af1158015611845573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061186a91906151eb565b925047915050828111156118c65773ffffffffffffffffffffffffffffffffffffffff84166108fc61189c85846151bf565b6040518115909202916000818181858888f193505050501580156118c4573d6000803e3d6000fd5b505b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152869073ffffffffffffffffffffffffffffffffffffffff8d16906370a0823190602401602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119569190615155565b1115611a96576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8c169063a9059cbb903390899084906370a0823190602401602060405180830381865afa1580156119d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f69190615155565b611a0091906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015611a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a94919061516e565b505b600480546040517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e81169382019390935273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526000929091169063e6a4390590604401602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a9190615219565b336000908152600d602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551919250849173ffffffffffffffffffffffffffffffffffffffff8416917f72616fa9fca23361b4342aeb2f118af149d92e645c558e75de9f0de09ffa757491a3505050505050505050505050565b6000808511611bdd57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152859073ffffffffffffffffffffffffffffffffffffffff88169063dd62ed3e90604401602060405180830381865afa158015611c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c739190615155565b1015611c7e57600080fd5b336000908152600c6020526040902054610e0f10611c9b57600080fd5b6008546007546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d329190615155565b1015611da4576006543411611d4657600080fd5b60015460065460405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f19350505050158015611d8f573d6000803e3d6000fd5b50600654611d9d90346151bf565b9050611da7565b50345b611e056040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b73ffffffffffffffffffffffffffffffffffffffff888116808352908516602083015260408083018990526060830188905260808301879052517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091906370a0823190602401602060405180830381865afa158015611e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb69190615155565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018a905290915073ffffffffffffffffffffffffffffffffffffffff8a16906323b872dd906064016020604051808303816000875af1158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f56919061516e565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8b16906370a0823190602401602060405180830381865afa158015611fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe89190615155565b9050611ff489826151bf565b8214611fff57600080fd5b33600061200c86476151bf565b6003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018e90529192508d169063095ea7b3906044016020604051808303816000875af1158015612087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ab919061516e565b506002548551604080880151606089015160808a015192517ff305d71900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff94851660048201526024810192909252604482015260648101919091523060848201524260a4820152600092919091169063f305d71990899060c40160606040518083038185885af1158015612155573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061217a91906151eb565b925047915050828111156121d65773ffffffffffffffffffffffffffffffffffffffff84166108fc6121ac85846151bf565b6040518115909202916000818181858888f193505050501580156121d4573d6000803e3d6000fd5b505b858e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161222c919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015612249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226d9190615155565b11156123cb578d73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33888a6000015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016122ea919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015612307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232b9190615155565b61233591906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156123a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c9919061516e565b505b6004805488516040517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182169381019390935273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602484015260009291169063e6a4390590604401602060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190615219565b336000908152600c602052604081208054908290559192506124a282426151d8565b6009546020808d015173ffffffffffffffffffffffffffffffffffffffff9081166000908152600a83526040808220805460018181018355918452858420018690559289168252600b8452808220805493840181558252838220909201849055815160a081018352818152928301819052908201819052606082018190526080820152919250908e816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828160400181815250508681606001818152505081816080018181525050600981908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030155608082015181600401555050818f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fc29bd8befe207dd4b148f89e3d5a8aa08f0510f6671b784f80b5a99893a03bc28a876040516126fa929190918252602082015260400190565b60405180910390a4509b50505050505050505050505095945050505050565b336000818152600c602090815260409182902062278d009081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b336000818152600c6020908152604091829020620151809081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b42600983815481106127bd576127bd615126565b906000526020600020906005020160020154116127d957600080fd5b600982815481106127ec576127ec615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff16331461281e57600080fd5b6009828154811061283157612831615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff9081169082160361286757600080fd5b806009838154811061287b5761287b615126565b60009182526020918290206005919091020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9384161790556040805192841683529082018490527f1934dcddceb8f14180aebb1e7b1987cc6f6f493725ca0bb8efe99f631c7a6674910161094e565b60005473ffffffffffffffffffffffffffffffffffffffff16331461292757600080fd5b8061c350101561293657600080fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff16331461295f57600080fd5b600855565b600080861180156129755750600085115b61297e57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152869073ffffffffffffffffffffffffffffffffffffffff8a169063dd62ed3e90604401602060405180830381865afa1580156129f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a149190615155565b1015612a1f57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152859073ffffffffffffffffffffffffffffffffffffffff89169063dd62ed3e90604401602060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190615155565b1015612ac057600080fd5b336000908152600c6020526040902054610e0f10612add57600080fd5b6008546007546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b729190615155565b1015612bd5576006543414612b8657600080fd5b60015460065460405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f19350505050158015612bcf573d6000803e3d6000fd5b50612be0565b3415612be057600080fd5b612c456040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b73ffffffffffffffffffffffffffffffffffffffff89811680835290891660208301526040808301899052606083018890526080830187905260a08301869052517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091906370a0823190602401602060405180830381865afa158015612cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfd9190615155565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8b16906370a0823190602401602060405180830381865afa158015612d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d919190615155565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018b905290915073ffffffffffffffffffffffffffffffffffffffff8c16906323b872dd906064016020604051808303816000875af1158015612e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e31919061516e565b506040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810189905273ffffffffffffffffffffffffffffffffffffffff8b16906323b872dd906064016020604051808303816000875af1158015612eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecf919061516e565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8d16906370a0823190602401602060405180830381865afa158015612f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f619190615155565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8d16906370a0823190602401602060405180830381865afa158015612fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff59190615155565b90506130018b836151bf565b8414801561301757506130148a826151bf565b83145b61302057600080fd5b84516003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018e905291169063095ea7b3906044016020604051808303816000875af115801561309a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130be919061516e565b5060208501516003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018d905291169063095ea7b3906044016020604051808303816000875af115801561313c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613160919061516e565b506002548551602087015160408089015160608a015160808b015160a08c015193517fe8e3370000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9687166004820152948616602486015260448501929092526064840152608483015260a48201523060c48201524260e4820152600092919091169063e8e3370090610104016060604051808303816000875af115801561321e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324291906151eb565b92505050848e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161329c919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa1580156132b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132dd9190615155565b111561343b578d73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3387896000015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161335a919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015613377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339b9190615155565b6133a591906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015613415573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613439919061516e565b505b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152849073ffffffffffffffffffffffffffffffffffffffff8f16906370a0823190602401602060405180830381865afa1580156134a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134cb9190615155565b1115613629578c73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3386896020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613548919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015613565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135899190615155565b61359391906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015613603573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613627919061516e565b505b60048054875160208901516040517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316948101949094528116602484015260009291169063e6a4390590604401602060405180830381865afa1580156136ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d09190615219565b336000908152600c602052604081208054908290559192506136f282426151d8565b60095473ffffffffffffffffffffffffffffffffffffffff808e166000908152600a60209081526040808320805460018181018355918552838520018690559389168352600b8252808320805494850181558352818320909301849055825160a0810184528281529081018290529182018190526060820181905260808201529192509073ffffffffffffffffffffffffffffffffffffffff808e16808352868216602084018181526040808601888152606087018c81526080880189815260098054600181018255600091909152895160059091027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054928b167fffffffffffffffffffffffff000000000000000000000000000000000000000093841617905595517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b08701805491909a1691161790975590517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b1840155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b283015593517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b39091015591518492907fc29bd8befe207dd4b148f89e3d5a8aa08f0510f6671b784f80b5a99893a03bc2906138f7908b908990918252602082015260400190565b60405180910390a4509950505050505050505050979650505050505050565b336000818152600c602052604090819020839055517fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca4369061395a9084815260200190565b60405180910390a250565b6000841180156139755750600083115b61397e57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152849073ffffffffffffffffffffffffffffffffffffffff88169063dd62ed3e90604401602060405180830381865afa1580156139f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a149190615155565b1015613a1f57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152839073ffffffffffffffffffffffffffffffffffffffff87169063dd62ed3e90604401602060405180830381865afa158015613a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab59190615155565b1015613ac057600080fd5b336000908152600d602052604090205460ff161515600114613ae157600080fd5b6008546007546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b769190615155565b1015613bd9576006543414613b8a57600080fd5b60015460065460405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f19350505050158015613bd3573d6000803e3d6000fd5b50613be4565b3415613be457600080fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015613c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c759190615155565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015613ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d099190615155565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810188905290915073ffffffffffffffffffffffffffffffffffffffff8916906323b872dd906064016020604051808303816000875af1158015613d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da9919061516e565b506040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810186905273ffffffffffffffffffffffffffffffffffffffff8816906323b872dd906064016020604051808303816000875af1158015613e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e47919061516e565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8a16906370a0823190602401602060405180830381865afa158015613eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed99190615155565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8a16906370a0823190602401602060405180830381865afa158015613f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6d9190615155565b9050613f7988836151bf565b84148015613f8f5750613f8c87826151bf565b83145b613f9857600080fd5b6003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018a9052908b169063095ea7b3906044016020604051808303816000875af1158015614011573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614035919061516e565b506003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101899052908a169063095ea7b3906044016020604051808303816000875af11580156140af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140d3919061516e565b506002546040517fe8e3370000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301528b81166024830152604482018b9052606482018a90526084820189905260a48201889052600060c483018190524260e484015292169063e8e3370090610104016060604051808303816000875af1158015614179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419d91906151eb565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290935087925073ffffffffffffffffffffffffffffffffffffffff8e1691506370a0823190602401602060405180830381865afa15801561420e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142329190615155565b1115614372576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8c169063a9059cbb903390889084906370a0823190602401602060405180830381865afa1580156142ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d29190615155565b6142dc91906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af115801561434c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614370919061516e565b505b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152849073ffffffffffffffffffffffffffffffffffffffff8c16906370a0823190602401602060405180830381865afa1580156143de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144029190615155565b1115614542576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8b169063a9059cbb903390879084906370a0823190602401602060405180830381865afa15801561447e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a29190615155565b6144ac91906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af115801561451c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614540919061516e565b505b600480546040517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e8116938201939093528c831660248201526000929091169063e6a4390590604401602060405180830381865afa1580156145c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145e49190615219565b336000908152600d602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551919250839173ffffffffffffffffffffffffffffffffffffffff8416917f72616fa9fca23361b4342aeb2f118af149d92e645c558e75de9f0de09ffa757491a3505050505050505050505050565b336000818152600d602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f6ff44f0d46ced74f7e97dfe9b22d2a78845a337b62237da7d2c86a233b153660910160405180910390a1565b336000818152600c60209081526040918290206213c6809081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b336000818152600c60209081526040918290206276a7009081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b6009818154811061477a5761477a615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff1633146147ac57600080fd5b6000600982815481106147c1576147c1615126565b90600052602060002090600502016003015490506000600983815481106147ea576147ea615126565b9060005260206000209060050201600301819055506009828154811061481257614812615126565b60009182526020822060059190910201600101546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815260048101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303816000875af115801561489a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148be919061516e565b5060408051838152602081018390527f58e42e7e9d1be93bdaf77f261e5db694ec76510be49d10adb90143fe4cd91262910161094e565b6000806000806009858154811061490e5761490e615126565b60009182526020909120600590910201546009805473ffffffffffffffffffffffffffffffffffffffff9092169550908690811061494e5761494e615126565b906000526020600020906005020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506009858154811061499557614995615126565b9060005260206000209060050201600201549150600985815481106149bc576149bc615126565b90600052602060002090600502016003015490509193509193565b60005473ffffffffffffffffffffffffffffffffffffffff1633146149fb57600080fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600b6020528160005260406000208181548110614a5e57600080fd5b90600052602060002001600091509150505481565b60098181548110614a8657614a86615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff163314614ab857600080fd5b60098181548110614acb57614acb615126565b906000526020600020906005020160020154421015614ae957600080fd5b600060098281548110614afe57614afe615126565b90600052602060002090600502016003015411614b1a57600080fd5b60098181548110614b2d57614b2d615126565b906000526020600020906005020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360098481548110614b8e57614b8e615126565b60009182526020909120600360059092020101546040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015614c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c36919061516e565b5060098181548110614c4a57614c4a615126565b90600052602060002090600502016004015460098281548110614c6f57614c6f615126565b60009182526020909120600590910201546009805473ffffffffffffffffffffffffffffffffffffffff9092169184908110614cad57614cad615126565b906000526020600020906005020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7ef1a36048a526faa892e629a5116303a0730acbdee08f40ee03609c3d3b68c060098581548110614d2957614d29615126565b906000526020600020906005020160030154604051614d4a91815260200190565b60405180910390a450565b336000818152600c60209081526040918290206301e133809081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b600a6020528160005260406000208181548110614a5e57600080fd5b60098181548110614dca57600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015473ffffffffffffffffffffffffffffffffffffffff938416955091909216929085565b336000818152600c602090815260409182902062ed4e009081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b60008060408385031215614e6f57600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff81168114614ea057600080fd5b50565b60008060008060808587031215614eb957600080fd5b8435614ec481614e7e565b935060208501359250604085013591506060850135614ee281614e7e565b939692955090935050565b600060208284031215614eff57600080fd5b8135614f0a81614e7e565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015614f4957835183529284019291840191600101614f2d565b50909695505050505050565b60008060008060808587031215614f6b57600080fd5b8435614f7681614e7e565b966020860135965060408601359560600135945092505050565b600080600080600060a08688031215614fa857600080fd5b8535614fb381614e7e565b94506020860135935060408601359250606086013591506080860135614fd881614e7e565b809150509295509295909350565b60008060408385031215614ff957600080fd5b82359150602083013561500b81614e7e565b809150509250929050565b60006020828403121561502857600080fd5b5035919050565b600080600080600080600060e0888a03121561504a57600080fd5b873561505581614e7e565b9650602088013561506581614e7e565b955060408801359450606088013593506080880135925060a0880135915060c088013561509181614e7e565b8091505092959891949750929550565b60008060008060008060c087890312156150ba57600080fd5b86356150c581614e7e565b955060208701356150d581614e7e565b95989597505050506040840135936060810135936080820135935060a0909101359150565b6000806040838503121561510d57600080fd5b823561511881614e7e565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561516757600080fd5b5051919050565b60006020828403121561518057600080fd5b81518015158114614f0a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156151d2576151d2615190565b92915050565b808201808211156151d2576151d2615190565b60008060006060848603121561520057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561522b57600080fd5b8151614f0a81614e7e56fea26469706673582212209c957b30a7847aa30d9d203b22c8dfb735fa516acfed2997dba5b14c498da39f64736f6c634300081000330000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106102855760003560e01c80638a4c9d0111610153578063ccebfa3f116100cb578063ed58cbad1161007f578063f656bab411610064578063f656bab414610786578063fa4662fd146107b6578063fc5ab0b0146107cb57600080fd5b8063ed58cbad14610706578063f4dadc611461072657600080fd5b8063e4456ecb116100b0578063e4456ecb146106a4578063eb5805e1146106c4578063ec924139146106d957600080fd5b8063ccebfa3f1461066f578063d50c78a21461068f57600080fd5b8063b0c8b5c911610122578063c6ef206111610107578063c6ef2061146105d7578063c9102afd146105f7578063c9cda91f1461064f57600080fd5b8063b0c8b5c91461056c578063bdc36114146105c257600080fd5b80638a4c9d01146105025780638bdb2afa14610515578063a42a0d7314610542578063b09042df1461055757600080fd5b806345d1b3bf11610201578063735de9f7116101b5578063754a27c11161019a578063754a27c1146104af578063774164d9146104cf5780637d0039b2146104e257600080fd5b8063735de9f71461043d57806375322e471461048f57600080fd5b80635f49aad7116101e65780635f49aad7146103f257806363bc4443146104075780637192711f1461041d57600080fd5b806345d1b3bf1461039a578063494d0ce0146103dd57600080fd5b8063279c160e116102585780633b4965b01161023d5780633b4965b0146103545780633b5cc0bc146103745780633cff666b1461038757600080fd5b8063279c160e146103075780632b30b8251461033457600080fd5b8063066161821461028a578063070d66bf146102a15780630aa393f3146102c15780631fb9d142146102e7575b600080fd5b34801561029657600080fd5b5061029f6107f8565b005b3480156102ad57600080fd5b5061029f6102bc366004614e5c565b610846565b6102d46102cf366004614ea3565b61095a565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b5061029f610302366004614eed565b610f50565b34801561031357600080fd5b50610327610322366004614eed565b610fbb565b6040516102de9190614f11565b34801561034057600080fd5b5061032761034f366004614eed565b611034565b34801561036057600080fd5b5061029f61036f366004614e5c565b6110ab565b61029f610382366004614f55565b61134d565b6102d4610395366004614f90565b611bcf565b3480156103a657600080fd5b506102d46103b5366004614eed565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602052604090205490565b3480156103e957600080fd5b5061029f612719565b3480156103fe57600080fd5b5061029f612761565b34801561041357600080fd5b506102d460085481565b34801561042957600080fd5b5061029f610438366004614fe6565b6127a9565b34801561044957600080fd5b5060025461046a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102de565b34801561049b57600080fd5b5061029f6104aa366004615016565b612903565b3480156104bb57600080fd5b5061029f6104ca366004615016565b61293b565b6102d46104dd36600461502f565b612964565b3480156104ee57600080fd5b5061029f6104fd366004615016565b613916565b61029f6105103660046150a1565b613965565b34801561052157600080fd5b5060045461046a9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561054e57600080fd5b5061029f614669565b34801561056357600080fd5b5061029f6146d7565b34801561057857600080fd5b506105b2610587366004614eed565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205460ff1690565b60405190151581526020016102de565b3480156105ce57600080fd5b5061029f61471f565b3480156105e357600080fd5b5061029f6105f2366004615016565b614767565b34801561060357600080fd5b50610617610612366004615016565b6148f5565b6040805173ffffffffffffffffffffffffffffffffffffffff95861681529490931660208501529183015260608201526080016102de565b34801561065b57600080fd5b5061029f61066a366004614eed565b6149d7565b34801561067b57600080fd5b506102d461068a3660046150fa565b614a42565b34801561069b57600080fd5b506009546102d4565b3480156106b057600080fd5b5061029f6106bf366004615016565b614a73565b3480156106d057600080fd5b5061029f614d55565b3480156106e557600080fd5b5060075461046a9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561071257600080fd5b506102d46107213660046150fa565b614d9e565b34801561073257600080fd5b50610746610741366004615016565b614dba565b6040805173ffffffffffffffffffffffffffffffffffffffff9687168152959094166020860152928401919091526060830152608082015260a0016102de565b34801561079257600080fd5b506105b26107a1366004614eed565b600d6020526000908152604090205460ff1681565b3480156107c257600080fd5b5061029f614e14565b3480156107d757600080fd5b506102d46107e6366004614eed565b600c6020526000908152604090205481565b336000818152600c602090815260409182902062093a809081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca43691015b60405180910390a2565b426009838154811061085a5761085a615126565b9060005260206000209060050201600201541161087657600080fd5b6009828154811061088957610889615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff1633146108bb57600080fd5b600982815481106108ce576108ce615126565b90600052602060002090600502016002015481116108eb57600080fd5b80600983815481106108ff576108ff615126565b9060005260206000209060050201600201819055507fea01a0e8a9700b245bbb63ee3ef23b07df2c41f2d08f77ef5bd17696f49bdfa5818360405161094e929190918252602082015260400190565b60405180910390a15050565b600080841161096857600080fd5b610e0f831161097657600080fd5b6008546007546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156109e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0b9190615155565b1015610a6e576006543414610a1f57600080fd5b60015460065460405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f19350505050158015610a68573d6000803e3d6000fd5b50610a79565b3415610a7957600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152849073ffffffffffffffffffffffffffffffffffffffff87169063dd62ed3e90604401602060405180830381865afa158015610aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0f9190615155565b1015610b1a57600080fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa158015610b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bab9190615155565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905290915073ffffffffffffffffffffffffffffffffffffffff8716906323b872dd906064016020604051808303816000875af1158015610c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4b919061516e565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd9190615155565b9050610ce986826151bf565b8214610cf457600080fd5b60095473ffffffffffffffffffffffffffffffffffffffff8086166000908152600a6020908152604080832080546001818101835591855283852001869055938c168352600b825282208054938401815582528120909101829055610d5987426151d8565b9050610db96040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b73ffffffffffffffffffffffffffffffffffffffff8088168083528b8216602084018181526040808601878152606087018f8152608088018a815260098054600181018255600091909152895160059091027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054928b167fffffffffffffffffffffffff000000000000000000000000000000000000000093841617905595517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b08701805491909a1691161790975590517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b1840155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b283015593517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b39091015591518592907fc29bd8befe207dd4b148f89e3d5a8aa08f0510f6671b784f80b5a99893a03bc290610f3a908e908890918252602082015260400190565b60405180910390a4509098975050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f7457600080fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602090815260409182902080548351818402810184019094528084526060939283018282801561102857602002820191906000526020600020905b815481526020019060010190808311611014575b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602090815260409182902080548351818402810184019094528084526060939283018282801561102857602002820191906000526020600020908154815260200190600101908083116110145750505050509050919050565b600081116110b857600080fd5b42600983815481106110cc576110cc615126565b906000526020600020906005020160020154116110e857600080fd5b600982815481106110fb576110fb615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff16331461112d57600080fd5b806009838154811061114157611141615126565b60009182526020909120600590910201600101546040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015273ffffffffffffffffffffffffffffffffffffffff9091169063dd62ed3e90604401602060405180830381865afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190615155565b10156111f557600080fd5b6009828154811061120857611208615126565b60009182526020909120600590910201600101546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810183905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba919061516e565b5080600983815481106112cf576112cf615126565b9060005260206000209060050201600301546112eb91906151d8565b600983815481106112fe576112fe615126565b9060005260206000209060050201600301819055507fdc8bd6103a9b0cf120d7228c7dfb5baecadc91faa17121fbf078484aecf3dee6818360405161094e929190918252602082015260400190565b6000831161135a57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152839073ffffffffffffffffffffffffffffffffffffffff86169063dd62ed3e90604401602060405180830381865afa1580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f09190615155565b10156113fb57600080fd5b6008546007546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561146e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114929190615155565b10156115045760065434116114a657600080fd5b60015460065460405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f193505050501580156114ef573d6000803e3d6000fd5b506006546114fd90346151bf565b9050611507565b50345b336000908152600d602052604090205460ff16151560011461152857600080fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa158015611595573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b99190615155565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905290915073ffffffffffffffffffffffffffffffffffffffff8716906323b872dd906064016020604051808303816000875af1158015611635573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611659919061516e565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa1580156116c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116eb9190615155565b90506116f786826151bf565b821461170257600080fd5b33600061170f85476151bf565b6003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018b90529192508a169063095ea7b3906044016020604051808303816000875af115801561178a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ae919061516e565b506002546040517ff305d71900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152602482018b9052604482018a9052606482018990526000608483018190524260a484015292169063f305d71990889060c40160606040518083038185885af1158015611845573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061186a91906151eb565b925047915050828111156118c65773ffffffffffffffffffffffffffffffffffffffff84166108fc61189c85846151bf565b6040518115909202916000818181858888f193505050501580156118c4573d6000803e3d6000fd5b505b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152869073ffffffffffffffffffffffffffffffffffffffff8d16906370a0823190602401602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119569190615155565b1115611a96576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8c169063a9059cbb903390899084906370a0823190602401602060405180830381865afa1580156119d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f69190615155565b611a0091906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015611a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a94919061516e565b505b600480546040517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e81169382019390935273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526000929091169063e6a4390590604401602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a9190615219565b336000908152600d602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551919250849173ffffffffffffffffffffffffffffffffffffffff8416917f72616fa9fca23361b4342aeb2f118af149d92e645c558e75de9f0de09ffa757491a3505050505050505050505050565b6000808511611bdd57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152859073ffffffffffffffffffffffffffffffffffffffff88169063dd62ed3e90604401602060405180830381865afa158015611c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c739190615155565b1015611c7e57600080fd5b336000908152600c6020526040902054610e0f10611c9b57600080fd5b6008546007546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526000929173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d329190615155565b1015611da4576006543411611d4657600080fd5b60015460065460405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f19350505050158015611d8f573d6000803e3d6000fd5b50600654611d9d90346151bf565b9050611da7565b50345b611e056040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b73ffffffffffffffffffffffffffffffffffffffff888116808352908516602083015260408083018990526060830188905260808301879052517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091906370a0823190602401602060405180830381865afa158015611e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb69190615155565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018a905290915073ffffffffffffffffffffffffffffffffffffffff8a16906323b872dd906064016020604051808303816000875af1158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f56919061516e565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8b16906370a0823190602401602060405180830381865afa158015611fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe89190615155565b9050611ff489826151bf565b8214611fff57600080fd5b33600061200c86476151bf565b6003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018e90529192508d169063095ea7b3906044016020604051808303816000875af1158015612087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ab919061516e565b506002548551604080880151606089015160808a015192517ff305d71900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff94851660048201526024810192909252604482015260648101919091523060848201524260a4820152600092919091169063f305d71990899060c40160606040518083038185885af1158015612155573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061217a91906151eb565b925047915050828111156121d65773ffffffffffffffffffffffffffffffffffffffff84166108fc6121ac85846151bf565b6040518115909202916000818181858888f193505050501580156121d4573d6000803e3d6000fd5b505b858e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161222c919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015612249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226d9190615155565b11156123cb578d73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33888a6000015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016122ea919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015612307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232b9190615155565b61233591906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156123a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c9919061516e565b505b6004805488516040517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182169381019390935273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602484015260009291169063e6a4390590604401602060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124809190615219565b336000908152600c602052604081208054908290559192506124a282426151d8565b6009546020808d015173ffffffffffffffffffffffffffffffffffffffff9081166000908152600a83526040808220805460018181018355918452858420018690559289168252600b8452808220805493840181558252838220909201849055815160a081018352818152928301819052908201819052606082018190526080820152919250908e816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828160400181815250508681606001818152505081816080018181525050600981908060018154018082558091505060019003906000526020600020906005020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015560608201518160030155608082015181600401555050818f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fc29bd8befe207dd4b148f89e3d5a8aa08f0510f6671b784f80b5a99893a03bc28a876040516126fa929190918252602082015260400190565b60405180910390a4509b50505050505050505050505095945050505050565b336000818152600c602090815260409182902062278d009081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b336000818152600c6020908152604091829020620151809081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b42600983815481106127bd576127bd615126565b906000526020600020906005020160020154116127d957600080fd5b600982815481106127ec576127ec615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff16331461281e57600080fd5b6009828154811061283157612831615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff9081169082160361286757600080fd5b806009838154811061287b5761287b615126565b60009182526020918290206005919091020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9384161790556040805192841683529082018490527f1934dcddceb8f14180aebb1e7b1987cc6f6f493725ca0bb8efe99f631c7a6674910161094e565b60005473ffffffffffffffffffffffffffffffffffffffff16331461292757600080fd5b8061c350101561293657600080fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff16331461295f57600080fd5b600855565b600080861180156129755750600085115b61297e57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152869073ffffffffffffffffffffffffffffffffffffffff8a169063dd62ed3e90604401602060405180830381865afa1580156129f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a149190615155565b1015612a1f57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152859073ffffffffffffffffffffffffffffffffffffffff89169063dd62ed3e90604401602060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190615155565b1015612ac057600080fd5b336000908152600c6020526040902054610e0f10612add57600080fd5b6008546007546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b729190615155565b1015612bd5576006543414612b8657600080fd5b60015460065460405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f19350505050158015612bcf573d6000803e3d6000fd5b50612be0565b3415612be057600080fd5b612c456040518060c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081525090565b73ffffffffffffffffffffffffffffffffffffffff89811680835290891660208301526040808301899052606083018890526080830187905260a08301869052517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091906370a0823190602401602060405180830381865afa158015612cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfd9190615155565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8b16906370a0823190602401602060405180830381865afa158015612d6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d919190615155565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018b905290915073ffffffffffffffffffffffffffffffffffffffff8c16906323b872dd906064016020604051808303816000875af1158015612e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e31919061516e565b506040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810189905273ffffffffffffffffffffffffffffffffffffffff8b16906323b872dd906064016020604051808303816000875af1158015612eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecf919061516e565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8d16906370a0823190602401602060405180830381865afa158015612f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f619190615155565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8d16906370a0823190602401602060405180830381865afa158015612fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff59190615155565b90506130018b836151bf565b8414801561301757506130148a826151bf565b83145b61302057600080fd5b84516003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018e905291169063095ea7b3906044016020604051808303816000875af115801561309a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130be919061516e565b5060208501516003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018d905291169063095ea7b3906044016020604051808303816000875af115801561313c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613160919061516e565b506002548551602087015160408089015160608a015160808b015160a08c015193517fe8e3370000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9687166004820152948616602486015260448501929092526064840152608483015260a48201523060c48201524260e4820152600092919091169063e8e3370090610104016060604051808303816000875af115801561321e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324291906151eb565b92505050848e73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161329c919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa1580156132b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132dd9190615155565b111561343b578d73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3387896000015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161335a919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015613377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339b9190615155565b6133a591906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015613415573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613439919061516e565b505b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152849073ffffffffffffffffffffffffffffffffffffffff8f16906370a0823190602401602060405180830381865afa1580156134a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134cb9190615155565b1115613629578c73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3386896020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613548919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015613565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135899190615155565b61359391906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015613603573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613627919061516e565b505b60048054875160208901516040517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316948101949094528116602484015260009291169063e6a4390590604401602060405180830381865afa1580156136ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d09190615219565b336000908152600c602052604081208054908290559192506136f282426151d8565b60095473ffffffffffffffffffffffffffffffffffffffff808e166000908152600a60209081526040808320805460018181018355918552838520018690559389168352600b8252808320805494850181558352818320909301849055825160a0810184528281529081018290529182018190526060820181905260808201529192509073ffffffffffffffffffffffffffffffffffffffff808e16808352868216602084018181526040808601888152606087018c81526080880189815260098054600181018255600091909152895160059091027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054928b167fffffffffffffffffffffffff000000000000000000000000000000000000000093841617905595517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b08701805491909a1691161790975590517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b1840155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b283015593517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b39091015591518492907fc29bd8befe207dd4b148f89e3d5a8aa08f0510f6671b784f80b5a99893a03bc2906138f7908b908990918252602082015260400190565b60405180910390a4509950505050505050505050979650505050505050565b336000818152600c602052604090819020839055517fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca4369061395a9084815260200190565b60405180910390a250565b6000841180156139755750600083115b61397e57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152849073ffffffffffffffffffffffffffffffffffffffff88169063dd62ed3e90604401602060405180830381865afa1580156139f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a149190615155565b1015613a1f57600080fd5b6040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152839073ffffffffffffffffffffffffffffffffffffffff87169063dd62ed3e90604401602060405180830381865afa158015613a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab59190615155565b1015613ac057600080fd5b336000908152600d602052604090205460ff161515600114613ae157600080fd5b6008546007546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015613b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b769190615155565b1015613bd9576006543414613b8a57600080fd5b60015460065460405173ffffffffffffffffffffffffffffffffffffffff9092169181156108fc0291906000818181858888f19350505050158015613bd3573d6000803e3d6000fd5b50613be4565b3415613be457600080fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015613c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c759190615155565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa158015613ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d099190615155565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810188905290915073ffffffffffffffffffffffffffffffffffffffff8916906323b872dd906064016020604051808303816000875af1158015613d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da9919061516e565b506040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810186905273ffffffffffffffffffffffffffffffffffffffff8816906323b872dd906064016020604051808303816000875af1158015613e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e47919061516e565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8a16906370a0823190602401602060405180830381865afa158015613eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed99190615155565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8a16906370a0823190602401602060405180830381865afa158015613f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f6d9190615155565b9050613f7988836151bf565b84148015613f8f5750613f8c87826151bf565b83145b613f9857600080fd5b6003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018a9052908b169063095ea7b3906044016020604051808303816000875af1158015614011573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614035919061516e565b506003546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101899052908a169063095ea7b3906044016020604051808303816000875af11580156140af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140d3919061516e565b506002546040517fe8e3370000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301528b81166024830152604482018b9052606482018a90526084820189905260a48201889052600060c483018190524260e484015292169063e8e3370090610104016060604051808303816000875af1158015614179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419d91906151eb565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290935087925073ffffffffffffffffffffffffffffffffffffffff8e1691506370a0823190602401602060405180830381865afa15801561420e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142329190615155565b1115614372576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8c169063a9059cbb903390889084906370a0823190602401602060405180830381865afa1580156142ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d29190615155565b6142dc91906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af115801561434c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614370919061516e565b505b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152849073ffffffffffffffffffffffffffffffffffffffff8c16906370a0823190602401602060405180830381865afa1580156143de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144029190615155565b1115614542576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8b169063a9059cbb903390879084906370a0823190602401602060405180830381865afa15801561447e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a29190615155565b6144ac91906151bf565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af115801561451c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614540919061516e565b505b600480546040517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e8116938201939093528c831660248201526000929091169063e6a4390590604401602060405180830381865afa1580156145c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145e49190615219565b336000908152600d602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551919250839173ffffffffffffffffffffffffffffffffffffffff8416917f72616fa9fca23361b4342aeb2f118af149d92e645c558e75de9f0de09ffa757491a3505050505050505050505050565b336000818152600d602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905590519182527f6ff44f0d46ced74f7e97dfe9b22d2a78845a337b62237da7d2c86a233b153660910160405180910390a1565b336000818152600c60209081526040918290206213c6809081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b336000818152600c60209081526040918290206276a7009081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b6009818154811061477a5761477a615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff1633146147ac57600080fd5b6000600982815481106147c1576147c1615126565b90600052602060002090600502016003015490506000600983815481106147ea576147ea615126565b9060005260206000209060050201600301819055506009828154811061481257614812615126565b60009182526020822060059190910201600101546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815260048101929092526024820183905273ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303816000875af115801561489a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148be919061516e565b5060408051838152602081018390527f58e42e7e9d1be93bdaf77f261e5db694ec76510be49d10adb90143fe4cd91262910161094e565b6000806000806009858154811061490e5761490e615126565b60009182526020909120600590910201546009805473ffffffffffffffffffffffffffffffffffffffff9092169550908690811061494e5761494e615126565b906000526020600020906005020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506009858154811061499557614995615126565b9060005260206000209060050201600201549150600985815481106149bc576149bc615126565b90600052602060002090600502016003015490509193509193565b60005473ffffffffffffffffffffffffffffffffffffffff1633146149fb57600080fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600b6020528160005260406000208181548110614a5e57600080fd5b90600052602060002001600091509150505481565b60098181548110614a8657614a86615126565b600091825260209091206005909102015473ffffffffffffffffffffffffffffffffffffffff163314614ab857600080fd5b60098181548110614acb57614acb615126565b906000526020600020906005020160020154421015614ae957600080fd5b600060098281548110614afe57614afe615126565b90600052602060002090600502016003015411614b1a57600080fd5b60098181548110614b2d57614b2d615126565b906000526020600020906005020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3360098481548110614b8e57614b8e615126565b60009182526020909120600360059092020101546040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015614c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c36919061516e565b5060098181548110614c4a57614c4a615126565b90600052602060002090600502016004015460098281548110614c6f57614c6f615126565b60009182526020909120600590910201546009805473ffffffffffffffffffffffffffffffffffffffff9092169184908110614cad57614cad615126565b906000526020600020906005020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7ef1a36048a526faa892e629a5116303a0730acbdee08f40ee03609c3d3b68c060098581548110614d2957614d29615126565b906000526020600020906005020160030154604051614d4a91815260200190565b60405180910390a450565b336000818152600c60209081526040918290206301e133809081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b600a6020528160005260406000208181548110614a5e57600080fd5b60098181548110614dca57600080fd5b60009182526020909120600590910201805460018201546002830154600384015460049094015473ffffffffffffffffffffffffffffffffffffffff938416955091909216929085565b336000818152600c602090815260409182902062ed4e009081905591519182527fb4a4b847a3cf2517c2d1dc8fecd8417214fa3c29c0d604f8a4ebfc2281aca436910161083c565b60008060408385031215614e6f57600080fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff81168114614ea057600080fd5b50565b60008060008060808587031215614eb957600080fd5b8435614ec481614e7e565b935060208501359250604085013591506060850135614ee281614e7e565b939692955090935050565b600060208284031215614eff57600080fd5b8135614f0a81614e7e565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015614f4957835183529284019291840191600101614f2d565b50909695505050505050565b60008060008060808587031215614f6b57600080fd5b8435614f7681614e7e565b966020860135965060408601359560600135945092505050565b600080600080600060a08688031215614fa857600080fd5b8535614fb381614e7e565b94506020860135935060408601359250606086013591506080860135614fd881614e7e565b809150509295509295909350565b60008060408385031215614ff957600080fd5b82359150602083013561500b81614e7e565b809150509250929050565b60006020828403121561502857600080fd5b5035919050565b600080600080600080600060e0888a03121561504a57600080fd5b873561505581614e7e565b9650602088013561506581614e7e565b955060408801359450606088013593506080880135925060a0880135915060c088013561509181614e7e565b8091505092959891949750929550565b60008060008060008060c087890312156150ba57600080fd5b86356150c581614e7e565b955060208701356150d581614e7e565b95989597505050506040840135936060810135936080820135935060a0909101359150565b6000806040838503121561510d57600080fd5b823561511881614e7e565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561516757600080fd5b5051919050565b60006020828403121561518057600080fd5b81518015158114614f0a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156151d2576151d2615190565b92915050565b808201808211156151d2576151d2615190565b60008060006060848603121561520057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561522b57600080fd5b8151614f0a81614e7e56fea26469706673582212209c957b30a7847aa30d9d203b22c8dfb735fa516acfed2997dba5b14c498da39f64736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : factory (address): 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f
Arg [1] : uniswaprouter (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode Sourcemap
4180:21373:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11700:148;;;;;;;;;;;;;:::i;:::-;;9604:381;;;;;;;;;;-1:-1:-1;9604:381:0;;;;;:::i;:::-;;:::i;6968:1365::-;;;;;;:::i;:::-;;:::i;:::-;;;1102:25:1;;;1090:2;1075:18;6968:1365:0;;;;;;;;6734:109;;;;;;;;;;-1:-1:-1;6734:109:0;;;;;:::i;:::-;;:::i;24821:161::-;;;;;;;;;;-1:-1:-1;24821:161:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24317:::-;;;;;;;;;;-1:-1:-1;24317:161:0;;;;;:::i;:::-;;:::i;8924:672::-;;;;;;;;;;-1:-1:-1;8924:672:0;;;;;:::i;:::-;;:::i;19332:2236::-;;;;;;:::i;:::-;;:::i;16046:3278::-;;;;;;:::i;:::-;;:::i;24650:163::-;;;;;;;;;;-1:-1:-1;24650:163:0;;;;;:::i;:::-;24779:26;;24747:7;24779:26;;;:20;:26;;;;;;;24650:163;11382:151;;;;;;;;;;;;;:::i;11856:145::-;;;;;;;;;;;;;:::i;5385:37::-;;;;;;;;;;;;;;;;9993:361;;;;;;;;;;-1:-1:-1;9993:361:0;;;;;:::i;:::-;;:::i;5126:39::-;;;;;;;;;;-1:-1:-1;5126:39:0;;;;;;;;;;;3865:42:1;3853:55;;;3835:74;;3823:2;3808:18;5126:39:0;3663:252:1;6487:121:0;;;;;;;;;;-1:-1:-1;6487:121:0;;;;;:::i;:::-;;:::i;6851:109::-;;;;;;;;;;-1:-1:-1;6851:109:0;;;;;:::i;:::-;;:::i;12153:3885::-;;;;;;:::i;:::-;;:::i;10713:178::-;;;;;;;;;;-1:-1:-1;10713:178:0;;;;;:::i;:::-;;:::i;21576:2733::-;;;;;;:::i;:::-;;:::i;5246:33::-;;;;;;;;;;-1:-1:-1;5246:33:0;;;;;;;;12009:136;;;;;;;;;;;;;:::i;11541:151::-;;;;;;;;;;;;;:::i;24486:156::-;;;;;;;;;;-1:-1:-1;24486:156:0;;;;;:::i;:::-;24612:22;;24583:4;24612:22;;;:16;:22;;;;;;;;;24486:156;;;;5998:14:1;;5991:22;5973:41;;5961:2;5946:18;24486:156:0;5833:187:1;11223:151:0;;;;;;;;;;;;;:::i;10362:343::-;;;;;;;;;;-1:-1:-1;10362:343:0;;;;;:::i;:::-;;:::i;25093:457::-;;;;;;;;;;-1:-1:-1;25093:457:0;;;;;:::i;:::-;;:::i;:::-;;;;6266:42:1;6335:15;;;6317:34;;6387:15;;;;6382:2;6367:18;;6360:43;6419:18;;;6412:34;6477:2;6462:18;;6455:34;6243:3;6228:19;25093:457:0;6025:470:1;6616:110:0;;;;;;;;;;-1:-1:-1;6616:110:0;;;;;:::i;:::-;;:::i;5512:47::-;;;;;;;;;;-1:-1:-1;5512:47:0;;;;;:::i;:::-;;:::i;24990:95::-;;;;;;;;;;-1:-1:-1;25065:5:0;:12;24990:95;;8341:575;;;;;;;;;;-1:-1:-1;8341:575:0;;;;;:::i;:::-;;:::i;10899:154::-;;;;;;;;;;;;;:::i;5352:26::-;;;;;;;;;;-1:-1:-1;5352:26:0;;;;;;;;5458:47;;;;;;;;;;-1:-1:-1;5458:47:0;;;;;:::i;:::-;;:::i;5429:22::-;;;;;;;;;;-1:-1:-1;5429:22:0;;;;;:::i;:::-;;:::i;:::-;;;;7320:42:1;7389:15;;;7371:34;;7441:15;;;;7436:2;7421:18;;7414:43;7473:18;;;7466:34;;;;7531:2;7516:18;;7509:34;7574:3;7559:19;;7552:35;7297:3;7282:19;5429:22:0;7051:542:1;5628:48:0;;;;;;;;;;-1:-1:-1;5628:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11061:154;;;;;;;;;;;;;:::i;5566:55::-;;;;;;;;;;-1:-1:-1;5566:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;11700:148;11769:10;11748:32;;;;:20;:32;;;;;;;;;11783:6;11748:41;;;;11805:35;;1102:25:1;;;11805:35:0;;1075:18:1;11805:35:0;;;;;;;;11700:148::o;9604:381::-;9726:15;9695:5;9701:10;9695:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;:46;9687:55;;;;;;9775:5;9781:10;9775:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;;;9761:10;:41;9753:50;;;;;;9838:5;9844:10;9838:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;9822:13;:44;9814:53;;;;;;9909:13;9878:5;9884:10;9878:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;:44;;;;9938:39;9951:13;9966:10;9938:39;;;;;;8156:25:1;;;8212:2;8197:18;;8190:34;8144:2;8129:18;;7982:248;9938:39:0;;;;;;;;9604:381;;:::o;6968:1365::-;7122:19;7171:1;7162:6;:10;7154:19;;;;;;7203:4;7192:8;:15;7184:24;;;;;;7267:12;;7230:11;;7223:41;;;;;7253:10;7223:41;;;3835:74:1;7230:11:0;;;;;7223:29;;3808:18:1;;7223:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;7219:206;;;7317:3;;7304:9;:16;7296:25;;;;;;7336:7;;7353:3;;7336:21;;:7;;;;;:21;;;;;7353:3;7336:7;:21;:7;:21;7353:3;7336:7;:21;;;;;;;;;;;;;;;;;;;;;7219:206;;;7398:9;:14;7390:23;;;;;;7443:50;;;;;7467:10;7443:50;;;8659:34:1;7487:4:0;8709:18:1;;;8702:43;7497:6:0;;7443:23;;;;;;8571:18:1;;7443:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;;7435:69;;;;;;7538:38;;;;;7570:4;7538:38;;;3835:74:1;7517:18:0;;7538:23;;;;;;3808:18:1;;7538:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7587:61;;;;;7614:10;7587:61;;;9019:34:1;7634:4:0;9069:18:1;;;9062:43;9121:18;;;9114:34;;;7517:59:0;;-1:-1:-1;7587:26:0;;;;;;8931:18:1;;7587:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7680:38:0;;;;;7712:4;7680:38;;;3835:74:1;7659:18:0;;7680:23;;;;;;3808:18:1;;7680:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7659:59;-1:-1:-1;7751:19:0;7764:6;7659:59;7751:19;:::i;:::-;7737:10;:33;7729:42;;;;;;7805:5;:12;7828:18;;;;7784;7828;;;:10;:18;;;;;;;;:35;;;;;;;;;;;;;;;;;;7874:17;;;;;:10;:17;;;;:34;;;;;;;;;;;;;;;;;7940:26;7958:8;7940:15;:26;:::i;:::-;7919:47;;7979:22;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7979:22:0;8012:26;;;;;;;8049:25;;;:17;;;:25;;;8085:18;;;;:31;;;8127:18;;;:27;;;8165:14;;;:27;;;8205:5;:19;;;;;;;8012:17;8205:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8242:55;;8182:10;;8049:25;8242:55;;;;8148:6;;8106:10;;8156:25:1;;;8212:2;8197:18;;8190:34;8144:2;8129:18;;7982:248;8242:55:0;;;;;;;;-1:-1:-1;8315:10:0;;6968:1365;-1:-1:-1;;;;;;;;6968:1365:0:o;6734:109::-;4461:5;;;;4447:10;:19;4439:28;;;;;;6815:7:::1;:20:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;6734:109::o;24821:161::-;24958:16;;;;;;;:10;:16;;;;;;;;;24951:23;;;;;;;;;;;;;;;;;24917:16;;24951:23;;;24958:16;24951:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24821:161;;;:::o;24317:::-;24454:16;;;;;;;:10;:16;;;;;;;;;24447:23;;;;;;;;;;;;;;;;;24413:16;;24447:23;;;24454:16;24447:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24317:161;;;:::o;8924:672::-;9015:1;9006:6;:10;8998:19;;;;;;9067:15;9036:5;9042:10;9036:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;:46;9028:55;;;;;;9116:5;9122:10;9116:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;;;9102:10;:41;9094:50;;;;;;9302:6;9184:5;9190:10;9184:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;;;9177:121;;;;;9241:10;9177:121;;;8659:34:1;9278:4:0;8709:18:1;;;8702:43;9184:27:0;;;;;9177:45;;8571:18:1;;9177:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:131;;9155:164;;;;;;9337:5;9343:10;9337:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;;;9330:133;;;;;9393:10;9330:133;;;9019:34:1;9426:4:0;9069:18:1;;;9062:43;9121:18;;;9114:34;;;9337:27:0;;;;;9330:48;;8931:18:1;;9330:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9536:6;9505:5;9511:10;9505:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;:37;;;;:::i;:::-;9474:5;9480:10;9474:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;:68;;;;9558:30;9569:6;9577:10;9558:30;;;;;;8156:25:1;;;8212:2;8197:18;;8190:34;8144:2;8129:18;;7982:248;19332:2236:0;19553:1;19532:18;:22;19524:31;;;;;;19588:57;;;;;19619:10;19588:57;;;8659:34:1;19639:4:0;8709:18:1;;;8702:43;19666:18:0;;19588:30;;;;;;8571:18:1;;19588:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:96;;19566:129;;;;;;19781:12;;19744:11;;19737:41;;;;;19767:10;19737:41;;;3835:74:1;19706:16:0;;19781:12;19744:11;;;19737:29;;3808:18:1;;19737:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;19733:243;;;19830:3;;19818:9;:15;19810:24;;;;;;19849:7;;19866:3;;19849:21;;:7;;;;;:21;;;;;19866:3;19849:7;:21;:7;:21;19866:3;19849:7;:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19908:3:0;;19896:15;;:9;:15;:::i;:::-;19885:26;;19733:243;;;-1:-1:-1;19955:9:0;19733:243;20011:10;19994:28;;;;:16;:28;;;;;;;;:36;;:28;:36;19986:45;;;;;;20065;;;;;20104:4;20065:45;;;3835:74:1;20044:18:0;;20065:30;;;;;;3808:18:1;;20065:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20121:130;;;;;20169:10;20121:130;;;9019:34:1;20202:4:0;9069:18:1;;;9062:43;9121:18;;;9114:34;;;20044:66:0;;-1:-1:-1;20121:33:0;;;;;;8931:18:1;;20121:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20283:45:0;;;;;20322:4;20283:45;;;3835:74:1;20262:18:0;;20283:30;;;;;;3808:18:1;;20283:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20262:66;-1:-1:-1;20361:31:0;20374:18;20262:66;20361:31;:::i;:::-;20347:10;:45;20339:54;;;;;;20442:10;20406:25;20490:32;20514:8;20490:21;:32;:::i;:::-;20562:14;;20533:64;;;;;:28;20562:14;;;20533:64;;;10067:74:1;10157:18;;;10150:34;;;20466:56:0;;-1:-1:-1;20533:28:0;;;;;10040:18:1;;20533:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20634:13:0;;:252;;;;;:13;10561:15:1;;;20634:252:0;;;10543:34:1;10593:18;;;10586:34;;;10636:18;;;10629:34;;;10679:18;;;10672:34;;;20613:17:0;10722:19:1;;;10715:44;;;20860:15:0;10775:19:1;;;10768:35;20613:17:0;20634:13;;:29;;20685:8;;10454:19:1;;20634:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20608:278;-1:-1:-1;20921:21:0;;-1:-1:-1;;20957:29:0;;;20953:111;;;21003:18;;;:49;21022:29;21038:13;21022;:29;:::i;:::-;21003:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20953:111;21080:45;;;;;21119:4;21080:45;;;3835:74:1;21128:10:0;;21080:30;;;;;;3808:18:1;;21080:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;21076:241;;;21232:45;;;;;21271:4;21232:45;;;3835:74:1;21155:29:0;;;;;;21203:10;;21280;;21155:29;;21232:30;;3808:18:1;;21232:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;;;:::i;:::-;21155:150;;;;;;;;;;10097:42:1;10085:55;;;21155:150:0;;;10067:74:1;10157:18;;;10150:34;10040:18;;21155:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21076:241;21347:14;;;:117;;;;;:14;8677:15:1;;;21347:117:0;;;8659:34:1;;;;21411:42:0;8709:18:1;;;8702:43;21329:15:0;;21347:14;;;;:22;;8571:18:1;;21347:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21492:10;21506:5;21475:28;;;:16;:28;;;;;;:36;;;;;;21529:31;21329:135;;-1:-1:-1;21550:9:0;;21475:28;21529:31;;;;;;19513:2055;;;;;;;;19332:2236;;;;:::o;16046:3278::-;16261:19;16322:1;16301:18;:22;16293:31;;;;;;16357:57;;;;;16388:10;16357:57;;;8659:34:1;16408:4:0;8709:18:1;;;8702:43;16435:18:0;;16357:30;;;;;;8571:18:1;;16357:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:96;;16335:129;;;;;;16504:10;16483:32;;;;:20;:32;;;;;;16518:4;-1:-1:-1;16475:48:0;;;;;;16609:12;;16572:11;;16565:41;;;;;16595:10;16565:41;;;3835:74:1;16534:16:0;;16609:12;16572:11;;;16565:29;;3808:18:1;;16565:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;16561:243;;;16658:3;;16646:9;:15;16638:24;;;;;;16677:7;;16694:3;;16677:21;;:7;;;;;:21;;;;;16694:3;16677:7;:21;:7;:21;16694:3;16677:7;:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16736:3:0;;16724:15;;:9;:15;:::i;:::-;16713:26;;16561:243;;;-1:-1:-1;16783:9:0;16561:243;16816:30;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16816:30:0;16857:39;;;;;;;16907:26;;;:17;;;:26;16944:30;;;;:51;;;17006:26;;;:43;;;17060:24;;;:39;;;17133:45;;;;17172:4;17133:45;;;3835:74:1;-1:-1:-1;;16857:39:0;17133:30;;3808:18:1;;17133:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17189:130;;;;;17237:10;17189:130;;;9019:34:1;17270:4:0;9069:18:1;;;9062:43;9121:18;;;9114:34;;;17112:66:0;;-1:-1:-1;17189:33:0;;;;;;8931:18:1;;17189:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;17351:45:0;;;;;17390:4;17351:45;;;3835:74:1;17330:18:0;;17351:30;;;;;;3808:18:1;;17351:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17330:66;-1:-1:-1;17429:31:0;17442:18;17330:66;17429:31;:::i;:::-;17415:10;:45;17407:54;;;;;;17510:10;17474:25;17558:32;17582:8;17558:21;:32;:::i;:::-;17630:14;;17601:64;;;;;:28;17630:14;;;17601:64;;;10067:74:1;10157:18;;;10150:34;;;17534:56:0;;-1:-1:-1;17601:28:0;;;;;10040:18:1;;17601:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;17702:13:0;;17787:24;;17826:30;;;;;17871:26;;;;17912:24;;;;17702:303;;;;;:13;10561:15:1;;;17702:303:0;;;10543:34:1;10593:18;;;10586:34;;;;10636:18;;;10629:34;10679:18;;;10672:34;;;;17959:4:0;10722:19:1;;;10715:44;17979:15:0;10775:19:1;;;10768:35;17681:17:0;;17702:13;;;;;:29;;17753:8;;10454:19:1;;17702:303:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17676:329;-1:-1:-1;18040:21:0;;-1:-1:-1;;18076:29:0;;;18072:111;;;18122:18;;;:49;18141:29;18157:13;18141;:29;:::i;:::-;18122:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18072:111;18247:10;18206:12;18199:30;;;18238:4;18199:45;;;;;;;;;;;;;;3865:42:1;3853:55;;;;3835:74;;3823:2;3808:18;;3663:252;18199:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;18195:274;;;18281:12;18274:29;;;18322:10;18432;18358:11;:24;;;18351:42;;;18402:4;18351:57;;;;;;;;;;;;;;3865:42:1;3853:55;;;;3835:74;;3823:2;3808:18;;3663:252;18351:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:91;;;;:::i;:::-;18274:183;;;;;;;;;;10097:42:1;10085:55;;;18274:183:0;;;10067:74:1;10157:18;;;10150:34;10040:18;;18274:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18195:274;18499:14;;;18536:24;;18499:129;;;;;:14;8677:15:1;;;18499:129:0;;;8659:34:1;;;;18575:42:0;8709:18:1;;;8702:43;18481:15:0;;18499:14;;;:22;;8571:18:1;;18499:129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18681:10;18641:16;18660:32;;;:20;:32;;;;;;;18703:36;;;;18481:147;;-1:-1:-1;18771:26:0;18660:32;18771:15;:26;:::i;:::-;18831:5;:12;18865:17;;;;;18854:29;;;;18810:18;18854:29;;;:10;:29;;;;;;:46;;;;;;;;;;;;;;;;;;18911:19;;;;;:10;:19;;;;;:36;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18750:47:0;;-1:-1:-1;18831:12:0;19013:6;18993:7;:17;;:26;;;;;;;;;;;19050:7;19030;:17;;:27;;;;;;;;;;;19089:10;19068:7;:18;;:31;;;;;19131:9;19110:7;:18;;:30;;;;;19168:10;19151:7;:14;;:27;;;;;19191:5;19202:7;19191:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19277:10;19269:6;19228:60;;19237:7;19228:60;;;19246:9;19257:10;19228:60;;;;;;8156:25:1;;;8212:2;8197:18;;8190:34;8144:2;8129:18;;7982:248;19228:60:0;;;;;;;;-1:-1:-1;19306:10:0;-1:-1:-1;;;;;;;;;;;;16046:3278:0;;;;;;;:::o;11382:151::-;11452:10;11431:32;;;;:20;:32;;;;;;;;;11466:7;11431:42;;;;11489:36;;1102:25:1;;;11489:36:0;;1075:18:1;11489:36:0;956:177:1;11856:145:0;11924:10;11903:32;;;;:20;:32;;;;;;;;;11938:5;11903:40;;;;11959:34;;1102:25:1;;;11959:34:0;;1075:18:1;11959:34:0;956:177:1;9993:361:0;10111:15;10080:5;10086:10;10080:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;:46;10072:55;;;;;;10160:5;10166:10;10160:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;;;10146:10;:41;10138:50;;;;;;10219:5;10225:10;10219:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;;;;;10207:39;;;;10199:48;;;;;;10288:8;10258:5;10264:10;10258:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:38;;;;;;;;;;;10312:34;;;10085:55:1;;;10067:74;;10157:18;;;10150:34;;;10312::0;;10040:18:1;10312:34:0;9893:297:1;6487:121:0;4461:5;;;;4447:10;:19;4439:28;;;;;;6567:7:::1;6558:5;:16;;6550:25;;;::::0;::::1;;6586:4;:14:::0;6487:121::o;6851:109::-;4461:5;;;;4447:10;:19;4439:28;;;;;;6928:12:::1;:24:::0;6851:109::o;12153:3885::-;12427:19;12484:1;12467:14;:18;:40;;;;;12506:1;12489:14;:18;12467:40;12459:49;;;;;;12541:58;;;;;12573:10;12541:58;;;8659:34:1;12593:4:0;8709:18:1;;;8702:43;12620:14:0;;12541:31;;;;;;8571:18:1;;12541:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:93;;12519:126;;;;;;12678:58;;;;;12710:10;12678:58;;;8659:34:1;12730:4:0;8709:18:1;;;8702:43;12757:14:0;;12678:31;;;;;;8571:18:1;;12678:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:93;;12656:126;;;;;;12822:10;12801:32;;;;:20;:32;;;;;;12836:4;-1:-1:-1;12793:48:0;;;;;;12900:12;;12863:11;;12856:41;;;;;12886:10;12856:41;;;3835:74:1;12863:11:0;;;;;12856:29;;3808:18:1;;12856:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;12852:206;;;12950:3;;12937:9;:16;12929:25;;;;;;12969:7;;12986:3;;12969:21;;:7;;;;;:21;;;;;12986:3;12969:7;:21;:7;:21;12986:3;12969:7;:21;;;;;;;;;;;;;;;;;;;;;12852:206;;;13031:9;:14;13023:23;;;;;;13070:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13070:24:0;13105:38;;;;;;;13154;;;:22;;;:38;13203:23;;;;:40;;;13254:23;;;:40;;;13305:19;;;:32;;;13348:19;;;:32;;;13415:46;;;;13455:4;13415:46;;;3835:74:1;-1:-1:-1;;13105:38:0;13415:31;;3808:18:1;;13415:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13494;;;;;13534:4;13494:46;;;3835:74:1;13393:68:0;;-1:-1:-1;13472:19:0;;13494:31;;;;;;3808:18:1;;13494:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13551:127;;;;;13600:10;13551:127;;;9019:34:1;13633:4:0;9069:18:1;;;9062:43;9121:18;;;9114:34;;;13472:68:0;;-1:-1:-1;13551:34:0;;;;;;8931:18:1;;13551:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13689:127:0;;;;;13738:10;13689:127;;;9019:34:1;13771:4:0;9069:18:1;;;9062:43;9121:18;;;9114:34;;;13689::0;;;;;;8931:18:1;;13689:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13849:46:0;;;;;13889:4;13849:46;;;3835:74:1;13827:19:0;;13849:31;;;;;;3808:18:1;;13849:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13928;;;;;13968:4;13928:46;;;3835:74:1;13827:68:0;;-1:-1:-1;13906:19:0;;13928:31;;;;;;3808:18:1;;13928:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13906:68;-1:-1:-1;14022:28:0;14036:14;14022:11;:28;:::i;:::-;14007:11;:43;:107;;;;-1:-1:-1;14086:28:0;14100:14;14086:11;:28;:::i;:::-;14071:11;:43;14007:107;13985:140;;;;;;14145:22;;14177:14;;14138:70;;;;;:38;14177:14;;;14138:70;;;10067:74:1;10157:18;;;10150:34;;;14138:38:0;;;;;10040:18:1;;14138:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14226:22:0;;;;14258:14;;14219:70;;;;;:38;14258:14;;;14219:70;;;10067:74:1;10157:18;;;10150:34;;;14219:38:0;;;;;10040:18:1;;14219:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14326:13:0;;14367:22;;14404;;;;14441:23;;;;;14479;;;;14517:19;;;;14551;;;;14326:313;;;;;:13;12193:15:1;;;14326:313:0;;;12175:34:1;12245:15;;;12225:18;;;12218:43;12277:18;;;12270:34;;;;12320:18;;;12313:34;12363:19;;;12356:35;12407:19;;;12400:35;14593:4:0;12451:19:1;;;12444:44;14613:15:0;12504:19:1;;;12497:35;14305:17:0;;14326:13;;;;;:26;;12086:19:1;;14326:313:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14300:339;;;;14705:11;14663:13;14656:31;;;14696:4;14656:46;;;;;;;;;;;;;;3865:42:1;3853:55;;;;3835:74;;3823:2;3808:18;;3663:252;14656:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;14652:276;;;14740:13;14733:30;;;14782:10;14890:11;14818:8;:22;;;14811:40;;;14860:4;14811:55;;;;;;;;;;;;;;3865:42:1;3853:55;;;;3835:74;;3823:2;3808:18;;3663:252;14811:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:90;;;;:::i;:::-;14733:183;;;;;;;;;;10097:42:1;10085:55;;;14733:183:0;;;10067:74:1;10157:18;;;10150:34;10040:18;;14733:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14652:276;14944:46;;;;;14984:4;14944:46;;;3835:74:1;14993:11:0;;14944:31;;;;;;3808:18:1;;14944:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;14940:276;;;15028:13;15021:30;;;15070:10;15178:11;15106:8;:22;;;15099:40;;;15148:4;15099:55;;;;;;;;;;;;;;3865:42:1;3853:55;;;;3835:74;;3823:2;3808:18;;3663:252;15099:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:90;;;;:::i;:::-;15021:183;;;;;;;;;;10097:42:1;10085:55;;;15021:183:0;;;10067:74:1;10157:18;;;10150:34;10040:18;;15021:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14940:276;15246:14;;;15283:22;;15320;;;;15246:107;;;;;:14;8677:15:1;;;15246:107:0;;;8659:34:1;;;;8729:15;;8709:18;;;8702:43;15228:15:0;;15246:14;;;:22;;8571:18:1;;15246:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15406:10;15366:16;15385:32;;;:20;:32;;;;;;;15428:36;;;;15228:125;;-1:-1:-1;15496:26:0;15385:32;15496:15;:26;:::i;:::-;15556:5;:12;15579:18;;;;15535;15579;;;:10;:18;;;;;;;;:35;;;;;;;;;;;;;;;;;;15625:19;;;;;:10;:19;;;;;:36;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15475:47:0;;-1:-1:-1;15556:12:0;15707:26;;;;;;;15744:27;;;:17;;;:27;;;15782:18;;;;:31;;;15824:18;;;:30;;;15865:14;;;:27;;;15905:5;:19;;;;;;;15707:17;15905:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15942:60;;15882:10;;15744:27;15942:60;;;;15845:9;;15803:10;;8156:25:1;;;8212:2;8197:18;;8190:34;8144:2;8129:18;;7982:248;15942:60:0;;;;;;;;-1:-1:-1;16020:10:0;-1:-1:-1;;;;;;;;;;12153:3885:0;;;;;;;;;:::o;10713:178::-;10802:10;10781:32;;;;:20;:32;;;;;;;:46;;;10843:40;;;;;10816:11;1102:25:1;;1090:2;1075:18;;956:177;10843:40:0;;;;;;;;10713:178;:::o;21576:2733::-;21852:1;21835:14;:18;:40;;;;;21874:1;21857:14;:18;21835:40;21827:49;;;;;;21909:58;;;;;21941:10;21909:58;;;8659:34:1;21961:4:0;8709:18:1;;;8702:43;21988:14:0;;21909:31;;;;;;8571:18:1;;21909:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:93;;21887:126;;;;;;22046:58;;;;;22078:10;22046:58;;;8659:34:1;22098:4:0;8709:18:1;;;8702:43;22125:14:0;;22046:31;;;;;;8571:18:1;;22046:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:93;;22024:126;;;;;;22186:10;22169:28;;;;:16;:28;;;;;;;;:36;;:28;:36;22161:45;;;;;;22265:12;;22228:11;;22221:41;;;;;22251:10;22221:41;;;3835:74:1;22228:11:0;;;;;22221:29;;3808:18:1;;22221:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;22217:206;;;22315:3;;22302:9;:16;22294:25;;;;;;22334:7;;22351:3;;22334:21;;:7;;;;;:21;;;;;22351:3;22334:7;:21;:7;:21;22351:3;22334:7;:21;;;;;;;;;;;;;;;;;;;;;22217:206;;;22396:9;:14;22388:23;;;;;;22457:46;;;;;22497:4;22457:46;;;3835:74:1;22435:19:0;;22457:31;;;;;;3808:18:1;;22457:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22536;;;;;22576:4;22536:46;;;3835:74:1;22435:68:0;;-1:-1:-1;22514:19:0;;22536:31;;;;;;3808:18:1;;22536:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22593:127;;;;;22642:10;22593:127;;;9019:34:1;22675:4:0;9069:18:1;;;9062:43;9121:18;;;9114:34;;;22514:68:0;;-1:-1:-1;22593:34:0;;;;;;8931:18:1;;22593:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22731:127:0;;;;;22780:10;22731:127;;;9019:34:1;22813:4:0;9069:18:1;;;9062:43;9121:18;;;9114:34;;;22731::0;;;;;;8931:18:1;;22731:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22891:46:0;;;;;22931:4;22891:46;;;3835:74:1;22869:19:0;;22891:31;;;;;;3808:18:1;;22891:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22970;;;;;23010:4;22970:46;;;3835:74:1;22869:68:0;;-1:-1:-1;22948:19:0;;22970:31;;;;;;3808:18:1;;22970:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22948:68;-1:-1:-1;23064:28:0;23078:14;23064:11;:28;:::i;:::-;23049:11;:43;:107;;;;-1:-1:-1;23128:28:0;23142:14;23128:11;:28;:::i;:::-;23113:11;:43;23049:107;23027:140;;;;;;23210:14;;23180:61;;;;;:29;23210:14;;;23180:61;;;10067:74:1;10157:18;;;10150:34;;;23180:29:0;;;;;;10040:18:1;;23180:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23282:14:0;;23252:61;;;;;:29;23282:14;;;23252:61;;;10067:74:1;10157:18;;;10150:34;;;23252:29:0;;;;;;10040:18:1;;23252:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23350:13:0;;:256;;;;;:13;12193:15:1;;;23350:256:0;;;12175:34:1;12245:15;;;12225:18;;;12218:43;12277:18;;;12270:34;;;12320:18;;;12313:34;;;12363:19;;;12356:35;;;12407:19;;;12400:35;;;23329:17:0;12451:19:1;;;12444:44;;;23580:15:0;12504:19:1;;;12497:35;23329:17:0;23350:13;;:26;;12086:19:1;;23350:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23623:46;;;;;23663:4;23623:46;;;3835:74:1;23324:282:0;;-1:-1:-1;23672:11:0;;-1:-1:-1;23623:31:0;;;;-1:-1:-1;23623:31:0;;3808:18:1;;23623:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;23619:246;;;23778:46;;;;;23818:4;23778:46;;;3835:74:1;23700:30:0;;;;;;23749:10;;23827:11;;23700:30;;23778:31;;3808:18:1;;23778:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;;;;:::i;:::-;23700:153;;;;;;;;;;10097:42:1;10085:55;;;23700:153:0;;;10067:74:1;10157:18;;;10150:34;10040:18;;23700:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23619:246;23881:46;;;;;23921:4;23881:46;;;3835:74:1;23930:11:0;;23881:31;;;;;;3808:18:1;;23881:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;23877:246;;;24036:46;;;;;24076:4;24036:46;;;3835:74:1;23958:30:0;;;;;;24007:10;;24085:11;;23958:30;;24036:31;;3808:18:1;;24036:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60;;;;:::i;:::-;23958:153;;;;;;;;;;10097:42:1;10085:55;;;23958:153:0;;;10067:74:1;10157:18;;;10150:34;10040:18;;23958:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23877:246;24153:14;;;:52;;;;;:14;8677:15:1;;;24153:52:0;;;8659:34:1;;;;8729:15;;;8709:18;;;8702:43;24135:15:0;;24153:14;;;;:22;;8571:18:1;;24153:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24235:10;24249:5;24218:28;;;:16;:28;;;;;;:36;;;;;;24270:31;24135:70;;-1:-1:-1;24291:9:0;;24218:28;24270:31;;;;;;21816:2493;;;;;;21576:2733;;;;;;:::o;12009:136::-;12075:10;12058:28;;;;:16;:28;;;;;;;;;:35;;;;12089:4;12058:35;;;12109:28;;3835:74:1;;;12109:28:0;;3808:18:1;12109:28:0;;;;;;;12009:136::o;11541:151::-;11611:10;11590:32;;;;:20;:32;;;;;;;;;11625:7;11590:42;;;;11648:36;;1102:25:1;;;11648:36:0;;1075:18:1;11648:36:0;956:177:1;11223:151:0;11293:10;11272:32;;;;:20;:32;;;;;;;;;11307:7;11272:42;;;;11330:36;;1102:25:1;;;11330:36:0;;1075:18:1;11330:36:0;956:177:1;10362:343:0;10440:5;10446:10;10440:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;;;10426:10;:41;10418:50;;;;;;10479:18;10500:5;10506:10;10500:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;10479:49;;10570:1;10539:5;10545:10;10539:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;:32;;;;10589:5;10595:10;10589:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;;;10582:68;;;;;;;;10067:74:1;;;;10157:18;;;10150:34;;;10589:27:0;;;10582:44;;10040:18:1;;10582:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10666:31:0;;;8156:25:1;;;8212:2;8197:18;;8190:34;;;10666:31:0;;8129:18:1;10666:31:0;7982:248:1;25093:457:0;25198:17;25230;25262:18;25295;25355:5;25361:10;25355:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;25407:5;:17;;25355:27;;;;;-1:-1:-1;25407:5:0;25413:10;;25407:17;;;;;;:::i;:::-;;;;;;;;;;;:27;;;;;;;;;;;;25393:41;;25460:5;25466:10;25460:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;25445:43;;25514:5;25520:10;25514:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;25499:43;;25093:457;;;;;:::o;6616:110::-;4461:5;;;;4447:10;:19;4439:28;;;;;;6694:11:::1;:24:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;6616:110::o;5512:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8341:575::-;8423:5;8429:10;8423:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;;;8409:10;:41;8401:50;;;;;;8489:5;8495:10;8489:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;8470:15;:47;;8462:56;;;;;;8568:1;8537:5;8543:10;8537:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;:32;8529:41;;;;;;8588:5;8594:10;8588:17;;;;;;;;:::i;:::-;;;;;;;;;;;:27;;;;;;;;;;;;8581:44;;;8640:10;8665:5;8671:10;8665:17;;;;;;;;:::i;:::-;;;;;;;;;:28;:17;;;;;:28;;8581:123;;;;;;;;;;10097:42:1;10085:55;;;8581:123:0;;;10067:74:1;10157:18;;;10150:34;10040:18;;8581:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8873:5;8879:10;8873:17;;;;;;;;:::i;:::-;;;;;;;;;;;:24;;;8831:5;8837:10;8831:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:27;8746:5;:17;;8831:27;;;;;8752:10;;8746:17;;;;;;:::i;:::-;;;;;;;;;;;:27;;;;;;;;;;;;8720:188;;;8788:5;8794:10;8788:17;;;;;;;;:::i;:::-;;;;;;;;;;;:28;;;8720:188;;;;1102:25:1;;1090:2;1075:18;;956:177;8720:188:0;;;;;;;;8341:575;:::o;10899:154::-;10970:10;10949:32;;;;:20;:32;;;;;;;;;10984:8;10949:43;;;;11008:37;;1102:25:1;;;11008:37:0;;1075:18:1;11008:37:0;956:177:1;5458:47:0;;;;;;;;;;;;;;;;;;;;5429:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5429:22:0;;;;;;;:::o;11061:154::-;11132:10;11111:32;;;;:20;:32;;;;;;;;;11146:8;11111:43;;;;11170:37;;1102:25:1;;;11170:37:0;;1075:18:1;11170:37:0;956:177:1;14:248;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:154::-;353:42;346:5;342:54;335:5;332:65;322:93;;411:1;408;401:12;322:93;267:154;:::o;426:525::-;512:6;520;528;536;589:3;577:9;568:7;564:23;560:33;557:53;;;606:1;603;596:12;557:53;645:9;632:23;664:31;689:5;664:31;:::i;:::-;714:5;-1:-1:-1;766:2:1;751:18;;738:32;;-1:-1:-1;817:2:1;802:18;;789:32;;-1:-1:-1;873:2:1;858:18;;845:32;886:33;845:32;886:33;:::i;:::-;426:525;;;;-1:-1:-1;426:525:1;;-1:-1:-1;;426:525:1:o;1138:255::-;1205:6;1258:2;1246:9;1237:7;1233:23;1229:32;1226:52;;;1274:1;1271;1264:12;1226:52;1313:9;1300:23;1332:31;1357:5;1332:31;:::i;:::-;1382:5;1138:255;-1:-1:-1;;;1138:255:1:o;1650:632::-;1821:2;1873:21;;;1943:13;;1846:18;;;1965:22;;;1792:4;;1821:2;2044:15;;;;2018:2;2003:18;;;1792:4;2087:169;2101:6;2098:1;2095:13;2087:169;;;2162:13;;2150:26;;2231:15;;;;2196:12;;;;2123:1;2116:9;2087:169;;;-1:-1:-1;2273:3:1;;1650:632;-1:-1:-1;;;;;;1650:632:1:o;2287:452::-;2373:6;2381;2389;2397;2450:3;2438:9;2429:7;2425:23;2421:33;2418:53;;;2467:1;2464;2457:12;2418:53;2506:9;2493:23;2525:31;2550:5;2525:31;:::i;:::-;2575:5;2627:2;2612:18;;2599:32;;-1:-1:-1;2678:2:1;2663:18;;2650:32;;2729:2;2714:18;2701:32;;-1:-1:-1;2287:452:1;-1:-1:-1;;;2287:452:1:o;2744:594::-;2839:6;2847;2855;2863;2871;2924:3;2912:9;2903:7;2899:23;2895:33;2892:53;;;2941:1;2938;2931:12;2892:53;2980:9;2967:23;2999:31;3024:5;2999:31;:::i;:::-;3049:5;-1:-1:-1;3101:2:1;3086:18;;3073:32;;-1:-1:-1;3152:2:1;3137:18;;3124:32;;-1:-1:-1;3203:2:1;3188:18;;3175:32;;-1:-1:-1;3259:3:1;3244:19;;3231:33;3273;3231;3273;:::i;:::-;3325:7;3315:17;;;2744:594;;;;;;;;:::o;3343:315::-;3411:6;3419;3472:2;3460:9;3451:7;3447:23;3443:32;3440:52;;;3488:1;3485;3478:12;3440:52;3524:9;3511:23;3501:33;;3584:2;3573:9;3569:18;3556:32;3597:31;3622:5;3597:31;:::i;:::-;3647:5;3637:15;;;3343:315;;;;;:::o;3920:180::-;3979:6;4032:2;4020:9;4011:7;4007:23;4003:32;4000:52;;;4048:1;4045;4038:12;4000:52;-1:-1:-1;4071:23:1;;3920:180;-1:-1:-1;3920:180:1:o;4105:805::-;4218:6;4226;4234;4242;4250;4258;4266;4319:3;4307:9;4298:7;4294:23;4290:33;4287:53;;;4336:1;4333;4326:12;4287:53;4375:9;4362:23;4394:31;4419:5;4394:31;:::i;:::-;4444:5;-1:-1:-1;4501:2:1;4486:18;;4473:32;4514:33;4473:32;4514:33;:::i;:::-;4566:7;-1:-1:-1;4620:2:1;4605:18;;4592:32;;-1:-1:-1;4671:2:1;4656:18;;4643:32;;-1:-1:-1;4722:3:1;4707:19;;4694:33;;-1:-1:-1;4774:3:1;4759:19;;4746:33;;-1:-1:-1;4831:3:1;4816:19;;4803:33;4845;4803;4845;:::i;:::-;4897:7;4887:17;;;4105:805;;;;;;;;;;:::o;4915:663::-;5019:6;5027;5035;5043;5051;5059;5112:3;5100:9;5091:7;5087:23;5083:33;5080:53;;;5129:1;5126;5119:12;5080:53;5168:9;5155:23;5187:31;5212:5;5187:31;:::i;:::-;5237:5;-1:-1:-1;5294:2:1;5279:18;;5266:32;5307:33;5266:32;5307:33;:::i;:::-;4915:663;;5359:7;;-1:-1:-1;;;;5413:2:1;5398:18;;5385:32;;5464:2;5449:18;;5436:32;;5515:3;5500:19;;5487:33;;-1:-1:-1;5567:3:1;5552:19;;;5539:33;;-1:-1:-1;4915:663:1:o;6500:315::-;6568:6;6576;6629:2;6617:9;6608:7;6604:23;6600:32;6597:52;;;6645:1;6642;6635:12;6597:52;6684:9;6671:23;6703:31;6728:5;6703:31;:::i;:::-;6753:5;6805:2;6790:18;;;;6777:32;;-1:-1:-1;;;6500:315:1:o;7793:184::-;7845:77;7842:1;7835:88;7942:4;7939:1;7932:15;7966:4;7963:1;7956:15;8235:184;8305:6;8358:2;8346:9;8337:7;8333:23;8329:32;8326:52;;;8374:1;8371;8364:12;8326:52;-1:-1:-1;8397:16:1;;8235:184;-1:-1:-1;8235:184:1:o;9159:277::-;9226:6;9279:2;9267:9;9258:7;9254:23;9250:32;9247:52;;;9295:1;9292;9285:12;9247:52;9327:9;9321:16;9380:5;9373:13;9366:21;9359:5;9356:32;9346:60;;9402:1;9399;9392:12;9441:184;9493:77;9490:1;9483:88;9590:4;9587:1;9580:15;9614:4;9611:1;9604:15;9630:128;9697:9;;;9718:11;;;9715:37;;;9732:18;;:::i;:::-;9630:128;;;;:::o;9763:125::-;9828:9;;;9849:10;;;9846:36;;;9862:18;;:::i;10814:306::-;10902:6;10910;10918;10971:2;10959:9;10950:7;10946:23;10942:32;10939:52;;;10987:1;10984;10977:12;10939:52;11016:9;11010:16;11000:26;;11066:2;11055:9;11051:18;11045:25;11035:35;;11110:2;11099:9;11095:18;11089:25;11079:35;;10814:306;;;;;:::o;11125:251::-;11195:6;11248:2;11236:9;11227:7;11223:23;11219:32;11216:52;;;11264:1;11261;11254:12;11216:52;11296:9;11290:16;11315:31;11340:5;11315:31;:::i
Swarm Source
ipfs://9c957b30a7847aa30d9d203b22c8dfb735fa516acfed2997dba5b14c498da39f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.