More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 427 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16847534 | 639 days ago | IN | 0 ETH | 0.00069713 | ||||
Approve | 16847530 | 639 days ago | IN | 0 ETH | 0.00067301 | ||||
Approve | 16847530 | 639 days ago | IN | 0 ETH | 0.00067301 | ||||
Approve | 16682060 | 662 days ago | IN | 0 ETH | 0.00116272 | ||||
Approve | 16662412 | 665 days ago | IN | 0 ETH | 0.00096203 | ||||
Approve | 16662382 | 665 days ago | IN | 0 ETH | 0.00096148 | ||||
Approve | 15761847 | 791 days ago | IN | 0 ETH | 0.00034787 | ||||
Approve | 15714927 | 797 days ago | IN | 0 ETH | 0.0015673 | ||||
Approve | 15712359 | 798 days ago | IN | 0 ETH | 0.00117757 | ||||
Approve | 15628261 | 810 days ago | IN | 0 ETH | 0.00040947 | ||||
Approve | 15618273 | 811 days ago | IN | 0 ETH | 0.00108809 | ||||
Approve | 15613524 | 812 days ago | IN | 0 ETH | 0.00030129 | ||||
Approve | 15613501 | 812 days ago | IN | 0 ETH | 0.00026855 | ||||
Approve | 15613353 | 812 days ago | IN | 0 ETH | 0.0005688 | ||||
Approve | 15613302 | 812 days ago | IN | 0 ETH | 0.0005465 | ||||
Approve | 15595308 | 814 days ago | IN | 0 ETH | 0.00028897 | ||||
Approve | 15594683 | 814 days ago | IN | 0 ETH | 0.00034145 | ||||
Approve | 15594615 | 814 days ago | IN | 0 ETH | 0.00027158 | ||||
Approve | 15594608 | 814 days ago | IN | 0 ETH | 0.00025043 | ||||
Approve | 15584556 | 816 days ago | IN | 0 ETH | 0.00047916 | ||||
Approve | 15570907 | 818 days ago | IN | 0 ETH | 0.00035595 | ||||
Approve | 15564145 | 819 days ago | IN | 0 ETH | 0.00045773 | ||||
Approve | 15560201 | 819 days ago | IN | 0 ETH | 0.00053752 | ||||
Approve | 15528774 | 824 days ago | IN | 0 ETH | 0.0011771 | ||||
Approve | 15528758 | 824 days ago | IN | 0 ETH | 0.00126806 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15813436 | 784 days ago | 0.00120265 ETH | ||||
15813436 | 784 days ago | 0.00120265 ETH | ||||
15633846 | 809 days ago | 0.0013856 ETH | ||||
15633846 | 809 days ago | 0.0013856 ETH | ||||
15613528 | 812 days ago | 0.00150837 ETH | ||||
15613528 | 812 days ago | 0.00150837 ETH | ||||
15613355 | 812 days ago | 0.00146283 ETH | ||||
15613355 | 812 days ago | 0.00146283 ETH | ||||
15594695 | 814 days ago | 0.00158546 ETH | ||||
15594695 | 814 days ago | 0.00158546 ETH | ||||
15594611 | 814 days ago | 0.0024292 ETH | ||||
15594611 | 814 days ago | 0.0024292 ETH | ||||
15592370 | 815 days ago | 0.00252849 ETH | ||||
15592370 | 815 days ago | 0.00252849 ETH | ||||
15585882 | 815 days ago | 0.00241309 ETH | ||||
15585882 | 815 days ago | 0.00241309 ETH | ||||
15564164 | 819 days ago | 0.00294398 ETH | ||||
15564164 | 819 days ago | 0.00294398 ETH | ||||
15525252 | 824 days ago | 0.00364947 ETH | ||||
15525252 | 824 days ago | 0.00364947 ETH | ||||
15520636 | 825 days ago | 0.00391962 ETH | ||||
15520636 | 825 days ago | 0.00391962 ETH | ||||
15499897 | 829 days ago | 0.00397489 ETH | ||||
15499897 | 829 days ago | 0.00397489 ETH | ||||
15496183 | 829 days ago | 0.00492799 ETH |
Loading...
Loading
Contract Name:
HUMANRACE
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-22 */ /** https://medium.com/@humanrace100/the-truth-f1979f4eecda */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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 Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract HUMANRACE is Context,IERC20, Ownable{ using Address for address; string private _name = "HUMAN RACE"; string private _symbol = "HU"; uint8 private _decimals = 18; uint256 totalFeeFortx = 0; uint256 maxWalletTreshold = 2; uint256 maxTxTreshold = 2; uint256 private swapTreshold =2; bool public limitsInEffect = true; uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset) uint256 private _totalSupply = 1_000_000_000 * 10**_decimals; uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000; mapping (address => uint256) private _balances; mapping (address => bool) private _excludedFromFees; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; address _owner; address payable public marketingAddress = payable(0xbd0C4634b094275F90bc3376Dd79a3156D5282E3); uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; uint256 maxTxAmount = _totalSupply*maxTxTreshold/100; mapping (address => bool) botWallets; bool botTradeEnabled = false; bool checkWalletSize = true; mapping (address => bool) private _liquidityHolders; mapping (address => bool) private presaleAddresses; uint256 private buyliqFee = 2; uint256 private buyprevLiqFee = 2; uint256 private buymktFee = 5; uint256 private buyPrevmktFee = 5; bool private tradeEnabled = false; uint256 private sellliqFee = 95; uint256 private sellprevLiqFee = 95; uint256 private sellmktFee = 5; uint256 private sellPrevmktFee = 5; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; uint256 private mktTokens = 0; uint256 private liqTokens = 0; event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event tokensSwappedDuringTokenomics(uint256 amount); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D IUniswapV2Router02 _router; address public uniswapV2Pair; //Balances tracker modifier lockTheSwap{ inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor(){ _balances[_msgSender()] = _totalSupply; //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory()) .createPair(address(this), _uniRouter.WETH()); _excludedFromFees[owner()] = true; _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees _router = _uniRouter; _liquidityHolders[address(_router)] = true; _liquidityHolders[owner()] = true; _liquidityHolders[address(this)] = true; _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); emit Transfer(address(0),_msgSender(),_totalSupply); } receive() external payable{} //general token data and tracking of balances to be swapped. function getOwner()external view returns(address){ return owner(); } function currentmktTokens() external view returns (uint256){ return mktTokens; } function currentLiqTokens() external view returns (uint256){ return liqTokens; } function totalSupply() external view override returns (uint256){ return _totalSupply; } function balanceOf(address account) public view override returns (uint256){ return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool){ _transfer(_msgSender(),recipient,amount); return true; } function allowance(address owner, address spender) external view override returns (uint256){ return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool){ _approve(_msgSender(),spender,amount); return true; } function removeLimits() public onlyOwner{ limitsInEffect = false; } function decimals()external view returns(uint256){ return _decimals; } function name() external view returns (string memory) { return _name; } function symbol() external view returns (string memory){ return _symbol; } function updateMaxTxTreshold(uint256 newVal) public onlyOwner{ maxTxTreshold = newVal; maxTxAmount = _totalSupply*maxTxTreshold/100;// 1% } function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{ maxWalletTreshold = newVal; maxWalletAmount = _totalSupply*maxWalletTreshold/100; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool){ require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance"); _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{ botWallets[detectedBot] = isBot; } function currentbuyliqFee() public view returns (uint256){ return buyliqFee; } function currentbuymktfee() public view returns (uint256){ return buymktFee; } function currentsellLiqFee() public view returns (uint256){ return sellliqFee; } function currentsellmktfee() public view returns (uint256){ return sellmktFee; } function currentThresholdInt()public view returns (uint256){ return currentThreshold; } function isExcluded(address toCheck)public view returns (bool){ return _excludedFromFees[toCheck]; } function _transfer(address from, address to, uint256 amount) internal{ require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0,"ERC20: transfered amount must be greater than zero"); uint256 senderBalance = _balances[from]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); if(tradeEnabled == false){ require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled"); } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTxAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWalletAmount, "Unable to exceed Max Wallet"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTxAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWalletAmount, "Unable to exceed Max Wallet"); } } } uint256 inContractBalance = balanceOf(address(this)); if(inContractBalance >=requiredTokensToSwap && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled){ if(inContractBalance >= requiredTokensToSwap ){ inContractBalance = requiredTokensToSwap; swapForTokenomics(inContractBalance); } } bool takeFees = true; if(_excludedFromFees[from] || _excludedFromFees[to]) { totalFeeFortx = 0; takeFees = false; } uint256 mktAmount = 0; uint256 liqAmount = 0; // Amount to be added to liquidity. if(takeFees){ //bot fees if(botWallets[from] == true||botWallets[to]==true){ revert("No bots allowed to trade"); } //Selling fees if (automatedMarketMakerPairs[to] && to != address(_router) ){ totalFeeFortx = 0; mktAmount = amount * sellmktFee/100; liqAmount = amount * sellliqFee/100; totalFeeFortx = mktAmount + liqAmount ; } //Buy Fees else if(automatedMarketMakerPairs[from] && from != address(_router)) { totalFeeFortx = 0; mktAmount = amount * buymktFee/100; liqAmount = amount * buyliqFee/100; totalFeeFortx = mktAmount + liqAmount ; } } _balances[from] = senderBalance - amount; _balances[to] += amount - mktAmount - liqAmount; if(liqAmount != 0) { _balances[address(this)] += totalFeeFortx; //tLiqTotal += liqAmount; liqTokens += liqAmount; mktTokens += mktAmount; emit Transfer(from, address(this), totalFeeFortx); } emit Transfer(from, to,amount-totalFeeFortx); } function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{ swapAndLiquify(liqTokens); swapTokensForETHmkt(mktTokens); emit tokensSwappedDuringTokenomics(balanceToswap); mktTokens = 0; liqTokens = 0; } function addLimitExempt(address newAddress)external onlyOwner{ _liquidityHolders[newAddress] = true; } function swapTokensForETHmkt(uint256 amount)private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), amount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // Accept any amount of ETH. path, marketingAddress, block.timestamp ); } function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{ //uint256 contractBalance = tokenToClear.balanceOf(address(this)); tokenToClear.transfer(destination, amount); } function unstuckETH(address payable destination) public onlyOwner{ uint256 ethBalance = address(this).balance; payable(destination).transfer(ethBalance); } function tradeStatus(bool status) public onlyOwner{ tradeEnabled = status; } function swapAndLiquify(uint256 liqTokensPassed) private { uint256 half = liqTokensPassed / 2; uint256 otherHalf = liqTokensPassed - half; uint256 initialBalance = address(this).balance; swapTokensForETH(half); uint256 newBalance = address(this).balance - (initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half,newBalance,otherHalf); } function swapTokensForETH(uint256 tokenAmount) private{ address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), tokenAmount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // Accept any amount of ETH. path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{ _approve(address(this), address(_router), tokenAmount); _router.addLiquidityETH{value:ethAmount}( address(this), tokenAmount, 0, 0, deadAddress,// tr block.timestamp ); } function _approve(address owner,address spender, uint256 amount) internal{ 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); } //Fees related functions function addToExcluded(address toExclude) public onlyOwner{ _excludedFromFees[toExclude] = true; } function removeFromExcluded(address toRemove) public onlyOwner{ _excludedFromFees[toRemove] = false; } function excludePresaleAddresses(address router, address presale) external onlyOwner { _liquidityHolders[address(router)] = true; _liquidityHolders[presale] = true; presaleAddresses[address(router)] = true; presaleAddresses[presale] = true; } function startPresaleStatus()public onlyOwner{ buymktFee = 5; sellmktFee =5; buyliqFee =2; sellliqFee =2; setSwapAndLiquify(false); } function endPresaleStatus() public onlyOwner{ buymktFee = 5; buyliqFee = 2; sellmktFee = 5; sellliqFee = 2; setSwapAndLiquify(true); } function updateThreshold(uint newThreshold) public onlyOwner{ currentThreshold = newThreshold; } function setSwapAndLiquify(bool _enabled) public onlyOwner{ swapAndLiquifyEnabled = _enabled; } //Marketing related function setMktAddress(address newAddress) external onlyOwner{ marketingAddress = payable(newAddress); } function transferAssetsETH(address payable to, uint256 amount) internal{ to.transfer(amount); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{ buyliqFee = newAmount; } function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{ buymktFee= newAmount; } function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{ sellliqFee= newAmount; } function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{ sellmktFee= newAmount; } function currentMaxWallet() public view returns(uint256){ return maxWalletAmount; } function currentMaxTx() public view returns(uint256){ return maxTxAmount; } function updateSwapTreshold(uint256 newVal) public onlyOwner{ swapTreshold = newVal; requiredTokensToSwap = _totalSupply*swapTreshold/1000; } function currentTradeStatus() public view returns (bool){ return tradeEnabled; } function currentSwapTreshold() public view returns(uint256){ return swapTreshold; } function currentTokensToSwap() public view returns(uint256){ return requiredTokensToSwap; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
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":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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280600a81526020017f48554d414e2052414345000000000000000000000000000000000000000000008152506001908051906020019062000051929190620009ac565b506040518060400160405280600281526020017f4855000000000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f929190620009ac565b506012600360006101000a81548160ff021916908360ff16021790555060006004556002600555600260065560026007556001600860006101000a81548160ff0219169083151502179055506014600955600360009054906101000a900460ff16600a6200010e919062000b9e565b633b9aca006200011f919062000cdb565b600a556103e8600754600a5462000137919062000cdb565b62000143919062000b0b565b600b5573bd0c4634b094275f90bc3376dd79a3156d5282e3601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600554600a54620001af919062000cdb565b620001bb919062000b0b565b6013556064600654600a54620001d2919062000cdb565b620001de919062000b0b565b6014556000601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff02191690831515021790555060026019556002601a556005601b556005601c556000601d60006101000a81548160ff021916908315150217905550605f601e55605f601f55600560205560056021556001602260016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525060006023556000602455348015620002c457600080fd5b50620002e5620002d96200081660201b60201c565b6200081e60201b60201c565b600a54600c6000620002fc6200081660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039a57600080fd5b505afa158015620003af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d5919062000a73565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043857600080fd5b505afa1580156200044d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000473919062000a73565b6040518363ffffffff1660e01b81526004016200049292919062000ac1565b602060405180830381600087803b158015620004ad57600080fd5b505af1158015620004c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e8919062000a73565b602660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60006200053e620008e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000620006b8620008e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000796602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200090b60201b60201c565b620007a66200081660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a5460405162000807919062000aee565b60405180910390a35062000e71565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b828054620009ba9062000d87565b90600052602060002090601f016020900481019282620009de576000855562000a2a565b82601f10620009f957805160ff191683800117855562000a2a565b8280016001018555821562000a2a579182015b8281111562000a2957825182559160200191906001019062000a0c565b5b50905062000a39919062000a3d565b5090565b5b8082111562000a5857600081600090555060010162000a3e565b5090565b60008151905062000a6d8162000e57565b92915050565b60006020828403121562000a8657600080fd5b600062000a968482850162000a5c565b91505092915050565b62000aaa8162000d3c565b82525050565b62000abb8162000d70565b82525050565b600060408201905062000ad8600083018562000a9f565b62000ae7602083018462000a9f565b9392505050565b600060208201905062000b05600083018462000ab0565b92915050565b600062000b188262000d70565b915062000b258362000d70565b92508262000b385762000b3762000dec565b5b828204905092915050565b6000808291508390505b600185111562000b955780860481111562000b6d5762000b6c62000dbd565b5b600185161562000b7d5780820291505b808102905062000b8d8562000e4a565b945062000b4d565b94509492505050565b600062000bab8262000d70565b915062000bb88362000d7a565b925062000be77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bef565b905092915050565b60008262000c01576001905062000cd4565b8162000c11576000905062000cd4565b816001811462000c2a576002811462000c355762000c6b565b600191505062000cd4565b60ff84111562000c4a5762000c4962000dbd565b5b8360020a91508482111562000c645762000c6362000dbd565b5b5062000cd4565b5060208310610133831016604e8410600b841016171562000ca55782820a90508381111562000c9f5762000c9e62000dbd565b5b62000cd4565b62000cb4848484600162000b43565b9250905081840481111562000cce5762000ccd62000dbd565b5b81810290505b9392505050565b600062000ce88262000d70565b915062000cf58362000d70565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d315762000d3062000dbd565b5b828202905092915050565b600062000d498262000d50565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000da057607f821691505b6020821081141562000db75762000db662000e1b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b62000e628162000d3c565b811462000e6e57600080fd5b50565b60805160601c614ea962000e97600039600081816111a60152613c6d0152614ea96000f3fe60806040526004361061036f5760003560e01c80638cd0260c116101c6578063bf9b0159116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610c57578063f2fde38b14610c80578063f7da678514610ca9578063f953cf3a14610cd257610376565b8063dd62ed3e14610bc4578063ddcf9b9814610c01578063e1370dd314610c2c57610376565b8063cba0e996116100d1578063cba0e99614610b0a578063d1294d4c14610b47578063d15bcf0f14610b70578063d7d7442f14610b9b57610376565b8063bf9b015914610a8d578063bf9eb54014610ab8578063cb66453414610ae157610376565b8063a5ece94111610164578063a9059cbb1161013e578063a9059cbb146109d3578063b195b83914610a10578063b4d95a9314610a27578063b62496f514610a5057610376565b8063a5ece94114610956578063a6c38f5914610981578063a7a07452146109aa57610376565b806395d89b41116101a057806395d89b41146108ac5780639a7a23d6146108d75780639b136da414610900578063a04bdc811461092b57610376565b80638cd0260c1461082d5780638da5cb5b1461085657806390f502831461088157610376565b80634a62bb65116102a05780636df3333a1161023e578063751039fc11610218578063751039fc14610799578063801527ce146107b05780638628c23f146107d9578063893d20e81461080257610376565b80636df3333a1461071a57806370a0823114610745578063715018a61461078257610376565b80635297defd1161027a5780635297defd146106725780635be76f111461069d57806364c16163146106c65780636573c4df146106f157610376565b80634a62bb65146105f15780634a74bb021461061c5780634bd7ace51461064757610376565b806323b872dd1161030d578063313ce567116102e7578063313ce56714610547578063487a69051461057257806349bd5a5e1461059d5780634a0e963c146105c857610376565b806323b872dd146104b657806327c8f835146104f35780632d03420b1461051e57610376565b806313b4a7f41161034957806313b4a7f41461040c57806318160ddd14610435578063220f66961461046057806322788f861461048b57610376565b806306fdde031461037b5780630882a863146103a6578063095ea7b3146103cf57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610ce9565b60405161039d91906147d7565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061400a565b610d7b565b005b3480156103db57600080fd5b506103f660048036038101906103f19190613f2d565b610e01565b60405161040391906147bc565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e9190613e66565b610e1f565b005b34801561044157600080fd5b5061044a610fff565b60405161045791906149d9565b60405180910390f35b34801561046c57600080fd5b50610475611009565b60405161048291906147bc565b60405180910390f35b34801561049757600080fd5b506104a061101c565b6040516104ad91906149d9565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190613ea2565b611026565b6040516104ea91906147bc565b60405180910390f35b3480156104ff57600080fd5b506105086111a4565b60405161051591906146fc565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613f69565b6111c8565b005b34801561055357600080fd5b5061055c611261565b60405161056991906149d9565b60405180910390f35b34801561057e57600080fd5b5061058761127b565b60405161059491906149d9565b60405180910390f35b3480156105a957600080fd5b506105b2611285565b6040516105bf91906146fc565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea9190613daf565b6112ab565b005b3480156105fd57600080fd5b50610606611382565b60405161061391906147bc565b60405180910390f35b34801561062857600080fd5b50610631611395565b60405161063e91906147bc565b60405180910390f35b34801561065357600080fd5b5061065c6113a8565b60405161066991906149d9565b60405180910390f35b34801561067e57600080fd5b506106876113b2565b60405161069491906149d9565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190613e01565b6113bc565b005b3480156106d257600080fd5b506106db611488565b6040516106e891906149d9565b60405180910390f35b3480156106fd57600080fd5b506107186004803603810190610713919061400a565b611492565b005b34801561072657600080fd5b5061072f61153a565b60405161073c91906149d9565b60405180910390f35b34801561075157600080fd5b5061076c60048036038101906107679190613daf565b611544565b60405161077991906149d9565b60405180910390f35b34801561078e57600080fd5b5061079761158d565b005b3480156107a557600080fd5b506107ae611615565b005b3480156107bc57600080fd5b506107d760048036038101906107d29190613f69565b6116ae565b005b3480156107e557600080fd5b5061080060048036038101906107fb919061400a565b611747565b005b34801561080e57600080fd5b506108176117cd565b60405161082491906146fc565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f919061400a565b6117dc565b005b34801561086257600080fd5b5061086b611862565b60405161087891906146fc565b60405180910390f35b34801561088d57600080fd5b5061089661188b565b6040516108a391906149d9565b60405180910390f35b3480156108b857600080fd5b506108c1611895565b6040516108ce91906147d7565b60405180910390f35b3480156108e357600080fd5b506108fe60048036038101906108f99190613ef1565b611927565b005b34801561090c57600080fd5b50610915611a42565b60405161092291906149d9565b60405180910390f35b34801561093757600080fd5b50610940611a4c565b60405161094d91906149d9565b60405180910390f35b34801561096257600080fd5b5061096b611a52565b6040516109789190614717565b60405180910390f35b34801561098d57600080fd5b506109a860048036038101906109a39190613e2a565b611a78565b005b3480156109b657600080fd5b506109d160048036038101906109cc919061400a565b611b4f565b005b3480156109df57600080fd5b506109fa60048036038101906109f59190613f2d565b611bf7565b604051610a0791906147bc565b60405180910390f35b348015610a1c57600080fd5b50610a25611c15565b005b348015610a3357600080fd5b50610a4e6004803603810190610a499190613daf565b611cbd565b005b348015610a5c57600080fd5b50610a776004803603810190610a729190613daf565b611d94565b604051610a8491906147bc565b60405180910390f35b348015610a9957600080fd5b50610aa2611db4565b604051610aaf91906149d9565b60405180910390f35b348015610ac457600080fd5b50610adf6004803603810190610ada9190613daf565b611dbe565b005b348015610aed57600080fd5b50610b086004803603810190610b039190613daf565b611e7e565b005b348015610b1657600080fd5b50610b316004803603810190610b2c9190613daf565b611f55565b604051610b3e91906147bc565b60405180910390f35b348015610b5357600080fd5b50610b6e6004803603810190610b69919061400a565b611fab565b005b348015610b7c57600080fd5b50610b85612054565b604051610b9291906147bc565b60405180910390f35b348015610ba757600080fd5b50610bc26004803603810190610bbd919061400a565b61206b565b005b348015610bd057600080fd5b50610beb6004803603810190610be69190613e66565b6120f1565b604051610bf891906149d9565b60405180910390f35b348015610c0d57600080fd5b50610c16612178565b604051610c2391906149d9565b60405180910390f35b348015610c3857600080fd5b50610c41612182565b604051610c4e91906149d9565b60405180910390f35b348015610c6357600080fd5b50610c7e6004803603810190610c79919061400a565b61218c565b005b348015610c8c57600080fd5b50610ca76004803603810190610ca29190613daf565b612212565b005b348015610cb557600080fd5b50610cd06004803603810190610ccb9190613fbb565b61230a565b005b348015610cde57600080fd5b50610ce7612419565b005b606060018054610cf890614d30565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2490614d30565b8015610d715780601f10610d4657610100808354040283529160200191610d71565b820191906000526020600020905b815481529060010190602001808311610d5457829003601f168201915b5050505050905090565b610d836124c1565b73ffffffffffffffffffffffffffffffffffffffff16610da1611862565b73ffffffffffffffffffffffffffffffffffffffff1614610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90614939565b60405180910390fd5b8060198190555050565b6000610e15610e0e6124c1565b84846124c9565b6001905092915050565b610e276124c1565b73ffffffffffffffffffffffffffffffffffffffff16610e45611862565b73ffffffffffffffffffffffffffffffffffffffff1614610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290614939565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a54905090565b602260009054906101000a900460ff1681565b6000600954905090565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110716124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590614919565b60405180910390fd5b6110f9848484612694565b611199846111056124c1565b84600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061114f6124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111949190614c15565b6124c9565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6111d06124c1565b73ffffffffffffffffffffffffffffffffffffffff166111ee611862565b73ffffffffffffffffffffffffffffffffffffffff1614611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b90614939565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600b54905090565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112b36124c1565b73ffffffffffffffffffffffffffffffffffffffff166112d1611862565b73ffffffffffffffffffffffffffffffffffffffff1614611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90614939565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600860009054906101000a900460ff1681565b602260019054906101000a900460ff1681565b6000601954905090565b6000602054905090565b6113c46124c1565b73ffffffffffffffffffffffffffffffffffffffff166113e2611862565b73ffffffffffffffffffffffffffffffffffffffff1614611438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f90614939565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611483573d6000803e3d6000fd5b505050565b6000602454905090565b61149a6124c1565b73ffffffffffffffffffffffffffffffffffffffff166114b8611862565b73ffffffffffffffffffffffffffffffffffffffff161461150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590614939565b60405180910390fd5b806005819055506064600554600a546115279190614bbb565b6115319190614b8a565b60138190555050565b6000600754905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115956124c1565b73ffffffffffffffffffffffffffffffffffffffff166115b3611862565b73ffffffffffffffffffffffffffffffffffffffff1614611609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160090614939565b60405180910390fd5b61161360006133ca565b565b61161d6124c1565b73ffffffffffffffffffffffffffffffffffffffff1661163b611862565b73ffffffffffffffffffffffffffffffffffffffff1614611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890614939565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550565b6116b66124c1565b73ffffffffffffffffffffffffffffffffffffffff166116d4611862565b73ffffffffffffffffffffffffffffffffffffffff161461172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190614939565b60405180910390fd5b80602260016101000a81548160ff02191690831515021790555050565b61174f6124c1565b73ffffffffffffffffffffffffffffffffffffffff1661176d611862565b73ffffffffffffffffffffffffffffffffffffffff16146117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90614939565b60405180910390fd5b8060208190555050565b60006117d7611862565b905090565b6117e46124c1565b73ffffffffffffffffffffffffffffffffffffffff16611802611862565b73ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90614939565b60405180910390fd5b80601e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601e54905090565b6060600280546118a490614d30565b80601f01602080910402602001604051908101604052809291908181526020018280546118d090614d30565b801561191d5780601f106118f25761010080835404028352916020019161191d565b820191906000526020600020905b81548152906001019060200180831161190057829003601f168201915b5050505050905090565b61192f6124c1565b73ffffffffffffffffffffffffffffffffffffffff1661194d611862565b73ffffffffffffffffffffffffffffffffffffffff16146119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a90614939565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90614859565b60405180910390fd5b611a3e828261348e565b5050565b6000601b54905090565b600b5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a806124c1565b73ffffffffffffffffffffffffffffffffffffffff16611a9e611862565b73ffffffffffffffffffffffffffffffffffffffff1614611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90614939565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611b576124c1565b73ffffffffffffffffffffffffffffffffffffffff16611b75611862565b73ffffffffffffffffffffffffffffffffffffffff1614611bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc290614939565b60405180910390fd5b806006819055506064600654600a54611be49190614bbb565b611bee9190614b8a565b60148190555050565b6000611c0b611c046124c1565b8484612694565b6001905092915050565b611c1d6124c1565b73ffffffffffffffffffffffffffffffffffffffff16611c3b611862565b73ffffffffffffffffffffffffffffffffffffffff1614611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8890614939565b60405180910390fd5b6005601b81905550600560208190555060026019819055506002601e81905550611cbb60006116ae565b565b611cc56124c1565b73ffffffffffffffffffffffffffffffffffffffff16611ce3611862565b73ffffffffffffffffffffffffffffffffffffffff1614611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3090614939565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000601454905090565b611dc66124c1565b73ffffffffffffffffffffffffffffffffffffffff16611de4611862565b73ffffffffffffffffffffffffffffffffffffffff1614611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190614939565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e866124c1565b73ffffffffffffffffffffffffffffffffffffffff16611ea4611862565b73ffffffffffffffffffffffffffffffffffffffff1614611efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef190614939565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611fb36124c1565b73ffffffffffffffffffffffffffffffffffffffff16611fd1611862565b73ffffffffffffffffffffffffffffffffffffffff1614612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90614939565b60405180910390fd5b806007819055506103e8600754600a546120419190614bbb565b61204b9190614b8a565b600b8190555050565b6000601d60009054906101000a900460ff16905090565b6120736124c1565b73ffffffffffffffffffffffffffffffffffffffff16612091611862565b73ffffffffffffffffffffffffffffffffffffffff16146120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de90614939565b60405180910390fd5b8060098190555050565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602354905090565b6000601354905090565b6121946124c1565b73ffffffffffffffffffffffffffffffffffffffff166121b2611862565b73ffffffffffffffffffffffffffffffffffffffff1614612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90614939565b60405180910390fd5b80601b8190555050565b61221a6124c1565b73ffffffffffffffffffffffffffffffffffffffff16612238611862565b73ffffffffffffffffffffffffffffffffffffffff161461228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590614939565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f590614819565b60405180910390fd5b612307816133ca565b50565b6123126124c1565b73ffffffffffffffffffffffffffffffffffffffff16612330611862565b73ffffffffffffffffffffffffffffffffffffffff1614612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d90614939565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123c1929190614732565b602060405180830381600087803b1580156123db57600080fd5b505af11580156123ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124139190613f92565b50505050565b6124216124c1565b73ffffffffffffffffffffffffffffffffffffffff1661243f611862565b73ffffffffffffffffffffffffffffffffffffffff1614612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c90614939565b60405180910390fd5b6005601b81905550600260198190555060056020819055506002601e819055506124bf60016116ae565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612539576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612530906149b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a090614839565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161268791906149d9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb90614999565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b906147f9565b60405180910390fd5b600081116127b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ae906148b9565b60405180910390fd5b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561283e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283590614879565b60405180910390fd5b60001515601d60009054906101000a900460ff161515141561293b57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128fb5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61293a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612931906148d9565b60405180910390fd5b5b600860009054906101000a900460ff1615612d2857612958611862565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156129c65750612996611862565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129ff5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612a39575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612d2757601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ae15750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b8857601454821115612b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b22906148f9565b60405180910390fd5b601354612b3784611544565b83612b429190614b34565b1115612b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7a90614959565b60405180910390fd5b612d26565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c2b5750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c7a57601454821115612c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6c90614899565b60405180910390fd5b612d25565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d2457601354612cd784611544565b83612ce29190614b34565b1115612d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1a90614959565b60405180910390fd5b5b5b5b5b5b6000612d3330611544565b9050600b548110158015612d545750602260009054906101000a900460ff16155b8015612dae5750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc65750602260019054906101000a900460ff165b15612de457600b548110612de357600b549050612de28161352f565b5b5b600060019050600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e8b5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e9d576000600481905550600090505b60008082156131995760011515601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612f55575060011515601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8c90614979565b60405180910390fd5b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561303c5750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156130985760006004819055506064602054876130599190614bbb565b6130639190614b8a565b91506064601e54876130759190614bbb565b61307f9190614b8a565b9050808261308d9190614b34565b600481905550613198565b601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561313f5750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156131975760006004819055506064601b548761315c9190614bbb565b6131669190614b8a565b91506064601954876131789190614bbb565b6131829190614b8a565b905080826131909190614b34565b6004819055505b5b5b85856131a59190614c15565b600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508082876131f59190614c15565b6131ff9190614c15565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461324d9190614b34565b925050819055506000811461334e57600454600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132ad9190614b34565b9250508190555080602460008282546132c69190614b34565b9250508190555081602360008282546132df9190614b34565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405161334591906149d9565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454896133ab9190614c15565b6040516133b891906149d9565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602260006101000a81548160ff0219169083151502179055506135556024546135c5565b613560602354613650565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019048160405161358f91906149d9565b60405180910390a1600060238190555060006024819055506000602260006101000a81548160ff02191690831515021790555050565b60006002826135d49190614b8a565b9050600081836135e49190614c15565b905060004790506135f483613936565b600081476136029190614c15565b905061360e8382613bfa565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161364193929190614aa8565b60405180910390a15050505050565b6000600267ffffffffffffffff811115613693577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156136c15781602001602082028036833780820191505090505b50905030816000815181106136ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156137a157600080fd5b505afa1580156137b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d99190613dd8565b81600181518110613813577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061387a30602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124c9565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016139009594939291906149f4565b600060405180830381600087803b15801561391a57600080fd5b505af115801561392e573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613979577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156139a75781602001602082028036833780820191505090505b50905030816000815181106139e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a8757600080fd5b505afa158015613a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613abf9190613dd8565b81600181518110613af9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b6030602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124c9565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613bc4959493929190614a4e565b600060405180830381600087803b158015613bde57600080fd5b505af1158015613bf2573d6000803e3d6000fd5b505050505050565b613c2730602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124c9565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b8152600401613cae9695949392919061475b565b6060604051808303818588803b158015613cc757600080fd5b505af1158015613cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d009190614033565b5050505050565b600081359050613d1681614e00565b92915050565b600081519050613d2b81614e00565b92915050565b600081359050613d4081614e17565b92915050565b600081359050613d5581614e2e565b92915050565b600081519050613d6a81614e2e565b92915050565b600081359050613d7f81614e45565b92915050565b600081359050613d9481614e5c565b92915050565b600081519050613da981614e5c565b92915050565b600060208284031215613dc157600080fd5b6000613dcf84828501613d07565b91505092915050565b600060208284031215613dea57600080fd5b6000613df884828501613d1c565b91505092915050565b600060208284031215613e1357600080fd5b6000613e2184828501613d31565b91505092915050565b60008060408385031215613e3d57600080fd5b6000613e4b85828601613d31565b9250506020613e5c85828601613d46565b9150509250929050565b60008060408385031215613e7957600080fd5b6000613e8785828601613d07565b9250506020613e9885828601613d07565b9150509250929050565b600080600060608486031215613eb757600080fd5b6000613ec586828701613d07565b9350506020613ed686828701613d07565b9250506040613ee786828701613d85565b9150509250925092565b60008060408385031215613f0457600080fd5b6000613f1285828601613d07565b9250506020613f2385828601613d46565b9150509250929050565b60008060408385031215613f4057600080fd5b6000613f4e85828601613d07565b9250506020613f5f85828601613d85565b9150509250929050565b600060208284031215613f7b57600080fd5b6000613f8984828501613d46565b91505092915050565b600060208284031215613fa457600080fd5b6000613fb284828501613d5b565b91505092915050565b600080600060608486031215613fd057600080fd5b6000613fde86828701613d70565b9350506020613fef86828701613d31565b925050604061400086828701613d85565b9150509250925092565b60006020828403121561401c57600080fd5b600061402a84828501613d85565b91505092915050565b60008060006060848603121561404857600080fd5b600061405686828701613d9a565b935050602061406786828701613d9a565b925050604061407886828701613d9a565b9150509250925092565b600061408e83836140b8565b60208301905092915050565b6140a381614cb5565b82525050565b6140b281614c5b565b82525050565b6140c181614c49565b82525050565b6140d081614c49565b82525050565b60006140e182614aef565b6140eb8185614b12565b93506140f683614adf565b8060005b8381101561412757815161410e8882614082565b975061411983614b05565b9250506001810190506140fa565b5085935050505092915050565b61413d81614c6d565b82525050565b61414c81614cc7565b82525050565b600061415d82614afa565b6141678185614b23565b9350614177818560208601614cfd565b61418081614def565b840191505092915050565b6000614198602383614b23565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141fe602683614b23565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614264602283614b23565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006142ca603983614b23565b91507f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008301527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006020830152604082019050919050565b6000614330602683614b23565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614396603683614b23565b91507f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008301527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006020830152604082019050919050565b60006143fc603283614b23565b91507f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008301527f2067726561746572207468616e207a65726f00000000000000000000000000006020830152604082019050919050565b6000614462601d83614b23565b91507f43616e742074726164652c2074726164652069732064697361626c65640000006000830152602082019050919050565b60006144a2603583614b23565b91507f427579207472616e7366657220616d6f756e742065786365656473207468652060008301527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006020830152604082019050919050565b6000614508602883614b23565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b600061456e602083614b23565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006145ae601b83614b23565b91507f556e61626c6520746f20657863656564204d61782057616c6c657400000000006000830152602082019050919050565b60006145ee601883614b23565b91507f4e6f20626f747320616c6c6f77656420746f20747261646500000000000000006000830152602082019050919050565b600061462e602583614b23565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614694602483614b23565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6146f681614cab565b82525050565b600060208201905061471160008301846140c7565b92915050565b600060208201905061472c60008301846140a9565b92915050565b6000604082019050614747600083018561409a565b61475460208301846146ed565b9392505050565b600060c08201905061477060008301896140c7565b61477d60208301886146ed565b61478a6040830187614143565b6147976060830186614143565b6147a460808301856140c7565b6147b160a08301846146ed565b979650505050505050565b60006020820190506147d16000830184614134565b92915050565b600060208201905081810360008301526147f18184614152565b905092915050565b600060208201905081810360008301526148128161418b565b9050919050565b60006020820190508181036000830152614832816141f1565b9050919050565b6000602082019050818103600083015261485281614257565b9050919050565b60006020820190508181036000830152614872816142bd565b9050919050565b6000602082019050818103600083015261489281614323565b9050919050565b600060208201905081810360008301526148b281614389565b9050919050565b600060208201905081810360008301526148d2816143ef565b9050919050565b600060208201905081810360008301526148f281614455565b9050919050565b6000602082019050818103600083015261491281614495565b9050919050565b60006020820190508181036000830152614932816144fb565b9050919050565b6000602082019050818103600083015261495281614561565b9050919050565b60006020820190508181036000830152614972816145a1565b9050919050565b60006020820190508181036000830152614992816145e1565b9050919050565b600060208201905081810360008301526149b281614621565b9050919050565b600060208201905081810360008301526149d281614687565b9050919050565b60006020820190506149ee60008301846146ed565b92915050565b600060a082019050614a0960008301886146ed565b614a166020830187614143565b8181036040830152614a2881866140d6565b9050614a37606083018561409a565b614a4460808301846146ed565b9695505050505050565b600060a082019050614a6360008301886146ed565b614a706020830187614143565b8181036040830152614a8281866140d6565b9050614a9160608301856140c7565b614a9e60808301846146ed565b9695505050505050565b6000606082019050614abd60008301866146ed565b614aca60208301856146ed565b614ad760408301846146ed565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614b3f82614cab565b9150614b4a83614cab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b7f57614b7e614d62565b5b828201905092915050565b6000614b9582614cab565b9150614ba083614cab565b925082614bb057614baf614d91565b5b828204905092915050565b6000614bc682614cab565b9150614bd183614cab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c0a57614c09614d62565b5b828202905092915050565b6000614c2082614cab565b9150614c2b83614cab565b925082821015614c3e57614c3d614d62565b5b828203905092915050565b6000614c5482614c8b565b9050919050565b6000614c6682614c8b565b9050919050565b60008115159050919050565b6000614c8482614c49565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000614cc082614cd9565b9050919050565b6000614cd282614cab565b9050919050565b6000614ce482614ceb565b9050919050565b6000614cf682614c8b565b9050919050565b60005b83811015614d1b578082015181840152602081019050614d00565b83811115614d2a576000848401525b50505050565b60006002820490506001821680614d4857607f821691505b60208210811415614d5c57614d5b614dc0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614e0981614c49565b8114614e1457600080fd5b50565b614e2081614c5b565b8114614e2b57600080fd5b50565b614e3781614c6d565b8114614e4257600080fd5b50565b614e4e81614c79565b8114614e5957600080fd5b50565b614e6581614cab565b8114614e7057600080fd5b5056fea264697066735822122075ccbae8438c6842f91d63c2f7f0699b797a0d91152622c1470223b11b21342664736f6c63430008000033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c80638cd0260c116101c6578063bf9b0159116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610c57578063f2fde38b14610c80578063f7da678514610ca9578063f953cf3a14610cd257610376565b8063dd62ed3e14610bc4578063ddcf9b9814610c01578063e1370dd314610c2c57610376565b8063cba0e996116100d1578063cba0e99614610b0a578063d1294d4c14610b47578063d15bcf0f14610b70578063d7d7442f14610b9b57610376565b8063bf9b015914610a8d578063bf9eb54014610ab8578063cb66453414610ae157610376565b8063a5ece94111610164578063a9059cbb1161013e578063a9059cbb146109d3578063b195b83914610a10578063b4d95a9314610a27578063b62496f514610a5057610376565b8063a5ece94114610956578063a6c38f5914610981578063a7a07452146109aa57610376565b806395d89b41116101a057806395d89b41146108ac5780639a7a23d6146108d75780639b136da414610900578063a04bdc811461092b57610376565b80638cd0260c1461082d5780638da5cb5b1461085657806390f502831461088157610376565b80634a62bb65116102a05780636df3333a1161023e578063751039fc11610218578063751039fc14610799578063801527ce146107b05780638628c23f146107d9578063893d20e81461080257610376565b80636df3333a1461071a57806370a0823114610745578063715018a61461078257610376565b80635297defd1161027a5780635297defd146106725780635be76f111461069d57806364c16163146106c65780636573c4df146106f157610376565b80634a62bb65146105f15780634a74bb021461061c5780634bd7ace51461064757610376565b806323b872dd1161030d578063313ce567116102e7578063313ce56714610547578063487a69051461057257806349bd5a5e1461059d5780634a0e963c146105c857610376565b806323b872dd146104b657806327c8f835146104f35780632d03420b1461051e57610376565b806313b4a7f41161034957806313b4a7f41461040c57806318160ddd14610435578063220f66961461046057806322788f861461048b57610376565b806306fdde031461037b5780630882a863146103a6578063095ea7b3146103cf57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610ce9565b60405161039d91906147d7565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061400a565b610d7b565b005b3480156103db57600080fd5b506103f660048036038101906103f19190613f2d565b610e01565b60405161040391906147bc565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e9190613e66565b610e1f565b005b34801561044157600080fd5b5061044a610fff565b60405161045791906149d9565b60405180910390f35b34801561046c57600080fd5b50610475611009565b60405161048291906147bc565b60405180910390f35b34801561049757600080fd5b506104a061101c565b6040516104ad91906149d9565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190613ea2565b611026565b6040516104ea91906147bc565b60405180910390f35b3480156104ff57600080fd5b506105086111a4565b60405161051591906146fc565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190613f69565b6111c8565b005b34801561055357600080fd5b5061055c611261565b60405161056991906149d9565b60405180910390f35b34801561057e57600080fd5b5061058761127b565b60405161059491906149d9565b60405180910390f35b3480156105a957600080fd5b506105b2611285565b6040516105bf91906146fc565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea9190613daf565b6112ab565b005b3480156105fd57600080fd5b50610606611382565b60405161061391906147bc565b60405180910390f35b34801561062857600080fd5b50610631611395565b60405161063e91906147bc565b60405180910390f35b34801561065357600080fd5b5061065c6113a8565b60405161066991906149d9565b60405180910390f35b34801561067e57600080fd5b506106876113b2565b60405161069491906149d9565b60405180910390f35b3480156106a957600080fd5b506106c460048036038101906106bf9190613e01565b6113bc565b005b3480156106d257600080fd5b506106db611488565b6040516106e891906149d9565b60405180910390f35b3480156106fd57600080fd5b506107186004803603810190610713919061400a565b611492565b005b34801561072657600080fd5b5061072f61153a565b60405161073c91906149d9565b60405180910390f35b34801561075157600080fd5b5061076c60048036038101906107679190613daf565b611544565b60405161077991906149d9565b60405180910390f35b34801561078e57600080fd5b5061079761158d565b005b3480156107a557600080fd5b506107ae611615565b005b3480156107bc57600080fd5b506107d760048036038101906107d29190613f69565b6116ae565b005b3480156107e557600080fd5b5061080060048036038101906107fb919061400a565b611747565b005b34801561080e57600080fd5b506108176117cd565b60405161082491906146fc565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f919061400a565b6117dc565b005b34801561086257600080fd5b5061086b611862565b60405161087891906146fc565b60405180910390f35b34801561088d57600080fd5b5061089661188b565b6040516108a391906149d9565b60405180910390f35b3480156108b857600080fd5b506108c1611895565b6040516108ce91906147d7565b60405180910390f35b3480156108e357600080fd5b506108fe60048036038101906108f99190613ef1565b611927565b005b34801561090c57600080fd5b50610915611a42565b60405161092291906149d9565b60405180910390f35b34801561093757600080fd5b50610940611a4c565b60405161094d91906149d9565b60405180910390f35b34801561096257600080fd5b5061096b611a52565b6040516109789190614717565b60405180910390f35b34801561098d57600080fd5b506109a860048036038101906109a39190613e2a565b611a78565b005b3480156109b657600080fd5b506109d160048036038101906109cc919061400a565b611b4f565b005b3480156109df57600080fd5b506109fa60048036038101906109f59190613f2d565b611bf7565b604051610a0791906147bc565b60405180910390f35b348015610a1c57600080fd5b50610a25611c15565b005b348015610a3357600080fd5b50610a4e6004803603810190610a499190613daf565b611cbd565b005b348015610a5c57600080fd5b50610a776004803603810190610a729190613daf565b611d94565b604051610a8491906147bc565b60405180910390f35b348015610a9957600080fd5b50610aa2611db4565b604051610aaf91906149d9565b60405180910390f35b348015610ac457600080fd5b50610adf6004803603810190610ada9190613daf565b611dbe565b005b348015610aed57600080fd5b50610b086004803603810190610b039190613daf565b611e7e565b005b348015610b1657600080fd5b50610b316004803603810190610b2c9190613daf565b611f55565b604051610b3e91906147bc565b60405180910390f35b348015610b5357600080fd5b50610b6e6004803603810190610b69919061400a565b611fab565b005b348015610b7c57600080fd5b50610b85612054565b604051610b9291906147bc565b60405180910390f35b348015610ba757600080fd5b50610bc26004803603810190610bbd919061400a565b61206b565b005b348015610bd057600080fd5b50610beb6004803603810190610be69190613e66565b6120f1565b604051610bf891906149d9565b60405180910390f35b348015610c0d57600080fd5b50610c16612178565b604051610c2391906149d9565b60405180910390f35b348015610c3857600080fd5b50610c41612182565b604051610c4e91906149d9565b60405180910390f35b348015610c6357600080fd5b50610c7e6004803603810190610c79919061400a565b61218c565b005b348015610c8c57600080fd5b50610ca76004803603810190610ca29190613daf565b612212565b005b348015610cb557600080fd5b50610cd06004803603810190610ccb9190613fbb565b61230a565b005b348015610cde57600080fd5b50610ce7612419565b005b606060018054610cf890614d30565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2490614d30565b8015610d715780601f10610d4657610100808354040283529160200191610d71565b820191906000526020600020905b815481529060010190602001808311610d5457829003601f168201915b5050505050905090565b610d836124c1565b73ffffffffffffffffffffffffffffffffffffffff16610da1611862565b73ffffffffffffffffffffffffffffffffffffffff1614610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90614939565b60405180910390fd5b8060198190555050565b6000610e15610e0e6124c1565b84846124c9565b6001905092915050565b610e276124c1565b73ffffffffffffffffffffffffffffffffffffffff16610e45611862565b73ffffffffffffffffffffffffffffffffffffffff1614610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9290614939565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600a54905090565b602260009054906101000a900460ff1681565b6000600954905090565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110716124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590614919565b60405180910390fd5b6110f9848484612694565b611199846111056124c1565b84600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061114f6124c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111949190614c15565b6124c9565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6111d06124c1565b73ffffffffffffffffffffffffffffffffffffffff166111ee611862565b73ffffffffffffffffffffffffffffffffffffffff1614611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b90614939565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600b54905090565b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112b36124c1565b73ffffffffffffffffffffffffffffffffffffffff166112d1611862565b73ffffffffffffffffffffffffffffffffffffffff1614611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e90614939565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600860009054906101000a900460ff1681565b602260019054906101000a900460ff1681565b6000601954905090565b6000602054905090565b6113c46124c1565b73ffffffffffffffffffffffffffffffffffffffff166113e2611862565b73ffffffffffffffffffffffffffffffffffffffff1614611438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f90614939565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611483573d6000803e3d6000fd5b505050565b6000602454905090565b61149a6124c1565b73ffffffffffffffffffffffffffffffffffffffff166114b8611862565b73ffffffffffffffffffffffffffffffffffffffff161461150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590614939565b60405180910390fd5b806005819055506064600554600a546115279190614bbb565b6115319190614b8a565b60138190555050565b6000600754905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115956124c1565b73ffffffffffffffffffffffffffffffffffffffff166115b3611862565b73ffffffffffffffffffffffffffffffffffffffff1614611609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160090614939565b60405180910390fd5b61161360006133ca565b565b61161d6124c1565b73ffffffffffffffffffffffffffffffffffffffff1661163b611862565b73ffffffffffffffffffffffffffffffffffffffff1614611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890614939565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550565b6116b66124c1565b73ffffffffffffffffffffffffffffffffffffffff166116d4611862565b73ffffffffffffffffffffffffffffffffffffffff161461172a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172190614939565b60405180910390fd5b80602260016101000a81548160ff02191690831515021790555050565b61174f6124c1565b73ffffffffffffffffffffffffffffffffffffffff1661176d611862565b73ffffffffffffffffffffffffffffffffffffffff16146117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90614939565b60405180910390fd5b8060208190555050565b60006117d7611862565b905090565b6117e46124c1565b73ffffffffffffffffffffffffffffffffffffffff16611802611862565b73ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90614939565b60405180910390fd5b80601e8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601e54905090565b6060600280546118a490614d30565b80601f01602080910402602001604051908101604052809291908181526020018280546118d090614d30565b801561191d5780601f106118f25761010080835404028352916020019161191d565b820191906000526020600020905b81548152906001019060200180831161190057829003601f168201915b5050505050905090565b61192f6124c1565b73ffffffffffffffffffffffffffffffffffffffff1661194d611862565b73ffffffffffffffffffffffffffffffffffffffff16146119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a90614939565b60405180910390fd5b602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b90614859565b60405180910390fd5b611a3e828261348e565b5050565b6000601b54905090565b600b5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a806124c1565b73ffffffffffffffffffffffffffffffffffffffff16611a9e611862565b73ffffffffffffffffffffffffffffffffffffffff1614611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90614939565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611b576124c1565b73ffffffffffffffffffffffffffffffffffffffff16611b75611862565b73ffffffffffffffffffffffffffffffffffffffff1614611bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc290614939565b60405180910390fd5b806006819055506064600654600a54611be49190614bbb565b611bee9190614b8a565b60148190555050565b6000611c0b611c046124c1565b8484612694565b6001905092915050565b611c1d6124c1565b73ffffffffffffffffffffffffffffffffffffffff16611c3b611862565b73ffffffffffffffffffffffffffffffffffffffff1614611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8890614939565b60405180910390fd5b6005601b81905550600560208190555060026019819055506002601e81905550611cbb60006116ae565b565b611cc56124c1565b73ffffffffffffffffffffffffffffffffffffffff16611ce3611862565b73ffffffffffffffffffffffffffffffffffffffff1614611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3090614939565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000601454905090565b611dc66124c1565b73ffffffffffffffffffffffffffffffffffffffff16611de4611862565b73ffffffffffffffffffffffffffffffffffffffff1614611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190614939565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e866124c1565b73ffffffffffffffffffffffffffffffffffffffff16611ea4611862565b73ffffffffffffffffffffffffffffffffffffffff1614611efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef190614939565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611fb36124c1565b73ffffffffffffffffffffffffffffffffffffffff16611fd1611862565b73ffffffffffffffffffffffffffffffffffffffff1614612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90614939565b60405180910390fd5b806007819055506103e8600754600a546120419190614bbb565b61204b9190614b8a565b600b8190555050565b6000601d60009054906101000a900460ff16905090565b6120736124c1565b73ffffffffffffffffffffffffffffffffffffffff16612091611862565b73ffffffffffffffffffffffffffffffffffffffff16146120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de90614939565b60405180910390fd5b8060098190555050565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602354905090565b6000601354905090565b6121946124c1565b73ffffffffffffffffffffffffffffffffffffffff166121b2611862565b73ffffffffffffffffffffffffffffffffffffffff1614612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90614939565b60405180910390fd5b80601b8190555050565b61221a6124c1565b73ffffffffffffffffffffffffffffffffffffffff16612238611862565b73ffffffffffffffffffffffffffffffffffffffff161461228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228590614939565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f590614819565b60405180910390fd5b612307816133ca565b50565b6123126124c1565b73ffffffffffffffffffffffffffffffffffffffff16612330611862565b73ffffffffffffffffffffffffffffffffffffffff1614612386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237d90614939565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016123c1929190614732565b602060405180830381600087803b1580156123db57600080fd5b505af11580156123ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124139190613f92565b50505050565b6124216124c1565b73ffffffffffffffffffffffffffffffffffffffff1661243f611862565b73ffffffffffffffffffffffffffffffffffffffff1614612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c90614939565b60405180910390fd5b6005601b81905550600260198190555060056020819055506002601e819055506124bf60016116ae565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612539576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612530906149b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a090614839565b60405180910390fd5b80600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161268791906149d9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb90614999565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276b906147f9565b60405180910390fd5b600081116127b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ae906148b9565b60405180910390fd5b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561283e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283590614879565b60405180910390fd5b60001515601d60009054906101000a900460ff161515141561293b57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128fb5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61293a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612931906148d9565b60405180910390fd5b5b600860009054906101000a900460ff1615612d2857612958611862565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156129c65750612996611862565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129ff5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612a39575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612d2757601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ae15750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b8857601454821115612b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b22906148f9565b60405180910390fd5b601354612b3784611544565b83612b429190614b34565b1115612b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7a90614959565b60405180910390fd5b612d26565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c2b5750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c7a57601454821115612c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6c90614899565b60405180910390fd5b612d25565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d2457601354612cd784611544565b83612ce29190614b34565b1115612d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1a90614959565b60405180910390fd5b5b5b5b5b5b6000612d3330611544565b9050600b548110158015612d545750602260009054906101000a900460ff16155b8015612dae5750602660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc65750602260019054906101000a900460ff165b15612de457600b548110612de357600b549050612de28161352f565b5b5b600060019050600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e8b5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e9d576000600481905550600090505b60008082156131995760011515601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480612f55575060011515601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8c90614979565b60405180910390fd5b601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561303c5750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156130985760006004819055506064602054876130599190614bbb565b6130639190614b8a565b91506064601e54876130759190614bbb565b61307f9190614b8a565b9050808261308d9190614b34565b600481905550613198565b601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561313f5750602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156131975760006004819055506064601b548761315c9190614bbb565b6131669190614b8a565b91506064601954876131789190614bbb565b6131829190614b8a565b905080826131909190614b34565b6004819055505b5b5b85856131a59190614c15565b600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508082876131f59190614c15565b6131ff9190614c15565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461324d9190614b34565b925050819055506000811461334e57600454600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132ad9190614b34565b9250508190555080602460008282546132c69190614b34565b9250508190555081602360008282546132df9190614b34565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405161334591906149d9565b60405180910390a35b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454896133ab9190614c15565b6040516133b891906149d9565b60405180910390a35050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602260006101000a81548160ff0219169083151502179055506135556024546135c5565b613560602354613650565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019048160405161358f91906149d9565b60405180910390a1600060238190555060006024819055506000602260006101000a81548160ff02191690831515021790555050565b60006002826135d49190614b8a565b9050600081836135e49190614c15565b905060004790506135f483613936565b600081476136029190614c15565b905061360e8382613bfa565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161364193929190614aa8565b60405180910390a15050505050565b6000600267ffffffffffffffff811115613693577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156136c15781602001602082028036833780820191505090505b50905030816000815181106136ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156137a157600080fd5b505afa1580156137b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d99190613dd8565b81600181518110613813577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061387a30602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124c9565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016139009594939291906149f4565b600060405180830381600087803b15801561391a57600080fd5b505af115801561392e573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613979577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156139a75781602001602082028036833780820191505090505b50905030816000815181106139e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613a8757600080fd5b505afa158015613a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613abf9190613dd8565b81600181518110613af9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b6030602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124c9565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613bc4959493929190614a4e565b600060405180830381600087803b158015613bde57600080fd5b505af1158015613bf2573d6000803e3d6000fd5b505050505050565b613c2730602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846124c9565b602560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b8152600401613cae9695949392919061475b565b6060604051808303818588803b158015613cc757600080fd5b505af1158015613cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d009190614033565b5050505050565b600081359050613d1681614e00565b92915050565b600081519050613d2b81614e00565b92915050565b600081359050613d4081614e17565b92915050565b600081359050613d5581614e2e565b92915050565b600081519050613d6a81614e2e565b92915050565b600081359050613d7f81614e45565b92915050565b600081359050613d9481614e5c565b92915050565b600081519050613da981614e5c565b92915050565b600060208284031215613dc157600080fd5b6000613dcf84828501613d07565b91505092915050565b600060208284031215613dea57600080fd5b6000613df884828501613d1c565b91505092915050565b600060208284031215613e1357600080fd5b6000613e2184828501613d31565b91505092915050565b60008060408385031215613e3d57600080fd5b6000613e4b85828601613d31565b9250506020613e5c85828601613d46565b9150509250929050565b60008060408385031215613e7957600080fd5b6000613e8785828601613d07565b9250506020613e9885828601613d07565b9150509250929050565b600080600060608486031215613eb757600080fd5b6000613ec586828701613d07565b9350506020613ed686828701613d07565b9250506040613ee786828701613d85565b9150509250925092565b60008060408385031215613f0457600080fd5b6000613f1285828601613d07565b9250506020613f2385828601613d46565b9150509250929050565b60008060408385031215613f4057600080fd5b6000613f4e85828601613d07565b9250506020613f5f85828601613d85565b9150509250929050565b600060208284031215613f7b57600080fd5b6000613f8984828501613d46565b91505092915050565b600060208284031215613fa457600080fd5b6000613fb284828501613d5b565b91505092915050565b600080600060608486031215613fd057600080fd5b6000613fde86828701613d70565b9350506020613fef86828701613d31565b925050604061400086828701613d85565b9150509250925092565b60006020828403121561401c57600080fd5b600061402a84828501613d85565b91505092915050565b60008060006060848603121561404857600080fd5b600061405686828701613d9a565b935050602061406786828701613d9a565b925050604061407886828701613d9a565b9150509250925092565b600061408e83836140b8565b60208301905092915050565b6140a381614cb5565b82525050565b6140b281614c5b565b82525050565b6140c181614c49565b82525050565b6140d081614c49565b82525050565b60006140e182614aef565b6140eb8185614b12565b93506140f683614adf565b8060005b8381101561412757815161410e8882614082565b975061411983614b05565b9250506001810190506140fa565b5085935050505092915050565b61413d81614c6d565b82525050565b61414c81614cc7565b82525050565b600061415d82614afa565b6141678185614b23565b9350614177818560208601614cfd565b61418081614def565b840191505092915050565b6000614198602383614b23565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141fe602683614b23565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614264602283614b23565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006142ca603983614b23565b91507f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008301527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006020830152604082019050919050565b6000614330602683614b23565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614396603683614b23565b91507f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008301527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006020830152604082019050919050565b60006143fc603283614b23565b91507f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008301527f2067726561746572207468616e207a65726f00000000000000000000000000006020830152604082019050919050565b6000614462601d83614b23565b91507f43616e742074726164652c2074726164652069732064697361626c65640000006000830152602082019050919050565b60006144a2603583614b23565b91507f427579207472616e7366657220616d6f756e742065786365656473207468652060008301527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006020830152604082019050919050565b6000614508602883614b23565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b600061456e602083614b23565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006145ae601b83614b23565b91507f556e61626c6520746f20657863656564204d61782057616c6c657400000000006000830152602082019050919050565b60006145ee601883614b23565b91507f4e6f20626f747320616c6c6f77656420746f20747261646500000000000000006000830152602082019050919050565b600061462e602583614b23565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614694602483614b23565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6146f681614cab565b82525050565b600060208201905061471160008301846140c7565b92915050565b600060208201905061472c60008301846140a9565b92915050565b6000604082019050614747600083018561409a565b61475460208301846146ed565b9392505050565b600060c08201905061477060008301896140c7565b61477d60208301886146ed565b61478a6040830187614143565b6147976060830186614143565b6147a460808301856140c7565b6147b160a08301846146ed565b979650505050505050565b60006020820190506147d16000830184614134565b92915050565b600060208201905081810360008301526147f18184614152565b905092915050565b600060208201905081810360008301526148128161418b565b9050919050565b60006020820190508181036000830152614832816141f1565b9050919050565b6000602082019050818103600083015261485281614257565b9050919050565b60006020820190508181036000830152614872816142bd565b9050919050565b6000602082019050818103600083015261489281614323565b9050919050565b600060208201905081810360008301526148b281614389565b9050919050565b600060208201905081810360008301526148d2816143ef565b9050919050565b600060208201905081810360008301526148f281614455565b9050919050565b6000602082019050818103600083015261491281614495565b9050919050565b60006020820190508181036000830152614932816144fb565b9050919050565b6000602082019050818103600083015261495281614561565b9050919050565b60006020820190508181036000830152614972816145a1565b9050919050565b60006020820190508181036000830152614992816145e1565b9050919050565b600060208201905081810360008301526149b281614621565b9050919050565b600060208201905081810360008301526149d281614687565b9050919050565b60006020820190506149ee60008301846146ed565b92915050565b600060a082019050614a0960008301886146ed565b614a166020830187614143565b8181036040830152614a2881866140d6565b9050614a37606083018561409a565b614a4460808301846146ed565b9695505050505050565b600060a082019050614a6360008301886146ed565b614a706020830187614143565b8181036040830152614a8281866140d6565b9050614a9160608301856140c7565b614a9e60808301846146ed565b9695505050505050565b6000606082019050614abd60008301866146ed565b614aca60208301856146ed565b614ad760408301846146ed565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614b3f82614cab565b9150614b4a83614cab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b7f57614b7e614d62565b5b828201905092915050565b6000614b9582614cab565b9150614ba083614cab565b925082614bb057614baf614d91565b5b828204905092915050565b6000614bc682614cab565b9150614bd183614cab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c0a57614c09614d62565b5b828202905092915050565b6000614c2082614cab565b9150614c2b83614cab565b925082821015614c3e57614c3d614d62565b5b828203905092915050565b6000614c5482614c8b565b9050919050565b6000614c6682614c8b565b9050919050565b60008115159050919050565b6000614c8482614c49565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000614cc082614cd9565b9050919050565b6000614cd282614cab565b9050919050565b6000614ce482614ceb565b9050919050565b6000614cf682614c8b565b9050919050565b60005b83811015614d1b578082015181840152602081019050614d00565b83811115614d2a576000848401525b50505050565b60006002820490506001821680614d4857607f821691505b60208210811415614d5c57614d5b614dc0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614e0981614c49565b8114614e1457600080fd5b50565b614e2081614c5b565b8114614e2b57600080fd5b50565b614e3781614c6d565b8114614e4257600080fd5b50565b614e4e81614c79565b8114614e5957600080fd5b50565b614e6581614cab565b8114614e7057600080fd5b5056fea264697066735822122075ccbae8438c6842f91d63c2f7f0699b797a0d91152622c1470223b11b21342664736f6c63430008000033
Deployed Bytecode Sourcemap
5489:16497:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10308:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20804:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9955:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19103:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9365:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7324:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11807:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10848:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7406:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17301:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10218:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21878:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7917:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18857:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5826:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7359:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11380:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11697:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17115:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9257:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10659:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21775:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9482:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4854:94;;;;;;;;;;;;;:::i;:::-;;10129:81;;;;;;;;;;;;;:::i;:::-;;19956:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21166:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9054:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21047:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4203:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11593:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10390:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20360:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11482:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6074:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6489:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11244:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10488:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9611:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19413:205;;;;;;;;;;;;;:::i;:::-;;18979:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6403:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21397:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20107:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16322:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11914:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21492:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21672:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19836:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9798:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9146:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21294:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20921:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5103:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16864:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19624:204;;;;;;;;;;;;;:::i;:::-;;10308:76;10347:13;10374:5;10367:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10308:76;:::o;20804:111::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20898:9:::1;20886;:21;;;;20804:111:::0;:::o;9955:168::-;10032:4;10052:37;10061:12;:10;:12::i;:::-;10074:7;10082:6;10052:8;:37::i;:::-;10111:4;10104:11;;9955:168;;;;:::o;19103:302::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19246:4:::1;19209:17;:34;19235:6;19209:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19290:4;19261:17;:26;19279:7;19261:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19341:4;19305:16;:33;19330:6;19305:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;19384:4;19356:16;:25;19373:7;19356:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19103:302:::0;;:::o;9365:106::-;9420:7;9450:12;;9443:19;;9365:106;:::o;7324:28::-;;;;;;;;;;;;;:::o;11807:101::-;11858:7;11884:16;;11877:23;;11807:101;:::o;10848:388::-;10980:4;11014:11;:19;11026:6;11014:19;;;;;;;;;;;;;;;:33;11034:12;:10;:12::i;:::-;11014:33;;;;;;;;;;;;;;;;11004:6;:43;;10996:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11097:36;11107:6;11115:9;11126:6;11097:9;:36::i;:::-;11138:74;11147:6;11155:12;:10;:12::i;:::-;11205:6;11169:11;:19;11181:6;11169:19;;;;;;;;;;;;;;;:33;11189:12;:10;:12::i;:::-;11169:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;11138:8;:74::i;:::-;11224:4;11217:11;;10848:388;;;;;:::o;7406:81::-;;;:::o;17301:90::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17377:6:::1;17362:12;;:21;;;;;;;;;;;;;;;;;;17301:90:::0;:::o;10218:84::-;10259:7;10285:9;;;;;;;;;;;10278:16;;;;10218:84;:::o;21878:105::-;21929:7;21955:20;;21948:27;;21878:105;:::o;7917:28::-;;;;;;;;;;;;;:::o;18857:114::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18959:4:::1;18928:17;:28;18946:9;18928:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18857:114:::0;:::o;5826:33::-;;;;;;;;;;;;;:::o;7359:40::-;;;;;;;;;;;;;:::o;11380:96::-;11429:7;11459:9;;11452:16;;11380:96;:::o;11697:98::-;11747:7;11777:10;;11770:17;;11697:98;:::o;17115:178::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17191:18:::1;17212:21;17191:42;;17252:11;17244:29;;:41;17274:10;17244:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;4494:1;17115:178:::0;:::o;9257:99::-;9308:7;9338:9;;9331:16;;9257:99;:::o;10659:175::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10755:6:::1;10735:17;:26;;;;10821:3;10803:17;;10790:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;10772:15;:52;;;;10659:175:::0;:::o;21775:97::-;21826:7;21852:12;;21845:19;;21775:97;:::o;9482:118::-;9548:7;9574:9;:18;9584:7;9574:18;;;;;;;;;;;;;;;;9567:25;;9482:118;;;:::o;4854:94::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4919:21:::1;4937:1;4919:9;:21::i;:::-;4854:94::o:0;10129:81::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10197:5:::1;10180:14;;:22;;;;;;;;;;;;;;;;;;10129:81::o:0;19956:113::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20053:8:::1;20029:21;;:32;;;;;;;;;;;;;;;;;;19956:113:::0;:::o;21166:112::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21261:9:::1;21249:10;:21;;;;21166:112:::0;:::o;9054:86::-;9095:7;9125;:5;:7::i;:::-;9118:14;;9054:86;:::o;21047:113::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21143:9:::1;21131:10;:21;;;;21047:113:::0;:::o;4203:87::-;4249:7;4276:6;;;;;;;;;;;4269:13;;4203:87;:::o;11593:98::-;11643:7;11673:10;;11666:17;;11593:98;:::o;10390:88::-;10431:13;10463:7;10456:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10390:88;:::o;20360:242::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20467:13:::1;;;;;;;;;;;20459:21;;:4;:21;;;;20451:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;20553:41;20582:4;20588:5;20553:28;:41::i;:::-;20360:242:::0;;:::o;11482:96::-;11531:7;11561:9;;11554:16;;11482:96;:::o;6074:71::-;;;;:::o;6489:93::-;;;;;;;;;;;;;:::o;11244:130::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11361:5:::1;11335:10;:23;11346:11;11335:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;11244:130:::0;;:::o;10488:164::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10576:6:::1;10560:13;:22;;;;10634:3;10620:13;;10607:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;10593:11;:44;;;;10488:164:::0;:::o;9611:176::-;9691:4;9711:40;9721:12;:10;:12::i;:::-;9734:9;9744:6;9711:9;:40::i;:::-;9773:4;9766:11;;9611:176;;;;:::o;19413:205::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19491:1:::1;19479:9;:13;;;;19515:1;19503:10;:13;;;;19538:1;19527:9;:12;;;;19562:1;19550:10;:13;;;;19584:24;19602:5;19584:17;:24::i;:::-;19413:205::o:0;18979:116::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19082:5:::1;19052:17;:27;19070:8;19052:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18979:116:::0;:::o;6403:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;21397:89::-;21441:7;21467:11;;21460:18;;21397:89;:::o;20107:118::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20206:10:::1;20179:16;;:38;;;;;;;;;;;;;;;;;;20107:118:::0;:::o;16322:123::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16426:4:::1;16394:17;:29;16412:10;16394:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;16322:123:::0;:::o;11914:118::-;11971:4;11998:17;:26;12016:7;11998:26;;;;;;;;;;;;;;;;;;;;;;;;;11991:33;;11914:118;;;:::o;21492:174::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21578:6:::1;21563:12;:21;;;;21644:4;21631:12;;21618;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;21595:20;:53;;;;21492:174:::0;:::o;21672:97::-;21723:4;21746:12;;;;;;;;;;;21739:19;;21672:97;:::o;19836:112::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19926:12:::1;19907:16;:31;;;;19836:112:::0;:::o;9798:148::-;9881:7;9911:11;:18;9923:5;9911:18;;;;;;;;;;;;;;;:27;9930:7;9911:27;;;;;;;;;;;;;;;;9904:34;;9798:148;;;;:::o;9146:99::-;9197:7;9227:9;;9220:16;;9146:99;:::o;21294:97::-;21342:7;21368:15;;21361:22;;21294:97;:::o;20921:111::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21015:9:::1;21004;:20;;;;20921:111:::0;:::o;5103:192::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5212:1:::1;5192:22;;:8;:22;;;;5184:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5268:19;5278:8;5268:9;:19::i;:::-;5103:192:::0;:::o;16864:243::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17057:12:::1;:21;;;17079:11;17092:6;17057:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16864:243:::0;;;:::o;19624:204::-;4434:12;:10;:12::i;:::-;4423:23;;:7;:5;:7::i;:::-;:23;;;4415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19691:1:::1;19679:9;:13;;;;19715:1;19703:9;:13;;;;19750:1;19737:10;:14;;;;19775:1;19762:10;:14;;;;19797:23;19815:4;19797:17;:23::i;:::-;19624:204::o:0;163:98::-;216:7;243:10;236:17;;163:98;:::o;18489:322::-;18598:1;18581:19;;:5;:19;;;;18573:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18673:1;18654:21;;:7;:21;;;;18646:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18751:6;18721:11;:18;18733:5;18721:18;;;;;;;;;;;;;;;:27;18740:7;18721:27;;;;;;;;;;;;;;;:36;;;;18783:7;18767:32;;18776:5;18767:32;;;18792:6;18767:32;;;;;;:::i;:::-;;;;;;;;18489:322;;;:::o;12040:4007::-;12154:1;12138:18;;:4;:18;;;;12130:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12225:1;12211:16;;:2;:16;;;;12203:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12295:1;12286:6;:10;12278:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12361:21;12385:9;:15;12395:4;12385:15;;;;;;;;;;;;;;;;12361:39;;12436:6;12419:13;:23;;12411:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12515:5;12499:21;;:12;;;;;;;;;;;:21;;;12496:141;;;12544:17;:21;12562:2;12544:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;12569:17;:23;12587:4;12569:23;;;;;;;;;;;;;;;;;;;;;;;;;12544:48;12536:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;12496:141;12682:14;;;;;;;;;;;12679:1075;;;12742:7;:5;:7::i;:::-;12734:15;;:4;:15;;;;:49;;;;;12776:7;:5;:7::i;:::-;12770:13;;:2;:13;;;;12734:49;:86;;;;;12818:1;12804:16;;:2;:16;;;;12734:86;:128;;;;;12855:6;12841:21;;:2;:21;;;;12734:128;12712:1031;;;12948:25;:31;12974:4;12948:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;12984:31;:35;13016:2;12984:35;;;;;;;;;;;;;;;;;;;;;;;;;12983:36;12948:71;12944:784;;;13062:11;;13052:6;:21;;13044:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;13188:15;;13171:13;13181:2;13171:9;:13::i;:::-;13162:6;:22;;;;:::i;:::-;:41;;13154:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12944:784;;;13336:25;:29;13362:2;13336:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;13370:31;:37;13402:4;13370:37;;;;;;;;;;;;;;;;;;;;;;;;;13369:38;13336:71;13332:396;;;13450:11;;13440:6;:21;;13432:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;13332:396;;;13567:31;:35;13599:2;13567:35;;;;;;;;;;;;;;;;;;;;;;;;;13563:165;;13661:15;;13644:13;13654:2;13644:9;:13::i;:::-;13635:6;:22;;;;:::i;:::-;:41;;13627:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;13563:165;13332:396;12944:784;12712:1031;12679:1075;13765:25;13793:24;13811:4;13793:9;:24::i;:::-;13765:52;;13853:20;;13833:17;:40;;:66;;;;;13883:16;;;;;;;;;;;13882:17;13833:66;:96;;;;;13916:13;;;;;;;;;;;13908:21;;:4;:21;;;;13833:96;:126;;;;;13938:21;;;;;;;;;;;13833:126;13830:352;;;14003:20;;13982:17;:41;13979:188;;14068:20;;14048:40;;14111:36;14129:17;14111;:36::i;:::-;13979:188;13830:352;14198:13;14214:4;14198:20;;14264:17;:23;14282:4;14264:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;14291:17;:21;14309:2;14291:21;;;;;;;;;;;;;;;;;;;;;;;;;14264:48;14261:159;;;14349:1;14333:13;:17;;;;14380:5;14369:16;;14261:159;14434:17;14477;14555:8;14552:1023;;;14652:4;14632:24;;:10;:16;14643:4;14632:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;14674:4;14658:20;;:10;:14;14669:2;14658:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;14632:46;14629:127;;;14702:34;;;;;;;;;;:::i;:::-;;;;;;;;14629:127;14810:25;:29;14836:2;14810:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;14857:7;;;;;;;;;;;14843:22;;:2;:22;;;;14810:55;14806:734;;;14910:1;14894:13;:17;;;;14970:3;14959:10;;14950:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;14938:35;;15032:3;15021:10;;15012:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;15000:35;;15116:9;15104;:21;;;;:::i;:::-;15088:13;:37;;;;14806:734;;;15200:25;:31;15226:4;15200:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;15251:7;;;;;;;;;;;15235:24;;:4;:24;;;;15200:59;15197:343;;;15322:1;15306:13;:17;;;;15377:3;15367:9;;15358:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;15346:34;;15434:3;15424:9;;15415:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;15403:34;;15510:9;15498;:21;;;;:::i;:::-;15482:13;:37;;;;15197:343;14806:734;14552:1023;15625:6;15609:13;:22;;;;:::i;:::-;15591:9;:15;15601:4;15591:15;;;;;;;;;;;;;;;:40;;;;15684:9;15672;15663:6;:18;;;;:::i;:::-;:30;;;;:::i;:::-;15646:9;:13;15656:2;15646:13;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;15724:1;15711:9;:14;15708:249;;15761:13;;15733:9;:24;15751:4;15733:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;15832:9;15819;;:22;;;;;;;:::i;:::-;;;;;;;;15869:9;15856;;:22;;;;;;;:::i;:::-;;;;;;;;15912:4;15889:44;;15898:4;15889:44;;;15919:13;;15889:44;;;;;;:::i;:::-;;;;;;;;15708:249;15991:2;15976:39;;15985:4;15976:39;;;16001:13;;15994:6;:20;;;;:::i;:::-;15976:39;;;;;;:::i;:::-;;;;;;;;12040:4007;;;;;;;;:::o;5303:173::-;5359:16;5378:6;;;;;;;;;;;5359:25;;5404:8;5395:6;;:17;;;;;;;;;;;;;;;;;;5459:8;5428:40;;5449:8;5428:40;;;;;;;;;;;;5303:173;;:::o;20608:188::-;20725:5;20691:25;:31;20717:4;20691:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20782:5;20748:40;;20776:4;20748:40;;;;;;;;;;;;20608:188;;:::o;16053:262::-;8024:4;8005:16;;:23;;;;;;;;;;;;;;;;;;16133:25:::1;16148:9;;16133:14;:25::i;:::-;16169:30;16189:9;;16169:19;:30::i;:::-;16215:44;16245:13;16215:44;;;;;;:::i;:::-;;;;;;;;16282:1;16270:9;:13;;;;16306:1;16294:9;:13;;;;8058:5:::0;8039:16;;:24;;;;;;;;;;;;;;;;;;16053:262;:::o;17399:388::-;17461:12;17494:1;17476:15;:19;;;;:::i;:::-;17461:34;;17500:17;17538:4;17520:15;:22;;;;:::i;:::-;17500:42;;17547:22;17572:21;17547:46;;17600:22;17617:4;17600:16;:22::i;:::-;17627:18;17673:14;17648:21;:40;;;;:::i;:::-;17627:61;;17696:35;17709:9;17720:10;17696:12;:35::i;:::-;17741:41;17756:4;17761:10;17772:9;17741:41;;;;;;;;:::i;:::-;;;;;;;;17399:388;;;;;:::o;16451:399::-;16514:21;16552:1;16538:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16514:40;;16577:4;16559;16564:1;16559:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;16597:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16587:4;16592:1;16587:7;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;;;16616:49;16633:4;16648:7;;;;;;;;;;;16658:6;16616:8;:49::i;:::-;16676:7;;;;;;;;;;;:58;;;16740:6;16752:1;16788:4;16798:16;;;;;;;;;;;16820:15;16676:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16451:399;;:::o;17795:397::-;17854:21;17892:1;17878:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17854:40;;17917:4;17899;17904:1;17899:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;17937:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17927:4;17932:1;17927:7;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;;;17956:54;17973:4;17988:7;;;;;;;;;;;17998:11;17956:8;:54::i;:::-;18021:7;;;;;;;;;;;:58;;;18085:11;18102:1;18138:4;18156;18167:15;18021:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17795:397;;:::o;18204:277::-;18277:54;18294:4;18309:7;;;;;;;;;;;18319:11;18277:8;:54::i;:::-;18338:7;;;;;;;;;;;:23;;;18368:9;18392:4;18403:11;18420:1;18427;18434:11;18456:15;18338:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18204:277;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:137::-;;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;661:77;;;;:::o;744:165::-;;841:6;828:20;819:29;;857:46;897:5;857:46;:::i;:::-;809:100;;;;:::o;915:139::-;;999:6;986:20;977:29;;1015:33;1042:5;1015:33;:::i;:::-;967:87;;;;:::o;1060:143::-;;1148:6;1142:13;1133:22;;1164:33;1191:5;1164:33;:::i;:::-;1123:80;;;;:::o;1209:262::-;;1317:2;1305:9;1296:7;1292:23;1288:32;1285:2;;;1333:1;1330;1323:12;1285:2;1376:1;1401:53;1446:7;1437:6;1426:9;1422:22;1401:53;:::i;:::-;1391:63;;1347:117;1275:196;;;;:::o;1477:284::-;;1596:2;1584:9;1575:7;1571:23;1567:32;1564:2;;;1612:1;1609;1602:12;1564:2;1655:1;1680:64;1736:7;1727:6;1716:9;1712:22;1680:64;:::i;:::-;1670:74;;1626:128;1554:207;;;;:::o;1767:278::-;;1883:2;1871:9;1862:7;1858:23;1854:32;1851:2;;;1899:1;1896;1889:12;1851:2;1942:1;1967:61;2020:7;2011:6;2000:9;1996:22;1967:61;:::i;:::-;1957:71;;1913:125;1841:204;;;;:::o;2051:417::-;;;2181:2;2169:9;2160:7;2156:23;2152:32;2149:2;;;2197:1;2194;2187:12;2149:2;2240:1;2265:61;2318:7;2309:6;2298:9;2294:22;2265:61;:::i;:::-;2255:71;;2211:125;2375:2;2401:50;2443:7;2434:6;2423:9;2419:22;2401:50;:::i;:::-;2391:60;;2346:115;2139:329;;;;;:::o;2474:407::-;;;2599:2;2587:9;2578:7;2574:23;2570:32;2567:2;;;2615:1;2612;2605:12;2567:2;2658:1;2683:53;2728:7;2719:6;2708:9;2704:22;2683:53;:::i;:::-;2673:63;;2629:117;2785:2;2811:53;2856:7;2847:6;2836:9;2832:22;2811:53;:::i;:::-;2801:63;;2756:118;2557:324;;;;;:::o;2887:552::-;;;;3029:2;3017:9;3008:7;3004:23;3000:32;2997:2;;;3045:1;3042;3035:12;2997:2;3088:1;3113:53;3158:7;3149:6;3138:9;3134:22;3113:53;:::i;:::-;3103:63;;3059:117;3215:2;3241:53;3286:7;3277:6;3266:9;3262:22;3241:53;:::i;:::-;3231:63;;3186:118;3343:2;3369:53;3414:7;3405:6;3394:9;3390:22;3369:53;:::i;:::-;3359:63;;3314:118;2987:452;;;;;:::o;3445:401::-;;;3567:2;3555:9;3546:7;3542:23;3538:32;3535:2;;;3583:1;3580;3573:12;3535:2;3626:1;3651:53;3696:7;3687:6;3676:9;3672:22;3651:53;:::i;:::-;3641:63;;3597:117;3753:2;3779:50;3821:7;3812:6;3801:9;3797:22;3779:50;:::i;:::-;3769:60;;3724:115;3525:321;;;;;:::o;3852:407::-;;;3977:2;3965:9;3956:7;3952:23;3948:32;3945:2;;;3993:1;3990;3983:12;3945:2;4036:1;4061:53;4106:7;4097:6;4086:9;4082:22;4061:53;:::i;:::-;4051:63;;4007:117;4163:2;4189:53;4234:7;4225:6;4214:9;4210:22;4189:53;:::i;:::-;4179:63;;4134:118;3935:324;;;;;:::o;4265:256::-;;4370:2;4358:9;4349:7;4345:23;4341:32;4338:2;;;4386:1;4383;4376:12;4338:2;4429:1;4454:50;4496:7;4487:6;4476:9;4472:22;4454:50;:::i;:::-;4444:60;;4400:114;4328:193;;;;:::o;4527:278::-;;4643:2;4631:9;4622:7;4618:23;4614:32;4611:2;;;4659:1;4656;4649:12;4611:2;4702:1;4727:61;4780:7;4771:6;4760:9;4756:22;4727:61;:::i;:::-;4717:71;;4673:125;4601:204;;;;:::o;4811:594::-;;;;4974:2;4962:9;4953:7;4949:23;4945:32;4942:2;;;4990:1;4987;4980:12;4942:2;5033:1;5058:66;5116:7;5107:6;5096:9;5092:22;5058:66;:::i;:::-;5048:76;;5004:130;5173:2;5199:61;5252:7;5243:6;5232:9;5228:22;5199:61;:::i;:::-;5189:71;;5144:126;5309:2;5335:53;5380:7;5371:6;5360:9;5356:22;5335:53;:::i;:::-;5325:63;;5280:118;4932:473;;;;;:::o;5411:262::-;;5519:2;5507:9;5498:7;5494:23;5490:32;5487:2;;;5535:1;5532;5525:12;5487:2;5578:1;5603:53;5648:7;5639:6;5628:9;5624:22;5603:53;:::i;:::-;5593:63;;5549:117;5477:196;;;;:::o;5679:596::-;;;;5832:2;5820:9;5811:7;5807:23;5803:32;5800:2;;;5848:1;5845;5838:12;5800:2;5891:1;5916:64;5972:7;5963:6;5952:9;5948:22;5916:64;:::i;:::-;5906:74;;5862:128;6029:2;6055:64;6111:7;6102:6;6091:9;6087:22;6055:64;:::i;:::-;6045:74;;6000:129;6168:2;6194:64;6250:7;6241:6;6230:9;6226:22;6194:64;:::i;:::-;6184:74;;6139:129;5790:485;;;;;:::o;6281:179::-;;6371:46;6413:3;6405:6;6371:46;:::i;:::-;6449:4;6444:3;6440:14;6426:28;;6361:99;;;;:::o;6466:147::-;6561:45;6600:5;6561:45;:::i;:::-;6556:3;6549:58;6539:74;;:::o;6619:142::-;6722:32;6748:5;6722:32;:::i;:::-;6717:3;6710:45;6700:61;;:::o;6767:108::-;6844:24;6862:5;6844:24;:::i;:::-;6839:3;6832:37;6822:53;;:::o;6881:118::-;6968:24;6986:5;6968:24;:::i;:::-;6963:3;6956:37;6946:53;;:::o;7035:732::-;;7183:54;7231:5;7183:54;:::i;:::-;7253:86;7332:6;7327:3;7253:86;:::i;:::-;7246:93;;7363:56;7413:5;7363:56;:::i;:::-;7442:7;7473:1;7458:284;7483:6;7480:1;7477:13;7458:284;;;7559:6;7553:13;7586:63;7645:3;7630:13;7586:63;:::i;:::-;7579:70;;7672:60;7725:6;7672:60;:::i;:::-;7662:70;;7518:224;7505:1;7502;7498:9;7493:14;;7458:284;;;7462:14;7758:3;7751:10;;7159:608;;;;;;;:::o;7773:109::-;7854:21;7869:5;7854:21;:::i;:::-;7849:3;7842:34;7832:50;;:::o;7888:147::-;7983:45;8022:5;7983:45;:::i;:::-;7978:3;7971:58;7961:74;;:::o;8041:364::-;;8157:39;8190:5;8157:39;:::i;:::-;8212:71;8276:6;8271:3;8212:71;:::i;:::-;8205:78;;8292:52;8337:6;8332:3;8325:4;8318:5;8314:16;8292:52;:::i;:::-;8369:29;8391:6;8369:29;:::i;:::-;8364:3;8360:39;8353:46;;8133:272;;;;;:::o;8411:367::-;;8574:67;8638:2;8633:3;8574:67;:::i;:::-;8567:74;;8671:34;8667:1;8662:3;8658:11;8651:55;8737:5;8732:2;8727:3;8723:12;8716:27;8769:2;8764:3;8760:12;8753:19;;8557:221;;;:::o;8784:370::-;;8947:67;9011:2;9006:3;8947:67;:::i;:::-;8940:74;;9044:34;9040:1;9035:3;9031:11;9024:55;9110:8;9105:2;9100:3;9096:12;9089:30;9145:2;9140:3;9136:12;9129:19;;8930:224;;;:::o;9160:366::-;;9323:67;9387:2;9382:3;9323:67;:::i;:::-;9316:74;;9420:34;9416:1;9411:3;9407:11;9400:55;9486:4;9481:2;9476:3;9472:12;9465:26;9517:2;9512:3;9508:12;9501:19;;9306:220;;;:::o;9532:389::-;;9695:67;9759:2;9754:3;9695:67;:::i;:::-;9688:74;;9792:34;9788:1;9783:3;9779:11;9772:55;9858:27;9853:2;9848:3;9844:12;9837:49;9912:2;9907:3;9903:12;9896:19;;9678:243;;;:::o;9927:370::-;;10090:67;10154:2;10149:3;10090:67;:::i;:::-;10083:74;;10187:34;10183:1;10178:3;10174:11;10167:55;10253:8;10248:2;10243:3;10239:12;10232:30;10288:2;10283:3;10279:12;10272:19;;10073:224;;;:::o;10303:386::-;;10466:67;10530:2;10525:3;10466:67;:::i;:::-;10459:74;;10563:34;10559:1;10554:3;10550:11;10543:55;10629:24;10624:2;10619:3;10615:12;10608:46;10680:2;10675:3;10671:12;10664:19;;10449:240;;;:::o;10695:382::-;;10858:67;10922:2;10917:3;10858:67;:::i;:::-;10851:74;;10955:34;10951:1;10946:3;10942:11;10935:55;11021:20;11016:2;11011:3;11007:12;11000:42;11068:2;11063:3;11059:12;11052:19;;10841:236;;;:::o;11083:327::-;;11246:67;11310:2;11305:3;11246:67;:::i;:::-;11239:74;;11343:31;11339:1;11334:3;11330:11;11323:52;11401:2;11396:3;11392:12;11385:19;;11229:181;;;:::o;11416:385::-;;11579:67;11643:2;11638:3;11579:67;:::i;:::-;11572:74;;11676:34;11672:1;11667:3;11663:11;11656:55;11742:23;11737:2;11732:3;11728:12;11721:45;11792:2;11787:3;11783:12;11776:19;;11562:239;;;:::o;11807:372::-;;11970:67;12034:2;12029:3;11970:67;:::i;:::-;11963:74;;12067:34;12063:1;12058:3;12054:11;12047:55;12133:10;12128:2;12123:3;12119:12;12112:32;12170:2;12165:3;12161:12;12154:19;;11953:226;;;:::o;12185:330::-;;12348:67;12412:2;12407:3;12348:67;:::i;:::-;12341:74;;12445:34;12441:1;12436:3;12432:11;12425:55;12506:2;12501:3;12497:12;12490:19;;12331:184;;;:::o;12521:325::-;;12684:67;12748:2;12743:3;12684:67;:::i;:::-;12677:74;;12781:29;12777:1;12772:3;12768:11;12761:50;12837:2;12832:3;12828:12;12821:19;;12667:179;;;:::o;12852:322::-;;13015:67;13079:2;13074:3;13015:67;:::i;:::-;13008:74;;13112:26;13108:1;13103:3;13099:11;13092:47;13165:2;13160:3;13156:12;13149:19;;12998:176;;;:::o;13180:369::-;;13343:67;13407:2;13402:3;13343:67;:::i;:::-;13336:74;;13440:34;13436:1;13431:3;13427:11;13420:55;13506:7;13501:2;13496:3;13492:12;13485:29;13540:2;13535:3;13531:12;13524:19;;13326:223;;;:::o;13555:368::-;;13718:67;13782:2;13777:3;13718:67;:::i;:::-;13711:74;;13815:34;13811:1;13806:3;13802:11;13795:55;13881:6;13876:2;13871:3;13867:12;13860:28;13914:2;13909:3;13905:12;13898:19;;13701:222;;;:::o;13929:118::-;14016:24;14034:5;14016:24;:::i;:::-;14011:3;14004:37;13994:53;;:::o;14053:222::-;;14184:2;14173:9;14169:18;14161:26;;14197:71;14265:1;14254:9;14250:17;14241:6;14197:71;:::i;:::-;14151:124;;;;:::o;14281:254::-;;14428:2;14417:9;14413:18;14405:26;;14441:87;14525:1;14514:9;14510:17;14501:6;14441:87;:::i;:::-;14395:140;;;;:::o;14541:348::-;;14708:2;14697:9;14693:18;14685:26;;14721:79;14797:1;14786:9;14782:17;14773:6;14721:79;:::i;:::-;14810:72;14878:2;14867:9;14863:18;14854:6;14810:72;:::i;:::-;14675:214;;;;;:::o;14895:807::-;;15182:3;15171:9;15167:19;15159:27;;15196:71;15264:1;15253:9;15249:17;15240:6;15196:71;:::i;:::-;15277:72;15345:2;15334:9;15330:18;15321:6;15277:72;:::i;:::-;15359:80;15435:2;15424:9;15420:18;15411:6;15359:80;:::i;:::-;15449;15525:2;15514:9;15510:18;15501:6;15449:80;:::i;:::-;15539:73;15607:3;15596:9;15592:19;15583:6;15539:73;:::i;:::-;15622;15690:3;15679:9;15675:19;15666:6;15622:73;:::i;:::-;15149:553;;;;;;;;;:::o;15708:210::-;;15833:2;15822:9;15818:18;15810:26;;15846:65;15908:1;15897:9;15893:17;15884:6;15846:65;:::i;:::-;15800:118;;;;:::o;15924:313::-;;16075:2;16064:9;16060:18;16052:26;;16124:9;16118:4;16114:20;16110:1;16099:9;16095:17;16088:47;16152:78;16225:4;16216:6;16152:78;:::i;:::-;16144:86;;16042:195;;;;:::o;16243:419::-;;16447:2;16436:9;16432:18;16424:26;;16496:9;16490:4;16486:20;16482:1;16471:9;16467:17;16460:47;16524:131;16650:4;16524:131;:::i;:::-;16516:139;;16414:248;;;:::o;16668:419::-;;16872:2;16861:9;16857:18;16849:26;;16921:9;16915:4;16911:20;16907:1;16896:9;16892:17;16885:47;16949:131;17075:4;16949:131;:::i;:::-;16941:139;;16839:248;;;:::o;17093:419::-;;17297:2;17286:9;17282:18;17274:26;;17346:9;17340:4;17336:20;17332:1;17321:9;17317:17;17310:47;17374:131;17500:4;17374:131;:::i;:::-;17366:139;;17264:248;;;:::o;17518:419::-;;17722:2;17711:9;17707:18;17699:26;;17771:9;17765:4;17761:20;17757:1;17746:9;17742:17;17735:47;17799:131;17925:4;17799:131;:::i;:::-;17791:139;;17689:248;;;:::o;17943:419::-;;18147:2;18136:9;18132:18;18124:26;;18196:9;18190:4;18186:20;18182:1;18171:9;18167:17;18160:47;18224:131;18350:4;18224:131;:::i;:::-;18216:139;;18114:248;;;:::o;18368:419::-;;18572:2;18561:9;18557:18;18549:26;;18621:9;18615:4;18611:20;18607:1;18596:9;18592:17;18585:47;18649:131;18775:4;18649:131;:::i;:::-;18641:139;;18539:248;;;:::o;18793:419::-;;18997:2;18986:9;18982:18;18974:26;;19046:9;19040:4;19036:20;19032:1;19021:9;19017:17;19010:47;19074:131;19200:4;19074:131;:::i;:::-;19066:139;;18964:248;;;:::o;19218:419::-;;19422:2;19411:9;19407:18;19399:26;;19471:9;19465:4;19461:20;19457:1;19446:9;19442:17;19435:47;19499:131;19625:4;19499:131;:::i;:::-;19491:139;;19389:248;;;:::o;19643:419::-;;19847:2;19836:9;19832:18;19824:26;;19896:9;19890:4;19886:20;19882:1;19871:9;19867:17;19860:47;19924:131;20050:4;19924:131;:::i;:::-;19916:139;;19814:248;;;:::o;20068:419::-;;20272:2;20261:9;20257:18;20249:26;;20321:9;20315:4;20311:20;20307:1;20296:9;20292:17;20285:47;20349:131;20475:4;20349:131;:::i;:::-;20341:139;;20239:248;;;:::o;20493:419::-;;20697:2;20686:9;20682:18;20674:26;;20746:9;20740:4;20736:20;20732:1;20721:9;20717:17;20710:47;20774:131;20900:4;20774:131;:::i;:::-;20766:139;;20664:248;;;:::o;20918:419::-;;21122:2;21111:9;21107:18;21099:26;;21171:9;21165:4;21161:20;21157:1;21146:9;21142:17;21135:47;21199:131;21325:4;21199:131;:::i;:::-;21191:139;;21089:248;;;:::o;21343:419::-;;21547:2;21536:9;21532:18;21524:26;;21596:9;21590:4;21586:20;21582:1;21571:9;21567:17;21560:47;21624:131;21750:4;21624:131;:::i;:::-;21616:139;;21514:248;;;:::o;21768:419::-;;21972:2;21961:9;21957:18;21949:26;;22021:9;22015:4;22011:20;22007:1;21996:9;21992:17;21985:47;22049:131;22175:4;22049:131;:::i;:::-;22041:139;;21939:248;;;:::o;22193:419::-;;22397:2;22386:9;22382:18;22374:26;;22446:9;22440:4;22436:20;22432:1;22421:9;22417:17;22410:47;22474:131;22600:4;22474:131;:::i;:::-;22466:139;;22364:248;;;:::o;22618:222::-;;22749:2;22738:9;22734:18;22726:26;;22762:71;22830:1;22819:9;22815:17;22806:6;22762:71;:::i;:::-;22716:124;;;;:::o;22846:847::-;;23155:3;23144:9;23140:19;23132:27;;23169:71;23237:1;23226:9;23222:17;23213:6;23169:71;:::i;:::-;23250:80;23326:2;23315:9;23311:18;23302:6;23250:80;:::i;:::-;23377:9;23371:4;23367:20;23362:2;23351:9;23347:18;23340:48;23405:108;23508:4;23499:6;23405:108;:::i;:::-;23397:116;;23523:80;23599:2;23588:9;23584:18;23575:6;23523:80;:::i;:::-;23613:73;23681:3;23670:9;23666:19;23657:6;23613:73;:::i;:::-;23122:571;;;;;;;;:::o;23699:831::-;;24000:3;23989:9;23985:19;23977:27;;24014:71;24082:1;24071:9;24067:17;24058:6;24014:71;:::i;:::-;24095:80;24171:2;24160:9;24156:18;24147:6;24095:80;:::i;:::-;24222:9;24216:4;24212:20;24207:2;24196:9;24192:18;24185:48;24250:108;24353:4;24344:6;24250:108;:::i;:::-;24242:116;;24368:72;24436:2;24425:9;24421:18;24412:6;24368:72;:::i;:::-;24450:73;24518:3;24507:9;24503:19;24494:6;24450:73;:::i;:::-;23967:563;;;;;;;;:::o;24536:442::-;;24723:2;24712:9;24708:18;24700:26;;24736:71;24804:1;24793:9;24789:17;24780:6;24736:71;:::i;:::-;24817:72;24885:2;24874:9;24870:18;24861:6;24817:72;:::i;:::-;24899;24967:2;24956:9;24952:18;24943:6;24899:72;:::i;:::-;24690:288;;;;;;:::o;24984:132::-;;25074:3;25066:11;;25104:4;25099:3;25095:14;25087:22;;25056:60;;;:::o;25122:114::-;;25223:5;25217:12;25207:22;;25196:40;;;:::o;25242:99::-;;25328:5;25322:12;25312:22;;25301:40;;;:::o;25347:113::-;;25449:4;25444:3;25440:14;25432:22;;25422:38;;;:::o;25466:184::-;;25599:6;25594:3;25587:19;25639:4;25634:3;25630:14;25615:29;;25577:73;;;;:::o;25656:169::-;;25774:6;25769:3;25762:19;25814:4;25809:3;25805:14;25790:29;;25752:73;;;;:::o;25831:305::-;;25890:20;25908:1;25890:20;:::i;:::-;25885:25;;25924:20;25942:1;25924:20;:::i;:::-;25919:25;;26078:1;26010:66;26006:74;26003:1;26000:81;25997:2;;;26084:18;;:::i;:::-;25997:2;26128:1;26125;26121:9;26114:16;;25875:261;;;;:::o;26142:185::-;;26199:20;26217:1;26199:20;:::i;:::-;26194:25;;26233:20;26251:1;26233:20;:::i;:::-;26228:25;;26272:1;26262:2;;26277:18;;:::i;:::-;26262:2;26319:1;26316;26312:9;26307:14;;26184:143;;;;:::o;26333:348::-;;26396:20;26414:1;26396:20;:::i;:::-;26391:25;;26430:20;26448:1;26430:20;:::i;:::-;26425:25;;26618:1;26550:66;26546:74;26543:1;26540:81;26535:1;26528:9;26521:17;26517:105;26514:2;;;26625:18;;:::i;:::-;26514:2;26673:1;26670;26666:9;26655:20;;26381:300;;;;:::o;26687:191::-;;26747:20;26765:1;26747:20;:::i;:::-;26742:25;;26781:20;26799:1;26781:20;:::i;:::-;26776:25;;26820:1;26817;26814:8;26811:2;;;26825:18;;:::i;:::-;26811:2;26870:1;26867;26863:9;26855:17;;26732:146;;;;:::o;26884:96::-;;26950:24;26968:5;26950:24;:::i;:::-;26939:35;;26929:51;;;:::o;26986:104::-;;27060:24;27078:5;27060:24;:::i;:::-;27049:35;;27039:51;;;:::o;27096:90::-;;27173:5;27166:13;27159:21;27148:32;;27138:48;;;:::o;27192:109::-;;27271:24;27289:5;27271:24;:::i;:::-;27260:35;;27250:51;;;:::o;27307:126::-;;27384:42;27377:5;27373:54;27362:65;;27352:81;;;:::o;27439:77::-;;27505:5;27494:16;;27484:32;;;:::o;27522:134::-;;27613:37;27644:5;27613:37;:::i;:::-;27600:50;;27590:66;;;:::o;27662:121::-;;27753:24;27771:5;27753:24;:::i;:::-;27740:37;;27730:53;;;:::o;27789:126::-;;27872:37;27903:5;27872:37;:::i;:::-;27859:50;;27849:66;;;:::o;27921:113::-;;28004:24;28022:5;28004:24;:::i;:::-;27991:37;;27981:53;;;:::o;28040:307::-;28108:1;28118:113;28132:6;28129:1;28126:13;28118:113;;;28217:1;28212:3;28208:11;28202:18;28198:1;28193:3;28189:11;28182:39;28154:2;28151:1;28147:10;28142:15;;28118:113;;;28249:6;28246:1;28243:13;28240:2;;;28329:1;28320:6;28315:3;28311:16;28304:27;28240:2;28089:258;;;;:::o;28353:320::-;;28434:1;28428:4;28424:12;28414:22;;28481:1;28475:4;28471:12;28502:18;28492:2;;28558:4;28550:6;28546:17;28536:27;;28492:2;28620;28612:6;28609:14;28589:18;28586:38;28583:2;;;28639:18;;:::i;:::-;28583:2;28404:269;;;;:::o;28679:180::-;28727:77;28724:1;28717:88;28824:4;28821:1;28814:15;28848:4;28845:1;28838:15;28865:180;28913:77;28910:1;28903:88;29010:4;29007:1;29000:15;29034:4;29031:1;29024:15;29051:180;29099:77;29096:1;29089:88;29196:4;29193:1;29186:15;29220:4;29217:1;29210:15;29237:102;;29329:2;29325:7;29320:2;29313:5;29309:14;29305:28;29295:38;;29285:54;;;:::o;29345:122::-;29418:24;29436:5;29418:24;:::i;:::-;29411:5;29408:35;29398:2;;29457:1;29454;29447:12;29398:2;29388:79;:::o;29473:138::-;29554:32;29580:5;29554:32;:::i;:::-;29547:5;29544:43;29534:2;;29601:1;29598;29591:12;29534:2;29524:87;:::o;29617:116::-;29687:21;29702:5;29687:21;:::i;:::-;29680:5;29677:32;29667:2;;29723:1;29720;29713:12;29667:2;29657:76;:::o;29739:148::-;29825:37;29856:5;29825:37;:::i;:::-;29818:5;29815:48;29805:2;;29877:1;29874;29867:12;29805:2;29795:92;:::o;29893:122::-;29966:24;29984:5;29966:24;:::i;:::-;29959:5;29956:35;29946:2;;30005:1;30002;29995:12;29946:2;29936:79;:::o
Swarm Source
ipfs://75ccbae8438c6842f91d63c2f7f0699b797a0d91152622c1470223b11b213426
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,996.45 | 0.00126171 | $5.04 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.