ERC-20
Overview
Max Total Supply
1,000,000 TAI
Holders
35
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
TunesAI
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-06-07 */ /** DAPP: https://ai.tunes.studio/ Website: https://tunes.studio/ Twitter: https://x.com/TunesAiProject Telegram: https://t.me/tunesai_official **/ // SPDX-License-Identifier: MIT pragma solidity ^0.8.23; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { 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); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } 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 IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); 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 ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract TunesAI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketerWallet; address public DevsWallet; uint256 public maxTx; uint256 public swapTokensAtAmount; uint256 public maxWallets; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = false; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellDevFee; uint256 public tokensForMarkets; uint256 public tokensForDev; mapping(address => bool) private _isBlackList; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTx; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketerWalletUpdated( address indexed newWallet, address indexed olDevsWalletallet ); event DevsWalletUpdated( address indexed newWallet, address indexed olDevsWalletallet ); constructor() ERC20("TunesAI", unicode"TAI") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFrommaxTx(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFrommaxTx(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 5; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 5; uint256 _sellDevFee = 0; uint256 totalSupply = 1_000_000 * 1e18; maxTx = 10_000 * 1e18; maxWallets = 10_000 * 1e18; swapTokensAtAmount = (totalSupply * 1) / 10000; buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; marketerWallet = address(0x6c5D6044fcbc60Fe8c74e7487566925C9809fE67); DevsWallet = address(0x59C3aac3d2Ed35F7A1953CB929D7f6aB57aA9Cd3); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFrommaxTx(owner(), true); excludeFrommaxTx(address(this), true); excludeFrommaxTx(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTx lower than 0.1%" ); maxTx = newNum * (10**18); } function updatemaxWalletsAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallets lower than 0.5%" ); maxWallets = newNum * (10**18); } function excludeFrommaxTx(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTx[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateFees( uint256 _buyMarketingFee, uint256 _buyDevFee, uint256 _sellMarketingFee, uint256 _sellDevFee) external onlyOwner { buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; require(buyTotalFees <= 75, "Must keep fees at 75% or less"); require(sellTotalFees <= 75, "Must keep fees at 75% or less"); } function updateBuyFees( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyDevFee; require(buyTotalFees <= 75, "Must keep fees at 75% or less"); } function updateSellFees( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellDevFee; require(sellTotalFees <= 75, "Must keep fees at 75% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updatemarketerWallet(address newmarketerWallet) external onlyOwner { emit marketerWalletUpdated(newmarketerWallet, marketerWallet); marketerWallet = newmarketerWallet; } function updateDevsWallet(address newWallet) external onlyOwner { emit DevsWalletUpdated(newWallet, DevsWallet); DevsWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_isBlackList[from], "[from] black list"); require(!_isBlackList[to], "[to] black list"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (!tradingActive) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedmaxTx[to]) { require(amount <= maxTx, "Buy transfer amount exceeds the maxTx."); require(amount + balanceOf(to) <= maxWallets, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTx[from]) { require(amount <= maxTx, "Sell transfer amount exceeds the maxTx."); } else if (!_isExcludedmaxTx[to]) { require(amount + balanceOf(to) <= maxWallets, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForMarkets += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForMarkets += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function manualSwap(uint256 amount) external { require(_msgSender() == marketerWallet); require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount"); swapTokensForEth(amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarkets + tokensForDev; bool success; if (contractBalance == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 initialETHBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); tokensForMarkets = 0; tokensForDev = 0; (success, ) = address(DevsWallet).call{value: ethForDev}(""); (success, ) = address(marketerWallet).call{ value: address(this).balance }(""); } }
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":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"olDevsWalletallet","type":"address"}],"name":"DevsWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"olDevsWalletallet","type":"address"}],"name":"marketerWalletUpdated","type":"event"},{"inputs":[],"name":"DevsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFrommaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarkets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyDevFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellDevFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmarketerWallet","type":"address"}],"name":"updatemarketerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxWalletsAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526001600c5f6101000a81548160ff0219169083151502179055505f600c60016101000a81548160ff0219169083151502179055505f600c60026101000a81548160ff0219169083151502179055505f600e5f6101000a81548160ff02191690831515021790555034801562000077575f80fd5b506040518060400160405280600781526020017f54756e65734149000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f54414900000000000000000000000000000000000000000000000000000000008152508160039081620000f5919062000d20565b50806004908162000107919062000d20565b5050506200012a6200011e6200059460201b60201c565b6200059b60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001558160016200065e60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f9919062000e69565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000285919062000e69565b6040518363ffffffff1660e01b8152600401620002a492919062000eaa565b6020604051808303815f875af1158015620002c1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e7919062000e69565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035a60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200065e60201b60201c565b6200038e60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200074560201b60201c565b5f600590505f80600590505f8069d3c21bcecceda1000000905069021e19e0c9bab240000060098190555069021e19e0c9bab2400000600b81905550612710600182620003dc919062000f02565b620003e8919062000f79565b600a8190555084601081905550836011819055506011546010546200040e919062000fb0565b600f81905550826013819055508160148190555060145460135462000434919062000fb0565b601281905550736c5d6044fcbc60fe8c74e7487566925c9809fe6760075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507359c3aac3d2ed35f7a1953cb929d7f6ab57aa9cd360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000504620004f6620007e360201b60201c565b60016200080b60201b60201c565b620005173060016200080b60201b60201c565b6200052c61dead60016200080b60201b60201c565b6200054e62000540620007e360201b60201c565b60016200065e60201b60201c565b620005613060016200065e60201b60201c565b6200057661dead60016200065e60201b60201c565b6200058833826200094260201b60201c565b50505050505062001139565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200066e6200059460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000694620007e360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e49062001048565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200081b6200059460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000841620007e360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200089a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008919062001048565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000936919062001084565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009aa90620010ed565b60405180910390fd5b620009c65f838362000ab260201b60201c565b8060025f828254620009d9919062000fb0565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000a2d919062000fb0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a9391906200111e565b60405180910390a362000aae5f838362000ab760201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b3857607f821691505b60208210810362000b4e5762000b4d62000af3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000bb27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b75565b62000bbe868362000b75565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000c0862000c0262000bfc8462000bd6565b62000bdf565b62000bd6565b9050919050565b5f819050919050565b62000c238362000be8565b62000c3b62000c328262000c0f565b84845462000b81565b825550505050565b5f90565b62000c5162000c43565b62000c5e81848462000c18565b505050565b5b8181101562000c855762000c795f8262000c47565b60018101905062000c64565b5050565b601f82111562000cd45762000c9e8162000b54565b62000ca98462000b66565b8101602085101562000cb9578190505b62000cd162000cc88562000b66565b83018262000c63565b50505b505050565b5f82821c905092915050565b5f62000cf65f198460080262000cd9565b1980831691505092915050565b5f62000d10838362000ce5565b9150826002028217905092915050565b62000d2b8262000abc565b67ffffffffffffffff81111562000d475762000d4662000ac6565b5b62000d53825462000b20565b62000d6082828562000c89565b5f60209050601f83116001811462000d96575f841562000d81578287015190505b62000d8d858262000d03565b86555062000dfc565b601f19841662000da68662000b54565b5f5b8281101562000dcf5784890151825560018201915060208501945060208101905062000da8565b8683101562000def578489015162000deb601f89168262000ce5565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e338262000e08565b9050919050565b62000e458162000e27565b811462000e50575f80fd5b50565b5f8151905062000e638162000e3a565b92915050565b5f6020828403121562000e815762000e8062000e04565b5b5f62000e908482850162000e53565b91505092915050565b62000ea48162000e27565b82525050565b5f60408201905062000ebf5f83018562000e99565b62000ece602083018462000e99565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000f0e8262000bd6565b915062000f1b8362000bd6565b925082820262000f2b8162000bd6565b9150828204841483151762000f455762000f4462000ed5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000f858262000bd6565b915062000f928362000bd6565b92508262000fa55762000fa462000f4c565b5b828204905092915050565b5f62000fbc8262000bd6565b915062000fc98362000bd6565b925082820190508082111562000fe45762000fe362000ed5565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200103060208362000fea565b91506200103d8262000ffa565b602082019050919050565b5f6020820190508181035f830152620010618162001022565b9050919050565b5f8115159050919050565b6200107e8162001068565b82525050565b5f602082019050620010995f83018462001073565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620010d5601f8362000fea565b9150620010e2826200109f565b602082019050919050565b5f6020820190508181035f8301526200110681620010c7565b9050919050565b620011188162000bd6565b82525050565b5f602082019050620011335f8301846200110d565b92915050565b608051614f166200116e5f395f8181610df7015281816129fa0152818161349801528181613577015261359e0152614f165ff3fe60806040526004361061031d575f3560e01c80638a8c523c116101aa578063b70143c9116100f6578063d85ba06311610094578063e6819ba71161006e578063e6819ba714610ba8578063e884f26014610be4578063f1b9ad6b14610c0e578063f2fde38b14610c3657610324565b8063d85ba06314610b18578063dd62ed3e14610b42578063e2f4560514610b7e57610324565b8063c0246668116100d0578063c024666814610a62578063c6616ba114610a8a578063c876d0b914610ab2578063d257b34f14610adc57610324565b8063b70143c9146109e8578063b819a1a914610a10578063bbc0c74214610a3857610324565b80639c3b4fdc11610163578063a457c2d71161013d578063a457c2d71461090a578063a72f458614610946578063a9059cbb14610970578063b62496f5146109ac57610324565b80639c3b4fdc1461088c5780639fccce32146108b6578063a0d82dc5146108e057610324565b80638a8c523c146107a85780638da5cb5b146107be57806392136913146107e8578063924de9b71461081257806395d89b411461083a5780639a7a23d61461086457610324565b806349bd5a5e116102695780636a486a8e11610222578063715018a6116101fc578063715018a6146107145780637437681e1461072a578063751039fc146107545780637bce5a041461077e57610324565b80636a486a8e146106845780636ddd1713146106ae57806370a08231146106d857610324565b806349bd5a5e1461057a5780634a62bb65146105a45780634fbee193146105ce57806361528e271461060a578063644130d81461063457806366ca9b831461065c57610324565b8063217580a2116102d657806330a136ad116102b057806330a136ad146104c05780633103b39e146104ea578063313ce56714610514578063395093511461053e57610324565b8063217580a21461043257806323b872dd1461045a57806327c8f8351461049657610324565b806302dbd8f81461032857806306fdde0314610350578063095ea7b31461037a5780631694505e146103b657806318160ddd146103e0578063203e727e1461040a57610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061034e60048036038101906103499190613af2565b610c5e565b005b34801561035b575f80fd5b50610364610d48565b6040516103719190613bba565b60405180910390f35b348015610385575f80fd5b506103a0600480360381019061039b9190613c34565b610dd8565b6040516103ad9190613c8c565b60405180910390f35b3480156103c1575f80fd5b506103ca610df5565b6040516103d79190613d00565b60405180910390f35b3480156103eb575f80fd5b506103f4610e19565b6040516104019190613d28565b60405180910390f35b348015610415575f80fd5b50610430600480360381019061042b9190613d41565b610e22565b005b34801561043d575f80fd5b5061045860048036038101906104539190613d41565b610f31565b005b348015610465575f80fd5b50610480600480360381019061047b9190613d6c565b611040565b60405161048d9190613c8c565b60405180910390f35b3480156104a1575f80fd5b506104aa611132565b6040516104b79190613dcb565b60405180910390f35b3480156104cb575f80fd5b506104d4611138565b6040516104e19190613d28565b60405180910390f35b3480156104f5575f80fd5b506104fe61113e565b60405161050b9190613dcb565b60405180910390f35b34801561051f575f80fd5b50610528611163565b6040516105359190613dff565b60405180910390f35b348015610549575f80fd5b50610564600480360381019061055f9190613c34565b61116b565b6040516105719190613c8c565b60405180910390f35b348015610585575f80fd5b5061058e611212565b60405161059b9190613dcb565b60405180910390f35b3480156105af575f80fd5b506105b8611237565b6040516105c59190613c8c565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef9190613e18565b611249565b6040516106019190613c8c565b60405180910390f35b348015610615575f80fd5b5061061e61129b565b60405161062b9190613d28565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613e6d565b6112a1565b005b348015610667575f80fd5b50610682600480360381019061067d9190613af2565b611375565b005b34801561068f575f80fd5b5061069861145f565b6040516106a59190613d28565b60405180910390f35b3480156106b9575f80fd5b506106c2611465565b6040516106cf9190613c8c565b60405180910390f35b3480156106e3575f80fd5b506106fe60048036038101906106f99190613e18565b611478565b60405161070b9190613d28565b60405180910390f35b34801561071f575f80fd5b506107286114bd565b005b348015610735575f80fd5b5061073e611544565b60405161074b9190613d28565b60405180910390f35b34801561075f575f80fd5b5061076861154a565b6040516107759190613c8c565b60405180910390f35b348015610789575f80fd5b506107926115e7565b60405161079f9190613d28565b60405180910390f35b3480156107b3575f80fd5b506107bc6115ed565b005b3480156107c9575f80fd5b506107d26116a1565b6040516107df9190613dcb565b60405180910390f35b3480156107f3575f80fd5b506107fc6116c9565b6040516108099190613d28565b60405180910390f35b34801561081d575f80fd5b5061083860048036038101906108339190613eab565b6116cf565b005b348015610845575f80fd5b5061084e611768565b60405161085b9190613bba565b60405180910390f35b34801561086f575f80fd5b5061088a60048036038101906108859190613e6d565b6117f8565b005b348015610897575f80fd5b506108a0611911565b6040516108ad9190613d28565b60405180910390f35b3480156108c1575f80fd5b506108ca611917565b6040516108d79190613d28565b60405180910390f35b3480156108eb575f80fd5b506108f461191d565b6040516109019190613d28565b60405180910390f35b348015610915575f80fd5b50610930600480360381019061092b9190613c34565b611923565b60405161093d9190613c8c565b60405180910390f35b348015610951575f80fd5b5061095a611a09565b6040516109679190613dcb565b60405180910390f35b34801561097b575f80fd5b5061099660048036038101906109919190613c34565b611a2e565b6040516109a39190613c8c565b60405180910390f35b3480156109b7575f80fd5b506109d260048036038101906109cd9190613e18565b611a4b565b6040516109df9190613c8c565b60405180910390f35b3480156109f3575f80fd5b50610a0e6004803603810190610a099190613d41565b611a68565b005b348015610a1b575f80fd5b50610a366004803603810190610a319190613e18565b611b29565b005b348015610a43575f80fd5b50610a4c611c63565b604051610a599190613c8c565b60405180910390f35b348015610a6d575f80fd5b50610a886004803603810190610a839190613e6d565b611c76565b005b348015610a95575f80fd5b50610ab06004803603810190610aab9190613ed6565b611d98565b005b348015610abd575f80fd5b50610ac6611eee565b604051610ad39190613c8c565b60405180910390f35b348015610ae7575f80fd5b50610b026004803603810190610afd9190613d41565b611f00565b604051610b0f9190613c8c565b60405180910390f35b348015610b23575f80fd5b50610b2c612054565b604051610b399190613d28565b60405180910390f35b348015610b4d575f80fd5b50610b686004803603810190610b639190613f3a565b61205a565b604051610b759190613d28565b60405180910390f35b348015610b89575f80fd5b50610b926120dc565b604051610b9f9190613d28565b60405180910390f35b348015610bb3575f80fd5b50610bce6004803603810190610bc99190613e18565b6120e2565b604051610bdb9190613c8c565b60405180910390f35b348015610bef575f80fd5b50610bf86120ff565b604051610c059190613c8c565b60405180910390f35b348015610c19575f80fd5b50610c346004803603810190610c2f9190613e18565b61219c565b005b348015610c41575f80fd5b50610c5c6004803603810190610c579190613e18565b6122d6565b005b610c666123cc565b73ffffffffffffffffffffffffffffffffffffffff16610c846116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190613fc2565b60405180910390fd5b8160138190555080601481905550601454601354610cf8919061400d565b601281905550604b6012541115610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b9061408a565b60405180910390fd5b5050565b606060038054610d57906140d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d83906140d5565b8015610dce5780601f10610da557610100808354040283529160200191610dce565b820191905f5260205f20905b815481529060010190602001808311610db157829003601f168201915b5050505050905090565b5f610deb610de46123cc565b84846123d3565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610e2a6123cc565b73ffffffffffffffffffffffffffffffffffffffff16610e486116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590613fc2565b60405180910390fd5b670de0b6b3a76400006103e86001610eb4610e19565b610ebe9190614105565b610ec89190614173565b610ed29190614173565b811015610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b906141ed565b60405180910390fd5b670de0b6b3a764000081610f289190614105565b60098190555050565b610f396123cc565b73ffffffffffffffffffffffffffffffffffffffff16610f576116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490613fc2565b60405180910390fd5b670de0b6b3a76400006103e86005610fc3610e19565b610fcd9190614105565b610fd79190614173565b610fe19190614173565b811015611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a9061427b565b60405180910390fd5b670de0b6b3a7640000816110379190614105565b600b8190555050565b5f61104c848484612596565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6110936123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990614309565b60405180910390fd5b6111268561111e6123cc565b8584036123d3565b60019150509392505050565b61dead81565b600b5481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f6112086111776123cc565b848460015f6111846123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611203919061400d565b6123d3565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60155481565b6112a96123cc565b73ffffffffffffffffffffffffffffffffffffffff166112c76116a1565b73ffffffffffffffffffffffffffffffffffffffff161461131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131490613fc2565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61137d6123cc565b73ffffffffffffffffffffffffffffffffffffffff1661139b6116a1565b73ffffffffffffffffffffffffffffffffffffffff16146113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613fc2565b60405180910390fd5b816010819055508060118190555060115460105461140f919061400d565b600f81905550604b600f54111561145b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114529061408a565b60405180910390fd5b5050565b60125481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114c56123cc565b73ffffffffffffffffffffffffffffffffffffffff166114e36116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153090613fc2565b60405180910390fd5b6115425f61329a565b565b60095481565b5f6115536123cc565b73ffffffffffffffffffffffffffffffffffffffff166115716116a1565b73ffffffffffffffffffffffffffffffffffffffff16146115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be90613fc2565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b60105481565b6115f56123cc565b73ffffffffffffffffffffffffffffffffffffffff166116136116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166090613fc2565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6116d76123cc565b73ffffffffffffffffffffffffffffffffffffffff166116f56116a1565b73ffffffffffffffffffffffffffffffffffffffff161461174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613fc2565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611777906140d5565b80601f01602080910402602001604051908101604052809291908181526020018280546117a3906140d5565b80156117ee5780601f106117c5576101008083540402835291602001916117ee565b820191905f5260205f20905b8154815290600101906020018083116117d157829003601f168201915b5050505050905090565b6118006123cc565b73ffffffffffffffffffffffffffffffffffffffff1661181e6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b90613fc2565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90614397565b60405180910390fd5b61190d828261335d565b5050565b60115481565b60165481565b60145481565b5f8060015f6119306123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190614425565b60405180910390fd5b6119fe6119f56123cc565b858584036123d3565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a41611a3a6123cc565b8484612596565b6001905092915050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611aa86123cc565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7575f80fd5b611ad030611478565b8111158015611ade57505f81115b611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b149061448d565b60405180910390fd5b611b26816133fb565b50565b611b316123cc565b73ffffffffffffffffffffffffffffffffffffffff16611b4f6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613fc2565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f9e3da7e72199adc414f24e73d3985f288cce5edbc5c370e29af583afdd78c2c260405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60019054906101000a900460ff1681565b611c7e6123cc565b73ffffffffffffffffffffffffffffffffffffffff16611c9c6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce990613fc2565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d8c9190613c8c565b60405180910390a25050565b611da06123cc565b73ffffffffffffffffffffffffffffffffffffffff16611dbe6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b90613fc2565b60405180910390fd5b8360108190555082601181905550601154601054611e32919061400d565b600f819055508160138190555080601481905550601454601354611e56919061400d565b601281905550604b600f541115611ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e999061408a565b60405180910390fd5b604b6012541115611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf9061408a565b60405180910390fd5b50505050565b600e5f9054906101000a900460ff1681565b5f611f096123cc565b73ffffffffffffffffffffffffffffffffffffffff16611f276116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490613fc2565b60405180910390fd5b620186a06001611f8b610e19565b611f959190614105565b611f9f9190614173565b821015611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd89061451b565b60405180910390fd5b6103e86005611fee610e19565b611ff89190614105565b6120029190614173565b821115612044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203b906145a9565b60405180910390fd5b81600a8190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f6121086123cc565b73ffffffffffffffffffffffffffffffffffffffff166121266116a1565b73ffffffffffffffffffffffffffffffffffffffff161461217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217390613fc2565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b6121a46123cc565b73ffffffffffffffffffffffffffffffffffffffff166121c26116a1565b73ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90613fc2565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f455cf943964d06e77e44126ecca5a66b2c9721f4576a31f8693127282c55700f60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122de6123cc565b73ffffffffffffffffffffffffffffffffffffffff166122fc6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614612352576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234990613fc2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b790614637565b60405180910390fd5b6123c98161329a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612438906146c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690614753565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125899190613d28565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb906147e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612672576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126699061486f565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f3906148d7565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d9061493f565b60405180910390fd5b5f810361279d5761279883835f61362e565b613295565b600c5f9054906101000a900460ff1615612e45576127b96116a1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561282757506127f76116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612899575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128b25750600660149054906101000a900460ff16155b15612e4457600c60019054906101000a900460ff166129a65760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612966575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c906149a7565b60405180910390fd5b5b600e5f9054906101000a900460ff1615612b6a576129c26116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612a4957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612aa2575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b695743600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1d90614a5b565b60405180910390fd5b43600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c07575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cae57600954811115612c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4890614ae9565b60405180910390fd5b600b54612c5d83611478565b82612c68919061400d565b1115612ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca090614b51565b60405180910390fd5b612e43565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d4b575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d9a57600954811115612d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8c90614bdf565b60405180910390fd5b612e42565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e4157600b54612df483611478565b82612dff919061400d565b1115612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3790614b51565b60405180910390fd5b5b5b5b5b5b5f612e4f30611478565b90505f600a548210159050808015612e735750600c60029054906101000a900460ff165b8015612e8c5750600660149054906101000a900460ff16155b8015612edf5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f32575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f85575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fc8576001600660146101000a81548160ff021916908315150217905550612fad6138a3565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613077575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613080575f90505b5f811561328557601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156130de57505f601254115b156131765761310b60646130fd60125488613a7290919063ffffffff16565b613a8790919063ffffffff16565b90506012546014548261311e9190614105565b6131289190614173565b60165f828254613138919061400d565b92505081905550601254601354826131509190614105565b61315a9190614173565b60155f82825461316a919061400d565b92505081905550613262565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131cd57505f600f54115b15613261576131fa60646131ec600f5488613a7290919063ffffffff16565b613a8790919063ffffffff16565b9050600f546011548261320d9190614105565b6132179190614173565b60165f828254613227919061400d565b92505081905550600f546010548261323f9190614105565b6132499190614173565b60155f828254613259919061400d565b925050819055505b5b5f8111156132765761327587308361362e565b5b80856132829190614bfd565b94505b61329087878761362e565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff81111561341757613416614c30565b5b6040519080825280602002602001820160405280156134455781602001602082028036833780820191505090505b50905030815f8151811061345c5761345b614c5d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135239190614c9e565b8160018151811061353757613536614c5d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061359c307f0000000000000000000000000000000000000000000000000000000000000000846123d3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135fd959493929190614db9565b5f604051808303815f87803b158015613614575f80fd5b505af1158015613626573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361369c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613693906147e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361370a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137019061486f565b60405180910390fd5b613715838383613a9c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378f90614e81565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613826919061400d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388a9190613d28565b60405180910390a361389d848484613aa1565b50505050565b5f6138ad30611478565b90505f6016546015546138c0919061400d565b90505f8083036138d257505050613a70565b6014600a546138e19190614105565b8311156138fa576014600a546138f79190614105565b92505b5f479050613907846133fb565b5f61391b8247613aa690919063ffffffff16565b90505f6139458561393760165485613a7290919063ffffffff16565b613a8790919063ffffffff16565b90505f6015819055505f60168190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161399a90614ecc565b5f6040518083038185875af1925050503d805f81146139d4576040519150601f19603f3d011682016040523d82523d5f602084013e6139d9565b606091505b50508094505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a2490614ecc565b5f6040518083038185875af1925050503d805f8114613a5e576040519150601f19603f3d011682016040523d82523d5f602084013e613a63565b606091505b5050809450505050505050505b565b5f8183613a7f9190614105565b905092915050565b5f8183613a949190614173565b905092915050565b505050565b505050565b5f8183613ab39190614bfd565b905092915050565b5f80fd5b5f819050919050565b613ad181613abf565b8114613adb575f80fd5b50565b5f81359050613aec81613ac8565b92915050565b5f8060408385031215613b0857613b07613abb565b5b5f613b1585828601613ade565b9250506020613b2685828601613ade565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613b67578082015181840152602081019050613b4c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613b8c82613b30565b613b968185613b3a565b9350613ba6818560208601613b4a565b613baf81613b72565b840191505092915050565b5f6020820190508181035f830152613bd28184613b82565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613c0382613bda565b9050919050565b613c1381613bf9565b8114613c1d575f80fd5b50565b5f81359050613c2e81613c0a565b92915050565b5f8060408385031215613c4a57613c49613abb565b5b5f613c5785828601613c20565b9250506020613c6885828601613ade565b9150509250929050565b5f8115159050919050565b613c8681613c72565b82525050565b5f602082019050613c9f5f830184613c7d565b92915050565b5f819050919050565b5f613cc8613cc3613cbe84613bda565b613ca5565b613bda565b9050919050565b5f613cd982613cae565b9050919050565b5f613cea82613ccf565b9050919050565b613cfa81613ce0565b82525050565b5f602082019050613d135f830184613cf1565b92915050565b613d2281613abf565b82525050565b5f602082019050613d3b5f830184613d19565b92915050565b5f60208284031215613d5657613d55613abb565b5b5f613d6384828501613ade565b91505092915050565b5f805f60608486031215613d8357613d82613abb565b5b5f613d9086828701613c20565b9350506020613da186828701613c20565b9250506040613db286828701613ade565b9150509250925092565b613dc581613bf9565b82525050565b5f602082019050613dde5f830184613dbc565b92915050565b5f60ff82169050919050565b613df981613de4565b82525050565b5f602082019050613e125f830184613df0565b92915050565b5f60208284031215613e2d57613e2c613abb565b5b5f613e3a84828501613c20565b91505092915050565b613e4c81613c72565b8114613e56575f80fd5b50565b5f81359050613e6781613e43565b92915050565b5f8060408385031215613e8357613e82613abb565b5b5f613e9085828601613c20565b9250506020613ea185828601613e59565b9150509250929050565b5f60208284031215613ec057613ebf613abb565b5b5f613ecd84828501613e59565b91505092915050565b5f805f8060808587031215613eee57613eed613abb565b5b5f613efb87828801613ade565b9450506020613f0c87828801613ade565b9350506040613f1d87828801613ade565b9250506060613f2e87828801613ade565b91505092959194509250565b5f8060408385031215613f5057613f4f613abb565b5b5f613f5d85828601613c20565b9250506020613f6e85828601613c20565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613fac602083613b3a565b9150613fb782613f78565b602082019050919050565b5f6020820190508181035f830152613fd981613fa0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61401782613abf565b915061402283613abf565b925082820190508082111561403a57614039613fe0565b5b92915050565b7f4d757374206b656570206665657320617420373525206f72206c6573730000005f82015250565b5f614074601d83613b3a565b915061407f82614040565b602082019050919050565b5f6020820190508181035f8301526140a181614068565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806140ec57607f821691505b6020821081036140ff576140fe6140a8565b5b50919050565b5f61410f82613abf565b915061411a83613abf565b925082820261412881613abf565b9150828204841483151761413f5761413e613fe0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61417d82613abf565b915061418883613abf565b92508261419857614197614146565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f6141d7602083613b3a565b91506141e2826141a3565b602082019050919050565b5f6020820190508181035f830152614204816141cb565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e5f8201527f20302e3525000000000000000000000000000000000000000000000000000000602082015250565b5f614265602583613b3a565b91506142708261420b565b604082019050919050565b5f6020820190508181035f83015261429281614259565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6142f3602883613b3a565b91506142fe82614299565b604082019050919050565b5f6020820190508181035f830152614320816142e7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614381603983613b3a565b915061438c82614327565b604082019050919050565b5f6020820190508181035f8301526143ae81614375565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61440f602583613b3a565b915061441a826143b5565b604082019050919050565b5f6020820190508181035f83015261443c81614403565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f614477600c83613b3a565b915061448282614443565b602082019050919050565b5f6020820190508181035f8301526144a48161446b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614505603583613b3a565b9150614510826144ab565b604082019050919050565b5f6020820190508181035f830152614532816144f9565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614593603483613b3a565b915061459e82614539565b604082019050919050565b5f6020820190508181035f8301526145c081614587565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614621602683613b3a565b915061462c826145c7565b604082019050919050565b5f6020820190508181035f83015261464e81614615565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6146af602483613b3a565b91506146ba82614655565b604082019050919050565b5f6020820190508181035f8301526146dc816146a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61473d602283613b3a565b9150614748826146e3565b604082019050919050565b5f6020820190508181035f83015261476a81614731565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6147cb602583613b3a565b91506147d682614771565b604082019050919050565b5f6020820190508181035f8301526147f8816147bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614859602383613b3a565b9150614864826147ff565b604082019050919050565b5f6020820190508181035f8301526148868161484d565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f6148c1601183613b3a565b91506148cc8261488d565b602082019050919050565b5f6020820190508181035f8301526148ee816148b5565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f614929600f83613b3a565b9150614934826148f5565b602082019050919050565b5f6020820190508181035f8301526149568161491d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614991601683613b3a565b915061499c8261495d565b602082019050919050565b5f6020820190508181035f8301526149be81614985565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614a45604983613b3a565b9150614a50826149c5565b606082019050919050565b5f6020820190508181035f830152614a7281614a39565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614ad3602683613b3a565b9150614ade82614a79565b604082019050919050565b5f6020820190508181035f830152614b0081614ac7565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614b3b601383613b3a565b9150614b4682614b07565b602082019050919050565b5f6020820190508181035f830152614b6881614b2f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614bc9602783613b3a565b9150614bd482614b6f565b604082019050919050565b5f6020820190508181035f830152614bf681614bbd565b9050919050565b5f614c0782613abf565b9150614c1283613abf565b9250828203905081811115614c2a57614c29613fe0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614c9881613c0a565b92915050565b5f60208284031215614cb357614cb2613abb565b5b5f614cc084828501614c8a565b91505092915050565b5f819050919050565b5f614cec614ce7614ce284614cc9565b613ca5565b613abf565b9050919050565b614cfc81614cd2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614d3481613bf9565b82525050565b5f614d458383614d2b565b60208301905092915050565b5f602082019050919050565b5f614d6782614d02565b614d718185614d0c565b9350614d7c83614d1c565b805f5b83811015614dac578151614d938882614d3a565b9750614d9e83614d51565b925050600181019050614d7f565b5085935050505092915050565b5f60a082019050614dcc5f830188613d19565b614dd96020830187614cf3565b8181036040830152614deb8186614d5d565b9050614dfa6060830185613dbc565b614e076080830184613d19565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e6b602683613b3a565b9150614e7682614e11565b604082019050919050565b5f6020820190508181035f830152614e9881614e5f565b9050919050565b5f81905092915050565b50565b5f614eb75f83614e9f565b9150614ec282614ea9565b5f82019050919050565b5f614ed682614eac565b915081905091905056fea2646970667358221220c5cdbdf1b654254a2093a813722c8d7a3c50f614d2e6963bad62efe8641cf33d64736f6c63430008170033
Deployed Bytecode
0x60806040526004361061031d575f3560e01c80638a8c523c116101aa578063b70143c9116100f6578063d85ba06311610094578063e6819ba71161006e578063e6819ba714610ba8578063e884f26014610be4578063f1b9ad6b14610c0e578063f2fde38b14610c3657610324565b8063d85ba06314610b18578063dd62ed3e14610b42578063e2f4560514610b7e57610324565b8063c0246668116100d0578063c024666814610a62578063c6616ba114610a8a578063c876d0b914610ab2578063d257b34f14610adc57610324565b8063b70143c9146109e8578063b819a1a914610a10578063bbc0c74214610a3857610324565b80639c3b4fdc11610163578063a457c2d71161013d578063a457c2d71461090a578063a72f458614610946578063a9059cbb14610970578063b62496f5146109ac57610324565b80639c3b4fdc1461088c5780639fccce32146108b6578063a0d82dc5146108e057610324565b80638a8c523c146107a85780638da5cb5b146107be57806392136913146107e8578063924de9b71461081257806395d89b411461083a5780639a7a23d61461086457610324565b806349bd5a5e116102695780636a486a8e11610222578063715018a6116101fc578063715018a6146107145780637437681e1461072a578063751039fc146107545780637bce5a041461077e57610324565b80636a486a8e146106845780636ddd1713146106ae57806370a08231146106d857610324565b806349bd5a5e1461057a5780634a62bb65146105a45780634fbee193146105ce57806361528e271461060a578063644130d81461063457806366ca9b831461065c57610324565b8063217580a2116102d657806330a136ad116102b057806330a136ad146104c05780633103b39e146104ea578063313ce56714610514578063395093511461053e57610324565b8063217580a21461043257806323b872dd1461045a57806327c8f8351461049657610324565b806302dbd8f81461032857806306fdde0314610350578063095ea7b31461037a5780631694505e146103b657806318160ddd146103e0578063203e727e1461040a57610324565b3661032457005b5f80fd5b348015610333575f80fd5b5061034e60048036038101906103499190613af2565b610c5e565b005b34801561035b575f80fd5b50610364610d48565b6040516103719190613bba565b60405180910390f35b348015610385575f80fd5b506103a0600480360381019061039b9190613c34565b610dd8565b6040516103ad9190613c8c565b60405180910390f35b3480156103c1575f80fd5b506103ca610df5565b6040516103d79190613d00565b60405180910390f35b3480156103eb575f80fd5b506103f4610e19565b6040516104019190613d28565b60405180910390f35b348015610415575f80fd5b50610430600480360381019061042b9190613d41565b610e22565b005b34801561043d575f80fd5b5061045860048036038101906104539190613d41565b610f31565b005b348015610465575f80fd5b50610480600480360381019061047b9190613d6c565b611040565b60405161048d9190613c8c565b60405180910390f35b3480156104a1575f80fd5b506104aa611132565b6040516104b79190613dcb565b60405180910390f35b3480156104cb575f80fd5b506104d4611138565b6040516104e19190613d28565b60405180910390f35b3480156104f5575f80fd5b506104fe61113e565b60405161050b9190613dcb565b60405180910390f35b34801561051f575f80fd5b50610528611163565b6040516105359190613dff565b60405180910390f35b348015610549575f80fd5b50610564600480360381019061055f9190613c34565b61116b565b6040516105719190613c8c565b60405180910390f35b348015610585575f80fd5b5061058e611212565b60405161059b9190613dcb565b60405180910390f35b3480156105af575f80fd5b506105b8611237565b6040516105c59190613c8c565b60405180910390f35b3480156105d9575f80fd5b506105f460048036038101906105ef9190613e18565b611249565b6040516106019190613c8c565b60405180910390f35b348015610615575f80fd5b5061061e61129b565b60405161062b9190613d28565b60405180910390f35b34801561063f575f80fd5b5061065a60048036038101906106559190613e6d565b6112a1565b005b348015610667575f80fd5b50610682600480360381019061067d9190613af2565b611375565b005b34801561068f575f80fd5b5061069861145f565b6040516106a59190613d28565b60405180910390f35b3480156106b9575f80fd5b506106c2611465565b6040516106cf9190613c8c565b60405180910390f35b3480156106e3575f80fd5b506106fe60048036038101906106f99190613e18565b611478565b60405161070b9190613d28565b60405180910390f35b34801561071f575f80fd5b506107286114bd565b005b348015610735575f80fd5b5061073e611544565b60405161074b9190613d28565b60405180910390f35b34801561075f575f80fd5b5061076861154a565b6040516107759190613c8c565b60405180910390f35b348015610789575f80fd5b506107926115e7565b60405161079f9190613d28565b60405180910390f35b3480156107b3575f80fd5b506107bc6115ed565b005b3480156107c9575f80fd5b506107d26116a1565b6040516107df9190613dcb565b60405180910390f35b3480156107f3575f80fd5b506107fc6116c9565b6040516108099190613d28565b60405180910390f35b34801561081d575f80fd5b5061083860048036038101906108339190613eab565b6116cf565b005b348015610845575f80fd5b5061084e611768565b60405161085b9190613bba565b60405180910390f35b34801561086f575f80fd5b5061088a60048036038101906108859190613e6d565b6117f8565b005b348015610897575f80fd5b506108a0611911565b6040516108ad9190613d28565b60405180910390f35b3480156108c1575f80fd5b506108ca611917565b6040516108d79190613d28565b60405180910390f35b3480156108eb575f80fd5b506108f461191d565b6040516109019190613d28565b60405180910390f35b348015610915575f80fd5b50610930600480360381019061092b9190613c34565b611923565b60405161093d9190613c8c565b60405180910390f35b348015610951575f80fd5b5061095a611a09565b6040516109679190613dcb565b60405180910390f35b34801561097b575f80fd5b5061099660048036038101906109919190613c34565b611a2e565b6040516109a39190613c8c565b60405180910390f35b3480156109b7575f80fd5b506109d260048036038101906109cd9190613e18565b611a4b565b6040516109df9190613c8c565b60405180910390f35b3480156109f3575f80fd5b50610a0e6004803603810190610a099190613d41565b611a68565b005b348015610a1b575f80fd5b50610a366004803603810190610a319190613e18565b611b29565b005b348015610a43575f80fd5b50610a4c611c63565b604051610a599190613c8c565b60405180910390f35b348015610a6d575f80fd5b50610a886004803603810190610a839190613e6d565b611c76565b005b348015610a95575f80fd5b50610ab06004803603810190610aab9190613ed6565b611d98565b005b348015610abd575f80fd5b50610ac6611eee565b604051610ad39190613c8c565b60405180910390f35b348015610ae7575f80fd5b50610b026004803603810190610afd9190613d41565b611f00565b604051610b0f9190613c8c565b60405180910390f35b348015610b23575f80fd5b50610b2c612054565b604051610b399190613d28565b60405180910390f35b348015610b4d575f80fd5b50610b686004803603810190610b639190613f3a565b61205a565b604051610b759190613d28565b60405180910390f35b348015610b89575f80fd5b50610b926120dc565b604051610b9f9190613d28565b60405180910390f35b348015610bb3575f80fd5b50610bce6004803603810190610bc99190613e18565b6120e2565b604051610bdb9190613c8c565b60405180910390f35b348015610bef575f80fd5b50610bf86120ff565b604051610c059190613c8c565b60405180910390f35b348015610c19575f80fd5b50610c346004803603810190610c2f9190613e18565b61219c565b005b348015610c41575f80fd5b50610c5c6004803603810190610c579190613e18565b6122d6565b005b610c666123cc565b73ffffffffffffffffffffffffffffffffffffffff16610c846116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190613fc2565b60405180910390fd5b8160138190555080601481905550601454601354610cf8919061400d565b601281905550604b6012541115610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b9061408a565b60405180910390fd5b5050565b606060038054610d57906140d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d83906140d5565b8015610dce5780601f10610da557610100808354040283529160200191610dce565b820191905f5260205f20905b815481529060010190602001808311610db157829003601f168201915b5050505050905090565b5f610deb610de46123cc565b84846123d3565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610e2a6123cc565b73ffffffffffffffffffffffffffffffffffffffff16610e486116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590613fc2565b60405180910390fd5b670de0b6b3a76400006103e86001610eb4610e19565b610ebe9190614105565b610ec89190614173565b610ed29190614173565b811015610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b906141ed565b60405180910390fd5b670de0b6b3a764000081610f289190614105565b60098190555050565b610f396123cc565b73ffffffffffffffffffffffffffffffffffffffff16610f576116a1565b73ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490613fc2565b60405180910390fd5b670de0b6b3a76400006103e86005610fc3610e19565b610fcd9190614105565b610fd79190614173565b610fe19190614173565b811015611023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101a9061427b565b60405180910390fd5b670de0b6b3a7640000816110379190614105565b600b8190555050565b5f61104c848484612596565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6110936123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110990614309565b60405180910390fd5b6111268561111e6123cc565b8584036123d3565b60019150509392505050565b61dead81565b600b5481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f6112086111776123cc565b848460015f6111846123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611203919061400d565b6123d3565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60155481565b6112a96123cc565b73ffffffffffffffffffffffffffffffffffffffff166112c76116a1565b73ffffffffffffffffffffffffffffffffffffffff161461131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131490613fc2565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61137d6123cc565b73ffffffffffffffffffffffffffffffffffffffff1661139b6116a1565b73ffffffffffffffffffffffffffffffffffffffff16146113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613fc2565b60405180910390fd5b816010819055508060118190555060115460105461140f919061400d565b600f81905550604b600f54111561145b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114529061408a565b60405180910390fd5b5050565b60125481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6114c56123cc565b73ffffffffffffffffffffffffffffffffffffffff166114e36116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153090613fc2565b60405180910390fd5b6115425f61329a565b565b60095481565b5f6115536123cc565b73ffffffffffffffffffffffffffffffffffffffff166115716116a1565b73ffffffffffffffffffffffffffffffffffffffff16146115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be90613fc2565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b60105481565b6115f56123cc565b73ffffffffffffffffffffffffffffffffffffffff166116136116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166090613fc2565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6116d76123cc565b73ffffffffffffffffffffffffffffffffffffffff166116f56116a1565b73ffffffffffffffffffffffffffffffffffffffff161461174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613fc2565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611777906140d5565b80601f01602080910402602001604051908101604052809291908181526020018280546117a3906140d5565b80156117ee5780601f106117c5576101008083540402835291602001916117ee565b820191905f5260205f20905b8154815290600101906020018083116117d157829003601f168201915b5050505050905090565b6118006123cc565b73ffffffffffffffffffffffffffffffffffffffff1661181e6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186b90613fc2565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90614397565b60405180910390fd5b61190d828261335d565b5050565b60115481565b60165481565b60145481565b5f8060015f6119306123cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e190614425565b60405180910390fd5b6119fe6119f56123cc565b858584036123d3565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a41611a3a6123cc565b8484612596565b6001905092915050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611aa86123cc565b73ffffffffffffffffffffffffffffffffffffffff1614611ac7575f80fd5b611ad030611478565b8111158015611ade57505f81115b611b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b149061448d565b60405180910390fd5b611b26816133fb565b50565b611b316123cc565b73ffffffffffffffffffffffffffffffffffffffff16611b4f6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613fc2565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f9e3da7e72199adc414f24e73d3985f288cce5edbc5c370e29af583afdd78c2c260405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60019054906101000a900460ff1681565b611c7e6123cc565b73ffffffffffffffffffffffffffffffffffffffff16611c9c6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce990613fc2565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d8c9190613c8c565b60405180910390a25050565b611da06123cc565b73ffffffffffffffffffffffffffffffffffffffff16611dbe6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b90613fc2565b60405180910390fd5b8360108190555082601181905550601154601054611e32919061400d565b600f819055508160138190555080601481905550601454601354611e56919061400d565b601281905550604b600f541115611ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e999061408a565b60405180910390fd5b604b6012541115611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf9061408a565b60405180910390fd5b50505050565b600e5f9054906101000a900460ff1681565b5f611f096123cc565b73ffffffffffffffffffffffffffffffffffffffff16611f276116a1565b73ffffffffffffffffffffffffffffffffffffffff1614611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490613fc2565b60405180910390fd5b620186a06001611f8b610e19565b611f959190614105565b611f9f9190614173565b821015611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd89061451b565b60405180910390fd5b6103e86005611fee610e19565b611ff89190614105565b6120029190614173565b821115612044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203b906145a9565b60405180910390fd5b81600a8190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f6121086123cc565b73ffffffffffffffffffffffffffffffffffffffff166121266116a1565b73ffffffffffffffffffffffffffffffffffffffff161461217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217390613fc2565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b6121a46123cc565b73ffffffffffffffffffffffffffffffffffffffff166121c26116a1565b73ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90613fc2565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f455cf943964d06e77e44126ecca5a66b2c9721f4576a31f8693127282c55700f60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122de6123cc565b73ffffffffffffffffffffffffffffffffffffffff166122fc6116a1565b73ffffffffffffffffffffffffffffffffffffffff1614612352576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234990613fc2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b790614637565b60405180910390fd5b6123c98161329a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612438906146c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690614753565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125899190613d28565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb906147e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612672576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126699061486f565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f3906148d7565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d9061493f565b60405180910390fd5b5f810361279d5761279883835f61362e565b613295565b600c5f9054906101000a900460ff1615612e45576127b96116a1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561282757506127f76116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612899575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128b25750600660149054906101000a900460ff16155b15612e4457600c60019054906101000a900460ff166129a65760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612966575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6129a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299c906149a7565b60405180910390fd5b5b600e5f9054906101000a900460ff1615612b6a576129c26116a1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612a4957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612aa2575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b695743600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1d90614a5b565b60405180910390fd5b43600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c07575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cae57600954811115612c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4890614ae9565b60405180910390fd5b600b54612c5d83611478565b82612c68919061400d565b1115612ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca090614b51565b60405180910390fd5b612e43565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612d4b575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d9a57600954811115612d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8c90614bdf565b60405180910390fd5b612e42565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e4157600b54612df483611478565b82612dff919061400d565b1115612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3790614b51565b60405180910390fd5b5b5b5b5b5b5f612e4f30611478565b90505f600a548210159050808015612e735750600c60029054906101000a900460ff165b8015612e8c5750600660149054906101000a900460ff16155b8015612edf5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f32575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f85575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612fc8576001600660146101000a81548160ff021916908315150217905550612fad6138a3565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613077575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613080575f90505b5f811561328557601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156130de57505f601254115b156131765761310b60646130fd60125488613a7290919063ffffffff16565b613a8790919063ffffffff16565b90506012546014548261311e9190614105565b6131289190614173565b60165f828254613138919061400d565b92505081905550601254601354826131509190614105565b61315a9190614173565b60155f82825461316a919061400d565b92505081905550613262565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131cd57505f600f54115b15613261576131fa60646131ec600f5488613a7290919063ffffffff16565b613a8790919063ffffffff16565b9050600f546011548261320d9190614105565b6132179190614173565b60165f828254613227919061400d565b92505081905550600f546010548261323f9190614105565b6132499190614173565b60155f828254613259919061400d565b925050819055505b5b5f8111156132765761327587308361362e565b5b80856132829190614bfd565b94505b61329087878761362e565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff81111561341757613416614c30565b5b6040519080825280602002602001820160405280156134455781602001602082028036833780820191505090505b50905030815f8151811061345c5761345b614c5d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135239190614c9e565b8160018151811061353757613536614c5d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061359c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846123d3565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016135fd959493929190614db9565b5f604051808303815f87803b158015613614575f80fd5b505af1158015613626573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361369c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613693906147e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361370a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137019061486f565b60405180910390fd5b613715838383613a9c565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378f90614e81565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254613826919061400d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388a9190613d28565b60405180910390a361389d848484613aa1565b50505050565b5f6138ad30611478565b90505f6016546015546138c0919061400d565b90505f8083036138d257505050613a70565b6014600a546138e19190614105565b8311156138fa576014600a546138f79190614105565b92505b5f479050613907846133fb565b5f61391b8247613aa690919063ffffffff16565b90505f6139458561393760165485613a7290919063ffffffff16565b613a8790919063ffffffff16565b90505f6015819055505f60168190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161399a90614ecc565b5f6040518083038185875af1925050503d805f81146139d4576040519150601f19603f3d011682016040523d82523d5f602084013e6139d9565b606091505b50508094505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a2490614ecc565b5f6040518083038185875af1925050503d805f8114613a5e576040519150601f19603f3d011682016040523d82523d5f602084013e613a63565b606091505b5050809450505050505050505b565b5f8183613a7f9190614105565b905092915050565b5f8183613a949190614173565b905092915050565b505050565b505050565b5f8183613ab39190614bfd565b905092915050565b5f80fd5b5f819050919050565b613ad181613abf565b8114613adb575f80fd5b50565b5f81359050613aec81613ac8565b92915050565b5f8060408385031215613b0857613b07613abb565b5b5f613b1585828601613ade565b9250506020613b2685828601613ade565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613b67578082015181840152602081019050613b4c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613b8c82613b30565b613b968185613b3a565b9350613ba6818560208601613b4a565b613baf81613b72565b840191505092915050565b5f6020820190508181035f830152613bd28184613b82565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613c0382613bda565b9050919050565b613c1381613bf9565b8114613c1d575f80fd5b50565b5f81359050613c2e81613c0a565b92915050565b5f8060408385031215613c4a57613c49613abb565b5b5f613c5785828601613c20565b9250506020613c6885828601613ade565b9150509250929050565b5f8115159050919050565b613c8681613c72565b82525050565b5f602082019050613c9f5f830184613c7d565b92915050565b5f819050919050565b5f613cc8613cc3613cbe84613bda565b613ca5565b613bda565b9050919050565b5f613cd982613cae565b9050919050565b5f613cea82613ccf565b9050919050565b613cfa81613ce0565b82525050565b5f602082019050613d135f830184613cf1565b92915050565b613d2281613abf565b82525050565b5f602082019050613d3b5f830184613d19565b92915050565b5f60208284031215613d5657613d55613abb565b5b5f613d6384828501613ade565b91505092915050565b5f805f60608486031215613d8357613d82613abb565b5b5f613d9086828701613c20565b9350506020613da186828701613c20565b9250506040613db286828701613ade565b9150509250925092565b613dc581613bf9565b82525050565b5f602082019050613dde5f830184613dbc565b92915050565b5f60ff82169050919050565b613df981613de4565b82525050565b5f602082019050613e125f830184613df0565b92915050565b5f60208284031215613e2d57613e2c613abb565b5b5f613e3a84828501613c20565b91505092915050565b613e4c81613c72565b8114613e56575f80fd5b50565b5f81359050613e6781613e43565b92915050565b5f8060408385031215613e8357613e82613abb565b5b5f613e9085828601613c20565b9250506020613ea185828601613e59565b9150509250929050565b5f60208284031215613ec057613ebf613abb565b5b5f613ecd84828501613e59565b91505092915050565b5f805f8060808587031215613eee57613eed613abb565b5b5f613efb87828801613ade565b9450506020613f0c87828801613ade565b9350506040613f1d87828801613ade565b9250506060613f2e87828801613ade565b91505092959194509250565b5f8060408385031215613f5057613f4f613abb565b5b5f613f5d85828601613c20565b9250506020613f6e85828601613c20565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613fac602083613b3a565b9150613fb782613f78565b602082019050919050565b5f6020820190508181035f830152613fd981613fa0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61401782613abf565b915061402283613abf565b925082820190508082111561403a57614039613fe0565b5b92915050565b7f4d757374206b656570206665657320617420373525206f72206c6573730000005f82015250565b5f614074601d83613b3a565b915061407f82614040565b602082019050919050565b5f6020820190508181035f8301526140a181614068565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806140ec57607f821691505b6020821081036140ff576140fe6140a8565b5b50919050565b5f61410f82613abf565b915061411a83613abf565b925082820261412881613abf565b9150828204841483151761413f5761413e613fe0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61417d82613abf565b915061418883613abf565b92508261419857614197614146565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f6141d7602083613b3a565b91506141e2826141a3565b602082019050919050565b5f6020820190508181035f830152614204816141cb565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e5f8201527f20302e3525000000000000000000000000000000000000000000000000000000602082015250565b5f614265602583613b3a565b91506142708261420b565b604082019050919050565b5f6020820190508181035f83015261429281614259565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6142f3602883613b3a565b91506142fe82614299565b604082019050919050565b5f6020820190508181035f830152614320816142e7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614381603983613b3a565b915061438c82614327565b604082019050919050565b5f6020820190508181035f8301526143ae81614375565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61440f602583613b3a565b915061441a826143b5565b604082019050919050565b5f6020820190508181035f83015261443c81614403565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f614477600c83613b3a565b915061448282614443565b602082019050919050565b5f6020820190508181035f8301526144a48161446b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614505603583613b3a565b9150614510826144ab565b604082019050919050565b5f6020820190508181035f830152614532816144f9565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614593603483613b3a565b915061459e82614539565b604082019050919050565b5f6020820190508181035f8301526145c081614587565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614621602683613b3a565b915061462c826145c7565b604082019050919050565b5f6020820190508181035f83015261464e81614615565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6146af602483613b3a565b91506146ba82614655565b604082019050919050565b5f6020820190508181035f8301526146dc816146a3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61473d602283613b3a565b9150614748826146e3565b604082019050919050565b5f6020820190508181035f83015261476a81614731565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6147cb602583613b3a565b91506147d682614771565b604082019050919050565b5f6020820190508181035f8301526147f8816147bf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614859602383613b3a565b9150614864826147ff565b604082019050919050565b5f6020820190508181035f8301526148868161484d565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f6148c1601183613b3a565b91506148cc8261488d565b602082019050919050565b5f6020820190508181035f8301526148ee816148b5565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f614929600f83613b3a565b9150614934826148f5565b602082019050919050565b5f6020820190508181035f8301526149568161491d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614991601683613b3a565b915061499c8261495d565b602082019050919050565b5f6020820190508181035f8301526149be81614985565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614a45604983613b3a565b9150614a50826149c5565b606082019050919050565b5f6020820190508181035f830152614a7281614a39565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614ad3602683613b3a565b9150614ade82614a79565b604082019050919050565b5f6020820190508181035f830152614b0081614ac7565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614b3b601383613b3a565b9150614b4682614b07565b602082019050919050565b5f6020820190508181035f830152614b6881614b2f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614bc9602783613b3a565b9150614bd482614b6f565b604082019050919050565b5f6020820190508181035f830152614bf681614bbd565b9050919050565b5f614c0782613abf565b9150614c1283613abf565b9250828203905081811115614c2a57614c29613fe0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614c9881613c0a565b92915050565b5f60208284031215614cb357614cb2613abb565b5b5f614cc084828501614c8a565b91505092915050565b5f819050919050565b5f614cec614ce7614ce284614cc9565b613ca5565b613abf565b9050919050565b614cfc81614cd2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614d3481613bf9565b82525050565b5f614d458383614d2b565b60208301905092915050565b5f602082019050919050565b5f614d6782614d02565b614d718185614d0c565b9350614d7c83614d1c565b805f5b83811015614dac578151614d938882614d3a565b9750614d9e83614d51565b925050600181019050614d7f565b5085935050505092915050565b5f60a082019050614dcc5f830188613d19565b614dd96020830187614cf3565b8181036040830152614deb8186614d5d565b9050614dfa6060830185613dbc565b614e076080830184613d19565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e6b602683613b3a565b9150614e7682614e11565b604082019050919050565b5f6020820190508181035f830152614e9881614e5f565b9050919050565b5f81905092915050565b50565b5f614eb75f83614e9f565b9150614ec282614ea9565b5f82019050919050565b5f614ed682614eac565b915081905091905056fea2646970667358221220c5cdbdf1b654254a2093a813722c8d7a3c50f614d2e6963bad62efe8641cf33d64736f6c63430008170033
Deployed Bytecode Sourcemap
15205:13180:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21209:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2902:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3816:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15282:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3223:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19513:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19766:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3993:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15375:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15604:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15503;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3122:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4493:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15340:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15638:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22611:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16144:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20033:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20890:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16037:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15718:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3339:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1024:103;;;;;;;;;;;;;:::i;:::-;;15537:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18736:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15967:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18616:112;;;;;;;;;;;;;:::i;:::-;;801:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16072:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20184:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3010:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21725:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16004:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16182:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16110:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4716:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15467:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3474:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16386:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26738:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22442:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15678:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21535:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20292:590;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15884:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19008:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15933:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3657:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15564:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16329:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18865:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22233:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21209:318;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21347:13:::1;21328:16;:32;;;;21384:7;21371:10;:20;;;;21437:10;;21418:16;;:29;;;;:::i;:::-;21402:13;:45;;;;21483:2;21466:13;;:19;;21458:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;21209:318:::0;;:::o;2902:100::-;2956:13;2989:5;2982:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2902:100;:::o;3816:169::-;3899:4;3916:39;3925:12;:10;:12::i;:::-;3939:7;3948:6;3916:8;:39::i;:::-;3973:4;3966:11;;3816:169;;;;:::o;15282:51::-;;;:::o;3223:108::-;3284:7;3311:12;;3304:19;;3223:108;:::o;19513:245::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19650:4:::1;19642;19637:1;19621:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19620:26;;;;:::i;:::-;19619:35;;;;:::i;:::-;19609:6;:45;;19587:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;19743:6;19733;:17;;;;:::i;:::-;19725:5;:25;;;;19513:245:::0;:::o;19766:259::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19907:4:::1;19899;19894:1;19878:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19877:26;;;;:::i;:::-;19876:35;;;;:::i;:::-;19866:6;:45;;19844:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;20010:6;20000;:17;;;;:::i;:::-;19987:10;:30;;;;19766:259:::0;:::o;3993:492::-;4133:4;4150:36;4160:6;4168:9;4179:6;4150:9;:36::i;:::-;4199:24;4226:11;:19;4238:6;4226:19;;;;;;;;;;;;;;;:33;4246:12;:10;:12::i;:::-;4226:33;;;;;;;;;;;;;;;;4199:60;;4298:6;4278:16;:26;;4270:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4385:57;4394:6;4402:12;:10;:12::i;:::-;4435:6;4416:16;:25;4385:8;:57::i;:::-;4473:4;4466:11;;;3993:492;;;;;:::o;15375:53::-;15421:6;15375:53;:::o;15604:25::-;;;;:::o;15503:::-;;;;;;;;;;;;;:::o;3122:93::-;3180:5;3205:2;3198:9;;3122:93;:::o;4493:215::-;4581:4;4598:80;4607:12;:10;:12::i;:::-;4621:7;4667:10;4630:11;:25;4642:12;:10;:12::i;:::-;4630:25;;;;;;;;;;;;;;;:34;4656:7;4630:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4598:8;:80::i;:::-;4696:4;4689:11;;4493:215;;;;:::o;15340:28::-;;;;;;;;;;;;;:::o;15638:33::-;;;;;;;;;;;;;:::o;22611:126::-;22677:4;22701:19;:28;22721:7;22701:28;;;;;;;;;;;;;;;;;;;;;;;;;22694:35;;22611:126;;;:::o;16144:31::-;;;;:::o;20033:143::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20164:4:::1;20137:16;:24;20154:6;20137:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20033:143:::0;;:::o;20890:311::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21026:13:::1;21008:15;:31;;;;21062:7;21050:9;:19;;;;21113:9;;21095:15;;:27;;;;:::i;:::-;21080:12;:42;;;;21157:2;21141:12;;:18;;21133:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20890:311:::0;;:::o;16037:28::-;;;;:::o;15718:31::-;;;;;;;;;;;;;:::o;3339:127::-;3413:7;3440:9;:18;3450:7;3440:18;;;;;;;;;;;;;;;;3433:25;;3339:127;;;:::o;1024:103::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1089:30:::1;1116:1;1089:18;:30::i;:::-;1024:103::o:0;15537:20::-;;;;:::o;18736:121::-;18788:4;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18822:5:::1;18805:14;;:22;;;;;;;;;;;;;;;;;;18845:4;18838:11;;18736:121:::0;:::o;15967:30::-;;;;:::o;18616:112::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18687:4:::1;18671:13;;:20;;;;;;;;;;;;;;;;;;18716:4;18702:11;;:18;;;;;;;;;;;;;;;;;;18616:112::o:0;801:87::-;847:7;874:6;;;;;;;;;;;867:13;;801:87;:::o;16072:31::-;;;;:::o;20184:100::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20269:7:::1;20255:11;;:21;;;;;;;;;;;;;;;;;;20184:100:::0;:::o;3010:104::-;3066:13;3099:7;3092:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:104;:::o;21725:304::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21869:13:::1;;;;;;;;;;;21861:21;;:4;:21;;::::0;21839:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21980:41;22009:4;22015:5;21980:28;:41::i;:::-;21725:304:::0;;:::o;16004:24::-;;;;:::o;16182:27::-;;;;:::o;16110:25::-;;;;:::o;4716:413::-;4809:4;4826:24;4853:11;:25;4865:12;:10;:12::i;:::-;4853:25;;;;;;;;;;;;;;;:34;4879:7;4853:34;;;;;;;;;;;;;;;;4826:61;;4926:15;4906:16;:35;;4898:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5019:67;5028:12;:10;:12::i;:::-;5042:7;5070:15;5051:16;:34;5019:8;:67::i;:::-;5117:4;5110:11;;;4716:413;;;;:::o;15467:29::-;;;;;;;;;;;;;:::o;3474:175::-;3560:4;3577:42;3587:12;:10;:12::i;:::-;3601:9;3612:6;3577:9;:42::i;:::-;3637:4;3630:11;;3474:175;;;;:::o;16386:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;26738:222::-;26818:14;;;;;;;;;;;26802:30;;:12;:10;:12::i;:::-;:30;;;26794:39;;;;;;26862:24;26880:4;26862:9;:24::i;:::-;26852:6;:34;;:48;;;;;26899:1;26890:6;:10;26852:48;26844:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26928:24;26945:6;26928:16;:24::i;:::-;26738:222;:::o;22442:161::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22551:10:::1;;;;;;;;;;;22522:40;;22540:9;22522:40;;;;;;;;;;;;22586:9;22573:10;;:22;;;;;;;;;;;;;;;;;;22442:161:::0;:::o;15678:33::-;;;;;;;;;;;;;:::o;21535:182::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21651:8:::1;21620:19;:28;21640:7;21620:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21691:7;21675:34;;;21700:8;21675:34;;;;;;:::i;:::-;;;;;;;;21535:182:::0;;:::o;20292:590::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20491:16:::1;20473:15;:34;;;;20530:10;20518:9;:22;;;;20584:9;;20566:15;;:27;;;;:::i;:::-;20551:12;:42;;;;20623:17;20604:16;:36;;;;20664:11;20651:10;:24;;;;20721:10;;20702:16;;:29;;;;:::i;:::-;20686:13;:45;;;;20766:2;20750:12;;:18;;20742:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20838:2;20821:13;;:19;;20813:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20292:590:::0;;;;:::o;15884:40::-;;;;;;;;;;;;;:::o;19008:497::-;19116:4;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19195:6:::1;19190:1;19174:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19173:28;;;;:::i;:::-;19160:9;:41;;19138:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;19350:4;19345:1;19329:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19328:26;;;;:::i;:::-;19315:9;:39;;19293:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19466:9;19445:18;:30;;;;19493:4;19486:11;;19008:497:::0;;;:::o;15933:27::-;;;;:::o;3657:151::-;3746:7;3773:11;:18;3785:5;3773:18;;;;;;;;;;;;;;;:27;3792:7;3773:27;;;;;;;;;;;;;;;;3766:34;;3657:151;;;;:::o;15564:33::-;;;;:::o;16329:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;18865:135::-;18925:4;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18965:5:::1;18942:20;;:28;;;;;;;;;;;;;;;;;;18988:4;18981:11;;18865:135:::0;:::o;22233:201::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22366:14:::1;;;;;;;;;;;22325:56;;22347:17;22325:56;;;;;;;;;;;;22409:17;22392:14;;:34;;;;;;;;;;;;;;;;;;22233:201:::0;:::o;1135:::-;947:12;:10;:12::i;:::-;936:23;;:7;:5;:7::i;:::-;:23;;;928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1244:1:::1;1224:22;;:8;:22;;::::0;1216:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1300:28;1319:8;1300:18;:28::i;:::-;1135:201:::0;:::o;347:98::-;400:7;427:10;420:17;;347:98;:::o;6884:380::-;7037:1;7020:19;;:5;:19;;;7012:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7118:1;7099:21;;:7;:21;;;7091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7202:6;7172:11;:18;7184:5;7172:18;;;;;;;;;;;;;;;:27;7191:7;7172:27;;;;;;;;;;;;;;;:36;;;;7240:7;7224:32;;7233:5;7224:32;;;7249:6;7224:32;;;;;;:::i;:::-;;;;;;;;6884:380;;;:::o;22795:3820::-;22943:1;22927:18;;:4;:18;;;22919:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23020:1;23006:16;;:2;:16;;;22998:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23082:12;:18;23095:4;23082:18;;;;;;;;;;;;;;;;;;;;;;;;;23081:19;23073:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23142:12;:16;23155:2;23142:16;;;;;;;;;;;;;;;;;;;;;;;;;23141:17;23133:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;23205:1;23195:6;:11;23191:93;;23223:28;23239:4;23245:2;23249:1;23223:15;:28::i;:::-;23266:7;;23191:93;23300:14;;;;;;;;;;;23296:1666;;;23343:7;:5;:7::i;:::-;23335:15;;:4;:15;;;;:49;;;;;23377:7;:5;:7::i;:::-;23371:13;;:2;:13;;;;23335:49;:86;;;;;23419:1;23405:16;;:2;:16;;;;23335:86;:128;;;;;23456:6;23442:21;;:2;:21;;;;23335:128;:158;;;;;23485:8;;;;;;;;;;;23484:9;23335:158;23331:1620;;;23519:13;;;;;;;;;;;23514:150;;23565:19;:25;23585:4;23565:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23594:19;:23;23614:2;23594:23;;;;;;;;;;;;;;;;;;;;;;;;;23565:52;23557:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;23514:150;23820:20;;;;;;;;;;;23816:425;;;23875:7;:5;:7::i;:::-;23869:13;;:2;:13;;;;:47;;;;;23900:15;23886:30;;:2;:30;;;;23869:47;:79;;;;;23934:13;;;;;;;;;;;23920:28;;:2;:28;;;;23869:79;23865:357;;;24027:12;23985:28;:39;24014:9;23985:39;;;;;;;;;;;;;;;;:54;23977:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24186:12;24144:28;:39;24173:9;24144:39;;;;;;;;;;;;;;;:54;;;;23865:357;23816:425;24293:25;:31;24319:4;24293:31;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;24329:16;:20;24346:2;24329:20;;;;;;;;;;;;;;;;;;;;;;;;;24328:21;24293:56;24289:647;;;24392:5;;24382:6;:15;;24374:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24497:10;;24480:13;24490:2;24480:9;:13::i;:::-;24471:6;:22;;;;:::i;:::-;:36;;24463:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24289:647;;;24607:25;:29;24633:2;24607:29;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;24641:16;:22;24658:4;24641:22;;;;;;;;;;;;;;;;;;;;;;;;;24640:23;24607:56;24603:333;;;24706:5;;24696:6;:15;;24688:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24603:333;;;24803:16;:20;24820:2;24803:20;;;;;;;;;;;;;;;;;;;;;;;;;24798:138;;24882:10;;24865:13;24875:2;24865:9;:13::i;:::-;24856:6;:22;;;;:::i;:::-;:36;;24848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24798:138;24603:333;24289:647;23331:1620;23296:1666;24974:28;25005:24;25023:4;25005:9;:24::i;:::-;24974:55;;25040:12;25079:18;;25055:20;:42;;25040:57;;25114:7;:35;;;;;25138:11;;;;;;;;;;;25114:35;:61;;;;;25167:8;;;;;;;;;;;25166:9;25114:61;:110;;;;;25193:25;:31;25219:4;25193:31;;;;;;;;;;;;;;;;;;;;;;;;;25192:32;25114:110;:153;;;;;25242:19;:25;25262:4;25242:25;;;;;;;;;;;;;;;;;;;;;;;;;25241:26;25114:153;:194;;;;;25285:19;:23;25305:2;25285:23;;;;;;;;;;;;;;;;;;;;;;;;;25284:24;25114:194;25110:302;;;25336:4;25325:8;;:15;;;;;;;;;;;;;;;;;;25357:10;:8;:10::i;:::-;25395:5;25384:8;;:16;;;;;;;;;;;;;;;;;;25110:302;25424:12;25440:8;;;;;;;;;;;25439:9;25424:24;;25550:19;:25;25570:4;25550:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25579:19;:23;25599:2;25579:23;;;;;;;;;;;;;;;;;;;;;;;;;25550:52;25546:100;;;25629:5;25619:15;;25546:100;25658:12;25763:7;25759:803;;;25815:25;:29;25841:2;25815:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25864:1;25848:13;;:17;25815:50;25811:602;;;25893:34;25923:3;25893:25;25904:13;;25893:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25886:41;;25984:13;;25970:10;;25963:4;:17;;;;:::i;:::-;25962:35;;;;:::i;:::-;25946:12;;:51;;;;;;;:::i;:::-;;;;;;;;26064:13;;26044:16;;26037:4;:23;;;;:::i;:::-;26036:41;;;;:::i;:::-;26016:16;;:61;;;;;;;:::i;:::-;;;;;;;;25811:602;;;26139:25;:31;26165:4;26139:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;26189:1;26174:12;;:16;26139:51;26135:278;;;26218:33;26247:3;26218:24;26229:12;;26218:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26211:40;;26307:12;;26294:9;;26287:4;:16;;;;:::i;:::-;26286:33;;;;:::i;:::-;26270:12;;:49;;;;;;;:::i;:::-;;;;;;;;26385:12;;26366:15;;26359:4;:22;;;;:::i;:::-;26358:39;;;;:::i;:::-;26338:16;;:59;;;;;;;:::i;:::-;;;;;;;;26135:278;25811:602;26440:1;26433:4;:8;26429:91;;;26462:42;26478:4;26492;26499;26462:15;:42::i;:::-;26429:91;26546:4;26536:14;;;;;:::i;:::-;;;25759:803;26574:33;26590:4;26596:2;26600:6;26574:15;:33::i;:::-;22908:3707;;;;22795:3820;;;;:::o;1344:191::-;1418:16;1437:6;;;;;;;;;;;1418:25;;1463:8;1454:6;;:17;;;;;;;;;;;;;;;;;;1518:8;1487:40;;1508:8;1487:40;;;;;;;;;;;;1407:128;1344:191;:::o;22037:188::-;22154:5;22120:25;:31;22146:4;22120:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22211:5;22177:40;;22205:4;22177:40;;;;;;;;;;;;22037:188;;:::o;26969:529::-;27035:21;27073:1;27059:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27035:40;;27104:4;27086;27091:1;27086:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27130:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27120:4;27125:1;27120:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27165:62;27182:4;27197:15;27215:11;27165:8;:62::i;:::-;27266:15;:66;;;27347:11;27373:1;27417:4;27444;27464:15;27266:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27024:474;26969:529;:::o;5137:733::-;5295:1;5277:20;;:6;:20;;;5269:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5379:1;5358:23;;:9;:23;;;5350:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5434:47;5455:6;5463:9;5474:6;5434:20;:47::i;:::-;5494:21;5518:9;:17;5528:6;5518:17;;;;;;;;;;;;;;;;5494:41;;5571:6;5554:13;:23;;5546:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5692:6;5676:13;:22;5656:9;:17;5666:6;5656:17;;;;;;;;;;;;;;;:42;;;;5744:6;5720:9;:20;5730:9;5720:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5785:9;5768:35;;5777:6;5768:35;;;5796:6;5768:35;;;;;;:::i;:::-;;;;;;;;5816:46;5836:6;5844:9;5855:6;5816:19;:46::i;:::-;5258:612;5137:733;;;:::o;27506:876::-;27545:23;27571:24;27589:4;27571:9;:24::i;:::-;27545:50;;27606:25;27653:12;;27634:16;;:31;;;;:::i;:::-;27606:59;;27676:12;27724:1;27705:15;:20;27701:59;;27742:7;;;;;27701:59;27815:2;27794:18;;:23;;;;:::i;:::-;27776:15;:41;27772:115;;;27873:2;27852:18;;:23;;;;:::i;:::-;27834:41;;27772:115;27899:25;27927:21;27899:49;;27959:33;27976:15;27959:16;:33::i;:::-;28005:18;28026:44;28052:17;28026:21;:25;;:44;;;;:::i;:::-;28005:65;;28081:17;28101:51;28134:17;28101:28;28116:12;;28101:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;28081:71;;28184:1;28165:16;:20;;;;28211:1;28196:12;:16;;;;28247:10;;;;;;;;;;;28239:24;;28271:9;28239:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28225:60;;;;;28318:14;;;;;;;;;;;28310:28;;28347:21;28310:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28296:78;;;;;27534:848;;;;;;27506:876;:::o;8890:98::-;8948:7;8979:1;8975;:5;;;;:::i;:::-;8968:12;;8890:98;;;;:::o;8996:::-;9054:7;9085:1;9081;:5;;;;:::i;:::-;9074:12;;8996:98;;;;:::o;7272:125::-;;;;:::o;7405:124::-;;;;:::o;8784:98::-;8842:7;8873:1;8869;:5;;;;:::i;:::-;8862:12;;8784:98;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:329::-;5315:6;5364:2;5352:9;5343:7;5339:23;5335:32;5332:119;;;5370:79;;:::i;:::-;5332:119;5490:1;5515:53;5560:7;5551:6;5540:9;5536:22;5515:53;:::i;:::-;5505:63;;5461:117;5256:329;;;;:::o;5591:619::-;5668:6;5676;5684;5733:2;5721:9;5712:7;5708:23;5704:32;5701:119;;;5739:79;;:::i;:::-;5701:119;5859:1;5884:53;5929:7;5920:6;5909:9;5905:22;5884:53;:::i;:::-;5874:63;;5830:117;5986:2;6012:53;6057:7;6048:6;6037:9;6033:22;6012:53;:::i;:::-;6002:63;;5957:118;6114:2;6140:53;6185:7;6176:6;6165:9;6161:22;6140:53;:::i;:::-;6130:63;;6085:118;5591:619;;;;;:::o;6216:118::-;6303:24;6321:5;6303:24;:::i;:::-;6298:3;6291:37;6216:118;;:::o;6340:222::-;6433:4;6471:2;6460:9;6456:18;6448:26;;6484:71;6552:1;6541:9;6537:17;6528:6;6484:71;:::i;:::-;6340:222;;;;:::o;6568:86::-;6603:7;6643:4;6636:5;6632:16;6621:27;;6568:86;;;:::o;6660:112::-;6743:22;6759:5;6743:22;:::i;:::-;6738:3;6731:35;6660:112;;:::o;6778:214::-;6867:4;6905:2;6894:9;6890:18;6882:26;;6918:67;6982:1;6971:9;6967:17;6958:6;6918:67;:::i;:::-;6778:214;;;;:::o;6998:329::-;7057:6;7106:2;7094:9;7085:7;7081:23;7077:32;7074:119;;;7112:79;;:::i;:::-;7074:119;7232:1;7257:53;7302:7;7293:6;7282:9;7278:22;7257:53;:::i;:::-;7247:63;;7203:117;6998:329;;;;:::o;7333:116::-;7403:21;7418:5;7403:21;:::i;:::-;7396:5;7393:32;7383:60;;7439:1;7436;7429:12;7383:60;7333:116;:::o;7455:133::-;7498:5;7536:6;7523:20;7514:29;;7552:30;7576:5;7552:30;:::i;:::-;7455:133;;;;:::o;7594:468::-;7659:6;7667;7716:2;7704:9;7695:7;7691:23;7687:32;7684:119;;;7722:79;;:::i;:::-;7684:119;7842:1;7867:53;7912:7;7903:6;7892:9;7888:22;7867:53;:::i;:::-;7857:63;;7813:117;7969:2;7995:50;8037:7;8028:6;8017:9;8013:22;7995:50;:::i;:::-;7985:60;;7940:115;7594:468;;;;;:::o;8068:323::-;8124:6;8173:2;8161:9;8152:7;8148:23;8144:32;8141:119;;;8179:79;;:::i;:::-;8141:119;8299:1;8324:50;8366:7;8357:6;8346:9;8342:22;8324:50;:::i;:::-;8314:60;;8270:114;8068:323;;;;:::o;8397:765::-;8483:6;8491;8499;8507;8556:3;8544:9;8535:7;8531:23;8527:33;8524:120;;;8563:79;;:::i;:::-;8524:120;8683:1;8708:53;8753:7;8744:6;8733:9;8729:22;8708:53;:::i;:::-;8698:63;;8654:117;8810:2;8836:53;8881:7;8872:6;8861:9;8857:22;8836:53;:::i;:::-;8826:63;;8781:118;8938:2;8964:53;9009:7;9000:6;8989:9;8985:22;8964:53;:::i;:::-;8954:63;;8909:118;9066:2;9092:53;9137:7;9128:6;9117:9;9113:22;9092:53;:::i;:::-;9082:63;;9037:118;8397:765;;;;;;;:::o;9168:474::-;9236:6;9244;9293:2;9281:9;9272:7;9268:23;9264:32;9261:119;;;9299:79;;:::i;:::-;9261:119;9419:1;9444:53;9489:7;9480:6;9469:9;9465:22;9444:53;:::i;:::-;9434:63;;9390:117;9546:2;9572:53;9617:7;9608:6;9597:9;9593:22;9572:53;:::i;:::-;9562:63;;9517:118;9168:474;;;;;:::o;9648:182::-;9788:34;9784:1;9776:6;9772:14;9765:58;9648:182;:::o;9836:366::-;9978:3;9999:67;10063:2;10058:3;9999:67;:::i;:::-;9992:74;;10075:93;10164:3;10075:93;:::i;:::-;10193:2;10188:3;10184:12;10177:19;;9836:366;;;:::o;10208:419::-;10374:4;10412:2;10401:9;10397:18;10389:26;;10461:9;10455:4;10451:20;10447:1;10436:9;10432:17;10425:47;10489:131;10615:4;10489:131;:::i;:::-;10481:139;;10208:419;;;:::o;10633:180::-;10681:77;10678:1;10671:88;10778:4;10775:1;10768:15;10802:4;10799:1;10792:15;10819:191;10859:3;10878:20;10896:1;10878:20;:::i;:::-;10873:25;;10912:20;10930:1;10912:20;:::i;:::-;10907:25;;10955:1;10952;10948:9;10941:16;;10976:3;10973:1;10970:10;10967:36;;;10983:18;;:::i;:::-;10967:36;10819:191;;;;:::o;11016:179::-;11156:31;11152:1;11144:6;11140:14;11133:55;11016:179;:::o;11201:366::-;11343:3;11364:67;11428:2;11423:3;11364:67;:::i;:::-;11357:74;;11440:93;11529:3;11440:93;:::i;:::-;11558:2;11553:3;11549:12;11542:19;;11201:366;;;:::o;11573:419::-;11739:4;11777:2;11766:9;11762:18;11754:26;;11826:9;11820:4;11816:20;11812:1;11801:9;11797:17;11790:47;11854:131;11980:4;11854:131;:::i;:::-;11846:139;;11573:419;;;:::o;11998:180::-;12046:77;12043:1;12036:88;12143:4;12140:1;12133:15;12167:4;12164:1;12157:15;12184:320;12228:6;12265:1;12259:4;12255:12;12245:22;;12312:1;12306:4;12302:12;12333:18;12323:81;;12389:4;12381:6;12377:17;12367:27;;12323:81;12451:2;12443:6;12440:14;12420:18;12417:38;12414:84;;12470:18;;:::i;:::-;12414:84;12235:269;12184:320;;;:::o;12510:410::-;12550:7;12573:20;12591:1;12573:20;:::i;:::-;12568:25;;12607:20;12625:1;12607:20;:::i;:::-;12602:25;;12662:1;12659;12655:9;12684:30;12702:11;12684:30;:::i;:::-;12673:41;;12863:1;12854:7;12850:15;12847:1;12844:22;12824:1;12817:9;12797:83;12774:139;;12893:18;;:::i;:::-;12774:139;12558:362;12510:410;;;;:::o;12926:180::-;12974:77;12971:1;12964:88;13071:4;13068:1;13061:15;13095:4;13092:1;13085:15;13112:185;13152:1;13169:20;13187:1;13169:20;:::i;:::-;13164:25;;13203:20;13221:1;13203:20;:::i;:::-;13198:25;;13242:1;13232:35;;13247:18;;:::i;:::-;13232:35;13289:1;13286;13282:9;13277:14;;13112:185;;;;:::o;13303:182::-;13443:34;13439:1;13431:6;13427:14;13420:58;13303:182;:::o;13491:366::-;13633:3;13654:67;13718:2;13713:3;13654:67;:::i;:::-;13647:74;;13730:93;13819:3;13730:93;:::i;:::-;13848:2;13843:3;13839:12;13832:19;;13491:366;;;:::o;13863:419::-;14029:4;14067:2;14056:9;14052:18;14044:26;;14116:9;14110:4;14106:20;14102:1;14091:9;14087:17;14080:47;14144:131;14270:4;14144:131;:::i;:::-;14136:139;;13863:419;;;:::o;14288:224::-;14428:34;14424:1;14416:6;14412:14;14405:58;14497:7;14492:2;14484:6;14480:15;14473:32;14288:224;:::o;14518:366::-;14660:3;14681:67;14745:2;14740:3;14681:67;:::i;:::-;14674:74;;14757:93;14846:3;14757:93;:::i;:::-;14875:2;14870:3;14866:12;14859:19;;14518:366;;;:::o;14890:419::-;15056:4;15094:2;15083:9;15079:18;15071:26;;15143:9;15137:4;15133:20;15129:1;15118:9;15114:17;15107:47;15171:131;15297:4;15171:131;:::i;:::-;15163:139;;14890:419;;;:::o;15315:227::-;15455:34;15451:1;15443:6;15439:14;15432:58;15524:10;15519:2;15511:6;15507:15;15500:35;15315:227;:::o;15548:366::-;15690:3;15711:67;15775:2;15770:3;15711:67;:::i;:::-;15704:74;;15787:93;15876:3;15787:93;:::i;:::-;15905:2;15900:3;15896:12;15889:19;;15548:366;;;:::o;15920:419::-;16086:4;16124:2;16113:9;16109:18;16101:26;;16173:9;16167:4;16163:20;16159:1;16148:9;16144:17;16137:47;16201:131;16327:4;16201:131;:::i;:::-;16193:139;;15920:419;;;:::o;16345:244::-;16485:34;16481:1;16473:6;16469:14;16462:58;16554:27;16549:2;16541:6;16537:15;16530:52;16345:244;:::o;16595:366::-;16737:3;16758:67;16822:2;16817:3;16758:67;:::i;:::-;16751:74;;16834:93;16923:3;16834:93;:::i;:::-;16952:2;16947:3;16943:12;16936:19;;16595:366;;;:::o;16967:419::-;17133:4;17171:2;17160:9;17156:18;17148:26;;17220:9;17214:4;17210:20;17206:1;17195:9;17191:17;17184:47;17248:131;17374:4;17248:131;:::i;:::-;17240:139;;16967:419;;;:::o;17392:224::-;17532:34;17528:1;17520:6;17516:14;17509:58;17601:7;17596:2;17588:6;17584:15;17577:32;17392:224;:::o;17622:366::-;17764:3;17785:67;17849:2;17844:3;17785:67;:::i;:::-;17778:74;;17861:93;17950:3;17861:93;:::i;:::-;17979:2;17974:3;17970:12;17963:19;;17622:366;;;:::o;17994:419::-;18160:4;18198:2;18187:9;18183:18;18175:26;;18247:9;18241:4;18237:20;18233:1;18222:9;18218:17;18211:47;18275:131;18401:4;18275:131;:::i;:::-;18267:139;;17994:419;;;:::o;18419:162::-;18559:14;18555:1;18547:6;18543:14;18536:38;18419:162;:::o;18587:366::-;18729:3;18750:67;18814:2;18809:3;18750:67;:::i;:::-;18743:74;;18826:93;18915:3;18826:93;:::i;:::-;18944:2;18939:3;18935:12;18928:19;;18587:366;;;:::o;18959:419::-;19125:4;19163:2;19152:9;19148:18;19140:26;;19212:9;19206:4;19202:20;19198:1;19187:9;19183:17;19176:47;19240:131;19366:4;19240:131;:::i;:::-;19232:139;;18959:419;;;:::o;19384:240::-;19524:34;19520:1;19512:6;19508:14;19501:58;19593:23;19588:2;19580:6;19576:15;19569:48;19384:240;:::o;19630:366::-;19772:3;19793:67;19857:2;19852:3;19793:67;:::i;:::-;19786:74;;19869:93;19958:3;19869:93;:::i;:::-;19987:2;19982:3;19978:12;19971:19;;19630:366;;;:::o;20002:419::-;20168:4;20206:2;20195:9;20191:18;20183:26;;20255:9;20249:4;20245:20;20241:1;20230:9;20226:17;20219:47;20283:131;20409:4;20283:131;:::i;:::-;20275:139;;20002:419;;;:::o;20427:239::-;20567:34;20563:1;20555:6;20551:14;20544:58;20636:22;20631:2;20623:6;20619:15;20612:47;20427:239;:::o;20672:366::-;20814:3;20835:67;20899:2;20894:3;20835:67;:::i;:::-;20828:74;;20911:93;21000:3;20911:93;:::i;:::-;21029:2;21024:3;21020:12;21013:19;;20672:366;;;:::o;21044:419::-;21210:4;21248:2;21237:9;21233:18;21225:26;;21297:9;21291:4;21287:20;21283:1;21272:9;21268:17;21261:47;21325:131;21451:4;21325:131;:::i;:::-;21317:139;;21044:419;;;:::o;21469:225::-;21609:34;21605:1;21597:6;21593:14;21586:58;21678:8;21673:2;21665:6;21661:15;21654:33;21469:225;:::o;21700:366::-;21842:3;21863:67;21927:2;21922:3;21863:67;:::i;:::-;21856:74;;21939:93;22028:3;21939:93;:::i;:::-;22057:2;22052:3;22048:12;22041:19;;21700:366;;;:::o;22072:419::-;22238:4;22276:2;22265:9;22261:18;22253:26;;22325:9;22319:4;22315:20;22311:1;22300:9;22296:17;22289:47;22353:131;22479:4;22353:131;:::i;:::-;22345:139;;22072:419;;;:::o;22497:223::-;22637:34;22633:1;22625:6;22621:14;22614:58;22706:6;22701:2;22693:6;22689:15;22682:31;22497:223;:::o;22726:366::-;22868:3;22889:67;22953:2;22948:3;22889:67;:::i;:::-;22882:74;;22965:93;23054:3;22965:93;:::i;:::-;23083:2;23078:3;23074:12;23067:19;;22726:366;;;:::o;23098:419::-;23264:4;23302:2;23291:9;23287:18;23279:26;;23351:9;23345:4;23341:20;23337:1;23326:9;23322:17;23315:47;23379:131;23505:4;23379:131;:::i;:::-;23371:139;;23098:419;;;:::o;23523:221::-;23663:34;23659:1;23651:6;23647:14;23640:58;23732:4;23727:2;23719:6;23715:15;23708:29;23523:221;:::o;23750:366::-;23892:3;23913:67;23977:2;23972:3;23913:67;:::i;:::-;23906:74;;23989:93;24078:3;23989:93;:::i;:::-;24107:2;24102:3;24098:12;24091:19;;23750:366;;;:::o;24122:419::-;24288:4;24326:2;24315:9;24311:18;24303:26;;24375:9;24369:4;24365:20;24361:1;24350:9;24346:17;24339:47;24403:131;24529:4;24403:131;:::i;:::-;24395:139;;24122:419;;;:::o;24547:224::-;24687:34;24683:1;24675:6;24671:14;24664:58;24756:7;24751:2;24743:6;24739:15;24732:32;24547:224;:::o;24777:366::-;24919:3;24940:67;25004:2;24999:3;24940:67;:::i;:::-;24933:74;;25016:93;25105:3;25016:93;:::i;:::-;25134:2;25129:3;25125:12;25118:19;;24777:366;;;:::o;25149:419::-;25315:4;25353:2;25342:9;25338:18;25330:26;;25402:9;25396:4;25392:20;25388:1;25377:9;25373:17;25366:47;25430:131;25556:4;25430:131;:::i;:::-;25422:139;;25149:419;;;:::o;25574:222::-;25714:34;25710:1;25702:6;25698:14;25691:58;25783:5;25778:2;25770:6;25766:15;25759:30;25574:222;:::o;25802:366::-;25944:3;25965:67;26029:2;26024:3;25965:67;:::i;:::-;25958:74;;26041:93;26130:3;26041:93;:::i;:::-;26159:2;26154:3;26150:12;26143:19;;25802:366;;;:::o;26174:419::-;26340:4;26378:2;26367:9;26363:18;26355:26;;26427:9;26421:4;26417:20;26413:1;26402:9;26398:17;26391:47;26455:131;26581:4;26455:131;:::i;:::-;26447:139;;26174:419;;;:::o;26599:167::-;26739:19;26735:1;26727:6;26723:14;26716:43;26599:167;:::o;26772:366::-;26914:3;26935:67;26999:2;26994:3;26935:67;:::i;:::-;26928:74;;27011:93;27100:3;27011:93;:::i;:::-;27129:2;27124:3;27120:12;27113:19;;26772:366;;;:::o;27144:419::-;27310:4;27348:2;27337:9;27333:18;27325:26;;27397:9;27391:4;27387:20;27383:1;27372:9;27368:17;27361:47;27425:131;27551:4;27425:131;:::i;:::-;27417:139;;27144:419;;;:::o;27569:165::-;27709:17;27705:1;27697:6;27693:14;27686:41;27569:165;:::o;27740:366::-;27882:3;27903:67;27967:2;27962:3;27903:67;:::i;:::-;27896:74;;27979:93;28068:3;27979:93;:::i;:::-;28097:2;28092:3;28088:12;28081:19;;27740:366;;;:::o;28112:419::-;28278:4;28316:2;28305:9;28301:18;28293:26;;28365:9;28359:4;28355:20;28351:1;28340:9;28336:17;28329:47;28393:131;28519:4;28393:131;:::i;:::-;28385:139;;28112:419;;;:::o;28537:172::-;28677:24;28673:1;28665:6;28661:14;28654:48;28537:172;:::o;28715:366::-;28857:3;28878:67;28942:2;28937:3;28878:67;:::i;:::-;28871:74;;28954:93;29043:3;28954:93;:::i;:::-;29072:2;29067:3;29063:12;29056:19;;28715:366;;;:::o;29087:419::-;29253:4;29291:2;29280:9;29276:18;29268:26;;29340:9;29334:4;29330:20;29326:1;29315:9;29311:17;29304:47;29368:131;29494:4;29368:131;:::i;:::-;29360:139;;29087:419;;;:::o;29512:297::-;29652:34;29648:1;29640:6;29636:14;29629:58;29721:34;29716:2;29708:6;29704:15;29697:59;29790:11;29785:2;29777:6;29773:15;29766:36;29512:297;:::o;29815:366::-;29957:3;29978:67;30042:2;30037:3;29978:67;:::i;:::-;29971:74;;30054:93;30143:3;30054:93;:::i;:::-;30172:2;30167:3;30163:12;30156:19;;29815:366;;;:::o;30187:419::-;30353:4;30391:2;30380:9;30376:18;30368:26;;30440:9;30434:4;30430:20;30426:1;30415:9;30411:17;30404:47;30468:131;30594:4;30468:131;:::i;:::-;30460:139;;30187:419;;;:::o;30612:225::-;30752:34;30748:1;30740:6;30736:14;30729:58;30821:8;30816:2;30808:6;30804:15;30797:33;30612:225;:::o;30843:366::-;30985:3;31006:67;31070:2;31065:3;31006:67;:::i;:::-;30999:74;;31082:93;31171:3;31082:93;:::i;:::-;31200:2;31195:3;31191:12;31184:19;;30843:366;;;:::o;31215:419::-;31381:4;31419:2;31408:9;31404:18;31396:26;;31468:9;31462:4;31458:20;31454:1;31443:9;31439:17;31432:47;31496:131;31622:4;31496:131;:::i;:::-;31488:139;;31215:419;;;:::o;31640:169::-;31780:21;31776:1;31768:6;31764:14;31757:45;31640:169;:::o;31815:366::-;31957:3;31978:67;32042:2;32037:3;31978:67;:::i;:::-;31971:74;;32054:93;32143:3;32054:93;:::i;:::-;32172:2;32167:3;32163:12;32156:19;;31815:366;;;:::o;32187:419::-;32353:4;32391:2;32380:9;32376:18;32368:26;;32440:9;32434:4;32430:20;32426:1;32415:9;32411:17;32404:47;32468:131;32594:4;32468:131;:::i;:::-;32460:139;;32187:419;;;:::o;32612:226::-;32752:34;32748:1;32740:6;32736:14;32729:58;32821:9;32816:2;32808:6;32804:15;32797:34;32612:226;:::o;32844:366::-;32986:3;33007:67;33071:2;33066:3;33007:67;:::i;:::-;33000:74;;33083:93;33172:3;33083:93;:::i;:::-;33201:2;33196:3;33192:12;33185:19;;32844:366;;;:::o;33216:419::-;33382:4;33420:2;33409:9;33405:18;33397:26;;33469:9;33463:4;33459:20;33455:1;33444:9;33440:17;33433:47;33497:131;33623:4;33497:131;:::i;:::-;33489:139;;33216:419;;;:::o;33641:194::-;33681:4;33701:20;33719:1;33701:20;:::i;:::-;33696:25;;33735:20;33753:1;33735:20;:::i;:::-;33730:25;;33779:1;33776;33772:9;33764:17;;33803:1;33797:4;33794:11;33791:37;;;33808:18;;:::i;:::-;33791:37;33641:194;;;;:::o;33841:180::-;33889:77;33886:1;33879:88;33986:4;33983:1;33976:15;34010:4;34007:1;34000:15;34027:180;34075:77;34072:1;34065:88;34172:4;34169:1;34162:15;34196:4;34193:1;34186:15;34213:143;34270:5;34301:6;34295:13;34286:22;;34317:33;34344:5;34317:33;:::i;:::-;34213:143;;;;:::o;34362:351::-;34432:6;34481:2;34469:9;34460:7;34456:23;34452:32;34449:119;;;34487:79;;:::i;:::-;34449:119;34607:1;34632:64;34688:7;34679:6;34668:9;34664:22;34632:64;:::i;:::-;34622:74;;34578:128;34362:351;;;;:::o;34719:85::-;34764:7;34793:5;34782:16;;34719:85;;;:::o;34810:158::-;34868:9;34901:61;34919:42;34928:32;34954:5;34928:32;:::i;:::-;34919:42;:::i;:::-;34901:61;:::i;:::-;34888:74;;34810:158;;;:::o;34974:147::-;35069:45;35108:5;35069:45;:::i;:::-;35064:3;35057:58;34974:147;;:::o;35127:114::-;35194:6;35228:5;35222:12;35212:22;;35127:114;;;:::o;35247:184::-;35346:11;35380:6;35375:3;35368:19;35420:4;35415:3;35411:14;35396:29;;35247:184;;;;:::o;35437:132::-;35504:4;35527:3;35519:11;;35557:4;35552:3;35548:14;35540:22;;35437:132;;;:::o;35575:108::-;35652:24;35670:5;35652:24;:::i;:::-;35647:3;35640:37;35575:108;;:::o;35689:179::-;35758:10;35779:46;35821:3;35813:6;35779:46;:::i;:::-;35857:4;35852:3;35848:14;35834:28;;35689:179;;;;:::o;35874:113::-;35944:4;35976;35971:3;35967:14;35959:22;;35874:113;;;:::o;36023:732::-;36142:3;36171:54;36219:5;36171:54;:::i;:::-;36241:86;36320:6;36315:3;36241:86;:::i;:::-;36234:93;;36351:56;36401:5;36351:56;:::i;:::-;36430:7;36461:1;36446:284;36471:6;36468:1;36465:13;36446:284;;;36547:6;36541:13;36574:63;36633:3;36618:13;36574:63;:::i;:::-;36567:70;;36660:60;36713:6;36660:60;:::i;:::-;36650:70;;36506:224;36493:1;36490;36486:9;36481:14;;36446:284;;;36450:14;36746:3;36739:10;;36147:608;;;36023:732;;;;:::o;36761:831::-;37024:4;37062:3;37051:9;37047:19;37039:27;;37076:71;37144:1;37133:9;37129:17;37120:6;37076:71;:::i;:::-;37157:80;37233:2;37222:9;37218:18;37209:6;37157:80;:::i;:::-;37284:9;37278:4;37274:20;37269:2;37258:9;37254:18;37247:48;37312:108;37415:4;37406:6;37312:108;:::i;:::-;37304:116;;37430:72;37498:2;37487:9;37483:18;37474:6;37430:72;:::i;:::-;37512:73;37580:3;37569:9;37565:19;37556:6;37512:73;:::i;:::-;36761:831;;;;;;;;:::o;37598:225::-;37738:34;37734:1;37726:6;37722:14;37715:58;37807:8;37802:2;37794:6;37790:15;37783:33;37598:225;:::o;37829:366::-;37971:3;37992:67;38056:2;38051:3;37992:67;:::i;:::-;37985:74;;38068:93;38157:3;38068:93;:::i;:::-;38186:2;38181:3;38177:12;38170:19;;37829:366;;;:::o;38201:419::-;38367:4;38405:2;38394:9;38390:18;38382:26;;38454:9;38448:4;38444:20;38440:1;38429:9;38425:17;38418:47;38482:131;38608:4;38482:131;:::i;:::-;38474:139;;38201:419;;;:::o;38626:147::-;38727:11;38764:3;38749:18;;38626:147;;;;:::o;38779:114::-;;:::o;38899:398::-;39058:3;39079:83;39160:1;39155:3;39079:83;:::i;:::-;39072:90;;39171:93;39260:3;39171:93;:::i;:::-;39289:1;39284:3;39280:11;39273:18;;38899:398;;;:::o;39303:379::-;39487:3;39509:147;39652:3;39509:147;:::i;:::-;39502:154;;39673:3;39666:10;;39303:379;;;:::o
Swarm Source
ipfs://c5cdbdf1b654254a2093a813722c8d7a3c50f614d2e6963bad62efe8641cf33d
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.