ERC-20
Overview
Max Total Supply
1,000,000,000 KABOSU
Holders
411
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
51,835.163901905 KABOSUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Kabosu
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-10 */ /** Without Kabosu, there would be no Doge. https://t.me/kabosuethportal https://x.com/Kabosucoin_eth Kabosueth.com */ // 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 Kabosu is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Kabosu"; string private constant _symbol = "KABOSU"; 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; // Taxes 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(0x378409451b8da3311664F90D95Ac976866f66A91); address payable private _marketingAddress = payable(0x378409451b8da3311664F90D95Ac976866f66A91); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 1000000000 * 10**9; uint256 public _maxWalletSize = 1000000000 * 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 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 removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() 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 setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() 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) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } 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 setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //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 setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } 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":"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":"manualsend","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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
6080604052670de0b6b3a76400005f1961001991906106e2565b5f19610025919061073f565b6006555f6008555f6009555f600a555f600b55600a54600c55600b54600d55600c54600e55600d54600f5573378409451b8da3311664f90d95ac976866f66a9160125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073378409451b8da3311664f90d95ac976866f66a9160135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550670de0b6b3a7640000601655670de0b6b3a76400006017556509184e72a000601855348015610174575f80fd5b505f61018461067e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f61023461067e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610312573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033691906107d0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bf91906107d0565b6040518363ffffffff1660e01b81526004016103dc92919061080a565b6020604051808303815f875af11580156103f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061041c91906107d0565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f61046e61068560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061060c61067e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516106709190610840565b60405180910390a350610859565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106ec826106ac565b91506106f7836106ac565b925082610707576107066106b5565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610749826106ac565b9150610754836106ac565b925082820390508181111561076c5761076b610712565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61079f82610776565b9050919050565b6107af81610795565b81146107b9575f80fd5b50565b5f815190506107ca816107a6565b92915050565b5f602082840312156107e5576107e4610772565b5b5f6107f2848285016107bc565b91505092915050565b61080481610795565b82525050565b5f60408201905061081d5f8301856107fb565b61082a60208301846107fb565b9392505050565b61083a816106ac565b82525050565b5f6020820190506108535f830184610831565b92915050565b613bac806108665f395ff3fe6080604052600436106101cf575f3560e01c80637d1db4a5116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f70ccf7116100d05780638f70ccf7146104e65780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b80637d1db4a5146104565780637f2feddc146104805780638da5cb5b146104bc576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a61461041857806374010ece1461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612c61565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d08565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612d5b565b610850565b60405161025f9190612db3565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612e27565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612e4f565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612e68565b6108a1565b6040516102ef9190612db3565b60405180910390f35b348015610303575f80fd5b5061030c610975565b6040516103199190612e4f565b60405180910390f35b34801561032d575f80fd5b5061033661097b565b6040516103439190612ed3565b60405180910390f35b348015610357575f80fd5b50610360610983565b60405161036d9190612efb565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190612f14565b6109a8565b005b3480156103a9575f80fd5b506103c460048036038101906103bf9190612f69565b610a93565b005b3480156103d1575f80fd5b506103da610b44565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190612f14565b610c11565b60405161040f9190612e4f565b60405180910390f35b348015610423575f80fd5b5061042c610c5f565b005b348015610439575f80fd5b50610454600480360381019061044f9190612f94565b610dad565b005b348015610461575f80fd5b5061046a610e4b565b6040516104779190612e4f565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190612f14565b610e51565b6040516104b39190612e4f565b60405180910390f35b3480156104c7575f80fd5b506104d0610e66565b6040516104dd9190612efb565b60405180910390f35b3480156104f1575f80fd5b5061050c60048036038101906105079190612f69565b610e8d565b005b348015610519575f80fd5b50610522610f3e565b60405161052f9190612e4f565b60405180910390f35b348015610543575f80fd5b5061054c610f44565b6040516105599190612d08565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190612f94565b610f81565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612fbf565b61101f565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612d5b565b6110d5565b6040516105e59190612db3565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612f14565b6110f2565b6040516106219190612db3565b60405180910390f35b348015610635575f80fd5b5061063e61110f565b005b34801561064b575f80fd5b506106666004803603810190610661919061307c565b6111e4565b005b348015610673575f80fd5b5061068e600480360381019061068991906130d9565b611313565b60405161069b9190612e4f565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190612f94565b611395565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612f14565b611433565b005b6106fc6115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613161565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa61317f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600681526020017f4b61626f73750000000000000000000000000000000000000000000000000000815250905090565b5f61086361085c6115f0565b84846115f7565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f6108ad8484846117ba565b61096a846108b96115f0565b61096585604051806060016040528060288152602001613b4f6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091c6115f0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461201a9092919063ffffffff16565b6115f7565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b06115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390613161565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9b6115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e90613161565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b846115f0565b73ffffffffffffffffffffffffffffffffffffffff161480610bf9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be16115f0565b73ffffffffffffffffffffffffffffffffffffffff16145b610c01575f80fd5b5f479050610c0e8161207c565b50565b5f610c5860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e4565b9050919050565b610c676115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90613161565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db56115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890613161565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e956115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890613161565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f4b41424f53550000000000000000000000000000000000000000000000000000815250905090565b610f896115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613161565b60405180910390fd5b8060188190555050565b6110276115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90613161565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6110e86110e16115f0565b84846117ba565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661114f6115f0565b73ffffffffffffffffffffffffffffffffffffffff1614806111c4575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111ac6115f0565b73ffffffffffffffffffffffffffffffffffffffff16145b6111cc575f80fd5b5f6111d630610c11565b90506111e181612150565b50565b6111ec6115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613161565b60405180910390fd5b5f5b8383905081101561130d578160055f86868581811061129c5761129b61317f565b5b90506020020160208101906112b19190612f14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061127a565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61139d6115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142090613161565b60405180910390fd5b8060178190555050565b61143b6115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90613161565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c9061321c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c906132aa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90613338565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ad9190612e4f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f906133c6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d90613454565b60405180910390fd5b5f81116118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf906134e2565b60405180910390fd5b6118e0610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561194e575061191e610e66565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2757601560149054906101000a900460ff166119dd5761196f610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613570565b60405180910390fd5b5b601654811115611a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a19906135d8565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ac0575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af690613666565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bab5760175481611b6084610c11565b611b6a91906136b1565b10611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba190613754565b60405180910390fd5b5b5f611bb530610c11565b90505f60185482101590506016548210611bcf5760165491505b808015611be7575060158054906101000a900460ff16155b8015611c40575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c585750601560169054906101000a900460ff165b8015611cab575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cfe575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2457611d0c82612150565b5f4790505f811115611d2257611d214761207c565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc7575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e78575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e77575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e85575f9050612008565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f2e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4657600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fef575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200757600a54600c81905550600b54600d819055505b5b612014848484846123b9565b50505050565b5f838311158290612061576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120589190612d08565b60405180910390fd5b505f838561206f9190613772565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120e0573d5f803e3d5ffd5b5050565b5f60065482111561212a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212190613815565b60405180910390fd5b5f6121336123e6565b9050612148818461240f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218657612185612acb565b5b6040519080825280602002602001820160405280156121b45781602001602082028036833780820191505090505b50905030815f815181106121cb576121ca61317f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122939190613847565b816001815181106122a7576122a661317f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230d3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f7565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161236f959493929190613962565b5f604051808303815f87803b158015612386575f80fd5b505af1158015612398573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c7576123c6612458565b5b6123d2848484612491565b806123e0576123df612651565b5b50505050565b5f805f6123f1612665565b91509150612408818361240f90919063ffffffff16565b9250505090565b5f61245083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126c1565b905092915050565b5f600c5414801561246a57505f600d54145b61248f57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806124a087612722565b9550955095509550955095506124fc8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461278290919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061258d8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127cb90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d781612828565b6125e184836128df565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263e9190612e4f565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f670de0b6b3a76400009050612696670de0b6b3a764000060065461240f90919063ffffffff16565b8210156126b457600654670de0b6b3a76400009350935050506126bd565b81819350935050505b9091565b5f8083118290612707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fe9190612d08565b60405180910390fd5b505f838561271591906139e7565b9050809150509392505050565b5f805f805f805f805f61273a8a600c54600d54612919565b9250925092505f6127496123e6565b90505f805f61275a8e8787876129ab565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127c383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201a565b905092915050565b5f8082846127d991906136b1565b90508381101561281e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281590613a61565b60405180910390fd5b8091505092915050565b5f6128316123e6565b90505f6128478284612a2f90919063ffffffff16565b90506128998160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127cb90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128f48260065461278290919063ffffffff16565b60068190555061290f816007546127cb90919063ffffffff16565b6007819055505050565b5f805f806129436064612935888a612a2f90919063ffffffff16565b61240f90919063ffffffff16565b90505f61296c606461295e888b612a2f90919063ffffffff16565b61240f90919063ffffffff16565b90505f61299482612986858c61278290919063ffffffff16565b61278290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129c28589612a2f90919063ffffffff16565b90505f6129d88689612a2f90919063ffffffff16565b90505f6129ee8789612a2f90919063ffffffff16565b90505f612a1682612a08858761278290919063ffffffff16565b61278290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a3f575f9050612aa0565b5f8284612a4c9190613a7f565b9050828482612a5b91906139e7565b14612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9290613b30565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b0182612abb565b810181811067ffffffffffffffff82111715612b2057612b1f612acb565b5b80604052505050565b5f612b32612aa6565b9050612b3e8282612af8565b919050565b5f67ffffffffffffffff821115612b5d57612b5c612acb565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b9b82612b72565b9050919050565b612bab81612b91565b8114612bb5575f80fd5b50565b5f81359050612bc681612ba2565b92915050565b5f612bde612bd984612b43565b612b29565b90508083825260208201905060208402830185811115612c0157612c00612b6e565b5b835b81811015612c2a5780612c168882612bb8565b845260208401935050602081019050612c03565b5050509392505050565b5f82601f830112612c4857612c47612ab7565b5b8135612c58848260208601612bcc565b91505092915050565b5f60208284031215612c7657612c75612aaf565b5b5f82013567ffffffffffffffff811115612c9357612c92612ab3565b5b612c9f84828501612c34565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612cda82612ca8565b612ce48185612cb2565b9350612cf4818560208601612cc2565b612cfd81612abb565b840191505092915050565b5f6020820190508181035f830152612d208184612cd0565b905092915050565b5f819050919050565b612d3a81612d28565b8114612d44575f80fd5b50565b5f81359050612d5581612d31565b92915050565b5f8060408385031215612d7157612d70612aaf565b5b5f612d7e85828601612bb8565b9250506020612d8f85828601612d47565b9150509250929050565b5f8115159050919050565b612dad81612d99565b82525050565b5f602082019050612dc65f830184612da4565b92915050565b5f819050919050565b5f612def612dea612de584612b72565b612dcc565b612b72565b9050919050565b5f612e0082612dd5565b9050919050565b5f612e1182612df6565b9050919050565b612e2181612e07565b82525050565b5f602082019050612e3a5f830184612e18565b92915050565b612e4981612d28565b82525050565b5f602082019050612e625f830184612e40565b92915050565b5f805f60608486031215612e7f57612e7e612aaf565b5b5f612e8c86828701612bb8565b9350506020612e9d86828701612bb8565b9250506040612eae86828701612d47565b9150509250925092565b5f60ff82169050919050565b612ecd81612eb8565b82525050565b5f602082019050612ee65f830184612ec4565b92915050565b612ef581612b91565b82525050565b5f602082019050612f0e5f830184612eec565b92915050565b5f60208284031215612f2957612f28612aaf565b5b5f612f3684828501612bb8565b91505092915050565b612f4881612d99565b8114612f52575f80fd5b50565b5f81359050612f6381612f3f565b92915050565b5f60208284031215612f7e57612f7d612aaf565b5b5f612f8b84828501612f55565b91505092915050565b5f60208284031215612fa957612fa8612aaf565b5b5f612fb684828501612d47565b91505092915050565b5f805f8060808587031215612fd757612fd6612aaf565b5b5f612fe487828801612d47565b9450506020612ff587828801612d47565b935050604061300687828801612d47565b925050606061301787828801612d47565b91505092959194509250565b5f80fd5b5f8083601f84011261303c5761303b612ab7565b5b8235905067ffffffffffffffff81111561305957613058613023565b5b60208301915083602082028301111561307557613074612b6e565b5b9250929050565b5f805f6040848603121561309357613092612aaf565b5b5f84013567ffffffffffffffff8111156130b0576130af612ab3565b5b6130bc86828701613027565b935093505060206130cf86828701612f55565b9150509250925092565b5f80604083850312156130ef576130ee612aaf565b5b5f6130fc85828601612bb8565b925050602061310d85828601612bb8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61314b602083612cb2565b915061315682613117565b602082019050919050565b5f6020820190508181035f8301526131788161313f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613206602683612cb2565b9150613211826131ac565b604082019050919050565b5f6020820190508181035f830152613233816131fa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613294602483612cb2565b915061329f8261323a565b604082019050919050565b5f6020820190508181035f8301526132c181613288565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613322602283612cb2565b915061332d826132c8565b604082019050919050565b5f6020820190508181035f83015261334f81613316565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133b0602583612cb2565b91506133bb82613356565b604082019050919050565b5f6020820190508181035f8301526133dd816133a4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61343e602383612cb2565b9150613449826133e4565b604082019050919050565b5f6020820190508181035f83015261346b81613432565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134cc602983612cb2565b91506134d782613472565b604082019050919050565b5f6020820190508181035f8301526134f9816134c0565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61355a603f83612cb2565b915061356582613500565b604082019050919050565b5f6020820190508181035f8301526135878161354e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6135c2601c83612cb2565b91506135cd8261358e565b602082019050919050565b5f6020820190508181035f8301526135ef816135b6565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613650602383612cb2565b915061365b826135f6565b604082019050919050565b5f6020820190508181035f83015261367d81613644565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136bb82612d28565b91506136c683612d28565b92508282019050808211156136de576136dd613684565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61373e602383612cb2565b9150613749826136e4565b604082019050919050565b5f6020820190508181035f83015261376b81613732565b9050919050565b5f61377c82612d28565b915061378783612d28565b925082820390508181111561379f5761379e613684565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6137ff602a83612cb2565b915061380a826137a5565b604082019050919050565b5f6020820190508181035f83015261382c816137f3565b9050919050565b5f8151905061384181612ba2565b92915050565b5f6020828403121561385c5761385b612aaf565b5b5f61386984828501613833565b91505092915050565b5f819050919050565b5f61389561389061388b84613872565b612dcc565b612d28565b9050919050565b6138a58161387b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138dd81612b91565b82525050565b5f6138ee83836138d4565b60208301905092915050565b5f602082019050919050565b5f613910826138ab565b61391a81856138b5565b9350613925836138c5565b805f5b8381101561395557815161393c88826138e3565b9750613947836138fa565b925050600181019050613928565b5085935050505092915050565b5f60a0820190506139755f830188612e40565b613982602083018761389c565b81810360408301526139948186613906565b90506139a36060830185612eec565b6139b06080830184612e40565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139f182612d28565b91506139fc83612d28565b925082613a0c57613a0b6139ba565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a4b601b83612cb2565b9150613a5682613a17565b602082019050919050565b5f6020820190508181035f830152613a7881613a3f565b9050919050565b5f613a8982612d28565b9150613a9483612d28565b9250828202613aa281612d28565b91508282048414831517613ab957613ab8613684565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b1a602183612cb2565b9150613b2582613ac0565b604082019050919050565b5f6020820190508181035f830152613b4781613b0e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208e261808fc821374eaa99d920c58d699153d6d1dad31ddd37ac403bdddff356564736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106101cf575f3560e01c80637d1db4a5116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f70ccf7116100d05780638f70ccf7146104e65780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b80637d1db4a5146104565780637f2feddc146104805780638da5cb5b146104bc576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a61461041857806374010ece1461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612c61565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d08565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612d5b565b610850565b60405161025f9190612db3565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612e27565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612e4f565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612e68565b6108a1565b6040516102ef9190612db3565b60405180910390f35b348015610303575f80fd5b5061030c610975565b6040516103199190612e4f565b60405180910390f35b34801561032d575f80fd5b5061033661097b565b6040516103439190612ed3565b60405180910390f35b348015610357575f80fd5b50610360610983565b60405161036d9190612efb565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190612f14565b6109a8565b005b3480156103a9575f80fd5b506103c460048036038101906103bf9190612f69565b610a93565b005b3480156103d1575f80fd5b506103da610b44565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190612f14565b610c11565b60405161040f9190612e4f565b60405180910390f35b348015610423575f80fd5b5061042c610c5f565b005b348015610439575f80fd5b50610454600480360381019061044f9190612f94565b610dad565b005b348015610461575f80fd5b5061046a610e4b565b6040516104779190612e4f565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190612f14565b610e51565b6040516104b39190612e4f565b60405180910390f35b3480156104c7575f80fd5b506104d0610e66565b6040516104dd9190612efb565b60405180910390f35b3480156104f1575f80fd5b5061050c60048036038101906105079190612f69565b610e8d565b005b348015610519575f80fd5b50610522610f3e565b60405161052f9190612e4f565b60405180910390f35b348015610543575f80fd5b5061054c610f44565b6040516105599190612d08565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190612f94565b610f81565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612fbf565b61101f565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612d5b565b6110d5565b6040516105e59190612db3565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612f14565b6110f2565b6040516106219190612db3565b60405180910390f35b348015610635575f80fd5b5061063e61110f565b005b34801561064b575f80fd5b506106666004803603810190610661919061307c565b6111e4565b005b348015610673575f80fd5b5061068e600480360381019061068991906130d9565b611313565b60405161069b9190612e4f565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190612f94565b611395565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612f14565b611433565b005b6106fc6115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613161565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa61317f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600681526020017f4b61626f73750000000000000000000000000000000000000000000000000000815250905090565b5f61086361085c6115f0565b84846115f7565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f6108ad8484846117ba565b61096a846108b96115f0565b61096585604051806060016040528060288152602001613b4f6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61091c6115f0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461201a9092919063ffffffff16565b6115f7565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b06115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390613161565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a9b6115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e90613161565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b846115f0565b73ffffffffffffffffffffffffffffffffffffffff161480610bf9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610be16115f0565b73ffffffffffffffffffffffffffffffffffffffff16145b610c01575f80fd5b5f479050610c0e8161207c565b50565b5f610c5860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e4565b9050919050565b610c676115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90613161565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db56115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890613161565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e956115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890613161565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f4b41424f53550000000000000000000000000000000000000000000000000000815250905090565b610f896115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613161565b60405180910390fd5b8060188190555050565b6110276115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa90613161565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6110e86110e16115f0565b84846117ba565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661114f6115f0565b73ffffffffffffffffffffffffffffffffffffffff1614806111c4575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111ac6115f0565b73ffffffffffffffffffffffffffffffffffffffff16145b6111cc575f80fd5b5f6111d630610c11565b90506111e181612150565b50565b6111ec6115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613161565b60405180910390fd5b5f5b8383905081101561130d578160055f86868581811061129c5761129b61317f565b5b90506020020160208101906112b19190612f14565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061127a565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61139d6115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142090613161565b60405180910390fd5b8060178190555050565b61143b6115f0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114be90613161565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c9061321c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c906132aa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90613338565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117ad9190612e4f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181f906133c6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d90613454565b60405180910390fd5b5f81116118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf906134e2565b60405180910390fd5b6118e0610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561194e575061191e610e66565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2757601560149054906101000a900460ff166119dd5761196f610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613570565b60405180910390fd5b5b601654811115611a22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a19906135d8565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ac0575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af690613666565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bab5760175481611b6084610c11565b611b6a91906136b1565b10611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba190613754565b60405180910390fd5b5b5f611bb530610c11565b90505f60185482101590506016548210611bcf5760165491505b808015611be7575060158054906101000a900460ff16155b8015611c40575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c585750601560169054906101000a900460ff165b8015611cab575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cfe575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2457611d0c82612150565b5f4790505f811115611d2257611d214761207c565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc7575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e78575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e77575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e85575f9050612008565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f2e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4657600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fef575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200757600a54600c81905550600b54600d819055505b5b612014848484846123b9565b50505050565b5f838311158290612061576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120589190612d08565b60405180910390fd5b505f838561206f9190613772565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120e0573d5f803e3d5ffd5b5050565b5f60065482111561212a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212190613815565b60405180910390fd5b5f6121336123e6565b9050612148818461240f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218657612185612acb565b5b6040519080825280602002602001820160405280156121b45781602001602082028036833780820191505090505b50905030815f815181106121cb576121ca61317f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122939190613847565b816001815181106122a7576122a661317f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230d3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f7565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161236f959493929190613962565b5f604051808303815f87803b158015612386575f80fd5b505af1158015612398573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c7576123c6612458565b5b6123d2848484612491565b806123e0576123df612651565b5b50505050565b5f805f6123f1612665565b91509150612408818361240f90919063ffffffff16565b9250505090565b5f61245083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126c1565b905092915050565b5f600c5414801561246a57505f600d54145b61248f57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806124a087612722565b9550955095509550955095506124fc8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461278290919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061258d8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127cb90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d781612828565b6125e184836128df565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161263e9190612e4f565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f670de0b6b3a76400009050612696670de0b6b3a764000060065461240f90919063ffffffff16565b8210156126b457600654670de0b6b3a76400009350935050506126bd565b81819350935050505b9091565b5f8083118290612707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fe9190612d08565b60405180910390fd5b505f838561271591906139e7565b9050809150509392505050565b5f805f805f805f805f61273a8a600c54600d54612919565b9250925092505f6127496123e6565b90505f805f61275a8e8787876129ab565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127c383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201a565b905092915050565b5f8082846127d991906136b1565b90508381101561281e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281590613a61565b60405180910390fd5b8091505092915050565b5f6128316123e6565b90505f6128478284612a2f90919063ffffffff16565b90506128998160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127cb90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128f48260065461278290919063ffffffff16565b60068190555061290f816007546127cb90919063ffffffff16565b6007819055505050565b5f805f806129436064612935888a612a2f90919063ffffffff16565b61240f90919063ffffffff16565b90505f61296c606461295e888b612a2f90919063ffffffff16565b61240f90919063ffffffff16565b90505f61299482612986858c61278290919063ffffffff16565b61278290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129c28589612a2f90919063ffffffff16565b90505f6129d88689612a2f90919063ffffffff16565b90505f6129ee8789612a2f90919063ffffffff16565b90505f612a1682612a08858761278290919063ffffffff16565b61278290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a3f575f9050612aa0565b5f8284612a4c9190613a7f565b9050828482612a5b91906139e7565b14612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9290613b30565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b0182612abb565b810181811067ffffffffffffffff82111715612b2057612b1f612acb565b5b80604052505050565b5f612b32612aa6565b9050612b3e8282612af8565b919050565b5f67ffffffffffffffff821115612b5d57612b5c612acb565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b9b82612b72565b9050919050565b612bab81612b91565b8114612bb5575f80fd5b50565b5f81359050612bc681612ba2565b92915050565b5f612bde612bd984612b43565b612b29565b90508083825260208201905060208402830185811115612c0157612c00612b6e565b5b835b81811015612c2a5780612c168882612bb8565b845260208401935050602081019050612c03565b5050509392505050565b5f82601f830112612c4857612c47612ab7565b5b8135612c58848260208601612bcc565b91505092915050565b5f60208284031215612c7657612c75612aaf565b5b5f82013567ffffffffffffffff811115612c9357612c92612ab3565b5b612c9f84828501612c34565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612cda82612ca8565b612ce48185612cb2565b9350612cf4818560208601612cc2565b612cfd81612abb565b840191505092915050565b5f6020820190508181035f830152612d208184612cd0565b905092915050565b5f819050919050565b612d3a81612d28565b8114612d44575f80fd5b50565b5f81359050612d5581612d31565b92915050565b5f8060408385031215612d7157612d70612aaf565b5b5f612d7e85828601612bb8565b9250506020612d8f85828601612d47565b9150509250929050565b5f8115159050919050565b612dad81612d99565b82525050565b5f602082019050612dc65f830184612da4565b92915050565b5f819050919050565b5f612def612dea612de584612b72565b612dcc565b612b72565b9050919050565b5f612e0082612dd5565b9050919050565b5f612e1182612df6565b9050919050565b612e2181612e07565b82525050565b5f602082019050612e3a5f830184612e18565b92915050565b612e4981612d28565b82525050565b5f602082019050612e625f830184612e40565b92915050565b5f805f60608486031215612e7f57612e7e612aaf565b5b5f612e8c86828701612bb8565b9350506020612e9d86828701612bb8565b9250506040612eae86828701612d47565b9150509250925092565b5f60ff82169050919050565b612ecd81612eb8565b82525050565b5f602082019050612ee65f830184612ec4565b92915050565b612ef581612b91565b82525050565b5f602082019050612f0e5f830184612eec565b92915050565b5f60208284031215612f2957612f28612aaf565b5b5f612f3684828501612bb8565b91505092915050565b612f4881612d99565b8114612f52575f80fd5b50565b5f81359050612f6381612f3f565b92915050565b5f60208284031215612f7e57612f7d612aaf565b5b5f612f8b84828501612f55565b91505092915050565b5f60208284031215612fa957612fa8612aaf565b5b5f612fb684828501612d47565b91505092915050565b5f805f8060808587031215612fd757612fd6612aaf565b5b5f612fe487828801612d47565b9450506020612ff587828801612d47565b935050604061300687828801612d47565b925050606061301787828801612d47565b91505092959194509250565b5f80fd5b5f8083601f84011261303c5761303b612ab7565b5b8235905067ffffffffffffffff81111561305957613058613023565b5b60208301915083602082028301111561307557613074612b6e565b5b9250929050565b5f805f6040848603121561309357613092612aaf565b5b5f84013567ffffffffffffffff8111156130b0576130af612ab3565b5b6130bc86828701613027565b935093505060206130cf86828701612f55565b9150509250925092565b5f80604083850312156130ef576130ee612aaf565b5b5f6130fc85828601612bb8565b925050602061310d85828601612bb8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61314b602083612cb2565b915061315682613117565b602082019050919050565b5f6020820190508181035f8301526131788161313f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613206602683612cb2565b9150613211826131ac565b604082019050919050565b5f6020820190508181035f830152613233816131fa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613294602483612cb2565b915061329f8261323a565b604082019050919050565b5f6020820190508181035f8301526132c181613288565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613322602283612cb2565b915061332d826132c8565b604082019050919050565b5f6020820190508181035f83015261334f81613316565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133b0602583612cb2565b91506133bb82613356565b604082019050919050565b5f6020820190508181035f8301526133dd816133a4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61343e602383612cb2565b9150613449826133e4565b604082019050919050565b5f6020820190508181035f83015261346b81613432565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134cc602983612cb2565b91506134d782613472565b604082019050919050565b5f6020820190508181035f8301526134f9816134c0565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61355a603f83612cb2565b915061356582613500565b604082019050919050565b5f6020820190508181035f8301526135878161354e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6135c2601c83612cb2565b91506135cd8261358e565b602082019050919050565b5f6020820190508181035f8301526135ef816135b6565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613650602383612cb2565b915061365b826135f6565b604082019050919050565b5f6020820190508181035f83015261367d81613644565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136bb82612d28565b91506136c683612d28565b92508282019050808211156136de576136dd613684565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61373e602383612cb2565b9150613749826136e4565b604082019050919050565b5f6020820190508181035f83015261376b81613732565b9050919050565b5f61377c82612d28565b915061378783612d28565b925082820390508181111561379f5761379e613684565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6137ff602a83612cb2565b915061380a826137a5565b604082019050919050565b5f6020820190508181035f83015261382c816137f3565b9050919050565b5f8151905061384181612ba2565b92915050565b5f6020828403121561385c5761385b612aaf565b5b5f61386984828501613833565b91505092915050565b5f819050919050565b5f61389561389061388b84613872565b612dcc565b612d28565b9050919050565b6138a58161387b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138dd81612b91565b82525050565b5f6138ee83836138d4565b60208301905092915050565b5f602082019050919050565b5f613910826138ab565b61391a81856138b5565b9350613925836138c5565b805f5b8381101561395557815161393c88826138e3565b9750613947836138fa565b925050600181019050613928565b5085935050505092915050565b5f60a0820190506139755f830188612e40565b613982602083018761389c565b81810360408301526139948186613906565b90506139a36060830185612eec565b6139b06080830184612e40565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139f182612d28565b91506139fc83612d28565b925082613a0c57613a0b6139ba565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a4b601b83612cb2565b9150613a5682613a17565b602082019050919050565b5f6020820190508181035f830152613a7881613a3f565b9050919050565b5f613a8982612d28565b9150613a9483612d28565b9250828202613aa281612d28565b91508282048414831517613ab957613ab8613684565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b1a602183612cb2565b9150613b2582613ac0565b604082019050919050565b5f6020820190508181035f830152613b4781613b0e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208e261808fc821374eaa99d920c58d699153d6d1dad31ddd37ac403bdddff356564736f6c634300081a0033
Deployed Bytecode Sourcemap
4204:13518:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12895:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6723:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7648:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5559:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7000:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7849:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5870:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6909:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5607:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13072:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17104:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12652:235;;;;;;;;;;;;;:::i;:::-;;7103:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1691:148;;;;;;;;;;;;;:::i;:::-;;17244:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5756:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5301:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1477:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12299:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5812:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6814:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16913:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16570:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7249:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5263:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12408:236;;;;;;;;;;;;;:::i;:::-;;17483:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7456:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17360:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1847:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12895:169;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12971:9:::1;12966:91;12990:5;:12;12986:1;:16;12966:91;;;13041:4;13024;:14;13029:5;13035:1;13029:8;;;;;;;;:::i;:::-;;;;;;;;13024:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13004:3;;;;;;;12966:91;;;;12895:169:::0;:::o;6723:83::-;6760:13;6793:5;;;;;;;;;;;;;;;;;6786:12;;6723:83;:::o;7648:193::-;7750:4;7772:39;7781:12;:10;:12::i;:::-;7795:7;7804:6;7772:8;:39::i;:::-;7829:4;7822:11;;7648:193;;;;:::o;5559:41::-;;;;;;;;;;;;;:::o;7000:95::-;7053:7;4749:18;7073:14;;7000:95;:::o;7849:446::-;7981:4;7998:36;8008:6;8016:9;8027:6;7998:9;:36::i;:::-;8045:220;8068:6;8089:12;:10;:12::i;:::-;8116:138;8172:6;8116:138;;;;;;;;;;;;;;;;;:11;:19;8128:6;8116:19;;;;;;;;;;;;;;;:33;8136:12;:10;:12::i;:::-;8116:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8045:8;:220::i;:::-;8283:4;8276:11;;7849:446;;;;;:::o;5870:50::-;;;;:::o;6909:83::-;6950:5;4423:1;6968:16;;6909:83;:::o;5607:28::-;;;;;;;;;;;;;:::o;13072:92::-;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13151:5:::1;13136:4;:12;13141:6;13136:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13072:92:::0;:::o;17104:101::-;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17185:12:::1;17171:11;;:26;;;;;;;;;;;;;;;;;;17104:101:::0;:::o;12652:235::-;12718:19;;;;;;;;;;;12702:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12757:17;;;;;;;;;;;12741:33;;:12;:10;:12::i;:::-;:33;;;12702:72;12694:81;;;;;;12786:26;12815:21;12786:50;;12847:32;12860:18;12847:12;:32::i;:::-;12683:204;12652:235::o;7103:138::-;7169:7;7196:37;7216:7;:16;7224:7;7216:16;;;;;;;;;;;;;;;;7196:19;:37::i;:::-;7189:44;;7103:138;;;:::o;1691:148::-;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1798:1:::1;1761:40;;1782:6;::::0;::::1;;;;;;;;1761:40;;;;;;;;;;;;1829:1;1812:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1691:148::o:0;17244:108::-;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17333:11:::1;17318:12;:26;;;;17244:108:::0;:::o;5756:48::-;;;;:::o;5301:43::-;;;;;;;;;;;;;;;;;:::o;1477:79::-;1515:7;1542:6;;;;;;;;;;;1535:13;;1477:79;:::o;12299:101::-;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12380:12:::1;12366:11;;:26;;;;;;;;;;;;;;;;;;12299:101:::0;:::o;5812:50::-;;;;:::o;6814:87::-;6853:13;6886:7;;;;;;;;;;;;;;;;;6879:14;;6814:87;:::o;16913:139::-;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17026:18:::1;17004:19;:40;;;;16913:139:::0;:::o;16570:291::-;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16721:13:::1;16704:14;:30;;;;16763:14;16745:15;:32;;;;16803:11;16788:12;:26;;;;16841:12;16825:13;:28;;;;16570:291:::0;;;;:::o;7249:199::-;7354:4;7376:42;7386:12;:10;:12::i;:::-;7400:9;7411:6;7376:9;:42::i;:::-;7436:4;7429:11;;7249:199;;;;:::o;5263:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12408:236::-;12474:19;;;;;;;;;;;12458:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12513:17;;;;;;;;;;;12497:33;;:12;:10;:12::i;:::-;:33;;;12458:72;12450:81;;;;;;12542:23;12568:24;12586:4;12568:9;:24::i;:::-;12542:50;;12603:33;12620:15;12603:16;:33::i;:::-;12439:205;12408:236::o;17483:234::-;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17600:9:::1;17596:114;17619:8;;:15;;17615:1;:19;17596:114;;;17690:8;17656:18;:31;17675:8;;17684:1;17675:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17656:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17636:3;;;;;;;17596:114;;;;17483:234:::0;;;:::o;7456:184::-;7573:7;7605:11;:18;7617:5;7605:18;;;;;;;;;;;;;;;:27;7624:7;7605:27;;;;;;;;;;;;;;;;7598:34;;7456:184;;;;:::o;17360:115::-;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17454:13:::1;17437:14;:30;;;;17360:115:::0;:::o;1847:244::-;1614:12;:10;:12::i;:::-;1604:22;;:6;;;;;;;;;;:22;;;1596:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1956:1:::1;1936:22;;:8;:22;;::::0;1928:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2046:8;2017:38;;2038:6;::::0;::::1;;;;;;;;2017:38;;;;;;;;;;;;2075:8;2066:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1847:244:::0;:::o;236:98::-;289:7;316:10;309:17;;236:98;:::o;8986:369::-;9130:1;9113:19;;:5;:19;;;9105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9211:1;9192:21;;:7;:21;;;9184:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9293:6;9263:11;:18;9275:5;9263:18;;;;;;;;;;;;;;;:27;9282:7;9263:27;;;;;;;;;;;;;;;:36;;;;9331:7;9315:32;;9324:5;9315:32;;;9340:6;9315:32;;;;;;:::i;:::-;;;;;;;;8986:369;;;:::o;9363:2330::-;9501:1;9485:18;;:4;:18;;;9477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9578:1;9564:16;;:2;:16;;;9556:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9648:1;9639:6;:10;9631:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9720:7;:5;:7::i;:::-;9712:15;;:4;:15;;;;:32;;;;;9737:7;:5;:7::i;:::-;9731:13;;:2;:13;;;;9712:32;9708:1259;;;9801:11;;;;;;;;;;;9796:144;;9849:7;:5;:7::i;:::-;9841:15;;:4;:15;;;9833:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9796:144;9974:12;;9964:6;:22;;9956:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10043:4;:10;10048:4;10043:10;;;;;;;;;;;;;;;;;;;;;;;;;10042:11;:24;;;;;10058:4;:8;10063:2;10058:8;;;;;;;;;;;;;;;;;;;;;;;;;10057:9;10042:24;10034:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10132:13;;;;;;;;;;;10126:19;;:2;:19;;;10123:146;;10199:14;;10190:6;10174:13;10184:2;10174:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10166:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10123:146;10285:28;10316:24;10334:4;10316:9;:24::i;:::-;10285:55;;10355:12;10394:19;;10370:20;:43;;10355:58;;10457:12;;10433:20;:36;10430:124;;10526:12;;10503:35;;10430:124;10574:7;:18;;;;;10586:6;;;;;;;;;;10585:7;10574:18;:43;;;;;10604:13;;;;;;;;;;;10596:21;;:4;:21;;;;10574:43;:58;;;;;10621:11;;;;;;;;;;;10574:58;:87;;;;;10637:18;:24;10656:4;10637:24;;;;;;;;;;;;;;;;;;;;;;;;;10636:25;10574:87;:114;;;;;10666:18;:22;10685:2;10666:22;;;;;;;;;;;;;;;;;;;;;;;;;10665:23;10574:114;10570:386;;;10709:38;10726:20;10709:16;:38::i;:::-;10766:26;10795:21;10766:50;;10860:1;10839:18;:22;10835:106;;;10886:35;10899:21;10886:12;:35::i;:::-;10835:106;10690:266;10570:386;9746:1221;;9708:1259;10979:12;10994:4;10979:19;;11043:18;:24;11062:4;11043:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11071:18;:22;11090:2;11071:22;;;;;;;;;;;;;;;;;;;;;;;;;11043:50;11042:102;;;;11107:13;;;;;;;;;;;11099:21;;:4;:21;;;;:44;;;;;11130:13;;;;;;;;;;;11124:19;;:2;:19;;;;11099:44;11042:102;11038:594;;;11171:5;11161:15;;11038:594;;;11254:13;;;;;;;;;;;11246:21;;:4;:21;;;:55;;;;;11285:15;;;;;;;;;;;11271:30;;:2;:30;;;;11246:55;11243:162;;;11334:14;;11322:9;:26;;;;11377:12;;11367:7;:22;;;;11243:162;11464:13;;;;;;;;;;;11458:19;;:2;:19;;;:55;;;;;11497:15;;;;;;;;;;;11481:32;;:4;:32;;;;11458:55;11454:165;;;11546:15;;11534:9;:27;;;;11590:13;;11580:7;:23;;;;11454:165;11038:594;11644:41;11659:4;11665:2;11669:6;11677:7;11644:14;:41::i;:::-;9466:2227;9363:2330;;;:::o;2455:224::-;2575:7;2608:1;2603;:6;;2611:12;2595:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2635:9;2651:1;2647;:5;;;;:::i;:::-;2635:17;;2670:1;2663:8;;;2455:224;;;;;:::o;12192:99::-;12249:17;;;;;;;;;;;:26;;:34;12276:6;12249:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12192:99;:::o;8303:323::-;8398:7;8456;;8445;:18;;8423:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8544:19;8566:10;:8;:10::i;:::-;8544:32;;8594:24;8606:11;8594:7;:11;;:24;;;;:::i;:::-;8587:31;;;8303:323;;;:::o;11701:483::-;6024:4;6015:6;;:13;;;;;;;;;;;;;;;;;;11779:21:::1;11817:1;11803:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11779:40;;11848:4;11830;11835:1;11830:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11874:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11864:4;11869:1;11864:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11907:62;11924:4;11939:15;;;;;;;;;;;11957:11;11907:8;:62::i;:::-;11980:15;;;;;;;;;;;:66;;;12061:11;12087:1;12103:4;12130;12150:15;11980:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11768:416;6060:5:::0;6051:6;;:14;;;;;;;;;;;;;;;;;;11701:483;:::o;13172:282::-;13328:7;13323:28;;13337:14;:12;:14::i;:::-;13323:28;13362:44;13380:6;13388:9;13399:6;13362:17;:44::i;:::-;13422:7;13417:29;;13431:15;:13;:15::i;:::-;13417:29;13172:282;;;;:::o;16133:164::-;16175:7;16196:15;16213;16232:19;:17;:19::i;:::-;16195:56;;;;16269:20;16281:7;16269;:11;;:20;;;;:::i;:::-;16262:27;;;;16133:164;:::o;2941:132::-;2999:7;3026:39;3030:1;3033;3026:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3019:46;;2941:132;;;;:::o;8634:219::-;8694:1;8681:9;;:14;:30;;;;;8710:1;8699:7;;:12;8681:30;8713:7;8677:43;8752:9;;8732:17;:29;;;;8790:7;;8772:15;:25;;;;8822:1;8810:9;:13;;;;8844:1;8834:7;:11;;;;8634:219;:::o;13462:610::-;13609:15;13639:23;13677:12;13704:23;13742:12;13769:13;13796:19;13807:7;13796:10;:19::i;:::-;13594:221;;;;;;;;;;;;13844:28;13864:7;13844;:15;13852:6;13844:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13826:7;:15;13834:6;13826:15;;;;;;;;;;;;;;;:46;;;;13904:39;13927:15;13904:7;:18;13912:9;13904:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13883:7;:18;13891:9;13883:18;;;;;;;;;;;;;;;:60;;;;13954:16;13964:5;13954:9;:16::i;:::-;13981:23;13993:4;13999;13981:11;:23::i;:::-;14037:9;14020:44;;14029:6;14020:44;;;14048:15;14020:44;;;;;;:::i;:::-;;;;;;;;13583:489;;;;;;13462:610;;;:::o;8861:117::-;8917:17;;8905:9;:29;;;;8955:15;;8945:7;:25;;;;8861:117::o;16305:257::-;16356:7;16365;16385:15;16403:7;;16385:25;;16421:15;4749:18;16421:25;;16471:20;4749:18;16471:7;;:11;;:20;;;;:::i;:::-;16461:7;:30;16457:61;;;16501:7;;4749:18;16493:25;;;;;;;;16457:61;16537:7;16546;16529:25;;;;;;16305:257;;;:::o;3081:223::-;3201:7;3233:1;3229;:5;3236:12;3221:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3260:9;3276:1;3272;:5;;;;:::i;:::-;3260:17;;3295:1;3288:8;;;3081:223;;;;;:::o;14491:615::-;14591:7;14613;14635;14657;14679;14701;14737:23;14762:12;14776:13;14806:40;14818:7;14827:9;;14838:7;;14806:11;:40::i;:::-;14736:110;;;;;;14857:19;14879:10;:8;:10::i;:::-;14857:32;;14901:15;14918:23;14943:12;14972:46;14984:7;14993:4;14999:5;15006:11;14972;:46::i;:::-;14900:118;;;;;;15037:7;15046:15;15063:4;15069:15;15086:4;15092:5;15029:69;;;;;;;;;;;;;;;;;;;14491:615;;;;;;;:::o;2311:136::-;2369:7;2396:43;2400:1;2403;2396:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2389:50;;2311:136;;;;:::o;2124:179::-;2182:7;2202:9;2218:1;2214;:5;;;;:::i;:::-;2202:17;;2243:1;2238;:6;;2230:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2294:1;2287:8;;;2124:179;;;;:::o;14080:211::-;14133:19;14155:10;:8;:10::i;:::-;14133:32;;14176:13;14192:22;14202:11;14192:5;:9;;:22;;;;:::i;:::-;14176:38;;14250:33;14277:5;14250:7;:22;14266:4;14250:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14225:7;:22;14241:4;14225:22;;;;;;;;;;;;;;;:58;;;;14122:169;;14080:211;:::o;14299:147::-;14377:17;14389:4;14377:7;;:11;;:17;;;;:::i;:::-;14367:7;:27;;;;14418:20;14433:4;14418:10;;:14;;:20;;;;:::i;:::-;14405:10;:33;;;;14299:147;;:::o;15114:469::-;15283:7;15305;15327;15362:12;15377:30;15403:3;15377:21;15389:8;15377:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15362:45;;15418:13;15434:28;15458:3;15434:19;15446:6;15434:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15418:44;;15473:23;15499:28;15521:5;15499:17;15511:4;15499:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15473:54;;15546:15;15563:4;15569:5;15538:37;;;;;;;;;15114:469;;;;;;;:::o;15591:534::-;15785:7;15807;15829;15864:15;15882:24;15894:11;15882:7;:11;;:24;;;;:::i;:::-;15864:42;;15917:12;15932:21;15941:11;15932:4;:8;;:21;;;;:::i;:::-;15917:36;;15964:13;15980:22;15990:11;15980:5;:9;;:22;;;;:::i;:::-;15964:38;;16013:23;16039:28;16061:5;16039:17;16051:4;16039:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16013:54;;16086:7;16095:15;16112:4;16078:39;;;;;;;;;;15591:534;;;;;;;;:::o;2687:246::-;2745:7;2774:1;2769;:6;2765:47;;2799:1;2792:8;;;;2765:47;2822:9;2838:1;2834;:5;;;;:::i;:::-;2822:17;;2867:1;2862;2858;:5;;;;:::i;:::-;:10;2850:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2924:1;2917:8;;;2687: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:139::-;4160:6;4155:3;4150;4144:23;4201:1;4192:6;4187:3;4183:16;4176:27;4071:139;;;:::o;4216:377::-;4304:3;4332:39;4365:5;4332:39;:::i;:::-;4387:71;4451:6;4446:3;4387:71;:::i;:::-;4380:78;;4467:65;4525:6;4520:3;4513:4;4506:5;4502:16;4467:65;:::i;:::-;4557:29;4579:6;4557:29;:::i;:::-;4552:3;4548:39;4541:46;;4308:285;4216:377;;;;:::o;4599:313::-;4712:4;4750:2;4739:9;4735:18;4727:26;;4799:9;4793:4;4789:20;4785:1;4774:9;4770:17;4763:47;4827:78;4900:4;4891:6;4827:78;:::i;:::-;4819:86;;4599:313;;;;:::o;4918:77::-;4955:7;4984:5;4973:16;;4918:77;;;:::o;5001:122::-;5074:24;5092:5;5074:24;:::i;:::-;5067:5;5064:35;5054:63;;5113:1;5110;5103:12;5054:63;5001:122;:::o;5129:139::-;5175:5;5213:6;5200:20;5191:29;;5229:33;5256:5;5229:33;:::i;:::-;5129:139;;;;:::o;5274:474::-;5342:6;5350;5399:2;5387:9;5378:7;5374:23;5370:32;5367:119;;;5405:79;;:::i;:::-;5367:119;5525:1;5550:53;5595:7;5586:6;5575:9;5571:22;5550:53;:::i;:::-;5540:63;;5496:117;5652:2;5678:53;5723:7;5714:6;5703:9;5699:22;5678:53;:::i;:::-;5668:63;;5623:118;5274:474;;;;;:::o;5754:90::-;5788:7;5831:5;5824:13;5817:21;5806:32;;5754:90;;;:::o;5850:109::-;5931:21;5946:5;5931:21;:::i;:::-;5926:3;5919:34;5850:109;;:::o;5965:210::-;6052:4;6090:2;6079:9;6075:18;6067:26;;6103:65;6165:1;6154:9;6150:17;6141:6;6103:65;:::i;:::-;5965:210;;;;:::o;6181:60::-;6209:3;6230:5;6223:12;;6181:60;;;:::o;6247:142::-;6297:9;6330:53;6348:34;6357:24;6375:5;6357:24;:::i;:::-;6348:34;:::i;:::-;6330:53;:::i;:::-;6317:66;;6247:142;;;:::o;6395:126::-;6445:9;6478:37;6509:5;6478:37;:::i;:::-;6465:50;;6395:126;;;:::o;6527:152::-;6603:9;6636:37;6667:5;6636:37;:::i;:::-;6623:50;;6527:152;;;:::o;6685:183::-;6798:63;6855:5;6798:63;:::i;:::-;6793:3;6786:76;6685:183;;:::o;6874:274::-;6993:4;7031:2;7020:9;7016:18;7008:26;;7044:97;7138:1;7127:9;7123:17;7114:6;7044:97;:::i;:::-;6874:274;;;;:::o;7154:118::-;7241:24;7259:5;7241:24;:::i;:::-;7236:3;7229:37;7154:118;;:::o;7278:222::-;7371:4;7409:2;7398:9;7394:18;7386:26;;7422:71;7490:1;7479:9;7475:17;7466:6;7422:71;:::i;:::-;7278:222;;;;:::o;7506:619::-;7583:6;7591;7599;7648:2;7636:9;7627:7;7623:23;7619:32;7616:119;;;7654:79;;:::i;:::-;7616:119;7774:1;7799:53;7844:7;7835:6;7824:9;7820:22;7799:53;:::i;:::-;7789:63;;7745:117;7901:2;7927:53;7972:7;7963:6;7952:9;7948:22;7927:53;:::i;:::-;7917:63;;7872:118;8029:2;8055:53;8100:7;8091:6;8080:9;8076:22;8055:53;:::i;:::-;8045:63;;8000:118;7506:619;;;;;:::o;8131:86::-;8166:7;8206:4;8199:5;8195:16;8184:27;;8131:86;;;:::o;8223:112::-;8306:22;8322:5;8306:22;:::i;:::-;8301:3;8294:35;8223:112;;:::o;8341:214::-;8430:4;8468:2;8457:9;8453:18;8445:26;;8481:67;8545:1;8534:9;8530:17;8521:6;8481:67;:::i;:::-;8341:214;;;;:::o;8561:118::-;8648:24;8666:5;8648:24;:::i;:::-;8643:3;8636:37;8561:118;;:::o;8685:222::-;8778:4;8816:2;8805:9;8801:18;8793:26;;8829:71;8897:1;8886:9;8882:17;8873:6;8829:71;:::i;:::-;8685:222;;;;:::o;8913:329::-;8972:6;9021:2;9009:9;9000:7;8996:23;8992:32;8989:119;;;9027:79;;:::i;:::-;8989:119;9147:1;9172:53;9217:7;9208:6;9197:9;9193:22;9172:53;:::i;:::-;9162:63;;9118:117;8913:329;;;;:::o;9248:116::-;9318:21;9333:5;9318:21;:::i;:::-;9311:5;9308:32;9298:60;;9354:1;9351;9344:12;9298:60;9248:116;:::o;9370:133::-;9413:5;9451:6;9438:20;9429:29;;9467:30;9491:5;9467:30;:::i;:::-;9370:133;;;;:::o;9509:323::-;9565:6;9614:2;9602:9;9593:7;9589:23;9585:32;9582:119;;;9620:79;;:::i;:::-;9582:119;9740:1;9765:50;9807:7;9798:6;9787:9;9783:22;9765:50;:::i;:::-;9755:60;;9711:114;9509:323;;;;:::o;9838:329::-;9897:6;9946:2;9934:9;9925:7;9921:23;9917:32;9914:119;;;9952:79;;:::i;:::-;9914:119;10072:1;10097:53;10142:7;10133:6;10122:9;10118:22;10097:53;:::i;:::-;10087:63;;10043:117;9838:329;;;;:::o;10173:765::-;10259:6;10267;10275;10283;10332:3;10320:9;10311:7;10307:23;10303:33;10300:120;;;10339:79;;:::i;:::-;10300:120;10459:1;10484:53;10529:7;10520:6;10509:9;10505:22;10484:53;:::i;:::-;10474:63;;10430:117;10586:2;10612:53;10657:7;10648:6;10637:9;10633:22;10612:53;:::i;:::-;10602:63;;10557:118;10714:2;10740:53;10785:7;10776:6;10765:9;10761:22;10740:53;:::i;:::-;10730:63;;10685:118;10842:2;10868:53;10913:7;10904:6;10893:9;10889:22;10868:53;:::i;:::-;10858:63;;10813:118;10173:765;;;;;;;:::o;10944:117::-;11053:1;11050;11043:12;11084:568;11157:8;11167:6;11217:3;11210:4;11202:6;11198:17;11194:27;11184:122;;11225:79;;:::i;:::-;11184:122;11338:6;11325:20;11315:30;;11368:18;11360:6;11357:30;11354:117;;;11390:79;;:::i;:::-;11354:117;11504:4;11496:6;11492:17;11480:29;;11558:3;11550:4;11542:6;11538:17;11528:8;11524:32;11521:41;11518:128;;;11565:79;;:::i;:::-;11518:128;11084:568;;;;;:::o;11658:698::-;11750:6;11758;11766;11815:2;11803:9;11794:7;11790:23;11786:32;11783:119;;;11821:79;;:::i;:::-;11783:119;11969:1;11958:9;11954:17;11941:31;11999:18;11991:6;11988:30;11985:117;;;12021:79;;:::i;:::-;11985:117;12134:80;12206:7;12197:6;12186:9;12182:22;12134:80;:::i;:::-;12116:98;;;;11912:312;12263:2;12289:50;12331:7;12322:6;12311:9;12307:22;12289:50;:::i;:::-;12279:60;;12234:115;11658:698;;;;;:::o;12362:474::-;12430:6;12438;12487:2;12475:9;12466:7;12462:23;12458:32;12455:119;;;12493:79;;:::i;:::-;12455:119;12613:1;12638:53;12683:7;12674:6;12663:9;12659:22;12638:53;:::i;:::-;12628:63;;12584:117;12740:2;12766:53;12811:7;12802:6;12791:9;12787:22;12766:53;:::i;:::-;12756:63;;12711:118;12362:474;;;;;:::o;12842:182::-;12982:34;12978:1;12970:6;12966:14;12959:58;12842:182;:::o;13030:366::-;13172:3;13193:67;13257:2;13252:3;13193:67;:::i;:::-;13186:74;;13269:93;13358:3;13269:93;:::i;:::-;13387:2;13382:3;13378:12;13371:19;;13030:366;;;:::o;13402:419::-;13568:4;13606:2;13595:9;13591:18;13583:26;;13655:9;13649:4;13645:20;13641:1;13630:9;13626:17;13619:47;13683:131;13809:4;13683:131;:::i;:::-;13675:139;;13402:419;;;:::o;13827:180::-;13875:77;13872:1;13865:88;13972:4;13969:1;13962:15;13996:4;13993:1;13986:15;14013:225;14153:34;14149:1;14141:6;14137:14;14130:58;14222:8;14217:2;14209:6;14205:15;14198:33;14013:225;:::o;14244:366::-;14386:3;14407:67;14471:2;14466:3;14407:67;:::i;:::-;14400:74;;14483:93;14572:3;14483:93;:::i;:::-;14601:2;14596:3;14592:12;14585:19;;14244:366;;;:::o;14616:419::-;14782:4;14820:2;14809:9;14805:18;14797:26;;14869:9;14863:4;14859:20;14855:1;14844:9;14840:17;14833:47;14897:131;15023:4;14897:131;:::i;:::-;14889:139;;14616:419;;;:::o;15041:223::-;15181:34;15177:1;15169:6;15165:14;15158:58;15250:6;15245:2;15237:6;15233:15;15226:31;15041:223;:::o;15270:366::-;15412:3;15433:67;15497:2;15492:3;15433:67;:::i;:::-;15426:74;;15509:93;15598:3;15509:93;:::i;:::-;15627:2;15622:3;15618:12;15611:19;;15270:366;;;:::o;15642:419::-;15808:4;15846:2;15835:9;15831:18;15823:26;;15895:9;15889:4;15885:20;15881:1;15870:9;15866:17;15859:47;15923:131;16049:4;15923:131;:::i;:::-;15915:139;;15642:419;;;:::o;16067:221::-;16207:34;16203:1;16195:6;16191:14;16184:58;16276:4;16271:2;16263:6;16259:15;16252:29;16067:221;:::o;16294:366::-;16436:3;16457:67;16521:2;16516:3;16457:67;:::i;:::-;16450:74;;16533:93;16622:3;16533:93;:::i;:::-;16651:2;16646:3;16642:12;16635:19;;16294:366;;;:::o;16666:419::-;16832:4;16870:2;16859:9;16855:18;16847:26;;16919:9;16913:4;16909:20;16905:1;16894:9;16890:17;16883:47;16947:131;17073:4;16947:131;:::i;:::-;16939:139;;16666:419;;;:::o;17091:224::-;17231:34;17227:1;17219:6;17215:14;17208:58;17300:7;17295:2;17287:6;17283:15;17276:32;17091:224;:::o;17321:366::-;17463:3;17484:67;17548:2;17543:3;17484:67;:::i;:::-;17477:74;;17560:93;17649:3;17560:93;:::i;:::-;17678:2;17673:3;17669:12;17662:19;;17321:366;;;:::o;17693:419::-;17859:4;17897:2;17886:9;17882:18;17874:26;;17946:9;17940:4;17936:20;17932:1;17921:9;17917:17;17910:47;17974:131;18100:4;17974:131;:::i;:::-;17966:139;;17693:419;;;:::o;18118:222::-;18258:34;18254:1;18246:6;18242:14;18235:58;18327:5;18322:2;18314:6;18310:15;18303:30;18118:222;:::o;18346:366::-;18488:3;18509:67;18573:2;18568:3;18509:67;:::i;:::-;18502:74;;18585:93;18674:3;18585:93;:::i;:::-;18703:2;18698:3;18694:12;18687:19;;18346:366;;;:::o;18718:419::-;18884:4;18922:2;18911:9;18907:18;18899:26;;18971:9;18965:4;18961:20;18957:1;18946:9;18942:17;18935:47;18999:131;19125:4;18999:131;:::i;:::-;18991:139;;18718:419;;;:::o;19143:228::-;19283:34;19279:1;19271:6;19267:14;19260:58;19352:11;19347:2;19339:6;19335:15;19328:36;19143:228;:::o;19377:366::-;19519:3;19540:67;19604:2;19599:3;19540:67;:::i;:::-;19533:74;;19616:93;19705:3;19616:93;:::i;:::-;19734:2;19729:3;19725:12;19718:19;;19377:366;;;:::o;19749:419::-;19915:4;19953:2;19942:9;19938:18;19930:26;;20002:9;19996:4;19992:20;19988:1;19977:9;19973:17;19966:47;20030:131;20156:4;20030:131;:::i;:::-;20022:139;;19749:419;;;:::o;20174:250::-;20314:34;20310:1;20302:6;20298:14;20291:58;20383:33;20378:2;20370:6;20366:15;20359:58;20174:250;:::o;20430:366::-;20572:3;20593:67;20657:2;20652:3;20593:67;:::i;:::-;20586:74;;20669:93;20758:3;20669:93;:::i;:::-;20787:2;20782:3;20778:12;20771:19;;20430:366;;;:::o;20802:419::-;20968:4;21006:2;20995:9;20991:18;20983:26;;21055:9;21049:4;21045:20;21041:1;21030:9;21026:17;21019:47;21083:131;21209:4;21083:131;:::i;:::-;21075:139;;20802:419;;;:::o;21227:178::-;21367:30;21363:1;21355:6;21351:14;21344:54;21227:178;:::o;21411:366::-;21553:3;21574:67;21638:2;21633:3;21574:67;:::i;:::-;21567:74;;21650:93;21739:3;21650:93;:::i;:::-;21768:2;21763:3;21759:12;21752:19;;21411:366;;;:::o;21783:419::-;21949:4;21987:2;21976:9;21972:18;21964:26;;22036:9;22030:4;22026:20;22022:1;22011:9;22007:17;22000:47;22064:131;22190:4;22064:131;:::i;:::-;22056:139;;21783:419;;;:::o;22208:222::-;22348:34;22344:1;22336:6;22332:14;22325:58;22417:5;22412:2;22404:6;22400:15;22393:30;22208:222;:::o;22436:366::-;22578:3;22599:67;22663:2;22658:3;22599:67;:::i;:::-;22592:74;;22675:93;22764:3;22675:93;:::i;:::-;22793:2;22788:3;22784:12;22777:19;;22436:366;;;:::o;22808:419::-;22974:4;23012:2;23001:9;22997:18;22989:26;;23061:9;23055:4;23051:20;23047:1;23036:9;23032:17;23025:47;23089:131;23215:4;23089:131;:::i;:::-;23081:139;;22808:419;;;:::o;23233:180::-;23281:77;23278:1;23271:88;23378:4;23375:1;23368:15;23402:4;23399:1;23392:15;23419:191;23459:3;23478:20;23496:1;23478:20;:::i;:::-;23473:25;;23512:20;23530:1;23512:20;:::i;:::-;23507:25;;23555:1;23552;23548:9;23541:16;;23576:3;23573:1;23570:10;23567:36;;;23583:18;;:::i;:::-;23567:36;23419:191;;;;:::o;23616:222::-;23756:34;23752:1;23744:6;23740:14;23733:58;23825:5;23820:2;23812:6;23808:15;23801:30;23616:222;:::o;23844:366::-;23986:3;24007:67;24071:2;24066:3;24007:67;:::i;:::-;24000:74;;24083:93;24172:3;24083:93;:::i;:::-;24201:2;24196:3;24192:12;24185:19;;23844:366;;;:::o;24216:419::-;24382:4;24420:2;24409:9;24405:18;24397:26;;24469:9;24463:4;24459:20;24455:1;24444:9;24440:17;24433:47;24497:131;24623:4;24497:131;:::i;:::-;24489:139;;24216:419;;;:::o;24641:194::-;24681:4;24701:20;24719:1;24701:20;:::i;:::-;24696:25;;24735:20;24753:1;24735:20;:::i;:::-;24730:25;;24779:1;24776;24772:9;24764:17;;24803:1;24797:4;24794:11;24791:37;;;24808:18;;:::i;:::-;24791:37;24641:194;;;;:::o;24841:229::-;24981:34;24977:1;24969:6;24965:14;24958:58;25050:12;25045:2;25037:6;25033:15;25026:37;24841:229;:::o;25076:366::-;25218:3;25239:67;25303:2;25298:3;25239:67;:::i;:::-;25232:74;;25315:93;25404:3;25315:93;:::i;:::-;25433:2;25428:3;25424:12;25417:19;;25076:366;;;:::o;25448:419::-;25614:4;25652:2;25641:9;25637:18;25629:26;;25701:9;25695:4;25691:20;25687:1;25676:9;25672:17;25665:47;25729:131;25855:4;25729:131;:::i;:::-;25721:139;;25448:419;;;:::o;25873:143::-;25930:5;25961:6;25955:13;25946:22;;25977:33;26004:5;25977:33;:::i;:::-;25873:143;;;;:::o;26022:351::-;26092:6;26141:2;26129:9;26120:7;26116:23;26112:32;26109:119;;;26147:79;;:::i;:::-;26109:119;26267:1;26292:64;26348:7;26339:6;26328:9;26324:22;26292:64;:::i;:::-;26282:74;;26238:128;26022:351;;;;:::o;26379:85::-;26424:7;26453:5;26442:16;;26379:85;;;:::o;26470:158::-;26528:9;26561:61;26579:42;26588:32;26614:5;26588:32;:::i;:::-;26579:42;:::i;:::-;26561:61;:::i;:::-;26548:74;;26470:158;;;:::o;26634:147::-;26729:45;26768:5;26729:45;:::i;:::-;26724:3;26717:58;26634:147;;:::o;26787:114::-;26854:6;26888:5;26882:12;26872:22;;26787:114;;;:::o;26907:184::-;27006:11;27040:6;27035:3;27028:19;27080:4;27075:3;27071:14;27056:29;;26907:184;;;;:::o;27097:132::-;27164:4;27187:3;27179:11;;27217:4;27212:3;27208:14;27200:22;;27097:132;;;:::o;27235:108::-;27312:24;27330:5;27312:24;:::i;:::-;27307:3;27300:37;27235:108;;:::o;27349:179::-;27418:10;27439:46;27481:3;27473:6;27439:46;:::i;:::-;27517:4;27512:3;27508:14;27494:28;;27349:179;;;;:::o;27534:113::-;27604:4;27636;27631:3;27627:14;27619:22;;27534:113;;;:::o;27683:732::-;27802:3;27831:54;27879:5;27831:54;:::i;:::-;27901:86;27980:6;27975:3;27901:86;:::i;:::-;27894:93;;28011:56;28061:5;28011:56;:::i;:::-;28090:7;28121:1;28106:284;28131:6;28128:1;28125:13;28106:284;;;28207:6;28201:13;28234:63;28293:3;28278:13;28234:63;:::i;:::-;28227:70;;28320:60;28373:6;28320:60;:::i;:::-;28310:70;;28166:224;28153:1;28150;28146:9;28141:14;;28106:284;;;28110:14;28406:3;28399:10;;27807:608;;;27683:732;;;;:::o;28421:831::-;28684:4;28722:3;28711:9;28707:19;28699:27;;28736:71;28804:1;28793:9;28789:17;28780:6;28736:71;:::i;:::-;28817:80;28893:2;28882:9;28878:18;28869:6;28817:80;:::i;:::-;28944:9;28938:4;28934:20;28929:2;28918:9;28914:18;28907:48;28972:108;29075:4;29066:6;28972:108;:::i;:::-;28964:116;;29090:72;29158:2;29147:9;29143:18;29134:6;29090:72;:::i;:::-;29172:73;29240:3;29229:9;29225:19;29216:6;29172:73;:::i;:::-;28421:831;;;;;;;;:::o;29258:180::-;29306:77;29303:1;29296:88;29403:4;29400:1;29393:15;29427:4;29424:1;29417:15;29444:185;29484:1;29501:20;29519:1;29501:20;:::i;:::-;29496:25;;29535:20;29553:1;29535:20;:::i;:::-;29530:25;;29574:1;29564:35;;29579:18;;:::i;:::-;29564:35;29621:1;29618;29614:9;29609:14;;29444:185;;;;:::o;29635:177::-;29775:29;29771:1;29763:6;29759:14;29752:53;29635:177;:::o;29818:366::-;29960:3;29981:67;30045:2;30040:3;29981:67;:::i;:::-;29974:74;;30057:93;30146:3;30057:93;:::i;:::-;30175:2;30170:3;30166:12;30159:19;;29818:366;;;:::o;30190:419::-;30356:4;30394:2;30383:9;30379:18;30371:26;;30443:9;30437:4;30433:20;30429:1;30418:9;30414:17;30407:47;30471:131;30597:4;30471:131;:::i;:::-;30463:139;;30190:419;;;:::o;30615:410::-;30655:7;30678:20;30696:1;30678:20;:::i;:::-;30673:25;;30712:20;30730:1;30712:20;:::i;:::-;30707:25;;30767:1;30764;30760:9;30789:30;30807:11;30789:30;:::i;:::-;30778:41;;30968:1;30959:7;30955:15;30952:1;30949:22;30929:1;30922:9;30902:83;30879:139;;30998:18;;:::i;:::-;30879:139;30663:362;30615:410;;;;:::o;31031:220::-;31171:34;31167:1;31159:6;31155:14;31148:58;31240:3;31235:2;31227:6;31223:15;31216:28;31031:220;:::o;31257:366::-;31399:3;31420:67;31484:2;31479:3;31420:67;:::i;:::-;31413:74;;31496:93;31585:3;31496:93;:::i;:::-;31614:2;31609:3;31605:12;31598:19;;31257:366;;;:::o;31629:419::-;31795:4;31833:2;31822:9;31818:18;31810:26;;31882:9;31876:4;31872:20;31868:1;31857:9;31853:17;31846:47;31910:131;32036:4;31910:131;:::i;:::-;31902:139;;31629:419;;;:::o
Swarm Source
ipfs://8e261808fc821374eaa99d920c58d699153d6d1dad31ddd37ac403bdddff3565
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.