ERC-20
Overview
Max Total Supply
1,000,000,000 KABUTO
Holders
181
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
4,156,498.809763431 KABUTOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KABUTO
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-15 */ /* https://medium.com/@dejitarukabuto */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; 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; address private _previousOwner; 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); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract KABUTO is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Dejitaru Kabuto"; string private constant _symbol = "KABUTO"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 0; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 0; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0x7EED01fE9c23978002730DE8779d70AA9Da873B5); address payable private _marketingAddress = payable(0x7EED01fE9c23978002730DE8779d70AA9Da873B5); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000000 * 10**9; uint256 public _maxWalletSize = 20000000 * 10**9; uint256 public _swapTokensAtAmount = 10000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } 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 buytax() public view returns (uint256) { return _taxFeeOnBuy; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[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) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { 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 sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function openTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualclaim() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFees(uint256 redisTaxBuy, uint256 redisTaxSell, uint256 taxFeeBuy, uint256 taxFeeSell) public onlyOwner { _redisFeeOnBuy = redisTaxBuy; _redisFeeOnSell = redisTaxSell; _taxFeeOnBuy = taxFeeBuy; _taxFeeOnSell = taxFeeSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function settxamount(uint256 maxtx,uint256 maxwallet) public onlyOwner { _maxTxAmount = maxtx; _maxWalletSize = maxwallet; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buytax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualclaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisTaxBuy","type":"uint256"},{"internalType":"uint256","name":"redisTaxSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxtx","type":"uint256"},{"internalType":"uint256","name":"maxwallet","type":"uint256"}],"name":"settxamount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400006000196200001c919062000759565b6000196200002b9190620007c0565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f55737eed01fe9c23978002730de8779d70aa9da873b5601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737eed01fe9c23978002730de8779d70aa9da873b5601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200018157600080fd5b50600062000194620006ef60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000865565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000865565b6040518363ffffffff1660e01b815260040162000420929190620008a8565b602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000865565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cc620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000679620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e09190620008e6565b60405180910390a35062000903565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007668262000720565b9150620007738362000720565b9250826200078657620007856200072a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cd8262000720565b9150620007da8362000720565b925082821015620007f057620007ef62000791565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082d8262000800565b9050919050565b6200083f8162000820565b81146200084b57600080fd5b50565b6000815190506200085f8162000834565b92915050565b6000602082840312156200087e576200087d620007fb565b5b60006200088e848285016200084e565b91505092915050565b620008a28162000820565b82525050565b6000604082019050620008bf600083018562000897565b620008ce602083018462000897565b9392505050565b620008e08162000720565b82525050565b6000602082019050620008fd6000830184620008d5565b92915050565b613d9580620009136000396000f3fe6080604052600436106101d05760003560e01c8063715018a6116100f7578063a9059cbb11610095578063c492f04611610064578063c492f0461461065e578063cffacd0914610687578063dd62ed3e146106b0578063f2fde38b146106ed576101d7565b8063a9059cbb146105b6578063b360711d146105f3578063bfd792841461060a578063c3c8cd8014610647576101d7565b80638da5cb5b116100d15780638da5cb5b1461050c5780638f9a55c01461053757806395d89b411461056257806398a5c3151461058d576101d7565b8063715018a61461048d5780637d1db4a5146104a45780637f2feddc146104cf576101d7565b80632fd689e31161016f5780636b9990531161013e5780636b999053146103d55780636d8aa8f8146103fe5780636fcba3771461042757806370a0823114610450576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f5780634a1263f3146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632a9b807214610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612ce1565b610716565b005b34801561021157600080fd5b5061021a610840565b6040516102279190612db2565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e0a565b61087d565b6040516102649190612e65565b60405180910390f35b34801561027957600080fd5b5061028261089b565b60405161028f9190612edf565b60405180910390f35b3480156102a457600080fd5b506102ad6108c1565b6040516102ba9190612f09565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612f24565b6108d1565b6040516102f79190612e65565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190612fa3565b6109aa565b005b34801561033557600080fd5b5061033e610a5c565b60405161034b9190612f09565b60405180910390f35b34801561036057600080fd5b50610369610a62565b6040516103769190612fec565b60405180910390f35b34801561038b57600080fd5b50610394610a6b565b6040516103a19190613016565b60405180910390f35b3480156103b657600080fd5b506103bf610a91565b6040516103cc9190612f09565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f79190613031565b610a9b565b005b34801561040a57600080fd5b5061042560048036038101906104209190612fa3565b610b8b565b005b34801561043357600080fd5b5061044e6004803603810190610449919061305e565b610c3d565b005b34801561045c57600080fd5b5061047760048036038101906104729190613031565b610cf4565b6040516104849190612f09565b60405180910390f35b34801561049957600080fd5b506104a2610d45565b005b3480156104b057600080fd5b506104b9610e98565b6040516104c69190612f09565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190613031565b610e9e565b6040516105039190612f09565b60405180910390f35b34801561051857600080fd5b50610521610eb6565b60405161052e9190613016565b60405180910390f35b34801561054357600080fd5b5061054c610edf565b6040516105599190612f09565b60405180910390f35b34801561056e57600080fd5b50610577610ee5565b6040516105849190612db2565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af91906130c5565b610f22565b005b3480156105c257600080fd5b506105dd60048036038101906105d89190612e0a565b610fc1565b6040516105ea9190612e65565b60405180910390f35b3480156105ff57600080fd5b50610608610fdf565b005b34801561061657600080fd5b50610631600480360381019061062c9190613031565b6110b0565b60405161063e9190612e65565b60405180910390f35b34801561065357600080fd5b5061065c6110d0565b005b34801561066a57600080fd5b506106856004803603810190610680919061314d565b6111a9565b005b34801561069357600080fd5b506106ae60048036038101906106a991906131ad565b6112e3565b005b3480156106bc57600080fd5b506106d760048036038101906106d291906131ed565b61138a565b6040516106e49190612f09565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190613031565b611411565b005b61071e6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290613279565b60405180910390fd5b60005b815181101561083c576001601060008484815181106107d0576107cf613299565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610834906132f7565b9150506107ae565b5050565b60606040518060400160405280600f81526020017f44656a6974617275204b616275746f0000000000000000000000000000000000815250905090565b600061089161088a6115d3565b84846115db565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108de8484846117a6565b61099f846108ea6115d3565b61099a85604051806060016040528060288152602001613d3860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109506115d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202b9092919063ffffffff16565b6115db565b600190509392505050565b6109b26115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690613279565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b610aa36115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2790613279565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b936115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790613279565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610c456115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990613279565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610d3e600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208f565b9050919050565b610d4d6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd190613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f4b414255544f0000000000000000000000000000000000000000000000000000815250905090565b610f2a6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae90613279565b60405180910390fd5b8060188190555050565b6000610fd5610fce6115d3565b84846117a6565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110206115d3565b73ffffffffffffffffffffffffffffffffffffffff1614806110965750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661107e6115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b61109f57600080fd5b60004790506110ad816120fd565b50565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111116115d3565b73ffffffffffffffffffffffffffffffffffffffff1614806111875750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661116f6115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b61119057600080fd5b600061119b30610cf4565b90506111a681612169565b50565b6111b16115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613279565b60405180910390fd5b60005b838390508110156112dd57816005600086868581811061126457611263613299565b5b90506020020160208101906112799190613031565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112d5906132f7565b915050611241565b50505050565b6112eb6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136f90613279565b60405180910390fd5b81601681905550806017819055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114196115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906133b2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164290613444565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906134d6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117999190612f09565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90613568565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d906135fa565b60405180910390fd5b600081116118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c09061368c565b60405180910390fd5b6118d1610eb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561193f575061190f610eb6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2a57601560149054906101000a900460ff166119ce57611960610eb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c49061371e565b60405180910390fd5b5b601654811115611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a9061378a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061381c565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba35760175481611b5884610cf4565b611b62919061383c565b10611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990613904565b60405180910390fd5b5b6000611bae30610cf4565b9050600060185482101590506016548210611bc95760165491505b808015611be1575060158054906101000a900460ff16155b8015611c3b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c535750601560169054906101000a900460ff165b8015611ca95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cff5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2757611d0d82612169565b60004790506000811115611d2557611d24476120fd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e925760009050612019565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5557600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120005750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201857600a54600c81905550600b54600d819055505b5b612025848484846123ef565b50505050565b6000838311158290612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a9190612db2565b60405180910390fd5b50600083856120829190613924565b9050809150509392505050565b60006006548211156120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd906139ca565b60405180910390fd5b60006120e061241c565b90506120f5818461244790919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612165573d6000803e3d6000fd5b5050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121a05761219f612b40565b5b6040519080825280602002602001820160405280156121ce5781602001602082028036833780820191505090505b50905030816000815181106121e6576121e5613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561228857600080fd5b505afa15801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c091906139ff565b816001815181106122d4576122d3613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233b30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115db565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161239f959493929190613b25565b600060405180830381600087803b1580156123b957600080fd5b505af11580156123cd573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123fd576123fc612491565b5b6124088484846124d4565b806124165761241561269f565b5b50505050565b60008060006124296126b3565b91509150612440818361244790919063ffffffff16565b9250505090565b600061248983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612712565b905092915050565b6000600c541480156124a557506000600d54145b156124af576124d2565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e687612775565b95509550955095509550955061254486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127dd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125d985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262581612885565b61262f8483612942565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268c9190612f09565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e7670de0b6b3a764000060065461244790919063ffffffff16565b82101561270557600654670de0b6b3a764000093509350505061270e565b81819350935050505b9091565b60008083118290612759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127509190612db2565b60405180910390fd5b50600083856127689190613bae565b9050809150509392505050565b60008060008060008060008060006127928a600c54600d5461297c565b92509250925060006127a261241c565b905060008060006127b58e878787612a12565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061281f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202b565b905092915050565b6000808284612836919061383c565b90508381101561287b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287290613c2b565b60405180910390fd5b8091505092915050565b600061288f61241c565b905060006128a68284612a9b90919063ffffffff16565b90506128fa81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612957826006546127dd90919063ffffffff16565b6006819055506129728160075461282790919063ffffffff16565b6007819055505050565b6000806000806129a8606461299a888a612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129d260646129c4888b612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129fb826129ed858c6127dd90919063ffffffff16565b6127dd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2b8589612a9b90919063ffffffff16565b90506000612a428689612a9b90919063ffffffff16565b90506000612a598789612a9b90919063ffffffff16565b90506000612a8282612a7485876127dd90919063ffffffff16565b6127dd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aae5760009050612b10565b60008284612abc9190613c4b565b9050828482612acb9190613bae565b14612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290613d17565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b7882612b2f565b810181811067ffffffffffffffff82111715612b9757612b96612b40565b5b80604052505050565b6000612baa612b16565b9050612bb68282612b6f565b919050565b600067ffffffffffffffff821115612bd657612bd5612b40565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1782612bec565b9050919050565b612c2781612c0c565b8114612c3257600080fd5b50565b600081359050612c4481612c1e565b92915050565b6000612c5d612c5884612bbb565b612ba0565b90508083825260208201905060208402830185811115612c8057612c7f612be7565b5b835b81811015612ca95780612c958882612c35565b845260208401935050602081019050612c82565b5050509392505050565b600082601f830112612cc857612cc7612b2a565b5b8135612cd8848260208601612c4a565b91505092915050565b600060208284031215612cf757612cf6612b20565b5b600082013567ffffffffffffffff811115612d1557612d14612b25565b5b612d2184828501612cb3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d64578082015181840152602081019050612d49565b83811115612d73576000848401525b50505050565b6000612d8482612d2a565b612d8e8185612d35565b9350612d9e818560208601612d46565b612da781612b2f565b840191505092915050565b60006020820190508181036000830152612dcc8184612d79565b905092915050565b6000819050919050565b612de781612dd4565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b60008060408385031215612e2157612e20612b20565b5b6000612e2f85828601612c35565b9250506020612e4085828601612df5565b9150509250929050565b60008115159050919050565b612e5f81612e4a565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b6000819050919050565b6000612ea5612ea0612e9b84612bec565b612e80565b612bec565b9050919050565b6000612eb782612e8a565b9050919050565b6000612ec982612eac565b9050919050565b612ed981612ebe565b82525050565b6000602082019050612ef46000830184612ed0565b92915050565b612f0381612dd4565b82525050565b6000602082019050612f1e6000830184612efa565b92915050565b600080600060608486031215612f3d57612f3c612b20565b5b6000612f4b86828701612c35565b9350506020612f5c86828701612c35565b9250506040612f6d86828701612df5565b9150509250925092565b612f8081612e4a565b8114612f8b57600080fd5b50565b600081359050612f9d81612f77565b92915050565b600060208284031215612fb957612fb8612b20565b5b6000612fc784828501612f8e565b91505092915050565b600060ff82169050919050565b612fe681612fd0565b82525050565b60006020820190506130016000830184612fdd565b92915050565b61301081612c0c565b82525050565b600060208201905061302b6000830184613007565b92915050565b60006020828403121561304757613046612b20565b5b600061305584828501612c35565b91505092915050565b6000806000806080858703121561307857613077612b20565b5b600061308687828801612df5565b945050602061309787828801612df5565b93505060406130a887828801612df5565b92505060606130b987828801612df5565b91505092959194509250565b6000602082840312156130db576130da612b20565b5b60006130e984828501612df5565b91505092915050565b600080fd5b60008083601f84011261310d5761310c612b2a565b5b8235905067ffffffffffffffff81111561312a576131296130f2565b5b60208301915083602082028301111561314657613145612be7565b5b9250929050565b60008060006040848603121561316657613165612b20565b5b600084013567ffffffffffffffff81111561318457613183612b25565b5b613190868287016130f7565b935093505060206131a386828701612f8e565b9150509250925092565b600080604083850312156131c4576131c3612b20565b5b60006131d285828601612df5565b92505060206131e385828601612df5565b9150509250929050565b6000806040838503121561320457613203612b20565b5b600061321285828601612c35565b925050602061322385828601612c35565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613263602083612d35565b915061326e8261322d565b602082019050919050565b6000602082019050818103600083015261329281613256565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330282612dd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613335576133346132c8565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339c602683612d35565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342e602483612d35565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c0602283612d35565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613552602583612d35565b915061355d826134f6565b604082019050919050565b6000602082019050818103600083015261358181613545565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e4602383612d35565b91506135ef82613588565b604082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613676602983612d35565b91506136818261361a565b604082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613708603f83612d35565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613774601c83612d35565b915061377f8261373e565b602082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613806602383612d35565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b600061384782612dd4565b915061385283612dd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613887576138866132c8565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ee602383612d35565b91506138f982613892565b604082019050919050565b6000602082019050818103600083015261391d816138e1565b9050919050565b600061392f82612dd4565b915061393a83612dd4565b92508282101561394d5761394c6132c8565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139b4602a83612d35565b91506139bf82613958565b604082019050919050565b600060208201905081810360008301526139e3816139a7565b9050919050565b6000815190506139f981612c1e565b92915050565b600060208284031215613a1557613a14612b20565b5b6000613a23848285016139ea565b91505092915050565b6000819050919050565b6000613a51613a4c613a4784613a2c565b612e80565b612dd4565b9050919050565b613a6181613a36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9c81612c0c565b82525050565b6000613aae8383613a93565b60208301905092915050565b6000602082019050919050565b6000613ad282613a67565b613adc8185613a72565b9350613ae783613a83565b8060005b83811015613b18578151613aff8882613aa2565b9750613b0a83613aba565b925050600181019050613aeb565b5085935050505092915050565b600060a082019050613b3a6000830188612efa565b613b476020830187613a58565b8181036040830152613b598186613ac7565b9050613b686060830185613007565b613b756080830184612efa565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bb982612dd4565b9150613bc483612dd4565b925082613bd457613bd3613b7f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c15601b83612d35565b9150613c2082613bdf565b602082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b6000613c5682612dd4565b9150613c6183612dd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9a57613c996132c8565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d01602183612d35565b9150613d0c82613ca5565b604082019050919050565b60006020820190508181036000830152613d3081613cf4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201934b547590f46149c5b6f718cf01ce769cc43366deeb0934fbb89810588a26c64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106101d05760003560e01c8063715018a6116100f7578063a9059cbb11610095578063c492f04611610064578063c492f0461461065e578063cffacd0914610687578063dd62ed3e146106b0578063f2fde38b146106ed576101d7565b8063a9059cbb146105b6578063b360711d146105f3578063bfd792841461060a578063c3c8cd8014610647576101d7565b80638da5cb5b116100d15780638da5cb5b1461050c5780638f9a55c01461053757806395d89b411461056257806398a5c3151461058d576101d7565b8063715018a61461048d5780637d1db4a5146104a45780637f2feddc146104cf576101d7565b80632fd689e31161016f5780636b9990531161013e5780636b999053146103d55780636d8aa8f8146103fe5780636fcba3771461042757806370a0823114610450576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f5780634a1263f3146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632a9b807214610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612ce1565b610716565b005b34801561021157600080fd5b5061021a610840565b6040516102279190612db2565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e0a565b61087d565b6040516102649190612e65565b60405180910390f35b34801561027957600080fd5b5061028261089b565b60405161028f9190612edf565b60405180910390f35b3480156102a457600080fd5b506102ad6108c1565b6040516102ba9190612f09565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612f24565b6108d1565b6040516102f79190612e65565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190612fa3565b6109aa565b005b34801561033557600080fd5b5061033e610a5c565b60405161034b9190612f09565b60405180910390f35b34801561036057600080fd5b50610369610a62565b6040516103769190612fec565b60405180910390f35b34801561038b57600080fd5b50610394610a6b565b6040516103a19190613016565b60405180910390f35b3480156103b657600080fd5b506103bf610a91565b6040516103cc9190612f09565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f79190613031565b610a9b565b005b34801561040a57600080fd5b5061042560048036038101906104209190612fa3565b610b8b565b005b34801561043357600080fd5b5061044e6004803603810190610449919061305e565b610c3d565b005b34801561045c57600080fd5b5061047760048036038101906104729190613031565b610cf4565b6040516104849190612f09565b60405180910390f35b34801561049957600080fd5b506104a2610d45565b005b3480156104b057600080fd5b506104b9610e98565b6040516104c69190612f09565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190613031565b610e9e565b6040516105039190612f09565b60405180910390f35b34801561051857600080fd5b50610521610eb6565b60405161052e9190613016565b60405180910390f35b34801561054357600080fd5b5061054c610edf565b6040516105599190612f09565b60405180910390f35b34801561056e57600080fd5b50610577610ee5565b6040516105849190612db2565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af91906130c5565b610f22565b005b3480156105c257600080fd5b506105dd60048036038101906105d89190612e0a565b610fc1565b6040516105ea9190612e65565b60405180910390f35b3480156105ff57600080fd5b50610608610fdf565b005b34801561061657600080fd5b50610631600480360381019061062c9190613031565b6110b0565b60405161063e9190612e65565b60405180910390f35b34801561065357600080fd5b5061065c6110d0565b005b34801561066a57600080fd5b506106856004803603810190610680919061314d565b6111a9565b005b34801561069357600080fd5b506106ae60048036038101906106a991906131ad565b6112e3565b005b3480156106bc57600080fd5b506106d760048036038101906106d291906131ed565b61138a565b6040516106e49190612f09565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190613031565b611411565b005b61071e6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290613279565b60405180910390fd5b60005b815181101561083c576001601060008484815181106107d0576107cf613299565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610834906132f7565b9150506107ae565b5050565b60606040518060400160405280600f81526020017f44656a6974617275204b616275746f0000000000000000000000000000000000815250905090565b600061089161088a6115d3565b84846115db565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108de8484846117a6565b61099f846108ea6115d3565b61099a85604051806060016040528060288152602001613d3860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109506115d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202b9092919063ffffffff16565b6115db565b600190509392505050565b6109b26115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690613279565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b610aa36115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2790613279565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b936115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790613279565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610c456115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990613279565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610d3e600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208f565b9050919050565b610d4d6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd190613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f4b414255544f0000000000000000000000000000000000000000000000000000815250905090565b610f2a6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae90613279565b60405180910390fd5b8060188190555050565b6000610fd5610fce6115d3565b84846117a6565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110206115d3565b73ffffffffffffffffffffffffffffffffffffffff1614806110965750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661107e6115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b61109f57600080fd5b60004790506110ad816120fd565b50565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111116115d3565b73ffffffffffffffffffffffffffffffffffffffff1614806111875750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661116f6115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b61119057600080fd5b600061119b30610cf4565b90506111a681612169565b50565b6111b16115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613279565b60405180910390fd5b60005b838390508110156112dd57816005600086868581811061126457611263613299565b5b90506020020160208101906112799190613031565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112d5906132f7565b915050611241565b50505050565b6112eb6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136f90613279565b60405180910390fd5b81601681905550806017819055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114196115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906133b2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164290613444565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906134d6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117999190612f09565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90613568565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d906135fa565b60405180910390fd5b600081116118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c09061368c565b60405180910390fd5b6118d1610eb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561193f575061190f610eb6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2a57601560149054906101000a900460ff166119ce57611960610eb6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c49061371e565b60405180910390fd5b5b601654811115611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a9061378a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061381c565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba35760175481611b5884610cf4565b611b62919061383c565b10611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990613904565b60405180910390fd5b5b6000611bae30610cf4565b9050600060185482101590506016548210611bc95760165491505b808015611be1575060158054906101000a900460ff16155b8015611c3b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c535750601560169054906101000a900460ff165b8015611ca95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cff5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2757611d0d82612169565b60004790506000811115611d2557611d24476120fd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e925760009050612019565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5557600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120005750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201857600a54600c81905550600b54600d819055505b5b612025848484846123ef565b50505050565b6000838311158290612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a9190612db2565b60405180910390fd5b50600083856120829190613924565b9050809150509392505050565b60006006548211156120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd906139ca565b60405180910390fd5b60006120e061241c565b90506120f5818461244790919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612165573d6000803e3d6000fd5b5050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121a05761219f612b40565b5b6040519080825280602002602001820160405280156121ce5781602001602082028036833780820191505090505b50905030816000815181106121e6576121e5613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561228857600080fd5b505afa15801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c091906139ff565b816001815181106122d4576122d3613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233b30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115db565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161239f959493929190613b25565b600060405180830381600087803b1580156123b957600080fd5b505af11580156123cd573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123fd576123fc612491565b5b6124088484846124d4565b806124165761241561269f565b5b50505050565b60008060006124296126b3565b91509150612440818361244790919063ffffffff16565b9250505090565b600061248983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612712565b905092915050565b6000600c541480156124a557506000600d54145b156124af576124d2565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e687612775565b95509550955095509550955061254486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127dd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125d985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262581612885565b61262f8483612942565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268c9190612f09565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e7670de0b6b3a764000060065461244790919063ffffffff16565b82101561270557600654670de0b6b3a764000093509350505061270e565b81819350935050505b9091565b60008083118290612759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127509190612db2565b60405180910390fd5b50600083856127689190613bae565b9050809150509392505050565b60008060008060008060008060006127928a600c54600d5461297c565b92509250925060006127a261241c565b905060008060006127b58e878787612a12565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061281f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202b565b905092915050565b6000808284612836919061383c565b90508381101561287b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287290613c2b565b60405180910390fd5b8091505092915050565b600061288f61241c565b905060006128a68284612a9b90919063ffffffff16565b90506128fa81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612957826006546127dd90919063ffffffff16565b6006819055506129728160075461282790919063ffffffff16565b6007819055505050565b6000806000806129a8606461299a888a612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129d260646129c4888b612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129fb826129ed858c6127dd90919063ffffffff16565b6127dd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2b8589612a9b90919063ffffffff16565b90506000612a428689612a9b90919063ffffffff16565b90506000612a598789612a9b90919063ffffffff16565b90506000612a8282612a7485876127dd90919063ffffffff16565b6127dd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aae5760009050612b10565b60008284612abc9190613c4b565b9050828482612acb9190613bae565b14612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290613d17565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b7882612b2f565b810181811067ffffffffffffffff82111715612b9757612b96612b40565b5b80604052505050565b6000612baa612b16565b9050612bb68282612b6f565b919050565b600067ffffffffffffffff821115612bd657612bd5612b40565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1782612bec565b9050919050565b612c2781612c0c565b8114612c3257600080fd5b50565b600081359050612c4481612c1e565b92915050565b6000612c5d612c5884612bbb565b612ba0565b90508083825260208201905060208402830185811115612c8057612c7f612be7565b5b835b81811015612ca95780612c958882612c35565b845260208401935050602081019050612c82565b5050509392505050565b600082601f830112612cc857612cc7612b2a565b5b8135612cd8848260208601612c4a565b91505092915050565b600060208284031215612cf757612cf6612b20565b5b600082013567ffffffffffffffff811115612d1557612d14612b25565b5b612d2184828501612cb3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d64578082015181840152602081019050612d49565b83811115612d73576000848401525b50505050565b6000612d8482612d2a565b612d8e8185612d35565b9350612d9e818560208601612d46565b612da781612b2f565b840191505092915050565b60006020820190508181036000830152612dcc8184612d79565b905092915050565b6000819050919050565b612de781612dd4565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b60008060408385031215612e2157612e20612b20565b5b6000612e2f85828601612c35565b9250506020612e4085828601612df5565b9150509250929050565b60008115159050919050565b612e5f81612e4a565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b6000819050919050565b6000612ea5612ea0612e9b84612bec565b612e80565b612bec565b9050919050565b6000612eb782612e8a565b9050919050565b6000612ec982612eac565b9050919050565b612ed981612ebe565b82525050565b6000602082019050612ef46000830184612ed0565b92915050565b612f0381612dd4565b82525050565b6000602082019050612f1e6000830184612efa565b92915050565b600080600060608486031215612f3d57612f3c612b20565b5b6000612f4b86828701612c35565b9350506020612f5c86828701612c35565b9250506040612f6d86828701612df5565b9150509250925092565b612f8081612e4a565b8114612f8b57600080fd5b50565b600081359050612f9d81612f77565b92915050565b600060208284031215612fb957612fb8612b20565b5b6000612fc784828501612f8e565b91505092915050565b600060ff82169050919050565b612fe681612fd0565b82525050565b60006020820190506130016000830184612fdd565b92915050565b61301081612c0c565b82525050565b600060208201905061302b6000830184613007565b92915050565b60006020828403121561304757613046612b20565b5b600061305584828501612c35565b91505092915050565b6000806000806080858703121561307857613077612b20565b5b600061308687828801612df5565b945050602061309787828801612df5565b93505060406130a887828801612df5565b92505060606130b987828801612df5565b91505092959194509250565b6000602082840312156130db576130da612b20565b5b60006130e984828501612df5565b91505092915050565b600080fd5b60008083601f84011261310d5761310c612b2a565b5b8235905067ffffffffffffffff81111561312a576131296130f2565b5b60208301915083602082028301111561314657613145612be7565b5b9250929050565b60008060006040848603121561316657613165612b20565b5b600084013567ffffffffffffffff81111561318457613183612b25565b5b613190868287016130f7565b935093505060206131a386828701612f8e565b9150509250925092565b600080604083850312156131c4576131c3612b20565b5b60006131d285828601612df5565b92505060206131e385828601612df5565b9150509250929050565b6000806040838503121561320457613203612b20565b5b600061321285828601612c35565b925050602061322385828601612c35565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613263602083612d35565b915061326e8261322d565b602082019050919050565b6000602082019050818103600083015261329281613256565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330282612dd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613335576133346132c8565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339c602683612d35565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342e602483612d35565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c0602283612d35565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613552602583612d35565b915061355d826134f6565b604082019050919050565b6000602082019050818103600083015261358181613545565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e4602383612d35565b91506135ef82613588565b604082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613676602983612d35565b91506136818261361a565b604082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613708603f83612d35565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613774601c83612d35565b915061377f8261373e565b602082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613806602383612d35565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b600061384782612dd4565b915061385283612dd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613887576138866132c8565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ee602383612d35565b91506138f982613892565b604082019050919050565b6000602082019050818103600083015261391d816138e1565b9050919050565b600061392f82612dd4565b915061393a83612dd4565b92508282101561394d5761394c6132c8565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139b4602a83612d35565b91506139bf82613958565b604082019050919050565b600060208201905081810360008301526139e3816139a7565b9050919050565b6000815190506139f981612c1e565b92915050565b600060208284031215613a1557613a14612b20565b5b6000613a23848285016139ea565b91505092915050565b6000819050919050565b6000613a51613a4c613a4784613a2c565b612e80565b612dd4565b9050919050565b613a6181613a36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9c81612c0c565b82525050565b6000613aae8383613a93565b60208301905092915050565b6000602082019050919050565b6000613ad282613a67565b613adc8185613a72565b9350613ae783613a83565b8060005b83811015613b18578151613aff8882613aa2565b9750613b0a83613aba565b925050600181019050613aeb565b5085935050505092915050565b600060a082019050613b3a6000830188612efa565b613b476020830187613a58565b8181036040830152613b598186613ac7565b9050613b686060830185613007565b613b756080830184612efa565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bb982612dd4565b9150613bc483612dd4565b925082613bd457613bd3613b7f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c15601b83612d35565b9150613c2082613bdf565b602082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b6000613c5682612dd4565b9150613c6183612dd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9a57613c996132c8565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d01602183612d35565b9150613d0c82613ca5565b604082019050919050565b60006020820190508181036000830152613d3081613cf4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201934b547590f46149c5b6f718cf01ce769cc43366deeb0934fbb89810588a26c64736f6c63430008090033
Deployed Bytecode Sourcemap
4112:13509:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12881:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6617:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7638:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5460:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6990:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7839:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12283:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5765:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6803:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5508:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6895:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13058:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17069:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16550:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7093:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1599:148;;;;;;;;;;;;;:::i;:::-;;5657:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5202:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1385:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5710:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6708:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16878:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7239:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12637:236;;;;;;;;;;;;;:::i;:::-;;5164:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12393:236;;;;;;;;;;;;;:::i;:::-;;17382:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17217:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7446:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1755:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12881:169;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12957:9:::1;12952:91;12976:5;:12;12972:1;:16;12952:91;;;13027:4;13010;:14;13015:5;13021:1;13015:8;;;;;;;;:::i;:::-;;;;;;;;13010:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12990:3;;;;;:::i;:::-;;;;12952:91;;;;12881:169:::0;:::o;6617:83::-;6654:13;6687:5;;;;;;;;;;;;;;;;;6680:12;;6617:83;:::o;7638:193::-;7740:4;7762:39;7771:12;:10;:12::i;:::-;7785:7;7794:6;7762:8;:39::i;:::-;7819:4;7812:11;;7638:193;;;;:::o;5460:41::-;;;;;;;;;;;;;:::o;6990:95::-;7043:7;4666:18;7063:14;;6990:95;:::o;7839:446::-;7971:4;7988:36;7998:6;8006:9;8017:6;7988:9;:36::i;:::-;8035:220;8058:6;8079:12;:10;:12::i;:::-;8106:138;8162:6;8106:138;;;;;;;;;;;;;;;;;:11;:19;8118:6;8106:19;;;;;;;;;;;;;;;:33;8126:12;:10;:12::i;:::-;8106:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8035:8;:220::i;:::-;8273:4;8266:11;;7839:446;;;;;:::o;12283:102::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12365:12:::1;12351:11;;:26;;;;;;;;;;;;;;;;;;12283:102:::0;:::o;5765:50::-;;;;:::o;6803:83::-;6844:5;4340:1;6862:16;;6803:83;:::o;5508:28::-;;;;;;;;;;;;;:::o;6895:87::-;6935:7;6962:12;;6955:19;;6895:87;:::o;13058:92::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13137:5:::1;13122:4;:12;13127:6;13122:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13058:92:::0;:::o;17069:101::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17150:12:::1;17136:11;;:26;;;;;;;;;;;;;;;;;;17069:101:::0;:::o;16550:276::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16694:11:::1;16677:14;:28;;;;16734:12;16716:15;:30;;;;16772:9;16757:12;:24;;;;16808:10;16792:13;:26;;;;16550:276:::0;;;;:::o;7093:138::-;7159:7;7186:37;7206:7;:16;7214:7;7206:16;;;;;;;;;;;;;;;;7186:19;:37::i;:::-;7179:44;;7093:138;;;:::o;1599:148::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1706:1:::1;1669:40;;1690:6;::::0;::::1;;;;;;;;1669:40;;;;;;;;;;;;1737:1;1720:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1599:148::o:0;5657:46::-;;;;:::o;5202:43::-;;;;;;;;;;;;;;;;;:::o;1385:79::-;1423:7;1450:6;;;;;;;;;;;1443:13;;1385:79;:::o;5710:48::-;;;;:::o;6708:87::-;6747:13;6780:7;;;;;;;;;;;;;;;;;6773:14;;6708:87;:::o;16878:139::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16991:18:::1;16969:19;:40;;;;16878:139:::0;:::o;7239:199::-;7344:4;7366:42;7376:12;:10;:12::i;:::-;7390:9;7401:6;7366:9;:42::i;:::-;7426:4;7419:11;;7239:199;;;;:::o;12637:236::-;12704:19;;;;;;;;;;;12688:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12743:17;;;;;;;;;;;12727:33;;:12;:10;:12::i;:::-;:33;;;12688:72;12680:81;;;;;;12772:26;12801:21;12772:50;;12833:32;12846:18;12833:12;:32::i;:::-;12669:204;12637:236::o;5164:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12393:236::-;12459:19;;;;;;;;;;;12443:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12498:17;;;;;;;;;;;12482:33;;:12;:10;:12::i;:::-;:33;;;12443:72;12435:81;;;;;;12527:23;12553:24;12571:4;12553:9;:24::i;:::-;12527:50;;12588:33;12605:15;12588:16;:33::i;:::-;12424:205;12393:236::o;17382:234::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17499:9:::1;17495:114;17518:8;;:15;;17514:1;:19;17495:114;;;17589:8;17555:18;:31;17574:8;;17583:1;17574:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17555:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17535:3;;;;;:::i;:::-;;;;17495:114;;;;17382:234:::0;;;:::o;17217:157::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17314:5:::1;17299:12;:20;;;;17347:9;17330:14;:26;;;;17217:157:::0;;:::o;7446:184::-;7563:7;7595:11;:18;7607:5;7595:18;;;;;;;;;;;;;;;:27;7614:7;7595:27;;;;;;;;;;;;;;;;7588:34;;7446:184;;;;:::o;1755:244::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1864:1:::1;1844:22;;:8;:22;;;;1836:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1954:8;1925:38;;1946:6;::::0;::::1;;;;;;;;1925:38;;;;;;;;;;;;1983:8;1974:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1755:244:::0;:::o;144:98::-;197:7;224:10;217:17;;144:98;:::o;8970:369::-;9114:1;9097:19;;:5;:19;;;;9089:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9195:1;9176:21;;:7;:21;;;;9168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9277:6;9247:11;:18;9259:5;9247:18;;;;;;;;;;;;;;;:27;9266:7;9247:27;;;;;;;;;;;;;;;:36;;;;9315:7;9299:32;;9308:5;9299:32;;;9324:6;9299:32;;;;;;:::i;:::-;;;;;;;;8970:369;;;:::o;9347:2330::-;9485:1;9469:18;;:4;:18;;;;9461:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9562:1;9548:16;;:2;:16;;;;9540:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9632:1;9623:6;:10;9615:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9704:7;:5;:7::i;:::-;9696:15;;:4;:15;;;;:32;;;;;9721:7;:5;:7::i;:::-;9715:13;;:2;:13;;;;9696:32;9692:1259;;;9785:11;;;;;;;;;;;9780:144;;9833:7;:5;:7::i;:::-;9825:15;;:4;:15;;;9817:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9780:144;9958:12;;9948:6;:22;;9940:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10027:4;:10;10032:4;10027:10;;;;;;;;;;;;;;;;;;;;;;;;;10026:11;:24;;;;;10042:4;:8;10047:2;10042:8;;;;;;;;;;;;;;;;;;;;;;;;;10041:9;10026:24;10018:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10116:13;;;;;;;;;;;10110:19;;:2;:19;;;10107:146;;10183:14;;10174:6;10158:13;10168:2;10158:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10150:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10107:146;10269:28;10300:24;10318:4;10300:9;:24::i;:::-;10269:55;;10339:12;10378:19;;10354:20;:43;;10339:58;;10441:12;;10417:20;:36;10414:124;;10510:12;;10487:35;;10414:124;10558:7;:18;;;;;10570:6;;;;;;;;;;10569:7;10558:18;:43;;;;;10588:13;;;;;;;;;;;10580:21;;:4;:21;;;;10558:43;:58;;;;;10605:11;;;;;;;;;;;10558:58;:87;;;;;10621:18;:24;10640:4;10621:24;;;;;;;;;;;;;;;;;;;;;;;;;10620:25;10558:87;:114;;;;;10650:18;:22;10669:2;10650:22;;;;;;;;;;;;;;;;;;;;;;;;;10649:23;10558:114;10554:386;;;10693:38;10710:20;10693:16;:38::i;:::-;10750:26;10779:21;10750:50;;10844:1;10823:18;:22;10819:106;;;10870:35;10883:21;10870:12;:35::i;:::-;10819:106;10674:266;10554:386;9730:1221;;9692:1259;10963:12;10978:4;10963:19;;11027:18;:24;11046:4;11027:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11055:18;:22;11074:2;11055:22;;;;;;;;;;;;;;;;;;;;;;;;;11027:50;11026:102;;;;11091:13;;;;;;;;;;;11083:21;;:4;:21;;;;:44;;;;;11114:13;;;;;;;;;;;11108:19;;:2;:19;;;;11083:44;11026:102;11022:594;;;11155:5;11145:15;;11022:594;;;11238:13;;;;;;;;;;;11230:21;;:4;:21;;;:55;;;;;11269:15;;;;;;;;;;;11255:30;;:2;:30;;;;11230:55;11227:162;;;11318:14;;11306:9;:26;;;;11361:12;;11351:7;:22;;;;11227:162;11448:13;;;;;;;;;;;11442:19;;:2;:19;;;:55;;;;;11481:15;;;;;;;;;;;11465:32;;:4;:32;;;;11442:55;11438:165;;;11530:15;;11518:9;:27;;;;11574:13;;11564:7;:23;;;;11438:165;11022:594;11628:41;11643:4;11649:2;11653:6;11661:7;11628:14;:41::i;:::-;9450:2227;9347:2330;;;:::o;2363:224::-;2483:7;2516:1;2511;:6;;2519:12;2503:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2543:9;2559:1;2555;:5;;;;:::i;:::-;2543:17;;2578:1;2571:8;;;2363:224;;;;;:::o;8293:323::-;8388:7;8446;;8435;:18;;8413:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8534:19;8556:10;:8;:10::i;:::-;8534:32;;8584:24;8596:11;8584:7;:11;;:24;;;;:::i;:::-;8577:31;;;8293:323;;;:::o;12176:99::-;12233:17;;;;;;;;;;;:26;;:34;12260:6;12233:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12176:99;:::o;11685:483::-;5918:4;5909:6;;:13;;;;;;;;;;;;;;;;;;11763:21:::1;11801:1;11787:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11763:40;;11832:4;11814;11819:1;11814:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11858:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11848:4;11853:1;11848:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11891:62;11908:4;11923:15;;;;;;;;;;;11941:11;11891:8;:62::i;:::-;11964:15;;;;;;;;;;;:66;;;12045:11;12071:1;12087:4;12114;12134:15;11964:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11752:416;5954:5:::0;5945:6;;:14;;;;;;;;;;;;;;;;;;11685:483;:::o;13158:276::-;13314:7;13309:25;;13323:11;:9;:11::i;:::-;13309:25;13345:44;13363:6;13371:9;13382:6;13345:17;:44::i;:::-;13405:7;13400:26;;13414:12;:10;:12::i;:::-;13400:26;13158:276;;;;:::o;16113:164::-;16155:7;16176:15;16193;16212:19;:17;:19::i;:::-;16175:56;;;;16249:20;16261:7;16249;:11;;:20;;;;:::i;:::-;16242:27;;;;16113:164;:::o;2849:132::-;2907:7;2934:39;2938:1;2941;2934:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2927:46;;2849:132;;;;:::o;8624:216::-;8681:1;8668:9;;:14;:30;;;;;8697:1;8686:7;;:12;8668:30;8664:43;;;8700:7;;8664:43;8739:9;;8719:17;:29;;;;8777:7;;8759:15;:25;;;;8809:1;8797:9;:13;;;;8831:1;8821:7;:11;;;;8624:216;:::o;13442:610::-;13589:15;13619:23;13657:12;13684:23;13722:12;13749:13;13776:19;13787:7;13776:10;:19::i;:::-;13574:221;;;;;;;;;;;;13824:28;13844:7;13824;:15;13832:6;13824:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13806:7;:15;13814:6;13806:15;;;;;;;;;;;;;;;:46;;;;13884:39;13907:15;13884:7;:18;13892:9;13884:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13863:7;:18;13871:9;13863:18;;;;;;;;;;;;;;;:60;;;;13934:16;13944:5;13934:9;:16::i;:::-;13961:23;13973:4;13979;13961:11;:23::i;:::-;14017:9;14000:44;;14009:6;14000:44;;;14028:15;14000:44;;;;;;:::i;:::-;;;;;;;;13563:489;;;;;;13442:610;;;:::o;8848:114::-;8901:17;;8889:9;:29;;;;8939:15;;8929:7;:25;;;;8848:114::o;16285:257::-;16336:7;16345;16365:15;16383:7;;16365:25;;16401:15;4666:18;16401:25;;16451:20;4666:18;16451:7;;:11;;:20;;;;:::i;:::-;16441:7;:30;16437:61;;;16481:7;;4666:18;16473:25;;;;;;;;16437:61;16517:7;16526;16509:25;;;;;;16285:257;;;:::o;2989:223::-;3109:7;3141:1;3137;:5;3144:12;3129:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3168:9;3184:1;3180;:5;;;;:::i;:::-;3168:17;;3203:1;3196:8;;;2989:223;;;;;:::o;14471:615::-;14571:7;14593;14615;14637;14659;14681;14717:23;14742:12;14756:13;14786:40;14798:7;14807:9;;14818:7;;14786:11;:40::i;:::-;14716:110;;;;;;14837:19;14859:10;:8;:10::i;:::-;14837:32;;14881:15;14898:23;14923:12;14952:46;14964:7;14973:4;14979:5;14986:11;14952;:46::i;:::-;14880:118;;;;;;15017:7;15026:15;15043:4;15049:15;15066:4;15072:5;15009:69;;;;;;;;;;;;;;;;;;;14471:615;;;;;;;:::o;2219:136::-;2277:7;2304:43;2308:1;2311;2304:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2297:50;;2219:136;;;;:::o;2032:179::-;2090:7;2110:9;2126:1;2122;:5;;;;:::i;:::-;2110:17;;2151:1;2146;:6;;2138:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2202:1;2195:8;;;2032:179;;;;:::o;14060:211::-;14113:19;14135:10;:8;:10::i;:::-;14113:32;;14156:13;14172:22;14182:11;14172:5;:9;;:22;;;;:::i;:::-;14156:38;;14230:33;14257:5;14230:7;:22;14246:4;14230:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14205:7;:22;14221:4;14205:22;;;;;;;;;;;;;;;:58;;;;14102:169;;14060:211;:::o;14279:147::-;14357:17;14369:4;14357:7;;:11;;:17;;;;:::i;:::-;14347:7;:27;;;;14398:20;14413:4;14398:10;;:14;;:20;;;;:::i;:::-;14385:10;:33;;;;14279:147;;:::o;15094:469::-;15263:7;15285;15307;15342:12;15357:30;15383:3;15357:21;15369:8;15357:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15342:45;;15398:13;15414:28;15438:3;15414:19;15426:6;15414:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15398:44;;15453:23;15479:28;15501:5;15479:17;15491:4;15479:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15453:54;;15526:15;15543:4;15549:5;15518:37;;;;;;;;;15094:469;;;;;;;:::o;15571:534::-;15765:7;15787;15809;15844:15;15862:24;15874:11;15862:7;:11;;:24;;;;:::i;:::-;15844:42;;15897:12;15912:21;15921:11;15912:4;:8;;:21;;;;:::i;:::-;15897:36;;15944:13;15960:22;15970:11;15960:5;:9;;:22;;;;:::i;:::-;15944:38;;15993:23;16019:28;16041:5;16019:17;16031:4;16019:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15993:54;;16066:7;16075:15;16092:4;16058:39;;;;;;;;;;15571:534;;;;;;;;:::o;2595:246::-;2653:7;2682:1;2677;:6;2673:47;;;2707:1;2700:8;;;;2673:47;2730:9;2746:1;2742;:5;;;;:::i;:::-;2730:17;;2775:1;2770;2766;:5;;;;:::i;:::-;:10;2758:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2832:1;2825:8;;;2595:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:116::-;8356:21;8371:5;8356:21;:::i;:::-;8349:5;8346:32;8336:60;;8392:1;8389;8382:12;8336:60;8286:116;:::o;8408:133::-;8451:5;8489:6;8476:20;8467:29;;8505:30;8529:5;8505:30;:::i;:::-;8408:133;;;;:::o;8547:323::-;8603:6;8652:2;8640:9;8631:7;8627:23;8623:32;8620:119;;;8658:79;;:::i;:::-;8620:119;8778:1;8803:50;8845:7;8836:6;8825:9;8821:22;8803:50;:::i;:::-;8793:60;;8749:114;8547:323;;;;:::o;8876:86::-;8911:7;8951:4;8944:5;8940:16;8929:27;;8876:86;;;:::o;8968:112::-;9051:22;9067:5;9051:22;:::i;:::-;9046:3;9039:35;8968:112;;:::o;9086:214::-;9175:4;9213:2;9202:9;9198:18;9190:26;;9226:67;9290:1;9279:9;9275:17;9266:6;9226:67;:::i;:::-;9086:214;;;;:::o;9306:118::-;9393:24;9411:5;9393:24;:::i;:::-;9388:3;9381:37;9306:118;;:::o;9430:222::-;9523:4;9561:2;9550:9;9546:18;9538:26;;9574:71;9642:1;9631:9;9627:17;9618:6;9574:71;:::i;:::-;9430:222;;;;:::o;9658:329::-;9717:6;9766:2;9754:9;9745:7;9741:23;9737:32;9734:119;;;9772:79;;:::i;:::-;9734:119;9892:1;9917:53;9962:7;9953:6;9942:9;9938:22;9917:53;:::i;:::-;9907:63;;9863:117;9658:329;;;;:::o;9993:765::-;10079:6;10087;10095;10103;10152:3;10140:9;10131:7;10127:23;10123:33;10120:120;;;10159:79;;:::i;:::-;10120:120;10279:1;10304:53;10349:7;10340:6;10329:9;10325:22;10304:53;:::i;:::-;10294:63;;10250:117;10406:2;10432:53;10477:7;10468:6;10457:9;10453:22;10432:53;:::i;:::-;10422:63;;10377:118;10534:2;10560:53;10605:7;10596:6;10585:9;10581:22;10560:53;:::i;:::-;10550:63;;10505:118;10662:2;10688:53;10733:7;10724:6;10713:9;10709:22;10688:53;:::i;:::-;10678:63;;10633:118;9993:765;;;;;;;:::o;10764:329::-;10823:6;10872:2;10860:9;10851:7;10847:23;10843:32;10840:119;;;10878:79;;:::i;:::-;10840:119;10998:1;11023:53;11068:7;11059:6;11048:9;11044:22;11023:53;:::i;:::-;11013:63;;10969:117;10764:329;;;;:::o;11099:117::-;11208:1;11205;11198:12;11239:568;11312:8;11322:6;11372:3;11365:4;11357:6;11353:17;11349:27;11339:122;;11380:79;;:::i;:::-;11339:122;11493:6;11480:20;11470:30;;11523:18;11515:6;11512:30;11509:117;;;11545:79;;:::i;:::-;11509:117;11659:4;11651:6;11647:17;11635:29;;11713:3;11705:4;11697:6;11693:17;11683:8;11679:32;11676:41;11673:128;;;11720:79;;:::i;:::-;11673:128;11239:568;;;;;:::o;11813:698::-;11905:6;11913;11921;11970:2;11958:9;11949:7;11945:23;11941:32;11938:119;;;11976:79;;:::i;:::-;11938:119;12124:1;12113:9;12109:17;12096:31;12154:18;12146:6;12143:30;12140:117;;;12176:79;;:::i;:::-;12140:117;12289:80;12361:7;12352:6;12341:9;12337:22;12289:80;:::i;:::-;12271:98;;;;12067:312;12418:2;12444:50;12486:7;12477:6;12466:9;12462:22;12444:50;:::i;:::-;12434:60;;12389:115;11813:698;;;;;:::o;12517:474::-;12585:6;12593;12642:2;12630:9;12621:7;12617:23;12613:32;12610:119;;;12648:79;;:::i;:::-;12610:119;12768:1;12793:53;12838:7;12829:6;12818:9;12814:22;12793:53;:::i;:::-;12783:63;;12739:117;12895:2;12921:53;12966:7;12957:6;12946:9;12942:22;12921:53;:::i;:::-;12911:63;;12866:118;12517:474;;;;;:::o;12997:::-;13065:6;13073;13122:2;13110:9;13101:7;13097:23;13093:32;13090:119;;;13128:79;;:::i;:::-;13090:119;13248:1;13273:53;13318:7;13309:6;13298:9;13294:22;13273:53;:::i;:::-;13263:63;;13219:117;13375:2;13401:53;13446:7;13437:6;13426:9;13422:22;13401:53;:::i;:::-;13391:63;;13346:118;12997:474;;;;;:::o;13477:182::-;13617:34;13613:1;13605:6;13601:14;13594:58;13477:182;:::o;13665:366::-;13807:3;13828:67;13892:2;13887:3;13828:67;:::i;:::-;13821:74;;13904:93;13993:3;13904:93;:::i;:::-;14022:2;14017:3;14013:12;14006:19;;13665:366;;;:::o;14037:419::-;14203:4;14241:2;14230:9;14226:18;14218:26;;14290:9;14284:4;14280:20;14276:1;14265:9;14261:17;14254:47;14318:131;14444:4;14318:131;:::i;:::-;14310:139;;14037:419;;;:::o;14462:180::-;14510:77;14507:1;14500:88;14607:4;14604:1;14597:15;14631:4;14628:1;14621:15;14648:180;14696:77;14693:1;14686:88;14793:4;14790:1;14783:15;14817:4;14814:1;14807:15;14834:233;14873:3;14896:24;14914:5;14896:24;:::i;:::-;14887:33;;14942:66;14935:5;14932:77;14929:103;;;15012:18;;:::i;:::-;14929:103;15059:1;15052:5;15048:13;15041:20;;14834:233;;;:::o;15073:225::-;15213:34;15209:1;15201:6;15197:14;15190:58;15282:8;15277:2;15269:6;15265:15;15258:33;15073:225;:::o;15304:366::-;15446:3;15467:67;15531:2;15526:3;15467:67;:::i;:::-;15460:74;;15543:93;15632:3;15543:93;:::i;:::-;15661:2;15656:3;15652:12;15645:19;;15304:366;;;:::o;15676:419::-;15842:4;15880:2;15869:9;15865:18;15857:26;;15929:9;15923:4;15919:20;15915:1;15904:9;15900:17;15893:47;15957:131;16083:4;15957:131;:::i;:::-;15949:139;;15676:419;;;:::o;16101:223::-;16241:34;16237:1;16229:6;16225:14;16218:58;16310:6;16305:2;16297:6;16293:15;16286:31;16101:223;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:221::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:4;17331:2;17323:6;17319:15;17312:29;17127:221;:::o;17354:366::-;17496:3;17517:67;17581:2;17576:3;17517:67;:::i;:::-;17510:74;;17593:93;17682:3;17593:93;:::i;:::-;17711:2;17706:3;17702:12;17695:19;;17354:366;;;:::o;17726:419::-;17892:4;17930:2;17919:9;17915:18;17907:26;;17979:9;17973:4;17969:20;17965:1;17954:9;17950:17;17943:47;18007:131;18133:4;18007:131;:::i;:::-;17999:139;;17726:419;;;:::o;18151:224::-;18291:34;18287:1;18279:6;18275:14;18268:58;18360:7;18355:2;18347:6;18343:15;18336:32;18151:224;:::o;18381:366::-;18523:3;18544:67;18608:2;18603:3;18544:67;:::i;:::-;18537:74;;18620:93;18709:3;18620:93;:::i;:::-;18738:2;18733:3;18729:12;18722:19;;18381:366;;;:::o;18753:419::-;18919:4;18957:2;18946:9;18942:18;18934:26;;19006:9;19000:4;18996:20;18992:1;18981:9;18977:17;18970:47;19034:131;19160:4;19034:131;:::i;:::-;19026:139;;18753:419;;;:::o;19178:222::-;19318:34;19314:1;19306:6;19302:14;19295:58;19387:5;19382:2;19374:6;19370:15;19363:30;19178:222;:::o;19406:366::-;19548:3;19569:67;19633:2;19628:3;19569:67;:::i;:::-;19562:74;;19645:93;19734:3;19645:93;:::i;:::-;19763:2;19758:3;19754:12;19747:19;;19406:366;;;:::o;19778:419::-;19944:4;19982:2;19971:9;19967:18;19959:26;;20031:9;20025:4;20021:20;20017:1;20006:9;20002:17;19995:47;20059:131;20185:4;20059:131;:::i;:::-;20051:139;;19778:419;;;:::o;20203:228::-;20343:34;20339:1;20331:6;20327:14;20320:58;20412:11;20407:2;20399:6;20395:15;20388:36;20203:228;:::o;20437:366::-;20579:3;20600:67;20664:2;20659:3;20600:67;:::i;:::-;20593:74;;20676:93;20765:3;20676:93;:::i;:::-;20794:2;20789:3;20785:12;20778:19;;20437:366;;;:::o;20809:419::-;20975:4;21013:2;21002:9;20998:18;20990:26;;21062:9;21056:4;21052:20;21048:1;21037:9;21033:17;21026:47;21090:131;21216:4;21090:131;:::i;:::-;21082:139;;20809:419;;;:::o;21234:250::-;21374:34;21370:1;21362:6;21358:14;21351:58;21443:33;21438:2;21430:6;21426:15;21419:58;21234:250;:::o;21490:366::-;21632:3;21653:67;21717:2;21712:3;21653:67;:::i;:::-;21646:74;;21729:93;21818:3;21729:93;:::i;:::-;21847:2;21842:3;21838:12;21831:19;;21490:366;;;:::o;21862:419::-;22028:4;22066:2;22055:9;22051:18;22043:26;;22115:9;22109:4;22105:20;22101:1;22090:9;22086:17;22079:47;22143:131;22269:4;22143:131;:::i;:::-;22135:139;;21862:419;;;:::o;22287:178::-;22427:30;22423:1;22415:6;22411:14;22404:54;22287:178;:::o;22471:366::-;22613:3;22634:67;22698:2;22693:3;22634:67;:::i;:::-;22627:74;;22710:93;22799:3;22710:93;:::i;:::-;22828:2;22823:3;22819:12;22812:19;;22471:366;;;:::o;22843:419::-;23009:4;23047:2;23036:9;23032:18;23024:26;;23096:9;23090:4;23086:20;23082:1;23071:9;23067:17;23060:47;23124:131;23250:4;23124:131;:::i;:::-;23116:139;;22843:419;;;:::o;23268:222::-;23408:34;23404:1;23396:6;23392:14;23385:58;23477:5;23472:2;23464:6;23460:15;23453:30;23268:222;:::o;23496:366::-;23638:3;23659:67;23723:2;23718:3;23659:67;:::i;:::-;23652:74;;23735:93;23824:3;23735:93;:::i;:::-;23853:2;23848:3;23844:12;23837:19;;23496:366;;;:::o;23868:419::-;24034:4;24072:2;24061:9;24057:18;24049:26;;24121:9;24115:4;24111:20;24107:1;24096:9;24092:17;24085:47;24149:131;24275:4;24149:131;:::i;:::-;24141:139;;23868:419;;;:::o;24293:305::-;24333:3;24352:20;24370:1;24352:20;:::i;:::-;24347:25;;24386:20;24404:1;24386:20;:::i;:::-;24381:25;;24540:1;24472:66;24468:74;24465:1;24462:81;24459:107;;;24546:18;;:::i;:::-;24459:107;24590:1;24587;24583:9;24576:16;;24293:305;;;;:::o;24604:222::-;24744:34;24740:1;24732:6;24728:14;24721:58;24813:5;24808:2;24800:6;24796:15;24789:30;24604:222;:::o;24832:366::-;24974:3;24995:67;25059:2;25054:3;24995:67;:::i;:::-;24988:74;;25071:93;25160:3;25071:93;:::i;:::-;25189:2;25184:3;25180:12;25173:19;;24832:366;;;:::o;25204:419::-;25370:4;25408:2;25397:9;25393:18;25385:26;;25457:9;25451:4;25447:20;25443:1;25432:9;25428:17;25421:47;25485:131;25611:4;25485:131;:::i;:::-;25477:139;;25204:419;;;:::o;25629:191::-;25669:4;25689:20;25707:1;25689:20;:::i;:::-;25684:25;;25723:20;25741:1;25723:20;:::i;:::-;25718:25;;25762:1;25759;25756:8;25753:34;;;25767:18;;:::i;:::-;25753:34;25812:1;25809;25805:9;25797:17;;25629:191;;;;:::o;25826:229::-;25966:34;25962:1;25954:6;25950:14;25943:58;26035:12;26030:2;26022:6;26018:15;26011:37;25826:229;:::o;26061:366::-;26203:3;26224:67;26288:2;26283:3;26224:67;:::i;:::-;26217:74;;26300:93;26389:3;26300:93;:::i;:::-;26418:2;26413:3;26409:12;26402:19;;26061:366;;;:::o;26433:419::-;26599:4;26637:2;26626:9;26622:18;26614:26;;26686:9;26680:4;26676:20;26672:1;26661:9;26657:17;26650:47;26714:131;26840:4;26714:131;:::i;:::-;26706:139;;26433:419;;;:::o;26858:143::-;26915:5;26946:6;26940:13;26931:22;;26962:33;26989:5;26962:33;:::i;:::-;26858:143;;;;:::o;27007:351::-;27077:6;27126:2;27114:9;27105:7;27101:23;27097:32;27094:119;;;27132:79;;:::i;:::-;27094:119;27252:1;27277:64;27333:7;27324:6;27313:9;27309:22;27277:64;:::i;:::-;27267:74;;27223:128;27007:351;;;;:::o;27364:85::-;27409:7;27438:5;27427:16;;27364:85;;;:::o;27455:158::-;27513:9;27546:61;27564:42;27573:32;27599:5;27573:32;:::i;:::-;27564:42;:::i;:::-;27546:61;:::i;:::-;27533:74;;27455:158;;;:::o;27619:147::-;27714:45;27753:5;27714:45;:::i;:::-;27709:3;27702:58;27619:147;;:::o;27772:114::-;27839:6;27873:5;27867:12;27857:22;;27772:114;;;:::o;27892:184::-;27991:11;28025:6;28020:3;28013:19;28065:4;28060:3;28056:14;28041:29;;27892:184;;;;:::o;28082:132::-;28149:4;28172:3;28164:11;;28202:4;28197:3;28193:14;28185:22;;28082:132;;;:::o;28220:108::-;28297:24;28315:5;28297:24;:::i;:::-;28292:3;28285:37;28220:108;;:::o;28334:179::-;28403:10;28424:46;28466:3;28458:6;28424:46;:::i;:::-;28502:4;28497:3;28493:14;28479:28;;28334:179;;;;:::o;28519:113::-;28589:4;28621;28616:3;28612:14;28604:22;;28519:113;;;:::o;28668:732::-;28787:3;28816:54;28864:5;28816:54;:::i;:::-;28886:86;28965:6;28960:3;28886:86;:::i;:::-;28879:93;;28996:56;29046:5;28996:56;:::i;:::-;29075:7;29106:1;29091:284;29116:6;29113:1;29110:13;29091:284;;;29192:6;29186:13;29219:63;29278:3;29263:13;29219:63;:::i;:::-;29212:70;;29305:60;29358:6;29305:60;:::i;:::-;29295:70;;29151:224;29138:1;29135;29131:9;29126:14;;29091:284;;;29095:14;29391:3;29384:10;;28792:608;;;28668:732;;;;:::o;29406:831::-;29669:4;29707:3;29696:9;29692:19;29684:27;;29721:71;29789:1;29778:9;29774:17;29765:6;29721:71;:::i;:::-;29802:80;29878:2;29867:9;29863:18;29854:6;29802:80;:::i;:::-;29929:9;29923:4;29919:20;29914:2;29903:9;29899:18;29892:48;29957:108;30060:4;30051:6;29957:108;:::i;:::-;29949:116;;30075:72;30143:2;30132:9;30128:18;30119:6;30075:72;:::i;:::-;30157:73;30225:3;30214:9;30210:19;30201:6;30157:73;:::i;:::-;29406:831;;;;;;;;:::o;30243:180::-;30291:77;30288:1;30281:88;30388:4;30385:1;30378:15;30412:4;30409:1;30402:15;30429:185;30469:1;30486:20;30504:1;30486:20;:::i;:::-;30481:25;;30520:20;30538:1;30520:20;:::i;:::-;30515:25;;30559:1;30549:35;;30564:18;;:::i;:::-;30549:35;30606:1;30603;30599:9;30594:14;;30429:185;;;;:::o;30620:177::-;30760:29;30756:1;30748:6;30744:14;30737:53;30620:177;:::o;30803:366::-;30945:3;30966:67;31030:2;31025:3;30966:67;:::i;:::-;30959:74;;31042:93;31131:3;31042:93;:::i;:::-;31160:2;31155:3;31151:12;31144:19;;30803:366;;;:::o;31175:419::-;31341:4;31379:2;31368:9;31364:18;31356:26;;31428:9;31422:4;31418:20;31414:1;31403:9;31399:17;31392:47;31456:131;31582:4;31456:131;:::i;:::-;31448:139;;31175:419;;;:::o;31600:348::-;31640:7;31663:20;31681:1;31663:20;:::i;:::-;31658:25;;31697:20;31715:1;31697:20;:::i;:::-;31692:25;;31885:1;31817:66;31813:74;31810:1;31807:81;31802:1;31795:9;31788:17;31784:105;31781:131;;;31892:18;;:::i;:::-;31781:131;31940:1;31937;31933:9;31922:20;;31600:348;;;;:::o;31954:220::-;32094:34;32090:1;32082:6;32078:14;32071:58;32163:3;32158:2;32150:6;32146:15;32139:28;31954:220;:::o;32180:366::-;32322:3;32343:67;32407:2;32402:3;32343:67;:::i;:::-;32336:74;;32419:93;32508:3;32419:93;:::i;:::-;32537:2;32532:3;32528:12;32521:19;;32180:366;;;:::o;32552:419::-;32718:4;32756:2;32745:9;32741:18;32733:26;;32805:9;32799:4;32795:20;32791:1;32780:9;32776:17;32769:47;32833:131;32959:4;32833:131;:::i;:::-;32825:139;;32552:419;;;:::o
Swarm Source
ipfs://1934b547590f46149c5b6f718cf01ce769cc43366deeb0934fbb89810588a26c
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.