ERC-20
Overview
Max Total Supply
1,000,000,000,000 GPUNKS
Holders
139
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
39,365,418.09159605 GPUNKSValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GPUNKS
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-18 */ /* TG: https://t.me/grumpydogeeth Web: https://grumpydogepunks.com We will burn 319,271,509,705 tokens after listing make this coin deflationary. 2% Reflection to all Holders after 2 days, 0% on the first 2 days. The liquidity fee will be 10% The sell fee is dynamically scaled to the sell's price impact, with a minimum fee of 10% and a maximum fee of 40%. */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library 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; // assert(a == b * c + a % b); // There is no case in which this doesn't hold 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; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } function getTime() public view returns (uint256) { return block.timestamp; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract GPUNKS is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => User) private cooldown; mapping (address => bool) private _isSniper; address[] private _confirmedSnipers; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "GRUMPYDOGE PUNKS"; string private _symbol = "GPUNKS"; uint8 private _decimals = 9; address payable private teamDevAddress; uint256 public launchTime; uint256 private buyLimitEnd; uint256 public _taxFee = 0; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee=0; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _baseLiqFee; bool private _useImpactFeeSetter = true; uint256 public _feeMultiplier = 1000; uint256 public _minTrigger = 0; uint256 public k = 10; uint256 public _baseAmount = 1*10**15; uint private _maxBuyAmount; bool private _cooldownEnabled=true; bool public tradingOpen = false; //once switched on, can never be switched off. IUniswapV2Router02 public uniswapRouter; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; bool public buyBackEnabled = false; struct User { uint256 buy; uint256 sell; bool exists; } event BuyBackEnabledUpdated(bool enabled); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[_msgSender()] = _rTotal; emit Transfer(address(0), _msgSender(), _tTotal); } function enableTrading(uint256 maxBuyAmount) external onlyOwner() { _maxBuyAmount = maxBuyAmount; _baseLiqFee=10; _liquidityFee=_baseLiqFee; _taxFee=0; swapAndLiquifyEnabled = true; tradingOpen = true; launchTime = block.timestamp; buyLimitEnd = block.timestamp + (240 seconds); } function initContract() external onlyOwner() { IUniswapV2Router02 _uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapRouter.factory()) .createPair(address(this), _uniswapRouter.WETH()); uniswapRouter = _uniswapRouter; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isSniper[address(0x7589319ED0fD750017159fb4E4d96C63966173C1)] = true; _confirmedSnipers.push(address(0x7589319ED0fD750017159fb4E4d96C63966173C1)); _isSniper[address(0x65A67DF75CCbF57828185c7C050e34De64d859d0)] = true; _confirmedSnipers.push(address(0x65A67DF75CCbF57828185c7C050e34De64d859d0)); _isSniper[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true; _confirmedSnipers.push(address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)); _isSniper[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true; _confirmedSnipers.push(address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)); _isSniper[address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345)] = true; _confirmedSnipers.push(address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345)); _isSniper[address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)] = true; _confirmedSnipers.push(address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)); _isSniper[address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95)] = true; _confirmedSnipers.push(address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95)); _isSniper[address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964)] = true; _confirmedSnipers.push(address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964)); _isSniper[address(0xDC81a3450817A58D00f45C86d0368290088db848)] = true; _confirmedSnipers.push(address(0xDC81a3450817A58D00f45C86d0368290088db848)); _isSniper[address(0x45fD07C63e5c316540F14b2002B085aEE78E3881)] = true; _confirmedSnipers.push(address(0x45fD07C63e5c316540F14b2002B085aEE78E3881)); _isSniper[address(0x27F9Adb26D532a41D97e00206114e429ad58c679)] = true; _confirmedSnipers.push(address(0x27F9Adb26D532a41D97e00206114e429ad58c679)); _isSniper[address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7)] = true; _confirmedSnipers.push(address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7)); _isSniper[address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533)] = true; _confirmedSnipers.push(address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533)); _isSniper[address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)] = true; _confirmedSnipers.push(address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)); _isSniper[address(0x000000000000084e91743124a982076C59f10084)] = true; _confirmedSnipers.push(address(0x000000000000084e91743124a982076C59f10084)); _isSniper[address(0x6dA4bEa09C3aA0761b09b19837D9105a52254303)] = true; _confirmedSnipers.push(address(0x6dA4bEa09C3aA0761b09b19837D9105a52254303)); _isSniper[address(0x323b7F37d382A68B0195b873aF17CeA5B67cd595)] = true; _confirmedSnipers.push(address(0x323b7F37d382A68B0195b873aF17CeA5B67cd595)); _isSniper[address(0x000000005804B22091aa9830E50459A15E7C9241)] = true; _confirmedSnipers.push(address(0x000000005804B22091aa9830E50459A15E7C9241)); _isSniper[address(0xA3b0e79935815730d942A444A84d4Bd14A339553)] = true; _confirmedSnipers.push(address(0xA3b0e79935815730d942A444A84d4Bd14A339553)); _isSniper[address(0xf6da21E95D74767009acCB145b96897aC3630BaD)] = true; _confirmedSnipers.push(address(0xf6da21E95D74767009acCB145b96897aC3630BaD)); _isSniper[address(0x0000000000007673393729D5618DC555FD13f9aA)] = true; _confirmedSnipers.push(address(0x0000000000007673393729D5618DC555FD13f9aA)); _isSniper[address(0x00000000000003441d59DdE9A90BFfb1CD3fABf1)] = true; _confirmedSnipers.push(address(0x00000000000003441d59DdE9A90BFfb1CD3fABf1)); _isSniper[address(0x59903993Ae67Bf48F10832E9BE28935FEE04d6F6)] = true; _confirmedSnipers.push(address(0x59903993Ae67Bf48F10832E9BE28935FEE04d6F6)); _isSniper[address(0x000000917de6037d52b1F0a306eeCD208405f7cd)] = true; _confirmedSnipers.push(address(0x000000917de6037d52b1F0a306eeCD208405f7cd)); _isSniper[address(0x7100e690554B1c2FD01E8648db88bE235C1E6514)] = true; _confirmedSnipers.push(address(0x7100e690554B1c2FD01E8648db88bE235C1E6514)); _isSniper[address(0x72b30cDc1583224381132D379A052A6B10725415)] = true; _confirmedSnipers.push(address(0x72b30cDc1583224381132D379A052A6B10725415)); _isSniper[address(0x9eDD647D7d6Eceae6bB61D7785Ef66c5055A9bEE)] = true; _confirmedSnipers.push(address(0x9eDD647D7d6Eceae6bB61D7785Ef66c5055A9bEE)); _isSniper[address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F)] = true; _confirmedSnipers.push(address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F)); _isSniper[address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)] = true; _confirmedSnipers.push(address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)); _isSniper[address(0xc496D84215d5018f6F53E7F6f12E45c9b5e8e8A9)] = true; _confirmedSnipers.push(address(0xc496D84215d5018f6F53E7F6f12E45c9b5e8e8A9)); _isSniper[address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7)] = true; _confirmedSnipers.push(address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7)); _isSniper[address(0xe986d48EfeE9ec1B8F66CD0b0aE8e3D18F091bDF)] = true; _confirmedSnipers.push(address(0xe986d48EfeE9ec1B8F66CD0b0aE8e3D18F091bDF)); _isSniper[address(0x4aEB32e16DcaC00B092596ADc6CD4955EfdEE290)] = true; _confirmedSnipers.push(address(0x4aEB32e16DcaC00B092596ADc6CD4955EfdEE290)); _isSniper[address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5)] = true; _confirmedSnipers.push(address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5)); _isSniper[address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)] = true; _confirmedSnipers.push(address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)); _isSniper[address(0x5B83A351500B631cc2a20a665ee17f0dC66e3dB7)] = true; _confirmedSnipers.push(address(0x5B83A351500B631cc2a20a665ee17f0dC66e3dB7)); _isSniper[address(0xbCb05a3F85d34f0194C70d5914d5C4E28f11Cc02)] = true; _confirmedSnipers.push(address(0xbCb05a3F85d34f0194C70d5914d5C4E28f11Cc02)); _isSniper[address(0x22246F9BCa9921Bfa9A3f8df5baBc5Bc8ee73850)] = true; _confirmedSnipers.push(address(0x22246F9BCa9921Bfa9A3f8df5baBc5Bc8ee73850)); _isSniper[address(0x42d4C197036BD9984cA652303e07dD29fA6bdB37)] = true; _confirmedSnipers.push(address(0x42d4C197036BD9984cA652303e07dD29fA6bdB37)); _isSniper[address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)] = true; _confirmedSnipers.push(address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)); _isSniper[address(0x231DC6af3C66741f6Cf618884B953DF0e83C1A2A)] = true; _confirmedSnipers.push(address(0x231DC6af3C66741f6Cf618884B953DF0e83C1A2A)); _isSniper[address(0xC6bF34596f74eb22e066a878848DfB9fC1CF4C65)] = true; _confirmedSnipers.push(address(0xC6bF34596f74eb22e066a878848DfB9fC1CF4C65)); _isSniper[address(0x20f6fCd6B8813c4f98c0fFbD88C87c0255040Aa3)] = true; _confirmedSnipers.push(address(0x20f6fCd6B8813c4f98c0fFbD88C87c0255040Aa3)); _isSniper[address(0xD334C5392eD4863C81576422B968C6FB90EE9f79)] = true; _confirmedSnipers.push(address(0xD334C5392eD4863C81576422B968C6FB90EE9f79)); _isSniper[address(0xFFFFF6E70842330948Ca47254F2bE673B1cb0dB7)] = true; _confirmedSnipers.push(address(0xFFFFF6E70842330948Ca47254F2bE673B1cb0dB7)); _isSniper[address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)] = true; _confirmedSnipers.push(address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)); _isSniper[address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)] = true; _confirmedSnipers.push(address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)); teamDevAddress = payable(0x4bCF0A70a20dFD45962d8ba28Ae9E643af970B8c); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function 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 isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function isRemovedSniper(address account) public view returns (bool) { return _isSniper[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address sender, address recipient, uint256 amount ) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isSniper[recipient], "You have no power here!"); require(!_isSniper[msg.sender], "You have no power here!"); if(sender != owner() && recipient != owner()) { if (!tradingOpen) { if (!(sender == address(this) || recipient == address(this) || sender == address(owner()) || recipient == address(owner()) || isExcludedFromFee(sender) || isExcludedFromFee(recipient))) { require(tradingOpen, "Trading is not enabled"); } } if(_cooldownEnabled) { if(!cooldown[msg.sender].exists) { cooldown[msg.sender] = User(0,0,true); } } } //buy if(sender == uniswapPair && recipient != address(uniswapRouter) && !_isExcludedFromFee[recipient]) { require(tradingOpen, "Trading not yet enabled."); _liquidityFee=_baseLiqFee; if(_cooldownEnabled) { if(buyLimitEnd > block.timestamp) { require(amount <= _maxBuyAmount); require(cooldown[recipient].buy < block.timestamp, "Your buy cooldown has not expired."); cooldown[recipient].buy = block.timestamp + (45 seconds); } } if(_cooldownEnabled) { require(cooldown[recipient].sell < block.timestamp, "Your sell cooldown has not expired."); cooldown[recipient].sell = block.timestamp + (15 seconds); } } //sell if (!inSwapAndLiquify && swapAndLiquifyEnabled && recipient == uniswapPair) { //get dynamic fee if(_useImpactFeeSetter) { uint256 feeBasis = amount.mul(_feeMultiplier); feeBasis = feeBasis.div(balanceOf(uniswapPair).add(amount)); setFee(feeBasis); } uint256 dynamicFee = _liquidityFee; //swap contract's tokens for ETH uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance > 0) { swapTokens(contractTokenBalance); } //buyback uint256 balance = address(this).balance; //buyback only if sell amount >= _minTrigger if (buyBackEnabled && amount >= _minTrigger) { uint256 ten = 10; uint256 buyBackAmount = _baseAmount.mul(ten.add(((dynamicFee.sub(_baseLiqFee)).mul(k)).div(_baseLiqFee))).div(10); if (balance >= buyBackAmount) buyBackTokens(buyBackAmount); } //restore dynamicFee after buyback _liquidityFee = dynamicFee; } bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //execute transfer _tokenTransfer(sender, recipient,amount,takeFee); } function swapTokens(uint256 contractTokenBalance) private lockTheSwap { uint256 initialBalance = address(this).balance; swapTokensForEth(contractTokenBalance); uint256 transferredBalance = address(this).balance.sub(initialBalance); transferToAddressETH(teamDevAddress, transferredBalance.div(2)); } function buyBackTokens(uint256 amount) private lockTheSwap { if (amount > 0) { swapETHForTokens(amount); } } function setFee(uint256 impactFee) private { uint256 _impactFee = _baseLiqFee; if(impactFee < _baseLiqFee) { _impactFee = _baseLiqFee; } else if(impactFee > 40) { _impactFee = 40; } else { _impactFee = impactFee; } if(_impactFee.mod(2) != 0) { _impactFee++; } _liquidityFee = _impactFee; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> eth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapRouter.WETH(); _approve(address(this), address(uniswapRouter), tokenAmount); // make the swap uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> eth address[] memory path = new address[](2); path[0] = uniswapRouter.WETH(); path[1] = address(this); // make the swap uniswapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, deadAddress, // Burn address block.timestamp.add(300) ); emit SwapETHForTokens(amount, path); } function addLiquidity(uint256 tokenAmount, uint256 kcsAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapRouter), tokenAmount); // add the liquidity uniswapRouter.addLiquidityETH{value: kcsAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setTeamDevAddress(address _teamDevAddress) external onlyOwner() { teamDevAddress = payable(_teamDevAddress); } function setBuyBackEnabled(bool _enabled) public onlyOwner { buyBackEnabled = _enabled; emit BuyBackEnabledUpdated(_enabled); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function setMinTrigger(uint256 newTrigger) external onlyOwner() { _minTrigger = newTrigger; } function setK (uint256 newK) external onlyOwner() { k = newK; } function setBaseAmount(uint256 baseAmount) external onlyOwner() { _baseAmount = baseAmount; } function setCooldownEnabled(bool cooldownEnabled) external onlyOwner() { _cooldownEnabled = cooldownEnabled; } function setUseImpactFeeSetter(bool useImpactFeeSetter) external onlyOwner() { _useImpactFeeSetter = useImpactFeeSetter; } function setMaxBuyAmount(uint256 maxBuyAmount) external onlyOwner() { _maxBuyAmount = maxBuyAmount; } function setSwapAndLiq(bool swap) external onlyOwner() { swapAndLiquifyEnabled = swap; } function setfeeMultiplier(uint256 feeMultiplier) external onlyOwner() { _feeMultiplier = feeMultiplier; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { require((_baseLiqFee+taxFee)<=20); _taxFee = taxFee; _previousTaxFee=taxFee; } function setBaseLiqFeePercent(uint256 baseLiqFee) external onlyOwner() { require((baseLiqFee+_taxFee)<=20); _baseLiqFee = baseLiqFee; } function excludeFromFee(address account) public onlyOwner { require(!_isExcludedFromFee[account], "Account is already excluded"); _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { require(_isExcludedFromFee[account], "Account is already included"); _isExcludedFromFee[account] = false; } function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } // Admin function to remove tokens mistakenly sent to this address function transferAnyERC20Tokens(address _tokenAddr, address _to, uint256 _amount) external onlyOwner { require(_tokenAddr != address(this), "Cant remove GPUNKS"); require(IERC20(_tokenAddr).transfer(_to, _amount), "Transfer failed"); } function transferETH(address payable recipient, uint256 amount) external onlyOwner { require(amount <= 1000000000000000000, "1 ETH Max"); require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function setRouterAddress(address newRouter) external onlyOwner { //give the option to change the router IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter); address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); //checks if pair already exists if (get_pair == address(0)) { uniswapPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { uniswapPair = get_pair; } uniswapRouter = _newRouter; } //to recieve ETH from uniswapRouter when swapping receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_baseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTrigger","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","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":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isRemovedSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"k","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"baseAmount","type":"uint256"}],"name":"setBaseAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"baseLiqFee","type":"uint256"}],"name":"setBaseLiqFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"cooldownEnabled","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newK","type":"uint256"}],"name":"setK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTrigger","type":"uint256"}],"name":"setMinTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swap","type":"bool"}],"name":"setSwapAndLiq","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamDevAddress","type":"address"}],"name":"setTeamDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"useImpactFeeSetter","type":"bool"}],"name":"setUseImpactFeeSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeMultiplier","type":"uint256"}],"name":"setfeeMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","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":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526ddead000000000000000000000000608052683635c9adc5dea00000600c8190556200003390600019620002c6565b620000419060001962000263565b600d556040805180820190915260108082526f4752554d5059444f47452050554e4b5360801b60209092019182526200007d91600f91620001bd565b50604080518082019091526006808252654750554e4b5360d01b6020909201918252620000ad91601091620001bd565b506011805460ff19908116600917909155600060148190556015819055601681905560178190556019805490921660019081179092556103e8601a55601b55600a601c5566038d7ea4c68000601d55601f805461ffff191690911790556020805461ffff60a81b191690553480156200012557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d5433600081815260036020908152604080832094909455600c549351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620002e9565b828054620001cb9062000289565b90600052602060002090601f016020900481019282620001ef57600085556200023a565b82601f106200020a57805160ff19168380011785556200023a565b828001600101855582156200023a579182015b828111156200023a5782518255916020019190600101906200021d565b50620002489291506200024c565b5090565b5b808211156200024857600081556001016200024d565b6000828210156200028457634e487b7160e01b600052601160045260246000fd5b500390565b600181811c908216806200029e57607f821691505b60208210811415620002c057634e487b7160e01b600052602260045260246000fd5b50919050565b600082620002e457634e487b7160e01b600052601260045260246000fd5b500690565b60805160601c614b756200030f6000396000818161049f015261427f0152614b756000f3fe6080604052600436106103905760003560e01c806367de8be9116101dc578063975c0ed311610102578063dd467064116100a0578063f03e63b41161006f578063f03e63b414610aa9578063f2fde38b14610ac9578063f34eb0b814610ae9578063ffb54a9914610b0957600080fd5b8063dd46706414610a0d578063dd62ed3e14610a2d578063e2c335db14610a73578063ea2f0b3714610a8957600080fd5b8063a69df4b5116100dc578063a69df4b5146109a2578063a9059cbb146109b7578063b4f40c61146109d7578063c816841b146109ed57600080fd5b8063975c0ed31461094c578063a3b855ce14610962578063a457c2d71461098257600080fd5b80637f1603461161017a57806388f820201161014957806388f82020146108c05780638da5cb5b146108f957806391648a9b1461091757806395d89b411461093757600080fd5b80637f160346146108555780638203f5fe146108755780638298b2721461088a57806382aa7c68146108a057600080fd5b806370a08231116101b657806370a08231146107d9578063735de9f7146107f9578063790ca4131461081f5780637b1a49091461083557600080fd5b806367de8be9146107835780636a395ccb146107a35780636bc87c3a146107c357600080fd5b80633bd5d173116102c15780635342acb41161025f5780635fdc61501161022e5780635fdc6150146106f4578063602bc62b146107145780636053a0e314610729578063610d5b191461074a57600080fd5b80635342acb414610668578063557ed1ba146106a15780635932ead1146106b45780635b38832d146106d457600080fd5b80634549b0391161029b5780634549b039146105f15780634a74bb02146106115780634ddfae4b1461063257806352390c021461064857600080fd5b80633bd5d1731461059157806341cb87fc146105b1578063437823ec146105d157600080fd5b806327c8f8351161032e578063313ce56711610308578063313ce567146105195780633685d4191461053b578063395093511461055b5780633b124fe71461057b57600080fd5b806327c8f8351461048d57806329370cc6146104d95780632d838119146104f957600080fd5b806313114a9d1161036a57806313114a9d1461041957806318160ddd14610438578063224a7c6a1461044d57806323b872dd1461046d57600080fd5b8063061c82d01461039c57806306fdde03146103be578063095ea7b3146103e957600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103bc6103b7366004614812565b610b28565b005b3480156103ca57600080fd5b506103d3610b80565b6040516103e091906148c9565b60405180910390f35b3480156103f557600080fd5b50610409610404366004614732565b610c12565b60405190151581526020016103e0565b34801561042557600080fd5b50600e545b6040519081526020016103e0565b34801561044457600080fd5b50600c5461042a565b34801561045957600080fd5b506103bc610468366004614812565b610c29565b34801561047957600080fd5b50610409610488366004614797565b610c58565b34801561049957600080fd5b506104c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103e0565b3480156104e557600080fd5b506103bc6104f43660046147d8565b610cc1565b34801561050557600080fd5b5061042a610514366004614812565b610d3b565b34801561052557600080fd5b5060115460405160ff90911681526020016103e0565b34801561054757600080fd5b506103bc6105563660046146f8565b610dbf565b34801561056757600080fd5b50610409610576366004614732565b610f76565b34801561058757600080fd5b5061042a60145481565b34801561059d57600080fd5b506103bc6105ac366004614812565b610fac565b3480156105bd57600080fd5b506103bc6105cc3660046146f8565b611096565b3480156105dd57600080fd5b506103bc6105ec3660046146f8565b611424565b3480156105fd57600080fd5b5061042a61060c36600461482b565b6114db565b34801561061d57600080fd5b5060205461040990600160a81b900460ff1681565b34801561063e57600080fd5b5061042a601d5481565b34801561065457600080fd5b506103bc6106633660046146f8565b611568565b34801561067457600080fd5b506104096106833660046146f8565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156106ad57600080fd5b504261042a565b3480156106c057600080fd5b506103bc6106cf3660046147d8565b6116bb565b3480156106e057600080fd5b506103bc6106ef3660046147d8565b6116f8565b34801561070057600080fd5b506103bc61070f366004614812565b611735565b34801561072057600080fd5b5060025461042a565b34801561073557600080fd5b5060205461040990600160b01b900460ff1681565b34801561075657600080fd5b506104096107653660046146f8565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561078f57600080fd5b506103bc61079e366004614812565b611764565b3480156107af57600080fd5b506103bc6107be366004614797565b611793565b3480156107cf57600080fd5b5061042a60165481565b3480156107e557600080fd5b5061042a6107f43660046146f8565b6118d0565b34801561080557600080fd5b50601f546104c1906201000090046001600160a01b031681565b34801561082b57600080fd5b5061042a60125481565b34801561084157600080fd5b506103bc610850366004614732565b61192f565b34801561086157600080fd5b506103bc610870366004614812565b611ab6565b34801561088157600080fd5b506103bc611afe565b34801561089657600080fd5b5061042a601a5481565b3480156108ac57600080fd5b506103bc6108bb366004614812565b612b41565b3480156108cc57600080fd5b506104096108db3660046146f8565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561090557600080fd5b506000546001600160a01b03166104c1565b34801561092357600080fd5b506103bc6109323660046147d8565b612bb8565b34801561094357600080fd5b506103d3612c00565b34801561095857600080fd5b5061042a60185481565b34801561096e57600080fd5b506103bc61097d366004614812565b612c0f565b34801561098e57600080fd5b5061040961099d366004614732565b612c3e565b3480156109ae57600080fd5b506103bc612c8d565b3480156109c357600080fd5b506104096109d2366004614732565b612da5565b3480156109e357600080fd5b5061042a601c5481565b3480156109f957600080fd5b506020546104c1906001600160a01b031681565b348015610a1957600080fd5b506103bc610a28366004614812565b612db2565b348015610a3957600080fd5b5061042a610a4836600461475e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a7f57600080fd5b5061042a601b5481565b348015610a9557600080fd5b506103bc610aa43660046146f8565b612e49565b348015610ab557600080fd5b506103bc610ac43660046146f8565b612efc565b348015610ad557600080fd5b506103bc610ae43660046146f8565b612f4e565b348015610af557600080fd5b506103bc610b04366004614812565b613038565b348015610b1557600080fd5b50601f5461040990610100900460ff1681565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b8152600401610b529061491e565b60405180910390fd5b601481601854610b6b91906149a8565b1115610b7657600080fd5b6014819055601555565b6060600f8054610b8f90614a0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbb90614a0a565b8015610c085780601f10610bdd57610100808354040283529160200191610c08565b820191906000526020600020905b815481529060010190602001808311610beb57829003601f168201915b5050505050905090565b6000610c1f338484613067565b5060015b92915050565b6000546001600160a01b03163314610c535760405162461bcd60e51b8152600401610b529061491e565b601d55565b6000610c6584848461318b565b610cb78433610cb285604051806060016040528060288152602001614af3602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906138d1565b613067565b5060019392505050565b6000546001600160a01b03163314610ceb5760405162461bcd60e51b8152600401610b529061491e565b6020805460ff60b01b1916600160b01b8315159081029190911782556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0910160405180910390a150565b6000600d54821115610da25760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b52565b6000610dac61390b565b9050610db8838261392e565b9392505050565b6000546001600160a01b03163314610de95760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b0381166000908152600a602052604090205460ff16610e515760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610b52565b60005b600b54811015610f7257816001600160a01b0316600b8281548110610e7b57610e7b614ab6565b6000918252602090912001546001600160a01b03161415610f6057600b8054610ea6906001906149f3565b81548110610eb657610eb6614ab6565b600091825260209091200154600b80546001600160a01b039092169183908110610ee257610ee2614ab6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600a90925220805460ff19169055600b805480610f3a57610f3a614aa0565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f6a81614a45565b915050610e54565b5050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c1f918590610cb29086613970565b336000818152600a602052604090205460ff16156110215760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b52565b600061102c836139cf565b505050506001600160a01b03841660009081526003602052604090205491925061105891905082613a1e565b6001600160a01b038316600090815260036020526040902055600d5461107e9082613a1e565b600d55600e5461108e9084613970565b600e55505050565b6000546001600160a01b031633146110c05760405162461bcd60e51b8152600401610b529061491e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190614715565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b89190614715565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156111fe57600080fd5b505afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112369190614715565b90506001600160a01b0381166113dc57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561127f57600080fd5b505afa158015611293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b79190614715565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ff57600080fd5b505afa158015611313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113379190614715565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561137f57600080fd5b505af1158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190614715565b602080546001600160a01b0319166001600160a01b03929092169190911790556113f8565b602080546001600160a01b0319166001600160a01b0383161790555b50601f80546001600160a01b03909216620100000262010000600160b01b031990921691909117905550565b6000546001600160a01b0316331461144e5760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03811660009081526009602052604090205460ff16156114b75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b52565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000600c5483111561152f5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b52565b8161154e57600061153f846139cf565b50939550610c23945050505050565b6000611559846139cf565b50929550610c23945050505050565b6000546001600160a01b031633146115925760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b0381166000908152600a602052604090205460ff16156115fb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b52565b6001600160a01b03811660009081526003602052604090205415611655576001600160a01b03811660009081526003602052604090205461163b90610d3b565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146116e55760405162461bcd60e51b8152600401610b529061491e565b601f805460ff1916911515919091179055565b6000546001600160a01b031633146117225760405162461bcd60e51b8152600401610b529061491e565b6019805460ff1916911515919091179055565b6000546001600160a01b0316331461175f5760405162461bcd60e51b8152600401610b529061491e565b601a55565b6000546001600160a01b0316331461178e5760405162461bcd60e51b8152600401610b529061491e565b601c55565b6000546001600160a01b031633146117bd5760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03831630141561180b5760405162461bcd60e51b815260206004820152601260248201527143616e742072656d6f7665204750554e4b5360701b6044820152606401610b52565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561185557600080fd5b505af1158015611869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188d91906147f5565b6118cb5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610b52565b505050565b6001600160a01b0381166000908152600a602052604081205460ff161561190d57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610c2390610d3b565b6000546001600160a01b031633146119595760405162461bcd60e51b8152600401610b529061491e565b670de0b6b3a764000081111561199d5760405162461bcd60e51b8152602060048201526009602482015268062408aa890409ac2f60bb1b6044820152606401610b52565b804710156119ed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b52565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a3a576040519150601f19603f3d011682016040523d82523d6000602084013e611a3f565b606091505b50509050806118cb5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b52565b6000546001600160a01b03163314611ae05760405162461bcd60e51b8152600401610b529061491e565b60148054611aee90836149a8565b1115611af957600080fd5b601855565b6000546001600160a01b03163314611b285760405162461bcd60e51b8152600401610b529061491e565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b7a57600080fd5b505afa158015611b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb29190614715565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611bfa57600080fd5b505afa158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c329190614715565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015611c7a57600080fd5b505af1158015611c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb29190614715565b602080546001600160a01b0319166001600160a01b03928316179055601f805462010000600160b01b03191662010000848416021790556000805460019260099291166001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526009835290812080548416600190811790915560079092527f57c722c10b286721330ce1e7368f87f549121277c4e5ffab2e83419c7564f96180548416831790556008805480840182557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390810180546001600160a01b0319908116737589319ed0fd750017159fb4e4d96c63966173c1179091557fb4360de54da26af4127515af1e49997106b425ee5904e923f0902c7618138e598054871686179055825480860184558201805482167365a67df75ccbf57828185c7c050e34de64d859d01790557faa01439ba306fcf815e716b248617e3c66941c4344ce5297e38ccc42cd30bc1180548716861781558354808701855583018054831673e031b36b53e53a292a20c5f08fd1658cddf74fce9081179091558154881687179091558354808701855583018054831690911790557f20bb0313363229c48e5dca565476b9f004fcadd21a3cebd9148dbac2f2ba8e6d80548716861790558254808601845582018054821673e516bdee55b0b4e9bacaf6285130de15589b13451790557f185a84d37a19636863439d4bd8f79b953edfc2f2b332404b82e2c102dfbb4b8d80548716861790558254808601845582018054821673a1cec245c456dd1bd9f2815a6955fef44eb4191b1790557ff405e61457986734bcc74d319afb38a21149b3d56f884ce85ec24a17fadbe35d80548716861790558254808601845582018054821673d7d3ee77d35d0a56f91542d4905b1a2b1cd7cf951790557fa2988ed14d9641c67aefa7ee82d50112dd7b9326d1e98e9dce9d802915d3b36480548716861790558254808601845582018054821673fe76f05dc59fec04184fa0245ad0c3cf9a57b9641790557f158b420708a0e60d8f36936f51360cee200d1017c9023a4ddcae85bff89c0f4e80548716861790558254808601845582018054821673dc81a3450817a58d00f45c86d0368290088db8481790557ff1d1c874a6478f85b6b904feafb9a196ead08dc959fdf0a523b19e42779d27ce8054871686179055825480860184558201805482167345fd07c63e5c316540f14b2002b085aee78e38811790557f401a4c0ca7781d92989fe1809638f35a473d45b2aa1f20ea08b891ad153486ab8054871686179055825480860184558201805482167327f9adb26d532a41d97e00206114e429ad58c6791790557fcdd749be89563b0fe17aff861f904dad7a5ecfebb7ff064b12d5552d5c400ea7805487168617905582548086018455820180548216739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e71790557f3eca23c1fceac0076012235763bf4b524e34500801ac57fb32381013c0d6901e80548716861790558254808601845582018054821673fad95b6089c53a0d1d861eabfaadd8901b0f85331790557f297b29cec8a1eb621a328e39c96c47ebe5e4031f1f910cb41ad54c511034e73a805487168617905582548086018455820180548216731d6e8bac6ea3730825bde4b005ed7b2b39a2932d1790557ffe44942143e318205a789f77df1b2bf735ffc548308bab5499d0216aec3332e48054871686179055825480860184558201805482166d084e91743124a982076c59f100841790557f3e4f611ed8482ea59e6424ad23a75453ec3ddb7677cd19d4c934256448de183a805487168617905582548086018455820180548216736da4bea09c3aa0761b09b19837d9105a522543031790557f7ee7f44cdecb2d7c9ebf96addf904d703c57dc894fdb6b132a783045f8ad751980548716861790558254808601845582018054821673323b7f37d382a68b0195b873af17cea5b67cd5951790557fb1c982ebec4b3ffbad67c2dd4b8d8215a47baa972366e4a63f51e9c6ce9a5d4e8054871686179055825480860184558201805482166f5804b22091aa9830e50459a15e7c92411790557fa11920fa7ae15c72226954c89a9e5c6f067c85fde0c317c7a78e3897c4aa229d80548716861790558254808601845582018054821673a3b0e79935815730d942a444a84d4bd14a3395531790557f1ea4ceff6c7cd2bd1aa871eb2c9e7b14363c267e1c8d45b2b4038682a83baef480548716861790558254808601845582018054821673f6da21e95d74767009accb145b96897ac3630bad1790557f5ccd521e90776b08b8302e31941eda99ae5bb6dd0a4a30a038e75275ed151f1f8054871686179055825480860184558201805482166d7673393729d5618dc555fd13f9aa1790557f9aac9a42097620b1ff8454a6252a3d8b6aecd2746f5cc70c2496bd35cd9e69b18054871686179055825480860184558201805482166d03441d59dde9a90bffb1cd3fabf11790557fa9d6552d66baaa4186648ea67a6cabd630f6081027f5bf546135d86d60df82fd8054871686179055825480860184558201805482167359903993ae67bf48f10832e9be28935fee04d6f61790557fe35fa26e68f804147088c2b96da426aeba0a986c80b2972d565ff073fcf3b2ed80548716861790558254808601845582018054821670917de6037d52b1f0a306eecd208405f7cd1790557f0974c6061423c59b1cc18edad4ab1f546201d6fbcde60ba3925dea5bbc1f3b92805487168617905582548086018455820180548216737100e690554b1c2fd01e8648db88be235c1e65141790557fe96e4260a99427d26094e01497bcbf1209430052150bbba23c77691cfd3888de8054871686179055825480860184558201805482167372b30cdc1583224381132d379a052a6b107254151790557fc71bda09a50ffbca62ccd1161350db5851fbb6ddd35d31c3c3517822e54b5c55805487168617905582548086018455820180548216739edd647d7d6eceae6bb61d7785ef66c5055a9bee1790557f3848f2c08fb0667ee5b5086c84806cc492f6771453629ea470ad1bb4309b27df80548716861790558254808601845582018054821673fe9d99ef02e905127239e85a611c29ad32c31c2f1790557f954a0c36a45fcaf27e7a22dfaa2c9f3b813d726eab18c0fdbf36d3b835f9975c8054871686178155835480870185558301805483167339608b6f20704889c51c0ae28b1fca8f36a5239b9081179091557f7985ebff531dc9ae85a3acb40e87a09c7806f6a13dabe868af5b0a8d22bd505e80548916881790558454808801865584018054841673c496d84215d5018f6f53e7f6f12e45c9b5e8e8a91790557f6c52e41dd6b06a1bc9b96527098c91ef1536901d6b06ec3895465678b4d3cb2d8054891688179055845480880186558401805484167359341bc6b4f3ace878574b05914f43309dd678c71790557f33bb6bc5e24dd699dcbf1756dad57e97b0d83832560d2b9372cac6749ec975d080548916881790558454808801865584018054841673e986d48efee9ec1b8f66cd0b0ae8e3d18f091bdf1790557fc419d9cfed3cf702f7269baae5ca04d34554e3d12c577f99b455846286201a5c805489168817905584548088018655840180548416734aeb32e16dcac00b092596adc6cd4955efdee2901790557fab78f0789a7bb7c5eaddd13a6a0e91c9346a2134aed2e32ec259fffe6a6a9c7680548916881790558454808801865584018054841673136f4b5b6a306091b280e3f251fa0e21b1280cd51790558154881687179091558354808701855583018054831690911790557f1be75507d4b2cac3a24552f05fdfa14cf0f018e17cf718ca8d750a13ecaa3fb8805487168617905582548086018455820180548216735b83a351500b631cc2a20a665ee17f0dc66e3db71790557f8499ee18ee603a2cfde0354d5d324ebcbe145b33d7bdb9c0e42bad4169d18d9d80548716861790558254808601845582018054821673bcb05a3f85d34f0194c70d5914d5c4e28f11cc021790557f47c3decdbf0327f6973c2489bb6b726e7c2d32891ee0e58aab41a4ba06f0745b8054871686179055825480860184558201805482167322246f9bca9921bfa9a3f8df5babc5bc8ee738501790557f327a45de5f4ec9398adddd1243a3de3a045557ad91bb3317327482f19cc2fa568054871686179055825480860184558201805482167342d4c197036bd9984ca652303e07dd29fa6bdb371790557f91e3d6ffd1390da3bfbc0e0875515e89982841b064fcda9b67cffc63d8082ab68054871686179055825480860184558201805482166e3b3cc22af3ae1eac0440bcee416b401790557f0f0787d14733cc845754e46f4b9ac4f1ad047fd749dc13e3d96a4ae78999260f80548716861790558254808601845582018054821673231dc6af3c66741f6cf618884b953df0e83c1a2a1790557f9e1cab7afd1c36c8834124180f41b4fdd617e5b830a32dbe4ad39ce2403f330180548716861790558254808601845582018054821673c6bf34596f74eb22e066a878848dfb9fc1cf4c651790557ffce34a7b755f382e92d8fed99c280c08c64d82c48720533c065ce505a27e30c48054871686179055825480860184558201805482167320f6fcd6b8813c4f98c0ffbd88c87c0255040aa31790557f036de65337957dcec72784f3b7bdcc4c1db7dca6197401781e45567a6282e7ec80548716861790558254808601845582018054821673d334c5392ed4863c81576422b968c6fb90ee9f791790557fb223036d049cf96d476dc559d24b358878d6abfa6d8b9398c62a0461b2db6f6a80548716861790558254808601845582018054821673fffff6e70842330948ca47254f2be673b1cb0db71790557f3f74e5026cf68c914529907c341f86db0d11f8d7bb07501e2da38fe88ece2d8a80548716861781558354808701855583018054831673a39c50bf86e15391180240938f469a7bf4fdae9a90811790915581549097168617905582549485018355919092529101805490911690911790555060118054744bcf0a70a20dfd45962d8ba28ae9e643af970b8c00610100600160a81b0319909116179055565b6000546001600160a01b03163314612b6b5760405162461bcd60e51b8152600401610b529061491e565b601e819055600a601881905560165560006014556020805460ff60a81b1916600160a81b179055601f805461ff001916610100179055426012819055612bb29060f06149a8565b60135550565b6000546001600160a01b03163314612be25760405162461bcd60e51b8152600401610b529061491e565b60208054911515600160a81b0260ff60a81b19909216919091179055565b606060108054610b8f90614a0a565b6000546001600160a01b03163314612c395760405162461bcd60e51b8152600401610b529061491e565b601b55565b6000610c1f3384610cb285604051806060016040528060258152602001614b1b602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906138d1565b6001546001600160a01b03163314612cf35760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610b52565b6002544211612d445760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610b52565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610c1f33848461318b565b6000546001600160a01b03163314612ddc5760405162461bcd60e51b8152600401610b529061491e565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055612e0b81426149a8565b600255600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b03163314612e735760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03811660009081526009602052604090205460ff16612edb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610b52565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314612f265760405162461bcd60e51b8152600401610b529061491e565b601180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314612f785760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b038116612fdd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b52565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146130625760405162461bcd60e51b8152600401610b529061491e565b601e55565b6001600160a01b0383166130c95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b52565b6001600160a01b03821661312a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b52565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166131ef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b52565b6001600160a01b0382166132515760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b52565b600081116132b35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b52565b6001600160a01b03821660009081526007602052604090205460ff16156133165760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b52565b3360009081526007602052604090205460ff16156133705760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b52565b6000546001600160a01b0384811691161480159061339c57506000546001600160a01b03838116911614155b1561350d57601f54610100900460ff16613499576001600160a01b0383163014806133cf57506001600160a01b03821630145b806133e757506000546001600160a01b038481169116145b806133ff57506000546001600160a01b038381169116145b8061342257506001600160a01b03831660009081526009602052604090205460ff165b8061344557506001600160a01b03821660009081526009602052604090205460ff165b61349957601f54610100900460ff166134995760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610b52565b601f5460ff161561350d573360009081526006602052604090206002015460ff1661350d57604080516060810182526000808252602080830182815260018486018181523385526006909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b6020546001600160a01b03848116911614801561353e5750601f546001600160a01b03838116620100009092041614155b801561356357506001600160a01b03821660009081526009602052604090205460ff16155b1561372957601f54610100900460ff166135bf5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b52565b601854601655601f5460ff16156136805742601354111561368057601e548111156135e957600080fd5b6001600160a01b038216600090815260066020526040902054421161365b5760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b6064820152608401610b52565b61366642602d6149a8565b6001600160a01b0383166000908152600660205260409020555b601f5460ff1615613729576001600160a01b03821660009081526006602052604090206001015442116137015760405162461bcd60e51b815260206004820152602360248201527f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260448201526232b21760e91b6064820152608401610b52565b61370c42600f6149a8565b6001600160a01b0383166000908152600660205260409020600101555b602054600160a01b900460ff1615801561374c5750602054600160a81b900460ff165b801561376557506020546001600160a01b038381169116145b156138745760195460ff16156137c857600061378c601a5483613a6090919063ffffffff16565b6020549091506137bb906137b49084906137ae906001600160a01b03166118d0565b90613970565b829061392e565b90506137c681613adf565b505b60165460006137d6306118d0565b905080156137e7576137e781613b2b565b6020544790600160b01b900460ff1680156138045750601b548410155b1561386e576000600a90506000613859600a613843613850613849601854613843601c5461383d6018548e613a1e90919063ffffffff16565b90613a60565b9061392e565b8690613970565b601d5490613a60565b905080831061386b5761386b81613b8e565b50505b50506016555b6001600160a01b03831660009081526009602052604090205460019060ff16806138b657506001600160a01b03831660009081526009602052604090205460ff165b156138bf575060005b6138cb84848484613bc0565b50505050565b600081848411156138f55760405162461bcd60e51b8152600401610b5291906148c9565b50600061390284866149f3565b95945050505050565b6000806000613918613ce5565b9092509050613927828261392e565b9250505090565b6000610db883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e67565b60008061397d83856149a8565b905083811015610db85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b52565b60008060008060008060008060006139e68a613e95565b9250925092506000806000613a048d86866139ff61390b565b613ed7565b919f909e50909c50959a5093985091965092945050505050565b6000610db883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506138d1565b600082613a6f57506000610c23565b6000613a7b83856149d4565b905082613a8885836149c0565b14610db85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b52565b60185480821015613af35750601854613b07565b6028821115613b0457506028613b07565b50805b613b12816002613f27565b15613b255780613b2181614a45565b9150505b60165550565b6020805460ff60a01b1916600160a01b17905547613b4882613f69565b6000613b544783613a1e565b601154909150613b7c9061010090046001600160a01b0316613b7783600261392e565b614130565b50506020805460ff60a01b1916905550565b6020805460ff60a01b1916600160a01b1790558015613bb057613bb081614166565b506020805460ff60a01b19169055565b80613bcd57613bcd61432c565b6001600160a01b0384166000908152600a602052604090205460ff168015613c0e57506001600160a01b0383166000908152600a602052604090205460ff16155b15613c2357613c1e84848461435a565b613ccf565b6001600160a01b0384166000908152600a602052604090205460ff16158015613c6457506001600160a01b0383166000908152600a602052604090205460ff165b15613c7457613c1e848484614480565b6001600160a01b0384166000908152600a602052604090205460ff168015613cb457506001600160a01b0383166000908152600a602052604090205460ff165b15613cc457613c1e848484614529565b613ccf84848461459c565b806138cb576138cb601554601455601754601655565b600d54600c546000918291825b600b54811015613e37578260036000600b8481548110613d1457613d14614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613d7f57508160046000600b8481548110613d5857613d58614ab6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613d9557600d54600c54945094505050509091565b613ddb60036000600b8481548110613daf57613daf614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613a1e565b9250613e2360046000600b8481548110613df757613df7614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613a1e565b915080613e2f81614a45565b915050613cf2565b50600c54600d54613e479161392e565b821015613e5e57600d54600c549350935050509091565b90939092509050565b60008183613e885760405162461bcd60e51b8152600401610b5291906148c9565b50600061390284866149c0565b600080600080613ea4856145e0565b90506000613eb1866145fc565b90506000613ec982613ec38986613a1e565b90613a1e565b979296509094509092505050565b6000808080613ee68886613a60565b90506000613ef48887613a60565b90506000613f028888613a60565b90506000613f1482613ec38686613a1e565b939b939a50919850919650505050505050565b6000610db883836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614618565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613f9e57613f9e614ab6565b60200260200101906001600160a01b031690816001600160a01b031681525050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561400c57600080fd5b505afa158015614020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140449190614715565b8160018151811061405757614057614ab6565b6001600160a01b039283166020918202929092010152601f546140839130916201000090041684613067565b601f5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906140c190859060009086903090429060040161496c565b600060405180830381600087803b1580156140db57600080fd5b505af11580156140ef573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614124929190614953565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156118cb573d6000803e3d6000fd5b604080516002808252606082018352600092602083019080368337019050509050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156141d557600080fd5b505afa1580156141e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420d9190614715565b8160008151811061422057614220614ab6565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061425457614254614ab6565b6001600160a01b039283166020918202929092010152601f546201000090041663b6f9de95836000847f00000000000000000000000000000000000000000000000000000000000000006142aa4261012c613970565b6040518663ffffffff1660e01b81526004016142c99493929190614894565b6000604051808303818588803b1580156142e257600080fd5b505af11580156142f6573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051614124929190614953565b60145415801561433c5750601654155b1561434357565b601480546015556016805460175560009182905555565b60008060008060008061436c876139cf565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061439e9088613a1e565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546143cd9087613a1e565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546143fc9086613970565b6001600160a01b03891660009081526003602052604090205561441e8161464c565b61442884836146d4565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161446d91815260200190565b60405180910390a3505050505050505050565b600080600080600080614492876139cf565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506144c49087613a1e565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546144fa9084613970565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546143fc9086613970565b60008060008060008061453b876139cf565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061456d9088613a1e565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546144c49087613a1e565b6000806000806000806145ae876139cf565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506143cd9087613a1e565b6000610c23606461384360145485613a6090919063ffffffff16565b6000610c23606461384360165485613a6090919063ffffffff16565b600081836146395760405162461bcd60e51b8152600401610b5291906148c9565b506146448385614a60565b949350505050565b600061465661390b565b905060006146648383613a60565b306000908152600360205260409020549091506146819082613970565b30600090815260036020908152604080832093909355600a9052205460ff16156118cb57306000908152600460205260409020546146bf9084613970565b30600090815260046020526040902055505050565b600d546146e19083613a1e565b600d55600e546146f19082613970565b600e555050565b60006020828403121561470a57600080fd5b8135610db881614acc565b60006020828403121561472757600080fd5b8151610db881614acc565b6000806040838503121561474557600080fd5b823561475081614acc565b946020939093013593505050565b6000806040838503121561477157600080fd5b823561477c81614acc565b9150602083013561478c81614acc565b809150509250929050565b6000806000606084860312156147ac57600080fd5b83356147b781614acc565b925060208401356147c781614acc565b929592945050506040919091013590565b6000602082840312156147ea57600080fd5b8135610db881614ae4565b60006020828403121561480757600080fd5b8151610db881614ae4565b60006020828403121561482457600080fd5b5035919050565b6000806040838503121561483e57600080fd5b82359150602083013561478c81614ae4565b600081518084526020808501945080840160005b838110156148895781516001600160a01b031687529582019590820190600101614864565b509495945050505050565b8481526080602082015260006148ad6080830186614850565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156148f6578581018301518582016040015282016148da565b81811115614908576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006146446040830184614850565b85815284602082015260a06040820152600061498b60a0830186614850565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156149bb576149bb614a74565b500190565b6000826149cf576149cf614a8a565b500490565b60008160001904831182151516156149ee576149ee614a74565b500290565b600082821015614a0557614a05614a74565b500390565b600181811c90821680614a1e57607f821691505b60208210811415614a3f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614a5957614a59614a74565b5060010190565b600082614a6f57614a6f614a8a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114614ae157600080fd5b50565b8015158114614ae157600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f56d43e2fe4498fbaf03b4dca35e502386e7b744cf494f8374ac1479c9c4c68064736f6c63430008070033
Deployed Bytecode
0x6080604052600436106103905760003560e01c806367de8be9116101dc578063975c0ed311610102578063dd467064116100a0578063f03e63b41161006f578063f03e63b414610aa9578063f2fde38b14610ac9578063f34eb0b814610ae9578063ffb54a9914610b0957600080fd5b8063dd46706414610a0d578063dd62ed3e14610a2d578063e2c335db14610a73578063ea2f0b3714610a8957600080fd5b8063a69df4b5116100dc578063a69df4b5146109a2578063a9059cbb146109b7578063b4f40c61146109d7578063c816841b146109ed57600080fd5b8063975c0ed31461094c578063a3b855ce14610962578063a457c2d71461098257600080fd5b80637f1603461161017a57806388f820201161014957806388f82020146108c05780638da5cb5b146108f957806391648a9b1461091757806395d89b411461093757600080fd5b80637f160346146108555780638203f5fe146108755780638298b2721461088a57806382aa7c68146108a057600080fd5b806370a08231116101b657806370a08231146107d9578063735de9f7146107f9578063790ca4131461081f5780637b1a49091461083557600080fd5b806367de8be9146107835780636a395ccb146107a35780636bc87c3a146107c357600080fd5b80633bd5d173116102c15780635342acb41161025f5780635fdc61501161022e5780635fdc6150146106f4578063602bc62b146107145780636053a0e314610729578063610d5b191461074a57600080fd5b80635342acb414610668578063557ed1ba146106a15780635932ead1146106b45780635b38832d146106d457600080fd5b80634549b0391161029b5780634549b039146105f15780634a74bb02146106115780634ddfae4b1461063257806352390c021461064857600080fd5b80633bd5d1731461059157806341cb87fc146105b1578063437823ec146105d157600080fd5b806327c8f8351161032e578063313ce56711610308578063313ce567146105195780633685d4191461053b578063395093511461055b5780633b124fe71461057b57600080fd5b806327c8f8351461048d57806329370cc6146104d95780632d838119146104f957600080fd5b806313114a9d1161036a57806313114a9d1461041957806318160ddd14610438578063224a7c6a1461044d57806323b872dd1461046d57600080fd5b8063061c82d01461039c57806306fdde03146103be578063095ea7b3146103e957600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103bc6103b7366004614812565b610b28565b005b3480156103ca57600080fd5b506103d3610b80565b6040516103e091906148c9565b60405180910390f35b3480156103f557600080fd5b50610409610404366004614732565b610c12565b60405190151581526020016103e0565b34801561042557600080fd5b50600e545b6040519081526020016103e0565b34801561044457600080fd5b50600c5461042a565b34801561045957600080fd5b506103bc610468366004614812565b610c29565b34801561047957600080fd5b50610409610488366004614797565b610c58565b34801561049957600080fd5b506104c17f000000000000000000000000000000000000000000000000000000000000dead81565b6040516001600160a01b0390911681526020016103e0565b3480156104e557600080fd5b506103bc6104f43660046147d8565b610cc1565b34801561050557600080fd5b5061042a610514366004614812565b610d3b565b34801561052557600080fd5b5060115460405160ff90911681526020016103e0565b34801561054757600080fd5b506103bc6105563660046146f8565b610dbf565b34801561056757600080fd5b50610409610576366004614732565b610f76565b34801561058757600080fd5b5061042a60145481565b34801561059d57600080fd5b506103bc6105ac366004614812565b610fac565b3480156105bd57600080fd5b506103bc6105cc3660046146f8565b611096565b3480156105dd57600080fd5b506103bc6105ec3660046146f8565b611424565b3480156105fd57600080fd5b5061042a61060c36600461482b565b6114db565b34801561061d57600080fd5b5060205461040990600160a81b900460ff1681565b34801561063e57600080fd5b5061042a601d5481565b34801561065457600080fd5b506103bc6106633660046146f8565b611568565b34801561067457600080fd5b506104096106833660046146f8565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156106ad57600080fd5b504261042a565b3480156106c057600080fd5b506103bc6106cf3660046147d8565b6116bb565b3480156106e057600080fd5b506103bc6106ef3660046147d8565b6116f8565b34801561070057600080fd5b506103bc61070f366004614812565b611735565b34801561072057600080fd5b5060025461042a565b34801561073557600080fd5b5060205461040990600160b01b900460ff1681565b34801561075657600080fd5b506104096107653660046146f8565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561078f57600080fd5b506103bc61079e366004614812565b611764565b3480156107af57600080fd5b506103bc6107be366004614797565b611793565b3480156107cf57600080fd5b5061042a60165481565b3480156107e557600080fd5b5061042a6107f43660046146f8565b6118d0565b34801561080557600080fd5b50601f546104c1906201000090046001600160a01b031681565b34801561082b57600080fd5b5061042a60125481565b34801561084157600080fd5b506103bc610850366004614732565b61192f565b34801561086157600080fd5b506103bc610870366004614812565b611ab6565b34801561088157600080fd5b506103bc611afe565b34801561089657600080fd5b5061042a601a5481565b3480156108ac57600080fd5b506103bc6108bb366004614812565b612b41565b3480156108cc57600080fd5b506104096108db3660046146f8565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561090557600080fd5b506000546001600160a01b03166104c1565b34801561092357600080fd5b506103bc6109323660046147d8565b612bb8565b34801561094357600080fd5b506103d3612c00565b34801561095857600080fd5b5061042a60185481565b34801561096e57600080fd5b506103bc61097d366004614812565b612c0f565b34801561098e57600080fd5b5061040961099d366004614732565b612c3e565b3480156109ae57600080fd5b506103bc612c8d565b3480156109c357600080fd5b506104096109d2366004614732565b612da5565b3480156109e357600080fd5b5061042a601c5481565b3480156109f957600080fd5b506020546104c1906001600160a01b031681565b348015610a1957600080fd5b506103bc610a28366004614812565b612db2565b348015610a3957600080fd5b5061042a610a4836600461475e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a7f57600080fd5b5061042a601b5481565b348015610a9557600080fd5b506103bc610aa43660046146f8565b612e49565b348015610ab557600080fd5b506103bc610ac43660046146f8565b612efc565b348015610ad557600080fd5b506103bc610ae43660046146f8565b612f4e565b348015610af557600080fd5b506103bc610b04366004614812565b613038565b348015610b1557600080fd5b50601f5461040990610100900460ff1681565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b8152600401610b529061491e565b60405180910390fd5b601481601854610b6b91906149a8565b1115610b7657600080fd5b6014819055601555565b6060600f8054610b8f90614a0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbb90614a0a565b8015610c085780601f10610bdd57610100808354040283529160200191610c08565b820191906000526020600020905b815481529060010190602001808311610beb57829003601f168201915b5050505050905090565b6000610c1f338484613067565b5060015b92915050565b6000546001600160a01b03163314610c535760405162461bcd60e51b8152600401610b529061491e565b601d55565b6000610c6584848461318b565b610cb78433610cb285604051806060016040528060288152602001614af3602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906138d1565b613067565b5060019392505050565b6000546001600160a01b03163314610ceb5760405162461bcd60e51b8152600401610b529061491e565b6020805460ff60b01b1916600160b01b8315159081029190911782556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0910160405180910390a150565b6000600d54821115610da25760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b52565b6000610dac61390b565b9050610db8838261392e565b9392505050565b6000546001600160a01b03163314610de95760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b0381166000908152600a602052604090205460ff16610e515760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610b52565b60005b600b54811015610f7257816001600160a01b0316600b8281548110610e7b57610e7b614ab6565b6000918252602090912001546001600160a01b03161415610f6057600b8054610ea6906001906149f3565b81548110610eb657610eb6614ab6565b600091825260209091200154600b80546001600160a01b039092169183908110610ee257610ee2614ab6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600a90925220805460ff19169055600b805480610f3a57610f3a614aa0565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f6a81614a45565b915050610e54565b5050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c1f918590610cb29086613970565b336000818152600a602052604090205460ff16156110215760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b52565b600061102c836139cf565b505050506001600160a01b03841660009081526003602052604090205491925061105891905082613a1e565b6001600160a01b038316600090815260036020526040902055600d5461107e9082613a1e565b600d55600e5461108e9084613970565b600e55505050565b6000546001600160a01b031633146110c05760405162461bcd60e51b8152600401610b529061491e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190614715565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b89190614715565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156111fe57600080fd5b505afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112369190614715565b90506001600160a01b0381166113dc57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561127f57600080fd5b505afa158015611293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b79190614715565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ff57600080fd5b505afa158015611313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113379190614715565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561137f57600080fd5b505af1158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190614715565b602080546001600160a01b0319166001600160a01b03929092169190911790556113f8565b602080546001600160a01b0319166001600160a01b0383161790555b50601f80546001600160a01b03909216620100000262010000600160b01b031990921691909117905550565b6000546001600160a01b0316331461144e5760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03811660009081526009602052604090205460ff16156114b75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b52565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000600c5483111561152f5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b52565b8161154e57600061153f846139cf565b50939550610c23945050505050565b6000611559846139cf565b50929550610c23945050505050565b6000546001600160a01b031633146115925760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b0381166000908152600a602052604090205460ff16156115fb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b52565b6001600160a01b03811660009081526003602052604090205415611655576001600160a01b03811660009081526003602052604090205461163b90610d3b565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146116e55760405162461bcd60e51b8152600401610b529061491e565b601f805460ff1916911515919091179055565b6000546001600160a01b031633146117225760405162461bcd60e51b8152600401610b529061491e565b6019805460ff1916911515919091179055565b6000546001600160a01b0316331461175f5760405162461bcd60e51b8152600401610b529061491e565b601a55565b6000546001600160a01b0316331461178e5760405162461bcd60e51b8152600401610b529061491e565b601c55565b6000546001600160a01b031633146117bd5760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03831630141561180b5760405162461bcd60e51b815260206004820152601260248201527143616e742072656d6f7665204750554e4b5360701b6044820152606401610b52565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561185557600080fd5b505af1158015611869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188d91906147f5565b6118cb5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610b52565b505050565b6001600160a01b0381166000908152600a602052604081205460ff161561190d57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610c2390610d3b565b6000546001600160a01b031633146119595760405162461bcd60e51b8152600401610b529061491e565b670de0b6b3a764000081111561199d5760405162461bcd60e51b8152602060048201526009602482015268062408aa890409ac2f60bb1b6044820152606401610b52565b804710156119ed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b52565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a3a576040519150601f19603f3d011682016040523d82523d6000602084013e611a3f565b606091505b50509050806118cb5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b52565b6000546001600160a01b03163314611ae05760405162461bcd60e51b8152600401610b529061491e565b60148054611aee90836149a8565b1115611af957600080fd5b601855565b6000546001600160a01b03163314611b285760405162461bcd60e51b8152600401610b529061491e565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b7a57600080fd5b505afa158015611b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb29190614715565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611bfa57600080fd5b505afa158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c329190614715565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015611c7a57600080fd5b505af1158015611c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb29190614715565b602080546001600160a01b0319166001600160a01b03928316179055601f805462010000600160b01b03191662010000848416021790556000805460019260099291166001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526009835290812080548416600190811790915560079092527f57c722c10b286721330ce1e7368f87f549121277c4e5ffab2e83419c7564f96180548416831790556008805480840182557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390810180546001600160a01b0319908116737589319ed0fd750017159fb4e4d96c63966173c1179091557fb4360de54da26af4127515af1e49997106b425ee5904e923f0902c7618138e598054871686179055825480860184558201805482167365a67df75ccbf57828185c7c050e34de64d859d01790557faa01439ba306fcf815e716b248617e3c66941c4344ce5297e38ccc42cd30bc1180548716861781558354808701855583018054831673e031b36b53e53a292a20c5f08fd1658cddf74fce9081179091558154881687179091558354808701855583018054831690911790557f20bb0313363229c48e5dca565476b9f004fcadd21a3cebd9148dbac2f2ba8e6d80548716861790558254808601845582018054821673e516bdee55b0b4e9bacaf6285130de15589b13451790557f185a84d37a19636863439d4bd8f79b953edfc2f2b332404b82e2c102dfbb4b8d80548716861790558254808601845582018054821673a1cec245c456dd1bd9f2815a6955fef44eb4191b1790557ff405e61457986734bcc74d319afb38a21149b3d56f884ce85ec24a17fadbe35d80548716861790558254808601845582018054821673d7d3ee77d35d0a56f91542d4905b1a2b1cd7cf951790557fa2988ed14d9641c67aefa7ee82d50112dd7b9326d1e98e9dce9d802915d3b36480548716861790558254808601845582018054821673fe76f05dc59fec04184fa0245ad0c3cf9a57b9641790557f158b420708a0e60d8f36936f51360cee200d1017c9023a4ddcae85bff89c0f4e80548716861790558254808601845582018054821673dc81a3450817a58d00f45c86d0368290088db8481790557ff1d1c874a6478f85b6b904feafb9a196ead08dc959fdf0a523b19e42779d27ce8054871686179055825480860184558201805482167345fd07c63e5c316540f14b2002b085aee78e38811790557f401a4c0ca7781d92989fe1809638f35a473d45b2aa1f20ea08b891ad153486ab8054871686179055825480860184558201805482167327f9adb26d532a41d97e00206114e429ad58c6791790557fcdd749be89563b0fe17aff861f904dad7a5ecfebb7ff064b12d5552d5c400ea7805487168617905582548086018455820180548216739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e71790557f3eca23c1fceac0076012235763bf4b524e34500801ac57fb32381013c0d6901e80548716861790558254808601845582018054821673fad95b6089c53a0d1d861eabfaadd8901b0f85331790557f297b29cec8a1eb621a328e39c96c47ebe5e4031f1f910cb41ad54c511034e73a805487168617905582548086018455820180548216731d6e8bac6ea3730825bde4b005ed7b2b39a2932d1790557ffe44942143e318205a789f77df1b2bf735ffc548308bab5499d0216aec3332e48054871686179055825480860184558201805482166d084e91743124a982076c59f100841790557f3e4f611ed8482ea59e6424ad23a75453ec3ddb7677cd19d4c934256448de183a805487168617905582548086018455820180548216736da4bea09c3aa0761b09b19837d9105a522543031790557f7ee7f44cdecb2d7c9ebf96addf904d703c57dc894fdb6b132a783045f8ad751980548716861790558254808601845582018054821673323b7f37d382a68b0195b873af17cea5b67cd5951790557fb1c982ebec4b3ffbad67c2dd4b8d8215a47baa972366e4a63f51e9c6ce9a5d4e8054871686179055825480860184558201805482166f5804b22091aa9830e50459a15e7c92411790557fa11920fa7ae15c72226954c89a9e5c6f067c85fde0c317c7a78e3897c4aa229d80548716861790558254808601845582018054821673a3b0e79935815730d942a444a84d4bd14a3395531790557f1ea4ceff6c7cd2bd1aa871eb2c9e7b14363c267e1c8d45b2b4038682a83baef480548716861790558254808601845582018054821673f6da21e95d74767009accb145b96897ac3630bad1790557f5ccd521e90776b08b8302e31941eda99ae5bb6dd0a4a30a038e75275ed151f1f8054871686179055825480860184558201805482166d7673393729d5618dc555fd13f9aa1790557f9aac9a42097620b1ff8454a6252a3d8b6aecd2746f5cc70c2496bd35cd9e69b18054871686179055825480860184558201805482166d03441d59dde9a90bffb1cd3fabf11790557fa9d6552d66baaa4186648ea67a6cabd630f6081027f5bf546135d86d60df82fd8054871686179055825480860184558201805482167359903993ae67bf48f10832e9be28935fee04d6f61790557fe35fa26e68f804147088c2b96da426aeba0a986c80b2972d565ff073fcf3b2ed80548716861790558254808601845582018054821670917de6037d52b1f0a306eecd208405f7cd1790557f0974c6061423c59b1cc18edad4ab1f546201d6fbcde60ba3925dea5bbc1f3b92805487168617905582548086018455820180548216737100e690554b1c2fd01e8648db88be235c1e65141790557fe96e4260a99427d26094e01497bcbf1209430052150bbba23c77691cfd3888de8054871686179055825480860184558201805482167372b30cdc1583224381132d379a052a6b107254151790557fc71bda09a50ffbca62ccd1161350db5851fbb6ddd35d31c3c3517822e54b5c55805487168617905582548086018455820180548216739edd647d7d6eceae6bb61d7785ef66c5055a9bee1790557f3848f2c08fb0667ee5b5086c84806cc492f6771453629ea470ad1bb4309b27df80548716861790558254808601845582018054821673fe9d99ef02e905127239e85a611c29ad32c31c2f1790557f954a0c36a45fcaf27e7a22dfaa2c9f3b813d726eab18c0fdbf36d3b835f9975c8054871686178155835480870185558301805483167339608b6f20704889c51c0ae28b1fca8f36a5239b9081179091557f7985ebff531dc9ae85a3acb40e87a09c7806f6a13dabe868af5b0a8d22bd505e80548916881790558454808801865584018054841673c496d84215d5018f6f53e7f6f12e45c9b5e8e8a91790557f6c52e41dd6b06a1bc9b96527098c91ef1536901d6b06ec3895465678b4d3cb2d8054891688179055845480880186558401805484167359341bc6b4f3ace878574b05914f43309dd678c71790557f33bb6bc5e24dd699dcbf1756dad57e97b0d83832560d2b9372cac6749ec975d080548916881790558454808801865584018054841673e986d48efee9ec1b8f66cd0b0ae8e3d18f091bdf1790557fc419d9cfed3cf702f7269baae5ca04d34554e3d12c577f99b455846286201a5c805489168817905584548088018655840180548416734aeb32e16dcac00b092596adc6cd4955efdee2901790557fab78f0789a7bb7c5eaddd13a6a0e91c9346a2134aed2e32ec259fffe6a6a9c7680548916881790558454808801865584018054841673136f4b5b6a306091b280e3f251fa0e21b1280cd51790558154881687179091558354808701855583018054831690911790557f1be75507d4b2cac3a24552f05fdfa14cf0f018e17cf718ca8d750a13ecaa3fb8805487168617905582548086018455820180548216735b83a351500b631cc2a20a665ee17f0dc66e3db71790557f8499ee18ee603a2cfde0354d5d324ebcbe145b33d7bdb9c0e42bad4169d18d9d80548716861790558254808601845582018054821673bcb05a3f85d34f0194c70d5914d5c4e28f11cc021790557f47c3decdbf0327f6973c2489bb6b726e7c2d32891ee0e58aab41a4ba06f0745b8054871686179055825480860184558201805482167322246f9bca9921bfa9a3f8df5babc5bc8ee738501790557f327a45de5f4ec9398adddd1243a3de3a045557ad91bb3317327482f19cc2fa568054871686179055825480860184558201805482167342d4c197036bd9984ca652303e07dd29fa6bdb371790557f91e3d6ffd1390da3bfbc0e0875515e89982841b064fcda9b67cffc63d8082ab68054871686179055825480860184558201805482166e3b3cc22af3ae1eac0440bcee416b401790557f0f0787d14733cc845754e46f4b9ac4f1ad047fd749dc13e3d96a4ae78999260f80548716861790558254808601845582018054821673231dc6af3c66741f6cf618884b953df0e83c1a2a1790557f9e1cab7afd1c36c8834124180f41b4fdd617e5b830a32dbe4ad39ce2403f330180548716861790558254808601845582018054821673c6bf34596f74eb22e066a878848dfb9fc1cf4c651790557ffce34a7b755f382e92d8fed99c280c08c64d82c48720533c065ce505a27e30c48054871686179055825480860184558201805482167320f6fcd6b8813c4f98c0ffbd88c87c0255040aa31790557f036de65337957dcec72784f3b7bdcc4c1db7dca6197401781e45567a6282e7ec80548716861790558254808601845582018054821673d334c5392ed4863c81576422b968c6fb90ee9f791790557fb223036d049cf96d476dc559d24b358878d6abfa6d8b9398c62a0461b2db6f6a80548716861790558254808601845582018054821673fffff6e70842330948ca47254f2be673b1cb0db71790557f3f74e5026cf68c914529907c341f86db0d11f8d7bb07501e2da38fe88ece2d8a80548716861781558354808701855583018054831673a39c50bf86e15391180240938f469a7bf4fdae9a90811790915581549097168617905582549485018355919092529101805490911690911790555060118054744bcf0a70a20dfd45962d8ba28ae9e643af970b8c00610100600160a81b0319909116179055565b6000546001600160a01b03163314612b6b5760405162461bcd60e51b8152600401610b529061491e565b601e819055600a601881905560165560006014556020805460ff60a81b1916600160a81b179055601f805461ff001916610100179055426012819055612bb29060f06149a8565b60135550565b6000546001600160a01b03163314612be25760405162461bcd60e51b8152600401610b529061491e565b60208054911515600160a81b0260ff60a81b19909216919091179055565b606060108054610b8f90614a0a565b6000546001600160a01b03163314612c395760405162461bcd60e51b8152600401610b529061491e565b601b55565b6000610c1f3384610cb285604051806060016040528060258152602001614b1b602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906138d1565b6001546001600160a01b03163314612cf35760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610b52565b6002544211612d445760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610b52565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610c1f33848461318b565b6000546001600160a01b03163314612ddc5760405162461bcd60e51b8152600401610b529061491e565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055612e0b81426149a8565b600255600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b03163314612e735760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03811660009081526009602052604090205460ff16612edb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610b52565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314612f265760405162461bcd60e51b8152600401610b529061491e565b601180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314612f785760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b038116612fdd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b52565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146130625760405162461bcd60e51b8152600401610b529061491e565b601e55565b6001600160a01b0383166130c95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b52565b6001600160a01b03821661312a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b52565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166131ef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b52565b6001600160a01b0382166132515760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b52565b600081116132b35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b52565b6001600160a01b03821660009081526007602052604090205460ff16156133165760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b52565b3360009081526007602052604090205460ff16156133705760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b52565b6000546001600160a01b0384811691161480159061339c57506000546001600160a01b03838116911614155b1561350d57601f54610100900460ff16613499576001600160a01b0383163014806133cf57506001600160a01b03821630145b806133e757506000546001600160a01b038481169116145b806133ff57506000546001600160a01b038381169116145b8061342257506001600160a01b03831660009081526009602052604090205460ff165b8061344557506001600160a01b03821660009081526009602052604090205460ff165b61349957601f54610100900460ff166134995760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610b52565b601f5460ff161561350d573360009081526006602052604090206002015460ff1661350d57604080516060810182526000808252602080830182815260018486018181523385526006909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b6020546001600160a01b03848116911614801561353e5750601f546001600160a01b03838116620100009092041614155b801561356357506001600160a01b03821660009081526009602052604090205460ff16155b1561372957601f54610100900460ff166135bf5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b52565b601854601655601f5460ff16156136805742601354111561368057601e548111156135e957600080fd5b6001600160a01b038216600090815260066020526040902054421161365b5760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b6064820152608401610b52565b61366642602d6149a8565b6001600160a01b0383166000908152600660205260409020555b601f5460ff1615613729576001600160a01b03821660009081526006602052604090206001015442116137015760405162461bcd60e51b815260206004820152602360248201527f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260448201526232b21760e91b6064820152608401610b52565b61370c42600f6149a8565b6001600160a01b0383166000908152600660205260409020600101555b602054600160a01b900460ff1615801561374c5750602054600160a81b900460ff165b801561376557506020546001600160a01b038381169116145b156138745760195460ff16156137c857600061378c601a5483613a6090919063ffffffff16565b6020549091506137bb906137b49084906137ae906001600160a01b03166118d0565b90613970565b829061392e565b90506137c681613adf565b505b60165460006137d6306118d0565b905080156137e7576137e781613b2b565b6020544790600160b01b900460ff1680156138045750601b548410155b1561386e576000600a90506000613859600a613843613850613849601854613843601c5461383d6018548e613a1e90919063ffffffff16565b90613a60565b9061392e565b8690613970565b601d5490613a60565b905080831061386b5761386b81613b8e565b50505b50506016555b6001600160a01b03831660009081526009602052604090205460019060ff16806138b657506001600160a01b03831660009081526009602052604090205460ff165b156138bf575060005b6138cb84848484613bc0565b50505050565b600081848411156138f55760405162461bcd60e51b8152600401610b5291906148c9565b50600061390284866149f3565b95945050505050565b6000806000613918613ce5565b9092509050613927828261392e565b9250505090565b6000610db883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e67565b60008061397d83856149a8565b905083811015610db85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b52565b60008060008060008060008060006139e68a613e95565b9250925092506000806000613a048d86866139ff61390b565b613ed7565b919f909e50909c50959a5093985091965092945050505050565b6000610db883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506138d1565b600082613a6f57506000610c23565b6000613a7b83856149d4565b905082613a8885836149c0565b14610db85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b52565b60185480821015613af35750601854613b07565b6028821115613b0457506028613b07565b50805b613b12816002613f27565b15613b255780613b2181614a45565b9150505b60165550565b6020805460ff60a01b1916600160a01b17905547613b4882613f69565b6000613b544783613a1e565b601154909150613b7c9061010090046001600160a01b0316613b7783600261392e565b614130565b50506020805460ff60a01b1916905550565b6020805460ff60a01b1916600160a01b1790558015613bb057613bb081614166565b506020805460ff60a01b19169055565b80613bcd57613bcd61432c565b6001600160a01b0384166000908152600a602052604090205460ff168015613c0e57506001600160a01b0383166000908152600a602052604090205460ff16155b15613c2357613c1e84848461435a565b613ccf565b6001600160a01b0384166000908152600a602052604090205460ff16158015613c6457506001600160a01b0383166000908152600a602052604090205460ff165b15613c7457613c1e848484614480565b6001600160a01b0384166000908152600a602052604090205460ff168015613cb457506001600160a01b0383166000908152600a602052604090205460ff165b15613cc457613c1e848484614529565b613ccf84848461459c565b806138cb576138cb601554601455601754601655565b600d54600c546000918291825b600b54811015613e37578260036000600b8481548110613d1457613d14614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613d7f57508160046000600b8481548110613d5857613d58614ab6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613d9557600d54600c54945094505050509091565b613ddb60036000600b8481548110613daf57613daf614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613a1e565b9250613e2360046000600b8481548110613df757613df7614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613a1e565b915080613e2f81614a45565b915050613cf2565b50600c54600d54613e479161392e565b821015613e5e57600d54600c549350935050509091565b90939092509050565b60008183613e885760405162461bcd60e51b8152600401610b5291906148c9565b50600061390284866149c0565b600080600080613ea4856145e0565b90506000613eb1866145fc565b90506000613ec982613ec38986613a1e565b90613a1e565b979296509094509092505050565b6000808080613ee68886613a60565b90506000613ef48887613a60565b90506000613f028888613a60565b90506000613f1482613ec38686613a1e565b939b939a50919850919650505050505050565b6000610db883836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614618565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613f9e57613f9e614ab6565b60200260200101906001600160a01b031690816001600160a01b031681525050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561400c57600080fd5b505afa158015614020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140449190614715565b8160018151811061405757614057614ab6565b6001600160a01b039283166020918202929092010152601f546140839130916201000090041684613067565b601f5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906140c190859060009086903090429060040161496c565b600060405180830381600087803b1580156140db57600080fd5b505af11580156140ef573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614124929190614953565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156118cb573d6000803e3d6000fd5b604080516002808252606082018352600092602083019080368337019050509050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156141d557600080fd5b505afa1580156141e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420d9190614715565b8160008151811061422057614220614ab6565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061425457614254614ab6565b6001600160a01b039283166020918202929092010152601f546201000090041663b6f9de95836000847f000000000000000000000000000000000000000000000000000000000000dead6142aa4261012c613970565b6040518663ffffffff1660e01b81526004016142c99493929190614894565b6000604051808303818588803b1580156142e257600080fd5b505af11580156142f6573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051614124929190614953565b60145415801561433c5750601654155b1561434357565b601480546015556016805460175560009182905555565b60008060008060008061436c876139cf565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061439e9088613a1e565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546143cd9087613a1e565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546143fc9086613970565b6001600160a01b03891660009081526003602052604090205561441e8161464c565b61442884836146d4565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161446d91815260200190565b60405180910390a3505050505050505050565b600080600080600080614492876139cf565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506144c49087613a1e565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546144fa9084613970565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546143fc9086613970565b60008060008060008061453b876139cf565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061456d9088613a1e565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546144c49087613a1e565b6000806000806000806145ae876139cf565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506143cd9087613a1e565b6000610c23606461384360145485613a6090919063ffffffff16565b6000610c23606461384360165485613a6090919063ffffffff16565b600081836146395760405162461bcd60e51b8152600401610b5291906148c9565b506146448385614a60565b949350505050565b600061465661390b565b905060006146648383613a60565b306000908152600360205260409020549091506146819082613970565b30600090815260036020908152604080832093909355600a9052205460ff16156118cb57306000908152600460205260409020546146bf9084613970565b30600090815260046020526040902055505050565b600d546146e19083613a1e565b600d55600e546146f19082613970565b600e555050565b60006020828403121561470a57600080fd5b8135610db881614acc565b60006020828403121561472757600080fd5b8151610db881614acc565b6000806040838503121561474557600080fd5b823561475081614acc565b946020939093013593505050565b6000806040838503121561477157600080fd5b823561477c81614acc565b9150602083013561478c81614acc565b809150509250929050565b6000806000606084860312156147ac57600080fd5b83356147b781614acc565b925060208401356147c781614acc565b929592945050506040919091013590565b6000602082840312156147ea57600080fd5b8135610db881614ae4565b60006020828403121561480757600080fd5b8151610db881614ae4565b60006020828403121561482457600080fd5b5035919050565b6000806040838503121561483e57600080fd5b82359150602083013561478c81614ae4565b600081518084526020808501945080840160005b838110156148895781516001600160a01b031687529582019590820190600101614864565b509495945050505050565b8481526080602082015260006148ad6080830186614850565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156148f6578581018301518582016040015282016148da565b81811115614908576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006146446040830184614850565b85815284602082015260a06040820152600061498b60a0830186614850565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156149bb576149bb614a74565b500190565b6000826149cf576149cf614a8a565b500490565b60008160001904831182151516156149ee576149ee614a74565b500290565b600082821015614a0557614a05614a74565b500390565b600181811c90821680614a1e57607f821691505b60208210811415614a3f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614a5957614a59614a74565b5060010190565b600082614a6f57614a6f614a8a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114614ae157600080fd5b50565b8015158114614ae157600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f56d43e2fe4498fbaf03b4dca35e502386e7b744cf494f8374ac1479c9c4c68064736f6c63430008070033
Deployed Bytecode Sourcemap
15280:32329:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44497:176;;;;;;;;;;-1:-1:-1;44497:176:0;;;;;:::i;:::-;;:::i;:::-;;26576:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27488:161;;;;;;;;;;-1:-1:-1;27488:161:0;;;;;:::i;:::-;;:::i;:::-;;;4656:14:1;;4649:22;4631:41;;4619:2;4604:18;27488:161:0;4491:187:1;28609:87:0;;;;;;;;;;-1:-1:-1;28678:10:0;;28609:87;;;16071:25:1;;;16059:2;16044:18;28609:87:0;15925:177:1;26853:95:0;;;;;;;;;;-1:-1:-1;26933:7:0;;26853:95;;43726:107;;;;;;;;;;-1:-1:-1;43726:107:0;;;;;:::i;:::-;;:::i;27657:313::-;;;;;;;;;;-1:-1:-1;27657:313:0;;;;;:::i;:::-;;:::i;15398:81::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3859:32:1;;;3841:51;;3829:2;3814:18;15398:81:0;3695:203:1;43230:150:0;;;;;;;;;;-1:-1:-1;43230:150:0;;;;;:::i;:::-;;:::i;29539:253::-;;;;;;;;;;-1:-1:-1;29539:253:0;;;;;:::i;:::-;;:::i;26762:83::-;;;;;;;;;;-1:-1:-1;26828:9:0;;26762:83;;26828:9;;;;17173:36:1;;17161:2;17146:18;26762:83:0;17031:184:1;45588:479:0;;;;;;;;;;-1:-1:-1;45588:479:0;;;;;:::i;:::-;;:::i;27978:218::-;;;;;;;;;;-1:-1:-1;27978:218:0;;;;;:::i;:::-;;:::i;16403:26::-;;;;;;;;;;;;;;;;28708:377;;;;;;;;;;-1:-1:-1;28708:377:0;;;;;:::i;:::-;;:::i;46902:608::-;;;;;;;;;;-1:-1:-1;46902:608:0;;;;;:::i;:::-;;:::i;44852:190::-;;;;;;;;;;-1:-1:-1;44852:190:0;;;;;:::i;:::-;;:::i;29095:436::-;;;;;;;;;;-1:-1:-1;29095:436:0;;;;;:::i;:::-;;:::i;17108:41::-;;;;;;;;;;-1:-1:-1;17108:41:0;;;;-1:-1:-1;;;17108:41:0;;;;;;16786:37;;;;;;;;;;;;;;;;45246:334;;;;;;;;;;-1:-1:-1;45246:334:0;;;;;:::i;:::-;;:::i;42956:123::-;;;;;;;;;;-1:-1:-1;42956:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;43044:27:0;43020:4;43044:27;;;:18;:27;;;;;;;;;42956:123;6747:90;;;;;;;;;;-1:-1:-1;6814:15:0;6747:90;;43845:124;;;;;;;;;;-1:-1:-1;43845:124:0;;;;;:::i;:::-;;:::i;43981:136::-;;;;;;;;;;-1:-1:-1;43981:136:0;;;;;:::i;:::-;;:::i;44366:119::-;;;;;;;;;;-1:-1:-1;44366:119:0;;;;;:::i;:::-;;:::i;6649:90::-;;;;;;;;;;-1:-1:-1;6722:9:0;;6649:90;;17156:34;;;;;;;;;;-1:-1:-1;17156:34:0;;;;-1:-1:-1;;;17156:34:0;;;;;;29800:113;;;;;;;;;;-1:-1:-1;29800:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;29887:18:0;29863:4;29887:18;;;:9;:18;;;;;;;;;29800:113;43641:77;;;;;;;;;;-1:-1:-1;43641:77:0;;;;;:::i;:::-;;:::i;46151:258::-;;;;;;;;;;-1:-1:-1;46151:258:0;;;;;:::i;:::-;;:::i;16484:30::-;;;;;;;;;;;;;;;;26956:198;;;;;;;;;;-1:-1:-1;26956:198:0;;;;;:::i;:::-;;:::i;16999:39::-;;;;;;;;;;-1:-1:-1;16999:39:0;;;;;;;-1:-1:-1;;;;;16999:39:0;;;16325:25;;;;;;;;;;;;;;;;46417:472;;;;;;;;;;-1:-1:-1;46417:472:0;;;;;:::i;:::-;;:::i;44685:159::-;;;;;;;;;;-1:-1:-1;44685:159:0;;;;;:::i;:::-;;:::i;18151:8417::-;;;;;;;;;;;;;:::i;16666:36::-;;;;;;;;;;;;;;;;17786:357;;;;;;;;;;-1:-1:-1;17786:357:0;;;;;:::i;:::-;;:::i;28481:120::-;;;;;;;;;;-1:-1:-1;28481:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;28573:20:0;28549:4;28573:20;;;:11;:20;;;;;;;;;28481:120;6177:79;;;;;;;;;;-1:-1:-1;6215:7:0;6242:6;-1:-1:-1;;;;;6242:6:0;6177:79;;44252:102;;;;;;;;;;-1:-1:-1;44252:102:0;;;;;:::i;:::-;;:::i;26667:87::-;;;;;;;;;;;;;:::i;16581:26::-;;;;;;;;;;;;;;;;43522:107;;;;;;;;;;-1:-1:-1;43522:107:0;;;;;:::i;:::-;;:::i;28204:269::-;;;;;;;;;;-1:-1:-1;28204:269:0;;;;;:::i;:::-;;:::i;7079:305::-;;;;;;;;;;;;;:::i;27162:167::-;;;;;;;;;;-1:-1:-1;27162:167:0;;;;;:::i;:::-;;:::i;16758:21::-;;;;;;;;;;;;;;;;17045:26;;;;;;;;;;-1:-1:-1;17045:26:0;;;;-1:-1:-1;;;;;17045:26:0;;;6845:226;;;;;;;;;;-1:-1:-1;6845:226:0;;;;;:::i;:::-;;:::i;27337:143::-;;;;;;;;;;-1:-1:-1;27337:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;27445:18:0;;;27418:7;27445:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;27337:143;16721:30;;;;;;;;;;;;;;;;45050:188;;;;;;;;;;-1:-1:-1;45050:188:0;;;;;:::i;:::-;;:::i;43089:133::-;;;;;;;;;;-1:-1:-1;43089:133:0;;;;;:::i;:::-;;:::i;6397:244::-;;;;;;;;;;-1:-1:-1;6397:244:0;;;;;:::i;:::-;;:::i;44129:115::-;;;;;;;;;;-1:-1:-1;44129:115:0;;;;;:::i;:::-;;:::i;16908:31::-;;;;;;;;;;-1:-1:-1;16908:31:0;;;;;;;;;;;44497:176;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;;;;;;;;;44601:2:::1;44592:6;44580:11;;:18;;;;:::i;:::-;44579:24;;44571:33;;;::::0;::::1;;44616:7;:16:::0;;;44643:15:::1;:22:::0;44497:176::o;26576:83::-;26613:13;26646:5;26639:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26576:83;:::o;27488:161::-;27563:4;27580:39;575:10;27603:7;27612:6;27580:8;:39::i;:::-;-1:-1:-1;27637:4:0;27488:161;;;;;:::o;43726:107::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43801:11:::1;:24:::0;43726:107::o;27657:313::-;27755:4;27772:36;27782:6;27790:9;27801:6;27772:9;:36::i;:::-;27819:121;27828:6;575:10;27850:89;27888:6;27850:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27850:19:0;;;;;;:11;:19;;;;;;;;575:10;27850:33;;;;;;;;;;:37;:89::i;:::-;27819:8;:121::i;:::-;-1:-1:-1;27958:4:0;27657:313;;;;;:::o;43230:150::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43300:14:::1;:25:::0;;-1:-1:-1;;;;43300:25:0::1;-1:-1:-1::0;;;43300:25:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;43341:31:::1;::::0;4631:41:1;;;43341:31:0::1;::::0;4604:18:1;43341:31:0::1;;;;;;;43230:150:::0;:::o;29539:253::-;29605:7;29644;;29633;:18;;29625:73;;;;-1:-1:-1;;;29625:73:0;;6641:2:1;29625:73:0;;;6623:21:1;6680:2;6660:18;;;6653:30;6719:34;6699:18;;;6692:62;-1:-1:-1;;;6770:18:1;;;6763:40;6820:19;;29625:73:0;6439:406:1;29625:73:0;29709:19;29732:10;:8;:10::i;:::-;29709:33;-1:-1:-1;29760:24:0;:7;29709:33;29760:11;:24::i;:::-;29753:31;29539:253;-1:-1:-1;;;29539:253:0:o;45588:479::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45670:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;45662:60;;;::::0;-1:-1:-1;;;45662:60:0;;10457:2:1;45662:60:0::1;::::0;::::1;10439:21:1::0;10496:2;10476:18;;;10469:30;10535:29;10515:18;;;10508:57;10582:18;;45662:60:0::1;10255:351:1::0;45662:60:0::1;45738:9;45733:327;45757:9;:16:::0;45753:20;::::1;45733:327;;;45815:7;-1:-1:-1::0;;;;;45799:23:0::1;:9;45809:1;45799:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;45799:12:0::1;:23;45795:254;;;45858:9;45868:16:::0;;:20:::1;::::0;45887:1:::1;::::0;45868:20:::1;:::i;:::-;45858:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;45843:9:::1;:12:::0;;-1:-1:-1;;;;;45858:31:0;;::::1;::::0;45853:1;;45843:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;45843:46:0::1;-1:-1:-1::0;;;;;45843:46:0;;::::1;;::::0;;45908:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;45947:11:::1;:20:::0;;;;:28;;-1:-1:-1;;45947:28:0::1;::::0;;45994:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;45994:15:0;;;;;-1:-1:-1;;;;;;45994:15:0::1;::::0;;;;;45733:327:::1;45588:479:::0;:::o;45795:254::-:1;45775:3:::0;::::1;::::0;::::1;:::i;:::-;;;;45733:327;;;;45588:479:::0;:::o;27978:218::-;575:10;28066:4;28115:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28115:34:0;;;;;;;;;;28066:4;;28083:83;;28106:7;;28115:50;;28154:10;28115:38;:50::i;28708:377::-;575:10;28760:14;28809:19;;;:11;:19;;;;;;;;28808:20;28800:77;;;;-1:-1:-1;;;28800:77:0;;14958:2:1;28800:77:0;;;14940:21:1;14997:2;14977:18;;;14970:30;15036:34;15016:18;;;15009:62;-1:-1:-1;;;15087:18:1;;;15080:42;15139:19;;28800:77:0;14756:408:1;28800:77:0;28889:15;28913:19;28924:7;28913:10;:19::i;:::-;-1:-1:-1;;;;;;;;;28961:15:0;;;;;;:7;:15;;;;;;28888:44;;-1:-1:-1;28961:28:0;;:15;-1:-1:-1;28888:44:0;28961:19;:28::i;:::-;-1:-1:-1;;;;;28943:15:0;;;;;;:7;:15;;;;;:46;29010:7;;:20;;29022:7;29010:11;:20::i;:::-;29000:7;:30;29054:10;;:23;;29069:7;29054:14;:23::i;:::-;29041:10;:36;-1:-1:-1;;;28708:377:0:o;46902:608::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;47025:29:::1;47076:9;47025:61;;47097:16;47134:10;-1:-1:-1::0;;;;;47134:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;47116:47:0::1;;47172:4;47179:10;-1:-1:-1::0;;;;;47179:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47116:81;::::0;-1:-1:-1;;;;;;47116:81:0::1;::::0;;;;;;-1:-1:-1;;;;;4133:15:1;;;47116:81:0::1;::::0;::::1;4115:34:1::0;4185:15;;4165:18;;;4158:43;4050:18;;47116:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47097:100:::0;-1:-1:-1;;;;;;47253:22:0;::::1;47249:217;;47324:10;-1:-1:-1::0;;;;;47324:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;47306:50:0::1;;47365:4;47372:10;-1:-1:-1::0;;;;;47372:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47306:84;::::0;-1:-1:-1;;;;;;47306:84:0::1;::::0;;;;;;-1:-1:-1;;;;;4133:15:1;;;47306:84:0::1;::::0;::::1;4115:34:1::0;4185:15;;4165:18;;;4158:43;4050:18;;47306:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47292:11;:98:::0;;-1:-1:-1;;;;;;47292:98:0::1;-1:-1:-1::0;;;;;47292:98:0;;;::::1;::::0;;;::::1;::::0;;47249:217:::1;;;47432:11;:22:::0;;-1:-1:-1;;;;;;47432:22:0::1;-1:-1:-1::0;;;;;47432:22:0;::::1;;::::0;;47249:217:::1;-1:-1:-1::0;47476:13:0::1;:26:::0;;-1:-1:-1;;;;;47476:26:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;47476:26:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;46902:608:0:o;44852:190::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44930:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;44929:28;44921:68;;;::::0;-1:-1:-1;;;44921:68:0;;9316:2:1;44921:68:0::1;::::0;::::1;9298:21:1::0;9355:2;9335:18;;;9328:30;9394:29;9374:18;;;9367:57;9441:18;;44921:68:0::1;9114:351:1::0;44921:68:0::1;-1:-1:-1::0;;;;;45000:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;45000:34:0::1;45030:4;45000:34;::::0;;44852:190::o;29095:436::-;29185:7;29224;;29213;:18;;29205:62;;;;-1:-1:-1;;;29205:62:0;;11564:2:1;29205:62:0;;;11546:21:1;11603:2;11583:18;;;11576:30;11642:33;11622:18;;;11615:61;11693:18;;29205:62:0;11362:355:1;29205:62:0;29283:17;29278:246;;29318:15;29342:19;29353:7;29342:10;:19::i;:::-;-1:-1:-1;29317:44:0;;-1:-1:-1;29376:14:0;;-1:-1:-1;;;;;29376:14:0;29278:246;29425:23;29456:19;29467:7;29456:10;:19::i;:::-;-1:-1:-1;29423:52:0;;-1:-1:-1;29490:22:0;;-1:-1:-1;;;;;29490:22:0;45246:334;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45329:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;45328:21;45320:61;;;::::0;-1:-1:-1;;;45320:61:0;;9316:2:1;45320:61:0::1;::::0;::::1;9298:21:1::0;9355:2;9335:18;;;9328:30;9394:29;9374:18;;;9367:57;9441:18;;45320:61:0::1;9114:351:1::0;45320:61:0::1;-1:-1:-1::0;;;;;45396:16:0;::::1;45415:1;45396:16:::0;;;:7:::1;:16;::::0;;;;;:20;45392:109:::1;;-1:-1:-1::0;;;;;45472:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;45452:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;45433:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;45392:109:::1;-1:-1:-1::0;;;;;45511:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;45511:27:0::1;45534:4;45511:27:::0;;::::1;::::0;;;45549:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;45549:23:0::1;::::0;;::::1;::::0;;45246:334::o;43845:124::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43927:16:::1;:34:::0;;-1:-1:-1;;43927:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43845:124::o;43981:136::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;44069:19:::1;:40:::0;;-1:-1:-1;;44069:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43981:136::o;44366:119::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;44447:14:::1;:30:::0;44366:119::o;43641:77::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43702:1:::1;:8:::0;43641:77::o;46151:258::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;46271:27:0;::::1;46293:4;46271:27;;46263:58;;;::::0;-1:-1:-1;;;46263:58:0;;11217:2:1;46263:58:0::1;::::0;::::1;11199:21:1::0;11256:2;11236:18;;;11229:30;-1:-1:-1;;;11275:18:1;;;11268:48;11333:18;;46263:58:0::1;11015:342:1::0;46263:58:0::1;46340:41;::::0;-1:-1:-1;;;46340:41:0;;-1:-1:-1;;;;;4404:32:1;;;46340:41:0::1;::::0;::::1;4386:51:1::0;4453:18;;;4446:34;;;46340:27:0;::::1;::::0;::::1;::::0;4359:18:1;;46340:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46332:69;;;::::0;-1:-1:-1;;;46332:69:0;;7862:2:1;46332:69:0::1;::::0;::::1;7844:21:1::0;7901:2;7881:18;;;7874:30;-1:-1:-1;;;7920:18:1;;;7913:45;7975:18;;46332:69:0::1;7660:339:1::0;46332:69:0::1;46151:258:::0;;;:::o;26956:198::-;-1:-1:-1;;;;;27046:20:0;;27022:7;27046:20;;;:11;:20;;;;;;;;27042:49;;;-1:-1:-1;;;;;;27075:16:0;;;;;:7;:16;;;;;;;26956:198::o;27042:49::-;-1:-1:-1;;;;;27129:16:0;;;;;;:7;:16;;;;;;27109:37;;:19;:37::i;46417:472::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;46530:19:::1;46520:6;:29;;46512:51;;;::::0;-1:-1:-1;;;46512:51:0;;11924:2:1;46512:51:0::1;::::0;::::1;11906:21:1::0;11963:1;11943:18;;;11936:29;-1:-1:-1;;;11981:18:1;;;11974:39;12030:18;;46512:51:0::1;11722:332:1::0;46512:51:0::1;46607:6;46582:21;:31;;46574:73;;;::::0;-1:-1:-1;;;46574:73:0;;10099:2:1;46574:73:0::1;::::0;::::1;10081:21:1::0;10138:2;10118:18;;;10111:30;10177:31;10157:18;;;10150:59;10226:18;;46574:73:0::1;9897:353:1::0;46574:73:0::1;46739:12;46757:9;-1:-1:-1::0;;;;;46757:14:0::1;46780:6;46757:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46738:54;;;46811:7;46803:78;;;::::0;-1:-1:-1;;;46803:78:0;;9672:2:1;46803:78:0::1;::::0;::::1;9654:21:1::0;9711:2;9691:18;;;9684:30;9750:34;9730:18;;;9723:62;9821:28;9801:18;;;9794:56;9867:19;;46803:78:0::1;9470:422:1::0;44685:159:0;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;44797:2:::1;44787:7:::0;;44776:18:::1;::::0;:10;:18:::1;:::i;:::-;44775:24;;44767:33;;;::::0;::::1;;44812:11;:24:::0;44685:159::o;18151:8417::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;18207:33:::1;18262:42;18207:98;;18348:14;-1:-1:-1::0;;;;;18348:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18330:64:0::1;;18403:4;18410:14;-1:-1:-1::0;;;;;18410:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18330:102;::::0;-1:-1:-1;;;;;;18330:102:0::1;::::0;;;;;;-1:-1:-1;;;;;4133:15:1;;;18330:102:0::1;::::0;::::1;4115:34:1::0;4185:15;;4165:18;;;4158:43;4050:18;;18330:102:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18316:11;:116:::0;;-1:-1:-1;;;;;;18316:116:0::1;-1:-1:-1::0;;;;;18316:116:0;;::::1;;::::0;;18445:13:::1;:30:::0;;-1:-1:-1;;;;;;18445:30:0::1;::::0;;;::::1;;;::::0;;-1:-1:-1;6242:6:0;;-1:-1:-1;;18488:18:0::1;::::0;-1:-1:-1;6242:6:0;-1:-1:-1;;;;;18488:27:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;18488:27:0;;;:34;;;::::1;;-1:-1:-1::0;;18488:34:0;;::::1;;::::0;;18560:4:::1;18533:33:::0;;:18:::1;:33:::0;;;;;:40;;;::::1;18488:34:::0;18533:40;;::::1;::::0;;;18596:9:::1;:62:::0;;;;:69;;;::::1;::::0;::::1;::::0;;18676:17:::1;:75:::0;;;;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;18676:75:0;;::::1;18614:42;18676:75;::::0;;;18764:62;:69;;;::::1;::::0;::::1;::::0;;18844:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;18782:42;18844:75;::::0;;18932:62;:69;;;::::1;::::0;::::1;::::0;;19012:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;18950:42;19012:75:::0;;::::1;::::0;;;19100:69;;;::::1;::::0;::::1;::::0;;;19180:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;19268:62;:69;;;::::1;::::0;::::1;::::0;;19348:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19286:42;19348:75;::::0;;19436:62;:69;;;::::1;::::0;::::1;::::0;;19516:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19454:42;19516:75;::::0;;19604:62;:69;;;::::1;::::0;::::1;::::0;;19684:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19622:42;19684:75;::::0;;19772:62;:69;;;::::1;::::0;::::1;::::0;;19852:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19790:42;19852:75;::::0;;19940:62;:69;;;::::1;::::0;::::1;::::0;;20020:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19958:42;20020:75;::::0;;20108:62;:69;;;::::1;::::0;::::1;::::0;;20188:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20126:42;20188:75;::::0;;20276:62;:69;;;::::1;::::0;::::1;::::0;;20356:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20294:42;20356:75;::::0;;20444:62;:69;;;::::1;::::0;::::1;::::0;;20524:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20462:42;20524:75;::::0;;20612:62;:69;;;::::1;::::0;::::1;::::0;;20692:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20630:42;20692:75;::::0;;20780:62;:69;;;::::1;::::0;::::1;::::0;;20860:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20798:42;20860:75;::::0;;20948:62;:69;;;::::1;::::0;::::1;::::0;;21028:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20966:42;21028:75;::::0;;21116:62;:69;;;::::1;::::0;::::1;::::0;;21196:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21134:42;21196:75;::::0;;21284:62;:69;;;::::1;::::0;::::1;::::0;;21364:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21302:42;21364:75;::::0;;21452:62;:69;;;::::1;::::0;::::1;::::0;;21532:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21470:42;21532:75;::::0;;21620:62;:69;;;::::1;::::0;::::1;::::0;;21700:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21638:42;21700:75;::::0;;21788:62;:69;;;::::1;::::0;::::1;::::0;;21868:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21806:42;21868:75;::::0;;21956:62;:69;;;::::1;::::0;::::1;::::0;;22036:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21974:42;22036:75;::::0;;22124:62;:69;;;::::1;::::0;::::1;::::0;;22204:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22142:42;22204:75;::::0;;22292:62;:69;;;::::1;::::0;::::1;::::0;;22372:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22310:42;22372:75;::::0;;22460:62;:69;;;::::1;::::0;::::1;::::0;;22540:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22478:42;22540:75;::::0;;22628:62;:69;;;::::1;::::0;::::1;::::0;;22708:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22646:42;22708:75;::::0;;22796:62;:69;;;::::1;::::0;::::1;::::0;;22876:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22814:42;22876:75;::::0;;22964:62;:69;;;::::1;::::0;::::1;::::0;;23044:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22982:42;23044:75;::::0;;23132:62;:69;;;::::1;::::0;::::1;::::0;;23212:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23150:42;23212:75;::::0;;23300:62;:69;;;::::1;::::0;::::1;::::0;;23380:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23318:42;23380:75:::0;;::::1;::::0;;;23468:62;:69;;;::::1;::::0;::::1;::::0;;23548:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23486:42;23548:75;::::0;;23636:62;:69;;;::::1;::::0;::::1;::::0;;23716:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23654:42;23716:75;::::0;;23804:62;:69;;;::::1;::::0;::::1;::::0;;23884:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23822:42;23884:75;::::0;;23972:62;:69;;;::::1;::::0;::::1;::::0;;24052:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23990:42;24052:75;::::0;;24140:62;:69;;;::::1;::::0;::::1;::::0;;24220:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24158:42;24220:75;::::0;;24308:69;;;::::1;::::0;::::1;::::0;;;24388:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;24476:62;:69;;;::::1;::::0;::::1;::::0;;24556:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24494:42;24556:75;::::0;;24644:62;:69;;;::::1;::::0;::::1;::::0;;24724:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24662:42;24724:75;::::0;;24812:62;:69;;;::::1;::::0;::::1;::::0;;24892:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24830:42;24892:75;::::0;;24980:62;:69;;;::::1;::::0;::::1;::::0;;25060:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24998:42;25060:75;::::0;;25148:62;:69;;;::::1;::::0;::::1;::::0;;25228:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25166:42;25228:75;::::0;;25316:62;:69;;;::::1;::::0;::::1;::::0;;25396:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25334:42;25396:75;::::0;;25484:62;:69;;;::::1;::::0;::::1;::::0;;25564:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25502:42;25564:75;::::0;;25652:62;:69;;;::::1;::::0;::::1;::::0;;25732:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25670:42;25732:75;::::0;;25820:62;:69;;;::::1;::::0;::::1;::::0;;25900:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25838:42;25900:75;::::0;;25988:62;:69;;;::::1;::::0;::::1;::::0;;26068:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;26006:42;26068:75;::::0;;26156:62;:69;;;::::1;::::0;::::1;::::0;;26236:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;26174:42;26236:75:::0;;::::1;::::0;;;26324:69;;;;::::1;::::0;::::1;::::0;;26404:75;;;;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;26492:14:0::1;:68:::0;;;-1:-1:-1;;;;;;26492:68:0;;::::1;;::::0;;18151:8417::o;17786:357::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;17863:13:::1;:28:::0;;;17914:2:::1;17902:11;:14:::0;;;17927:13:::1;:25:::0;-1:-1:-1;17963:7:0::1;:9:::0;17983:21:::1;:28:::0;;-1:-1:-1;;;;17983:28:0::1;-1:-1:-1::0;;;17983:28:0::1;::::0;;18022:11:::1;:18:::0;;-1:-1:-1;;18022:18:0::1;17983:28;18022:18;::::0;;18064:15:::1;18051:10;:28:::0;;;18104:31:::1;::::0;18123:11:::1;18104:31;:::i;:::-;18090:11;:45:::0;-1:-1:-1;17786:357:0:o;44252:102::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;44318:21:::1;:28:::0;;;::::1;;-1:-1:-1::0;;;44318:28:0::1;-1:-1:-1::0;;;;44318:28:0;;::::1;::::0;;;::::1;::::0;;44252:102::o;26667:87::-;26706:13;26739:7;26732:14;;;;;:::i;43522:107::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43597:11:::1;:24:::0;43522:107::o;28204:269::-;28297:4;28314:129;575:10;28337:7;28346:96;28385:15;28346:96;;;;;;;;;;;;;;;;;575:10;28346:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28346:34:0;;;;;;;;;;;;:38;:96::i;7079:305::-;7131:14;;-1:-1:-1;;;;;7131:14:0;7149:10;7131:28;7123:76;;;;-1:-1:-1;;;7123:76:0;;15371:2:1;7123:76:0;;;15353:21:1;15410:2;15390:18;;;15383:30;15449:34;15429:18;;;15422:62;-1:-1:-1;;;15500:18:1;;;15493:33;15543:19;;7123:76:0;15169:399:1;7123:76:0;7236:9;;7218:15;:27;7210:72;;;;-1:-1:-1;;;7210:72:0;;14245:2:1;7210:72:0;;;14227:21:1;14284:2;14264:18;;;14257:30;14323:33;14303:18;;;14296:61;14374:18;;7210:72:0;14043:355:1;7210:72:0;7327:14;;;7319:6;;7298:44;;-1:-1:-1;;;;;7327:14:0;;;;7319:6;;;;7298:44;;;7362:14;;;7353:23;;-1:-1:-1;;;;;;7353:23:0;-1:-1:-1;;;;;7362:14:0;;;7353:23;;;;;;7079:305::o;27162:167::-;27240:4;27257:42;575:10;27281:9;27292:6;27257:9;:42::i;6845:226::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;6926:6:::1;::::0;;;6909:23;;-1:-1:-1;;;;;;6909:23:0;;::::1;-1:-1:-1::0;;;;;6926:6:0;::::1;6909:23;::::0;;;6943:19:::1;::::0;;6985:22:::1;7003:4:::0;6985:15:::1;:22;:::i;:::-;6973:9;:34:::0;7060:1:::1;7044:6:::0;;7023:40:::1;::::0;-1:-1:-1;;;;;7044:6:0;;::::1;::::0;7023:40:::1;::::0;7060:1;;7023:40:::1;6845:226:::0;:::o;45050:188::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45125:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;45117:67;;;::::0;-1:-1:-1;;;45117:67:0;;10457:2:1;45117:67:0::1;::::0;::::1;10439:21:1::0;10496:2;10476:18;;;10469:30;10535:29;10515:18;;;10508:57;10582:18;;45117:67:0::1;10255:351:1::0;45117:67:0::1;-1:-1:-1::0;;;;;45195:27:0::1;45225:5;45195:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;45195:35:0::1;::::0;;45050:188::o;43089:133::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43173:14:::1;:41:::0;;-1:-1:-1;;;;;43173:41:0;;::::1;;;-1:-1:-1::0;;;;;;43173:41:0;;::::1;::::0;;;::::1;::::0;;43089:133::o;6397:244::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6486:22:0;::::1;6478:73;;;::::0;-1:-1:-1;;;6478:73:0;;7052:2:1;6478:73:0::1;::::0;::::1;7034:21:1::0;7091:2;7071:18;;;7064:30;7130:34;7110:18;;;7103:62;-1:-1:-1;;;7181:18:1;;;7174:36;7227:19;;6478:73:0::1;6850:402:1::0;6478:73:0::1;6588:6;::::0;;6567:38:::1;::::0;-1:-1:-1;;;;;6567:38:0;;::::1;::::0;6588:6;::::1;::::0;6567:38:::1;::::0;::::1;6616:6;:17:::0;;-1:-1:-1;;;;;;6616:17:0::1;-1:-1:-1::0;;;;;6616:17:0;;;::::1;::::0;;;::::1;::::0;;6397:244::o;44129:115::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;44208:13:::1;:28:::0;44129:115::o;29921:337::-;-1:-1:-1;;;;;30014:19:0;;30006:68;;;;-1:-1:-1;;;30006:68:0;;13840:2:1;30006:68:0;;;13822:21:1;13879:2;13859:18;;;13852:30;13918:34;13898:18;;;13891:62;-1:-1:-1;;;13969:18:1;;;13962:34;14013:19;;30006:68:0;13638:400:1;30006:68:0;-1:-1:-1;;;;;30093:21:0;;30085:68;;;;-1:-1:-1;;;30085:68:0;;7459:2:1;30085:68:0;;;7441:21:1;7498:2;7478:18;;;7471:30;7537:34;7517:18;;;7510:62;-1:-1:-1;;;7588:18:1;;;7581:32;7630:19;;30085:68:0;7257:398:1;30085:68:0;-1:-1:-1;;;;;30166:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30218:32;;16071:25:1;;;30218:32:0;;16044:18:1;30218:32:0;;;;;;;29921:337;;;:::o;30266:3816::-;-1:-1:-1;;;;;30397:20:0;;30389:70;;;;-1:-1:-1;;;30389:70:0;;13434:2:1;30389:70:0;;;13416:21:1;13473:2;13453:18;;;13446:30;13512:34;13492:18;;;13485:62;-1:-1:-1;;;13563:18:1;;;13556:35;13608:19;;30389:70:0;13232:401:1;30389:70:0;-1:-1:-1;;;;;30478:23:0;;30470:71;;;;-1:-1:-1;;;30470:71:0;;6237:2:1;30470:71:0;;;6219:21:1;6276:2;6256:18;;;6249:30;6315:34;6295:18;;;6288:62;-1:-1:-1;;;6366:18:1;;;6359:33;6409:19;;30470:71:0;6035:399:1;30470:71:0;30569:1;30560:6;:10;30552:64;;;;-1:-1:-1;;;30552:64:0;;13024:2:1;30552:64:0;;;13006:21:1;13063:2;13043:18;;;13036:30;13102:34;13082:18;;;13075:62;-1:-1:-1;;;13153:18:1;;;13146:39;13202:19;;30552:64:0;12822:405:1;30552:64:0;-1:-1:-1;;;;;30636:20:0;;;;;;:9;:20;;;;;;;;30635:21;30627:57;;;;-1:-1:-1;;;30627:57:0;;15775:2:1;30627:57:0;;;15757:21:1;15814:2;15794:18;;;15787:30;-1:-1:-1;;;15833:18:1;;;15826:53;15896:18;;30627:57:0;15573:347:1;30627:57:0;30714:10;30704:21;;;;:9;:21;;;;;;;;30703:22;30695:58;;;;-1:-1:-1;;;30695:58:0;;15775:2:1;30695:58:0;;;15757:21:1;15814:2;15794:18;;;15787:30;-1:-1:-1;;;15833:18:1;;;15826:53;15896:18;;30695:58:0;15573:347:1;30695:58:0;6215:7;6242:6;-1:-1:-1;;;;;30771:17:0;;;6242:6;;30771:17;;;;:41;;-1:-1:-1;6215:7:0;6242:6;-1:-1:-1;;;;;30792:20:0;;;6242:6;;30792:20;;30771:41;30768:631;;;30848:11;;;;;;;30843:361;;-1:-1:-1;;;;;30886:23:0;;30904:4;30886:23;;:53;;-1:-1:-1;;;;;;30913:26:0;;30934:4;30913:26;30886:53;:100;;;-1:-1:-1;6215:7:0;6242:6;-1:-1:-1;;;;;30960:26:0;;;6242:6;;30960:26;30886:100;:133;;;-1:-1:-1;6215:7:0;6242:6;-1:-1:-1;;;;;30990:29:0;;;6242:6;;30990:29;30886:133;:179;;;-1:-1:-1;;;;;;43044:27:0;;43020:4;43044:27;;;:18;:27;;;;;;;;31040:25;30886:211;;;-1:-1:-1;;;;;;43044:27:0;;43020:4;43044:27;;;:18;:27;;;;;;;;31069:28;30880:309;;31131:11;;;;;;;31123:46;;;;-1:-1:-1;;;31123:46:0;;8965:2:1;31123:46:0;;;8947:21:1;9004:2;8984:18;;;8977:30;-1:-1:-1;;;9023:18:1;;;9016:52;9085:18;;31123:46:0;8763:346:1;31123:46:0;31223:16;;;;31220:168;;;31273:10;31264:20;;;;:8;:20;;;;;:27;;;;;31260:113;;31339:14;;;;;;;;-1:-1:-1;31339:14:0;;;;;;;;;;31348:4;31339:14;;;;;;31325:10;31316:20;;:8;:20;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31316:37:0;;;;;;;;;;31260:113;31457:11;;-1:-1:-1;;;;;31447:21:0;;;31457:11;;31447:21;:60;;;;-1:-1:-1;31493:13:0;;-1:-1:-1;;;;;31472:35:0;;;31493:13;;;;;31472:35;;31447:60;:94;;;;-1:-1:-1;;;;;;31512:29:0;;;;;;:18;:29;;;;;;;;31511:30;31447:94;31444:906;;;31570:11;;;;;;;31562:48;;;;-1:-1:-1;;;31562:48:0;;14605:2:1;31562:48:0;;;14587:21:1;14644:2;14624:18;;;14617:30;14683:26;14663:18;;;14656:54;14727:18;;31562:48:0;14403:348:1;31562:48:0;31661:11;;31647:13;:25;31712:16;;;;31709:378;;;31770:15;31756:11;;:29;31753:315;;;31832:13;;31822:6;:23;;31814:32;;;;;;-1:-1:-1;;;;;31881:19:0;;;;;;:8;:19;;;;;:23;31907:15;-1:-1:-1;31873:88:0;;;;-1:-1:-1;;;31873:88:0;;8206:2:1;31873:88:0;;;8188:21:1;8245:2;8225:18;;;8218:30;8284:34;8264:18;;;8257:62;-1:-1:-1;;;8335:18:1;;;8328:32;8377:19;;31873:88:0;8004:398:1;31873:88:0;32014:30;:15;32033:10;32014:30;:::i;:::-;-1:-1:-1;;;;;31988:19:0;;;;;;:8;:19;;;;;:56;31753:315;32108:16;;;;32105:234;;;-1:-1:-1;;;;;32157:19:0;;;;;;:8;:19;;;;;:24;;;32184:15;-1:-1:-1;32149:90:0;;;;-1:-1:-1;;;32149:90:0;;10813:2:1;32149:90:0;;;10795:21:1;10852:2;10832:18;;;10825:30;10891:34;10871:18;;;10864:62;-1:-1:-1;;;10942:18:1;;;10935:33;10985:19;;32149:90:0;10611:399:1;32149:90:0;32289:30;:15;32308:10;32289:30;:::i;:::-;-1:-1:-1;;;;;32262:19:0;;;;;;:8;:19;;;;;:24;;:57;32105:234;32383:16;;-1:-1:-1;;;32383:16:0;;;;32382:17;:42;;;;-1:-1:-1;32403:21:0;;-1:-1:-1;;;32403:21:0;;;;32382:42;:70;;;;-1:-1:-1;32441:11:0;;-1:-1:-1;;;;;32428:24:0;;;32441:11;;32428:24;32382:70;32378:1375;;;32517:19;;;;32514:229;;;32561:16;32580:26;32591:14;;32580:6;:10;;:26;;;;:::i;:::-;32663:11;;32561:45;;-1:-1:-1;32640:48:0;;32653:34;;32680:6;;32653:22;;-1:-1:-1;;;;;32663:11:0;32653:9;:22::i;:::-;:26;;:34::i;:::-;32640:8;;:12;:48::i;:::-;32629:59;;32711:16;32718:8;32711:6;:16::i;:::-;32538:205;32514:229;32792:13;;32771:18;32911:24;32929:4;32911:9;:24::i;:::-;32880:55;-1:-1:-1;32954:24:0;;32951:96;;32999:32;33010:20;32999:10;:32::i;:::-;33228:14;;33116:21;;-1:-1:-1;;;33228:14:0;;;;:39;;;;;33256:11;;33246:6;:21;;33228:39;33224:415;;;33306:11;33320:2;33306:16;;33381:21;33405:89;33491:2;33405:81;33421:64;33429:55;33472:11;;33430:36;33464:1;;33431:27;33446:11;;33431:10;:14;;:27;;;;:::i;:::-;33430:33;;:36::i;:::-;33429:42;;:55::i;:::-;33421:3;;:7;:64::i;:::-;33405:11;;;:15;:81::i;:89::-;33381:113;;33578:13;33567:7;:24;33563:60;;33595:28;33609:13;33595;:28::i;:::-;33269:370;;33224:415;-1:-1:-1;;33715:13:0;:26;32378:1375;-1:-1:-1;;;;;33884:26:0;;33765:12;33884:26;;;:18;:26;;;;;;33780:4;;33884:26;;;:59;;-1:-1:-1;;;;;;33914:29:0;;;;;;:18;:29;;;;;;;;33884:59;33881:105;;;-1:-1:-1;33969:5:0;33881:105;34026:48;34041:6;34049:9;34059:6;34066:7;34026:14;:48::i;:::-;30378:3704;30266:3816;;;:::o;1886:192::-;1972:7;2008:12;2000:6;;;;1992:29;;;;-1:-1:-1;;;1992:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2032:9:0;2044:5;2048:1;2044;:5;:::i;:::-;2032:17;1886:192;-1:-1:-1;;;;;1886:192:0:o;41148:163::-;41189:7;41210:15;41227;41246:19;:17;:19::i;:::-;41209:56;;-1:-1:-1;41209:56:0;-1:-1:-1;41283:20:0;41209:56;;41283:11;:20::i;:::-;41276:27;;;;41148:163;:::o;2346:132::-;2404:7;2431:39;2435:1;2438;2431:39;;;;;;;;;;;;;;;;;:3;:39::i;1553:181::-;1611:7;;1643:5;1647:1;1643;:5;:::i;:::-;1631:17;;1672:1;1667;:6;;1659:46;;;;-1:-1:-1;;;1659:46:0;;8609:2:1;1659:46:0;;;8591:21:1;8648:2;8628:18;;;8621:30;8687:29;8667:18;;;8660:57;8734:18;;1659:46:0;8407:351:1;39946:419:0;40005:7;40014;40023;40032;40041;40050;40071:23;40096:12;40110:18;40132:20;40144:7;40132:11;:20::i;:::-;40070:82;;;;;;40164:15;40181:23;40206:12;40222:50;40234:7;40243:4;40249:10;40261;:8;:10::i;:::-;40222:11;:50::i;:::-;40163:109;;;;-1:-1:-1;40163:109:0;;-1:-1:-1;40323:15:0;;-1:-1:-1;40340:4:0;;-1:-1:-1;40346:10:0;;-1:-1:-1;39946:419:0;;-1:-1:-1;;;;;39946:419:0:o;1742:136::-;1800:7;1827:43;1831:1;1834;1827:43;;;;;;;;;;;;;;;;;:3;:43::i;2086:250::-;2144:7;2168:6;2164:47;;-1:-1:-1;2198:1:0;2191:8;;2164:47;2223:9;2235:5;2239:1;2235;:5;:::i;:::-;2223:17;-1:-1:-1;2268:1:0;2259:5;2263:1;2223:17;2259:5;:::i;:::-;:10;2251:56;;;;-1:-1:-1;;;2251:56:0;;12261:2:1;2251:56:0;;;12243:21:1;12300:2;12280:18;;;12273:30;12339:34;12319:18;;;12312:62;-1:-1:-1;;;12390:18:1;;;12383:31;12431:19;;2251:56:0;12059:397:1;34602:428:0;34677:11;;34702:23;;;34699:201;;;-1:-1:-1;34755:11:0;;34699:201;;;34799:2;34787:9;:14;34784:116;;;-1:-1:-1;34831:2:0;34784:116;;;-1:-1:-1;34879:9:0;34784:116;34913:17;:10;34928:1;34913:14;:17::i;:::-;:22;34910:66;;34952:12;;;;:::i;:::-;;;;34910:66;34996:13;:26;-1:-1:-1;34602:428:0:o;34090:346::-;17568:16;:23;;-1:-1:-1;;;;17568:23:0;-1:-1:-1;;;17568:23:0;;;34198:21:::1;34230:38;34247:20:::0;34230:16:::1;:38::i;:::-;34279:26;34308:41;:21;34334:14:::0;34308:25:::1;:41::i;:::-;34384:14;::::0;34279:70;;-1:-1:-1;34363:63:0::1;::::0;34384:14:::1;::::0;::::1;-1:-1:-1::0;;;;;34384:14:0::1;34400:25;34279:70:::0;34423:1:::1;34400:22;:25::i;:::-;34363:20;:63::i;:::-;-1:-1:-1::0;;17614:16:0;:24;;-1:-1:-1;;;;17614:24:0;;;-1:-1:-1;34090:346:0:o;34446:144::-;17568:16;:23;;-1:-1:-1;;;;17568:23:0;-1:-1:-1;;;17568:23:0;;;34520:10;;34516:67:::1;;34547:24;34564:6;34547:16;:24::i;:::-;-1:-1:-1::0;17614:16:0;:24;;-1:-1:-1;;;;17614:24:0;;;34446:144::o;36789:688::-;36900:7;36896:40;;36922:14;:12;:14::i;:::-;-1:-1:-1;;;;;36953:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;36977:22:0;;;;;;:11;:22;;;;;;;;36976:23;36953:46;36949:467;;;37016:48;37038:6;37046:9;37057:6;37016:21;:48::i;:::-;36949:467;;;-1:-1:-1;;;;;37087:19:0;;;;;;:11;:19;;;;;;;;37086:20;:46;;;;-1:-1:-1;;;;;;37110:22:0;;;;;;:11;:22;;;;;;;;37086:46;37082:334;;;37149:46;37169:6;37177:9;37188:6;37149:19;:46::i;37082:334::-;-1:-1:-1;;;;;37217:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;37240:22:0;;;;;;:11;:22;;;;;;;;37217:45;37213:203;;;37279:48;37301:6;37309:9;37320:6;37279:21;:48::i;37213:203::-;37360:44;37378:6;37386:9;37397:6;37360:17;:44::i;:::-;37432:7;37428:41;;37454:15;42877;;42867:7;:25;42919:21;;42903:13;:37;42823:125;41319:555;41416:7;;41452;;41369;;;;;41470:289;41494:9;:16;41490:20;;41470:289;;;41560:7;41536;:21;41544:9;41554:1;41544:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41544:12:0;41536:21;;;;;;;;;;;;;:31;;:66;;;41595:7;41571;:21;41579:9;41589:1;41579:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41579:12:0;41571:21;;;;;;;;;;;;;:31;41536:66;41532:97;;;41612:7;;41621;;41604:25;;;;;;;41319:555;;:::o;41532:97::-;41654:34;41666:7;:21;41674:9;41684:1;41674:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41674:12:0;41666:21;;;;;;;;;;;;;41654:7;;:11;:34::i;:::-;41644:44;;41713:34;41725:7;:21;41733:9;41743:1;41733:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41733:12:0;41725:21;;;;;;;;;;;;;41713:7;;:11;:34::i;:::-;41703:44;-1:-1:-1;41512:3:0;;;;:::i;:::-;;;;41470:289;;;-1:-1:-1;41795:7:0;;41783;;:20;;:11;:20::i;:::-;41773:7;:30;41769:61;;;41813:7;;41822;;41805:25;;;;;;41319:555;;:::o;41769:61::-;41849:7;;41858;;-1:-1:-1;41319:555:0;-1:-1:-1;41319:555:0:o;2486:278::-;2572:7;2607:12;2600:5;2592:28;;;;-1:-1:-1;;;2592:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2631:9:0;2643:5;2647:1;2643;:5;:::i;40373:330::-;40433:7;40442;40451;40471:12;40486:24;40502:7;40486:15;:24::i;:::-;40471:39;;40521:18;40542:30;40564:7;40542:21;:30::i;:::-;40521:51;-1:-1:-1;40583:23:0;40609:33;40521:51;40609:17;:7;40621:4;40609:11;:17::i;:::-;:21;;:33::i;:::-;40583:59;40678:4;;-1:-1:-1;40684:10:0;;-1:-1:-1;40373:330:0;;-1:-1:-1;;;40373:330:0:o;40711:429::-;40826:7;;;;40882:24;:7;40894:11;40882;:24::i;:::-;40864:42;-1:-1:-1;40917:12:0;40932:21;:4;40941:11;40932:8;:21::i;:::-;40917:36;-1:-1:-1;40964:18:0;40985:27;:10;41000:11;40985:14;:27::i;:::-;40964:48;-1:-1:-1;41023:23:0;41049:33;40964:48;41049:17;:7;41061:4;41049:11;:17::i;:33::-;41101:7;;;;-1:-1:-1;41127:4:0;;-1:-1:-1;40711:429:0;;-1:-1:-1;;;;;;;40711:429:0:o;2772:130::-;2830:7;2857:37;2861:1;2864;2857:37;;;;;;;;;;;;;;;;;:3;:37::i;35038:651::-;35187:16;;;35201:1;35187:16;;;;;;;;35163:21;;35187:16;;;;;;;;;;-1:-1:-1;35187:16:0;35163:40;;35232:4;35214;35219:1;35214:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;35214:23:0;;;-1:-1:-1;;;;;35214:23:0;;;;;35258:13;;;;;;;;;-1:-1:-1;;;;;35258:13:0;-1:-1:-1;;;;;35258:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35248:4;35253:1;35248:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;35248:30:0;;;:7;;;;;;;;;:30;35323:13;;35291:60;;35308:4;;35323:13;;;;35339:11;35291:8;:60::i;:::-;35390:13;;:238;;-1:-1:-1;;;35390:238:0;;:13;;;;-1:-1:-1;;;;;35390:13:0;;:64;;:238;;35469:11;;35495:1;;35539:4;;35566;;35602:15;;35390:238;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35646:35;35663:11;35676:4;35646:35;;;;;;;:::i;:::-;;;;;;;;35093:596;35038:651;:::o;43388:126::-;43480:26;;-1:-1:-1;;;;;43480:18:0;;;:26;;;;;43499:6;;43480:26;;;;43499:6;43480:18;:26;;;;;;;;;;;;;;;;;;;35697:567;35841:16;;;35855:1;35841:16;;;;;;;;35817:21;;35841:16;;;;;;;;;;-1:-1:-1;35841:16:0;35817:40;;35878:13;;;;;;;;;-1:-1:-1;;;;;35878:13:0;-1:-1:-1;;;;;35878:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35868:4;35873:1;35868:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;35868:30:0;;;-1:-1:-1;;;;;35868:30:0;;;;;35927:4;35909;35914:1;35909:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;35909:23:0;;;:7;;;;;;;;;:23;35971:13;;;;;;:64;36043:6;36065:1;36112:4;36131:11;36173:24;:15;36193:3;36173:19;:24::i;:::-;35971:237;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36226:30;36243:6;36251:4;36226:30;;;;;;;:::i;42581:234::-;42627:7;;:12;:34;;;;-1:-1:-1;42643:13:0;;:18;42627:34;42624:46;;;42581:234::o;42624:46::-;42700:7;;;42682:15;:25;42742:13;;;42718:21;:37;-1:-1:-1;42768:11:0;;;;42790:17;42581:234::o;38578:563::-;38681:15;38698:23;38723:12;38737:23;38762:12;38776:18;38798:19;38809:7;38798:10;:19::i;:::-;-1:-1:-1;;;;;38846:15:0;;;;;;:7;:15;;;;;;38680:137;;-1:-1:-1;38680:137:0;;-1:-1:-1;38680:137:0;;-1:-1:-1;38680:137:0;-1:-1:-1;38680:137:0;-1:-1:-1;38680:137:0;-1:-1:-1;38846:28:0;;38866:7;38846:19;:28::i;:::-;-1:-1:-1;;;;;38828:15:0;;;;;;:7;:15;;;;;;;;:46;;;;38903:7;:15;;;;:28;;38923:7;38903:19;:28::i;:::-;-1:-1:-1;;;;;38885:15:0;;;;;;;:7;:15;;;;;;:46;;;;38963:18;;;;;;;:39;;38986:15;38963:22;:39::i;:::-;-1:-1:-1;;;;;38942:18:0;;;;;;:7;:18;;;;;:60;39013:26;39028:10;39013:14;:26::i;:::-;39050:23;39062:4;39068;39050:11;:23::i;:::-;39106:9;-1:-1:-1;;;;;39089:44:0;39098:6;-1:-1:-1;;;;;39089:44:0;;39117:15;39089:44;;;;16071:25:1;;16059:2;16044:18;;15925:177;39089:44:0;;;;;;;;38669:472;;;;;;38578:563;;;:::o;37995:575::-;38096:15;38113:23;38138:12;38152:23;38177:12;38191:18;38213:19;38224:7;38213:10;:19::i;:::-;-1:-1:-1;;;;;38261:15:0;;;;;;:7;:15;;;;;;38095:137;;-1:-1:-1;38095:137:0;;-1:-1:-1;38095:137:0;;-1:-1:-1;38095:137:0;-1:-1:-1;38095:137:0;-1:-1:-1;38095:137:0;-1:-1:-1;38261:28:0;;38095:137;38261:19;:28::i;:::-;-1:-1:-1;;;;;38243:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;38321:18;;;;;:7;:18;;;;;:39;;38344:15;38321:22;:39::i;:::-;-1:-1:-1;;;;;38300:18:0;;;;;;:7;:18;;;;;;;;:60;;;;38392:7;:18;;;;:39;;38415:15;38392:22;:39::i;39149:634::-;39252:15;39269:23;39294:12;39308:23;39333:12;39347:18;39369:19;39380:7;39369:10;:19::i;:::-;-1:-1:-1;;;;;39417:15:0;;;;;;:7;:15;;;;;;39251:137;;-1:-1:-1;39251:137:0;;-1:-1:-1;39251:137:0;;-1:-1:-1;39251:137:0;-1:-1:-1;39251:137:0;-1:-1:-1;39251:137:0;-1:-1:-1;39417:28:0;;39437:7;39417:19;:28::i;:::-;-1:-1:-1;;;;;39399:15:0;;;;;;:7;:15;;;;;;;;:46;;;;39474:7;:15;;;;:28;;39494:7;39474:19;:28::i;37485:502::-;37584:15;37601:23;37626:12;37640:23;37665:12;37679:18;37701:19;37712:7;37701:10;:19::i;:::-;-1:-1:-1;;;;;37749:15:0;;;;;;:7;:15;;;;;;37583:137;;-1:-1:-1;37583:137:0;;-1:-1:-1;37583:137:0;;-1:-1:-1;37583:137:0;-1:-1:-1;37583:137:0;-1:-1:-1;37583:137:0;-1:-1:-1;37749:28:0;;37583:137;37749:19;:28::i;42245:154::-;42309:7;42336:55;42375:5;42336:20;42348:7;;42336;:11;;:20;;;;:::i;42407:166::-;42477:7;42504:61;42549:5;42504:26;42516:13;;42504:7;:11;;:26;;;;:::i;2910:166::-;2996:7;3032:12;3024:6;3016:29;;;;-1:-1:-1;;;3016:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3063:5:0;3067:1;3063;:5;:::i;:::-;3056:12;2910:166;-1:-1:-1;;;;2910:166:0:o;41882:355::-;41945:19;41968:10;:8;:10::i;:::-;41945:33;-1:-1:-1;41989:18:0;42010:27;:10;41945:33;42010:14;:27::i;:::-;42089:4;42073:22;;;;:7;:22;;;;;;41989:48;;-1:-1:-1;42073:38:0;;41989:48;42073:26;:38::i;:::-;42064:4;42048:22;;;;:7;:22;;;;;;;;:63;;;;42125:11;:26;;;;;;42122:107;;;42207:4;42191:22;;;;:7;:22;;;;;;:38;;42218:10;42191:26;:38::i;:::-;42182:4;42166:22;;;;:7;:22;;;;;:63;41934:303;;41882:355;:::o;39791:147::-;39869:7;;:17;;39881:4;39869:11;:17::i;:::-;39859:7;:27;39910:10;;:20;;39925:4;39910:14;:20::i;:::-;39897:10;:33;-1:-1:-1;;39791:147:0:o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:323::-;598:6;606;659:2;647:9;638:7;634:23;630:32;627:52;;;675:1;672;665:12;627:52;714:9;701:23;733:31;758:5;733:31;:::i;:::-;783:5;835:2;820:18;;;;807:32;;-1:-1:-1;;;522:323:1:o;850:388::-;918:6;926;979:2;967:9;958:7;954:23;950:32;947:52;;;995:1;992;985:12;947:52;1034:9;1021:23;1053:31;1078:5;1053:31;:::i;:::-;1103:5;-1:-1:-1;1160:2:1;1145:18;;1132:32;1173:33;1132:32;1173:33;:::i;:::-;1225:7;1215:17;;;850:388;;;;;:::o;1243:456::-;1320:6;1328;1336;1389:2;1377:9;1368:7;1364:23;1360:32;1357:52;;;1405:1;1402;1395:12;1357:52;1444:9;1431:23;1463:31;1488:5;1463:31;:::i;:::-;1513:5;-1:-1:-1;1570:2:1;1555:18;;1542:32;1583:33;1542:32;1583:33;:::i;:::-;1243:456;;1635:7;;-1:-1:-1;;;1689:2:1;1674:18;;;;1661:32;;1243:456::o;2024:241::-;2080:6;2133:2;2121:9;2112:7;2108:23;2104:32;2101:52;;;2149:1;2146;2139:12;2101:52;2188:9;2175:23;2207:28;2229:5;2207:28;:::i;2270:245::-;2337:6;2390:2;2378:9;2369:7;2365:23;2361:32;2358:52;;;2406:1;2403;2396:12;2358:52;2438:9;2432:16;2457:28;2479:5;2457:28;:::i;2520:180::-;2579:6;2632:2;2620:9;2611:7;2607:23;2603:32;2600:52;;;2648:1;2645;2638:12;2600:52;-1:-1:-1;2671:23:1;;2520:180;-1:-1:-1;2520:180:1:o;2705:309::-;2770:6;2778;2831:2;2819:9;2810:7;2806:23;2802:32;2799:52;;;2847:1;2844;2837:12;2799:52;2883:9;2870:23;2860:33;;2943:2;2932:9;2928:18;2915:32;2956:28;2978:5;2956:28;:::i;3019:461::-;3072:3;3110:5;3104:12;3137:6;3132:3;3125:19;3163:4;3192:2;3187:3;3183:12;3176:19;;3229:2;3222:5;3218:14;3250:1;3260:195;3274:6;3271:1;3268:13;3260:195;;;3339:13;;-1:-1:-1;;;;;3335:39:1;3323:52;;3395:12;;;;3430:15;;;;3371:1;3289:9;3260:195;;;-1:-1:-1;3471:3:1;;3019:461;-1:-1:-1;;;;;3019:461:1:o;4918:510::-;5189:6;5178:9;5171:25;5232:3;5227:2;5216:9;5212:18;5205:31;5152:4;5253:57;5305:3;5294:9;5290:19;5282:6;5253:57;:::i;:::-;-1:-1:-1;;;;;5346:32:1;;;;5341:2;5326:18;;5319:60;-1:-1:-1;5410:2:1;5395:18;5388:34;5245:65;4918:510;-1:-1:-1;;4918:510:1:o;5433:597::-;5545:4;5574:2;5603;5592:9;5585:21;5635:6;5629:13;5678:6;5673:2;5662:9;5658:18;5651:34;5703:1;5713:140;5727:6;5724:1;5721:13;5713:140;;;5822:14;;;5818:23;;5812:30;5788:17;;;5807:2;5784:26;5777:66;5742:10;;5713:140;;;5871:6;5868:1;5865:13;5862:91;;;5941:1;5936:2;5927:6;5916:9;5912:22;5908:31;5901:42;5862:91;-1:-1:-1;6014:2:1;5993:15;-1:-1:-1;;5989:29:1;5974:45;;;;6021:2;5970:54;;5433:597;-1:-1:-1;;;5433:597:1:o;12461:356::-;12663:2;12645:21;;;12682:18;;;12675:30;12741:34;12736:2;12721:18;;12714:62;12808:2;12793:18;;12461:356::o;16107:332::-;16314:6;16303:9;16296:25;16357:2;16352;16341:9;16337:18;16330:30;16277:4;16377:56;16429:2;16418:9;16414:18;16406:6;16377:56;:::i;16444:582::-;16743:6;16732:9;16725:25;16786:6;16781:2;16770:9;16766:18;16759:34;16829:3;16824:2;16813:9;16809:18;16802:31;16706:4;16850:57;16902:3;16891:9;16887:19;16879:6;16850:57;:::i;:::-;-1:-1:-1;;;;;16943:32:1;;;;16938:2;16923:18;;16916:60;-1:-1:-1;17007:3:1;16992:19;16985:35;16842:65;16444:582;-1:-1:-1;;;16444:582:1:o;17220:128::-;17260:3;17291:1;17287:6;17284:1;17281:13;17278:39;;;17297:18;;:::i;:::-;-1:-1:-1;17333:9:1;;17220:128::o;17353:120::-;17393:1;17419;17409:35;;17424:18;;:::i;:::-;-1:-1:-1;17458:9:1;;17353:120::o;17478:168::-;17518:7;17584:1;17580;17576:6;17572:14;17569:1;17566:21;17561:1;17554:9;17547:17;17543:45;17540:71;;;17591:18;;:::i;:::-;-1:-1:-1;17631:9:1;;17478:168::o;17651:125::-;17691:4;17719:1;17716;17713:8;17710:34;;;17724:18;;:::i;:::-;-1:-1:-1;17761:9:1;;17651:125::o;17781:380::-;17860:1;17856:12;;;;17903;;;17924:61;;17978:4;17970:6;17966:17;17956:27;;17924:61;18031:2;18023:6;18020:14;18000:18;17997:38;17994:161;;;18077:10;18072:3;18068:20;18065:1;18058:31;18112:4;18109:1;18102:15;18140:4;18137:1;18130:15;17994:161;;17781:380;;;:::o;18166:135::-;18205:3;-1:-1:-1;;18226:17:1;;18223:43;;;18246:18;;:::i;:::-;-1:-1:-1;18293:1:1;18282:13;;18166:135::o;18306:112::-;18338:1;18364;18354:35;;18369:18;;:::i;:::-;-1:-1:-1;18403:9:1;;18306:112::o;18423:127::-;18484:10;18479:3;18475:20;18472:1;18465:31;18515:4;18512:1;18505:15;18539:4;18536:1;18529:15;18555:127;18616:10;18611:3;18607:20;18604:1;18597:31;18647:4;18644:1;18637:15;18671:4;18668:1;18661:15;18687:127;18748:10;18743:3;18739:20;18736:1;18729:31;18779:4;18776:1;18769:15;18803:4;18800:1;18793:15;18819:127;18880:10;18875:3;18871:20;18868:1;18861:31;18911:4;18908:1;18901:15;18935:4;18932:1;18925:15;19083:131;-1:-1:-1;;;;;19158:31:1;;19148:42;;19138:70;;19204:1;19201;19194:12;19138:70;19083:131;:::o;19219:118::-;19305:5;19298:13;19291:21;19284:5;19281:32;19271:60;;19327:1;19324;19317:12
Swarm Source
ipfs://f56d43e2fe4498fbaf03b4dca35e502386e7b744cf494f8374ac1479c9c4c680
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.