ERC-20
Overview
Max Total Supply
100,000 WOLP
Holders
24
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2.485374482965126137 WOLPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Wolpertinger
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-21 */ /** https://www.wolpertinger.tech/ https://www.wolpertinger.tech/ https://www.wolpertinger.tech/ **/ // SPDX-License-Identifier: UNLICENSED pragma solidity >=0.8.10; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, _allowances[owner][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = _allowances[owner][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract Wolpertinger is ERC20, Ownable { using SafeMath for uint256; address private immutable pair; IUniswapV2Router02 private immutable router; address public marketingWallet; uint256 public maxTx; uint256 public maxWallet; mapping(address => bool) private excludedFromLimits; uint256 public buyFee = 8; uint256 public sellFee = 8; mapping(address => bool) private excludedFromFees; bool private swapping; mapping(address => uint256) private addressLastTxBlock; constructor() ERC20("Wolpertinger", "WOLP") { uint256 totalSupply = 100000 * 1e18; maxTx = 2500 * 1e18; maxWallet = 2500 * 1e18; marketingWallet = address(owner()); router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pair = IUniswapV2Factory(router.factory()).createPair( address(this), router.WETH() ); _excludeFromLimits(address(router), true); _excludeFromLimits(pair, true); _excludeFromLimits(owner(), true); _excludeFromLimits(address(this), true); _excludeFromLimits(address(0xdead), true); _excludeFromFees(owner(), true); _excludeFromFees(address(this), true); _excludeFromFees(address(0xdead), true); _approve(msg.sender, address(router), type(uint256).max); _mint(msg.sender, totalSupply); } receive() external payable {} function SetMaxTx(uint256 _maxTxAmount) external onlyOwner { require(_maxTxAmount * 1e18 >= maxTx, "Max tx can not be lowered"); maxTx = _maxTxAmount * 1e18; } function SetMaxWallet(uint256 _maxWalletAmount) external onlyOwner { require( _maxWalletAmount * 1e18 >= maxWallet, "Max wallet can not be lowered" ); maxWallet = _maxWalletAmount * 1e18; } function SetBuyFee(uint256 _fee) external onlyOwner { require(_fee <= 10, "Buy fee can not be set higher than 6%"); buyFee = _fee; } function SetSellFee(uint256 _fee) external onlyOwner { require(_fee <= 10, "Sell fee can not be set higher than 6%"); sellFee = _fee; } function _transfer( address from, address to, uint256 amount ) internal override { if (amount == 0) { super._transfer(from, to, 0); return; } if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) ) { _checkTx(to); if (_isBuy(from) && !_excludedFromLimits(to)) { _maxTxCheck(amount); _maxWalletCheck(to, amount); } else if (_isSell(to) && !_excludedFromLimits(from)) { _maxTxCheck(amount); } else if (!_excludedFromLimits(to)) { _maxWalletCheck(to, amount); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance > 0; if ( canSwap && !swapping && pair != from && !_excludedFromFees(from) && !_excludedFromFees(to) ) { swapping = true; _swapBack(); swapping = false; } bool takeFee = !swapping; if (_excludedFromFees(from) || _excludedFromFees(to)) { takeFee = false; } if (takeFee) { uint256 fees = 0; if (to == pair) { fees = amount.mul(sellFee).div(100); } else if (from == pair) { fees = amount.mul(buyFee).div(100); } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function _checkTx(address _to) internal { if (_to != owner() && _to != pair && _to != address(router)) { require( addressLastTxBlock[tx.origin] != block.number, "Only one purchase per block allowed" ); addressLastTxBlock[tx.origin] = block.number; } } function _swapBack() internal { uint256 contractBalance = balanceOf(address(this)); if (contractBalance == 0) { return; } _swapTokensForEth(contractBalance); } function _isSell(address _to) internal view returns (bool) { return _to == pair; } function _isBuy(address _from) internal view returns (bool) { return _from == pair; } function _excludeFromFees(address _addr, bool _doesBypass) internal { excludedFromFees[_addr] = _doesBypass; } function _excludedFromFees(address _addr) internal view returns (bool) { return excludedFromFees[_addr]; } function _excludeFromLimits(address _addr, bool _doesBypass) internal { excludedFromLimits[_addr] = _doesBypass; } function _excludedFromLimits(address _addr) internal view returns (bool) { return excludedFromLimits[_addr]; } function _maxTxCheck(uint256 _amount) internal view { require(_amount <= maxTx, "Max transaction limit reached"); } function _maxWalletCheck(address _addr, uint256 _amount) internal view { require( _amount + balanceOf(_addr) <= maxWallet, "Max wallet limit reached" ); } function _swapTokensForEth(uint256 _tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), _tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( _tokenAmount, 0, path, address(marketingWallet), block.timestamp ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"SetBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"SetMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"SetMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"SetSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526008600a556008600b553480156200001b57600080fd5b506040518060400160405280600c81526020017f576f6c70657274696e67657200000000000000000000000000000000000000008152506040518060400160405280600481526020017f574f4c50000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000a09291906200094f565b508060049080519060200190620000b99291906200094f565b505050620000dc620000d06200044b60201b60201c565b6200045360201b60201c565b600069152d02c7e14af6800000905068878678326eac90000060078190555068878678326eac9000006008819055506200011b6200051960201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060a05173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000217919062000a69565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060a05173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000281573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a7919062000a69565b6040518363ffffffff1660e01b8152600401620002c692919062000aac565b6020604051808303816000875af1158015620002e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030c919062000a69565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506200035460a05160016200054360201b60201c565b6200036960805160016200054360201b60201c565b6200038b6200037d6200051960201b60201c565b60016200054360201b60201c565b6200039e3060016200054360201b60201c565b620003b361dead60016200054360201b60201c565b620003d5620003c76200051960201b60201c565b60016200059e60201b60201c565b620003e83060016200059e60201b60201c565b620003fd61dead60016200059e60201b60201c565b620004323360a0517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620005f960201b60201c565b620004443382620007cc60201b60201c565b5062000db5565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156200066c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006639062000b60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620006df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006d69062000bf8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620007bf919062000c35565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200083f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008369062000ca2565b60405180910390fd5b62000853600083836200094560201b60201c565b806002600082825462000867919062000cf3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620008be919062000cf3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000925919062000c35565b60405180910390a362000941600083836200094a60201b60201c565b5050565b505050565b505050565b8280546200095d9062000d7f565b90600052602060002090601f016020900481019282620009815760008555620009cd565b82601f106200099c57805160ff1916838001178555620009cd565b82800160010185558215620009cd579182015b82811115620009cc578251825591602001919060010190620009af565b5b509050620009dc9190620009e0565b5090565b5b80821115620009fb576000816000905550600101620009e1565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a318262000a04565b9050919050565b62000a438162000a24565b811462000a4f57600080fd5b50565b60008151905062000a638162000a38565b92915050565b60006020828403121562000a825762000a81620009ff565b5b600062000a928482850162000a52565b91505092915050565b62000aa68162000a24565b82525050565b600060408201905062000ac3600083018562000a9b565b62000ad2602083018462000a9b565b9392505050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000b4860248362000ad9565b915062000b558262000aea565b604082019050919050565b6000602082019050818103600083015262000b7b8162000b39565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000be060228362000ad9565b915062000bed8262000b82565b604082019050919050565b6000602082019050818103600083015262000c138162000bd1565b9050919050565b6000819050919050565b62000c2f8162000c1a565b82525050565b600060208201905062000c4c600083018462000c24565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c8a601f8362000ad9565b915062000c978262000c52565b602082019050919050565b6000602082019050818103600083015262000cbd8162000c7b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d008262000c1a565b915062000d0d8362000c1a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d455762000d4462000cc4565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d9857607f821691505b6020821081141562000daf5762000dae62000d50565b5b50919050565b60805160a051612e9562000e136000396000818161193401528181611d5001528181611e310152611e580152600081816113390152818161141b0152818161149e015281816118dc01528181611a560152611ba80152612e956000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063a2c87c3e1161006f578063a2c87c3e14610459578063a457c2d714610482578063a9059cbb146104bf578063dd62ed3e146104fc578063f2fde38b14610539578063f8b45b05146105625761014b565b8063715018a61461036d5780637437681e1461038457806374ee7e99146103af57806375f0a874146103d85780638da5cb5b1461040357806395d89b411461042e5761014b565b8063313ce56711610108578063313ce5671461024b57806339509351146102765780634164afd9146102b357806347062402146102dc57806348d27f9c1461030757806370a08231146103305761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b857806323b872dd146101e35780632b14ca56146102205761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561058d565b6040516101729190611fa9565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612064565b61061f565b6040516101af91906120bf565b60405180910390f35b3480156101c457600080fd5b506101cd610642565b6040516101da91906120e9565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190612104565b61064c565b60405161021791906120bf565b60405180910390f35b34801561022c57600080fd5b5061023561067b565b60405161024291906120e9565b60405180910390f35b34801561025757600080fd5b50610260610681565b60405161026d9190612173565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612064565b61068a565b6040516102aa91906120bf565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d5919061218e565b610734565b005b3480156102e857600080fd5b506102f16107fe565b6040516102fe91906120e9565b60405180910390f35b34801561031357600080fd5b5061032e6004803603810190610329919061218e565b610804565b005b34801561033c57600080fd5b50610357600480360381019061035291906121bb565b6108f5565b60405161036491906120e9565b60405180910390f35b34801561037957600080fd5b5061038261093d565b005b34801561039057600080fd5b506103996109c5565b6040516103a691906120e9565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d1919061218e565b6109cb565b005b3480156103e457600080fd5b506103ed610a95565b6040516103fa91906121f7565b60405180910390f35b34801561040f57600080fd5b50610418610abb565b60405161042591906121f7565b60405180910390f35b34801561043a57600080fd5b50610443610ae5565b6040516104509190611fa9565b60405180910390f35b34801561046557600080fd5b50610480600480360381019061047b919061218e565b610b77565b005b34801561048e57600080fd5b506104a960048036038101906104a49190612064565b610c68565b6040516104b691906120bf565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190612064565b610d52565b6040516104f391906120bf565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e9190612212565b610d75565b60405161053091906120e9565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b91906121bb565b610dfc565b005b34801561056e57600080fd5b50610577610ef4565b60405161058491906120e9565b60405180910390f35b60606003805461059c90612281565b80601f01602080910402602001604051908101604052809291908181526020018280546105c890612281565b80156106155780601f106105ea57610100808354040283529160200191610615565b820191906000526020600020905b8154815290600101906020018083116105f857829003601f168201915b5050505050905090565b60008061062a610efa565b9050610637818585610f02565b600191505092915050565b6000600254905090565b600080610657610efa565b90506106648582856110cd565b61066f858585611159565b60019150509392505050565b600b5481565b60006012905090565b600080610695610efa565b9050610729818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461072491906122e2565b610f02565b600191505092915050565b61073c610efa565b73ffffffffffffffffffffffffffffffffffffffff1661075a610abb565b73ffffffffffffffffffffffffffffffffffffffff16146107b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a790612384565b60405180910390fd5b600a8111156107f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107eb90612416565b60405180910390fd5b80600a8190555050565b600a5481565b61080c610efa565b73ffffffffffffffffffffffffffffffffffffffff1661082a610abb565b73ffffffffffffffffffffffffffffffffffffffff1614610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087790612384565b60405180910390fd5b600754670de0b6b3a7640000826108979190612436565b10156108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cf906124dc565b60405180910390fd5b670de0b6b3a7640000816108ec9190612436565b60078190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610945610efa565b73ffffffffffffffffffffffffffffffffffffffff16610963610abb565b73ffffffffffffffffffffffffffffffffffffffff16146109b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b090612384565b60405180910390fd5b6109c36000611555565b565b60075481565b6109d3610efa565b73ffffffffffffffffffffffffffffffffffffffff166109f1610abb565b73ffffffffffffffffffffffffffffffffffffffff1614610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3e90612384565b60405180910390fd5b600a811115610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a829061256e565b60405180910390fd5b80600b8190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610af490612281565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2090612281565b8015610b6d5780601f10610b4257610100808354040283529160200191610b6d565b820191906000526020600020905b815481529060010190602001808311610b5057829003601f168201915b5050505050905090565b610b7f610efa565b73ffffffffffffffffffffffffffffffffffffffff16610b9d610abb565b73ffffffffffffffffffffffffffffffffffffffff1614610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea90612384565b60405180910390fd5b600854670de0b6b3a764000082610c0a9190612436565b1015610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c42906125da565b60405180910390fd5b670de0b6b3a764000081610c5f9190612436565b60088190555050565b600080610c73610efa565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d309061266c565b60405180910390fd5b610d468286868403610f02565b60019250505092915050565b600080610d5d610efa565b9050610d6a818585611159565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e04610efa565b73ffffffffffffffffffffffffffffffffffffffff16610e22610abb565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90612384565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf906126fe565b60405180910390fd5b610ef181611555565b50565b60085481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6990612790565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990612822565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110c091906120e9565b60405180910390a3505050565b60006110d98484610d75565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111535781811015611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c9061288e565b60405180910390fd5b6111528484848403610f02565b5b50505050565b60008114156111735761116e8383600061161b565b611550565b61117b610abb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156111e957506111b9610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156112225750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561125c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156112eb5761126a8261189c565b61127383611a52565b8015611285575061128382611aaa565b155b156112a25761129381611b00565b61129d8282611b48565b6112ea565b6112ab82611ba4565b80156112bd57506112bb83611aaa565b155b156112d0576112cb81611b00565b6112e9565b6112d982611aaa565b6112e8576112e78282611b48565b5b5b5b5b60006112f6306108f5565b9050600080821190508080156113195750600d60009054906101000a900460ff16155b801561137157508473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b8015611383575061138185611bfc565b155b8015611395575061139384611bfc565b155b156113d9576001600d60006101000a81548160ff0219169083151502179055506113bd611c52565b6000600d60006101000a81548160ff0219169083151502179055505b6000600d60009054906101000a900460ff161590506113f786611bfc565b80611407575061140685611bfc565b5b1561141157600090505b80156115415760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561149c576114956064611487600b5488611c7b90919063ffffffff16565b611c9190919063ffffffff16565b905061151c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561151b57611518606461150a600a5488611c7b90919063ffffffff16565b611c9190919063ffffffff16565b90505b5b60008111156115315761153087308361161b565b5b808561153d91906128ae565b9450505b61154c86868661161b565b5050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290612954565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f2906129e6565b60405180910390fd5b611706838383611ca7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390612a78565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461181f91906122e2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161188391906120e9565b60405180910390a3611896848484611cac565b50505050565b6118a4610abb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561192b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561198357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611a4f5743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190612b0a565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600754811115611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c90612b76565b60405180910390fd5b50565b600854611b54836108f5565b82611b5f91906122e2565b1115611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790612be2565b60405180910390fd5b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611c5d306108f5565b90506000811415611c6e5750611c79565b611c7781611cb1565b505b565b60008183611c899190612436565b905092915050565b60008183611c9f9190612c31565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115611cce57611ccd612c62565b5b604051908082528060200260200182016040528015611cfc5781602001602082028036833780820191505090505b5090503081600081518110611d1457611d13612c91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddd9190612cd5565b81600181518110611df157611df0612c91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e56307f000000000000000000000000000000000000000000000000000000000000000084610f02565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611eda959493929190612e05565b600060405180830381600087803b158015611ef457600080fd5b505af1158015611f08573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f4a578082015181840152602081019050611f2f565b83811115611f59576000848401525b50505050565b6000601f19601f8301169050919050565b6000611f7b82611f10565b611f858185611f1b565b9350611f95818560208601611f2c565b611f9e81611f5f565b840191505092915050565b60006020820190508181036000830152611fc38184611f70565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ffb82611fd0565b9050919050565b61200b81611ff0565b811461201657600080fd5b50565b60008135905061202881612002565b92915050565b6000819050919050565b6120418161202e565b811461204c57600080fd5b50565b60008135905061205e81612038565b92915050565b6000806040838503121561207b5761207a611fcb565b5b600061208985828601612019565b925050602061209a8582860161204f565b9150509250929050565b60008115159050919050565b6120b9816120a4565b82525050565b60006020820190506120d460008301846120b0565b92915050565b6120e38161202e565b82525050565b60006020820190506120fe60008301846120da565b92915050565b60008060006060848603121561211d5761211c611fcb565b5b600061212b86828701612019565b935050602061213c86828701612019565b925050604061214d8682870161204f565b9150509250925092565b600060ff82169050919050565b61216d81612157565b82525050565b60006020820190506121886000830184612164565b92915050565b6000602082840312156121a4576121a3611fcb565b5b60006121b28482850161204f565b91505092915050565b6000602082840312156121d1576121d0611fcb565b5b60006121df84828501612019565b91505092915050565b6121f181611ff0565b82525050565b600060208201905061220c60008301846121e8565b92915050565b6000806040838503121561222957612228611fcb565b5b600061223785828601612019565b925050602061224885828601612019565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061229957607f821691505b602082108114156122ad576122ac612252565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122ed8261202e565b91506122f88361202e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561232d5761232c6122b3565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061236e602083611f1b565b915061237982612338565b602082019050919050565b6000602082019050818103600083015261239d81612361565b9050919050565b7f427579206665652063616e206e6f74206265207365742068696768657220746860008201527f616e203625000000000000000000000000000000000000000000000000000000602082015250565b6000612400602583611f1b565b915061240b826123a4565b604082019050919050565b6000602082019050818103600083015261242f816123f3565b9050919050565b60006124418261202e565b915061244c8361202e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612485576124846122b3565b5b828202905092915050565b7f4d61782074782063616e206e6f74206265206c6f776572656400000000000000600082015250565b60006124c6601983611f1b565b91506124d182612490565b602082019050919050565b600060208201905081810360008301526124f5816124b9565b9050919050565b7f53656c6c206665652063616e206e6f742062652073657420686967686572207460008201527f68616e2036250000000000000000000000000000000000000000000000000000602082015250565b6000612558602683611f1b565b9150612563826124fc565b604082019050919050565b600060208201905081810360008301526125878161254b565b9050919050565b7f4d61782077616c6c65742063616e206e6f74206265206c6f7765726564000000600082015250565b60006125c4601d83611f1b565b91506125cf8261258e565b602082019050919050565b600060208201905081810360008301526125f3816125b7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612656602583611f1b565b9150612661826125fa565b604082019050919050565b6000602082019050818103600083015261268581612649565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006126e8602683611f1b565b91506126f38261268c565b604082019050919050565b60006020820190508181036000830152612717816126db565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061277a602483611f1b565b91506127858261271e565b604082019050919050565b600060208201905081810360008301526127a98161276d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061280c602283611f1b565b9150612817826127b0565b604082019050919050565b6000602082019050818103600083015261283b816127ff565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612878601d83611f1b565b915061288382612842565b602082019050919050565b600060208201905081810360008301526128a78161286b565b9050919050565b60006128b98261202e565b91506128c48361202e565b9250828210156128d7576128d66122b3565b5b828203905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061293e602583611f1b565b9150612949826128e2565b604082019050919050565b6000602082019050818103600083015261296d81612931565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006129d0602383611f1b565b91506129db82612974565b604082019050919050565b600060208201905081810360008301526129ff816129c3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a62602683611f1b565b9150612a6d82612a06565b604082019050919050565b60006020820190508181036000830152612a9181612a55565b9050919050565b7f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f60008201527f7765640000000000000000000000000000000000000000000000000000000000602082015250565b6000612af4602383611f1b565b9150612aff82612a98565b604082019050919050565b60006020820190508181036000830152612b2381612ae7565b9050919050565b7f4d6178207472616e73616374696f6e206c696d69742072656163686564000000600082015250565b6000612b60601d83611f1b565b9150612b6b82612b2a565b602082019050919050565b60006020820190508181036000830152612b8f81612b53565b9050919050565b7f4d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b6000612bcc601883611f1b565b9150612bd782612b96565b602082019050919050565b60006020820190508181036000830152612bfb81612bbf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c3c8261202e565b9150612c478361202e565b925082612c5757612c56612c02565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ccf81612002565b92915050565b600060208284031215612ceb57612cea611fcb565b5b6000612cf984828501612cc0565b91505092915050565b6000819050919050565b6000819050919050565b6000612d31612d2c612d2784612d02565b612d0c565b61202e565b9050919050565b612d4181612d16565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d7c81611ff0565b82525050565b6000612d8e8383612d73565b60208301905092915050565b6000602082019050919050565b6000612db282612d47565b612dbc8185612d52565b9350612dc783612d63565b8060005b83811015612df8578151612ddf8882612d82565b9750612dea83612d9a565b925050600181019050612dcb565b5085935050505092915050565b600060a082019050612e1a60008301886120da565b612e276020830187612d38565b8181036040830152612e398186612da7565b9050612e4860608301856121e8565b612e5560808301846120da565b969550505050505056fea2646970667358221220fa35c1e09d9e36c76c9bc29c666a5a3d8d5a4beceb7835043d1027c6221f02f164736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106101445760003560e01c8063715018a6116100b6578063a2c87c3e1161006f578063a2c87c3e14610459578063a457c2d714610482578063a9059cbb146104bf578063dd62ed3e146104fc578063f2fde38b14610539578063f8b45b05146105625761014b565b8063715018a61461036d5780637437681e1461038457806374ee7e99146103af57806375f0a874146103d85780638da5cb5b1461040357806395d89b411461042e5761014b565b8063313ce56711610108578063313ce5671461024b57806339509351146102765780634164afd9146102b357806347062402146102dc57806348d27f9c1461030757806370a08231146103305761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b857806323b872dd146101e35780632b14ca56146102205761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561058d565b6040516101729190611fa9565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612064565b61061f565b6040516101af91906120bf565b60405180910390f35b3480156101c457600080fd5b506101cd610642565b6040516101da91906120e9565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190612104565b61064c565b60405161021791906120bf565b60405180910390f35b34801561022c57600080fd5b5061023561067b565b60405161024291906120e9565b60405180910390f35b34801561025757600080fd5b50610260610681565b60405161026d9190612173565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612064565b61068a565b6040516102aa91906120bf565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d5919061218e565b610734565b005b3480156102e857600080fd5b506102f16107fe565b6040516102fe91906120e9565b60405180910390f35b34801561031357600080fd5b5061032e6004803603810190610329919061218e565b610804565b005b34801561033c57600080fd5b50610357600480360381019061035291906121bb565b6108f5565b60405161036491906120e9565b60405180910390f35b34801561037957600080fd5b5061038261093d565b005b34801561039057600080fd5b506103996109c5565b6040516103a691906120e9565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d1919061218e565b6109cb565b005b3480156103e457600080fd5b506103ed610a95565b6040516103fa91906121f7565b60405180910390f35b34801561040f57600080fd5b50610418610abb565b60405161042591906121f7565b60405180910390f35b34801561043a57600080fd5b50610443610ae5565b6040516104509190611fa9565b60405180910390f35b34801561046557600080fd5b50610480600480360381019061047b919061218e565b610b77565b005b34801561048e57600080fd5b506104a960048036038101906104a49190612064565b610c68565b6040516104b691906120bf565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e19190612064565b610d52565b6040516104f391906120bf565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e9190612212565b610d75565b60405161053091906120e9565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b91906121bb565b610dfc565b005b34801561056e57600080fd5b50610577610ef4565b60405161058491906120e9565b60405180910390f35b60606003805461059c90612281565b80601f01602080910402602001604051908101604052809291908181526020018280546105c890612281565b80156106155780601f106105ea57610100808354040283529160200191610615565b820191906000526020600020905b8154815290600101906020018083116105f857829003601f168201915b5050505050905090565b60008061062a610efa565b9050610637818585610f02565b600191505092915050565b6000600254905090565b600080610657610efa565b90506106648582856110cd565b61066f858585611159565b60019150509392505050565b600b5481565b60006012905090565b600080610695610efa565b9050610729818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461072491906122e2565b610f02565b600191505092915050565b61073c610efa565b73ffffffffffffffffffffffffffffffffffffffff1661075a610abb565b73ffffffffffffffffffffffffffffffffffffffff16146107b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a790612384565b60405180910390fd5b600a8111156107f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107eb90612416565b60405180910390fd5b80600a8190555050565b600a5481565b61080c610efa565b73ffffffffffffffffffffffffffffffffffffffff1661082a610abb565b73ffffffffffffffffffffffffffffffffffffffff1614610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087790612384565b60405180910390fd5b600754670de0b6b3a7640000826108979190612436565b10156108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cf906124dc565b60405180910390fd5b670de0b6b3a7640000816108ec9190612436565b60078190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610945610efa565b73ffffffffffffffffffffffffffffffffffffffff16610963610abb565b73ffffffffffffffffffffffffffffffffffffffff16146109b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b090612384565b60405180910390fd5b6109c36000611555565b565b60075481565b6109d3610efa565b73ffffffffffffffffffffffffffffffffffffffff166109f1610abb565b73ffffffffffffffffffffffffffffffffffffffff1614610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3e90612384565b60405180910390fd5b600a811115610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a829061256e565b60405180910390fd5b80600b8190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610af490612281565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2090612281565b8015610b6d5780601f10610b4257610100808354040283529160200191610b6d565b820191906000526020600020905b815481529060010190602001808311610b5057829003601f168201915b5050505050905090565b610b7f610efa565b73ffffffffffffffffffffffffffffffffffffffff16610b9d610abb565b73ffffffffffffffffffffffffffffffffffffffff1614610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea90612384565b60405180910390fd5b600854670de0b6b3a764000082610c0a9190612436565b1015610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c42906125da565b60405180910390fd5b670de0b6b3a764000081610c5f9190612436565b60088190555050565b600080610c73610efa565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d309061266c565b60405180910390fd5b610d468286868403610f02565b60019250505092915050565b600080610d5d610efa565b9050610d6a818585611159565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e04610efa565b73ffffffffffffffffffffffffffffffffffffffff16610e22610abb565b73ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90612384565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf906126fe565b60405180910390fd5b610ef181611555565b50565b60085481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6990612790565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990612822565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110c091906120e9565b60405180910390a3505050565b60006110d98484610d75565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111535781811015611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c9061288e565b60405180910390fd5b6111528484848403610f02565b5b50505050565b60008114156111735761116e8383600061161b565b611550565b61117b610abb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156111e957506111b9610abb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156112225750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561125c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156112eb5761126a8261189c565b61127383611a52565b8015611285575061128382611aaa565b155b156112a25761129381611b00565b61129d8282611b48565b6112ea565b6112ab82611ba4565b80156112bd57506112bb83611aaa565b155b156112d0576112cb81611b00565b6112e9565b6112d982611aaa565b6112e8576112e78282611b48565b5b5b5b5b60006112f6306108f5565b9050600080821190508080156113195750600d60009054906101000a900460ff16155b801561137157508473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000d72c368cce4a02d4f37c61256a7e8021afe4be6073ffffffffffffffffffffffffffffffffffffffff1614155b8015611383575061138185611bfc565b155b8015611395575061139384611bfc565b155b156113d9576001600d60006101000a81548160ff0219169083151502179055506113bd611c52565b6000600d60006101000a81548160ff0219169083151502179055505b6000600d60009054906101000a900460ff161590506113f786611bfc565b80611407575061140685611bfc565b5b1561141157600090505b80156115415760007f000000000000000000000000d72c368cce4a02d4f37c61256a7e8021afe4be6073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561149c576114956064611487600b5488611c7b90919063ffffffff16565b611c9190919063ffffffff16565b905061151c565b7f000000000000000000000000d72c368cce4a02d4f37c61256a7e8021afe4be6073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561151b57611518606461150a600a5488611c7b90919063ffffffff16565b611c9190919063ffffffff16565b90505b5b60008111156115315761153087308361161b565b5b808561153d91906128ae565b9450505b61154c86868661161b565b5050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168290612954565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f2906129e6565b60405180910390fd5b611706838383611ca7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178390612a78565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461181f91906122e2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161188391906120e9565b60405180910390a3611896848484611cac565b50505050565b6118a4610abb565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561192b57507f000000000000000000000000d72c368cce4a02d4f37c61256a7e8021afe4be6073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561198357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611a4f5743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0190612b0a565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b60007f000000000000000000000000d72c368cce4a02d4f37c61256a7e8021afe4be6073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600754811115611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c90612b76565b60405180910390fd5b50565b600854611b54836108f5565b82611b5f91906122e2565b1115611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790612be2565b60405180910390fd5b5050565b60007f000000000000000000000000d72c368cce4a02d4f37c61256a7e8021afe4be6073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611c5d306108f5565b90506000811415611c6e5750611c79565b611c7781611cb1565b505b565b60008183611c899190612436565b905092915050565b60008183611c9f9190612c31565b905092915050565b505050565b505050565b6000600267ffffffffffffffff811115611cce57611ccd612c62565b5b604051908082528060200260200182016040528015611cfc5781602001602082028036833780820191505090505b5090503081600081518110611d1457611d13612c91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddd9190612cd5565b81600181518110611df157611df0612c91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e56307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610f02565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611eda959493929190612e05565b600060405180830381600087803b158015611ef457600080fd5b505af1158015611f08573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f4a578082015181840152602081019050611f2f565b83811115611f59576000848401525b50505050565b6000601f19601f8301169050919050565b6000611f7b82611f10565b611f858185611f1b565b9350611f95818560208601611f2c565b611f9e81611f5f565b840191505092915050565b60006020820190508181036000830152611fc38184611f70565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ffb82611fd0565b9050919050565b61200b81611ff0565b811461201657600080fd5b50565b60008135905061202881612002565b92915050565b6000819050919050565b6120418161202e565b811461204c57600080fd5b50565b60008135905061205e81612038565b92915050565b6000806040838503121561207b5761207a611fcb565b5b600061208985828601612019565b925050602061209a8582860161204f565b9150509250929050565b60008115159050919050565b6120b9816120a4565b82525050565b60006020820190506120d460008301846120b0565b92915050565b6120e38161202e565b82525050565b60006020820190506120fe60008301846120da565b92915050565b60008060006060848603121561211d5761211c611fcb565b5b600061212b86828701612019565b935050602061213c86828701612019565b925050604061214d8682870161204f565b9150509250925092565b600060ff82169050919050565b61216d81612157565b82525050565b60006020820190506121886000830184612164565b92915050565b6000602082840312156121a4576121a3611fcb565b5b60006121b28482850161204f565b91505092915050565b6000602082840312156121d1576121d0611fcb565b5b60006121df84828501612019565b91505092915050565b6121f181611ff0565b82525050565b600060208201905061220c60008301846121e8565b92915050565b6000806040838503121561222957612228611fcb565b5b600061223785828601612019565b925050602061224885828601612019565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061229957607f821691505b602082108114156122ad576122ac612252565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122ed8261202e565b91506122f88361202e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561232d5761232c6122b3565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061236e602083611f1b565b915061237982612338565b602082019050919050565b6000602082019050818103600083015261239d81612361565b9050919050565b7f427579206665652063616e206e6f74206265207365742068696768657220746860008201527f616e203625000000000000000000000000000000000000000000000000000000602082015250565b6000612400602583611f1b565b915061240b826123a4565b604082019050919050565b6000602082019050818103600083015261242f816123f3565b9050919050565b60006124418261202e565b915061244c8361202e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612485576124846122b3565b5b828202905092915050565b7f4d61782074782063616e206e6f74206265206c6f776572656400000000000000600082015250565b60006124c6601983611f1b565b91506124d182612490565b602082019050919050565b600060208201905081810360008301526124f5816124b9565b9050919050565b7f53656c6c206665652063616e206e6f742062652073657420686967686572207460008201527f68616e2036250000000000000000000000000000000000000000000000000000602082015250565b6000612558602683611f1b565b9150612563826124fc565b604082019050919050565b600060208201905081810360008301526125878161254b565b9050919050565b7f4d61782077616c6c65742063616e206e6f74206265206c6f7765726564000000600082015250565b60006125c4601d83611f1b565b91506125cf8261258e565b602082019050919050565b600060208201905081810360008301526125f3816125b7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612656602583611f1b565b9150612661826125fa565b604082019050919050565b6000602082019050818103600083015261268581612649565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006126e8602683611f1b565b91506126f38261268c565b604082019050919050565b60006020820190508181036000830152612717816126db565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061277a602483611f1b565b91506127858261271e565b604082019050919050565b600060208201905081810360008301526127a98161276d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061280c602283611f1b565b9150612817826127b0565b604082019050919050565b6000602082019050818103600083015261283b816127ff565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612878601d83611f1b565b915061288382612842565b602082019050919050565b600060208201905081810360008301526128a78161286b565b9050919050565b60006128b98261202e565b91506128c48361202e565b9250828210156128d7576128d66122b3565b5b828203905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061293e602583611f1b565b9150612949826128e2565b604082019050919050565b6000602082019050818103600083015261296d81612931565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006129d0602383611f1b565b91506129db82612974565b604082019050919050565b600060208201905081810360008301526129ff816129c3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a62602683611f1b565b9150612a6d82612a06565b604082019050919050565b60006020820190508181036000830152612a9181612a55565b9050919050565b7f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f60008201527f7765640000000000000000000000000000000000000000000000000000000000602082015250565b6000612af4602383611f1b565b9150612aff82612a98565b604082019050919050565b60006020820190508181036000830152612b2381612ae7565b9050919050565b7f4d6178207472616e73616374696f6e206c696d69742072656163686564000000600082015250565b6000612b60601d83611f1b565b9150612b6b82612b2a565b602082019050919050565b60006020820190508181036000830152612b8f81612b53565b9050919050565b7f4d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b6000612bcc601883611f1b565b9150612bd782612b96565b602082019050919050565b60006020820190508181036000830152612bfb81612bbf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c3c8261202e565b9150612c478361202e565b925082612c5757612c56612c02565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ccf81612002565b92915050565b600060208284031215612ceb57612cea611fcb565b5b6000612cf984828501612cc0565b91505092915050565b6000819050919050565b6000819050919050565b6000612d31612d2c612d2784612d02565b612d0c565b61202e565b9050919050565b612d4181612d16565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d7c81611ff0565b82525050565b6000612d8e8383612d73565b60208301905092915050565b6000602082019050919050565b6000612db282612d47565b612dbc8185612d52565b9350612dc783612d63565b8060005b83811015612df8578151612ddf8882612d82565b9750612dea83612d9a565b925050600181019050612dcb565b5085935050505092915050565b600060a082019050612e1a60008301886120da565b612e276020830187612d38565b8181036040830152612e398186612da7565b9050612e4860608301856121e8565b612e5560808301846120da565b969550505050505056fea2646970667358221220fa35c1e09d9e36c76c9bc29c666a5a3d8d5a4beceb7835043d1027c6221f02f164736f6c634300080a0033
Deployed Bytecode Sourcemap
20111:6224:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14806:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15879:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15127:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16129:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20473:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15026:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16432:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22066:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20441:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21621:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15243:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12848:103;;;;;;;;;;;;;:::i;:::-;;20321:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22229:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20282:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12625:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14914:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21811:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16712:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15428:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15670:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12959:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20348:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14806:100;14860:13;14893:5;14886:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14806:100;:::o;15879:242::-;15998:4;16020:13;16036:12;:10;:12::i;:::-;16020:28;;16059:32;16068:5;16075:7;16084:6;16059:8;:32::i;:::-;16109:4;16102:11;;;15879:242;;;;:::o;15127:108::-;15188:7;15215:12;;15208:19;;15127:108;:::o;16129:295::-;16260:4;16277:15;16295:12;:10;:12::i;:::-;16277:30;;16318:38;16334:4;16340:7;16349:6;16318:15;:38::i;:::-;16367:27;16377:4;16383:2;16387:6;16367:9;:27::i;:::-;16412:4;16405:11;;;16129:295;;;;;:::o;20473:26::-;;;;:::o;15026:93::-;15084:5;15109:2;15102:9;;15026:93;:::o;16432:272::-;16547:4;16569:13;16585:12;:10;:12::i;:::-;16569:28;;16608:66;16617:5;16624:7;16663:10;16633:11;:18;16645:5;16633:18;;;;;;;;;;;;;;;:27;16652:7;16633:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;16608:8;:66::i;:::-;16692:4;16685:11;;;16432:272;;;;:::o;22066:155::-;12771:12;:10;:12::i;:::-;12760:23;;:7;:5;:7::i;:::-;:23;;;12752:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22145:2:::1;22137:4;:10;;22129:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22209:4;22200:6;:13;;;;22066:155:::0;:::o;20441:25::-;;;;:::o;21621:182::-;12771:12;:10;:12::i;:::-;12760:23;;:7;:5;:7::i;:::-;:23;;;12752:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21722:5:::1;;21714:4;21699:12;:19;;;;:::i;:::-;:28;;21691:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21791:4;21776:12;:19;;;;:::i;:::-;21768:5;:27;;;;21621:182:::0;:::o;15243:177::-;15362:7;15394:9;:18;15404:7;15394:18;;;;;;;;;;;;;;;;15387:25;;15243:177;;;:::o;12848:103::-;12771:12;:10;:12::i;:::-;12760:23;;:7;:5;:7::i;:::-;:23;;;12752:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12913:30:::1;12940:1;12913:18;:30::i;:::-;12848:103::o:0;20321:20::-;;;;:::o;22229:158::-;12771:12;:10;:12::i;:::-;12760:23;;:7;:5;:7::i;:::-;:23;;;12752:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22309:2:::1;22301:4;:10;;22293:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22375:4;22365:7;:14;;;;22229:158:::0;:::o;20282:30::-;;;;;;;;;;;;;:::o;12625:87::-;12671:7;12698:6;;;;;;;;;;;12691:13;;12625:87;:::o;14914:104::-;14970:13;15003:7;14996:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14914:104;:::o;21811:247::-;12771:12;:10;:12::i;:::-;12760:23;;:7;:5;:7::i;:::-;:23;;;12752:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21938:9:::1;;21930:4;21911:16;:23;;;;:::i;:::-;:36;;21889:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;22046:4;22027:16;:23;;;;:::i;:::-;22015:9;:35;;;;21811:247:::0;:::o;16712:507::-;16832:4;16854:13;16870:12;:10;:12::i;:::-;16854:28;;16893:24;16920:11;:18;16932:5;16920:18;;;;;;;;;;;;;;;:27;16939:7;16920:27;;;;;;;;;;;;;;;;16893:54;;17000:15;16980:16;:35;;16958:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;17116:60;17125:5;17132:7;17160:15;17141:16;:34;17116:8;:60::i;:::-;17207:4;17200:11;;;;16712:507;;;;:::o;15428:234::-;15543:4;15565:13;15581:12;:10;:12::i;:::-;15565:28;;15604;15614:5;15621:2;15625:6;15604:9;:28::i;:::-;15650:4;15643:11;;;15428:234;;;;:::o;15670:201::-;15804:7;15836:11;:18;15848:5;15836:18;;;;;;;;;;;;;;;:27;15855:7;15836:27;;;;;;;;;;;;;;;;15829:34;;15670:201;;;;:::o;12959:238::-;12771:12;:10;:12::i;:::-;12760:23;;:7;:5;:7::i;:::-;:23;;;12752:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13082:1:::1;13062:22;;:8;:22;;;;13040:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;13161:28;13180:8;13161:18;:28::i;:::-;12959:238:::0;:::o;20348:24::-;;;;:::o;12146:98::-;12199:7;12226:10;12219:17;;12146:98;:::o;18949:380::-;19102:1;19085:19;;:5;:19;;;;19077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19183:1;19164:21;;:7;:21;;;;19156:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19267:6;19237:11;:18;19249:5;19237:18;;;;;;;;;;;;;;;:27;19256:7;19237:27;;;;;;;;;;;;;;;:36;;;;19305:7;19289:32;;19298:5;19289:32;;;19314:6;19289:32;;;;;;:::i;:::-;;;;;;;;18949:380;;;:::o;19337:502::-;19472:24;19499:25;19509:5;19516:7;19499:9;:25::i;:::-;19472:52;;19559:17;19539:16;:37;19535:297;;19639:6;19619:16;:26;;19593:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;19754:51;19763:5;19770:7;19798:6;19779:16;:25;19754:8;:51::i;:::-;19535:297;19461:378;19337:502;;;:::o;22395:1798::-;22533:1;22523:6;:11;22519:93;;;22551:28;22567:4;22573:2;22577:1;22551:15;:28::i;:::-;22594:7;;22519:93;22650:7;:5;:7::i;:::-;22642:15;;:4;:15;;;;:45;;;;;22680:7;:5;:7::i;:::-;22674:13;;:2;:13;;;;22642:45;:78;;;;;22718:1;22704:16;;:2;:16;;;;22642:78;:116;;;;;22751:6;22737:21;;:2;:21;;;;22642:116;22624:552;;;22785:12;22794:2;22785:8;:12::i;:::-;22818;22825:4;22818:6;:12::i;:::-;:40;;;;;22835:23;22855:2;22835:19;:23::i;:::-;22834:24;22818:40;22814:351;;;22879:19;22891:6;22879:11;:19::i;:::-;22917:27;22933:2;22937:6;22917:15;:27::i;:::-;22814:351;;;22970:11;22978:2;22970:7;:11::i;:::-;:41;;;;;22986:25;23006:4;22986:19;:25::i;:::-;22985:26;22970:41;22966:199;;;23032:19;23044:6;23032:11;:19::i;:::-;22966:199;;;23078:23;23098:2;23078:19;:23::i;:::-;23073:92;;23122:27;23138:2;23142:6;23122:15;:27::i;:::-;23073:92;22966:199;22814:351;22624:552;23188:28;23219:24;23237:4;23219:9;:24::i;:::-;23188:55;;23254:12;23292:1;23269:20;:24;23254:39;;23324:7;:33;;;;;23349:8;;;;;;;;;;;23348:9;23324:33;:62;;;;;23382:4;23374:12;;:4;:12;;;;23324:62;:103;;;;;23404:23;23422:4;23404:17;:23::i;:::-;23403:24;23324:103;:142;;;;;23445:21;23463:2;23445:17;:21::i;:::-;23444:22;23324:142;23306:275;;;23504:4;23493:8;;:15;;;;;;;;;;;;;;;;;;23525:11;:9;:11::i;:::-;23564:5;23553:8;;:16;;;;;;;;;;;;;;;;;;23306:275;23593:12;23609:8;;;;;;;;;;;23608:9;23593:24;;23634:23;23652:4;23634:17;:23::i;:::-;:48;;;;23661:21;23679:2;23661:17;:21::i;:::-;23634:48;23630:96;;;23709:5;23699:15;;23630:96;23742:7;23738:402;;;23766:12;23809:4;23803:10;;:2;:10;;;23799:192;;;23841:28;23865:3;23841:19;23852:7;;23841:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;23834:35;;23799:192;;;23916:4;23908:12;;:4;:12;;;23904:87;;;23948:27;23971:3;23948:18;23959:6;;23948;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;23941:34;;23904:87;23799:192;24018:1;24011:4;:8;24007:91;;;24040:42;24056:4;24070;24077;24040:15;:42::i;:::-;24007:91;24124:4;24114:14;;;;;:::i;:::-;;;23751:389;23738:402;24152:33;24168:4;24174:2;24178:6;24152:15;:33::i;:::-;22508:1685;;;22395:1798;;;;:::o;13205:191::-;13279:16;13298:6;;;;;;;;;;;13279:25;;13324:8;13315:6;;:17;;;;;;;;;;;;;;;;;;13379:8;13348:40;;13369:8;13348:40;;;;;;;;;;;;13268:128;13205:191;:::o;17227:708::-;17374:1;17358:18;;:4;:18;;;;17350:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17451:1;17437:16;;:2;:16;;;;17429:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17506:38;17527:4;17533:2;17537:6;17506:20;:38::i;:::-;17557:19;17579:9;:15;17589:4;17579:15;;;;;;;;;;;;;;;;17557:37;;17642:6;17627:11;:21;;17605:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;17782:6;17768:11;:20;17750:9;:15;17760:4;17750:15;;;;;;;;;;;;;;;:38;;;;17827:6;17810:9;:13;17820:2;17810:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;17866:2;17851:26;;17860:4;17851:26;;;17870:6;17851:26;;;;;;:::i;:::-;;;;;;;;17890:37;17910:4;17916:2;17920:6;17890:19;:37::i;:::-;17339:596;17227:708;;;:::o;24201:347::-;24263:7;:5;:7::i;:::-;24256:14;;:3;:14;;;;:29;;;;;24281:4;24274:11;;:3;:11;;;;24256:29;:55;;;;;24304:6;24289:22;;:3;:22;;;;24256:55;24252:289;;;24387:12;24354:18;:29;24373:9;24354:29;;;;;;;;;;;;;;;;:45;;24328:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;24517:12;24485:18;:29;24504:9;24485:29;;;;;;;;;;;;;;;:44;;;;24252:289;24201:347;:::o;24885:99::-;24939:4;24972;24963:13;;:5;:13;;;24956:20;;24885:99;;;:::o;25388:124::-;25455:4;25479:18;:25;25498:5;25479:25;;;;;;;;;;;;;;;;;;;;;;;;;25472:32;;25388:124;;;:::o;25520:129::-;25602:5;;25591:7;:16;;25583:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;25520:129;:::o;25657:203::-;25791:9;;25771:16;25781:5;25771:9;:16::i;:::-;25761:7;:26;;;;:::i;:::-;:39;;25739:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;25657:203;;:::o;24781:96::-;24834:4;24865;24858:11;;:3;:11;;;24851:18;;24781:96;;;:::o;25124:120::-;25189:4;25213:16;:23;25230:5;25213:23;;;;;;;;;;;;;;;;;;;;;;;;;25206:30;;25124:120;;;:::o;24556:217::-;24597:23;24623:24;24641:4;24623:9;:24::i;:::-;24597:50;;24683:1;24664:15;:20;24660:59;;;24701:7;;;24660:59;24731:34;24749:15;24731:17;:34::i;:::-;24586:187;24556:217;:::o;11054:98::-;11112:7;11143:1;11139;:5;;;;:::i;:::-;11132:12;;11054:98;;;;:::o;11160:::-;11218:7;11249:1;11245;:5;;;;:::i;:::-;11238:12;;11160:98;;;;:::o;19847:125::-;;;;:::o;19980:124::-;;;;:::o;25868:464::-;25937:21;25975:1;25961:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25937:40;;26006:4;25988;25993:1;25988:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26032:6;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26022:4;26027:1;26022:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26058:54;26075:4;26090:6;26099:12;26058:8;:54::i;:::-;26125:6;:57;;;26197:12;26224:1;26240:4;26267:15;;;;;;;;;;;26298;26125:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25926:406;25868:464;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:118::-;5658:24;5676:5;5658:24;:::i;:::-;5653:3;5646:37;5571:118;;:::o;5695:222::-;5788:4;5826:2;5815:9;5811:18;5803:26;;5839:71;5907:1;5896:9;5892:17;5883:6;5839:71;:::i;:::-;5695:222;;;;:::o;5923:474::-;5991:6;5999;6048:2;6036:9;6027:7;6023:23;6019:32;6016:119;;;6054:79;;:::i;:::-;6016:119;6174:1;6199:53;6244:7;6235:6;6224:9;6220:22;6199:53;:::i;:::-;6189:63;;6145:117;6301:2;6327:53;6372:7;6363:6;6352:9;6348:22;6327:53;:::i;:::-;6317:63;;6272:118;5923:474;;;;;:::o;6403:180::-;6451:77;6448:1;6441:88;6548:4;6545:1;6538:15;6572:4;6569:1;6562:15;6589:320;6633:6;6670:1;6664:4;6660:12;6650:22;;6717:1;6711:4;6707:12;6738:18;6728:81;;6794:4;6786:6;6782:17;6772:27;;6728:81;6856:2;6848:6;6845:14;6825:18;6822:38;6819:84;;;6875:18;;:::i;:::-;6819:84;6640:269;6589:320;;;:::o;6915:180::-;6963:77;6960:1;6953:88;7060:4;7057:1;7050:15;7084:4;7081:1;7074:15;7101:305;7141:3;7160:20;7178:1;7160:20;:::i;:::-;7155:25;;7194:20;7212:1;7194:20;:::i;:::-;7189:25;;7348:1;7280:66;7276:74;7273:1;7270:81;7267:107;;;7354:18;;:::i;:::-;7267:107;7398:1;7395;7391:9;7384:16;;7101:305;;;;:::o;7412:182::-;7552:34;7548:1;7540:6;7536:14;7529:58;7412:182;:::o;7600:366::-;7742:3;7763:67;7827:2;7822:3;7763:67;:::i;:::-;7756:74;;7839:93;7928:3;7839:93;:::i;:::-;7957:2;7952:3;7948:12;7941:19;;7600:366;;;:::o;7972:419::-;8138:4;8176:2;8165:9;8161:18;8153:26;;8225:9;8219:4;8215:20;8211:1;8200:9;8196:17;8189:47;8253:131;8379:4;8253:131;:::i;:::-;8245:139;;7972:419;;;:::o;8397:224::-;8537:34;8533:1;8525:6;8521:14;8514:58;8606:7;8601:2;8593:6;8589:15;8582:32;8397:224;:::o;8627:366::-;8769:3;8790:67;8854:2;8849:3;8790:67;:::i;:::-;8783:74;;8866:93;8955:3;8866:93;:::i;:::-;8984:2;8979:3;8975:12;8968:19;;8627:366;;;:::o;8999:419::-;9165:4;9203:2;9192:9;9188:18;9180:26;;9252:9;9246:4;9242:20;9238:1;9227:9;9223:17;9216:47;9280:131;9406:4;9280:131;:::i;:::-;9272:139;;8999:419;;;:::o;9424:348::-;9464:7;9487:20;9505:1;9487:20;:::i;:::-;9482:25;;9521:20;9539:1;9521:20;:::i;:::-;9516:25;;9709:1;9641:66;9637:74;9634:1;9631:81;9626:1;9619:9;9612:17;9608:105;9605:131;;;9716:18;;:::i;:::-;9605:131;9764:1;9761;9757:9;9746:20;;9424:348;;;;:::o;9778:175::-;9918:27;9914:1;9906:6;9902:14;9895:51;9778:175;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o;10756:225::-;10896:34;10892:1;10884:6;10880:14;10873:58;10965:8;10960:2;10952:6;10948:15;10941:33;10756:225;:::o;10987:366::-;11129:3;11150:67;11214:2;11209:3;11150:67;:::i;:::-;11143:74;;11226:93;11315:3;11226:93;:::i;:::-;11344:2;11339:3;11335:12;11328:19;;10987:366;;;:::o;11359:419::-;11525:4;11563:2;11552:9;11548:18;11540:26;;11612:9;11606:4;11602:20;11598:1;11587:9;11583:17;11576:47;11640:131;11766:4;11640:131;:::i;:::-;11632:139;;11359:419;;;:::o;11784:179::-;11924:31;11920:1;11912:6;11908:14;11901:55;11784:179;:::o;11969:366::-;12111:3;12132:67;12196:2;12191:3;12132:67;:::i;:::-;12125:74;;12208:93;12297:3;12208:93;:::i;:::-;12326:2;12321:3;12317:12;12310:19;;11969:366;;;:::o;12341:419::-;12507:4;12545:2;12534:9;12530:18;12522:26;;12594:9;12588:4;12584:20;12580:1;12569:9;12565:17;12558:47;12622:131;12748:4;12622:131;:::i;:::-;12614:139;;12341:419;;;:::o;12766:224::-;12906:34;12902:1;12894:6;12890:14;12883:58;12975:7;12970:2;12962:6;12958:15;12951:32;12766:224;:::o;12996:366::-;13138:3;13159:67;13223:2;13218:3;13159:67;:::i;:::-;13152:74;;13235:93;13324:3;13235:93;:::i;:::-;13353:2;13348:3;13344:12;13337:19;;12996:366;;;:::o;13368:419::-;13534:4;13572:2;13561:9;13557:18;13549:26;;13621:9;13615:4;13611:20;13607:1;13596:9;13592:17;13585:47;13649:131;13775:4;13649:131;:::i;:::-;13641:139;;13368:419;;;:::o;13793:225::-;13933:34;13929:1;13921:6;13917:14;13910:58;14002:8;13997:2;13989:6;13985:15;13978:33;13793:225;:::o;14024:366::-;14166:3;14187:67;14251:2;14246:3;14187:67;:::i;:::-;14180:74;;14263:93;14352:3;14263:93;:::i;:::-;14381:2;14376:3;14372:12;14365:19;;14024:366;;;:::o;14396:419::-;14562:4;14600:2;14589:9;14585:18;14577:26;;14649:9;14643:4;14639:20;14635:1;14624:9;14620:17;14613:47;14677:131;14803:4;14677:131;:::i;:::-;14669:139;;14396:419;;;:::o;14821:223::-;14961:34;14957:1;14949:6;14945:14;14938:58;15030:6;15025:2;15017:6;15013:15;15006:31;14821:223;:::o;15050:366::-;15192:3;15213:67;15277:2;15272:3;15213:67;:::i;:::-;15206:74;;15289:93;15378:3;15289:93;:::i;:::-;15407:2;15402:3;15398:12;15391:19;;15050:366;;;:::o;15422:419::-;15588:4;15626:2;15615:9;15611:18;15603:26;;15675:9;15669:4;15665:20;15661:1;15650:9;15646:17;15639:47;15703:131;15829:4;15703:131;:::i;:::-;15695:139;;15422:419;;;:::o;15847:221::-;15987:34;15983:1;15975:6;15971:14;15964:58;16056:4;16051:2;16043:6;16039:15;16032:29;15847:221;:::o;16074:366::-;16216:3;16237:67;16301:2;16296:3;16237:67;:::i;:::-;16230:74;;16313:93;16402:3;16313:93;:::i;:::-;16431:2;16426:3;16422:12;16415:19;;16074:366;;;:::o;16446:419::-;16612:4;16650:2;16639:9;16635:18;16627:26;;16699:9;16693:4;16689:20;16685:1;16674:9;16670:17;16663:47;16727:131;16853:4;16727:131;:::i;:::-;16719:139;;16446:419;;;:::o;16871:179::-;17011:31;17007:1;16999:6;16995:14;16988:55;16871:179;:::o;17056:366::-;17198:3;17219:67;17283:2;17278:3;17219:67;:::i;:::-;17212:74;;17295:93;17384:3;17295:93;:::i;:::-;17413:2;17408:3;17404:12;17397:19;;17056:366;;;:::o;17428:419::-;17594:4;17632:2;17621:9;17617:18;17609:26;;17681:9;17675:4;17671:20;17667:1;17656:9;17652:17;17645:47;17709:131;17835:4;17709:131;:::i;:::-;17701:139;;17428:419;;;:::o;17853:191::-;17893:4;17913:20;17931:1;17913:20;:::i;:::-;17908:25;;17947:20;17965:1;17947:20;:::i;:::-;17942:25;;17986:1;17983;17980:8;17977:34;;;17991:18;;:::i;:::-;17977:34;18036:1;18033;18029:9;18021:17;;17853:191;;;;:::o;18050:224::-;18190:34;18186:1;18178:6;18174:14;18167:58;18259:7;18254:2;18246:6;18242:15;18235:32;18050:224;:::o;18280:366::-;18422:3;18443:67;18507:2;18502:3;18443:67;:::i;:::-;18436:74;;18519:93;18608:3;18519:93;:::i;:::-;18637:2;18632:3;18628:12;18621:19;;18280:366;;;:::o;18652:419::-;18818:4;18856:2;18845:9;18841:18;18833:26;;18905:9;18899:4;18895:20;18891:1;18880:9;18876:17;18869:47;18933:131;19059:4;18933:131;:::i;:::-;18925:139;;18652:419;;;:::o;19077:222::-;19217:34;19213:1;19205:6;19201:14;19194:58;19286:5;19281:2;19273:6;19269:15;19262:30;19077:222;:::o;19305:366::-;19447:3;19468:67;19532:2;19527:3;19468:67;:::i;:::-;19461:74;;19544:93;19633:3;19544:93;:::i;:::-;19662:2;19657:3;19653:12;19646:19;;19305:366;;;:::o;19677:419::-;19843:4;19881:2;19870:9;19866:18;19858:26;;19930:9;19924:4;19920:20;19916:1;19905:9;19901:17;19894:47;19958:131;20084:4;19958:131;:::i;:::-;19950:139;;19677:419;;;:::o;20102:225::-;20242:34;20238:1;20230:6;20226:14;20219:58;20311:8;20306:2;20298:6;20294:15;20287:33;20102:225;:::o;20333:366::-;20475:3;20496:67;20560:2;20555:3;20496:67;:::i;:::-;20489:74;;20572:93;20661:3;20572:93;:::i;:::-;20690:2;20685:3;20681:12;20674:19;;20333:366;;;:::o;20705:419::-;20871:4;20909:2;20898:9;20894:18;20886:26;;20958:9;20952:4;20948:20;20944:1;20933:9;20929:17;20922:47;20986:131;21112:4;20986:131;:::i;:::-;20978:139;;20705:419;;;:::o;21130:222::-;21270:34;21266:1;21258:6;21254:14;21247:58;21339:5;21334:2;21326:6;21322:15;21315:30;21130:222;:::o;21358:366::-;21500:3;21521:67;21585:2;21580:3;21521:67;:::i;:::-;21514:74;;21597:93;21686:3;21597:93;:::i;:::-;21715:2;21710:3;21706:12;21699:19;;21358:366;;;:::o;21730:419::-;21896:4;21934:2;21923:9;21919:18;21911:26;;21983:9;21977:4;21973:20;21969:1;21958:9;21954:17;21947:47;22011:131;22137:4;22011:131;:::i;:::-;22003:139;;21730:419;;;:::o;22155:179::-;22295:31;22291:1;22283:6;22279:14;22272:55;22155:179;:::o;22340:366::-;22482:3;22503:67;22567:2;22562:3;22503:67;:::i;:::-;22496:74;;22579:93;22668:3;22579:93;:::i;:::-;22697:2;22692:3;22688:12;22681:19;;22340:366;;;:::o;22712:419::-;22878:4;22916:2;22905:9;22901:18;22893:26;;22965:9;22959:4;22955:20;22951:1;22940:9;22936:17;22929:47;22993:131;23119:4;22993:131;:::i;:::-;22985:139;;22712:419;;;:::o;23137:174::-;23277:26;23273:1;23265:6;23261:14;23254:50;23137:174;:::o;23317:366::-;23459:3;23480:67;23544:2;23539:3;23480:67;:::i;:::-;23473:74;;23556:93;23645:3;23556:93;:::i;:::-;23674:2;23669:3;23665:12;23658:19;;23317:366;;;:::o;23689:419::-;23855:4;23893:2;23882:9;23878:18;23870:26;;23942:9;23936:4;23932:20;23928:1;23917:9;23913:17;23906:47;23970:131;24096:4;23970:131;:::i;:::-;23962:139;;23689:419;;;:::o;24114:180::-;24162:77;24159:1;24152:88;24259:4;24256:1;24249:15;24283:4;24280:1;24273:15;24300:185;24340:1;24357:20;24375:1;24357:20;:::i;:::-;24352:25;;24391:20;24409:1;24391:20;:::i;:::-;24386:25;;24430:1;24420:35;;24435:18;;:::i;:::-;24420:35;24477:1;24474;24470:9;24465:14;;24300:185;;;;:::o;24491:180::-;24539:77;24536:1;24529:88;24636:4;24633:1;24626:15;24660:4;24657:1;24650:15;24677:180;24725:77;24722:1;24715:88;24822:4;24819:1;24812:15;24846:4;24843:1;24836:15;24863:143;24920:5;24951:6;24945:13;24936:22;;24967:33;24994:5;24967:33;:::i;:::-;24863:143;;;;:::o;25012:351::-;25082:6;25131:2;25119:9;25110:7;25106:23;25102:32;25099:119;;;25137:79;;:::i;:::-;25099:119;25257:1;25282:64;25338:7;25329:6;25318:9;25314:22;25282:64;:::i;:::-;25272:74;;25228:128;25012:351;;;;:::o;25369:85::-;25414:7;25443:5;25432:16;;25369:85;;;:::o;25460:60::-;25488:3;25509:5;25502:12;;25460:60;;;:::o;25526:158::-;25584:9;25617:61;25635:42;25644:32;25670:5;25644:32;:::i;:::-;25635:42;:::i;:::-;25617:61;:::i;:::-;25604:74;;25526:158;;;:::o;25690:147::-;25785:45;25824:5;25785:45;:::i;:::-;25780:3;25773:58;25690:147;;:::o;25843:114::-;25910:6;25944:5;25938:12;25928:22;;25843:114;;;:::o;25963:184::-;26062:11;26096:6;26091:3;26084:19;26136:4;26131:3;26127:14;26112:29;;25963:184;;;;:::o;26153:132::-;26220:4;26243:3;26235:11;;26273:4;26268:3;26264:14;26256:22;;26153:132;;;:::o;26291:108::-;26368:24;26386:5;26368:24;:::i;:::-;26363:3;26356:37;26291:108;;:::o;26405:179::-;26474:10;26495:46;26537:3;26529:6;26495:46;:::i;:::-;26573:4;26568:3;26564:14;26550:28;;26405:179;;;;:::o;26590:113::-;26660:4;26692;26687:3;26683:14;26675:22;;26590:113;;;:::o;26739:732::-;26858:3;26887:54;26935:5;26887:54;:::i;:::-;26957:86;27036:6;27031:3;26957:86;:::i;:::-;26950:93;;27067:56;27117:5;27067:56;:::i;:::-;27146:7;27177:1;27162:284;27187:6;27184:1;27181:13;27162:284;;;27263:6;27257:13;27290:63;27349:3;27334:13;27290:63;:::i;:::-;27283:70;;27376:60;27429:6;27376:60;:::i;:::-;27366:70;;27222:224;27209:1;27206;27202:9;27197:14;;27162:284;;;27166:14;27462:3;27455:10;;26863:608;;;26739:732;;;;:::o;27477:831::-;27740:4;27778:3;27767:9;27763:19;27755:27;;27792:71;27860:1;27849:9;27845:17;27836:6;27792:71;:::i;:::-;27873:80;27949:2;27938:9;27934:18;27925:6;27873:80;:::i;:::-;28000:9;27994:4;27990:20;27985:2;27974:9;27970:18;27963:48;28028:108;28131:4;28122:6;28028:108;:::i;:::-;28020:116;;28146:72;28214:2;28203:9;28199:18;28190:6;28146:72;:::i;:::-;28228:73;28296:3;28285:9;28281:19;28272:6;28228:73;:::i;:::-;27477:831;;;;;;;;:::o
Swarm Source
ipfs://fa35c1e09d9e36c76c9bc29c666a5a3d8d5a4beceb7835043d1027c6221f02f1
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.