Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000 FDOGE
Holders
41
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.061372714 FDOGEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FitDoge
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-21 */ /** FitDoge $FDOGE FitDoge is a movement bridging together our love of sports and fitness with our passion for crypto while helping today's youth become more active and social. We believe in establishing and promoting healthy lifestyles, connecting with underserved communities, and creating the strongest crypto community through our core values. dApp Move2Earn We are working on developing an app that will reward its users who are actively burning calories (moving, running, working out) by distributing weekly rewards in FitDoge tokens. Move2Earn, Dapp, Rewards. Twitter: https://twitter.com/fitdogeeth Telegram: https://t.me/fitdogeeth Website: https://fitdoge.fit */ pragma solidity ^0.8.16; // SPDX-License-Identifier: UNLICENSED 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 FitDoge 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 => bool) private bots; mapping (address => uint) private cooldown; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 100 * 10**3 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; struct Taxes { uint256 buyFee1; uint256 buyFee2; uint256 sellFee1; uint256 sellFee2; } Taxes private _taxes = Taxes(0,15,0,15); uint256 private initialTotalBuyFee = _taxes.buyFee1 + _taxes.buyFee2; uint256 private initialTotalSellFee = _taxes.sellFee1 + _taxes.sellFee2; uint256 private initialBuyFee = _taxes.buyFee2; uint256 private initialSellFee = _taxes.sellFee2; uint256 private buyFee = 6; uint256 private sellFee = 6; address payable private _feeAddrWallet; uint256 private _feeRate = 20; string private constant _name = "Fit Doge"; string private constant _symbol = "FDOGE"; uint8 private constant _decimals = 9; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; uint256 launchedAt; bool private inSwap = false; bool private swapEnabled = false; bool private cooldownEnabled = false; bool private _isBuy = false; uint256 private _maxTxAmount = _tTotal; uint256 private _maxWalletSize = _tTotal; event MaxTxAmountUpdated(uint _maxTxAmount); event TaxChange(uint _tax); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _feeAddrWallet = payable(0x704e4b968b6792799da8b95E2d33094bc3963Fe2); _rOwned[_msgSender()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_feeAddrWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function setCooldownEnabled(bool onoff) external onlyOwner() { cooldownEnabled = onoff; } 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(amount > 0, "Amount cannot be zero."); _isBuy = true; if (from != owner() && to != owner()) { if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) { // buy require(amount <= _maxTxAmount, "Max transaction exceeded."); require(balanceOf(to) + amount <= _maxWalletSize, "Max wallet exceeded."); } if (from != address(uniswapV2Router) && ! _isExcludedFromFee[from] && to == uniswapV2Pair){ require(!bots[from] && !bots[to]); _isBuy = false; } uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) { contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100); } if (!inSwap && from != uniswapV2Pair && swapEnabled) { require(block.number >= (launchedAt + 5), "Anti sniper mechanism"); swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } if (_taxes.buyFee2 == initialBuyFee || _taxes.sellFee2 == initialSellFee) { _taxes.buyFee2 = buyFee; _taxes.sellFee2 = sellFee; emit TaxChange(_taxes.buyFee2); } } } _tokenTransfer(from,to,amount); } 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 + 60 ); } function getIsBuy() private view returns (bool){ return _isBuy; } function removeLimits() external onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; } function getCurrentFees() public view returns (uint256, uint256, uint256, uint256) { return (_taxes.buyFee1, _taxes.buyFee2, _taxes.sellFee1, _taxes.sellFee2); } function adjustFees(uint256 buyFee1, uint256 buyFee2, uint256 sellFee1, uint256 sellFee2) external onlyOwner { require(buyFee1 + buyFee2 <= 15); require(sellFee1 + sellFee2 <= 15); _taxes.buyFee1 = buyFee1; _taxes.buyFee2 = buyFee2; _taxes.sellFee1 = sellFee1; _taxes.sellFee2 = sellFee2; } function changeMaxTxAmount(uint256 percentage) external onlyOwner{ require(percentage>0); _maxTxAmount = _tTotal.mul(percentage).div(100); } function changeMaxWalletSize(uint256 percentage) external onlyOwner{ require(percentage>0); _maxWalletSize = _tTotal.mul(percentage).div(100); } function setFeeRate(uint256 rate) external onlyOwner() { require(rate<=49); _feeRate = rate; } function sendETHToFee(uint256 amount) private { _feeAddrWallet.transfer(amount); } function openTrading() external onlyOwner() { require(!tradingOpen, "Trading already open."); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); swapEnabled = true; cooldownEnabled = true; _maxTxAmount = _tTotal.mul(3).div(100); _maxWalletSize = _tTotal.mul(3).div(100); tradingOpen = true; launchedAt = block.number; IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } function addBot(address[] memory _bots) public onlyOwner { for (uint i = 0; i < _bots.length; i++) { if (_bots[i] != address(this) && _bots[i] != uniswapV2Pair && _bots[i] != address(uniswapV2Router)){ bots[_bots[i]] = true; } } } function delBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer(address sender, address recipient, uint256 amount) private { _transferStandard(sender, recipient, amount); } 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 manualswap() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external onlyOwner { uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = getIsBuy() ? _getTValues(tAmount, _taxes.buyFee1, _taxes.buyFee2) : _getTValues(tAmount, _taxes.sellFee1, _taxes.sellFee2); 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 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeam = tAmount.mul(TeamFee).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); } }
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":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TaxChange","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":"_bots","type":"address[]"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee1","type":"uint256"},{"internalType":"uint256","name":"buyFee2","type":"uint256"},{"internalType":"uint256","name":"sellFee1","type":"uint256"},{"internalType":"uint256","name":"sellFee2","type":"uint256"}],"name":"adjustFees","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","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":"rate","type":"uint256"}],"name":"setFeeRate","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052655af3107a40006000196200001a9190620004e2565b60001962000029919062000549565b600855604051806080016040528060008152602001600f815260200160008152602001600f815250600a600082015181600001556020820151816001015560408201518160020155606082015181600301555050600a60010154600a6000015462000095919062000584565b600e55600a60030154600a60020154620000b0919062000584565b600f55600a60010154601055600a600301546011556006601255600660135560146015556000601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff0219169083151502179055506000601960026101000a81548160ff0219169083151502179055506000601960036101000a81548160ff021916908315150217905550655af3107a4000601a55655af3107a4000601b553480156200016157600080fd5b506000620001746200047860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073704e4b968b6792799da8b95e2d33094bc3963fe2601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600260006200027e6200047860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002d26200048060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004056200047860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef655af3107a40006040516200046a9190620005d0565b60405180910390a3620005ed565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620004ef82620004a9565b9150620004fc83620004a9565b9250826200050f576200050e620004b3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200055682620004a9565b91506200056383620004a9565b92508282039050818111156200057e576200057d6200051a565b5b92915050565b60006200059182620004a9565b91506200059e83620004a9565b9250828201905080821115620005b957620005b86200051a565b5b92915050565b620005ca81620004a9565b82525050565b6000602082019050620005e76000830184620005bf565b92915050565b613b6580620005fd6000396000f3fe6080604052600436106101445760003560e01c80636fc3eaec116100b657806395d89b411161006f57806395d89b411461041c578063a9059cbb14610447578063b87f137a14610484578063c3c8cd80146104ad578063c9567bf9146104c4578063dd62ed3e146104db5761014b565b80636fc3eaec1461034157806370a0823114610358578063715018a61461039557806371908a03146103ac578063751039fc146103da5780638da5cb5b146103f15761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b57806345596e2e146102c65780635932ead1146102ef578063677daa57146103185761014b565b806306fdde0314610150578063095ea7b31461017b57806317e1df5b146101b857806318160ddd146101e157806321bbcbb11461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610518565b6040516101729190612bb9565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612c83565b610555565b6040516101af9190612cde565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612cf9565b610573565b005b3480156101ed57600080fd5b506101f6610668565b6040516102039190612d6f565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612ed2565b610676565b005b34801561024157600080fd5b5061025c60048036038101906102579190612f1b565b6108d8565b6040516102699190612cde565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190612f6e565b6109b1565b005b3480156102a757600080fd5b506102b0610aa1565b6040516102bd9190612fb7565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612fd2565b610aaa565b005b3480156102fb57600080fd5b506103166004803603810190610311919061302b565b610b57565b005b34801561032457600080fd5b5061033f600480360381019061033a9190612fd2565b610c09565b005b34801561034d57600080fd5b50610356610ce0565b005b34801561036457600080fd5b5061037f600480360381019061037a9190612f6e565b610d86565b60405161038c9190612d6f565b60405180910390f35b3480156103a157600080fd5b506103aa610dd7565b005b3480156103b857600080fd5b506103c1610f2a565b6040516103d19493929190613058565b60405180910390f35b3480156103e657600080fd5b506103ef610f56565b005b3480156103fd57600080fd5b50610406611007565b60405161041391906130ac565b60405180910390f35b34801561042857600080fd5b50610431611030565b60405161043e9190612bb9565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612c83565b61106d565b60405161047b9190612cde565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190612fd2565b61108b565b005b3480156104b957600080fd5b506104c2611162565b005b3480156104d057600080fd5b506104d9611210565b005b3480156104e757600080fd5b5061050260048036038101906104fd91906130c7565b61177c565b60405161050f9190612d6f565b60405180910390f35b60606040518060400160405280600881526020017f46697420446f6765000000000000000000000000000000000000000000000000815250905090565b6000610569610562611803565b848461180b565b6001905092915050565b61057b611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90613153565b60405180910390fd5b600f838561061691906131a2565b111561062157600080fd5b600f818361062f91906131a2565b111561063a57600080fd5b83600a6000018190555082600a6001018190555081600a6002018190555080600a6003018190555050505050565b6000655af3107a4000905090565b61067e611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461070b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070290613153565b60405180910390fd5b60005b81518110156108d4573073ffffffffffffffffffffffffffffffffffffffff16828281518110610741576107406131d6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156107d55750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106107b4576107b36131d6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156108495750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610828576108276131d6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156108c157600160066000848481518110610867576108666131d6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806108cc90613205565b91505061070e565b5050565b60006108e58484846119d4565b6109a6846108f1611803565b6109a185604051806060016040528060288152602001613b0860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610957611803565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120769092919063ffffffff16565b61180b565b600190509392505050565b6109b9611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3d90613153565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610ab2611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690613153565b60405180910390fd5b6031811115610b4d57600080fd5b8060158190555050565b610b5f611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be390613153565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b610c11611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590613153565b60405180910390fd5b60008111610cab57600080fd5b610cd76064610cc983655af3107a40006120da90919063ffffffff16565b61215490919063ffffffff16565b601a8190555050565b610ce8611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c90613153565b60405180910390fd5b6000479050610d838161219e565b50565b6000610dd0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461220a565b9050919050565b610ddf611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390613153565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600a60000154600a60010154600a60020154600a60030154935093509350935090919293565b610f5e611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290613153565b60405180910390fd5b655af3107a4000601a81905550655af3107a4000601b81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f46444f4745000000000000000000000000000000000000000000000000000000815250905090565b600061108161107a611803565b84846119d4565b6001905092915050565b611093611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111790613153565b60405180910390fd5b6000811161112d57600080fd5b611159606461114b83655af3107a40006120da90919063ffffffff16565b61215490919063ffffffff16565b601b8190555050565b61116a611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90613153565b60405180910390fd5b600061120230610d86565b905061120d81612278565b50565b611218611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90613153565b60405180910390fd5b601760149054906101000a900460ff16156112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90613299565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061138230601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16655af3107a400061180b565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f191906132ce565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147c91906132ce565b6040518363ffffffff1660e01b81526004016114999291906132fb565b6020604051808303816000875af11580156114b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dc91906132ce565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061156530610d86565b600080611570611007565b426040518863ffffffff1660e01b815260040161159296959493929190613369565b60606040518083038185885af11580156115b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115d591906133df565b5050506001601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff02191690831515021790555061163b606461162d6003655af3107a40006120da90919063ffffffff16565b61215490919063ffffffff16565b601a8190555061166e60646116606003655af3107a40006120da90919063ffffffff16565b61215490919063ffffffff16565b601b819055506001601760146101000a81548160ff02191690831515021790555043601881905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611735929190613432565b6020604051808303816000875af1158015611754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117789190613470565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361187a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118719061350f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e0906135a1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119c79190612d6f565b60405180910390a3505050565b60008111611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e9061360d565b60405180910390fd5b6001601960036101000a81548160ff021916908315150217905550611a3a611007565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aa85750611a78611007565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561206657601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b585750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bae5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bc65750601960029054906101000a900460ff165b15611c6957601a54811115611c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0790613679565b60405180910390fd5b601b5481611c1d84610d86565b611c2791906131a2565b1115611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f906136e5565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d115750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d6a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611e3857600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e135750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e1c57600080fd5b6000601960036101000a81548160ff0219169083151502179055505b6000611e4330610d86565b9050611e976064611e89601554611e7b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d86565b6120da90919063ffffffff16565b61215490919063ffffffff16565b811115611ef357611ef06064611ee2601554611ed4601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d86565b6120da90919063ffffffff16565b61215490919063ffffffff16565b90505b601960009054906101000a900460ff16158015611f5e5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f765750601960019054906101000a900460ff165b15612064576005601854611f8a91906131a2565b431015611fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc390613751565b60405180910390fd5b611fd581612278565b60004790506000811115611fed57611fec4761219e565b5b601054600a6001015414806120085750601154600a60030154145b1561206257601254600a60010181905550601354600a600301819055507f99d863278bf172c97d9dc766804dd5f6e42388d622d082c2a073780a9fe0c794600a600101546040516120599190612d6f565b60405180910390a15b505b505b6120718383836124fd565b505050565b60008383111582906120be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b59190612bb9565b60405180910390fd5b50600083856120cd9190613771565b9050809150509392505050565b60008083036120ec576000905061214e565b600082846120fa91906137a5565b9050828482612109919061382e565b14612149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612140906138d1565b60405180910390fd5b809150505b92915050565b600061219683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061250d565b905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612206573d6000803e3d6000fd5b5050565b6000600854821115612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890613963565b60405180910390fd5b600061225b612570565b9050612270818461215490919063ffffffff16565b915050919050565b6001601960006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122b0576122af612d8f565b5b6040519080825280602002602001820160405280156122de5781602001602082028036833780820191505090505b50905030816000815181106122f6576122f56131d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c191906132ce565b816001815181106123d5576123d46131d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061243c30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461180b565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c4261248c91906131a2565b6040518663ffffffff1660e01b81526004016124ac959493929190613a41565b600060405180830381600087803b1580156124c657600080fd5b505af11580156124da573d6000803e3d6000fd5b50505050506000601960006101000a81548160ff02191690831515021790555050565b61250883838361259b565b505050565b60008083118290612554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254b9190612bb9565b60405180910390fd5b5060008385612563919061382e565b9050809150509392505050565b600080600061257d612766565b91509150612594818361215490919063ffffffff16565b9250505090565b6000806000806000806125ad876127bf565b95509550955095509550955061260b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126a085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126ec816128fc565b6126f684836129b9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127539190612d6f565b60405180910390a3505050505050505050565b600080600060085490506000655af3107a40009050612796655af3107a400060085461215490919063ffffffff16565b8210156127b257600854655af3107a40009350935050506127bb565b81819350935050505b9091565b60008060008060008060008060006127d56129f3565b6127f3576127ee8a600a60020154600a60030154612a0a565b612809565b6128088a600a60000154600a60010154612a0a565b5b9250925092506000612819612570565b9050600080600061282c8e878787612aa0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061289683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612076565b905092915050565b60008082846128ad91906131a2565b9050838110156128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e990613ae7565b60405180910390fd5b8091505092915050565b6000612906612570565b9050600061291d82846120da90919063ffffffff16565b905061297181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289e90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129ce8260085461285490919063ffffffff16565b6008819055506129e98160095461289e90919063ffffffff16565b6009819055505050565b6000601960039054906101000a900460ff16905090565b600080600080612a366064612a28888a6120da90919063ffffffff16565b61215490919063ffffffff16565b90506000612a606064612a52888b6120da90919063ffffffff16565b61215490919063ffffffff16565b90506000612a8982612a7b858c61285490919063ffffffff16565b61285490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ab985896120da90919063ffffffff16565b90506000612ad086896120da90919063ffffffff16565b90506000612ae787896120da90919063ffffffff16565b90506000612b1082612b02858761285490919063ffffffff16565b61285490919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b63578082015181840152602081019050612b48565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b8b82612b29565b612b958185612b34565b9350612ba5818560208601612b45565b612bae81612b6f565b840191505092915050565b60006020820190508181036000830152612bd38184612b80565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1a82612bef565b9050919050565b612c2a81612c0f565b8114612c3557600080fd5b50565b600081359050612c4781612c21565b92915050565b6000819050919050565b612c6081612c4d565b8114612c6b57600080fd5b50565b600081359050612c7d81612c57565b92915050565b60008060408385031215612c9a57612c99612be5565b5b6000612ca885828601612c38565b9250506020612cb985828601612c6e565b9150509250929050565b60008115159050919050565b612cd881612cc3565b82525050565b6000602082019050612cf36000830184612ccf565b92915050565b60008060008060808587031215612d1357612d12612be5565b5b6000612d2187828801612c6e565b9450506020612d3287828801612c6e565b9350506040612d4387828801612c6e565b9250506060612d5487828801612c6e565b91505092959194509250565b612d6981612c4d565b82525050565b6000602082019050612d846000830184612d60565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612dc782612b6f565b810181811067ffffffffffffffff82111715612de657612de5612d8f565b5b80604052505050565b6000612df9612bdb565b9050612e058282612dbe565b919050565b600067ffffffffffffffff821115612e2557612e24612d8f565b5b602082029050602081019050919050565b600080fd5b6000612e4e612e4984612e0a565b612def565b90508083825260208201905060208402830185811115612e7157612e70612e36565b5b835b81811015612e9a5780612e868882612c38565b845260208401935050602081019050612e73565b5050509392505050565b600082601f830112612eb957612eb8612d8a565b5b8135612ec9848260208601612e3b565b91505092915050565b600060208284031215612ee857612ee7612be5565b5b600082013567ffffffffffffffff811115612f0657612f05612bea565b5b612f1284828501612ea4565b91505092915050565b600080600060608486031215612f3457612f33612be5565b5b6000612f4286828701612c38565b9350506020612f5386828701612c38565b9250506040612f6486828701612c6e565b9150509250925092565b600060208284031215612f8457612f83612be5565b5b6000612f9284828501612c38565b91505092915050565b600060ff82169050919050565b612fb181612f9b565b82525050565b6000602082019050612fcc6000830184612fa8565b92915050565b600060208284031215612fe857612fe7612be5565b5b6000612ff684828501612c6e565b91505092915050565b61300881612cc3565b811461301357600080fd5b50565b60008135905061302581612fff565b92915050565b60006020828403121561304157613040612be5565b5b600061304f84828501613016565b91505092915050565b600060808201905061306d6000830187612d60565b61307a6020830186612d60565b6130876040830185612d60565b6130946060830184612d60565b95945050505050565b6130a681612c0f565b82525050565b60006020820190506130c1600083018461309d565b92915050565b600080604083850312156130de576130dd612be5565b5b60006130ec85828601612c38565b92505060206130fd85828601612c38565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061313d602083612b34565b915061314882613107565b602082019050919050565b6000602082019050818103600083015261316c81613130565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131ad82612c4d565b91506131b883612c4d565b92508282019050808211156131d0576131cf613173565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061321082612c4d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361324257613241613173565b5b600182019050919050565b7f54726164696e6720616c7265616479206f70656e2e0000000000000000000000600082015250565b6000613283601583612b34565b915061328e8261324d565b602082019050919050565b600060208201905081810360008301526132b281613276565b9050919050565b6000815190506132c881612c21565b92915050565b6000602082840312156132e4576132e3612be5565b5b60006132f2848285016132b9565b91505092915050565b6000604082019050613310600083018561309d565b61331d602083018461309d565b9392505050565b6000819050919050565b6000819050919050565b600061335361334e61334984613324565b61332e565b612c4d565b9050919050565b61336381613338565b82525050565b600060c08201905061337e600083018961309d565b61338b6020830188612d60565b613398604083018761335a565b6133a5606083018661335a565b6133b2608083018561309d565b6133bf60a0830184612d60565b979650505050505050565b6000815190506133d981612c57565b92915050565b6000806000606084860312156133f8576133f7612be5565b5b6000613406868287016133ca565b9350506020613417868287016133ca565b9250506040613428868287016133ca565b9150509250925092565b6000604082019050613447600083018561309d565b6134546020830184612d60565b9392505050565b60008151905061346a81612fff565b92915050565b60006020828403121561348657613485612be5565b5b60006134948482850161345b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134f9602483612b34565b91506135048261349d565b604082019050919050565b60006020820190508181036000830152613528816134ec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061358b602283612b34565b91506135968261352f565b604082019050919050565b600060208201905081810360008301526135ba8161357e565b9050919050565b7f416d6f756e742063616e6e6f74206265207a65726f2e00000000000000000000600082015250565b60006135f7601683612b34565b9150613602826135c1565b602082019050919050565b60006020820190508181036000830152613626816135ea565b9050919050565b7f4d6178207472616e73616374696f6e2065786365656465642e00000000000000600082015250565b6000613663601983612b34565b915061366e8261362d565b602082019050919050565b6000602082019050818103600083015261369281613656565b9050919050565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b60006136cf601483612b34565b91506136da82613699565b602082019050919050565b600060208201905081810360008301526136fe816136c2565b9050919050565b7f416e746920736e69706572206d656368616e69736d0000000000000000000000600082015250565b600061373b601583612b34565b915061374682613705565b602082019050919050565b6000602082019050818103600083015261376a8161372e565b9050919050565b600061377c82612c4d565b915061378783612c4d565b925082820390508181111561379f5761379e613173565b5b92915050565b60006137b082612c4d565b91506137bb83612c4d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137f4576137f3613173565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061383982612c4d565b915061384483612c4d565b925082613854576138536137ff565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006138bb602183612b34565b91506138c68261385f565b604082019050919050565b600060208201905081810360008301526138ea816138ae565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061394d602a83612b34565b9150613958826138f1565b604082019050919050565b6000602082019050818103600083015261397c81613940565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139b881612c0f565b82525050565b60006139ca83836139af565b60208301905092915050565b6000602082019050919050565b60006139ee82613983565b6139f8818561398e565b9350613a038361399f565b8060005b83811015613a34578151613a1b88826139be565b9750613a26836139d6565b925050600181019050613a07565b5085935050505092915050565b600060a082019050613a566000830188612d60565b613a63602083018761335a565b8181036040830152613a7581866139e3565b9050613a84606083018561309d565b613a916080830184612d60565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ad1601b83612b34565b9150613adc82613a9b565b602082019050919050565b60006020820190508181036000830152613b0081613ac4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205df53cb7cac0f85b664526a32ca0ac61fb56bf302976340eef4c3d0c358a0fa864736f6c63430008100033
Deployed Bytecode
0x6080604052600436106101445760003560e01c80636fc3eaec116100b657806395d89b411161006f57806395d89b411461041c578063a9059cbb14610447578063b87f137a14610484578063c3c8cd80146104ad578063c9567bf9146104c4578063dd62ed3e146104db5761014b565b80636fc3eaec1461034157806370a0823114610358578063715018a61461039557806371908a03146103ac578063751039fc146103da5780638da5cb5b146103f15761014b565b806323b872dd1161010857806323b872dd14610235578063273123b714610272578063313ce5671461029b57806345596e2e146102c65780635932ead1146102ef578063677daa57146103185761014b565b806306fdde0314610150578063095ea7b31461017b57806317e1df5b146101b857806318160ddd146101e157806321bbcbb11461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610518565b6040516101729190612bb9565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612c83565b610555565b6040516101af9190612cde565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612cf9565b610573565b005b3480156101ed57600080fd5b506101f6610668565b6040516102039190612d6f565b60405180910390f35b34801561021857600080fd5b50610233600480360381019061022e9190612ed2565b610676565b005b34801561024157600080fd5b5061025c60048036038101906102579190612f1b565b6108d8565b6040516102699190612cde565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190612f6e565b6109b1565b005b3480156102a757600080fd5b506102b0610aa1565b6040516102bd9190612fb7565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612fd2565b610aaa565b005b3480156102fb57600080fd5b506103166004803603810190610311919061302b565b610b57565b005b34801561032457600080fd5b5061033f600480360381019061033a9190612fd2565b610c09565b005b34801561034d57600080fd5b50610356610ce0565b005b34801561036457600080fd5b5061037f600480360381019061037a9190612f6e565b610d86565b60405161038c9190612d6f565b60405180910390f35b3480156103a157600080fd5b506103aa610dd7565b005b3480156103b857600080fd5b506103c1610f2a565b6040516103d19493929190613058565b60405180910390f35b3480156103e657600080fd5b506103ef610f56565b005b3480156103fd57600080fd5b50610406611007565b60405161041391906130ac565b60405180910390f35b34801561042857600080fd5b50610431611030565b60405161043e9190612bb9565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612c83565b61106d565b60405161047b9190612cde565b60405180910390f35b34801561049057600080fd5b506104ab60048036038101906104a69190612fd2565b61108b565b005b3480156104b957600080fd5b506104c2611162565b005b3480156104d057600080fd5b506104d9611210565b005b3480156104e757600080fd5b5061050260048036038101906104fd91906130c7565b61177c565b60405161050f9190612d6f565b60405180910390f35b60606040518060400160405280600881526020017f46697420446f6765000000000000000000000000000000000000000000000000815250905090565b6000610569610562611803565b848461180b565b6001905092915050565b61057b611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90613153565b60405180910390fd5b600f838561061691906131a2565b111561062157600080fd5b600f818361062f91906131a2565b111561063a57600080fd5b83600a6000018190555082600a6001018190555081600a6002018190555080600a6003018190555050505050565b6000655af3107a4000905090565b61067e611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461070b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070290613153565b60405180910390fd5b60005b81518110156108d4573073ffffffffffffffffffffffffffffffffffffffff16828281518110610741576107406131d6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141580156107d55750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168282815181106107b4576107b36131d6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b80156108495750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610828576108276131d6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156108c157600160066000848481518110610867576108666131d6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806108cc90613205565b91505061070e565b5050565b60006108e58484846119d4565b6109a6846108f1611803565b6109a185604051806060016040528060288152602001613b0860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610957611803565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120769092919063ffffffff16565b61180b565b600190509392505050565b6109b9611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3d90613153565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610ab2611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3690613153565b60405180910390fd5b6031811115610b4d57600080fd5b8060158190555050565b610b5f611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be390613153565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b610c11611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590613153565b60405180910390fd5b60008111610cab57600080fd5b610cd76064610cc983655af3107a40006120da90919063ffffffff16565b61215490919063ffffffff16565b601a8190555050565b610ce8611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c90613153565b60405180910390fd5b6000479050610d838161219e565b50565b6000610dd0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461220a565b9050919050565b610ddf611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6390613153565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600a60000154600a60010154600a60020154600a60030154935093509350935090919293565b610f5e611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290613153565b60405180910390fd5b655af3107a4000601a81905550655af3107a4000601b81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f46444f4745000000000000000000000000000000000000000000000000000000815250905090565b600061108161107a611803565b84846119d4565b6001905092915050565b611093611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111790613153565b60405180910390fd5b6000811161112d57600080fd5b611159606461114b83655af3107a40006120da90919063ffffffff16565b61215490919063ffffffff16565b601b8190555050565b61116a611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90613153565b60405180910390fd5b600061120230610d86565b905061120d81612278565b50565b611218611803565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90613153565b60405180910390fd5b601760149054906101000a900460ff16156112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90613299565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061138230601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16655af3107a400061180b565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f191906132ce565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147c91906132ce565b6040518363ffffffff1660e01b81526004016114999291906132fb565b6020604051808303816000875af11580156114b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dc91906132ce565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061156530610d86565b600080611570611007565b426040518863ffffffff1660e01b815260040161159296959493929190613369565b60606040518083038185885af11580156115b0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115d591906133df565b5050506001601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff02191690831515021790555061163b606461162d6003655af3107a40006120da90919063ffffffff16565b61215490919063ffffffff16565b601a8190555061166e60646116606003655af3107a40006120da90919063ffffffff16565b61215490919063ffffffff16565b601b819055506001601760146101000a81548160ff02191690831515021790555043601881905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611735929190613432565b6020604051808303816000875af1158015611754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117789190613470565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361187a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118719061350f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e0906135a1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119c79190612d6f565b60405180910390a3505050565b60008111611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e9061360d565b60405180910390fd5b6001601960036101000a81548160ff021916908315150217905550611a3a611007565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aa85750611a78611007565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561206657601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b585750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bae5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bc65750601960029054906101000a900460ff165b15611c6957601a54811115611c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0790613679565b60405180910390fd5b601b5481611c1d84610d86565b611c2791906131a2565b1115611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5f906136e5565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d115750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d6a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611e3857600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e135750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e1c57600080fd5b6000601960036101000a81548160ff0219169083151502179055505b6000611e4330610d86565b9050611e976064611e89601554611e7b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d86565b6120da90919063ffffffff16565b61215490919063ffffffff16565b811115611ef357611ef06064611ee2601554611ed4601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d86565b6120da90919063ffffffff16565b61215490919063ffffffff16565b90505b601960009054906101000a900460ff16158015611f5e5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f765750601960019054906101000a900460ff165b15612064576005601854611f8a91906131a2565b431015611fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc390613751565b60405180910390fd5b611fd581612278565b60004790506000811115611fed57611fec4761219e565b5b601054600a6001015414806120085750601154600a60030154145b1561206257601254600a60010181905550601354600a600301819055507f99d863278bf172c97d9dc766804dd5f6e42388d622d082c2a073780a9fe0c794600a600101546040516120599190612d6f565b60405180910390a15b505b505b6120718383836124fd565b505050565b60008383111582906120be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b59190612bb9565b60405180910390fd5b50600083856120cd9190613771565b9050809150509392505050565b60008083036120ec576000905061214e565b600082846120fa91906137a5565b9050828482612109919061382e565b14612149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612140906138d1565b60405180910390fd5b809150505b92915050565b600061219683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061250d565b905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612206573d6000803e3d6000fd5b5050565b6000600854821115612251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224890613963565b60405180910390fd5b600061225b612570565b9050612270818461215490919063ffffffff16565b915050919050565b6001601960006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122b0576122af612d8f565b5b6040519080825280602002602001820160405280156122de5781602001602082028036833780820191505090505b50905030816000815181106122f6576122f56131d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c191906132ce565b816001815181106123d5576123d46131d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061243c30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461180b565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430603c4261248c91906131a2565b6040518663ffffffff1660e01b81526004016124ac959493929190613a41565b600060405180830381600087803b1580156124c657600080fd5b505af11580156124da573d6000803e3d6000fd5b50505050506000601960006101000a81548160ff02191690831515021790555050565b61250883838361259b565b505050565b60008083118290612554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254b9190612bb9565b60405180910390fd5b5060008385612563919061382e565b9050809150509392505050565b600080600061257d612766565b91509150612594818361215490919063ffffffff16565b9250505090565b6000806000806000806125ad876127bf565b95509550955095509550955061260b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126a085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126ec816128fc565b6126f684836129b9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127539190612d6f565b60405180910390a3505050505050505050565b600080600060085490506000655af3107a40009050612796655af3107a400060085461215490919063ffffffff16565b8210156127b257600854655af3107a40009350935050506127bb565b81819350935050505b9091565b60008060008060008060008060006127d56129f3565b6127f3576127ee8a600a60020154600a60030154612a0a565b612809565b6128088a600a60000154600a60010154612a0a565b5b9250925092506000612819612570565b9050600080600061282c8e878787612aa0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061289683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612076565b905092915050565b60008082846128ad91906131a2565b9050838110156128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e990613ae7565b60405180910390fd5b8091505092915050565b6000612906612570565b9050600061291d82846120da90919063ffffffff16565b905061297181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289e90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129ce8260085461285490919063ffffffff16565b6008819055506129e98160095461289e90919063ffffffff16565b6009819055505050565b6000601960039054906101000a900460ff16905090565b600080600080612a366064612a28888a6120da90919063ffffffff16565b61215490919063ffffffff16565b90506000612a606064612a52888b6120da90919063ffffffff16565b61215490919063ffffffff16565b90506000612a8982612a7b858c61285490919063ffffffff16565b61285490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ab985896120da90919063ffffffff16565b90506000612ad086896120da90919063ffffffff16565b90506000612ae787896120da90919063ffffffff16565b90506000612b1082612b02858761285490919063ffffffff16565b61285490919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b63578082015181840152602081019050612b48565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b8b82612b29565b612b958185612b34565b9350612ba5818560208601612b45565b612bae81612b6f565b840191505092915050565b60006020820190508181036000830152612bd38184612b80565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1a82612bef565b9050919050565b612c2a81612c0f565b8114612c3557600080fd5b50565b600081359050612c4781612c21565b92915050565b6000819050919050565b612c6081612c4d565b8114612c6b57600080fd5b50565b600081359050612c7d81612c57565b92915050565b60008060408385031215612c9a57612c99612be5565b5b6000612ca885828601612c38565b9250506020612cb985828601612c6e565b9150509250929050565b60008115159050919050565b612cd881612cc3565b82525050565b6000602082019050612cf36000830184612ccf565b92915050565b60008060008060808587031215612d1357612d12612be5565b5b6000612d2187828801612c6e565b9450506020612d3287828801612c6e565b9350506040612d4387828801612c6e565b9250506060612d5487828801612c6e565b91505092959194509250565b612d6981612c4d565b82525050565b6000602082019050612d846000830184612d60565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612dc782612b6f565b810181811067ffffffffffffffff82111715612de657612de5612d8f565b5b80604052505050565b6000612df9612bdb565b9050612e058282612dbe565b919050565b600067ffffffffffffffff821115612e2557612e24612d8f565b5b602082029050602081019050919050565b600080fd5b6000612e4e612e4984612e0a565b612def565b90508083825260208201905060208402830185811115612e7157612e70612e36565b5b835b81811015612e9a5780612e868882612c38565b845260208401935050602081019050612e73565b5050509392505050565b600082601f830112612eb957612eb8612d8a565b5b8135612ec9848260208601612e3b565b91505092915050565b600060208284031215612ee857612ee7612be5565b5b600082013567ffffffffffffffff811115612f0657612f05612bea565b5b612f1284828501612ea4565b91505092915050565b600080600060608486031215612f3457612f33612be5565b5b6000612f4286828701612c38565b9350506020612f5386828701612c38565b9250506040612f6486828701612c6e565b9150509250925092565b600060208284031215612f8457612f83612be5565b5b6000612f9284828501612c38565b91505092915050565b600060ff82169050919050565b612fb181612f9b565b82525050565b6000602082019050612fcc6000830184612fa8565b92915050565b600060208284031215612fe857612fe7612be5565b5b6000612ff684828501612c6e565b91505092915050565b61300881612cc3565b811461301357600080fd5b50565b60008135905061302581612fff565b92915050565b60006020828403121561304157613040612be5565b5b600061304f84828501613016565b91505092915050565b600060808201905061306d6000830187612d60565b61307a6020830186612d60565b6130876040830185612d60565b6130946060830184612d60565b95945050505050565b6130a681612c0f565b82525050565b60006020820190506130c1600083018461309d565b92915050565b600080604083850312156130de576130dd612be5565b5b60006130ec85828601612c38565b92505060206130fd85828601612c38565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061313d602083612b34565b915061314882613107565b602082019050919050565b6000602082019050818103600083015261316c81613130565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131ad82612c4d565b91506131b883612c4d565b92508282019050808211156131d0576131cf613173565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061321082612c4d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361324257613241613173565b5b600182019050919050565b7f54726164696e6720616c7265616479206f70656e2e0000000000000000000000600082015250565b6000613283601583612b34565b915061328e8261324d565b602082019050919050565b600060208201905081810360008301526132b281613276565b9050919050565b6000815190506132c881612c21565b92915050565b6000602082840312156132e4576132e3612be5565b5b60006132f2848285016132b9565b91505092915050565b6000604082019050613310600083018561309d565b61331d602083018461309d565b9392505050565b6000819050919050565b6000819050919050565b600061335361334e61334984613324565b61332e565b612c4d565b9050919050565b61336381613338565b82525050565b600060c08201905061337e600083018961309d565b61338b6020830188612d60565b613398604083018761335a565b6133a5606083018661335a565b6133b2608083018561309d565b6133bf60a0830184612d60565b979650505050505050565b6000815190506133d981612c57565b92915050565b6000806000606084860312156133f8576133f7612be5565b5b6000613406868287016133ca565b9350506020613417868287016133ca565b9250506040613428868287016133ca565b9150509250925092565b6000604082019050613447600083018561309d565b6134546020830184612d60565b9392505050565b60008151905061346a81612fff565b92915050565b60006020828403121561348657613485612be5565b5b60006134948482850161345b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134f9602483612b34565b91506135048261349d565b604082019050919050565b60006020820190508181036000830152613528816134ec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061358b602283612b34565b91506135968261352f565b604082019050919050565b600060208201905081810360008301526135ba8161357e565b9050919050565b7f416d6f756e742063616e6e6f74206265207a65726f2e00000000000000000000600082015250565b60006135f7601683612b34565b9150613602826135c1565b602082019050919050565b60006020820190508181036000830152613626816135ea565b9050919050565b7f4d6178207472616e73616374696f6e2065786365656465642e00000000000000600082015250565b6000613663601983612b34565b915061366e8261362d565b602082019050919050565b6000602082019050818103600083015261369281613656565b9050919050565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b60006136cf601483612b34565b91506136da82613699565b602082019050919050565b600060208201905081810360008301526136fe816136c2565b9050919050565b7f416e746920736e69706572206d656368616e69736d0000000000000000000000600082015250565b600061373b601583612b34565b915061374682613705565b602082019050919050565b6000602082019050818103600083015261376a8161372e565b9050919050565b600061377c82612c4d565b915061378783612c4d565b925082820390508181111561379f5761379e613173565b5b92915050565b60006137b082612c4d565b91506137bb83612c4d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156137f4576137f3613173565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061383982612c4d565b915061384483612c4d565b925082613854576138536137ff565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006138bb602183612b34565b91506138c68261385f565b604082019050919050565b600060208201905081810360008301526138ea816138ae565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061394d602a83612b34565b9150613958826138f1565b604082019050919050565b6000602082019050818103600083015261397c81613940565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139b881612c0f565b82525050565b60006139ca83836139af565b60208301905092915050565b6000602082019050919050565b60006139ee82613983565b6139f8818561398e565b9350613a038361399f565b8060005b83811015613a34578151613a1b88826139be565b9750613a26836139d6565b925050600181019050613a07565b5085935050505092915050565b600060a082019050613a566000830188612d60565b613a63602083018761335a565b8181036040830152613a7581866139e3565b9050613a84606083018561309d565b613a916080830184612d60565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ad1601b83612b34565b9150613adc82613a9b565b602082019050919050565b60006020820190508181036000830152613b0081613ac4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205df53cb7cac0f85b664526a32ca0ac61fb56bf302976340eef4c3d0c358a0fa864736f6c63430008100033
Deployed Bytecode Sourcemap
4217:12427:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6505:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7357:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11211:349;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6782:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13071:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7526:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13379:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6691:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11914:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7847:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11568:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14715:153;;;;;;;;;;;;;:::i;:::-;;6885:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3296:148;;;;;;;;;;;;;:::i;:::-;;11028:175;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;10902:118;;;;;;;;;;;;;:::i;:::-;;3082:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6596:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7031:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11739;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14549:154;;;;;;;;;;;;;:::i;:::-;;12153:906;;;;;;;;;;;;;:::i;:::-;;7206:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6505:83;6542:13;6575:5;;;;;;;;;;;;;;;;;6568:12;;6505:83;:::o;7357:161::-;7432:4;7449:39;7458:12;:10;:12::i;:::-;7472:7;7481:6;7449:8;:39::i;:::-;7506:4;7499:11;;7357:161;;;;:::o;11211:349::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11360:2:::1;11349:7;11339;:17;;;;:::i;:::-;:23;;11331:32;;;::::0;::::1;;11405:2;11393:8;11382;:19;;;;:::i;:::-;:25;;11374:34;;;::::0;::::1;;11436:7;11419:6;:14;;:24;;;;11471:7;11454:6;:14;;:24;;;;11507:8;11489:6;:15;;:26;;;;11544:8;11526:6;:15;;:26;;;;11211:349:::0;;;;:::o;6782:95::-;6835:7;4719:19;6855:14;;6782:95;:::o;13071:296::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13144:6:::1;13139:221;13160:5;:12;13156:1;:16;13139:221;;;13218:4;13198:25;;:5;13204:1;13198:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:54;;;;;13239:13;;;;;;;;;;;13227:25;;:5;13233:1;13227:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;13198:54;:94;;;;;13276:15;;;;;;;;;;;13256:36;;:5;13262:1;13256:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;13198:94;13194:155;;;13329:4;13312;:14;13317:5;13323:1;13317:8;;;;;;;;:::i;:::-;;;;;;;;13312:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13194:155;13174:3;;;;;:::i;:::-;;;;13139:221;;;;13071:296:::0;:::o;7526:313::-;7624:4;7641:36;7651:6;7659:9;7670:6;7641:9;:36::i;:::-;7688:121;7697:6;7705:12;:10;:12::i;:::-;7719:89;7757:6;7719:89;;;;;;;;;;;;;;;;;:11;:19;7731:6;7719:19;;;;;;;;;;;;;;;:33;7739:12;:10;:12::i;:::-;7719:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7688:8;:121::i;:::-;7827:4;7820:11;;7526:313;;;;;:::o;13379:88::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13454:5:::1;13439:4;:12;13444:6;13439:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13379:88:::0;:::o;6691:83::-;6732:5;5568:1;6750:16;;6691:83;:::o;11914:117::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11994:2:::1;11988:4;:8;;11980:17;;;::::0;::::1;;12019:4;12008:8;:15;;;;11914:117:::0;:::o;7847:103::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7937:5:::1;7919:15;;:23;;;;;;;;;;;;;;;;;;7847:103:::0;:::o;11568:163::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11663:1:::1;11652:10;:12;11644:21;;;::::0;::::1;;11691:32;11719:3;11691:23;11703:10;4719:19;11691:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;11676:12;:47;;;;11568:163:::0;:::o;14715:153::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14767:26:::1;14796:21;14767:50;;14828:32;14841:18;14828:12;:32::i;:::-;14756:112;14715:153::o:0;6885:138::-;6951:7;6978:37;6998:7;:16;7006:7;6998:16;;;;;;;;;;;;;;;;6978:19;:37::i;:::-;6971:44;;6885:138;;;:::o;3296:148::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3403:1:::1;3366:40;;3387:6;::::0;::::1;;;;;;;;3366:40;;;;;;;;;;;;3434:1;3417:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3296:148::o:0;11028:175::-;11075:7;11084;11093;11102;11130:6;:14;;;11146:6;:14;;;11162:6;:15;;;11179:6;:15;;;11122:73;;;;;;;;11028:175;;;;:::o;10902:118::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4719:19:::1;10955:12;:22;;;;4719:19;10988:14;:24;;;;10902:118::o:0;3082:79::-;3120:7;3147:6;;;;;;;;;;;3140:13;;3082:79;:::o;6596:87::-;6635:13;6668:7;;;;;;;;;;;;;;;;;6661:14;;6596:87;:::o;7031:167::-;7109:4;7126:42;7136:12;:10;:12::i;:::-;7150:9;7161:6;7126:9;:42::i;:::-;7186:4;7179:11;;7031:167;;;;:::o;11739:::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11836:1:::1;11825:10;:12;11817:21;;;::::0;::::1;;11866:32;11894:3;11866:23;11878:10;4719:19;11866:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;11849:14;:49;;;;11739:167:::0;:::o;14549:154::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14601:23:::1;14627:24;14645:4;14627:9;:24::i;:::-;14601:50;;14662:33;14679:15;14662:16;:33::i;:::-;14590:113;14549:154::o:0;12153:906::-;3219:12;:10;:12::i;:::-;3209:22;;:6;;;;;;;;;;:22;;;3201:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12217:11:::1;;;;;;;;;;;12216:12;12208:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12265:35;12322:42;12265:100;;12394:16;12376:15;;:34;;;;;;;;;;;;;;;;;;12421:58;12438:4;12453:15;;;;;;;;;;;4719:19;12421:8;:58::i;:::-;12524:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12506:56;;;12571:4;12578:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12506:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12490:13;;:112;;;;;;;;;;;;;;;;;;12613:15;;;;;;;;;;;:31;;;12652:21;12683:4;12689:24;12707:4;12689:9;:24::i;:::-;12714:1;12716::::0;12718:7:::1;:5;:7::i;:::-;12726:15;12613:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12767:4;12753:11;;:18;;;;;;;;;;;;;;;;;;12800:4;12782:15;;:22;;;;;;;;;;;;;;;;;;12830:23;12849:3;12830:14;12842:1;4719:19;12830:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;12815:12;:38;;;;12881:23;12900:3;12881:14;12893:1;4719:19;12881:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;12864:14;:40;;;;12929:4;12915:11;;:18;;;;;;;;;;;;;;;;;;12957:12;12944:10;:25;;;;12987:13;;;;;;;;;;;12980:29;;;13018:15;;;;;;;;;;;13036:14;12980:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12197:862;12153:906::o:0;7206:143::-;7287:7;7314:11;:18;7326:5;7314:18;;;;;;;;;;;;;;;:27;7333:7;7314:27;;;;;;;;;;;;;;;;7307:34;;7206:143;;;;:::o;800:98::-;853:7;880:10;873:17;;800:98;:::o;8220:335::-;8330:1;8313:19;;:5;:19;;;8305:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8411:1;8392:21;;:7;:21;;;8384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8493:6;8463:11;:18;8475:5;8463:18;;;;;;;;;;;;;;;:27;8482:7;8463:27;;;;;;;;;;;;;;;:36;;;;8531:7;8515:32;;8524:5;8515:32;;;8540:6;8515:32;;;;;;:::i;:::-;;;;;;;;8220:335;;;:::o;8563:1748::-;8660:1;8651:6;:10;8643:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8708:4;8699:6;;:13;;;;;;;;;;;;;;;;;;8737:7;:5;:7::i;:::-;8729:15;;:4;:15;;;;:32;;;;;8754:7;:5;:7::i;:::-;8748:13;;:2;:13;;;;8729:32;8725:1536;;;8792:13;;;;;;;;;;;8784:21;;:4;:21;;;:55;;;;;8823:15;;;;;;;;;;;8809:30;;:2;:30;;;;8784:55;:83;;;;;8845:18;:22;8864:2;8845:22;;;;;;;;;;;;;;;;;;;;;;;;;8843:24;8784:83;:102;;;;;8871:15;;;;;;;;;;;8784:102;8780:319;;;8949:12;;8939:6;:22;;8931:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9044:14;;9034:6;9018:13;9028:2;9018:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9010:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8780:319;9135:15;;;;;;;;;;;9119:32;;:4;:32;;;;:62;;;;;9157:18;:24;9176:4;9157:24;;;;;;;;;;;;;;;;;;;;;;;;;9155:26;9119:62;:85;;;;;9191:13;;;;;;;;;;;9185:19;;:2;:19;;;9119:85;9115:191;;;9233:4;:10;9238:4;9233:10;;;;;;;;;;;;;;;;;;;;;;;;;9232:11;:24;;;;;9248:4;:8;9253:2;9248:8;;;;;;;;;;;;;;;;;;;;;;;;;9247:9;9232:24;9224:33;;;;;;9285:5;9276:6;;:14;;;;;;;;;;;;;;;;;;9115:191;9322:28;9353:24;9371:4;9353:9;:24::i;:::-;9322:55;;9418:47;9461:3;9418:38;9447:8;;9418:24;9428:13;;;;;;;;;;;9418:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;9395:20;:70;9392:180;;;9509:47;9552:3;9509:38;9538:8;;9509:24;9519:13;;;;;;;;;;;9509:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;9486:70;;9392:180;9593:6;;;;;;;;;;;9592:7;:32;;;;;9611:13;;;;;;;;;;;9603:21;;:4;:21;;;;9592:32;:47;;;;;9628:11;;;;;;;;;;;9592:47;9588:662;;;9698:1;9685:10;;:14;;;;:::i;:::-;9668:12;:32;;9660:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9745:38;9762:20;9745:16;:38::i;:::-;9802:26;9831:21;9802:50;;9895:1;9874:18;:22;9871:105;;;9921:35;9934:21;9921:12;:35::i;:::-;9871:105;10016:13;;9998:6;:14;;;:31;:68;;;;10052:14;;10033:6;:15;;;:33;9998:68;9994:241;;;10108:6;;10091;:14;;:23;;;;10155:7;;10137:6;:15;;:25;;;;10190;10200:6;:14;;;10190:25;;;;;;:::i;:::-;;;;;;;;9994:241;9641:609;9588:662;8763:1498;8725:1536;10273:30;10288:4;10293:2;10296:6;10273:14;:30::i;:::-;8563:1748;;;:::o;1937:190::-;2023:7;2056:1;2051;:6;;2059:12;2043:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2083:9;2099:1;2095;:5;;;;:::i;:::-;2083:17;;2118:1;2111:8;;;1937:190;;;;;:::o;2135:246::-;2193:7;2222:1;2217;:6;2213:47;;2247:1;2240:8;;;;2213:47;2270:9;2286:1;2282;:5;;;;:::i;:::-;2270:17;;2315:1;2310;2306;:5;;;;:::i;:::-;:10;2298:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2372:1;2365:8;;;2135:246;;;;;:::o;2389:132::-;2447:7;2474:39;2478:1;2481;2474:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2467:46;;2389:132;;;;:::o;12047:96::-;12104:14;;;;;;;;;;;:23;;:31;12128:6;12104:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12047:96;:::o;7958:254::-;8025:7;8064;;8053;:18;;8045:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8129:19;8152:10;:8;:10::i;:::-;8129:33;;8180:24;8192:11;8180:7;:11;;:24;;;;:::i;:::-;8173:31;;;7958:254;;;:::o;10319:488::-;6089:4;6080:6;;:13;;;;;;;;;;;;;;;;;;10397:21:::1;10435:1;10421:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10397:40;;10466:4;10448;10453:1;10448:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10492:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10482:4;10487:1;10482:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10525:62;10542:4;10557:15;;;;;;;;;;;10575:11;10525:8;:62::i;:::-;10598:15;;;;;;;;;;;:66;;;10679:11;10705:1;10721:4;10748;10786:2;10768:15;:20;;;;:::i;:::-;10598:201;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10386:421;6125:5:::0;6116:6;;:14;;;;;;;;;;;;;;;;;;10319:488;:::o;13483:146::-;13577:44;13595:6;13603:9;13614:6;13577:17;:44::i;:::-;13483:146;;;:::o;2529:189::-;2615:7;2647:1;2643;:5;2650:12;2635:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2674:9;2690:1;2686;:5;;;;:::i;:::-;2674:17;;2709:1;2702:8;;;2529:189;;;;;:::o;16208:163::-;16249:7;16270:15;16287;16306:19;:17;:19::i;:::-;16269:56;;;;16343:20;16355:7;16343;:11;;:20;;;;:::i;:::-;16336:27;;;;16208:163;:::o;13637:488::-;13736:15;13753:23;13778:12;13792:23;13817:12;13831:13;13848:19;13859:7;13848:10;:19::i;:::-;13735:132;;;;;;;;;;;;13896:28;13916:7;13896;:15;13904:6;13896:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13878:7;:15;13886:6;13878:15;;;;;;;;;;;;;;;:46;;;;13956:39;13979:15;13956:7;:18;13964:9;13956:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13935:7;:18;13943:9;13935:18;;;;;;;;;;;;;;;:60;;;;14007:16;14017:5;14007:9;:16::i;:::-;14034:23;14046:4;14052;14034:11;:23::i;:::-;14090:9;14073:44;;14082:6;14073:44;;;14101:15;14073:44;;;;;;:::i;:::-;;;;;;;;13724:401;;;;;;13637:488;;;:::o;16379:262::-;16429:7;16438;16458:15;16476:7;;16458:25;;16494:15;4719:19;16494:25;;16550:20;4719:19;16550:7;;:11;;:20;;;;:::i;:::-;16540:7;:30;16536:61;;;16580:7;;4719:19;16572:25;;;;;;;;16536:61;16616:7;16625;16608:25;;;;;;16379:262;;;:::o;14876:551::-;14935:7;14944;14953;14962;14971;14980;15001:23;15026:12;15040:13;15057:10;:8;:10::i;:::-;:122;;15125:54;15137:7;15146:6;:15;;;15163:6;:15;;;15125:11;:54::i;:::-;15057:122;;;15070:52;15082:7;15091:6;:14;;;15107:6;:14;;;15070:11;:52::i;:::-;15057:122;15000:179;;;;;;15190:19;15213:10;:8;:10::i;:::-;15190:33;;15235:15;15252:23;15277:12;15293:46;15305:7;15314:4;15320:5;15327:11;15293;:46::i;:::-;15234:105;;;;;;15358:7;15367:15;15384:4;15390:15;15407:4;15413:5;15350:69;;;;;;;;;;;;;;;;;;;14876:551;;;;;;;:::o;1793:136::-;1851:7;1878:43;1882:1;1885;1878:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1871:50;;1793:136;;;;:::o;1606:179::-;1664:7;1684:9;1700:1;1696;:5;;;;:::i;:::-;1684:17;;1725:1;1720;:6;;1712:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1776:1;1769:8;;;1606:179;;;;:::o;14133:212::-;14186:19;14209:10;:8;:10::i;:::-;14186:33;;14230:13;14246:22;14256:11;14246:5;:9;;:22;;;;:::i;:::-;14230:38;;14304:33;14331:5;14304:7;:22;14320:4;14304:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14279:7;:22;14295:4;14279:22;;;;;;;;;;;;;;;:58;;;;14175:170;;14133:212;:::o;14353:147::-;14431:17;14443:4;14431:7;;:11;;:17;;;;:::i;:::-;14421:7;:27;;;;14472:20;14487:4;14472:10;;:14;;:20;;;;:::i;:::-;14459:10;:33;;;;14353:147;;:::o;10815:79::-;10857:4;10880:6;;;;;;;;;;;10873:13;;10815:79;:::o;15435:351::-;15528:7;15537;15546;15566:12;15581:28;15605:3;15581:19;15593:6;15581:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15566:43;;15620:13;15636:29;15661:3;15636:20;15648:7;15636;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15620:45;;15676:23;15702:28;15724:5;15702:17;15714:4;15702:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15676:54;;15749:15;15766:4;15772:5;15741:37;;;;;;;;;15435:351;;;;;;;:::o;15794:409::-;15904:7;15913;15922;15942:15;15960:24;15972:11;15960:7;:11;;:24;;;;:::i;:::-;15942:42;;15995:12;16010:21;16019:11;16010:4;:8;;:21;;;;:::i;:::-;15995:36;;16042:13;16058:22;16068:11;16058:5;:9;;:22;;;;:::i;:::-;16042:38;;16091:23;16117:28;16139:5;16117:17;16129:4;16117:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16091:54;;16164:7;16173:15;16190:4;16156:39;;;;;;;;;;15794:409;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:765::-;3532:6;3540;3548;3556;3605:3;3593:9;3584:7;3580:23;3576:33;3573:120;;;3612:79;;:::i;:::-;3573:120;3732:1;3757:53;3802:7;3793:6;3782:9;3778:22;3757:53;:::i;:::-;3747:63;;3703:117;3859:2;3885:53;3930:7;3921:6;3910:9;3906:22;3885:53;:::i;:::-;3875:63;;3830:118;3987:2;4013:53;4058:7;4049:6;4038:9;4034:22;4013:53;:::i;:::-;4003:63;;3958:118;4115:2;4141:53;4186:7;4177:6;4166:9;4162:22;4141:53;:::i;:::-;4131:63;;4086:118;3446:765;;;;;;;:::o;4217:118::-;4304:24;4322:5;4304:24;:::i;:::-;4299:3;4292:37;4217:118;;:::o;4341:222::-;4434:4;4472:2;4461:9;4457:18;4449:26;;4485:71;4553:1;4542:9;4538:17;4529:6;4485:71;:::i;:::-;4341:222;;;;:::o;4569:117::-;4678:1;4675;4668:12;4692:180;4740:77;4737:1;4730:88;4837:4;4834:1;4827:15;4861:4;4858:1;4851:15;4878:281;4961:27;4983:4;4961:27;:::i;:::-;4953:6;4949:40;5091:6;5079:10;5076:22;5055:18;5043:10;5040:34;5037:62;5034:88;;;5102:18;;:::i;:::-;5034:88;5142:10;5138:2;5131:22;4921:238;4878:281;;:::o;5165:129::-;5199:6;5226:20;;:::i;:::-;5216:30;;5255:33;5283:4;5275:6;5255:33;:::i;:::-;5165:129;;;:::o;5300:311::-;5377:4;5467:18;5459:6;5456:30;5453:56;;;5489:18;;:::i;:::-;5453:56;5539:4;5531:6;5527:17;5519:25;;5599:4;5593;5589:15;5581:23;;5300:311;;;:::o;5617:117::-;5726:1;5723;5716:12;5757:710;5853:5;5878:81;5894:64;5951:6;5894:64;:::i;:::-;5878:81;:::i;:::-;5869:90;;5979:5;6008:6;6001:5;5994:21;6042:4;6035:5;6031:16;6024:23;;6095:4;6087:6;6083:17;6075:6;6071:30;6124:3;6116:6;6113:15;6110:122;;;6143:79;;:::i;:::-;6110:122;6258:6;6241:220;6275:6;6270:3;6267:15;6241:220;;;6350:3;6379:37;6412:3;6400:10;6379:37;:::i;:::-;6374:3;6367:50;6446:4;6441:3;6437:14;6430:21;;6317:144;6301:4;6296:3;6292:14;6285:21;;6241:220;;;6245:21;5859:608;;5757:710;;;;;:::o;6490:370::-;6561:5;6610:3;6603:4;6595:6;6591:17;6587:27;6577:122;;6618:79;;:::i;:::-;6577:122;6735:6;6722:20;6760:94;6850:3;6842:6;6835:4;6827:6;6823:17;6760:94;:::i;:::-;6751:103;;6567:293;6490:370;;;;:::o;6866:539::-;6950:6;6999:2;6987:9;6978:7;6974:23;6970:32;6967:119;;;7005:79;;:::i;:::-;6967:119;7153:1;7142:9;7138:17;7125:31;7183:18;7175:6;7172:30;7169:117;;;7205:79;;:::i;:::-;7169:117;7310:78;7380:7;7371:6;7360:9;7356:22;7310:78;:::i;:::-;7300:88;;7096:302;6866:539;;;;:::o;7411:619::-;7488:6;7496;7504;7553:2;7541:9;7532:7;7528:23;7524:32;7521:119;;;7559:79;;:::i;:::-;7521:119;7679:1;7704:53;7749:7;7740:6;7729:9;7725:22;7704:53;:::i;:::-;7694:63;;7650:117;7806:2;7832:53;7877:7;7868:6;7857:9;7853:22;7832:53;:::i;:::-;7822:63;;7777:118;7934:2;7960:53;8005:7;7996:6;7985:9;7981:22;7960:53;:::i;:::-;7950:63;;7905:118;7411:619;;;;;:::o;8036:329::-;8095:6;8144:2;8132:9;8123:7;8119:23;8115:32;8112:119;;;8150:79;;:::i;:::-;8112:119;8270:1;8295:53;8340:7;8331:6;8320:9;8316:22;8295:53;:::i;:::-;8285:63;;8241:117;8036:329;;;;:::o;8371:86::-;8406:7;8446:4;8439:5;8435:16;8424:27;;8371:86;;;:::o;8463:112::-;8546:22;8562:5;8546:22;:::i;:::-;8541:3;8534:35;8463:112;;:::o;8581:214::-;8670:4;8708:2;8697:9;8693:18;8685:26;;8721:67;8785:1;8774:9;8770:17;8761:6;8721:67;:::i;:::-;8581:214;;;;:::o;8801:329::-;8860:6;8909:2;8897:9;8888:7;8884:23;8880:32;8877:119;;;8915:79;;:::i;:::-;8877:119;9035:1;9060:53;9105:7;9096:6;9085:9;9081:22;9060:53;:::i;:::-;9050:63;;9006:117;8801:329;;;;:::o;9136:116::-;9206:21;9221:5;9206:21;:::i;:::-;9199:5;9196:32;9186:60;;9242:1;9239;9232:12;9186:60;9136:116;:::o;9258:133::-;9301:5;9339:6;9326:20;9317:29;;9355:30;9379:5;9355:30;:::i;:::-;9258:133;;;;:::o;9397:323::-;9453:6;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:50;9695:7;9686:6;9675:9;9671:22;9653:50;:::i;:::-;9643:60;;9599:114;9397:323;;;;:::o;9726:553::-;9903:4;9941:3;9930:9;9926:19;9918:27;;9955:71;10023:1;10012:9;10008:17;9999:6;9955:71;:::i;:::-;10036:72;10104:2;10093:9;10089:18;10080:6;10036:72;:::i;:::-;10118;10186:2;10175:9;10171:18;10162:6;10118:72;:::i;:::-;10200;10268:2;10257:9;10253:18;10244:6;10200:72;:::i;:::-;9726:553;;;;;;;:::o;10285:118::-;10372:24;10390:5;10372:24;:::i;:::-;10367:3;10360:37;10285:118;;:::o;10409:222::-;10502:4;10540:2;10529:9;10525:18;10517:26;;10553:71;10621:1;10610:9;10606:17;10597:6;10553:71;:::i;:::-;10409:222;;;;:::o;10637:474::-;10705:6;10713;10762:2;10750:9;10741:7;10737:23;10733:32;10730:119;;;10768:79;;:::i;:::-;10730:119;10888:1;10913:53;10958:7;10949:6;10938:9;10934:22;10913:53;:::i;:::-;10903:63;;10859:117;11015:2;11041:53;11086:7;11077:6;11066:9;11062:22;11041:53;:::i;:::-;11031:63;;10986:118;10637:474;;;;;:::o;11117:182::-;11257:34;11253:1;11245:6;11241:14;11234:58;11117:182;:::o;11305:366::-;11447:3;11468:67;11532:2;11527:3;11468:67;:::i;:::-;11461:74;;11544:93;11633:3;11544:93;:::i;:::-;11662:2;11657:3;11653:12;11646:19;;11305:366;;;:::o;11677:419::-;11843:4;11881:2;11870:9;11866:18;11858:26;;11930:9;11924:4;11920:20;11916:1;11905:9;11901:17;11894:47;11958:131;12084:4;11958:131;:::i;:::-;11950:139;;11677:419;;;:::o;12102:180::-;12150:77;12147:1;12140:88;12247:4;12244:1;12237:15;12271:4;12268:1;12261:15;12288:191;12328:3;12347:20;12365:1;12347:20;:::i;:::-;12342:25;;12381:20;12399:1;12381:20;:::i;:::-;12376:25;;12424:1;12421;12417:9;12410:16;;12445:3;12442:1;12439:10;12436:36;;;12452:18;;:::i;:::-;12436:36;12288:191;;;;:::o;12485:180::-;12533:77;12530:1;12523:88;12630:4;12627:1;12620:15;12654:4;12651:1;12644:15;12671:233;12710:3;12733:24;12751:5;12733:24;:::i;:::-;12724:33;;12779:66;12772:5;12769:77;12766:103;;12849:18;;:::i;:::-;12766:103;12896:1;12889:5;12885:13;12878:20;;12671:233;;;:::o;12910:171::-;13050:23;13046:1;13038:6;13034:14;13027:47;12910:171;:::o;13087:366::-;13229:3;13250:67;13314:2;13309:3;13250:67;:::i;:::-;13243:74;;13326:93;13415:3;13326:93;:::i;:::-;13444:2;13439:3;13435:12;13428:19;;13087:366;;;:::o;13459:419::-;13625:4;13663:2;13652:9;13648:18;13640:26;;13712:9;13706:4;13702:20;13698:1;13687:9;13683:17;13676:47;13740:131;13866:4;13740:131;:::i;:::-;13732:139;;13459:419;;;:::o;13884:143::-;13941:5;13972:6;13966:13;13957:22;;13988:33;14015:5;13988:33;:::i;:::-;13884:143;;;;:::o;14033:351::-;14103:6;14152:2;14140:9;14131:7;14127:23;14123:32;14120:119;;;14158:79;;:::i;:::-;14120:119;14278:1;14303:64;14359:7;14350:6;14339:9;14335:22;14303:64;:::i;:::-;14293:74;;14249:128;14033:351;;;;:::o;14390:332::-;14511:4;14549:2;14538:9;14534:18;14526:26;;14562:71;14630:1;14619:9;14615:17;14606:6;14562:71;:::i;:::-;14643:72;14711:2;14700:9;14696:18;14687:6;14643:72;:::i;:::-;14390:332;;;;;:::o;14728:85::-;14773:7;14802:5;14791:16;;14728:85;;;:::o;14819:60::-;14847:3;14868:5;14861:12;;14819:60;;;:::o;14885:158::-;14943:9;14976:61;14994:42;15003:32;15029:5;15003:32;:::i;:::-;14994:42;:::i;:::-;14976:61;:::i;:::-;14963:74;;14885:158;;;:::o;15049:147::-;15144:45;15183:5;15144:45;:::i;:::-;15139:3;15132:58;15049:147;;:::o;15202:807::-;15451:4;15489:3;15478:9;15474:19;15466:27;;15503:71;15571:1;15560:9;15556:17;15547:6;15503:71;:::i;:::-;15584:72;15652:2;15641:9;15637:18;15628:6;15584:72;:::i;:::-;15666:80;15742:2;15731:9;15727:18;15718:6;15666:80;:::i;:::-;15756;15832:2;15821:9;15817:18;15808:6;15756:80;:::i;:::-;15846:73;15914:3;15903:9;15899:19;15890:6;15846:73;:::i;:::-;15929;15997:3;15986:9;15982:19;15973:6;15929:73;:::i;:::-;15202:807;;;;;;;;;:::o;16015:143::-;16072:5;16103:6;16097:13;16088:22;;16119:33;16146:5;16119:33;:::i;:::-;16015:143;;;;:::o;16164:663::-;16252:6;16260;16268;16317:2;16305:9;16296:7;16292:23;16288:32;16285:119;;;16323:79;;:::i;:::-;16285:119;16443:1;16468:64;16524:7;16515:6;16504:9;16500:22;16468:64;:::i;:::-;16458:74;;16414:128;16581:2;16607:64;16663:7;16654:6;16643:9;16639:22;16607:64;:::i;:::-;16597:74;;16552:129;16720:2;16746:64;16802:7;16793:6;16782:9;16778:22;16746:64;:::i;:::-;16736:74;;16691:129;16164:663;;;;;:::o;16833:332::-;16954:4;16992:2;16981:9;16977:18;16969:26;;17005:71;17073:1;17062:9;17058:17;17049:6;17005:71;:::i;:::-;17086:72;17154:2;17143:9;17139:18;17130:6;17086:72;:::i;:::-;16833:332;;;;;:::o;17171:137::-;17225:5;17256:6;17250:13;17241:22;;17272:30;17296:5;17272:30;:::i;:::-;17171:137;;;;:::o;17314:345::-;17381:6;17430:2;17418:9;17409:7;17405:23;17401:32;17398:119;;;17436:79;;:::i;:::-;17398:119;17556:1;17581:61;17634:7;17625:6;17614:9;17610:22;17581:61;:::i;:::-;17571:71;;17527:125;17314:345;;;;:::o;17665:223::-;17805:34;17801:1;17793:6;17789:14;17782:58;17874:6;17869:2;17861:6;17857:15;17850:31;17665:223;:::o;17894:366::-;18036:3;18057:67;18121:2;18116:3;18057:67;:::i;:::-;18050:74;;18133:93;18222:3;18133:93;:::i;:::-;18251:2;18246:3;18242:12;18235:19;;17894:366;;;:::o;18266:419::-;18432:4;18470:2;18459:9;18455:18;18447:26;;18519:9;18513:4;18509:20;18505:1;18494:9;18490:17;18483:47;18547:131;18673:4;18547:131;:::i;:::-;18539:139;;18266:419;;;:::o;18691:221::-;18831:34;18827:1;18819:6;18815:14;18808:58;18900:4;18895:2;18887:6;18883:15;18876:29;18691:221;:::o;18918:366::-;19060:3;19081:67;19145:2;19140:3;19081:67;:::i;:::-;19074:74;;19157:93;19246:3;19157:93;:::i;:::-;19275:2;19270:3;19266:12;19259:19;;18918:366;;;:::o;19290:419::-;19456:4;19494:2;19483:9;19479:18;19471:26;;19543:9;19537:4;19533:20;19529:1;19518:9;19514:17;19507:47;19571:131;19697:4;19571:131;:::i;:::-;19563:139;;19290:419;;;:::o;19715:172::-;19855:24;19851:1;19843:6;19839:14;19832:48;19715:172;:::o;19893:366::-;20035:3;20056:67;20120:2;20115:3;20056:67;:::i;:::-;20049:74;;20132:93;20221:3;20132:93;:::i;:::-;20250:2;20245:3;20241:12;20234:19;;19893:366;;;:::o;20265:419::-;20431:4;20469:2;20458:9;20454:18;20446:26;;20518:9;20512:4;20508:20;20504:1;20493:9;20489:17;20482:47;20546:131;20672:4;20546:131;:::i;:::-;20538:139;;20265:419;;;:::o;20690:175::-;20830:27;20826:1;20818:6;20814:14;20807:51;20690:175;:::o;20871:366::-;21013:3;21034:67;21098:2;21093:3;21034:67;:::i;:::-;21027:74;;21110:93;21199:3;21110:93;:::i;:::-;21228:2;21223:3;21219:12;21212:19;;20871:366;;;:::o;21243:419::-;21409:4;21447:2;21436:9;21432:18;21424:26;;21496:9;21490:4;21486:20;21482:1;21471:9;21467:17;21460:47;21524:131;21650:4;21524:131;:::i;:::-;21516:139;;21243:419;;;:::o;21668:170::-;21808:22;21804:1;21796:6;21792:14;21785:46;21668:170;:::o;21844:366::-;21986:3;22007:67;22071:2;22066:3;22007:67;:::i;:::-;22000:74;;22083:93;22172:3;22083:93;:::i;:::-;22201:2;22196:3;22192:12;22185:19;;21844:366;;;:::o;22216:419::-;22382:4;22420:2;22409:9;22405:18;22397:26;;22469:9;22463:4;22459:20;22455:1;22444:9;22440:17;22433:47;22497:131;22623:4;22497:131;:::i;:::-;22489:139;;22216:419;;;:::o;22641:171::-;22781:23;22777:1;22769:6;22765:14;22758:47;22641:171;:::o;22818:366::-;22960:3;22981:67;23045:2;23040:3;22981:67;:::i;:::-;22974:74;;23057:93;23146:3;23057:93;:::i;:::-;23175:2;23170:3;23166:12;23159:19;;22818:366;;;:::o;23190:419::-;23356:4;23394:2;23383:9;23379:18;23371:26;;23443:9;23437:4;23433:20;23429:1;23418:9;23414:17;23407:47;23471:131;23597:4;23471:131;:::i;:::-;23463:139;;23190:419;;;:::o;23615:194::-;23655:4;23675:20;23693:1;23675:20;:::i;:::-;23670:25;;23709:20;23727:1;23709:20;:::i;:::-;23704:25;;23753:1;23750;23746:9;23738:17;;23777:1;23771:4;23768:11;23765:37;;;23782:18;;:::i;:::-;23765:37;23615:194;;;;:::o;23815:348::-;23855:7;23878:20;23896:1;23878:20;:::i;:::-;23873:25;;23912:20;23930:1;23912:20;:::i;:::-;23907:25;;24100:1;24032:66;24028:74;24025:1;24022:81;24017:1;24010:9;24003:17;23999:105;23996:131;;;24107:18;;:::i;:::-;23996:131;24155:1;24152;24148:9;24137:20;;23815:348;;;;:::o;24169:180::-;24217:77;24214:1;24207:88;24314:4;24311:1;24304:15;24338:4;24335:1;24328:15;24355:185;24395:1;24412:20;24430:1;24412:20;:::i;:::-;24407:25;;24446:20;24464:1;24446:20;:::i;:::-;24441:25;;24485:1;24475:35;;24490:18;;:::i;:::-;24475:35;24532:1;24529;24525:9;24520:14;;24355:185;;;;:::o;24546:220::-;24686:34;24682:1;24674:6;24670:14;24663:58;24755:3;24750:2;24742:6;24738:15;24731:28;24546:220;:::o;24772:366::-;24914:3;24935:67;24999:2;24994:3;24935:67;:::i;:::-;24928:74;;25011:93;25100:3;25011:93;:::i;:::-;25129:2;25124:3;25120:12;25113:19;;24772:366;;;:::o;25144:419::-;25310:4;25348:2;25337:9;25333:18;25325:26;;25397:9;25391:4;25387:20;25383:1;25372:9;25368:17;25361:47;25425:131;25551:4;25425:131;:::i;:::-;25417:139;;25144:419;;;:::o;25569:229::-;25709:34;25705:1;25697:6;25693:14;25686:58;25778:12;25773:2;25765:6;25761:15;25754:37;25569:229;:::o;25804:366::-;25946:3;25967:67;26031:2;26026:3;25967:67;:::i;:::-;25960:74;;26043:93;26132:3;26043:93;:::i;:::-;26161:2;26156:3;26152:12;26145:19;;25804:366;;;:::o;26176:419::-;26342:4;26380:2;26369:9;26365:18;26357:26;;26429:9;26423:4;26419:20;26415:1;26404:9;26400:17;26393:47;26457:131;26583:4;26457:131;:::i;:::-;26449:139;;26176:419;;;:::o;26601:114::-;26668:6;26702:5;26696:12;26686:22;;26601:114;;;:::o;26721:184::-;26820:11;26854:6;26849:3;26842:19;26894:4;26889:3;26885:14;26870:29;;26721:184;;;;:::o;26911:132::-;26978:4;27001:3;26993:11;;27031:4;27026:3;27022:14;27014:22;;26911:132;;;:::o;27049:108::-;27126:24;27144:5;27126:24;:::i;:::-;27121:3;27114:37;27049:108;;:::o;27163:179::-;27232:10;27253:46;27295:3;27287:6;27253:46;:::i;:::-;27331:4;27326:3;27322:14;27308:28;;27163:179;;;;:::o;27348:113::-;27418:4;27450;27445:3;27441:14;27433:22;;27348:113;;;:::o;27497:732::-;27616:3;27645:54;27693:5;27645:54;:::i;:::-;27715:86;27794:6;27789:3;27715:86;:::i;:::-;27708:93;;27825:56;27875:5;27825:56;:::i;:::-;27904:7;27935:1;27920:284;27945:6;27942:1;27939:13;27920:284;;;28021:6;28015:13;28048:63;28107:3;28092:13;28048:63;:::i;:::-;28041:70;;28134:60;28187:6;28134:60;:::i;:::-;28124:70;;27980:224;27967:1;27964;27960:9;27955:14;;27920:284;;;27924:14;28220:3;28213:10;;27621:608;;;27497:732;;;;:::o;28235:831::-;28498:4;28536:3;28525:9;28521:19;28513:27;;28550:71;28618:1;28607:9;28603:17;28594:6;28550:71;:::i;:::-;28631:80;28707:2;28696:9;28692:18;28683:6;28631:80;:::i;:::-;28758:9;28752:4;28748:20;28743:2;28732:9;28728:18;28721:48;28786:108;28889:4;28880:6;28786:108;:::i;:::-;28778:116;;28904:72;28972:2;28961:9;28957:18;28948:6;28904:72;:::i;:::-;28986:73;29054:3;29043:9;29039:19;29030:6;28986:73;:::i;:::-;28235:831;;;;;;;;:::o;29072:177::-;29212:29;29208:1;29200:6;29196:14;29189:53;29072:177;:::o;29255:366::-;29397:3;29418:67;29482:2;29477:3;29418:67;:::i;:::-;29411:74;;29494:93;29583:3;29494:93;:::i;:::-;29612:2;29607:3;29603:12;29596:19;;29255:366;;;:::o;29627:419::-;29793:4;29831:2;29820:9;29816:18;29808:26;;29880:9;29874:4;29870:20;29866:1;29855:9;29851:17;29844:47;29908:131;30034:4;29908:131;:::i;:::-;29900:139;;29627:419;;;:::o
Swarm Source
ipfs://5df53cb7cac0f85b664526a32ca0ac61fb56bf302976340eef4c3d0c358a0fa8
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.