ERC-20
Charity
Overview
Max Total Supply
1,000,000,000,000 CBSHIB
Holders
334 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000007173 CBSHIBValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CowboyShiba
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-09 */ /* Submitted for verification at Etherscan.io on 2021-06-09 https://cowboyshiba.com Tokenomics @ Launch: 1. 1,000,000,000,000 Total Supply 2. 20% - Burned 3. 3% - Marketing 4. 2.5% - Dev 5. 1% - Charity 6. 2% - AirDrops 7. 71.5% - Liquidity Locked Forever 8. 0.3% Buy Limit (until lifted) 9. Ownership Renounced Tokenomics Taxation: 1. Sells limited to 2% of the Liquidity Pool, <1.9% price impact 2. 3% - Pool 3. 2% - Redistribution sent to all holders for all buys 4. 2% - Marketing 5. 1% - Charity 6. 1% - Burned SPDX-License-Identifier: MIT */ pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( 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 CowboyShiba is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Cowboy Shiba"; string private constant _symbol = "CBSHIB"; uint8 private constant _decimals = 9; mapping(address => bool) private bots; 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 _tTotal = 1000000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _dynamicFee = 3; //value used as "pool_fee", "marketing_fee" "tax_fee", "charity_fee", "burn_fee" respectfully using safemath in functions mapping(address => uint256) private buycooldown; address private _devAddress; address private _marketingAddress; address private _charityAddress; address private _burnAddress; address private _poolAddress; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen = false; bool private liquidityAdded = false; bool private inSwap = false; bool private swapEnabled = false; uint256 private _maxTxPct = 3; event MaxTxPctUpdated(uint256 _maxTxPct); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _rOwned[_msgSender()] = _rTotal; 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 view 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 (_dynamicFee == 0) return; _dynamicFee = 0; } function restoreAllFee() private { _dynamicFee = 3; } 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()) { require(!bots[from] && !bots[to]); uint256 maxTxAmount = _tTotal.mul(_maxTxPct).div(10**3); if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) { require(tradingOpen); require(amount <= maxTxAmount); require(buycooldown[to] < block.timestamp); buycooldown[to] = block.timestamp + (30 seconds); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && from != uniswapV2Pair && swapEnabled) { require(amount <= balanceOf(uniswapV2Pair).mul(2).div(100)); if (from != address(this) && to != address(this) && contractTokenBalance > 0) { if (_msgSender() == address(uniswapV2Router) || _msgSender() == uniswapV2Pair) { swapTokensForEth(contractTokenBalance); } } } } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } _tokenTransfer(from, to, amount, takeFee); restoreAllFee; } 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 openTrading() public onlyOwner { require(liquidityAdded); tradingOpen = true; } function maxTxAmount() public view returns (uint256) { return _tTotal.mul(_maxTxPct).div(10**3); } function isMarketing(address account) public view returns (bool) { return account == _marketingAddress; } function isDev(address account) public view returns (bool) { return account == _devAddress; } function isCharity(address account) public view returns (bool) { return account == _charityAddress; } function isPool(address account) public view returns (bool) { return account == _poolAddress; } function setBotAddress(address account) external onlyOwner() { require(!bots[account], "Account is already identified as a bot"); bots[account] = true; } function revertSetBotAddress(address account) external onlyOwner() { require(bots[account], "Account is not identified as a bot"); bots[account] = false; } function setCharityAddress(address charityAddress) external onlyOwner { _isExcludedFromFee[_charityAddress] = false; _charityAddress = charityAddress; _isExcludedFromFee[_charityAddress] = true; } function setBurnAddress(address burnAddress) external onlyOwner { _isExcludedFromFee[_burnAddress] = false; _burnAddress = burnAddress; _isExcludedFromFee[_burnAddress] = true; } function setDevAddress(address devAddress) external onlyOwner { _isExcludedFromFee[_devAddress] = false; _devAddress = devAddress; _isExcludedFromFee[_devAddress] = true; } function setMarketingAddress(address marketingAddress) external onlyOwner { _isExcludedFromFee[_marketingAddress] = false; _marketingAddress = marketingAddress; _isExcludedFromFee[_marketingAddress] = true; } function setPoolAddress(address poolAddress) external onlyOwner { _isExcludedFromFee[_poolAddress] = false; _poolAddress = poolAddress; _isExcludedFromFee[_poolAddress] = true; } function addLiquidity() external onlyOwner() { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); swapEnabled = true; liquidityAdded = true; _maxTxPct = 3; IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max); } function manualswap() external { require(_msgSender() == owner()); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } 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 tDynamic) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _transferFees(sender, tDynamic); _reflectFee(rFee, tDynamic); emit Transfer(sender, recipient, tTransferAmount); } function _transferFees(address sender, uint256 tDynamic) private { uint256 currentRate = _getRate(); if (tDynamic == 0) return; uint256 tDynamicOneThird = tDynamic.div(3); uint256 tMarketing = tDynamic.sub(tDynamicOneThird); uint256 rMarketing = tMarketing.mul(currentRate); _tOwned[_marketingAddress] = _tOwned[_marketingAddress].add(tMarketing); _rOwned[_marketingAddress] = _rOwned[_marketingAddress].add(rMarketing); emit Transfer(sender, _marketingAddress, tMarketing); uint256 tCharity = tDynamic.sub(tDynamicOneThird).sub(tDynamicOneThird); uint256 rCharity = tCharity.mul(currentRate); _tOwned[_charityAddress] = _tOwned[_charityAddress].add(tCharity); _rOwned[_charityAddress] = _rOwned[_charityAddress].add(rCharity); emit Transfer(sender, _charityAddress, tCharity); uint256 rPool = tDynamic.mul(currentRate); // tDynamic == tPool == 3% _tOwned[_poolAddress] = _tOwned[_poolAddress].add(tDynamic); _rOwned[_poolAddress] = _rOwned[_poolAddress].add(rPool); emit Transfer(sender, _poolAddress, tDynamic); uint256 rBurn = rCharity; _tOwned[_burnAddress] = _tOwned[_burnAddress].add(tCharity); _rOwned[_burnAddress] = _rOwned[_burnAddress].add(rBurn); emit Transfer(sender, _burnAddress, tCharity); // tCharity == tBurn == 1% } function _reflectFee(uint256 rFee, uint256 tDynamic) private { _rTotal = _rTotal.sub(rFee); if (tDynamic != 0) _tFeeTotal = _tFeeTotal.add(tDynamic.sub(tDynamic.div(3))); } receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tDynamic) = _getTValues(tAmount, _dynamicFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rDynamic) = _getRValues(tAmount, tDynamic, currentRate); return (rAmount, rTransferAmount, rDynamic, tTransferAmount, tDynamic); } function _getTValues(uint256 tAmount, uint256 dynamicFee) private pure returns (uint256, uint256) { if (dynamicFee == 0) return (tAmount, dynamicFee); uint256 tDynamic = tAmount.mul(dynamicFee).div(100); uint256 tTransferAmount = tAmount .sub(tDynamic) //pool fee .sub(tDynamic) //charity + marketing .sub(tDynamic); //burn + redistribution return (tTransferAmount, tDynamic); } function _getRValues(uint256 tAmount, uint256 tDynamic, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); if (tDynamic == 0) return (rAmount, rAmount, tDynamic); uint256 rDynamic = tDynamic.mul(currentRate); uint256 rTransferAmount = rAmount .sub(rDynamic) //pool fee .sub(rDynamic) //charity + marketing .sub(rDynamic); //burn + redistribution return (rAmount, rTransferAmount, rDynamic); } 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 setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() { require(maxTxPercent > 0, "Amount must be greater than 0"); _maxTxPct = maxTxPercent * 10; emit MaxTxPctUpdated(_maxTxPct); } }
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":"_maxTxPct","type":"uint256"}],"name":"MaxTxPctUpdated","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":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isCharity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isDev","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMarketing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"revertSetBotAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setBotAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"burnAddress","type":"address"}],"name":"setBurnAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"charityAddress","type":"address"}],"name":"setCharityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"poolAddress","type":"address"}],"name":"setPoolAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052683635c9adc5dea00000600755600754600019620000239190620003a0565b6000196200003291906200035b565b6008556003600a556000601260146101000a81548160ff0219169083151502179055506000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff0219169083151502179055506003601355348015620000b857600080fd5b506000620000cb620002fc60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506001600660006200017f6200030460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600854600360006200023f620002fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200028d620002fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620002ee91906200033e565b60405180910390a362000436565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620003388162000396565b82525050565b60006020820190506200035560008301846200032d565b92915050565b6000620003688262000396565b9150620003758362000396565b9250828210156200038b576200038a620003d8565b5b828203905092915050565b6000819050919050565b6000620003ad8262000396565b9150620003ba8362000396565b925082620003cd57620003cc62000407565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b614ce480620004466000396000f3fe6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063d543dbeb1161008a578063e8078d9411610064578063e8078d9414610615578063e81ffbef1461062c578063e9e15b4f14610669578063f2fde38b14610692576101c2565b8063d543dbeb14610572578063dce144511461059b578063dd62ed3e146105d8576101c2565b8063a9059cbb116100c6578063a9059cbb146104de578063c3c8cd801461051b578063c9567bf914610532578063d0d41fe114610549576101c2565b80638da5cb5b1461045f578063906e9dd01461048a57806395d89b41146104b3576101c2565b8063313ce567116101595780635b16ebb7116101335780635b16ebb7146103a357806370a08231146103e0578063715018a61461041d5780638c0b5e2214610434576101c2565b8063313ce567146103265780634b0e7216146103515780635a99567e1461037a576101c2565b80630c9be46d116101955780630c9be46d1461026c57806318160ddd1461029557806323b872dd146102c05780632d4f40c6146102fd576101c2565b806306fdde03146101c7578063095ea7b3146101f25780630c3f64bf1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106bb565b6040516101e991906143eb565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190613f55565b6106f8565b60405161022691906143d0565b60405180910390f35b34801561023b57600080fd5b5061025660048036038101906102519190613e78565b610716565b60405161026391906143d0565b60405180910390f35b34801561027857600080fd5b50610293600480360381019061028e9190613e78565b610770565b005b3480156102a157600080fd5b506102aa61093d565b6040516102b791906145ad565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190613f06565b610947565b6040516102f491906143d0565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190613e78565b610a20565b005b34801561033257600080fd5b5061033b610b9d565b6040516103489190614622565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190613e78565b610ba6565b005b34801561038657600080fd5b506103a1600480360381019061039c9190613e78565b610d73565b005b3480156103af57600080fd5b506103ca60048036038101906103c59190613e78565b610eef565b6040516103d791906143d0565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190613e78565b610f49565b60405161041491906145ad565b60405180910390f35b34801561042957600080fd5b50610432610f9a565b005b34801561044057600080fd5b506104496110ed565b60405161045691906145ad565b60405180910390f35b34801561046b57600080fd5b5061047461111f565b6040516104819190614302565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac9190613e78565b611148565b005b3480156104bf57600080fd5b506104c8611315565b6040516104d591906143eb565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190613f55565b611352565b60405161051291906143d0565b60405180910390f35b34801561052757600080fd5b50610530611370565b005b34801561053e57600080fd5b506105476113cf565b005b34801561055557600080fd5b50610570600480360381019061056b9190613e78565b61149a565b005b34801561057e57600080fd5b5061059960048036038101906105949190613fba565b611667565b005b3480156105a757600080fd5b506105c260048036038101906105bd9190613e78565b61178e565b6040516105cf91906143d0565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190613eca565b6117e8565b60405161060c91906145ad565b60405180910390f35b34801561062157600080fd5b5061062a61186f565b005b34801561063857600080fd5b50610653600480360381019061064e9190613e78565b611d52565b60405161066091906143d0565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b9190613e78565b611dac565b005b34801561069e57600080fd5b506106b960048036038101906106b49190613e78565b611f79565b005b60606040518060400160405280600c81526020017f436f77626f792053686962610000000000000000000000000000000000000000815250905090565b600061070c61070561213b565b8484612143565b6001905092915050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61077861213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fc9061452d565b60405180910390fd5b600060066000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600754905090565b600061095484848461230e565b610a158461096061213b565b610a1085604051806060016040528060288152602001614c8760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c661213b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a499092919063ffffffff16565b612143565b600190509392505050565b610a2861213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac9061452d565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b399061450d565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610bae61213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c329061452d565b60405180910390fd5b600060066000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d7b61213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff9061452d565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b906144cd565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000610f93600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aad565b9050919050565b610fa261213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110269061452d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061111a6103e861110c601354600754612b1b90919063ffffffff16565b612b9690919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61115061213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d49061452d565b60405180910390fd5b600060066000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600681526020017f4342534849420000000000000000000000000000000000000000000000000000815250905090565b600061136661135f61213b565b848461230e565b6001905092915050565b61137861111f565b73ffffffffffffffffffffffffffffffffffffffff1661139661213b565b73ffffffffffffffffffffffffffffffffffffffff16146113b657600080fd5b60006113c130610f49565b90506113cc81612be0565b50565b6113d761213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b9061452d565b60405180910390fd5b601260159054906101000a900460ff1661147d57600080fd5b6001601260146101000a81548160ff021916908315150217905550565b6114a261213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115269061452d565b60405180910390fd5b600060066000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61166f61213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f39061452d565b60405180910390fd5b6000811161173f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611736906144ad565b60405180910390fd5b600a8161174c9190614719565b6013819055507f99595f7d7537e27b903b443c0377f3a393eb12be4cd03427d4cbee063053c23e60135460405161178391906145ad565b60405180910390a150565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61187761213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fb9061452d565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061198d30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600754612143565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b9190613ea1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6d57600080fd5b505afa158015611a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa59190613ea1565b6040518363ffffffff1660e01b8152600401611ac292919061431d565b602060405180830381600087803b158015611adc57600080fd5b505af1158015611af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b149190613ea1565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611b9d30610f49565b600080611ba861111f565b426040518863ffffffff1660e01b8152600401611bca9695949392919061436f565b6060604051808303818588803b158015611be357600080fd5b505af1158015611bf7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c1c9190613fe3565b5050506001601260176101000a81548160ff0219169083151502179055506001601260156101000a81548160ff0219169083151502179055506003601381905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611cfc929190614346565b602060405180830381600087803b158015611d1657600080fd5b505af1158015611d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4e9190613f91565b5050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b611db461213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e389061452d565b60405180910390fd5b600060066000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f8161213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461200e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120059061452d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561207e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120759061444d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa9061458d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221a9061446d565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161230191906145ad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561237e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123759061456d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e59061440d565b60405180910390fd5b60008111612431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124289061454d565b60405180910390fd5b61243961111f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124a7575061247761111f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561298657600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125505750600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61255957600080fd5b60006125866103e8612578601354600754612b1b90919063ffffffff16565b612b9690919063ffffffff16565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126335750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156126895750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561275057601260149054906101000a900460ff166126a757600080fd5b808211156126b457600080fd5b42600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106126ff57600080fd5b601e4261270c9190614692565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600061275b30610f49565b9050601260169054906101000a900460ff161580156127c85750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156127e05750601260179054906101000a900460ff165b15612983576128366064612828600261281a601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f49565b612b1b90919063ffffffff16565b612b9690919063ffffffff16565b83111561284257600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156128aa57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128b65750600081115b1561298257601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128fc61213b565b73ffffffffffffffffffffffffffffffffffffffff1614806129725750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661295a61213b565b73ffffffffffffffffffffffffffffffffffffffff16145b156129815761298081612be0565b5b5b5b50505b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a2d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a3757600090505b612a4384848484612eda565b50505050565b6000838311158290612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8891906143eb565b60405180910390fd5b5060008385612aa09190614773565b9050809150509392505050565b6000600854821115612af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aeb9061442d565b60405180910390fd5b6000612afe612f11565b9050612b138184612b9690919063ffffffff16565b915050919050565b600080831415612b2e5760009050612b90565b60008284612b3c9190614719565b9050828482612b4b91906146e8565b14612b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b82906144ed565b60405180910390fd5b809150505b92915050565b6000612bd883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f3c565b905092915050565b6001601260166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612c3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612c6c5781602001602082028036833780820191505090505b5090503081600081518110612caa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612d4c57600080fd5b505afa158015612d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d849190613ea1565b81600181518110612dbe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e2530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612143565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e899594939291906145c8565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050506000601260166101000a81548160ff02191690831515021790555050565b80612ee857612ee7612f9f565b5b612ef3848484612fba565b80612f0157612f00612f07565b5b50505050565b6003600a81905550565b6000806000612f1e613182565b91509150612f358183612b9690919063ffffffff16565b9250505090565b60008083118290612f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7a91906143eb565b60405180910390fd5b5060008385612f9291906146e8565b9050809150509392505050565b6000600a541415612faf57612fb8565b6000600a819055505b565b6000806000806000612fcb866131cf565b9450945094509450945061302785600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461322a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130bc84600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061310988826132d2565b6131138382613c80565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161317091906145ad565b60405180910390a35050505050505050565b60008060006008549050600060075490506131aa600754600854612b9690919063ffffffff16565b8210156131c2576008546007549350935050506131cb565b81819350935050505b9091565b60008060008060008060006131e688600a54613ce8565b9150915060006131f4612f11565b905060008060006132068c8686613d74565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b600061326c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a49565b905092915050565b60008082846132839190614692565b9050838110156132c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132bf9061448d565b60405180910390fd5b8091505092915050565b60006132dc612f11565b905060008214156132ed5750613c7c565b6000613303600384612b9690919063ffffffff16565b9050600061331a828561322a90919063ffffffff16565b905060006133318483612b1b90919063ffffffff16565b90506133a78260046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134808160036000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60036000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161356491906145ad565b60405180910390a3600061359384613585868961322a90919063ffffffff16565b61322a90919063ffffffff16565b905060006135aa8683612b1b90919063ffffffff16565b90506136208260046000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60046000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136f98160036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137dd91906145ad565b60405180910390a360006137fa8789612b1b90919063ffffffff16565b90506138708860046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139498160036000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60036000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051613a2d91906145ad565b60405180910390a36000829050613aae8460046000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60046000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b878160036000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60036000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613c6b91906145ad565b60405180910390a350505050505050505b5050565b613c958260085461322a90919063ffffffff16565b60088190555060008114613ce457613cdd613ccc613cbd600384612b9690919063ffffffff16565b8361322a90919063ffffffff16565b60095461327490919063ffffffff16565b6009819055505b5050565b6000806000831415613cff57838391509150613d6d565b6000613d276064613d198688612b1b90919063ffffffff16565b612b9690919063ffffffff16565b90506000613d6282613d5484613d46868b61322a90919063ffffffff16565b61322a90919063ffffffff16565b61322a90919063ffffffff16565b905080829350935050505b9250929050565b600080600080613d8d8588612b1b90919063ffffffff16565b90506000861415613da75780818793509350935050613e06565b6000613dbc8688612b1b90919063ffffffff16565b90506000613df782613de984613ddb868861322a90919063ffffffff16565b61322a90919063ffffffff16565b61322a90919063ffffffff16565b90508281839550955095505050505b93509350939050565b600081359050613e1e81614c41565b92915050565b600081519050613e3381614c41565b92915050565b600081519050613e4881614c58565b92915050565b600081359050613e5d81614c6f565b92915050565b600081519050613e7281614c6f565b92915050565b600060208284031215613e8a57600080fd5b6000613e9884828501613e0f565b91505092915050565b600060208284031215613eb357600080fd5b6000613ec184828501613e24565b91505092915050565b60008060408385031215613edd57600080fd5b6000613eeb85828601613e0f565b9250506020613efc85828601613e0f565b9150509250929050565b600080600060608486031215613f1b57600080fd5b6000613f2986828701613e0f565b9350506020613f3a86828701613e0f565b9250506040613f4b86828701613e4e565b9150509250925092565b60008060408385031215613f6857600080fd5b6000613f7685828601613e0f565b9250506020613f8785828601613e4e565b9150509250929050565b600060208284031215613fa357600080fd5b6000613fb184828501613e39565b91505092915050565b600060208284031215613fcc57600080fd5b6000613fda84828501613e4e565b91505092915050565b600080600060608486031215613ff857600080fd5b600061400686828701613e63565b935050602061401786828701613e63565b925050604061402886828701613e63565b9150509250925092565b600061403e838361404a565b60208301905092915050565b614053816147a7565b82525050565b614062816147a7565b82525050565b60006140738261464d565b61407d8185614670565b93506140888361463d565b8060005b838110156140b95781516140a08882614032565b97506140ab83614663565b92505060018101905061408c565b5085935050505092915050565b6140cf816147b9565b82525050565b6140de816147fc565b82525050565b60006140ef82614658565b6140f98185614681565b935061410981856020860161480e565b6141128161489f565b840191505092915050565b600061412a602383614681565b9150614135826148b0565b604082019050919050565b600061414d602a83614681565b9150614158826148ff565b604082019050919050565b6000614170602683614681565b915061417b8261494e565b604082019050919050565b6000614193602283614681565b915061419e8261499d565b604082019050919050565b60006141b6601b83614681565b91506141c1826149ec565b602082019050919050565b60006141d9601d83614681565b91506141e482614a15565b602082019050919050565b60006141fc602283614681565b915061420782614a3e565b604082019050919050565b600061421f602183614681565b915061422a82614a8d565b604082019050919050565b6000614242602683614681565b915061424d82614adc565b604082019050919050565b6000614265602083614681565b915061427082614b2b565b602082019050919050565b6000614288602983614681565b915061429382614b54565b604082019050919050565b60006142ab602583614681565b91506142b682614ba3565b604082019050919050565b60006142ce602483614681565b91506142d982614bf2565b604082019050919050565b6142ed816147e5565b82525050565b6142fc816147ef565b82525050565b60006020820190506143176000830184614059565b92915050565b60006040820190506143326000830185614059565b61433f6020830184614059565b9392505050565b600060408201905061435b6000830185614059565b61436860208301846142e4565b9392505050565b600060c0820190506143846000830189614059565b61439160208301886142e4565b61439e60408301876140d5565b6143ab60608301866140d5565b6143b86080830185614059565b6143c560a08301846142e4565b979650505050505050565b60006020820190506143e560008301846140c6565b92915050565b6000602082019050818103600083015261440581846140e4565b905092915050565b600060208201905081810360008301526144268161411d565b9050919050565b6000602082019050818103600083015261444681614140565b9050919050565b6000602082019050818103600083015261446681614163565b9050919050565b6000602082019050818103600083015261448681614186565b9050919050565b600060208201905081810360008301526144a6816141a9565b9050919050565b600060208201905081810360008301526144c6816141cc565b9050919050565b600060208201905081810360008301526144e6816141ef565b9050919050565b6000602082019050818103600083015261450681614212565b9050919050565b6000602082019050818103600083015261452681614235565b9050919050565b6000602082019050818103600083015261454681614258565b9050919050565b600060208201905081810360008301526145668161427b565b9050919050565b600060208201905081810360008301526145868161429e565b9050919050565b600060208201905081810360008301526145a6816142c1565b9050919050565b60006020820190506145c260008301846142e4565b92915050565b600060a0820190506145dd60008301886142e4565b6145ea60208301876140d5565b81810360408301526145fc8186614068565b905061460b6060830185614059565b61461860808301846142e4565b9695505050505050565b600060208201905061463760008301846142f3565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061469d826147e5565b91506146a8836147e5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146dd576146dc614841565b5b828201905092915050565b60006146f3826147e5565b91506146fe836147e5565b92508261470e5761470d614870565b5b828204905092915050565b6000614724826147e5565b915061472f836147e5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561476857614767614841565b5b828202905092915050565b600061477e826147e5565b9150614789836147e5565b92508282101561479c5761479b614841565b5b828203905092915050565b60006147b2826147c5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614807826147e5565b9050919050565b60005b8381101561482c578082015181840152602081019050614811565b8381111561483b576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f4163636f756e74206973206e6f74206964656e7469666965642061732061206260008201527f6f74000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206964656e74696669656420617360008201527f206120626f740000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614c4a816147a7565b8114614c5557600080fd5b50565b614c61816147b9565b8114614c6c57600080fd5b50565b614c78816147e5565b8114614c8357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122003ac0f3f9a179f31fb5a75e35397285d20fd7c2b8af1c1eeed04dec0fb1cc6e664736f6c63430008040033
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063d543dbeb1161008a578063e8078d9411610064578063e8078d9414610615578063e81ffbef1461062c578063e9e15b4f14610669578063f2fde38b14610692576101c2565b8063d543dbeb14610572578063dce144511461059b578063dd62ed3e146105d8576101c2565b8063a9059cbb116100c6578063a9059cbb146104de578063c3c8cd801461051b578063c9567bf914610532578063d0d41fe114610549576101c2565b80638da5cb5b1461045f578063906e9dd01461048a57806395d89b41146104b3576101c2565b8063313ce567116101595780635b16ebb7116101335780635b16ebb7146103a357806370a08231146103e0578063715018a61461041d5780638c0b5e2214610434576101c2565b8063313ce567146103265780634b0e7216146103515780635a99567e1461037a576101c2565b80630c9be46d116101955780630c9be46d1461026c57806318160ddd1461029557806323b872dd146102c05780632d4f40c6146102fd576101c2565b806306fdde03146101c7578063095ea7b3146101f25780630c3f64bf1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106bb565b6040516101e991906143eb565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190613f55565b6106f8565b60405161022691906143d0565b60405180910390f35b34801561023b57600080fd5b5061025660048036038101906102519190613e78565b610716565b60405161026391906143d0565b60405180910390f35b34801561027857600080fd5b50610293600480360381019061028e9190613e78565b610770565b005b3480156102a157600080fd5b506102aa61093d565b6040516102b791906145ad565b60405180910390f35b3480156102cc57600080fd5b506102e760048036038101906102e29190613f06565b610947565b6040516102f491906143d0565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190613e78565b610a20565b005b34801561033257600080fd5b5061033b610b9d565b6040516103489190614622565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190613e78565b610ba6565b005b34801561038657600080fd5b506103a1600480360381019061039c9190613e78565b610d73565b005b3480156103af57600080fd5b506103ca60048036038101906103c59190613e78565b610eef565b6040516103d791906143d0565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190613e78565b610f49565b60405161041491906145ad565b60405180910390f35b34801561042957600080fd5b50610432610f9a565b005b34801561044057600080fd5b506104496110ed565b60405161045691906145ad565b60405180910390f35b34801561046b57600080fd5b5061047461111f565b6040516104819190614302565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac9190613e78565b611148565b005b3480156104bf57600080fd5b506104c8611315565b6040516104d591906143eb565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190613f55565b611352565b60405161051291906143d0565b60405180910390f35b34801561052757600080fd5b50610530611370565b005b34801561053e57600080fd5b506105476113cf565b005b34801561055557600080fd5b50610570600480360381019061056b9190613e78565b61149a565b005b34801561057e57600080fd5b5061059960048036038101906105949190613fba565b611667565b005b3480156105a757600080fd5b506105c260048036038101906105bd9190613e78565b61178e565b6040516105cf91906143d0565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190613eca565b6117e8565b60405161060c91906145ad565b60405180910390f35b34801561062157600080fd5b5061062a61186f565b005b34801561063857600080fd5b50610653600480360381019061064e9190613e78565b611d52565b60405161066091906143d0565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b9190613e78565b611dac565b005b34801561069e57600080fd5b506106b960048036038101906106b49190613e78565b611f79565b005b60606040518060400160405280600c81526020017f436f77626f792053686962610000000000000000000000000000000000000000815250905090565b600061070c61070561213b565b8484612143565b6001905092915050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61077861213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fc9061452d565b60405180910390fd5b600060066000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600754905090565b600061095484848461230e565b610a158461096061213b565b610a1085604051806060016040528060288152602001614c8760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c661213b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a499092919063ffffffff16565b612143565b600190509392505050565b610a2861213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aac9061452d565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b399061450d565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610bae61213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c329061452d565b60405180910390fd5b600060066000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d7b61213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff9061452d565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b906144cd565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000610f93600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aad565b9050919050565b610fa261213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110269061452d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061111a6103e861110c601354600754612b1b90919063ffffffff16565b612b9690919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61115061213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d49061452d565b60405180910390fd5b600060066000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600681526020017f4342534849420000000000000000000000000000000000000000000000000000815250905090565b600061136661135f61213b565b848461230e565b6001905092915050565b61137861111f565b73ffffffffffffffffffffffffffffffffffffffff1661139661213b565b73ffffffffffffffffffffffffffffffffffffffff16146113b657600080fd5b60006113c130610f49565b90506113cc81612be0565b50565b6113d761213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b9061452d565b60405180910390fd5b601260159054906101000a900460ff1661147d57600080fd5b6001601260146101000a81548160ff021916908315150217905550565b6114a261213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115269061452d565b60405180910390fd5b600060066000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61166f61213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f39061452d565b60405180910390fd5b6000811161173f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611736906144ad565b60405180910390fd5b600a8161174c9190614719565b6013819055507f99595f7d7537e27b903b443c0377f3a393eb12be4cd03427d4cbee063053c23e60135460405161178391906145ad565b60405180910390a150565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61187761213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fb9061452d565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061198d30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600754612143565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b9190613ea1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6d57600080fd5b505afa158015611a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa59190613ea1565b6040518363ffffffff1660e01b8152600401611ac292919061431d565b602060405180830381600087803b158015611adc57600080fd5b505af1158015611af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b149190613ea1565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611b9d30610f49565b600080611ba861111f565b426040518863ffffffff1660e01b8152600401611bca9695949392919061436f565b6060604051808303818588803b158015611be357600080fd5b505af1158015611bf7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c1c9190613fe3565b5050506001601260176101000a81548160ff0219169083151502179055506001601260156101000a81548160ff0219169083151502179055506003601381905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611cfc929190614346565b602060405180830381600087803b158015611d1657600080fd5b505af1158015611d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4e9190613f91565b5050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b611db461213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e389061452d565b60405180910390fd5b600060066000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f8161213b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461200e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120059061452d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561207e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120759061444d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa9061458d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221a9061446d565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161230191906145ad565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561237e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123759061456d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e59061440d565b60405180910390fd5b60008111612431576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124289061454d565b60405180910390fd5b61243961111f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124a7575061247761111f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561298657600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125505750600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61255957600080fd5b60006125866103e8612578601354600754612b1b90919063ffffffff16565b612b9690919063ffffffff16565b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156126335750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156126895750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561275057601260149054906101000a900460ff166126a757600080fd5b808211156126b457600080fd5b42600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106126ff57600080fd5b601e4261270c9190614692565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600061275b30610f49565b9050601260169054906101000a900460ff161580156127c85750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156127e05750601260179054906101000a900460ff165b15612983576128366064612828600261281a601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f49565b612b1b90919063ffffffff16565b612b9690919063ffffffff16565b83111561284257600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156128aa57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128b65750600081115b1561298257601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128fc61213b565b73ffffffffffffffffffffffffffffffffffffffff1614806129725750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661295a61213b565b73ffffffffffffffffffffffffffffffffffffffff16145b156129815761298081612be0565b5b5b5b50505b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a2d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a3757600090505b612a4384848484612eda565b50505050565b6000838311158290612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8891906143eb565b60405180910390fd5b5060008385612aa09190614773565b9050809150509392505050565b6000600854821115612af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aeb9061442d565b60405180910390fd5b6000612afe612f11565b9050612b138184612b9690919063ffffffff16565b915050919050565b600080831415612b2e5760009050612b90565b60008284612b3c9190614719565b9050828482612b4b91906146e8565b14612b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b82906144ed565b60405180910390fd5b809150505b92915050565b6000612bd883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f3c565b905092915050565b6001601260166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612c3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612c6c5781602001602082028036833780820191505090505b5090503081600081518110612caa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612d4c57600080fd5b505afa158015612d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d849190613ea1565b81600181518110612dbe577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e2530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612143565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e899594939291906145c8565b600060405180830381600087803b158015612ea357600080fd5b505af1158015612eb7573d6000803e3d6000fd5b50505050506000601260166101000a81548160ff02191690831515021790555050565b80612ee857612ee7612f9f565b5b612ef3848484612fba565b80612f0157612f00612f07565b5b50505050565b6003600a81905550565b6000806000612f1e613182565b91509150612f358183612b9690919063ffffffff16565b9250505090565b60008083118290612f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7a91906143eb565b60405180910390fd5b5060008385612f9291906146e8565b9050809150509392505050565b6000600a541415612faf57612fb8565b6000600a819055505b565b6000806000806000612fcb866131cf565b9450945094509450945061302785600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461322a90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130bc84600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061310988826132d2565b6131138382613c80565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161317091906145ad565b60405180910390a35050505050505050565b60008060006008549050600060075490506131aa600754600854612b9690919063ffffffff16565b8210156131c2576008546007549350935050506131cb565b81819350935050505b9091565b60008060008060008060006131e688600a54613ce8565b9150915060006131f4612f11565b905060008060006132068c8686613d74565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b600061326c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a49565b905092915050565b60008082846132839190614692565b9050838110156132c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132bf9061448d565b60405180910390fd5b8091505092915050565b60006132dc612f11565b905060008214156132ed5750613c7c565b6000613303600384612b9690919063ffffffff16565b9050600061331a828561322a90919063ffffffff16565b905060006133318483612b1b90919063ffffffff16565b90506133a78260046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134808160036000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60036000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161356491906145ad565b60405180910390a3600061359384613585868961322a90919063ffffffff16565b61322a90919063ffffffff16565b905060006135aa8683612b1b90919063ffffffff16565b90506136208260046000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60046000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136f98160036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60036000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137dd91906145ad565b60405180910390a360006137fa8789612b1b90919063ffffffff16565b90506138708860046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60046000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139498160036000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60036000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051613a2d91906145ad565b60405180910390a36000829050613aae8460046000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60046000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b878160036000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461327490919063ffffffff16565b60036000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613c6b91906145ad565b60405180910390a350505050505050505b5050565b613c958260085461322a90919063ffffffff16565b60088190555060008114613ce457613cdd613ccc613cbd600384612b9690919063ffffffff16565b8361322a90919063ffffffff16565b60095461327490919063ffffffff16565b6009819055505b5050565b6000806000831415613cff57838391509150613d6d565b6000613d276064613d198688612b1b90919063ffffffff16565b612b9690919063ffffffff16565b90506000613d6282613d5484613d46868b61322a90919063ffffffff16565b61322a90919063ffffffff16565b61322a90919063ffffffff16565b905080829350935050505b9250929050565b600080600080613d8d8588612b1b90919063ffffffff16565b90506000861415613da75780818793509350935050613e06565b6000613dbc8688612b1b90919063ffffffff16565b90506000613df782613de984613ddb868861322a90919063ffffffff16565b61322a90919063ffffffff16565b61322a90919063ffffffff16565b90508281839550955095505050505b93509350939050565b600081359050613e1e81614c41565b92915050565b600081519050613e3381614c41565b92915050565b600081519050613e4881614c58565b92915050565b600081359050613e5d81614c6f565b92915050565b600081519050613e7281614c6f565b92915050565b600060208284031215613e8a57600080fd5b6000613e9884828501613e0f565b91505092915050565b600060208284031215613eb357600080fd5b6000613ec184828501613e24565b91505092915050565b60008060408385031215613edd57600080fd5b6000613eeb85828601613e0f565b9250506020613efc85828601613e0f565b9150509250929050565b600080600060608486031215613f1b57600080fd5b6000613f2986828701613e0f565b9350506020613f3a86828701613e0f565b9250506040613f4b86828701613e4e565b9150509250925092565b60008060408385031215613f6857600080fd5b6000613f7685828601613e0f565b9250506020613f8785828601613e4e565b9150509250929050565b600060208284031215613fa357600080fd5b6000613fb184828501613e39565b91505092915050565b600060208284031215613fcc57600080fd5b6000613fda84828501613e4e565b91505092915050565b600080600060608486031215613ff857600080fd5b600061400686828701613e63565b935050602061401786828701613e63565b925050604061402886828701613e63565b9150509250925092565b600061403e838361404a565b60208301905092915050565b614053816147a7565b82525050565b614062816147a7565b82525050565b60006140738261464d565b61407d8185614670565b93506140888361463d565b8060005b838110156140b95781516140a08882614032565b97506140ab83614663565b92505060018101905061408c565b5085935050505092915050565b6140cf816147b9565b82525050565b6140de816147fc565b82525050565b60006140ef82614658565b6140f98185614681565b935061410981856020860161480e565b6141128161489f565b840191505092915050565b600061412a602383614681565b9150614135826148b0565b604082019050919050565b600061414d602a83614681565b9150614158826148ff565b604082019050919050565b6000614170602683614681565b915061417b8261494e565b604082019050919050565b6000614193602283614681565b915061419e8261499d565b604082019050919050565b60006141b6601b83614681565b91506141c1826149ec565b602082019050919050565b60006141d9601d83614681565b91506141e482614a15565b602082019050919050565b60006141fc602283614681565b915061420782614a3e565b604082019050919050565b600061421f602183614681565b915061422a82614a8d565b604082019050919050565b6000614242602683614681565b915061424d82614adc565b604082019050919050565b6000614265602083614681565b915061427082614b2b565b602082019050919050565b6000614288602983614681565b915061429382614b54565b604082019050919050565b60006142ab602583614681565b91506142b682614ba3565b604082019050919050565b60006142ce602483614681565b91506142d982614bf2565b604082019050919050565b6142ed816147e5565b82525050565b6142fc816147ef565b82525050565b60006020820190506143176000830184614059565b92915050565b60006040820190506143326000830185614059565b61433f6020830184614059565b9392505050565b600060408201905061435b6000830185614059565b61436860208301846142e4565b9392505050565b600060c0820190506143846000830189614059565b61439160208301886142e4565b61439e60408301876140d5565b6143ab60608301866140d5565b6143b86080830185614059565b6143c560a08301846142e4565b979650505050505050565b60006020820190506143e560008301846140c6565b92915050565b6000602082019050818103600083015261440581846140e4565b905092915050565b600060208201905081810360008301526144268161411d565b9050919050565b6000602082019050818103600083015261444681614140565b9050919050565b6000602082019050818103600083015261446681614163565b9050919050565b6000602082019050818103600083015261448681614186565b9050919050565b600060208201905081810360008301526144a6816141a9565b9050919050565b600060208201905081810360008301526144c6816141cc565b9050919050565b600060208201905081810360008301526144e6816141ef565b9050919050565b6000602082019050818103600083015261450681614212565b9050919050565b6000602082019050818103600083015261452681614235565b9050919050565b6000602082019050818103600083015261454681614258565b9050919050565b600060208201905081810360008301526145668161427b565b9050919050565b600060208201905081810360008301526145868161429e565b9050919050565b600060208201905081810360008301526145a6816142c1565b9050919050565b60006020820190506145c260008301846142e4565b92915050565b600060a0820190506145dd60008301886142e4565b6145ea60208301876140d5565b81810360408301526145fc8186614068565b905061460b6060830185614059565b61461860808301846142e4565b9695505050505050565b600060208201905061463760008301846142f3565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061469d826147e5565b91506146a8836147e5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146dd576146dc614841565b5b828201905092915050565b60006146f3826147e5565b91506146fe836147e5565b92508261470e5761470d614870565b5b828204905092915050565b6000614724826147e5565b915061472f836147e5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561476857614767614841565b5b828202905092915050565b600061477e826147e5565b9150614789836147e5565b92508282101561479c5761479b614841565b5b828203905092915050565b60006147b2826147c5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614807826147e5565b9050919050565b60005b8381101561482c578082015181840152602081019050614811565b8381111561483b576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f4163636f756e74206973206e6f74206964656e7469666965642061732061206260008201527f6f74000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206964656e74696669656420617360008201527f206120626f740000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b614c4a816147a7565b8114614c5557600080fd5b50565b614c61816147b9565b8114614c6c57600080fd5b50565b614c78816147e5565b8114614c8357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122003ac0f3f9a179f31fb5a75e35397285d20fd7c2b8af1c1eeed04dec0fb1cc6e664736f6c63430008040033
Deployed Bytecode Sourcemap
4337:13723:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6088:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6940:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10596:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11323:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6365:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7109:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10951:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6274:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11559:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11133:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10830:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6468:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3390:148;;;;;;;;;;;;;:::i;:::-;;10348:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2920:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11997:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6179:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6614:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13185:187;;;;;;;;;;;;;:::i;:::-;;10225:111;;;;;;;;;;;;;:::i;:::-;;11781:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17830:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10471:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6789:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12467:710;;;;;;;;;;;;;:::i;:::-;;10709:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12249:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3138:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6088:83;6125:13;6158:5;;;;;;;;;;;;;;;;;6151:12;;6088:83;:::o;6940:161::-;7015:4;7032:39;7041:12;:10;:12::i;:::-;7055:7;7064:6;7032:8;:39::i;:::-;7089:4;7082:11;;6940:161;;;;:::o;10596:107::-;10649:4;10684:11;;;;;;;;;;;10673:22;;:7;:22;;;10666:29;;10596:107;;;:::o;11323:228::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11442:5:::1;11404:18;:35;11423:15;;;;;;;;;;;11404:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;11476:14;11458:15;;:32;;;;;;;;;;;;;;;;;;11539:4;11501:18;:35;11520:15;;;;;;;;;;;11501:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;11323:228:::0;:::o;6365:95::-;6418:7;6445;;6438:14;;6365:95;:::o;7109:310::-;7207:4;7224:36;7234:6;7242:9;7253:6;7224:9;:36::i;:::-;7271:118;7280:6;7287:12;:10;:12::i;:::-;7300:88;7338:6;7300:88;;;;;;;;;;;;;;;;;:11;:19;7312:6;7300:19;;;;;;;;;;;;;;;:33;7320:12;:10;:12::i;:::-;7300:33;;;;;;;;;;;;;;;;:37;;:88;;;;;:::i;:::-;7271:8;:118::i;:::-;7407:4;7400:11;;7109:310;;;;;:::o;10951:176::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11032:4:::1;:13;11037:7;11032:13;;;;;;;;;;;;;;;;;;;;;;;;;11031:14;11023:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11115:4;11099;:13;11104:7;11099:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;10951:176:::0;:::o;6274:83::-;6315:5;4563:1;6333:16;;6274:83;:::o;11559:210::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11669:5:::1;11634:18;:32;11653:12;;;;;;;;;;;11634:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;11700:11;11685:12;;:26;;;;;;;;;;;;;;;;;;11757:4;11722:18;:32;11741:12;;;;;;;;;;;11722:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11559:210:::0;:::o;11133:178::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11219:4:::1;:13;11224:7;11219:13;;;;;;;;;;;;;;;;;;;;;;;;;11211:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11298:5;11282:4;:13;11287:7;11282:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11133:178:::0;:::o;10830:109::-;10884:4;10919:12;;;;;;;;;;;10908:23;;:7;:23;;;10901:30;;10830:109;;;:::o;6468:138::-;6534:7;6561:37;6581:7;:16;6589:7;6581:16;;;;;;;;;;;;;;;;6561:19;:37::i;:::-;6554:44;;6468:138;;;:::o;3390:148::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3497:1:::1;3460:40;;3481:6;::::0;::::1;;;;;;;;3460:40;;;;;;;;;;;;3528:1;3511:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3390:148::o:0;10348:111::-;10392:7;10418:33;10445:5;10418:22;10430:9;;10418:7;;:11;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;10411:40;;10348:111;:::o;2920:79::-;2958:7;2985:6;;;;;;;;;;;2978:13;;2920:79;:::o;11997:240::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12122:5:::1;12082:18;:37;12101:17;;;;;;;;;;;12082:37;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;12158:16;12138:17;;:36;;;;;;;;;;;;;;;;;;12225:4;12185:18;:37;12204:17;;;;;;;;;;;12185:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;11997:240:::0;:::o;6179:87::-;6218:13;6251:7;;;;;;;;;;;;;;;;;6244:14;;6179:87;:::o;6614:167::-;6692:4;6709:42;6719:12;:10;:12::i;:::-;6733:9;6744:6;6709:9;:42::i;:::-;6769:4;6762:11;;6614:167;;;;:::o;13185:187::-;13251:7;:5;:7::i;:::-;13235:23;;:12;:10;:12::i;:::-;:23;;;13227:32;;;;;;13270:23;13296:24;13314:4;13296:9;:24::i;:::-;13270:50;;13331:33;13348:15;13331:16;:33::i;:::-;13185:187;:::o;10225:111::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10284:14:::1;;;;;;;;;;;10276:23;;;::::0;::::1;;10324:4;10310:11;;:18;;;;;;;;;;;;;;;;;;10225:111::o:0;11781:204::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11888:5:::1;11854:18;:31;11873:11;;;;;;;;;;;11854:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11918:10;11904:11;;:24;;;;;;;;;;;;;;;;;;11973:4;11939:18;:31;11958:11;;;;;;;;;;;11939:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;11781:204:::0;:::o;17830:227::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17932:1:::1;17917:12;:16;17909:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;18005:2;17990:12;:17;;;;:::i;:::-;17978:9;:29;;;;18023:26;18039:9;;18023:26;;;;;;:::i;:::-;;;;;;;;17830:227:::0;:::o;10471:119::-;10530:4;10565:17;;;;;;;;;;;10554:28;;:7;:28;;;10547:35;;10471:119;;;:::o;6789:143::-;6870:7;6897:11;:18;6909:5;6897:18;;;;;;;;;;;;;;;:27;6916:7;6897:27;;;;;;;;;;;;;;;;6890:34;;6789:143;;;;:::o;12467:710::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12523:35:::1;12580:42;12523:100;;12652:16;12634:15;;:34;;;;;;;;;;;;;;;;;;12679:58;12696:4;12711:15;;;;;;;;;;;12729:7;;12679:8;:58::i;:::-;12782:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12764:56;;;12829:4;12836:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12764:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12748:13;;:112;;;;;;;;;;;;;;;;;;12871:15;;;;;;;;;;;:31;;;12910:21;12941:4;12947:24;12965:4;12947:9;:24::i;:::-;12972:1;12974::::0;12976:7:::1;:5;:7::i;:::-;12984:15;12871:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13025:4;13011:11;;:18;;;;;;;;;;;;;;;;;;13057:4;13040:14;;:21;;;;;;;;;;;;;;;;;;13084:1;13072:9;:13;;;;13103;;;;;;;;;;;13096:29;;;13134:15;;;;;;;;;;;13151:17;13096:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3117:1;12467:710::o:0;10709:115::-;10766:4;10801:15;;;;;;;;;;;10790:26;;:7;:26;;;10783:33;;10709:115;;;:::o;12249:210::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12359:5:::1;12324:18;:32;12343:12;;;;;;;;;;;12324:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;12390:11;12375:12;;:26;;;;;;;;;;;;;;;;;;12447:4;12412:18;:32;12431:12;;;;;;;;;;;12412:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12249:210:::0;:::o;3138:244::-;3057:12;:10;:12::i;:::-;3047:22;;:6;;;;;;;;;;:22;;;3039:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3247:1:::1;3227:22;;:8;:22;;;;3219:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3337:8;3308:38;;3329:6;::::0;::::1;;;;;;;;3308:38;;;;;;;;;;;;3366:8;3357:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3138:244:::0;:::o;641:98::-;694:7;721:10;714:17;;641:98;:::o;7880:335::-;7990:1;7973:19;;:5;:19;;;;7965:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8071:1;8052:21;;:7;:21;;;;8044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8153:6;8123:11;:18;8135:5;8123:18;;;;;;;;;;;;;;;:27;8142:7;8123:27;;;;;;;;;;;;;;;:36;;;;8191:7;8175:32;;8184:5;8175:32;;;8200:6;8175:32;;;;;;:::i;:::-;;;;;;;;7880:335;;;:::o;8223:1575::-;8327:1;8311:18;;:4;:18;;;;8303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8404:1;8390:16;;:2;:16;;;;8382:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8474:1;8465:6;:10;8457:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8546:7;:5;:7::i;:::-;8538:15;;:4;:15;;;;:32;;;;;8563:7;:5;:7::i;:::-;8557:13;;:2;:13;;;;8538:32;8534:1039;;;8596:4;:10;8601:4;8596:10;;;;;;;;;;;;;;;;;;;;;;;;;8595:11;:24;;;;;8611:4;:8;8616:2;8611:8;;;;;;;;;;;;;;;;;;;;;;;;;8610:9;8595:24;8587:33;;;;;;8635:19;8657:33;8684:5;8657:22;8669:9;;8657:7;;:11;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;8635:55;;8717:13;;;;;;;;;;;8709:21;;:4;:21;;;:55;;;;;8748:15;;;;;;;;;;;8734:30;;:2;:30;;;;8709:55;:82;;;;;8769:18;:22;8788:2;8769:22;;;;;;;;;;;;;;;;;;;;;;;;;8768:23;8709:82;8705:320;;;8820:11;;;;;;;;;;;8812:20;;;;;;8869:11;8859:6;:21;;8851:30;;;;;;8926:15;8908:11;:15;8920:2;8908:15;;;;;;;;;;;;;;;;:33;8900:42;;;;;;8998:10;8979:15;:30;;;;:::i;:::-;8961:11;:15;8973:2;8961:15;;;;;;;;;;;;;;;:48;;;;8705:320;9039:28;9070:24;9088:4;9070:9;:24::i;:::-;9039:55;;9114:6;;;;;;;;;;;9113:7;:32;;;;;9132:13;;;;;;;;;;;9124:21;;:4;:21;;;;9113:32;:47;;;;;9149:11;;;;;;;;;;;9113:47;9109:453;;;9199:40;9235:3;9199:31;9228:1;9199:24;9209:13;;;;;;;;;;;9199:9;:24::i;:::-;:28;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;9189:6;:50;;9181:59;;;;;;9279:4;9263:21;;:4;:21;;;;:44;;;;;9302:4;9288:19;;:2;:19;;;;9263:44;:72;;;;;9334:1;9311:20;:24;9263:72;9259:288;;;9388:15;;;;;;;;;;;9364:40;;:12;:10;:12::i;:::-;:40;;;:73;;;;9424:13;;;;;;;;;;;9408:29;;:12;:10;:12::i;:::-;:29;;;9364:73;9360:168;;;9466:38;9483:20;9466:16;:38::i;:::-;9360:168;9259:288;9109:453;8534:1039;;;9583:12;9598:4;9583:19;;9619:18;:24;9638:4;9619:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;9647:18;:22;9666:2;9647:22;;;;;;;;;;;;;;;;;;;;;;;;;9619:50;9615:98;;;9696:5;9686:15;;9615:98;9725:41;9740:4;9746:2;9750:6;9758:7;9725:14;:41::i;:::-;8223:1575;;;;:::o;1778:190::-;1864:7;1897:1;1892;:6;;1900:12;1884:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1924:9;1940:1;1936;:5;;;;:::i;:::-;1924:17;;1959:1;1952:8;;;1778:190;;;;;:::o;7427:253::-;7495:7;7534;;7523;:18;;7515:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7598:19;7620:10;:8;:10::i;:::-;7598:32;;7648:24;7660:11;7648:7;:11;;:24;;;;:::i;:::-;7641:31;;;7427:253;;;:::o;1976:246::-;2034:7;2063:1;2058;:6;2054:47;;;2088:1;2081:8;;;;2054:47;2111:9;2127:1;2123;:5;;;;:::i;:::-;2111:17;;2156:1;2151;2147;:5;;;;:::i;:::-;:10;2139:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2213:1;2206:8;;;1976:246;;;;;:::o;2230:132::-;2288:7;2315:39;2319:1;2322;2315:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2308:46;;2230:132;;;;:::o;9806:407::-;5799:4;5790:6;;:13;;;;;;;;;;;;;;;;;;9884:21:::1;9922:1;9908:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9884:40;;9953:4;9935;9940:1;9935:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;9979:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9969:4;9974:1;9969:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;10012:62;10029:4;10044:15;;;;;;;;;;;10062:11;10012:8;:62::i;:::-;10085:15;;;;;;;;;;;:66;;;10152:11;10165:1;10168:4;10182;10189:15;10085:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5814:1;5835:5:::0;5826:6;;:14;;;;;;;;;;;;;;;;;;9806:407;:::o;13380:239::-;13493:7;13488:28;;13502:14;:12;:14::i;:::-;13488:28;13527:44;13545:6;13553:9;13564:6;13527:17;:44::i;:::-;13587:7;13582:29;;13596:15;:13;:15::i;:::-;13582:29;13380:239;;;;:::o;7805:67::-;7863:1;7849:11;:15;;;;7805:67::o;17393:164::-;17435:7;17456:15;17473;17492:19;:17;:19::i;:::-;17455:56;;;;17529:20;17541:7;17529;:11;;:20;;;;:::i;:::-;17522:27;;;;17393:164;:::o;2370:189::-;2456:7;2488:1;2484;:5;2491:12;2476:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2515:9;2531:1;2527;:5;;;;:::i;:::-;2515:17;;2550:1;2543:8;;;2370:189;;;;;:::o;7692:105::-;7754:1;7739:11;;:16;7735:29;;;7757:7;;7735:29;7788:1;7774:11;:15;;;;7692:105;:::o;13627:495::-;13726:15;13743:23;13768:12;13782:23;13807:16;13827:19;13838:7;13827:10;:19::i;:::-;13725:121;;;;;;;;;;13875:28;13895:7;13875;:15;13883:6;13875:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13857:7;:15;13865:6;13857:15;;;;;;;;;;;;;;;:46;;;;13935:39;13958:15;13935:7;:18;13943:9;13935:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13914:7;:18;13922:9;13914:18;;;;;;;;;;;;;;;:60;;;;13985:31;13999:6;14007:8;13985:13;:31::i;:::-;14027:27;14039:4;14045:8;14027:11;:27::i;:::-;14087:9;14070:44;;14079:6;14070:44;;;14098:15;14070:44;;;;;;:::i;:::-;;;;;;;;13627:495;;;;;;;;:::o;17565:257::-;17616:7;17625;17645:15;17663:7;;17645:25;;17681:15;17699:7;;17681:25;;17731:20;17743:7;;17731;;:11;;:20;;;;:::i;:::-;17721:7;:30;17717:61;;;17761:7;;17770;;17753:25;;;;;;;;17717:61;17797:7;17806;17789:25;;;;;;17565:257;;;:::o;15907:443::-;15966:7;15975;15984;15993;16002;16023:23;16048:16;16068:33;16080:7;16089:11;;16068;:33::i;:::-;16022:79;;;;16112:19;16134:10;:8;:10::i;:::-;16112:32;;16156:15;16173:23;16198:16;16218:43;16230:7;16239:8;16249:11;16218;:43::i;:::-;16155:106;;;;;;16280:7;16289:15;16306:8;16316:15;16333:8;16272:70;;;;;;;;;;;;;;;;15907:443;;;;;;;:::o;1634:136::-;1692:7;1719:43;1723:1;1726;1719:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1712:50;;1634:136;;;;:::o;1447:179::-;1505:7;1525:9;1541:1;1537;:5;;;;:::i;:::-;1525:17;;1566:1;1561;:6;;1553:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1617:1;1610:8;;;1447:179;;;;:::o;14130:1502::-;14206:19;14228:10;:8;:10::i;:::-;14206:32;;14275:1;14263:8;:13;14259:26;;;14278:7;;;14259:26;14309:24;14336:15;14349:1;14336:8;:12;;:15;;;;:::i;:::-;14309:42;;14372:18;14393:30;14406:16;14393:8;:12;;:30;;;;:::i;:::-;14372:51;;14434:18;14455:27;14470:11;14455:10;:14;;:27;;;;:::i;:::-;14434:48;;14522:42;14553:10;14522:7;:26;14530:17;;;;;;;;;;;14522:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;14493:7;:26;14501:17;;;;;;;;;;;14493:26;;;;;;;;;;;;;;;:71;;;;14604:42;14635:10;14604:7;:26;14612:17;;;;;;;;;;;14604:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;14575:7;:26;14583:17;;;;;;;;;;;14575:26;;;;;;;;;;;;;;;:71;;;;14679:17;;;;;;;;;;;14662:47;;14671:6;14662:47;;;14698:10;14662:47;;;;;;:::i;:::-;;;;;;;;14730:16;14749:52;14784:16;14749:30;14762:16;14749:8;:12;;:30;;;;:::i;:::-;:34;;:52;;;;:::i;:::-;14730:71;;14812:16;14831:25;14844:11;14831:8;:12;;:25;;;;:::i;:::-;14812:44;;14894:38;14923:8;14894:7;:24;14902:15;;;;;;;;;;;14894:24;;;;;;;;;;;;;;;;:28;;:38;;;;:::i;:::-;14867:7;:24;14875:15;;;;;;;;;;;14867:24;;;;;;;;;;;;;;;:65;;;;14970:38;14999:8;14970:7;:24;14978:15;;;;;;;;;;;14970:24;;;;;;;;;;;;;;;;:28;;:38;;;;:::i;:::-;14943:7;:24;14951:15;;;;;;;;;;;14943:24;;;;;;;;;;;;;;;:65;;;;15041:15;;;;;;;;;;;15024:43;;15033:6;15024:43;;;15058:8;15024:43;;;;;;:::i;:::-;;;;;;;;15088:13;15104:25;15117:11;15104:8;:12;;:25;;;;:::i;:::-;15088:41;;15191:35;15217:8;15191:7;:21;15199:12;;;;;;;;;;;15191:21;;;;;;;;;;;;;;;;:25;;:35;;;;:::i;:::-;15167:7;:21;15175:12;;;;;;;;;;;15167:21;;;;;;;;;;;;;;;:59;;;;15261:32;15287:5;15261:7;:21;15269:12;;;;;;;;;;;15261:21;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;15237:7;:21;15245:12;;;;;;;;;;;15237:21;;;;;;;;;;;;;;;:56;;;;15326:12;;;;;;;;;;;15309:40;;15318:6;15309:40;;;15340:8;15309:40;;;;;;:::i;:::-;;;;;;;;15370:13;15386:8;15370:24;;15429:35;15455:8;15429:7;:21;15437:12;;;;;;;;;;;15429:21;;;;;;;;;;;;;;;;:25;;:35;;;;:::i;:::-;15405:7;:21;15413:12;;;;;;;;;;;15405:21;;;;;;;;;;;;;;;:59;;;;15499:32;15525:5;15499:7;:21;15507:12;;;;;;;;;;;15499:21;;;;;;;;;;;;;;;;:25;;:32;;;;:::i;:::-;15475:7;:21;15483:12;;;;;;;;;;;15475:21;;;;;;;;;;;;;;;:56;;;;15564:12;;;;;;;;;;;15547:40;;15556:6;15547:40;;;15578:8;15547:40;;;;;;:::i;:::-;;;;;;;;14130:1502;;;;;;;;;;;:::o;15644:218::-;15726:17;15738:4;15726:7;;:11;;:17;;;;:::i;:::-;15716:7;:27;;;;15780:1;15768:8;:13;15764:90;;15809:45;15824:29;15837:15;15850:1;15837:8;:12;;:15;;;;:::i;:::-;15824:8;:12;;:29;;;;:::i;:::-;15809:10;;:14;;:45;;;;:::i;:::-;15796:10;:58;;;;15764:90;15644:218;;:::o;16358:461::-;16438:7;16447;16485:1;16471:10;:15;16467:62;;;16509:7;16518:10;16501:28;;;;;;16467:62;16540:16;16559:32;16587:3;16559:23;16571:10;16559:7;:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;16540:51;;16602:23;16628:114;16733:8;16628:67;16686:8;16628:31;16650:8;16628:7;:21;;:31;;;;:::i;:::-;:57;;:67;;;;:::i;:::-;:104;;:114;;;;:::i;:::-;16602:140;;16785:15;16802:8;16777:34;;;;;;16358:461;;;;;;:::o;16827:558::-;16926:7;16935;16944;16964:15;16982:24;16994:11;16982:7;:11;;:24;;;;:::i;:::-;16964:42;;17043:1;17031:8;:13;17027:67;;;17067:7;17076;17085:8;17059:35;;;;;;;;;17027:67;17105:16;17124:25;17137:11;17124:8;:12;;:25;;;;:::i;:::-;17105:44;;17160:23;17186:113;17290:8;17186:66;17243:8;17186:31;17208:8;17186:7;:21;;:31;;;;:::i;:::-;:56;;:66;;;;:::i;:::-;:103;;:113;;;;:::i;:::-;17160:139;;17342:7;17351:15;17368:8;17334:43;;;;;;;;;16827:558;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:137::-;355:5;386:6;380:13;371:22;;402:30;426:5;402:30;:::i;:::-;361:77;;;;:::o;444:139::-;490:5;528:6;515:20;506:29;;544:33;571:5;544:33;:::i;:::-;496:87;;;;:::o;589:143::-;646:5;677:6;671:13;662:22;;693:33;720:5;693:33;:::i;:::-;652:80;;;;:::o;738:262::-;797:6;846:2;834:9;825:7;821:23;817:32;814:2;;;862:1;859;852:12;814:2;905:1;930:53;975:7;966:6;955:9;951:22;930:53;:::i;:::-;920:63;;876:117;804:196;;;;:::o;1006:284::-;1076:6;1125:2;1113:9;1104:7;1100:23;1096:32;1093:2;;;1141:1;1138;1131:12;1093:2;1184:1;1209:64;1265:7;1256:6;1245:9;1241:22;1209:64;:::i;:::-;1199:74;;1155:128;1083:207;;;;:::o;1296:407::-;1364:6;1372;1421:2;1409:9;1400:7;1396:23;1392:32;1389:2;;;1437:1;1434;1427:12;1389:2;1480:1;1505:53;1550:7;1541:6;1530:9;1526:22;1505:53;:::i;:::-;1495:63;;1451:117;1607:2;1633:53;1678:7;1669:6;1658:9;1654:22;1633:53;:::i;:::-;1623:63;;1578:118;1379:324;;;;;:::o;1709:552::-;1786:6;1794;1802;1851:2;1839:9;1830:7;1826:23;1822:32;1819:2;;;1867:1;1864;1857:12;1819:2;1910:1;1935:53;1980:7;1971:6;1960:9;1956:22;1935:53;:::i;:::-;1925:63;;1881:117;2037:2;2063:53;2108:7;2099:6;2088:9;2084:22;2063:53;:::i;:::-;2053:63;;2008:118;2165:2;2191:53;2236:7;2227:6;2216:9;2212:22;2191:53;:::i;:::-;2181:63;;2136:118;1809:452;;;;;:::o;2267:407::-;2335:6;2343;2392:2;2380:9;2371:7;2367:23;2363:32;2360:2;;;2408:1;2405;2398:12;2360:2;2451:1;2476:53;2521:7;2512:6;2501:9;2497:22;2476:53;:::i;:::-;2466:63;;2422:117;2578:2;2604:53;2649:7;2640:6;2629:9;2625:22;2604:53;:::i;:::-;2594:63;;2549:118;2350:324;;;;;:::o;2680:278::-;2747:6;2796:2;2784:9;2775:7;2771:23;2767:32;2764:2;;;2812:1;2809;2802:12;2764:2;2855:1;2880:61;2933:7;2924:6;2913:9;2909:22;2880:61;:::i;:::-;2870:71;;2826:125;2754:204;;;;:::o;2964:262::-;3023:6;3072:2;3060:9;3051:7;3047:23;3043:32;3040:2;;;3088:1;3085;3078:12;3040:2;3131:1;3156:53;3201:7;3192:6;3181:9;3177:22;3156:53;:::i;:::-;3146:63;;3102:117;3030:196;;;;:::o;3232:596::-;3320:6;3328;3336;3385:2;3373:9;3364:7;3360:23;3356:32;3353:2;;;3401:1;3398;3391:12;3353:2;3444:1;3469:64;3525:7;3516:6;3505:9;3501:22;3469:64;:::i;:::-;3459:74;;3415:128;3582:2;3608:64;3664:7;3655:6;3644:9;3640:22;3608:64;:::i;:::-;3598:74;;3553:129;3721:2;3747:64;3803:7;3794:6;3783:9;3779:22;3747:64;:::i;:::-;3737:74;;3692:129;3343:485;;;;;:::o;3834:179::-;3903:10;3924:46;3966:3;3958:6;3924:46;:::i;:::-;4002:4;3997:3;3993:14;3979:28;;3914:99;;;;:::o;4019:108::-;4096:24;4114:5;4096:24;:::i;:::-;4091:3;4084:37;4074:53;;:::o;4133:118::-;4220:24;4238:5;4220:24;:::i;:::-;4215:3;4208:37;4198:53;;:::o;4287:732::-;4406:3;4435:54;4483:5;4435:54;:::i;:::-;4505:86;4584:6;4579:3;4505:86;:::i;:::-;4498:93;;4615:56;4665:5;4615:56;:::i;:::-;4694:7;4725:1;4710:284;4735:6;4732:1;4729:13;4710:284;;;4811:6;4805:13;4838:63;4897:3;4882:13;4838:63;:::i;:::-;4831:70;;4924:60;4977:6;4924:60;:::i;:::-;4914:70;;4770:224;4757:1;4754;4750:9;4745:14;;4710:284;;;4714:14;5010:3;5003:10;;4411:608;;;;;;;:::o;5025:109::-;5106:21;5121:5;5106:21;:::i;:::-;5101:3;5094:34;5084:50;;:::o;5140:147::-;5235:45;5274:5;5235:45;:::i;:::-;5230:3;5223:58;5213:74;;:::o;5293:364::-;5381:3;5409:39;5442:5;5409:39;:::i;:::-;5464:71;5528:6;5523:3;5464:71;:::i;:::-;5457:78;;5544:52;5589:6;5584:3;5577:4;5570:5;5566:16;5544:52;:::i;:::-;5621:29;5643:6;5621:29;:::i;:::-;5616:3;5612:39;5605:46;;5385:272;;;;;:::o;5663:366::-;5805:3;5826:67;5890:2;5885:3;5826:67;:::i;:::-;5819:74;;5902:93;5991:3;5902:93;:::i;:::-;6020:2;6015:3;6011:12;6004:19;;5809:220;;;:::o;6035:366::-;6177:3;6198:67;6262:2;6257:3;6198:67;:::i;:::-;6191:74;;6274:93;6363:3;6274:93;:::i;:::-;6392:2;6387:3;6383:12;6376:19;;6181:220;;;:::o;6407:366::-;6549:3;6570:67;6634:2;6629:3;6570:67;:::i;:::-;6563:74;;6646:93;6735:3;6646:93;:::i;:::-;6764:2;6759:3;6755:12;6748:19;;6553:220;;;:::o;6779:366::-;6921:3;6942:67;7006:2;7001:3;6942:67;:::i;:::-;6935:74;;7018:93;7107:3;7018:93;:::i;:::-;7136:2;7131:3;7127:12;7120:19;;6925:220;;;:::o;7151:366::-;7293:3;7314:67;7378:2;7373:3;7314:67;:::i;:::-;7307:74;;7390:93;7479:3;7390:93;:::i;:::-;7508:2;7503:3;7499:12;7492:19;;7297:220;;;:::o;7523:366::-;7665:3;7686:67;7750:2;7745:3;7686:67;:::i;:::-;7679:74;;7762:93;7851:3;7762:93;:::i;:::-;7880:2;7875:3;7871:12;7864:19;;7669:220;;;:::o;7895:366::-;8037:3;8058:67;8122:2;8117:3;8058:67;:::i;:::-;8051:74;;8134:93;8223:3;8134:93;:::i;:::-;8252:2;8247:3;8243:12;8236:19;;8041:220;;;:::o;8267:366::-;8409:3;8430:67;8494:2;8489:3;8430:67;:::i;:::-;8423:74;;8506:93;8595:3;8506:93;:::i;:::-;8624:2;8619:3;8615:12;8608:19;;8413:220;;;:::o;8639:366::-;8781:3;8802:67;8866:2;8861:3;8802:67;:::i;:::-;8795:74;;8878:93;8967:3;8878:93;:::i;:::-;8996:2;8991:3;8987:12;8980:19;;8785:220;;;:::o;9011:366::-;9153:3;9174:67;9238:2;9233:3;9174:67;:::i;:::-;9167:74;;9250:93;9339:3;9250:93;:::i;:::-;9368:2;9363:3;9359:12;9352:19;;9157:220;;;:::o;9383:366::-;9525:3;9546:67;9610:2;9605:3;9546:67;:::i;:::-;9539:74;;9622:93;9711:3;9622:93;:::i;:::-;9740:2;9735:3;9731:12;9724:19;;9529:220;;;:::o;9755:366::-;9897:3;9918:67;9982:2;9977:3;9918:67;:::i;:::-;9911:74;;9994:93;10083:3;9994:93;:::i;:::-;10112:2;10107:3;10103:12;10096:19;;9901:220;;;:::o;10127:366::-;10269:3;10290:67;10354:2;10349:3;10290:67;:::i;:::-;10283:74;;10366:93;10455:3;10366:93;:::i;:::-;10484:2;10479:3;10475:12;10468:19;;10273:220;;;:::o;10499:118::-;10586:24;10604:5;10586:24;:::i;:::-;10581:3;10574:37;10564:53;;:::o;10623:112::-;10706:22;10722:5;10706:22;:::i;:::-;10701:3;10694:35;10684:51;;:::o;10741:222::-;10834:4;10872:2;10861:9;10857:18;10849:26;;10885:71;10953:1;10942:9;10938:17;10929:6;10885:71;:::i;:::-;10839:124;;;;:::o;10969:332::-;11090:4;11128:2;11117:9;11113:18;11105:26;;11141:71;11209:1;11198:9;11194:17;11185:6;11141:71;:::i;:::-;11222:72;11290:2;11279:9;11275:18;11266:6;11222:72;:::i;:::-;11095:206;;;;;:::o;11307:332::-;11428:4;11466:2;11455:9;11451:18;11443:26;;11479:71;11547:1;11536:9;11532:17;11523:6;11479:71;:::i;:::-;11560:72;11628:2;11617:9;11613:18;11604:6;11560:72;:::i;:::-;11433:206;;;;;:::o;11645:807::-;11894:4;11932:3;11921:9;11917:19;11909:27;;11946:71;12014:1;12003:9;11999:17;11990:6;11946:71;:::i;:::-;12027:72;12095:2;12084:9;12080:18;12071:6;12027:72;:::i;:::-;12109:80;12185:2;12174:9;12170:18;12161:6;12109:80;:::i;:::-;12199;12275:2;12264:9;12260:18;12251:6;12199:80;:::i;:::-;12289:73;12357:3;12346:9;12342:19;12333:6;12289:73;:::i;:::-;12372;12440:3;12429:9;12425:19;12416:6;12372:73;:::i;:::-;11899:553;;;;;;;;;:::o;12458:210::-;12545:4;12583:2;12572:9;12568:18;12560:26;;12596:65;12658:1;12647:9;12643:17;12634:6;12596:65;:::i;:::-;12550:118;;;;:::o;12674:313::-;12787:4;12825:2;12814:9;12810:18;12802:26;;12874:9;12868:4;12864:20;12860:1;12849:9;12845:17;12838:47;12902:78;12975:4;12966:6;12902:78;:::i;:::-;12894:86;;12792:195;;;;:::o;12993:419::-;13159:4;13197:2;13186:9;13182:18;13174:26;;13246:9;13240:4;13236:20;13232:1;13221:9;13217:17;13210:47;13274:131;13400:4;13274:131;:::i;:::-;13266:139;;13164:248;;;:::o;13418:419::-;13584:4;13622:2;13611:9;13607:18;13599:26;;13671:9;13665:4;13661:20;13657:1;13646:9;13642:17;13635:47;13699:131;13825:4;13699:131;:::i;:::-;13691:139;;13589:248;;;:::o;13843:419::-;14009:4;14047:2;14036:9;14032:18;14024:26;;14096:9;14090:4;14086:20;14082:1;14071:9;14067:17;14060:47;14124:131;14250:4;14124:131;:::i;:::-;14116:139;;14014:248;;;:::o;14268:419::-;14434:4;14472:2;14461:9;14457:18;14449:26;;14521:9;14515:4;14511:20;14507:1;14496:9;14492:17;14485:47;14549:131;14675:4;14549:131;:::i;:::-;14541:139;;14439:248;;;:::o;14693:419::-;14859:4;14897:2;14886:9;14882:18;14874:26;;14946:9;14940:4;14936:20;14932:1;14921:9;14917:17;14910:47;14974:131;15100:4;14974:131;:::i;:::-;14966:139;;14864:248;;;:::o;15118:419::-;15284:4;15322:2;15311:9;15307:18;15299:26;;15371:9;15365:4;15361:20;15357:1;15346:9;15342:17;15335:47;15399:131;15525:4;15399:131;:::i;:::-;15391:139;;15289:248;;;:::o;15543:419::-;15709:4;15747:2;15736:9;15732:18;15724:26;;15796:9;15790:4;15786:20;15782:1;15771:9;15767:17;15760:47;15824:131;15950:4;15824:131;:::i;:::-;15816:139;;15714:248;;;:::o;15968:419::-;16134:4;16172:2;16161:9;16157:18;16149:26;;16221:9;16215:4;16211:20;16207:1;16196:9;16192:17;16185:47;16249:131;16375:4;16249:131;:::i;:::-;16241:139;;16139:248;;;:::o;16393:419::-;16559:4;16597:2;16586:9;16582:18;16574:26;;16646:9;16640:4;16636:20;16632:1;16621:9;16617:17;16610:47;16674:131;16800:4;16674:131;:::i;:::-;16666:139;;16564:248;;;:::o;16818:419::-;16984:4;17022:2;17011:9;17007:18;16999:26;;17071:9;17065:4;17061:20;17057:1;17046:9;17042:17;17035:47;17099:131;17225:4;17099:131;:::i;:::-;17091:139;;16989:248;;;:::o;17243:419::-;17409:4;17447:2;17436:9;17432:18;17424:26;;17496:9;17490:4;17486:20;17482:1;17471:9;17467:17;17460:47;17524:131;17650:4;17524:131;:::i;:::-;17516:139;;17414:248;;;:::o;17668:419::-;17834:4;17872:2;17861:9;17857:18;17849:26;;17921:9;17915:4;17911:20;17907:1;17896:9;17892:17;17885:47;17949:131;18075:4;17949:131;:::i;:::-;17941:139;;17839:248;;;:::o;18093:419::-;18259:4;18297:2;18286:9;18282:18;18274:26;;18346:9;18340:4;18336:20;18332:1;18321:9;18317:17;18310:47;18374:131;18500:4;18374:131;:::i;:::-;18366:139;;18264:248;;;:::o;18518:222::-;18611:4;18649:2;18638:9;18634:18;18626:26;;18662:71;18730:1;18719:9;18715:17;18706:6;18662:71;:::i;:::-;18616:124;;;;:::o;18746:831::-;19009:4;19047:3;19036:9;19032:19;19024:27;;19061:71;19129:1;19118:9;19114:17;19105:6;19061:71;:::i;:::-;19142:80;19218:2;19207:9;19203:18;19194:6;19142:80;:::i;:::-;19269:9;19263:4;19259:20;19254:2;19243:9;19239:18;19232:48;19297:108;19400:4;19391:6;19297:108;:::i;:::-;19289:116;;19415:72;19483:2;19472:9;19468:18;19459:6;19415:72;:::i;:::-;19497:73;19565:3;19554:9;19550:19;19541:6;19497:73;:::i;:::-;19014:563;;;;;;;;:::o;19583:214::-;19672:4;19710:2;19699:9;19695:18;19687:26;;19723:67;19787:1;19776:9;19772:17;19763:6;19723:67;:::i;:::-;19677:120;;;;:::o;19803:132::-;19870:4;19893:3;19885:11;;19923:4;19918:3;19914:14;19906:22;;19875:60;;;:::o;19941:114::-;20008:6;20042:5;20036:12;20026:22;;20015:40;;;:::o;20061:99::-;20113:6;20147:5;20141:12;20131:22;;20120:40;;;:::o;20166:113::-;20236:4;20268;20263:3;20259:14;20251:22;;20241:38;;;:::o;20285:184::-;20384:11;20418:6;20413:3;20406:19;20458:4;20453:3;20449:14;20434:29;;20396:73;;;;:::o;20475:169::-;20559:11;20593:6;20588:3;20581:19;20633:4;20628:3;20624:14;20609:29;;20571:73;;;;:::o;20650:305::-;20690:3;20709:20;20727:1;20709:20;:::i;:::-;20704:25;;20743:20;20761:1;20743:20;:::i;:::-;20738:25;;20897:1;20829:66;20825:74;20822:1;20819:81;20816:2;;;20903:18;;:::i;:::-;20816:2;20947:1;20944;20940:9;20933:16;;20694:261;;;;:::o;20961:185::-;21001:1;21018:20;21036:1;21018:20;:::i;:::-;21013:25;;21052:20;21070:1;21052:20;:::i;:::-;21047:25;;21091:1;21081:2;;21096:18;;:::i;:::-;21081:2;21138:1;21135;21131:9;21126:14;;21003:143;;;;:::o;21152:348::-;21192:7;21215:20;21233:1;21215:20;:::i;:::-;21210:25;;21249:20;21267:1;21249:20;:::i;:::-;21244:25;;21437:1;21369:66;21365:74;21362:1;21359:81;21354:1;21347:9;21340:17;21336:105;21333:2;;;21444:18;;:::i;:::-;21333:2;21492:1;21489;21485:9;21474:20;;21200:300;;;;:::o;21506:191::-;21546:4;21566:20;21584:1;21566:20;:::i;:::-;21561:25;;21600:20;21618:1;21600:20;:::i;:::-;21595:25;;21639:1;21636;21633:8;21630:2;;;21644:18;;:::i;:::-;21630:2;21689:1;21686;21682:9;21674:17;;21551:146;;;;:::o;21703:96::-;21740:7;21769:24;21787:5;21769:24;:::i;:::-;21758:35;;21748:51;;;:::o;21805:90::-;21839:7;21882:5;21875:13;21868:21;21857:32;;21847:48;;;:::o;21901:126::-;21938:7;21978:42;21971:5;21967:54;21956:65;;21946:81;;;:::o;22033:77::-;22070:7;22099:5;22088:16;;22078:32;;;:::o;22116:86::-;22151:7;22191:4;22184:5;22180:16;22169:27;;22159:43;;;:::o;22208:121::-;22266:9;22299:24;22317:5;22299:24;:::i;:::-;22286:37;;22276:53;;;:::o;22335:307::-;22403:1;22413:113;22427:6;22424:1;22421:13;22413:113;;;22512:1;22507:3;22503:11;22497:18;22493:1;22488:3;22484:11;22477:39;22449:2;22446:1;22442:10;22437:15;;22413:113;;;22544:6;22541:1;22538:13;22535:2;;;22624:1;22615:6;22610:3;22606:16;22599:27;22535:2;22384:258;;;;:::o;22648:180::-;22696:77;22693:1;22686:88;22793:4;22790:1;22783:15;22817:4;22814:1;22807:15;22834:180;22882:77;22879:1;22872:88;22979:4;22976:1;22969:15;23003:4;23000:1;22993:15;23020:102;23061:6;23112:2;23108:7;23103:2;23096:5;23092:14;23088:28;23078:38;;23068:54;;;:::o;23128:222::-;23268:34;23264:1;23256:6;23252:14;23245:58;23337:5;23332:2;23324:6;23320:15;23313:30;23234:116;:::o;23356:229::-;23496:34;23492:1;23484:6;23480:14;23473:58;23565:12;23560:2;23552:6;23548:15;23541:37;23462:123;:::o;23591:225::-;23731:34;23727:1;23719:6;23715:14;23708:58;23800:8;23795:2;23787:6;23783:15;23776:33;23697:119;:::o;23822:221::-;23962:34;23958:1;23950:6;23946:14;23939:58;24031:4;24026:2;24018:6;24014:15;24007:29;23928:115;:::o;24049:177::-;24189:29;24185:1;24177:6;24173:14;24166:53;24155:71;:::o;24232:179::-;24372:31;24368:1;24360:6;24356:14;24349:55;24338:73;:::o;24417:221::-;24557:34;24553:1;24545:6;24541:14;24534:58;24626:4;24621:2;24613:6;24609:15;24602:29;24523:115;:::o;24644:220::-;24784:34;24780:1;24772:6;24768:14;24761:58;24853:3;24848:2;24840:6;24836:15;24829:28;24750:114;:::o;24870:225::-;25010:34;25006:1;24998:6;24994:14;24987:58;25079:8;25074:2;25066:6;25062:15;25055:33;24976:119;:::o;25101:182::-;25241:34;25237:1;25229:6;25225:14;25218:58;25207:76;:::o;25289:228::-;25429:34;25425:1;25417:6;25413:14;25406:58;25498:11;25493:2;25485:6;25481:15;25474:36;25395:122;:::o;25523:224::-;25663:34;25659:1;25651:6;25647:14;25640:58;25732:7;25727:2;25719:6;25715:15;25708:32;25629:118;:::o;25753:223::-;25893:34;25889:1;25881:6;25877:14;25870:58;25962:6;25957:2;25949:6;25945:15;25938:31;25859:117;:::o;25982:122::-;26055:24;26073:5;26055:24;:::i;:::-;26048:5;26045:35;26035:2;;26094:1;26091;26084:12;26035:2;26025:79;:::o;26110:116::-;26180:21;26195:5;26180:21;:::i;:::-;26173:5;26170:32;26160:2;;26216:1;26213;26206:12;26160:2;26150:76;:::o;26232:122::-;26305:24;26323:5;26305:24;:::i;:::-;26298:5;26295:35;26285:2;;26344:1;26341;26334:12;26285:2;26275:79;:::o
Swarm Source
ipfs://03ac0f3f9a179f31fb5a75e35397285d20fd7c2b8af1c1eeed04dec0fb1cc6e6
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.