Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Loading...
Loading
Contract Name:
OilToken
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-03-06 */ // SPDX-License-Identifier: MIT // // pragma solidity ^0.8.0; 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); } 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 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 {} } contract OilToken is ERC20 { uint256 public constant TOTAL_SUPPLY = 1 * 10**8 * 10**18; // 100m tokens with 18 decimals uint256 public maxWalletBalance = TOTAL_SUPPLY / 50; // 2% of total supply mapping(address => bool) public exemptFromMax; address public owner; modifier onlyOwner() { require(msg.sender == owner, "Caller is not the owner"); _; } constructor() ERC20("Oil Token", "Oil") { owner = msg.sender; exemptFromMax[owner] = true; _mint(owner, TOTAL_SUPPLY); } function updateOwner(address _owner) external onlyOwner { owner = _owner; exemptFromMax[owner] = true; } function updateMaxWallet(uint256 amount) external onlyOwner { require(amount > maxWalletBalance, "New max must be greater than current max wallet balance"); maxWalletBalance = amount; } function setExemptFromMax(address account) external onlyOwner { exemptFromMax[account] = true; } function _transfer(address sender, address recipient, uint256 amount) internal override { if (sender != owner && !exemptFromMax[recipient]) { require(balanceOf(recipient) + amount <= maxWalletBalance, "Recipient balance would exceeds max wallet balance"); } super._transfer(sender, recipient, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"","type":"address"}],"name":"exemptFromMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setExemptFromMax","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":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"updateOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260326a52b7d2dcc80cd2e40000006200001e9190620005fa565b6005553480156200002e57600080fd5b506040518060400160405280600981526020017f4f696c20546f6b656e00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4f696c00000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000b3929190620003e6565b508060049080519060200190620000cc929190620003e6565b50505033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001c9600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e4000000620001cf60201b60201c565b620006ff565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000239906200054d565b60405180910390fd5b62000256600083836200037e60201b60201c565b62000272816002546200038360201b62000bce1790919060201c565b600281905550620002d0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200038360201b62000bce1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200037291906200056f565b60405180910390a35050565b505050565b60008082846200039491906200059d565b905083811015620003dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003d3906200052b565b60405180910390fd5b8091505092915050565b828054620003f4906200063c565b90600052602060002090601f01602090048101928262000418576000855562000464565b82601f106200043357805160ff191683800117855562000464565b8280016001018555821562000464579182015b828111156200046357825182559160200191906001019062000446565b5b50905062000473919062000477565b5090565b5b808211156200049257600081600090555060010162000478565b5090565b6000620004a5601b836200058c565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000620004e7601f836200058c565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620005258162000632565b82525050565b60006020820190508181036000830152620005468162000496565b9050919050565b600060208201905081810360008301526200056881620004d8565b9050919050565b60006020820190506200058660008301846200051a565b92915050565b600082825260208201905092915050565b6000620005aa8262000632565b9150620005b78362000632565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005ef57620005ee62000672565b5b828201905092915050565b6000620006078262000632565b9150620006148362000632565b925082620006275762000626620006a1565b5b828204905092915050565b6000819050919050565b600060028204905060018216806200065557607f821691505b602082108114156200066c576200066b620006d0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b611ae3806200070f6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063880cdc31116100a2578063a457c2d711610071578063a457c2d7146102e3578063a9059cbb14610313578063bbde77c114610343578063dd62ed3e14610361578063fb60e0bc1461039157610116565b8063880cdc311461026d5780638da5cb5b14610289578063902d55a5146102a757806395d89b41146102c557610116565b80631c499ab0116100e95780631c499ab0146101a357806323b872dd146101bf578063313ce567146101ef578063395093511461020d57806370a082311461023d57610116565b806306fdde031461011b578063093feb5114610139578063095ea7b31461015557806318160ddd14610185575b600080fd5b6101236103c1565b60405161013091906116e5565b60405180910390f35b610153600480360381019061014e919061123d565b610453565b005b61016f600480360381019061016a91906112f1565b61053e565b60405161017c91906116ca565b60405180910390f35b61018d61055c565b60405161019a9190611807565b60405180910390f35b6101bd60048036038101906101b8919061132d565b610566565b005b6101d960048036038101906101d491906112a2565b610644565b6040516101e691906116ca565b60405180910390f35b6101f761071d565b6040516102049190611822565b60405180910390f35b610227600480360381019061022291906112f1565b610726565b60405161023491906116ca565b60405180910390f35b6102576004803603810190610252919061123d565b6107d9565b6040516102649190611807565b60405180910390f35b6102876004803603810190610282919061123d565b610821565b005b61029161096f565b60405161029e91906116af565b60405180910390f35b6102af610995565b6040516102bc9190611807565b60405180910390f35b6102cd6109a4565b6040516102da91906116e5565b60405180910390f35b6102fd60048036038101906102f891906112f1565b610a36565b60405161030a91906116ca565b60405180910390f35b61032d600480360381019061032891906112f1565b610b03565b60405161033a91906116ca565b60405180910390f35b61034b610b21565b6040516103589190611807565b60405180910390f35b61037b60048036038101906103769190611266565b610b27565b6040516103889190611807565b60405180910390f35b6103ab60048036038101906103a6919061123d565b610bae565b6040516103b891906116ca565b60405180910390f35b6060600380546103d09061196b565b80601f01602080910402602001604051908101604052809291908181526020018280546103fc9061196b565b80156104495780601f1061041e57610100808354040283529160200191610449565b820191906000526020600020905b81548152906001019060200180831161042c57829003601f168201915b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da90611767565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061055261054b610c2c565b8484610c34565b6001905092915050565b6000600254905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed90611767565b60405180910390fd5b600554811161063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190611707565b60405180910390fd5b8060058190555050565b6000610651848484610dff565b6107128461065d610c2c565b61070d85604051806060016040528060288152602001611a6160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106c3610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b610c34565b600190509392505050565b60006012905090565b60006107cf610733610c2c565b846107ca8560016000610744610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bce90919063ffffffff16565b610c34565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a890611767565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a52b7d2dcc80cd2e400000081565b6060600480546109b39061196b565b80601f01602080910402602001604051908101604052809291908181526020018280546109df9061196b565b8015610a2c5780601f10610a0157610100808354040283529160200191610a2c565b820191906000526020600020905b815481529060010190602001808311610a0f57829003601f168201915b5050505050905090565b6000610af9610a43610c2c565b84610af485604051806060016040528060258152602001611a896025913960016000610a6d610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b610c34565b6001905092915050565b6000610b17610b10610c2c565b8484610dff565b6001905092915050565b60055481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000808284610bdd9190611859565b905083811015610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c19906117a7565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b906117e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0b90611787565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610df29190611807565b60405180910390a3505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ea75750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f055760055481610eb9846107d9565b610ec39190611859565b1115610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90611747565b60405180910390fd5b5b610f10838383610f79565b505050565b6000838311158290610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5491906116e5565b60405180910390fd5b5060008385610f6c91906118af565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe0906117c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090611727565b60405180910390fd5b61106483838361120e565b6110cf81604051806060016040528060268152602001611a3b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611162816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bce90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112019190611807565b60405180910390a3505050565b505050565b60008135905061122281611a0c565b92915050565b60008135905061123781611a23565b92915050565b60006020828403121561124f57600080fd5b600061125d84828501611213565b91505092915050565b6000806040838503121561127957600080fd5b600061128785828601611213565b925050602061129885828601611213565b9150509250929050565b6000806000606084860312156112b757600080fd5b60006112c586828701611213565b93505060206112d686828701611213565b92505060406112e786828701611228565b9150509250925092565b6000806040838503121561130457600080fd5b600061131285828601611213565b925050602061132385828601611228565b9150509250929050565b60006020828403121561133f57600080fd5b600061134d84828501611228565b91505092915050565b61135f816118e3565b82525050565b61136e816118f5565b82525050565b600061137f8261183d565b6113898185611848565b9350611399818560208601611938565b6113a2816119fb565b840191505092915050565b60006113ba603783611848565b91507f4e6577206d6178206d7573742062652067726561746572207468616e2063757260008301527f72656e74206d61782077616c6c65742062616c616e63650000000000000000006020830152604082019050919050565b6000611420602383611848565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611486603283611848565b91507f526563697069656e742062616c616e636520776f756c6420657863656564732060008301527f6d61782077616c6c65742062616c616e636500000000000000000000000000006020830152604082019050919050565b60006114ec601783611848565b91507f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006000830152602082019050919050565b600061152c602283611848565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611592601b83611848565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006115d2602583611848565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611638602483611848565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61169a81611921565b82525050565b6116a98161192b565b82525050565b60006020820190506116c46000830184611356565b92915050565b60006020820190506116df6000830184611365565b92915050565b600060208201905081810360008301526116ff8184611374565b905092915050565b60006020820190508181036000830152611720816113ad565b9050919050565b6000602082019050818103600083015261174081611413565b9050919050565b6000602082019050818103600083015261176081611479565b9050919050565b60006020820190508181036000830152611780816114df565b9050919050565b600060208201905081810360008301526117a08161151f565b9050919050565b600060208201905081810360008301526117c081611585565b9050919050565b600060208201905081810360008301526117e0816115c5565b9050919050565b600060208201905081810360008301526118008161162b565b9050919050565b600060208201905061181c6000830184611691565b92915050565b600060208201905061183760008301846116a0565b92915050565b600081519050919050565b600082825260208201905092915050565b600061186482611921565b915061186f83611921565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156118a4576118a361199d565b5b828201905092915050565b60006118ba82611921565b91506118c583611921565b9250828210156118d8576118d761199d565b5b828203905092915050565b60006118ee82611901565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561195657808201518184015260208101905061193b565b83811115611965576000848401525b50505050565b6000600282049050600182168061198357607f821691505b60208210811415611997576119966119cc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611a15816118e3565b8114611a2057600080fd5b50565b611a2c81611921565b8114611a3757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cbdb4aad6bf5e0057c9dd46fb4aa61c5d488a579a57a191833417197714220e764736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063880cdc31116100a2578063a457c2d711610071578063a457c2d7146102e3578063a9059cbb14610313578063bbde77c114610343578063dd62ed3e14610361578063fb60e0bc1461039157610116565b8063880cdc311461026d5780638da5cb5b14610289578063902d55a5146102a757806395d89b41146102c557610116565b80631c499ab0116100e95780631c499ab0146101a357806323b872dd146101bf578063313ce567146101ef578063395093511461020d57806370a082311461023d57610116565b806306fdde031461011b578063093feb5114610139578063095ea7b31461015557806318160ddd14610185575b600080fd5b6101236103c1565b60405161013091906116e5565b60405180910390f35b610153600480360381019061014e919061123d565b610453565b005b61016f600480360381019061016a91906112f1565b61053e565b60405161017c91906116ca565b60405180910390f35b61018d61055c565b60405161019a9190611807565b60405180910390f35b6101bd60048036038101906101b8919061132d565b610566565b005b6101d960048036038101906101d491906112a2565b610644565b6040516101e691906116ca565b60405180910390f35b6101f761071d565b6040516102049190611822565b60405180910390f35b610227600480360381019061022291906112f1565b610726565b60405161023491906116ca565b60405180910390f35b6102576004803603810190610252919061123d565b6107d9565b6040516102649190611807565b60405180910390f35b6102876004803603810190610282919061123d565b610821565b005b61029161096f565b60405161029e91906116af565b60405180910390f35b6102af610995565b6040516102bc9190611807565b60405180910390f35b6102cd6109a4565b6040516102da91906116e5565b60405180910390f35b6102fd60048036038101906102f891906112f1565b610a36565b60405161030a91906116ca565b60405180910390f35b61032d600480360381019061032891906112f1565b610b03565b60405161033a91906116ca565b60405180910390f35b61034b610b21565b6040516103589190611807565b60405180910390f35b61037b60048036038101906103769190611266565b610b27565b6040516103889190611807565b60405180910390f35b6103ab60048036038101906103a6919061123d565b610bae565b6040516103b891906116ca565b60405180910390f35b6060600380546103d09061196b565b80601f01602080910402602001604051908101604052809291908181526020018280546103fc9061196b565b80156104495780601f1061041e57610100808354040283529160200191610449565b820191906000526020600020905b81548152906001019060200180831161042c57829003601f168201915b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da90611767565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061055261054b610c2c565b8484610c34565b6001905092915050565b6000600254905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed90611767565b60405180910390fd5b600554811161063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190611707565b60405180910390fd5b8060058190555050565b6000610651848484610dff565b6107128461065d610c2c565b61070d85604051806060016040528060288152602001611a6160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106c3610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b610c34565b600190509392505050565b60006012905090565b60006107cf610733610c2c565b846107ca8560016000610744610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bce90919063ffffffff16565b610c34565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a890611767565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a52b7d2dcc80cd2e400000081565b6060600480546109b39061196b565b80601f01602080910402602001604051908101604052809291908181526020018280546109df9061196b565b8015610a2c5780601f10610a0157610100808354040283529160200191610a2c565b820191906000526020600020905b815481529060010190602001808311610a0f57829003601f168201915b5050505050905090565b6000610af9610a43610c2c565b84610af485604051806060016040528060258152602001611a896025913960016000610a6d610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b610c34565b6001905092915050565b6000610b17610b10610c2c565b8484610dff565b6001905092915050565b60055481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000808284610bdd9190611859565b905083811015610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c19906117a7565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b906117e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0b90611787565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610df29190611807565b60405180910390a3505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ea75750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f055760055481610eb9846107d9565b610ec39190611859565b1115610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90611747565b60405180910390fd5b5b610f10838383610f79565b505050565b6000838311158290610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5491906116e5565b60405180910390fd5b5060008385610f6c91906118af565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe0906117c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090611727565b60405180910390fd5b61106483838361120e565b6110cf81604051806060016040528060268152602001611a3b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611162816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bce90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112019190611807565b60405180910390a3505050565b505050565b60008135905061122281611a0c565b92915050565b60008135905061123781611a23565b92915050565b60006020828403121561124f57600080fd5b600061125d84828501611213565b91505092915050565b6000806040838503121561127957600080fd5b600061128785828601611213565b925050602061129885828601611213565b9150509250929050565b6000806000606084860312156112b757600080fd5b60006112c586828701611213565b93505060206112d686828701611213565b92505060406112e786828701611228565b9150509250925092565b6000806040838503121561130457600080fd5b600061131285828601611213565b925050602061132385828601611228565b9150509250929050565b60006020828403121561133f57600080fd5b600061134d84828501611228565b91505092915050565b61135f816118e3565b82525050565b61136e816118f5565b82525050565b600061137f8261183d565b6113898185611848565b9350611399818560208601611938565b6113a2816119fb565b840191505092915050565b60006113ba603783611848565b91507f4e6577206d6178206d7573742062652067726561746572207468616e2063757260008301527f72656e74206d61782077616c6c65742062616c616e63650000000000000000006020830152604082019050919050565b6000611420602383611848565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611486603283611848565b91507f526563697069656e742062616c616e636520776f756c6420657863656564732060008301527f6d61782077616c6c65742062616c616e636500000000000000000000000000006020830152604082019050919050565b60006114ec601783611848565b91507f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006000830152602082019050919050565b600061152c602283611848565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611592601b83611848565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006115d2602583611848565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611638602483611848565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61169a81611921565b82525050565b6116a98161192b565b82525050565b60006020820190506116c46000830184611356565b92915050565b60006020820190506116df6000830184611365565b92915050565b600060208201905081810360008301526116ff8184611374565b905092915050565b60006020820190508181036000830152611720816113ad565b9050919050565b6000602082019050818103600083015261174081611413565b9050919050565b6000602082019050818103600083015261176081611479565b9050919050565b60006020820190508181036000830152611780816114df565b9050919050565b600060208201905081810360008301526117a08161151f565b9050919050565b600060208201905081810360008301526117c081611585565b9050919050565b600060208201905081810360008301526117e0816115c5565b9050919050565b600060208201905081810360008301526118008161162b565b9050919050565b600060208201905061181c6000830184611691565b92915050565b600060208201905061183760008301846116a0565b92915050565b600081519050919050565b600082825260208201905092915050565b600061186482611921565b915061186f83611921565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156118a4576118a361199d565b5b828201905092915050565b60006118ba82611921565b91506118c583611921565b9250828210156118d8576118d761199d565b5b828203905092915050565b60006118ee82611901565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561195657808201518184015260208101905061193b565b83811115611965576000848401525b50505050565b6000600282049050600182168061198357607f821691505b60208210811415611997576119966119cc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611a15816118e3565b8114611a2057600080fd5b50565b611a2c81611921565b8114611a3757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cbdb4aad6bf5e0057c9dd46fb4aa61c5d488a579a57a191833417197714220e764736f6c63430008000033
Deployed Bytecode Sourcemap
17696:1388:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9090:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18615:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11257:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10210:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18399:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11908:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10052:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12672:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10381:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17960:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17730:57;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9309:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13393:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10721:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17826:51;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10959:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17908:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9090:100;9144:13;9177:5;9170:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9090:100;:::o;18615:110::-;18043:5;;;;;;;;;;;18029:19;;:10;:19;;;18021:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18713:4:::1;18688:13;:22;18702:7;18688:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18615:110:::0;:::o;11257:169::-;11340:4;11357:39;11366:12;:10;:12::i;:::-;11380:7;11389:6;11357:8;:39::i;:::-;11414:4;11407:11;;11257:169;;;;:::o;10210:108::-;10271:7;10298:12;;10291:19;;10210:108;:::o;18399:208::-;18043:5;;;;;;;;;;;18029:19;;:10;:19;;;18021:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18487:16:::1;;18478:6;:25;18470:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;18593:6;18574:16;:25;;;;18399:208:::0;:::o;11908:355::-;12048:4;12065:36;12075:6;12083:9;12094:6;12065:9;:36::i;:::-;12112:121;12121:6;12129:12;:10;:12::i;:::-;12143:89;12181:6;12143:89;;;;;;;;;;;;;;;;;:11;:19;12155:6;12143:19;;;;;;;;;;;;;;;:33;12163:12;:10;:12::i;:::-;12143:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12112:8;:121::i;:::-;12251:4;12244:11;;11908:355;;;;;:::o;10052:93::-;10110:5;10135:2;10128:9;;10052:93;:::o;12672:218::-;12760:4;12777:83;12786:12;:10;:12::i;:::-;12800:7;12809:50;12848:10;12809:11;:25;12821:12;:10;:12::i;:::-;12809:25;;;;;;;;;;;;;;;:34;12835:7;12809:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12777:8;:83::i;:::-;12878:4;12871:11;;12672:218;;;;:::o;10381:127::-;10455:7;10482:9;:18;10492:7;10482:18;;;;;;;;;;;;;;;;10475:25;;10381:127;;;:::o;18264:::-;18043:5;;;;;;;;;;;18029:19;;:10;:19;;;18021:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18339:6:::1;18331:5;;:14;;;;;;;;;;;;;;;;;;18379:4;18356:13;:20;18370:5;;;;;;;;;;;18356:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;18264:127:::0;:::o;17960:20::-;;;;;;;;;;;;;:::o;17730:57::-;17769:18;17730:57;:::o;9309:104::-;9365:13;9398:7;9391:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9309:104;:::o;13393:269::-;13486:4;13503:129;13512:12;:10;:12::i;:::-;13526:7;13535:96;13574:15;13535:96;;;;;;;;;;;;;;;;;:11;:25;13547:12;:10;:12::i;:::-;13535:25;;;;;;;;;;;;;;;:34;13561:7;13535:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;13503:8;:129::i;:::-;13650:4;13643:11;;13393:269;;;;:::o;10721:175::-;10807:4;10824:42;10834:12;:10;:12::i;:::-;10848:9;10859:6;10824:9;:42::i;:::-;10884:4;10877:11;;10721:175;;;;:::o;17826:51::-;;;;:::o;10959:151::-;11048:7;11075:11;:18;11087:5;11075:18;;;;;;;;;;;;;;;:27;11094:7;11075:27;;;;;;;;;;;;;;;;11068:34;;10959:151;;;;:::o;17908:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;3813:181::-;3871:7;3891:9;3907:1;3903;:5;;;;:::i;:::-;3891:17;;3932:1;3927;:6;;3919:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3985:1;3978:8;;;3813:181;;;;:::o;105:98::-;158:7;185:10;178:17;;105:98;:::o;16579:380::-;16732:1;16715:19;;:5;:19;;;;16707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16813:1;16794:21;;:7;:21;;;;16786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16897:6;16867:11;:18;16879:5;16867:18;;;;;;;;;;;;;;;:27;16886:7;16867:27;;;;;;;;;;;;;;;:36;;;;16935:7;16919:32;;16928:5;16919:32;;;16944:6;16919:32;;;;;;:::i;:::-;;;;;;;;16579:380;;;:::o;18733:348::-;18846:5;;;;;;;;;;;18836:15;;:6;:15;;;;:44;;;;;18856:13;:24;18870:9;18856:24;;;;;;;;;;;;;;;;;;;;;;;;;18855:25;18836:44;18832:189;;;18938:16;;18928:6;18905:20;18915:9;18905;:20::i;:::-;:29;;;;:::i;:::-;:49;;18897:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;18832:189;19031:42;19047:6;19055:9;19066:6;19031:15;:42::i;:::-;18733:348;;;:::o;4716:192::-;4802:7;4835:1;4830;:6;;4838:12;4822:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4862:9;4878:1;4874;:5;;;;:::i;:::-;4862:17;;4899:1;4892:8;;;4716:192;;;;;:::o;14152:573::-;14310:1;14292:20;;:6;:20;;;;14284:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14394:1;14373:23;;:9;:23;;;;14365:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14449:47;14470:6;14478:9;14489:6;14449:20;:47::i;:::-;14529:71;14551:6;14529:71;;;;;;;;;;;;;;;;;:9;:17;14539:6;14529:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;14509:9;:17;14519:6;14509:17;;;;;;;;;;;;;;;:91;;;;14634:32;14659:6;14634:9;:20;14644:9;14634:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14611:9;:20;14621:9;14611:20;;;;;;;;;;;;;;;:55;;;;14699:9;14682:35;;14691:6;14682:35;;;14710:6;14682:35;;;;;;:::i;:::-;;;;;;;;14152:573;;;:::o;17562:125::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:118::-;2304:24;2322:5;2304:24;:::i;:::-;2299:3;2292:37;2282:53;;:::o;2341:109::-;2422:21;2437:5;2422:21;:::i;:::-;2417:3;2410:34;2400:50;;:::o;2456:364::-;;2572:39;2605:5;2572:39;:::i;:::-;2627:71;2691:6;2686:3;2627:71;:::i;:::-;2620:78;;2707:52;2752:6;2747:3;2740:4;2733:5;2729:16;2707:52;:::i;:::-;2784:29;2806:6;2784:29;:::i;:::-;2779:3;2775:39;2768:46;;2548:272;;;;;:::o;2826:387::-;;2989:67;3053:2;3048:3;2989:67;:::i;:::-;2982:74;;3086:34;3082:1;3077:3;3073:11;3066:55;3152:25;3147:2;3142:3;3138:12;3131:47;3204:2;3199:3;3195:12;3188:19;;2972:241;;;:::o;3219:367::-;;3382:67;3446:2;3441:3;3382:67;:::i;:::-;3375:74;;3479:34;3475:1;3470:3;3466:11;3459:55;3545:5;3540:2;3535:3;3531:12;3524:27;3577:2;3572:3;3568:12;3561:19;;3365:221;;;:::o;3592:382::-;;3755:67;3819:2;3814:3;3755:67;:::i;:::-;3748:74;;3852:34;3848:1;3843:3;3839:11;3832:55;3918:20;3913:2;3908:3;3904:12;3897:42;3965:2;3960:3;3956:12;3949:19;;3738:236;;;:::o;3980:321::-;;4143:67;4207:2;4202:3;4143:67;:::i;:::-;4136:74;;4240:25;4236:1;4231:3;4227:11;4220:46;4292:2;4287:3;4283:12;4276:19;;4126:175;;;:::o;4307:366::-;;4470:67;4534:2;4529:3;4470:67;:::i;:::-;4463:74;;4567:34;4563:1;4558:3;4554:11;4547:55;4633:4;4628:2;4623:3;4619:12;4612:26;4664:2;4659:3;4655:12;4648:19;;4453:220;;;:::o;4679:325::-;;4842:67;4906:2;4901:3;4842:67;:::i;:::-;4835:74;;4939:29;4935:1;4930:3;4926:11;4919:50;4995:2;4990:3;4986:12;4979:19;;4825:179;;;:::o;5010:369::-;;5173:67;5237:2;5232:3;5173:67;:::i;:::-;5166:74;;5270:34;5266:1;5261:3;5257:11;5250:55;5336:7;5331:2;5326:3;5322:12;5315:29;5370:2;5365:3;5361:12;5354:19;;5156:223;;;:::o;5385:368::-;;5548:67;5612:2;5607:3;5548:67;:::i;:::-;5541:74;;5645:34;5641:1;5636:3;5632:11;5625:55;5711:6;5706:2;5701:3;5697:12;5690:28;5744:2;5739:3;5735:12;5728:19;;5531:222;;;:::o;5759:118::-;5846:24;5864:5;5846:24;:::i;:::-;5841:3;5834:37;5824:53;;:::o;5883:112::-;5966:22;5982:5;5966:22;:::i;:::-;5961:3;5954:35;5944:51;;:::o;6001:222::-;;6132:2;6121:9;6117:18;6109:26;;6145:71;6213:1;6202:9;6198:17;6189:6;6145:71;:::i;:::-;6099:124;;;;:::o;6229:210::-;;6354:2;6343:9;6339:18;6331:26;;6367:65;6429:1;6418:9;6414:17;6405:6;6367:65;:::i;:::-;6321:118;;;;:::o;6445:313::-;;6596:2;6585:9;6581:18;6573:26;;6645:9;6639:4;6635:20;6631:1;6620:9;6616:17;6609:47;6673:78;6746:4;6737:6;6673:78;:::i;:::-;6665:86;;6563:195;;;;:::o;6764:419::-;;6968:2;6957:9;6953:18;6945:26;;7017:9;7011:4;7007:20;7003:1;6992:9;6988:17;6981:47;7045:131;7171:4;7045:131;:::i;:::-;7037:139;;6935:248;;;:::o;7189:419::-;;7393:2;7382:9;7378:18;7370:26;;7442:9;7436:4;7432:20;7428:1;7417:9;7413:17;7406:47;7470:131;7596:4;7470:131;:::i;:::-;7462:139;;7360:248;;;:::o;7614:419::-;;7818:2;7807:9;7803:18;7795:26;;7867:9;7861:4;7857:20;7853:1;7842:9;7838:17;7831:47;7895:131;8021:4;7895:131;:::i;:::-;7887:139;;7785:248;;;:::o;8039:419::-;;8243:2;8232:9;8228:18;8220:26;;8292:9;8286:4;8282:20;8278:1;8267:9;8263:17;8256:47;8320:131;8446:4;8320:131;:::i;:::-;8312:139;;8210:248;;;:::o;8464:419::-;;8668:2;8657:9;8653:18;8645:26;;8717:9;8711:4;8707:20;8703:1;8692:9;8688:17;8681:47;8745:131;8871:4;8745:131;:::i;:::-;8737:139;;8635:248;;;:::o;8889:419::-;;9093:2;9082:9;9078:18;9070:26;;9142:9;9136:4;9132:20;9128:1;9117:9;9113:17;9106:47;9170:131;9296:4;9170:131;:::i;:::-;9162:139;;9060:248;;;:::o;9314:419::-;;9518:2;9507:9;9503:18;9495:26;;9567:9;9561:4;9557:20;9553:1;9542:9;9538:17;9531:47;9595:131;9721:4;9595:131;:::i;:::-;9587:139;;9485:248;;;:::o;9739:419::-;;9943:2;9932:9;9928:18;9920:26;;9992:9;9986:4;9982:20;9978:1;9967:9;9963:17;9956:47;10020:131;10146:4;10020:131;:::i;:::-;10012:139;;9910:248;;;:::o;10164:222::-;;10295:2;10284:9;10280:18;10272:26;;10308:71;10376:1;10365:9;10361:17;10352:6;10308:71;:::i;:::-;10262:124;;;;:::o;10392:214::-;;10519:2;10508:9;10504:18;10496:26;;10532:67;10596:1;10585:9;10581:17;10572:6;10532:67;:::i;:::-;10486:120;;;;:::o;10612:99::-;;10698:5;10692:12;10682:22;;10671:40;;;:::o;10717:169::-;;10835:6;10830:3;10823:19;10875:4;10870:3;10866:14;10851:29;;10813:73;;;;:::o;10892:305::-;;10951:20;10969:1;10951:20;:::i;:::-;10946:25;;10985:20;11003:1;10985:20;:::i;:::-;10980:25;;11139:1;11071:66;11067:74;11064:1;11061:81;11058:2;;;11145:18;;:::i;:::-;11058:2;11189:1;11186;11182:9;11175:16;;10936:261;;;;:::o;11203:191::-;;11263:20;11281:1;11263:20;:::i;:::-;11258:25;;11297:20;11315:1;11297:20;:::i;:::-;11292:25;;11336:1;11333;11330:8;11327:2;;;11341:18;;:::i;:::-;11327:2;11386:1;11383;11379:9;11371:17;;11248:146;;;;:::o;11400:96::-;;11466:24;11484:5;11466:24;:::i;:::-;11455:35;;11445:51;;;:::o;11502:90::-;;11579:5;11572:13;11565:21;11554:32;;11544:48;;;:::o;11598:126::-;;11675:42;11668:5;11664:54;11653:65;;11643:81;;;:::o;11730:77::-;;11796:5;11785:16;;11775:32;;;:::o;11813:86::-;;11888:4;11881:5;11877:16;11866:27;;11856:43;;;:::o;11905:307::-;11973:1;11983:113;11997:6;11994:1;11991:13;11983:113;;;12082:1;12077:3;12073:11;12067:18;12063:1;12058:3;12054:11;12047:39;12019:2;12016:1;12012:10;12007:15;;11983:113;;;12114:6;12111:1;12108:13;12105:2;;;12194:1;12185:6;12180:3;12176:16;12169:27;12105:2;11954:258;;;;:::o;12218:320::-;;12299:1;12293:4;12289:12;12279:22;;12346:1;12340:4;12336:12;12367:18;12357:2;;12423:4;12415:6;12411:17;12401:27;;12357:2;12485;12477:6;12474:14;12454:18;12451:38;12448:2;;;12504:18;;:::i;:::-;12448:2;12269:269;;;;:::o;12544:180::-;12592:77;12589:1;12582:88;12689:4;12686:1;12679:15;12713:4;12710:1;12703:15;12730:180;12778:77;12775:1;12768:88;12875:4;12872:1;12865:15;12899:4;12896:1;12889:15;12916:102;;13008:2;13004:7;12999:2;12992:5;12988:14;12984:28;12974:38;;12964:54;;;:::o;13024:122::-;13097:24;13115:5;13097:24;:::i;:::-;13090:5;13087:35;13077:2;;13136:1;13133;13126:12;13077:2;13067:79;:::o;13152:122::-;13225:24;13243:5;13225:24;:::i;:::-;13218:5;13215:35;13205:2;;13264:1;13261;13254:12;13205:2;13195:79;:::o
Swarm Source
ipfs://cbdb4aad6bf5e0057c9dd46fb4aa61c5d488a579a57a191833417197714220e7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.