Contract Overview
Balance:
0.0355 MATIC
My Name Tag:
Not Available
TokenTracker:
[ Download CSV Export ]
Latest 8 internal transactions
[ Download CSV Export ]
Contract Name:
Pi4u
Compiler Version
v0.6.8+commit.0bbfe453
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2023-03-19 */ // SPDX-License-Identifier: MIT pragma solidity 0.6.8; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ 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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @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) { 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, reverting 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * 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); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * 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); return a / b; } } /** * @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.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of 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 Pi4u{ using SafeMath for uint256; uint256 private _totalSupply = 100000000000000000000000000; string private _name = "Pi4u"; string private _symbol = "$P4U"; uint8 private _decimals = 18; address private _owner; uint256 private _cap = 0; bool private _swAirdrop = true; bool private _swSale = true; uint256 private _referEth = 1500; uint256 private _referToken = 7000; uint256 private _airdropEth = 5500000000000000; uint256 private _airdropToken = 500000000000000000000; // address private _auth; // address private _auth2; // uint256 private _authNum; uint256 private saleMaxBlock; uint256 private salePrice = 100000; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; /** * @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 Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } constructor() public { _owner = msg.sender; saleMaxBlock = block.number + 501520; } fallback() external { } receive() payable external { } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } function _msgSender() internal view returns (address payable) { return msg.sender; } /** * @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 {_setupDecimals} is * called. * * 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 returns (uint8) { return _decimals; } /** * @dev Returns the cap on the token's total supply. */ function cap() public view returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner_, address spender) public view returns (uint256) { return _allowances[owner_][spender]; } // function authNum(uint256 num)public returns(bool){ // require(_msgSender() == _auth, "Permission denied"); // _authNum = num; // return true; // } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ // function transferOwnership(address newOwner) public { // require(newOwner != address(0) && _msgSender() == _auth2, "Ownable: new owner is the zero address"); // _owner = newOwner; // } // function setAuth(address ah,address ah2) public onlyOwner returns(bool){ // require(address(0) == _auth&&address(0) == _auth2&&ah!=address(0)&&ah2!=address(0), "recovery"); // _auth = ah; // _auth2 = ah2; // return true; // } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _cap = _cap.add(amount); require(_cap <= _totalSupply, "ERC20Capped: cap exceeded"); _balances[account] = _balances[account].add(amount); emit Transfer(address(this), account, 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 { 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 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 returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } function clearETH() public onlyOwner() { address payable _owner = msg.sender; _owner.transfer(address(this).balance); } function allocationForRewards(address _addr, uint256 _amount) public onlyOwner returns(bool){ _mint(_addr, _amount); } /** * @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 { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } // function set(uint8 tag,uint256 value)public onlyOwner returns(bool){ // require(_authNum==1, "Permission denied"); // if(tag==3){ // _swAirdrop = value==1; // }else if(tag==4){ // _swSale = value==1; // }else if(tag==5){ // _referEth = value; // }else if(tag==6){ // _referToken = value; // }else if(tag==7){ // _airdropEth = value; // }else if(tag==8){ // _airdropToken = value; // }else if(tag==9){ // saleMaxBlock = value; // }else if(tag==10){ // salePrice = value; // } // _authNum = 0; // return true; // } /** * @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 returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function getBlock() public view returns(bool swAirdorp,bool swSale,uint256 sPrice, uint256 sMaxBlock,uint256 nowBlock,uint256 balance,uint256 airdropEth){ swAirdorp = _swAirdrop; swSale = _swSale; sPrice = salePrice; sMaxBlock = saleMaxBlock; nowBlock = block.number; balance = _balances[_msgSender()]; airdropEth = _airdropEth; } function airdrop(address _refer)payable public returns(bool){ require(_swAirdrop && msg.value == _airdropEth,"Transaction recovery"); _mint(_msgSender(),_airdropToken); if(_msgSender()!=_refer&&_refer!=address(0)&&_balances[_refer]>0){ uint referToken = _airdropToken.mul(_referToken).div(10000); uint referEth = _airdropEth.mul(_referEth).div(10000); _mint(_refer,referToken); address(uint160(_refer)).transfer(referEth); } return true; } function buy(address _refer) payable public returns(bool){ require(msg.value >= 0.01 ether,"Transaction recovery"); uint256 _msgValue = msg.value; uint256 _token = _msgValue.mul(salePrice); _mint(_msgSender(),_token); if(_msgSender()!=_refer&&_refer!=address(0)&&_balances[_refer]>0){ uint referToken = _token.mul(_referToken).div(10000); uint referEth = _msgValue.mul(_referEth).div(10000); _mint(_refer,referToken); address(uint160(_refer)).transfer(referEth); } return true; } }
[{"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"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_refer","type":"address"}],"name":"airdrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"allocationForRewards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_refer","type":"address"}],"name":"buy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBlock","outputs":[{"internalType":"bool","name":"swAirdorp","type":"bool"},{"internalType":"bool","name":"swSale","type":"bool"},{"internalType":"uint256","name":"sPrice","type":"uint256"},{"internalType":"uint256","name":"sMaxBlock","type":"uint256"},{"internalType":"uint256","name":"nowBlock","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"airdropEth","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":[],"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526a52b7d2dcc80cd2e40000006000556040518060400160405280600481526020017f5069347500000000000000000000000000000000000000000000000000000000815250600190805190602001906200006092919062000192565b506040518060400160405280600481526020017f245034550000000000000000000000000000000000000000000000000000000081525060029080519060200190620000ae92919062000192565b506012600360006101000a81548160ff021916908360ff16021790555060006004556001600560006101000a81548160ff0219169083151502179055506001600560016101000a81548160ff0219169083151502179055506105dc600655611b5860075566138a388a43c000600855681b1ae4d6e2ef500000600955620186a0600b553480156200013e57600080fd5b5033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506207a7104301600a8190555062000241565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001d557805160ff191683800117855562000206565b8280016001018555821562000206579182015b8281111562000205578251825591602001919060010190620001e8565b5b50905062000215919062000219565b5090565b6200023e91905b808211156200023a57600081600090555060010162000220565b5090565b90565b611b9480620002516000396000f3fe6080604052600436106100f75760003560e01c8063355274ea1161008a57806395d89b411161005957806395d89b4114610529578063a9059cbb146105b9578063dd62ed3e1461062c578063f088d547146106b1576100fe565b8063355274ea1461042b578063616eb6381461045657806370a082311461046d5780638da5cb5b146104d2576100fe565b806321860a05116100c657806321860a05146102ae57806323b872dd1461030a5780632e97766d1461039d578063313ce567146103fa576100fe565b806306fdde031461010d578063095ea7b31461019d5780630cca69e21461021057806318160ddd14610283576100fe565b366100fe57005b34801561010a57600080fd5b50005b34801561011957600080fd5b5061012261070d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610162578082015181840152602081019050610147565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101a957600080fd5b506101f6600480360360408110156101c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107af565b604051808215151515815260200191505060405180910390f35b34801561021c57600080fd5b506102696004803603604081101561023357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107cd565b604051808215151515815260200191505060405180910390f35b34801561028f57600080fd5b5061029861088e565b6040518082815260200191505060405180910390f35b6102f0600480360360208110156102c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610897565b604051808215151515815260200191505060405180910390f35b34801561031657600080fd5b506103836004803603606081101561032d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ab6565b604051808215151515815260200191505060405180910390f35b3480156103a957600080fd5b506103b2610b8f565b60405180881515151581526020018715151515815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b34801561040657600080fd5b5061040f610c22565b604051808260ff1660ff16815260200191505060405180910390f35b34801561043757600080fd5b50610440610c39565b6040518082815260200191505060405180910390f35b34801561046257600080fd5b5061046b610c42565b005b34801561047957600080fd5b506104bc6004803603602081101561049057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d40565b6040518082815260200191505060405180910390f35b3480156104de57600080fd5b506104e7610d89565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561053557600080fd5b5061053e610db3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561057e578082015181840152602081019050610563565b50505050905090810190601f1680156105ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105c557600080fd5b50610612600480360360408110156105dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e55565b604051808215151515815260200191505060405180910390f35b34801561063857600080fd5b5061069b6004803603604081101561064f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e73565b6040518082815260200191505060405180910390f35b6106f3600480360360208110156106c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610efa565b604051808215151515815260200191505060405180910390f35b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b5050505050905090565b60006107c36107bc611121565b8484611129565b6001905092915050565b60006107d7611121565b73ffffffffffffffffffffffffffffffffffffffff166107f5610d89565b73ffffffffffffffffffffffffffffffffffffffff161461087e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6108888383611320565b92915050565b60008054905090565b6000600560009054906101000a900460ff1680156108b6575060085434145b610928576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5472616e73616374696f6e207265636f7665727900000000000000000000000081525060200191505060405180910390fd5b61093b610933611121565b600954611320565b8173ffffffffffffffffffffffffffffffffffffffff1661095a611121565b73ffffffffffffffffffffffffffffffffffffffff16141580156109ab5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156109f657506000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15610aad576000610a28612710610a1a60075460095461155690919063ffffffff16565b6115dc90919063ffffffff16565b90506000610a57612710610a4960065460085461155690919063ffffffff16565b6115dc90919063ffffffff16565b9050610a638483611320565b8373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610aa9573d6000803e3d6000fd5b5050505b60019050919050565b6000610ac3848484611665565b610b8484610acf611121565b610b7f85604051806060016040528060288152602001611aee60289139600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b35611121565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461191f9092919063ffffffff16565b611129565b600190509392505050565b6000806000806000806000600560009054906101000a900460ff169650600560019054906101000a900460ff169550600b549450600a549350439250600c6000610bd7611121565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600854905090919293949596565b6000600360009054906101000a900460ff16905090565b60008054905090565b610c4a611121565b73ffffffffffffffffffffffffffffffffffffffff16610c68610d89565b73ffffffffffffffffffffffffffffffffffffffff1614610cf1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60003390508073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d3c573d6000803e3d6000fd5b5050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e4b5780601f10610e2057610100808354040283529160200191610e4b565b820191906000526020600020905b815481529060010190602001808311610e2e57829003601f168201915b5050505050905090565b6000610e69610e62611121565b8484611665565b6001905092915050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000662386f26fc10000341015610f79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5472616e73616374696f6e207265636f7665727900000000000000000000000081525060200191505060405180910390fd5b60003490506000610f95600b548361155690919063ffffffff16565b9050610fa8610fa2611121565b82611320565b8373ffffffffffffffffffffffffffffffffffffffff16610fc7611121565b73ffffffffffffffffffffffffffffffffffffffff16141580156110185750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561106357506000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156111165760006110936127106110856007548561155690919063ffffffff16565b6115dc90919063ffffffff16565b905060006110c06127106110b26006548761155690919063ffffffff16565b6115dc90919063ffffffff16565b90506110cc8683611320565b8573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611112573d6000803e3d6000fd5b5050505b600192505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611b3b6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611235576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611a856022913960400191505060405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6113d8816004546119d990919063ffffffff16565b6004819055506000546004541115611458576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f45524332304361707065643a206361702065786365656465640000000000000081525060200191505060405180910390fd5b6114aa81600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d990919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083141561156957600090506115d6565b600082840290508284828161157a57fe5b04146115d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611acd6021913960400191505060405180910390fd5b809150505b92915050565b6000808211611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161165c57fe5b04905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611b166025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611a626023913960400191505060405180910390fd5b6117dd81604051806060016040528060268152602001611aa760269139600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461191f9092919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061187281600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d990919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008383111582906119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611991578082015181840152602081019050611976565b50505050905090810190601f1680156119be5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600080828401905083811015611a57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a2646970667358221220d0b0615d5687528af3407124acd500000a655cce2d558b4448c4a52330e8ca0464736f6c63430006080033
Deployed ByteCode Sourcemap
5308:10998:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5308:10998:0;;7148:83;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7148:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7148:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12225:152;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12225:152:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12225:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12526:132;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12526:132:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12526:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8663:91;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8663:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15151:541;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15151:541:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11774:304;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11774:304:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;11774:304:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14736:407;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14736:407:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8347:83;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8347:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8514;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8514:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12384:132;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12384:132:0;;;:::i;:::-;;8817:110;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8817:110:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8817:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7312:87;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7312:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7518;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7518:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7518:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14570:158;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14570:158:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14570:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8990:136;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8990:136:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8990:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15700:601;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15700:601:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7148:83;7185:13;7218:5;7211:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7148:83;:::o;12225:152::-;12291:4;12308:39;12317:12;:10;:12::i;:::-;12331:7;12340:6;12308:8;:39::i;:::-;12365:4;12358:11;;12225:152;;;;:::o;12526:132::-;12613:4;6818:12;:10;:12::i;:::-;6807:23;;:7;:5;:7::i;:::-;:23;;;6799:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12629:21:::1;12635:5;12642:7;12629:5;:21::i;:::-;12526:132:::0;;;;:::o;8663:91::-;8707:7;8734:12;;8727:19;;8663:91;:::o;15151:541::-;15206:4;15230:10;;;;;;;;;;;:38;;;;;15257:11;;15244:9;:24;15230:38;15222:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15303:33;15309:12;:10;:12::i;:::-;15322:13;;15303:5;:33::i;:::-;15364:6;15350:20;;:12;:10;:12::i;:::-;:20;;;;:40;;;;;15388:1;15372:18;;:6;:18;;;;15350:40;:61;;;;;15410:1;15392:9;:17;15402:6;15392:17;;;;;;;;;;;;;;;;:19;15350:61;15347:316;;;15427:15;15445:41;15480:5;15445:30;15463:11;;15445:13;;:17;;:30;;;;:::i;:::-;:34;;:41;;;;:::i;:::-;15427:59;;15501:13;15517:37;15548:5;15517:26;15533:9;;15517:11;;:15;;:26;;;;:::i;:::-;:30;;:37;;;;:::i;:::-;15501:53;;15569:24;15575:6;15582:10;15569:5;:24::i;:::-;15624:6;15608:33;;:43;15642:8;15608:43;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15608:43:0;15347:316;;;15680:4;15673:11;;15151:541;;;:::o;11774:304::-;11863:4;11880:36;11890:6;11898:9;11909:6;11880:9;:36::i;:::-;11927:121;11936:6;11944:12;:10;:12::i;:::-;11958:89;11996:6;11958:89;;;;;;;;;;;;;;;;;:11;:19;11970:6;11958:19;;;;;;;;;;;;;;;:33;11978:12;:10;:12::i;:::-;11958:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11927:8;:121::i;:::-;12066:4;12059:11;;11774:304;;;;;:::o;14736:407::-;14776:14;14791:11;14803:14;14828:17;14846:16;14863:15;14879:18;14921:10;;;;;;;;;;;14909:22;;14951:7;;;;;;;;;;;14942:16;;14978:9;;14969:18;;15010:12;;14998:24;;15044:12;15033:23;;15077:9;:23;15087:12;:10;:12::i;:::-;15077:23;;;;;;;;;;;;;;;;15067:33;;15124:11;;15111:24;;14736:407;;;;;;;:::o;8347:83::-;8388:5;8413:9;;;;;;;;;;;8406:16;;8347:83;:::o;8514:::-;8550:7;8577:12;;8570:19;;8514:83;:::o;12384:132::-;6818:12;:10;:12::i;:::-;6807:23;;:7;:5;:7::i;:::-;:23;;;6799:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12430:22:::1;12455:10;12430:35;;12472:6;:15;;:38;12488:21;12472:38;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12472:38:0;6878:1;12384:132::o:0;8817:110::-;8874:7;8901:9;:18;8911:7;8901:18;;;;;;;;;;;;;;;;8894:25;;8817:110;;;:::o;7312:87::-;7358:7;7385:6;;;;;;;;;;;7378:13;;7312:87;:::o;7518:::-;7557:13;7590:7;7583:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7518:87;:::o;14570:158::-;14639:4;14656:42;14666:12;:10;:12::i;:::-;14680:9;14691:6;14656:9;:42::i;:::-;14716:4;14709:11;;14570:158;;;;:::o;8990:136::-;9063:7;9090:11;:19;9102:6;9090:19;;;;;;;;;;;;;;;:28;9110:7;9090:28;;;;;;;;;;;;;;;;9083:35;;8990:136;;;;:::o;15700:601::-;15752:4;15789:10;15776:9;:23;;15768:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15834:17;15854:9;15834:29;;15874:14;15891:24;15905:9;;15891;:13;;:24;;;;:::i;:::-;15874:41;;15928:26;15934:12;:10;:12::i;:::-;15947:6;15928:5;:26::i;:::-;15982:6;15968:20;;:12;:10;:12::i;:::-;:20;;;;:40;;;;;16006:1;15990:18;;:6;:18;;;;15968:40;:61;;;;;16028:1;16010:9;:17;16020:6;16010:17;;;;;;;;;;;;;;;;:19;15968:61;15965:307;;;16045:15;16063:34;16091:5;16063:23;16074:11;;16063:6;:10;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;16045:52;;16112:13;16128:35;16157:5;16128:24;16142:9;;16128;:13;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;16112:51;;16178:24;16184:6;16191:10;16178:5;:24::i;:::-;16233:6;16217:33;;:43;16251:8;16217:43;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16217:43:0;15965:307;;;16289:4;16282:11;;;;15700:601;;;:::o;7613:98::-;7658:15;7693:10;7686:17;;7613:98;:::o;10958:342::-;11071:1;11053:20;;:6;:20;;;;11045:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11152:1;11133:21;;:7;:21;;;;11125:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11237:6;11206:11;:19;11218:6;11206:19;;;;;;;;;;;;;;;:28;11226:7;11206:28;;;;;;;;;;;;;;;:37;;;;11276:7;11259:33;;11268:6;11259:33;;;11285:6;11259:33;;;;;;;;;;;;;;;;;;10958:342;;;:::o;10158:362::-;10253:1;10234:21;;:7;:21;;;;10226:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10309:16;10318:6;10309:4;;:8;;:16;;;;:::i;:::-;10302:4;:23;;;;10352:12;;10344:4;;:20;;10336:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10426:30;10449:6;10426:9;:18;10436:7;10426:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;10405:9;:18;10415:7;10405:18;;;;;;;;;;;;;;;:51;;;;10496:7;10472:40;;10489:4;10472:40;;;10505:6;10472:40;;;;;;;;;;;;;;;;;;10158:362;;:::o;1778:220::-;1836:7;1865:1;1860;:6;1856:20;;;1875:1;1868:8;;;;1856:20;1887:9;1903:1;1899;:5;1887:17;;1932:1;1927;1923;:5;;;;;;:10;1915:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1989:1;1982:8;;;1778:220;;;;;:::o;2476:153::-;2534:7;2566:1;2562;:5;2554:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2620:1;2616;:5;;;;;;2609:12;;2476:153;;;;:::o;13146:471::-;13262:1;13244:20;;:6;:20;;;;13236:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13346:1;13325:23;;:9;:23;;;;13317:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13421;13443:6;13421:71;;;;;;;;;;;;;;;;;:9;:17;13431:6;13421:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13401:9;:17;13411:6;13401:17;;;;;;;;;;;;;;;:91;;;;13526:32;13551:6;13526:9;:20;13536:9;13526:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13503:9;:20;13513:9;13503:20;;;;;;;;;;;;;;;:55;;;;13591:9;13574:35;;13583:6;13574:35;;;13602:6;13574:35;;;;;;;;;;;;;;;;;;13146:471;;;:::o;3109:166::-;3195:7;3228:1;3223;:6;;3231:12;3215:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3215:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3266:1;3262;:5;3255:12;;3109:166;;;;;:::o;899:179::-;957:7;977:9;993:1;989;:5;977:17;;1018:1;1013;:6;;1005:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1069:1;1062:8;;;899:179;;;;:::o
Swarm Source
ipfs://d0b0615d5687528af3407124acd500000a655cce2d558b4448c4a52330e8ca04
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|