ERC-20
Overview
Max Total Supply
1,000,000,000 Tengu
Holders
21
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,810,899.985937931233446531 TenguValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Tengu
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-13 */ // SPDX-License-Identifier: MIT /** Tengu is a legendary creature found in Japanese Myth. It is considered as one of the god (Kami). Tengu will be the next ERC-20 token in the gods' world. The launch will be stealth! Tokenomics: - Tax both 8/8 - Max transaction 3% - Max Wallet 3% Portal: https://t.me/TenguETH Twitter: https://twitter.com/TenguERC20 */ pragma solidity ^0.8.4; 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); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract Tengu is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => uint) private cooldown; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1_000_000_000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 public _tokensBuyFee = 8; uint256 public _tokensSellFee = 8; uint256 private _swapTokensAt; uint256 private _maxTokensToSwapForFees; address payable private _feeAddrWallet; string private constant _name = "Tengu"; string private constant _symbol = "Tengu"; uint8 private constant _decimals = 18; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; bool private cooldownEnabled = false; uint256 private _maxWalletAmount = _tTotal; uint256 private _maxTxAmount = _tTotal; event MaxWalletAmountUpdated(uint _maxWalletAmount); constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _feeAddrWallet = payable(0xE060dF71BeF02006C793325de8f700254A9a53Cc); _rOwned[_msgSender()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_feeAddrWallet] = true; emit Transfer(address(0x0000000000000000000000000000000000000000), _msgSender(), _tTotal); } // public functions function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function manualswap() public { require(_msgSender() == _feeAddrWallet); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() public { require(_msgSender() == _feeAddrWallet); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function manualswapsend() external { require(_msgSender() == _feeAddrWallet); manualswap(); manualsend(); } // ownable functions function openTrading() external onlyOwner() { require(!tradingOpen, "trading is already open"); swapEnabled = true; cooldownEnabled = true; tradingOpen = true; _maxWalletAmount = _tTotal * 3 / 100; _maxTxAmount = _tTotal * 3 / 100; _swapTokensAt = _tTotal * 25 / 10000; _maxTokensToSwapForFees = _swapTokensAt * 20; IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } function updateBuyFee(uint256 _fee) external onlyOwner { require(_fee <= 8, 'fee can not set more than 8%'); _tokensBuyFee = _fee; } function updateSellFee(uint256 _fee) external onlyOwner { require(_fee <= 8, 'fee can not set more than 8%'); _tokensSellFee = _fee; } function removeStrictWalletLimit() external onlyOwner { _maxWalletAmount = _tTotal; } function removeStrictTxLimit() external onlyOwner { _maxTxAmount = _tTotal; } function setSwapTokensAt(uint256 amount) external onlyOwner() { _swapTokensAt = amount; } function setMaxTokensToSwapForFees(uint256 amount) external onlyOwner() { _maxTokensToSwapForFees = amount; } function setCooldownEnabled(bool onoff) external onlyOwner() { cooldownEnabled = onoff; } function excludeFromFee(address user, bool excluded) external onlyOwner() { _isExcludedFromFee[user] = excluded; } // private functions 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 _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"); require(tradingOpen || _isExcludedFromFee[from] || _isExcludedFromFee[to], "Trading not enabled yet"); if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { if ( from == uniswapV2Pair && to != address(uniswapV2Router) && cooldownEnabled) { require(balanceOf(to) + amount <= _maxWalletAmount); require(amount <= _maxTxAmount); // Cooldown require(cooldown[to] < block.timestamp); cooldown[to] = block.timestamp + (15 seconds); } if (to == uniswapV2Pair && cooldownEnabled) { require(amount <= _maxTxAmount); } uint256 swapAmount = balanceOf(address(this)); if(swapAmount > _maxTokensToSwapForFees) { swapAmount = _maxTokensToSwapForFees; } if (swapAmount >= _swapTokensAt && !inSwap && from != uniswapV2Pair && swapEnabled) { inSwap = true; swapTokensForEth(swapAmount); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(contractETHBalance); } inSwap = false; } } _tokenTransfer(from,to,amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _feeAddrWallet.transfer(amount); } function _tokenTransfer(address sender, address recipient, uint256 amount) private { _transferStandard(sender, recipient, amount); } function _getTokenFee(address sender, address recipient) private view returns (uint256) { if(!tradingOpen || inSwap) { return 0; } if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) { return 0; } if(sender == uniswapV2Pair) { // if buy return _tokensBuyFee; } else if (recipient == uniswapV2Pair) { // if sell return _tokensSellFee; } return 0; } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tTeam) = _getValues(tAmount, _getTokenFee(sender, recipient)); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); 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, uint256 tokenFee) private view returns (uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tTeam) = _getTValues(tAmount, tokenFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount) = _getRValues(tAmount, tTeam, currentRate); return (rAmount, rTransferAmount, tTransferAmount, tTeam); } function _getTValues(uint256 tAmount, uint256 teamFee) private pure returns (uint256, uint256) { uint256 tTeam = tAmount.mul(teamFee).div(100); uint256 tTransferAmount = tAmount.sub(tTeam); return (tTransferAmount, tTeam); } function _getRValues(uint256 tAmount, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rTeam); return (rAmount, rTransferAmount); } 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); } }
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":"_maxWalletAmount","type":"uint256"}],"name":"MaxWalletAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_tokensBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokensSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswapsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStrictTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStrictWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTokensToSwapForFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"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":"uint256","name":"_fee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526200001e6b033b2e3c9fd0803ce8000000600019620003fa565b6200002c90600019620003d6565b60075560086009819055600a55600f805462ffffff60a81b191690556b033b2e3c9fd0803ce800000060108190556011553480156200006a57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b1580156200010d57600080fd5b505afa15801562000122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001489190620003a6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200019157600080fd5b505afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc9190620003a6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200021557600080fd5b505af11580156200022a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002509190620003a6565b600f80546001600160a01b03929092166001600160a01b0319928316179055600d805490911673e060df71bef02006c793325de8f700254a9a53cc179055600754600260006200029d3390565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160056000620002d76200039760201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005909352818320805485166001908117909155600d54909116835291208054909216179055620003363390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce80000006040516200038891815260200190565b60405180910390a3506200041b565b6000546001600160a01b031690565b600060208284031215620003b8578081fd5b81516001600160a01b0381168114620003cf578182fd5b9392505050565b600082821015620003f557634e487b7160e01b81526011600452602481fd5b500390565b6000826200041657634e487b7160e01b81526012600452602481fd5b500690565b6119ba806200042b6000396000f3fe60806040526004361061016a5760003560e01c8063729d8a87116100d1578063c3c8cd801161008a578063df8408fe11610064578063df8408fe14610415578063f1b758b814610435578063f46a903b1461044b578063ff8726021461046157600080fd5b8063c3c8cd80146103a5578063c9567bf9146103ba578063dd62ed3e146103cf57600080fd5b8063729d8a87146103135780638da5cb5b1461033357806395d89b411461017657806399ce371a1461035b578063a9059cbb14610370578063ba05e9bc1461039057600080fd5b8063467abe0a11610123578063467abe0a1461026957806353674ba6146102895780635932ead1146102a95780636fc3eaec146102c957806370a08231146102de578063715018a6146102fe57600080fd5b806306fdde0314610176578063095ea7b3146101b357806318160ddd146101e35780631d933a4a1461020b57806323b872dd1461022d578063313ce5671461024d57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b50604080518082018252600581526454656e677560d81b602082015290516101aa91906117bd565b60405180910390f35b3480156101bf57600080fd5b506101d36101ce366004611742565b610476565b60405190151581526020016101aa565b3480156101ef57600080fd5b50676765c793fa10079d601b1b5b6040519081526020016101aa565b34801561021757600080fd5b5061022b6102263660046117a5565b61048d565b005b34801561023957600080fd5b506101d36102483660046116d5565b610516565b34801561025957600080fd5b50604051601281526020016101aa565b34801561027557600080fd5b5061022b6102843660046117a5565b61057f565b34801561029557600080fd5b5061022b6102a43660046117a5565b6105ff565b3480156102b557600080fd5b5061022b6102c436600461176d565b61062e565b3480156102d557600080fd5b5061022b610676565b3480156102ea57600080fd5b506101fd6102f9366004611665565b6106a3565b34801561030a57600080fd5b5061022b6106c5565b34801561031f57600080fd5b5061022b61032e3660046117a5565b610739565b34801561033f57600080fd5b506000546040516001600160a01b0390911681526020016101aa565b34801561036757600080fd5b5061022b610768565b34801561037c57600080fd5b506101d361038b366004611742565b6107a3565b34801561039c57600080fd5b5061022b6107b0565b3480156103b157600080fd5b5061022b6107e2565b3480156103c657600080fd5b5061022b610818565b3480156103db57600080fd5b506101fd6103ea36600461169d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561042157600080fd5b5061022b610430366004611715565b6109be565b34801561044157600080fd5b506101fd600a5481565b34801561045757600080fd5b506101fd60095481565b34801561046d57600080fd5b5061022b610a13565b6000610483338484610a4e565b5060015b92915050565b6000546001600160a01b031633146104c05760405162461bcd60e51b81526004016104b790611810565b60405180910390fd5b60088111156105115760405162461bcd60e51b815260206004820152601c60248201527f6665652063616e206e6f7420736574206d6f7265207468616e2038250000000060448201526064016104b7565b600a55565b6000610523848484610b72565b61057584336105708560405180606001604052806028815260200161195d602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610f32565b610a4e565b5060019392505050565b6000546001600160a01b031633146105a95760405162461bcd60e51b81526004016104b790611810565b60088111156105fa5760405162461bcd60e51b815260206004820152601c60248201527f6665652063616e206e6f7420736574206d6f7265207468616e2038250000000060448201526064016104b7565b600955565b6000546001600160a01b031633146106295760405162461bcd60e51b81526004016104b790611810565b600b55565b6000546001600160a01b031633146106585760405162461bcd60e51b81526004016104b790611810565b600f8054911515600160b81b0260ff60b81b19909216919091179055565b600d546001600160a01b0316336001600160a01b03161461069657600080fd5b476106a081610f6c565b50565b6001600160a01b03811660009081526002602052604081205461048790610faa565b6000546001600160a01b031633146106ef5760405162461bcd60e51b81526004016104b790611810565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107635760405162461bcd60e51b81526004016104b790611810565b600c55565b6000546001600160a01b031633146107925760405162461bcd60e51b81526004016104b790611810565b676765c793fa10079d601b1b601055565b6000610483338484610b72565b600d546001600160a01b0316336001600160a01b0316146107d057600080fd5b6107d86107e2565b6107e0610676565b565b600d546001600160a01b0316336001600160a01b03161461080257600080fd5b600061080d306106a3565b90506106a08161102e565b6000546001600160a01b031633146108425760405162461bcd60e51b81526004016104b790611810565b600f54600160a01b900460ff161561089c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104b7565b600f805463ffff00ff60a01b1916630101000160a01b17905560646108cd676765c793fa10079d601b1b60036118ed565b6108d791906118cd565b60105560646108f2676765c793fa10079d601b1b60036118ed565b6108fc91906118cd565b601155612710610918676765c793fa10079d601b1b60196118ed565b61092291906118cd565b600b8190556109329060146118ed565b600c55600f54600e5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b390604401602060405180830381600087803b15801561098657600080fd5b505af115801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a09190611789565b6000546001600160a01b031633146109e85760405162461bcd60e51b81526004016104b790611810565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610a3d5760405162461bcd60e51b81526004016104b790611810565b676765c793fa10079d601b1b601155565b6001600160a01b038316610ab05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b7565b6001600160a01b038216610b115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b7565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610bd65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b7565b6001600160a01b038216610c385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b7565b60008111610c9a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104b7565b600f54600160a01b900460ff1680610cca57506001600160a01b03831660009081526005602052604090205460ff165b80610ced57506001600160a01b03821660009081526005602052604090205460ff165b610d395760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064016104b7565b6001600160a01b03831660009081526005602052604090205460ff16158015610d7b57506001600160a01b03821660009081526005602052604090205460ff16155b15610f2257600f546001600160a01b038481169116148015610dab5750600e546001600160a01b03838116911614155b8015610dc05750600f54600160b81b900460ff165b15610e3f5760105481610dd2846106a3565b610ddc91906118b5565b1115610de757600080fd5b601154811115610df657600080fd5b6001600160a01b0382166000908152600660205260409020544211610e1a57600080fd5b610e2542600f6118b5565b6001600160a01b0383166000908152600660205260409020555b600f546001600160a01b038381169116148015610e655750600f54600160b81b900460ff165b15610e7957601154811115610e7957600080fd5b6000610e84306106a3565b9050600c54811115610e955750600c545b600b548110158015610eb15750600f54600160a81b900460ff16155b8015610ecb5750600f546001600160a01b03858116911614155b8015610ee05750600f54600160b01b900460ff165b15610f2057600f805460ff60a81b1916600160a81b179055610f018161102e565b478015610f1157610f1181610f6c565b50600f805460ff60a81b191690555b505b610f2d8383836111b3565b505050565b60008184841115610f565760405162461bcd60e51b81526004016104b791906117bd565b506000610f63848661190c565b95945050505050565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fa6573d6000803e3d6000fd5b5050565b60006007548211156110115760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104b7565b600061101b6111be565b905061102783826111e1565b9392505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061107157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156110c557600080fd5b505afa1580156110d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fd9190611681565b8160018151811061111e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600e546111449130911684610a4e565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061117d908590600090869030904290600401611845565b600060405180830381600087803b15801561119757600080fd5b505af11580156111ab573d6000803e3d6000fd5b505050505050565b610f2d838383611223565b60008060006111cb611310565b90925090506111da82826111e1565b9250505090565b600061102783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611356565b60008060008061123c856112378989611384565b611449565b6001600160a01b038b1660009081526002602052604090205493975091955093509150611269908561148f565b6001600160a01b03808916600090815260026020526040808220939093559088168152205461129890846114d1565b6001600160a01b0387166000908152600260205260409020556112ba81611530565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112ff91815260200190565b60405180910390a350505050505050565b6007546000908190676765c793fa10079d601b1b61132e82826111e1565b82101561134d57505060075492676765c793fa10079d601b1b92509050565b90939092509050565b600081836113775760405162461bcd60e51b81526004016104b791906117bd565b506000610f6384866118cd565b600f54600090600160a01b900460ff1615806113a95750600f54600160a81b900460ff165b156113b657506000610487565b6001600160a01b03831660009081526005602052604090205460ff16806113f557506001600160a01b03821660009081526005602052604090205460ff165b1561140257506000610487565b600f546001600160a01b03848116911614156114215750600954610487565b600f546001600160a01b03838116911614156114405750600a54610487565b50600092915050565b60008060008060008061145c888861157a565b91509150600061146a6111be565b905060008061147a8b85856115ad565b909c909b509499509297509295505050505050565b600061102783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f32565b6000806114de83856118b5565b9050838110156110275760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104b7565b600061153a6111be565b9050600061154883836115e6565b3060009081526002602052604090205490915061156590826114d1565b30600090815260026020526040902055505050565b60008080611593606461158d87876115e6565b906111e1565b905060006115a1868361148f565b96919550909350505050565b600080806115bb86856115e6565b905060006115c986866115e6565b905060006115d7838361148f565b92989297509195505050505050565b6000826115f557506000610487565b600061160183856118ed565b90508261160e85836118cd565b146110275760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104b7565b600060208284031215611676578081fd5b813561102781611939565b600060208284031215611692578081fd5b815161102781611939565b600080604083850312156116af578081fd5b82356116ba81611939565b915060208301356116ca81611939565b809150509250929050565b6000806000606084860312156116e9578081fd5b83356116f481611939565b9250602084013561170481611939565b929592945050506040919091013590565b60008060408385031215611727578182fd5b823561173281611939565b915060208301356116ca8161194e565b60008060408385031215611754578182fd5b823561175f81611939565b946020939093013593505050565b60006020828403121561177e578081fd5b81356110278161194e565b60006020828403121561179a578081fd5b81516110278161194e565b6000602082840312156117b6578081fd5b5035919050565b6000602080835283518082850152825b818110156117e9578581018301518582016040015282016117cd565b818111156117fa5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156118945784516001600160a01b03168352938301939183019160010161186f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118c8576118c8611923565b500190565b6000826118e857634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561190757611907611923565b500290565b60008282101561191e5761191e611923565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146106a057600080fd5b80151581146106a057600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208be52b316441fa7a20d3c6f095273f1fa346d5e00907b310a1ae444c671d3c7564736f6c63430008040033
Deployed Bytecode
0x60806040526004361061016a5760003560e01c8063729d8a87116100d1578063c3c8cd801161008a578063df8408fe11610064578063df8408fe14610415578063f1b758b814610435578063f46a903b1461044b578063ff8726021461046157600080fd5b8063c3c8cd80146103a5578063c9567bf9146103ba578063dd62ed3e146103cf57600080fd5b8063729d8a87146103135780638da5cb5b1461033357806395d89b411461017657806399ce371a1461035b578063a9059cbb14610370578063ba05e9bc1461039057600080fd5b8063467abe0a11610123578063467abe0a1461026957806353674ba6146102895780635932ead1146102a95780636fc3eaec146102c957806370a08231146102de578063715018a6146102fe57600080fd5b806306fdde0314610176578063095ea7b3146101b357806318160ddd146101e35780631d933a4a1461020b57806323b872dd1461022d578063313ce5671461024d57600080fd5b3661017157005b600080fd5b34801561018257600080fd5b50604080518082018252600581526454656e677560d81b602082015290516101aa91906117bd565b60405180910390f35b3480156101bf57600080fd5b506101d36101ce366004611742565b610476565b60405190151581526020016101aa565b3480156101ef57600080fd5b50676765c793fa10079d601b1b5b6040519081526020016101aa565b34801561021757600080fd5b5061022b6102263660046117a5565b61048d565b005b34801561023957600080fd5b506101d36102483660046116d5565b610516565b34801561025957600080fd5b50604051601281526020016101aa565b34801561027557600080fd5b5061022b6102843660046117a5565b61057f565b34801561029557600080fd5b5061022b6102a43660046117a5565b6105ff565b3480156102b557600080fd5b5061022b6102c436600461176d565b61062e565b3480156102d557600080fd5b5061022b610676565b3480156102ea57600080fd5b506101fd6102f9366004611665565b6106a3565b34801561030a57600080fd5b5061022b6106c5565b34801561031f57600080fd5b5061022b61032e3660046117a5565b610739565b34801561033f57600080fd5b506000546040516001600160a01b0390911681526020016101aa565b34801561036757600080fd5b5061022b610768565b34801561037c57600080fd5b506101d361038b366004611742565b6107a3565b34801561039c57600080fd5b5061022b6107b0565b3480156103b157600080fd5b5061022b6107e2565b3480156103c657600080fd5b5061022b610818565b3480156103db57600080fd5b506101fd6103ea36600461169d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561042157600080fd5b5061022b610430366004611715565b6109be565b34801561044157600080fd5b506101fd600a5481565b34801561045757600080fd5b506101fd60095481565b34801561046d57600080fd5b5061022b610a13565b6000610483338484610a4e565b5060015b92915050565b6000546001600160a01b031633146104c05760405162461bcd60e51b81526004016104b790611810565b60405180910390fd5b60088111156105115760405162461bcd60e51b815260206004820152601c60248201527f6665652063616e206e6f7420736574206d6f7265207468616e2038250000000060448201526064016104b7565b600a55565b6000610523848484610b72565b61057584336105708560405180606001604052806028815260200161195d602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610f32565b610a4e565b5060019392505050565b6000546001600160a01b031633146105a95760405162461bcd60e51b81526004016104b790611810565b60088111156105fa5760405162461bcd60e51b815260206004820152601c60248201527f6665652063616e206e6f7420736574206d6f7265207468616e2038250000000060448201526064016104b7565b600955565b6000546001600160a01b031633146106295760405162461bcd60e51b81526004016104b790611810565b600b55565b6000546001600160a01b031633146106585760405162461bcd60e51b81526004016104b790611810565b600f8054911515600160b81b0260ff60b81b19909216919091179055565b600d546001600160a01b0316336001600160a01b03161461069657600080fd5b476106a081610f6c565b50565b6001600160a01b03811660009081526002602052604081205461048790610faa565b6000546001600160a01b031633146106ef5760405162461bcd60e51b81526004016104b790611810565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146107635760405162461bcd60e51b81526004016104b790611810565b600c55565b6000546001600160a01b031633146107925760405162461bcd60e51b81526004016104b790611810565b676765c793fa10079d601b1b601055565b6000610483338484610b72565b600d546001600160a01b0316336001600160a01b0316146107d057600080fd5b6107d86107e2565b6107e0610676565b565b600d546001600160a01b0316336001600160a01b03161461080257600080fd5b600061080d306106a3565b90506106a08161102e565b6000546001600160a01b031633146108425760405162461bcd60e51b81526004016104b790611810565b600f54600160a01b900460ff161561089c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104b7565b600f805463ffff00ff60a01b1916630101000160a01b17905560646108cd676765c793fa10079d601b1b60036118ed565b6108d791906118cd565b60105560646108f2676765c793fa10079d601b1b60036118ed565b6108fc91906118cd565b601155612710610918676765c793fa10079d601b1b60196118ed565b61092291906118cd565b600b8190556109329060146118ed565b600c55600f54600e5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b390604401602060405180830381600087803b15801561098657600080fd5b505af115801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a09190611789565b6000546001600160a01b031633146109e85760405162461bcd60e51b81526004016104b790611810565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610a3d5760405162461bcd60e51b81526004016104b790611810565b676765c793fa10079d601b1b601155565b6001600160a01b038316610ab05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b7565b6001600160a01b038216610b115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b7565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610bd65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b7565b6001600160a01b038216610c385760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b7565b60008111610c9a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104b7565b600f54600160a01b900460ff1680610cca57506001600160a01b03831660009081526005602052604090205460ff165b80610ced57506001600160a01b03821660009081526005602052604090205460ff165b610d395760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064016104b7565b6001600160a01b03831660009081526005602052604090205460ff16158015610d7b57506001600160a01b03821660009081526005602052604090205460ff16155b15610f2257600f546001600160a01b038481169116148015610dab5750600e546001600160a01b03838116911614155b8015610dc05750600f54600160b81b900460ff165b15610e3f5760105481610dd2846106a3565b610ddc91906118b5565b1115610de757600080fd5b601154811115610df657600080fd5b6001600160a01b0382166000908152600660205260409020544211610e1a57600080fd5b610e2542600f6118b5565b6001600160a01b0383166000908152600660205260409020555b600f546001600160a01b038381169116148015610e655750600f54600160b81b900460ff165b15610e7957601154811115610e7957600080fd5b6000610e84306106a3565b9050600c54811115610e955750600c545b600b548110158015610eb15750600f54600160a81b900460ff16155b8015610ecb5750600f546001600160a01b03858116911614155b8015610ee05750600f54600160b01b900460ff165b15610f2057600f805460ff60a81b1916600160a81b179055610f018161102e565b478015610f1157610f1181610f6c565b50600f805460ff60a81b191690555b505b610f2d8383836111b3565b505050565b60008184841115610f565760405162461bcd60e51b81526004016104b791906117bd565b506000610f63848661190c565b95945050505050565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fa6573d6000803e3d6000fd5b5050565b60006007548211156110115760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016104b7565b600061101b6111be565b905061102783826111e1565b9392505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061107157634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156110c557600080fd5b505afa1580156110d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fd9190611681565b8160018151811061111e57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600e546111449130911684610a4e565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061117d908590600090869030904290600401611845565b600060405180830381600087803b15801561119757600080fd5b505af11580156111ab573d6000803e3d6000fd5b505050505050565b610f2d838383611223565b60008060006111cb611310565b90925090506111da82826111e1565b9250505090565b600061102783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611356565b60008060008061123c856112378989611384565b611449565b6001600160a01b038b1660009081526002602052604090205493975091955093509150611269908561148f565b6001600160a01b03808916600090815260026020526040808220939093559088168152205461129890846114d1565b6001600160a01b0387166000908152600260205260409020556112ba81611530565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112ff91815260200190565b60405180910390a350505050505050565b6007546000908190676765c793fa10079d601b1b61132e82826111e1565b82101561134d57505060075492676765c793fa10079d601b1b92509050565b90939092509050565b600081836113775760405162461bcd60e51b81526004016104b791906117bd565b506000610f6384866118cd565b600f54600090600160a01b900460ff1615806113a95750600f54600160a81b900460ff165b156113b657506000610487565b6001600160a01b03831660009081526005602052604090205460ff16806113f557506001600160a01b03821660009081526005602052604090205460ff165b1561140257506000610487565b600f546001600160a01b03848116911614156114215750600954610487565b600f546001600160a01b03838116911614156114405750600a54610487565b50600092915050565b60008060008060008061145c888861157a565b91509150600061146a6111be565b905060008061147a8b85856115ad565b909c909b509499509297509295505050505050565b600061102783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f32565b6000806114de83856118b5565b9050838110156110275760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104b7565b600061153a6111be565b9050600061154883836115e6565b3060009081526002602052604090205490915061156590826114d1565b30600090815260026020526040902055505050565b60008080611593606461158d87876115e6565b906111e1565b905060006115a1868361148f565b96919550909350505050565b600080806115bb86856115e6565b905060006115c986866115e6565b905060006115d7838361148f565b92989297509195505050505050565b6000826115f557506000610487565b600061160183856118ed565b90508261160e85836118cd565b146110275760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016104b7565b600060208284031215611676578081fd5b813561102781611939565b600060208284031215611692578081fd5b815161102781611939565b600080604083850312156116af578081fd5b82356116ba81611939565b915060208301356116ca81611939565b809150509250929050565b6000806000606084860312156116e9578081fd5b83356116f481611939565b9250602084013561170481611939565b929592945050506040919091013590565b60008060408385031215611727578182fd5b823561173281611939565b915060208301356116ca8161194e565b60008060408385031215611754578182fd5b823561175f81611939565b946020939093013593505050565b60006020828403121561177e578081fd5b81356110278161194e565b60006020828403121561179a578081fd5b81516110278161194e565b6000602082840312156117b6578081fd5b5035919050565b6000602080835283518082850152825b818110156117e9578581018301518582016040015282016117cd565b818111156117fa5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156118945784516001600160a01b03168352938301939183019160010161186f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156118c8576118c8611923565b500190565b6000826118e857634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561190757611907611923565b500290565b60008282101561191e5761191e611923565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146106a057600080fd5b80151581146106a057600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208be52b316441fa7a20d3c6f095273f1fa346d5e00907b310a1ae444c671d3c7564736f6c63430008040033
Deployed Bytecode Sourcemap
3853:11458:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5901:83;;;;;;;;;;-1:-1:-1;5971:5:0;;;;;;;;;;;-1:-1:-1;;;5971:5:0;;;;5901:83;;;;5971:5;5901:83;:::i;:::-;;;;;;;;6753:161;;;;;;;;;;-1:-1:-1;6753:161:0;;;;;:::i;:::-;;:::i;:::-;;;3506:14:1;;3499:22;3481:41;;3469:2;3454:18;6753:161:0;3436:92:1;6178:95:0;;;;;;;;;;-1:-1:-1;;;;6178:95:0;;;8906:25:1;;;8894:2;8879:18;6178:95:0;8861:76:1;8472:157:0;;;;;;;;;;-1:-1:-1;8472:157:0;;;;;:::i;:::-;;:::i;:::-;;6922:313;;;;;;;;;;-1:-1:-1;6922:313:0;;;;;:::i;:::-;;:::i;6087:83::-;;;;;;;;;;-1:-1:-1;6087:83:0;;4771:2;10072:36:1;;10060:2;10045:18;6087:83:0;10027:87:1;8309:155:0;;;;;;;;;;-1:-1:-1;8309:155:0;;;;;:::i;:::-;;:::i;8843:103::-;;;;;;;;;;-1:-1:-1;8843:103:0;;;;;:::i;:::-;;:::i;9085:::-;;;;;;;;;;-1:-1:-1;9085:103:0;;;;;:::i;:::-;;:::i;7443:191::-;;;;;;;;;;;;;:::i;6281:138::-;;;;;;;;;;-1:-1:-1;6281:138:0;;;;;:::i;:::-;;:::i;2934:148::-;;;;;;;;;;;;;:::i;8954:123::-;;;;;;;;;;-1:-1:-1;8954:123:0;;;;;:::i;:::-;;:::i;2720:79::-;;;;;;;;;;-1:-1:-1;2758:7:0;2785:6;2720:79;;-1:-1:-1;;;;;2785:6:0;;;3000:51:1;;2988:2;2973:18;2720:79:0;2955:102:1;8637:99:0;;;;;;;;;;;;;:::i;6427:167::-;;;;;;;;;;-1:-1:-1;6427:167:0;;;;;:::i;:::-;;:::i;7642:139::-;;;;;;;;;;;;;:::i;7243:192::-;;;;;;;;;;;;;:::i;7819:482::-;;;;;;;;;;;;;:::i;6602:143::-;;;;;;;;;;-1:-1:-1;6602:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6710:18:0;;;6683:7;6710:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6602:143;9196:128;;;;;;;;;;-1:-1:-1;9196:128:0;;;;;:::i;:::-;;:::i;4467:33::-;;;;;;;;;;;;;;;;4428:32;;;;;;;;;;;;;;;;8744:91;;;;;;;;;;;;;:::i;6753:161::-;6828:4;6845:39;518:10;6868:7;6877:6;6845:8;:39::i;:::-;-1:-1:-1;6902:4:0;6753:161;;;;;:::o;8472:157::-;2847:6;;-1:-1:-1;;;;;2847:6:0;518:10;2847:22;2839:67;;;;-1:-1:-1;;;2839:67:0;;;;;;;:::i;:::-;;;;;;;;;8555:1:::1;8547:4;:9;;8539:50;;;::::0;-1:-1:-1;;;8539:50:0;;5917:2:1;8539:50:0::1;::::0;::::1;5899:21:1::0;5956:2;5936:18;;;5929:30;5995;5975:18;;;5968:58;6043:18;;8539:50:0::1;5889:178:1::0;8539:50:0::1;8600:14;:21:::0;8472:157::o;6922:313::-;7020:4;7037:36;7047:6;7055:9;7066:6;7037:9;:36::i;:::-;7084:121;7093:6;518:10;7115:89;7153:6;7115:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7115:19:0;;;;;;:11;:19;;;;;;;;518:10;7115:33;;;;;;;;;;:37;:89::i;:::-;7084:8;:121::i;:::-;-1:-1:-1;7223:4:0;6922:313;;;;;:::o;8309:155::-;2847:6;;-1:-1:-1;;;;;2847:6:0;518:10;2847:22;2839:67;;;;-1:-1:-1;;;2839:67:0;;;;;;;:::i;:::-;8391:1:::1;8383:4;:9;;8375:50;;;::::0;-1:-1:-1;;;8375:50:0;;5917:2:1;8375:50:0::1;::::0;::::1;5899:21:1::0;5956:2;5936:18;;;5929:30;5995;5975:18;;;5968:58;6043:18;;8375:50:0::1;5889:178:1::0;8375:50:0::1;8436:13;:20:::0;8309:155::o;8843:103::-;2847:6;;-1:-1:-1;;;;;2847:6:0;518:10;2847:22;2839:67;;;;-1:-1:-1;;;2839:67:0;;;;;;;:::i;:::-;8916:13:::1;:22:::0;8843:103::o;9085:::-;2847:6;;-1:-1:-1;;;;;2847:6:0;518:10;2847:22;2839:67;;;;-1:-1:-1;;;2839:67:0;;;;;;;:::i;:::-;9157:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;9157:23:0::1;-1:-1:-1::0;;;;9157:23:0;;::::1;::::0;;;::::1;::::0;;9085:103::o;7443:191::-;7507:14;;-1:-1:-1;;;;;7507:14:0;518:10;-1:-1:-1;;;;;7491:30:0;;7483:39;;;;;;7562:21;7594:32;7562:21;7594:12;:32::i;:::-;7443:191;:::o;6281:138::-;-1:-1:-1;;;;;6394:16:0;;6347:7;6394:16;;;:7;:16;;;;;;6374:37;;:19;:37::i;2934:148::-;2847:6;;-1:-1:-1;;;;;2847:6:0;518:10;2847:22;2839:67;;;;-1:-1:-1;;;2839:67:0;;;;;;;:::i;:::-;3041:1:::1;3025:6:::0;;3004:40:::1;::::0;-1:-1:-1;;;;;3025:6:0;;::::1;::::0;3004:40:::1;::::0;3041:1;;3004:40:::1;3072:1;3055:19:::0;;-1:-1:-1;;;;;;3055:19:0::1;::::0;;2934:148::o;8954:123::-;2847:6;;-1:-1:-1;;;;;2847:6:0;518:10;2847:22;2839:67;;;;-1:-1:-1;;;2839:67:0;;;;;;;:::i;:::-;9037:23:::1;:32:::0;8954:123::o;8637:99::-;2847:6;;-1:-1:-1;;;;;2847:6:0;518:10;2847:22;2839:67;;;;-1:-1:-1;;;2839:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;8702:16:0::1;:26:::0;8637:99::o;6427:167::-;6505:4;6522:42;518:10;6546:9;6557:6;6522:9;:42::i;7642:139::-;7712:14;;-1:-1:-1;;;;;7712:14:0;518:10;-1:-1:-1;;;;;7696:30:0;;7688:39;;;;;;7738:12;:10;:12::i;:::-;7761;:10;:12::i;:::-;7642:139::o;7243:192::-;7307:14;;-1:-1:-1;;;;;7307:14:0;518:10;-1:-1:-1;;;;;7291:30:0;;7283:39;;;;;;7333:23;7359:24;7377:4;7359:9;:24::i;:::-;7333:50;;7394:33;7411:15;7394:16;:33::i;7819:482::-;2847:6;;-1:-1:-1;;;;;2847:6:0;518:10;2847:22;2839:67;;;;-1:-1:-1;;;2839:67:0;;;;;;;:::i;:::-;7883:11:::1;::::0;-1:-1:-1;;;7883:11:0;::::1;;;7882:12;7874:48;;;::::0;-1:-1:-1;;;7874:48:0;;8258:2:1;7874:48:0::1;::::0;::::1;8240:21:1::0;8297:2;8277:18;;;8270:30;8336:25;8316:18;;;8309:53;8379:18;;7874:48:0::1;8230:173:1::0;7874:48:0::1;7935:11;:18:::0;;-1:-1:-1;;;;7997:18:0;-1:-1:-1;;;7997:18:0;;;8059:3:::1;8045:11;-1:-1:-1::0;;;8055:1:0::1;8045:11;:::i;:::-;:17;;;;:::i;:::-;8026:16;:36:::0;8102:3:::1;8088:11;-1:-1:-1::0;;;8098:1:0::1;8088:11;:::i;:::-;:17;;;;:::i;:::-;8073:12;:32:::0;8149:5:::1;8134:12;-1:-1:-1::0;;;8144:2:0::1;8134:12;:::i;:::-;:20;;;;:::i;:::-;8118:13;:36:::0;;;8191:18:::1;::::0;8207:2:::1;8191:18;:::i;:::-;8165:23;:44:::0;8229:13:::1;::::0;8260:15:::1;::::0;8222:71:::1;::::0;-1:-1:-1;;;8222:71:0;;-1:-1:-1;;;;;8260:15:0;;::::1;8222:71;::::0;::::1;3236:51:1::0;-1:-1:-1;;3303:18:1;;;3296:34;8229:13:0;::::1;::::0;8222:29:::1;::::0;3209:18:1;;8222:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9196:128::-:0;2847:6;;-1:-1:-1;;;;;2847:6:0;518:10;2847:22;2839:67;;;;-1:-1:-1;;;2839:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9281:24:0;;;::::1;;::::0;;;:18:::1;:24;::::0;;;;:35;;-1:-1:-1;;9281:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9196:128::o;8744:91::-;2847:6;;-1:-1:-1;;;;;2847:6:0;518:10;2847:22;2839:67;;;;-1:-1:-1;;;2839:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;8805:12:0::1;:22:::0;8744:91::o;9622:335::-;-1:-1:-1;;;;;9715:19:0;;9707:68;;;;-1:-1:-1;;;9707:68:0;;7853:2:1;9707:68:0;;;7835:21:1;7892:2;7872:18;;;7865:30;7931:34;7911:18;;;7904:62;-1:-1:-1;;;7982:18:1;;;7975:34;8026:19;;9707:68:0;7825:226:1;9707:68:0;-1:-1:-1;;;;;9794:21:0;;9786:68;;;;-1:-1:-1;;;9786:68:0;;5158:2:1;9786:68:0;;;5140:21:1;5197:2;5177:18;;;5170:30;5236:34;5216:18;;;5209:62;-1:-1:-1;;;5287:18:1;;;5280:32;5329:19;;9786:68:0;5130:224:1;9786:68:0;-1:-1:-1;;;;;9865:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9917:32;;8906:25:1;;;9917:32:0;;8879:18:1;9917:32:0;;;;;;;9622:335;;;:::o;9965:1770::-;-1:-1:-1;;;;;10053:18:0;;10045:68;;;;-1:-1:-1;;;10045:68:0;;7447:2:1;10045:68:0;;;7429:21:1;7486:2;7466:18;;;7459:30;7525:34;7505:18;;;7498:62;-1:-1:-1;;;7576:18:1;;;7569:35;7621:19;;10045:68:0;7419:227:1;10045:68:0;-1:-1:-1;;;;;10132:16:0;;10124:64;;;;-1:-1:-1;;;10124:64:0;;4343:2:1;10124:64:0;;;4325:21:1;4382:2;4362:18;;;4355:30;4421:34;4401:18;;;4394:62;-1:-1:-1;;;4472:18:1;;;4465:33;4515:19;;10124:64:0;4315:225:1;10124:64:0;10216:1;10207:6;:10;10199:64;;;;-1:-1:-1;;;10199:64:0;;7037:2:1;10199:64:0;;;7019:21:1;7076:2;7056:18;;;7049:30;7115:34;7095:18;;;7088:62;-1:-1:-1;;;7166:18:1;;;7159:39;7215:19;;10199:64:0;7009:231:1;10199:64:0;10282:11;;-1:-1:-1;;;10282:11:0;;;;;:39;;-1:-1:-1;;;;;;10297:24:0;;;;;;:18;:24;;;;;;;;10282:39;:65;;;-1:-1:-1;;;;;;10325:22:0;;;;;;:18;:22;;;;;;;;10282:65;10274:101;;;;-1:-1:-1;;;10274:101:0;;8610:2:1;10274:101:0;;;8592:21:1;8649:2;8629:18;;;8622:30;8688:25;8668:18;;;8661:53;8731:18;;10274:101:0;8582:173:1;10274:101:0;-1:-1:-1;;;;;10393:24:0;;;;;;:18;:24;;;;;;;;10392:25;:52;;;;-1:-1:-1;;;;;;10422:22:0;;;;;;:18;:22;;;;;;;;10421:23;10392:52;10388:1297;;;10491:13;;-1:-1:-1;;;;;10483:21:0;;;10491:13;;10483:21;:72;;;;-1:-1:-1;10539:15:0;;-1:-1:-1;;;;;10525:30:0;;;10539:15;;10525:30;;10483:72;:108;;;;-1:-1:-1;10576:15:0;;-1:-1:-1;;;10576:15:0;;;;10483:108;10461:421;;;10646:16;;10636:6;10620:13;10630:2;10620:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;10612:51;;;;;;10700:12;;10690:6;:22;;10682:31;;;;;;-1:-1:-1;;;;;10771:12:0;;;;;;:8;:12;;;;;;10786:15;-1:-1:-1;10763:39:0;;;;;;10836:30;:15;10855:10;10836:30;:::i;:::-;-1:-1:-1;;;;;10821:12:0;;;;;;:8;:12;;;;;:45;10461:421;10908:13;;-1:-1:-1;;;;;10902:19:0;;;10908:13;;10902:19;:38;;;;-1:-1:-1;10925:15:0;;-1:-1:-1;;;10925:15:0;;;;10902:38;10898:108;;;10977:12;;10967:6;:22;;10959:31;;;;;;11022:18;11043:24;11061:4;11043:9;:24::i;:::-;11022:45;;11100:23;;11087:10;:36;11084:112;;;-1:-1:-1;11157:23:0;;11084:112;11230:13;;11216:10;:27;;:55;;;;-1:-1:-1;11265:6:0;;-1:-1:-1;;;11265:6:0;;;;11264:7;11216:55;:97;;;;-1:-1:-1;11300:13:0;;-1:-1:-1;;;;;11292:21:0;;;11300:13;;11292:21;;11216:97;:129;;;;-1:-1:-1;11334:11:0;;-1:-1:-1;;;11334:11:0;;;;11216:129;11212:462;;;11368:6;:13;;-1:-1:-1;;;;11368:13:0;-1:-1:-1;;;11368:13:0;;;11402:28;11419:10;11402:16;:28::i;:::-;11480:21;11525:22;;11522:102;;11572:32;11585:18;11572:12;:32::i;:::-;-1:-1:-1;11644:6:0;:14;;-1:-1:-1;;;;11644:14:0;;;11212:462;10388:1297;;11697:30;11712:4;11717:2;11720:6;11697:14;:30::i;:::-;9965:1770;;;:::o;1575:190::-;1661:7;1697:12;1689:6;;;;1681:29;;;;-1:-1:-1;;;1681:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1721:9:0;1733:5;1737:1;1733;:5;:::i;:::-;1721:17;1575:190;-1:-1:-1;;;;;1575:190:0:o;12224:96::-;12281:14;;:31;;-1:-1:-1;;;;;12281:14:0;;;;:31;;;;;12305:6;;12281:14;:31;:14;:31;12305:6;12281:14;:31;;;;;;;;;;;;;;;;;;;;;12224:96;:::o;9360:254::-;9427:7;9466;;9455;:18;;9447:73;;;;-1:-1:-1;;;9447:73:0;;4747:2:1;9447:73:0;;;4729:21:1;4786:2;4766:18;;;4759:30;4825:34;4805:18;;;4798:62;-1:-1:-1;;;4876:18:1;;;4869:40;4926:19;;9447:73:0;4719:232:1;9447:73:0;9531:19;9554:10;:8;:10::i;:::-;9531:33;-1:-1:-1;9582:24:0;:7;9531:33;9582:11;:24::i;:::-;9575:31;9360:254;-1:-1:-1;;;9360:254:0:o;11743:473::-;11833:16;;;11847:1;11833:16;;;;;;;;11809:21;;11833:16;;;;;;;;;;-1:-1:-1;11833:16:0;11809:40;;11878:4;11860;11865:1;11860:7;;;;;;-1:-1:-1;;;11860:7:0;;;;;;;;;-1:-1:-1;;;;;11860:23:0;;;:7;;;;;;;;;;:23;;;;11904:15;;:22;;;-1:-1:-1;;;11904:22:0;;;;:15;;;;;:20;;:22;;;;;11860:7;;11904:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11894:4;11899:1;11894:7;;;;;;-1:-1:-1;;;11894:7:0;;;;;;;;;-1:-1:-1;;;;;11894:32:0;;;:7;;;;;;;;;:32;11969:15;;11937:62;;11954:4;;11969:15;11987:11;11937:8;:62::i;:::-;12012:15;;:196;;-1:-1:-1;;;12012:196:0;;-1:-1:-1;;;;;12012:15:0;;;;:66;;:196;;12093:11;;12012:15;;12135:4;;12162;;12182:15;;12012:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11743:473;;:::o;12328:146::-;12422:44;12440:6;12448:9;12459:6;12422:17;:44::i;14881:163::-;14922:7;14943:15;14960;14979:19;:17;:19::i;:::-;14942:56;;-1:-1:-1;14942:56:0;-1:-1:-1;15016:20:0;14942:56;;15016:11;:20::i;:::-;15009:27;;;;14881:163;:::o;2027:132::-;2085:7;2112:39;2116:1;2119;2112:39;;;;;;;;;;;;;;;;;:3;:39::i;12982:458::-;13081:15;13098:23;13123;13148:13;13165:52;13176:7;13185:31;13198:6;13206:9;13185:12;:31::i;:::-;13165:10;:52::i;:::-;-1:-1:-1;;;;;13246:15:0;;;;;;:7;:15;;;;;;13080:137;;-1:-1:-1;13080:137:0;;-1:-1:-1;13080:137:0;-1:-1:-1;13080:137:0;-1:-1:-1;13246:28:0;;13080:137;13246:19;:28::i;:::-;-1:-1:-1;;;;;13228:15:0;;;;;;;:7;:15;;;;;;:46;;;;13306:18;;;;;;;:39;;13329:15;13306:22;:39::i;:::-;-1:-1:-1;;;;;13285:18:0;;;;;;:7;:18;;;;;:60;13356:16;13366:5;13356:9;:16::i;:::-;13405:9;-1:-1:-1;;;;;13388:44:0;13397:6;-1:-1:-1;;;;;13388:44:0;;13416:15;13388:44;;;;8906:25:1;;8894:2;8879:18;;8861:76;13388:44:0;;;;;;;;12982:458;;;;;;;:::o;15052:256::-;15149:7;;15102;;;;-1:-1:-1;;;15217:20:0;15149:7;4306:22;15217:11;:20::i;:::-;15207:7;:30;15203:61;;;-1:-1:-1;;15247:7:0;;;-1:-1:-1;;;4306:22:0;-1:-1:-1;15052:256:0;-1:-1:-1;15052:256:0:o;15203:61::-;15283:7;;15292;;-1:-1:-1;15052:256:0;-1:-1:-1;15052:256:0:o;2167:189::-;2253:7;2288:12;2281:5;2273:28;;;;-1:-1:-1;;;2273:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2312:9:0;2324:5;2328:1;2324;:5;:::i;12482:492::-;12585:11;;12561:7;;-1:-1:-1;;;12585:11:0;;;;12584:12;;:22;;-1:-1:-1;12600:6:0;;-1:-1:-1;;;12600:6:0;;;;12584:22;12581:62;;;-1:-1:-1;12630:1:0;12623:8;;12581:62;-1:-1:-1;;;;;12658:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;12688:29:0;;;;;;:18;:29;;;;;;;;12658:59;12655:99;;;-1:-1:-1;12741:1:0;12734:8;;12655:99;12779:13;;-1:-1:-1;;;;;12769:23:0;;;12779:13;;12769:23;12766:180;;;-1:-1:-1;12826:13:0;;12819:20;;12766:180;12874:13;;-1:-1:-1;;;;;12861:26:0;;;12874:13;;12861:26;12857:89;;;-1:-1:-1;12920:14:0;;12913:21;;12857:89;-1:-1:-1;12965:1:0;12482:492;;;;:::o;13866:415::-;13943:7;13952;13961;13970;13993:23;14018:13;14035:30;14047:7;14056:8;14035:11;:30::i;:::-;13992:73;;;;14076:19;14099:10;:8;:10::i;:::-;14076:33;;14121:15;14138:23;14165:40;14177:7;14186:5;14193:11;14165;:40::i;:::-;14120:85;;;;-1:-1:-1;14250:15:0;;-1:-1:-1;14267:5:0;;-1:-1:-1;13866:415:0;;-1:-1:-1;;;;;;13866:415:0:o;1431:136::-;1489:7;1516:43;1520:1;1523;1516:43;;;;;;;;;;;;;;;;;:3;:43::i;1244:179::-;1302:7;;1334:5;1338:1;1334;:5;:::i;:::-;1322:17;;1363:1;1358;:6;;1350:46;;;;-1:-1:-1;;;1350:46:0;;5561:2:1;1350:46:0;;;5543:21:1;5600:2;5580:18;;;5573:30;5639:29;5619:18;;;5612:57;5686:18;;1350:46:0;5533:177:1;13448:212:0;13501:19;13524:10;:8;:10::i;:::-;13501:33;-1:-1:-1;13545:13:0;13561:22;:5;13501:33;13561:9;:22::i;:::-;13635:4;13619:22;;;;:7;:22;;;;;;13545:38;;-1:-1:-1;13619:33:0;;13545:38;13619:26;:33::i;:::-;13610:4;13594:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13448:212:0:o;14289:256::-;14366:7;;;14411:29;14436:3;14411:20;:7;14423;14411:11;:20::i;:::-;:24;;:29::i;:::-;14395:45;-1:-1:-1;14451:23:0;14477:18;:7;14395:45;14477:11;:18::i;:::-;14451:44;14531:5;;-1:-1:-1;14289:256:0;;-1:-1:-1;;;;14289:256:0:o;14553:323::-;14649:7;;;14696:24;:7;14708:11;14696;:24::i;:::-;14678:42;-1:-1:-1;14731:13:0;14747:22;:5;14757:11;14747:9;:22::i;:::-;14731:38;-1:-1:-1;14780:23:0;14806:18;:7;14731:38;14806:11;:18::i;:::-;14843:7;;;;-1:-1:-1;14553:323:0;;-1:-1:-1;;;;;;14553:323:0:o;1773:246::-;1831:7;1855:6;1851:47;;-1:-1:-1;1885:1:0;1878:8;;1851:47;1908:9;1920:5;1924:1;1920;:5;:::i;:::-;1908:17;-1:-1:-1;1953:1:0;1944:5;1948:1;1908:17;1944:5;:::i;:::-;:10;1936:56;;;;-1:-1:-1;;;1936:56:0;;6274:2:1;1936:56:0;;;6256:21:1;6313:2;6293:18;;;6286:30;6352:34;6332:18;;;6325:62;-1:-1:-1;;;6403:18:1;;;6396:31;6444:19;;1936:56:0;6246:223:1;14:257;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:1;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:466::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1156:9;1143:23;1175:31;1200:5;1175:31;:::i;:::-;1225:5;-1:-1:-1;1282:2:1;1267:18;;1254:32;1295:33;1254:32;1295:33;:::i;:::-;1049:362;;1347:7;;-1:-1:-1;;;1401:2:1;1386:18;;;;1373:32;;1049:362::o;1416:392::-;1481:6;1489;1542:2;1530:9;1521:7;1517:23;1513:32;1510:2;;;1563:6;1555;1548:22;1510:2;1607:9;1594:23;1626:31;1651:5;1626:31;:::i;:::-;1676:5;-1:-1:-1;1733:2:1;1718:18;;1705:32;1746:30;1705:32;1746:30;:::i;1813:325::-;1881:6;1889;1942:2;1930:9;1921:7;1917:23;1913:32;1910:2;;;1963:6;1955;1948:22;1910:2;2007:9;1994:23;2026:31;2051:5;2026:31;:::i;:::-;2076:5;2128:2;2113:18;;;;2100:32;;-1:-1:-1;;;1900:238:1:o;2143:251::-;2199:6;2252:2;2240:9;2231:7;2227:23;2223:32;2220:2;;;2273:6;2265;2258:22;2220:2;2317:9;2304:23;2336:28;2358:5;2336:28;:::i;2399:255::-;2466:6;2519:2;2507:9;2498:7;2494:23;2490:32;2487:2;;;2540:6;2532;2525:22;2487:2;2577:9;2571:16;2596:28;2618:5;2596:28;:::i;2659:190::-;2718:6;2771:2;2759:9;2750:7;2746:23;2742:32;2739:2;;;2792:6;2784;2777:22;2739:2;-1:-1:-1;2820:23:1;;2729:120;-1:-1:-1;2729:120:1:o;3533:603::-;3645:4;3674:2;3703;3692:9;3685:21;3735:6;3729:13;3778:6;3773:2;3762:9;3758:18;3751:34;3803:4;3816:140;3830:6;3827:1;3824:13;3816:140;;;3925:14;;;3921:23;;3915:30;3891:17;;;3910:2;3887:26;3880:66;3845:10;;3816:140;;;3974:6;3971:1;3968:13;3965:2;;;4044:4;4039:2;4030:6;4019:9;4015:22;4011:31;4004:45;3965:2;-1:-1:-1;4120:2:1;4099:15;-1:-1:-1;;4095:29:1;4080:45;;;;4127:2;4076:54;;3654:482;-1:-1:-1;;;3654:482:1:o;6474:356::-;6676:2;6658:21;;;6695:18;;;6688:30;6754:34;6749:2;6734:18;;6727:62;6821:2;6806:18;;6648:182::o;8942:983::-;9204:4;9252:3;9241:9;9237:19;9283:6;9272:9;9265:25;9309:2;9347:6;9342:2;9331:9;9327:18;9320:34;9390:3;9385:2;9374:9;9370:18;9363:31;9414:6;9449;9443:13;9480:6;9472;9465:22;9518:3;9507:9;9503:19;9496:26;;9557:2;9549:6;9545:15;9531:29;;9578:4;9591:195;9605:6;9602:1;9599:13;9591:195;;;9670:13;;-1:-1:-1;;;;;9666:39:1;9654:52;;9761:15;;;;9726:12;;;;9702:1;9620:9;9591:195;;;-1:-1:-1;;;;;;;9842:32:1;;;;9837:2;9822:18;;9815:60;-1:-1:-1;;;9906:3:1;9891:19;9884:35;9803:3;9213:712;-1:-1:-1;;;9213:712:1:o;10119:128::-;10159:3;10190:1;10186:6;10183:1;10180:13;10177:2;;;10196:18;;:::i;:::-;-1:-1:-1;10232:9:1;;10167:80::o;10252:217::-;10292:1;10318;10308:2;;-1:-1:-1;;;10343:31:1;;10397:4;10394:1;10387:15;10425:4;10350:1;10415:15;10308:2;-1:-1:-1;10454:9:1;;10298:171::o;10474:168::-;10514:7;10580:1;10576;10572:6;10568:14;10565:1;10562:21;10557:1;10550:9;10543:17;10539:45;10536:2;;;10587:18;;:::i;:::-;-1:-1:-1;10627:9:1;;10526:116::o;10647:125::-;10687:4;10715:1;10712;10709:8;10706:2;;;10720:18;;:::i;:::-;-1:-1:-1;10757:9:1;;10696:76::o;10777:127::-;10838:10;10833:3;10829:20;10826:1;10819:31;10869:4;10866:1;10859:15;10893:4;10890:1;10883:15;10909:131;-1:-1:-1;;;;;10984:31:1;;10974:42;;10964:2;;11030:1;11027;11020:12;11045:118;11131:5;11124:13;11117:21;11110:5;11107:32;11097:2;;11153:1;11150;11143:12
Swarm Source
ipfs://8be52b316441fa7a20d3c6f095273f1fa346d5e00907b310a1ae444c671d3c75
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.