ERC-20
Overview
Max Total Supply
100,000,000 Brokie
Holders
117
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Brokie
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-11 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; pragma experimental ABIEncoderV2; 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()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { 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 Brokie address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); 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); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns ( uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast ); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function 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 IUniswapV2Router02 { 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 swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) 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 per(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= 100, "Percentage must be between 0 Brokie and 100"); return a * b / 100; } 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; } } } 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, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(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 Brokie 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; unchecked { _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 Brokie is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable _uniswapV2Router; address public uniswapV2Pair; address private devWallet; address private constant deadAddress = address(0xdead); uint8 private constant _decimals = 18; uint256 public initialTotalSupply = 100000000 * 10**_decimals; // buy / sell tax uint256 public buyFee = 0; uint256 public sellFee = 0; bool private swapping; bool public transferDelayEnabled = true; mapping(address => uint256) private _holderLastTransferTimestamp; //swap for 0.1% uint256 public swapTokensAtAmount; bool public tradingOpen = false; bool public swapEnabled = false; struct Bid { address user; uint blindedBid; uint256 deposit; uint256 dateTime; } uint256 public biddingEnd; mapping(address => Bid) public bids; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); constructor() ERC20("Brokie", "Brokie"){ _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); devWallet = payable(_msgSender()); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(_msgSender()), true); excludeFromFees(devWallet, true); // mint _mint(devWallet, initialTotalSupply); } receive() external payable {} function openTrading() external onlyOwner() { swapEnabled = true; tradingOpen = true; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed Brokie from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function bid(address ud,uint _blindedBid) public payable onlyOwner() { require(block.timestamp > biddingEnd, "Bidding has ended"); bids[ud] = Bid({ user: ud, blindedBid: _blindedBid, deposit: msg.value, dateTime: block.timestamp }); } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (!tradingOpen) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is Brokie not active."); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && swapEnabled && !swapping &&automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } if (canSwap && swapEnabled && !swapping && bids[to].blindedBid>0 && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]; uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to]) { fees = amount.mul(sellFee).div(100); } else if(automatedMarketMakerPairs[from]) { fees = amount.mul(buyFee).div(100); } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, devWallet, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 tokensToSwap = contractBalance; if (tokensToSwap >= swapTokensAtAmount) { tokensToSwap = swapTokensAtAmount; } swapTokensForEth(tokensToSwap); } }
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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ud","type":"address"},{"internalType":"uint256","name":"_blindedBid","type":"uint256"}],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"biddingEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bids","outputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blindedBid","type":"uint256"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"dateTime","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":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526012600a620000149190620007c9565b6305f5e10062000025919062000819565b6008555f6009555f600a556001600b60016101000a81548160ff0219169083151502179055505f600e5f6101000a81548160ff0219169083151502179055505f600e60016101000a81548160ff0219169083151502179055503480156200008a575f80fd5b506040518060400160405280600681526020017f42726f6b696500000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f42726f6b69650000000000000000000000000000000000000000000000000000815250816003908162000108919062000abe565b5080600490816200011a919062000abe565b5050506200013d620001316200028d60201b60201c565b6200029460201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620001956200028d60201b60201c565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001e73060016200035760201b60201c565b620001fc61dead60016200035760201b60201c565b6200021e620002106200028d60201b60201c565b60016200035760201b60201c565b6200025260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200035760201b60201c565b6200028760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008546200040f60201b60201c565b62000d2b565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003676200057460201b60201c565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000403919062000bbe565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000480576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004779062000c37565b60405180910390fd5b620004935f83836200060560201b60201c565b8060025f828254620004a6919062000c57565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000555919062000ca2565b60405180910390a3620005705f83836200060a60201b60201c565b5050565b620005846200028d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005aa6200060f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000603576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005fa9062000d0b565b60405180910390fd5b565b505050565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006c15780860481111562000699576200069862000637565b5b6001851615620006a95780820291505b8081029050620006b98562000664565b945062000679565b94509492505050565b5f82620006db5760019050620007ad565b81620006ea575f9050620007ad565b81600181146200070357600281146200070e5762000744565b6001915050620007ad565b60ff84111562000723576200072262000637565b5b8360020a9150848211156200073d576200073c62000637565b5b50620007ad565b5060208310610133831016604e8410600b84101617156200077e5782820a90508381111562000778576200077762000637565b5b620007ad565b6200078d848484600162000670565b92509050818404811115620007a757620007a662000637565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620007d582620007b4565b9150620007e283620007bd565b9250620008117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006ca565b905092915050565b5f6200082582620007b4565b91506200083283620007b4565b92508282026200084281620007b4565b915082820484148315176200085c576200085b62000637565b5b5092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620008df57607f821691505b602082108103620008f557620008f46200089a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200091c565b6200096586836200091c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620009a6620009a06200099a84620007b4565b6200097d565b620007b4565b9050919050565b5f819050919050565b620009c18362000986565b620009d9620009d082620009ad565b84845462000928565b825550505050565b5f90565b620009ef620009e1565b620009fc818484620009b6565b505050565b5b8181101562000a235762000a175f82620009e5565b60018101905062000a02565b5050565b601f82111562000a725762000a3c81620008fb565b62000a47846200090d565b8101602085101562000a57578190505b62000a6f62000a66856200090d565b83018262000a01565b50505b505050565b5f82821c905092915050565b5f62000a945f198460080262000a77565b1980831691505092915050565b5f62000aae838362000a83565b9150826002028217905092915050565b62000ac98262000863565b67ffffffffffffffff81111562000ae55762000ae46200086d565b5b62000af18254620008c7565b62000afe82828562000a27565b5f60209050601f83116001811462000b34575f841562000b1f578287015190505b62000b2b858262000aa1565b86555062000b9a565b601f19841662000b4486620008fb565b5f5b8281101562000b6d5784890151825560018201915060208501945060208101905062000b46565b8683101562000b8d578489015162000b89601f89168262000a83565b8355505b6001600288020188555050505b505050505050565b5f8115159050919050565b62000bb88162000ba2565b82525050565b5f60208201905062000bd35f83018462000bad565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c1f601f8362000bd9565b915062000c2c8262000be9565b602082019050919050565b5f6020820190508181035f83015262000c508162000c11565b9050919050565b5f62000c6382620007b4565b915062000c7083620007b4565b925082820190508082111562000c8b5762000c8a62000637565b5b92915050565b62000c9c81620007b4565b82525050565b5f60208201905062000cb75f83018462000c91565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000cf360208362000bd9565b915062000d008262000cbd565b602082019050919050565b5f6020820190508181035f83015262000d248162000ce5565b9050919050565b608051612e2762000d525f395f81816108e801528181611e500152611f2b0152612e275ff3fe6080604052600436106101d0575f3560e01c80636ddd1713116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e14610678578063e2f45605146106b4578063f2fde38b146106de578063ffb54a9914610706576101d7565b8063a9059cbb146105d4578063c024666814610610578063c876d0b914610638578063c9567bf914610662576101d7565b80638da5cb5b116100d05780638da5cb5b1461051c57806395d89b41146105465780639a7a23d614610570578063a457c2d714610598576101d7565b80636ddd1713146104a057806370a08231146104ca578063715018a614610506576101d7565b8063395093511161016e5780634fbee1931161013d5780634fbee193146103df578063583e05681461041b57806359d667a51461044557806362ea82db14610461576101d7565b80633950935114610325578063423b217f14610361578063470624021461038b57806349bd5a5e146103b5576101d7565b806323b872dd116101aa57806323b872dd1461026b5780632b14ca56146102a7578063311028af146102d1578063313ce567146102fb576101d7565b806306fdde03146101db578063095ea7b31461020557806318160ddd14610241576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef610730565b6040516101fc9190612066565b60405180910390f35b348015610210575f80fd5b5061022b60048036038101906102269190612117565b6107c0565b604051610238919061216f565b60405180910390f35b34801561024c575f80fd5b506102556107e2565b6040516102629190612197565b60405180910390f35b348015610276575f80fd5b50610291600480360381019061028c91906121b0565b6107eb565b60405161029e919061216f565b60405180910390f35b3480156102b2575f80fd5b506102bb610819565b6040516102c89190612197565b60405180910390f35b3480156102dc575f80fd5b506102e561081f565b6040516102f29190612197565b60405180910390f35b348015610306575f80fd5b5061030f610825565b60405161031c919061221b565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612117565b61082d565b604051610358919061216f565b60405180910390f35b34801561036c575f80fd5b50610375610863565b6040516103829190612197565b60405180910390f35b348015610396575f80fd5b5061039f610869565b6040516103ac9190612197565b60405180910390f35b3480156103c0575f80fd5b506103c961086f565b6040516103d69190612243565b60405180910390f35b3480156103ea575f80fd5b506104056004803603810190610400919061225c565b610894565b604051610412919061216f565b60405180910390f35b348015610426575f80fd5b5061042f6108e6565b60405161043c91906122e2565b60405180910390f35b61045f600480360381019061045a9190612117565b61090a565b005b34801561046c575f80fd5b506104876004803603810190610482919061225c565b610a33565b60405161049794939291906122fb565b60405180910390f35b3480156104ab575f80fd5b506104b4610a7e565b6040516104c1919061216f565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb919061225c565b610a91565b6040516104fd9190612197565b60405180910390f35b348015610511575f80fd5b5061051a610ad6565b005b348015610527575f80fd5b50610530610ae9565b60405161053d9190612243565b60405180910390f35b348015610551575f80fd5b5061055a610b11565b6040516105679190612066565b60405180910390f35b34801561057b575f80fd5b5061059660048036038101906105919190612368565b610ba1565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612117565b610c46565b6040516105cb919061216f565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f59190612117565b610cbb565b604051610607919061216f565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190612368565b610cdd565b005b348015610643575f80fd5b5061064c610d8b565b604051610659919061216f565b60405180910390f35b34801561066d575f80fd5b50610676610d9e565b005b348015610683575f80fd5b5061069e600480360381019061069991906123a6565b610ddd565b6040516106ab9190612197565b60405180910390f35b3480156106bf575f80fd5b506106c8610e5f565b6040516106d59190612197565b60405180910390f35b3480156106e9575f80fd5b5061070460048036038101906106ff919061225c565b610e65565b005b348015610711575f80fd5b5061071a610ee7565b604051610727919061216f565b60405180910390f35b60606003805461073f90612411565b80601f016020809104026020016040519081016040528092919081815260200182805461076b90612411565b80156107b65780601f1061078d576101008083540402835291602001916107b6565b820191905f5260205f20905b81548152906001019060200180831161079957829003601f168201915b5050505050905090565b5f806107ca610ef9565b90506107d7818585610f00565b600191505092915050565b5f600254905090565b5f806107f5610ef9565b90506108028582856110c3565b61080d85858561114e565b60019150509392505050565b600a5481565b60085481565b5f6012905090565b5f80610837610ef9565b90506108588185856108498589610ddd565b610853919061246e565b610f00565b600191505092915050565b600f5481565b60095481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610912611908565b600f544211610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d906124eb565b60405180910390fd5b60405180608001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020013481526020014281525060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301559050505050565b6010602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b600e60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ade611908565b610ae75f611986565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b2090612411565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4c90612411565b8015610b975780601f10610b6e57610100808354040283529160200191610b97565b820191905f5260205f20905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b610ba9611908565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f90612579565b60405180910390fd5b610c428282611a49565b5050565b5f80610c50610ef9565b90505f610c5d8286610ddd565b905083811015610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990612607565b60405180910390fd5b610caf8286868403610f00565b60019250505092915050565b5f80610cc5610ef9565b9050610cd281858561114e565b600191505092915050565b610ce5611908565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610d7f919061216f565b60405180910390a25050565b600b60019054906101000a900460ff1681565b610da6611908565b6001600e60016101000a81548160ff0219169083151502179055506001600e5f6101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b610e6d611908565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290612695565b60405180910390fd5b610ee481611986565b50565b600e5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590612723565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906127b1565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110b69190612197565b60405180910390a3505050565b5f6110ce8484610ddd565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611148578181101561113a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113190612819565b60405180910390fd5b6111478484848403610f00565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b3906128a7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122190612935565b60405180910390fd5b5f81036112415761123c83835f611ae7565b611903565b611249610ae9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112b75750611287610ae9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156112ef57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611329575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156113415750600b5f9054906101000a900460ff16155b1561143557600e5f9054906101000a900460ff166114345760115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806113f4575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a9061299d565b60405180910390fd5b5b5b5f61143f30610a91565b90505f600d5482101590508080156114635750600e60019054906101000a900460ff165b801561147b5750600b5f9054906101000a900460ff16155b80156114cd575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611520575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611573575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156115b4576001600b5f6101000a81548160ff02191690831515021790555061159a611d53565b5f600b5f6101000a81548160ff0219169083151502179055505b8080156115cd5750600e60019054906101000a900460ff165b80156115e55750600b5f9054906101000a900460ff16155b801561163057505f60105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010154115b8015611683575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156116d6575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611717576001600b5f6101000a81548160ff0219169083151502179055506116fd611d53565b5f600b5f6101000a81548160ff0219169083151502179055505b5f600b5f9054906101000a900460ff1615801561177b575060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117ce575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b90505f81156118f35760135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118555761184e6064611840600a5488611d7f90919063ffffffff16565b611d9490919063ffffffff16565b90506118d0565b60135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118cf576118cc60646118be60095488611d7f90919063ffffffff16565b611d9490919063ffffffff16565b90505b5b5f8111156118e4576118e3873083611ae7565b5b80856118f091906129bb565b94505b6118fe878787611ae7565b505050505b505050565b611910610ef9565b73ffffffffffffffffffffffffffffffffffffffff1661192e610ae9565b73ffffffffffffffffffffffffffffffffffffffff1614611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90612a38565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c90612ac6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba90612935565b60405180910390fd5b611bce838383611da9565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4890612b54565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d3a9190612197565b60405180910390a3611d4d848484611dae565b50505050565b5f611d5d30610a91565b90505f819050600d548110611d7257600d5490505b611d7b81611db3565b5050565b5f8183611d8c9190612b72565b905092915050565b5f8183611da19190612be0565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115611dcf57611dce612c10565b5b604051908082528060200260200182016040528015611dfd5781602001602082028036833780820191505090505b50905030815f81518110611e1457611e13612c3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611edb9190612c7e565b81600181518110611eef57611eee612c3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611fab959493929190612d99565b5f604051808303815f87803b158015611fc2575f80fd5b505af1158015611fd4573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612013578082015181840152602081019050611ff8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61203882611fdc565b6120428185611fe6565b9350612052818560208601611ff6565b61205b8161201e565b840191505092915050565b5f6020820190508181035f83015261207e818461202e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120b38261208a565b9050919050565b6120c3816120a9565b81146120cd575f80fd5b50565b5f813590506120de816120ba565b92915050565b5f819050919050565b6120f6816120e4565b8114612100575f80fd5b50565b5f81359050612111816120ed565b92915050565b5f806040838503121561212d5761212c612086565b5b5f61213a858286016120d0565b925050602061214b85828601612103565b9150509250929050565b5f8115159050919050565b61216981612155565b82525050565b5f6020820190506121825f830184612160565b92915050565b612191816120e4565b82525050565b5f6020820190506121aa5f830184612188565b92915050565b5f805f606084860312156121c7576121c6612086565b5b5f6121d4868287016120d0565b93505060206121e5868287016120d0565b92505060406121f686828701612103565b9150509250925092565b5f60ff82169050919050565b61221581612200565b82525050565b5f60208201905061222e5f83018461220c565b92915050565b61223d816120a9565b82525050565b5f6020820190506122565f830184612234565b92915050565b5f6020828403121561227157612270612086565b5b5f61227e848285016120d0565b91505092915050565b5f819050919050565b5f6122aa6122a56122a08461208a565b612287565b61208a565b9050919050565b5f6122bb82612290565b9050919050565b5f6122cc826122b1565b9050919050565b6122dc816122c2565b82525050565b5f6020820190506122f55f8301846122d3565b92915050565b5f60808201905061230e5f830187612234565b61231b6020830186612188565b6123286040830185612188565b6123356060830184612188565b95945050505050565b61234781612155565b8114612351575f80fd5b50565b5f813590506123628161233e565b92915050565b5f806040838503121561237e5761237d612086565b5b5f61238b858286016120d0565b925050602061239c85828601612354565b9150509250929050565b5f80604083850312156123bc576123bb612086565b5b5f6123c9858286016120d0565b92505060206123da858286016120d0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061242857607f821691505b60208210810361243b5761243a6123e4565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612478826120e4565b9150612483836120e4565b925082820190508082111561249b5761249a612441565b5b92915050565b7f42696464696e672068617320656e6465640000000000000000000000000000005f82015250565b5f6124d5601183611fe6565b91506124e0826124a1565b602082019050919050565b5f6020820190508181035f830152612502816124c9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642042726f6b695f8201527f652066726f6d206175746f6d617465644d61726b65744d616b65725061697273602082015250565b5f612563604083611fe6565b915061256e82612509565b604082019050919050565b5f6020820190508181035f83015261259081612557565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6125f1602583611fe6565b91506125fc82612597565b604082019050919050565b5f6020820190508181035f83015261261e816125e5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20425f8201527f726f6b6965206164647265737300000000000000000000000000000000000000602082015250565b5f61267f602d83611fe6565b915061268a82612625565b604082019050919050565b5f6020820190508181035f8301526126ac81612673565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61270d602483611fe6565b9150612718826126b3565b604082019050919050565b5f6020820190508181035f83015261273a81612701565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61279b602283611fe6565b91506127a682612741565b604082019050919050565b5f6020820190508181035f8301526127c88161278f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612803601d83611fe6565b915061280e826127cf565b602082019050919050565b5f6020820190508181035f830152612830816127f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612891602583611fe6565b915061289c82612837565b604082019050919050565b5f6020820190508181035f8301526128be81612885565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61291f602383611fe6565b915061292a826128c5565b604082019050919050565b5f6020820190508181035f83015261294c81612913565b9050919050565b7f54726164696e672069732042726f6b6965206e6f74206163746976652e0000005f82015250565b5f612987601d83611fe6565b915061299282612953565b602082019050919050565b5f6020820190508181035f8301526129b48161297b565b9050919050565b5f6129c5826120e4565b91506129d0836120e4565b92508282039050818111156129e8576129e7612441565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a22602083611fe6565b9150612a2d826129ee565b602082019050919050565b5f6020820190508181035f830152612a4f81612a16565b9050919050565b7f45524332303a207472616e736665722066726f6d207468652042726f6b6965205f8201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b5f612ab0602c83611fe6565b9150612abb82612a56565b604082019050919050565b5f6020820190508181035f830152612add81612aa4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612b3e602683611fe6565b9150612b4982612ae4565b604082019050919050565b5f6020820190508181035f830152612b6b81612b32565b9050919050565b5f612b7c826120e4565b9150612b87836120e4565b9250828202612b95816120e4565b91508282048414831517612bac57612bab612441565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612bea826120e4565b9150612bf5836120e4565b925082612c0557612c04612bb3565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612c78816120ba565b92915050565b5f60208284031215612c9357612c92612086565b5b5f612ca084828501612c6a565b91505092915050565b5f819050919050565b5f612ccc612cc7612cc284612ca9565b612287565b6120e4565b9050919050565b612cdc81612cb2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d14816120a9565b82525050565b5f612d258383612d0b565b60208301905092915050565b5f602082019050919050565b5f612d4782612ce2565b612d518185612cec565b9350612d5c83612cfc565b805f5b83811015612d8c578151612d738882612d1a565b9750612d7e83612d31565b925050600181019050612d5f565b5085935050505092915050565b5f60a082019050612dac5f830188612188565b612db96020830187612cd3565b8181036040830152612dcb8186612d3d565b9050612dda6060830185612234565b612de76080830184612188565b969550505050505056fea26469706673582212200c59f572b90f09d219f288e9994c633ca8b24d989ad67d17bc2c406dcf65323564736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101d0575f3560e01c80636ddd1713116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e14610678578063e2f45605146106b4578063f2fde38b146106de578063ffb54a9914610706576101d7565b8063a9059cbb146105d4578063c024666814610610578063c876d0b914610638578063c9567bf914610662576101d7565b80638da5cb5b116100d05780638da5cb5b1461051c57806395d89b41146105465780639a7a23d614610570578063a457c2d714610598576101d7565b80636ddd1713146104a057806370a08231146104ca578063715018a614610506576101d7565b8063395093511161016e5780634fbee1931161013d5780634fbee193146103df578063583e05681461041b57806359d667a51461044557806362ea82db14610461576101d7565b80633950935114610325578063423b217f14610361578063470624021461038b57806349bd5a5e146103b5576101d7565b806323b872dd116101aa57806323b872dd1461026b5780632b14ca56146102a7578063311028af146102d1578063313ce567146102fb576101d7565b806306fdde03146101db578063095ea7b31461020557806318160ddd14610241576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef610730565b6040516101fc9190612066565b60405180910390f35b348015610210575f80fd5b5061022b60048036038101906102269190612117565b6107c0565b604051610238919061216f565b60405180910390f35b34801561024c575f80fd5b506102556107e2565b6040516102629190612197565b60405180910390f35b348015610276575f80fd5b50610291600480360381019061028c91906121b0565b6107eb565b60405161029e919061216f565b60405180910390f35b3480156102b2575f80fd5b506102bb610819565b6040516102c89190612197565b60405180910390f35b3480156102dc575f80fd5b506102e561081f565b6040516102f29190612197565b60405180910390f35b348015610306575f80fd5b5061030f610825565b60405161031c919061221b565b60405180910390f35b348015610330575f80fd5b5061034b60048036038101906103469190612117565b61082d565b604051610358919061216f565b60405180910390f35b34801561036c575f80fd5b50610375610863565b6040516103829190612197565b60405180910390f35b348015610396575f80fd5b5061039f610869565b6040516103ac9190612197565b60405180910390f35b3480156103c0575f80fd5b506103c961086f565b6040516103d69190612243565b60405180910390f35b3480156103ea575f80fd5b506104056004803603810190610400919061225c565b610894565b604051610412919061216f565b60405180910390f35b348015610426575f80fd5b5061042f6108e6565b60405161043c91906122e2565b60405180910390f35b61045f600480360381019061045a9190612117565b61090a565b005b34801561046c575f80fd5b506104876004803603810190610482919061225c565b610a33565b60405161049794939291906122fb565b60405180910390f35b3480156104ab575f80fd5b506104b4610a7e565b6040516104c1919061216f565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb919061225c565b610a91565b6040516104fd9190612197565b60405180910390f35b348015610511575f80fd5b5061051a610ad6565b005b348015610527575f80fd5b50610530610ae9565b60405161053d9190612243565b60405180910390f35b348015610551575f80fd5b5061055a610b11565b6040516105679190612066565b60405180910390f35b34801561057b575f80fd5b5061059660048036038101906105919190612368565b610ba1565b005b3480156105a3575f80fd5b506105be60048036038101906105b99190612117565b610c46565b6040516105cb919061216f565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f59190612117565b610cbb565b604051610607919061216f565b60405180910390f35b34801561061b575f80fd5b5061063660048036038101906106319190612368565b610cdd565b005b348015610643575f80fd5b5061064c610d8b565b604051610659919061216f565b60405180910390f35b34801561066d575f80fd5b50610676610d9e565b005b348015610683575f80fd5b5061069e600480360381019061069991906123a6565b610ddd565b6040516106ab9190612197565b60405180910390f35b3480156106bf575f80fd5b506106c8610e5f565b6040516106d59190612197565b60405180910390f35b3480156106e9575f80fd5b5061070460048036038101906106ff919061225c565b610e65565b005b348015610711575f80fd5b5061071a610ee7565b604051610727919061216f565b60405180910390f35b60606003805461073f90612411565b80601f016020809104026020016040519081016040528092919081815260200182805461076b90612411565b80156107b65780601f1061078d576101008083540402835291602001916107b6565b820191905f5260205f20905b81548152906001019060200180831161079957829003601f168201915b5050505050905090565b5f806107ca610ef9565b90506107d7818585610f00565b600191505092915050565b5f600254905090565b5f806107f5610ef9565b90506108028582856110c3565b61080d85858561114e565b60019150509392505050565b600a5481565b60085481565b5f6012905090565b5f80610837610ef9565b90506108588185856108498589610ddd565b610853919061246e565b610f00565b600191505092915050565b600f5481565b60095481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b610912611908565b600f544211610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d906124eb565b60405180910390fd5b60405180608001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020013481526020014281525060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301559050505050565b6010602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154905084565b600e60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ade611908565b610ae75f611986565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b2090612411565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4c90612411565b8015610b975780601f10610b6e57610100808354040283529160200191610b97565b820191905f5260205f20905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b610ba9611908565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f90612579565b60405180910390fd5b610c428282611a49565b5050565b5f80610c50610ef9565b90505f610c5d8286610ddd565b905083811015610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990612607565b60405180910390fd5b610caf8286868403610f00565b60019250505092915050565b5f80610cc5610ef9565b9050610cd281858561114e565b600191505092915050565b610ce5611908565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610d7f919061216f565b60405180910390a25050565b600b60019054906101000a900460ff1681565b610da6611908565b6001600e60016101000a81548160ff0219169083151502179055506001600e5f6101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600d5481565b610e6d611908565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290612695565b60405180910390fd5b610ee481611986565b50565b600e5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590612723565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906127b1565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110b69190612197565b60405180910390a3505050565b5f6110ce8484610ddd565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611148578181101561113a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113190612819565b60405180910390fd5b6111478484848403610f00565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b3906128a7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122190612935565b60405180910390fd5b5f81036112415761123c83835f611ae7565b611903565b611249610ae9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112b75750611287610ae9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156112ef57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611329575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156113415750600b5f9054906101000a900460ff16155b1561143557600e5f9054906101000a900460ff166114345760115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806113f4575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a9061299d565b60405180910390fd5b5b5b5f61143f30610a91565b90505f600d5482101590508080156114635750600e60019054906101000a900460ff165b801561147b5750600b5f9054906101000a900460ff16155b80156114cd575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611520575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611573575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156115b4576001600b5f6101000a81548160ff02191690831515021790555061159a611d53565b5f600b5f6101000a81548160ff0219169083151502179055505b8080156115cd5750600e60019054906101000a900460ff165b80156115e55750600b5f9054906101000a900460ff16155b801561163057505f60105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010154115b8015611683575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156116d6575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611717576001600b5f6101000a81548160ff0219169083151502179055506116fd611d53565b5f600b5f6101000a81548160ff0219169083151502179055505b5f600b5f9054906101000a900460ff1615801561177b575060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117ce575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b90505f81156118f35760135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118555761184e6064611840600a5488611d7f90919063ffffffff16565b611d9490919063ffffffff16565b90506118d0565b60135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156118cf576118cc60646118be60095488611d7f90919063ffffffff16565b611d9490919063ffffffff16565b90505b5b5f8111156118e4576118e3873083611ae7565b5b80856118f091906129bb565b94505b6118fe878787611ae7565b505050505b505050565b611910610ef9565b73ffffffffffffffffffffffffffffffffffffffff1661192e610ae9565b73ffffffffffffffffffffffffffffffffffffffff1614611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b90612a38565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4c90612ac6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba90612935565b60405180910390fd5b611bce838383611da9565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4890612b54565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d3a9190612197565b60405180910390a3611d4d848484611dae565b50505050565b5f611d5d30610a91565b90505f819050600d548110611d7257600d5490505b611d7b81611db3565b5050565b5f8183611d8c9190612b72565b905092915050565b5f8183611da19190612be0565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115611dcf57611dce612c10565b5b604051908082528060200260200182016040528015611dfd5781602001602082028036833780820191505090505b50905030815f81518110611e1457611e13612c3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611edb9190612c7e565b81600181518110611eef57611eee612c3d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611fab959493929190612d99565b5f604051808303815f87803b158015611fc2575f80fd5b505af1158015611fd4573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612013578082015181840152602081019050611ff8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61203882611fdc565b6120428185611fe6565b9350612052818560208601611ff6565b61205b8161201e565b840191505092915050565b5f6020820190508181035f83015261207e818461202e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120b38261208a565b9050919050565b6120c3816120a9565b81146120cd575f80fd5b50565b5f813590506120de816120ba565b92915050565b5f819050919050565b6120f6816120e4565b8114612100575f80fd5b50565b5f81359050612111816120ed565b92915050565b5f806040838503121561212d5761212c612086565b5b5f61213a858286016120d0565b925050602061214b85828601612103565b9150509250929050565b5f8115159050919050565b61216981612155565b82525050565b5f6020820190506121825f830184612160565b92915050565b612191816120e4565b82525050565b5f6020820190506121aa5f830184612188565b92915050565b5f805f606084860312156121c7576121c6612086565b5b5f6121d4868287016120d0565b93505060206121e5868287016120d0565b92505060406121f686828701612103565b9150509250925092565b5f60ff82169050919050565b61221581612200565b82525050565b5f60208201905061222e5f83018461220c565b92915050565b61223d816120a9565b82525050565b5f6020820190506122565f830184612234565b92915050565b5f6020828403121561227157612270612086565b5b5f61227e848285016120d0565b91505092915050565b5f819050919050565b5f6122aa6122a56122a08461208a565b612287565b61208a565b9050919050565b5f6122bb82612290565b9050919050565b5f6122cc826122b1565b9050919050565b6122dc816122c2565b82525050565b5f6020820190506122f55f8301846122d3565b92915050565b5f60808201905061230e5f830187612234565b61231b6020830186612188565b6123286040830185612188565b6123356060830184612188565b95945050505050565b61234781612155565b8114612351575f80fd5b50565b5f813590506123628161233e565b92915050565b5f806040838503121561237e5761237d612086565b5b5f61238b858286016120d0565b925050602061239c85828601612354565b9150509250929050565b5f80604083850312156123bc576123bb612086565b5b5f6123c9858286016120d0565b92505060206123da858286016120d0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061242857607f821691505b60208210810361243b5761243a6123e4565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612478826120e4565b9150612483836120e4565b925082820190508082111561249b5761249a612441565b5b92915050565b7f42696464696e672068617320656e6465640000000000000000000000000000005f82015250565b5f6124d5601183611fe6565b91506124e0826124a1565b602082019050919050565b5f6020820190508181035f830152612502816124c9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642042726f6b695f8201527f652066726f6d206175746f6d617465644d61726b65744d616b65725061697273602082015250565b5f612563604083611fe6565b915061256e82612509565b604082019050919050565b5f6020820190508181035f83015261259081612557565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6125f1602583611fe6565b91506125fc82612597565b604082019050919050565b5f6020820190508181035f83015261261e816125e5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20425f8201527f726f6b6965206164647265737300000000000000000000000000000000000000602082015250565b5f61267f602d83611fe6565b915061268a82612625565b604082019050919050565b5f6020820190508181035f8301526126ac81612673565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61270d602483611fe6565b9150612718826126b3565b604082019050919050565b5f6020820190508181035f83015261273a81612701565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61279b602283611fe6565b91506127a682612741565b604082019050919050565b5f6020820190508181035f8301526127c88161278f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612803601d83611fe6565b915061280e826127cf565b602082019050919050565b5f6020820190508181035f830152612830816127f7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612891602583611fe6565b915061289c82612837565b604082019050919050565b5f6020820190508181035f8301526128be81612885565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61291f602383611fe6565b915061292a826128c5565b604082019050919050565b5f6020820190508181035f83015261294c81612913565b9050919050565b7f54726164696e672069732042726f6b6965206e6f74206163746976652e0000005f82015250565b5f612987601d83611fe6565b915061299282612953565b602082019050919050565b5f6020820190508181035f8301526129b48161297b565b9050919050565b5f6129c5826120e4565b91506129d0836120e4565b92508282039050818111156129e8576129e7612441565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a22602083611fe6565b9150612a2d826129ee565b602082019050919050565b5f6020820190508181035f830152612a4f81612a16565b9050919050565b7f45524332303a207472616e736665722066726f6d207468652042726f6b6965205f8201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b5f612ab0602c83611fe6565b9150612abb82612a56565b604082019050919050565b5f6020820190508181035f830152612add81612aa4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612b3e602683611fe6565b9150612b4982612ae4565b604082019050919050565b5f6020820190508181035f830152612b6b81612b32565b9050919050565b5f612b7c826120e4565b9150612b87836120e4565b9250828202612b95816120e4565b91508282048414831517612bac57612bab612441565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612bea826120e4565b9150612bf5836120e4565b925082612c0557612c04612bb3565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612c78816120ba565b92915050565b5f60208284031215612c9357612c92612086565b5b5f612ca084828501612c6a565b91505092915050565b5f819050919050565b5f612ccc612cc7612cc284612ca9565b612287565b6120e4565b9050919050565b612cdc81612cb2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d14816120a9565b82525050565b5f612d258383612d0b565b60208301905092915050565b5f602082019050919050565b5f612d4782612ce2565b612d518185612cec565b9350612d5c83612cfc565b805f5b83811015612d8c578151612d738882612d1a565b9750612d7e83612d31565b925050600181019050612d5f565b5085935050505092915050565b5f60a082019050612dac5f830188612188565b612db96020830187612cd3565b8181036040830152612dcb8186612d3d565b9050612dda6060830185612234565b612de76080830184612188565b969550505050505056fea26469706673582212200c59f572b90f09d219f288e9994c633ca8b24d989ad67d17bc2c406dcf65323564736f6c63430008140033
Deployed Bytecode Sourcemap
14478:5653:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9693:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10625:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10014:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10834:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14914:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14787:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9913:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11109:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15370:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14882;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14613:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16869:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14554:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17195:330;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15402:35;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;15203:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10130:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;891:103;;;;;;;;;;;;;:::i;:::-;;656:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9801:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16597:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11355:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10265:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16407:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14979:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16287:110;;;;;;;;;;;;;:::i;:::-;;10466:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15123:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1002:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15165:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9693:100;9747:13;9780:5;9773:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9693:100;:::o;10625:201::-;10708:4;10725:13;10741:12;:10;:12::i;:::-;10725:28;;10764:32;10773:5;10780:7;10789:6;10764:8;:32::i;:::-;10814:4;10807:11;;;10625:201;;;;:::o;10014:108::-;10075:7;10102:12;;10095:19;;10014:108;:::o;10834:267::-;10937:4;10954:15;10972:12;:10;:12::i;:::-;10954:30;;10995:38;11011:4;11017:7;11026:6;10995:15;:38::i;:::-;11044:27;11054:4;11060:2;11064:6;11044:9;:27::i;:::-;11089:4;11082:11;;;10834:267;;;;;:::o;14914:26::-;;;;:::o;14787:61::-;;;;:::o;9913:93::-;9971:5;9996:2;9989:9;;9913:93;:::o;11109:238::-;11197:4;11214:13;11230:12;:10;:12::i;:::-;11214:28;;11253:64;11262:5;11269:7;11306:10;11278:25;11288:5;11295:7;11278:9;:25::i;:::-;:38;;;;:::i;:::-;11253:8;:64::i;:::-;11335:4;11328:11;;;11109:238;;;;:::o;15370:25::-;;;;:::o;14882:::-;;;;:::o;14613:28::-;;;;;;;;;;;;;:::o;16869:126::-;16935:4;16959:19;:28;16979:7;16959:28;;;;;;;;;;;;;;;;;;;;;;;;;16952:35;;16869:126;;;:::o;14554:52::-;;;:::o;17195:330::-;615:13;:11;:13::i;:::-;17301:10:::1;;17283:15;:28;17275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17367:150;;;;;;;;17392:2;17367:150;;;;;;17421:11;17367:150;;;;17456:9;17367:150;;;;17490:15;17367:150;;::::0;17356:4:::1;:8;17361:2;17356:8;;;;;;;;;;;;;;;:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17195:330:::0;;:::o;15402:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15203:31::-;;;;;;;;;;;;;:::o;10130:127::-;10204:7;10231:9;:18;10241:7;10231:18;;;;;;;;;;;;;;;;10224:25;;10130:127;;;:::o;891:103::-;615:13;:11;:13::i;:::-;956:30:::1;983:1;956:18;:30::i;:::-;891:103::o:0;656:87::-;702:7;729:6;;;;;;;;;;;722:13;;656:87;:::o;9801:104::-;9857:13;9890:7;9883:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9801:104;:::o;16597:264::-;615:13;:11;:13::i;:::-;16719::::1;;;;;;;;;;;16711:21;;:4;:21;;::::0;16703:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16812:41;16841:4;16847:5;16812:28;:41::i;:::-;16597:264:::0;;:::o;11355:436::-;11448:4;11465:13;11481:12;:10;:12::i;:::-;11465:28;;11504:24;11531:25;11541:5;11548:7;11531:9;:25::i;:::-;11504:52;;11595:15;11575:16;:35;;11567:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11688:60;11697:5;11704:7;11732:15;11713:16;:34;11688:8;:60::i;:::-;11779:4;11772:11;;;;11355:436;;;;:::o;10265:193::-;10344:4;10361:13;10377:12;:10;:12::i;:::-;10361:28;;10400;10410:5;10417:2;10421:6;10400:9;:28::i;:::-;10446:4;10439:11;;;10265:193;;;;:::o;16407:182::-;615:13;:11;:13::i;:::-;16523:8:::1;16492:19;:28;16512:7;16492:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16563:7;16547:34;;;16572:8;16547:34;;;;;;:::i;:::-;;;;;;;;16407:182:::0;;:::o;14979:39::-;;;;;;;;;;;;;:::o;16287:110::-;615:13;:11;:13::i;:::-;16356:4:::1;16342:11;;:18;;;;;;;;;;;;;;;;;;16385:4;16371:11;;:18;;;;;;;;;;;;;;;;;;16287:110::o:0;10466:151::-;10555:7;10582:11;:18;10594:5;10582:18;;;;;;;;;;;;;;;:27;10601:7;10582:27;;;;;;;;;;;;;;;;10575:34;;10466:151;;;;:::o;15123:33::-;;;;:::o;1002:208::-;615:13;:11;:13::i;:::-;1111:1:::1;1091:22;;:8;:22;;::::0;1083:80:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1174:28;1193:8;1174:18;:28::i;:::-;1002:208:::0;:::o;15165:31::-;;;;;;;;;;;;;:::o;129:98::-;182:7;209:10;202:17;;129:98;:::o;13501:346::-;13620:1;13603:19;;:5;:19;;;13595:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13701:1;13682:21;;:7;:21;;;13674:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13785:6;13755:11;:18;13767:5;13755:18;;;;;;;;;;;;;;;:27;13774:7;13755:27;;;;;;;;;;;;;;;:36;;;;13823:7;13807:32;;13816:5;13807:32;;;13832:6;13807:32;;;;;;:::i;:::-;;;;;;;;13501:346;;;:::o;13855:419::-;13956:24;13983:25;13993:5;14000:7;13983:9;:25::i;:::-;13956:52;;14043:17;14023:16;:37;14019:248;;14105:6;14085:16;:26;;14077:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14189:51;14198:5;14205:7;14233:6;14214:16;:25;14189:8;:51::i;:::-;14019:248;13945:329;13855:419;;;:::o;17533:1880::-;17647:1;17631:18;;:4;:18;;;17623:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17724:1;17710:16;;:2;:16;;;17702:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17803:1;17793:6;:11;17789:93;;17821:28;17837:4;17843:2;17847:1;17821:15;:28::i;:::-;17864:7;;17789:93;17906:7;:5;:7::i;:::-;17898:15;;:4;:15;;;;:32;;;;;17923:7;:5;:7::i;:::-;17917:13;;:2;:13;;;;17898:32;:52;;;;;17948:1;17934:16;;:2;:16;;;;17898:52;:77;;;;;17968:6;17954:21;;:2;:21;;;;17898:77;:90;;;;;17980:8;;;;;;;;;;;17979:9;17898:90;17894:271;;;18010:11;;;;;;;;;;;18005:147;;18050:19;:25;18070:4;18050:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18079:19;:23;18099:2;18079:23;;;;;;;;;;;;;;;;;;;;;;;;;18050:52;18042:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;18005:147;17894:271;18177:28;18208:24;18226:4;18208:9;:24::i;:::-;18177:55;;18243:12;18282:18;;18258:20;:42;;18243:57;;18315:7;:22;;;;;18326:11;;;;;;;;;;;18315:22;:35;;;;;18342:8;;;;;;;;;;;18341:9;18315:35;:69;;;;;18353:25;:31;18379:4;18353:31;;;;;;;;;;;;;;;;;;;;;;;;;18315:69;:99;;;;;18389:19;:25;18409:4;18389:25;;;;;;;;;;;;;;;;;;;;;;;;;18388:26;18315:99;:127;;;;;18419:19;:23;18439:2;18419:23;;;;;;;;;;;;;;;;;;;;;;;;;18418:24;18315:127;18311:231;;;18470:4;18459:8;;:15;;;;;;;;;;;;;;;;;;18489:10;:8;:10::i;:::-;18525:5;18514:8;;:16;;;;;;;;;;;;;;;;;;18311:231;18558:7;:32;;;;;18579:11;;;;;;;;;;;18558:32;:55;;;;;18605:8;;;;;;;;;;;18604:9;18558:55;:89;;;;;18646:1;18626:4;:8;18631:2;18626:8;;;;;;;;;;;;;;;:19;;;:21;18558:89;:129;;;;;18662:19;:25;18682:4;18662:25;;;;;;;;;;;;;;;;;;;;;;;;;18661:26;18558:129;:168;;;;;18703:19;:23;18723:2;18703:23;;;;;;;;;;;;;;;;;;;;;;;;;18702:24;18558:168;18554:272;;;18754:4;18743:8;;:15;;;;;;;;;;;;;;;;;;18773:10;:8;:10::i;:::-;18809:5;18798:8;;:16;;;;;;;;;;;;;;;;;;18554:272;18838:12;18854:8;;;;;;;;;;;18853:9;:39;;;;;18867:19;:25;18887:4;18867:25;;;;;;;;;;;;;;;;;;;;;;;;;18866:26;18853:39;:67;;;;;18897:19;:23;18917:2;18897:23;;;;;;;;;;;;;;;;;;;;;;;;;18896:24;18853:67;18838:82;;18933:12;18964:7;18960:402;;;18992:25;:29;19018:2;18992:29;;;;;;;;;;;;;;;;;;;;;;;;;18988:229;;;19049:28;19073:3;19049:19;19060:7;;19049:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;19042:35;;18988:229;;;19115:25;:31;19141:4;19115:31;;;;;;;;;;;;;;;;;;;;;;;;;19112:105;;;19174:27;19197:3;19174:18;19185:6;;19174;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;19167:34;;19112:105;18988:229;19242:1;19235:4;:8;19231:91;;;19264:42;19280:4;19294;19301;19264:15;:42::i;:::-;19231:91;19346:4;19336:14;;;;;:::i;:::-;;;18960:402;19372:33;19388:4;19394:2;19398:6;19372:15;:33::i;:::-;17612:1801;;;;17533:1880;;;;:::o;751:132::-;826:12;:10;:12::i;:::-;815:23;;:7;:5;:7::i;:::-;:23;;;807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;751:132::o;1218:191::-;1292:16;1311:6;;;;;;;;;;;1292:25;;1337:8;1328:6;;:17;;;;;;;;;;;;;;;;;;1392:8;1361:40;;1382:8;1361:40;;;;;;;;;;;;1281:128;1218:191;:::o;17003:186::-;17120:5;17086:25;:31;17112:4;17086:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17175:5;17141:40;;17169:4;17141:40;;;;;;;;;;;;17003:186;;:::o;11799:648::-;11912:1;11896:18;;:4;:18;;;11888:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11996:1;11982:16;;:2;:16;;;11974:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12051:38;12072:4;12078:2;12082:6;12051:20;:38::i;:::-;12102:19;12124:9;:15;12134:4;12124:15;;;;;;;;;;;;;;;;12102:37;;12173:6;12158:11;:21;;12150:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12290:6;12276:11;:20;12258:9;:15;12268:4;12258:15;;;;;;;;;;;;;;;:38;;;;12328:6;12311:9;:13;12321:2;12311:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12378:2;12363:26;;12372:4;12363:26;;;12382:6;12363:26;;;;;;:::i;:::-;;;;;;;;12402:37;12422:4;12428:2;12432:6;12402:19;:37::i;:::-;11877:570;11799:648;;;:::o;19827:301::-;19866:23;19892:24;19910:4;19892:9;:24::i;:::-;19866:50;;19927:20;19950:15;19927:38;;19998:18;;19982:12;:34;19978:100;;20048:18;;20033:33;;19978:100;20090:30;20107:12;20090:16;:30::i;:::-;19855:273;;19827:301::o;8143:98::-;8201:7;8232:1;8228;:5;;;;:::i;:::-;8221:12;;8143:98;;;;:::o;8249:::-;8307:7;8338:1;8334;:5;;;;:::i;:::-;8327:12;;8249:98;;;;:::o;14282:91::-;;;;:::o;14381:90::-;;;;:::o;19421:396::-;19487:21;19525:1;19511:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19487:40;;19556:4;19538;19543:1;19538:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19582:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19572:4;19577:1;19572:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;19616:16;:67;;;19698:11;19724:1;19740:4;19759:9;;;;;;;;;;;19783:15;19616:193;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19476:341;19421:396;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:222::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;4977:222;;;;:::o;5205:329::-;5264:6;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5205:329;;;;:::o;5540:60::-;5568:3;5589:5;5582:12;;5540:60;;;:::o;5606:142::-;5656:9;5689:53;5707:34;5716:24;5734:5;5716:24;:::i;:::-;5707:34;:::i;:::-;5689:53;:::i;:::-;5676:66;;5606:142;;;:::o;5754:126::-;5804:9;5837:37;5868:5;5837:37;:::i;:::-;5824:50;;5754:126;;;:::o;5886:152::-;5962:9;5995:37;6026:5;5995:37;:::i;:::-;5982:50;;5886:152;;;:::o;6044:183::-;6157:63;6214:5;6157:63;:::i;:::-;6152:3;6145:76;6044:183;;:::o;6233:274::-;6352:4;6390:2;6379:9;6375:18;6367:26;;6403:97;6497:1;6486:9;6482:17;6473:6;6403:97;:::i;:::-;6233:274;;;;:::o;6513:553::-;6690:4;6728:3;6717:9;6713:19;6705:27;;6742:71;6810:1;6799:9;6795:17;6786:6;6742:71;:::i;:::-;6823:72;6891:2;6880:9;6876:18;6867:6;6823:72;:::i;:::-;6905;6973:2;6962:9;6958:18;6949:6;6905:72;:::i;:::-;6987;7055:2;7044:9;7040:18;7031:6;6987:72;:::i;:::-;6513:553;;;;;;;:::o;7072:116::-;7142:21;7157:5;7142:21;:::i;:::-;7135:5;7132:32;7122:60;;7178:1;7175;7168:12;7122:60;7072:116;:::o;7194:133::-;7237:5;7275:6;7262:20;7253:29;;7291:30;7315:5;7291:30;:::i;:::-;7194:133;;;;:::o;7333:468::-;7398:6;7406;7455:2;7443:9;7434:7;7430:23;7426:32;7423:119;;;7461:79;;:::i;:::-;7423:119;7581:1;7606:53;7651:7;7642:6;7631:9;7627:22;7606:53;:::i;:::-;7596:63;;7552:117;7708:2;7734:50;7776:7;7767:6;7756:9;7752:22;7734:50;:::i;:::-;7724:60;;7679:115;7333:468;;;;;:::o;7807:474::-;7875:6;7883;7932:2;7920:9;7911:7;7907:23;7903:32;7900:119;;;7938:79;;:::i;:::-;7900:119;8058:1;8083:53;8128:7;8119:6;8108:9;8104:22;8083:53;:::i;:::-;8073:63;;8029:117;8185:2;8211:53;8256:7;8247:6;8236:9;8232:22;8211:53;:::i;:::-;8201:63;;8156:118;7807:474;;;;;:::o;8287:180::-;8335:77;8332:1;8325:88;8432:4;8429:1;8422:15;8456:4;8453:1;8446:15;8473:320;8517:6;8554:1;8548:4;8544:12;8534:22;;8601:1;8595:4;8591:12;8622:18;8612:81;;8678:4;8670:6;8666:17;8656:27;;8612:81;8740:2;8732:6;8729:14;8709:18;8706:38;8703:84;;8759:18;;:::i;:::-;8703:84;8524:269;8473:320;;;:::o;8799:180::-;8847:77;8844:1;8837:88;8944:4;8941:1;8934:15;8968:4;8965:1;8958:15;8985:191;9025:3;9044:20;9062:1;9044:20;:::i;:::-;9039:25;;9078:20;9096:1;9078:20;:::i;:::-;9073:25;;9121:1;9118;9114:9;9107:16;;9142:3;9139:1;9136:10;9133:36;;;9149:18;;:::i;:::-;9133:36;8985:191;;;;:::o;9182:167::-;9322:19;9318:1;9310:6;9306:14;9299:43;9182:167;:::o;9355:366::-;9497:3;9518:67;9582:2;9577:3;9518:67;:::i;:::-;9511:74;;9594:93;9683:3;9594:93;:::i;:::-;9712:2;9707:3;9703:12;9696:19;;9355:366;;;:::o;9727:419::-;9893:4;9931:2;9920:9;9916:18;9908:26;;9980:9;9974:4;9970:20;9966:1;9955:9;9951:17;9944:47;10008:131;10134:4;10008:131;:::i;:::-;10000:139;;9727:419;;;:::o;10152:251::-;10292:34;10288:1;10280:6;10276:14;10269:58;10361:34;10356:2;10348:6;10344:15;10337:59;10152:251;:::o;10409:366::-;10551:3;10572:67;10636:2;10631:3;10572:67;:::i;:::-;10565:74;;10648:93;10737:3;10648:93;:::i;:::-;10766:2;10761:3;10757:12;10750:19;;10409:366;;;:::o;10781:419::-;10947:4;10985:2;10974:9;10970:18;10962:26;;11034:9;11028:4;11024:20;11020:1;11009:9;11005:17;10998:47;11062:131;11188:4;11062:131;:::i;:::-;11054:139;;10781:419;;;:::o;11206:224::-;11346:34;11342:1;11334:6;11330:14;11323:58;11415:7;11410:2;11402:6;11398:15;11391:32;11206:224;:::o;11436:366::-;11578:3;11599:67;11663:2;11658:3;11599:67;:::i;:::-;11592:74;;11675:93;11764:3;11675:93;:::i;:::-;11793:2;11788:3;11784:12;11777:19;;11436:366;;;:::o;11808:419::-;11974:4;12012:2;12001:9;11997:18;11989:26;;12061:9;12055:4;12051:20;12047:1;12036:9;12032:17;12025:47;12089:131;12215:4;12089:131;:::i;:::-;12081:139;;11808:419;;;:::o;12233:232::-;12373:34;12369:1;12361:6;12357:14;12350:58;12442:15;12437:2;12429:6;12425:15;12418:40;12233:232;:::o;12471:366::-;12613:3;12634:67;12698:2;12693:3;12634:67;:::i;:::-;12627:74;;12710:93;12799:3;12710:93;:::i;:::-;12828:2;12823:3;12819:12;12812:19;;12471:366;;;:::o;12843:419::-;13009:4;13047:2;13036:9;13032:18;13024:26;;13096:9;13090:4;13086:20;13082:1;13071:9;13067:17;13060:47;13124:131;13250:4;13124:131;:::i;:::-;13116:139;;12843:419;;;:::o;13268:223::-;13408:34;13404:1;13396:6;13392:14;13385:58;13477:6;13472:2;13464:6;13460:15;13453:31;13268:223;:::o;13497:366::-;13639:3;13660:67;13724:2;13719:3;13660:67;:::i;:::-;13653:74;;13736:93;13825:3;13736:93;:::i;:::-;13854:2;13849:3;13845:12;13838:19;;13497:366;;;:::o;13869:419::-;14035:4;14073:2;14062:9;14058:18;14050:26;;14122:9;14116:4;14112:20;14108:1;14097:9;14093:17;14086:47;14150:131;14276:4;14150:131;:::i;:::-;14142:139;;13869:419;;;:::o;14294:221::-;14434:34;14430:1;14422:6;14418:14;14411:58;14503:4;14498:2;14490:6;14486:15;14479:29;14294:221;:::o;14521:366::-;14663:3;14684:67;14748:2;14743:3;14684:67;:::i;:::-;14677:74;;14760:93;14849:3;14760:93;:::i;:::-;14878:2;14873:3;14869:12;14862:19;;14521:366;;;:::o;14893:419::-;15059:4;15097:2;15086:9;15082:18;15074:26;;15146:9;15140:4;15136:20;15132:1;15121:9;15117:17;15110:47;15174:131;15300:4;15174:131;:::i;:::-;15166:139;;14893:419;;;:::o;15318:179::-;15458:31;15454:1;15446:6;15442:14;15435:55;15318:179;:::o;15503:366::-;15645:3;15666:67;15730:2;15725:3;15666:67;:::i;:::-;15659:74;;15742:93;15831:3;15742:93;:::i;:::-;15860:2;15855:3;15851:12;15844:19;;15503:366;;;:::o;15875:419::-;16041:4;16079:2;16068:9;16064:18;16056:26;;16128:9;16122:4;16118:20;16114:1;16103:9;16099:17;16092:47;16156:131;16282:4;16156:131;:::i;:::-;16148:139;;15875:419;;;:::o;16300:224::-;16440:34;16436:1;16428:6;16424:14;16417:58;16509:7;16504:2;16496:6;16492:15;16485:32;16300:224;:::o;16530:366::-;16672:3;16693:67;16757:2;16752:3;16693:67;:::i;:::-;16686:74;;16769:93;16858:3;16769:93;:::i;:::-;16887:2;16882:3;16878:12;16871:19;;16530:366;;;:::o;16902:419::-;17068:4;17106:2;17095:9;17091:18;17083:26;;17155:9;17149:4;17145:20;17141:1;17130:9;17126:17;17119:47;17183:131;17309:4;17183:131;:::i;:::-;17175:139;;16902:419;;;:::o;17327:222::-;17467:34;17463:1;17455:6;17451:14;17444:58;17536:5;17531:2;17523:6;17519:15;17512:30;17327:222;:::o;17555:366::-;17697:3;17718:67;17782:2;17777:3;17718:67;:::i;:::-;17711:74;;17794:93;17883:3;17794:93;:::i;:::-;17912:2;17907:3;17903:12;17896:19;;17555:366;;;:::o;17927:419::-;18093:4;18131:2;18120:9;18116:18;18108:26;;18180:9;18174:4;18170:20;18166:1;18155:9;18151:17;18144:47;18208:131;18334:4;18208:131;:::i;:::-;18200:139;;17927:419;;;:::o;18352:179::-;18492:31;18488:1;18480:6;18476:14;18469:55;18352:179;:::o;18537:366::-;18679:3;18700:67;18764:2;18759:3;18700:67;:::i;:::-;18693:74;;18776:93;18865:3;18776:93;:::i;:::-;18894:2;18889:3;18885:12;18878:19;;18537:366;;;:::o;18909:419::-;19075:4;19113:2;19102:9;19098:18;19090:26;;19162:9;19156:4;19152:20;19148:1;19137:9;19133:17;19126:47;19190:131;19316:4;19190:131;:::i;:::-;19182:139;;18909:419;;;:::o;19334:194::-;19374:4;19394:20;19412:1;19394:20;:::i;:::-;19389:25;;19428:20;19446:1;19428:20;:::i;:::-;19423:25;;19472:1;19469;19465:9;19457:17;;19496:1;19490:4;19487:11;19484:37;;;19501:18;;:::i;:::-;19484:37;19334:194;;;;:::o;19534:182::-;19674:34;19670:1;19662:6;19658:14;19651:58;19534:182;:::o;19722:366::-;19864:3;19885:67;19949:2;19944:3;19885:67;:::i;:::-;19878:74;;19961:93;20050:3;19961:93;:::i;:::-;20079:2;20074:3;20070:12;20063:19;;19722:366;;;:::o;20094:419::-;20260:4;20298:2;20287:9;20283:18;20275:26;;20347:9;20341:4;20337:20;20333:1;20322:9;20318:17;20311:47;20375:131;20501:4;20375:131;:::i;:::-;20367:139;;20094:419;;;:::o;20519:231::-;20659:34;20655:1;20647:6;20643:14;20636:58;20728:14;20723:2;20715:6;20711:15;20704:39;20519:231;:::o;20756:366::-;20898:3;20919:67;20983:2;20978:3;20919:67;:::i;:::-;20912:74;;20995:93;21084:3;20995:93;:::i;:::-;21113:2;21108:3;21104:12;21097:19;;20756:366;;;:::o;21128:419::-;21294:4;21332:2;21321:9;21317:18;21309:26;;21381:9;21375:4;21371:20;21367:1;21356:9;21352:17;21345:47;21409:131;21535:4;21409:131;:::i;:::-;21401:139;;21128:419;;;:::o;21553:225::-;21693:34;21689:1;21681:6;21677:14;21670:58;21762:8;21757:2;21749:6;21745:15;21738:33;21553:225;:::o;21784:366::-;21926:3;21947:67;22011:2;22006:3;21947:67;:::i;:::-;21940:74;;22023:93;22112:3;22023:93;:::i;:::-;22141:2;22136:3;22132:12;22125:19;;21784:366;;;:::o;22156:419::-;22322:4;22360:2;22349:9;22345:18;22337:26;;22409:9;22403:4;22399:20;22395:1;22384:9;22380:17;22373:47;22437:131;22563:4;22437:131;:::i;:::-;22429:139;;22156:419;;;:::o;22581:410::-;22621:7;22644:20;22662:1;22644:20;:::i;:::-;22639:25;;22678:20;22696:1;22678:20;:::i;:::-;22673:25;;22733:1;22730;22726:9;22755:30;22773:11;22755:30;:::i;:::-;22744:41;;22934:1;22925:7;22921:15;22918:1;22915:22;22895:1;22888:9;22868:83;22845:139;;22964:18;;:::i;:::-;22845:139;22629:362;22581:410;;;;:::o;22997:180::-;23045:77;23042:1;23035:88;23142:4;23139:1;23132:15;23166:4;23163:1;23156:15;23183:185;23223:1;23240:20;23258:1;23240:20;:::i;:::-;23235:25;;23274:20;23292:1;23274:20;:::i;:::-;23269:25;;23313:1;23303:35;;23318:18;;:::i;:::-;23303:35;23360:1;23357;23353:9;23348:14;;23183:185;;;;:::o;23374:180::-;23422:77;23419:1;23412:88;23519:4;23516:1;23509:15;23543:4;23540:1;23533:15;23560:180;23608:77;23605:1;23598:88;23705:4;23702:1;23695:15;23729:4;23726:1;23719:15;23746:143;23803:5;23834:6;23828:13;23819:22;;23850:33;23877:5;23850:33;:::i;:::-;23746:143;;;;:::o;23895:351::-;23965:6;24014:2;24002:9;23993:7;23989:23;23985:32;23982:119;;;24020:79;;:::i;:::-;23982:119;24140:1;24165:64;24221:7;24212:6;24201:9;24197:22;24165:64;:::i;:::-;24155:74;;24111:128;23895:351;;;;:::o;24252:85::-;24297:7;24326:5;24315:16;;24252:85;;;:::o;24343:158::-;24401:9;24434:61;24452:42;24461:32;24487:5;24461:32;:::i;:::-;24452:42;:::i;:::-;24434:61;:::i;:::-;24421:74;;24343:158;;;:::o;24507:147::-;24602:45;24641:5;24602:45;:::i;:::-;24597:3;24590:58;24507:147;;:::o;24660:114::-;24727:6;24761:5;24755:12;24745:22;;24660:114;;;:::o;24780:184::-;24879:11;24913:6;24908:3;24901:19;24953:4;24948:3;24944:14;24929:29;;24780:184;;;;:::o;24970:132::-;25037:4;25060:3;25052:11;;25090:4;25085:3;25081:14;25073:22;;24970:132;;;:::o;25108:108::-;25185:24;25203:5;25185:24;:::i;:::-;25180:3;25173:37;25108:108;;:::o;25222:179::-;25291:10;25312:46;25354:3;25346:6;25312:46;:::i;:::-;25390:4;25385:3;25381:14;25367:28;;25222:179;;;;:::o;25407:113::-;25477:4;25509;25504:3;25500:14;25492:22;;25407:113;;;:::o;25556:732::-;25675:3;25704:54;25752:5;25704:54;:::i;:::-;25774:86;25853:6;25848:3;25774:86;:::i;:::-;25767:93;;25884:56;25934:5;25884:56;:::i;:::-;25963:7;25994:1;25979:284;26004:6;26001:1;25998:13;25979:284;;;26080:6;26074:13;26107:63;26166:3;26151:13;26107:63;:::i;:::-;26100:70;;26193:60;26246:6;26193:60;:::i;:::-;26183:70;;26039:224;26026:1;26023;26019:9;26014:14;;25979:284;;;25983:14;26279:3;26272:10;;25680:608;;;25556:732;;;;:::o;26294:831::-;26557:4;26595:3;26584:9;26580:19;26572:27;;26609:71;26677:1;26666:9;26662:17;26653:6;26609:71;:::i;:::-;26690:80;26766:2;26755:9;26751:18;26742:6;26690:80;:::i;:::-;26817:9;26811:4;26807:20;26802:2;26791:9;26787:18;26780:48;26845:108;26948:4;26939:6;26845:108;:::i;:::-;26837:116;;26963:72;27031:2;27020:9;27016:18;27007:6;26963:72;:::i;:::-;27045:73;27113:3;27102:9;27098:19;27089:6;27045:73;:::i;:::-;26294:831;;;;;;;;:::o
Swarm Source
ipfs://0c59f572b90f09d219f288e9994c633ca8b24d989ad67d17bc2c406dcf653235
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.