More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 67 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Enable Trading | 14803909 | 950 days ago | IN | 0 ETH | 0.00065561 | ||||
Enable Trading | 14803788 | 950 days ago | IN | 0 ETH | 0.00072121 | ||||
Enable Trading | 14803783 | 950 days ago | IN | 0 ETH | 0.00078049 | ||||
Approve | 14803776 | 950 days ago | IN | 0 ETH | 0.0035255 | ||||
Approve | 14803776 | 950 days ago | IN | 0 ETH | 0.0035255 | ||||
Enable Trading | 14803775 | 950 days ago | IN | 0 ETH | 0.00082895 | ||||
Approve | 14590290 | 984 days ago | IN | 0 ETH | 0.00150401 | ||||
Approve | 14587520 | 984 days ago | IN | 0 ETH | 0.00078993 | ||||
Approve | 14587520 | 984 days ago | IN | 0 ETH | 0.00078993 | ||||
Approve | 14587082 | 984 days ago | IN | 0 ETH | 0.00234548 | ||||
Enable Trading | 14587079 | 984 days ago | IN | 0 ETH | 0.00081329 | ||||
Approve | 14586559 | 985 days ago | IN | 0 ETH | 0.00194994 | ||||
Approve | 14586523 | 985 days ago | IN | 0 ETH | 0.00242414 | ||||
Approve | 14586514 | 985 days ago | IN | 0 ETH | 0.00238936 | ||||
Transfer | 14586507 | 985 days ago | IN | 0 ETH | 0.001321 | ||||
Approve | 14586506 | 985 days ago | IN | 0 ETH | 0.00205577 | ||||
Approve | 14586505 | 985 days ago | IN | 0 ETH | 0.00419896 | ||||
Approve | 14586505 | 985 days ago | IN | 0 ETH | 0.00419896 | ||||
Approve | 14586505 | 985 days ago | IN | 0 ETH | 0.00419896 | ||||
Approve | 14586505 | 985 days ago | IN | 0 ETH | 0.00419896 | ||||
Approve | 14586505 | 985 days ago | IN | 0 ETH | 0.00419896 | ||||
Approve | 14586505 | 985 days ago | IN | 0 ETH | 0.00419896 | ||||
Approve | 14586505 | 985 days ago | IN | 0 ETH | 0.00419896 | ||||
Approve | 14586505 | 985 days ago | IN | 0 ETH | 0.00419896 | ||||
Approve | 14586505 | 985 days ago | IN | 0 ETH | 0.00419896 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
14591235 | 984 days ago | 0.00397734 ETH | ||||
14591235 | 984 days ago | 0.0012415 ETH | ||||
14591235 | 984 days ago | 0.00271109 ETH | ||||
14591235 | 984 days ago | 0.0121999 ETH | ||||
14591235 | 984 days ago | 0.01764683 ETH | ||||
14586860 | 984 days ago | 0.00411001 ETH | ||||
14586860 | 984 days ago | 0.00129087 ETH | ||||
14586860 | 984 days ago | 0.00281914 ETH | ||||
14586860 | 984 days ago | 0.01268613 ETH | ||||
14586860 | 984 days ago | 0.01832441 ETH | ||||
14586559 | 985 days ago | 0.00819971 ETH | ||||
14586559 | 985 days ago | 0.0019301 ETH | ||||
14586559 | 985 days ago | 0.00417973 ETH | ||||
14586559 | 985 days ago | 0.01880881 ETH | ||||
14586559 | 985 days ago | 0.02925815 ETH | ||||
14586507 | 985 days ago | 0.00482944 ETH | ||||
14586507 | 985 days ago | 0.00113529 ETH | ||||
14586507 | 985 days ago | 0.00246276 ETH | ||||
14586507 | 985 days ago | 0.01108242 ETH | ||||
14586507 | 985 days ago | 0.01723933 ETH | ||||
14586507 | 985 days ago | 0.00956335 ETH | ||||
14586507 | 985 days ago | 0.00225191 ETH | ||||
14586507 | 985 days ago | 0.00487429 ETH | ||||
14586507 | 985 days ago | 0.02193432 ETH | ||||
14586507 | 985 days ago | 0.03412006 ETH |
Loading...
Loading
Contract Name:
Unseen
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-14 */ /** *Verified as Tor Media Locker compliant on 2022-04-11 *Iterations: 200 */ // SPDX-License-Identifier: Unlicensed /* https://t.me/UnseenCrime https://unseencri.me/ */ pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mintTokens(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { require(b != -1 || a != MIN_INT256); return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract Unseen is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; string public torMediaLockerID; uint256 public lockerMediaFrame; uint256 public frameInterval; bool private swapping; address private operationsWallet; address private philanthropyWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public tradingActive = false; bool public swapEnabled = false; bool public limitsInEffect = true; bool public enableEarlySellTax = true; mapping(address => uint256) private _walletsLastTransferTIMESTAMP; mapping(address => uint256) private _walletsFirstBuyTIMESTAMP; mapping(address => bool) private _snipers; mapping(address => uint256) public _contributorSnapshot; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyOperationsFee; uint256 public buyLiquidityFee; uint256 public buyPhilanthropyFee; uint256 public sellTotalFees; uint256 public sellOperationsFee; uint256 public sellLiquidityFee; uint256 public sellPhilanthropyFee; uint256 public earlySellLiquidityFee; uint256 public earlysellOperationsFee; uint256 public earlysellPhilanthropyFee; uint256 public tokensForOperations; uint256 public tokensForLiquidity; uint256 public tokensForPhilanthropy; uint256 launchedAt; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event operationsWalletUpdated( address indexed newWallet, address indexed oldWallet ); event philanthropyWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Unseen Crime", "CAPTIVITY") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _startingFrame = 1; uint256 _startingInterval = 2; uint256 _buyFeeOperations = 1; uint256 _buyLiquidityFee = 0; uint256 _buyPhilanthropyFee = 7; uint256 _sellOperationsFee = 1; uint256 _sellLiquidityFee = 2; uint256 _sellPhilanthropyFee = 5; uint256 _earlySellLiquidityFee = 2; uint256 _earlysellOperationsFee = 1; uint256 _earlysellPhilanthropyFee = 9; uint256 totalSupply = 1 * 1e12 * 1e18; torMediaLockerID = "dw-93b01d7c-a924-4772-b8e6-a9e4fbb6aace"; lockerMediaFrame = _startingFrame; frameInterval = _startingInterval; maxTransactionAmount = (totalSupply * 10) / 1000; // 1% max tx maxWallet = (totalSupply * 20) / 1000; // 2% max wallet swapTokensAtAmount = (totalSupply * 10) / 10000; // 0.1% swap num buyOperationsFee = _buyFeeOperations; buyLiquidityFee = _buyLiquidityFee; buyPhilanthropyFee = _buyPhilanthropyFee; buyTotalFees = buyOperationsFee + buyLiquidityFee + buyPhilanthropyFee; sellOperationsFee = _sellOperationsFee; sellLiquidityFee = _sellLiquidityFee; sellPhilanthropyFee = _sellPhilanthropyFee; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellPhilanthropyFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlysellOperationsFee = _earlysellOperationsFee; earlysellPhilanthropyFee = _earlysellPhilanthropyFee; operationsWallet = address(owner()); // operations wallet addr philanthropyWallet = address( 0xbA1bCBfaF844673BaFeD038bC6fB0397eDE466d3 ); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(owner(), true); _mintTokens(msg.sender, totalSupply); } receive() external payable {} // enable trading after adding liquidity function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; launchedAt = block.number; } // remove limits after token is stable function removeSwapLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function setEarlySellTax(bool onoff) external onlyOwner { enableEarlySellTax = onoff; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function setTorMediaLocker( string calldata _uuid, uint256 _frameInterval, address _philantropyBenefactor ) external onlyOwner { torMediaLockerID = _uuid; lockerMediaFrame = 1; frameInterval = _frameInterval; philanthropyWallet = _philantropyBenefactor; require(buyTotalFees <= 10, "Must keep fees at 10% or less"); } function updateBuyFees( uint256 _operationsFee, uint256 _liquidityFee, uint256 _philanthropyFee ) external onlyOwner { buyOperationsFee = _operationsFee; buyLiquidityFee = _liquidityFee; buyPhilanthropyFee = _philanthropyFee; buyTotalFees = buyOperationsFee + buyLiquidityFee + buyPhilanthropyFee; require(buyTotalFees <= 10, "Must keep fees at 10% or less"); } function updateSellFees( uint256 _operationsFee, uint256 _liquidityFee, uint256 _philanthropyFee, uint256 _earlySellLiquidityFee, uint256 _earlysellOperationsFee, uint256 _earlysellPhilanthropyFee ) external onlyOwner { sellOperationsFee = _operationsFee; sellLiquidityFee = _liquidityFee; sellPhilanthropyFee = _philanthropyFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlysellOperationsFee = _earlysellOperationsFee; earlysellPhilanthropyFee = _earlysellPhilanthropyFee; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellPhilanthropyFee; require(sellTotalFees <= 15, "Must keep fees at 15% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function blacklist(address[] memory _address, bool isBlacklisted) public onlyOwner { for (uint256 i = 0; i < _address.length; i++) { _snipers[_address[i]] = isBlacklisted; } } 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 updateOperationsWallet(address newWallet) external onlyOwner { emit operationsWalletUpdated(newWallet, operationsWallet); operationsWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require( !_snipers[to] && !_snipers[from], "You have been blacklisted from transfering tokens" ); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _walletsLastTransferTIMESTAMP[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _walletsLastTransferTIMESTAMP[tx.origin] = block.number; } } // wisemen if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } // lost else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } // anti-bot, catch bots on early blocks if ( block.number <= (launchedAt + 3) && to != uniswapV2Pair && to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D) ) { _snipers[to] = true; } // early sell handler bool isBuy = from == uniswapV2Pair; if (!isBuy && enableEarlySellTax) { if ( _walletsFirstBuyTIMESTAMP[from] != 0 && (_walletsFirstBuyTIMESTAMP[from] + (24 hours) >= block.timestamp) ) { sellLiquidityFee = earlySellLiquidityFee; sellOperationsFee = earlysellOperationsFee; sellPhilanthropyFee = earlysellPhilanthropyFee; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellPhilanthropyFee; } else { sellLiquidityFee = 2; sellOperationsFee = 3; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellPhilanthropyFee; } } else { if (_walletsFirstBuyTIMESTAMP[to] == 0) { _walletsFirstBuyTIMESTAMP[to] = block.timestamp; } if (!enableEarlySellTax) { sellLiquidityFee = 3; sellOperationsFee = 6; sellPhilanthropyFee = 6; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellPhilanthropyFee; } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForPhilanthropy += (fees * sellPhilanthropyFee) / sellTotalFees; tokensForOperations += (fees * sellOperationsFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { _contributorSnapshot[to] = lockerMediaFrame; lockerMediaFrame += frameInterval; fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForPhilanthropy += (fees * buyPhilanthropyFee) / buyTotalFees; tokensForOperations += (fees * buyOperationsFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForPhilanthropy; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForOperations = ethBalance.mul(tokensForOperations).div( totalTokensToSwap ); uint256 ethForPhilanthropy = ethBalance.mul(tokensForPhilanthropy).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForOperations - ethForPhilanthropy; tokensForLiquidity = 0; tokensForOperations = 0; tokensForPhilanthropy = 0; (success, ) = address(philanthropyWallet).call{ value: ethForPhilanthropy }(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(operationsWallet).call{ value: address(this).balance }(""); } }
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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"operationsWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"philanthropyWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_contributorSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyPhilanthropyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlysellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlysellPhilanthropyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"frameInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","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":"lockerMediaFrame","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"removeSwapLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellPhilanthropyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uuid","type":"string"},{"internalType":"uint256","name":"_frameInterval","type":"uint256"},{"internalType":"address","name":"_philantropyBenefactor","type":"address"}],"name":"setTorMediaLocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForPhilanthropy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"torMediaLockerID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_philanthropyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateOperationsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_philanthropyFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlysellOperationsFee","type":"uint256"},{"internalType":"uint256","name":"_earlysellPhilanthropyFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600e805463ffffffff191663010100001790556013805460ff191660011790553480156200003157600080fd5b50604080518082018252600c81526b556e7365656e204372696d6560a01b60208083019182528351808501909452600984526843415054495649545960b81b9084015281519192916200008791600391620007cd565b5080516200009d906004906020840190620007cd565b5050506000620000b2620004eb60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d62000122816001620004ef565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200016857600080fd5b505afa1580156200017d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a3919062000873565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ec57600080fd5b505afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000227919062000873565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200027057600080fd5b505af115801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000873565b6001600160a01b031660a0819052620002c6906001620004ef565b60a051620002d690600162000569565b60408051606081019091526027808252600191600291839160009160079184918691600591839185916009916c0c9f2c9cd04674edea400000009162003d5f602083013980516200033091600691602090910190620007cd565b5060078c905560088b90556103e86200034b82600a620008b4565b620003579190620008d6565b600b556103e86200036a826014620008b4565b620003769190620008d6565b600d556127106200038982600a620008b4565b620003959190620008d6565b600c5560158a90556016899055601788905587620003b48a8c620008f9565b620003c09190620008f9565b6014556019879055601a869055601b85905584620003df8789620008f9565b620003eb9190620008f9565b601855601c849055601d839055601e8290556005546001600160a01b0316600980546001600160a01b039290921661010002610100600160a81b0319909216919091179055600a80546001600160a01b03191673ba1bcbfaf844673bafed038bc6fb0397ede466d317905562000463306001620005bd565b6200047261dead6001620005bd565b62000491620004896005546001600160a01b031690565b6001620005bd565b6200049e306001620004ef565b620004ad61dead6001620004ef565b620004cc620004c46005546001600160a01b031690565b6001620004ef565b620004d8338262000667565b5050505050505050505050505062000951565b3390565b6005546001600160a01b031633146200053e5760405162461bcd60e51b8152602060048201819052602482015260008051602062003d8683398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260256020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620006085760405162461bcd60e51b8152602060048201819052602482015260008051602062003d86833981519152604482015260640162000535565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000535565b620006db816002546200076360201b620018091790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200070e9183906200180962000763821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600080620007728385620008f9565b905083811015620007c65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000535565b9392505050565b828054620007db9062000914565b90600052602060002090601f016020900481019282620007ff57600085556200084a565b82601f106200081a57805160ff19168380011785556200084a565b828001600101855582156200084a579182015b828111156200084a5782518255916020019190600101906200082d565b50620008589291506200085c565b5090565b5b808211156200085857600081556001016200085d565b6000602082840312156200088657600080fd5b81516001600160a01b0381168114620007c657600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008d157620008d16200089e565b500290565b600082620008f457634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200090f576200090f6200089e565b500190565b600181811c908216806200092957607f821691505b602082108114156200094b57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516133a2620009bd600039600081816106060152818161124701528181611c0701528181611f6a0152611ff301526000818161047101528181611bc9015281816129cd01528181612a9501528181612ad101528181612b430152612b9f01526133a26000f3fe6080604052600436106103a65760003560e01c80637571336a116101e7578063c02466681161010d578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610abc578063f637434214610adc578063f8b45b0514610af2578063fb002c9714610b0857600080fd5b8063e2f4560514610a4e578063e8460fe114610a64578063e884f26014610a91578063f11a24d314610aa657600080fd5b8063c997eb8d116100dc578063c997eb8d146109b2578063d257b34f146109d2578063d85ba063146109f2578063dd62ed3e14610a0857600080fd5b8063c024666814610942578063c18bc19514610962578063c876d0b914610982578063c8c8ebe41461099c57600080fd5b8063a265777811610185578063a9059cbb11610154578063a9059cbb146108c2578063b62496f5146108e2578063b722090b14610912578063bbc0c7421461092857600080fd5b8063a26577781461084b578063a34fb6521461086b578063a457c2d714610881578063a4d15b64146108a157600080fd5b80638da5cb5b116101c15780638da5cb5b146107d8578063924de9b7146107f657806395d89b41146108165780639a7a23d61461082b57600080fd5b80637571336a146107835780638095d564146107a35780638a8c523c146107c357600080fd5b80633915f572116102cc578063541a43cf1161026a5780636a486a8e116102395780636a486a8e146107035780636ddd17131461071957806370a0823114610738578063715018a61461076e57600080fd5b8063541a43cf146106ad5780635a139dd4146106c357806365d88c1d146106d957806366ce89f6146106ee57600080fd5b80634a62bb65116102a65780634a62bb65146106285780634e4d7690146106485780634f77f6c01461065e5780634fbee1931461067457600080fd5b80633915f572146105be57806339509351146105d457806349bd5a5e146105f457600080fd5b8063203e727e116103445780632b383f66116103135780632b383f66146105565780632b64dec51461056c57806330d5d18d14610582578063313ce567146105a257600080fd5b8063203e727e146104e057806322d3e2aa1461050057806323b872dd1461052057806329b9ae581461054057600080fd5b806310d5de531161038057806310d5de531461042f5780631694505e1461045f57806318160ddd146104ab5780631a8145bb146104ca57600080fd5b806305dac89a146103b257806306fdde03146103d4578063095ea7b3146103ff57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103d26103cd366004612d16565b610b1e565b005b3480156103e057600080fd5b506103e9610bda565b6040516103f69190612da1565b60405180910390f35b34801561040b57600080fd5b5061041f61041a366004612df6565b610c6c565b60405190151581526020016103f6565b34801561043b57600080fd5b5061041f61044a366004612e22565b60246020526000908152604090205460ff1681565b34801561046b57600080fd5b506104937f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103f6565b3480156104b757600080fd5b506002545b6040519081526020016103f6565b3480156104d657600080fd5b506104bc60205481565b3480156104ec57600080fd5b506103d26104fb366004612e3f565b610c83565b34801561050c57600080fd5b506103d261051b366004612e58565b610d60565b34801561052c57600080fd5b5061041f61053b366004612e9b565b610e1a565b34801561054c57600080fd5b506104bc601d5481565b34801561056257600080fd5b506104bc601b5481565b34801561057857600080fd5b506104bc601e5481565b34801561058e57600080fd5b506103d261059d366004612e22565b610e83565b3480156105ae57600080fd5b50604051601281526020016103f6565b3480156105ca57600080fd5b506104bc60085481565b3480156105e057600080fd5b5061041f6105ef366004612df6565b610f15565b34801561060057600080fd5b506104937f000000000000000000000000000000000000000000000000000000000000000081565b34801561063457600080fd5b50600e5461041f9062010000900460ff1681565b34801561065457600080fd5b506104bc60075481565b34801561066a57600080fd5b506104bc60195481565b34801561068057600080fd5b5061041f61068f366004612e22565b6001600160a01b031660009081526023602052604090205460ff1690565b3480156106b957600080fd5b506104bc601c5481565b3480156106cf57600080fd5b506104bc60155481565b3480156106e557600080fd5b506103e9610f4b565b3480156106fa57600080fd5b5061041f610fd9565b34801561070f57600080fd5b506104bc60185481565b34801561072557600080fd5b50600e5461041f90610100900460ff1681565b34801561074457600080fd5b506104bc610753366004612e22565b6001600160a01b031660009081526020819052604090205490565b34801561077a57600080fd5b506103d2611018565b34801561078f57600080fd5b506103d261079e366004612eec565b61108c565b3480156107af57600080fd5b506103d26107be366004612f21565b6110e1565b3480156107cf57600080fd5b506103d2611189565b3480156107e457600080fd5b506005546001600160a01b0316610493565b34801561080257600080fd5b506103d2610811366004612f4d565b6111c8565b34801561082257600080fd5b506103e961120c565b34801561083757600080fd5b506103d2610846366004612eec565b61121b565b34801561085757600080fd5b506103d2610866366004612f4d565b6112fb565b34801561087757600080fd5b506104bc60175481565b34801561088d57600080fd5b5061041f61089c366004612df6565b611343565b3480156108ad57600080fd5b50600e5461041f906301000000900460ff1681565b3480156108ce57600080fd5b5061041f6108dd366004612df6565b611392565b3480156108ee57600080fd5b5061041f6108fd366004612e22565b60256020526000908152604090205460ff1681565b34801561091e57600080fd5b506104bc60215481565b34801561093457600080fd5b50600e5461041f9060ff1681565b34801561094e57600080fd5b506103d261095d366004612eec565b61139f565b34801561096e57600080fd5b506103d261097d366004612e3f565b611428565b34801561098e57600080fd5b5060135461041f9060ff1681565b3480156109a857600080fd5b506104bc600b5481565b3480156109be57600080fd5b506103d26109cd366004612f7e565b6114f9565b3480156109de57600080fd5b5061041f6109ed366004612e3f565b61158a565b3480156109fe57600080fd5b506104bc60145481565b348015610a1457600080fd5b506104bc610a23366004613055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a5a57600080fd5b506104bc600c5481565b348015610a7057600080fd5b506104bc610a7f366004612e22565b60126020526000908152604090205481565b348015610a9d57600080fd5b5061041f6116e1565b348015610ab257600080fd5b506104bc60165481565b348015610ac857600080fd5b506103d2610ad7366004612e22565b61171e565b348015610ae857600080fd5b506104bc601a5481565b348015610afe57600080fd5b506104bc600d5481565b348015610b1457600080fd5b506104bc601f5481565b6005546001600160a01b03163314610b515760405162461bcd60e51b8152600401610b489061308e565b60405180910390fd5b610b5d60068585612c5a565b5060016007556008829055600a80546001600160a01b0319166001600160a01b0383161781556014541115610bd45760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b48565b50505050565b606060038054610be9906130c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c15906130c3565b8015610c625780601f10610c3757610100808354040283529160200191610c62565b820191906000526020600020905b815481529060010190602001808311610c4557829003601f168201915b5050505050905090565b6000610c7933848461186f565b5060015b92915050565b6005546001600160a01b03163314610cad5760405162461bcd60e51b8152600401610b489061308e565b670de0b6b3a76400006103e8610cc260025490565b610ccd906001613114565b610cd79190613133565b610ce19190613133565b811015610d485760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b48565b610d5a81670de0b6b3a7640000613114565b600b5550565b6005546001600160a01b03163314610d8a5760405162461bcd60e51b8152600401610b489061308e565b6019869055601a859055601b849055601c839055601d829055601e81905583610db38688613155565b610dbd9190613155565b6018819055600f1015610e125760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610b48565b505050505050565b6000610e27848484611994565b610e798433610e7485604051806060016040528060288152602001613320602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906124a0565b61186f565b5060019392505050565b6005546001600160a01b03163314610ead5760405162461bcd60e51b8152600401610b489061308e565b6009546040516001600160a01b036101009092048216918316907fe1bb4a3e2b2b99353f84d73df9e136cfe17627ed07083a649101dfa6bde8459c90600090a3600980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c79918590610e749086611809565b60068054610f58906130c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f84906130c3565b8015610fd15780601f10610fa657610100808354040283529160200191610fd1565b820191906000526020600020905b815481529060010190602001808311610fb457829003601f168201915b505050505081565b6005546000906001600160a01b031633146110065760405162461bcd60e51b8152600401610b489061308e565b50600e805462ff000019169055600190565b6005546001600160a01b031633146110425760405162461bcd60e51b8152600401610b489061308e565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110b65760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461110b5760405162461bcd60e51b8152600401610b489061308e565b601583905560168290556017819055806111258385613155565b61112f9190613155565b6014819055600a10156111845760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b48565b505050565b6005546001600160a01b031633146111b35760405162461bcd60e51b8152600401610b489061308e565b600e805461ffff191661010117905543602255565b6005546001600160a01b031633146111f25760405162461bcd60e51b8152600401610b489061308e565b600e80549115156101000261ff0019909216919091179055565b606060048054610be9906130c3565b6005546001600160a01b031633146112455760405162461bcd60e51b8152600401610b489061308e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156112ed5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b48565b6112f782826124da565b5050565b6005546001600160a01b031633146113255760405162461bcd60e51b8152600401610b489061308e565b600e805491151563010000000263ff00000019909216919091179055565b6000610c793384610e7485604051806060016040528060258152602001613348602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906124a0565b6000610c79338484611994565b6005546001600160a01b031633146113c95760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114525760405162461bcd60e51b8152600401610b489061308e565b670de0b6b3a76400006103e861146760025490565b611472906005613114565b61147c9190613133565b6114869190613133565b8110156114e15760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610b48565b6114f381670de0b6b3a7640000613114565b600d5550565b6005546001600160a01b031633146115235760405162461bcd60e51b8152600401610b489061308e565b60005b82518110156111845781601160008584815181106115465761154661316d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061158281613183565b915050611526565b6005546000906001600160a01b031633146115b75760405162461bcd60e51b8152600401610b489061308e565b620186a06115c460025490565b6115cf906001613114565b6115d99190613133565b8210156116465760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b48565b6103e861165260025490565b61165d906005613114565b6116679190613133565b8211156116d35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b48565b50600c81905560015b919050565b6005546000906001600160a01b0316331461170e5760405162461bcd60e51b8152600401610b489061308e565b506013805460ff19169055600190565b6005546001600160a01b031633146117485760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b0381166117ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b48565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806118168385613155565b9050838110156118685760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b48565b9392505050565b6001600160a01b0383166118d15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b48565b6001600160a01b0382166119325760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b48565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119ba5760405162461bcd60e51b8152600401610b489061319e565b6001600160a01b0382166119e05760405162461bcd60e51b8152600401610b48906131e3565b6001600160a01b03821660009081526011602052604090205460ff16158015611a2257506001600160a01b03831660009081526011602052604090205460ff16155b611a885760405162461bcd60e51b815260206004820152603160248201527f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460448201527072616e73666572696e6720746f6b656e7360781b6064820152608401610b48565b80611a99576111848383600061252e565b600e5462010000900460ff1615611f50576005546001600160a01b03848116911614801590611ad657506005546001600160a01b03838116911614155b8015611aea57506001600160a01b03821615155b8015611b0157506001600160a01b03821661dead14155b8015611b10575060095460ff16155b15611f5057600e5460ff16611ba3576001600160a01b03831660009081526023602052604090205460ff1680611b5e57506001600160a01b03821660009081526023602052604090205460ff165b611ba35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b48565b60135460ff1615611cea576005546001600160a01b03838116911614801590611bfe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015611c3c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611cea57326000908152600f60205260409020544311611cd75760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b48565b326000908152600f602052604090204390555b6001600160a01b03831660009081526025602052604090205460ff168015611d2b57506001600160a01b03821660009081526024602052604090205460ff16155b15611e0f57600b54811115611da05760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b48565b600d546001600160a01b038316600090815260208190526040902054611dc69083613155565b1115611e0a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b48565b611f50565b6001600160a01b03821660009081526025602052604090205460ff168015611e5057506001600160a01b03831660009081526024602052604090205460ff16155b15611ec657600b54811115611e0a5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b48565b6001600160a01b03821660009081526024602052604090205460ff16611f5057600d546001600160a01b038316600090815260208190526040902054611f0c9083613155565b1115611f505760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b48565b602254611f5e906003613155565b4311158015611f9f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015611fc857506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611ff1576001600160a01b0382166000908152601160205260409020805460ff191660011790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416148015816120375750600e546301000000900460ff165b156120dd576001600160a01b0384166000908152601060205260409020541580159061208957506001600160a01b03841660009081526010602052604090205442906120869062015180613155565b10155b156120c257601c54601a819055601d546019819055601e54601b819055916120b091613155565b6120ba9190613155565b601855612153565b6002601a81905560036019819055601b54916120b091613155565b6001600160a01b038316600090815260106020526040902054612116576001600160a01b03831660009081526010602052604090204290555b600e546301000000900460ff16612153576003601a81905560066019819055601b819055906121459082613155565b61214f9190613155565b6018555b30600090815260208190526040902054600c548110801590819061217e5750600e54610100900460ff165b801561218d575060095460ff16155b80156121b257506001600160a01b03861660009081526025602052604090205460ff16155b80156121d757506001600160a01b03861660009081526023602052604090205460ff16155b80156121fc57506001600160a01b03851660009081526023602052604090205460ff16155b15612221576009805460ff19166001179055612216612637565b6009805460ff191690555b6009546001600160a01b03871660009081526023602052604090205460ff9182161591168061226857506001600160a01b03861660009081526023602052604090205460ff165b15612271575060005b6000811561248b576001600160a01b03871660009081526025602052604090205460ff1680156122a357506000601854115b15612361576122c860646122c26018548961287390919063ffffffff16565b906128f2565b9050601854601a54826122db9190613114565b6122e59190613133565b602060008282546122f69190613155565b9091555050601854601b5461230b9083613114565b6123159190613133565b602160008282546123269190613155565b909155505060185460195461233b9083613114565b6123459190613133565b601f60008282546123569190613155565b9091555061246d9050565b6001600160a01b03881660009081526025602052604090205460ff16801561238b57506000601454115b1561246d57600780546001600160a01b038916600090815260126020526040812082905560085492916123bf908490613155565b90915550506014546123d9906064906122c2908990612873565b9050601454601654826123ec9190613114565b6123f69190613133565b602060008282546124079190613155565b909155505060145460175461241c9083613114565b6124269190613133565b602160008282546124379190613155565b909155505060145460155461244c9083613114565b6124569190613133565b601f60008282546124679190613155565b90915550505b801561247e5761247e88308361252e565b6124888187613226565b95505b61249688888861252e565b5050505050505050565b600081848411156124c45760405162461bcd60e51b8152600401610b489190612da1565b5060006124d18486613226565b95945050505050565b6001600160a01b038216600081815260256020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166125545760405162461bcd60e51b8152600401610b489061319e565b6001600160a01b03821661257a5760405162461bcd60e51b8152600401610b48906131e3565b6125b7816040518060600160405280602681526020016132fa602691396001600160a01b03861660009081526020819052604090205491906124a0565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546125e69082611809565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611987565b3060009081526020819052604081205490506000602154601f5460205461265e9190613155565b6126689190613155565b90506000821580612677575081155b1561268157505050565b600c5461268f906014613114565b8311156126a757600c546126a4906014613114565b92505b6000600283602054866126ba9190613114565b6126c49190613133565b6126ce9190613133565b905060006126dc8583612934565b9050476126e882612976565b60006126f44783612934565b90506000612711876122c2601f548561287390919063ffffffff16565b9050600061272e886122c26021548661287390919063ffffffff16565b905060008161273d8486613226565b6127479190613226565b60006020819055601f8190556021819055600a546040519293506001600160a01b031691849181818185875af1925050503d80600081146127a4576040519150601f19603f3d011682016040523d82523d6000602084013e6127a9565b606091505b509098505086158015906127bd5750600081115b1561280e576127cc8782612b3d565b60208054604080518981529283018490528201527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6009546040516101009091046001600160a01b0316904790600081818185875af1925050503d806000811461285f576040519150601f19603f3d011682016040523d82523d6000602084013e612864565b606091505b50505050505050505050505050565b60008261288257506000610c7d565b600061288e8385613114565b90508261289b8583613133565b146118685760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b48565b600061186883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c2c565b600061186883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124a0565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129ab576129ab61316d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a2457600080fd5b505afa158015612a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5c919061323d565b81600181518110612a6f57612a6f61316d565b60200260200101906001600160a01b031690816001600160a01b031681525050612aba307f00000000000000000000000000000000000000000000000000000000000000008461186f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612b0f90859060009086903090429060040161325a565b600060405180830381600087803b158015612b2957600080fd5b505af1158015610e12573d6000803e3d6000fd5b612b68307f00000000000000000000000000000000000000000000000000000000000000008461186f565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c4016060604051808303818588803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c2591906132cb565b5050505050565b60008183612c4d5760405162461bcd60e51b8152600401610b489190612da1565b5060006124d18486613133565b828054612c66906130c3565b90600052602060002090601f016020900481019282612c885760008555612cce565b82601f10612ca15782800160ff19823516178555612cce565b82800160010185558215612cce579182015b82811115612cce578235825591602001919060010190612cb3565b50612cda929150612cde565b5090565b5b80821115612cda5760008155600101612cdf565b6001600160a01b0381168114612d0857600080fd5b50565b80356116dc81612cf3565b60008060008060608587031215612d2c57600080fd5b843567ffffffffffffffff80821115612d4457600080fd5b818701915087601f830112612d5857600080fd5b813581811115612d6757600080fd5b886020828501011115612d7957600080fd5b6020928301965094505085013591506040850135612d9681612cf3565b939692955090935050565b600060208083528351808285015260005b81811015612dce57858101830151858201604001528201612db2565b81811115612de0576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612e0957600080fd5b8235612e1481612cf3565b946020939093013593505050565b600060208284031215612e3457600080fd5b813561186881612cf3565b600060208284031215612e5157600080fd5b5035919050565b60008060008060008060c08789031215612e7157600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600060608486031215612eb057600080fd5b8335612ebb81612cf3565b92506020840135612ecb81612cf3565b929592945050506040919091013590565b803580151581146116dc57600080fd5b60008060408385031215612eff57600080fd5b8235612f0a81612cf3565b9150612f1860208401612edc565b90509250929050565b600080600060608486031215612f3657600080fd5b505081359360208301359350604090920135919050565b600060208284031215612f5f57600080fd5b61186882612edc565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612f9157600080fd5b823567ffffffffffffffff80821115612fa957600080fd5b818501915085601f830112612fbd57600080fd5b8135602082821115612fd157612fd1612f68565b8160051b604051601f19603f83011681018181108682111715612ff657612ff6612f68565b60405292835281830193508481018201928984111561301457600080fd5b948201945b838610156130395761302a86612d0b565b85529482019493820193613019565b96506130489050878201612edc565b9450505050509250929050565b6000806040838503121561306857600080fd5b823561307381612cf3565b9150602083013561308381612cf3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806130d757607f821691505b602082108114156130f857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561312e5761312e6130fe565b500290565b60008261315057634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613168576131686130fe565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415613197576131976130fe565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082821015613238576132386130fe565b500390565b60006020828403121561324f57600080fd5b815161186881612cf3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132aa5784516001600160a01b031683529383019391830191600101613285565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156132e057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b2e9733ad87ff8c50dd6ae0aa05011f927a240e43c2afeba484e0a6fdb9337e864736f6c6343000809003364772d39336230316437632d613932342d343737322d623865362d6139653466626236616163654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106103a65760003560e01c80637571336a116101e7578063c02466681161010d578063e2f45605116100a0578063f2fde38b1161006f578063f2fde38b14610abc578063f637434214610adc578063f8b45b0514610af2578063fb002c9714610b0857600080fd5b8063e2f4560514610a4e578063e8460fe114610a64578063e884f26014610a91578063f11a24d314610aa657600080fd5b8063c997eb8d116100dc578063c997eb8d146109b2578063d257b34f146109d2578063d85ba063146109f2578063dd62ed3e14610a0857600080fd5b8063c024666814610942578063c18bc19514610962578063c876d0b914610982578063c8c8ebe41461099c57600080fd5b8063a265777811610185578063a9059cbb11610154578063a9059cbb146108c2578063b62496f5146108e2578063b722090b14610912578063bbc0c7421461092857600080fd5b8063a26577781461084b578063a34fb6521461086b578063a457c2d714610881578063a4d15b64146108a157600080fd5b80638da5cb5b116101c15780638da5cb5b146107d8578063924de9b7146107f657806395d89b41146108165780639a7a23d61461082b57600080fd5b80637571336a146107835780638095d564146107a35780638a8c523c146107c357600080fd5b80633915f572116102cc578063541a43cf1161026a5780636a486a8e116102395780636a486a8e146107035780636ddd17131461071957806370a0823114610738578063715018a61461076e57600080fd5b8063541a43cf146106ad5780635a139dd4146106c357806365d88c1d146106d957806366ce89f6146106ee57600080fd5b80634a62bb65116102a65780634a62bb65146106285780634e4d7690146106485780634f77f6c01461065e5780634fbee1931461067457600080fd5b80633915f572146105be57806339509351146105d457806349bd5a5e146105f457600080fd5b8063203e727e116103445780632b383f66116103135780632b383f66146105565780632b64dec51461056c57806330d5d18d14610582578063313ce567146105a257600080fd5b8063203e727e146104e057806322d3e2aa1461050057806323b872dd1461052057806329b9ae581461054057600080fd5b806310d5de531161038057806310d5de531461042f5780631694505e1461045f57806318160ddd146104ab5780631a8145bb146104ca57600080fd5b806305dac89a146103b257806306fdde03146103d4578063095ea7b3146103ff57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103d26103cd366004612d16565b610b1e565b005b3480156103e057600080fd5b506103e9610bda565b6040516103f69190612da1565b60405180910390f35b34801561040b57600080fd5b5061041f61041a366004612df6565b610c6c565b60405190151581526020016103f6565b34801561043b57600080fd5b5061041f61044a366004612e22565b60246020526000908152604090205460ff1681565b34801561046b57600080fd5b506104937f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103f6565b3480156104b757600080fd5b506002545b6040519081526020016103f6565b3480156104d657600080fd5b506104bc60205481565b3480156104ec57600080fd5b506103d26104fb366004612e3f565b610c83565b34801561050c57600080fd5b506103d261051b366004612e58565b610d60565b34801561052c57600080fd5b5061041f61053b366004612e9b565b610e1a565b34801561054c57600080fd5b506104bc601d5481565b34801561056257600080fd5b506104bc601b5481565b34801561057857600080fd5b506104bc601e5481565b34801561058e57600080fd5b506103d261059d366004612e22565b610e83565b3480156105ae57600080fd5b50604051601281526020016103f6565b3480156105ca57600080fd5b506104bc60085481565b3480156105e057600080fd5b5061041f6105ef366004612df6565b610f15565b34801561060057600080fd5b506104937f000000000000000000000000459b386ba5cc5b23444332a27f84e15c886d553981565b34801561063457600080fd5b50600e5461041f9062010000900460ff1681565b34801561065457600080fd5b506104bc60075481565b34801561066a57600080fd5b506104bc60195481565b34801561068057600080fd5b5061041f61068f366004612e22565b6001600160a01b031660009081526023602052604090205460ff1690565b3480156106b957600080fd5b506104bc601c5481565b3480156106cf57600080fd5b506104bc60155481565b3480156106e557600080fd5b506103e9610f4b565b3480156106fa57600080fd5b5061041f610fd9565b34801561070f57600080fd5b506104bc60185481565b34801561072557600080fd5b50600e5461041f90610100900460ff1681565b34801561074457600080fd5b506104bc610753366004612e22565b6001600160a01b031660009081526020819052604090205490565b34801561077a57600080fd5b506103d2611018565b34801561078f57600080fd5b506103d261079e366004612eec565b61108c565b3480156107af57600080fd5b506103d26107be366004612f21565b6110e1565b3480156107cf57600080fd5b506103d2611189565b3480156107e457600080fd5b506005546001600160a01b0316610493565b34801561080257600080fd5b506103d2610811366004612f4d565b6111c8565b34801561082257600080fd5b506103e961120c565b34801561083757600080fd5b506103d2610846366004612eec565b61121b565b34801561085757600080fd5b506103d2610866366004612f4d565b6112fb565b34801561087757600080fd5b506104bc60175481565b34801561088d57600080fd5b5061041f61089c366004612df6565b611343565b3480156108ad57600080fd5b50600e5461041f906301000000900460ff1681565b3480156108ce57600080fd5b5061041f6108dd366004612df6565b611392565b3480156108ee57600080fd5b5061041f6108fd366004612e22565b60256020526000908152604090205460ff1681565b34801561091e57600080fd5b506104bc60215481565b34801561093457600080fd5b50600e5461041f9060ff1681565b34801561094e57600080fd5b506103d261095d366004612eec565b61139f565b34801561096e57600080fd5b506103d261097d366004612e3f565b611428565b34801561098e57600080fd5b5060135461041f9060ff1681565b3480156109a857600080fd5b506104bc600b5481565b3480156109be57600080fd5b506103d26109cd366004612f7e565b6114f9565b3480156109de57600080fd5b5061041f6109ed366004612e3f565b61158a565b3480156109fe57600080fd5b506104bc60145481565b348015610a1457600080fd5b506104bc610a23366004613055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a5a57600080fd5b506104bc600c5481565b348015610a7057600080fd5b506104bc610a7f366004612e22565b60126020526000908152604090205481565b348015610a9d57600080fd5b5061041f6116e1565b348015610ab257600080fd5b506104bc60165481565b348015610ac857600080fd5b506103d2610ad7366004612e22565b61171e565b348015610ae857600080fd5b506104bc601a5481565b348015610afe57600080fd5b506104bc600d5481565b348015610b1457600080fd5b506104bc601f5481565b6005546001600160a01b03163314610b515760405162461bcd60e51b8152600401610b489061308e565b60405180910390fd5b610b5d60068585612c5a565b5060016007556008829055600a80546001600160a01b0319166001600160a01b0383161781556014541115610bd45760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b48565b50505050565b606060038054610be9906130c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c15906130c3565b8015610c625780601f10610c3757610100808354040283529160200191610c62565b820191906000526020600020905b815481529060010190602001808311610c4557829003601f168201915b5050505050905090565b6000610c7933848461186f565b5060015b92915050565b6005546001600160a01b03163314610cad5760405162461bcd60e51b8152600401610b489061308e565b670de0b6b3a76400006103e8610cc260025490565b610ccd906001613114565b610cd79190613133565b610ce19190613133565b811015610d485760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610b48565b610d5a81670de0b6b3a7640000613114565b600b5550565b6005546001600160a01b03163314610d8a5760405162461bcd60e51b8152600401610b489061308e565b6019869055601a859055601b849055601c839055601d829055601e81905583610db38688613155565b610dbd9190613155565b6018819055600f1015610e125760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610b48565b505050505050565b6000610e27848484611994565b610e798433610e7485604051806060016040528060288152602001613320602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906124a0565b61186f565b5060019392505050565b6005546001600160a01b03163314610ead5760405162461bcd60e51b8152600401610b489061308e565b6009546040516001600160a01b036101009092048216918316907fe1bb4a3e2b2b99353f84d73df9e136cfe17627ed07083a649101dfa6bde8459c90600090a3600980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610c79918590610e749086611809565b60068054610f58906130c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610f84906130c3565b8015610fd15780601f10610fa657610100808354040283529160200191610fd1565b820191906000526020600020905b815481529060010190602001808311610fb457829003601f168201915b505050505081565b6005546000906001600160a01b031633146110065760405162461bcd60e51b8152600401610b489061308e565b50600e805462ff000019169055600190565b6005546001600160a01b031633146110425760405162461bcd60e51b8152600401610b489061308e565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110b65760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461110b5760405162461bcd60e51b8152600401610b489061308e565b601583905560168290556017819055806111258385613155565b61112f9190613155565b6014819055600a10156111845760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610b48565b505050565b6005546001600160a01b031633146111b35760405162461bcd60e51b8152600401610b489061308e565b600e805461ffff191661010117905543602255565b6005546001600160a01b031633146111f25760405162461bcd60e51b8152600401610b489061308e565b600e80549115156101000261ff0019909216919091179055565b606060048054610be9906130c3565b6005546001600160a01b031633146112455760405162461bcd60e51b8152600401610b489061308e565b7f000000000000000000000000459b386ba5cc5b23444332a27f84e15c886d55396001600160a01b0316826001600160a01b031614156112ed5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610b48565b6112f782826124da565b5050565b6005546001600160a01b031633146113255760405162461bcd60e51b8152600401610b489061308e565b600e805491151563010000000263ff00000019909216919091179055565b6000610c793384610e7485604051806060016040528060258152602001613348602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906124a0565b6000610c79338484611994565b6005546001600160a01b031633146113c95760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146114525760405162461bcd60e51b8152600401610b489061308e565b670de0b6b3a76400006103e861146760025490565b611472906005613114565b61147c9190613133565b6114869190613133565b8110156114e15760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610b48565b6114f381670de0b6b3a7640000613114565b600d5550565b6005546001600160a01b031633146115235760405162461bcd60e51b8152600401610b489061308e565b60005b82518110156111845781601160008584815181106115465761154661316d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061158281613183565b915050611526565b6005546000906001600160a01b031633146115b75760405162461bcd60e51b8152600401610b489061308e565b620186a06115c460025490565b6115cf906001613114565b6115d99190613133565b8210156116465760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610b48565b6103e861165260025490565b61165d906005613114565b6116679190613133565b8211156116d35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610b48565b50600c81905560015b919050565b6005546000906001600160a01b0316331461170e5760405162461bcd60e51b8152600401610b489061308e565b506013805460ff19169055600190565b6005546001600160a01b031633146117485760405162461bcd60e51b8152600401610b489061308e565b6001600160a01b0381166117ad5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b48565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806118168385613155565b9050838110156118685760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b48565b9392505050565b6001600160a01b0383166118d15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b48565b6001600160a01b0382166119325760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b48565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119ba5760405162461bcd60e51b8152600401610b489061319e565b6001600160a01b0382166119e05760405162461bcd60e51b8152600401610b48906131e3565b6001600160a01b03821660009081526011602052604090205460ff16158015611a2257506001600160a01b03831660009081526011602052604090205460ff16155b611a885760405162461bcd60e51b815260206004820152603160248201527f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460448201527072616e73666572696e6720746f6b656e7360781b6064820152608401610b48565b80611a99576111848383600061252e565b600e5462010000900460ff1615611f50576005546001600160a01b03848116911614801590611ad657506005546001600160a01b03838116911614155b8015611aea57506001600160a01b03821615155b8015611b0157506001600160a01b03821661dead14155b8015611b10575060095460ff16155b15611f5057600e5460ff16611ba3576001600160a01b03831660009081526023602052604090205460ff1680611b5e57506001600160a01b03821660009081526023602052604090205460ff165b611ba35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610b48565b60135460ff1615611cea576005546001600160a01b03838116911614801590611bfe57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b8015611c3c57507f000000000000000000000000459b386ba5cc5b23444332a27f84e15c886d55396001600160a01b0316826001600160a01b031614155b15611cea57326000908152600f60205260409020544311611cd75760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610b48565b326000908152600f602052604090204390555b6001600160a01b03831660009081526025602052604090205460ff168015611d2b57506001600160a01b03821660009081526024602052604090205460ff16155b15611e0f57600b54811115611da05760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610b48565b600d546001600160a01b038316600090815260208190526040902054611dc69083613155565b1115611e0a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b48565b611f50565b6001600160a01b03821660009081526025602052604090205460ff168015611e5057506001600160a01b03831660009081526024602052604090205460ff16155b15611ec657600b54811115611e0a5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610b48565b6001600160a01b03821660009081526024602052604090205460ff16611f5057600d546001600160a01b038316600090815260208190526040902054611f0c9083613155565b1115611f505760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610b48565b602254611f5e906003613155565b4311158015611f9f57507f000000000000000000000000459b386ba5cc5b23444332a27f84e15c886d55396001600160a01b0316826001600160a01b031614155b8015611fc857506001600160a01b038216737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611ff1576001600160a01b0382166000908152601160205260409020805460ff191660011790555b7f000000000000000000000000459b386ba5cc5b23444332a27f84e15c886d55396001600160a01b03908116908416148015816120375750600e546301000000900460ff165b156120dd576001600160a01b0384166000908152601060205260409020541580159061208957506001600160a01b03841660009081526010602052604090205442906120869062015180613155565b10155b156120c257601c54601a819055601d546019819055601e54601b819055916120b091613155565b6120ba9190613155565b601855612153565b6002601a81905560036019819055601b54916120b091613155565b6001600160a01b038316600090815260106020526040902054612116576001600160a01b03831660009081526010602052604090204290555b600e546301000000900460ff16612153576003601a81905560066019819055601b819055906121459082613155565b61214f9190613155565b6018555b30600090815260208190526040902054600c548110801590819061217e5750600e54610100900460ff165b801561218d575060095460ff16155b80156121b257506001600160a01b03861660009081526025602052604090205460ff16155b80156121d757506001600160a01b03861660009081526023602052604090205460ff16155b80156121fc57506001600160a01b03851660009081526023602052604090205460ff16155b15612221576009805460ff19166001179055612216612637565b6009805460ff191690555b6009546001600160a01b03871660009081526023602052604090205460ff9182161591168061226857506001600160a01b03861660009081526023602052604090205460ff165b15612271575060005b6000811561248b576001600160a01b03871660009081526025602052604090205460ff1680156122a357506000601854115b15612361576122c860646122c26018548961287390919063ffffffff16565b906128f2565b9050601854601a54826122db9190613114565b6122e59190613133565b602060008282546122f69190613155565b9091555050601854601b5461230b9083613114565b6123159190613133565b602160008282546123269190613155565b909155505060185460195461233b9083613114565b6123459190613133565b601f60008282546123569190613155565b9091555061246d9050565b6001600160a01b03881660009081526025602052604090205460ff16801561238b57506000601454115b1561246d57600780546001600160a01b038916600090815260126020526040812082905560085492916123bf908490613155565b90915550506014546123d9906064906122c2908990612873565b9050601454601654826123ec9190613114565b6123f69190613133565b602060008282546124079190613155565b909155505060145460175461241c9083613114565b6124269190613133565b602160008282546124379190613155565b909155505060145460155461244c9083613114565b6124569190613133565b601f60008282546124679190613155565b90915550505b801561247e5761247e88308361252e565b6124888187613226565b95505b61249688888861252e565b5050505050505050565b600081848411156124c45760405162461bcd60e51b8152600401610b489190612da1565b5060006124d18486613226565b95945050505050565b6001600160a01b038216600081815260256020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166125545760405162461bcd60e51b8152600401610b489061319e565b6001600160a01b03821661257a5760405162461bcd60e51b8152600401610b48906131e3565b6125b7816040518060600160405280602681526020016132fa602691396001600160a01b03861660009081526020819052604090205491906124a0565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546125e69082611809565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611987565b3060009081526020819052604081205490506000602154601f5460205461265e9190613155565b6126689190613155565b90506000821580612677575081155b1561268157505050565b600c5461268f906014613114565b8311156126a757600c546126a4906014613114565b92505b6000600283602054866126ba9190613114565b6126c49190613133565b6126ce9190613133565b905060006126dc8583612934565b9050476126e882612976565b60006126f44783612934565b90506000612711876122c2601f548561287390919063ffffffff16565b9050600061272e886122c26021548661287390919063ffffffff16565b905060008161273d8486613226565b6127479190613226565b60006020819055601f8190556021819055600a546040519293506001600160a01b031691849181818185875af1925050503d80600081146127a4576040519150601f19603f3d011682016040523d82523d6000602084013e6127a9565b606091505b509098505086158015906127bd5750600081115b1561280e576127cc8782612b3d565b60208054604080518981529283018490528201527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6009546040516101009091046001600160a01b0316904790600081818185875af1925050503d806000811461285f576040519150601f19603f3d011682016040523d82523d6000602084013e612864565b606091505b50505050505050505050505050565b60008261288257506000610c7d565b600061288e8385613114565b90508261289b8583613133565b146118685760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b48565b600061186883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c2c565b600061186883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124a0565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129ab576129ab61316d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612a2457600080fd5b505afa158015612a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5c919061323d565b81600181518110612a6f57612a6f61316d565b60200260200101906001600160a01b031690816001600160a01b031681525050612aba307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461186f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612b0f90859060009086903090429060040161325a565b600060405180830381600087803b158015612b2957600080fd5b505af1158015610e12573d6000803e3d6000fd5b612b68307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461186f565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c4016060604051808303818588803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c2591906132cb565b5050505050565b60008183612c4d5760405162461bcd60e51b8152600401610b489190612da1565b5060006124d18486613133565b828054612c66906130c3565b90600052602060002090601f016020900481019282612c885760008555612cce565b82601f10612ca15782800160ff19823516178555612cce565b82800160010185558215612cce579182015b82811115612cce578235825591602001919060010190612cb3565b50612cda929150612cde565b5090565b5b80821115612cda5760008155600101612cdf565b6001600160a01b0381168114612d0857600080fd5b50565b80356116dc81612cf3565b60008060008060608587031215612d2c57600080fd5b843567ffffffffffffffff80821115612d4457600080fd5b818701915087601f830112612d5857600080fd5b813581811115612d6757600080fd5b886020828501011115612d7957600080fd5b6020928301965094505085013591506040850135612d9681612cf3565b939692955090935050565b600060208083528351808285015260005b81811015612dce57858101830151858201604001528201612db2565b81811115612de0576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612e0957600080fd5b8235612e1481612cf3565b946020939093013593505050565b600060208284031215612e3457600080fd5b813561186881612cf3565b600060208284031215612e5157600080fd5b5035919050565b60008060008060008060c08789031215612e7157600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600060608486031215612eb057600080fd5b8335612ebb81612cf3565b92506020840135612ecb81612cf3565b929592945050506040919091013590565b803580151581146116dc57600080fd5b60008060408385031215612eff57600080fd5b8235612f0a81612cf3565b9150612f1860208401612edc565b90509250929050565b600080600060608486031215612f3657600080fd5b505081359360208301359350604090920135919050565b600060208284031215612f5f57600080fd5b61186882612edc565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612f9157600080fd5b823567ffffffffffffffff80821115612fa957600080fd5b818501915085601f830112612fbd57600080fd5b8135602082821115612fd157612fd1612f68565b8160051b604051601f19603f83011681018181108682111715612ff657612ff6612f68565b60405292835281830193508481018201928984111561301457600080fd5b948201945b838610156130395761302a86612d0b565b85529482019493820193613019565b96506130489050878201612edc565b9450505050509250929050565b6000806040838503121561306857600080fd5b823561307381612cf3565b9150602083013561308381612cf3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806130d757607f821691505b602082108114156130f857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561312e5761312e6130fe565b500290565b60008261315057634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613168576131686130fe565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415613197576131976130fe565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082821015613238576132386130fe565b500390565b60006020828403121561324f57600080fd5b815161186881612cf3565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132aa5784516001600160a01b031683529383019391830191600101613285565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156132e057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b2e9733ad87ff8c50dd6ae0aa05011f927a240e43c2afeba484e0a6fdb9337e864736f6c63430008090033
Deployed Bytecode Sourcemap
19541:20245:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26929:399;;;;;;;;;;-1:-1:-1;26929:399:0;;;;;:::i;:::-;;:::i;:::-;;5490:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6545:210;;;;;;;;;;-1:-1:-1;6545:210:0;;;;;:::i;:::-;;:::i;:::-;;;2182:14:1;;2175:22;2157:41;;2145:2;2130:18;6545:210:0;2017:187:1;21182:63:0;;;;;;;;;;-1:-1:-1;21182:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19617:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2652:32:1;;;2634:51;;2622:2;2607:18;19617:51:0;2461:230:1;5811:108:0;;;;;;;;;;-1:-1:-1;5899:12:0;;5811:108;;;2842:25:1;;;2830:2;2815:18;5811:108:0;2696:177:1;21011:33:0;;;;;;;;;;;;;;;;26011:275;;;;;;;;;;-1:-1:-1;26011:275:0;;;;;:::i;:::-;;:::i;27787:797::-;;;;;;;;;;-1:-1:-1;27787:797:0;;;;;:::i;:::-;;:::i;6763:454::-;;;;;;;;;;-1:-1:-1;6763:454:0;;;;;:::i;:::-;;:::i;20878:37::-;;;;;;;;;;;;;;;;20792:34;;;;;;;;;;;;;;;;20922:39;;;;;;;;;;;;;;;;29532:185;;;;;;;;;;-1:-1:-1;29532:185:0;;;;;:::i;:::-;;:::i;5710:93::-;;;;;;;;;;-1:-1:-1;5710:93:0;;5793:2;4194:36:1;;4182:2;4167:18;5710:93:0;4052:184:1;19797:28:0;;;;;;;;;;;;;;;;7225:300;;;;;;;;;;-1:-1:-1;7225:300:0;;;;;:::i;:::-;;:::i;19675:38::-;;;;;;;;;;;;;;;20139:33;;;;;;;;;;-1:-1:-1;20139:33:0;;;;;;;;;;;19759:31;;;;;;;;;;;;;;;;20715:32;;;;;;;;;;;;;;;;29725:126;;;;;;;;;;-1:-1:-1;29725:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;29815:28:0;29791:4;29815:28;;;:19;:28;;;;;;;;;29725:126;20835:36;;;;;;;;;;;;;;;;20563:31;;;;;;;;;;;;;;;;19722:30;;;;;;;;;;;;;:::i;25006:125::-;;;;;;;;;;;;;:::i;20680:28::-;;;;;;;;;;;;;;;;20101:31;;;;;;;;;;-1:-1:-1;20101:31:0;;;;;;;;;;;5927:177;;;;;;;;;;-1:-1:-1;5927:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;6078:18:0;6046:7;6078:18;;;;;;;;;;;;5927:177;12059:148;;;;;;;;;;;;;:::i;26558:167::-;;;;;;;;;;-1:-1:-1;26558:167:0;;;;;:::i;:::-;;:::i;27336:443::-;;;;;;;;;;-1:-1:-1;27336:443:0;;;;;:::i;:::-;;:::i;24806:148::-;;;;;;;;;;;;;:::i;11845:79::-;;;;;;;;;;-1:-1:-1;11910:6:0;;-1:-1:-1;;;;;11910:6:0;11845:79;;26821:100;;;;;;;;;;-1:-1:-1;26821:100:0;;;;;:::i;:::-;;:::i;5598:104::-;;;;;;;;;;;;;:::i;29024:304::-;;;;;;;;;;-1:-1:-1;29024:304:0;;;;;:::i;:::-;;:::i;25335:101::-;;;;;;;;;;-1:-1:-1;25335:101:0;;;;;:::i;:::-;;:::i;20638:33::-;;;;;;;;;;;;;;;;7533:400;;;;;;;;;;-1:-1:-1;7533:400:0;;;;;:::i;:::-;;:::i;20179:37::-;;;;;;;;;;-1:-1:-1;20179:37:0;;;;;;;;;;;6112:216;;;;;;;;;;-1:-1:-1;6112:216:0;;;;;:::i;:::-;;:::i;21254:57::-;;;;;;;;;;-1:-1:-1;21254:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21051:36;;;;;;;;;;;;;;;;20061:33;;;;;;;;;;-1:-1:-1;20061:33:0;;;;;;;;28592:182;;;;;;;;;;-1:-1:-1;28592:182:0;;;;;:::i;:::-;;:::i;26294:256::-;;;;;;;;;;-1:-1:-1;26294:256:0;;;;;:::i;:::-;;:::i;20481:39::-;;;;;;;;;;-1:-1:-1;20481:39:0;;;;;;;;19946:35;;;;;;;;;;;;;;;;28782:234;;;;;;;;;;-1:-1:-1;28782:234:0;;;;;:::i;:::-;;:::i;25506:497::-;;;;;;;;;;-1:-1:-1;25506:497:0;;;;;:::i;:::-;;:::i;20529:27::-;;;;;;;;;;;;;;;;6336:201;;;;;;;;;;-1:-1:-1;6336:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;6502:18:0;;;6470:7;6502:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6336:201;19988:33;;;;;;;;;;;;;;;;20417:55;;;;;;;;;;-1:-1:-1;20417:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;25192:135;;;;;;;;;;;;;:::i;20601:30::-;;;;;;;;;;;;;;;;12215:281;;;;;;;;;;-1:-1:-1;12215:281:0;;;;;:::i;:::-;;:::i;20754:31::-;;;;;;;;;;;;;;;;20028:24;;;;;;;;;;;;;;;;20970:34;;;;;;;;;;;;;;;;26929:399;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;;;;;;;;;27099:24:::1;:16;27118:5:::0;;27099:24:::1;:::i;:::-;-1:-1:-1::0;27153:1:0::1;27134:16;:20:::0;27165:13:::1;:30:::0;;;27206:18:::1;:43:::0;;-1:-1:-1;;;;;;27206:43:0::1;-1:-1:-1::0;;;;;27206:43:0;::::1;;::::0;;27268:12:::1;::::0;:18:::1;;27260:60;;;::::0;-1:-1:-1;;;27260:60:0;;7724:2:1;27260:60:0::1;::::0;::::1;7706:21:1::0;7763:2;7743:18;;;7736:30;7802:31;7782:18;;;7775:59;7851:18;;27260:60:0::1;7522:353:1::0;27260:60:0::1;26929:399:::0;;;;:::o;5490:100::-;5544:13;5577:5;5570:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5490:100;:::o;6545:210::-;6664:4;6686:39;332:10;6709:7;6718:6;6686:8;:39::i;:::-;-1:-1:-1;6743:4:0;6545:210;;;;;:::o;26011:275::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;26148:4:::1;26140;26119:13;5899:12:::0;;;5811:108;26119:13:::1;:17;::::0;26135:1:::1;26119:17;:::i;:::-;26118:26;;;;:::i;:::-;26117:35;;;;:::i;:::-;26107:6;:45;;26085:142;;;::::0;-1:-1:-1;;;26085:142:0;;8994:2:1;26085:142:0::1;::::0;::::1;8976:21:1::0;9033:2;9013:18;;;9006:30;9072:34;9052:18;;;9045:62;-1:-1:-1;;;9123:18:1;;;9116:45;9178:19;;26085:142:0::1;8792:411:1::0;26085:142:0::1;26261:17;:6:::0;26271::::1;26261:17;:::i;:::-;26238:20;:40:::0;-1:-1:-1;26011:275:0:o;27787:797::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;28075:17:::1;:34:::0;;;28120:16:::1;:32:::0;;;28163:19:::1;:38:::0;;;28212:21:::1;:46:::0;;;28269:22:::1;:48:::0;;;28328:24:::1;:52:::0;;;28185:16;28420:49:::1;28139:13:::0;28095:14;28420:49:::1;:::i;:::-;:84;;;;:::i;:::-;28391:13;:113:::0;;;28540:2:::1;-1:-1:-1::0;28523:19:0::1;28515:61;;;::::0;-1:-1:-1;;;28515:61:0;;9543:2:1;28515:61:0::1;::::0;::::1;9525:21:1::0;9582:2;9562:18;;;9555:30;9621:31;9601:18;;;9594:59;9670:18;;28515:61:0::1;9341:353:1::0;28515:61:0::1;27787:797:::0;;;;;;:::o;6763:454::-;6903:4;6920:36;6930:6;6938:9;6949:6;6920:9;:36::i;:::-;6967:220;6990:6;332:10;7038:138;7094:6;7038:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7038:19:0;;;;;;:11;:19;;;;;;;;332:10;7038:33;;;;;;;;;;:37;:138::i;:::-;6967:8;:220::i;:::-;-1:-1:-1;7205:4:0;6763:454;;;;;:::o;29532:185::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;29653:16:::1;::::0;29618:52:::1;::::0;-1:-1:-1;;;;;29653:16:0::1;::::0;;::::1;::::0;::::1;::::0;29618:52;::::1;::::0;::::1;::::0;;;::::1;29681:16;:28:::0;;-1:-1:-1;;;;;29681:28:0;;::::1;;;-1:-1:-1::0;;;;;;29681:28:0;;::::1;::::0;;;::::1;::::0;;29532:185::o;7225:300::-;332:10;7340:4;7434:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7434:34:0;;;;;;;;;;7340:4;;7362:133;;7412:7;;7434:50;;7473:10;7434:38;:50::i;19722:30::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25006:125::-;11972:6;;25062:4;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;-1:-1:-1;25079:14:0::1;:22:::0;;-1:-1:-1;;25079:22:0::1;::::0;;;25006:125;:::o;12059:148::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;12150:6:::1;::::0;12129:40:::1;::::0;12166:1:::1;::::0;-1:-1:-1;;;;;12150:6:0::1;::::0;12129:40:::1;::::0;12166:1;;12129:40:::1;12180:6;:19:::0;;-1:-1:-1;;;;;;12180:19:0::1;::::0;;12059:148::o;26558:167::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26671:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;26671:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26558:167::o;27336:443::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;27496:16:::1;:33:::0;;;27540:15:::1;:31:::0;;;27582:18:::1;:37:::0;;;27603:16;27645:34:::1;27558:13:::0;27515:14;27645:34:::1;:::i;:::-;:55;;;;:::i;:::-;27630:12;:70:::0;;;27735:2:::1;-1:-1:-1::0;27719:18:0::1;27711:60;;;::::0;-1:-1:-1;;;27711:60:0;;7724:2:1;27711:60:0::1;::::0;::::1;7706:21:1::0;7763:2;7743:18;;;7736:30;7802:31;7782:18;;;7775:59;7851:18;;27711:60:0::1;7522:353:1::0;27711:60:0::1;27336:443:::0;;;:::o;24806:148::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;24861:13:::1;:20:::0;;-1:-1:-1;;24892:18:0;;;;;24934:12:::1;24921:10;:25:::0;24806:148::o;26821:100::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;26892:11:::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;26892:21:0;;::::1;::::0;;;::::1;::::0;;26821:100::o;5598:104::-;5654:13;5687:7;5680:14;;;;;:::i;29024:304::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;29168:13:::1;-1:-1:-1::0;;;;;29160:21:0::1;:4;-1:-1:-1::0;;;;;29160:21:0::1;;;29138:128;;;::::0;-1:-1:-1;;;29138:128:0;;9901:2:1;29138:128:0::1;::::0;::::1;9883:21:1::0;9940:2;9920:18;;;9913:30;9979:34;9959:18;;;9952:62;10050:27;10030:18;;;10023:55;10095:19;;29138:128:0::1;9699:421:1::0;29138:128:0::1;29279:41;29308:4;29314:5;29279:28;:41::i;:::-;29024:304:::0;;:::o;25335:101::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;25402:18:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;25402:26:0;;::::1;::::0;;;::::1;::::0;;25335:101::o;7533:400::-;7653:4;7675:228;332:10;7725:7;7747:145;7804:15;7747:145;;;;;;;;;;;;;;;;;332:10;7747:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7747:34:0;;;;;;;;;;;;:38;:145::i;6112:216::-;6234:4;6256:42;332:10;6280:9;6291:6;6256:9;:42::i;28592:182::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28677:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;28677:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;28732:34;;2157:41:1;;;28732:34:0::1;::::0;2130:18:1;28732:34:0::1;;;;;;;28592:182:::0;;:::o;26294:256::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;26434:4:::1;26426;26405:13;5899:12:::0;;;5811:108;26405:13:::1;:17;::::0;26421:1:::1;26405:17;:::i;:::-;26404:26;;;;:::i;:::-;26403:35;;;;:::i;:::-;26393:6;:45;;26371:131;;;::::0;-1:-1:-1;;;26371:131:0;;10327:2:1;26371:131:0::1;::::0;::::1;10309:21:1::0;10366:2;10346:18;;;10339:30;10405:34;10385:18;;;10378:62;-1:-1:-1;;;10456:18:1;;;10449:34;10500:19;;26371:131:0::1;10125:400:1::0;26371:131:0::1;26525:17;:6:::0;26535::::1;26525:17;:::i;:::-;26513:9;:29:::0;-1:-1:-1;26294:256:0:o;28782:234::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;28904:9:::1;28899:110;28923:8;:15;28919:1;:19;28899:110;;;28984:13;28960:8;:21;28969:8;28978:1;28969:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;28960:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;28960:21:0;:37;;-1:-1:-1;;28960:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28940:3;::::1;::::0;::::1;:::i;:::-;;;;28899:110;;25506:497:::0;11972:6;;25614:4;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;25693:6:::1;25672:13;5899:12:::0;;;5811:108;25672:13:::1;:17;::::0;25688:1:::1;25672:17;:::i;:::-;25671:28;;;;:::i;:::-;25658:9;:41;;25636:144;;;::::0;-1:-1:-1;;;25636:144:0;;11004:2:1;25636:144:0::1;::::0;::::1;10986:21:1::0;11043:2;11023:18;;;11016:30;11082:34;11062:18;;;11055:62;-1:-1:-1;;;11133:18:1;;;11126:51;11194:19;;25636:144:0::1;10802:417:1::0;25636:144:0::1;25848:4;25827:13;5899:12:::0;;;5811:108;25827:13:::1;:17;::::0;25843:1:::1;25827:17;:::i;:::-;25826:26;;;;:::i;:::-;25813:9;:39;;25791:141;;;::::0;-1:-1:-1;;;25791:141:0;;11426:2:1;25791:141:0::1;::::0;::::1;11408:21:1::0;11465:2;11445:18;;;11438:30;11504:34;11484:18;;;11477:62;-1:-1:-1;;;11555:18:1;;;11548:50;11615:19;;25791:141:0::1;11224:416:1::0;25791:141:0::1;-1:-1:-1::0;25943:18:0::1;:30:::0;;;25991:4:::1;12042:1;25506:497:::0;;;:::o;25192:135::-;11972:6;;25252:4;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;-1:-1:-1;25269:20:0::1;:28:::0;;-1:-1:-1;;25269:28:0::1;::::0;;;25192:135;:::o;12215:281::-;11972:6;;-1:-1:-1;;;;;11972:6:0;332:10;11972:22;11964:67;;;;-1:-1:-1;;;11964:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12318:22:0;::::1;12296:110;;;::::0;-1:-1:-1;;;12296:110:0;;11847:2:1;12296:110:0::1;::::0;::::1;11829:21:1::0;11886:2;11866:18;;;11859:30;11925:34;11905:18;;;11898:62;-1:-1:-1;;;11976:18:1;;;11969:36;12022:19;;12296:110:0::1;11645:402:1::0;12296:110:0::1;12443:6;::::0;12422:38:::1;::::0;-1:-1:-1;;;;;12422:38:0;;::::1;::::0;12443:6:::1;::::0;12422:38:::1;::::0;12443:6:::1;::::0;12422:38:::1;12471:6;:17:::0;;-1:-1:-1;;;;;;12471:17:0::1;-1:-1:-1::0;;;;;12471:17:0;;;::::1;::::0;;;::::1;::::0;;12215:281::o;9958:181::-;10016:7;;10048:5;10052:1;10048;:5;:::i;:::-;10036:17;;10077:1;10072;:6;;10064:46;;;;-1:-1:-1;;;10064:46:0;;12254:2:1;10064:46:0;;;12236:21:1;12293:2;12273:18;;;12266:30;12332:29;12312:18;;;12305:57;12379:18;;10064:46:0;12052:351:1;10064:46:0;10130:1;9958:181;-1:-1:-1;;;9958:181:0:o;9414:380::-;-1:-1:-1;;;;;9550:19:0;;9542:68;;;;-1:-1:-1;;;9542:68:0;;12610:2:1;9542:68:0;;;12592:21:1;12649:2;12629:18;;;12622:30;12688:34;12668:18;;;12661:62;-1:-1:-1;;;12739:18:1;;;12732:34;12783:19;;9542:68:0;12408:400:1;9542:68:0;-1:-1:-1;;;;;9629:21:0;;9621:68;;;;-1:-1:-1;;;9621:68:0;;13015:2:1;9621:68:0;;;12997:21:1;13054:2;13034:18;;;13027:30;13093:34;13073:18;;;13066:62;-1:-1:-1;;;13144:18:1;;;13137:32;13186:19;;9621:68:0;12813:398:1;9621:68:0;-1:-1:-1;;;;;9702:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9754:32;;2842:25:1;;;9754:32:0;;2815:18:1;9754:32:0;;;;;;;;9414:380;;;:::o;29909:6845::-;-1:-1:-1;;;;;30041:18:0;;30033:68;;;;-1:-1:-1;;;30033:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30120:16:0;;30112:64;;;;-1:-1:-1;;;30112:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30210:12:0;;;;;;:8;:12;;;;;;;;30209:13;:32;;;;-1:-1:-1;;;;;;30227:14:0;;;;;;:8;:14;;;;;;;;30226:15;30209:32;30187:131;;;;-1:-1:-1;;;30187:131:0;;14228:2:1;30187:131:0;;;14210:21:1;14267:2;14247:18;;;14240:30;14306:34;14286:18;;;14279:62;-1:-1:-1;;;14357:18:1;;;14350:47;14414:19;;30187:131:0;14026:413:1;30187:131:0;30333:11;30329:93;;30361:28;30377:4;30383:2;30387:1;30361:15;:28::i;30329:93::-;30438:14;;;;;;;30434:2485;;;11910:6;;-1:-1:-1;;;;;30491:15:0;;;11910:6;;30491:15;;;;:49;;-1:-1:-1;11910:6:0;;-1:-1:-1;;;;;30527:13:0;;;11910:6;;30527:13;;30491:49;:86;;;;-1:-1:-1;;;;;;30561:16:0;;;;30491:86;:128;;;;-1:-1:-1;;;;;;30598:21:0;;30612:6;30598:21;;30491:128;:158;;;;-1:-1:-1;30641:8:0;;;;30640:9;30491:158;30469:2439;;;30689:13;;;;30684:223;;-1:-1:-1;;;;;30761:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;30790:23:0;;;;;;:19;:23;;;;;;;;30761:52;30727:160;;;;-1:-1:-1;;;30727:160:0;;14646:2:1;30727:160:0;;;14628:21:1;14685:2;14665:18;;;14658:30;-1:-1:-1;;;14704:18:1;;;14697:52;14766:18;;30727:160:0;14444:346:1;30727:160:0;31063:20;;;;31059:643;;;11910:6;;-1:-1:-1;;;;;31138:13:0;;;11910:6;;31138:13;;;;:72;;;31194:15;-1:-1:-1;;;;;31180:30:0;:2;-1:-1:-1;;;;;31180:30:0;;;31138:72;:129;;;;;31253:13;-1:-1:-1;;;;;31239:28:0;:2;-1:-1:-1;;;;;31239:28:0;;;31138:129;31108:575;;;31386:9;31356:40;;;;:29;:40;;;;;;31432:12;-1:-1:-1;31318:259:0;;;;-1:-1:-1;;;31318:259:0;;14997:2:1;31318:259:0;;;14979:21:1;15036:2;15016:18;;;15009:30;15075:34;15055:18;;;15048:62;15146:34;15126:18;;;15119:62;-1:-1:-1;;;15197:19:1;;;15190:40;15247:19;;31318:259:0;14795:477:1;31318:259:0;31634:9;31604:40;;;;:29;:40;;;;;31647:12;31604:55;;31108:575;-1:-1:-1;;;;;31776:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;31833:35:0;;;;;;:31;:35;;;;;;;;31832:36;31776:92;31750:1143;;;31955:20;;31945:6;:30;;31911:169;;;;-1:-1:-1;;;31911:169:0;;15479:2:1;31911:169:0;;;15461:21:1;15518:2;15498:18;;;15491:30;15557:34;15537:18;;;15530:62;-1:-1:-1;;;15608:18:1;;;15601:51;15669:19;;31911:169:0;15277:417:1;31911:169:0;32163:9;;-1:-1:-1;;;;;6078:18:0;;6046:7;6078:18;;;;;;;;;;;32137:22;;:6;:22;:::i;:::-;:35;;32103:140;;;;-1:-1:-1;;;32103:140:0;;15901:2:1;32103:140:0;;;15883:21:1;15940:2;15920:18;;;15913:30;-1:-1:-1;;;15959:18:1;;;15952:49;16018:18;;32103:140:0;15699:343:1;32103:140:0;31750:1143;;;-1:-1:-1;;;;;32337:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;32392:37:0;;;;;;:31;:37;;;;;;;;32391:38;32337:92;32311:582;;;32516:20;;32506:6;:30;;32472:170;;;;-1:-1:-1;;;32472:170:0;;16249:2:1;32472:170:0;;;16231:21:1;16288:2;16268:18;;;16261:30;16327:34;16307:18;;;16300:62;-1:-1:-1;;;16378:18:1;;;16371:52;16440:19;;32472:170:0;16047:418:1;32311:582:0;-1:-1:-1;;;;;32673:35:0;;;;;;:31;:35;;;;;;;;32668:225;;32793:9;;-1:-1:-1;;;;;6078:18:0;;6046:7;6078:18;;;;;;;;;;;32767:22;;:6;:22;:::i;:::-;:35;;32733:140;;;;-1:-1:-1;;;32733:140:0;;15901:2:1;32733:140:0;;;15883:21:1;15940:2;15920:18;;;15913:30;-1:-1:-1;;;15959:18:1;;;15952:49;16018:18;;32733:140:0;15699:343:1;32733:140:0;33015:10;;:14;;33028:1;33015:14;:::i;:::-;32998:12;:32;;:68;;;;;33053:13;-1:-1:-1;;;;;33047:19:0;:2;-1:-1:-1;;;;;33047:19:0;;;32998:68;:142;;;;-1:-1:-1;;;;;;33083:57:0;;33097:42;33083:57;;32998:142;32980:218;;;-1:-1:-1;;;;;33167:12:0;;;;;;:8;:12;;;;;:19;;-1:-1:-1;;33167:19:0;33182:4;33167:19;;;32980:218;33262:13;-1:-1:-1;;;;;33254:21:0;;;;;;;33290:6;;33254:21;33290:28;;-1:-1:-1;33300:18:0;;;;;;;33290:28;33286:1343;;;-1:-1:-1;;;;;33357:31:0;;;;;;:25;:31;;;;;;:36;;;;:143;;-1:-1:-1;;;;;;33415:31:0;;;;;;:25;:31;;;;;;33484:15;;33415:44;;33450:8;33415:44;:::i;:::-;:84;;33357:143;33335:795;;;33554:21;;33535:16;:40;;;33614:22;;33594:17;:42;;;33677:24;;33655:19;:46;;;33677:24;33757:57;;;:::i;:::-;:100;;;;:::i;:::-;33720:13;:137;33286:1343;;33335:795;33917:1;33898:16;:20;;;33957:1;33937:17;:21;;;34095:19;;;34014:57;;;:::i;33286:1343::-;-1:-1:-1;;;;;34166:29:0;;;;;;:25;:29;;;;;;34162:122;;-1:-1:-1;;;;;34221:29:0;;;;;;:25;:29;;;;;34253:15;34221:47;;34162:122;34305:18;;;;;;;34300:318;;34363:1;34344:16;:20;;;34403:1;34383:17;:21;;;34423:19;:23;;;34403:1;34502:57;;34403:1;34502:57;:::i;:::-;:100;;;;:::i;:::-;34465:13;:137;34300:318;34690:4;34641:28;6078:18;;;;;;;;;;;34748;;34724:42;;;;;;;34797:35;;-1:-1:-1;34821:11:0;;;;;;;34797:35;:61;;;;-1:-1:-1;34850:8:0;;;;34849:9;34797:61;:110;;;;-1:-1:-1;;;;;;34876:31:0;;;;;;:25;:31;;;;;;;;34875:32;34797:110;:153;;;;-1:-1:-1;;;;;;34925:25:0;;;;;;:19;:25;;;;;;;;34924:26;34797:153;:194;;;;-1:-1:-1;;;;;;34968:23:0;;;;;;:19;:23;;;;;;;;34967:24;34797:194;34779:326;;;35018:8;:15;;-1:-1:-1;;35018:15:0;35029:4;35018:15;;;35050:10;:8;:10::i;:::-;35077:8;:16;;-1:-1:-1;;35077:16:0;;;34779:326;35133:8;;-1:-1:-1;;;;;35243:25:0;;35117:12;35243:25;;;:19;:25;;;;;;35133:8;;;;35132:9;;35243:25;;:52;;-1:-1:-1;;;;;;35272:23:0;;;;;;:19;:23;;;;;;;;35243:52;35239:100;;;-1:-1:-1;35322:5:0;35239:100;35351:12;35456:7;35452:1249;;;-1:-1:-1;;;;;35508:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;35557:1;35541:13;;:17;35508:50;35504:1048;;;35586:34;35616:3;35586:25;35597:13;;35586:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;35579:41;;35689:13;;35669:16;;35662:4;:23;;;;:::i;:::-;35661:41;;;;:::i;:::-;35639:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;35819:13:0;;35775:19;;35768:26;;:4;:26;:::i;:::-;35767:65;;;;:::i;:::-;35721:21;;:111;;;;;;;:::i;:::-;;;;-1:-1:-1;;35945:13:0;;35903:17;;35896:24;;:4;:24;:::i;:::-;35895:63;;;;:::i;:::-;35851:19;;:107;;;;;;;:::i;:::-;;;;-1:-1:-1;35504:1048:0;;-1:-1:-1;35504:1048:0;;-1:-1:-1;;;;;36020:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;36070:1;36055:12;;:16;36020:51;36016:536;;;36119:16;;;-1:-1:-1;;;;;36092:24:0;;;;;;:20;:24;;;;;:43;;;36174:13;;;36119:16;36154:33;;36174:13;;36154:33;:::i;:::-;;;;-1:-1:-1;;36224:12:0;;36213:33;;36242:3;;36213:24;;:6;;:10;:24::i;:33::-;36206:40;;36314:12;;36295:15;;36288:4;:22;;;;:::i;:::-;36287:39;;;;:::i;:::-;36265:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;36442:12:0;;36399:18;;36392:25;;:4;:25;:::i;:::-;36391:63;;;;:::i;:::-;36345:21;;:109;;;;;;;:::i;:::-;;;;-1:-1:-1;;36524:12:0;;36504:16;;36497:23;;:4;:23;:::i;:::-;36496:40;;;;:::i;:::-;36473:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;36016:536:0;36572:8;;36568:91;;36601:42;36617:4;36631;36638;36601:15;:42::i;:::-;36675:14;36685:4;36675:14;;:::i;:::-;;;35452:1249;36713:33;36729:4;36735:2;36739:6;36713:15;:33::i;:::-;30022:6732;;;;;29909:6845;;;:::o;10291:226::-;10411:7;10447:12;10439:6;;;;10431:29;;;;-1:-1:-1;;;10431:29:0;;;;;;;;:::i;:::-;-1:-1:-1;10471:9:0;10483:5;10487:1;10483;:5;:::i;:::-;10471:17;10291:226;-1:-1:-1;;;;;10291:226:0:o;29336:188::-;-1:-1:-1;;;;;29419:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;29419:39:0;;;;;;;;;;29476:40;;29419:39;;:31;29476:40;;;29336:188;;:::o;7941:610::-;-1:-1:-1;;;;;8081:20:0;;8073:70;;;;-1:-1:-1;;;8073:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8162:23:0;;8154:71;;;;-1:-1:-1;;;8154:71:0;;;;;;;:::i;:::-;8318:108;8354:6;8318:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8318:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;8298:17:0;;;:9;:17;;;;;;;;;;;:128;;;;8460:20;;;;;;;:32;;8485:6;8460:24;:32::i;:::-;-1:-1:-1;;;;;8437:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;8508:35;2842:25:1;;;8437:20:0;;8508:35;;;;;;2815:18:1;8508:35:0;2696:177:1;37886:1897:0;37969:4;37925:23;6078:18;;;;;;;;;;;37925:50;;37986:25;38083:21;;38048:19;;38014:18;;:53;;;;:::i;:::-;:90;;;;:::i;:::-;37986:118;-1:-1:-1;38115:12:0;38144:20;;;:46;;-1:-1:-1;38168:22:0;;38144:46;38140:85;;;38207:7;;;37886:1897::o;38140:85::-;38259:18;;:23;;38280:2;38259:23;:::i;:::-;38241:15;:41;38237:115;;;38317:18;;:23;;38338:2;38317:23;:::i;:::-;38299:41;;38237:115;38413:23;38526:1;38493:17;38458:18;;38440:15;:36;;;;:::i;:::-;38439:71;;;;:::i;:::-;:88;;;;:::i;:::-;38413:114;-1:-1:-1;38538:26:0;38567:36;:15;38413:114;38567:19;:36::i;:::-;38538:65;-1:-1:-1;38644:21:0;38678:36;38538:65;38678:16;:36::i;:::-;38727:18;38748:44;:21;38774:17;38748:25;:44::i;:::-;38727:65;;38805:24;38832:82;38886:17;38832:35;38847:19;;38832:10;:14;;:35;;;;:::i;:82::-;38805:109;;38925:26;38954:84;39010:17;38954:37;38969:21;;38954:10;:14;;:37;;;;:::i;:84::-;38925:113;-1:-1:-1;39049:23:0;38925:113;39075:42;39101:16;39075:10;:42;:::i;:::-;:76;;;;:::i;:::-;39185:1;39164:18;:22;;;39197:19;:23;;;39231:21;:25;;;39291:18;;39283:87;;39049:102;;-1:-1:-1;;;;;;39291:18:0;;39337;;39283:87;39185:1;39283:87;39337:18;39291;39283:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39269:101:0;;-1:-1:-1;;39387:19:0;;;;;:42;;;39428:1;39410:15;:19;39387:42;39383:278;;;39446:46;39459:15;39476;39446:12;:46::i;:::-;39616:18;;;39512:137;;;17012:25:1;;;17053:18;;;17046:34;;;17096:18;;17089:34;39512:137:0;;17000:2:1;16985:18;39512:137:0;;;;;;;39383:278;39695:16;;39687:88;;39695:16;;;;-1:-1:-1;;;;;39695:16:0;;39739:21;;39687:88;;;;39739:21;39695:16;39687:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;37886:1897:0:o;10525:250::-;10583:7;10607:6;10603:47;;-1:-1:-1;10637:1:0;10630:8;;10603:47;10662:9;10674:5;10678:1;10674;:5;:::i;:::-;10662:17;-1:-1:-1;10707:1:0;10698:5;10702:1;10662:17;10698:5;:::i;:::-;:10;10690:56;;;;-1:-1:-1;;;10690:56:0;;17336:2:1;10690:56:0;;;17318:21:1;17375:2;17355:18;;;17348:30;17414:34;17394:18;;;17387:62;-1:-1:-1;;;17465:18:1;;;17458:31;17506:19;;10690:56:0;17134:397:1;10783:132:0;10841:7;10868:39;10872:1;10875;10868:39;;;;;;;;;;;;;;;;;:3;:39::i;10147:136::-;10205:7;10232:43;10236:1;10239;10232:43;;;;;;;;;;;;;;;;;:3;:43::i;36762:589::-;36912:16;;;36926:1;36912:16;;;;;;;;36888:21;;36912:16;;;;;;;;;;-1:-1:-1;36912:16:0;36888:40;;36957:4;36939;36944:1;36939:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;36939:23:0;;;-1:-1:-1;;;;;36939:23:0;;;;;36983:15;-1:-1:-1;;;;;36983:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36973:4;36978:1;36973:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;36973:32:0;;;-1:-1:-1;;;;;36973:32:0;;;;;37018:62;37035:4;37050:15;37068:11;37018:8;:62::i;:::-;37119:224;;-1:-1:-1;;;37119:224:0;;-1:-1:-1;;;;;37119:15:0;:66;;;;:224;;37200:11;;37226:1;;37270:4;;37297;;37317:15;;37119:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37359:519;37507:62;37524:4;37539:15;37557:11;37507:8;:62::i;:::-;37612:258;;-1:-1:-1;;;37612:258:0;;37684:4;37612:258;;;19118:34:1;;;19168:18;;;19161:34;;;37730:1:0;19211:18:1;;;19204:34;;;19254:18;;;19247:34;19297:19;;;19290:44;37844:15:0;19350:19:1;;;19343:35;37612:15:0;-1:-1:-1;;;;;37612:31:0;;;;37651:9;;19052:19:1;;37612:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;37359:519;;:::o;10923:225::-;11043:7;11078:12;11071:5;11063:28;;;;-1:-1:-1;;;11063:28:0;;;;;;;;:::i;:::-;-1:-1:-1;11102:9:0;11114:5;11118:1;11114;:5;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:134::-;218:20;;247:31;218:20;247:31;:::i;289:801::-;378:6;386;394;402;455:2;443:9;434:7;430:23;426:32;423:52;;;471:1;468;461:12;423:52;511:9;498:23;540:18;581:2;573:6;570:14;567:34;;;597:1;594;587:12;567:34;635:6;624:9;620:22;610:32;;680:7;673:4;669:2;665:13;661:27;651:55;;702:1;699;692:12;651:55;742:2;729:16;768:2;760:6;757:14;754:34;;;784:1;781;774:12;754:34;831:7;824:4;815:6;811:2;807:15;803:26;800:39;797:59;;;852:1;849;842:12;797:59;883:4;875:13;;;;-1:-1:-1;907:6:1;-1:-1:-1;;945:20:1;;932:34;;-1:-1:-1;1016:2:1;1001:18;;988:32;1029:31;988:32;1029:31;:::i;:::-;289:801;;;;-1:-1:-1;289:801:1;;-1:-1:-1;;289:801:1:o;1095:597::-;1207:4;1236:2;1265;1254:9;1247:21;1297:6;1291:13;1340:6;1335:2;1324:9;1320:18;1313:34;1365:1;1375:140;1389:6;1386:1;1383:13;1375:140;;;1484:14;;;1480:23;;1474:30;1450:17;;;1469:2;1446:26;1439:66;1404:10;;1375:140;;;1533:6;1530:1;1527:13;1524:91;;;1603:1;1598:2;1589:6;1578:9;1574:22;1570:31;1563:42;1524:91;-1:-1:-1;1676:2:1;1655:15;-1:-1:-1;;1651:29:1;1636:45;;;;1683:2;1632:54;;1095:597;-1:-1:-1;;;1095:597:1:o;1697:315::-;1765:6;1773;1826:2;1814:9;1805:7;1801:23;1797:32;1794:52;;;1842:1;1839;1832:12;1794:52;1881:9;1868:23;1900:31;1925:5;1900:31;:::i;:::-;1950:5;2002:2;1987:18;;;;1974:32;;-1:-1:-1;;;1697:315:1:o;2209:247::-;2268:6;2321:2;2309:9;2300:7;2296:23;2292:32;2289:52;;;2337:1;2334;2327:12;2289:52;2376:9;2363:23;2395:31;2420:5;2395:31;:::i;2878:180::-;2937:6;2990:2;2978:9;2969:7;2965:23;2961:32;2958:52;;;3006:1;3003;2996:12;2958:52;-1:-1:-1;3029:23:1;;2878:180;-1:-1:-1;2878:180:1:o;3063:523::-;3167:6;3175;3183;3191;3199;3207;3260:3;3248:9;3239:7;3235:23;3231:33;3228:53;;;3277:1;3274;3267:12;3228:53;-1:-1:-1;;3300:23:1;;;3370:2;3355:18;;3342:32;;-1:-1:-1;3421:2:1;3406:18;;3393:32;;3472:2;3457:18;;3444:32;;-1:-1:-1;3523:3:1;3508:19;;3495:33;;-1:-1:-1;3575:3:1;3560:19;3547:33;;-1:-1:-1;3063:523:1;-1:-1:-1;3063:523:1:o;3591:456::-;3668:6;3676;3684;3737:2;3725:9;3716:7;3712:23;3708:32;3705:52;;;3753:1;3750;3743:12;3705:52;3792:9;3779:23;3811:31;3836:5;3811:31;:::i;:::-;3861:5;-1:-1:-1;3918:2:1;3903:18;;3890:32;3931:33;3890:32;3931:33;:::i;:::-;3591:456;;3983:7;;-1:-1:-1;;;4037:2:1;4022:18;;;;4009:32;;3591:456::o;4449:160::-;4514:20;;4570:13;;4563:21;4553:32;;4543:60;;4599:1;4596;4589:12;4614:315;4679:6;4687;4740:2;4728:9;4719:7;4715:23;4711:32;4708:52;;;4756:1;4753;4746:12;4708:52;4795:9;4782:23;4814:31;4839:5;4814:31;:::i;:::-;4864:5;-1:-1:-1;4888:35:1;4919:2;4904:18;;4888:35;:::i;:::-;4878:45;;4614:315;;;;;:::o;4934:316::-;5011:6;5019;5027;5080:2;5068:9;5059:7;5055:23;5051:32;5048:52;;;5096:1;5093;5086:12;5048:52;-1:-1:-1;;5119:23:1;;;5189:2;5174:18;;5161:32;;-1:-1:-1;5240:2:1;5225:18;;;5212:32;;4934:316;-1:-1:-1;4934:316:1:o;5255:180::-;5311:6;5364:2;5352:9;5343:7;5339:23;5335:32;5332:52;;;5380:1;5377;5370:12;5332:52;5403:26;5419:9;5403:26;:::i;5440:127::-;5501:10;5496:3;5492:20;5489:1;5482:31;5532:4;5529:1;5522:15;5556:4;5553:1;5546:15;5572:1191;5662:6;5670;5723:2;5711:9;5702:7;5698:23;5694:32;5691:52;;;5739:1;5736;5729:12;5691:52;5779:9;5766:23;5808:18;5849:2;5841:6;5838:14;5835:34;;;5865:1;5862;5855:12;5835:34;5903:6;5892:9;5888:22;5878:32;;5948:7;5941:4;5937:2;5933:13;5929:27;5919:55;;5970:1;5967;5960:12;5919:55;6006:2;5993:16;6028:4;6051:2;6047;6044:10;6041:36;;;6057:18;;:::i;:::-;6103:2;6100:1;6096:10;6135:2;6129:9;6198:2;6194:7;6189:2;6185;6181:11;6177:25;6169:6;6165:38;6253:6;6241:10;6238:22;6233:2;6221:10;6218:18;6215:46;6212:72;;;6264:18;;:::i;:::-;6300:2;6293:22;6350:18;;;6384:15;;;;-1:-1:-1;6426:11:1;;;6422:20;;;6454:19;;;6451:39;;;6486:1;6483;6476:12;6451:39;6510:11;;;;6530:148;6546:6;6541:3;6538:15;6530:148;;;6612:23;6631:3;6612:23;:::i;:::-;6600:36;;6563:12;;;;6656;;;;6530:148;;;6697:6;-1:-1:-1;6722:35:1;;-1:-1:-1;6738:18:1;;;6722:35;:::i;:::-;6712:45;;;;;;5572:1191;;;;;:::o;6768:388::-;6836:6;6844;6897:2;6885:9;6876:7;6872:23;6868:32;6865:52;;;6913:1;6910;6903:12;6865:52;6952:9;6939:23;6971:31;6996:5;6971:31;:::i;:::-;7021:5;-1:-1:-1;7078:2:1;7063:18;;7050:32;7091:33;7050:32;7091:33;:::i;:::-;7143:7;7133:17;;;6768:388;;;;;:::o;7161:356::-;7363:2;7345:21;;;7382:18;;;7375:30;7441:34;7436:2;7421:18;;7414:62;7508:2;7493:18;;7161:356::o;7880:380::-;7959:1;7955:12;;;;8002;;;8023:61;;8077:4;8069:6;8065:17;8055:27;;8023:61;8130:2;8122:6;8119:14;8099:18;8096:38;8093:161;;;8176:10;8171:3;8167:20;8164:1;8157:31;8211:4;8208:1;8201:15;8239:4;8236:1;8229:15;8093:161;;7880:380;;;:::o;8265:127::-;8326:10;8321:3;8317:20;8314:1;8307:31;8357:4;8354:1;8347:15;8381:4;8378:1;8371:15;8397:168;8437:7;8503:1;8499;8495:6;8491:14;8488:1;8485:21;8480:1;8473:9;8466:17;8462:45;8459:71;;;8510:18;;:::i;:::-;-1:-1:-1;8550:9:1;;8397:168::o;8570:217::-;8610:1;8636;8626:132;;8680:10;8675:3;8671:20;8668:1;8661:31;8715:4;8712:1;8705:15;8743:4;8740:1;8733:15;8626:132;-1:-1:-1;8772:9:1;;8570:217::o;9208:128::-;9248:3;9279:1;9275:6;9272:1;9269:13;9266:39;;;9285:18;;:::i;:::-;-1:-1:-1;9321:9:1;;9208:128::o;10530:127::-;10591:10;10586:3;10582:20;10579:1;10572:31;10622:4;10619:1;10612:15;10646:4;10643:1;10636:15;10662:135;10701:3;-1:-1:-1;;10722:17:1;;10719:43;;;10742:18;;:::i;:::-;-1:-1:-1;10789:1:1;10778:13;;10662:135::o;13216:401::-;13418:2;13400:21;;;13457:2;13437:18;;;13430:30;13496:34;13491:2;13476:18;;13469:62;-1:-1:-1;;;13562:2:1;13547:18;;13540:35;13607:3;13592:19;;13216:401::o;13622:399::-;13824:2;13806:21;;;13863:2;13843:18;;;13836:30;13902:34;13897:2;13882:18;;13875:62;-1:-1:-1;;;13968:2:1;13953:18;;13946:33;14011:3;13996:19;;13622:399::o;16470:125::-;16510:4;16538:1;16535;16532:8;16529:34;;;16543:18;;:::i;:::-;-1:-1:-1;16580:9:1;;16470:125::o;17536:251::-;17606:6;17659:2;17647:9;17638:7;17634:23;17630:32;17627:52;;;17675:1;17672;17665:12;17627:52;17707:9;17701:16;17726:31;17751:5;17726:31;:::i;17792:980::-;18054:4;18102:3;18091:9;18087:19;18133:6;18122:9;18115:25;18159:2;18197:6;18192:2;18181:9;18177:18;18170:34;18240:3;18235:2;18224:9;18220:18;18213:31;18264:6;18299;18293:13;18330:6;18322;18315:22;18368:3;18357:9;18353:19;18346:26;;18407:2;18399:6;18395:15;18381:29;;18428:1;18438:195;18452:6;18449:1;18446:13;18438:195;;;18517:13;;-1:-1:-1;;;;;18513:39:1;18501:52;;18608:15;;;;18573:12;;;;18549:1;18467:9;18438:195;;;-1:-1:-1;;;;;;;18689:32:1;;;;18684:2;18669:18;;18662:60;-1:-1:-1;;;18753:3:1;18738:19;18731:35;18650:3;17792:980;-1:-1:-1;;;17792:980:1:o;19389:306::-;19477:6;19485;19493;19546:2;19534:9;19525:7;19521:23;19517:32;19514:52;;;19562:1;19559;19552:12;19514:52;19591:9;19585:16;19575:26;;19641:2;19630:9;19626:18;19620:25;19610:35;;19685:2;19674:9;19670:18;19664:25;19654:35;;19389:306;;;;;:::o
Swarm Source
ipfs://b2e9733ad87ff8c50dd6ae0aa05011f927a240e43c2afeba484e0a6fdb9337e8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.