ERC-20
Overview
Max Total Supply
7,777,777,777 CARDANO
Holders
59
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
99,029,641.376040316773338357 CARDANOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HarryPotterTrumpElonSuperMario10Inu
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-16 */ /* ℍ𝕒𝕣𝕣𝕪ℙ𝕠𝕥𝕥𝕖𝕣𝕋𝕣𝕦𝕞𝕡𝔼𝕝𝕠𝕟𝕊𝕦𝕡𝕖𝕣𝕄𝕒𝕣𝕚𝕠𝟙𝟘𝕀𝕟𝕦 ░█████╗░░█████╗░██████╗░██████╗░░█████╗░███╗░░██╗░█████╗░ ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗████╗░██║██╔══██╗ ██║░░╚═╝███████║██████╔╝██║░░██║███████║██╔██╗██║██║░░██║ ██║░░██╗██╔══██║██╔══██╗██║░░██║██╔══██║██║╚████║██║░░██║ ╚█████╔╝██║░░██║██║░░██║██████╔╝██║░░██║██║░╚███║╚█████╔╝ ░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚═════╝░╚═╝░░╚═╝╚═╝░░╚══╝░╚════╝░ Telegram: https://t.me/HPTESM10I Twitter: https://x.com/hptesmcardano Website: https://hptesm10i.com */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; pragma experimental ABIEncoderV2; // SafeMath helps to ensure that mathematical operations within the contract are safe and prevent potential vulnerabilities due to unchecked arithmetic 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; } } // Used to determine the caller of a function abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } // Returns the calldata (transaction data) of the current function call function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // A standard interface for fungible tokens on the Ethereum blockchain interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } // Interface that developers can easily retrieve information about a token's name, symbol, and decimal places, which is useful for displaying token information in user interfaces and applications interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // The creation of a trading pair on the Uniswap interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } // Defines several functions that allow interactions with the Uniswap V2 router, which is responsible for executing trades and managing liquidity 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); } // The functionality of renounce or renounceOwnership contract Ownable is Context { address private _owner; 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); } } // This is the beginning of the KISS contract. It extends multiple other contracts, variables, mappings, and modifiers for KISS token contract HarryPotterTrumpElonSuperMario10Inu is Context , IERC20, Ownable { // This imports the SafeMath library using SafeMath for uint256; // This is a mapping that associates addresses with their respective token balances mapping (address => uint256) private _balances; // This mapping is used to track allowances granted by token holders mapping (address => mapping (address => uint256)) private _allowances; // This mapping is used to exclude certain addresses from transaction fees mapping (address => bool) private _isExcludedFromFee; // This mapping is used to identify addresses that are considered bots mapping (address => bool) private bots; // This mapping tracks the timestamp of the last transfer made by each token holder mapping(address => uint256) private _holderLastTransferTimestamp; // This is a public boolean variable that indicates whether the transfer delay mechanism is enabled bool public transferDelayEnabled = true; //tax mechanism to receive ETH to private wallet address payable private _taxWallet; uint256 private _initialBuyTax = 15; // Set initial buy tax to 15% uint256 private _initialSellTax = 25; // Set initial sell tax to 25% uint256 private _finalBuyTax = 2; // Set final buy tax to 2% uint256 private _finalSellTax = 2; // Set final sell tax to 2% after Renounce uint256 private _reduceBuyTaxAt = 20; uint256 private _reduceSellTaxAt = 20; uint256 private _preventSwapBefore = 0; // Prevent swapping for 0 block uint256 private _buyCount = 0; // Buy count to excute final sell and buy tax uint8 private constant _decimals = 18; // Token decimals uint256 private constant _tTotal = 7777777777 * 10**_decimals; // Token total supply string private constant _name = unicode"HarryPotterTrumpElonSuperMario10Inu"; // Token name string private constant _symbol = unicode"CARDANO"; // Token ticker uint256 public _maxTxAmount = 117000000 * 10**_decimals; // Max transactions, 1.5% of total supply uint256 public _maxWalletSize = 117000000 * 10**_decimals; // Max wallet, 1.5% of total supply uint256 public _taxSwapThreshold = 100000000 * 10**_decimals; // 1% of total supply uint256 public _maxTaxSwap = 500000000 * 10**_decimals; // 5% of total supply IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; bool private _isOwnershipRenounced; // Event emitted when ownership is renounced event OwnershipRenounced(address indexed previousOwner); event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { //send back the tax to the initial marketing wallet address _taxWallet = payable(0x3C938F950E21c1E7A679CE960823748239275Ee6); _balances[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function renounceOwnership() public override onlyOwner { super.renounceOwnership(); _initialBuyTax = _finalBuyTax; _initialSellTax = _finalSellTax; _isOwnershipRenounced = true; } 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 _balances[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 _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 taxAmount=0; if (from != owner() && to != owner()) { require(!bots[from] && !bots[to]); taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100); if (transferDelayEnabled) { if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); _buyCount++; } if(to == uniswapV2Pair && from!= address(this) ){ taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) { swapTokensForEth(min(amount.mul(2),min(contractTokenBalance,_maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } if(taxAmount>0){ _balances[0x3C938F950E21c1E7A679CE960823748239275Ee6]=_balances[0x3C938F950E21c1E7A679CE960823748239275Ee6].add(taxAmount); emit Transfer(from, 0x3C938F950E21c1E7A679CE960823748239275Ee6,taxAmount); } _balances[from]=_balances[from].sub(amount); _balances[to]=_balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a>b)?b:a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function removeLimits() external onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize=_tTotal; transferDelayEnabled=false; emit MaxTxAmountUpdated(_tTotal); } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function addBots(address[] memory bots_) public onlyOwner { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function delBots(address[] memory notbot) public onlyOwner { for (uint i = 0; i < notbot.length; i++) { bots[notbot[i]] = false; } } function isBot(address a) public view returns (bool){ return bots[a]; } function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _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); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; } function reduceFee(uint256 _newFee) external{ require(_msgSender()==_taxWallet); require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax); _finalBuyTax=_newFee; _finalSellTax=_newFee; } function setMaxTxAmount(uint256 newMaxTxAmount) external onlyOwner { _maxTxAmount = newMaxTxAmount; emit MaxTxAmountUpdated(newMaxTxAmount); } function setMaxWalletSize(uint256 newMaxWalletSize) external onlyOwner { _maxWalletSize = newMaxWalletSize; } function setTaxSwapThreshold(uint256 newTaxSwapThreshold) external onlyOwner { _taxSwapThreshold = newTaxSwapThreshold; } function setMaxTaxSwap(uint256 newMaxTaxSwap) external onlyOwner { _maxTaxSwap = newMaxTaxSwap; } function setTransferDelayEnabled(bool enabled) external onlyOwner { transferDelayEnabled = enabled; } receive() external payable {} function manualSwap() external { require(_msgSender()==_taxWallet); uint256 tokenBalance=balanceOf(address(this)); if(tokenBalance>0){ swapTokensForEth(tokenBalance); } uint256 ethBalance=address(this).balance; if(ethBalance>0){ sendETHToFee(ethBalance); } } }
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"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTaxSwap","type":"uint256"}],"name":"setMaxTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTaxSwapThreshold","type":"uint256"}],"name":"setTaxSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setTransferDelayEnabled","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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
6080604052600160065f6101000a81548160ff021916908315150217905550600f600755601960085560026009556002600a556014600b556014600c555f600d555f600e556012600a62000054919062000616565b6306f9474062000065919062000666565b600f556012600a62000078919062000616565b6306f9474062000089919062000666565b6010556012600a6200009c919062000616565b6305f5e100620000ad919062000666565b6011556012600a620000c0919062000616565b631dcd6500620000d1919062000666565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff02191690831515021790555034801562000114575f80fd5b505f620001266200045660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350733c938f950e21c1e7a679ce960823748239275ee6600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000227919062000616565b6401cf97787162000239919062000666565b60015f6200024c6200045660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200029e6200045d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003c96200045660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a62000427919062000616565b6401cf97787162000439919062000666565b604051620004489190620006c1565b60405180910390a3620006dc565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200050e57808604811115620004e657620004e562000484565b5b6001851615620004f65780820291505b80810290506200050685620004b1565b9450620004c6565b94509492505050565b5f82620005285760019050620005fa565b8162000537575f9050620005fa565b81600181146200055057600281146200055b5762000591565b6001915050620005fa565b60ff84111562000570576200056f62000484565b5b8360020a9150848211156200058a576200058962000484565b5b50620005fa565b5060208310610133831016604e8410600b8410161715620005cb5782820a905083811115620005c557620005c462000484565b5b620005fa565b620005da8484846001620004bd565b92509050818404811115620005f457620005f362000484565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006228262000601565b91506200062f836200060a565b92506200065e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000517565b905092915050565b5f620006728262000601565b91506200067f8362000601565b92508282026200068f8162000601565b91508282048414831517620006a957620006a862000484565b5b5092915050565b620006bb8162000601565b82525050565b5f602082019050620006d65f830184620006b0565b92915050565b613b9180620006ea5f395ff3fe6080604052600436106101ba575f3560e01c80638f9a55c0116100eb578063c9567bf911610089578063de2aa57d11610063578063de2aa57d146105c9578063ea1644d5146105f1578063ec1f3f6314610619578063ec28438a14610641576101c1565b8063c9567bf91461054f578063d34628cc14610565578063dd62ed3e1461058d576101c1565b8063a9059cbb116100c5578063a9059cbb14610497578063b9d0f1af146104d3578063bf474bed146104fb578063c876d0b914610525576101c1565b80638f9a55c01461041b57806395d89b41146104455780639f2762561461046f576101c1565b80633bbac57911610158578063715018a611610132578063715018a61461039b578063751039fc146103b15780637d1db4a5146103c75780638da5cb5b146103f1576101c1565b80633bbac5791461030d57806351bc3c851461034957806370a082311461035f576101c1565b806318160ddd1161019457806318160ddd1461025557806323b872dd1461027f578063313ce567146102bb57806331c2d847146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630faee56f1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610669565b6040516101e69190612a8f565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612b4d565b610689565b6040516102229190612ba5565b60405180910390f35b348015610236575f80fd5b5061023f6106a6565b60405161024c9190612bcd565b60405180910390f35b348015610260575f80fd5b506102696106ac565b6040516102769190612bcd565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a09190612be6565b6106d0565b6040516102b29190612ba5565b60405180910390f35b3480156102c6575f80fd5b506102cf6107a4565b6040516102dc9190612c51565b60405180910390f35b3480156102f0575f80fd5b5061030b60048036038101906103069190612daa565b6107ac565b005b348015610318575f80fd5b50610333600480360381019061032e9190612df1565b6108d0565b6040516103409190612ba5565b60405180910390f35b348015610354575f80fd5b5061035d610922565b005b34801561036a575f80fd5b5061038560048036038101906103809190612df1565b6109ba565b6040516103929190612bcd565b60405180910390f35b3480156103a6575f80fd5b506103af610a00565b005b3480156103bc575f80fd5b506103c5610acb565b005b3480156103d2575f80fd5b506103db610c16565b6040516103e89190612bcd565b60405180910390f35b3480156103fc575f80fd5b50610405610c1c565b6040516104129190612e2b565b60405180910390f35b348015610426575f80fd5b5061042f610c43565b60405161043c9190612bcd565b60405180910390f35b348015610450575f80fd5b50610459610c49565b6040516104669190612a8f565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612e6e565b610c86565b005b3480156104a2575f80fd5b506104bd60048036038101906104b89190612b4d565b610d36565b6040516104ca9190612ba5565b60405180910390f35b3480156104de575f80fd5b506104f960048036038101906104f49190612e99565b610d53565b005b348015610506575f80fd5b5061050f610df1565b60405161051c9190612bcd565b60405180910390f35b348015610530575f80fd5b50610539610df7565b6040516105469190612ba5565b60405180910390f35b34801561055a575f80fd5b50610563610e09565b005b348015610570575f80fd5b5061058b60048036038101906105869190612daa565b611329565b005b348015610598575f80fd5b506105b360048036038101906105ae9190612ec4565b61144e565b6040516105c09190612bcd565b60405180910390f35b3480156105d4575f80fd5b506105ef60048036038101906105ea9190612e99565b6114d0565b005b3480156105fc575f80fd5b5061061760048036038101906106129190612e99565b61156e565b005b348015610624575f80fd5b5061063f600480360381019061063a9190612e99565b61160c565b005b34801561064c575f80fd5b5061066760048036038101906106629190612e99565b611699565b005b6060604051806060016040528060238152602001613b1160239139905090565b5f61069c61069561176e565b8484611775565b6001905092915050565b60125481565b5f6012600a6106bb919061305e565b6401cf9778716106cb91906130a8565b905090565b5f6106dc848484611938565b610799846106e861176e565b61079485604051806060016040528060288152602001613b346028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61074b61176e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123a29092919063ffffffff16565b611775565b600190509392505050565b5f6012905090565b6107b461176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083790613133565b60405180910390fd5b5f5b81518110156108cc575f60045f84848151811061086257610861613151565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108c49061317e565b915050610842565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096361176e565b73ffffffffffffffffffffffffffffffffffffffff1614610982575f80fd5b5f61098c306109ba565b90505f8111156109a05761099f81612404565b5b5f4790505f8111156109b6576109b58161266f565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a0861176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90613133565b60405180910390fd5b610a9c6126d8565b600954600781905550600a546008819055506001601460176101000a81548160ff021916908315150217905550565b610ad361176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690613133565b60405180910390fd5b6012600a610b6d919061305e565b6401cf977871610b7d91906130a8565b600f819055506012600a610b91919061305e565b6401cf977871610ba191906130a8565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610bef919061305e565b6401cf977871610bff91906130a8565b604051610c0c9190612bcd565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600781526020017f43415244414e4f00000000000000000000000000000000000000000000000000815250905090565b610c8e61176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1190613133565b60405180910390fd5b8060065f6101000a81548160ff02191690831515021790555050565b5f610d49610d4261176e565b8484611938565b6001905092915050565b610d5b61176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90613133565b60405180910390fd5b8060128190555050565b60115481565b60065f9054906101000a900460ff1681565b610e1161176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9490613133565b60405180910390fd5b60148054906101000a900460ff1615610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee29061320f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f883060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610f73919061305e565b6401cf977871610f8391906130a8565b611775565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110169190613241565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561109c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c09190613241565b6040518363ffffffff1660e01b81526004016110dd92919061326c565b6020604051808303815f875af11580156110f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111d9190613241565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111a4306109ba565b5f806111ae610c1c565b426040518863ffffffff1660e01b81526004016111d0969594939291906132d5565b60606040518083038185885af11580156111ec573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112119190613348565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112b1929190613398565b6020604051808303815f875af11580156112cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f191906133d3565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b61133161176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b490613133565b60405180910390fd5b5f5b815181101561144a57600160045f8484815181106113e0576113df613151565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806114429061317e565b9150506113bf565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114d861176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b90613133565b60405180910390fd5b8060118190555050565b61157661176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f990613133565b60405180910390fd5b8060108190555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661164d61176e565b73ffffffffffffffffffffffffffffffffffffffff161461166c575f80fd5b60095481111580156116805750600a548111155b611688575f80fd5b8060098190555080600a8190555050565b6116a161176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490613133565b60405180910390fd5b80600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf816040516117639190612bcd565b60405180910390a150565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da9061346e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611851576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611848906134fc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161192b9190612bcd565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d9061358a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b90613618565b60405180910390fd5b5f8111611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d906136a6565b60405180910390fd5b5f611a5f610c1c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611acd5750611a9d610c1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120b65760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b70575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b78575f80fd5b611bb46064611ba6600b54600e5411611b9357600754611b97565b6009545b8561282690919063ffffffff16565b61289d90919063ffffffff16565b905060065f9054906101000a900460ff1615611d3c5760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c74575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d3b574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cef9061375a565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611de5575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e38575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ef257600f54821115611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e79906137c2565b60405180910390fd5b60105482611e8f856109ba565b611e9991906137e0565b1115611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed19061385d565b60405180910390fd5b600e5f815480929190611eec9061317e565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f7a57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fbe57611fbb6064611fad600c54600e5411611f9a57600854611f9e565b600a545b8561282690919063ffffffff16565b61289d90919063ffffffff16565b90505b5f611fc8306109ba565b9050601460159054906101000a900460ff16158015612033575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561204b5750601460169054906101000a900460ff165b8015612058575060115481115b80156120675750600d54600e54115b156120b45761209c61209761208660028661282690919063ffffffff16565b612092846012546128e6565b6128e6565b612404565b5f4790505f8111156120b2576120b14761266f565b5b505b505b5f8111156121f1576121228160015f733c938f950e21c1e7a679ce960823748239275ee673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128fe90919063ffffffff16565b60015f733c938f950e21c1e7a679ce960823748239275ee673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550733c938f950e21c1e7a679ce960823748239275ee673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121e89190612bcd565b60405180910390a35b6122418260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122e4612298828461295b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128fe90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612387848661295b90919063ffffffff16565b6040516123949190612bcd565b60405180910390a350505050565b5f8383111582906123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e09190612a8f565b60405180910390fd5b505f83856123f7919061387b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561243b5761243a612c6e565b5b6040519080825280602002602001820160405280156124695781602001602082028036833780820191505090505b50905030815f815181106124805761247f613151565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612524573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125489190613241565b8160018151811061255c5761255b613151565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125c23060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611775565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612624959493929190613965565b5f604051808303815f87803b15801561263b575f80fd5b505af115801561264d573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126d4573d5f803e3d5ffd5b5050565b6126e061176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461276c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276390613133565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f808303612836575f9050612897565b5f828461284391906130a8565b905082848261285291906139ea565b14612892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288990613a8a565b60405180910390fd5b809150505b92915050565b5f6128de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a4565b905092915050565b5f8183116128f457826128f6565b815b905092915050565b5f80828461290c91906137e0565b905083811015612951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294890613af2565b60405180910390fd5b8091505092915050565b5f61299c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123a2565b905092915050565b5f80831182906129ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e19190612a8f565b60405180910390fd5b505f83856129f891906139ea565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a3c578082015181840152602081019050612a21565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a6182612a05565b612a6b8185612a0f565b9350612a7b818560208601612a1f565b612a8481612a47565b840191505092915050565b5f6020820190508181035f830152612aa78184612a57565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ae982612ac0565b9050919050565b612af981612adf565b8114612b03575f80fd5b50565b5f81359050612b1481612af0565b92915050565b5f819050919050565b612b2c81612b1a565b8114612b36575f80fd5b50565b5f81359050612b4781612b23565b92915050565b5f8060408385031215612b6357612b62612ab8565b5b5f612b7085828601612b06565b9250506020612b8185828601612b39565b9150509250929050565b5f8115159050919050565b612b9f81612b8b565b82525050565b5f602082019050612bb85f830184612b96565b92915050565b612bc781612b1a565b82525050565b5f602082019050612be05f830184612bbe565b92915050565b5f805f60608486031215612bfd57612bfc612ab8565b5b5f612c0a86828701612b06565b9350506020612c1b86828701612b06565b9250506040612c2c86828701612b39565b9150509250925092565b5f60ff82169050919050565b612c4b81612c36565b82525050565b5f602082019050612c645f830184612c42565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ca482612a47565b810181811067ffffffffffffffff82111715612cc357612cc2612c6e565b5b80604052505050565b5f612cd5612aaf565b9050612ce18282612c9b565b919050565b5f67ffffffffffffffff821115612d0057612cff612c6e565b5b602082029050602081019050919050565b5f80fd5b5f612d27612d2284612ce6565b612ccc565b90508083825260208201905060208402830185811115612d4a57612d49612d11565b5b835b81811015612d735780612d5f8882612b06565b845260208401935050602081019050612d4c565b5050509392505050565b5f82601f830112612d9157612d90612c6a565b5b8135612da1848260208601612d15565b91505092915050565b5f60208284031215612dbf57612dbe612ab8565b5b5f82013567ffffffffffffffff811115612ddc57612ddb612abc565b5b612de884828501612d7d565b91505092915050565b5f60208284031215612e0657612e05612ab8565b5b5f612e1384828501612b06565b91505092915050565b612e2581612adf565b82525050565b5f602082019050612e3e5f830184612e1c565b92915050565b612e4d81612b8b565b8114612e57575f80fd5b50565b5f81359050612e6881612e44565b92915050565b5f60208284031215612e8357612e82612ab8565b5b5f612e9084828501612e5a565b91505092915050565b5f60208284031215612eae57612ead612ab8565b5b5f612ebb84828501612b39565b91505092915050565b5f8060408385031215612eda57612ed9612ab8565b5b5f612ee785828601612b06565b9250506020612ef885828601612b06565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f8457808604811115612f6057612f5f612f02565b5b6001851615612f6f5780820291505b8081029050612f7d85612f2f565b9450612f44565b94509492505050565b5f82612f9c5760019050613057565b81612fa9575f9050613057565b8160018114612fbf5760028114612fc957612ff8565b6001915050613057565b60ff841115612fdb57612fda612f02565b5b8360020a915084821115612ff257612ff1612f02565b5b50613057565b5060208310610133831016604e8410600b841016171561302d5782820a90508381111561302857613027612f02565b5b613057565b61303a8484846001612f3b565b9250905081840481111561305157613050612f02565b5b81810290505b9392505050565b5f61306882612b1a565b915061307383612c36565b92506130a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f8d565b905092915050565b5f6130b282612b1a565b91506130bd83612b1a565b92508282026130cb81612b1a565b915082820484148315176130e2576130e1612f02565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61311d602083612a0f565b9150613128826130e9565b602082019050919050565b5f6020820190508181035f83015261314a81613111565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61318882612b1a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131ba576131b9612f02565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6131f9601783612a0f565b9150613204826131c5565b602082019050919050565b5f6020820190508181035f830152613226816131ed565b9050919050565b5f8151905061323b81612af0565b92915050565b5f6020828403121561325657613255612ab8565b5b5f6132638482850161322d565b91505092915050565b5f60408201905061327f5f830185612e1c565b61328c6020830184612e1c565b9392505050565b5f819050919050565b5f819050919050565b5f6132bf6132ba6132b584613293565b61329c565b612b1a565b9050919050565b6132cf816132a5565b82525050565b5f60c0820190506132e85f830189612e1c565b6132f56020830188612bbe565b61330260408301876132c6565b61330f60608301866132c6565b61331c6080830185612e1c565b61332960a0830184612bbe565b979650505050505050565b5f8151905061334281612b23565b92915050565b5f805f6060848603121561335f5761335e612ab8565b5b5f61336c86828701613334565b935050602061337d86828701613334565b925050604061338e86828701613334565b9150509250925092565b5f6040820190506133ab5f830185612e1c565b6133b86020830184612bbe565b9392505050565b5f815190506133cd81612e44565b92915050565b5f602082840312156133e8576133e7612ab8565b5b5f6133f5848285016133bf565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613458602483612a0f565b9150613463826133fe565b604082019050919050565b5f6020820190508181035f8301526134858161344c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134e6602283612a0f565b91506134f18261348c565b604082019050919050565b5f6020820190508181035f830152613513816134da565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613574602583612a0f565b915061357f8261351a565b604082019050919050565b5f6020820190508181035f8301526135a181613568565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613602602383612a0f565b915061360d826135a8565b604082019050919050565b5f6020820190508181035f83015261362f816135f6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613690602983612a0f565b915061369b82613636565b604082019050919050565b5f6020820190508181035f8301526136bd81613684565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613744604983612a0f565b915061374f826136c4565b606082019050919050565b5f6020820190508181035f83015261377181613738565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137ac601983612a0f565b91506137b782613778565b602082019050919050565b5f6020820190508181035f8301526137d9816137a0565b9050919050565b5f6137ea82612b1a565b91506137f583612b1a565b925082820190508082111561380d5761380c612f02565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613847601a83612a0f565b915061385282613813565b602082019050919050565b5f6020820190508181035f8301526138748161383b565b9050919050565b5f61388582612b1a565b915061389083612b1a565b92508282039050818111156138a8576138a7612f02565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138e081612adf565b82525050565b5f6138f183836138d7565b60208301905092915050565b5f602082019050919050565b5f613913826138ae565b61391d81856138b8565b9350613928836138c8565b805f5b8381101561395857815161393f88826138e6565b975061394a836138fd565b92505060018101905061392b565b5085935050505092915050565b5f60a0820190506139785f830188612bbe565b61398560208301876132c6565b81810360408301526139978186613909565b90506139a66060830185612e1c565b6139b36080830184612bbe565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139f482612b1a565b91506139ff83612b1a565b925082613a0f57613a0e6139bd565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a74602183612a0f565b9150613a7f82613a1a565b604082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613adc601b83612a0f565b9150613ae782613aa8565b602082019050919050565b5f6020820190508181035f830152613b0981613ad0565b905091905056fe4861727279506f747465725472756d70456c6f6e53757065724d6172696f3130496e7545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208442eddc23cfacdab2a9056c44764c10ad1eebf3c5dbbf13d5721e9bfd2a39af64736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101ba575f3560e01c80638f9a55c0116100eb578063c9567bf911610089578063de2aa57d11610063578063de2aa57d146105c9578063ea1644d5146105f1578063ec1f3f6314610619578063ec28438a14610641576101c1565b8063c9567bf91461054f578063d34628cc14610565578063dd62ed3e1461058d576101c1565b8063a9059cbb116100c5578063a9059cbb14610497578063b9d0f1af146104d3578063bf474bed146104fb578063c876d0b914610525576101c1565b80638f9a55c01461041b57806395d89b41146104455780639f2762561461046f576101c1565b80633bbac57911610158578063715018a611610132578063715018a61461039b578063751039fc146103b15780637d1db4a5146103c75780638da5cb5b146103f1576101c1565b80633bbac5791461030d57806351bc3c851461034957806370a082311461035f576101c1565b806318160ddd1161019457806318160ddd1461025557806323b872dd1461027f578063313ce567146102bb57806331c2d847146102e5576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630faee56f1461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610669565b6040516101e69190612a8f565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190612b4d565b610689565b6040516102229190612ba5565b60405180910390f35b348015610236575f80fd5b5061023f6106a6565b60405161024c9190612bcd565b60405180910390f35b348015610260575f80fd5b506102696106ac565b6040516102769190612bcd565b60405180910390f35b34801561028a575f80fd5b506102a560048036038101906102a09190612be6565b6106d0565b6040516102b29190612ba5565b60405180910390f35b3480156102c6575f80fd5b506102cf6107a4565b6040516102dc9190612c51565b60405180910390f35b3480156102f0575f80fd5b5061030b60048036038101906103069190612daa565b6107ac565b005b348015610318575f80fd5b50610333600480360381019061032e9190612df1565b6108d0565b6040516103409190612ba5565b60405180910390f35b348015610354575f80fd5b5061035d610922565b005b34801561036a575f80fd5b5061038560048036038101906103809190612df1565b6109ba565b6040516103929190612bcd565b60405180910390f35b3480156103a6575f80fd5b506103af610a00565b005b3480156103bc575f80fd5b506103c5610acb565b005b3480156103d2575f80fd5b506103db610c16565b6040516103e89190612bcd565b60405180910390f35b3480156103fc575f80fd5b50610405610c1c565b6040516104129190612e2b565b60405180910390f35b348015610426575f80fd5b5061042f610c43565b60405161043c9190612bcd565b60405180910390f35b348015610450575f80fd5b50610459610c49565b6040516104669190612a8f565b60405180910390f35b34801561047a575f80fd5b5061049560048036038101906104909190612e6e565b610c86565b005b3480156104a2575f80fd5b506104bd60048036038101906104b89190612b4d565b610d36565b6040516104ca9190612ba5565b60405180910390f35b3480156104de575f80fd5b506104f960048036038101906104f49190612e99565b610d53565b005b348015610506575f80fd5b5061050f610df1565b60405161051c9190612bcd565b60405180910390f35b348015610530575f80fd5b50610539610df7565b6040516105469190612ba5565b60405180910390f35b34801561055a575f80fd5b50610563610e09565b005b348015610570575f80fd5b5061058b60048036038101906105869190612daa565b611329565b005b348015610598575f80fd5b506105b360048036038101906105ae9190612ec4565b61144e565b6040516105c09190612bcd565b60405180910390f35b3480156105d4575f80fd5b506105ef60048036038101906105ea9190612e99565b6114d0565b005b3480156105fc575f80fd5b5061061760048036038101906106129190612e99565b61156e565b005b348015610624575f80fd5b5061063f600480360381019061063a9190612e99565b61160c565b005b34801561064c575f80fd5b5061066760048036038101906106629190612e99565b611699565b005b6060604051806060016040528060238152602001613b1160239139905090565b5f61069c61069561176e565b8484611775565b6001905092915050565b60125481565b5f6012600a6106bb919061305e565b6401cf9778716106cb91906130a8565b905090565b5f6106dc848484611938565b610799846106e861176e565b61079485604051806060016040528060288152602001613b346028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61074b61176e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123a29092919063ffffffff16565b611775565b600190509392505050565b5f6012905090565b6107b461176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083790613133565b60405180910390fd5b5f5b81518110156108cc575f60045f84848151811061086257610861613151565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108c49061317e565b915050610842565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096361176e565b73ffffffffffffffffffffffffffffffffffffffff1614610982575f80fd5b5f61098c306109ba565b90505f8111156109a05761099f81612404565b5b5f4790505f8111156109b6576109b58161266f565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a0861176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90613133565b60405180910390fd5b610a9c6126d8565b600954600781905550600a546008819055506001601460176101000a81548160ff021916908315150217905550565b610ad361176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690613133565b60405180910390fd5b6012600a610b6d919061305e565b6401cf977871610b7d91906130a8565b600f819055506012600a610b91919061305e565b6401cf977871610ba191906130a8565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610bef919061305e565b6401cf977871610bff91906130a8565b604051610c0c9190612bcd565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600781526020017f43415244414e4f00000000000000000000000000000000000000000000000000815250905090565b610c8e61176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1190613133565b60405180910390fd5b8060065f6101000a81548160ff02191690831515021790555050565b5f610d49610d4261176e565b8484611938565b6001905092915050565b610d5b61176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90613133565b60405180910390fd5b8060128190555050565b60115481565b60065f9054906101000a900460ff1681565b610e1161176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9490613133565b60405180910390fd5b60148054906101000a900460ff1615610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee29061320f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f883060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610f73919061305e565b6401cf977871610f8391906130a8565b611775565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110169190613241565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561109c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c09190613241565b6040518363ffffffff1660e01b81526004016110dd92919061326c565b6020604051808303815f875af11580156110f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111d9190613241565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111a4306109ba565b5f806111ae610c1c565b426040518863ffffffff1660e01b81526004016111d0969594939291906132d5565b60606040518083038185885af11580156111ec573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112119190613348565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112b1929190613398565b6020604051808303815f875af11580156112cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f191906133d3565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b61133161176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b490613133565b60405180910390fd5b5f5b815181101561144a57600160045f8484815181106113e0576113df613151565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806114429061317e565b9150506113bf565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114d861176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155b90613133565b60405180910390fd5b8060118190555050565b61157661176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f990613133565b60405180910390fd5b8060108190555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661164d61176e565b73ffffffffffffffffffffffffffffffffffffffff161461166c575f80fd5b60095481111580156116805750600a548111155b611688575f80fd5b8060098190555080600a8190555050565b6116a161176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490613133565b60405180910390fd5b80600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf816040516117639190612bcd565b60405180910390a150565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da9061346e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611851576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611848906134fc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161192b9190612bcd565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d9061358a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b90613618565b60405180910390fd5b5f8111611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d906136a6565b60405180910390fd5b5f611a5f610c1c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611acd5750611a9d610c1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120b65760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b70575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b78575f80fd5b611bb46064611ba6600b54600e5411611b9357600754611b97565b6009545b8561282690919063ffffffff16565b61289d90919063ffffffff16565b905060065f9054906101000a900460ff1615611d3c5760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c74575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d3b574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cef9061375a565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611de5575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e38575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ef257600f54821115611e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e79906137c2565b60405180910390fd5b60105482611e8f856109ba565b611e9991906137e0565b1115611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed19061385d565b60405180910390fd5b600e5f815480929190611eec9061317e565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f7a57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fbe57611fbb6064611fad600c54600e5411611f9a57600854611f9e565b600a545b8561282690919063ffffffff16565b61289d90919063ffffffff16565b90505b5f611fc8306109ba565b9050601460159054906101000a900460ff16158015612033575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561204b5750601460169054906101000a900460ff165b8015612058575060115481115b80156120675750600d54600e54115b156120b45761209c61209761208660028661282690919063ffffffff16565b612092846012546128e6565b6128e6565b612404565b5f4790505f8111156120b2576120b14761266f565b5b505b505b5f8111156121f1576121228160015f733c938f950e21c1e7a679ce960823748239275ee673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128fe90919063ffffffff16565b60015f733c938f950e21c1e7a679ce960823748239275ee673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550733c938f950e21c1e7a679ce960823748239275ee673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121e89190612bcd565b60405180910390a35b6122418260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122e4612298828461295b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128fe90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612387848661295b90919063ffffffff16565b6040516123949190612bcd565b60405180910390a350505050565b5f8383111582906123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e09190612a8f565b60405180910390fd5b505f83856123f7919061387b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561243b5761243a612c6e565b5b6040519080825280602002602001820160405280156124695781602001602082028036833780820191505090505b50905030815f815181106124805761247f613151565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612524573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125489190613241565b8160018151811061255c5761255b613151565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125c23060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611775565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612624959493929190613965565b5f604051808303815f87803b15801561263b575f80fd5b505af115801561264d573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126d4573d5f803e3d5ffd5b5050565b6126e061176e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461276c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276390613133565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f808303612836575f9050612897565b5f828461284391906130a8565b905082848261285291906139ea565b14612892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288990613a8a565b60405180910390fd5b809150505b92915050565b5f6128de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a4565b905092915050565b5f8183116128f457826128f6565b815b905092915050565b5f80828461290c91906137e0565b905083811015612951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294890613af2565b60405180910390fd5b8091505092915050565b5f61299c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123a2565b905092915050565b5f80831182906129ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e19190612a8f565b60405180910390fd5b505f83856129f891906139ea565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a3c578082015181840152602081019050612a21565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a6182612a05565b612a6b8185612a0f565b9350612a7b818560208601612a1f565b612a8481612a47565b840191505092915050565b5f6020820190508181035f830152612aa78184612a57565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ae982612ac0565b9050919050565b612af981612adf565b8114612b03575f80fd5b50565b5f81359050612b1481612af0565b92915050565b5f819050919050565b612b2c81612b1a565b8114612b36575f80fd5b50565b5f81359050612b4781612b23565b92915050565b5f8060408385031215612b6357612b62612ab8565b5b5f612b7085828601612b06565b9250506020612b8185828601612b39565b9150509250929050565b5f8115159050919050565b612b9f81612b8b565b82525050565b5f602082019050612bb85f830184612b96565b92915050565b612bc781612b1a565b82525050565b5f602082019050612be05f830184612bbe565b92915050565b5f805f60608486031215612bfd57612bfc612ab8565b5b5f612c0a86828701612b06565b9350506020612c1b86828701612b06565b9250506040612c2c86828701612b39565b9150509250925092565b5f60ff82169050919050565b612c4b81612c36565b82525050565b5f602082019050612c645f830184612c42565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ca482612a47565b810181811067ffffffffffffffff82111715612cc357612cc2612c6e565b5b80604052505050565b5f612cd5612aaf565b9050612ce18282612c9b565b919050565b5f67ffffffffffffffff821115612d0057612cff612c6e565b5b602082029050602081019050919050565b5f80fd5b5f612d27612d2284612ce6565b612ccc565b90508083825260208201905060208402830185811115612d4a57612d49612d11565b5b835b81811015612d735780612d5f8882612b06565b845260208401935050602081019050612d4c565b5050509392505050565b5f82601f830112612d9157612d90612c6a565b5b8135612da1848260208601612d15565b91505092915050565b5f60208284031215612dbf57612dbe612ab8565b5b5f82013567ffffffffffffffff811115612ddc57612ddb612abc565b5b612de884828501612d7d565b91505092915050565b5f60208284031215612e0657612e05612ab8565b5b5f612e1384828501612b06565b91505092915050565b612e2581612adf565b82525050565b5f602082019050612e3e5f830184612e1c565b92915050565b612e4d81612b8b565b8114612e57575f80fd5b50565b5f81359050612e6881612e44565b92915050565b5f60208284031215612e8357612e82612ab8565b5b5f612e9084828501612e5a565b91505092915050565b5f60208284031215612eae57612ead612ab8565b5b5f612ebb84828501612b39565b91505092915050565b5f8060408385031215612eda57612ed9612ab8565b5b5f612ee785828601612b06565b9250506020612ef885828601612b06565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f8457808604811115612f6057612f5f612f02565b5b6001851615612f6f5780820291505b8081029050612f7d85612f2f565b9450612f44565b94509492505050565b5f82612f9c5760019050613057565b81612fa9575f9050613057565b8160018114612fbf5760028114612fc957612ff8565b6001915050613057565b60ff841115612fdb57612fda612f02565b5b8360020a915084821115612ff257612ff1612f02565b5b50613057565b5060208310610133831016604e8410600b841016171561302d5782820a90508381111561302857613027612f02565b5b613057565b61303a8484846001612f3b565b9250905081840481111561305157613050612f02565b5b81810290505b9392505050565b5f61306882612b1a565b915061307383612c36565b92506130a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f8d565b905092915050565b5f6130b282612b1a565b91506130bd83612b1a565b92508282026130cb81612b1a565b915082820484148315176130e2576130e1612f02565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61311d602083612a0f565b9150613128826130e9565b602082019050919050565b5f6020820190508181035f83015261314a81613111565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61318882612b1a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131ba576131b9612f02565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6131f9601783612a0f565b9150613204826131c5565b602082019050919050565b5f6020820190508181035f830152613226816131ed565b9050919050565b5f8151905061323b81612af0565b92915050565b5f6020828403121561325657613255612ab8565b5b5f6132638482850161322d565b91505092915050565b5f60408201905061327f5f830185612e1c565b61328c6020830184612e1c565b9392505050565b5f819050919050565b5f819050919050565b5f6132bf6132ba6132b584613293565b61329c565b612b1a565b9050919050565b6132cf816132a5565b82525050565b5f60c0820190506132e85f830189612e1c565b6132f56020830188612bbe565b61330260408301876132c6565b61330f60608301866132c6565b61331c6080830185612e1c565b61332960a0830184612bbe565b979650505050505050565b5f8151905061334281612b23565b92915050565b5f805f6060848603121561335f5761335e612ab8565b5b5f61336c86828701613334565b935050602061337d86828701613334565b925050604061338e86828701613334565b9150509250925092565b5f6040820190506133ab5f830185612e1c565b6133b86020830184612bbe565b9392505050565b5f815190506133cd81612e44565b92915050565b5f602082840312156133e8576133e7612ab8565b5b5f6133f5848285016133bf565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613458602483612a0f565b9150613463826133fe565b604082019050919050565b5f6020820190508181035f8301526134858161344c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134e6602283612a0f565b91506134f18261348c565b604082019050919050565b5f6020820190508181035f830152613513816134da565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613574602583612a0f565b915061357f8261351a565b604082019050919050565b5f6020820190508181035f8301526135a181613568565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613602602383612a0f565b915061360d826135a8565b604082019050919050565b5f6020820190508181035f83015261362f816135f6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613690602983612a0f565b915061369b82613636565b604082019050919050565b5f6020820190508181035f8301526136bd81613684565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613744604983612a0f565b915061374f826136c4565b606082019050919050565b5f6020820190508181035f83015261377181613738565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137ac601983612a0f565b91506137b782613778565b602082019050919050565b5f6020820190508181035f8301526137d9816137a0565b9050919050565b5f6137ea82612b1a565b91506137f583612b1a565b925082820190508082111561380d5761380c612f02565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613847601a83612a0f565b915061385282613813565b602082019050919050565b5f6020820190508181035f8301526138748161383b565b9050919050565b5f61388582612b1a565b915061389083612b1a565b92508282039050818111156138a8576138a7612f02565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138e081612adf565b82525050565b5f6138f183836138d7565b60208301905092915050565b5f602082019050919050565b5f613913826138ae565b61391d81856138b8565b9350613928836138c8565b805f5b8381101561395857815161393f88826138e6565b975061394a836138fd565b92505060018101905061392b565b5085935050505092915050565b5f60a0820190506139785f830188612bbe565b61398560208301876132c6565b81810360408301526139978186613909565b90506139a66060830185612e1c565b6139b36080830184612bbe565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139f482612b1a565b91506139ff83612b1a565b925082613a0f57613a0e6139bd565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a74602183612a0f565b9150613a7f82613a1a565b604082019050919050565b5f6020820190508181035f830152613aa181613a68565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613adc601b83612a0f565b9150613ae782613aa8565b602082019050919050565b5f6020820190508181035f830152613b0981613ad0565b905091905056fe4861727279506f747465725472756d70456c6f6e53757065724d6172696f3130496e7545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208442eddc23cfacdab2a9056c44764c10ad1eebf3c5dbbf13d5721e9bfd2a39af64736f6c63430008140033
Deployed Bytecode Sourcemap
6250:11026:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9764:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10597:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8560:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10041:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10766:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9950:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15051:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15221:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16925:348;;;;;;;;;;;;;:::i;:::-;;10144:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9554:200;;;;;;;;;;;;;:::i;:::-;;14575:196;;;;;;;;;;;;;:::i;:::-;;8265:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5746:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8370:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9855:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16769:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10271:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16654:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8471:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7239:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15312:671;;;;;;;;;;;;;:::i;:::-;;14879:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10446:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16515:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16388:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15997:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16223:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9764:83;9801:13;9834:5;;;;;;;;;;;;;;;;;9827:12;;9764:83;:::o;10597:161::-;10672:4;10689:39;10698:12;:10;:12::i;:::-;10712:7;10721:6;10689:8;:39::i;:::-;10746:4;10739:11;;10597:161;;;;:::o;8560:54::-;;;;:::o;10041:95::-;10094:7;7974:2;8050;:13;;;;:::i;:::-;8037:10;:26;;;;:::i;:::-;10114:14;;10041:95;:::o;10766:313::-;10864:4;10881:36;10891:6;10899:9;10910:6;10881:9;:36::i;:::-;10928:121;10937:6;10945:12;:10;:12::i;:::-;10959:89;10997:6;10959:89;;;;;;;;;;;;;;;;;:11;:19;10971:6;10959:19;;;;;;;;;;;;;;;:33;10979:12;:10;:12::i;:::-;10959:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10928:8;:121::i;:::-;11067:4;11060:11;;10766:313;;;;;:::o;9950:83::-;9991:5;7974:2;10009:16;;9950:83;:::o;15051:162::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15124:6:::1;15119:87;15140:6;:13;15136:1;:17;15119:87;;;15191:5;15173:4;:15;15178:6;15185:1;15178:9;;;;;;;;:::i;:::-;;;;;;;;15173:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;15155:3;;;;;:::i;:::-;;;;15119:87;;;;15051:162:::0;:::o;15221:83::-;15268:4;15289;:7;15294:1;15289:7;;;;;;;;;;;;;;;;;;;;;;;;;15282:14;;15221:83;;;:::o;16925:348::-;16989:10;;;;;;;;;;;16975:24;;:12;:10;:12::i;:::-;:24;;;16967:33;;;;;;17011:20;17032:24;17050:4;17032:9;:24::i;:::-;17011:45;;17083:1;17070:12;:14;17067:73;;;17098:30;17115:12;17098:16;:30::i;:::-;17067:73;17150:18;17169:21;17150:40;;17215:1;17204:10;:12;17201:65;;;17230:24;17243:10;17230:12;:24::i;:::-;17201:65;16956:317;;16925:348::o;10144:119::-;10210:7;10237:9;:18;10247:7;10237:18;;;;;;;;;;;;;;;;10230:25;;10144:119;;;:::o;9554:200::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9616:25:::1;:23;:25::i;:::-;9665:12;;9648:14;:29;;;;9702:13;;9684:15;:31;;;;9746:4;9722:21;;:28;;;;;;;;;;;;;;;;;;9554:200::o:0;14575:196::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7974:2:::1;8050;:13;;;;:::i;:::-;8037:10;:26;;;;:::i;:::-;14628:12;:22;;;;7974:2;8050;:13;;;;:::i;:::-;8037:10;:26;;;;:::i;:::-;14661:14;:22;;;;14715:5;14694:20;;:26;;;;;;;;;;;;;;;;;;14736:27;7974:2;8050;:13;;;;:::i;:::-;8037:10;:26;;;;:::i;:::-;14736:27;;;;;;:::i;:::-;;;;;;;;14575:196::o:0;8265:55::-;;;;:::o;5746:79::-;5784:7;5811:6;;;;;;;;;;;5804:13;;5746:79;:::o;8370:57::-;;;;:::o;9855:87::-;9894:13;9927:7;;;;;;;;;;;;;;;;;9920:14;;9855:87;:::o;16769:111::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16865:7:::1;16842:20;;:30;;;;;;;;;;;;;;;;;;16769:111:::0;:::o;10271:167::-;10349:4;10366:42;10376:12;:10;:12::i;:::-;10390:9;10401:6;10366:9;:42::i;:::-;10426:4;10419:11;;10271:167;;;;:::o;16654:107::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16740:13:::1;16726:11;:27;;;;16654:107:::0;:::o;8471:60::-;;;;:::o;7239:39::-;;;;;;;;;;;;;:::o;15312:671::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15376:11:::1;::::0;::::1;;;;;;;;15375:12;15367:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;15462:42;15425:15;;:80;;;;;;;;;;;;;;;;;;15516:58;15533:4;15548:15;;;;;;;;;;;7974:2;8050;:13;;;;:::i;:::-;8037:10;:26;;;;:::i;:::-;15516:8;:58::i;:::-;15619:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15601:55;;;15665:4;15672:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15601:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15585:13;;:110;;;;;;;;;;;;;;;;;;15706:15;;;;;;;;;;;:31;;;15745:21;15776:4;15782:24;15800:4;15782:9;:24::i;:::-;15807:1;15809::::0;15811:7:::1;:5;:7::i;:::-;15819:15;15706:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15853:13;;;;;;;;;;;15846:29;;;15884:15;;;;;;;;;;;15902:14;15846:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15942:4;15928:11;;:18;;;;;;;;;;;;;;;;;;15971:4;15957:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;15312:671::o:0;14879:164::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14953:6:::1;14948:88;14969:5;:12;14965:1;:16;14948:88;;;15020:4;15003;:14;15008:5;15014:1;15008:8;;;;;;;;:::i;:::-;;;;;;;;15003:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14983:3;;;;;:::i;:::-;;;;14948:88;;;;14879:164:::0;:::o;10446:143::-;10527:7;10554:11;:18;10566:5;10554:18;;;;;;;;;;;;;;;:27;10573:7;10554:27;;;;;;;;;;;;;;;;10547:34;;10446:143;;;;:::o;16515:131::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16619:19:::1;16599:17;:39;;;;16515:131:::0;:::o;16388:119::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16483:16:::1;16466:14;:33;;;;16388:119:::0;:::o;15997:218::-;16072:10;;;;;;;;;;;16058:24;;:12;:10;:12::i;:::-;:24;;;16050:33;;;;;;16109:12;;16100:7;:21;;:47;;;;;16134:13;;16125:7;:22;;16100:47;16092:56;;;;;;16170:7;16157:12;:20;;;;16200:7;16186:13;:21;;;;15997:218;:::o;16223:157::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16312:14:::1;16297:12;:29;;;;16338:34;16357:14;16338:34;;;;;;:::i;:::-;;;;;;;;16223:157:::0;:::o;2768:98::-;2821:7;2848:10;2841:17;;2768:98;:::o;11087:335::-;11197:1;11180:19;;:5;:19;;;11172:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11278:1;11259:21;;:7;:21;;;11251:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11360:6;11330:11;:18;11342:5;11330:18;;;;;;;;;;;;;;;:27;11349:7;11330:27;;;;;;;;;;;;;;;:36;;;;11398:7;11382:32;;11391:5;11382:32;;;11407:6;11382:32;;;;;;:::i;:::-;;;;;;;;11087:335;;;:::o;11430:2540::-;11534:1;11518:18;;:4;:18;;;11510:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11611:1;11597:16;;:2;:16;;;11589:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11681:1;11672:6;:10;11664:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11739:17;11781:7;:5;:7::i;:::-;11773:15;;:4;:15;;;;:32;;;;;11798:7;:5;:7::i;:::-;11792:13;;:2;:13;;;;11773:32;11769:1758;;;11831:4;:10;11836:4;11831:10;;;;;;;;;;;;;;;;;;;;;;;;;11830:11;:24;;;;;11846:4;:8;11851:2;11846:8;;;;;;;;;;;;;;;;;;;;;;;;;11845:9;11830:24;11822:33;;;;;;11882:76;11954:3;11882:67;11904:15;;11894:9;;:25;11893:55;;11934:14;;11893:55;;;11921:12;;11893:55;11882:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;11870:88;;11979:20;;;;;;;;;;;11975:508;;;12040:15;;;;;;;;;;;12026:30;;:2;:30;;;;:62;;;;;12074:13;;;;;;;;;;;12060:28;;:2;:28;;;;12026:62;12022:444;;;12224:12;12151:28;:39;12180:9;12151:39;;;;;;;;;;;;;;;;:85;12115:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;12432:12;12390:28;:39;12419:9;12390:39;;;;;;;;;;;;;;;:54;;;;12022:444;11975:508;12511:13;;;;;;;;;;;12503:21;;:4;:21;;;:55;;;;;12542:15;;;;;;;;;;;12528:30;;:2;:30;;;;12503:55;:83;;;;;12564:18;:22;12583:2;12564:22;;;;;;;;;;;;;;;;;;;;;;;;;12562:24;12503:83;12499:313;;;12626:12;;12616:6;:22;;12608:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12721:14;;12711:6;12695:13;12705:2;12695:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;12687:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12785:9;;:11;;;;;;;;;:::i;:::-;;;;;;12499:313;12837:13;;;;;;;;;;;12831:19;;:2;:19;;;:43;;;;;12869:4;12854:20;;:4;:20;;;;12831:43;12828:174;;;12907:79;12982:3;12907:70;12929:16;;12919:9;;:26;12918:58;;12961:15;;12918:58;;;12947:13;;12918:58;12907:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;12895:91;;12828:174;13018:28;13049:24;13067:4;13049:9;:24::i;:::-;13018:55;;13093:6;;;;;;;;;;;13092:7;:32;;;;;13111:13;;;;;;;;;;;13103:21;;:2;:21;;;13092:32;:47;;;;;13128:11;;;;;;;;;;;13092:47;:89;;;;;13164:17;;13143:20;:38;13092:89;:121;;;;;13195:18;;13185:9;;:28;13092:121;13088:428;;;13234:74;13251:56;13255:13;13266:1;13255:6;:10;;:13;;;;:::i;:::-;13269:37;13273:20;13294:11;;13269:3;:37::i;:::-;13251:3;:56::i;:::-;13234:16;:74::i;:::-;13327:26;13356:21;13327:50;;13420:1;13399:18;:22;13396:105;;;13446:35;13459:21;13446:12;:35::i;:::-;13396:105;13215:301;13088:428;11807:1720;11769:1758;13552:1;13542:9;:11;13539:248;;;13621:68;13679:9;13621;:53;13631:42;13621:53;;;;;;;;;;;;;;;;:57;;:68;;;;:::i;:::-;13567:9;:53;13577:42;13567:53;;;;;;;;;;;;;;;:122;;;;13722:42;13707:68;;13716:4;13707:68;;;13765:9;13707:68;;;;;;:::i;:::-;;;;;;;;13539:248;13813:27;13833:6;13813:9;:15;13823:4;13813:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;13797:9;:15;13807:4;13797:15;;;;;;;;;;;;;;;:43;;;;13865:40;13883:21;13894:9;13883:6;:10;;:21;;;;:::i;:::-;13865:9;:13;13875:2;13865:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;13851:9;:13;13861:2;13851:13;;;;;;;;;;;;;;;:54;;;;13936:2;13921:41;;13930:4;13921:41;;;13940:21;13951:9;13940:6;:10;;:21;;;;:::i;:::-;13921:41;;;;;;:::i;:::-;;;;;;;;11499:2471;11430:2540;;;:::o;1900:190::-;1986:7;2019:1;2014;:6;;2022:12;2006:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2046:9;2062:1;2058;:5;;;;:::i;:::-;2046:17;;2081:1;2074:8;;;1900:190;;;;;:::o;14084:483::-;9082:4;9073:6;;:13;;;;;;;;;;;;;;;;;;14162:21:::1;14200:1;14186:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14162:40;;14231:4;14213;14218:1;14213:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14257:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14247:4;14252:1;14247:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14290:62;14307:4;14322:15;;;;;;;;;;;14340:11;14290:8;:62::i;:::-;14363:15;;;;;;;;;;;:66;;;14444:11;14470:1;14486:4;14513;14533:15;14363:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14151:416;9118:5:::0;9109:6;;:14;;;;;;;;;;;;;;;;;;14084:483;:::o;14779:92::-;14836:10;;;;;;;;;;;:19;;:27;14856:6;14836:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14779:92;:::o;5960:148::-;5883:12;:10;:12::i;:::-;5873:22;;:6;;;;;;;;;;:22;;;5865:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6067:1:::1;6030:40;;6051:6;::::0;::::1;;;;;;;;6030:40;;;;;;;;;;;;6098:1;6081:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5960:148::o:0;2098:246::-;2156:7;2185:1;2180;:6;2176:47;;2210:1;2203:8;;;;2176:47;2233:9;2249:1;2245;:5;;;;:::i;:::-;2233:17;;2278:1;2273;2269;:5;;;;:::i;:::-;:10;2261:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2335:1;2328:8;;;2098:246;;;;;:::o;2352:132::-;2410:7;2437:39;2441:1;2444;2437:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2430:46;;2352:132;;;;:::o;13978:98::-;14035:7;14062:1;14060;:3;14059:9;;14067:1;14059:9;;;14065:1;14059:9;14052:16;;13978:98;;;;:::o;1569:179::-;1627:7;1647:9;1663:1;1659;:5;;;;:::i;:::-;1647:17;;1688:1;1683;:6;;1675:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1739:1;1732:8;;;1569:179;;;;:::o;1756:136::-;1814:7;1841:43;1845:1;1848;1841:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1834:50;;1756:136;;;;:::o;2492:189::-;2578:7;2610:1;2606;:5;2613:12;2598:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2637:9;2653:1;2649;:5;;;;:::i;:::-;2637:17;;2672:1;2665:8;;;2492:189;;;;;:::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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:118::-;8117:24;8135:5;8117:24;:::i;:::-;8112:3;8105:37;8030:118;;:::o;8154:222::-;8247:4;8285:2;8274:9;8270:18;8262:26;;8298:71;8366:1;8355:9;8351:17;8342:6;8298:71;:::i;:::-;8154:222;;;;:::o;8382:116::-;8452:21;8467:5;8452:21;:::i;:::-;8445:5;8442:32;8432:60;;8488:1;8485;8478:12;8432:60;8382:116;:::o;8504:133::-;8547:5;8585:6;8572:20;8563:29;;8601:30;8625:5;8601:30;:::i;:::-;8504:133;;;;:::o;8643:323::-;8699:6;8748:2;8736:9;8727:7;8723:23;8719:32;8716:119;;;8754:79;;:::i;:::-;8716:119;8874:1;8899:50;8941:7;8932:6;8921:9;8917:22;8899:50;:::i;:::-;8889:60;;8845:114;8643:323;;;;:::o;8972:329::-;9031:6;9080:2;9068:9;9059:7;9055:23;9051:32;9048:119;;;9086:79;;:::i;:::-;9048:119;9206:1;9231:53;9276:7;9267:6;9256:9;9252:22;9231:53;:::i;:::-;9221:63;;9177:117;8972:329;;;;:::o;9307:474::-;9375:6;9383;9432:2;9420:9;9411:7;9407:23;9403:32;9400:119;;;9438:79;;:::i;:::-;9400:119;9558:1;9583:53;9628:7;9619:6;9608:9;9604:22;9583:53;:::i;:::-;9573:63;;9529:117;9685:2;9711:53;9756:7;9747:6;9736:9;9732:22;9711:53;:::i;:::-;9701:63;;9656:118;9307:474;;;;;:::o;9787:180::-;9835:77;9832:1;9825:88;9932:4;9929:1;9922:15;9956:4;9953:1;9946:15;9973:102;10015:8;10062:5;10059:1;10055:13;10034:34;;9973:102;;;:::o;10081:848::-;10142:5;10149:4;10173:6;10164:15;;10197:5;10188:14;;10211:712;10232:1;10222:8;10219:15;10211:712;;;10327:4;10322:3;10318:14;10312:4;10309:24;10306:50;;;10336:18;;:::i;:::-;10306:50;10386:1;10376:8;10372:16;10369:451;;;10801:4;10794:5;10790:16;10781:25;;10369:451;10851:4;10845;10841:15;10833:23;;10881:32;10904:8;10881:32;:::i;:::-;10869:44;;10211:712;;;10081:848;;;;;;;:::o;10935:1073::-;10989:5;11180:8;11170:40;;11201:1;11192:10;;11203:5;;11170:40;11229:4;11219:36;;11246:1;11237:10;;11248:5;;11219:36;11315:4;11363:1;11358:27;;;;11399:1;11394:191;;;;11308:277;;11358:27;11376:1;11367:10;;11378:5;;;11394:191;11439:3;11429:8;11426:17;11423:43;;;11446:18;;:::i;:::-;11423:43;11495:8;11492:1;11488:16;11479:25;;11530:3;11523:5;11520:14;11517:40;;;11537:18;;:::i;:::-;11517:40;11570:5;;;11308:277;;11694:2;11684:8;11681:16;11675:3;11669:4;11666:13;11662:36;11644:2;11634:8;11631:16;11626:2;11620:4;11617:12;11613:35;11597:111;11594:246;;;11750:8;11744:4;11740:19;11731:28;;11785:3;11778:5;11775:14;11772:40;;;11792:18;;:::i;:::-;11772:40;11825:5;;11594:246;11865:42;11903:3;11893:8;11887:4;11884:1;11865:42;:::i;:::-;11850:57;;;;11939:4;11934:3;11930:14;11923:5;11920:25;11917:51;;;11948:18;;:::i;:::-;11917:51;11997:4;11990:5;11986:16;11977:25;;10935:1073;;;;;;:::o;12014:281::-;12072:5;12096:23;12114:4;12096:23;:::i;:::-;12088:31;;12140:25;12156:8;12140:25;:::i;:::-;12128:37;;12184:104;12221:66;12211:8;12205:4;12184:104;:::i;:::-;12175:113;;12014:281;;;;:::o;12301:410::-;12341:7;12364:20;12382:1;12364:20;:::i;:::-;12359:25;;12398:20;12416:1;12398:20;:::i;:::-;12393:25;;12453:1;12450;12446:9;12475:30;12493:11;12475:30;:::i;:::-;12464:41;;12654:1;12645:7;12641:15;12638:1;12635:22;12615:1;12608:9;12588:83;12565:139;;12684:18;;:::i;:::-;12565:139;12349:362;12301:410;;;;:::o;12717:182::-;12857:34;12853:1;12845:6;12841:14;12834:58;12717:182;:::o;12905:366::-;13047:3;13068:67;13132:2;13127:3;13068:67;:::i;:::-;13061:74;;13144:93;13233:3;13144:93;:::i;:::-;13262:2;13257:3;13253:12;13246:19;;12905:366;;;:::o;13277:419::-;13443:4;13481:2;13470:9;13466:18;13458:26;;13530:9;13524:4;13520:20;13516:1;13505:9;13501:17;13494:47;13558:131;13684:4;13558:131;:::i;:::-;13550:139;;13277:419;;;:::o;13702:180::-;13750:77;13747:1;13740:88;13847:4;13844:1;13837:15;13871:4;13868:1;13861:15;13888:233;13927:3;13950:24;13968:5;13950:24;:::i;:::-;13941:33;;13996:66;13989:5;13986:77;13983:103;;14066:18;;:::i;:::-;13983:103;14113:1;14106:5;14102:13;14095:20;;13888:233;;;:::o;14127:173::-;14267:25;14263:1;14255:6;14251:14;14244:49;14127:173;:::o;14306:366::-;14448:3;14469:67;14533:2;14528:3;14469:67;:::i;:::-;14462:74;;14545:93;14634:3;14545:93;:::i;:::-;14663:2;14658:3;14654:12;14647:19;;14306:366;;;:::o;14678:419::-;14844:4;14882:2;14871:9;14867:18;14859:26;;14931:9;14925:4;14921:20;14917:1;14906:9;14902:17;14895:47;14959:131;15085:4;14959:131;:::i;:::-;14951:139;;14678:419;;;:::o;15103:143::-;15160:5;15191:6;15185:13;15176:22;;15207:33;15234:5;15207:33;:::i;:::-;15103:143;;;;:::o;15252:351::-;15322:6;15371:2;15359:9;15350:7;15346:23;15342:32;15339:119;;;15377:79;;:::i;:::-;15339:119;15497:1;15522:64;15578:7;15569:6;15558:9;15554:22;15522:64;:::i;:::-;15512:74;;15468:128;15252:351;;;;:::o;15609:332::-;15730:4;15768:2;15757:9;15753:18;15745:26;;15781:71;15849:1;15838:9;15834:17;15825:6;15781:71;:::i;:::-;15862:72;15930:2;15919:9;15915:18;15906:6;15862:72;:::i;:::-;15609:332;;;;;:::o;15947:85::-;15992:7;16021:5;16010:16;;15947:85;;;:::o;16038:60::-;16066:3;16087:5;16080:12;;16038:60;;;:::o;16104:158::-;16162:9;16195:61;16213:42;16222:32;16248:5;16222:32;:::i;:::-;16213:42;:::i;:::-;16195:61;:::i;:::-;16182:74;;16104:158;;;:::o;16268:147::-;16363:45;16402:5;16363:45;:::i;:::-;16358:3;16351:58;16268:147;;:::o;16421:807::-;16670:4;16708:3;16697:9;16693:19;16685:27;;16722:71;16790:1;16779:9;16775:17;16766:6;16722:71;:::i;:::-;16803:72;16871:2;16860:9;16856:18;16847:6;16803:72;:::i;:::-;16885:80;16961:2;16950:9;16946:18;16937:6;16885:80;:::i;:::-;16975;17051:2;17040:9;17036:18;17027:6;16975:80;:::i;:::-;17065:73;17133:3;17122:9;17118:19;17109:6;17065:73;:::i;:::-;17148;17216:3;17205:9;17201:19;17192:6;17148:73;:::i;:::-;16421:807;;;;;;;;;:::o;17234:143::-;17291:5;17322:6;17316:13;17307:22;;17338:33;17365:5;17338:33;:::i;:::-;17234:143;;;;:::o;17383:663::-;17471:6;17479;17487;17536:2;17524:9;17515:7;17511:23;17507:32;17504:119;;;17542:79;;:::i;:::-;17504:119;17662:1;17687:64;17743:7;17734:6;17723:9;17719:22;17687:64;:::i;:::-;17677:74;;17633:128;17800:2;17826:64;17882:7;17873:6;17862:9;17858:22;17826:64;:::i;:::-;17816:74;;17771:129;17939:2;17965:64;18021:7;18012:6;18001:9;17997:22;17965:64;:::i;:::-;17955:74;;17910:129;17383:663;;;;;:::o;18052:332::-;18173:4;18211:2;18200:9;18196:18;18188:26;;18224:71;18292:1;18281:9;18277:17;18268:6;18224:71;:::i;:::-;18305:72;18373:2;18362:9;18358:18;18349:6;18305:72;:::i;:::-;18052:332;;;;;:::o;18390:137::-;18444:5;18475:6;18469:13;18460:22;;18491:30;18515:5;18491:30;:::i;:::-;18390:137;;;;:::o;18533:345::-;18600:6;18649:2;18637:9;18628:7;18624:23;18620:32;18617:119;;;18655:79;;:::i;:::-;18617:119;18775:1;18800:61;18853:7;18844:6;18833:9;18829:22;18800:61;:::i;:::-;18790:71;;18746:125;18533:345;;;;:::o;18884:223::-;19024:34;19020:1;19012:6;19008:14;19001:58;19093:6;19088:2;19080:6;19076:15;19069:31;18884:223;:::o;19113:366::-;19255:3;19276:67;19340:2;19335:3;19276:67;:::i;:::-;19269:74;;19352:93;19441:3;19352:93;:::i;:::-;19470:2;19465:3;19461:12;19454:19;;19113:366;;;:::o;19485:419::-;19651:4;19689:2;19678:9;19674:18;19666:26;;19738:9;19732:4;19728:20;19724:1;19713:9;19709:17;19702:47;19766:131;19892:4;19766:131;:::i;:::-;19758:139;;19485:419;;;:::o;19910:221::-;20050:34;20046:1;20038:6;20034:14;20027:58;20119:4;20114:2;20106:6;20102:15;20095:29;19910:221;:::o;20137:366::-;20279:3;20300:67;20364:2;20359:3;20300:67;:::i;:::-;20293:74;;20376:93;20465:3;20376:93;:::i;:::-;20494:2;20489:3;20485:12;20478:19;;20137:366;;;:::o;20509:419::-;20675:4;20713:2;20702:9;20698:18;20690:26;;20762:9;20756:4;20752:20;20748:1;20737:9;20733:17;20726:47;20790:131;20916:4;20790:131;:::i;:::-;20782:139;;20509:419;;;:::o;20934:224::-;21074:34;21070:1;21062:6;21058:14;21051:58;21143:7;21138:2;21130:6;21126:15;21119:32;20934:224;:::o;21164:366::-;21306:3;21327:67;21391:2;21386:3;21327:67;:::i;:::-;21320:74;;21403:93;21492:3;21403:93;:::i;:::-;21521:2;21516:3;21512:12;21505:19;;21164:366;;;:::o;21536:419::-;21702:4;21740:2;21729:9;21725:18;21717:26;;21789:9;21783:4;21779:20;21775:1;21764:9;21760:17;21753:47;21817:131;21943:4;21817:131;:::i;:::-;21809:139;;21536:419;;;:::o;21961:222::-;22101:34;22097:1;22089:6;22085:14;22078:58;22170:5;22165:2;22157:6;22153:15;22146:30;21961:222;:::o;22189:366::-;22331:3;22352:67;22416:2;22411:3;22352:67;:::i;:::-;22345:74;;22428:93;22517:3;22428:93;:::i;:::-;22546:2;22541:3;22537:12;22530:19;;22189:366;;;:::o;22561:419::-;22727:4;22765:2;22754:9;22750:18;22742:26;;22814:9;22808:4;22804:20;22800:1;22789:9;22785:17;22778:47;22842:131;22968:4;22842:131;:::i;:::-;22834:139;;22561:419;;;:::o;22986:228::-;23126:34;23122:1;23114:6;23110:14;23103:58;23195:11;23190:2;23182:6;23178:15;23171:36;22986:228;:::o;23220:366::-;23362:3;23383:67;23447:2;23442:3;23383:67;:::i;:::-;23376:74;;23459:93;23548:3;23459:93;:::i;:::-;23577:2;23572:3;23568:12;23561:19;;23220:366;;;:::o;23592:419::-;23758:4;23796:2;23785:9;23781:18;23773:26;;23845:9;23839:4;23835:20;23831:1;23820:9;23816:17;23809:47;23873:131;23999:4;23873:131;:::i;:::-;23865:139;;23592:419;;;:::o;24017:297::-;24157:34;24153:1;24145:6;24141:14;24134:58;24226:34;24221:2;24213:6;24209:15;24202:59;24295:11;24290:2;24282:6;24278:15;24271:36;24017:297;:::o;24320:366::-;24462:3;24483:67;24547:2;24542:3;24483:67;:::i;:::-;24476:74;;24559:93;24648:3;24559:93;:::i;:::-;24677:2;24672:3;24668:12;24661:19;;24320:366;;;:::o;24692:419::-;24858:4;24896:2;24885:9;24881:18;24873:26;;24945:9;24939:4;24935:20;24931:1;24920:9;24916:17;24909:47;24973:131;25099:4;24973:131;:::i;:::-;24965:139;;24692:419;;;:::o;25117:175::-;25257:27;25253:1;25245:6;25241:14;25234:51;25117:175;:::o;25298:366::-;25440:3;25461:67;25525:2;25520:3;25461:67;:::i;:::-;25454:74;;25537:93;25626:3;25537:93;:::i;:::-;25655:2;25650:3;25646:12;25639:19;;25298:366;;;:::o;25670:419::-;25836:4;25874:2;25863:9;25859:18;25851:26;;25923:9;25917:4;25913:20;25909:1;25898:9;25894:17;25887:47;25951:131;26077:4;25951:131;:::i;:::-;25943:139;;25670:419;;;:::o;26095:191::-;26135:3;26154:20;26172:1;26154:20;:::i;:::-;26149:25;;26188:20;26206:1;26188:20;:::i;:::-;26183:25;;26231:1;26228;26224:9;26217:16;;26252:3;26249:1;26246:10;26243:36;;;26259:18;;:::i;:::-;26243:36;26095:191;;;;:::o;26292:176::-;26432:28;26428:1;26420:6;26416:14;26409:52;26292:176;:::o;26474:366::-;26616:3;26637:67;26701:2;26696:3;26637:67;:::i;:::-;26630:74;;26713:93;26802:3;26713:93;:::i;:::-;26831:2;26826:3;26822:12;26815:19;;26474:366;;;:::o;26846:419::-;27012:4;27050:2;27039:9;27035:18;27027:26;;27099:9;27093:4;27089:20;27085:1;27074:9;27070:17;27063:47;27127:131;27253:4;27127:131;:::i;:::-;27119:139;;26846:419;;;:::o;27271:194::-;27311:4;27331:20;27349:1;27331:20;:::i;:::-;27326:25;;27365:20;27383:1;27365:20;:::i;:::-;27360:25;;27409:1;27406;27402:9;27394:17;;27433:1;27427:4;27424:11;27421:37;;;27438:18;;:::i;:::-;27421:37;27271:194;;;;:::o;27471:114::-;27538:6;27572:5;27566:12;27556:22;;27471:114;;;:::o;27591:184::-;27690:11;27724:6;27719:3;27712:19;27764:4;27759:3;27755:14;27740:29;;27591:184;;;;:::o;27781:132::-;27848:4;27871:3;27863:11;;27901:4;27896:3;27892:14;27884:22;;27781:132;;;:::o;27919:108::-;27996:24;28014:5;27996:24;:::i;:::-;27991:3;27984:37;27919:108;;:::o;28033:179::-;28102:10;28123:46;28165:3;28157:6;28123:46;:::i;:::-;28201:4;28196:3;28192:14;28178:28;;28033:179;;;;:::o;28218:113::-;28288:4;28320;28315:3;28311:14;28303:22;;28218:113;;;:::o;28367:732::-;28486:3;28515:54;28563:5;28515:54;:::i;:::-;28585:86;28664:6;28659:3;28585:86;:::i;:::-;28578:93;;28695:56;28745:5;28695:56;:::i;:::-;28774:7;28805:1;28790:284;28815:6;28812:1;28809:13;28790:284;;;28891:6;28885:13;28918:63;28977:3;28962:13;28918:63;:::i;:::-;28911:70;;29004:60;29057:6;29004:60;:::i;:::-;28994:70;;28850:224;28837:1;28834;28830:9;28825:14;;28790:284;;;28794:14;29090:3;29083:10;;28491:608;;;28367:732;;;;:::o;29105:831::-;29368:4;29406:3;29395:9;29391:19;29383:27;;29420:71;29488:1;29477:9;29473:17;29464:6;29420:71;:::i;:::-;29501:80;29577:2;29566:9;29562:18;29553:6;29501:80;:::i;:::-;29628:9;29622:4;29618:20;29613:2;29602:9;29598:18;29591:48;29656:108;29759:4;29750:6;29656:108;:::i;:::-;29648:116;;29774:72;29842:2;29831:9;29827:18;29818:6;29774:72;:::i;:::-;29856:73;29924:3;29913:9;29909:19;29900:6;29856:73;:::i;:::-;29105:831;;;;;;;;:::o;29942:180::-;29990:77;29987:1;29980:88;30087:4;30084:1;30077:15;30111:4;30108:1;30101:15;30128:185;30168:1;30185:20;30203:1;30185:20;:::i;:::-;30180:25;;30219:20;30237:1;30219:20;:::i;:::-;30214:25;;30258:1;30248:35;;30263:18;;:::i;:::-;30248:35;30305:1;30302;30298:9;30293:14;;30128:185;;;;:::o;30319:220::-;30459:34;30455:1;30447:6;30443:14;30436:58;30528:3;30523:2;30515:6;30511:15;30504:28;30319:220;:::o;30545:366::-;30687:3;30708:67;30772:2;30767:3;30708:67;:::i;:::-;30701:74;;30784:93;30873:3;30784:93;:::i;:::-;30902:2;30897:3;30893:12;30886:19;;30545:366;;;:::o;30917:419::-;31083:4;31121:2;31110:9;31106:18;31098:26;;31170:9;31164:4;31160:20;31156:1;31145:9;31141:17;31134:47;31198:131;31324:4;31198:131;:::i;:::-;31190:139;;30917:419;;;:::o;31342:177::-;31482:29;31478:1;31470:6;31466:14;31459:53;31342:177;:::o;31525:366::-;31667:3;31688:67;31752:2;31747:3;31688:67;:::i;:::-;31681:74;;31764:93;31853:3;31764:93;:::i;:::-;31882:2;31877:3;31873:12;31866:19;;31525:366;;;:::o;31897:419::-;32063:4;32101:2;32090:9;32086:18;32078:26;;32150:9;32144:4;32140:20;32136:1;32125:9;32121:17;32114:47;32178:131;32304:4;32178:131;:::i;:::-;32170:139;;31897:419;;;:::o
Swarm Source
ipfs://8442eddc23cfacdab2a9056c44764c10ad1eebf3c5dbbf13d5721e9bfd2a39af
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.