Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 MM
Holders
76
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
MARKSMAN
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-05 */ //SPDX-License-Identifier: MIT /* Telegram : https://t.me/MarksmanEntry Website : https://marksmanbot.gg/ Twitter : http://x.com/marksmanbots */ pragma solidity ^0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } 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); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface 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 ); } 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; } } contract MARKSMAN is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "MARKSMAN"; string private constant _symbol = "MM"; uint8 private constant _decimals = 18; 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**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; //Buy Fee uint256 private _feeOnBuy = 0; uint256 private _taxOnBuy = 20; //Sell Fee uint256 private _feeOnSell = 0; uint256 private _taxOnSell = 25; uint256 public totalFees; //Original Fee uint256 private _redisFee = _feeOnSell; uint256 private _taxFee = _taxOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => uint256) private cooldown; address payable private _marketingWalletAddress = payable(0x7C0E36690c894Df728a0989c9204Ce395bEFEB1b ); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 10000000 * 10**18; uint256 public _maxWalletSize = 10000000 * 10**18; uint256 public _swapTokensAtAmount = 10000000 * 10**18; 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[_marketingWalletAddress] = 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"); 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]) { if(amount >= _swapTokensAtAmount) { swapTokensForEth(_swapTokensAtAmount); } else { swapTokensForEth(amount); } } } 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 = _feeOnBuy; _taxFee = _taxOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _feeOnSell; _taxFee = _taxOnSell; } } _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(_marketingWalletAddress), block.timestamp ); } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } 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 setNewTax(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _feeOnBuy = redisFeeOnBuy; _feeOnSell = redisFeeOnSell; _taxOnBuy = taxFeeOnBuy; _taxOnSell = taxFeeOnSell; totalFees = _feeOnBuy + _feeOnSell + _taxOnBuy + _taxOnSell; require(totalFees <= 50, "Must keep fees at 50% or less"); } //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 max buy amount function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } //Set max wallet amount 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":[],"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":[],"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":"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":"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":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setNewTax","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":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"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
60806040526b033b2e3c9fd0803ce80000005f196200001f91906200062e565b5f196200002d919062000692565b6006555f60085560146009555f600a556019600b55600a54600d55600b54600e55600d54600f55600e54601055737c0e36690c894df728a0989c9204ce395befeb1b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff0219169083151502179055506a084595161401484a0000006015556a084595161401484a0000006016556a084595161401484a0000006017553480156200011c575f80fd5b505f6200012e620005ca60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620001e0620005ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e5919062000731565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000371919062000731565b6040518363ffffffff1660e01b81526004016200039092919062000772565b6020604051808303815f875af1158015620003ad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d3919062000731565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f62000427620005d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000551620005ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce8000000604051620005bb9190620007ae565b60405180910390a350620007c9565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200063a82620005f8565b91506200064783620005f8565b9250826200065a576200065962000601565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200069e82620005f8565b9150620006ab83620005f8565b9250828203905081811115620006c657620006c562000665565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620006fb82620006d0565b9050919050565b6200070d81620006ef565b811462000718575f80fd5b50565b5f815190506200072b8162000702565b92915050565b5f60208284031215620007495762000748620006cc565b5b5f62000758848285016200071b565b91505092915050565b6200076c81620006ef565b82525050565b5f604082019050620007875f83018562000761565b62000796602083018462000761565b9392505050565b620007a881620005f8565b82525050565b5f602082019050620007c35f8301846200079d565b92915050565b61326280620007d75f395ff3fe60806040526004361061014e575f3560e01c806374010ece116100b557806398a5c3151161006e57806398a5c31514610469578063a9059cbb14610491578063c492f046146104cd578063db1abaea146104f5578063dd62ed3e1461051d578063ea1644d51461055957610155565b806374010ece146103715780637d1db4a5146103995780638da5cb5b146103c35780638f70ccf7146103ed5780638f9a55c01461041557806395d89b411461043f57610155565b80632fd689e3116101075780632fd689e314610279578063313ce567146102a357806349bd5a5e146102cd5780636d8aa8f8146102f757806370a082311461031f578063715018a61461035b57610155565b806306fdde0314610159578063095ea7b31461018357806313114a9d146101bf5780631694505e146101e957806318160ddd1461021357806323b872dd1461023d57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610581565b60405161017a9190612394565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612449565b6105be565b6040516101b691906124a1565b60405180910390f35b3480156101ca575f80fd5b506101d36105db565b6040516101e091906124c9565b60405180910390f35b3480156101f4575f80fd5b506101fd6105e1565b60405161020a919061253d565b60405180910390f35b34801561021e575f80fd5b50610227610606565b60405161023491906124c9565b60405180910390f35b348015610248575f80fd5b50610263600480360381019061025e9190612556565b610619565b60405161027091906124a1565b60405180910390f35b348015610284575f80fd5b5061028d6106ed565b60405161029a91906124c9565b60405180910390f35b3480156102ae575f80fd5b506102b76106f3565b6040516102c491906125c1565b60405180910390f35b3480156102d8575f80fd5b506102e16106fb565b6040516102ee91906125e9565b60405180910390f35b348015610302575f80fd5b5061031d6004803603810190610318919061262c565b610720565b005b34801561032a575f80fd5b5061034560048036038101906103409190612657565b6107d1565b60405161035291906124c9565b60405180910390f35b348015610366575f80fd5b5061036f61081f565b005b34801561037c575f80fd5b5061039760048036038101906103929190612682565b61096d565b005b3480156103a4575f80fd5b506103ad610a0b565b6040516103ba91906124c9565b60405180910390f35b3480156103ce575f80fd5b506103d7610a11565b6040516103e491906125e9565b60405180910390f35b3480156103f8575f80fd5b50610413600480360381019061040e919061262c565b610a38565b005b348015610420575f80fd5b50610429610ae8565b60405161043691906124c9565b60405180910390f35b34801561044a575f80fd5b50610453610aee565b6040516104609190612394565b60405180910390f35b348015610474575f80fd5b5061048f600480360381019061048a9190612682565b610b2b565b005b34801561049c575f80fd5b506104b760048036038101906104b29190612449565b610bc9565b6040516104c491906124a1565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee919061270e565b610be6565b005b348015610500575f80fd5b5061051b6004803603810190610516919061276b565b610d1b565b005b348015610528575f80fd5b50610543600480360381019061053e91906127cf565b610e47565b60405161055091906124c9565b60405180910390f35b348015610564575f80fd5b5061057f600480360381019061057a9190612682565b610ec9565b005b60606040518060400160405280600881526020017f4d41524b534d414e000000000000000000000000000000000000000000000000815250905090565b5f6105d16105ca610f67565b8484610f6e565b6001905092915050565b600c5481565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6b033b2e3c9fd0803ce8000000905090565b5f610625848484611131565b6106e284610631610f67565b6106dd856040518060600160405280602881526020016132056028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610694610f67565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118b79092919063ffffffff16565b610f6e565b600190509392505050565b60175481565b5f6012905090565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610728610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90612857565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b5f61081860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611919565b9050919050565b610827610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90612857565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610975610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890612857565b60405180910390fd5b8060158190555050565b60155481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a40610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac390612857565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600281526020017f4d4d000000000000000000000000000000000000000000000000000000000000815250905090565b610b33610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb690612857565b60405180910390fd5b8060178190555050565b5f610bdc610bd5610f67565b8484611131565b6001905092915050565b610bee610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7190612857565b60405180910390fd5b5f5b83839050811015610d15578160055f868685818110610c9e57610c9d612875565b5b9050602002016020810190610cb39190612657565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610d0d906128cf565b915050610c7c565b50505050565b610d23610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da690612857565b60405180910390fd5b8360088190555082600a819055508160098190555080600b81905550600b54600954600a54600854610de19190612916565b610deb9190612916565b610df59190612916565b600c819055506032600c541115610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890612993565b60405180910390fd5b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ed1610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490612857565b60405180910390fd5b8060168190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd390612a21565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104190612aaf565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161112491906124c9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690612b3d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490612bcb565b60405180910390fd5b5f811161124f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124690612c59565b60405180910390fd5b611257610a11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112c55750611295610a11565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115c45760148054906101000a900460ff16611352576112e4610a11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890612ce7565b60405180910390fd5b5b601554811115611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e90612d4f565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461144357601654816113f8846107d1565b6114029190612916565b10611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990612ddd565b60405180910390fd5b5b5f61144d306107d1565b90505f601754821015905060155482106114675760155491505b8080156114815750601460159054906101000a900460ff16155b80156114da575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156114f25750601460169054906101000a900460ff165b8015611545575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611598575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156115c15760175483106115b6576115b1601754611985565b6115c0565b6115bf83611985565b5b5b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611664575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611715575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611714575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611722575f90506118a5565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117cb575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117e357600854600d81905550600954600e819055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561188c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118a457600a54600d81905550600b54600e819055505b5b6118b184848484611c11565b50505050565b5f8383111582906118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f59190612394565b60405180910390fd5b505f838561190c9190612dfb565b9050809150509392505050565b5f60065482111561195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612e9e565b60405180910390fd5b5f611968611c3e565b905061197d8184611c6790919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156119bc576119bb612ebc565b5b6040519080825280602002602001820160405280156119ea5781602001602082028036833780820191505090505b50905030815f81518110611a0157611a00612875565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac99190612efd565b81600181518110611add57611adc612875565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b433060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f6e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611bc6959493929190613018565b5f604051808303815f87803b158015611bdd575f80fd5b505af1158015611bef573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b80611c1f57611c1e611cb0565b5b611c2a848484611ce9565b80611c3857611c37611ea9565b5b50505050565b5f805f611c49611ebd565b91509150611c608183611c6790919063ffffffff16565b9250505090565b5f611ca883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f25565b905092915050565b5f600d54148015611cc257505f600e54145b611ce757600d54600f81905550600e546010819055505f600d819055505f600e819055505b565b5f805f805f80611cf887611f86565b955095509550955095509550611d548660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe690919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611de58560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461202f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e2f8161208c565b611e398483612143565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e9691906124c9565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b5f805f60065490505f6b033b2e3c9fd0803ce80000009050611ef66b033b2e3c9fd0803ce8000000600654611c6790919063ffffffff16565b821015611f18576006546b033b2e3c9fd0803ce8000000935093505050611f21565b81819350935050505b9091565b5f8083118290611f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f629190612394565b60405180910390fd5b505f8385611f79919061309d565b9050809150509392505050565b5f805f805f805f805f611f9e8a600d54600e5461217d565b9250925092505f611fad611c3e565b90505f805f611fbe8e87878761220f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61202783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118b7565b905092915050565b5f80828461203d9190612916565b905083811015612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990613117565b60405180910390fd5b8091505092915050565b5f612095611c3e565b90505f6120ab828461229390919063ffffffff16565b90506120fd8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461202f90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61215882600654611fe690919063ffffffff16565b6006819055506121738160075461202f90919063ffffffff16565b6007819055505050565b5f805f806121a76064612199888a61229390919063ffffffff16565b611c6790919063ffffffff16565b90505f6121d060646121c2888b61229390919063ffffffff16565b611c6790919063ffffffff16565b90505f6121f8826121ea858c611fe690919063ffffffff16565b611fe690919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612226858961229390919063ffffffff16565b90505f61223c868961229390919063ffffffff16565b90505f612252878961229390919063ffffffff16565b90505f61227a8261226c8587611fe690919063ffffffff16565b611fe690919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036122a3575f9050612304565b5f82846122b09190613135565b90508284826122bf919061309d565b146122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f6906131e6565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612341578082015181840152602081019050612326565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123668261230a565b6123708185612314565b9350612380818560208601612324565b6123898161234c565b840191505092915050565b5f6020820190508181035f8301526123ac818461235c565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123e5826123bc565b9050919050565b6123f5816123db565b81146123ff575f80fd5b50565b5f81359050612410816123ec565b92915050565b5f819050919050565b61242881612416565b8114612432575f80fd5b50565b5f813590506124438161241f565b92915050565b5f806040838503121561245f5761245e6123b4565b5b5f61246c85828601612402565b925050602061247d85828601612435565b9150509250929050565b5f8115159050919050565b61249b81612487565b82525050565b5f6020820190506124b45f830184612492565b92915050565b6124c381612416565b82525050565b5f6020820190506124dc5f8301846124ba565b92915050565b5f819050919050565b5f6125056125006124fb846123bc565b6124e2565b6123bc565b9050919050565b5f612516826124eb565b9050919050565b5f6125278261250c565b9050919050565b6125378161251d565b82525050565b5f6020820190506125505f83018461252e565b92915050565b5f805f6060848603121561256d5761256c6123b4565b5b5f61257a86828701612402565b935050602061258b86828701612402565b925050604061259c86828701612435565b9150509250925092565b5f60ff82169050919050565b6125bb816125a6565b82525050565b5f6020820190506125d45f8301846125b2565b92915050565b6125e3816123db565b82525050565b5f6020820190506125fc5f8301846125da565b92915050565b61260b81612487565b8114612615575f80fd5b50565b5f8135905061262681612602565b92915050565b5f60208284031215612641576126406123b4565b5b5f61264e84828501612618565b91505092915050565b5f6020828403121561266c5761266b6123b4565b5b5f61267984828501612402565b91505092915050565b5f60208284031215612697576126966123b4565b5b5f6126a484828501612435565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126126ce576126cd6126ad565b5b8235905067ffffffffffffffff8111156126eb576126ea6126b1565b5b602083019150836020820283011115612707576127066126b5565b5b9250929050565b5f805f60408486031215612725576127246123b4565b5b5f84013567ffffffffffffffff811115612742576127416123b8565b5b61274e868287016126b9565b9350935050602061276186828701612618565b9150509250925092565b5f805f8060808587031215612783576127826123b4565b5b5f61279087828801612435565b94505060206127a187828801612435565b93505060406127b287828801612435565b92505060606127c387828801612435565b91505092959194509250565b5f80604083850312156127e5576127e46123b4565b5b5f6127f285828601612402565b925050602061280385828601612402565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612841602083612314565b915061284c8261280d565b602082019050919050565b5f6020820190508181035f83015261286e81612835565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128d982612416565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361290b5761290a6128a2565b5b600182019050919050565b5f61292082612416565b915061292b83612416565b9250828201905080821115612943576129426128a2565b5b92915050565b7f4d757374206b656570206665657320617420353025206f72206c6573730000005f82015250565b5f61297d601d83612314565b915061298882612949565b602082019050919050565b5f6020820190508181035f8301526129aa81612971565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a0b602483612314565b9150612a16826129b1565b604082019050919050565b5f6020820190508181035f830152612a38816129ff565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a99602283612314565b9150612aa482612a3f565b604082019050919050565b5f6020820190508181035f830152612ac681612a8d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612b27602583612314565b9150612b3282612acd565b604082019050919050565b5f6020820190508181035f830152612b5481612b1b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612bb5602383612314565b9150612bc082612b5b565b604082019050919050565b5f6020820190508181035f830152612be281612ba9565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c43602983612314565b9150612c4e82612be9565b604082019050919050565b5f6020820190508181035f830152612c7081612c37565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612cd1603f83612314565b9150612cdc82612c77565b604082019050919050565b5f6020820190508181035f830152612cfe81612cc5565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612d39601c83612314565b9150612d4482612d05565b602082019050919050565b5f6020820190508181035f830152612d6681612d2d565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612dc7602383612314565b9150612dd282612d6d565b604082019050919050565b5f6020820190508181035f830152612df481612dbb565b9050919050565b5f612e0582612416565b9150612e1083612416565b9250828203905081811115612e2857612e276128a2565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f612e88602a83612314565b9150612e9382612e2e565b604082019050919050565b5f6020820190508181035f830152612eb581612e7c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050612ef7816123ec565b92915050565b5f60208284031215612f1257612f116123b4565b5b5f612f1f84828501612ee9565b91505092915050565b5f819050919050565b5f612f4b612f46612f4184612f28565b6124e2565b612416565b9050919050565b612f5b81612f31565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612f93816123db565b82525050565b5f612fa48383612f8a565b60208301905092915050565b5f602082019050919050565b5f612fc682612f61565b612fd08185612f6b565b9350612fdb83612f7b565b805f5b8381101561300b578151612ff28882612f99565b9750612ffd83612fb0565b925050600181019050612fde565b5085935050505092915050565b5f60a08201905061302b5f8301886124ba565b6130386020830187612f52565b818103604083015261304a8186612fbc565b905061305960608301856125da565b61306660808301846124ba565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130a782612416565b91506130b283612416565b9250826130c2576130c1613070565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613101601b83612314565b915061310c826130cd565b602082019050919050565b5f6020820190508181035f83015261312e816130f5565b9050919050565b5f61313f82612416565b915061314a83612416565b925082820261315881612416565b9150828204841483151761316f5761316e6128a2565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131d0602183612314565b91506131db82613176565b604082019050919050565b5f6020820190508181035f8301526131fd816131c4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cabd30680940ded156f2d098992eca62742e7ad4f65f39fa0e37f9ae137c7f8964736f6c63430008140033
Deployed Bytecode
0x60806040526004361061014e575f3560e01c806374010ece116100b557806398a5c3151161006e57806398a5c31514610469578063a9059cbb14610491578063c492f046146104cd578063db1abaea146104f5578063dd62ed3e1461051d578063ea1644d51461055957610155565b806374010ece146103715780637d1db4a5146103995780638da5cb5b146103c35780638f70ccf7146103ed5780638f9a55c01461041557806395d89b411461043f57610155565b80632fd689e3116101075780632fd689e314610279578063313ce567146102a357806349bd5a5e146102cd5780636d8aa8f8146102f757806370a082311461031f578063715018a61461035b57610155565b806306fdde0314610159578063095ea7b31461018357806313114a9d146101bf5780631694505e146101e957806318160ddd1461021357806323b872dd1461023d57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610581565b60405161017a9190612394565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612449565b6105be565b6040516101b691906124a1565b60405180910390f35b3480156101ca575f80fd5b506101d36105db565b6040516101e091906124c9565b60405180910390f35b3480156101f4575f80fd5b506101fd6105e1565b60405161020a919061253d565b60405180910390f35b34801561021e575f80fd5b50610227610606565b60405161023491906124c9565b60405180910390f35b348015610248575f80fd5b50610263600480360381019061025e9190612556565b610619565b60405161027091906124a1565b60405180910390f35b348015610284575f80fd5b5061028d6106ed565b60405161029a91906124c9565b60405180910390f35b3480156102ae575f80fd5b506102b76106f3565b6040516102c491906125c1565b60405180910390f35b3480156102d8575f80fd5b506102e16106fb565b6040516102ee91906125e9565b60405180910390f35b348015610302575f80fd5b5061031d6004803603810190610318919061262c565b610720565b005b34801561032a575f80fd5b5061034560048036038101906103409190612657565b6107d1565b60405161035291906124c9565b60405180910390f35b348015610366575f80fd5b5061036f61081f565b005b34801561037c575f80fd5b5061039760048036038101906103929190612682565b61096d565b005b3480156103a4575f80fd5b506103ad610a0b565b6040516103ba91906124c9565b60405180910390f35b3480156103ce575f80fd5b506103d7610a11565b6040516103e491906125e9565b60405180910390f35b3480156103f8575f80fd5b50610413600480360381019061040e919061262c565b610a38565b005b348015610420575f80fd5b50610429610ae8565b60405161043691906124c9565b60405180910390f35b34801561044a575f80fd5b50610453610aee565b6040516104609190612394565b60405180910390f35b348015610474575f80fd5b5061048f600480360381019061048a9190612682565b610b2b565b005b34801561049c575f80fd5b506104b760048036038101906104b29190612449565b610bc9565b6040516104c491906124a1565b60405180910390f35b3480156104d8575f80fd5b506104f360048036038101906104ee919061270e565b610be6565b005b348015610500575f80fd5b5061051b6004803603810190610516919061276b565b610d1b565b005b348015610528575f80fd5b50610543600480360381019061053e91906127cf565b610e47565b60405161055091906124c9565b60405180910390f35b348015610564575f80fd5b5061057f600480360381019061057a9190612682565b610ec9565b005b60606040518060400160405280600881526020017f4d41524b534d414e000000000000000000000000000000000000000000000000815250905090565b5f6105d16105ca610f67565b8484610f6e565b6001905092915050565b600c5481565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6b033b2e3c9fd0803ce8000000905090565b5f610625848484611131565b6106e284610631610f67565b6106dd856040518060600160405280602881526020016132056028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610694610f67565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118b79092919063ffffffff16565b610f6e565b600190509392505050565b60175481565b5f6012905090565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610728610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90612857565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b5f61081860025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611919565b9050919050565b610827610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90612857565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610975610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f890612857565b60405180910390fd5b8060158190555050565b60155481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a40610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac390612857565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600281526020017f4d4d000000000000000000000000000000000000000000000000000000000000815250905090565b610b33610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb690612857565b60405180910390fd5b8060178190555050565b5f610bdc610bd5610f67565b8484611131565b6001905092915050565b610bee610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7190612857565b60405180910390fd5b5f5b83839050811015610d15578160055f868685818110610c9e57610c9d612875565b5b9050602002016020810190610cb39190612657565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610d0d906128cf565b915050610c7c565b50505050565b610d23610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da690612857565b60405180910390fd5b8360088190555082600a819055508160098190555080600b81905550600b54600954600a54600854610de19190612916565b610deb9190612916565b610df59190612916565b600c819055506032600c541115610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890612993565b60405180910390fd5b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ed1610f67565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490612857565b60405180910390fd5b8060168190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd390612a21565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104190612aaf565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161112491906124c9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690612b3d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490612bcb565b60405180910390fd5b5f811161124f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124690612c59565b60405180910390fd5b611257610a11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112c55750611295610a11565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115c45760148054906101000a900460ff16611352576112e4610a11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890612ce7565b60405180910390fd5b5b601554811115611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e90612d4f565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461144357601654816113f8846107d1565b6114029190612916565b10611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990612ddd565b60405180910390fd5b5b5f61144d306107d1565b90505f601754821015905060155482106114675760155491505b8080156114815750601460159054906101000a900460ff16155b80156114da575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156114f25750601460169054906101000a900460ff165b8015611545575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611598575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156115c15760175483106115b6576115b1601754611985565b6115c0565b6115bf83611985565b5b5b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611664575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611715575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611714575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611722575f90506118a5565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117cb575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117e357600854600d81905550600954600e819055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561188c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118a457600a54600d81905550600b54600e819055505b5b6118b184848484611c11565b50505050565b5f8383111582906118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f59190612394565b60405180910390fd5b505f838561190c9190612dfb565b9050809150509392505050565b5f60065482111561195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612e9e565b60405180910390fd5b5f611968611c3e565b905061197d8184611c6790919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156119bc576119bb612ebc565b5b6040519080825280602002602001820160405280156119ea5781602001602082028036833780820191505090505b50905030815f81518110611a0157611a00612875565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac99190612efd565b81600181518110611add57611adc612875565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b433060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f6e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611bc6959493929190613018565b5f604051808303815f87803b158015611bdd575f80fd5b505af1158015611bef573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b80611c1f57611c1e611cb0565b5b611c2a848484611ce9565b80611c3857611c37611ea9565b5b50505050565b5f805f611c49611ebd565b91509150611c608183611c6790919063ffffffff16565b9250505090565b5f611ca883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f25565b905092915050565b5f600d54148015611cc257505f600e54145b611ce757600d54600f81905550600e546010819055505f600d819055505f600e819055505b565b5f805f805f80611cf887611f86565b955095509550955095509550611d548660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe690919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611de58560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461202f90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e2f8161208c565b611e398483612143565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e9691906124c9565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b5f805f60065490505f6b033b2e3c9fd0803ce80000009050611ef66b033b2e3c9fd0803ce8000000600654611c6790919063ffffffff16565b821015611f18576006546b033b2e3c9fd0803ce8000000935093505050611f21565b81819350935050505b9091565b5f8083118290611f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f629190612394565b60405180910390fd5b505f8385611f79919061309d565b9050809150509392505050565b5f805f805f805f805f611f9e8a600d54600e5461217d565b9250925092505f611fad611c3e565b90505f805f611fbe8e87878761220f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61202783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118b7565b905092915050565b5f80828461203d9190612916565b905083811015612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990613117565b60405180910390fd5b8091505092915050565b5f612095611c3e565b90505f6120ab828461229390919063ffffffff16565b90506120fd8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461202f90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61215882600654611fe690919063ffffffff16565b6006819055506121738160075461202f90919063ffffffff16565b6007819055505050565b5f805f806121a76064612199888a61229390919063ffffffff16565b611c6790919063ffffffff16565b90505f6121d060646121c2888b61229390919063ffffffff16565b611c6790919063ffffffff16565b90505f6121f8826121ea858c611fe690919063ffffffff16565b611fe690919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612226858961229390919063ffffffff16565b90505f61223c868961229390919063ffffffff16565b90505f612252878961229390919063ffffffff16565b90505f61227a8261226c8587611fe690919063ffffffff16565b611fe690919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036122a3575f9050612304565b5f82846122b09190613135565b90508284826122bf919061309d565b146122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f6906131e6565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612341578082015181840152602081019050612326565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123668261230a565b6123708185612314565b9350612380818560208601612324565b6123898161234c565b840191505092915050565b5f6020820190508181035f8301526123ac818461235c565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123e5826123bc565b9050919050565b6123f5816123db565b81146123ff575f80fd5b50565b5f81359050612410816123ec565b92915050565b5f819050919050565b61242881612416565b8114612432575f80fd5b50565b5f813590506124438161241f565b92915050565b5f806040838503121561245f5761245e6123b4565b5b5f61246c85828601612402565b925050602061247d85828601612435565b9150509250929050565b5f8115159050919050565b61249b81612487565b82525050565b5f6020820190506124b45f830184612492565b92915050565b6124c381612416565b82525050565b5f6020820190506124dc5f8301846124ba565b92915050565b5f819050919050565b5f6125056125006124fb846123bc565b6124e2565b6123bc565b9050919050565b5f612516826124eb565b9050919050565b5f6125278261250c565b9050919050565b6125378161251d565b82525050565b5f6020820190506125505f83018461252e565b92915050565b5f805f6060848603121561256d5761256c6123b4565b5b5f61257a86828701612402565b935050602061258b86828701612402565b925050604061259c86828701612435565b9150509250925092565b5f60ff82169050919050565b6125bb816125a6565b82525050565b5f6020820190506125d45f8301846125b2565b92915050565b6125e3816123db565b82525050565b5f6020820190506125fc5f8301846125da565b92915050565b61260b81612487565b8114612615575f80fd5b50565b5f8135905061262681612602565b92915050565b5f60208284031215612641576126406123b4565b5b5f61264e84828501612618565b91505092915050565b5f6020828403121561266c5761266b6123b4565b5b5f61267984828501612402565b91505092915050565b5f60208284031215612697576126966123b4565b5b5f6126a484828501612435565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126126ce576126cd6126ad565b5b8235905067ffffffffffffffff8111156126eb576126ea6126b1565b5b602083019150836020820283011115612707576127066126b5565b5b9250929050565b5f805f60408486031215612725576127246123b4565b5b5f84013567ffffffffffffffff811115612742576127416123b8565b5b61274e868287016126b9565b9350935050602061276186828701612618565b9150509250925092565b5f805f8060808587031215612783576127826123b4565b5b5f61279087828801612435565b94505060206127a187828801612435565b93505060406127b287828801612435565b92505060606127c387828801612435565b91505092959194509250565b5f80604083850312156127e5576127e46123b4565b5b5f6127f285828601612402565b925050602061280385828601612402565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612841602083612314565b915061284c8261280d565b602082019050919050565b5f6020820190508181035f83015261286e81612835565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128d982612416565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361290b5761290a6128a2565b5b600182019050919050565b5f61292082612416565b915061292b83612416565b9250828201905080821115612943576129426128a2565b5b92915050565b7f4d757374206b656570206665657320617420353025206f72206c6573730000005f82015250565b5f61297d601d83612314565b915061298882612949565b602082019050919050565b5f6020820190508181035f8301526129aa81612971565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a0b602483612314565b9150612a16826129b1565b604082019050919050565b5f6020820190508181035f830152612a38816129ff565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a99602283612314565b9150612aa482612a3f565b604082019050919050565b5f6020820190508181035f830152612ac681612a8d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612b27602583612314565b9150612b3282612acd565b604082019050919050565b5f6020820190508181035f830152612b5481612b1b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612bb5602383612314565b9150612bc082612b5b565b604082019050919050565b5f6020820190508181035f830152612be281612ba9565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c43602983612314565b9150612c4e82612be9565b604082019050919050565b5f6020820190508181035f830152612c7081612c37565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612cd1603f83612314565b9150612cdc82612c77565b604082019050919050565b5f6020820190508181035f830152612cfe81612cc5565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612d39601c83612314565b9150612d4482612d05565b602082019050919050565b5f6020820190508181035f830152612d6681612d2d565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612dc7602383612314565b9150612dd282612d6d565b604082019050919050565b5f6020820190508181035f830152612df481612dbb565b9050919050565b5f612e0582612416565b9150612e1083612416565b9250828203905081811115612e2857612e276128a2565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f612e88602a83612314565b9150612e9382612e2e565b604082019050919050565b5f6020820190508181035f830152612eb581612e7c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050612ef7816123ec565b92915050565b5f60208284031215612f1257612f116123b4565b5b5f612f1f84828501612ee9565b91505092915050565b5f819050919050565b5f612f4b612f46612f4184612f28565b6124e2565b612416565b9050919050565b612f5b81612f31565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612f93816123db565b82525050565b5f612fa48383612f8a565b60208301905092915050565b5f602082019050919050565b5f612fc682612f61565b612fd08185612f6b565b9350612fdb83612f7b565b805f5b8381101561300b578151612ff28882612f99565b9750612ffd83612fb0565b925050600181019050612fde565b5085935050505092915050565b5f60a08201905061302b5f8301886124ba565b6130386020830187612f52565b818103604083015261304a8186612fbc565b905061305960608301856125da565b61306660808301846124ba565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130a782612416565b91506130b283612416565b9250826130c2576130c1613070565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613101601b83612314565b915061310c826130cd565b602082019050919050565b5f6020820190508181035f83015261312e816130f5565b9050919050565b5f61313f82612416565b915061314a83612416565b925082820261315881612416565b9150828204841483151761316f5761316e6128a2565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131d0602183612314565b91506131db82613176565b604082019050919050565b5f6020820190508181035f8301526131fd816131c4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cabd30680940ded156f2d098992eca62742e7ad4f65f39fa0e37f9ae137c7f8964736f6c63430008140033
Deployed Bytecode Sourcemap
3970:12609:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6367:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7299:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4836:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5250:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6647:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7501:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5553:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6555:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5298:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15931:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6751:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;926:148;;;;;;;;;;;;;:::i;:::-;;16071:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5442:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;710:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11737:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5496:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6459:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15739:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6898:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16342:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15270:416;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7106:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16218:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6367:83;6404:13;6437:5;;;;;;;;;;;;;;;;;6430:12;;6367:83;:::o;7299:193::-;7401:4;7423:39;7432:12;:10;:12::i;:::-;7446:7;7455:6;7423:8;:39::i;:::-;7480:4;7473:11;;7299:193;;;;:::o;4836:24::-;;;;:::o;5250:41::-;;;;;;;;;;;;;:::o;6647:95::-;6700:7;4524:19;6720:14;;6647:95;:::o;7501:446::-;7633:4;7650:36;7660:6;7668:9;7679:6;7650:9;:36::i;:::-;7697:220;7720:6;7741:12;:10;:12::i;:::-;7768:138;7824:6;7768:138;;;;;;;;;;;;;;;;;:11;:19;7780:6;7768:19;;;;;;;;;;;;;;;:33;7788:12;:10;:12::i;:::-;7768:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7697:8;:220::i;:::-;7935:4;7928:11;;7501:446;;;;;:::o;5553:54::-;;;;:::o;6555:83::-;6596:5;4193:2;6614:16;;6555:83;:::o;5298:28::-;;;;;;;;;;;;;:::o;15931:101::-;848:12;:10;:12::i;:::-;838:22;;:6;;;;;;;;;;:22;;;830:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16012:12:::1;15998:11;;:26;;;;;;;;;;;;;;;;;;15931:101:::0;:::o;6751:138::-;6817:7;6844:37;6864:7;:16;6872:7;6864:16;;;;;;;;;;;;;;;;6844:19;:37::i;:::-;6837:44;;6751:138;;;:::o;926:148::-;848:12;:10;:12::i;:::-;838:22;;:6;;;;;;;;;;:22;;;830:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1033:1:::1;996:40;;1017:6;::::0;::::1;;;;;;;;996:40;;;;;;;;;;;;1064:1;1047:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;926:148::o:0;16071:108::-;848:12;:10;:12::i;:::-;838:22;;:6;;;;;;;;;;:22;;;830:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16160:11:::1;16145:12;:26;;;;16071:108:::0;:::o;5442:47::-;;;;:::o;710:79::-;748:7;775:6;;;;;;;;;;;768:13;;710:79;:::o;11737:101::-;848:12;:10;:12::i;:::-;838:22;;:6;;;;;;;;;;:22;;;830:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11818:12:::1;11804:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;11737:101:::0;:::o;5496:49::-;;;;:::o;6459:87::-;6498:13;6531:7;;;;;;;;;;;;;;;;;6524:14;;6459:87;:::o;15739:139::-;848:12;:10;:12::i;:::-;838:22;;:6;;;;;;;;;;:22;;;830:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15852:18:::1;15830:19;:40;;;;15739:139:::0;:::o;6898:199::-;7003:4;7025:42;7035:12;:10;:12::i;:::-;7049:9;7060:6;7025:9;:42::i;:::-;7085:4;7078:11;;6898:199;;;;:::o;16342:234::-;848:12;:10;:12::i;:::-;838:22;;:6;;;;;;;;;;:22;;;830:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16459:9:::1;16455:114;16478:8;;:15;;16474:1;:19;16455:114;;;16549:8;16515:18;:31;16534:8;;16543:1;16534:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16515:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16495:3;;;;;:::i;:::-;;;;16455:114;;;;16342:234:::0;;;:::o;15270:416::-;848:12;:10;:12::i;:::-;838:22;;:6;;;;;;;;;;:22;;;830:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15419:13:::1;15407:9;:25;;;;15456:14;15443:10;:27;;;;15493:11;15481:9;:23;;;;15528:12;15515:10;:25;;;;15600:10;;15588:9;;15575:10;;15563:9;;:22;;;;:::i;:::-;:34;;;;:::i;:::-;:47;;;;:::i;:::-;15551:9;:59;;;;15642:2;15629:9;;:15;;15621:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;15270:416:::0;;;;:::o;7106:184::-;7223:7;7255:11;:18;7267:5;7255:18;;;;;;;;;;;;;;;:27;7274:7;7255:27;;;;;;;;;;;;;;;;7248:34;;7106:184;;;;:::o;16218:115::-;848:12;:10;:12::i;:::-;838:22;;:6;;;;;;;;;;:22;;;830:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16312:13:::1;16295:14;:30;;;;16218:115:::0;:::o;223:98::-;276:7;303:10;296:17;;223:98;:::o;8644:369::-;8788:1;8771:19;;:5;:19;;;8763:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8869:1;8850:21;;:7;:21;;;8842:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8951:6;8921:11;:18;8933:5;8921:18;;;;;;;;;;;;;;;:27;8940:7;8921:27;;;;;;;;;;;;;;;:36;;;;8989:7;8973:32;;8982:5;8973:32;;;8998:6;8973:32;;;;;;:::i;:::-;;;;;;;;8644:369;;;:::o;9022:2195::-;9160:1;9144:18;;:4;:18;;;9136:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9237:1;9223:16;;:2;:16;;;9215:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9307:1;9298:6;:10;9290:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9380:7;:5;:7::i;:::-;9372:15;;:4;:15;;;;:32;;;;;9397:7;:5;:7::i;:::-;9391:13;;:2;:13;;;;9372:32;9368:1133;;;9462:11;;;;;;;;;;9457:144;;9510:7;:5;:7::i;:::-;9502:15;;:4;:15;;;9494:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9457:144;9636:12;;9626:6;:22;;9618:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9708:13;;;;;;;;;;;9702:19;;:2;:19;;;9699:146;;9775:14;;9766:6;9750:13;9760:2;9750:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9742:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9699:146;9862:28;9893:24;9911:4;9893:9;:24::i;:::-;9862:55;;9932:12;9971:19;;9947:20;:43;;9932:58;;10035:12;;10011:20;:36;10008:124;;10104:12;;10081:35;;10008:124;10153:7;:18;;;;;10165:6;;;;;;;;;;;10164:7;10153:18;:43;;;;;10183:13;;;;;;;;;;;10175:21;;:4;:21;;;;10153:43;:58;;;;;10200:11;;;;;;;;;;;10153:58;:87;;;;;10216:18;:24;10235:4;10216:24;;;;;;;;;;;;;;;;;;;;;;;;;10215:25;10153:87;:114;;;;;10245:18;:22;10264:2;10245:22;;;;;;;;;;;;;;;;;;;;;;;;;10244:23;10153:114;10149:341;;;10301:19;;10291:6;:29;10288:187;;10345:37;10362:19;;10345:16;:37::i;:::-;10288:187;;;10431:24;10448:6;10431:16;:24::i;:::-;10288:187;10149:341;9406:1095;;9368:1133;10514:12;10529:4;10514:19;;10579:18;:24;10598:4;10579:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10607:18;:22;10626:2;10607:22;;;;;;;;;;;;;;;;;;;;;;;;;10579:50;10578:102;;;;10643:13;;;;;;;;;;;10635:21;;:4;:21;;;;:44;;;;;10666:13;;;;;;;;;;;10660:19;;:2;:19;;;;10635:44;10578:102;10574:581;;;10707:5;10697:15;;10574:581;;;10791:13;;;;;;;;;;;10783:21;;:4;:21;;;:55;;;;;10822:15;;;;;;;;;;;10808:30;;:2;:30;;;;10783:55;10780:154;;;10871:9;;10859;:21;;;;10909:9;;10899:7;:19;;;;10780:154;10994:13;;;;;;;;;;;10988:19;;:2;:19;;;:55;;;;;11027:15;;;;;;;;;;;11011:32;;:4;:32;;;;10988:55;10984:157;;;11076:10;;11064:9;:22;;;;11115:10;;11105:7;:20;;;;10984:157;10574:581;11168:41;11183:4;11189:2;11193:6;11201:7;11168:14;:41::i;:::-;9125:2092;9022:2195;;;:::o;3104:224::-;3224:7;3257:1;3252;:6;;3260:12;3244:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3284:9;3300:1;3296;:5;;;;:::i;:::-;3284:17;;3319:1;3312:8;;;3104:224;;;;;:::o;7956:323::-;8051:7;8109;;8098;:18;;8076:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8197:19;8219:10;:8;:10::i;:::-;8197:32;;8247:24;8259:11;8247:7;:11;;:24;;;;:::i;:::-;8240:31;;;7956:323;;;:::o;11226:502::-;5712:4;5703:6;;:13;;;;;;;;;;;;;;;;;;11304:21:::1;11342:1;11328:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11304:40;;11373:4;11355;11360:1;11355:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11399:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11389:4;11394:1;11389:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11432:62;11449:4;11464:15;;;;;;;;;;;11482:11;11432:8;:62::i;:::-;11505:15;;;;;;;;;;;:66;;;11586:11;11612:1;11628:4;11655:23;;;;;;;;;;;11694:15;11505:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11293:435;5748:5:::0;5739:6;;:14;;;;;;;;;;;;;;;;;;11226:502;:::o;11847:282::-;12003:7;11998:28;;12012:14;:12;:14::i;:::-;11998:28;12037:44;12055:6;12063:9;12074:6;12037:17;:44::i;:::-;12097:7;12092:29;;12106:15;:13;:15::i;:::-;12092:29;11847:282;;;;:::o;14825:167::-;14867:7;14888:15;14905;14924:19;:17;:19::i;:::-;14887:56;;;;14964:20;14976:7;14964;:11;;:20;;;;:::i;:::-;14957:27;;;;14825:167;:::o;3592:132::-;3650:7;3677:39;3681:1;3684;3677:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3670:46;;3592:132;;;;:::o;8288:221::-;8348:1;8335:9;;:14;:30;;;;;8364:1;8353:7;;:12;8335:30;8367:7;8331:43;8407:9;;8387:17;:29;;;;8445:7;;8427:15;:25;;;;8478:1;8466:9;:13;;;;8500:1;8490:7;:11;;;;8288:221;:::o;12138:610::-;12285:15;12315:23;12353:12;12380:23;12418:12;12445:13;12472:19;12483:7;12472:10;:19::i;:::-;12270:221;;;;;;;;;;;;12520:28;12540:7;12520;:15;12528:6;12520:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12502:7;:15;12510:6;12502:15;;;;;;;;;;;;;;;:46;;;;12580:39;12603:15;12580:7;:18;12588:9;12580:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12559:7;:18;12567:9;12559:18;;;;;;;;;;;;;;;:60;;;;12630:16;12640:5;12630:9;:16::i;:::-;12657:23;12669:4;12675;12657:11;:23::i;:::-;12713:9;12696:44;;12705:6;12696:44;;;12724:15;12696:44;;;;;;:::i;:::-;;;;;;;;12259:489;;;;;;12138:610;;;:::o;8518:117::-;8574:17;;8562:9;:29;;;;8612:15;;8602:7;:25;;;;8518:117::o;15001:260::-;15052:7;15061;15081:15;15099:7;;15081:25;;15117:15;4524:19;15117:25;;15167:20;4524:19;15167:7;;:11;;:20;;;;:::i;:::-;15157:7;:30;15153:61;;;15197:7;;4524:19;15189:25;;;;;;;;15153:61;15236:7;15245;15228:25;;;;;;15001:260;;;:::o;3733:223::-;3853:7;3885:1;3881;:5;3888:12;3873:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3912:9;3928:1;3924;:5;;;;:::i;:::-;3912:17;;3947:1;3940:8;;;3733:223;;;;;:::o;13171:618::-;13271:7;13293;13315;13337;13359;13381;13417:23;13442:12;13456:13;13486:40;13498:7;13507:9;;13518:7;;13486:11;:40::i;:::-;13416:110;;;;;;13537:19;13559:10;:8;:10::i;:::-;13537:32;;13581:15;13598:23;13623:12;13652:46;13664:7;13673:4;13679:5;13686:11;13652;:46::i;:::-;13580:118;;;;;;13720:7;13729:15;13746:4;13752:15;13769:4;13775:5;13712:69;;;;;;;;;;;;;;;;;;;13171:618;;;;;;;:::o;2959:136::-;3017:7;3044:43;3048:1;3051;3044:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3037:50;;2959:136;;;;:::o;2771:179::-;2829:7;2849:9;2865:1;2861;:5;;;;:::i;:::-;2849:17;;2890:1;2885;:6;;2877:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2941:1;2934:8;;;2771:179;;;;:::o;12757:211::-;12810:19;12832:10;:8;:10::i;:::-;12810:32;;12853:13;12869:22;12879:11;12869:5;:9;;:22;;;;:::i;:::-;12853:38;;12927:33;12954:5;12927:7;:22;12943:4;12927:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12902:7;:22;12918:4;12902:22;;;;;;;;;;;;;;;:58;;;;12799:169;;12757:211;:::o;12977:147::-;13055:17;13067:4;13055:7;;:11;;:17;;;;:::i;:::-;13045:7;:27;;;;13096:20;13111:4;13096:10;;:14;;:20;;;;:::i;:::-;13083:10;:33;;;;12977:147;;:::o;13798:472::-;13967:7;13989;14011;14046:12;14061:30;14087:3;14061:21;14073:8;14061:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14046:45;;14102:13;14118:28;14142:3;14118:19;14130:6;14118:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14102:44;;14157:23;14183:28;14205:5;14183:17;14195:4;14183:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14157:54;;14233:15;14250:4;14256:5;14225:37;;;;;;;;;13798:472;;;;;;;:::o;14279:537::-;14473:7;14495;14517;14552:15;14570:24;14582:11;14570:7;:11;;:24;;;;:::i;:::-;14552:42;;14605:12;14620:21;14629:11;14620:4;:8;;:21;;;;:::i;:::-;14605:36;;14652:13;14668:22;14678:11;14668:5;:9;;:22;;;;:::i;:::-;14652:38;;14701:23;14727:28;14749:5;14727:17;14739:4;14727:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14701:54;;14777:7;14786:15;14803:4;14769:39;;;;;;;;;;14279:537;;;;;;;;:::o;3337:246::-;3395:7;3424:1;3419;:6;3415:47;;3449:1;3442:8;;;;3415:47;3472:9;3488:1;3484;:5;;;;:::i;:::-;3472:17;;3517:1;3512;3508;:5;;;;:::i;:::-;:10;3500:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3574:1;3567:8;;;3337:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:117::-;7547:1;7544;7537:12;7561:117;7670:1;7667;7660:12;7684:117;7793:1;7790;7783:12;7824:568;7897:8;7907:6;7957:3;7950:4;7942:6;7938:17;7934:27;7924:122;;7965:79;;:::i;:::-;7924:122;8078:6;8065:20;8055:30;;8108:18;8100:6;8097:30;8094:117;;;8130:79;;:::i;:::-;8094:117;8244:4;8236:6;8232:17;8220:29;;8298:3;8290:4;8282:6;8278:17;8268:8;8264:32;8261:41;8258:128;;;8305:79;;:::i;:::-;8258:128;7824:568;;;;;:::o;8398:698::-;8490:6;8498;8506;8555:2;8543:9;8534:7;8530:23;8526:32;8523:119;;;8561:79;;:::i;:::-;8523:119;8709:1;8698:9;8694:17;8681:31;8739:18;8731:6;8728:30;8725:117;;;8761:79;;:::i;:::-;8725:117;8874:80;8946:7;8937:6;8926:9;8922:22;8874:80;:::i;:::-;8856:98;;;;8652:312;9003:2;9029:50;9071:7;9062:6;9051:9;9047:22;9029:50;:::i;:::-;9019:60;;8974:115;8398:698;;;;;:::o;9102:765::-;9188:6;9196;9204;9212;9261:3;9249:9;9240:7;9236:23;9232:33;9229:120;;;9268:79;;:::i;:::-;9229:120;9388:1;9413:53;9458:7;9449:6;9438:9;9434:22;9413:53;:::i;:::-;9403:63;;9359:117;9515:2;9541:53;9586:7;9577:6;9566:9;9562:22;9541:53;:::i;:::-;9531:63;;9486:118;9643:2;9669:53;9714:7;9705:6;9694:9;9690:22;9669:53;:::i;:::-;9659:63;;9614:118;9771:2;9797:53;9842:7;9833:6;9822:9;9818:22;9797:53;:::i;:::-;9787:63;;9742:118;9102:765;;;;;;;:::o;9873:474::-;9941:6;9949;9998:2;9986:9;9977:7;9973:23;9969:32;9966:119;;;10004:79;;:::i;:::-;9966:119;10124:1;10149:53;10194:7;10185:6;10174:9;10170:22;10149:53;:::i;:::-;10139:63;;10095:117;10251:2;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10222:118;9873:474;;;;;:::o;10353:182::-;10493:34;10489:1;10481:6;10477:14;10470:58;10353:182;:::o;10541:366::-;10683:3;10704:67;10768:2;10763:3;10704:67;:::i;:::-;10697:74;;10780:93;10869:3;10780:93;:::i;:::-;10898:2;10893:3;10889:12;10882:19;;10541:366;;;:::o;10913:419::-;11079:4;11117:2;11106:9;11102:18;11094:26;;11166:9;11160:4;11156:20;11152:1;11141:9;11137:17;11130:47;11194:131;11320:4;11194:131;:::i;:::-;11186:139;;10913:419;;;:::o;11338:180::-;11386:77;11383:1;11376:88;11483:4;11480:1;11473:15;11507:4;11504:1;11497:15;11524:180;11572:77;11569:1;11562:88;11669:4;11666:1;11659:15;11693:4;11690:1;11683:15;11710:233;11749:3;11772:24;11790:5;11772:24;:::i;:::-;11763:33;;11818:66;11811:5;11808:77;11805:103;;11888:18;;:::i;:::-;11805:103;11935:1;11928:5;11924:13;11917:20;;11710:233;;;:::o;11949:191::-;11989:3;12008:20;12026:1;12008:20;:::i;:::-;12003:25;;12042:20;12060:1;12042:20;:::i;:::-;12037:25;;12085:1;12082;12078:9;12071:16;;12106:3;12103:1;12100:10;12097:36;;;12113:18;;:::i;:::-;12097:36;11949:191;;;;:::o;12146:179::-;12286:31;12282:1;12274:6;12270:14;12263:55;12146:179;:::o;12331:366::-;12473:3;12494:67;12558:2;12553:3;12494:67;:::i;:::-;12487:74;;12570:93;12659:3;12570:93;:::i;:::-;12688:2;12683:3;12679:12;12672:19;;12331:366;;;:::o;12703:419::-;12869:4;12907:2;12896:9;12892:18;12884:26;;12956:9;12950:4;12946:20;12942:1;12931:9;12927:17;12920:47;12984:131;13110:4;12984:131;:::i;:::-;12976:139;;12703:419;;;:::o;13128:223::-;13268:34;13264:1;13256:6;13252:14;13245:58;13337:6;13332:2;13324:6;13320:15;13313:31;13128:223;:::o;13357:366::-;13499:3;13520:67;13584:2;13579:3;13520:67;:::i;:::-;13513:74;;13596:93;13685:3;13596:93;:::i;:::-;13714:2;13709:3;13705:12;13698:19;;13357:366;;;:::o;13729:419::-;13895:4;13933:2;13922:9;13918:18;13910:26;;13982:9;13976:4;13972:20;13968:1;13957:9;13953:17;13946:47;14010:131;14136:4;14010:131;:::i;:::-;14002:139;;13729:419;;;:::o;14154:221::-;14294:34;14290:1;14282:6;14278:14;14271:58;14363:4;14358:2;14350:6;14346:15;14339:29;14154:221;:::o;14381:366::-;14523:3;14544:67;14608:2;14603:3;14544:67;:::i;:::-;14537:74;;14620:93;14709:3;14620:93;:::i;:::-;14738:2;14733:3;14729:12;14722:19;;14381:366;;;:::o;14753:419::-;14919:4;14957:2;14946:9;14942:18;14934:26;;15006:9;15000:4;14996:20;14992:1;14981:9;14977:17;14970:47;15034:131;15160:4;15034:131;:::i;:::-;15026:139;;14753:419;;;:::o;15178:224::-;15318:34;15314:1;15306:6;15302:14;15295:58;15387:7;15382:2;15374:6;15370:15;15363:32;15178:224;:::o;15408:366::-;15550:3;15571:67;15635:2;15630:3;15571:67;:::i;:::-;15564:74;;15647:93;15736:3;15647:93;:::i;:::-;15765:2;15760:3;15756:12;15749:19;;15408:366;;;:::o;15780:419::-;15946:4;15984:2;15973:9;15969:18;15961:26;;16033:9;16027:4;16023:20;16019:1;16008:9;16004:17;15997:47;16061:131;16187:4;16061:131;:::i;:::-;16053:139;;15780:419;;;:::o;16205:222::-;16345:34;16341:1;16333:6;16329:14;16322:58;16414:5;16409:2;16401:6;16397:15;16390:30;16205:222;:::o;16433:366::-;16575:3;16596:67;16660:2;16655:3;16596:67;:::i;:::-;16589:74;;16672:93;16761:3;16672:93;:::i;:::-;16790:2;16785:3;16781:12;16774:19;;16433:366;;;:::o;16805:419::-;16971:4;17009:2;16998:9;16994:18;16986:26;;17058:9;17052:4;17048:20;17044:1;17033:9;17029:17;17022:47;17086:131;17212:4;17086:131;:::i;:::-;17078:139;;16805:419;;;:::o;17230:228::-;17370:34;17366:1;17358:6;17354:14;17347:58;17439:11;17434:2;17426:6;17422:15;17415:36;17230:228;:::o;17464:366::-;17606:3;17627:67;17691:2;17686:3;17627:67;:::i;:::-;17620:74;;17703:93;17792:3;17703:93;:::i;:::-;17821:2;17816:3;17812:12;17805:19;;17464:366;;;:::o;17836:419::-;18002:4;18040:2;18029:9;18025:18;18017:26;;18089:9;18083:4;18079:20;18075:1;18064:9;18060:17;18053:47;18117:131;18243:4;18117:131;:::i;:::-;18109:139;;17836:419;;;:::o;18261:250::-;18401:34;18397:1;18389:6;18385:14;18378:58;18470:33;18465:2;18457:6;18453:15;18446:58;18261:250;:::o;18517:366::-;18659:3;18680:67;18744:2;18739:3;18680:67;:::i;:::-;18673:74;;18756:93;18845:3;18756:93;:::i;:::-;18874:2;18869:3;18865:12;18858:19;;18517:366;;;:::o;18889:419::-;19055:4;19093:2;19082:9;19078:18;19070:26;;19142:9;19136:4;19132:20;19128:1;19117:9;19113:17;19106:47;19170:131;19296:4;19170:131;:::i;:::-;19162:139;;18889:419;;;:::o;19314:178::-;19454:30;19450:1;19442:6;19438:14;19431:54;19314:178;:::o;19498:366::-;19640:3;19661:67;19725:2;19720:3;19661:67;:::i;:::-;19654:74;;19737:93;19826:3;19737:93;:::i;:::-;19855:2;19850:3;19846:12;19839:19;;19498:366;;;:::o;19870:419::-;20036:4;20074:2;20063:9;20059:18;20051:26;;20123:9;20117:4;20113:20;20109:1;20098:9;20094:17;20087:47;20151:131;20277:4;20151:131;:::i;:::-;20143:139;;19870:419;;;:::o;20295:222::-;20435:34;20431:1;20423:6;20419:14;20412:58;20504:5;20499:2;20491:6;20487:15;20480:30;20295:222;:::o;20523:366::-;20665:3;20686:67;20750:2;20745:3;20686:67;:::i;:::-;20679:74;;20762:93;20851:3;20762:93;:::i;:::-;20880:2;20875:3;20871:12;20864:19;;20523:366;;;:::o;20895:419::-;21061:4;21099:2;21088:9;21084:18;21076:26;;21148:9;21142:4;21138:20;21134:1;21123:9;21119:17;21112:47;21176:131;21302:4;21176:131;:::i;:::-;21168:139;;20895:419;;;:::o;21320:194::-;21360:4;21380:20;21398:1;21380:20;:::i;:::-;21375:25;;21414:20;21432:1;21414:20;:::i;:::-;21409:25;;21458:1;21455;21451:9;21443:17;;21482:1;21476:4;21473:11;21470:37;;;21487:18;;:::i;:::-;21470:37;21320:194;;;;:::o;21520:229::-;21660:34;21656:1;21648:6;21644:14;21637:58;21729:12;21724:2;21716:6;21712:15;21705:37;21520:229;:::o;21755:366::-;21897:3;21918:67;21982:2;21977:3;21918:67;:::i;:::-;21911:74;;21994:93;22083:3;21994:93;:::i;:::-;22112:2;22107:3;22103:12;22096:19;;21755:366;;;:::o;22127:419::-;22293:4;22331:2;22320:9;22316:18;22308:26;;22380:9;22374:4;22370:20;22366:1;22355:9;22351:17;22344:47;22408:131;22534:4;22408:131;:::i;:::-;22400:139;;22127:419;;;:::o;22552:180::-;22600:77;22597:1;22590:88;22697:4;22694:1;22687:15;22721:4;22718:1;22711:15;22738:143;22795:5;22826:6;22820:13;22811:22;;22842:33;22869:5;22842:33;:::i;:::-;22738:143;;;;:::o;22887:351::-;22957:6;23006:2;22994:9;22985:7;22981:23;22977:32;22974:119;;;23012:79;;:::i;:::-;22974:119;23132:1;23157:64;23213:7;23204:6;23193:9;23189:22;23157:64;:::i;:::-;23147:74;;23103:128;22887:351;;;;:::o;23244:85::-;23289:7;23318:5;23307:16;;23244:85;;;:::o;23335:158::-;23393:9;23426:61;23444:42;23453:32;23479:5;23453:32;:::i;:::-;23444:42;:::i;:::-;23426:61;:::i;:::-;23413:74;;23335:158;;;:::o;23499:147::-;23594:45;23633:5;23594:45;:::i;:::-;23589:3;23582:58;23499:147;;:::o;23652:114::-;23719:6;23753:5;23747:12;23737:22;;23652:114;;;:::o;23772:184::-;23871:11;23905:6;23900:3;23893:19;23945:4;23940:3;23936:14;23921:29;;23772:184;;;;:::o;23962:132::-;24029:4;24052:3;24044:11;;24082:4;24077:3;24073:14;24065:22;;23962:132;;;:::o;24100:108::-;24177:24;24195:5;24177:24;:::i;:::-;24172:3;24165:37;24100:108;;:::o;24214:179::-;24283:10;24304:46;24346:3;24338:6;24304:46;:::i;:::-;24382:4;24377:3;24373:14;24359:28;;24214:179;;;;:::o;24399:113::-;24469:4;24501;24496:3;24492:14;24484:22;;24399:113;;;:::o;24548:732::-;24667:3;24696:54;24744:5;24696:54;:::i;:::-;24766:86;24845:6;24840:3;24766:86;:::i;:::-;24759:93;;24876:56;24926:5;24876:56;:::i;:::-;24955:7;24986:1;24971:284;24996:6;24993:1;24990:13;24971:284;;;25072:6;25066:13;25099:63;25158:3;25143:13;25099:63;:::i;:::-;25092:70;;25185:60;25238:6;25185:60;:::i;:::-;25175:70;;25031:224;25018:1;25015;25011:9;25006:14;;24971:284;;;24975:14;25271:3;25264:10;;24672:608;;;24548:732;;;;:::o;25286:831::-;25549:4;25587:3;25576:9;25572:19;25564:27;;25601:71;25669:1;25658:9;25654:17;25645:6;25601:71;:::i;:::-;25682:80;25758:2;25747:9;25743:18;25734:6;25682:80;:::i;:::-;25809:9;25803:4;25799:20;25794:2;25783:9;25779:18;25772:48;25837:108;25940:4;25931:6;25837:108;:::i;:::-;25829:116;;25955:72;26023:2;26012:9;26008:18;25999:6;25955:72;:::i;:::-;26037:73;26105:3;26094:9;26090:19;26081:6;26037:73;:::i;:::-;25286:831;;;;;;;;:::o;26123:180::-;26171:77;26168:1;26161:88;26268:4;26265:1;26258:15;26292:4;26289:1;26282:15;26309:185;26349:1;26366:20;26384:1;26366:20;:::i;:::-;26361:25;;26400:20;26418:1;26400:20;:::i;:::-;26395:25;;26439:1;26429:35;;26444:18;;:::i;:::-;26429:35;26486:1;26483;26479:9;26474:14;;26309:185;;;;:::o;26500:177::-;26640:29;26636:1;26628:6;26624:14;26617:53;26500:177;:::o;26683:366::-;26825:3;26846:67;26910:2;26905:3;26846:67;:::i;:::-;26839:74;;26922:93;27011:3;26922:93;:::i;:::-;27040:2;27035:3;27031:12;27024:19;;26683:366;;;:::o;27055:419::-;27221:4;27259:2;27248:9;27244:18;27236:26;;27308:9;27302:4;27298:20;27294:1;27283:9;27279:17;27272:47;27336:131;27462:4;27336:131;:::i;:::-;27328:139;;27055:419;;;:::o;27480:410::-;27520:7;27543:20;27561:1;27543:20;:::i;:::-;27538:25;;27577:20;27595:1;27577:20;:::i;:::-;27572:25;;27632:1;27629;27625:9;27654:30;27672:11;27654:30;:::i;:::-;27643:41;;27833:1;27824:7;27820:15;27817:1;27814:22;27794:1;27787:9;27767:83;27744:139;;27863:18;;:::i;:::-;27744:139;27528:362;27480:410;;;;:::o;27896:220::-;28036:34;28032:1;28024:6;28020:14;28013:58;28105:3;28100:2;28092:6;28088:15;28081:28;27896:220;:::o;28122:366::-;28264:3;28285:67;28349:2;28344:3;28285:67;:::i;:::-;28278:74;;28361:93;28450:3;28361:93;:::i;:::-;28479:2;28474:3;28470:12;28463:19;;28122:366;;;:::o;28494:419::-;28660:4;28698:2;28687:9;28683:18;28675:26;;28747:9;28741:4;28737:20;28733:1;28722:9;28718:17;28711:47;28775:131;28901:4;28775:131;:::i;:::-;28767:139;;28494:419;;;:::o
Swarm Source
ipfs://cabd30680940ded156f2d098992eca62742e7ad4f65f39fa0e37f9ae137c7f89
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.