ERC-20
Overview
Max Total Supply
100,000,000 AIDS
Holders
265
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
25,481.939766885521140592 AIDSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AidsToken
Compiler Version
v0.8.12+commit.f00d7308
Optimization Enabled:
No with 512 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* ███████╗██████╗ ██████╗ ███████╗ █████╗ ██████╗ █████╗ ██╗██████╗ ███████╗ ██╔════╝██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔══██╗ ██╔══██╗██║██╔══██╗██╔════╝ ███████╗██████╔╝██████╔╝█████╗ ███████║██║ ██║ ███████║██║██║ ██║███████╗ ╚════██║██╔═══╝ ██╔══██╗██╔══╝ ██╔══██║██║ ██║ ██╔══██║██║██║ ██║╚════██║ ███████║██║ ██║ ██║███████╗██║ ██║██████╔╝ ██║ ██║██║██████╔╝███████║ ╚══════╝╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚═╝╚═════╝ ╚══════╝ */ /* * * * * * * * * * * * * * * * * * * * * * * * * Website: https://spreadaids.com/ * * Telegram: https://t.me/SpreadingAids * * Twitter: https://twitter.com/etheraids * * * * * * * * * * * * * * * * * * * * * * * * */ // SPDX-License-Identifier: MIT pragma solidity 0.8.12; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } 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) internal _balances; mapping (address => mapping (address => uint256)) internal _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"); _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"); _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"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(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); } 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"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(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 { } } library Address{ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_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 { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract AidsToken is ERC20, Ownable{ using Address for address payable; IRouter public router; address public pair; bool private swapping; bool public swapEnabled; bool public tradingEnabled; uint256 public genesis_block; uint256 public deadblocks = 0; uint256 public swapThreshold = 10_000 * 10e18; uint256 public maxTxAmount = 1_500_000 * 10**18; uint256 public maxWalletAmount = 1_500_000 * 10**18; address public marketingWallet = 0xA541D7C4b725dd762ac8D7e0bA350A9A43c273Df; address public devWallet = 0xA541D7C4b725dd762ac8D7e0bA350A9A43c273Df; struct Taxes { uint256 marketing; uint256 liquidity; uint256 dev; } Taxes public taxes = Taxes(0,0,0); Taxes public sellTaxes = Taxes(0,0,0); uint256 public totTax = 0; uint256 public totSellTax = 0; mapping (address => bool) public excludedFromFees; mapping (address => bool) private isBot; modifier inSwap() { if (!swapping) { swapping = true; _; swapping = false; } } constructor() ERC20("Aids Token", "AIDS") { _mint(msg.sender, 1e8 * 10 ** decimals()); excludedFromFees[msg.sender] = true; IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; excludedFromFees[address(this)] = true; excludedFromFees[marketingWallet] = true; excludedFromFees[devWallet] = true; } function _transfer(address sender, address recipient, uint256 amount) internal override { require(amount > 0, "Transfer amount must be greater than zero"); require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens"); if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){ require(tradingEnabled, "Trading not active yet"); if(genesis_block + deadblocks > block.number){ if(recipient != pair) isBot[recipient] = true; if(sender != pair) isBot[sender] = true; } require(amount <= maxTxAmount, "You are exceeding maxTxAmount"); if(recipient != pair){ require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount"); } } uint256 fee; if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0; else{ if(recipient == pair) fee = amount * totSellTax / 100; else fee = amount * totTax / 100; } if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees(); super._transfer(sender, recipient, amount - fee); if(fee > 0) super._transfer(sender, address(this) ,fee); } function swapForFees() private inSwap { uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= swapThreshold) { uint256 denominator = totSellTax * 2; uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity; if(ethToAddLiquidityWith > 0){ // Add liquidity to Uniswap addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing; if(marketingAmt > 0){ payable(marketingWallet).sendValue(marketingAmt); } uint256 devAmt = unitBalance * 2 * sellTaxes.dev; if(devAmt > 0){ payable(devWallet).sendValue(devAmt); } } } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp); } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable devWallet, block.timestamp ); } function setSwapEnabled(bool state) external onlyOwner { swapEnabled = state; } function setSwapThreshold(uint256 new_amount) external onlyOwner { swapThreshold = new_amount; } function enableTrading(uint256 numOfDeadBlocks) external onlyOwner{ require(!tradingEnabled, "Trading already active"); tradingEnabled = true; swapEnabled = true; genesis_block = block.number; deadblocks = numOfDeadBlocks; } function setBuyTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{ taxes = Taxes(_marketing, _liquidity, _dev); totTax = _marketing + _liquidity + _dev; } function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{ sellTaxes = Taxes(_marketing, _liquidity, _dev); totSellTax = _marketing + _liquidity + _dev; } function updateMarketingWallet(address newWallet) external onlyOwner{ marketingWallet = newWallet; } function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{ router = _router; pair = _pair; } function addBots(address[] memory isBot_) public onlyOwner { for (uint i = 0; i < isBot_.length; i++) { isBot[isBot_[i]] = true; } } function updateExcludedFromFees(address _address, bool state) external onlyOwner { excludedFromFees[_address] = state; } function updateMaxTxAmount(uint256 amount) external onlyOwner{ maxTxAmount = amount * 10**18; } function updateMaxWalletAmount(uint256 amount) external onlyOwner{ maxWalletAmount = amount * 10**18; } function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{ IERC20(tokenAddress).transfer(owner(), amount); } function rescueETH(uint256 weiAmount) external onlyOwner{ payable(owner()).sendValue(weiAmount); } function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{ uint256 initBalance = address(this).balance; swapTokensForETH(amount); uint256 newBalance = address(this).balance - initBalance; if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage)); if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage)); } // fallbacks receive() external payable {} }
{ "optimizer": { "enabled": false, "runs": 512 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","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":"tradingEnabled","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":[{"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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600060095569152d02c7e14af6800000600a556a013da329b6336471800000600b556a013da329b6336471800000600c5573a541d7c4b725dd762ac8d7e0ba350a9a43c273df600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a541d7c4b725dd762ac8d7e0ba350a9a43c273df600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060008152602001600081526020016000815250600f600082015181600001556020820151816001015560408201518160020155505060405180606001604052806000815260200160008152602001600081525060126000820151816000015560208201518160010155604082015181600201555050600060155560006016553480156200017657600080fd5b506040518060400160405280600a81526020017f4169647320546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f41494453000000000000000000000000000000000000000000000000000000008152508160039080519060200190620001fb92919062000868565b5080600490805190602001906200021492919062000868565b505050620002376200022b6200062760201b60201c565b6200062f60201b60201c565b62000277336200024c620006f560201b60201c565b600a6200025a919062000ab2565b6305f5e1006200026b919062000b03565b620006fe60201b60201c565b6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000336573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035c919062000bce565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ea919062000bce565b6040518363ffffffff1660e01b81526004016200040992919062000c11565b6020604051808303816000875af115801562000429573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044f919062000bce565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000db1565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007689062000c9f565b60405180910390fd5b62000785600083836200086360201b60201c565b806002600082825462000799919062000cc1565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620007f0919062000cc1565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000857919062000d2f565b60405180910390a35050565b505050565b828054620008769062000d7b565b90600052602060002090601f0160209004810192826200089a5760008555620008e6565b82601f10620008b557805160ff1916838001178555620008e6565b82800160010185558215620008e6579182015b82811115620008e5578251825591602001919060010190620008c8565b5b509050620008f59190620008f9565b5090565b5b8082111562000914576000816000905550600101620008fa565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009a6578086048111156200097e576200097d62000918565b5b60018516156200098e5780820291505b80810290506200099e8562000947565b94506200095e565b94509492505050565b600082620009c1576001905062000a94565b81620009d1576000905062000a94565b8160018114620009ea5760028114620009f55762000a2b565b600191505062000a94565b60ff84111562000a0a5762000a0962000918565b5b8360020a91508482111562000a245762000a2362000918565b5b5062000a94565b5060208310610133831016604e8410600b841016171562000a655782820a90508381111562000a5f5762000a5e62000918565b5b62000a94565b62000a74848484600162000954565b9250905081840481111562000a8e5762000a8d62000918565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000abf8262000a9b565b915062000acc8362000aa5565b925062000afb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009af565b905092915050565b600062000b108262000a9b565b915062000b1d8362000a9b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b595762000b5862000918565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b968262000b69565b9050919050565b62000ba88162000b89565b811462000bb457600080fd5b50565b60008151905062000bc88162000b9d565b92915050565b60006020828403121562000be75762000be662000b64565b5b600062000bf78482850162000bb7565b91505092915050565b62000c0b8162000b89565b82525050565b600060408201905062000c28600083018562000c00565b62000c37602083018462000c00565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c87601f8362000c3e565b915062000c948262000c4f565b602082019050919050565b6000602082019050818103600083015262000cba8162000c78565b9050919050565b600062000cce8262000a9b565b915062000cdb8362000a9b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d135762000d1262000918565b5b828201905092915050565b62000d298162000a9b565b82525050565b600060208201905062000d46600083018462000d1e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d9457607f821691505b6020821081141562000dab5762000daa62000d4c565b5b50919050565b6145c88062000dc16000396000f3fe6080604052600436106102ab5760003560e01c806382aa7c6811610164578063aa4bde28116100c6578063dd62ed3e1161008a578063f2fde38b11610064578063f2fde38b146109fc578063f66895a314610a25578063f887ea4014610a52576102b2565b8063dd62ed3e1461096d578063e01af92c146109aa578063e545fd6d146109d3576102b2565b8063aa4bde281461088a578063aacebbe3146108b5578063c18bc195146108de578063d34628cc14610907578063dbe66ca014610930576102b2565b806395d89b4111610128578063a457c2d711610102578063a457c2d7146107e5578063a8aa1b3114610822578063a9059cbb1461084d576102b2565b806395d89b41146107685780639d0014b1146107935780639e252f00146107bc576102b2565b806382aa7c68146106955780638c0b5e22146106be5780638cd4426d146106e95780638da5cb5b146107125780638ea5220f1461073d576102b2565b8063313ce5671161020d5780636256d181116101d1578063715018a6116101ab578063715018a614610626578063728f8eea1461063d57806375f0a8741461066a576102b2565b80636256d181146105955780636ddd1713146105be57806370a08231146105e9576102b2565b8063313ce567146104ae57806339509351146104d957806340b28c2f146105165780634ada218b1461053f57806350c9a88f1461056a576102b2565b80631870517a1161026f57806326b5d32f1161024957806326b5d32f1461042f578063274a533c14610458578063293b7ef414610483576102b2565b80631870517a1461039e5780632253163d146103c757806323b872dd146103f2576102b2565b80630445b667146102b757806306fdde03146102e2578063087332141461030d578063095ea7b31461033657806318160ddd14610373576102b2565b366102b257005b600080fd5b3480156102c357600080fd5b506102cc610a7d565b6040516102d99190613085565b60405180910390f35b3480156102ee57600080fd5b506102f7610a83565b6040516103049190613139565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f919061319b565b610b15565b005b34801561034257600080fd5b5061035d6004803603810190610358919061324c565b610bf1565b60405161036a91906132a7565b60405180910390f35b34801561037f57600080fd5b50610388610c0f565b6040516103959190613085565b60405180910390f35b3480156103aa57600080fd5b506103c560048036038101906103c0919061319b565b610c19565b005b3480156103d357600080fd5b506103dc610cf5565b6040516103e99190613085565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906132c2565b610cfb565b60405161042691906132a7565b60405180910390f35b34801561043b57600080fd5b506104566004803603810190610451919061319b565b610dfc565b005b34801561046457600080fd5b5061046d610f89565b60405161047a9190613085565b60405180910390f35b34801561048f57600080fd5b50610498610f8f565b6040516104a59190613085565b60405180910390f35b3480156104ba57600080fd5b506104c3610f95565b6040516104d09190613331565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb919061324c565b610f9e565b60405161050d91906132a7565b60405180910390f35b34801561052257600080fd5b5061053d6004803603810190610538919061338a565b61104a565b005b34801561054b57600080fd5b5061055461114c565b60405161056191906132a7565b60405180910390f35b34801561057657600080fd5b5061057f61115f565b60405161058c9190613085565b60405180910390f35b3480156105a157600080fd5b506105bc60048036038101906105b791906133ca565b611165565b005b3480156105ca57600080fd5b506105d36111fe565b6040516105e091906132a7565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b91906133f7565b611211565b60405161061d9190613085565b60405180910390f35b34801561063257600080fd5b5061063b611259565b005b34801561064957600080fd5b506106526112e1565b60405161066193929190613424565b60405180910390f35b34801561067657600080fd5b5061067f6112f9565b60405161068c919061346a565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b791906133ca565b61131f565b005b3480156106ca57600080fd5b506106d3611432565b6040516106e09190613085565b60405180910390f35b3480156106f557600080fd5b50610710600480360381019061070b919061324c565b611438565b005b34801561071e57600080fd5b5061072761153e565b604051610734919061346a565b60405180910390f35b34801561074957600080fd5b50610752611568565b60405161075f919061346a565b60405180910390f35b34801561077457600080fd5b5061077d61158e565b60405161078a9190613139565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b591906133ca565b611620565b005b3480156107c857600080fd5b506107e360048036038101906107de91906133ca565b6116a6565b005b3480156107f157600080fd5b5061080c6004803603810190610807919061324c565b611755565b60405161081991906132a7565b60405180910390f35b34801561082e57600080fd5b50610837611849565b604051610844919061346a565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f919061324c565b61186f565b60405161088191906132a7565b60405180910390f35b34801561089657600080fd5b5061089f61188d565b6040516108ac9190613085565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d791906133f7565b611893565b005b3480156108ea57600080fd5b50610905600480360381019061090091906133ca565b611953565b005b34801561091357600080fd5b5061092e600480360381019061092991906135cd565b6119ec565b005b34801561093c57600080fd5b50610957600480360381019061095291906133f7565b611afd565b60405161096491906132a7565b60405180910390f35b34801561097957600080fd5b50610994600480360381019061098f9190613616565b611b1d565b6040516109a19190613085565b60405180910390f35b3480156109b657600080fd5b506109d160048036038101906109cc9190613682565b611ba4565b005b3480156109df57600080fd5b506109fa60048036038101906109f591906136af565b611c3d565b005b348015610a0857600080fd5b50610a236004803603810190610a1e91906133f7565b611d14565b005b348015610a3157600080fd5b50610a3a611e0c565b604051610a4993929190613424565b60405180910390f35b348015610a5e57600080fd5b50610a67611e24565b604051610a74919061374e565b60405180910390f35b600a5481565b606060038054610a9290613798565b80601f0160208091040260200160405190810160405280929190818152602001828054610abe90613798565b8015610b0b5780601f10610ae057610100808354040283529160200191610b0b565b820191906000526020600020905b815481529060010190602001808311610aee57829003601f168201915b5050505050905090565b610b1d611e4a565b73ffffffffffffffffffffffffffffffffffffffff16610b3b61153e565b73ffffffffffffffffffffffffffffffffffffffff1614610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8890613816565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610bdc9190613865565b610be69190613865565b601681905550505050565b6000610c05610bfe611e4a565b8484611e52565b6001905092915050565b6000600254905090565b610c21611e4a565b73ffffffffffffffffffffffffffffffffffffffff16610c3f61153e565b73ffffffffffffffffffffffffffffffffffffffff1614610c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8c90613816565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284610ce09190613865565b610cea9190613865565b601581905550505050565b60165481565b6000610d0884848461201d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d53611e4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca9061392d565b60405180910390fd5b610df085610ddf611e4a565b8584610deb919061394d565b611e52565b60019150509392505050565b610e04611e4a565b73ffffffffffffffffffffffffffffffffffffffff16610e2261153e565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90613816565b60405180910390fd5b6000479050610e86846126e7565b60008147610e94919061394d565b90506000831115610f0c57610f0b8385610eae9190613865565b8483610eba9190613981565b610ec49190613a0a565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661292a90919063ffffffff16565b5b6000841115610f8257610f818385610f249190613865565b8583610f309190613981565b610f3a9190613a0a565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661292a90919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b6000611040610fab611e4a565b848460016000610fb9611e4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461103b9190613865565b611e52565b6001905092915050565b611052611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661107061153e565b73ffffffffffffffffffffffffffffffffffffffff16146110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd90613816565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b61116d611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661118b61153e565b73ffffffffffffffffffffffffffffffffffffffff16146111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d890613816565b60405180910390fd5b670de0b6b3a7640000816111f59190613981565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611261611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661127f61153e565b73ffffffffffffffffffffffffffffffffffffffff16146112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90613816565b60405180910390fd5b6112df6000612a1e565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611327611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661134561153e565b73ffffffffffffffffffffffffffffffffffffffff161461139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290613816565b60405180910390fd5b600760169054906101000a900460ff16156113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290613a87565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611440611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661145e61153e565b73ffffffffffffffffffffffffffffffffffffffff16146114b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ab90613816565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114d861153e565b836040518363ffffffff1660e01b81526004016114f6929190613aa7565b6020604051808303816000875af1158015611515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115399190613ae5565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461159d90613798565b80601f01602080910402602001604051908101604052809291908181526020018280546115c990613798565b80156116165780601f106115eb57610100808354040283529160200191611616565b820191906000526020600020905b8154815290600101906020018083116115f957829003601f168201915b5050505050905090565b611628611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661164661153e565b73ffffffffffffffffffffffffffffffffffffffff161461169c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169390613816565b60405180910390fd5b80600a8190555050565b6116ae611e4a565b73ffffffffffffffffffffffffffffffffffffffff166116cc61153e565b73ffffffffffffffffffffffffffffffffffffffff1614611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990613816565b60405180910390fd5b6117528161172e61153e565b73ffffffffffffffffffffffffffffffffffffffff1661292a90919063ffffffff16565b50565b60008060016000611764611e4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181890613b84565b60405180910390fd5b61183e61182c611e4a565b858584611839919061394d565b611e52565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061188361187c611e4a565b848461201d565b6001905092915050565b600c5481565b61189b611e4a565b73ffffffffffffffffffffffffffffffffffffffff166118b961153e565b73ffffffffffffffffffffffffffffffffffffffff161461190f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190690613816565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61195b611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661197961153e565b73ffffffffffffffffffffffffffffffffffffffff16146119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690613816565b60405180910390fd5b670de0b6b3a7640000816119e39190613981565b600c8190555050565b6119f4611e4a565b73ffffffffffffffffffffffffffffffffffffffff16611a1261153e565b73ffffffffffffffffffffffffffffffffffffffff1614611a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5f90613816565b60405180910390fd5b60005b8151811015611af957600160186000848481518110611a8d57611a8c613ba4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611af190613bd3565b915050611a6b565b5050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bac611e4a565b73ffffffffffffffffffffffffffffffffffffffff16611bca61153e565b73ffffffffffffffffffffffffffffffffffffffff1614611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1790613816565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611c45611e4a565b73ffffffffffffffffffffffffffffffffffffffff16611c6361153e565b73ffffffffffffffffffffffffffffffffffffffff1614611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb090613816565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d1c611e4a565b73ffffffffffffffffffffffffffffffffffffffff16611d3a61153e565b73ffffffffffffffffffffffffffffffffffffffff1614611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8790613816565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790613c8e565b60405180910390fd5b611e0981612a1e565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb990613d20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2990613db2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120109190613085565b60405180910390a3505050565b60008111612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790613e44565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121045750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90613eb0565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e75750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122005750600760149054906101000a900460ff16155b156124bc57600760169054906101000a900460ff16612254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224b90613f1c565b60405180910390fd5b436009546008546122659190613865565b11156123c857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612319576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123c7576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b5481111561240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240490613f88565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146124bb57600c548161246f84611211565b6124799190613865565b11156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b19061401a565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806125225750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125765750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125845760009050612619565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125fb576064601654836125ea9190613981565b6125f49190613a0a565b9050612618565b60646015548361260b9190613981565b6126159190613a0a565b90505b5b600760159054906101000a900460ff1680156126425750600760149054906101000a900460ff16155b801561269c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156126a85750600081115b156126b6576126b5612ae4565b5b6126cc848483856126c7919061394d565b612ce8565b60008111156126e1576126e0843083612ce8565b5b50505050565b6000600267ffffffffffffffff8111156127045761270361348a565b5b6040519080825280602002602001820160405280156127325781602001602082028036833780820191505090505b509050308160008151811061274a57612749613ba4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612815919061404f565b8160018151811061282957612828613ba4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061289030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e52565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016128f4959493929190614175565b600060405180830381600087803b15801561290e57600080fd5b505af1158015612922573d6000803e3d6000fd5b505050505050565b8047101561296d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129649061421b565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516129939061426c565b60006040518083038185875af1925050503d80600081146129d0576040519150601f19603f3d011682016040523d82523d6000602084013e6129d5565b606091505b5050905080612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a10906142f3565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612ce6576001600760146101000a81548160ff0219169083151502179055506000612b1e30611211565b9050600a548110612cc95760006002601654612b3a9190613981565b905060008160126001015484612b509190613981565b612b5a9190613a0a565b905060008184612b6a919061394d565b90506000479050612b7a826126e7565b60008147612b88919061394d565b9050600060126001015486612b9d919061394d565b82612ba89190613a0a565b9050600060126001015482612bbd9190613981565b90506000811115612bd357612bd28682612f67565b5b6000601260000154600284612be89190613981565b612bf29190613981565b90506000811115612c4957612c4881600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661292a90919063ffffffff16565b5b6000601260020154600285612c5e9190613981565b612c689190613981565b90506000811115612cbf57612cbe81600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661292a90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4f90614385565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbf90614417565b60405180910390fd5b612dd3838383613067565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e50906144a9565b60405180910390fd5b8181612e65919061394d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ef59190613865565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f599190613085565b60405180910390a350505050565b612f9430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e52565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161301d969594939291906144c9565b60606040518083038185885af115801561303b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613060919061453f565b5050505050565b505050565b6000819050919050565b61307f8161306c565b82525050565b600060208201905061309a6000830184613076565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130da5780820151818401526020810190506130bf565b838111156130e9576000848401525b50505050565b6000601f19601f8301169050919050565b600061310b826130a0565b61311581856130ab565b93506131258185602086016130bc565b61312e816130ef565b840191505092915050565b600060208201905081810360008301526131538184613100565b905092915050565b6000604051905090565b600080fd5b600080fd5b6131788161306c565b811461318357600080fd5b50565b6000813590506131958161316f565b92915050565b6000806000606084860312156131b4576131b3613165565b5b60006131c286828701613186565b93505060206131d386828701613186565b92505060406131e486828701613186565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613219826131ee565b9050919050565b6132298161320e565b811461323457600080fd5b50565b60008135905061324681613220565b92915050565b6000806040838503121561326357613262613165565b5b600061327185828601613237565b925050602061328285828601613186565b9150509250929050565b60008115159050919050565b6132a18161328c565b82525050565b60006020820190506132bc6000830184613298565b92915050565b6000806000606084860312156132db576132da613165565b5b60006132e986828701613237565b93505060206132fa86828701613237565b925050604061330b86828701613186565b9150509250925092565b600060ff82169050919050565b61332b81613315565b82525050565b60006020820190506133466000830184613322565b92915050565b60006133578261320e565b9050919050565b6133678161334c565b811461337257600080fd5b50565b6000813590506133848161335e565b92915050565b600080604083850312156133a1576133a0613165565b5b60006133af85828601613375565b92505060206133c085828601613237565b9150509250929050565b6000602082840312156133e0576133df613165565b5b60006133ee84828501613186565b91505092915050565b60006020828403121561340d5761340c613165565b5b600061341b84828501613237565b91505092915050565b60006060820190506134396000830186613076565b6134466020830185613076565b6134536040830184613076565b949350505050565b6134648161320e565b82525050565b600060208201905061347f600083018461345b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6134c2826130ef565b810181811067ffffffffffffffff821117156134e1576134e061348a565b5b80604052505050565b60006134f461315b565b905061350082826134b9565b919050565b600067ffffffffffffffff8211156135205761351f61348a565b5b602082029050602081019050919050565b600080fd5b600061354961354484613505565b6134ea565b9050808382526020820190506020840283018581111561356c5761356b613531565b5b835b8181101561359557806135818882613237565b84526020840193505060208101905061356e565b5050509392505050565b600082601f8301126135b4576135b3613485565b5b81356135c4848260208601613536565b91505092915050565b6000602082840312156135e3576135e2613165565b5b600082013567ffffffffffffffff8111156136015761360061316a565b5b61360d8482850161359f565b91505092915050565b6000806040838503121561362d5761362c613165565b5b600061363b85828601613237565b925050602061364c85828601613237565b9150509250929050565b61365f8161328c565b811461366a57600080fd5b50565b60008135905061367c81613656565b92915050565b60006020828403121561369857613697613165565b5b60006136a68482850161366d565b91505092915050565b600080604083850312156136c6576136c5613165565b5b60006136d485828601613237565b92505060206136e58582860161366d565b9150509250929050565b6000819050919050565b600061371461370f61370a846131ee565b6136ef565b6131ee565b9050919050565b6000613726826136f9565b9050919050565b60006137388261371b565b9050919050565b6137488161372d565b82525050565b6000602082019050613763600083018461373f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137b057607f821691505b602082108114156137c4576137c3613769565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138006020836130ab565b915061380b826137ca565b602082019050919050565b6000602082019050818103600083015261382f816137f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138708261306c565b915061387b8361306c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138b0576138af613836565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006139176028836130ab565b9150613922826138bb565b604082019050919050565b600060208201905081810360008301526139468161390a565b9050919050565b60006139588261306c565b91506139638361306c565b92508282101561397657613975613836565b5b828203905092915050565b600061398c8261306c565b91506139978361306c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d0576139cf613836565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a158261306c565b9150613a208361306c565b925082613a3057613a2f6139db565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613a716016836130ab565b9150613a7c82613a3b565b602082019050919050565b60006020820190508181036000830152613aa081613a64565b9050919050565b6000604082019050613abc600083018561345b565b613ac96020830184613076565b9392505050565b600081519050613adf81613656565b92915050565b600060208284031215613afb57613afa613165565b5b6000613b0984828501613ad0565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613b6e6025836130ab565b9150613b7982613b12565b604082019050919050565b60006020820190508181036000830152613b9d81613b61565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bde8261306c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c1157613c10613836565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c786026836130ab565b9150613c8382613c1c565b604082019050919050565b60006020820190508181036000830152613ca781613c6b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d0a6024836130ab565b9150613d1582613cae565b604082019050919050565b60006020820190508181036000830152613d3981613cfd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d9c6022836130ab565b9150613da782613d40565b604082019050919050565b60006020820190508181036000830152613dcb81613d8f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e2e6029836130ab565b9150613e3982613dd2565b604082019050919050565b60006020820190508181036000830152613e5d81613e21565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613e9a6019836130ab565b9150613ea582613e64565b602082019050919050565b60006020820190508181036000830152613ec981613e8d565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613f066016836130ab565b9150613f1182613ed0565b602082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613f72601d836130ab565b9150613f7d82613f3c565b602082019050919050565b60006020820190508181036000830152613fa181613f65565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006140046021836130ab565b915061400f82613fa8565b604082019050919050565b6000602082019050818103600083015261403381613ff7565b9050919050565b60008151905061404981613220565b92915050565b60006020828403121561406557614064613165565b5b60006140738482850161403a565b91505092915050565b6000819050919050565b60006140a161409c6140978461407c565b6136ef565b61306c565b9050919050565b6140b181614086565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140ec8161320e565b82525050565b60006140fe83836140e3565b60208301905092915050565b6000602082019050919050565b6000614122826140b7565b61412c81856140c2565b9350614137836140d3565b8060005b8381101561416857815161414f88826140f2565b975061415a8361410a565b92505060018101905061413b565b5085935050505092915050565b600060a08201905061418a6000830188613076565b61419760208301876140a8565b81810360408301526141a98186614117565b90506141b8606083018561345b565b6141c56080830184613076565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614205601d836130ab565b9150614210826141cf565b602082019050919050565b60006020820190508181036000830152614234816141f8565b9050919050565b600081905092915050565b50565b600061425660008361423b565b915061426182614246565b600082019050919050565b600061427782614249565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006142dd603a836130ab565b91506142e882614281565b604082019050919050565b6000602082019050818103600083015261430c816142d0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061436f6025836130ab565b915061437a82614313565b604082019050919050565b6000602082019050818103600083015261439e81614362565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144016023836130ab565b915061440c826143a5565b604082019050919050565b60006020820190508181036000830152614430816143f4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144936026836130ab565b915061449e82614437565b604082019050919050565b600060208201905081810360008301526144c281614486565b9050919050565b600060c0820190506144de600083018961345b565b6144eb6020830188613076565b6144f860408301876140a8565b61450560608301866140a8565b614512608083018561345b565b61451f60a0830184613076565b979650505050505050565b6000815190506145398161316f565b92915050565b60008060006060848603121561455857614557613165565b5b60006145668682870161452a565b93505060206145778682870161452a565b92505060406145888682870161452a565b915050925092509256fea264697066735822122052c10fc016a2a21891d32361163801c01f0581ba7f42ba923f604a13df6e695164736f6c634300080c0033
Deployed Bytecode
0x6080604052600436106102ab5760003560e01c806382aa7c6811610164578063aa4bde28116100c6578063dd62ed3e1161008a578063f2fde38b11610064578063f2fde38b146109fc578063f66895a314610a25578063f887ea4014610a52576102b2565b8063dd62ed3e1461096d578063e01af92c146109aa578063e545fd6d146109d3576102b2565b8063aa4bde281461088a578063aacebbe3146108b5578063c18bc195146108de578063d34628cc14610907578063dbe66ca014610930576102b2565b806395d89b4111610128578063a457c2d711610102578063a457c2d7146107e5578063a8aa1b3114610822578063a9059cbb1461084d576102b2565b806395d89b41146107685780639d0014b1146107935780639e252f00146107bc576102b2565b806382aa7c68146106955780638c0b5e22146106be5780638cd4426d146106e95780638da5cb5b146107125780638ea5220f1461073d576102b2565b8063313ce5671161020d5780636256d181116101d1578063715018a6116101ab578063715018a614610626578063728f8eea1461063d57806375f0a8741461066a576102b2565b80636256d181146105955780636ddd1713146105be57806370a08231146105e9576102b2565b8063313ce567146104ae57806339509351146104d957806340b28c2f146105165780634ada218b1461053f57806350c9a88f1461056a576102b2565b80631870517a1161026f57806326b5d32f1161024957806326b5d32f1461042f578063274a533c14610458578063293b7ef414610483576102b2565b80631870517a1461039e5780632253163d146103c757806323b872dd146103f2576102b2565b80630445b667146102b757806306fdde03146102e2578063087332141461030d578063095ea7b31461033657806318160ddd14610373576102b2565b366102b257005b600080fd5b3480156102c357600080fd5b506102cc610a7d565b6040516102d99190613085565b60405180910390f35b3480156102ee57600080fd5b506102f7610a83565b6040516103049190613139565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f919061319b565b610b15565b005b34801561034257600080fd5b5061035d6004803603810190610358919061324c565b610bf1565b60405161036a91906132a7565b60405180910390f35b34801561037f57600080fd5b50610388610c0f565b6040516103959190613085565b60405180910390f35b3480156103aa57600080fd5b506103c560048036038101906103c0919061319b565b610c19565b005b3480156103d357600080fd5b506103dc610cf5565b6040516103e99190613085565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906132c2565b610cfb565b60405161042691906132a7565b60405180910390f35b34801561043b57600080fd5b506104566004803603810190610451919061319b565b610dfc565b005b34801561046457600080fd5b5061046d610f89565b60405161047a9190613085565b60405180910390f35b34801561048f57600080fd5b50610498610f8f565b6040516104a59190613085565b60405180910390f35b3480156104ba57600080fd5b506104c3610f95565b6040516104d09190613331565b60405180910390f35b3480156104e557600080fd5b5061050060048036038101906104fb919061324c565b610f9e565b60405161050d91906132a7565b60405180910390f35b34801561052257600080fd5b5061053d6004803603810190610538919061338a565b61104a565b005b34801561054b57600080fd5b5061055461114c565b60405161056191906132a7565b60405180910390f35b34801561057657600080fd5b5061057f61115f565b60405161058c9190613085565b60405180910390f35b3480156105a157600080fd5b506105bc60048036038101906105b791906133ca565b611165565b005b3480156105ca57600080fd5b506105d36111fe565b6040516105e091906132a7565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b91906133f7565b611211565b60405161061d9190613085565b60405180910390f35b34801561063257600080fd5b5061063b611259565b005b34801561064957600080fd5b506106526112e1565b60405161066193929190613424565b60405180910390f35b34801561067657600080fd5b5061067f6112f9565b60405161068c919061346a565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b791906133ca565b61131f565b005b3480156106ca57600080fd5b506106d3611432565b6040516106e09190613085565b60405180910390f35b3480156106f557600080fd5b50610710600480360381019061070b919061324c565b611438565b005b34801561071e57600080fd5b5061072761153e565b604051610734919061346a565b60405180910390f35b34801561074957600080fd5b50610752611568565b60405161075f919061346a565b60405180910390f35b34801561077457600080fd5b5061077d61158e565b60405161078a9190613139565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b591906133ca565b611620565b005b3480156107c857600080fd5b506107e360048036038101906107de91906133ca565b6116a6565b005b3480156107f157600080fd5b5061080c6004803603810190610807919061324c565b611755565b60405161081991906132a7565b60405180910390f35b34801561082e57600080fd5b50610837611849565b604051610844919061346a565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f919061324c565b61186f565b60405161088191906132a7565b60405180910390f35b34801561089657600080fd5b5061089f61188d565b6040516108ac9190613085565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d791906133f7565b611893565b005b3480156108ea57600080fd5b50610905600480360381019061090091906133ca565b611953565b005b34801561091357600080fd5b5061092e600480360381019061092991906135cd565b6119ec565b005b34801561093c57600080fd5b50610957600480360381019061095291906133f7565b611afd565b60405161096491906132a7565b60405180910390f35b34801561097957600080fd5b50610994600480360381019061098f9190613616565b611b1d565b6040516109a19190613085565b60405180910390f35b3480156109b657600080fd5b506109d160048036038101906109cc9190613682565b611ba4565b005b3480156109df57600080fd5b506109fa60048036038101906109f591906136af565b611c3d565b005b348015610a0857600080fd5b50610a236004803603810190610a1e91906133f7565b611d14565b005b348015610a3157600080fd5b50610a3a611e0c565b604051610a4993929190613424565b60405180910390f35b348015610a5e57600080fd5b50610a67611e24565b604051610a74919061374e565b60405180910390f35b600a5481565b606060038054610a9290613798565b80601f0160208091040260200160405190810160405280929190818152602001828054610abe90613798565b8015610b0b5780601f10610ae057610100808354040283529160200191610b0b565b820191906000526020600020905b815481529060010190602001808311610aee57829003601f168201915b5050505050905090565b610b1d611e4a565b73ffffffffffffffffffffffffffffffffffffffff16610b3b61153e565b73ffffffffffffffffffffffffffffffffffffffff1614610b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8890613816565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506012600082015181600001556020820151816001015560408201518160020155905050808284610bdc9190613865565b610be69190613865565b601681905550505050565b6000610c05610bfe611e4a565b8484611e52565b6001905092915050565b6000600254905090565b610c21611e4a565b73ffffffffffffffffffffffffffffffffffffffff16610c3f61153e565b73ffffffffffffffffffffffffffffffffffffffff1614610c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8c90613816565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f600082015181600001556020820151816001015560408201518160020155905050808284610ce09190613865565b610cea9190613865565b601581905550505050565b60165481565b6000610d0884848461201d565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d53611e4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca9061392d565b60405180910390fd5b610df085610ddf611e4a565b8584610deb919061394d565b611e52565b60019150509392505050565b610e04611e4a565b73ffffffffffffffffffffffffffffffffffffffff16610e2261153e565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90613816565b60405180910390fd5b6000479050610e86846126e7565b60008147610e94919061394d565b90506000831115610f0c57610f0b8385610eae9190613865565b8483610eba9190613981565b610ec49190613a0a565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661292a90919063ffffffff16565b5b6000841115610f8257610f818385610f249190613865565b8583610f309190613981565b610f3a9190613a0a565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661292a90919063ffffffff16565b5b5050505050565b60085481565b60155481565b60006012905090565b6000611040610fab611e4a565b848460016000610fb9611e4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461103b9190613865565b611e52565b6001905092915050565b611052611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661107061153e565b73ffffffffffffffffffffffffffffffffffffffff16146110c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bd90613816565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600760169054906101000a900460ff1681565b60095481565b61116d611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661118b61153e565b73ffffffffffffffffffffffffffffffffffffffff16146111e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d890613816565b60405180910390fd5b670de0b6b3a7640000816111f59190613981565b600b8190555050565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611261611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661127f61153e565b73ffffffffffffffffffffffffffffffffffffffff16146112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90613816565b60405180910390fd5b6112df6000612a1e565b565b600f8060000154908060010154908060020154905083565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611327611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661134561153e565b73ffffffffffffffffffffffffffffffffffffffff161461139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290613816565b60405180910390fd5b600760169054906101000a900460ff16156113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290613a87565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff021916908315150217905550436008819055508060098190555050565b600b5481565b611440611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661145e61153e565b73ffffffffffffffffffffffffffffffffffffffff16146114b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ab90613816565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114d861153e565b836040518363ffffffff1660e01b81526004016114f6929190613aa7565b6020604051808303816000875af1158015611515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115399190613ae5565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461159d90613798565b80601f01602080910402602001604051908101604052809291908181526020018280546115c990613798565b80156116165780601f106115eb57610100808354040283529160200191611616565b820191906000526020600020905b8154815290600101906020018083116115f957829003601f168201915b5050505050905090565b611628611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661164661153e565b73ffffffffffffffffffffffffffffffffffffffff161461169c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169390613816565b60405180910390fd5b80600a8190555050565b6116ae611e4a565b73ffffffffffffffffffffffffffffffffffffffff166116cc61153e565b73ffffffffffffffffffffffffffffffffffffffff1614611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990613816565b60405180910390fd5b6117528161172e61153e565b73ffffffffffffffffffffffffffffffffffffffff1661292a90919063ffffffff16565b50565b60008060016000611764611e4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181890613b84565b60405180910390fd5b61183e61182c611e4a565b858584611839919061394d565b611e52565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061188361187c611e4a565b848461201d565b6001905092915050565b600c5481565b61189b611e4a565b73ffffffffffffffffffffffffffffffffffffffff166118b961153e565b73ffffffffffffffffffffffffffffffffffffffff161461190f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190690613816565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61195b611e4a565b73ffffffffffffffffffffffffffffffffffffffff1661197961153e565b73ffffffffffffffffffffffffffffffffffffffff16146119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690613816565b60405180910390fd5b670de0b6b3a7640000816119e39190613981565b600c8190555050565b6119f4611e4a565b73ffffffffffffffffffffffffffffffffffffffff16611a1261153e565b73ffffffffffffffffffffffffffffffffffffffff1614611a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5f90613816565b60405180910390fd5b60005b8151811015611af957600160186000848481518110611a8d57611a8c613ba4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611af190613bd3565b915050611a6b565b5050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611bac611e4a565b73ffffffffffffffffffffffffffffffffffffffff16611bca61153e565b73ffffffffffffffffffffffffffffffffffffffff1614611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1790613816565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b611c45611e4a565b73ffffffffffffffffffffffffffffffffffffffff16611c6361153e565b73ffffffffffffffffffffffffffffffffffffffff1614611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb090613816565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d1c611e4a565b73ffffffffffffffffffffffffffffffffffffffff16611d3a61153e565b73ffffffffffffffffffffffffffffffffffffffff1614611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8790613816565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df790613c8e565b60405180910390fd5b611e0981612a1e565b50565b60128060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb990613d20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2990613db2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120109190613085565b60405180910390a3505050565b60008111612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790613e44565b60405180910390fd5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121045750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90613eb0565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e75750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122005750600760149054906101000a900460ff16155b156124bc57600760169054906101000a900460ff16612254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224b90613f1c565b60405180910390fd5b436009546008546122659190613865565b11156123c857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612319576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123c7576001601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b600b5481111561240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240490613f88565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146124bb57600c548161246f84611211565b6124799190613865565b11156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b19061401a565b60405180910390fd5b5b5b6000600760149054906101000a900460ff16806125225750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806125765750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125845760009050612619565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125fb576064601654836125ea9190613981565b6125f49190613a0a565b9050612618565b60646015548361260b9190613981565b6126159190613a0a565b90505b5b600760159054906101000a900460ff1680156126425750600760149054906101000a900460ff16155b801561269c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156126a85750600081115b156126b6576126b5612ae4565b5b6126cc848483856126c7919061394d565b612ce8565b60008111156126e1576126e0843083612ce8565b5b50505050565b6000600267ffffffffffffffff8111156127045761270361348a565b5b6040519080825280602002602001820160405280156127325781602001602082028036833780820191505090505b509050308160008151811061274a57612749613ba4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612815919061404f565b8160018151811061282957612828613ba4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061289030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e52565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016128f4959493929190614175565b600060405180830381600087803b15801561290e57600080fd5b505af1158015612922573d6000803e3d6000fd5b505050505050565b8047101561296d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129649061421b565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516129939061426c565b60006040518083038185875af1925050503d80600081146129d0576040519150601f19603f3d011682016040523d82523d6000602084013e6129d5565b606091505b5050905080612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a10906142f3565b60405180910390fd5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612ce6576001600760146101000a81548160ff0219169083151502179055506000612b1e30611211565b9050600a548110612cc95760006002601654612b3a9190613981565b905060008160126001015484612b509190613981565b612b5a9190613a0a565b905060008184612b6a919061394d565b90506000479050612b7a826126e7565b60008147612b88919061394d565b9050600060126001015486612b9d919061394d565b82612ba89190613a0a565b9050600060126001015482612bbd9190613981565b90506000811115612bd357612bd28682612f67565b5b6000601260000154600284612be89190613981565b612bf29190613981565b90506000811115612c4957612c4881600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661292a90919063ffffffff16565b5b6000601260020154600285612c5e9190613981565b612c689190613981565b90506000811115612cbf57612cbe81600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661292a90919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4f90614385565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbf90614417565b60405180910390fd5b612dd3838383613067565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e50906144a9565b60405180910390fd5b8181612e65919061394d565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ef59190613865565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f599190613085565b60405180910390a350505050565b612f9430600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e52565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161301d969594939291906144c9565b60606040518083038185885af115801561303b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613060919061453f565b5050505050565b505050565b6000819050919050565b61307f8161306c565b82525050565b600060208201905061309a6000830184613076565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130da5780820151818401526020810190506130bf565b838111156130e9576000848401525b50505050565b6000601f19601f8301169050919050565b600061310b826130a0565b61311581856130ab565b93506131258185602086016130bc565b61312e816130ef565b840191505092915050565b600060208201905081810360008301526131538184613100565b905092915050565b6000604051905090565b600080fd5b600080fd5b6131788161306c565b811461318357600080fd5b50565b6000813590506131958161316f565b92915050565b6000806000606084860312156131b4576131b3613165565b5b60006131c286828701613186565b93505060206131d386828701613186565b92505060406131e486828701613186565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613219826131ee565b9050919050565b6132298161320e565b811461323457600080fd5b50565b60008135905061324681613220565b92915050565b6000806040838503121561326357613262613165565b5b600061327185828601613237565b925050602061328285828601613186565b9150509250929050565b60008115159050919050565b6132a18161328c565b82525050565b60006020820190506132bc6000830184613298565b92915050565b6000806000606084860312156132db576132da613165565b5b60006132e986828701613237565b93505060206132fa86828701613237565b925050604061330b86828701613186565b9150509250925092565b600060ff82169050919050565b61332b81613315565b82525050565b60006020820190506133466000830184613322565b92915050565b60006133578261320e565b9050919050565b6133678161334c565b811461337257600080fd5b50565b6000813590506133848161335e565b92915050565b600080604083850312156133a1576133a0613165565b5b60006133af85828601613375565b92505060206133c085828601613237565b9150509250929050565b6000602082840312156133e0576133df613165565b5b60006133ee84828501613186565b91505092915050565b60006020828403121561340d5761340c613165565b5b600061341b84828501613237565b91505092915050565b60006060820190506134396000830186613076565b6134466020830185613076565b6134536040830184613076565b949350505050565b6134648161320e565b82525050565b600060208201905061347f600083018461345b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6134c2826130ef565b810181811067ffffffffffffffff821117156134e1576134e061348a565b5b80604052505050565b60006134f461315b565b905061350082826134b9565b919050565b600067ffffffffffffffff8211156135205761351f61348a565b5b602082029050602081019050919050565b600080fd5b600061354961354484613505565b6134ea565b9050808382526020820190506020840283018581111561356c5761356b613531565b5b835b8181101561359557806135818882613237565b84526020840193505060208101905061356e565b5050509392505050565b600082601f8301126135b4576135b3613485565b5b81356135c4848260208601613536565b91505092915050565b6000602082840312156135e3576135e2613165565b5b600082013567ffffffffffffffff8111156136015761360061316a565b5b61360d8482850161359f565b91505092915050565b6000806040838503121561362d5761362c613165565b5b600061363b85828601613237565b925050602061364c85828601613237565b9150509250929050565b61365f8161328c565b811461366a57600080fd5b50565b60008135905061367c81613656565b92915050565b60006020828403121561369857613697613165565b5b60006136a68482850161366d565b91505092915050565b600080604083850312156136c6576136c5613165565b5b60006136d485828601613237565b92505060206136e58582860161366d565b9150509250929050565b6000819050919050565b600061371461370f61370a846131ee565b6136ef565b6131ee565b9050919050565b6000613726826136f9565b9050919050565b60006137388261371b565b9050919050565b6137488161372d565b82525050565b6000602082019050613763600083018461373f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137b057607f821691505b602082108114156137c4576137c3613769565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138006020836130ab565b915061380b826137ca565b602082019050919050565b6000602082019050818103600083015261382f816137f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138708261306c565b915061387b8361306c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138b0576138af613836565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006139176028836130ab565b9150613922826138bb565b604082019050919050565b600060208201905081810360008301526139468161390a565b9050919050565b60006139588261306c565b91506139638361306c565b92508282101561397657613975613836565b5b828203905092915050565b600061398c8261306c565b91506139978361306c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d0576139cf613836565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a158261306c565b9150613a208361306c565b925082613a3057613a2f6139db565b5b828204905092915050565b7f54726164696e6720616c72656164792061637469766500000000000000000000600082015250565b6000613a716016836130ab565b9150613a7c82613a3b565b602082019050919050565b60006020820190508181036000830152613aa081613a64565b9050919050565b6000604082019050613abc600083018561345b565b613ac96020830184613076565b9392505050565b600081519050613adf81613656565b92915050565b600060208284031215613afb57613afa613165565b5b6000613b0984828501613ad0565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613b6e6025836130ab565b9150613b7982613b12565b604082019050919050565b60006020820190508181036000830152613b9d81613b61565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bde8261306c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c1157613c10613836565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c786026836130ab565b9150613c8382613c1c565b604082019050919050565b60006020820190508181036000830152613ca781613c6b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d0a6024836130ab565b9150613d1582613cae565b604082019050919050565b60006020820190508181036000830152613d3981613cfd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d9c6022836130ab565b9150613da782613d40565b604082019050919050565b60006020820190508181036000830152613dcb81613d8f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e2e6029836130ab565b9150613e3982613dd2565b604082019050919050565b60006020820190508181036000830152613e5d81613e21565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e7300000000000000600082015250565b6000613e9a6019836130ab565b9150613ea582613e64565b602082019050919050565b60006020820190508181036000830152613ec981613e8d565b9050919050565b7f54726164696e67206e6f74206163746976652079657400000000000000000000600082015250565b6000613f066016836130ab565b9150613f1182613ed0565b602082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e74000000600082015250565b6000613f72601d836130ab565b9150613f7d82613f3c565b602082019050919050565b60006020820190508181036000830152613fa181613f65565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006140046021836130ab565b915061400f82613fa8565b604082019050919050565b6000602082019050818103600083015261403381613ff7565b9050919050565b60008151905061404981613220565b92915050565b60006020828403121561406557614064613165565b5b60006140738482850161403a565b91505092915050565b6000819050919050565b60006140a161409c6140978461407c565b6136ef565b61306c565b9050919050565b6140b181614086565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140ec8161320e565b82525050565b60006140fe83836140e3565b60208301905092915050565b6000602082019050919050565b6000614122826140b7565b61412c81856140c2565b9350614137836140d3565b8060005b8381101561416857815161414f88826140f2565b975061415a8361410a565b92505060018101905061413b565b5085935050505092915050565b600060a08201905061418a6000830188613076565b61419760208301876140a8565b81810360408301526141a98186614117565b90506141b8606083018561345b565b6141c56080830184613076565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614205601d836130ab565b9150614210826141cf565b602082019050919050565b60006020820190508181036000830152614234816141f8565b9050919050565b600081905092915050565b50565b600061425660008361423b565b915061426182614246565b600082019050919050565b600061427782614249565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006142dd603a836130ab565b91506142e882614281565b604082019050919050565b6000602082019050818103600083015261430c816142d0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061436f6025836130ab565b915061437a82614313565b604082019050919050565b6000602082019050818103600083015261439e81614362565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144016023836130ab565b915061440c826143a5565b604082019050919050565b60006020820190508181036000830152614430816143f4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144936026836130ab565b915061449e82614437565b604082019050919050565b600060208201905081810360008301526144c281614486565b9050919050565b600060c0820190506144de600083018961345b565b6144eb6020830188613076565b6144f860408301876140a8565b61450560608301866140a8565b614512608083018561345b565b61451f60a0830184613076565b979650505050505050565b6000815190506145398161316f565b92915050565b60008060006060848603121561455857614557613165565b5b60006145668682870161452a565b93505060206145778682870161452a565b92505060406145888682870161452a565b915050925092509256fea264697066735822122052c10fc016a2a21891d32361163801c01f0581ba7f42ba923f604a13df6e695164736f6c634300080c0033
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.