ERC-20
Overview
Max Total Supply
100,000,000 RULER
Holders
48
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000018840299 RULERValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
RULER
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
No with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* # $RULER - RulerFC Play Online: https://rulerfc.com Telegram: https://t.me/rulerfc X: https://x.com/rulerfc_com Docs: https://docs.rulerfc.com RFC is a competitive fighting game where political powerhouses clash in fast-paced battles, featuring both solo and team modes. Step into the arena as iconic figures like Trump, Macron, Putin, Kim Jong Un, MBS, and more, each with unique fighting styles and abilities. Prove your dominance in intense tournaments backed by a rewards pool, earning tokens through gameplay and achievements. Customize your fighters with exclusive skins, cosmetics, and gear purchasable with tokens, while contributing to a healthy economy through token burns. Climb the leaderboards, compete globally, and turn your combat skills into real-world rewards in this advanced, politically charged fighter. */ // SPDX-License-Identifier: MIT pragma solidity 0.8.28; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } 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 ); } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair( address tokenA, address tokenB ) external returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } interface IERC20Permit { function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; } contract RULER is Context, IERC20, Ownable { string private constant _name = "RulerFC"; string private constant _symbol = "RULER"; uint8 private constant _decimals = 18; uint256 private constant _totalSupply = 100_000_000 ether; uint256 public _maxTXAmount = 1_000_000 ether; uint256 public _maxWallet = 1_000_000 ether; uint256 public _taxSwapAt = 1_000_000 ether; uint256 public _taxSwapThreshold = 1_000_000 ether; uint256 public _taxMaxSwap = 10_000_000 ether; uint256 public _preventTaxSwap = 40; uint256 public _buyTax = 2; uint256 public _sellTax = 2; uint256 public _totalTx = 0; uint256 private _accumulatedTax; bool public hasLaunched = false; bool public tradingEnabled = false; bool private inSwap = false; address payable public _revenueWallet; address payable public _rewardWallet; address payable public _deployerWallet; uint256 public transferDelayEndBlock; bool public transferDelayEnabled = true; mapping(address => uint256) private _holderLastTransferTimestamp; uint256 public launchedAt; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _feeExcluded; mapping(address => bool) public automatedMarketMakerPairs; address private uniswapV2Pair; IUniswapV2Router02 private uniswapV2Router; event LiquidityAdded(uint256 tokenAmount, uint256 ethAmount); event DEXPaired(uint256 tokenAmount, uint256 ethAmount, uint256 timestamp); event TradingActivated(bool _tradingEnabled); event LimitsRemoved(uint256 _value); event TaxParametersSet(uint256 taxTrigger, uint256 taxThreshold); event DeployerWalletUpdated(address indexed oldAddress, address indexed newAddress); event RevenueWalletUpdated(address indexed oldAddress, address indexed newAddress); event RewardsWalletUpdated(address indexed oldAddress, address indexed newAddress); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() { if (block.chainid != 1) revert("Unsupported chain ID"); _rewardWallet = payable(0x90e9daA8a6b2D0a0532d6eAE8Ab30907D97198A9); _revenueWallet = payable(0xf3349C57a1787dDdEB86d05B615CD6eb06564B2b); _deployerWallet = payable(_msgSender()); _feeExcluded[address(this)] = true; _feeExcluded[_revenueWallet] = true; _feeExcluded[_rewardWallet] = true; _feeExcluded[_deployerWallet] = true; createTokens(address(this), 80_000_000 ether); createTokens(_deployerWallet, 20_000_000 ether); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require( _allowances[sender][_msgSender()] >= amount, "ERC20: transfer amount exceeds allowance" ); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); _transfer(sender, recipient, amount); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require( owner != address(0) && spender != address(0), "ERC20: approve the zero address" ); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require( from != address(0) && to != address(0), "ERC20: transfer from or to the zero address" ); require(amount > 0, "Transfer amount must be greater than zero"); require( _balances[from] >= amount, "ERC20: transfer amount exceeds balance" ); if (block.number <= transferDelayEndBlock) { if ( !_feeExcluded[to] && to != owner() && to != address(uniswapV2Router) && to != uniswapV2Pair ) { require( _holderLastTransferTimestamp[msg.sender] < block.number, "Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[msg.sender] = block.number; } } uint256 taxAmount = 0; uint256 finalAmount = amount; bool isBuy = automatedMarketMakerPairs[from] && to != address(this); bool isSell = automatedMarketMakerPairs[to] && from != address(this); if (!tradingEnabled && (isBuy || isSell)) { require( _feeExcluded[to] || _feeExcluded[from], "Trading has not been enabled yet." ); } if ( isBuy && to != address(uniswapV2Router) && !_feeExcluded[to] ) { require( finalAmount <= _maxTXAmount, "Transaction amount exceeds the maximum allowed limit" ); require( balanceOf(to) + finalAmount <= _maxWallet, "Recipient's wallet balance will exceed the maximum allowed limit" ); } uint256 taxRate = isSell ? _sellTax : _buyTax; // Sniper tax logic if (tradingEnabled && isBuy && block.number <= launchedAt + 4 && _maxTXAmount < _totalSupply) { taxRate = 99; } else if (isBuy && _totalTx < _preventTaxSwap && _maxTXAmount < _totalSupply) { uint256 sniperStartTax = 40; uint256 normalTax = _buyTax; uint256 taxDifference = sniperStartTax - normalTax; taxRate = sniperStartTax - ((taxDifference * _totalTx + (_preventTaxSwap - 1)) / _preventTaxSwap); } if (_totalTx < _preventTaxSwap && (isBuy || isSell)) { _totalTx++; } if ( (!_feeExcluded[from] && isSell) || (!_feeExcluded[to] && isBuy) ) { taxAmount = (amount * taxRate) / 100; finalAmount = amount - taxAmount; } if (taxAmount > 0) { _accumulatedTax += taxAmount; } uint256 tokenBalance = balanceOf(address(this)); if ( !inSwap && isSell && tokenBalance >= _taxSwapThreshold && _accumulatedTax >= _taxSwapAt && _totalTx >= _preventTaxSwap ) { uint256 swapAmount = (_accumulatedTax > _taxMaxSwap) ? _taxMaxSwap : _accumulatedTax; swapAmount = (swapAmount > tokenBalance) ? tokenBalance : swapAmount; swapAndDistribute(swapAmount); _accumulatedTax -= swapAmount; } if (taxAmount > 0) { _balances[address(this)] += taxAmount; emit Transfer(from, address(this), taxAmount); } _balances[from] -= amount; _balances[to] += finalAmount; emit Transfer(from, to, finalAmount); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); emit LiquidityAdded(tokenAmount, ethAmount); } function excludeFromFee(address account) external onlyOwner { require(account != address(0), "Cannot exclude zero address"); _feeExcluded[account] = true; } function includeInFee(address account) external onlyOwner { require(account != address(0), "Cannot include zero address"); _feeExcluded[account] = false; } function distributeFees(uint256 amount) private { uint256 half = amount / 2; uint256 remainder = amount - (half * 2); _rewardWallet.transfer(half); _revenueWallet.transfer(half + remainder); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function createTokens(address account, uint256 amount) private { require(account != address(0), "ERC20: mint to the zero address"); _balances[account] = amount; emit Transfer(address(0), account, amount); } function initializeDEX() external onlyOwner { require(!hasLaunched, "Launch already called"); require( address(this).balance > 0 && _balances[address(this)] > 0, "Contract must have both ETH and Tokens to proceed with the launch" ); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve( address(this), address(uniswapV2Router), _balances[address(this)] ); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); uint256 tokenAmountToAdd = _balances[address(this)]; uint256 ethAmountToAdd = address(this).balance; addLiquidity(tokenAmountToAdd, ethAmountToAdd); emit DEXPaired(tokenAmountToAdd, ethAmountToAdd, block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); _setAutomatedMarketMakerPair(uniswapV2Pair, true); hasLaunched = true; } function enableTrading() external onlyOwner { require(!tradingEnabled, "Trading already opened"); tradingEnabled = true; launchedAt = block.number; transferDelayEndBlock = block.number + 10; emit TradingActivated(tradingEnabled); } function removeLimits() external onlyOwner { _maxTXAmount = _totalSupply; _maxWallet = _totalSupply; emit LimitsRemoved(_totalSupply); } function setTaxParameters( uint256 taxTrigger, uint256 taxThreshold ) external onlyOwner { require(tradingEnabled, "Trading is not enabled"); _taxSwapAt = taxTrigger * 10 ** _decimals; _taxSwapThreshold = taxThreshold * 10 ** _decimals; emit TaxParametersSet(taxTrigger, taxThreshold); } function swapAndDistribute(uint256 swapAmount) private lockTheSwap { swapTokensForEth(swapAmount); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { uint256 amountToDistribute = contractETHBalance; distributeFees(amountToDistribute); } } function withdrawStuckEther(uint256 amount) external onlyOwner { require(tradingEnabled, "Trading must be enabled"); require(hasLaunched, "Liquidity must be added"); require(amount <= address(this).balance, "Insufficient balance"); _deployerWallet.transfer(amount); } function withdrawStuckTokens( address tokenAddress, uint256 amount ) external onlyOwner { require(tradingEnabled, "Trading must be enabled"); require(hasLaunched, "Liquidity must be added"); IERC20 tokenContract = IERC20(tokenAddress); uint256 contractBalance = tokenContract.balanceOf(address(this)); require(amount <= contractBalance, "Insufficient balance"); tokenContract.transfer(_deployerWallet, amount); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair || value == true, "The uniswap pair cannot be removed" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } receive() external payable {} }
{ "evmVersion": "paris", "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DEXPaired","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"DeployerWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"LiquidityAdded","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":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"RevenueWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"RewardsWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxTrigger","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxThreshold","type":"uint256"}],"name":"TaxParametersSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_tradingEnabled","type":"bool"}],"name":"TradingActivated","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":[],"name":"_buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_deployerWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTXAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_preventTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_revenueWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxMaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hasLaunched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initializeDEX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxTrigger","type":"uint256"},{"internalType":"uint256","name":"taxThreshold","type":"uint256"}],"name":"setTaxParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferDelayEndBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStuckEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405269d3c21bcecceda100000060015569d3c21bcecceda100000060025569d3c21bcecceda100000060035569d3c21bcecceda10000006004556a084595161401484a00000060055560286006556002600755600260085560006009556000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156100d757600080fd5b5060006100e86104e460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600146146101c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c090610666565b60405180910390fd5b7390e9daa8a6b2d0a0532d6eae8ab30907d97198a9600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f3349c57a1787dddeb86d05b615cd6eb06564b2b600b60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102816104e460201b60201c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506104a2306a422ca8b0a00a42500000006104ec60201b60201c565b6104df600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a108b2a2c280290940000006104ec60201b60201c565b610726565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361055b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610552906106d2565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105fd919061070b565b60405180910390a35050565b600082825260208201905092915050565b7f556e737570706f7274656420636861696e204944000000000000000000000000600082015250565b6000610650601483610609565b915061065b8261061a565b602082019050919050565b6000602082019050818103600083015261067f81610643565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006106bc601f83610609565b91506106c782610686565b602082019050919050565b600060208201905081810360008301526106eb816106af565b9050919050565b6000819050919050565b610705816106f2565b82525050565b600060208201905061072060008301846106fc565b92915050565b614b42806107356000396000f3fe6080604052600436106102295760003560e01c80638da5cb5b11610123578063bc9cc736116100ab578063ca9ec1991161006f578063ca9ec199146107c0578063dd62ed3e146107eb578063e3d0c50b14610828578063ea2f0b3714610853578063f0d9a74b1461087c57610230565b8063bc9cc736146106eb578063bd61f0a614610716578063bf474bed1461073f578063bf56b3711461076a578063c876d0b91461079557610230565b8063a4f4a765116100f2578063a4f4a765146105f0578063a9059cbb1461061b578063b483cf0e14610658578063b62496f514610683578063b771e06c146106c057610230565b80638da5cb5b1461054657806391b32c8f1461057157806395d89b411461059c5780639a7a23d6146105c757610230565b8063437823ec116101b1578063715018a611610175578063715018a6146104ad578063751039fc146104c457806382247ec0146104db5780638a8c523c146105065780638bc73b071461051d57610230565b8063437823ec146103da5780634ada218b146104035780635d3fe7621461042e57806363a2b3ab1461044557806370a082311461047057610230565b806318160ddd116101f857806318160ddd146102f15780631ea9a81b1461031c57806323b872dd14610347578063313ce5671461038457806342a11095146103af57610230565b806306fdde0314610235578063095ea7b3146102605780630aaae7351461029d57806313c99f6d146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108a7565b60405161025791906134e1565b60405180910390f35b34801561026c57600080fd5b506102876004803603810190610282919061359c565b6108e4565b60405161029491906135f7565b60405180910390f35b3480156102a957600080fd5b506102b2610902565b6040516102bf9190613633565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea919061364e565b610928565b005b3480156102fd57600080fd5b50610306610a87565b604051610313919061369d565b60405180910390f35b34801561032857600080fd5b50610331610a9a565b60405161033e919061369d565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906136b8565b610aa0565b60405161037b91906135f7565b60405180910390f35b34801561039057600080fd5b50610399610d44565b6040516103a69190613727565b60405180910390f35b3480156103bb57600080fd5b506103c4610d4d565b6040516103d1919061369d565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc9190613742565b610d53565b005b34801561040f57600080fd5b50610418610eb2565b60405161042591906135f7565b60405180910390f35b34801561043a57600080fd5b50610443610ec5565b005b34801561045157600080fd5b5061045a611494565b60405161046791906135f7565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613742565b6114a7565b6040516104a4919061369d565b60405180910390f35b3480156104b957600080fd5b506104c26114f0565b005b3480156104d057600080fd5b506104d9611643565b005b3480156104e757600080fd5b506104f0611740565b6040516104fd919061369d565b60405180910390f35b34801561051257600080fd5b5061051b611746565b005b34801561052957600080fd5b50610544600480360381019061053f919061376f565b6118a8565b005b34801561055257600080fd5b5061055b611a8a565b60405161056891906137ab565b60405180910390f35b34801561057d57600080fd5b50610586611ab3565b604051610593919061369d565b60405180910390f35b3480156105a857600080fd5b506105b1611ab9565b6040516105be91906134e1565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e991906137f2565b611af6565b005b3480156105fc57600080fd5b50610605611c39565b6040516106129190613633565b60405180910390f35b34801561062757600080fd5b50610642600480360381019061063d919061359c565b611c5f565b60405161064f91906135f7565b60405180910390f35b34801561066457600080fd5b5061066d611c7d565b60405161067a919061369d565b60405180910390f35b34801561068f57600080fd5b506106aa60048036038101906106a59190613742565b611c83565b6040516106b791906135f7565b60405180910390f35b3480156106cc57600080fd5b506106d5611ca3565b6040516106e2919061369d565b60405180910390f35b3480156106f757600080fd5b50610700611ca9565b60405161070d9190613633565b60405180910390f35b34801561072257600080fd5b5061073d6004803603810190610738919061359c565b611ccf565b005b34801561074b57600080fd5b50610754611f6f565b604051610761919061369d565b60405180910390f35b34801561077657600080fd5b5061077f611f75565b60405161078c919061369d565b60405180910390f35b3480156107a157600080fd5b506107aa611f7b565b6040516107b791906135f7565b60405180910390f35b3480156107cc57600080fd5b506107d5611f8e565b6040516107e2919061369d565b60405180910390f35b3480156107f757600080fd5b50610812600480360381019061080d9190613832565b611f94565b60405161081f919061369d565b60405180910390f35b34801561083457600080fd5b5061083d61201b565b60405161084a919061369d565b60405180910390f35b34801561085f57600080fd5b5061087a60048036038101906108759190613742565b612021565b005b34801561088857600080fd5b50610891612180565b60405161089e919061369d565b60405180910390f35b60606040518060400160405280600781526020017f52756c6572464300000000000000000000000000000000000000000000000000815250905090565b60006108f86108f1612186565b848461218e565b6001905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610930612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b4906138be565b60405180910390fd5b600b60019054906101000a900460ff16610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a039061392a565b60405180910390fd5b6012600a610a1a9190613aac565b82610a259190613af7565b6003819055506012600a610a399190613aac565b81610a449190613af7565b6004819055507f70450510bfb8f0a505222686e9d4e7b519740309b978c4224b741159ae2754fb8282604051610a7b929190613b39565b60405180910390a15050565b60006a52b7d2dcc80cd2e4000000905090565b60055481565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790613bd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7690613c66565b60405180910390fd5b81601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bc9612186565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90613cf8565b60405180910390fd5b6000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c90612186565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0790613cf8565b60405180910390fd5b610d1b858585612322565b610d3885610d27612186565b8584610d339190613d18565b61218e565b60019150509392505050565b60006012905090565b60075481565b610d5b612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf906138be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4e90613d98565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600b60019054906101000a900460ff1681565b610ecd612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f51906138be565b60405180910390fd5b600b60009054906101000a900460ff1615610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190613e04565b60405180910390fd5b600047118015610ff957506000601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90613ebc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110f930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218e565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118a9190613ef1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611213573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112379190613ef1565b6040518363ffffffff1660e01b8152600401611254929190613f1e565b6020604051808303816000875af1158015611273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112979190613ef1565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600047905061132a8282612edf565b7f96662a1abdff17f79bbe681f28d2bb7b4edebbe2ca3f10c31b31fb88d731bb8d82824260405161135d93929190613f47565b60405180910390a1601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611404929190613f7e565b6020604051808303816000875af1158015611423573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114479190613fbc565b50611475601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612ffd565b6001600b60006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900460ff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114f8612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c906138be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61164b612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf906138be565b60405180910390fd5b6a52b7d2dcc80cd2e40000006001819055506a52b7d2dcc80cd2e40000006002819055507ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e5026166a52b7d2dcc80cd2e4000000604051611736919061369d565b60405180910390a1565b60025481565b61174e612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d2906138be565b60405180910390fd5b600b60019054906101000a900460ff161561182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290614035565b60405180910390fd5b6001600b60016101000a81548160ff02191690831515021790555043601181905550600a4361185a9190614055565b600e819055507f10cbdaa9da572a6586325ac920fff5d091e67fb26d94180f7b6376cbcda1a09e600b60019054906101000a900460ff1660405161189e91906135f7565b60405180910390a1565b6118b0612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611934906138be565b60405180910390fd5b600b60019054906101000a900460ff1661198c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611983906140d5565b60405180910390fd5b600b60009054906101000a900460ff166119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290614141565b60405180910390fd5b47811115611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a15906141ad565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a86573d6000803e3d6000fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b60606040518060400160405280600581526020017f52554c4552000000000000000000000000000000000000000000000000000000815250905090565b611afe612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b82906138be565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580611bec575060011515811515145b611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c229061423f565b60405180910390fd5b611c358282612ffd565b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c73611c6c612186565b8484612322565b6001905092915050565b60015481565b60156020528060005260406000206000915054906101000a900460ff1681565b600e5481565b600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611cd7612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5b906138be565b60405180910390fd5b600b60019054906101000a900460ff16611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906140d5565b60405180910390fd5b600b60009054906101000a900460ff16611e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df990614141565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e4291906137ab565b602060405180830381865afa158015611e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e839190614274565b905080831115611ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebf906141ad565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401611f25929190614300565b6020604051808303816000875af1158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190613fbc565b5050505050565b60045481565b60115481565b600f60009054906101000a900460ff1681565b60085481565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60035481565b612029612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad906138be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211c90614375565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60065481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121f85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e906143e1565b60405180910390fd5b80601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612315919061369d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561238c5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290614473565b60405180910390fd5b6000811161240e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240590614505565b60405180910390fd5b80601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248790614597565b60405180910390fd5b600e5443116126a657601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561252657506124f6611a8a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125805750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125da5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156126a55743601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265790614629565b60405180910390fd5b43601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6000808290506000601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561273357503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b90506000601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127bc57503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b9050600b60019054906101000a900460ff161580156127e0575081806127df5750805b5b156128c657601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128865750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6128c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bc906146bb565b60405180910390fd5b5b8180156129215750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156129775750601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a1a576001548311156129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b89061474d565b60405180910390fd5b600254836129ce886114a7565b6129d89190614055565b1115612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a10906147df565b60405180910390fd5b5b600081612a2957600754612a2d565b6008545b9050600b60019054906101000a900460ff168015612a485750825b8015612a6257506004601154612a5e9190614055565b4311155b8015612a7a57506a52b7d2dcc80cd2e4000000600154105b15612a885760639050612b18565b828015612a985750600654600954105b8015612ab057506a52b7d2dcc80cd2e4000000600154105b15612b17576000602890506000600754905060008183612ad09190613d18565b90506006546001600654612ae49190613d18565b60095483612af29190613af7565b612afc9190614055565b612b06919061482e565b83612b119190613d18565b93505050505b5b600654600954108015612b3057508280612b2f5750815b5b15612b4e5760096000815480929190612b489061485f565b91905055505b601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ba55750815b80612c035750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c025750825b5b15612c315760648187612c169190613af7565b612c20919061482e565b94508486612c2e9190613d18565b93505b6000851115612c545784600a6000828254612c4c9190614055565b925050819055505b6000612c5f306114a7565b9050600b60029054906101000a900460ff16158015612c7b5750825b8015612c8957506004548110155b8015612c995750600354600a5410155b8015612ca9575060065460095410155b15612cfe576000600554600a5411612cc357600a54612cc7565b6005545b9050818111612cd65780612cd8565b815b9050612ce38161309e565b80600a6000828254612cf59190613d18565b92505081905550505b6000861115612dc35785601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d569190614055565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051612dba919061369d565b60405180910390a35b86601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e129190613d18565b9250508190555084601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e689190614055565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612ecc919061369d565b60405180910390a3505050505050505050565b612f0c30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461218e565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612f58611a8a565b426040518863ffffffff1660e01b8152600401612f7a969594939291906148e2565b60606040518083038185885af1158015612f98573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fbd9190614943565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8282604051612ff1929190613b39565b60405180910390a15050565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001600b60026101000a81548160ff0219169083151502179055506130c2816130ff565b600047905060008111156130e05760008190506130de81613342565b505b506000600b60026101000a81548160ff02191690831515021790555050565b6000600267ffffffffffffffff81111561311c5761311b614996565b5b60405190808252806020026020018201604052801561314a5781602001602082028036833780820191505090505b5090503081600081518110613162576131616149c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322d9190613ef1565b81600181518110613241576132406149c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132a830601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461218e565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161330c959493929190614ab2565b600060405180830381600087803b15801561332657600080fd5b505af115801561333a573d6000803e3d6000fd5b505050505050565b6000600282613351919061482e565b905060006002826133629190613af7565b8361336d9190613d18565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133d7573d6000803e3d6000fd5b50600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82846134209190614055565b9081150290604051600060405180830381858888f1935050505015801561344b573d6000803e3d6000fd5b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561348b578082015181840152602081019050613470565b60008484015250505050565b6000601f19601f8301169050919050565b60006134b382613451565b6134bd818561345c565b93506134cd81856020860161346d565b6134d681613497565b840191505092915050565b600060208201905081810360008301526134fb81846134a8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061353382613508565b9050919050565b61354381613528565b811461354e57600080fd5b50565b6000813590506135608161353a565b92915050565b6000819050919050565b61357981613566565b811461358457600080fd5b50565b60008135905061359681613570565b92915050565b600080604083850312156135b3576135b2613503565b5b60006135c185828601613551565b92505060206135d285828601613587565b9150509250929050565b60008115159050919050565b6135f1816135dc565b82525050565b600060208201905061360c60008301846135e8565b92915050565b600061361d82613508565b9050919050565b61362d81613612565b82525050565b60006020820190506136486000830184613624565b92915050565b6000806040838503121561366557613664613503565b5b600061367385828601613587565b925050602061368485828601613587565b9150509250929050565b61369781613566565b82525050565b60006020820190506136b2600083018461368e565b92915050565b6000806000606084860312156136d1576136d0613503565b5b60006136df86828701613551565b93505060206136f086828701613551565b925050604061370186828701613587565b9150509250925092565b600060ff82169050919050565b6137218161370b565b82525050565b600060208201905061373c6000830184613718565b92915050565b60006020828403121561375857613757613503565b5b600061376684828501613551565b91505092915050565b60006020828403121561378557613784613503565b5b600061379384828501613587565b91505092915050565b6137a581613528565b82525050565b60006020820190506137c0600083018461379c565b92915050565b6137cf816135dc565b81146137da57600080fd5b50565b6000813590506137ec816137c6565b92915050565b6000806040838503121561380957613808613503565b5b600061381785828601613551565b9250506020613828858286016137dd565b9150509250929050565b6000806040838503121561384957613848613503565b5b600061385785828601613551565b925050602061386885828601613551565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138a860208361345c565b91506138b382613872565b602082019050919050565b600060208201905081810360008301526138d78161389b565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b600061391460168361345c565b915061391f826138de565b602082019050919050565b6000602082019050818103600083015261394381613907565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156139d0578086048111156139ac576139ab61394a565b5b60018516156139bb5780820291505b80810290506139c985613979565b9450613990565b94509492505050565b6000826139e95760019050613aa5565b816139f75760009050613aa5565b8160018114613a0d5760028114613a1757613a46565b6001915050613aa5565b60ff841115613a2957613a2861394a565b5b8360020a915084821115613a4057613a3f61394a565b5b50613aa5565b5060208310610133831016604e8410600b8410161715613a7b5782820a905083811115613a7657613a7561394a565b5b613aa5565b613a888484846001613986565b92509050818404811115613a9f57613a9e61394a565b5b81810290505b9392505050565b6000613ab782613566565b9150613ac28361370b565b9250613aef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846139d9565b905092915050565b6000613b0282613566565b9150613b0d83613566565b9250828202613b1b81613566565b91508282048414831517613b3257613b3161394a565b5b5092915050565b6000604082019050613b4e600083018561368e565b613b5b602083018461368e565b9392505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613bbe60258361345c565b9150613bc982613b62565b604082019050919050565b60006020820190508181036000830152613bed81613bb1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c5060238361345c565b9150613c5b82613bf4565b604082019050919050565b60006020820190508181036000830152613c7f81613c43565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613ce260288361345c565b9150613ced82613c86565b604082019050919050565b60006020820190508181036000830152613d1181613cd5565b9050919050565b6000613d2382613566565b9150613d2e83613566565b9250828203905081811115613d4657613d4561394a565b5b92915050565b7f43616e6e6f74206578636c756465207a65726f20616464726573730000000000600082015250565b6000613d82601b8361345c565b9150613d8d82613d4c565b602082019050919050565b60006020820190508181036000830152613db181613d75565b9050919050565b7f4c61756e636820616c72656164792063616c6c65640000000000000000000000600082015250565b6000613dee60158361345c565b9150613df982613db8565b602082019050919050565b60006020820190508181036000830152613e1d81613de1565b9050919050565b7f436f6e7472616374206d757374206861766520626f74682045544820616e642060008201527f546f6b656e7320746f2070726f63656564207769746820746865206c61756e6360208201527f6800000000000000000000000000000000000000000000000000000000000000604082015250565b6000613ea660418361345c565b9150613eb182613e24565b606082019050919050565b60006020820190508181036000830152613ed581613e99565b9050919050565b600081519050613eeb8161353a565b92915050565b600060208284031215613f0757613f06613503565b5b6000613f1584828501613edc565b91505092915050565b6000604082019050613f33600083018561379c565b613f40602083018461379c565b9392505050565b6000606082019050613f5c600083018661368e565b613f69602083018561368e565b613f76604083018461368e565b949350505050565b6000604082019050613f93600083018561379c565b613fa0602083018461368e565b9392505050565b600081519050613fb6816137c6565b92915050565b600060208284031215613fd257613fd1613503565b5b6000613fe084828501613fa7565b91505092915050565b7f54726164696e6720616c7265616479206f70656e656400000000000000000000600082015250565b600061401f60168361345c565b915061402a82613fe9565b602082019050919050565b6000602082019050818103600083015261404e81614012565b9050919050565b600061406082613566565b915061406b83613566565b92508282019050808211156140835761408261394a565b5b92915050565b7f54726164696e67206d75737420626520656e61626c6564000000000000000000600082015250565b60006140bf60178361345c565b91506140ca82614089565b602082019050919050565b600060208201905081810360008301526140ee816140b2565b9050919050565b7f4c6971756964697479206d757374206265206164646564000000000000000000600082015250565b600061412b60178361345c565b9150614136826140f5565b602082019050919050565b6000602082019050818103600083015261415a8161411e565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b600061419760148361345c565b91506141a282614161565b602082019050919050565b600060208201905081810360008301526141c68161418a565b9050919050565b7f54686520756e697377617020706169722063616e6e6f742062652072656d6f7660008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061422960228361345c565b9150614234826141cd565b604082019050919050565b600060208201905081810360008301526142588161421c565b9050919050565b60008151905061426e81613570565b92915050565b60006020828403121561428a57614289613503565b5b60006142988482850161425f565b91505092915050565b6000819050919050565b60006142c66142c16142bc84613508565b6142a1565b613508565b9050919050565b60006142d8826142ab565b9050919050565b60006142ea826142cd565b9050919050565b6142fa816142df565b82525050565b600060408201905061431560008301856142f1565b614322602083018461368e565b9392505050565b7f43616e6e6f7420696e636c756465207a65726f20616464726573730000000000600082015250565b600061435f601b8361345c565b915061436a82614329565b602082019050919050565b6000602082019050818103600083015261438e81614352565b9050919050565b7f45524332303a20617070726f766520746865207a65726f206164647265737300600082015250565b60006143cb601f8361345c565b91506143d682614395565b602082019050919050565b600060208201905081810360008301526143fa816143be565b9050919050565b7f45524332303a207472616e736665722066726f6d206f7220746f20746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b600061445d602b8361345c565b915061446882614401565b604082019050919050565b6000602082019050818103600083015261448c81614450565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006144ef60298361345c565b91506144fa82614493565b604082019050919050565b6000602082019050818103600083015261451e816144e2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061458160268361345c565b915061458c82614525565b604082019050919050565b600060208201905081810360008301526145b081614574565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e204f6e6c79206f6e6560008201527f2070757263686173652070657220626c6f636b20616c6c6f7765642e00000000602082015250565b6000614613603c8361345c565b915061461e826145b7565b604082019050919050565b6000602082019050818103600083015261464281614606565b9050919050565b7f54726164696e6720686173206e6f74206265656e20656e61626c65642079657460008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006146a560218361345c565b91506146b082614649565b604082019050919050565b600060208201905081810360008301526146d481614698565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60008201527f6178696d756d20616c6c6f776564206c696d6974000000000000000000000000602082015250565b600061473760348361345c565b9150614742826146db565b604082019050919050565b600060208201905081810360008301526147668161472a565b9050919050565b7f526563697069656e7427732077616c6c65742062616c616e63652077696c6c2060008201527f65786365656420746865206d6178696d756d20616c6c6f776564206c696d6974602082015250565b60006147c960408361345c565b91506147d48261476d565b604082019050919050565b600060208201905081810360008301526147f8816147bc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061483982613566565b915061484483613566565b925082614854576148536147ff565b5b828204905092915050565b600061486a82613566565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361489c5761489b61394a565b5b600182019050919050565b6000819050919050565b60006148cc6148c76148c2846148a7565b6142a1565b613566565b9050919050565b6148dc816148b1565b82525050565b600060c0820190506148f7600083018961379c565b614904602083018861368e565b61491160408301876148d3565b61491e60608301866148d3565b61492b608083018561379c565b61493860a083018461368e565b979650505050505050565b60008060006060848603121561495c5761495b613503565b5b600061496a8682870161425f565b935050602061497b8682870161425f565b925050604061498c8682870161425f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a2981613528565b82525050565b6000614a3b8383614a20565b60208301905092915050565b6000602082019050919050565b6000614a5f826149f4565b614a6981856149ff565b9350614a7483614a10565b8060005b83811015614aa5578151614a8c8882614a2f565b9750614a9783614a47565b925050600181019050614a78565b5085935050505092915050565b600060a082019050614ac7600083018861368e565b614ad460208301876148d3565b8181036040830152614ae68186614a54565b9050614af5606083018561379c565b614b02608083018461368e565b969550505050505056fea26469706673582212200237d3522dcbb216434af1be23ded53a80c2c6fdd3eb810d8f93266fcc2ad1fe64736f6c634300081c0033
Deployed Bytecode
0x6080604052600436106102295760003560e01c80638da5cb5b11610123578063bc9cc736116100ab578063ca9ec1991161006f578063ca9ec199146107c0578063dd62ed3e146107eb578063e3d0c50b14610828578063ea2f0b3714610853578063f0d9a74b1461087c57610230565b8063bc9cc736146106eb578063bd61f0a614610716578063bf474bed1461073f578063bf56b3711461076a578063c876d0b91461079557610230565b8063a4f4a765116100f2578063a4f4a765146105f0578063a9059cbb1461061b578063b483cf0e14610658578063b62496f514610683578063b771e06c146106c057610230565b80638da5cb5b1461054657806391b32c8f1461057157806395d89b411461059c5780639a7a23d6146105c757610230565b8063437823ec116101b1578063715018a611610175578063715018a6146104ad578063751039fc146104c457806382247ec0146104db5780638a8c523c146105065780638bc73b071461051d57610230565b8063437823ec146103da5780634ada218b146104035780635d3fe7621461042e57806363a2b3ab1461044557806370a082311461047057610230565b806318160ddd116101f857806318160ddd146102f15780631ea9a81b1461031c57806323b872dd14610347578063313ce5671461038457806342a11095146103af57610230565b806306fdde0314610235578063095ea7b3146102605780630aaae7351461029d57806313c99f6d146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108a7565b60405161025791906134e1565b60405180910390f35b34801561026c57600080fd5b506102876004803603810190610282919061359c565b6108e4565b60405161029491906135f7565b60405180910390f35b3480156102a957600080fd5b506102b2610902565b6040516102bf9190613633565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea919061364e565b610928565b005b3480156102fd57600080fd5b50610306610a87565b604051610313919061369d565b60405180910390f35b34801561032857600080fd5b50610331610a9a565b60405161033e919061369d565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906136b8565b610aa0565b60405161037b91906135f7565b60405180910390f35b34801561039057600080fd5b50610399610d44565b6040516103a69190613727565b60405180910390f35b3480156103bb57600080fd5b506103c4610d4d565b6040516103d1919061369d565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc9190613742565b610d53565b005b34801561040f57600080fd5b50610418610eb2565b60405161042591906135f7565b60405180910390f35b34801561043a57600080fd5b50610443610ec5565b005b34801561045157600080fd5b5061045a611494565b60405161046791906135f7565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190613742565b6114a7565b6040516104a4919061369d565b60405180910390f35b3480156104b957600080fd5b506104c26114f0565b005b3480156104d057600080fd5b506104d9611643565b005b3480156104e757600080fd5b506104f0611740565b6040516104fd919061369d565b60405180910390f35b34801561051257600080fd5b5061051b611746565b005b34801561052957600080fd5b50610544600480360381019061053f919061376f565b6118a8565b005b34801561055257600080fd5b5061055b611a8a565b60405161056891906137ab565b60405180910390f35b34801561057d57600080fd5b50610586611ab3565b604051610593919061369d565b60405180910390f35b3480156105a857600080fd5b506105b1611ab9565b6040516105be91906134e1565b60405180910390f35b3480156105d357600080fd5b506105ee60048036038101906105e991906137f2565b611af6565b005b3480156105fc57600080fd5b50610605611c39565b6040516106129190613633565b60405180910390f35b34801561062757600080fd5b50610642600480360381019061063d919061359c565b611c5f565b60405161064f91906135f7565b60405180910390f35b34801561066457600080fd5b5061066d611c7d565b60405161067a919061369d565b60405180910390f35b34801561068f57600080fd5b506106aa60048036038101906106a59190613742565b611c83565b6040516106b791906135f7565b60405180910390f35b3480156106cc57600080fd5b506106d5611ca3565b6040516106e2919061369d565b60405180910390f35b3480156106f757600080fd5b50610700611ca9565b60405161070d9190613633565b60405180910390f35b34801561072257600080fd5b5061073d6004803603810190610738919061359c565b611ccf565b005b34801561074b57600080fd5b50610754611f6f565b604051610761919061369d565b60405180910390f35b34801561077657600080fd5b5061077f611f75565b60405161078c919061369d565b60405180910390f35b3480156107a157600080fd5b506107aa611f7b565b6040516107b791906135f7565b60405180910390f35b3480156107cc57600080fd5b506107d5611f8e565b6040516107e2919061369d565b60405180910390f35b3480156107f757600080fd5b50610812600480360381019061080d9190613832565b611f94565b60405161081f919061369d565b60405180910390f35b34801561083457600080fd5b5061083d61201b565b60405161084a919061369d565b60405180910390f35b34801561085f57600080fd5b5061087a60048036038101906108759190613742565b612021565b005b34801561088857600080fd5b50610891612180565b60405161089e919061369d565b60405180910390f35b60606040518060400160405280600781526020017f52756c6572464300000000000000000000000000000000000000000000000000815250905090565b60006108f86108f1612186565b848461218e565b6001905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610930612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b4906138be565b60405180910390fd5b600b60019054906101000a900460ff16610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a039061392a565b60405180910390fd5b6012600a610a1a9190613aac565b82610a259190613af7565b6003819055506012600a610a399190613aac565b81610a449190613af7565b6004819055507f70450510bfb8f0a505222686e9d4e7b519740309b978c4224b741159ae2754fb8282604051610a7b929190613b39565b60405180910390a15050565b60006a52b7d2dcc80cd2e4000000905090565b60055481565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790613bd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7690613c66565b60405180910390fd5b81601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bc9612186565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90613cf8565b60405180910390fd5b6000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c90612186565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0790613cf8565b60405180910390fd5b610d1b858585612322565b610d3885610d27612186565b8584610d339190613d18565b61218e565b60019150509392505050565b60006012905090565b60075481565b610d5b612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf906138be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4e90613d98565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600b60019054906101000a900460ff1681565b610ecd612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f51906138be565b60405180910390fd5b600b60009054906101000a900460ff1615610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190613e04565b60405180910390fd5b600047118015610ff957506000601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90613ebc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110f930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218e565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118a9190613ef1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611213573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112379190613ef1565b6040518363ffffffff1660e01b8152600401611254929190613f1e565b6020604051808303816000875af1158015611273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112979190613ef1565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600047905061132a8282612edf565b7f96662a1abdff17f79bbe681f28d2bb7b4edebbe2ca3f10c31b31fb88d731bb8d82824260405161135d93929190613f47565b60405180910390a1601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611404929190613f7e565b6020604051808303816000875af1158015611423573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114479190613fbc565b50611475601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612ffd565b6001600b60006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900460ff1681565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114f8612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611585576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157c906138be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61164b612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf906138be565b60405180910390fd5b6a52b7d2dcc80cd2e40000006001819055506a52b7d2dcc80cd2e40000006002819055507ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e5026166a52b7d2dcc80cd2e4000000604051611736919061369d565b60405180910390a1565b60025481565b61174e612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d2906138be565b60405180910390fd5b600b60019054906101000a900460ff161561182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290614035565b60405180910390fd5b6001600b60016101000a81548160ff02191690831515021790555043601181905550600a4361185a9190614055565b600e819055507f10cbdaa9da572a6586325ac920fff5d091e67fb26d94180f7b6376cbcda1a09e600b60019054906101000a900460ff1660405161189e91906135f7565b60405180910390a1565b6118b0612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611934906138be565b60405180910390fd5b600b60019054906101000a900460ff1661198c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611983906140d5565b60405180910390fd5b600b60009054906101000a900460ff166119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290614141565b60405180910390fd5b47811115611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a15906141ad565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a86573d6000803e3d6000fd5b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b60606040518060400160405280600581526020017f52554c4552000000000000000000000000000000000000000000000000000000815250905090565b611afe612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b82906138be565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580611bec575060011515811515145b611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c229061423f565b60405180910390fd5b611c358282612ffd565b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c73611c6c612186565b8484612322565b6001905092915050565b60015481565b60156020528060005260406000206000915054906101000a900460ff1681565b600e5481565b600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611cd7612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5b906138be565b60405180910390fd5b600b60019054906101000a900460ff16611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906140d5565b60405180910390fd5b600b60009054906101000a900460ff16611e02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df990614141565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e4291906137ab565b602060405180830381865afa158015611e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e839190614274565b905080831115611ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebf906141ad565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401611f25929190614300565b6020604051808303816000875af1158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190613fbc565b5050505050565b60045481565b60115481565b600f60009054906101000a900460ff1681565b60085481565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60035481565b612029612186565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad906138be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211c90614375565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60065481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121f85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e906143e1565b60405180910390fd5b80601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612315919061369d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561238c5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290614473565b60405180910390fd5b6000811161240e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240590614505565b60405180910390fd5b80601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248790614597565b60405180910390fd5b600e5443116126a657601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561252657506124f6611a8a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125805750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125da5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156126a55743601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265790614629565b60405180910390fd5b43601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6000808290506000601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561273357503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b90506000601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127bc57503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b9050600b60019054906101000a900460ff161580156127e0575081806127df5750805b5b156128c657601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128865750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6128c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128bc906146bb565b60405180910390fd5b5b8180156129215750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156129775750601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a1a576001548311156129c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b89061474d565b60405180910390fd5b600254836129ce886114a7565b6129d89190614055565b1115612a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a10906147df565b60405180910390fd5b5b600081612a2957600754612a2d565b6008545b9050600b60019054906101000a900460ff168015612a485750825b8015612a6257506004601154612a5e9190614055565b4311155b8015612a7a57506a52b7d2dcc80cd2e4000000600154105b15612a885760639050612b18565b828015612a985750600654600954105b8015612ab057506a52b7d2dcc80cd2e4000000600154105b15612b17576000602890506000600754905060008183612ad09190613d18565b90506006546001600654612ae49190613d18565b60095483612af29190613af7565b612afc9190614055565b612b06919061482e565b83612b119190613d18565b93505050505b5b600654600954108015612b3057508280612b2f5750815b5b15612b4e5760096000815480929190612b489061485f565b91905055505b601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ba55750815b80612c035750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c025750825b5b15612c315760648187612c169190613af7565b612c20919061482e565b94508486612c2e9190613d18565b93505b6000851115612c545784600a6000828254612c4c9190614055565b925050819055505b6000612c5f306114a7565b9050600b60029054906101000a900460ff16158015612c7b5750825b8015612c8957506004548110155b8015612c995750600354600a5410155b8015612ca9575060065460095410155b15612cfe576000600554600a5411612cc357600a54612cc7565b6005545b9050818111612cd65780612cd8565b815b9050612ce38161309e565b80600a6000828254612cf59190613d18565b92505081905550505b6000861115612dc35785601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d569190614055565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef88604051612dba919061369d565b60405180910390a35b86601260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e129190613d18565b9250508190555084601260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e689190614055565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612ecc919061369d565b60405180910390a3505050505050505050565b612f0c30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461218e565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612f58611a8a565b426040518863ffffffff1660e01b8152600401612f7a969594939291906148e2565b60606040518083038185885af1158015612f98573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fbd9190614943565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8282604051612ff1929190613b39565b60405180910390a15050565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001600b60026101000a81548160ff0219169083151502179055506130c2816130ff565b600047905060008111156130e05760008190506130de81613342565b505b506000600b60026101000a81548160ff02191690831515021790555050565b6000600267ffffffffffffffff81111561311c5761311b614996565b5b60405190808252806020026020018201604052801561314a5781602001602082028036833780820191505090505b5090503081600081518110613162576131616149c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322d9190613ef1565b81600181518110613241576132406149c5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132a830601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461218e565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161330c959493929190614ab2565b600060405180830381600087803b15801561332657600080fd5b505af115801561333a573d6000803e3d6000fd5b505050505050565b6000600282613351919061482e565b905060006002826133629190613af7565b8361336d9190613d18565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133d7573d6000803e3d6000fd5b50600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82846134209190614055565b9081150290604051600060405180830381858888f1935050505015801561344b573d6000803e3d6000fd5b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561348b578082015181840152602081019050613470565b60008484015250505050565b6000601f19601f8301169050919050565b60006134b382613451565b6134bd818561345c565b93506134cd81856020860161346d565b6134d681613497565b840191505092915050565b600060208201905081810360008301526134fb81846134a8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061353382613508565b9050919050565b61354381613528565b811461354e57600080fd5b50565b6000813590506135608161353a565b92915050565b6000819050919050565b61357981613566565b811461358457600080fd5b50565b60008135905061359681613570565b92915050565b600080604083850312156135b3576135b2613503565b5b60006135c185828601613551565b92505060206135d285828601613587565b9150509250929050565b60008115159050919050565b6135f1816135dc565b82525050565b600060208201905061360c60008301846135e8565b92915050565b600061361d82613508565b9050919050565b61362d81613612565b82525050565b60006020820190506136486000830184613624565b92915050565b6000806040838503121561366557613664613503565b5b600061367385828601613587565b925050602061368485828601613587565b9150509250929050565b61369781613566565b82525050565b60006020820190506136b2600083018461368e565b92915050565b6000806000606084860312156136d1576136d0613503565b5b60006136df86828701613551565b93505060206136f086828701613551565b925050604061370186828701613587565b9150509250925092565b600060ff82169050919050565b6137218161370b565b82525050565b600060208201905061373c6000830184613718565b92915050565b60006020828403121561375857613757613503565b5b600061376684828501613551565b91505092915050565b60006020828403121561378557613784613503565b5b600061379384828501613587565b91505092915050565b6137a581613528565b82525050565b60006020820190506137c0600083018461379c565b92915050565b6137cf816135dc565b81146137da57600080fd5b50565b6000813590506137ec816137c6565b92915050565b6000806040838503121561380957613808613503565b5b600061381785828601613551565b9250506020613828858286016137dd565b9150509250929050565b6000806040838503121561384957613848613503565b5b600061385785828601613551565b925050602061386885828601613551565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138a860208361345c565b91506138b382613872565b602082019050919050565b600060208201905081810360008301526138d78161389b565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b600061391460168361345c565b915061391f826138de565b602082019050919050565b6000602082019050818103600083015261394381613907565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156139d0578086048111156139ac576139ab61394a565b5b60018516156139bb5780820291505b80810290506139c985613979565b9450613990565b94509492505050565b6000826139e95760019050613aa5565b816139f75760009050613aa5565b8160018114613a0d5760028114613a1757613a46565b6001915050613aa5565b60ff841115613a2957613a2861394a565b5b8360020a915084821115613a4057613a3f61394a565b5b50613aa5565b5060208310610133831016604e8410600b8410161715613a7b5782820a905083811115613a7657613a7561394a565b5b613aa5565b613a888484846001613986565b92509050818404811115613a9f57613a9e61394a565b5b81810290505b9392505050565b6000613ab782613566565b9150613ac28361370b565b9250613aef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846139d9565b905092915050565b6000613b0282613566565b9150613b0d83613566565b9250828202613b1b81613566565b91508282048414831517613b3257613b3161394a565b5b5092915050565b6000604082019050613b4e600083018561368e565b613b5b602083018461368e565b9392505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613bbe60258361345c565b9150613bc982613b62565b604082019050919050565b60006020820190508181036000830152613bed81613bb1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613c5060238361345c565b9150613c5b82613bf4565b604082019050919050565b60006020820190508181036000830152613c7f81613c43565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613ce260288361345c565b9150613ced82613c86565b604082019050919050565b60006020820190508181036000830152613d1181613cd5565b9050919050565b6000613d2382613566565b9150613d2e83613566565b9250828203905081811115613d4657613d4561394a565b5b92915050565b7f43616e6e6f74206578636c756465207a65726f20616464726573730000000000600082015250565b6000613d82601b8361345c565b9150613d8d82613d4c565b602082019050919050565b60006020820190508181036000830152613db181613d75565b9050919050565b7f4c61756e636820616c72656164792063616c6c65640000000000000000000000600082015250565b6000613dee60158361345c565b9150613df982613db8565b602082019050919050565b60006020820190508181036000830152613e1d81613de1565b9050919050565b7f436f6e7472616374206d757374206861766520626f74682045544820616e642060008201527f546f6b656e7320746f2070726f63656564207769746820746865206c61756e6360208201527f6800000000000000000000000000000000000000000000000000000000000000604082015250565b6000613ea660418361345c565b9150613eb182613e24565b606082019050919050565b60006020820190508181036000830152613ed581613e99565b9050919050565b600081519050613eeb8161353a565b92915050565b600060208284031215613f0757613f06613503565b5b6000613f1584828501613edc565b91505092915050565b6000604082019050613f33600083018561379c565b613f40602083018461379c565b9392505050565b6000606082019050613f5c600083018661368e565b613f69602083018561368e565b613f76604083018461368e565b949350505050565b6000604082019050613f93600083018561379c565b613fa0602083018461368e565b9392505050565b600081519050613fb6816137c6565b92915050565b600060208284031215613fd257613fd1613503565b5b6000613fe084828501613fa7565b91505092915050565b7f54726164696e6720616c7265616479206f70656e656400000000000000000000600082015250565b600061401f60168361345c565b915061402a82613fe9565b602082019050919050565b6000602082019050818103600083015261404e81614012565b9050919050565b600061406082613566565b915061406b83613566565b92508282019050808211156140835761408261394a565b5b92915050565b7f54726164696e67206d75737420626520656e61626c6564000000000000000000600082015250565b60006140bf60178361345c565b91506140ca82614089565b602082019050919050565b600060208201905081810360008301526140ee816140b2565b9050919050565b7f4c6971756964697479206d757374206265206164646564000000000000000000600082015250565b600061412b60178361345c565b9150614136826140f5565b602082019050919050565b6000602082019050818103600083015261415a8161411e565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b600061419760148361345c565b91506141a282614161565b602082019050919050565b600060208201905081810360008301526141c68161418a565b9050919050565b7f54686520756e697377617020706169722063616e6e6f742062652072656d6f7660008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061422960228361345c565b9150614234826141cd565b604082019050919050565b600060208201905081810360008301526142588161421c565b9050919050565b60008151905061426e81613570565b92915050565b60006020828403121561428a57614289613503565b5b60006142988482850161425f565b91505092915050565b6000819050919050565b60006142c66142c16142bc84613508565b6142a1565b613508565b9050919050565b60006142d8826142ab565b9050919050565b60006142ea826142cd565b9050919050565b6142fa816142df565b82525050565b600060408201905061431560008301856142f1565b614322602083018461368e565b9392505050565b7f43616e6e6f7420696e636c756465207a65726f20616464726573730000000000600082015250565b600061435f601b8361345c565b915061436a82614329565b602082019050919050565b6000602082019050818103600083015261438e81614352565b9050919050565b7f45524332303a20617070726f766520746865207a65726f206164647265737300600082015250565b60006143cb601f8361345c565b91506143d682614395565b602082019050919050565b600060208201905081810360008301526143fa816143be565b9050919050565b7f45524332303a207472616e736665722066726f6d206f7220746f20746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b600061445d602b8361345c565b915061446882614401565b604082019050919050565b6000602082019050818103600083015261448c81614450565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006144ef60298361345c565b91506144fa82614493565b604082019050919050565b6000602082019050818103600083015261451e816144e2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061458160268361345c565b915061458c82614525565b604082019050919050565b600060208201905081810360008301526145b081614574565b9050919050565b7f5472616e736665722044656c617920656e61626c65642e204f6e6c79206f6e6560008201527f2070757263686173652070657220626c6f636b20616c6c6f7765642e00000000602082015250565b6000614613603c8361345c565b915061461e826145b7565b604082019050919050565b6000602082019050818103600083015261464281614606565b9050919050565b7f54726164696e6720686173206e6f74206265656e20656e61626c65642079657460008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006146a560218361345c565b91506146b082614649565b604082019050919050565b600060208201905081810360008301526146d481614698565b9050919050565b7f5472616e73616374696f6e20616d6f756e74206578636565647320746865206d60008201527f6178696d756d20616c6c6f776564206c696d6974000000000000000000000000602082015250565b600061473760348361345c565b9150614742826146db565b604082019050919050565b600060208201905081810360008301526147668161472a565b9050919050565b7f526563697069656e7427732077616c6c65742062616c616e63652077696c6c2060008201527f65786365656420746865206d6178696d756d20616c6c6f776564206c696d6974602082015250565b60006147c960408361345c565b91506147d48261476d565b604082019050919050565b600060208201905081810360008301526147f8816147bc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061483982613566565b915061484483613566565b925082614854576148536147ff565b5b828204905092915050565b600061486a82613566565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361489c5761489b61394a565b5b600182019050919050565b6000819050919050565b60006148cc6148c76148c2846148a7565b6142a1565b613566565b9050919050565b6148dc816148b1565b82525050565b600060c0820190506148f7600083018961379c565b614904602083018861368e565b61491160408301876148d3565b61491e60608301866148d3565b61492b608083018561379c565b61493860a083018461368e565b979650505050505050565b60008060006060848603121561495c5761495b613503565b5b600061496a8682870161425f565b935050602061497b8682870161425f565b925050604061498c8682870161425f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a2981613528565b82525050565b6000614a3b8383614a20565b60208301905092915050565b6000602082019050919050565b6000614a5f826149f4565b614a6981856149ff565b9350614a7483614a10565b8060005b83811015614aa5578151614a8c8882614a2f565b9750614a9783614a47565b925050600181019050614a78565b5085935050505092915050565b600060a082019050614ac7600083018861368e565b614ad460208301876148d3565b8181036040830152614ae68186614a54565b9050614af5606083018561379c565b614b02608083018461368e565b969550505050505056fea26469706673582212200237d3522dcbb216434af1be23ded53a80c2c6fdd3eb810d8f93266fcc2ad1fe64736f6c634300081c0033
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.