ERC-20
Overview
Max Total Supply
1,000,000,000 MUIRABIHS
Holders
50
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
2,904,744.286075133 MUIRABIHSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
MUIRABIHS
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-30 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract MUIRABIHS is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "MUIRABIHS"; string private constant _symbol = "MUIRABIHS"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 3; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 3; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0xE9e56eE582613A0a2BB1eDe1C5d61943CFEaC0b4); address payable private _marketingAddress = payable(0xE9e56eE582613A0a2BB1eDe1C5d61943CFEaC0b4); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = true; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000000 * 10**9; uint256 public _maxWalletSize = 20000000 * 10**9; uint256 public _swapTokensAtAmount = 10000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function buytax() public view returns (uint256) { return _taxFeeOnBuy; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreallFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function open(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualSwap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualclaim() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockAllBot(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBots(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeFee(); _transferStandard(sender, recipient, amount); if (!takeFee) 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 setallTax(uint256 redisBuy, uint256 redisSell, uint256 taxBuy, uint256 taxSell) public onlyOwner { _redisFeeOnBuy = redisBuy; _redisFeeOnSell = redisSell; _taxFeeOnBuy = taxBuy; _taxFeeOnSell = taxSell; } //Set minimum tokens required to swap. function setminSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setmaxwalle(uint256 maxtx,uint256 maxw) public onlyOwner { _maxTxAmount = maxtx; _maxWalletSize = maxw; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockAllBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buytax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualclaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"open","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisBuy","type":"uint256"},{"internalType":"uint256","name":"redisSell","type":"uint256"},{"internalType":"uint256","name":"taxBuy","type":"uint256"},{"internalType":"uint256","name":"taxSell","type":"uint256"}],"name":"setallTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxtx","type":"uint256"},{"internalType":"uint256","name":"maxw","type":"uint256"}],"name":"setmaxwalle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setminSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400006000196200001c919062000759565b6000196200002b9190620007c0565b600655600060085560036009556000600a556003600b55600a54600c55600b54600d55600c54600e55600d54600f5573e9e56ee582613a0a2bb1ede1c5d61943cfeac0b4601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e9e56ee582613a0a2bb1ede1c5d61943cfeac0b4601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200018157600080fd5b50600062000194620006ef60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000865565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000865565b6040518363ffffffff1660e01b815260040162000420929190620008a8565b602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000865565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cc620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000679620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e09190620008e6565b60405180910390a35062000903565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007668262000720565b9150620007738362000720565b9250826200078657620007856200072a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cd8262000720565b9150620007da8362000720565b925082821015620007f057620007ef62000791565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082d8262000800565b9050919050565b6200083f8162000820565b81146200084b57600080fd5b50565b6000815190506200085f8162000834565b92915050565b6000602082840312156200087e576200087d620007fb565b5b60006200088e848285016200084e565b91505092915050565b620008a28162000820565b82525050565b6000604082019050620008bf600083018562000897565b620008ce602083018462000897565b9392505050565b620008e08162000720565b82525050565b6000602082019050620008fd6000830184620008d5565b92915050565b613d9680620009136000396000f3fe6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a9059cbb11610095578063c492f04611610064578063c492f0461461065f578063c92823ba14610688578063dd62ed3e146106b1578063f2fde38b146106ee576101d8565b8063a9059cbb146105a5578063b360711d146105e2578063b792507e146105f9578063bfd7928414610622576101d8565b80638f9a55c0116100d15780638f9a55c0146104fd57806395d89b41146105285780639866187214610553578063a85717d31461057c576101d8565b80637d1db4a51461046a5780637f2feddc146104955780638da5cb5b146104d2576101d8565b80633ee0f5f51161016f5780636b2359651161013e5780636b235965146103c45780636d8aa8f8146103ed57806370a0823114610416578063715018a614610453576101d8565b80633ee0f5f51461032e57806349bd5a5e146103575780634a1263f31461038257806351bc3c85146103ad576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b5780632fd689e3146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612bb0565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c7a565b610754565b60405161023c9190612cd5565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190612d4f565b60405180910390f35b34801561027c57600080fd5b50610285610798565b6040516102929190612d79565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d94565b6107a8565b6040516102cf9190612cd5565b60405180910390f35b3480156102e457600080fd5b506102ed610881565b6040516102fa9190612d79565b60405180910390f35b34801561030f57600080fd5b50610318610887565b6040516103259190612e03565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190612e1e565b610890565b005b34801561036357600080fd5b5061036c61092f565b6040516103799190612e5a565b60405180910390f35b34801561038e57600080fd5b50610397610955565b6040516103a49190612d79565b60405180910390f35b3480156103b957600080fd5b506103c261095f565b005b3480156103d057600080fd5b506103eb60048036038101906103e69190612e75565b610a38565b005b3480156103f957600080fd5b50610414600480360381019061040f9190612ee1565b610adf565b005b34801561042257600080fd5b5061043d60048036038101906104389190612f0e565b610b91565b60405161044a9190612d79565b60405180910390f35b34801561045f57600080fd5b50610468610be2565b005b34801561047657600080fd5b5061047f610d35565b60405161048c9190612d79565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612f0e565b610d3b565b6040516104c99190612d79565b60405180910390f35b3480156104de57600080fd5b506104e7610d53565b6040516104f49190612e5a565b60405180910390f35b34801561050957600080fd5b50610512610d7c565b60405161051f9190612d79565b60405180910390f35b34801561053457600080fd5b5061053d610d82565b60405161054a9190612bb0565b60405180910390f35b34801561055f57600080fd5b5061057a60048036038101906105759190612f3b565b610dbf565b005b34801561058857600080fd5b506105a3600480360381019061059e9190612ee1565b610e76565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190612c7a565b610f28565b6040516105d99190612cd5565b60405180910390f35b3480156105ee57600080fd5b506105f7610f46565b005b34801561060557600080fd5b50610620600480360381019061061b9190612f0e565b611017565b005b34801561062e57600080fd5b5061064960048036038101906106449190612f0e565b611107565b6040516106569190612cd5565b60405180910390f35b34801561066b57600080fd5b5061068660048036038101906106819190613007565b611127565b005b34801561069457600080fd5b506106af60048036038101906106aa91906131a5565b611261565b005b3480156106bd57600080fd5b506106d860048036038101906106d391906131ee565b61138b565b6040516106e59190612d79565b60405180910390f35b3480156106fa57600080fd5b5061071560048036038101906107109190612f0e565b611412565b005b60606040518060400160405280600981526020017f4d55495241424948530000000000000000000000000000000000000000000000815250905090565b60006107686107616115d4565b84846115dc565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006107b58484846117a7565b610876846107c16115d4565b61087185604051806060016040528060288152602001613d3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108276115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202c9092919063ffffffff16565b6115dc565b600190509392505050565b60185481565b60006009905090565b6108986115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c9061327a565b60405180910390fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109a06115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610a165750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109fe6115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610a1f57600080fd5b6000610a2a30610b91565b9050610a3581612090565b50565b610a406115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac49061327a565b60405180910390fd5b81601681905550806017819055505050565b610ae76115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b9061327a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610bdb600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612316565b9050919050565b610bea6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600981526020017f4d55495241424948530000000000000000000000000000000000000000000000815250905090565b610dc76115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b9061327a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b610e7e6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f029061327a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6000610f3c610f356115d4565b84846117a7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f876115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610ffd5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fe56115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b61100657600080fd5b600047905061101481612384565b50565b61101f6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a39061327a565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b61112f6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b39061327a565b60405180910390fd5b60005b8383905081101561125b5781600560008686858181106111e2576111e161329a565b5b90506020020160208101906111f79190612f0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611253906132f8565b9150506111bf565b50505050565b6112696115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed9061327a565b60405180910390fd5b60005b81518110156113875760016010600084848151811061131b5761131a61329a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061137f906132f8565b9150506112f9565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61141a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613445565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179a9190612d79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613569565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e906135fb565b60405180910390fd5b600081116118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c19061368d565b60405180910390fd5b6118d2610d53565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119405750611910610d53565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2b57601560149054906101000a900460ff166119cf57611961610d53565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061371f565b60405180910390fd5b5b601654811115611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061378b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab85750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee9061381d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba45760175481611b5984610b91565b611b63919061383d565b10611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613905565b60405180910390fd5b5b6000611baf30610b91565b9050600060185482101590506016548210611bca5760165491505b808015611be2575060158054906101000a900460ff16155b8015611c3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c545750601560169054906101000a900460ff165b8015611caa5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d005750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2857611d0e82612090565b60004790506000811115611d2657611d2547612384565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e93576000905061201a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120015750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201957600a54600c81905550600b54600d819055505b5b612026848484846123f0565b50505050565b6000838311158290612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9190612bb0565b60405180910390fd5b50600083856120839190613925565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c7576120c6613067565b5b6040519080825280602002602001820160405280156120f55781602001602082028036833780820191505090505b509050308160008151811061210d5761210c61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121af57600080fd5b505afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e7919061396e565b816001815181106121fb576121fa61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115dc565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c6959493929190613a94565b600060405180830381600087803b1580156122e057600080fd5b505af11580156122f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600060065482111561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490613b60565b60405180910390fd5b600061236761241d565b905061237c818461244890919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123ec573d6000803e3d6000fd5b5050565b806123fe576123fd612492565b5b6124098484846124d5565b80612417576124166126a0565b5b50505050565b600080600061242a6126b4565b91509150612441818361244890919063ffffffff16565b9250505090565b600061248a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612713565b905092915050565b6000600c541480156124a657506000600d54145b156124b0576124d3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e787612776565b95509550955095509550955061254586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125da85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262681612886565b6126308483612943565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268d9190612d79565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e8670de0b6b3a764000060065461244890919063ffffffff16565b82101561270657600654670de0b6b3a764000093509350505061270f565b81819350935050505b9091565b6000808311829061275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519190612bb0565b60405180910390fd5b50600083856127699190613baf565b9050809150509392505050565b60008060008060008060008060006127938a600c54600d5461297d565b92509250925060006127a361241d565b905060008060006127b68e878787612a13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202c565b905092915050565b6000808284612837919061383d565b90508381101561287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390613c2c565b60405180910390fd5b8091505092915050565b600061289061241d565b905060006128a78284612a9c90919063ffffffff16565b90506128fb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612958826006546127de90919063ffffffff16565b6006819055506129738160075461282890919063ffffffff16565b6007819055505050565b6000806000806129a9606461299b888a612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129d360646129c5888b612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129fc826129ee858c6127de90919063ffffffff16565b6127de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2c8589612a9c90919063ffffffff16565b90506000612a438689612a9c90919063ffffffff16565b90506000612a5a8789612a9c90919063ffffffff16565b90506000612a8382612a7585876127de90919063ffffffff16565b6127de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aaf5760009050612b11565b60008284612abd9190613c4c565b9050828482612acc9190613baf565b14612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390613d18565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b51578082015181840152602081019050612b36565b83811115612b60576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b8282612b17565b612b8c8185612b22565b9350612b9c818560208601612b33565b612ba581612b66565b840191505092915050565b60006020820190508181036000830152612bca8184612b77565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1182612be6565b9050919050565b612c2181612c06565b8114612c2c57600080fd5b50565b600081359050612c3e81612c18565b92915050565b6000819050919050565b612c5781612c44565b8114612c6257600080fd5b50565b600081359050612c7481612c4e565b92915050565b60008060408385031215612c9157612c90612bdc565b5b6000612c9f85828601612c2f565b9250506020612cb085828601612c65565b9150509250929050565b60008115159050919050565b612ccf81612cba565b82525050565b6000602082019050612cea6000830184612cc6565b92915050565b6000819050919050565b6000612d15612d10612d0b84612be6565b612cf0565b612be6565b9050919050565b6000612d2782612cfa565b9050919050565b6000612d3982612d1c565b9050919050565b612d4981612d2e565b82525050565b6000602082019050612d646000830184612d40565b92915050565b612d7381612c44565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b600080600060608486031215612dad57612dac612bdc565b5b6000612dbb86828701612c2f565b9350506020612dcc86828701612c2f565b9250506040612ddd86828701612c65565b9150509250925092565b600060ff82169050919050565b612dfd81612de7565b82525050565b6000602082019050612e186000830184612df4565b92915050565b600060208284031215612e3457612e33612bdc565b5b6000612e4284828501612c65565b91505092915050565b612e5481612c06565b82525050565b6000602082019050612e6f6000830184612e4b565b92915050565b60008060408385031215612e8c57612e8b612bdc565b5b6000612e9a85828601612c65565b9250506020612eab85828601612c65565b9150509250929050565b612ebe81612cba565b8114612ec957600080fd5b50565b600081359050612edb81612eb5565b92915050565b600060208284031215612ef757612ef6612bdc565b5b6000612f0584828501612ecc565b91505092915050565b600060208284031215612f2457612f23612bdc565b5b6000612f3284828501612c2f565b91505092915050565b60008060008060808587031215612f5557612f54612bdc565b5b6000612f6387828801612c65565b9450506020612f7487828801612c65565b9350506040612f8587828801612c65565b9250506060612f9687828801612c65565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612fc757612fc6612fa2565b5b8235905067ffffffffffffffff811115612fe457612fe3612fa7565b5b60208301915083602082028301111561300057612fff612fac565b5b9250929050565b6000806000604084860312156130205761301f612bdc565b5b600084013567ffffffffffffffff81111561303e5761303d612be1565b5b61304a86828701612fb1565b9350935050602061305d86828701612ecc565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61309f82612b66565b810181811067ffffffffffffffff821117156130be576130bd613067565b5b80604052505050565b60006130d1612bd2565b90506130dd8282613096565b919050565b600067ffffffffffffffff8211156130fd576130fc613067565b5b602082029050602081019050919050565b600061312161311c846130e2565b6130c7565b9050808382526020820190506020840283018581111561314457613143612fac565b5b835b8181101561316d57806131598882612c2f565b845260208401935050602081019050613146565b5050509392505050565b600082601f83011261318c5761318b612fa2565b5b813561319c84826020860161310e565b91505092915050565b6000602082840312156131bb576131ba612bdc565b5b600082013567ffffffffffffffff8111156131d9576131d8612be1565b5b6131e584828501613177565b91505092915050565b6000806040838503121561320557613204612bdc565b5b600061321385828601612c2f565b925050602061322485828601612c2f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613264602083612b22565b915061326f8261322e565b602082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330382612c44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613336576133356132c9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339d602683612b22565b91506133a882613341565b604082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342f602483612b22565b915061343a826133d3565b604082019050919050565b6000602082019050818103600083015261345e81613422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c1602283612b22565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613553602583612b22565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602383612b22565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613677602983612b22565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613709603f83612b22565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613775601c83612b22565b91506137808261373f565b602082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612b22565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b600061384882612c44565b915061385383612c44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613888576138876132c9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602383612b22565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b600061393082612c44565b915061393b83612c44565b92508282101561394e5761394d6132c9565b5b828203905092915050565b60008151905061396881612c18565b92915050565b60006020828403121561398457613983612bdc565b5b600061399284828501613959565b91505092915050565b6000819050919050565b60006139c06139bb6139b68461399b565b612cf0565b612c44565b9050919050565b6139d0816139a5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a0b81612c06565b82525050565b6000613a1d8383613a02565b60208301905092915050565b6000602082019050919050565b6000613a41826139d6565b613a4b81856139e1565b9350613a56836139f2565b8060005b83811015613a87578151613a6e8882613a11565b9750613a7983613a29565b925050600181019050613a5a565b5085935050505092915050565b600060a082019050613aa96000830188612d6a565b613ab660208301876139c7565b8181036040830152613ac88186613a36565b9050613ad76060830185612e4b565b613ae46080830184612d6a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b4a602a83612b22565b9150613b5582613aee565b604082019050919050565b60006020820190508181036000830152613b7981613b3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bba82612c44565b9150613bc583612c44565b925082613bd557613bd4613b80565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c16601b83612b22565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b6000613c5782612c44565b9150613c6283612c44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9b57613c9a6132c9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d02602183612b22565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b36210c3845336143c4c1c2ae4706d23b9f2fb72d494a9ee647c3764f986373464736f6c63430008090033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a9059cbb11610095578063c492f04611610064578063c492f0461461065f578063c92823ba14610688578063dd62ed3e146106b1578063f2fde38b146106ee576101d8565b8063a9059cbb146105a5578063b360711d146105e2578063b792507e146105f9578063bfd7928414610622576101d8565b80638f9a55c0116100d15780638f9a55c0146104fd57806395d89b41146105285780639866187214610553578063a85717d31461057c576101d8565b80637d1db4a51461046a5780637f2feddc146104955780638da5cb5b146104d2576101d8565b80633ee0f5f51161016f5780636b2359651161013e5780636b235965146103c45780636d8aa8f8146103ed57806370a0823114610416578063715018a614610453576101d8565b80633ee0f5f51461032e57806349bd5a5e146103575780634a1263f31461038257806351bc3c85146103ad576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b5780632fd689e3146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612bb0565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c7a565b610754565b60405161023c9190612cd5565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190612d4f565b60405180910390f35b34801561027c57600080fd5b50610285610798565b6040516102929190612d79565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d94565b6107a8565b6040516102cf9190612cd5565b60405180910390f35b3480156102e457600080fd5b506102ed610881565b6040516102fa9190612d79565b60405180910390f35b34801561030f57600080fd5b50610318610887565b6040516103259190612e03565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190612e1e565b610890565b005b34801561036357600080fd5b5061036c61092f565b6040516103799190612e5a565b60405180910390f35b34801561038e57600080fd5b50610397610955565b6040516103a49190612d79565b60405180910390f35b3480156103b957600080fd5b506103c261095f565b005b3480156103d057600080fd5b506103eb60048036038101906103e69190612e75565b610a38565b005b3480156103f957600080fd5b50610414600480360381019061040f9190612ee1565b610adf565b005b34801561042257600080fd5b5061043d60048036038101906104389190612f0e565b610b91565b60405161044a9190612d79565b60405180910390f35b34801561045f57600080fd5b50610468610be2565b005b34801561047657600080fd5b5061047f610d35565b60405161048c9190612d79565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612f0e565b610d3b565b6040516104c99190612d79565b60405180910390f35b3480156104de57600080fd5b506104e7610d53565b6040516104f49190612e5a565b60405180910390f35b34801561050957600080fd5b50610512610d7c565b60405161051f9190612d79565b60405180910390f35b34801561053457600080fd5b5061053d610d82565b60405161054a9190612bb0565b60405180910390f35b34801561055f57600080fd5b5061057a60048036038101906105759190612f3b565b610dbf565b005b34801561058857600080fd5b506105a3600480360381019061059e9190612ee1565b610e76565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190612c7a565b610f28565b6040516105d99190612cd5565b60405180910390f35b3480156105ee57600080fd5b506105f7610f46565b005b34801561060557600080fd5b50610620600480360381019061061b9190612f0e565b611017565b005b34801561062e57600080fd5b5061064960048036038101906106449190612f0e565b611107565b6040516106569190612cd5565b60405180910390f35b34801561066b57600080fd5b5061068660048036038101906106819190613007565b611127565b005b34801561069457600080fd5b506106af60048036038101906106aa91906131a5565b611261565b005b3480156106bd57600080fd5b506106d860048036038101906106d391906131ee565b61138b565b6040516106e59190612d79565b60405180910390f35b3480156106fa57600080fd5b5061071560048036038101906107109190612f0e565b611412565b005b60606040518060400160405280600981526020017f4d55495241424948530000000000000000000000000000000000000000000000815250905090565b60006107686107616115d4565b84846115dc565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006107b58484846117a7565b610876846107c16115d4565b61087185604051806060016040528060288152602001613d3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108276115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202c9092919063ffffffff16565b6115dc565b600190509392505050565b60185481565b60006009905090565b6108986115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c9061327a565b60405180910390fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109a06115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610a165750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109fe6115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610a1f57600080fd5b6000610a2a30610b91565b9050610a3581612090565b50565b610a406115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac49061327a565b60405180910390fd5b81601681905550806017819055505050565b610ae76115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6b9061327a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610bdb600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612316565b9050919050565b610bea6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600981526020017f4d55495241424948530000000000000000000000000000000000000000000000815250905090565b610dc76115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b9061327a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b610e7e6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f029061327a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6000610f3c610f356115d4565b84846117a7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f876115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610ffd5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fe56115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b61100657600080fd5b600047905061101481612384565b50565b61101f6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a39061327a565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b61112f6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b39061327a565b60405180910390fd5b60005b8383905081101561125b5781600560008686858181106111e2576111e161329a565b5b90506020020160208101906111f79190612f0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611253906132f8565b9150506111bf565b50505050565b6112696115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed9061327a565b60405180910390fd5b60005b81518110156113875760016010600084848151811061131b5761131a61329a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061137f906132f8565b9150506112f9565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61141a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613445565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179a9190612d79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613569565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e906135fb565b60405180910390fd5b600081116118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c19061368d565b60405180910390fd5b6118d2610d53565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119405750611910610d53565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2b57601560149054906101000a900460ff166119cf57611961610d53565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061371f565b60405180910390fd5b5b601654811115611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061378b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab85750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee9061381d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba45760175481611b5984610b91565b611b63919061383d565b10611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613905565b60405180910390fd5b5b6000611baf30610b91565b9050600060185482101590506016548210611bca5760165491505b808015611be2575060158054906101000a900460ff16155b8015611c3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c545750601560169054906101000a900460ff165b8015611caa5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d005750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2857611d0e82612090565b60004790506000811115611d2657611d2547612384565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e93576000905061201a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120015750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201957600a54600c81905550600b54600d819055505b5b612026848484846123f0565b50505050565b6000838311158290612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9190612bb0565b60405180910390fd5b50600083856120839190613925565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c7576120c6613067565b5b6040519080825280602002602001820160405280156120f55781602001602082028036833780820191505090505b509050308160008151811061210d5761210c61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121af57600080fd5b505afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e7919061396e565b816001815181106121fb576121fa61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115dc565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c6959493929190613a94565b600060405180830381600087803b1580156122e057600080fd5b505af11580156122f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600060065482111561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490613b60565b60405180910390fd5b600061236761241d565b905061237c818461244890919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123ec573d6000803e3d6000fd5b5050565b806123fe576123fd612492565b5b6124098484846124d5565b80612417576124166126a0565b5b50505050565b600080600061242a6126b4565b91509150612441818361244890919063ffffffff16565b9250505090565b600061248a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612713565b905092915050565b6000600c541480156124a657506000600d54145b156124b0576124d3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e787612776565b95509550955095509550955061254586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125da85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262681612886565b6126308483612943565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268d9190612d79565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e8670de0b6b3a764000060065461244890919063ffffffff16565b82101561270657600654670de0b6b3a764000093509350505061270f565b81819350935050505b9091565b6000808311829061275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519190612bb0565b60405180910390fd5b50600083856127699190613baf565b9050809150509392505050565b60008060008060008060008060006127938a600c54600d5461297d565b92509250925060006127a361241d565b905060008060006127b68e878787612a13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202c565b905092915050565b6000808284612837919061383d565b90508381101561287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390613c2c565b60405180910390fd5b8091505092915050565b600061289061241d565b905060006128a78284612a9c90919063ffffffff16565b90506128fb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612958826006546127de90919063ffffffff16565b6006819055506129738160075461282890919063ffffffff16565b6007819055505050565b6000806000806129a9606461299b888a612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129d360646129c5888b612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129fc826129ee858c6127de90919063ffffffff16565b6127de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2c8589612a9c90919063ffffffff16565b90506000612a438689612a9c90919063ffffffff16565b90506000612a5a8789612a9c90919063ffffffff16565b90506000612a8382612a7585876127de90919063ffffffff16565b6127de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aaf5760009050612b11565b60008284612abd9190613c4c565b9050828482612acc9190613baf565b14612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390613d18565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b51578082015181840152602081019050612b36565b83811115612b60576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b8282612b17565b612b8c8185612b22565b9350612b9c818560208601612b33565b612ba581612b66565b840191505092915050565b60006020820190508181036000830152612bca8184612b77565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1182612be6565b9050919050565b612c2181612c06565b8114612c2c57600080fd5b50565b600081359050612c3e81612c18565b92915050565b6000819050919050565b612c5781612c44565b8114612c6257600080fd5b50565b600081359050612c7481612c4e565b92915050565b60008060408385031215612c9157612c90612bdc565b5b6000612c9f85828601612c2f565b9250506020612cb085828601612c65565b9150509250929050565b60008115159050919050565b612ccf81612cba565b82525050565b6000602082019050612cea6000830184612cc6565b92915050565b6000819050919050565b6000612d15612d10612d0b84612be6565b612cf0565b612be6565b9050919050565b6000612d2782612cfa565b9050919050565b6000612d3982612d1c565b9050919050565b612d4981612d2e565b82525050565b6000602082019050612d646000830184612d40565b92915050565b612d7381612c44565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b600080600060608486031215612dad57612dac612bdc565b5b6000612dbb86828701612c2f565b9350506020612dcc86828701612c2f565b9250506040612ddd86828701612c65565b9150509250925092565b600060ff82169050919050565b612dfd81612de7565b82525050565b6000602082019050612e186000830184612df4565b92915050565b600060208284031215612e3457612e33612bdc565b5b6000612e4284828501612c65565b91505092915050565b612e5481612c06565b82525050565b6000602082019050612e6f6000830184612e4b565b92915050565b60008060408385031215612e8c57612e8b612bdc565b5b6000612e9a85828601612c65565b9250506020612eab85828601612c65565b9150509250929050565b612ebe81612cba565b8114612ec957600080fd5b50565b600081359050612edb81612eb5565b92915050565b600060208284031215612ef757612ef6612bdc565b5b6000612f0584828501612ecc565b91505092915050565b600060208284031215612f2457612f23612bdc565b5b6000612f3284828501612c2f565b91505092915050565b60008060008060808587031215612f5557612f54612bdc565b5b6000612f6387828801612c65565b9450506020612f7487828801612c65565b9350506040612f8587828801612c65565b9250506060612f9687828801612c65565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612fc757612fc6612fa2565b5b8235905067ffffffffffffffff811115612fe457612fe3612fa7565b5b60208301915083602082028301111561300057612fff612fac565b5b9250929050565b6000806000604084860312156130205761301f612bdc565b5b600084013567ffffffffffffffff81111561303e5761303d612be1565b5b61304a86828701612fb1565b9350935050602061305d86828701612ecc565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61309f82612b66565b810181811067ffffffffffffffff821117156130be576130bd613067565b5b80604052505050565b60006130d1612bd2565b90506130dd8282613096565b919050565b600067ffffffffffffffff8211156130fd576130fc613067565b5b602082029050602081019050919050565b600061312161311c846130e2565b6130c7565b9050808382526020820190506020840283018581111561314457613143612fac565b5b835b8181101561316d57806131598882612c2f565b845260208401935050602081019050613146565b5050509392505050565b600082601f83011261318c5761318b612fa2565b5b813561319c84826020860161310e565b91505092915050565b6000602082840312156131bb576131ba612bdc565b5b600082013567ffffffffffffffff8111156131d9576131d8612be1565b5b6131e584828501613177565b91505092915050565b6000806040838503121561320557613204612bdc565b5b600061321385828601612c2f565b925050602061322485828601612c2f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613264602083612b22565b915061326f8261322e565b602082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330382612c44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613336576133356132c9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339d602683612b22565b91506133a882613341565b604082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342f602483612b22565b915061343a826133d3565b604082019050919050565b6000602082019050818103600083015261345e81613422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c1602283612b22565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613553602583612b22565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602383612b22565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613677602983612b22565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613709603f83612b22565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613775601c83612b22565b91506137808261373f565b602082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612b22565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b600061384882612c44565b915061385383612c44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613888576138876132c9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602383612b22565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b600061393082612c44565b915061393b83612c44565b92508282101561394e5761394d6132c9565b5b828203905092915050565b60008151905061396881612c18565b92915050565b60006020828403121561398457613983612bdc565b5b600061399284828501613959565b91505092915050565b6000819050919050565b60006139c06139bb6139b68461399b565b612cf0565b612c44565b9050919050565b6139d0816139a5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a0b81612c06565b82525050565b6000613a1d8383613a02565b60208301905092915050565b6000602082019050919050565b6000613a41826139d6565b613a4b81856139e1565b9350613a56836139f2565b8060005b83811015613a87578151613a6e8882613a11565b9750613a7983613a29565b925050600181019050613a5a565b5085935050505092915050565b600060a082019050613aa96000830188612d6a565b613ab660208301876139c7565b8181036040830152613ac88186613a36565b9050613ad76060830185612e4b565b613ae46080830184612d6a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b4a602a83612b22565b9150613b5582613aee565b604082019050919050565b60006020820190508181036000830152613b7981613b3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bba82612c44565b9150613bc583612c44565b925082613bd557613bd4613b80565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c16601b83612b22565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b6000613c5782612c44565b9150613c6283612c44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9b57613c9a6132c9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d02602183612b22565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b36210c3845336143c4c1c2ae4706d23b9f2fb72d494a9ee647c3764f986373464736f6c63430008090033
Deployed Bytecode Sourcemap
4068:13479:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6573:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7594:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5416:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6946:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7795:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5721:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6759:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16814:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5464:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6851:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12345:236;;;;;;;;;;;;;:::i;:::-;;17153:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17005:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7049:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1555:148;;;;;;;;;;;;;:::i;:::-;;5613:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5158:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1341:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5666:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6664:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16508:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12242:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7195:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12589:236;;;;;;;;;;;;;:::i;:::-;;13012:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5120:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17308:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12833:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7402:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1711:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6573:83;6610:13;6643:5;;;;;;;;;;;;;;;;;6636:12;;6573:83;:::o;7594:193::-;7696:4;7718:39;7727:12;:10;:12::i;:::-;7741:7;7750:6;7718:8;:39::i;:::-;7775:4;7768:11;;7594:193;;;;:::o;5416:41::-;;;;;;;;;;;;;:::o;6946:95::-;6999:7;4622:18;7019:14;;6946:95;:::o;7795:446::-;7927:4;7944:36;7954:6;7962:9;7973:6;7944:9;:36::i;:::-;7991:220;8014:6;8035:12;:10;:12::i;:::-;8062:138;8118:6;8062:138;;;;;;;;;;;;;;;;;:11;:19;8074:6;8062:19;;;;;;;;;;;;;;;:33;8082:12;:10;:12::i;:::-;8062:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7991:8;:220::i;:::-;8229:4;8222:11;;7795:446;;;;;:::o;5721:50::-;;;;:::o;6759:83::-;6800:5;4296:1;6818:16;;6759:83;:::o;16814:139::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16927:18:::1;16905:19;:40;;;;16814:139:::0;:::o;5464:28::-;;;;;;;;;;;;;:::o;6851:87::-;6891:7;6918:12;;6911:19;;6851:87;:::o;12345:236::-;12411:19;;;;;;;;;;;12395:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12450:17;;;;;;;;;;;12434:33;;:12;:10;:12::i;:::-;:33;;;12395:72;12387:81;;;;;;12479:23;12505:24;12523:4;12505:9;:24::i;:::-;12479:50;;12540:33;12557:15;12540:16;:33::i;:::-;12376:205;12345:236::o;17153:147::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17245:5:::1;17230:12;:20;;;;17278:4;17261:14;:21;;;;17153:147:::0;;:::o;17005:101::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17086:12:::1;17072:11;;:26;;;;;;;;;;;;;;;;;;17005:101:::0;:::o;7049:138::-;7115:7;7142:37;7162:7;:16;7170:7;7162:16;;;;;;;;;;;;;;;;7142:19;:37::i;:::-;7135:44;;7049:138;;;:::o;1555:148::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1662:1:::1;1625:40;;1646:6;::::0;::::1;;;;;;;;1625:40;;;;;;;;;;;;1693:1;1676:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1555:148::o:0;5613:46::-;;;;:::o;5158:43::-;;;;;;;;;;;;;;;;;:::o;1341:79::-;1379:7;1406:6;;;;;;;;;;;1399:13;;1341:79;:::o;5666:48::-;;;;:::o;6664:87::-;6703:13;6736:7;;;;;;;;;;;;;;;;;6729:14;;6664:87;:::o;16508:254::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16642:8:::1;16625:14;:25;;;;16679:9;16661:15;:27;;;;16714:6;16699:12;:21;;;;16747:7;16731:13;:23;;;;16508:254:::0;;;;:::o;12242:95::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12317:12:::1;12303:11;;:26;;;;;;;;;;;;;;;;;;12242:95:::0;:::o;7195:199::-;7300:4;7322:42;7332:12;:10;:12::i;:::-;7346:9;7357:6;7322:9;:42::i;:::-;7382:4;7375:11;;7195:199;;;;:::o;12589:236::-;12656:19;;;;;;;;;;;12640:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12695:17;;;;;;;;;;;12679:33;;:12;:10;:12::i;:::-;:33;;;12640:72;12632:81;;;;;;12724:26;12753:21;12724:50;;12785:32;12798:18;12785:12;:32::i;:::-;12621:204;12589:236::o;13012:93::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13092:5:::1;13077:4;:12;13082:6;13077:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13012:93:::0;:::o;5120:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;17308:234::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17425:9:::1;17421:114;17444:8;;:15;;17440:1;:19;17421:114;;;17515:8;17481:18;:31;17500:8;;17509:1;17500:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17481:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17461:3;;;;;:::i;:::-;;;;17421:114;;;;17308:234:::0;;;:::o;12833:171::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12911:9:::1;12906:91;12930:5;:12;12926:1;:16;12906:91;;;12981:4;12964;:14;12969:5;12975:1;12969:8;;;;;;;;:::i;:::-;;;;;;;;12964:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12944:3;;;;;:::i;:::-;;;;12906:91;;;;12833:171:::0;:::o;7402:184::-;7519:7;7551:11;:18;7563:5;7551:18;;;;;;;;;;;;;;;:27;7570:7;7551:27;;;;;;;;;;;;;;;;7544:34;;7402:184;;;;:::o;1711:244::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:1:::1;1800:22;;:8;:22;;;;1792:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1910:8;1881:38;;1902:6;::::0;::::1;;;;;;;;1881:38;;;;;;;;;;;;1939:8;1930:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1711:244:::0;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;8929:369::-;9073:1;9056:19;;:5;:19;;;;9048:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9154:1;9135:21;;:7;:21;;;;9127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9236:6;9206:11;:18;9218:5;9206:18;;;;;;;;;;;;;;;:27;9225:7;9206:27;;;;;;;;;;;;;;;:36;;;;9274:7;9258:32;;9267:5;9258:32;;;9283:6;9258:32;;;;;;:::i;:::-;;;;;;;;8929:369;;;:::o;9306:2330::-;9444:1;9428:18;;:4;:18;;;;9420:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9521:1;9507:16;;:2;:16;;;;9499:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9591:1;9582:6;:10;9574:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9663:7;:5;:7::i;:::-;9655:15;;:4;:15;;;;:32;;;;;9680:7;:5;:7::i;:::-;9674:13;;:2;:13;;;;9655:32;9651:1259;;;9744:11;;;;;;;;;;;9739:144;;9792:7;:5;:7::i;:::-;9784:15;;:4;:15;;;9776:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9739:144;9917:12;;9907:6;:22;;9899:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9986:4;:10;9991:4;9986:10;;;;;;;;;;;;;;;;;;;;;;;;;9985:11;:24;;;;;10001:4;:8;10006:2;10001:8;;;;;;;;;;;;;;;;;;;;;;;;;10000:9;9985:24;9977:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10075:13;;;;;;;;;;;10069:19;;:2;:19;;;10066:146;;10142:14;;10133:6;10117:13;10127:2;10117:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10109:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10066:146;10228:28;10259:24;10277:4;10259:9;:24::i;:::-;10228:55;;10298:12;10337:19;;10313:20;:43;;10298:58;;10400:12;;10376:20;:36;10373:124;;10469:12;;10446:35;;10373:124;10517:7;:18;;;;;10529:6;;;;;;;;;;10528:7;10517:18;:43;;;;;10547:13;;;;;;;;;;;10539:21;;:4;:21;;;;10517:43;:58;;;;;10564:11;;;;;;;;;;;10517:58;:87;;;;;10580:18;:24;10599:4;10580:24;;;;;;;;;;;;;;;;;;;;;;;;;10579:25;10517:87;:114;;;;;10609:18;:22;10628:2;10609:22;;;;;;;;;;;;;;;;;;;;;;;;;10608:23;10517:114;10513:386;;;10652:38;10669:20;10652:16;:38::i;:::-;10709:26;10738:21;10709:50;;10803:1;10782:18;:22;10778:106;;;10829:35;10842:21;10829:12;:35::i;:::-;10778:106;10633:266;10513:386;9689:1221;;9651:1259;10922:12;10937:4;10922:19;;10986:18;:24;11005:4;10986:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11014:18;:22;11033:2;11014:22;;;;;;;;;;;;;;;;;;;;;;;;;10986:50;10985:102;;;;11050:13;;;;;;;;;;;11042:21;;:4;:21;;;;:44;;;;;11073:13;;;;;;;;;;;11067:19;;:2;:19;;;;11042:44;10985:102;10981:594;;;11114:5;11104:15;;10981:594;;;11197:13;;;;;;;;;;;11189:21;;:4;:21;;;:55;;;;;11228:15;;;;;;;;;;;11214:30;;:2;:30;;;;11189:55;11186:162;;;11277:14;;11265:9;:26;;;;11320:12;;11310:7;:22;;;;11186:162;11407:13;;;;;;;;;;;11401:19;;:2;:19;;;:55;;;;;11440:15;;;;;;;;;;;11424:32;;:4;:32;;;;11401:55;11397:165;;;11489:15;;11477:9;:27;;;;11533:13;;11523:7;:23;;;;11397:165;10981:594;11587:41;11602:4;11608:2;11612:6;11620:7;11587:14;:41::i;:::-;9409:2227;9306:2330;;;:::o;2319:224::-;2439:7;2472:1;2467;:6;;2475:12;2459:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2499:9;2515:1;2511;:5;;;;:::i;:::-;2499:17;;2534:1;2527:8;;;2319:224;;;;;:::o;11644:483::-;5874:4;5865:6;;:13;;;;;;;;;;;;;;;;;;11722:21:::1;11760:1;11746:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11722:40;;11791:4;11773;11778:1;11773:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11817:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11807:4;11812:1;11807:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11850:62;11867:4;11882:15;;;;;;;;;;;11900:11;11850:8;:62::i;:::-;11923:15;;;;;;;;;;;:66;;;12004:11;12030:1;12046:4;12073;12093:15;11923:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11711:416;5910:5:::0;5901:6;;:14;;;;;;;;;;;;;;;;;;11644:483;:::o;8249:323::-;8344:7;8402;;8391;:18;;8369:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8490:19;8512:10;:8;:10::i;:::-;8490:32;;8540:24;8552:11;8540:7;:11;;:24;;;;:::i;:::-;8533:31;;;8249:323;;;:::o;12135:99::-;12192:17;;;;;;;;;;;:26;;:34;12219:6;12192:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12135:99;:::o;13113:279::-;13269:7;13264:25;;13278:11;:9;:11::i;:::-;13264:25;13300:44;13318:6;13326:9;13337:6;13300:17;:44::i;:::-;13360:7;13355:29;;13369:15;:13;:15::i;:::-;13355:29;13113:279;;;;:::o;16071:164::-;16113:7;16134:15;16151;16170:19;:17;:19::i;:::-;16133:56;;;;16207:20;16219:7;16207;:11;;:20;;;;:::i;:::-;16200:27;;;;16071:164;:::o;2805:132::-;2863:7;2890:39;2894:1;2897;2890:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2883:46;;2805:132;;;;:::o;8580:216::-;8637:1;8624:9;;:14;:30;;;;;8653:1;8642:7;;:12;8624:30;8620:43;;;8656:7;;8620:43;8695:9;;8675:17;:29;;;;8733:7;;8715:15;:25;;;;8765:1;8753:9;:13;;;;8787:1;8777:7;:11;;;;8580:216;:::o;13400:610::-;13547:15;13577:23;13615:12;13642:23;13680:12;13707:13;13734:19;13745:7;13734:10;:19::i;:::-;13532:221;;;;;;;;;;;;13782:28;13802:7;13782;:15;13790:6;13782:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13764:7;:15;13772:6;13764:15;;;;;;;;;;;;;;;:46;;;;13842:39;13865:15;13842:7;:18;13850:9;13842:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13821:7;:18;13829:9;13821:18;;;;;;;;;;;;;;;:60;;;;13892:16;13902:5;13892:9;:16::i;:::-;13919:23;13931:4;13937;13919:11;:23::i;:::-;13975:9;13958:44;;13967:6;13958:44;;;13986:15;13958:44;;;;;;:::i;:::-;;;;;;;;13521:489;;;;;;13400:610;;;:::o;8804:117::-;8860:17;;8848:9;:29;;;;8898:15;;8888:7;:25;;;;8804:117::o;16243:257::-;16294:7;16303;16323:15;16341:7;;16323:25;;16359:15;4622:18;16359:25;;16409:20;4622:18;16409:7;;:11;;:20;;;;:::i;:::-;16399:7;:30;16395:61;;;16439:7;;4622:18;16431:25;;;;;;;;16395:61;16475:7;16484;16467:25;;;;;;16243:257;;;:::o;2945:223::-;3065:7;3097:1;3093;:5;3100:12;3085:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3124:9;3140:1;3136;:5;;;;:::i;:::-;3124:17;;3159:1;3152:8;;;2945:223;;;;;:::o;14429:615::-;14529:7;14551;14573;14595;14617;14639;14675:23;14700:12;14714:13;14744:40;14756:7;14765:9;;14776:7;;14744:11;:40::i;:::-;14674:110;;;;;;14795:19;14817:10;:8;:10::i;:::-;14795:32;;14839:15;14856:23;14881:12;14910:46;14922:7;14931:4;14937:5;14944:11;14910;:46::i;:::-;14838:118;;;;;;14975:7;14984:15;15001:4;15007:15;15024:4;15030:5;14967:69;;;;;;;;;;;;;;;;;;;14429:615;;;;;;;:::o;2175:136::-;2233:7;2260:43;2264:1;2267;2260:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2253:50;;2175:136;;;;:::o;1988:179::-;2046:7;2066:9;2082:1;2078;:5;;;;:::i;:::-;2066:17;;2107:1;2102;:6;;2094:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2158:1;2151:8;;;1988:179;;;;:::o;14018:211::-;14071:19;14093:10;:8;:10::i;:::-;14071:32;;14114:13;14130:22;14140:11;14130:5;:9;;:22;;;;:::i;:::-;14114:38;;14188:33;14215:5;14188:7;:22;14204:4;14188:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14163:7;:22;14179:4;14163:22;;;;;;;;;;;;;;;:58;;;;14060:169;;14018:211;:::o;14237:147::-;14315:17;14327:4;14315:7;;:11;;:17;;;;:::i;:::-;14305:7;:27;;;;14356:20;14371:4;14356:10;;:14;;:20;;;;:::i;:::-;14343:10;:33;;;;14237:147;;:::o;15052:469::-;15221:7;15243;15265;15300:12;15315:30;15341:3;15315:21;15327:8;15315:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15300:45;;15356:13;15372:28;15396:3;15372:19;15384:6;15372:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15356:44;;15411:23;15437:28;15459:5;15437:17;15449:4;15437:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15411:54;;15484:15;15501:4;15507:5;15476:37;;;;;;;;;15052:469;;;;;;;:::o;15529:534::-;15723:7;15745;15767;15802:15;15820:24;15832:11;15820:7;:11;;:24;;;;:::i;:::-;15802:42;;15855:12;15870:21;15879:11;15870:4;:8;;:21;;;;:::i;:::-;15855:36;;15902:13;15918:22;15928:11;15918:5;:9;;:22;;;;:::i;:::-;15902:38;;15951:23;15977:28;15999:5;15977:17;15989:4;15977:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15951:54;;16024:7;16033:15;16050:4;16016:39;;;;;;;;;;15529:534;;;;;;;;:::o;2551:246::-;2609:7;2638:1;2633;:6;2629:47;;;2663:1;2656:8;;;;2629:47;2686:9;2702:1;2698;:5;;;;:::i;:::-;2686:17;;2731:1;2726;2722;:5;;;;:::i;:::-;:10;2714:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2788:1;2781:8;;;2551: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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:329::-;5933:6;5982:2;5970:9;5961:7;5957:23;5953:32;5950:119;;;5988:79;;:::i;:::-;5950:119;6108:1;6133:53;6178:7;6169:6;6158:9;6154:22;6133:53;:::i;:::-;6123:63;;6079:117;5874:329;;;;:::o;6209:118::-;6296:24;6314:5;6296:24;:::i;:::-;6291:3;6284:37;6209:118;;:::o;6333:222::-;6426:4;6464:2;6453:9;6449:18;6441:26;;6477:71;6545:1;6534:9;6530:17;6521:6;6477:71;:::i;:::-;6333:222;;;;:::o;6561:474::-;6629:6;6637;6686:2;6674:9;6665:7;6661:23;6657:32;6654:119;;;6692:79;;:::i;:::-;6654:119;6812:1;6837:53;6882:7;6873:6;6862:9;6858:22;6837:53;:::i;:::-;6827:63;;6783:117;6939:2;6965:53;7010:7;7001:6;6990:9;6986:22;6965:53;:::i;:::-;6955:63;;6910:118;6561:474;;;;;:::o;7041:116::-;7111:21;7126:5;7111:21;:::i;:::-;7104:5;7101:32;7091:60;;7147:1;7144;7137:12;7091:60;7041:116;:::o;7163:133::-;7206:5;7244:6;7231:20;7222:29;;7260:30;7284:5;7260:30;:::i;:::-;7163:133;;;;:::o;7302:323::-;7358:6;7407:2;7395:9;7386:7;7382:23;7378:32;7375:119;;;7413:79;;:::i;:::-;7375:119;7533:1;7558:50;7600:7;7591:6;7580:9;7576:22;7558:50;:::i;:::-;7548:60;;7504:114;7302:323;;;;:::o;7631:329::-;7690:6;7739:2;7727:9;7718:7;7714:23;7710:32;7707:119;;;7745:79;;:::i;:::-;7707:119;7865:1;7890:53;7935:7;7926:6;7915:9;7911:22;7890:53;:::i;:::-;7880:63;;7836:117;7631:329;;;;:::o;7966:765::-;8052:6;8060;8068;8076;8125:3;8113:9;8104:7;8100:23;8096:33;8093:120;;;8132:79;;:::i;:::-;8093:120;8252:1;8277:53;8322:7;8313:6;8302:9;8298:22;8277:53;:::i;:::-;8267:63;;8223:117;8379:2;8405:53;8450:7;8441:6;8430:9;8426:22;8405:53;:::i;:::-;8395:63;;8350:118;8507:2;8533:53;8578:7;8569:6;8558:9;8554:22;8533:53;:::i;:::-;8523:63;;8478:118;8635:2;8661:53;8706:7;8697:6;8686:9;8682:22;8661:53;:::i;:::-;8651:63;;8606:118;7966:765;;;;;;;:::o;8737:117::-;8846:1;8843;8836:12;8860:117;8969:1;8966;8959:12;8983:117;9092:1;9089;9082:12;9123:568;9196:8;9206:6;9256:3;9249:4;9241:6;9237:17;9233:27;9223:122;;9264:79;;:::i;:::-;9223:122;9377:6;9364:20;9354:30;;9407:18;9399:6;9396:30;9393:117;;;9429:79;;:::i;:::-;9393:117;9543:4;9535:6;9531:17;9519:29;;9597:3;9589:4;9581:6;9577:17;9567:8;9563:32;9560:41;9557:128;;;9604:79;;:::i;:::-;9557:128;9123:568;;;;;:::o;9697:698::-;9789:6;9797;9805;9854:2;9842:9;9833:7;9829:23;9825:32;9822:119;;;9860:79;;:::i;:::-;9822:119;10008:1;9997:9;9993:17;9980:31;10038:18;10030:6;10027:30;10024:117;;;10060:79;;:::i;:::-;10024:117;10173:80;10245:7;10236:6;10225:9;10221:22;10173:80;:::i;:::-;10155:98;;;;9951:312;10302:2;10328:50;10370:7;10361:6;10350:9;10346:22;10328:50;:::i;:::-;10318:60;;10273:115;9697:698;;;;;:::o;10401:180::-;10449:77;10446:1;10439:88;10546:4;10543:1;10536:15;10570:4;10567:1;10560:15;10587:281;10670:27;10692:4;10670:27;:::i;:::-;10662:6;10658:40;10800:6;10788:10;10785:22;10764:18;10752:10;10749:34;10746:62;10743:88;;;10811:18;;:::i;:::-;10743:88;10851:10;10847:2;10840:22;10630:238;10587:281;;:::o;10874:129::-;10908:6;10935:20;;:::i;:::-;10925:30;;10964:33;10992:4;10984:6;10964:33;:::i;:::-;10874:129;;;:::o;11009:311::-;11086:4;11176:18;11168:6;11165:30;11162:56;;;11198:18;;:::i;:::-;11162:56;11248:4;11240:6;11236:17;11228:25;;11308:4;11302;11298:15;11290:23;;11009:311;;;:::o;11343:710::-;11439:5;11464:81;11480:64;11537:6;11480:64;:::i;:::-;11464:81;:::i;:::-;11455:90;;11565:5;11594:6;11587:5;11580:21;11628:4;11621:5;11617:16;11610:23;;11681:4;11673:6;11669:17;11661:6;11657:30;11710:3;11702:6;11699:15;11696:122;;;11729:79;;:::i;:::-;11696:122;11844:6;11827:220;11861:6;11856:3;11853:15;11827:220;;;11936:3;11965:37;11998:3;11986:10;11965:37;:::i;:::-;11960:3;11953:50;12032:4;12027:3;12023:14;12016:21;;11903:144;11887:4;11882:3;11878:14;11871:21;;11827:220;;;11831:21;11445:608;;11343:710;;;;;:::o;12076:370::-;12147:5;12196:3;12189:4;12181:6;12177:17;12173:27;12163:122;;12204:79;;:::i;:::-;12163:122;12321:6;12308:20;12346:94;12436:3;12428:6;12421:4;12413:6;12409:17;12346:94;:::i;:::-;12337:103;;12153:293;12076:370;;;;:::o;12452:539::-;12536:6;12585:2;12573:9;12564:7;12560:23;12556:32;12553:119;;;12591:79;;:::i;:::-;12553:119;12739:1;12728:9;12724:17;12711:31;12769:18;12761:6;12758:30;12755:117;;;12791:79;;:::i;:::-;12755:117;12896:78;12966:7;12957:6;12946:9;12942:22;12896:78;:::i;:::-;12886:88;;12682:302;12452:539;;;;:::o;12997:474::-;13065:6;13073;13122:2;13110:9;13101:7;13097:23;13093:32;13090:119;;;13128:79;;:::i;:::-;13090:119;13248:1;13273:53;13318:7;13309:6;13298:9;13294:22;13273:53;:::i;:::-;13263:63;;13219:117;13375:2;13401:53;13446:7;13437:6;13426:9;13422:22;13401:53;:::i;:::-;13391:63;;13346:118;12997:474;;;;;:::o;13477:182::-;13617:34;13613:1;13605:6;13601:14;13594:58;13477:182;:::o;13665:366::-;13807:3;13828:67;13892:2;13887:3;13828:67;:::i;:::-;13821:74;;13904:93;13993:3;13904:93;:::i;:::-;14022:2;14017:3;14013:12;14006:19;;13665:366;;;:::o;14037:419::-;14203:4;14241:2;14230:9;14226:18;14218:26;;14290:9;14284:4;14280:20;14276:1;14265:9;14261:17;14254:47;14318:131;14444:4;14318:131;:::i;:::-;14310:139;;14037:419;;;:::o;14462:180::-;14510:77;14507:1;14500:88;14607:4;14604:1;14597:15;14631:4;14628:1;14621:15;14648:180;14696:77;14693:1;14686:88;14793:4;14790:1;14783:15;14817:4;14814:1;14807:15;14834:233;14873:3;14896:24;14914:5;14896:24;:::i;:::-;14887:33;;14942:66;14935:5;14932:77;14929:103;;;15012:18;;:::i;:::-;14929:103;15059:1;15052:5;15048:13;15041:20;;14834:233;;;:::o;15073:225::-;15213:34;15209:1;15201:6;15197:14;15190:58;15282:8;15277:2;15269:6;15265:15;15258:33;15073:225;:::o;15304:366::-;15446:3;15467:67;15531:2;15526:3;15467:67;:::i;:::-;15460:74;;15543:93;15632:3;15543:93;:::i;:::-;15661:2;15656:3;15652:12;15645:19;;15304:366;;;:::o;15676:419::-;15842:4;15880:2;15869:9;15865:18;15857:26;;15929:9;15923:4;15919:20;15915:1;15904:9;15900:17;15893:47;15957:131;16083:4;15957:131;:::i;:::-;15949:139;;15676:419;;;:::o;16101:223::-;16241:34;16237:1;16229:6;16225:14;16218:58;16310:6;16305:2;16297:6;16293:15;16286:31;16101:223;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:221::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:4;17331:2;17323:6;17319:15;17312:29;17127:221;:::o;17354:366::-;17496:3;17517:67;17581:2;17576:3;17517:67;:::i;:::-;17510:74;;17593:93;17682:3;17593:93;:::i;:::-;17711:2;17706:3;17702:12;17695:19;;17354:366;;;:::o;17726:419::-;17892:4;17930:2;17919:9;17915:18;17907:26;;17979:9;17973:4;17969:20;17965:1;17954:9;17950:17;17943:47;18007:131;18133:4;18007:131;:::i;:::-;17999:139;;17726:419;;;:::o;18151:224::-;18291:34;18287:1;18279:6;18275:14;18268:58;18360:7;18355:2;18347:6;18343:15;18336:32;18151:224;:::o;18381:366::-;18523:3;18544:67;18608:2;18603:3;18544:67;:::i;:::-;18537:74;;18620:93;18709:3;18620:93;:::i;:::-;18738:2;18733:3;18729:12;18722:19;;18381:366;;;:::o;18753:419::-;18919:4;18957:2;18946:9;18942:18;18934:26;;19006:9;19000:4;18996:20;18992:1;18981:9;18977:17;18970:47;19034:131;19160:4;19034:131;:::i;:::-;19026:139;;18753:419;;;:::o;19178:222::-;19318:34;19314:1;19306:6;19302:14;19295:58;19387:5;19382:2;19374:6;19370:15;19363:30;19178:222;:::o;19406:366::-;19548:3;19569:67;19633:2;19628:3;19569:67;:::i;:::-;19562:74;;19645:93;19734:3;19645:93;:::i;:::-;19763:2;19758:3;19754:12;19747:19;;19406:366;;;:::o;19778:419::-;19944:4;19982:2;19971:9;19967:18;19959:26;;20031:9;20025:4;20021:20;20017:1;20006:9;20002:17;19995:47;20059:131;20185:4;20059:131;:::i;:::-;20051:139;;19778:419;;;:::o;20203:228::-;20343:34;20339:1;20331:6;20327:14;20320:58;20412:11;20407:2;20399:6;20395:15;20388:36;20203:228;:::o;20437:366::-;20579:3;20600:67;20664:2;20659:3;20600:67;:::i;:::-;20593:74;;20676:93;20765:3;20676:93;:::i;:::-;20794:2;20789:3;20785:12;20778:19;;20437:366;;;:::o;20809:419::-;20975:4;21013:2;21002:9;20998:18;20990:26;;21062:9;21056:4;21052:20;21048:1;21037:9;21033:17;21026:47;21090:131;21216:4;21090:131;:::i;:::-;21082:139;;20809:419;;;:::o;21234:250::-;21374:34;21370:1;21362:6;21358:14;21351:58;21443:33;21438:2;21430:6;21426:15;21419:58;21234:250;:::o;21490:366::-;21632:3;21653:67;21717:2;21712:3;21653:67;:::i;:::-;21646:74;;21729:93;21818:3;21729:93;:::i;:::-;21847:2;21842:3;21838:12;21831:19;;21490:366;;;:::o;21862:419::-;22028:4;22066:2;22055:9;22051:18;22043:26;;22115:9;22109:4;22105:20;22101:1;22090:9;22086:17;22079:47;22143:131;22269:4;22143:131;:::i;:::-;22135:139;;21862:419;;;:::o;22287:178::-;22427:30;22423:1;22415:6;22411:14;22404:54;22287:178;:::o;22471:366::-;22613:3;22634:67;22698:2;22693:3;22634:67;:::i;:::-;22627:74;;22710:93;22799:3;22710:93;:::i;:::-;22828:2;22823:3;22819:12;22812:19;;22471:366;;;:::o;22843:419::-;23009:4;23047:2;23036:9;23032:18;23024:26;;23096:9;23090:4;23086:20;23082:1;23071:9;23067:17;23060:47;23124:131;23250:4;23124:131;:::i;:::-;23116:139;;22843:419;;;:::o;23268:222::-;23408:34;23404:1;23396:6;23392:14;23385:58;23477:5;23472:2;23464:6;23460:15;23453:30;23268:222;:::o;23496:366::-;23638:3;23659:67;23723:2;23718:3;23659:67;:::i;:::-;23652:74;;23735:93;23824:3;23735:93;:::i;:::-;23853:2;23848:3;23844:12;23837:19;;23496:366;;;:::o;23868:419::-;24034:4;24072:2;24061:9;24057:18;24049:26;;24121:9;24115:4;24111:20;24107:1;24096:9;24092:17;24085:47;24149:131;24275:4;24149:131;:::i;:::-;24141:139;;23868:419;;;:::o;24293:305::-;24333:3;24352:20;24370:1;24352:20;:::i;:::-;24347:25;;24386:20;24404:1;24386:20;:::i;:::-;24381:25;;24540:1;24472:66;24468:74;24465:1;24462:81;24459:107;;;24546:18;;:::i;:::-;24459:107;24590:1;24587;24583:9;24576:16;;24293:305;;;;:::o;24604:222::-;24744:34;24740:1;24732:6;24728:14;24721:58;24813:5;24808:2;24800:6;24796:15;24789:30;24604:222;:::o;24832:366::-;24974:3;24995:67;25059:2;25054:3;24995:67;:::i;:::-;24988:74;;25071:93;25160:3;25071:93;:::i;:::-;25189:2;25184:3;25180:12;25173:19;;24832:366;;;:::o;25204:419::-;25370:4;25408:2;25397:9;25393:18;25385:26;;25457:9;25451:4;25447:20;25443:1;25432:9;25428:17;25421:47;25485:131;25611:4;25485:131;:::i;:::-;25477:139;;25204:419;;;:::o;25629:191::-;25669:4;25689:20;25707:1;25689:20;:::i;:::-;25684:25;;25723:20;25741:1;25723:20;:::i;:::-;25718:25;;25762:1;25759;25756:8;25753:34;;;25767:18;;:::i;:::-;25753:34;25812:1;25809;25805:9;25797:17;;25629:191;;;;:::o;25826:143::-;25883:5;25914:6;25908:13;25899:22;;25930:33;25957:5;25930:33;:::i;:::-;25826:143;;;;:::o;25975:351::-;26045:6;26094:2;26082:9;26073:7;26069:23;26065:32;26062:119;;;26100:79;;:::i;:::-;26062:119;26220:1;26245:64;26301:7;26292:6;26281:9;26277:22;26245:64;:::i;:::-;26235:74;;26191:128;25975:351;;;;:::o;26332:85::-;26377:7;26406:5;26395:16;;26332:85;;;:::o;26423:158::-;26481:9;26514:61;26532:42;26541:32;26567:5;26541:32;:::i;:::-;26532:42;:::i;:::-;26514:61;:::i;:::-;26501:74;;26423:158;;;:::o;26587:147::-;26682:45;26721:5;26682:45;:::i;:::-;26677:3;26670:58;26587:147;;:::o;26740:114::-;26807:6;26841:5;26835:12;26825:22;;26740:114;;;:::o;26860:184::-;26959:11;26993:6;26988:3;26981:19;27033:4;27028:3;27024:14;27009:29;;26860:184;;;;:::o;27050:132::-;27117:4;27140:3;27132:11;;27170:4;27165:3;27161:14;27153:22;;27050:132;;;:::o;27188:108::-;27265:24;27283:5;27265:24;:::i;:::-;27260:3;27253:37;27188:108;;:::o;27302:179::-;27371:10;27392:46;27434:3;27426:6;27392:46;:::i;:::-;27470:4;27465:3;27461:14;27447:28;;27302:179;;;;:::o;27487:113::-;27557:4;27589;27584:3;27580:14;27572:22;;27487:113;;;:::o;27636:732::-;27755:3;27784:54;27832:5;27784:54;:::i;:::-;27854:86;27933:6;27928:3;27854:86;:::i;:::-;27847:93;;27964:56;28014:5;27964:56;:::i;:::-;28043:7;28074:1;28059:284;28084:6;28081:1;28078:13;28059:284;;;28160:6;28154:13;28187:63;28246:3;28231:13;28187:63;:::i;:::-;28180:70;;28273:60;28326:6;28273:60;:::i;:::-;28263:70;;28119:224;28106:1;28103;28099:9;28094:14;;28059:284;;;28063:14;28359:3;28352:10;;27760:608;;;27636:732;;;;:::o;28374:831::-;28637:4;28675:3;28664:9;28660:19;28652:27;;28689:71;28757:1;28746:9;28742:17;28733:6;28689:71;:::i;:::-;28770:80;28846:2;28835:9;28831:18;28822:6;28770:80;:::i;:::-;28897:9;28891:4;28887:20;28882:2;28871:9;28867:18;28860:48;28925:108;29028:4;29019:6;28925:108;:::i;:::-;28917:116;;29043:72;29111:2;29100:9;29096:18;29087:6;29043:72;:::i;:::-;29125:73;29193:3;29182:9;29178:19;29169:6;29125:73;:::i;:::-;28374:831;;;;;;;;:::o;29211:229::-;29351:34;29347:1;29339:6;29335:14;29328:58;29420:12;29415:2;29407:6;29403:15;29396:37;29211:229;:::o;29446:366::-;29588:3;29609:67;29673:2;29668:3;29609:67;:::i;:::-;29602:74;;29685:93;29774:3;29685:93;:::i;:::-;29803:2;29798:3;29794:12;29787:19;;29446:366;;;:::o;29818:419::-;29984:4;30022:2;30011:9;30007:18;29999:26;;30071:9;30065:4;30061:20;30057:1;30046:9;30042:17;30035:47;30099:131;30225:4;30099:131;:::i;:::-;30091:139;;29818:419;;;:::o;30243:180::-;30291:77;30288:1;30281:88;30388:4;30385:1;30378:15;30412:4;30409:1;30402:15;30429:185;30469:1;30486:20;30504:1;30486:20;:::i;:::-;30481:25;;30520:20;30538:1;30520:20;:::i;:::-;30515:25;;30559:1;30549:35;;30564:18;;:::i;:::-;30549:35;30606:1;30603;30599:9;30594:14;;30429:185;;;;:::o;30620:177::-;30760:29;30756:1;30748:6;30744:14;30737:53;30620:177;:::o;30803:366::-;30945:3;30966:67;31030:2;31025:3;30966:67;:::i;:::-;30959:74;;31042:93;31131:3;31042:93;:::i;:::-;31160:2;31155:3;31151:12;31144:19;;30803:366;;;:::o;31175:419::-;31341:4;31379:2;31368:9;31364:18;31356:26;;31428:9;31422:4;31418:20;31414:1;31403:9;31399:17;31392:47;31456:131;31582:4;31456:131;:::i;:::-;31448:139;;31175:419;;;:::o;31600:348::-;31640:7;31663:20;31681:1;31663:20;:::i;:::-;31658:25;;31697:20;31715:1;31697:20;:::i;:::-;31692:25;;31885:1;31817:66;31813:74;31810:1;31807:81;31802:1;31795:9;31788:17;31784:105;31781:131;;;31892:18;;:::i;:::-;31781:131;31940:1;31937;31933:9;31922:20;;31600:348;;;;:::o;31954:220::-;32094:34;32090:1;32082:6;32078:14;32071:58;32163:3;32158:2;32150:6;32146:15;32139:28;31954:220;:::o;32180:366::-;32322:3;32343:67;32407:2;32402:3;32343:67;:::i;:::-;32336:74;;32419:93;32508:3;32419:93;:::i;:::-;32537:2;32532:3;32528:12;32521:19;;32180:366;;;:::o;32552:419::-;32718:4;32756:2;32745:9;32741:18;32733:26;;32805:9;32799:4;32795:20;32791:1;32780:9;32776:17;32769:47;32833:131;32959:4;32833:131;:::i;:::-;32825:139;;32552:419;;;:::o
Swarm Source
ipfs://b36210c3845336143c4c1c2ae4706d23b9f2fb72d494a9ee647c3764f9863734
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.