ERC-20
Overview
Max Total Supply
1,000,000,000 SHARK
Holders
21
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.31673948 SHARKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
RazorShark
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-12 */ /* Razor Shark ($SHARK) Token Attention: $SHARK Invasion Approaching! Take a bite or be the bite... Ape in early for a furious 100x! Website: https://www.razorshark.live/ Telegram: https://t.me/razorsharkportal */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract RazorShark is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Razor Shark"; string private constant _symbol = "SHARK"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; //Buy Fee uint256 private _redisFeeOnBuy = 2; uint256 private _taxFeeOnBuy = 11; //Sell Fee uint256 private _redisFeeOnSell = 2; uint256 private _taxFeeOnSell = 11; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => bool) public preTrader; mapping(address => uint256) private cooldown; address payable private _marketingAddress = payable(0x0C635e51CAf186eF0B9044c009e88D945Fbae6DB); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 40000000 * 10**9; //4.0% uint256 public _maxWalletSize = 50000000 * 10**9; //5.0% uint256 public _swapTokensAtAmount = 1000000 * 10**9; //0.1 event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_marketingAddress] = true; preTrader[owner()] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public { require(_msgSender() == _marketingAddress); require(redisFeeOnBuy < 2 && redisFeeOnSell < 2 && taxFeeOnBuy < 10 && taxFeeOnSell < 10); _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set MAx transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function allowPreTrading(address account, bool allowed) public onlyOwner { require(preTrader[account] != allowed, "TOKEN: Already enabled."); preTrader[account] = allowed; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400006000196200001c9190620007c5565b6000196200002b91906200074c565b6006556002600855600b6009556002600a55600b8055600a54600c55600b54600d55600c54600e55600d54600f55730c635e51caf186ef0b9044c009e88d945fbae6db601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550668e1bc9bf04000060165566b1a2bc2ec5000060175566038d7ea4c680006018553480156200011157600080fd5b506000620001246200066c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620001d96200066c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b857600080fd5b505afa158015620002cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f39190620006b4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035657600080fd5b505afa1580156200036b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003919190620006b4565b6040518363ffffffff1660e01b8152600401620003b092919062000702565b602060405180830381600087803b158015620003cb57600080fd5b505af1158015620003e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004069190620006b4565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200045c6200067460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000620005956200067460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005f66200066c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200065d91906200072f565b60405180910390a35062000875565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620006ae816200085b565b92915050565b600060208284031215620006c757600080fd5b6000620006d7848285016200069d565b91505092915050565b620006eb8162000787565b82525050565b620006fc81620007bb565b82525050565b6000604082019050620007196000830185620006e0565b620007286020830184620006e0565b9392505050565b6000602082019050620007466000830184620006f1565b92915050565b60006200075982620007bb565b91506200076683620007bb565b9250828210156200077c576200077b620007fd565b5b828203905092915050565b600062000794826200079b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620007d282620007bb565b9150620007df83620007bb565b925082620007f257620007f16200082c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620008668162000787565b81146200087257600080fd5b50565b613a2680620008856000396000f3fe6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063bfd7928411610064578063bfd7928414610626578063c3c8cd8014610663578063dd62ed3e1461067a578063ea1644d5146106b7576101cc565b806398a5c3151461055a578063a2a957bb14610583578063a9059cbb146105ac578063bdd795ef146105e9576101cc565b80638da5cb5b116100d15780638da5cb5b146104b05780638f70ccf7146104db5780638f9a55c01461050457806395d89b411461052f576101cc565b8063715018a61461044557806374010ece1461045c5780637d1db4a514610485576101cc565b80632fd689e3116101645780636b9990531161013e5780636b9990531461039f5780636d8aa8f8146103c85780636fc3eaec146103f157806370a0823114610408576101cc565b80632fd689e31461031e578063313ce5671461034957806349bd5a5e14610374576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632f9c4569146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612b7d565b6106e0565b005b34801561020657600080fd5b5061020f610830565b60405161021c9190612fc6565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612b41565b61086d565b6040516102599190612f90565b60405180910390f35b34801561026e57600080fd5b5061027761088b565b6040516102849190612fab565b60405180910390f35b34801561029957600080fd5b506102a26108b1565b6040516102af91906131a8565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612ab6565b6108c1565b6040516102ec9190612f90565b60405180910390f35b34801561030157600080fd5b5061031c60048036038101906103179190612b05565b61099a565b005b34801561032a57600080fd5b50610333610b1d565b60405161034091906131a8565b60405180910390f35b34801561035557600080fd5b5061035e610b23565b60405161036b919061321d565b60405180910390f35b34801561038057600080fd5b50610389610b2c565b6040516103969190612f75565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190612a28565b610b52565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190612bbe565b610c42565b005b3480156103fd57600080fd5b50610406610cf4565b005b34801561041457600080fd5b5061042f600480360381019061042a9190612a28565b610d66565b60405161043c91906131a8565b60405180910390f35b34801561045157600080fd5b5061045a610db7565b005b34801561046857600080fd5b50610483600480360381019061047e9190612be7565b610f0a565b005b34801561049157600080fd5b5061049a610fa9565b6040516104a791906131a8565b60405180910390f35b3480156104bc57600080fd5b506104c5610faf565b6040516104d29190612f75565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd9190612bbe565b610fd8565b005b34801561051057600080fd5b5061051961108a565b60405161052691906131a8565b60405180910390f35b34801561053b57600080fd5b50610544611090565b6040516105519190612fc6565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190612be7565b6110cd565b005b34801561058f57600080fd5b506105aa60048036038101906105a59190612c10565b61116c565b005b3480156105b857600080fd5b506105d360048036038101906105ce9190612b41565b611220565b6040516105e09190612f90565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b9190612a28565b61123e565b60405161061d9190612f90565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190612a28565b61125e565b60405161065a9190612f90565b60405180910390f35b34801561066f57600080fd5b5061067861127e565b005b34801561068657600080fd5b506106a1600480360381019061069c9190612a7a565b6112f8565b6040516106ae91906131a8565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190612be7565b61137f565b005b6106e861141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90613108565b60405180910390fd5b60005b815181101561082c576001601060008484815181106107c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610824906134e2565b915050610778565b5050565b60606040518060400160405280600b81526020017f52617a6f7220536861726b000000000000000000000000000000000000000000815250905090565b600061088161087a61141e565b8484611426565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108ce8484846115f1565b61098f846108da61141e565b61098a856040518060600160405280602881526020016139c960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094061141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de19092919063ffffffff16565b611426565b600190509392505050565b6109a261141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2690613108565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab9906130c8565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b5a61141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde90613108565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c4a61141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90613108565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d3561141e565b73ffffffffffffffffffffffffffffffffffffffff1614610d5557600080fd5b6000479050610d6381611e45565b50565b6000610db0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eb1565b9050919050565b610dbf61141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390613108565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f1261141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690613108565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fe061141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490613108565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f534841524b000000000000000000000000000000000000000000000000000000815250905090565b6110d561141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115990613108565b60405180910390fd5b8060188190555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111ad61141e565b73ffffffffffffffffffffffffffffffffffffffff16146111cd57600080fd5b6002841080156111dd5750600283105b80156111e95750600a82105b80156111f55750600a81105b6111fe57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061123461122d61141e565b84846115f1565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112bf61141e565b73ffffffffffffffffffffffffffffffffffffffff16146112df57600080fd5b60006112ea30610d66565b90506112f581611f1f565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61138761141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140b90613108565b60405180910390fd5b8060178190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148d90613188565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613068565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115e491906131a8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890613148565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890612fe8565b60405180910390fd5b60008111611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b90613128565b60405180910390fd5b61171c610faf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561178a575061175a610faf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ae057601560149054906101000a900460ff1661183057601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690613008565b60405180910390fd5b5b601654811115611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c90613048565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119195750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90613088565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a0557601754816119ba84610d66565b6119c491906132de565b10611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90613168565b60405180910390fd5b5b6000611a1030610d66565b9050600060185482101590506016548210611a2b5760165491505b808015611a43575060158054906101000a900460ff16155b8015611a9d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ab55750601560169054906101000a900460ff165b15611add57611ac382611f1f565b60004790506000811115611adb57611ada47611e45565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b875750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c3a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c395750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c485760009050611dcf565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cf35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d0b57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611db65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dce57600a54600c81905550600b54600d819055505b5b611ddb84848484612217565b50505050565b6000838311158290611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e209190612fc6565b60405180910390fd5b5060008385611e3891906133bf565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ead573d6000803e3d6000fd5b5050565b6000600654821115611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90613028565b60405180910390fd5b6000611f02612244565b9050611f17818461226f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f7c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611faa5781602001602082028036833780820191505090505b5090503081600081518110611fe8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561208a57600080fd5b505afa15801561209e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c29190612a51565b816001815181106120fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061216330601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611426565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121c79594939291906131c3565b600060405180830381600087803b1580156121e157600080fd5b505af11580156121f5573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612225576122246122b9565b5b6122308484846122fc565b8061223e5761223d6124c7565b5b50505050565b60008060006122516124db565b91509150612268818361226f90919063ffffffff16565b9250505090565b60006122b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061253a565b905092915050565b6000600c541480156122cd57506000600d54145b156122d7576122fa565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061230e8761259d565b95509550955095509550955061236c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461260590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061240185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061244d816126ad565b612457848361276a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124b491906131a8565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061250f670de0b6b3a764000060065461226f90919063ffffffff16565b82101561252d57600654670de0b6b3a7640000935093505050612536565b81819350935050505b9091565b60008083118290612581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125789190612fc6565b60405180910390fd5b50600083856125909190613334565b9050809150509392505050565b60008060008060008060008060006125ba8a600c54600d546127a4565b92509250925060006125ca612244565b905060008060006125dd8e87878761283a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061264783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611de1565b905092915050565b600080828461265e91906132de565b9050838110156126a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269a906130a8565b60405180910390fd5b8091505092915050565b60006126b7612244565b905060006126ce82846128c390919063ffffffff16565b905061272281600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264f90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61277f8260065461260590919063ffffffff16565b60068190555061279a8160075461264f90919063ffffffff16565b6007819055505050565b6000806000806127d060646127c2888a6128c390919063ffffffff16565b61226f90919063ffffffff16565b905060006127fa60646127ec888b6128c390919063ffffffff16565b61226f90919063ffffffff16565b9050600061282382612815858c61260590919063ffffffff16565b61260590919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061285385896128c390919063ffffffff16565b9050600061286a86896128c390919063ffffffff16565b9050600061288187896128c390919063ffffffff16565b905060006128aa8261289c858761260590919063ffffffff16565b61260590919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156128d65760009050612938565b600082846128e49190613365565b90508284826128f39190613334565b14612933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292a906130e8565b60405180910390fd5b809150505b92915050565b600061295161294c8461325d565b613238565b9050808382526020820190508285602086028201111561297057600080fd5b60005b858110156129a0578161298688826129aa565b845260208401935060208301925050600181019050612973565b5050509392505050565b6000813590506129b981613983565b92915050565b6000815190506129ce81613983565b92915050565b600082601f8301126129e557600080fd5b81356129f584826020860161293e565b91505092915050565b600081359050612a0d8161399a565b92915050565b600081359050612a22816139b1565b92915050565b600060208284031215612a3a57600080fd5b6000612a48848285016129aa565b91505092915050565b600060208284031215612a6357600080fd5b6000612a71848285016129bf565b91505092915050565b60008060408385031215612a8d57600080fd5b6000612a9b858286016129aa565b9250506020612aac858286016129aa565b9150509250929050565b600080600060608486031215612acb57600080fd5b6000612ad9868287016129aa565b9350506020612aea868287016129aa565b9250506040612afb86828701612a13565b9150509250925092565b60008060408385031215612b1857600080fd5b6000612b26858286016129aa565b9250506020612b37858286016129fe565b9150509250929050565b60008060408385031215612b5457600080fd5b6000612b62858286016129aa565b9250506020612b7385828601612a13565b9150509250929050565b600060208284031215612b8f57600080fd5b600082013567ffffffffffffffff811115612ba957600080fd5b612bb5848285016129d4565b91505092915050565b600060208284031215612bd057600080fd5b6000612bde848285016129fe565b91505092915050565b600060208284031215612bf957600080fd5b6000612c0784828501612a13565b91505092915050565b60008060008060808587031215612c2657600080fd5b6000612c3487828801612a13565b9450506020612c4587828801612a13565b9350506040612c5687828801612a13565b9250506060612c6787828801612a13565b91505092959194509250565b6000612c7f8383612c8b565b60208301905092915050565b612c94816133f3565b82525050565b612ca3816133f3565b82525050565b6000612cb482613299565b612cbe81856132bc565b9350612cc983613289565b8060005b83811015612cfa578151612ce18882612c73565b9750612cec836132af565b925050600181019050612ccd565b5085935050505092915050565b612d1081613405565b82525050565b612d1f81613448565b82525050565b612d2e8161346c565b82525050565b6000612d3f826132a4565b612d4981856132cd565b9350612d5981856020860161347e565b612d62816135b8565b840191505092915050565b6000612d7a6023836132cd565b9150612d85826135c9565b604082019050919050565b6000612d9d603f836132cd565b9150612da882613618565b604082019050919050565b6000612dc0602a836132cd565b9150612dcb82613667565b604082019050919050565b6000612de3601c836132cd565b9150612dee826136b6565b602082019050919050565b6000612e066022836132cd565b9150612e11826136df565b604082019050919050565b6000612e296023836132cd565b9150612e348261372e565b604082019050919050565b6000612e4c601b836132cd565b9150612e578261377d565b602082019050919050565b6000612e6f6017836132cd565b9150612e7a826137a6565b602082019050919050565b6000612e926021836132cd565b9150612e9d826137cf565b604082019050919050565b6000612eb56020836132cd565b9150612ec08261381e565b602082019050919050565b6000612ed86029836132cd565b9150612ee382613847565b604082019050919050565b6000612efb6025836132cd565b9150612f0682613896565b604082019050919050565b6000612f1e6023836132cd565b9150612f29826138e5565b604082019050919050565b6000612f416024836132cd565b9150612f4c82613934565b604082019050919050565b612f6081613431565b82525050565b612f6f8161343b565b82525050565b6000602082019050612f8a6000830184612c9a565b92915050565b6000602082019050612fa56000830184612d07565b92915050565b6000602082019050612fc06000830184612d16565b92915050565b60006020820190508181036000830152612fe08184612d34565b905092915050565b6000602082019050818103600083015261300181612d6d565b9050919050565b6000602082019050818103600083015261302181612d90565b9050919050565b6000602082019050818103600083015261304181612db3565b9050919050565b6000602082019050818103600083015261306181612dd6565b9050919050565b6000602082019050818103600083015261308181612df9565b9050919050565b600060208201905081810360008301526130a181612e1c565b9050919050565b600060208201905081810360008301526130c181612e3f565b9050919050565b600060208201905081810360008301526130e181612e62565b9050919050565b6000602082019050818103600083015261310181612e85565b9050919050565b6000602082019050818103600083015261312181612ea8565b9050919050565b6000602082019050818103600083015261314181612ecb565b9050919050565b6000602082019050818103600083015261316181612eee565b9050919050565b6000602082019050818103600083015261318181612f11565b9050919050565b600060208201905081810360008301526131a181612f34565b9050919050565b60006020820190506131bd6000830184612f57565b92915050565b600060a0820190506131d86000830188612f57565b6131e56020830187612d25565b81810360408301526131f78186612ca9565b90506132066060830185612c9a565b6132136080830184612f57565b9695505050505050565b60006020820190506132326000830184612f66565b92915050565b6000613242613253565b905061324e82826134b1565b919050565b6000604051905090565b600067ffffffffffffffff82111561327857613277613589565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132e982613431565b91506132f483613431565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133295761332861352b565b5b828201905092915050565b600061333f82613431565b915061334a83613431565b92508261335a5761335961355a565b5b828204905092915050565b600061337082613431565b915061337b83613431565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133b4576133b361352b565b5b828202905092915050565b60006133ca82613431565b91506133d583613431565b9250828210156133e8576133e761352b565b5b828203905092915050565b60006133fe82613411565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134538261345a565b9050919050565b600061346582613411565b9050919050565b600061347782613431565b9050919050565b60005b8381101561349c578082015181840152602081019050613481565b838111156134ab576000848401525b50505050565b6134ba826135b8565b810181811067ffffffffffffffff821117156134d9576134d8613589565b5b80604052505050565b60006134ed82613431565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135205761351f61352b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f544f4b454e3a20416c726561647920656e61626c65642e000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61398c816133f3565b811461399757600080fd5b50565b6139a381613405565b81146139ae57600080fd5b50565b6139ba81613431565b81146139c557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e3d13da0a374d9622d706a9dbc139b1f80951262a0808c5de73e2ec5bd334a2764736f6c63430008040033
Deployed Bytecode
0x6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063bfd7928411610064578063bfd7928414610626578063c3c8cd8014610663578063dd62ed3e1461067a578063ea1644d5146106b7576101cc565b806398a5c3151461055a578063a2a957bb14610583578063a9059cbb146105ac578063bdd795ef146105e9576101cc565b80638da5cb5b116100d15780638da5cb5b146104b05780638f70ccf7146104db5780638f9a55c01461050457806395d89b411461052f576101cc565b8063715018a61461044557806374010ece1461045c5780637d1db4a514610485576101cc565b80632fd689e3116101645780636b9990531161013e5780636b9990531461039f5780636d8aa8f8146103c85780636fc3eaec146103f157806370a0823114610408576101cc565b80632fd689e31461031e578063313ce5671461034957806349bd5a5e14610374576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632f9c4569146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612b7d565b6106e0565b005b34801561020657600080fd5b5061020f610830565b60405161021c9190612fc6565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612b41565b61086d565b6040516102599190612f90565b60405180910390f35b34801561026e57600080fd5b5061027761088b565b6040516102849190612fab565b60405180910390f35b34801561029957600080fd5b506102a26108b1565b6040516102af91906131a8565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612ab6565b6108c1565b6040516102ec9190612f90565b60405180910390f35b34801561030157600080fd5b5061031c60048036038101906103179190612b05565b61099a565b005b34801561032a57600080fd5b50610333610b1d565b60405161034091906131a8565b60405180910390f35b34801561035557600080fd5b5061035e610b23565b60405161036b919061321d565b60405180910390f35b34801561038057600080fd5b50610389610b2c565b6040516103969190612f75565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190612a28565b610b52565b005b3480156103d457600080fd5b506103ef60048036038101906103ea9190612bbe565b610c42565b005b3480156103fd57600080fd5b50610406610cf4565b005b34801561041457600080fd5b5061042f600480360381019061042a9190612a28565b610d66565b60405161043c91906131a8565b60405180910390f35b34801561045157600080fd5b5061045a610db7565b005b34801561046857600080fd5b50610483600480360381019061047e9190612be7565b610f0a565b005b34801561049157600080fd5b5061049a610fa9565b6040516104a791906131a8565b60405180910390f35b3480156104bc57600080fd5b506104c5610faf565b6040516104d29190612f75565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd9190612bbe565b610fd8565b005b34801561051057600080fd5b5061051961108a565b60405161052691906131a8565b60405180910390f35b34801561053b57600080fd5b50610544611090565b6040516105519190612fc6565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190612be7565b6110cd565b005b34801561058f57600080fd5b506105aa60048036038101906105a59190612c10565b61116c565b005b3480156105b857600080fd5b506105d360048036038101906105ce9190612b41565b611220565b6040516105e09190612f90565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b9190612a28565b61123e565b60405161061d9190612f90565b60405180910390f35b34801561063257600080fd5b5061064d60048036038101906106489190612a28565b61125e565b60405161065a9190612f90565b60405180910390f35b34801561066f57600080fd5b5061067861127e565b005b34801561068657600080fd5b506106a1600480360381019061069c9190612a7a565b6112f8565b6040516106ae91906131a8565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190612be7565b61137f565b005b6106e861141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90613108565b60405180910390fd5b60005b815181101561082c576001601060008484815181106107c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610824906134e2565b915050610778565b5050565b60606040518060400160405280600b81526020017f52617a6f7220536861726b000000000000000000000000000000000000000000815250905090565b600061088161087a61141e565b8484611426565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108ce8484846115f1565b61098f846108da61141e565b61098a856040518060600160405280602881526020016139c960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094061141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de19092919063ffffffff16565b611426565b600190509392505050565b6109a261141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2690613108565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab9906130c8565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b5a61141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde90613108565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610c4a61141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90613108565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d3561141e565b73ffffffffffffffffffffffffffffffffffffffff1614610d5557600080fd5b6000479050610d6381611e45565b50565b6000610db0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611eb1565b9050919050565b610dbf61141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390613108565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f1261141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690613108565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fe061141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490613108565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f534841524b000000000000000000000000000000000000000000000000000000815250905090565b6110d561141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115990613108565b60405180910390fd5b8060188190555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111ad61141e565b73ffffffffffffffffffffffffffffffffffffffff16146111cd57600080fd5b6002841080156111dd5750600283105b80156111e95750600a82105b80156111f55750600a81105b6111fe57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061123461122d61141e565b84846115f1565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112bf61141e565b73ffffffffffffffffffffffffffffffffffffffff16146112df57600080fd5b60006112ea30610d66565b90506112f581611f1f565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61138761141e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140b90613108565b60405180910390fd5b8060178190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148d90613188565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613068565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115e491906131a8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890613148565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890612fe8565b60405180910390fd5b60008111611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b90613128565b60405180910390fd5b61171c610faf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561178a575061175a610faf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ae057601560149054906101000a900460ff1661183057601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661182f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182690613008565b60405180910390fd5b5b601654811115611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c90613048565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119195750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90613088565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a0557601754816119ba84610d66565b6119c491906132de565b10611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90613168565b60405180910390fd5b5b6000611a1030610d66565b9050600060185482101590506016548210611a2b5760165491505b808015611a43575060158054906101000a900460ff16155b8015611a9d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ab55750601560169054906101000a900460ff165b15611add57611ac382611f1f565b60004790506000811115611adb57611ada47611e45565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b875750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c3a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c395750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c485760009050611dcf565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cf35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d0b57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611db65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dce57600a54600c81905550600b54600d819055505b5b611ddb84848484612217565b50505050565b6000838311158290611e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e209190612fc6565b60405180910390fd5b5060008385611e3891906133bf565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ead573d6000803e3d6000fd5b5050565b6000600654821115611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90613028565b60405180910390fd5b6000611f02612244565b9050611f17818461226f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f7c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611faa5781602001602082028036833780820191505090505b5090503081600081518110611fe8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561208a57600080fd5b505afa15801561209e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c29190612a51565b816001815181106120fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061216330601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611426565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121c79594939291906131c3565b600060405180830381600087803b1580156121e157600080fd5b505af11580156121f5573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612225576122246122b9565b5b6122308484846122fc565b8061223e5761223d6124c7565b5b50505050565b60008060006122516124db565b91509150612268818361226f90919063ffffffff16565b9250505090565b60006122b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061253a565b905092915050565b6000600c541480156122cd57506000600d54145b156122d7576122fa565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061230e8761259d565b95509550955095509550955061236c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461260590919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061240185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264f90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061244d816126ad565b612457848361276a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124b491906131a8565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061250f670de0b6b3a764000060065461226f90919063ffffffff16565b82101561252d57600654670de0b6b3a7640000935093505050612536565b81819350935050505b9091565b60008083118290612581576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125789190612fc6565b60405180910390fd5b50600083856125909190613334565b9050809150509392505050565b60008060008060008060008060006125ba8a600c54600d546127a4565b92509250925060006125ca612244565b905060008060006125dd8e87878761283a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061264783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611de1565b905092915050565b600080828461265e91906132de565b9050838110156126a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269a906130a8565b60405180910390fd5b8091505092915050565b60006126b7612244565b905060006126ce82846128c390919063ffffffff16565b905061272281600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264f90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61277f8260065461260590919063ffffffff16565b60068190555061279a8160075461264f90919063ffffffff16565b6007819055505050565b6000806000806127d060646127c2888a6128c390919063ffffffff16565b61226f90919063ffffffff16565b905060006127fa60646127ec888b6128c390919063ffffffff16565b61226f90919063ffffffff16565b9050600061282382612815858c61260590919063ffffffff16565b61260590919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061285385896128c390919063ffffffff16565b9050600061286a86896128c390919063ffffffff16565b9050600061288187896128c390919063ffffffff16565b905060006128aa8261289c858761260590919063ffffffff16565b61260590919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156128d65760009050612938565b600082846128e49190613365565b90508284826128f39190613334565b14612933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292a906130e8565b60405180910390fd5b809150505b92915050565b600061295161294c8461325d565b613238565b9050808382526020820190508285602086028201111561297057600080fd5b60005b858110156129a0578161298688826129aa565b845260208401935060208301925050600181019050612973565b5050509392505050565b6000813590506129b981613983565b92915050565b6000815190506129ce81613983565b92915050565b600082601f8301126129e557600080fd5b81356129f584826020860161293e565b91505092915050565b600081359050612a0d8161399a565b92915050565b600081359050612a22816139b1565b92915050565b600060208284031215612a3a57600080fd5b6000612a48848285016129aa565b91505092915050565b600060208284031215612a6357600080fd5b6000612a71848285016129bf565b91505092915050565b60008060408385031215612a8d57600080fd5b6000612a9b858286016129aa565b9250506020612aac858286016129aa565b9150509250929050565b600080600060608486031215612acb57600080fd5b6000612ad9868287016129aa565b9350506020612aea868287016129aa565b9250506040612afb86828701612a13565b9150509250925092565b60008060408385031215612b1857600080fd5b6000612b26858286016129aa565b9250506020612b37858286016129fe565b9150509250929050565b60008060408385031215612b5457600080fd5b6000612b62858286016129aa565b9250506020612b7385828601612a13565b9150509250929050565b600060208284031215612b8f57600080fd5b600082013567ffffffffffffffff811115612ba957600080fd5b612bb5848285016129d4565b91505092915050565b600060208284031215612bd057600080fd5b6000612bde848285016129fe565b91505092915050565b600060208284031215612bf957600080fd5b6000612c0784828501612a13565b91505092915050565b60008060008060808587031215612c2657600080fd5b6000612c3487828801612a13565b9450506020612c4587828801612a13565b9350506040612c5687828801612a13565b9250506060612c6787828801612a13565b91505092959194509250565b6000612c7f8383612c8b565b60208301905092915050565b612c94816133f3565b82525050565b612ca3816133f3565b82525050565b6000612cb482613299565b612cbe81856132bc565b9350612cc983613289565b8060005b83811015612cfa578151612ce18882612c73565b9750612cec836132af565b925050600181019050612ccd565b5085935050505092915050565b612d1081613405565b82525050565b612d1f81613448565b82525050565b612d2e8161346c565b82525050565b6000612d3f826132a4565b612d4981856132cd565b9350612d5981856020860161347e565b612d62816135b8565b840191505092915050565b6000612d7a6023836132cd565b9150612d85826135c9565b604082019050919050565b6000612d9d603f836132cd565b9150612da882613618565b604082019050919050565b6000612dc0602a836132cd565b9150612dcb82613667565b604082019050919050565b6000612de3601c836132cd565b9150612dee826136b6565b602082019050919050565b6000612e066022836132cd565b9150612e11826136df565b604082019050919050565b6000612e296023836132cd565b9150612e348261372e565b604082019050919050565b6000612e4c601b836132cd565b9150612e578261377d565b602082019050919050565b6000612e6f6017836132cd565b9150612e7a826137a6565b602082019050919050565b6000612e926021836132cd565b9150612e9d826137cf565b604082019050919050565b6000612eb56020836132cd565b9150612ec08261381e565b602082019050919050565b6000612ed86029836132cd565b9150612ee382613847565b604082019050919050565b6000612efb6025836132cd565b9150612f0682613896565b604082019050919050565b6000612f1e6023836132cd565b9150612f29826138e5565b604082019050919050565b6000612f416024836132cd565b9150612f4c82613934565b604082019050919050565b612f6081613431565b82525050565b612f6f8161343b565b82525050565b6000602082019050612f8a6000830184612c9a565b92915050565b6000602082019050612fa56000830184612d07565b92915050565b6000602082019050612fc06000830184612d16565b92915050565b60006020820190508181036000830152612fe08184612d34565b905092915050565b6000602082019050818103600083015261300181612d6d565b9050919050565b6000602082019050818103600083015261302181612d90565b9050919050565b6000602082019050818103600083015261304181612db3565b9050919050565b6000602082019050818103600083015261306181612dd6565b9050919050565b6000602082019050818103600083015261308181612df9565b9050919050565b600060208201905081810360008301526130a181612e1c565b9050919050565b600060208201905081810360008301526130c181612e3f565b9050919050565b600060208201905081810360008301526130e181612e62565b9050919050565b6000602082019050818103600083015261310181612e85565b9050919050565b6000602082019050818103600083015261312181612ea8565b9050919050565b6000602082019050818103600083015261314181612ecb565b9050919050565b6000602082019050818103600083015261316181612eee565b9050919050565b6000602082019050818103600083015261318181612f11565b9050919050565b600060208201905081810360008301526131a181612f34565b9050919050565b60006020820190506131bd6000830184612f57565b92915050565b600060a0820190506131d86000830188612f57565b6131e56020830187612d25565b81810360408301526131f78186612ca9565b90506132066060830185612c9a565b6132136080830184612f57565b9695505050505050565b60006020820190506132326000830184612f66565b92915050565b6000613242613253565b905061324e82826134b1565b919050565b6000604051905090565b600067ffffffffffffffff82111561327857613277613589565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132e982613431565b91506132f483613431565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133295761332861352b565b5b828201905092915050565b600061333f82613431565b915061334a83613431565b92508261335a5761335961355a565b5b828204905092915050565b600061337082613431565b915061337b83613431565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133b4576133b361352b565b5b828202905092915050565b60006133ca82613431565b91506133d583613431565b9250828210156133e8576133e761352b565b5b828203905092915050565b60006133fe82613411565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006134538261345a565b9050919050565b600061346582613411565b9050919050565b600061347782613431565b9050919050565b60005b8381101561349c578082015181840152602081019050613481565b838111156134ab576000848401525b50505050565b6134ba826135b8565b810181811067ffffffffffffffff821117156134d9576134d8613589565b5b80604052505050565b60006134ed82613431565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156135205761351f61352b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f544f4b454e3a20416c726561647920656e61626c65642e000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61398c816133f3565b811461399757600080fd5b50565b6139a381613405565b81146139ae57600080fd5b50565b6139ba81613431565b81146139c557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e3d13da0a374d9622d706a9dbc139b1f80951262a0808c5de73e2ec5bd334a2764736f6c63430008040033
Deployed Bytecode Sourcemap
4049:13683:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12757:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6609:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7534:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5418:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6886:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7735:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17533:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5738:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6795:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5466:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12934:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17149:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12553:196;;;;;;;;;;;;;:::i;:::-;;6989:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1790:148;;;;;;;;;;;;;:::i;:::-;;17289:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5616:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1576:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12239:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5676:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6700:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16954:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16458:444;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7135:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5204:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5161:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12348:197;;;;;;;;;;;;;:::i;:::-;;7342:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17409:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12757:169;1713:12;:10;:12::i;:::-;1703:22;;:6;;;;;;;;;;:22;;;1695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12833:9:::1;12828:91;12852:5;:12;12848:1;:16;12828:91;;;12903:4;12886;:14;12891:5;12897:1;12891:8;;;;;;;;;;;;;;;;;;;;;;12886:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12866:3;;;;;:::i;:::-;;;;12828:91;;;;12757:169:::0;:::o;6609:83::-;6646:13;6679:5;;;;;;;;;;;;;;;;;6672:12;;6609:83;:::o;7534:193::-;7636:4;7658:39;7667:12;:10;:12::i;:::-;7681:7;7690:6;7658:8;:39::i;:::-;7715:4;7708:11;;7534:193;;;;:::o;5418:41::-;;;;;;;;;;;;;:::o;6886:95::-;6939:7;4606:18;6959:14;;6886:95;:::o;7735:446::-;7867:4;7884:36;7894:6;7902:9;7913:6;7884:9;:36::i;:::-;7931:220;7954:6;7975:12;:10;:12::i;:::-;8002:138;8058:6;8002:138;;;;;;;;;;;;;;;;;:11;:19;8014:6;8002:19;;;;;;;;;;;;;;;:33;8022:12;:10;:12::i;:::-;8002:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7931:8;:220::i;:::-;8169:4;8162:11;;7735:446;;;;;:::o;17533:196::-;1713:12;:10;:12::i;:::-;1703:22;;:6;;;;;;;;;;:22;;;1695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17647:7:::1;17625:29;;:9;:18;17635:7;17625:18;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;17617:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;17714:7;17693:9;:18;17703:7;17693:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17533:196:::0;;:::o;5738:52::-;;;;:::o;6795:83::-;6836:5;4280:1;6854:16;;6795:83;:::o;5466:28::-;;;;;;;;;;;;;:::o;12934:92::-;1713:12;:10;:12::i;:::-;1703:22;;:6;;;;;;;;;;:22;;;1695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13013:5:::1;12998:4;:12;13003:6;12998:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12934:92:::0;:::o;17149:101::-;1713:12;:10;:12::i;:::-;1703:22;;:6;;;;;;;;;;:22;;;1695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17230:12:::1;17216:11;;:26;;;;;;;;;;;;;;;;;;17149:101:::0;:::o;12553:196::-;12619:17;;;;;;;;;;;12603:33;;:12;:10;:12::i;:::-;:33;;;12595:42;;;;;;12648:26;12677:21;12648:50;;12709:32;12722:18;12709:12;:32::i;:::-;12553:196;:::o;6989:138::-;7055:7;7082:37;7102:7;:16;7110:7;7102:16;;;;;;;;;;;;;;;;7082:19;:37::i;:::-;7075:44;;6989:138;;;:::o;1790:148::-;1713:12;:10;:12::i;:::-;1703:22;;:6;;;;;;;;;;:22;;;1695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1897:1:::1;1860:40;;1881:6;::::0;::::1;;;;;;;;1860:40;;;;;;;;;;;;1928:1;1911:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1790:148::o:0;17289:108::-;1713:12;:10;:12::i;:::-;1703:22;;:6;;;;;;;;;;:22;;;1695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17378:11:::1;17363:12;:26;;;;17289:108:::0;:::o;5616:46::-;;;;:::o;1576:79::-;1614:7;1641:6;;;;;;;;;;;1634:13;;1576:79;:::o;12239:101::-;1713:12;:10;:12::i;:::-;1703:22;;:6;;;;;;;;;;:22;;;1695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12320:12:::1;12306:11;;:26;;;;;;;;;;;;;;;;;;12239:101:::0;:::o;5676:48::-;;;;:::o;6700:87::-;6739:13;6772:7;;;;;;;;;;;;;;;;;6765:14;;6700:87;:::o;16954:139::-;1713:12;:10;:12::i;:::-;1703:22;;:6;;;;;;;;;;:22;;;1695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17067:18:::1;17045:19;:40;;;;16954:139:::0;:::o;16458:444::-;16606:17;;;;;;;;;;;16590:33;;:12;:10;:12::i;:::-;:33;;;16582:42;;;;;;16659:1;16643:13;:17;:39;;;;;16681:1;16664:14;:18;16643:39;:59;;;;;16700:2;16686:11;:16;16643:59;:80;;;;;16721:2;16706:12;:17;16643:80;16635:89;;;;;;16752:13;16735:14;:30;;;;16794:14;16776:15;:32;;;;16844:11;16829:12;:26;;;;16882:12;16866:13;:28;;;;16458:444;;;;:::o;7135:199::-;7240:4;7262:42;7272:12;:10;:12::i;:::-;7286:9;7297:6;7262:9;:42::i;:::-;7322:4;7315:11;;7135:199;;;;:::o;5204:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5161:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12348:197::-;12414:17;;;;;;;;;;;12398:33;;:12;:10;:12::i;:::-;:33;;;12390:42;;;;;;12443:23;12469:24;12487:4;12469:9;:24::i;:::-;12443:50;;12504:33;12521:15;12504:16;:33::i;:::-;12348:197;:::o;7342:184::-;7459:7;7491:11;:18;7503:5;7491:18;;;;;;;;;;;;;;;:27;7510:7;7491:27;;;;;;;;;;;;;;;;7484:34;;7342:184;;;;:::o;17409:115::-;1713:12;:10;:12::i;:::-;1703:22;;:6;;;;;;;;;;:22;;;1695:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17503:13:::1;17486:14;:30;;;;17409:115:::0;:::o;335:98::-;388:7;415:10;408:17;;335:98;:::o;8884:369::-;9028:1;9011:19;;:5;:19;;;;9003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9109:1;9090:21;;:7;:21;;;;9082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9191:6;9161:11;:18;9173:5;9161:18;;;;;;;;;;;;;;;:27;9180:7;9161:27;;;;;;;;;;;;;;;:36;;;;9229:7;9213:32;;9222:5;9213:32;;;9238:6;9213:32;;;;;;:::i;:::-;;;;;;;;8884:369;;;:::o;9261:2372::-;9399:1;9383:18;;:4;:18;;;;9375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9476:1;9462:16;;:2;:16;;;;9454:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9546:1;9537:6;:10;9529:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9618:7;:5;:7::i;:::-;9610:15;;:4;:15;;;;:32;;;;;9635:7;:5;:7::i;:::-;9629:13;;:2;:13;;;;9610:32;9606:1265;;;9711:11;;;;;;;;;;;9706:144;;9751:9;:15;9761:4;9751:15;;;;;;;;;;;;;;;;;;;;;;;;;9743:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9706:144;9898:12;;9888:6;:22;;9880:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9967:4;:10;9972:4;9967:10;;;;;;;;;;;;;;;;;;;;;;;;;9966:11;:24;;;;;9982:4;:8;9987:2;9982:8;;;;;;;;;;;;;;;;;;;;;;;;;9981:9;9966:24;9958:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10068:13;;;;;;;;;;;10062:19;;:2;:19;;;10059:146;;10135:14;;10126:6;10110:13;10120:2;10110:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10102:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10059:146;10233:28;10264:24;10282:4;10264:9;:24::i;:::-;10233:55;;10303:12;10342:19;;10318:20;:43;;10303:58;;10405:12;;10381:20;:36;10378:124;;10474:12;;10451:35;;10378:124;10534:7;:18;;;;;10546:6;;;;;;;;;;10545:7;10534:18;:43;;;;;10564:13;;;;;;;;;;;10556:21;;:4;:21;;;;10534:43;:58;;;;;10581:11;;;;;;;;;;;10534:58;10530:330;;;10613:38;10630:20;10613:16;:38::i;:::-;10670:26;10699:21;10670:50;;10764:1;10743:18;:22;10739:106;;;10790:35;10803:21;10790:12;:35::i;:::-;10739:106;10530:330;;9606:1265;;;10891:12;10906:4;10891:19;;10955:18;:24;10974:4;10955:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10983:18;:22;11002:2;10983:22;;;;;;;;;;;;;;;;;;;;;;;;;10955:50;10954:102;;;;11019:13;;;;;;;;;;;11011:21;;:4;:21;;;;:44;;;;;11042:13;;;;;;;;;;;11036:19;;:2;:19;;;;11011:44;10954:102;10950:622;;;11083:5;11073:15;;10950:622;;;11178:13;;;;;;;;;;;11170:21;;:4;:21;;;:55;;;;;11209:15;;;;;;;;;;;11195:30;;:2;:30;;;;11170:55;11167:162;;;11258:14;;11246:9;:26;;;;11301:12;;11291:7;:22;;;;11167:162;11392:13;;;;;;;;;;;11386:19;;:2;:19;;;:55;;;;;11425:15;;;;;;;;;;;11409:32;;:4;:32;;;;11386:55;11382:165;;;11474:15;;11462:9;:27;;;;11518:13;;11508:7;:23;;;;11382:165;10950:622;11584:41;11599:4;11605:2;11609:6;11617:7;11584:14;:41::i;:::-;9261:2372;;;;:::o;2300:224::-;2420:7;2453:1;2448;:6;;2456:12;2440:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2480:9;2496:1;2492;:5;;;;:::i;:::-;2480:17;;2515:1;2508:8;;;2300:224;;;;;:::o;12132:99::-;12189:17;;;;;;;;;;;:26;;:34;12216:6;12189:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12132:99;:::o;8189:323::-;8284:7;8342;;8331;:18;;8309:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8430:19;8452:10;:8;:10::i;:::-;8430:32;;8480:24;8492:11;8480:7;:11;;:24;;;;:::i;:::-;8473:31;;;8189:323;;;:::o;11641:483::-;5899:4;5890:6;;:13;;;;;;;;;;;;;;;;;;11719:21:::1;11757:1;11743:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11719:40;;11788:4;11770;11775:1;11770:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;11814:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11804:4;11809:1;11804:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;11847:62;11864:4;11879:15;;;;;;;;;;;11897:11;11847:8;:62::i;:::-;11920:15;;;;;;;;;;;:66;;;12001:11;12027:1;12043:4;12070;12090:15;11920:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5914:1;5935:5:::0;5926:6;;:14;;;;;;;;;;;;;;;;;;11641:483;:::o;13034:282::-;13190:7;13185:28;;13199:14;:12;:14::i;:::-;13185:28;13224:44;13242:6;13250:9;13261:6;13224:17;:44::i;:::-;13284:7;13279:29;;13293:15;:13;:15::i;:::-;13279:29;13034:282;;;;:::o;16009:166::-;16051:7;16072:15;16089;16108:19;:17;:19::i;:::-;16071:56;;;;16147:20;16159:7;16147;:11;;:20;;;;:::i;:::-;16140:27;;;;16009:166;:::o;2786:132::-;2844:7;2871:39;2875:1;2878;2871:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2864:46;;2786:132;;;;:::o;8520:231::-;8580:1;8567:9;;:14;:30;;;;;8596:1;8585:7;;:12;8567:30;8563:43;;;8599:7;;8563:43;8642:9;;8622:17;:29;;;;8680:7;;8662:15;:25;;;;8720:1;8708:9;:13;;;;8742:1;8732:7;:11;;;;8520:231;:::o;13324:610::-;13471:15;13501:23;13539:12;13566:23;13604:12;13631:13;13658:19;13669:7;13658:10;:19::i;:::-;13456:221;;;;;;;;;;;;13706:28;13726:7;13706;:15;13714:6;13706:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13688:7;:15;13696:6;13688:15;;;;;;;;;;;;;;;:46;;;;13766:39;13789:15;13766:7;:18;13774:9;13766:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13745:7;:18;13753:9;13745:18;;;;;;;;;;;;;;;:60;;;;13816:16;13826:5;13816:9;:16::i;:::-;13843:23;13855:4;13861;13843:11;:23::i;:::-;13899:9;13882:44;;13891:6;13882:44;;;13910:15;13882:44;;;;;;:::i;:::-;;;;;;;;13324:610;;;;;;;;;:::o;8759:117::-;8815:17;;8803:9;:29;;;;8853:15;;8843:7;:25;;;;8759:117::o;16183:263::-;16234:7;16243;16263:15;16281:7;;16263:25;;16299:15;4606:18;16299:25;;16349:20;4606:18;16349:7;;:11;;:20;;;;:::i;:::-;16339:7;:30;16335:61;;;16379:7;;4606:18;16371:25;;;;;;;;16335:61;16421:7;16430;16413:25;;;;;;16183:263;;;:::o;2926:223::-;3046:7;3078:1;3074;:5;3081:12;3066:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3105:9;3121:1;3117;:5;;;;:::i;:::-;3105:17;;3140:1;3133:8;;;2926:223;;;;;:::o;14353:625::-;14453:7;14475;14497;14519;14541;14563;14599:23;14624:12;14638:13;14668:40;14680:7;14689:9;;14700:7;;14668:11;:40::i;:::-;14598:110;;;;;;14719:19;14741:10;:8;:10::i;:::-;14719:32;;14763:15;14780:23;14805:12;14834:46;14846:7;14855:4;14861:5;14868:11;14834;:46::i;:::-;14762:118;;;;;;14909:7;14918:15;14935:4;14941:15;14958:4;14964:5;14901:69;;;;;;;;;;;;;;;;;;;14353:625;;;;;;;:::o;2156:136::-;2214:7;2241:43;2245:1;2248;2241:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2234:50;;2156:136;;;;:::o;1969:179::-;2027:7;2047:9;2063:1;2059;:5;;;;:::i;:::-;2047:17;;2088:1;2083;:6;;2075:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2139:1;2132:8;;;1969:179;;;;:::o;13942:211::-;13995:19;14017:10;:8;:10::i;:::-;13995:32;;14038:13;14054:22;14064:11;14054:5;:9;;:22;;;;:::i;:::-;14038:38;;14112:33;14139:5;14112:7;:22;14128:4;14112:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14087:7;:22;14103:4;14087:22;;;;;;;;;;;;;;;:58;;;;13942:211;;;:::o;14161:147::-;14239:17;14251:4;14239:7;;:11;;:17;;;;:::i;:::-;14229:7;:27;;;;14280:20;14295:4;14280:10;;:14;;:20;;;;:::i;:::-;14267:10;:33;;;;14161:147;;:::o;14986:471::-;15155:7;15177;15199;15234:12;15249:30;15275:3;15249:21;15261:8;15249:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15234:45;;15290:13;15306:28;15330:3;15306:19;15318:6;15306:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15290:44;;15345:23;15371:28;15393:5;15371:17;15383:4;15371:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15345:54;;15420:15;15437:4;15443:5;15412:37;;;;;;;;;14986:471;;;;;;;:::o;15465:536::-;15659:7;15681;15703;15738:15;15756:24;15768:11;15756:7;:11;;:24;;;;:::i;:::-;15738:42;;15791:12;15806:21;15815:11;15806:4;:8;;:21;;;;:::i;:::-;15791:36;;15838:13;15854:22;15864:11;15854:5;:9;;:22;;;;:::i;:::-;15838:38;;15887:23;15913:28;15935:5;15913:17;15925:4;15913:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15887:54;;15962:7;15971:15;15988:4;15954:39;;;;;;;;;;15465:536;;;;;;;;:::o;2532:246::-;2590:7;2619:1;2614;:6;2610:47;;;2644:1;2637:8;;;;2610:47;2667:9;2683:1;2679;:5;;;;:::i;:::-;2667:17;;2712:1;2707;2703;:5;;;;:::i;:::-;:10;2695:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2769:1;2762:8;;;2532:246;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:139::-;1490:5;1528:6;1515:20;1506:29;;1544:33;1571:5;1544:33;:::i;:::-;1496:87;;;;:::o;1589:262::-;1648:6;1697:2;1685:9;1676:7;1672:23;1668:32;1665:2;;;1713:1;1710;1703:12;1665:2;1756:1;1781:53;1826:7;1817:6;1806:9;1802:22;1781:53;:::i;:::-;1771:63;;1727:117;1655:196;;;;:::o;1857:284::-;1927:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:2;;;1992:1;1989;1982:12;1944:2;2035:1;2060:64;2116:7;2107:6;2096:9;2092:22;2060:64;:::i;:::-;2050:74;;2006:128;1934:207;;;;:::o;2147:407::-;2215:6;2223;2272:2;2260:9;2251:7;2247:23;2243:32;2240:2;;;2288:1;2285;2278:12;2240:2;2331:1;2356:53;2401:7;2392:6;2381:9;2377:22;2356:53;:::i;:::-;2346:63;;2302:117;2458:2;2484:53;2529:7;2520:6;2509:9;2505:22;2484:53;:::i;:::-;2474:63;;2429:118;2230:324;;;;;:::o;2560:552::-;2637:6;2645;2653;2702:2;2690:9;2681:7;2677:23;2673:32;2670:2;;;2718:1;2715;2708:12;2670:2;2761:1;2786:53;2831:7;2822:6;2811:9;2807:22;2786:53;:::i;:::-;2776:63;;2732:117;2888:2;2914:53;2959:7;2950:6;2939:9;2935:22;2914:53;:::i;:::-;2904:63;;2859:118;3016:2;3042:53;3087:7;3078:6;3067:9;3063:22;3042:53;:::i;:::-;3032:63;;2987:118;2660:452;;;;;:::o;3118:401::-;3183:6;3191;3240:2;3228:9;3219:7;3215:23;3211:32;3208:2;;;3256:1;3253;3246:12;3208:2;3299:1;3324:53;3369:7;3360:6;3349:9;3345:22;3324:53;:::i;:::-;3314:63;;3270:117;3426:2;3452:50;3494:7;3485:6;3474:9;3470:22;3452:50;:::i;:::-;3442:60;;3397:115;3198:321;;;;;:::o;3525:407::-;3593:6;3601;3650:2;3638:9;3629:7;3625:23;3621:32;3618:2;;;3666:1;3663;3656:12;3618:2;3709:1;3734:53;3779:7;3770:6;3759:9;3755:22;3734:53;:::i;:::-;3724:63;;3680:117;3836:2;3862:53;3907:7;3898:6;3887:9;3883:22;3862:53;:::i;:::-;3852:63;;3807:118;3608:324;;;;;:::o;3938:405::-;4022:6;4071:2;4059:9;4050:7;4046:23;4042:32;4039:2;;;4087:1;4084;4077:12;4039:2;4158:1;4147:9;4143:17;4130:31;4188:18;4180:6;4177:30;4174:2;;;4220:1;4217;4210:12;4174:2;4248:78;4318:7;4309:6;4298:9;4294:22;4248:78;:::i;:::-;4238:88;;4101:235;4029:314;;;;:::o;4349:256::-;4405:6;4454:2;4442:9;4433:7;4429:23;4425:32;4422:2;;;4470:1;4467;4460:12;4422:2;4513:1;4538:50;4580:7;4571:6;4560:9;4556:22;4538:50;:::i;:::-;4528:60;;4484:114;4412:193;;;;:::o;4611:262::-;4670:6;4719:2;4707:9;4698:7;4694:23;4690:32;4687:2;;;4735:1;4732;4725:12;4687:2;4778:1;4803:53;4848:7;4839:6;4828:9;4824:22;4803:53;:::i;:::-;4793:63;;4749:117;4677:196;;;;:::o;4879:698::-;4965:6;4973;4981;4989;5038:3;5026:9;5017:7;5013:23;5009:33;5006:2;;;5055:1;5052;5045:12;5006:2;5098:1;5123:53;5168:7;5159:6;5148:9;5144:22;5123:53;:::i;:::-;5113:63;;5069:117;5225:2;5251:53;5296:7;5287:6;5276:9;5272:22;5251:53;:::i;:::-;5241:63;;5196:118;5353:2;5379:53;5424:7;5415:6;5404:9;5400:22;5379:53;:::i;:::-;5369:63;;5324:118;5481:2;5507:53;5552:7;5543:6;5532:9;5528:22;5507:53;:::i;:::-;5497:63;;5452:118;4996:581;;;;;;;:::o;5583:179::-;5652:10;5673:46;5715:3;5707:6;5673:46;:::i;:::-;5751:4;5746:3;5742:14;5728:28;;5663:99;;;;:::o;5768:108::-;5845:24;5863:5;5845:24;:::i;:::-;5840:3;5833:37;5823:53;;:::o;5882:118::-;5969:24;5987:5;5969:24;:::i;:::-;5964:3;5957:37;5947:53;;:::o;6036:732::-;6155:3;6184:54;6232:5;6184:54;:::i;:::-;6254:86;6333:6;6328:3;6254:86;:::i;:::-;6247:93;;6364:56;6414:5;6364:56;:::i;:::-;6443:7;6474:1;6459:284;6484:6;6481:1;6478:13;6459:284;;;6560:6;6554:13;6587:63;6646:3;6631:13;6587:63;:::i;:::-;6580:70;;6673:60;6726:6;6673:60;:::i;:::-;6663:70;;6519:224;6506:1;6503;6499:9;6494:14;;6459:284;;;6463:14;6759:3;6752:10;;6160:608;;;;;;;:::o;6774:109::-;6855:21;6870:5;6855:21;:::i;:::-;6850:3;6843:34;6833:50;;:::o;6889:183::-;7002:63;7059:5;7002:63;:::i;:::-;6997:3;6990:76;6980:92;;:::o;7078:147::-;7173:45;7212:5;7173:45;:::i;:::-;7168:3;7161:58;7151:74;;:::o;7231:364::-;7319:3;7347:39;7380:5;7347:39;:::i;:::-;7402:71;7466:6;7461:3;7402:71;:::i;:::-;7395:78;;7482:52;7527:6;7522:3;7515:4;7508:5;7504:16;7482:52;:::i;:::-;7559:29;7581:6;7559:29;:::i;:::-;7554:3;7550:39;7543:46;;7323:272;;;;;:::o;7601:366::-;7743:3;7764:67;7828:2;7823:3;7764:67;:::i;:::-;7757:74;;7840:93;7929:3;7840:93;:::i;:::-;7958:2;7953:3;7949:12;7942:19;;7747:220;;;:::o;7973:366::-;8115:3;8136:67;8200:2;8195:3;8136:67;:::i;:::-;8129:74;;8212:93;8301:3;8212:93;:::i;:::-;8330:2;8325:3;8321:12;8314:19;;8119:220;;;:::o;8345:366::-;8487:3;8508:67;8572:2;8567:3;8508:67;:::i;:::-;8501:74;;8584:93;8673:3;8584:93;:::i;:::-;8702:2;8697:3;8693:12;8686:19;;8491:220;;;:::o;8717:366::-;8859:3;8880:67;8944:2;8939:3;8880:67;:::i;:::-;8873:74;;8956:93;9045:3;8956:93;:::i;:::-;9074:2;9069:3;9065:12;9058:19;;8863:220;;;:::o;9089:366::-;9231:3;9252:67;9316:2;9311:3;9252:67;:::i;:::-;9245:74;;9328:93;9417:3;9328:93;:::i;:::-;9446:2;9441:3;9437:12;9430:19;;9235:220;;;:::o;9461:366::-;9603:3;9624:67;9688:2;9683:3;9624:67;:::i;:::-;9617:74;;9700:93;9789:3;9700:93;:::i;:::-;9818:2;9813:3;9809:12;9802:19;;9607:220;;;:::o;9833:366::-;9975:3;9996:67;10060:2;10055:3;9996:67;:::i;:::-;9989:74;;10072:93;10161:3;10072:93;:::i;:::-;10190:2;10185:3;10181:12;10174:19;;9979:220;;;:::o;10205:366::-;10347:3;10368:67;10432:2;10427:3;10368:67;:::i;:::-;10361:74;;10444:93;10533:3;10444:93;:::i;:::-;10562:2;10557:3;10553:12;10546:19;;10351:220;;;:::o;10577:366::-;10719:3;10740:67;10804:2;10799:3;10740:67;:::i;:::-;10733:74;;10816:93;10905:3;10816:93;:::i;:::-;10934:2;10929:3;10925:12;10918:19;;10723:220;;;:::o;10949:366::-;11091:3;11112:67;11176:2;11171:3;11112:67;:::i;:::-;11105:74;;11188:93;11277:3;11188:93;:::i;:::-;11306:2;11301:3;11297:12;11290:19;;11095:220;;;:::o;11321:366::-;11463:3;11484:67;11548:2;11543:3;11484:67;:::i;:::-;11477:74;;11560:93;11649:3;11560:93;:::i;:::-;11678:2;11673:3;11669:12;11662:19;;11467:220;;;:::o;11693:366::-;11835:3;11856:67;11920:2;11915:3;11856:67;:::i;:::-;11849:74;;11932:93;12021:3;11932:93;:::i;:::-;12050:2;12045:3;12041:12;12034:19;;11839:220;;;:::o;12065:366::-;12207:3;12228:67;12292:2;12287:3;12228:67;:::i;:::-;12221:74;;12304:93;12393:3;12304:93;:::i;:::-;12422:2;12417:3;12413:12;12406:19;;12211:220;;;:::o;12437:366::-;12579:3;12600:67;12664:2;12659:3;12600:67;:::i;:::-;12593:74;;12676:93;12765:3;12676:93;:::i;:::-;12794:2;12789:3;12785:12;12778:19;;12583:220;;;:::o;12809:118::-;12896:24;12914:5;12896:24;:::i;:::-;12891:3;12884:37;12874:53;;:::o;12933:112::-;13016:22;13032:5;13016:22;:::i;:::-;13011:3;13004:35;12994:51;;:::o;13051:222::-;13144:4;13182:2;13171:9;13167:18;13159:26;;13195:71;13263:1;13252:9;13248:17;13239:6;13195:71;:::i;:::-;13149:124;;;;:::o;13279:210::-;13366:4;13404:2;13393:9;13389:18;13381:26;;13417:65;13479:1;13468:9;13464:17;13455:6;13417:65;:::i;:::-;13371:118;;;;:::o;13495:274::-;13614:4;13652:2;13641:9;13637:18;13629:26;;13665:97;13759:1;13748:9;13744:17;13735:6;13665:97;:::i;:::-;13619:150;;;;:::o;13775:313::-;13888:4;13926:2;13915:9;13911:18;13903:26;;13975:9;13969:4;13965:20;13961:1;13950:9;13946:17;13939:47;14003:78;14076:4;14067:6;14003:78;:::i;:::-;13995:86;;13893:195;;;;:::o;14094:419::-;14260:4;14298:2;14287:9;14283:18;14275:26;;14347:9;14341:4;14337:20;14333:1;14322:9;14318:17;14311:47;14375:131;14501:4;14375:131;:::i;:::-;14367:139;;14265:248;;;:::o;14519:419::-;14685:4;14723:2;14712:9;14708:18;14700:26;;14772:9;14766:4;14762:20;14758:1;14747:9;14743:17;14736:47;14800:131;14926:4;14800:131;:::i;:::-;14792:139;;14690:248;;;:::o;14944:419::-;15110:4;15148:2;15137:9;15133:18;15125:26;;15197:9;15191:4;15187:20;15183:1;15172:9;15168:17;15161:47;15225:131;15351:4;15225:131;:::i;:::-;15217:139;;15115:248;;;:::o;15369:419::-;15535:4;15573:2;15562:9;15558:18;15550:26;;15622:9;15616:4;15612:20;15608:1;15597:9;15593:17;15586:47;15650:131;15776:4;15650:131;:::i;:::-;15642:139;;15540:248;;;:::o;15794:419::-;15960:4;15998:2;15987:9;15983:18;15975:26;;16047:9;16041:4;16037:20;16033:1;16022:9;16018:17;16011:47;16075:131;16201:4;16075:131;:::i;:::-;16067:139;;15965:248;;;:::o;16219:419::-;16385:4;16423:2;16412:9;16408:18;16400:26;;16472:9;16466:4;16462:20;16458:1;16447:9;16443:17;16436:47;16500:131;16626:4;16500:131;:::i;:::-;16492:139;;16390:248;;;:::o;16644:419::-;16810:4;16848:2;16837:9;16833:18;16825:26;;16897:9;16891:4;16887:20;16883:1;16872:9;16868:17;16861:47;16925:131;17051:4;16925:131;:::i;:::-;16917:139;;16815:248;;;:::o;17069:419::-;17235:4;17273:2;17262:9;17258:18;17250:26;;17322:9;17316:4;17312:20;17308:1;17297:9;17293:17;17286:47;17350:131;17476:4;17350:131;:::i;:::-;17342:139;;17240:248;;;:::o;17494:419::-;17660:4;17698:2;17687:9;17683:18;17675:26;;17747:9;17741:4;17737:20;17733:1;17722:9;17718:17;17711:47;17775:131;17901:4;17775:131;:::i;:::-;17767:139;;17665:248;;;:::o;17919:419::-;18085:4;18123:2;18112:9;18108:18;18100:26;;18172:9;18166:4;18162:20;18158:1;18147:9;18143:17;18136:47;18200:131;18326:4;18200:131;:::i;:::-;18192:139;;18090:248;;;:::o;18344:419::-;18510:4;18548:2;18537:9;18533:18;18525:26;;18597:9;18591:4;18587:20;18583:1;18572:9;18568:17;18561:47;18625:131;18751:4;18625:131;:::i;:::-;18617:139;;18515:248;;;:::o;18769:419::-;18935:4;18973:2;18962:9;18958:18;18950:26;;19022:9;19016:4;19012:20;19008:1;18997:9;18993:17;18986:47;19050:131;19176:4;19050:131;:::i;:::-;19042:139;;18940:248;;;:::o;19194:419::-;19360:4;19398:2;19387:9;19383:18;19375:26;;19447:9;19441:4;19437:20;19433:1;19422:9;19418:17;19411:47;19475:131;19601:4;19475:131;:::i;:::-;19467:139;;19365:248;;;:::o;19619:419::-;19785:4;19823:2;19812:9;19808:18;19800:26;;19872:9;19866:4;19862:20;19858:1;19847:9;19843:17;19836:47;19900:131;20026:4;19900:131;:::i;:::-;19892:139;;19790:248;;;:::o;20044:222::-;20137:4;20175:2;20164:9;20160:18;20152:26;;20188:71;20256:1;20245:9;20241:17;20232:6;20188:71;:::i;:::-;20142:124;;;;:::o;20272:831::-;20535:4;20573:3;20562:9;20558:19;20550:27;;20587:71;20655:1;20644:9;20640:17;20631:6;20587:71;:::i;:::-;20668:80;20744:2;20733:9;20729:18;20720:6;20668:80;:::i;:::-;20795:9;20789:4;20785:20;20780:2;20769:9;20765:18;20758:48;20823:108;20926:4;20917:6;20823:108;:::i;:::-;20815:116;;20941:72;21009:2;20998:9;20994:18;20985:6;20941:72;:::i;:::-;21023:73;21091:3;21080:9;21076:19;21067:6;21023:73;:::i;:::-;20540:563;;;;;;;;:::o;21109:214::-;21198:4;21236:2;21225:9;21221:18;21213:26;;21249:67;21313:1;21302:9;21298:17;21289:6;21249:67;:::i;:::-;21203:120;;;;:::o;21329:129::-;21363:6;21390:20;;:::i;:::-;21380:30;;21419:33;21447:4;21439:6;21419:33;:::i;:::-;21370:88;;;:::o;21464:75::-;21497:6;21530:2;21524:9;21514:19;;21504:35;:::o;21545:311::-;21622:4;21712:18;21704:6;21701:30;21698:2;;;21734:18;;:::i;:::-;21698:2;21784:4;21776:6;21772:17;21764:25;;21844:4;21838;21834:15;21826:23;;21627:229;;;:::o;21862:132::-;21929:4;21952:3;21944:11;;21982:4;21977:3;21973:14;21965:22;;21934:60;;;:::o;22000:114::-;22067:6;22101:5;22095:12;22085:22;;22074:40;;;:::o;22120:99::-;22172:6;22206:5;22200:12;22190:22;;22179:40;;;:::o;22225:113::-;22295:4;22327;22322:3;22318:14;22310:22;;22300:38;;;:::o;22344:184::-;22443:11;22477:6;22472:3;22465:19;22517:4;22512:3;22508:14;22493:29;;22455:73;;;;:::o;22534:169::-;22618:11;22652:6;22647:3;22640:19;22692:4;22687:3;22683:14;22668:29;;22630:73;;;;:::o;22709:305::-;22749:3;22768:20;22786:1;22768:20;:::i;:::-;22763:25;;22802:20;22820:1;22802:20;:::i;:::-;22797:25;;22956:1;22888:66;22884:74;22881:1;22878:81;22875:2;;;22962:18;;:::i;:::-;22875:2;23006:1;23003;22999:9;22992:16;;22753:261;;;;:::o;23020:185::-;23060:1;23077:20;23095:1;23077:20;:::i;:::-;23072:25;;23111:20;23129:1;23111:20;:::i;:::-;23106:25;;23150:1;23140:2;;23155:18;;:::i;:::-;23140:2;23197:1;23194;23190:9;23185:14;;23062:143;;;;:::o;23211:348::-;23251:7;23274:20;23292:1;23274:20;:::i;:::-;23269:25;;23308:20;23326:1;23308:20;:::i;:::-;23303:25;;23496:1;23428:66;23424:74;23421:1;23418:81;23413:1;23406:9;23399:17;23395:105;23392:2;;;23503:18;;:::i;:::-;23392:2;23551:1;23548;23544:9;23533:20;;23259:300;;;;:::o;23565:191::-;23605:4;23625:20;23643:1;23625:20;:::i;:::-;23620:25;;23659:20;23677:1;23659:20;:::i;:::-;23654:25;;23698:1;23695;23692:8;23689:2;;;23703:18;;:::i;:::-;23689:2;23748:1;23745;23741:9;23733:17;;23610:146;;;;:::o;23762:96::-;23799:7;23828:24;23846:5;23828:24;:::i;:::-;23817:35;;23807:51;;;:::o;23864:90::-;23898:7;23941:5;23934:13;23927:21;23916:32;;23906:48;;;:::o;23960:126::-;23997:7;24037:42;24030:5;24026:54;24015:65;;24005:81;;;:::o;24092:77::-;24129:7;24158:5;24147:16;;24137:32;;;:::o;24175:86::-;24210:7;24250:4;24243:5;24239:16;24228:27;;24218:43;;;:::o;24267:178::-;24343:9;24376:63;24433:5;24376:63;:::i;:::-;24363:76;;24353:92;;;:::o;24451:139::-;24527:9;24560:24;24578:5;24560:24;:::i;:::-;24547:37;;24537:53;;;:::o;24596:121::-;24654:9;24687:24;24705:5;24687:24;:::i;:::-;24674:37;;24664:53;;;:::o;24723:307::-;24791:1;24801:113;24815:6;24812:1;24809:13;24801:113;;;24900:1;24895:3;24891:11;24885:18;24881:1;24876:3;24872:11;24865:39;24837:2;24834:1;24830:10;24825:15;;24801:113;;;24932:6;24929:1;24926:13;24923:2;;;25012:1;25003:6;24998:3;24994:16;24987:27;24923:2;24772:258;;;;:::o;25036:281::-;25119:27;25141:4;25119:27;:::i;:::-;25111:6;25107:40;25249:6;25237:10;25234:22;25213:18;25201:10;25198:34;25195:62;25192:2;;;25260:18;;:::i;:::-;25192:2;25300:10;25296:2;25289:22;25079:238;;;:::o;25323:233::-;25362:3;25385:24;25403:5;25385:24;:::i;:::-;25376:33;;25431:66;25424:5;25421:77;25418:2;;;25501:18;;:::i;:::-;25418:2;25548:1;25541:5;25537:13;25530:20;;25366:190;;;:::o;25562:180::-;25610:77;25607:1;25600:88;25707:4;25704:1;25697:15;25731:4;25728:1;25721:15;25748:180;25796:77;25793:1;25786:88;25893:4;25890:1;25883:15;25917:4;25914:1;25907:15;25934:180;25982:77;25979:1;25972:88;26079:4;26076:1;26069:15;26103:4;26100:1;26093:15;26120:102;26161:6;26212:2;26208:7;26203:2;26196:5;26192:14;26188:28;26178:38;;26168:54;;;:::o;26228:222::-;26368:34;26364:1;26356:6;26352:14;26345:58;26437:5;26432:2;26424:6;26420:15;26413:30;26334:116;:::o;26456:250::-;26596:34;26592:1;26584:6;26580:14;26573:58;26665:33;26660:2;26652:6;26648:15;26641:58;26562:144;:::o;26712:229::-;26852:34;26848:1;26840:6;26836:14;26829:58;26921:12;26916:2;26908:6;26904:15;26897:37;26818:123;:::o;26947:178::-;27087:30;27083:1;27075:6;27071:14;27064:54;27053:72;:::o;27131:221::-;27271:34;27267:1;27259:6;27255:14;27248:58;27340:4;27335:2;27327:6;27323:15;27316:29;27237:115;:::o;27358:222::-;27498:34;27494:1;27486:6;27482:14;27475:58;27567:5;27562:2;27554:6;27550:15;27543:30;27464:116;:::o;27586:177::-;27726:29;27722:1;27714:6;27710:14;27703:53;27692:71;:::o;27769:173::-;27909:25;27905:1;27897:6;27893:14;27886:49;27875:67;:::o;27948:220::-;28088:34;28084:1;28076:6;28072:14;28065:58;28157:3;28152:2;28144:6;28140:15;28133:28;28054:114;:::o;28174:182::-;28314:34;28310:1;28302:6;28298:14;28291:58;28280:76;:::o;28362:228::-;28502:34;28498:1;28490:6;28486:14;28479:58;28571:11;28566:2;28558:6;28554:15;28547:36;28468:122;:::o;28596:224::-;28736:34;28732:1;28724:6;28720:14;28713:58;28805:7;28800:2;28792:6;28788:15;28781:32;28702:118;:::o;28826:222::-;28966:34;28962:1;28954:6;28950:14;28943:58;29035:5;29030:2;29022:6;29018:15;29011:30;28932:116;:::o;29054:223::-;29194:34;29190:1;29182:6;29178:14;29171:58;29263:6;29258:2;29250:6;29246:15;29239:31;29160:117;:::o;29283:122::-;29356:24;29374:5;29356:24;:::i;:::-;29349:5;29346:35;29336:2;;29395:1;29392;29385:12;29336:2;29326:79;:::o;29411:116::-;29481:21;29496:5;29481:21;:::i;:::-;29474:5;29471:32;29461:2;;29517:1;29514;29507:12;29461:2;29451:76;:::o;29533:122::-;29606:24;29624:5;29606:24;:::i;:::-;29599:5;29596:35;29586:2;;29645:1;29642;29635:12;29586:2;29576:79;:::o
Swarm Source
ipfs://e3d13da0a374d9622d706a9dbc139b1f80951262a0808c5de73e2ec5bd334a27
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.