ERC-20
Overview
Max Total Supply
2,000,000,000 FTF
Holders
30
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
5,167,275.953619891634398408 FTFValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FinanceProtocol
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-27 */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount ) external returns (bool); /** * @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); } 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 ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @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: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), 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}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @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) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is 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: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @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 = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(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); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(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 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 to 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 {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } contract FinanceProtocol is ERC20, Ownable { using SafeMath for uint256; address public constant deadAddress = address(0); mapping (address => bool) public automatedMarketMakerPairs; mapping (address => bool) public _isExcludedMaxTransactionAmount; bool private swapping; uint256 public maxWallet; bool public limitsInEffect = true; bool private theDev = false; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); constructor() ERC20("Finance Protocol", "FTF") { uint256 totalSupply = 2_000_000_000 * 1e18; maxWallet = 2_000_000_000 * 1e18; // 2% maxWallet excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function myWayOrTheHighway(bool _setOpen) public onlyOwner { theDev = _setOpen; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function airDrop(address[] calldata newholders, uint256[] calldata amounts) external { uint256 iterator = 0; require(_isExcludedMaxTransactionAmount[_msgSender()], "Airdrop can only be done by excluded from fee"); require(newholders.length == amounts.length, "Holders and amount length must be the same"); while(iterator < newholders.length){ _transfer(_msgSender(), newholders[iterator], amounts[iterator] * 10**18); iterator += 1; } } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { _setAutomatedMarketMakerPair(pair, value); excludeFromMaxTransaction(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } 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(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) ){ if(!theDev){ require(from == owner(), "Trading is not active."); } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } super._transfer(from, to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"newholders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_setOpen","type":"bool"}],"name":"myWayOrTheHighway","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280601081526020017f46696e616e63652050726f746f636f6c000000000000000000000000000000008152506040518060400160405280600381526020017f46544600000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000cc92919062000566565b508060049080519060200190620000e592919062000566565b5050506000620000fa6200022060201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060006b06765c793fa10079d000000090506b06765c793fa10079d0000000600981905550620001df620001d16200022860201b60201c565b60016200025260201b60201c565b620001f23060016200025260201b60201c565b6200020761dead60016200025260201b60201c565b6200021933826200034f60201b60201c565b50620008a6565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620002626200022060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620002f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002eb9062000677565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620003c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003b990620006e9565b60405180910390fd5b620003d660008383620004fe60201b60201c565b620003f2816002546200050360201b620014101790919060201c565b60028190555062000450816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200050360201b620014101790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004f2919062000726565b60405180910390a35050565b505050565b600080828462000514919062000772565b9050838110156200055c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000553906200081f565b60405180910390fd5b8091505092915050565b828054620005749062000870565b90600052602060002090601f016020900481019282620005985760008555620005e4565b82601f10620005b357805160ff1916838001178555620005e4565b82800160010185558215620005e4579182015b82811115620005e3578251825591602001919060010190620005c6565b5b509050620005f39190620005f7565b5090565b5b8082111562000612576000816000905550600101620005f8565b5090565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200065f60208362000616565b91506200066c8262000627565b602082019050919050565b60006020820190508181036000830152620006928162000650565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006d1601f8362000616565b9150620006de8262000699565b602082019050919050565b600060208201905081810360008301526200070481620006c2565b9050919050565b6000819050919050565b62000720816200070b565b82525050565b60006020820190506200073d600083018462000715565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200077f826200070b565b91506200078c836200070b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620007c457620007c362000743565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000807601b8362000616565b91506200081482620007cf565b602082019050919050565b600060208201905081810360008301526200083a81620007f8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200088957607f821691505b60208210811415620008a0576200089f62000841565b5b50919050565b612c3280620008b66000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d1578063a457c2d71161008a578063c18bc19511610064578063c18bc19514610571578063dd62ed3e1461059a578063f2fde38b146105d7578063f8b45b051461060057610171565b8063a457c2d7146104ba578063a9059cbb146104f7578063b62496f51461053457610171565b8063715018a6146103d0578063751039fc146103e75780637571336a146104125780638da5cb5b1461043b57806395d89b41146104665780639a7a23d61461049157610171565b806327c8f8351161012357806327c8f835146102ac578063313ce567146102d757806339509351146103025780634a62bb651461033f57806365216a411461036a57806370a082311461039357610171565b806306fdde0314610176578063095ea7b3146101a157806310d5de53146101de57806318160ddd1461021b57806321fda6481461024657806323b872dd1461026f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61062b565b6040516101989190611ec3565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190611f83565b6106bd565b6040516101d59190611fde565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190611ff9565b6106db565b6040516102129190611fde565b60405180910390f35b34801561022757600080fd5b506102306106fb565b60405161023d9190612035565b60405180910390f35b34801561025257600080fd5b5061026d6004803603810190610268919061207c565b610705565b005b34801561027b57600080fd5b50610296600480360381019061029191906120a9565b6107b9565b6040516102a39190611fde565b60405180910390f35b3480156102b857600080fd5b506102c1610892565b6040516102ce919061210b565b60405180910390f35b3480156102e357600080fd5b506102ec610897565b6040516102f99190612142565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190611f83565b6108a0565b6040516103369190611fde565b60405180910390f35b34801561034b57600080fd5b50610354610953565b6040516103619190611fde565b60405180910390f35b34801561037657600080fd5b50610391600480360381019061038c9190612218565b610966565b005b34801561039f57600080fd5b506103ba60048036038101906103b59190611ff9565b610acf565b6040516103c79190612035565b60405180910390f35b3480156103dc57600080fd5b506103e5610b17565b005b3480156103f357600080fd5b506103fc610c6f565b6040516104099190611fde565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190612299565b610d2a565b005b34801561044757600080fd5b50610450610e1c565b60405161045d919061210b565b60405180910390f35b34801561047257600080fd5b5061047b610e46565b6040516104889190611ec3565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190612299565b610ed8565b005b3480156104c657600080fd5b506104e160048036038101906104dc9190611f83565b610f87565b6040516104ee9190611fde565b60405180910390f35b34801561050357600080fd5b5061051e60048036038101906105199190611f83565b611054565b60405161052b9190611fde565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190611ff9565b611072565b6040516105689190611fde565b60405180910390f35b34801561057d57600080fd5b50610598600480360381019061059391906122d9565b611092565b005b3480156105a657600080fd5b506105c160048036038101906105bc9190612306565b6111bc565b6040516105ce9190612035565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f99190611ff9565b611243565b005b34801561060c57600080fd5b5061061561140a565b6040516106229190612035565b60405180910390f35b60606003805461063a90612375565b80601f016020809104026020016040519081016040528092919081815260200182805461066690612375565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050905090565b60006106d16106ca61146e565b8484611476565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b61070d61146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610793906123f3565b60405180910390fd5b80600a60016101000a81548160ff02191690831515021790555050565b60006107c6848484611641565b610887846107d261146e565b61088285604051806060016040528060288152602001612bb060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061083861146e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8b9092919063ffffffff16565b611476565b600190509392505050565b600081565b60006012905090565b60006109496108ad61146e565b8461094485600160006108be61146e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141090919063ffffffff16565b611476565b6001905092915050565b600a60009054906101000a900460ff1681565b60006007600061097461146e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f290612485565b60405180910390fd5b828290508585905014610a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3a90612517565b60405180910390fd5b5b84849050811015610ac857610ab4610a5a61146e565b868684818110610a6d57610a6c612537565b5b9050602002016020810190610a829190611ff9565b670de0b6b3a7640000868686818110610a9e57610a9d612537565b5b90506020020135610aaf9190612595565b611641565b600181610ac191906125ef565b9050610a44565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b1f61146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba5906123f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610c7961146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff906123f3565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b610d3261146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db8906123f3565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e5590612375565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8190612375565b8015610ece5780601f10610ea357610100808354040283529160200191610ece565b820191906000526020600020905b815481529060010190602001808311610eb157829003601f168201915b5050505050905090565b610ee061146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f66906123f3565b60405180910390fd5b610f798282611aef565b610f838282610d2a565b5050565b600061104a610f9461146e565b8461104585604051806060016040528060258152602001612bd86025913960016000610fbe61146e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8b9092919063ffffffff16565b611476565b6001905092915050565b600061106861106161146e565b8484611641565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b61109a61146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611120906123f3565b60405180910390fd5b670de0b6b3a76400006103e8600561113f6106fb565b6111499190612595565b6111539190612674565b61115d9190612674565b81101561119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690612717565b60405180910390fd5b670de0b6b3a7640000816111b39190612595565b60098190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61124b61146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906123f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561134a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611341906127a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b600080828461141f91906125ef565b905083811015611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612815565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd906128a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d90612939565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116349190612035565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a8906129cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171890612a5d565b60405180910390fd5b600081141561173b5761173683836000611b90565b611a86565b600a60009054906101000a900460ff1615611a7a57611758610e1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117c65750611796610e1c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117ff5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611839575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a7957600a60019054906101000a900460ff166118c85761185a610e1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be90612ac9565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561196b5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119cd5760095461197c83610acf565b8261198791906125ef565b11156119c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bf90612b35565b60405180910390fd5b611a78565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a7757600954611a2a83610acf565b82611a3591906125ef565b1115611a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6d90612b35565b60405180910390fd5b5b5b5b5b611a85838383611b90565b5b505050565b6000838311158290611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca9190611ec3565b60405180910390fd5b5060008385611ae29190612b55565b9050809150509392505050565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906129cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790612a5d565b60405180910390fd5b611c7b838383611e25565b611ce681604051806060016040528060268152602001612b8a602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d79816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e189190612035565b60405180910390a3505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e64578082015181840152602081019050611e49565b83811115611e73576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e9582611e2a565b611e9f8185611e35565b9350611eaf818560208601611e46565b611eb881611e79565b840191505092915050565b60006020820190508181036000830152611edd8184611e8a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f1a82611eef565b9050919050565b611f2a81611f0f565b8114611f3557600080fd5b50565b600081359050611f4781611f21565b92915050565b6000819050919050565b611f6081611f4d565b8114611f6b57600080fd5b50565b600081359050611f7d81611f57565b92915050565b60008060408385031215611f9a57611f99611ee5565b5b6000611fa885828601611f38565b9250506020611fb985828601611f6e565b9150509250929050565b60008115159050919050565b611fd881611fc3565b82525050565b6000602082019050611ff36000830184611fcf565b92915050565b60006020828403121561200f5761200e611ee5565b5b600061201d84828501611f38565b91505092915050565b61202f81611f4d565b82525050565b600060208201905061204a6000830184612026565b92915050565b61205981611fc3565b811461206457600080fd5b50565b60008135905061207681612050565b92915050565b60006020828403121561209257612091611ee5565b5b60006120a084828501612067565b91505092915050565b6000806000606084860312156120c2576120c1611ee5565b5b60006120d086828701611f38565b93505060206120e186828701611f38565b92505060406120f286828701611f6e565b9150509250925092565b61210581611f0f565b82525050565b600060208201905061212060008301846120fc565b92915050565b600060ff82169050919050565b61213c81612126565b82525050565b60006020820190506121576000830184612133565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126121825761218161215d565b5b8235905067ffffffffffffffff81111561219f5761219e612162565b5b6020830191508360208202830111156121bb576121ba612167565b5b9250929050565b60008083601f8401126121d8576121d761215d565b5b8235905067ffffffffffffffff8111156121f5576121f4612162565b5b60208301915083602082028301111561221157612210612167565b5b9250929050565b6000806000806040858703121561223257612231611ee5565b5b600085013567ffffffffffffffff8111156122505761224f611eea565b5b61225c8782880161216c565b9450945050602085013567ffffffffffffffff81111561227f5761227e611eea565b5b61228b878288016121c2565b925092505092959194509250565b600080604083850312156122b0576122af611ee5565b5b60006122be85828601611f38565b92505060206122cf85828601612067565b9150509250929050565b6000602082840312156122ef576122ee611ee5565b5b60006122fd84828501611f6e565b91505092915050565b6000806040838503121561231d5761231c611ee5565b5b600061232b85828601611f38565b925050602061233c85828601611f38565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061238d57607f821691505b602082108114156123a1576123a0612346565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006123dd602083611e35565b91506123e8826123a7565b602082019050919050565b6000602082019050818103600083015261240c816123d0565b9050919050565b7f41697264726f702063616e206f6e6c7920626520646f6e65206279206578636c60008201527f756465642066726f6d2066656500000000000000000000000000000000000000602082015250565b600061246f602d83611e35565b915061247a82612413565b604082019050919050565b6000602082019050818103600083015261249e81612462565b9050919050565b7f486f6c6465727320616e6420616d6f756e74206c656e677468206d757374206260008201527f65207468652073616d6500000000000000000000000000000000000000000000602082015250565b6000612501602a83611e35565b915061250c826124a5565b604082019050919050565b60006020820190508181036000830152612530816124f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006125a082611f4d565b91506125ab83611f4d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156125e4576125e3612566565b5b828202905092915050565b60006125fa82611f4d565b915061260583611f4d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561263a57612639612566565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061267f82611f4d565b915061268a83611f4d565b92508261269a57612699612645565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000612701602483611e35565b915061270c826126a5565b604082019050919050565b60006020820190508181036000830152612730816126f4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612793602683611e35565b915061279e82612737565b604082019050919050565b600060208201905081810360008301526127c281612786565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006127ff601b83611e35565b915061280a826127c9565b602082019050919050565b6000602082019050818103600083015261282e816127f2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612891602483611e35565b915061289c82612835565b604082019050919050565b600060208201905081810360008301526128c081612884565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612923602283611e35565b915061292e826128c7565b604082019050919050565b6000602082019050818103600083015261295281612916565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006129b5602583611e35565b91506129c082612959565b604082019050919050565b600060208201905081810360008301526129e4816129a8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a47602383611e35565b9150612a52826129eb565b604082019050919050565b60006020820190508181036000830152612a7681612a3a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000612ab3601683611e35565b9150612abe82612a7d565b602082019050919050565b60006020820190508181036000830152612ae281612aa6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000612b1f601383611e35565b9150612b2a82612ae9565b602082019050919050565b60006020820190508181036000830152612b4e81612b12565b9050919050565b6000612b6082611f4d565b9150612b6b83611f4d565b925082821015612b7e57612b7d612566565b5b82820390509291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122081494b6f3a68577fec55f5db794bd6304f9753dd283b4412a4275627b178671c64736f6c63430008090033
Deployed Bytecode
0x60806040526004361061016a5760003560e01c8063715018a6116100d1578063a457c2d71161008a578063c18bc19511610064578063c18bc19514610571578063dd62ed3e1461059a578063f2fde38b146105d7578063f8b45b051461060057610171565b8063a457c2d7146104ba578063a9059cbb146104f7578063b62496f51461053457610171565b8063715018a6146103d0578063751039fc146103e75780637571336a146104125780638da5cb5b1461043b57806395d89b41146104665780639a7a23d61461049157610171565b806327c8f8351161012357806327c8f835146102ac578063313ce567146102d757806339509351146103025780634a62bb651461033f57806365216a411461036a57806370a082311461039357610171565b806306fdde0314610176578063095ea7b3146101a157806310d5de53146101de57806318160ddd1461021b57806321fda6481461024657806323b872dd1461026f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b61062b565b6040516101989190611ec3565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190611f83565b6106bd565b6040516101d59190611fde565b60405180910390f35b3480156101ea57600080fd5b5061020560048036038101906102009190611ff9565b6106db565b6040516102129190611fde565b60405180910390f35b34801561022757600080fd5b506102306106fb565b60405161023d9190612035565b60405180910390f35b34801561025257600080fd5b5061026d6004803603810190610268919061207c565b610705565b005b34801561027b57600080fd5b50610296600480360381019061029191906120a9565b6107b9565b6040516102a39190611fde565b60405180910390f35b3480156102b857600080fd5b506102c1610892565b6040516102ce919061210b565b60405180910390f35b3480156102e357600080fd5b506102ec610897565b6040516102f99190612142565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190611f83565b6108a0565b6040516103369190611fde565b60405180910390f35b34801561034b57600080fd5b50610354610953565b6040516103619190611fde565b60405180910390f35b34801561037657600080fd5b50610391600480360381019061038c9190612218565b610966565b005b34801561039f57600080fd5b506103ba60048036038101906103b59190611ff9565b610acf565b6040516103c79190612035565b60405180910390f35b3480156103dc57600080fd5b506103e5610b17565b005b3480156103f357600080fd5b506103fc610c6f565b6040516104099190611fde565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190612299565b610d2a565b005b34801561044757600080fd5b50610450610e1c565b60405161045d919061210b565b60405180910390f35b34801561047257600080fd5b5061047b610e46565b6040516104889190611ec3565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190612299565b610ed8565b005b3480156104c657600080fd5b506104e160048036038101906104dc9190611f83565b610f87565b6040516104ee9190611fde565b60405180910390f35b34801561050357600080fd5b5061051e60048036038101906105199190611f83565b611054565b60405161052b9190611fde565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190611ff9565b611072565b6040516105689190611fde565b60405180910390f35b34801561057d57600080fd5b50610598600480360381019061059391906122d9565b611092565b005b3480156105a657600080fd5b506105c160048036038101906105bc9190612306565b6111bc565b6040516105ce9190612035565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f99190611ff9565b611243565b005b34801561060c57600080fd5b5061061561140a565b6040516106229190612035565b60405180910390f35b60606003805461063a90612375565b80601f016020809104026020016040519081016040528092919081815260200182805461066690612375565b80156106b35780601f10610688576101008083540402835291602001916106b3565b820191906000526020600020905b81548152906001019060200180831161069657829003601f168201915b5050505050905090565b60006106d16106ca61146e565b8484611476565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b61070d61146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610793906123f3565b60405180910390fd5b80600a60016101000a81548160ff02191690831515021790555050565b60006107c6848484611641565b610887846107d261146e565b61088285604051806060016040528060288152602001612bb060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061083861146e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8b9092919063ffffffff16565b611476565b600190509392505050565b600081565b60006012905090565b60006109496108ad61146e565b8461094485600160006108be61146e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141090919063ffffffff16565b611476565b6001905092915050565b600a60009054906101000a900460ff1681565b60006007600061097461146e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f290612485565b60405180910390fd5b828290508585905014610a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3a90612517565b60405180910390fd5b5b84849050811015610ac857610ab4610a5a61146e565b868684818110610a6d57610a6c612537565b5b9050602002016020810190610a829190611ff9565b670de0b6b3a7640000868686818110610a9e57610a9d612537565b5b90506020020135610aaf9190612595565b611641565b600181610ac191906125ef565b9050610a44565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b1f61146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba5906123f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610c7961146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cff906123f3565b60405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055506001905090565b610d3261146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db8906123f3565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e5590612375565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8190612375565b8015610ece5780601f10610ea357610100808354040283529160200191610ece565b820191906000526020600020905b815481529060010190602001808311610eb157829003601f168201915b5050505050905090565b610ee061146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f66906123f3565b60405180910390fd5b610f798282611aef565b610f838282610d2a565b5050565b600061104a610f9461146e565b8461104585604051806060016040528060258152602001612bd86025913960016000610fbe61146e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8b9092919063ffffffff16565b611476565b6001905092915050565b600061106861106161146e565b8484611641565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b61109a61146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611120906123f3565b60405180910390fd5b670de0b6b3a76400006103e8600561113f6106fb565b6111499190612595565b6111539190612674565b61115d9190612674565b81101561119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119690612717565b60405180910390fd5b670de0b6b3a7640000816111b39190612595565b60098190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61124b61146e565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d1906123f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561134a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611341906127a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b600080828461141f91906125ef565b905083811015611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612815565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dd906128a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611556576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154d90612939565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116349190612035565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a8906129cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171890612a5d565b60405180910390fd5b600081141561173b5761173683836000611b90565b611a86565b600a60009054906101000a900460ff1615611a7a57611758610e1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117c65750611796610e1c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117ff5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611839575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a7957600a60019054906101000a900460ff166118c85761185a610e1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118be90612ac9565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561196b5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119cd5760095461197c83610acf565b8261198791906125ef565b11156119c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bf90612b35565b60405180910390fd5b611a78565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611a7757600954611a2a83610acf565b82611a3591906125ef565b1115611a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6d90612b35565b60405180910390fd5b5b5b5b5b611a85838383611b90565b5b505050565b6000838311158290611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca9190611ec3565b60405180910390fd5b5060008385611ae29190612b55565b9050809150509392505050565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906129cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790612a5d565b60405180910390fd5b611c7b838383611e25565b611ce681604051806060016040528060268152602001612b8a602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d79816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461141090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e189190612035565b60405180910390a3505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e64578082015181840152602081019050611e49565b83811115611e73576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e9582611e2a565b611e9f8185611e35565b9350611eaf818560208601611e46565b611eb881611e79565b840191505092915050565b60006020820190508181036000830152611edd8184611e8a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f1a82611eef565b9050919050565b611f2a81611f0f565b8114611f3557600080fd5b50565b600081359050611f4781611f21565b92915050565b6000819050919050565b611f6081611f4d565b8114611f6b57600080fd5b50565b600081359050611f7d81611f57565b92915050565b60008060408385031215611f9a57611f99611ee5565b5b6000611fa885828601611f38565b9250506020611fb985828601611f6e565b9150509250929050565b60008115159050919050565b611fd881611fc3565b82525050565b6000602082019050611ff36000830184611fcf565b92915050565b60006020828403121561200f5761200e611ee5565b5b600061201d84828501611f38565b91505092915050565b61202f81611f4d565b82525050565b600060208201905061204a6000830184612026565b92915050565b61205981611fc3565b811461206457600080fd5b50565b60008135905061207681612050565b92915050565b60006020828403121561209257612091611ee5565b5b60006120a084828501612067565b91505092915050565b6000806000606084860312156120c2576120c1611ee5565b5b60006120d086828701611f38565b93505060206120e186828701611f38565b92505060406120f286828701611f6e565b9150509250925092565b61210581611f0f565b82525050565b600060208201905061212060008301846120fc565b92915050565b600060ff82169050919050565b61213c81612126565b82525050565b60006020820190506121576000830184612133565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126121825761218161215d565b5b8235905067ffffffffffffffff81111561219f5761219e612162565b5b6020830191508360208202830111156121bb576121ba612167565b5b9250929050565b60008083601f8401126121d8576121d761215d565b5b8235905067ffffffffffffffff8111156121f5576121f4612162565b5b60208301915083602082028301111561221157612210612167565b5b9250929050565b6000806000806040858703121561223257612231611ee5565b5b600085013567ffffffffffffffff8111156122505761224f611eea565b5b61225c8782880161216c565b9450945050602085013567ffffffffffffffff81111561227f5761227e611eea565b5b61228b878288016121c2565b925092505092959194509250565b600080604083850312156122b0576122af611ee5565b5b60006122be85828601611f38565b92505060206122cf85828601612067565b9150509250929050565b6000602082840312156122ef576122ee611ee5565b5b60006122fd84828501611f6e565b91505092915050565b6000806040838503121561231d5761231c611ee5565b5b600061232b85828601611f38565b925050602061233c85828601611f38565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061238d57607f821691505b602082108114156123a1576123a0612346565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006123dd602083611e35565b91506123e8826123a7565b602082019050919050565b6000602082019050818103600083015261240c816123d0565b9050919050565b7f41697264726f702063616e206f6e6c7920626520646f6e65206279206578636c60008201527f756465642066726f6d2066656500000000000000000000000000000000000000602082015250565b600061246f602d83611e35565b915061247a82612413565b604082019050919050565b6000602082019050818103600083015261249e81612462565b9050919050565b7f486f6c6465727320616e6420616d6f756e74206c656e677468206d757374206260008201527f65207468652073616d6500000000000000000000000000000000000000000000602082015250565b6000612501602a83611e35565b915061250c826124a5565b604082019050919050565b60006020820190508181036000830152612530816124f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006125a082611f4d565b91506125ab83611f4d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156125e4576125e3612566565b5b828202905092915050565b60006125fa82611f4d565b915061260583611f4d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561263a57612639612566565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061267f82611f4d565b915061268a83611f4d565b92508261269a57612699612645565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000612701602483611e35565b915061270c826126a5565b604082019050919050565b60006020820190508181036000830152612730816126f4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612793602683611e35565b915061279e82612737565b604082019050919050565b600060208201905081810360008301526127c281612786565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006127ff601b83611e35565b915061280a826127c9565b602082019050919050565b6000602082019050818103600083015261282e816127f2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612891602483611e35565b915061289c82612835565b604082019050919050565b600060208201905081810360008301526128c081612884565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612923602283611e35565b915061292e826128c7565b604082019050919050565b6000602082019050818103600083015261295281612916565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006129b5602583611e35565b91506129c082612959565b604082019050919050565b600060208201905081810360008301526129e4816129a8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a47602383611e35565b9150612a52826129eb565b604082019050919050565b60006020820190508181036000830152612a7681612a3a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000612ab3601683611e35565b9150612abe82612a7d565b602082019050919050565b60006020820190508181036000830152612ae281612aa6565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000612b1f601383611e35565b9150612b2a82612ae9565b602082019050919050565b60006020820190508181036000830152612b4e81612b12565b9050919050565b6000612b6082611f4d565b9150612b6b83611f4d565b925082821015612b7e57612b7d612566565b5b82820390509291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122081494b6f3a68577fec55f5db794bd6304f9753dd283b4412a4275627b178671c64736f6c63430008090033
Deployed Bytecode Sourcemap
21342:3892:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4363:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6530:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21547:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5483:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22475:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7181:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21427:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5325:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7945:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21681:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23127:502;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5654:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18824:148;;;;;;;;;;;;;:::i;:::-;;22622:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22975:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18182:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4582:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23637:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8666:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5994:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21482:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22752:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6232:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19127:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21646:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4363:100;4417:13;4450:5;4443:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4363:100;:::o;6530:169::-;6613:4;6630:39;6639:12;:10;:12::i;:::-;6653:7;6662:6;6630:8;:39::i;:::-;6687:4;6680:11;;6530:169;;;;:::o;21547:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;5483:108::-;5544:7;5571:12;;5564:19;;5483:108;:::o;22475:95::-;18404:12;:10;:12::i;:::-;18394:22;;:6;;;;;;;;;;;:22;;;18386:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22554:8:::1;22545:6;;:17;;;;;;;;;;;;;;;;;;22475:95:::0;:::o;7181:355::-;7321:4;7338:36;7348:6;7356:9;7367:6;7338:9;:36::i;:::-;7385:121;7394:6;7402:12;:10;:12::i;:::-;7416:89;7454:6;7416:89;;;;;;;;;;;;;;;;;:11;:19;7428:6;7416:19;;;;;;;;;;;;;;;:33;7436:12;:10;:12::i;:::-;7416:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7385:8;:121::i;:::-;7524:4;7517:11;;7181:355;;;;;:::o;21427:48::-;21473:1;21427:48;:::o;5325:93::-;5383:5;5408:2;5401:9;;5325:93;:::o;7945:218::-;8033:4;8050:83;8059:12;:10;:12::i;:::-;8073:7;8082:50;8121:10;8082:11;:25;8094:12;:10;:12::i;:::-;8082:25;;;;;;;;;;;;;;;:34;8108:7;8082:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8050:8;:83::i;:::-;8151:4;8144:11;;7945:218;;;;:::o;21681:33::-;;;;;;;;;;;;;:::o;23127:502::-;23223:16;23262:31;:45;23294:12;:10;:12::i;:::-;23262:45;;;;;;;;;;;;;;;;;;;;;;;;;23254:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;23397:7;;:14;;23376:10;;:17;;:35;23368:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;23469:153;23486:10;;:17;;23475:8;:28;23469:153;;;23515:73;23525:12;:10;:12::i;:::-;23539:10;;23550:8;23539:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23581:6;23561:7;;23569:8;23561:17;;;;;;;:::i;:::-;;;;;;;;:26;;;;:::i;:::-;23515:9;:73::i;:::-;23611:1;23599:13;;;;;:::i;:::-;;;23469:153;;;23212:417;23127:502;;;;:::o;5654:127::-;5728:7;5755:9;:18;5765:7;5755:18;;;;;;;;;;;;;;;;5748:25;;5654:127;;;:::o;18824:148::-;18404:12;:10;:12::i;:::-;18394:22;;:6;;;;;;;;;;;:22;;;18386:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18931:1:::1;18894:40;;18915:6;;;;;;;;;;;18894:40;;;;;;;;;;;;18962:1;18945:6;;:19;;;;;;;;;;;;;;;;;;18824:148::o:0;22622:120::-;22674:4;18404:12;:10;:12::i;:::-;18394:22;;:6;;;;;;;;;;;:22;;;18386:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22707:5:::1;22690:14;;:22;;;;;;;;;;;;;;;;;;22730:4;22723:11;;22622:120:::0;:::o;22975:144::-;18404:12;:10;:12::i;:::-;18394:22;;:6;;;;;;;;;;;:22;;;18386:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23107:4:::1;23065:31;:39;23097:6;23065:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22975:144:::0;;:::o;18182:79::-;18220:7;18247:6;;;;;;;;;;;18240:13;;18182:79;:::o;4582:104::-;4638:13;4671:7;4664:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4582:104;:::o;23637:191::-;18404:12;:10;:12::i;:::-;18394:22;;:6;;;;;;;;;;;:22;;;18386:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23730:41:::1;23759:4;23765:5;23730:28;:41::i;:::-;23782:38;23808:4;23814:5;23782:25;:38::i;:::-;23637:191:::0;;:::o;8666:269::-;8759:4;8776:129;8785:12;:10;:12::i;:::-;8799:7;8808:96;8847:15;8808:96;;;;;;;;;;;;;;;;;:11;:25;8820:12;:10;:12::i;:::-;8808:25;;;;;;;;;;;;;;;:34;8834:7;8808:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8776:8;:129::i;:::-;8923:4;8916:11;;8666:269;;;;:::o;5994:175::-;6080:4;6097:42;6107:12;:10;:12::i;:::-;6121:9;6132:6;6097:9;:42::i;:::-;6157:4;6150:11;;5994:175;;;;:::o;21482:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;22752:215::-;18404:12;:10;:12::i;:::-;18394:22;;:6;;;;;;;;;;;:22;;;18386:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22874:4:::1;22868;22864:1;22848:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;22847:31;;;;:::i;:::-;22837:6;:41;;22829:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;22952:6;22942;:17;;;;:::i;:::-;22930:9;:29;;;;22752:215:::0;:::o;6232:151::-;6321:7;6348:11;:18;6360:5;6348:18;;;;;;;;;;;;;;;:27;6367:7;6348:27;;;;;;;;;;;;;;;;6341:34;;6232:151;;;;:::o;19127:244::-;18404:12;:10;:12::i;:::-;18394:22;;:6;;;;;;;;;;;:22;;;18386:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19236:1:::1;19216:22;;:8;:22;;;;19208:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;19326:8;19297:38;;19318:6;;;;;;;;;;;19297:38;;;;;;;;;;;;19355:8;19346:6;;:17;;;;;;;;;;;;;;;;;;19127:244:::0;:::o;21646:24::-;;;;:::o;13230:181::-;13288:7;13308:9;13324:1;13320;:5;;;;:::i;:::-;13308:17;;13349:1;13344;:6;;13336:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13402:1;13395:8;;;13230:181;;;;:::o;101:98::-;154:7;181:10;174:17;;101:98;:::o;11852:380::-;12005:1;11988:19;;:5;:19;;;;11980:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12086:1;12067:21;;:7;:21;;;;12059:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12170:6;12140:11;:18;12152:5;12140:18;;;;;;;;;;;;;;;:27;12159:7;12140:27;;;;;;;;;;;;;;;:36;;;;12208:7;12192:32;;12201:5;12192:32;;;12217:6;12192:32;;;;;;:::i;:::-;;;;;;;;11852:380;;;:::o;24034:1189::-;24182:1;24166:18;;:4;:18;;;;24158:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24259:1;24245:16;;:2;:16;;;;24237:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24326:1;24316:6;:11;24313:92;;;24344:28;24360:4;24366:2;24370:1;24344:15;:28::i;:::-;24387:7;;24313:92;24420:14;;;;;;;;;;;24417:753;;;24480:7;:5;:7::i;:::-;24472:15;;:4;:15;;;;:49;;;;;24514:7;:5;:7::i;:::-;24508:13;;:2;:13;;;;24472:49;:86;;;;;24556:1;24542:16;;:2;:16;;;;24472:86;:128;;;;;24593:6;24579:21;;:2;:21;;;;24472:128;24450:709;;;24636:6;;;;;;;;;;;24632:100;;24680:7;:5;:7::i;:::-;24672:15;;:4;:15;;;24664:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;24632:100;24782:25;:31;24808:4;24782:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;24818:31;:35;24850:2;24818:35;;;;;;;;;;;;;;;;;;;;;;;;;24817:36;24782:71;24778:366;;;24916:9;;24899:13;24909:2;24899:9;:13::i;:::-;24890:6;:22;;;;:::i;:::-;:35;;24882:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24778:366;;;24998:31;:35;25030:2;24998:35;;;;;;;;;;;;;;;;;;;;;;;;;24994:150;;25091:9;;25074:13;25084:2;25074:9;:13::i;:::-;25065:6;:22;;;;:::i;:::-;:35;;25057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24994:150;24778:366;24450:709;24417:753;25182:33;25198:4;25204:2;25208:6;25182:15;:33::i;:::-;24034:1189;;;;:::o;14133:192::-;14219:7;14252:1;14247;:6;;14255:12;14239:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;14279:9;14295:1;14291;:5;;;;:::i;:::-;14279:17;;14316:1;14309:8;;;14133:192;;;;;:::o;23836:188::-;23953:5;23919:25;:31;23945:4;23919:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24010:5;23976:40;;24004:4;23976:40;;;;;;;;;;;;23836:188;;:::o;9425:573::-;9583:1;9565:20;;:6;:20;;;;9557:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9667:1;9646:23;;:9;:23;;;;9638:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9722:47;9743:6;9751:9;9762:6;9722:20;:47::i;:::-;9802:71;9824:6;9802:71;;;;;;;;;;;;;;;;;:9;:17;9812:6;9802:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9782:9;:17;9792:6;9782:17;;;;;;;;;;;;;;;:91;;;;9907:32;9932:6;9907:9;:20;9917:9;9907:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9884:9;:20;9894:9;9884:20;;;;;;;;;;;;;;;:55;;;;9972:9;9955:35;;9964:6;9955:35;;;9983:6;9955:35;;;;;;:::i;:::-;;;;;;;;9425:573;;;:::o;12835:125::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:116::-;4251:21;4266:5;4251:21;:::i;:::-;4244:5;4241:32;4231:60;;4287:1;4284;4277:12;4231:60;4181:116;:::o;4303:133::-;4346:5;4384:6;4371:20;4362:29;;4400:30;4424:5;4400:30;:::i;:::-;4303:133;;;;:::o;4442:323::-;4498:6;4547:2;4535:9;4526:7;4522:23;4518:32;4515:119;;;4553:79;;:::i;:::-;4515:119;4673:1;4698:50;4740:7;4731:6;4720:9;4716:22;4698:50;:::i;:::-;4688:60;;4644:114;4442:323;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:118::-;5483:24;5501:5;5483:24;:::i;:::-;5478:3;5471:37;5396:118;;:::o;5520:222::-;5613:4;5651:2;5640:9;5636:18;5628:26;;5664:71;5732:1;5721:9;5717:17;5708:6;5664:71;:::i;:::-;5520:222;;;;:::o;5748:86::-;5783:7;5823:4;5816:5;5812:16;5801:27;;5748:86;;;:::o;5840:112::-;5923:22;5939:5;5923:22;:::i;:::-;5918:3;5911:35;5840:112;;:::o;5958:214::-;6047:4;6085:2;6074:9;6070:18;6062:26;;6098:67;6162:1;6151:9;6147:17;6138:6;6098:67;:::i;:::-;5958:214;;;;:::o;6178:117::-;6287:1;6284;6277:12;6301:117;6410:1;6407;6400:12;6424:117;6533:1;6530;6523:12;6564:568;6637:8;6647:6;6697:3;6690:4;6682:6;6678:17;6674:27;6664:122;;6705:79;;:::i;:::-;6664:122;6818:6;6805:20;6795:30;;6848:18;6840:6;6837:30;6834:117;;;6870:79;;:::i;:::-;6834:117;6984:4;6976:6;6972:17;6960:29;;7038:3;7030:4;7022:6;7018:17;7008:8;7004:32;7001:41;6998:128;;;7045:79;;:::i;:::-;6998:128;6564:568;;;;;:::o;7155:::-;7228:8;7238:6;7288:3;7281:4;7273:6;7269:17;7265:27;7255:122;;7296:79;;:::i;:::-;7255:122;7409:6;7396:20;7386:30;;7439:18;7431:6;7428:30;7425:117;;;7461:79;;:::i;:::-;7425:117;7575:4;7567:6;7563:17;7551:29;;7629:3;7621:4;7613:6;7609:17;7599:8;7595:32;7592:41;7589:128;;;7636:79;;:::i;:::-;7589:128;7155:568;;;;;:::o;7729:934::-;7851:6;7859;7867;7875;7924:2;7912:9;7903:7;7899:23;7895:32;7892:119;;;7930:79;;:::i;:::-;7892:119;8078:1;8067:9;8063:17;8050:31;8108:18;8100:6;8097:30;8094:117;;;8130:79;;:::i;:::-;8094:117;8243:80;8315:7;8306:6;8295:9;8291:22;8243:80;:::i;:::-;8225:98;;;;8021:312;8400:2;8389:9;8385:18;8372:32;8431:18;8423:6;8420:30;8417:117;;;8453:79;;:::i;:::-;8417:117;8566:80;8638:7;8629:6;8618:9;8614:22;8566:80;:::i;:::-;8548:98;;;;8343:313;7729:934;;;;;;;:::o;8669:468::-;8734:6;8742;8791:2;8779:9;8770:7;8766:23;8762:32;8759:119;;;8797:79;;:::i;:::-;8759:119;8917:1;8942:53;8987:7;8978:6;8967:9;8963:22;8942:53;:::i;:::-;8932:63;;8888:117;9044:2;9070:50;9112:7;9103:6;9092:9;9088:22;9070:50;:::i;:::-;9060:60;;9015:115;8669:468;;;;;:::o;9143:329::-;9202:6;9251:2;9239:9;9230:7;9226:23;9222:32;9219:119;;;9257:79;;:::i;:::-;9219:119;9377:1;9402:53;9447:7;9438:6;9427:9;9423:22;9402:53;:::i;:::-;9392:63;;9348:117;9143:329;;;;:::o;9478:474::-;9546:6;9554;9603:2;9591:9;9582:7;9578:23;9574:32;9571:119;;;9609:79;;:::i;:::-;9571:119;9729:1;9754:53;9799:7;9790:6;9779:9;9775:22;9754:53;:::i;:::-;9744:63;;9700:117;9856:2;9882:53;9927:7;9918:6;9907:9;9903:22;9882:53;:::i;:::-;9872:63;;9827:118;9478:474;;;;;:::o;9958:180::-;10006:77;10003:1;9996:88;10103:4;10100:1;10093:15;10127:4;10124:1;10117:15;10144:320;10188:6;10225:1;10219:4;10215:12;10205:22;;10272:1;10266:4;10262:12;10293:18;10283:81;;10349:4;10341:6;10337:17;10327:27;;10283:81;10411:2;10403:6;10400:14;10380:18;10377:38;10374:84;;;10430:18;;:::i;:::-;10374:84;10195:269;10144:320;;;:::o;10470:182::-;10610:34;10606:1;10598:6;10594:14;10587:58;10470:182;:::o;10658:366::-;10800:3;10821:67;10885:2;10880:3;10821:67;:::i;:::-;10814:74;;10897:93;10986:3;10897:93;:::i;:::-;11015:2;11010:3;11006:12;10999:19;;10658:366;;;:::o;11030:419::-;11196:4;11234:2;11223:9;11219:18;11211:26;;11283:9;11277:4;11273:20;11269:1;11258:9;11254:17;11247:47;11311:131;11437:4;11311:131;:::i;:::-;11303:139;;11030:419;;;:::o;11455:232::-;11595:34;11591:1;11583:6;11579:14;11572:58;11664:15;11659:2;11651:6;11647:15;11640:40;11455:232;:::o;11693:366::-;11835:3;11856:67;11920:2;11915:3;11856:67;:::i;:::-;11849:74;;11932:93;12021:3;11932:93;:::i;:::-;12050:2;12045:3;12041:12;12034:19;;11693:366;;;:::o;12065:419::-;12231:4;12269:2;12258:9;12254:18;12246:26;;12318:9;12312:4;12308:20;12304:1;12293:9;12289:17;12282:47;12346:131;12472:4;12346:131;:::i;:::-;12338:139;;12065:419;;;:::o;12490:229::-;12630:34;12626:1;12618:6;12614:14;12607:58;12699:12;12694:2;12686:6;12682:15;12675:37;12490:229;:::o;12725:366::-;12867:3;12888:67;12952:2;12947:3;12888:67;:::i;:::-;12881:74;;12964:93;13053:3;12964:93;:::i;:::-;13082:2;13077:3;13073:12;13066:19;;12725:366;;;:::o;13097:419::-;13263:4;13301:2;13290:9;13286:18;13278:26;;13350:9;13344:4;13340:20;13336:1;13325:9;13321:17;13314:47;13378:131;13504:4;13378:131;:::i;:::-;13370:139;;13097:419;;;:::o;13522:180::-;13570:77;13567:1;13560:88;13667:4;13664:1;13657:15;13691:4;13688:1;13681:15;13708:180;13756:77;13753:1;13746:88;13853:4;13850:1;13843:15;13877:4;13874:1;13867:15;13894:348;13934:7;13957:20;13975:1;13957:20;:::i;:::-;13952:25;;13991:20;14009:1;13991:20;:::i;:::-;13986:25;;14179:1;14111:66;14107:74;14104:1;14101:81;14096:1;14089:9;14082:17;14078:105;14075:131;;;14186:18;;:::i;:::-;14075:131;14234:1;14231;14227:9;14216:20;;13894:348;;;;:::o;14248:305::-;14288:3;14307:20;14325:1;14307:20;:::i;:::-;14302:25;;14341:20;14359:1;14341:20;:::i;:::-;14336:25;;14495:1;14427:66;14423:74;14420:1;14417:81;14414:107;;;14501:18;;:::i;:::-;14414:107;14545:1;14542;14538:9;14531:16;;14248:305;;;;:::o;14559:180::-;14607:77;14604:1;14597:88;14704:4;14701:1;14694:15;14728:4;14725:1;14718:15;14745:185;14785:1;14802:20;14820:1;14802:20;:::i;:::-;14797:25;;14836:20;14854:1;14836:20;:::i;:::-;14831:25;;14875:1;14865:35;;14880:18;;:::i;:::-;14865:35;14922:1;14919;14915:9;14910:14;;14745:185;;;;:::o;14936:223::-;15076:34;15072:1;15064:6;15060:14;15053:58;15145:6;15140:2;15132:6;15128:15;15121:31;14936:223;:::o;15165:366::-;15307:3;15328:67;15392:2;15387:3;15328:67;:::i;:::-;15321:74;;15404:93;15493:3;15404:93;:::i;:::-;15522:2;15517:3;15513:12;15506:19;;15165:366;;;:::o;15537:419::-;15703:4;15741:2;15730:9;15726:18;15718:26;;15790:9;15784:4;15780:20;15776:1;15765:9;15761:17;15754:47;15818:131;15944:4;15818:131;:::i;:::-;15810:139;;15537:419;;;:::o;15962:225::-;16102:34;16098:1;16090:6;16086:14;16079:58;16171:8;16166:2;16158:6;16154:15;16147:33;15962:225;:::o;16193:366::-;16335:3;16356:67;16420:2;16415:3;16356:67;:::i;:::-;16349:74;;16432:93;16521:3;16432:93;:::i;:::-;16550:2;16545:3;16541:12;16534:19;;16193:366;;;:::o;16565:419::-;16731:4;16769:2;16758:9;16754:18;16746:26;;16818:9;16812:4;16808:20;16804:1;16793:9;16789:17;16782:47;16846:131;16972:4;16846:131;:::i;:::-;16838:139;;16565:419;;;:::o;16990:177::-;17130:29;17126:1;17118:6;17114:14;17107:53;16990:177;:::o;17173:366::-;17315:3;17336:67;17400:2;17395:3;17336:67;:::i;:::-;17329:74;;17412:93;17501:3;17412:93;:::i;:::-;17530:2;17525:3;17521:12;17514:19;;17173:366;;;:::o;17545:419::-;17711:4;17749:2;17738:9;17734:18;17726:26;;17798:9;17792:4;17788:20;17784:1;17773:9;17769:17;17762:47;17826:131;17952:4;17826:131;:::i;:::-;17818:139;;17545:419;;;:::o;17970:223::-;18110:34;18106:1;18098:6;18094:14;18087:58;18179:6;18174:2;18166:6;18162:15;18155:31;17970:223;:::o;18199:366::-;18341:3;18362:67;18426:2;18421:3;18362:67;:::i;:::-;18355:74;;18438:93;18527:3;18438:93;:::i;:::-;18556:2;18551:3;18547:12;18540:19;;18199:366;;;:::o;18571:419::-;18737:4;18775:2;18764:9;18760:18;18752:26;;18824:9;18818:4;18814:20;18810:1;18799:9;18795:17;18788:47;18852:131;18978:4;18852:131;:::i;:::-;18844:139;;18571:419;;;:::o;18996:221::-;19136:34;19132:1;19124:6;19120:14;19113:58;19205:4;19200:2;19192:6;19188:15;19181:29;18996:221;:::o;19223:366::-;19365:3;19386:67;19450:2;19445:3;19386:67;:::i;:::-;19379:74;;19462:93;19551:3;19462:93;:::i;:::-;19580:2;19575:3;19571:12;19564:19;;19223:366;;;:::o;19595:419::-;19761:4;19799:2;19788:9;19784:18;19776:26;;19848:9;19842:4;19838:20;19834:1;19823:9;19819:17;19812:47;19876:131;20002:4;19876:131;:::i;:::-;19868:139;;19595:419;;;:::o;20020:224::-;20160:34;20156:1;20148:6;20144:14;20137:58;20229:7;20224:2;20216:6;20212:15;20205:32;20020:224;:::o;20250:366::-;20392:3;20413:67;20477:2;20472:3;20413:67;:::i;:::-;20406:74;;20489:93;20578:3;20489:93;:::i;:::-;20607:2;20602:3;20598:12;20591:19;;20250:366;;;:::o;20622:419::-;20788:4;20826:2;20815:9;20811:18;20803:26;;20875:9;20869:4;20865:20;20861:1;20850:9;20846:17;20839:47;20903:131;21029:4;20903:131;:::i;:::-;20895:139;;20622:419;;;:::o;21047:222::-;21187:34;21183:1;21175:6;21171:14;21164:58;21256:5;21251:2;21243:6;21239:15;21232:30;21047:222;:::o;21275:366::-;21417:3;21438:67;21502:2;21497:3;21438:67;:::i;:::-;21431:74;;21514:93;21603:3;21514:93;:::i;:::-;21632:2;21627:3;21623:12;21616:19;;21275:366;;;:::o;21647:419::-;21813:4;21851:2;21840:9;21836:18;21828:26;;21900:9;21894:4;21890:20;21886:1;21875:9;21871:17;21864:47;21928:131;22054:4;21928:131;:::i;:::-;21920:139;;21647:419;;;:::o;22072:172::-;22212:24;22208:1;22200:6;22196:14;22189:48;22072:172;:::o;22250:366::-;22392:3;22413:67;22477:2;22472:3;22413:67;:::i;:::-;22406:74;;22489:93;22578:3;22489:93;:::i;:::-;22607:2;22602:3;22598:12;22591:19;;22250:366;;;:::o;22622:419::-;22788:4;22826:2;22815:9;22811:18;22803:26;;22875:9;22869:4;22865:20;22861:1;22850:9;22846:17;22839:47;22903:131;23029:4;22903:131;:::i;:::-;22895:139;;22622:419;;;:::o;23047:169::-;23187:21;23183:1;23175:6;23171:14;23164:45;23047:169;:::o;23222:366::-;23364:3;23385:67;23449:2;23444:3;23385:67;:::i;:::-;23378:74;;23461:93;23550:3;23461:93;:::i;:::-;23579:2;23574:3;23570:12;23563:19;;23222:366;;;:::o;23594:419::-;23760:4;23798:2;23787:9;23783:18;23775:26;;23847:9;23841:4;23837:20;23833:1;23822:9;23818:17;23811:47;23875:131;24001:4;23875:131;:::i;:::-;23867:139;;23594:419;;;:::o;24019:191::-;24059:4;24079:20;24097:1;24079:20;:::i;:::-;24074:25;;24113:20;24131:1;24113:20;:::i;:::-;24108:25;;24152:1;24149;24146:8;24143:34;;;24157:18;;:::i;:::-;24143:34;24202:1;24199;24195:9;24187:17;;24019:191;;;;:::o
Swarm Source
ipfs://81494b6f3a68577fec55f5db794bd6304f9753dd283b4412a4275627b178671c
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.