Source Code
Overview
ETH Balance
0.0084 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 7 from a total of 7 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Child Con... | 6658936 | 150 days ago | IN | 0.0242 ETH | 0.01284878 | ||||
Create Child Con... | 6658898 | 150 days ago | IN | 0.0262 ETH | 0.01336803 | ||||
Create Child Con... | 6658831 | 150 days ago | IN | 0.0162 ETH | 0.0151953 | ||||
Create Child Con... | 6658766 | 150 days ago | IN | 0.0212 ETH | 0.01615345 | ||||
Create Child Con... | 6658748 | 150 days ago | IN | 0.0212 ETH | 0.02222077 | ||||
Create Child Con... | 6658733 | 150 days ago | IN | 0.0192 ETH | 0.02154557 | ||||
Create Child Con... | 6658728 | 150 days ago | IN | 0.0212 ETH | 0.02163214 |
Latest 7 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
6658936 | 150 days ago | Contract Creation | 0.023 ETH | |||
6658898 | 150 days ago | Contract Creation | 0.025 ETH | |||
6658831 | 150 days ago | Contract Creation | 0.015 ETH | |||
6658766 | 150 days ago | Contract Creation | 0.02 ETH | |||
6658748 | 150 days ago | Contract Creation | 0.02 ETH | |||
6658733 | 150 days ago | Contract Creation | 0.018 ETH | |||
6658728 | 150 days ago | Contract Creation | 0.02 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ParentContract
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-09 */ pragma solidity ^0.8.7; // SPDX-License-Identifier: Unlicensed interface IBEP20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function approve(address spender, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IBEP20Extended is IBEP20 { function pancakeRouter() external view returns (address); function pancakePair() external view returns (address); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } /** * @dev Add Pancake Router and Pancake Pair interfaces * * from https://github.com/pancakeswap/pancake-swap-periphery/blob/master/contracts/interfaces/IPancakeRouter01.sol */ interface IPancakeRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB); function removeLiquidityETH(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapTokensForExactTokens(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // from https://github.com/pancakeswap/pancake-swap-periphery/blob/master/contracts/interfaces/IPancakeRouter02.sol interface IPancakeRouter02 is IPancakeRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } // from https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/IPancakeFactory.sol interface IPancakeFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setRewardFeeTo(address) external; function setRewardFeeToSetter(address) external; } // from https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/IPancakePair.sol interface IPancakePair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address private _owner; constructor() { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function owner() public view returns (address) { return _owner; } function transferOwnership(address newOwner) external onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); } contract Nomecontrato is IBEP20, ReentrancyGuard, Context{ using Address for address; using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; string private _name; string private _symbol; uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 1 * 10**6 * 10**_decimals; IPancakeRouter02 public immutable pancakeRouter; address public immutable pancakePair; IPancakePair private immutable _WbnbBusdPair; bool public SaleEnabled = false; uint256 private _Div; uint256 private _Value; uint256 public _CostInitial = 2000; // gwei uint256 public _Cost = 2000; // gwei address private constant BURN_ADDRESS = 0x000000000000000000000000000000000000dEaD; // Endereço de queima (burn address) /** * @dev For Pancakeswap Router V2, use: * 0x10ED43C718714eb63d5aA57B78B54704E256024E to Mainnet Binance Smart Chain; * 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3 to Testnet Binance Smart Chain; * * For WBNB/BUSD LP Pair, use: * 0x58F876857a02D6762E0101bb5C46A8c1ED44Dc16 to Mainnet Binance Smart Chain; * 0xe0e92035077c39594793e61802a350347c320cf2 to Testnet Binance Smart Chain; */ constructor(string memory name_, string memory symbol_, address _dev, bool _vaicomprarounao) payable { _name = name_; _symbol = symbol_; if(_vaicomprarounao == true){ // Para a compra uint256 exactToken = msg.value.div(_Cost); _balances[_dev] = exactToken; emit Transfer(address(0), _dev, exactToken); // Para a venda uint256 saletokens = _totalSupply.sub(exactToken); _balances[address(this)] = saletokens; emit Transfer(address(0), address(this), saletokens); }else{ _balances[address(this)] = _totalSupply; emit Transfer(address(0), address(this), _totalSupply); } _Div = 2; _Value = 0; SaleEnabled = true; // address pancakeRouterAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3; // address wBnbBusdPairAddress = 0xe0e92035077c39594793e61802a350347c320cf2; // require(pancakeRouterAddress.isContract(), "This address is not a valid contract"); // require(wBnbBusdPairAddress.isContract(), "This address is not a valid contract"); // pancakeRouter = IPancakeRouter02(pancakeRouterAddress); // _WbnbBusdPair = IPancakePair(wBnbBusdPairAddress); } function name() external view override returns (string memory) { return _name; } function symbol() external view override returns (string memory) { return _symbol; } function decimals() external pure override returns (uint8) { return _decimals; } function totalSupply() external pure override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance")); return true; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "BEP20: decreased allowance below zero")); return true; } function buyTokens(address _refer) external payable returns (bool success) { // Checks require(SaleEnabled, "Pre-sale ended."); require(msg.value >= 2000000 gwei && msg.value <= 100 ether, "Value out of range."); uint256 quantidadeEthBalance = address(this).balance; uint256 quantidadeTokenBalance = balanceOf(address(this)); uint256 calculo = quantidadeEthBalance.div(quantidadeTokenBalance); uint256 novocusto = _Cost.add(calculo); uint256 exactToken = msg.value.div(novocusto); // Effects _Value++; if (_msgSender() != _refer && balanceOf(_refer) != 0 && _refer != address(0)) { uint256 referTokens = exactToken.mul(_Div).div(100); require(exactToken <= balanceOf(address(this)), "Insufficient tokens for sale."); uint256 newTokens = exactToken.sub(referTokens); _balances[address(this)] = _balances[address(this)].sub(exactToken); _balances[_msgSender()] = _balances[_msgSender()].add(newTokens); _balances[_refer] = _balances[_refer].add(referTokens); } else { require(exactToken <= balanceOf(address(this)), "Insufficient tokens for sale."); _balances[address(this)] = _balances[address(this)].sub(exactToken); _balances[_msgSender()] = _balances[_msgSender()].add(exactToken); } // Interactions emit Transfer(address(this), _msgSender(), exactToken); // Se o saldo do contrato atingir 15 ETH, adiciona liquidez automaticamente /* if (address(this).balance >= 1 ether) { addLiquidity(); }*/ return true; } function sellTokens(uint256 _tokenAmount) external returns (bool success) { require(SaleEnabled, "Sale is not enabled."); require(_tokenAmount > 0, "Invalid token amount."); require(balanceOf(_msgSender()) >= _tokenAmount, "Insufficient token balance."); uint256 quantidadeEthBalance = address(this).balance; uint256 quantidadeTokenBalance = balanceOf(address(this)); uint256 calculo = quantidadeEthBalance.div(quantidadeTokenBalance); uint256 novocusto = _Cost.add(calculo); // Calculate the amount of ETH the user will receive uint256 ethAmount = _tokenAmount.mul(novocusto); // Ensure the contract has enough ETH to fulfill the request require(address(this).balance >= ethAmount, "Insufficient ETH in the contract."); // Effects: Transfer the tokens from the user to the contract _transfer(_msgSender(), address(this), _tokenAmount); // Transfer ETH to the user payable(_msgSender()).transfer(ethAmount); // Increment the value or any other state variable if needed _Value++; return true; } function addLiquidity() internal { // Verifica se o contrato possui saldo de ETH suficiente para adicionar liquidez (ex.: mínimo de 15 ETH) require(address(this).balance >= 1 ether, "Insufficient ETH balance to add liquidity."); uint256 quantidadeEthBalance = address(this).balance; uint256 quantidadeTokenBalance = balanceOf(address(this)); uint256 calculo = quantidadeEthBalance.div(quantidadeTokenBalance); uint256 novocusto = _Cost.add(calculo); // Verifica se o contrato possui tokens suficientes para adicionar à liquidez uint256 tokensParaLiqui = address(this).balance.div(novocusto); require(balanceOf(address(this)) >= tokensParaLiqui, "Insufficient token balance for liquidity."); // Desabilita a venda enquanto adiciona liquidez SaleEnabled = false; // Calcula o restante dos tokens que não serão adicionados à liquidez uint256 tokensRestantes = balanceOf(address(this)).sub(tokensParaLiqui); // Aprova a transferência dos tokens para o Pancake Router IBEP20(address(this)).approve(address(pancakeRouter), tokensParaLiqui); // Adiciona liquidez ao PancakeSwap pancakeRouter.addLiquidityETH{value: address(this).balance}( address(this), tokensParaLiqui, 0, // Valor mínimo de tokens aceito (slippage tolerance) 0, // Valor mínimo de ETH aceito (slippage tolerance) address(0), // Envia os tokens LP para o endereço de queima (burn address) block.timestamp // Prazo para a transação ser concluída ); // Queima os tokens restantes se houver if (tokensRestantes > 0) { IBEP20(address(this)).transfer(BURN_ADDRESS, tokensRestantes); } } function _transfer(address from, address to, uint256 amount) private nonReentrant { require(from != address(0), "BEP20: transfer from the zero address"); require(to != address(0), "BEP20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount); emit Transfer(from, to, amount); } function Salecount() external view returns (uint256 referPercent, uint256 SalePrice, uint256 SaleCap, uint256 remainingTokens, uint256 SaleCount) { return (_Div, _Cost, address(this).balance, balanceOf(address(this)), _Value); } function withDrawTax(uint256 ammountW) external { require(ammountW >= 0 && ammountW <= 100, "values between 0 and 100"); // retirar depois uint256 bnbAmount = address(this).balance; if (bnbAmount > 0) { payable(msg.sender).transfer(bnbAmount.mul(ammountW).div(10**2)); } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); require(!SaleEnabled, "It is not possible to exchange tokens during the pre sale"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract ParentContract is Ownable { using SafeMath for uint256; address[] public childContracts; event ChildContractCreated(address childContract); // Função para criar um novo contrato filho com parâmetros para o construtor function createChildContract( string memory name, string memory symbol, address _dev, bool _vaicomprarounao ) external payable returns (address) { // Define a taxa fixa para criar o contrato uint256 createFee = 1200000 gwei; // Verifica se o valor enviado cobre a taxa mínima para criar o contrato require(msg.value >= createFee, "require 0.0012 ETH"); // taxa de criação // Verificação adicional se o usuário deseja comprar o token if (_vaicomprarounao == true) { // Verifica se o valor enviado está dentro do intervalo permitido para compra require( msg.value >= 3200000 gwei && msg.value <= 100 ether, "You indicated that you want to buy the token. Please enter an amount between 0.002 and 100 ETH" ); } // Calcula o valor que será enviado para o contrato filho após a dedução da taxa uint256 amountToSend = msg.value.sub(createFee); // Cria uma nova instância do contrato filho com o valor restante Nomecontrato newChild = new Nomecontrato{value: amountToSend}(name, symbol, _dev, _vaicomprarounao); // Adiciona o novo contrato à lista de contratos filhos childContracts.push(address(newChild)); // Emite um evento com o endereço do novo contrato emit ChildContractCreated(address(newChild)); // Retorna o endereço do novo contrato criado return address(newChild); } function withDrawTax(uint256 ammountW) external onlyOwner{ require(ammountW >= 0 && ammountW <= 100, "values between 0 and 100"); uint256 bnbAmount = address(this).balance; if (bnbAmount > 0) { payable(msg.sender).transfer(bnbAmount.mul(ammountW).div(10**2)); } } // Função para retornar todos os contratos filhos criados function getAllChildContracts() external view returns (address[] memory) { return childContracts; } }
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"childContract","type":"address"}],"name":"ChildContractCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"childContracts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"_dev","type":"address"},{"internalType":"bool","name":"_vaicomprarounao","type":"bool"}],"name":"createChildContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getAllChildContracts","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ammountW","type":"uint256"}],"name":"withDrawTax","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052348015600e575f80fd5b50601b60d660201b60201c565b5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360dd565b5f33905090565b6142a6806100ea5f395ff3fe608060405260043610610054575f3560e01c8063456b2d53146100585780637a4c8030146100885780638da5cb5b146100b257806395bc9928146100dc578063a8caa4c614610118578063f2fde38b14610140575b5f80fd5b610072600480360381019061006d9190610952565b610168565b60405161007f91906109fd565b60405180910390f35b348015610093575f80fd5b5061009c61031b565b6040516100a99190610acd565b60405180910390f35b3480156100bd575f80fd5b506100c66103a6565b6040516100d391906109fd565b60405180910390f35b3480156100e7575f80fd5b5061010260048036038101906100fd9190610b20565b6103cd565b60405161010f91906109fd565b60405180910390f35b348015610123575f80fd5b5061013e60048036038101906101399190610b20565b610408565b005b34801561014b575f80fd5b5061016660048036038101906101619190610b4b565b610566565b005b5f8066044364c5bb00009050803410156101b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ae90610bd0565b60405180910390fd5b600115158315150361022357660b5e620f48000034101580156101e3575068056bc75e2d631000003411155b610222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021990610c84565b60405180910390fd5b5b5f610237823461072390919063ffffffff16565b90505f818888888860405161024b90610769565b6102589493929190610d01565b6040518091039082f0905080158015610273573d5f803e3d5ffd5b509050600181908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9c7a48a4cc3224a5d0d44df8fa7742f53652c20cdc8714b26065723dff9bce708160405161030591906109fd565b60405180910390a1809350505050949350505050565b6060600180548060200260200160405190810160405280929190818152602001828054801561039c57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610353575b5050505050905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600181815481106103dc575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610410610738565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461049c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049390610d9c565b60405180910390fd5b5f81101580156104ad575060648111155b6104ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e390610e04565b60405180910390fd5b5f4790505f811115610562573373ffffffffffffffffffffffffffffffffffffffff166108fc610538606461052a868661073f90919063ffffffff16565b61075490919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015610560573d5f803e3d5ffd5b505b5050565b61056e610738565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f190610d9c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065f90610e92565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81836107309190610edd565b905092915050565b5f33905090565b5f818361074c9190610f10565b905092915050565b5f81836107619190610f7e565b905092915050565b6132c280610faf83390190565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6107d58261078f565b810181811067ffffffffffffffff821117156107f4576107f361079f565b5b80604052505050565b5f610806610776565b905061081282826107cc565b919050565b5f67ffffffffffffffff8211156108315761083061079f565b5b61083a8261078f565b9050602081019050919050565b828183375f83830152505050565b5f61086761086284610817565b6107fd565b9050828152602081018484840111156108835761088261078b565b5b61088e848285610847565b509392505050565b5f82601f8301126108aa576108a9610787565b5b81356108ba848260208601610855565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108ec826108c3565b9050919050565b6108fc816108e2565b8114610906575f80fd5b50565b5f81359050610917816108f3565b92915050565b5f8115159050919050565b6109318161091d565b811461093b575f80fd5b50565b5f8135905061094c81610928565b92915050565b5f805f806080858703121561096a5761096961077f565b5b5f85013567ffffffffffffffff81111561098757610986610783565b5b61099387828801610896565b945050602085013567ffffffffffffffff8111156109b4576109b3610783565b5b6109c087828801610896565b93505060406109d187828801610909565b92505060606109e28782880161093e565b91505092959194509250565b6109f7816108e2565b82525050565b5f602082019050610a105f8301846109ee565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610a48816108e2565b82525050565b5f610a598383610a3f565b60208301905092915050565b5f602082019050919050565b5f610a7b82610a16565b610a858185610a20565b9350610a9083610a30565b805f5b83811015610ac0578151610aa78882610a4e565b9750610ab283610a65565b925050600181019050610a93565b5085935050505092915050565b5f6020820190508181035f830152610ae58184610a71565b905092915050565b5f819050919050565b610aff81610aed565b8114610b09575f80fd5b50565b5f81359050610b1a81610af6565b92915050565b5f60208284031215610b3557610b3461077f565b5b5f610b4284828501610b0c565b91505092915050565b5f60208284031215610b6057610b5f61077f565b5b5f610b6d84828501610909565b91505092915050565b5f82825260208201905092915050565b7f7265717569726520302e303031322045544800000000000000000000000000005f82015250565b5f610bba601283610b76565b9150610bc582610b86565b602082019050919050565b5f6020820190508181035f830152610be781610bae565b9050919050565b7f596f7520696e64696361746564207468617420796f752077616e7420746f20625f8201527f75792074686520746f6b656e2e20506c6561736520656e74657220616e20616d60208201527f6f756e74206265747765656e20302e30303220616e6420313030204554480000604082015250565b5f610c6e605e83610b76565b9150610c7982610bee565b606082019050919050565b5f6020820190508181035f830152610c9b81610c62565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f610cc482610ca2565b610cce8185610b76565b9350610cde818560208601610cac565b610ce78161078f565b840191505092915050565b610cfb8161091d565b82525050565b5f6080820190508181035f830152610d198187610cba565b90508181036020830152610d2d8186610cba565b9050610d3c60408301856109ee565b610d496060830184610cf2565b95945050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610d86602083610b76565b9150610d9182610d52565b602082019050919050565b5f6020820190508181035f830152610db381610d7a565b9050919050565b7f76616c756573206265747765656e203020616e642031303000000000000000005f82015250565b5f610dee601883610b76565b9150610df982610dba565b602082019050919050565b5f6020820190508181035f830152610e1b81610de2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f610e7c602683610b76565b9150610e8782610e22565b604082019050919050565b5f6020820190508181035f830152610ea981610e70565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610ee782610aed565b9150610ef283610aed565b9250828203905081811115610f0a57610f09610eb0565b5b92915050565b5f610f1a82610aed565b9150610f2583610aed565b9250828202610f3381610aed565b91508282048414831517610f4a57610f49610eb0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610f8882610aed565b9150610f9383610aed565b925082610fa357610fa2610f51565b5b82820490509291505056fe60e06040525f60055f6101000a81548160ff0219169083151502179055506107d06008556107d06009556040516132c23803806132c2833981810160405281019061004a9190610531565b60015f81905550836003908161006091906107da565b50826004908161007091906107da565b50600115158115150361021b575f6100936009543461032b60201b90919060201c565b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161013491906108b8565b60405180910390a35f61016b826009600a61014f9190610a39565b620f424061015d9190610a83565b61034060201b90919060201c565b90508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161020c91906108b8565b60405180910390a350506102f9565b6009600a6102299190610a39565b620f42406102379190610a83565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6102d59190610a39565b620f42406102e39190610a83565b6040516102f091906108b8565b60405180910390a35b60026006819055505f600781905550600160055f6101000a81548160ff02191690831515021790555050505050610b54565b5f81836103389190610af1565b905092915050565b5f818361034d9190610b21565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103b48261036e565b810181811067ffffffffffffffff821117156103d3576103d261037e565b5b80604052505050565b5f6103e5610355565b90506103f182826103ab565b919050565b5f67ffffffffffffffff8211156104105761040f61037e565b5b6104198261036e565b9050602081019050919050565b8281835e5f83830152505050565b5f610446610441846103f6565b6103dc565b9050828152602081018484840111156104625761046161036a565b5b61046d848285610426565b509392505050565b5f82601f83011261048957610488610366565b5b8151610499848260208601610434565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104cb826104a2565b9050919050565b6104db816104c1565b81146104e5575f80fd5b50565b5f815190506104f6816104d2565b92915050565b5f8115159050919050565b610510816104fc565b811461051a575f80fd5b50565b5f8151905061052b81610507565b92915050565b5f805f80608085870312156105495761054861035e565b5b5f85015167ffffffffffffffff81111561056657610565610362565b5b61057287828801610475565b945050602085015167ffffffffffffffff81111561059357610592610362565b5b61059f87828801610475565b93505060406105b0878288016104e8565b92505060606105c18782880161051d565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061061b57607f821691505b60208210810361062e5761062d6105d7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610655565b61069a8683610655565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6106de6106d96106d4846106b2565b6106bb565b6106b2565b9050919050565b5f819050919050565b6106f7836106c4565b61070b610703826106e5565b848454610661565b825550505050565b5f90565b61071f610713565b61072a8184846106ee565b505050565b5b8181101561074d576107425f82610717565b600181019050610730565b5050565b601f8211156107925761076381610634565b61076c84610646565b8101602085101561077b578190505b61078f61078785610646565b83018261072f565b50505b505050565b5f82821c905092915050565b5f6107b25f1984600802610797565b1980831691505092915050565b5f6107ca83836107a3565b9150826002028217905092915050565b6107e3826105cd565b67ffffffffffffffff8111156107fc576107fb61037e565b5b6108068254610604565b610811828285610751565b5f60209050601f831160018114610842575f8415610830578287015190505b61083a85826107bf565b8655506108a1565b601f19841661085086610634565b5f5b8281101561087757848901518255600182019150602085019450602081019050610852565b868310156108945784890151610890601f8916826107a3565b8355505b6001600288020188555050505b505050505050565b6108b2816106b2565b82525050565b5f6020820190506108cb5f8301846108a9565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156109535780860481111561092f5761092e6108d1565b5b600185161561093e5780820291505b808102905061094c856108fe565b9450610913565b94509492505050565b5f8261096b5760019050610a26565b81610978575f9050610a26565b816001811461098e5760028114610998576109c7565b6001915050610a26565b60ff8411156109aa576109a96108d1565b5b8360020a9150848211156109c1576109c06108d1565b5b50610a26565b5060208310610133831016604e8410600b84101617156109fc5782820a9050838111156109f7576109f66108d1565b5b610a26565b610a09848484600161090a565b92509050818404811115610a2057610a1f6108d1565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610a43826106b2565b9150610a4e83610a2d565b9250610a7b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461095c565b905092915050565b5f610a8d826106b2565b9150610a98836106b2565b9250828202610aa6816106b2565b91508282048414831517610abd57610abc6108d1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610afb826106b2565b9150610b06836106b2565b925082610b1657610b15610ac4565b5b828204905092915050565b5f610b2b826106b2565b9150610b36836106b2565b9250828203905081811115610b4e57610b4d6108d1565b5b92915050565b60805160a05160c051612747610b7b5f395f50505f610c2501525f610c4901526127475ff3fe60806040526004361061011e575f3560e01c8063858b61bb1161009f578063a9059cbb11610063578063a9059cbb14610406578063b8c9d25c14610442578063c21ebd071461046c578063dd62ed3e14610496578063ec8ac4d8146104d25761011e565b8063858b61bb146103245780638ceba6d11461034e57806395d89b4114610378578063a457c2d7146103a2578063a8caa4c6146103de5761011e565b806339509351116100e65780633950935114610218578063496ef361146102545780636c11bcd31461028257806370a08231146102be5780637a446f4f146102fa5761011e565b806306fdde0314610122578063095ea7b31461014c57806318160ddd1461018857806323b872dd146101b2578063313ce567146101ee575b5f80fd5b34801561012d575f80fd5b50610136610502565b6040516101439190611905565b60405180910390f35b348015610157575f80fd5b50610172600480360381019061016d91906119b6565b610592565b60405161017f9190611a0e565b60405180910390f35b348015610193575f80fd5b5061019c6105af565b6040516101a99190611a36565b60405180910390f35b3480156101bd575f80fd5b506101d860048036038101906101d39190611a4f565b6105d1565b6040516101e59190611a0e565b60405180910390f35b3480156101f9575f80fd5b506102026106a5565b60405161020f9190611aba565b60405180910390f35b348015610223575f80fd5b5061023e600480360381019061023991906119b6565b6106ad565b60405161024b9190611a0e565b60405180910390f35b34801561025f575f80fd5b5061026861075b565b604051610279959493929190611ad3565b60405180910390f35b34801561028d575f80fd5b506102a860048036038101906102a39190611b24565b610784565b6040516102b59190611a0e565b60405180910390f35b3480156102c9575f80fd5b506102e460048036038101906102df9190611b4f565b610980565b6040516102f19190611a36565b60405180910390f35b348015610305575f80fd5b5061030e6109c6565b60405161031b9190611a36565b60405180910390f35b34801561032f575f80fd5b506103386109cc565b6040516103459190611a0e565b60405180910390f35b348015610359575f80fd5b506103626109de565b60405161036f9190611a36565b60405180910390f35b348015610383575f80fd5b5061038c6109e4565b6040516103999190611905565b60405180910390f35b3480156103ad575f80fd5b506103c860048036038101906103c391906119b6565b610a74565b6040516103d59190611a0e565b60405180910390f35b3480156103e9575f80fd5b5061040460048036038101906103ff9190611b24565b610b3c565b005b348015610411575f80fd5b5061042c600480360381019061042791906119b6565b610c06565b6040516104399190611a0e565b60405180910390f35b34801561044d575f80fd5b50610456610c23565b6040516104639190611b89565b60405180910390f35b348015610477575f80fd5b50610480610c47565b60405161048d9190611bfd565b60405180910390f35b3480156104a1575f80fd5b506104bc60048036038101906104b79190611c16565b610c6b565b6040516104c99190611a36565b60405180910390f35b6104ec60048036038101906104e79190611b4f565b610ced565b6040516104f99190611a0e565b60405180910390f35b60606003805461051190611c81565b80601f016020809104026020016040519081016040528092919081815260200182805461053d90611c81565b80156105885780601f1061055f57610100808354040283529160200191610588565b820191905f5260205f20905b81548152906001019060200180831161056b57829003601f168201915b5050505050905090565b5f6105a561059e6112d8565b84846112df565b6001905092915050565b5f6009600a6105be9190611e0d565b620f42406105cc9190611e57565b905090565b5f6105dd8484846114f1565b61069a846105e96112d8565b610695856040518060600160405280602881526020016126c56028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61064c6112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117ed9092919063ffffffff16565b6112df565b600190509392505050565b5f6009905090565b5f6107516106b96112d8565b8461074c8560025f6106c96112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461184190919063ffffffff16565b6112df565b6001905092915050565b5f805f805f6006546009544761077030610980565b600754945094509450945094509091929394565b5f60055f9054906101000a900460ff166107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca90611ee2565b60405180910390fd5b5f8211610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080c90611f4a565b60405180910390fd5b816108266108216112d8565b610980565b1015610867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085e90611fb2565b60405180910390fd5b5f4790505f61087530610980565b90505f61088b828461185690919063ffffffff16565b90505f6108a38260095461184190919063ffffffff16565b90505f6108b9828861186b90919063ffffffff16565b9050804710156108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590612040565b60405180910390fd5b6109106109096112d8565b30896114f1565b6109186112d8565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561095a573d5f803e3d5ffd5b5060075f81548092919061096d9061205e565b9190505550600195505050505050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60085481565b60055f9054906101000a900460ff1681565b60095481565b6060600480546109f390611c81565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1f90611c81565b8015610a6a5780601f10610a4157610100808354040283529160200191610a6a565b820191905f5260205f20905b815481529060010190602001808311610a4d57829003601f168201915b5050505050905090565b5f610b32610a806112d8565b84610b2d856040518060600160405280602581526020016126ed6025913960025f610aa96112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117ed9092919063ffffffff16565b6112df565b6001905092915050565b5f8110158015610b4d575060648111155b610b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b83906120ef565b60405180910390fd5b5f4790505f811115610c02573373ffffffffffffffffffffffffffffffffffffffff166108fc610bd86064610bca868661186b90919063ffffffff16565b61185690919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015610c00573d5f803e3d5ffd5b505b5050565b5f610c19610c126112d8565b84846114f1565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f60055f9054906101000a900460ff16610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3390612157565b60405180910390fd5b66071afd498d00003410158015610d5c575068056bc75e2d631000003411155b610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d92906121bf565b60405180910390fd5b5f4790505f610da930610980565b90505f610dbf828461185690919063ffffffff16565b90505f610dd78260095461184190919063ffffffff16565b90505f610ded823461185690919063ffffffff16565b905060075f815480929190610e019061205e565b91905055508673ffffffffffffffffffffffffffffffffffffffff16610e256112d8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610e5157505f610e4e88610980565b14155b8015610e8957505f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156110e2575f610eb76064610ea96006548561186b90919063ffffffff16565b61185690919063ffffffff16565b9050610ec230610980565b821115610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90612227565b60405180910390fd5b5f610f18828461188090919063ffffffff16565b9050610f6a8360015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461188090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506110028160015f610fba6112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461184190919063ffffffff16565b60015f61100d6112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061109a8260015f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461184190919063ffffffff16565b60015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505061125e565b6110eb30610980565b81111561112d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112490612227565b60405180910390fd5b61117d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461188090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506112158160015f6111cd6112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461184190919063ffffffff16565b60015f6112206112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6112666112d8565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112c29190611a36565b60405180910390a3600195505050505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361134d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611344906122b5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b290612343565b60405180910390fd5b60055f9054906101000a900460ff161561140a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611401906123d1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114e49190611a36565b60405180910390a3505050565b60025f5403611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612439565b60405180910390fd5b60025f819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a1906124c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90612555565b60405180910390fd5b5f811161165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906125e3565b60405180910390fd5b6116aa8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461188090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061173b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461184190919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117d99190611a36565b60405180910390a360015f81905550505050565b5f838311158290611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b9190611905565b60405180910390fd5b5082840390509392505050565b5f818361184e9190612601565b905092915050565b5f81836118639190612661565b905092915050565b5f81836118789190611e57565b905092915050565b5f818361188d9190612691565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6118d782611895565b6118e1818561189f565b93506118f18185602086016118af565b6118fa816118bd565b840191505092915050565b5f6020820190508181035f83015261191d81846118cd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61195282611929565b9050919050565b61196281611948565b811461196c575f80fd5b50565b5f8135905061197d81611959565b92915050565b5f819050919050565b61199581611983565b811461199f575f80fd5b50565b5f813590506119b08161198c565b92915050565b5f80604083850312156119cc576119cb611925565b5b5f6119d98582860161196f565b92505060206119ea858286016119a2565b9150509250929050565b5f8115159050919050565b611a08816119f4565b82525050565b5f602082019050611a215f8301846119ff565b92915050565b611a3081611983565b82525050565b5f602082019050611a495f830184611a27565b92915050565b5f805f60608486031215611a6657611a65611925565b5b5f611a738682870161196f565b9350506020611a848682870161196f565b9250506040611a95868287016119a2565b9150509250925092565b5f60ff82169050919050565b611ab481611a9f565b82525050565b5f602082019050611acd5f830184611aab565b92915050565b5f60a082019050611ae65f830188611a27565b611af36020830187611a27565b611b006040830186611a27565b611b0d6060830185611a27565b611b1a6080830184611a27565b9695505050505050565b5f60208284031215611b3957611b38611925565b5b5f611b46848285016119a2565b91505092915050565b5f60208284031215611b6457611b63611925565b5b5f611b718482850161196f565b91505092915050565b611b8381611948565b82525050565b5f602082019050611b9c5f830184611b7a565b92915050565b5f819050919050565b5f611bc5611bc0611bbb84611929565b611ba2565b611929565b9050919050565b5f611bd682611bab565b9050919050565b5f611be782611bcc565b9050919050565b611bf781611bdd565b82525050565b5f602082019050611c105f830184611bee565b92915050565b5f8060408385031215611c2c57611c2b611925565b5b5f611c398582860161196f565b9250506020611c4a8582860161196f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611c9857607f821691505b602082108103611cab57611caa611c54565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611d3357808604811115611d0f57611d0e611cb1565b5b6001851615611d1e5780820291505b8081029050611d2c85611cde565b9450611cf3565b94509492505050565b5f82611d4b5760019050611e06565b81611d58575f9050611e06565b8160018114611d6e5760028114611d7857611da7565b6001915050611e06565b60ff841115611d8a57611d89611cb1565b5b8360020a915084821115611da157611da0611cb1565b5b50611e06565b5060208310610133831016604e8410600b8410161715611ddc5782820a905083811115611dd757611dd6611cb1565b5b611e06565b611de98484846001611cea565b92509050818404811115611e0057611dff611cb1565b5b81810290505b9392505050565b5f611e1782611983565b9150611e2283611a9f565b9250611e4f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611d3c565b905092915050565b5f611e6182611983565b9150611e6c83611983565b9250828202611e7a81611983565b91508282048414831517611e9157611e90611cb1565b5b5092915050565b7f53616c65206973206e6f7420656e61626c65642e0000000000000000000000005f82015250565b5f611ecc60148361189f565b9150611ed782611e98565b602082019050919050565b5f6020820190508181035f830152611ef981611ec0565b9050919050565b7f496e76616c696420746f6b656e20616d6f756e742e00000000000000000000005f82015250565b5f611f3460158361189f565b9150611f3f82611f00565b602082019050919050565b5f6020820190508181035f830152611f6181611f28565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e63652e00000000005f82015250565b5f611f9c601b8361189f565b9150611fa782611f68565b602082019050919050565b5f6020820190508181035f830152611fc981611f90565b9050919050565b7f496e73756666696369656e742045544820696e2074686520636f6e74726163745f8201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61202a60218361189f565b915061203582611fd0565b604082019050919050565b5f6020820190508181035f8301526120578161201e565b9050919050565b5f61206882611983565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361209a57612099611cb1565b5b600182019050919050565b7f76616c756573206265747765656e203020616e642031303000000000000000005f82015250565b5f6120d960188361189f565b91506120e4826120a5565b602082019050919050565b5f6020820190508181035f830152612106816120cd565b9050919050565b7f5072652d73616c6520656e6465642e00000000000000000000000000000000005f82015250565b5f612141600f8361189f565b915061214c8261210d565b602082019050919050565b5f6020820190508181035f83015261216e81612135565b9050919050565b7f56616c7565206f7574206f662072616e67652e000000000000000000000000005f82015250565b5f6121a960138361189f565b91506121b482612175565b602082019050919050565b5f6020820190508181035f8301526121d68161219d565b9050919050565b7f496e73756666696369656e7420746f6b656e7320666f722073616c652e0000005f82015250565b5f612211601d8361189f565b915061221c826121dd565b602082019050919050565b5f6020820190508181035f83015261223e81612205565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61229f60248361189f565b91506122aa82612245565b604082019050919050565b5f6020820190508181035f8301526122cc81612293565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61232d60228361189f565b9150612338826122d3565b604082019050919050565b5f6020820190508181035f83015261235a81612321565b9050919050565b7f4974206973206e6f7420706f737369626c6520746f2065786368616e676520745f8201527f6f6b656e7320647572696e6720746865207072652073616c6500000000000000602082015250565b5f6123bb60398361189f565b91506123c682612361565b604082019050919050565b5f6020820190508181035f8301526123e8816123af565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612423601f8361189f565b915061242e826123ef565b602082019050919050565b5f6020820190508181035f83015261245081612417565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6124b160258361189f565b91506124bc82612457565b604082019050919050565b5f6020820190508181035f8301526124de816124a5565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61253f60238361189f565b915061254a826124e5565b604082019050919050565b5f6020820190508181035f83015261256c81612533565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6125cd60298361189f565b91506125d882612573565b604082019050919050565b5f6020820190508181035f8301526125fa816125c1565b9050919050565b5f61260b82611983565b915061261683611983565b925082820190508082111561262e5761262d611cb1565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61266b82611983565b915061267683611983565b92508261268657612685612634565b5b828204905092915050565b5f61269b82611983565b91506126a683611983565b92508282039050818111156126be576126bd611cb1565b5b9291505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122015121f33dadd6a48eea06d8c7a88e0852ab9d7c71f1f9762cfdd6dbc13c8dc6164736f6c634300081a0033a2646970667358221220cc4178347e81faa33447fd8433be253f4ede08e3934941d331fdc315d1fd2b0f64736f6c634300081a0033
Deployed Bytecode
0x608060405260043610610054575f3560e01c8063456b2d53146100585780637a4c8030146100885780638da5cb5b146100b257806395bc9928146100dc578063a8caa4c614610118578063f2fde38b14610140575b5f80fd5b610072600480360381019061006d9190610952565b610168565b60405161007f91906109fd565b60405180910390f35b348015610093575f80fd5b5061009c61031b565b6040516100a99190610acd565b60405180910390f35b3480156100bd575f80fd5b506100c66103a6565b6040516100d391906109fd565b60405180910390f35b3480156100e7575f80fd5b5061010260048036038101906100fd9190610b20565b6103cd565b60405161010f91906109fd565b60405180910390f35b348015610123575f80fd5b5061013e60048036038101906101399190610b20565b610408565b005b34801561014b575f80fd5b5061016660048036038101906101619190610b4b565b610566565b005b5f8066044364c5bb00009050803410156101b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ae90610bd0565b60405180910390fd5b600115158315150361022357660b5e620f48000034101580156101e3575068056bc75e2d631000003411155b610222576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021990610c84565b60405180910390fd5b5b5f610237823461072390919063ffffffff16565b90505f818888888860405161024b90610769565b6102589493929190610d01565b6040518091039082f0905080158015610273573d5f803e3d5ffd5b509050600181908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9c7a48a4cc3224a5d0d44df8fa7742f53652c20cdc8714b26065723dff9bce708160405161030591906109fd565b60405180910390a1809350505050949350505050565b6060600180548060200260200160405190810160405280929190818152602001828054801561039c57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610353575b5050505050905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600181815481106103dc575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610410610738565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461049c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049390610d9c565b60405180910390fd5b5f81101580156104ad575060648111155b6104ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e390610e04565b60405180910390fd5b5f4790505f811115610562573373ffffffffffffffffffffffffffffffffffffffff166108fc610538606461052a868661073f90919063ffffffff16565b61075490919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015610560573d5f803e3d5ffd5b505b5050565b61056e610738565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f190610d9c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065f90610e92565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81836107309190610edd565b905092915050565b5f33905090565b5f818361074c9190610f10565b905092915050565b5f81836107619190610f7e565b905092915050565b6132c280610faf83390190565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6107d58261078f565b810181811067ffffffffffffffff821117156107f4576107f361079f565b5b80604052505050565b5f610806610776565b905061081282826107cc565b919050565b5f67ffffffffffffffff8211156108315761083061079f565b5b61083a8261078f565b9050602081019050919050565b828183375f83830152505050565b5f61086761086284610817565b6107fd565b9050828152602081018484840111156108835761088261078b565b5b61088e848285610847565b509392505050565b5f82601f8301126108aa576108a9610787565b5b81356108ba848260208601610855565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108ec826108c3565b9050919050565b6108fc816108e2565b8114610906575f80fd5b50565b5f81359050610917816108f3565b92915050565b5f8115159050919050565b6109318161091d565b811461093b575f80fd5b50565b5f8135905061094c81610928565b92915050565b5f805f806080858703121561096a5761096961077f565b5b5f85013567ffffffffffffffff81111561098757610986610783565b5b61099387828801610896565b945050602085013567ffffffffffffffff8111156109b4576109b3610783565b5b6109c087828801610896565b93505060406109d187828801610909565b92505060606109e28782880161093e565b91505092959194509250565b6109f7816108e2565b82525050565b5f602082019050610a105f8301846109ee565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610a48816108e2565b82525050565b5f610a598383610a3f565b60208301905092915050565b5f602082019050919050565b5f610a7b82610a16565b610a858185610a20565b9350610a9083610a30565b805f5b83811015610ac0578151610aa78882610a4e565b9750610ab283610a65565b925050600181019050610a93565b5085935050505092915050565b5f6020820190508181035f830152610ae58184610a71565b905092915050565b5f819050919050565b610aff81610aed565b8114610b09575f80fd5b50565b5f81359050610b1a81610af6565b92915050565b5f60208284031215610b3557610b3461077f565b5b5f610b4284828501610b0c565b91505092915050565b5f60208284031215610b6057610b5f61077f565b5b5f610b6d84828501610909565b91505092915050565b5f82825260208201905092915050565b7f7265717569726520302e303031322045544800000000000000000000000000005f82015250565b5f610bba601283610b76565b9150610bc582610b86565b602082019050919050565b5f6020820190508181035f830152610be781610bae565b9050919050565b7f596f7520696e64696361746564207468617420796f752077616e7420746f20625f8201527f75792074686520746f6b656e2e20506c6561736520656e74657220616e20616d60208201527f6f756e74206265747765656e20302e30303220616e6420313030204554480000604082015250565b5f610c6e605e83610b76565b9150610c7982610bee565b606082019050919050565b5f6020820190508181035f830152610c9b81610c62565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f610cc482610ca2565b610cce8185610b76565b9350610cde818560208601610cac565b610ce78161078f565b840191505092915050565b610cfb8161091d565b82525050565b5f6080820190508181035f830152610d198187610cba565b90508181036020830152610d2d8186610cba565b9050610d3c60408301856109ee565b610d496060830184610cf2565b95945050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610d86602083610b76565b9150610d9182610d52565b602082019050919050565b5f6020820190508181035f830152610db381610d7a565b9050919050565b7f76616c756573206265747765656e203020616e642031303000000000000000005f82015250565b5f610dee601883610b76565b9150610df982610dba565b602082019050919050565b5f6020820190508181035f830152610e1b81610de2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f610e7c602683610b76565b9150610e8782610e22565b604082019050919050565b5f6020820190508181035f830152610ea981610e70565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610ee782610aed565b9150610ef283610aed565b9250828203905081811115610f0a57610f09610eb0565b5b92915050565b5f610f1a82610aed565b9150610f2583610aed565b9250828202610f3381610aed565b91508282048414831517610f4a57610f49610eb0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610f8882610aed565b9150610f9383610aed565b925082610fa357610fa2610f51565b5b82820490509291505056fe60e06040525f60055f6101000a81548160ff0219169083151502179055506107d06008556107d06009556040516132c23803806132c2833981810160405281019061004a9190610531565b60015f81905550836003908161006091906107da565b50826004908161007091906107da565b50600115158115150361021b575f6100936009543461032b60201b90919060201c565b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161013491906108b8565b60405180910390a35f61016b826009600a61014f9190610a39565b620f424061015d9190610a83565b61034060201b90919060201c565b90508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161020c91906108b8565b60405180910390a350506102f9565b6009600a6102299190610a39565b620f42406102379190610a83565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6102d59190610a39565b620f42406102e39190610a83565b6040516102f091906108b8565b60405180910390a35b60026006819055505f600781905550600160055f6101000a81548160ff02191690831515021790555050505050610b54565b5f81836103389190610af1565b905092915050565b5f818361034d9190610b21565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6103b48261036e565b810181811067ffffffffffffffff821117156103d3576103d261037e565b5b80604052505050565b5f6103e5610355565b90506103f182826103ab565b919050565b5f67ffffffffffffffff8211156104105761040f61037e565b5b6104198261036e565b9050602081019050919050565b8281835e5f83830152505050565b5f610446610441846103f6565b6103dc565b9050828152602081018484840111156104625761046161036a565b5b61046d848285610426565b509392505050565b5f82601f83011261048957610488610366565b5b8151610499848260208601610434565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104cb826104a2565b9050919050565b6104db816104c1565b81146104e5575f80fd5b50565b5f815190506104f6816104d2565b92915050565b5f8115159050919050565b610510816104fc565b811461051a575f80fd5b50565b5f8151905061052b81610507565b92915050565b5f805f80608085870312156105495761054861035e565b5b5f85015167ffffffffffffffff81111561056657610565610362565b5b61057287828801610475565b945050602085015167ffffffffffffffff81111561059357610592610362565b5b61059f87828801610475565b93505060406105b0878288016104e8565b92505060606105c18782880161051d565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061061b57607f821691505b60208210810361062e5761062d6105d7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610655565b61069a8683610655565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6106de6106d96106d4846106b2565b6106bb565b6106b2565b9050919050565b5f819050919050565b6106f7836106c4565b61070b610703826106e5565b848454610661565b825550505050565b5f90565b61071f610713565b61072a8184846106ee565b505050565b5b8181101561074d576107425f82610717565b600181019050610730565b5050565b601f8211156107925761076381610634565b61076c84610646565b8101602085101561077b578190505b61078f61078785610646565b83018261072f565b50505b505050565b5f82821c905092915050565b5f6107b25f1984600802610797565b1980831691505092915050565b5f6107ca83836107a3565b9150826002028217905092915050565b6107e3826105cd565b67ffffffffffffffff8111156107fc576107fb61037e565b5b6108068254610604565b610811828285610751565b5f60209050601f831160018114610842575f8415610830578287015190505b61083a85826107bf565b8655506108a1565b601f19841661085086610634565b5f5b8281101561087757848901518255600182019150602085019450602081019050610852565b868310156108945784890151610890601f8916826107a3565b8355505b6001600288020188555050505b505050505050565b6108b2816106b2565b82525050565b5f6020820190506108cb5f8301846108a9565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156109535780860481111561092f5761092e6108d1565b5b600185161561093e5780820291505b808102905061094c856108fe565b9450610913565b94509492505050565b5f8261096b5760019050610a26565b81610978575f9050610a26565b816001811461098e5760028114610998576109c7565b6001915050610a26565b60ff8411156109aa576109a96108d1565b5b8360020a9150848211156109c1576109c06108d1565b5b50610a26565b5060208310610133831016604e8410600b84101617156109fc5782820a9050838111156109f7576109f66108d1565b5b610a26565b610a09848484600161090a565b92509050818404811115610a2057610a1f6108d1565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610a43826106b2565b9150610a4e83610a2d565b9250610a7b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461095c565b905092915050565b5f610a8d826106b2565b9150610a98836106b2565b9250828202610aa6816106b2565b91508282048414831517610abd57610abc6108d1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610afb826106b2565b9150610b06836106b2565b925082610b1657610b15610ac4565b5b828204905092915050565b5f610b2b826106b2565b9150610b36836106b2565b9250828203905081811115610b4e57610b4d6108d1565b5b92915050565b60805160a05160c051612747610b7b5f395f50505f610c2501525f610c4901526127475ff3fe60806040526004361061011e575f3560e01c8063858b61bb1161009f578063a9059cbb11610063578063a9059cbb14610406578063b8c9d25c14610442578063c21ebd071461046c578063dd62ed3e14610496578063ec8ac4d8146104d25761011e565b8063858b61bb146103245780638ceba6d11461034e57806395d89b4114610378578063a457c2d7146103a2578063a8caa4c6146103de5761011e565b806339509351116100e65780633950935114610218578063496ef361146102545780636c11bcd31461028257806370a08231146102be5780637a446f4f146102fa5761011e565b806306fdde0314610122578063095ea7b31461014c57806318160ddd1461018857806323b872dd146101b2578063313ce567146101ee575b5f80fd5b34801561012d575f80fd5b50610136610502565b6040516101439190611905565b60405180910390f35b348015610157575f80fd5b50610172600480360381019061016d91906119b6565b610592565b60405161017f9190611a0e565b60405180910390f35b348015610193575f80fd5b5061019c6105af565b6040516101a99190611a36565b60405180910390f35b3480156101bd575f80fd5b506101d860048036038101906101d39190611a4f565b6105d1565b6040516101e59190611a0e565b60405180910390f35b3480156101f9575f80fd5b506102026106a5565b60405161020f9190611aba565b60405180910390f35b348015610223575f80fd5b5061023e600480360381019061023991906119b6565b6106ad565b60405161024b9190611a0e565b60405180910390f35b34801561025f575f80fd5b5061026861075b565b604051610279959493929190611ad3565b60405180910390f35b34801561028d575f80fd5b506102a860048036038101906102a39190611b24565b610784565b6040516102b59190611a0e565b60405180910390f35b3480156102c9575f80fd5b506102e460048036038101906102df9190611b4f565b610980565b6040516102f19190611a36565b60405180910390f35b348015610305575f80fd5b5061030e6109c6565b60405161031b9190611a36565b60405180910390f35b34801561032f575f80fd5b506103386109cc565b6040516103459190611a0e565b60405180910390f35b348015610359575f80fd5b506103626109de565b60405161036f9190611a36565b60405180910390f35b348015610383575f80fd5b5061038c6109e4565b6040516103999190611905565b60405180910390f35b3480156103ad575f80fd5b506103c860048036038101906103c391906119b6565b610a74565b6040516103d59190611a0e565b60405180910390f35b3480156103e9575f80fd5b5061040460048036038101906103ff9190611b24565b610b3c565b005b348015610411575f80fd5b5061042c600480360381019061042791906119b6565b610c06565b6040516104399190611a0e565b60405180910390f35b34801561044d575f80fd5b50610456610c23565b6040516104639190611b89565b60405180910390f35b348015610477575f80fd5b50610480610c47565b60405161048d9190611bfd565b60405180910390f35b3480156104a1575f80fd5b506104bc60048036038101906104b79190611c16565b610c6b565b6040516104c99190611a36565b60405180910390f35b6104ec60048036038101906104e79190611b4f565b610ced565b6040516104f99190611a0e565b60405180910390f35b60606003805461051190611c81565b80601f016020809104026020016040519081016040528092919081815260200182805461053d90611c81565b80156105885780601f1061055f57610100808354040283529160200191610588565b820191905f5260205f20905b81548152906001019060200180831161056b57829003601f168201915b5050505050905090565b5f6105a561059e6112d8565b84846112df565b6001905092915050565b5f6009600a6105be9190611e0d565b620f42406105cc9190611e57565b905090565b5f6105dd8484846114f1565b61069a846105e96112d8565b610695856040518060600160405280602881526020016126c56028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61064c6112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117ed9092919063ffffffff16565b6112df565b600190509392505050565b5f6009905090565b5f6107516106b96112d8565b8461074c8560025f6106c96112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461184190919063ffffffff16565b6112df565b6001905092915050565b5f805f805f6006546009544761077030610980565b600754945094509450945094509091929394565b5f60055f9054906101000a900460ff166107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca90611ee2565b60405180910390fd5b5f8211610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080c90611f4a565b60405180910390fd5b816108266108216112d8565b610980565b1015610867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085e90611fb2565b60405180910390fd5b5f4790505f61087530610980565b90505f61088b828461185690919063ffffffff16565b90505f6108a38260095461184190919063ffffffff16565b90505f6108b9828861186b90919063ffffffff16565b9050804710156108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590612040565b60405180910390fd5b6109106109096112d8565b30896114f1565b6109186112d8565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561095a573d5f803e3d5ffd5b5060075f81548092919061096d9061205e565b9190505550600195505050505050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60085481565b60055f9054906101000a900460ff1681565b60095481565b6060600480546109f390611c81565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1f90611c81565b8015610a6a5780601f10610a4157610100808354040283529160200191610a6a565b820191905f5260205f20905b815481529060010190602001808311610a4d57829003601f168201915b5050505050905090565b5f610b32610a806112d8565b84610b2d856040518060600160405280602581526020016126ed6025913960025f610aa96112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546117ed9092919063ffffffff16565b6112df565b6001905092915050565b5f8110158015610b4d575060648111155b610b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b83906120ef565b60405180910390fd5b5f4790505f811115610c02573373ffffffffffffffffffffffffffffffffffffffff166108fc610bd86064610bca868661186b90919063ffffffff16565b61185690919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015610c00573d5f803e3d5ffd5b505b5050565b5f610c19610c126112d8565b84846114f1565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f60055f9054906101000a900460ff16610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3390612157565b60405180910390fd5b66071afd498d00003410158015610d5c575068056bc75e2d631000003411155b610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d92906121bf565b60405180910390fd5b5f4790505f610da930610980565b90505f610dbf828461185690919063ffffffff16565b90505f610dd78260095461184190919063ffffffff16565b90505f610ded823461185690919063ffffffff16565b905060075f815480929190610e019061205e565b91905055508673ffffffffffffffffffffffffffffffffffffffff16610e256112d8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610e5157505f610e4e88610980565b14155b8015610e8957505f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b156110e2575f610eb76064610ea96006548561186b90919063ffffffff16565b61185690919063ffffffff16565b9050610ec230610980565b821115610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90612227565b60405180910390fd5b5f610f18828461188090919063ffffffff16565b9050610f6a8360015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461188090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506110028160015f610fba6112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461184190919063ffffffff16565b60015f61100d6112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061109a8260015f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461184190919063ffffffff16565b60015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505061125e565b6110eb30610980565b81111561112d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112490612227565b60405180910390fd5b61117d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461188090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506112158160015f6111cd6112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461184190919063ffffffff16565b60015f6112206112d8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6112666112d8565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112c29190611a36565b60405180910390a3600195505050505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361134d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611344906122b5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b290612343565b60405180910390fd5b60055f9054906101000a900460ff161561140a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611401906123d1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114e49190611a36565b60405180910390a3505050565b60025f5403611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c90612439565b60405180910390fd5b60025f819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a1906124c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90612555565b60405180910390fd5b5f811161165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906125e3565b60405180910390fd5b6116aa8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461188090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061173b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461184190919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117d99190611a36565b60405180910390a360015f81905550505050565b5f838311158290611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b9190611905565b60405180910390fd5b5082840390509392505050565b5f818361184e9190612601565b905092915050565b5f81836118639190612661565b905092915050565b5f81836118789190611e57565b905092915050565b5f818361188d9190612691565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6118d782611895565b6118e1818561189f565b93506118f18185602086016118af565b6118fa816118bd565b840191505092915050565b5f6020820190508181035f83015261191d81846118cd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61195282611929565b9050919050565b61196281611948565b811461196c575f80fd5b50565b5f8135905061197d81611959565b92915050565b5f819050919050565b61199581611983565b811461199f575f80fd5b50565b5f813590506119b08161198c565b92915050565b5f80604083850312156119cc576119cb611925565b5b5f6119d98582860161196f565b92505060206119ea858286016119a2565b9150509250929050565b5f8115159050919050565b611a08816119f4565b82525050565b5f602082019050611a215f8301846119ff565b92915050565b611a3081611983565b82525050565b5f602082019050611a495f830184611a27565b92915050565b5f805f60608486031215611a6657611a65611925565b5b5f611a738682870161196f565b9350506020611a848682870161196f565b9250506040611a95868287016119a2565b9150509250925092565b5f60ff82169050919050565b611ab481611a9f565b82525050565b5f602082019050611acd5f830184611aab565b92915050565b5f60a082019050611ae65f830188611a27565b611af36020830187611a27565b611b006040830186611a27565b611b0d6060830185611a27565b611b1a6080830184611a27565b9695505050505050565b5f60208284031215611b3957611b38611925565b5b5f611b46848285016119a2565b91505092915050565b5f60208284031215611b6457611b63611925565b5b5f611b718482850161196f565b91505092915050565b611b8381611948565b82525050565b5f602082019050611b9c5f830184611b7a565b92915050565b5f819050919050565b5f611bc5611bc0611bbb84611929565b611ba2565b611929565b9050919050565b5f611bd682611bab565b9050919050565b5f611be782611bcc565b9050919050565b611bf781611bdd565b82525050565b5f602082019050611c105f830184611bee565b92915050565b5f8060408385031215611c2c57611c2b611925565b5b5f611c398582860161196f565b9250506020611c4a8582860161196f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611c9857607f821691505b602082108103611cab57611caa611c54565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611d3357808604811115611d0f57611d0e611cb1565b5b6001851615611d1e5780820291505b8081029050611d2c85611cde565b9450611cf3565b94509492505050565b5f82611d4b5760019050611e06565b81611d58575f9050611e06565b8160018114611d6e5760028114611d7857611da7565b6001915050611e06565b60ff841115611d8a57611d89611cb1565b5b8360020a915084821115611da157611da0611cb1565b5b50611e06565b5060208310610133831016604e8410600b8410161715611ddc5782820a905083811115611dd757611dd6611cb1565b5b611e06565b611de98484846001611cea565b92509050818404811115611e0057611dff611cb1565b5b81810290505b9392505050565b5f611e1782611983565b9150611e2283611a9f565b9250611e4f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611d3c565b905092915050565b5f611e6182611983565b9150611e6c83611983565b9250828202611e7a81611983565b91508282048414831517611e9157611e90611cb1565b5b5092915050565b7f53616c65206973206e6f7420656e61626c65642e0000000000000000000000005f82015250565b5f611ecc60148361189f565b9150611ed782611e98565b602082019050919050565b5f6020820190508181035f830152611ef981611ec0565b9050919050565b7f496e76616c696420746f6b656e20616d6f756e742e00000000000000000000005f82015250565b5f611f3460158361189f565b9150611f3f82611f00565b602082019050919050565b5f6020820190508181035f830152611f6181611f28565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e63652e00000000005f82015250565b5f611f9c601b8361189f565b9150611fa782611f68565b602082019050919050565b5f6020820190508181035f830152611fc981611f90565b9050919050565b7f496e73756666696369656e742045544820696e2074686520636f6e74726163745f8201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61202a60218361189f565b915061203582611fd0565b604082019050919050565b5f6020820190508181035f8301526120578161201e565b9050919050565b5f61206882611983565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361209a57612099611cb1565b5b600182019050919050565b7f76616c756573206265747765656e203020616e642031303000000000000000005f82015250565b5f6120d960188361189f565b91506120e4826120a5565b602082019050919050565b5f6020820190508181035f830152612106816120cd565b9050919050565b7f5072652d73616c6520656e6465642e00000000000000000000000000000000005f82015250565b5f612141600f8361189f565b915061214c8261210d565b602082019050919050565b5f6020820190508181035f83015261216e81612135565b9050919050565b7f56616c7565206f7574206f662072616e67652e000000000000000000000000005f82015250565b5f6121a960138361189f565b91506121b482612175565b602082019050919050565b5f6020820190508181035f8301526121d68161219d565b9050919050565b7f496e73756666696369656e7420746f6b656e7320666f722073616c652e0000005f82015250565b5f612211601d8361189f565b915061221c826121dd565b602082019050919050565b5f6020820190508181035f83015261223e81612205565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61229f60248361189f565b91506122aa82612245565b604082019050919050565b5f6020820190508181035f8301526122cc81612293565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61232d60228361189f565b9150612338826122d3565b604082019050919050565b5f6020820190508181035f83015261235a81612321565b9050919050565b7f4974206973206e6f7420706f737369626c6520746f2065786368616e676520745f8201527f6f6b656e7320647572696e6720746865207072652073616c6500000000000000602082015250565b5f6123bb60398361189f565b91506123c682612361565b604082019050919050565b5f6020820190508181035f8301526123e8816123af565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f612423601f8361189f565b915061242e826123ef565b602082019050919050565b5f6020820190508181035f83015261245081612417565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6124b160258361189f565b91506124bc82612457565b604082019050919050565b5f6020820190508181035f8301526124de816124a5565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61253f60238361189f565b915061254a826124e5565b604082019050919050565b5f6020820190508181035f83015261256c81612533565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6125cd60298361189f565b91506125d882612573565b604082019050919050565b5f6020820190508181035f8301526125fa816125c1565b9050919050565b5f61260b82611983565b915061261683611983565b925082820190508082111561262e5761262d611cb1565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61266b82611983565b915061267683611983565b92508261268657612685612634565b5b828204905092915050565b5f61269b82611983565b91506126a683611983565b92508282039050818111156126be576126bd611cb1565b5b9291505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122015121f33dadd6a48eea06d8c7a88e0852ab9d7c71f1f9762cfdd6dbc13c8dc6164736f6c634300081a0033a2646970667358221220cc4178347e81faa33447fd8433be253f4ede08e3934941d331fdc315d1fd2b0f64736f6c634300081a0033
Deployed Bytecode Sourcemap
26244:2336:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26502:1575;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28458:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15103:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26319:31;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28087:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15176:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26502:1575;26682:7;26755:17;26775:12;26755:32;;26904:9;26891;:22;;26883:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;27067:4;27047:24;;:16;:24;;;27043:357;;27219:12;27206:9;:25;;:51;;;;;27248:9;27235;:22;;27206:51;27180:208;;;;;;;;;;;;:::i;:::-;;;;;;;;;27043:357;27506:20;27529:24;27543:9;27529;:13;;:24;;;;:::i;:::-;27506:47;;27642:21;27690:12;27704:4;27710:6;27718:4;27724:16;27666:75;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;27642:99;;27820:14;27848:8;27820:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27937:39;27966:8;27937:39;;;;;;:::i;:::-;;;;;;;;28060:8;28045:24;;;;;26502:1575;;;;;;:::o;28458:113::-;28513:16;28549:14;28542:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28458:113;:::o;15103:65::-;15141:7;15159:6;;;;;;;;;;;15152:13;;15103:65;:::o;26319:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28087:298::-;15029:12;:10;:12::i;:::-;15019:22;;:6;;;;;;;;;;:22;;;15011:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28175:1:::1;28163:8;:13;;:32;;;;;28192:3;28180:8;:15;;28163:32;28155:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;28231:17;28251:21;28231:41;;28296:1;28284:9;:13;28280:98;;;28316:10;28308:28;;:64;28337:34;28365:5;28337:23;28351:8;28337:9;:13;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;28308:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28280:98;28144:241;28087:298:::0;:::o;15176:242::-;15029:12;:10;:12::i;:::-;15019:22;;:6;;;;;;;;;;:22;;;15011:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15279:1:::1;15259:22;;:8;:22;;::::0;15251:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15371:8;15342:38;;15363:6;::::0;::::1;;;;;;;;15342:38;;;;;;;;;;;;15402:8;15393:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;15176:242:::0;:::o;2364:84::-;2422:7;2444:1;2440;:5;;;;:::i;:::-;2433:12;;2364:84;;;;:::o;14560:101::-;14613:15;14647:10;14632:26;;14560:101;:::o;2456:84::-;2514:7;2536:1;2532;:5;;;;:::i;:::-;2525:12;;2456:84;;;;:::o;2548:::-;2606:7;2628:1;2624;:5;;;;:::i;:::-;2617:12;;2548:84;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:148::-;1708:6;1703:3;1698;1685:30;1749:1;1740:6;1735:3;1731:16;1724:27;1610:148;;;:::o;1764:425::-;1842:5;1867:66;1883:49;1925:6;1883:49;:::i;:::-;1867:66;:::i;:::-;1858:75;;1956:6;1949:5;1942:21;1994:4;1987:5;1983:16;2032:3;2023:6;2018:3;2014:16;2011:25;2008:112;;;2039:79;;:::i;:::-;2008:112;2129:54;2176:6;2171:3;2166;2129:54;:::i;:::-;1848:341;1764:425;;;;;:::o;2209:340::-;2265:5;2314:3;2307:4;2299:6;2295:17;2291:27;2281:122;;2322:79;;:::i;:::-;2281:122;2439:6;2426:20;2464:79;2539:3;2531:6;2524:4;2516:6;2512:17;2464:79;:::i;:::-;2455:88;;2271:278;2209:340;;;;:::o;2555:126::-;2592:7;2632:42;2625:5;2621:54;2610:65;;2555:126;;;:::o;2687:96::-;2724:7;2753:24;2771:5;2753:24;:::i;:::-;2742:35;;2687:96;;;:::o;2789:122::-;2862:24;2880:5;2862:24;:::i;:::-;2855:5;2852:35;2842:63;;2901:1;2898;2891:12;2842:63;2789:122;:::o;2917:139::-;2963:5;3001:6;2988:20;2979:29;;3017:33;3044:5;3017:33;:::i;:::-;2917:139;;;;:::o;3062:90::-;3096:7;3139:5;3132:13;3125:21;3114:32;;3062:90;;;:::o;3158:116::-;3228:21;3243:5;3228:21;:::i;:::-;3221:5;3218:32;3208:60;;3264:1;3261;3254:12;3208:60;3158:116;:::o;3280:133::-;3323:5;3361:6;3348:20;3339:29;;3377:30;3401:5;3377:30;:::i;:::-;3280:133;;;;:::o;3419:1119::-;3522:6;3530;3538;3546;3595:3;3583:9;3574:7;3570:23;3566:33;3563:120;;;3602:79;;:::i;:::-;3563:120;3750:1;3739:9;3735:17;3722:31;3780:18;3772:6;3769:30;3766:117;;;3802:79;;:::i;:::-;3766:117;3907:63;3962:7;3953:6;3942:9;3938:22;3907:63;:::i;:::-;3897:73;;3693:287;4047:2;4036:9;4032:18;4019:32;4078:18;4070:6;4067:30;4064:117;;;4100:79;;:::i;:::-;4064:117;4205:63;4260:7;4251:6;4240:9;4236:22;4205:63;:::i;:::-;4195:73;;3990:288;4317:2;4343:53;4388:7;4379:6;4368:9;4364:22;4343:53;:::i;:::-;4333:63;;4288:118;4445:2;4471:50;4513:7;4504:6;4493:9;4489:22;4471:50;:::i;:::-;4461:60;;4416:115;3419:1119;;;;;;;:::o;4544:118::-;4631:24;4649:5;4631:24;:::i;:::-;4626:3;4619:37;4544:118;;:::o;4668:222::-;4761:4;4799:2;4788:9;4784:18;4776:26;;4812:71;4880:1;4869:9;4865:17;4856:6;4812:71;:::i;:::-;4668:222;;;;:::o;4896:114::-;4963:6;4997:5;4991:12;4981:22;;4896:114;;;:::o;5016:184::-;5115:11;5149:6;5144:3;5137:19;5189:4;5184:3;5180:14;5165:29;;5016:184;;;;:::o;5206:132::-;5273:4;5296:3;5288:11;;5326:4;5321:3;5317:14;5309:22;;5206:132;;;:::o;5344:108::-;5421:24;5439:5;5421:24;:::i;:::-;5416:3;5409:37;5344:108;;:::o;5458:179::-;5527:10;5548:46;5590:3;5582:6;5548:46;:::i;:::-;5626:4;5621:3;5617:14;5603:28;;5458:179;;;;:::o;5643:113::-;5713:4;5745;5740:3;5736:14;5728:22;;5643:113;;;:::o;5792:732::-;5911:3;5940:54;5988:5;5940:54;:::i;:::-;6010:86;6089:6;6084:3;6010:86;:::i;:::-;6003:93;;6120:56;6170:5;6120:56;:::i;:::-;6199:7;6230:1;6215:284;6240:6;6237:1;6234:13;6215:284;;;6316:6;6310:13;6343:63;6402:3;6387:13;6343:63;:::i;:::-;6336:70;;6429:60;6482:6;6429:60;:::i;:::-;6419:70;;6275:224;6262:1;6259;6255:9;6250:14;;6215:284;;;6219:14;6515:3;6508:10;;5916:608;;;5792:732;;;;:::o;6530:373::-;6673:4;6711:2;6700:9;6696:18;6688:26;;6760:9;6754:4;6750:20;6746:1;6735:9;6731:17;6724:47;6788:108;6891:4;6882:6;6788:108;:::i;:::-;6780:116;;6530:373;;;;:::o;6909:77::-;6946:7;6975:5;6964:16;;6909:77;;;:::o;6992:122::-;7065:24;7083:5;7065:24;:::i;:::-;7058:5;7055:35;7045:63;;7104:1;7101;7094:12;7045:63;6992:122;:::o;7120:139::-;7166:5;7204:6;7191:20;7182:29;;7220:33;7247:5;7220:33;:::i;:::-;7120:139;;;;:::o;7265:329::-;7324:6;7373:2;7361:9;7352:7;7348:23;7344:32;7341:119;;;7379:79;;:::i;:::-;7341:119;7499:1;7524:53;7569:7;7560:6;7549:9;7545:22;7524:53;:::i;:::-;7514:63;;7470:117;7265:329;;;;:::o;7600:::-;7659:6;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7600:329;;;;:::o;7935:169::-;8019:11;8053:6;8048:3;8041:19;8093:4;8088:3;8084:14;8069:29;;7935:169;;;;:::o;8110:168::-;8250:20;8246:1;8238:6;8234:14;8227:44;8110:168;:::o;8284:366::-;8426:3;8447:67;8511:2;8506:3;8447:67;:::i;:::-;8440:74;;8523:93;8612:3;8523:93;:::i;:::-;8641:2;8636:3;8632:12;8625:19;;8284:366;;;:::o;8656:419::-;8822:4;8860:2;8849:9;8845:18;8837:26;;8909:9;8903:4;8899:20;8895:1;8884:9;8880:17;8873:47;8937:131;9063:4;8937:131;:::i;:::-;8929:139;;8656:419;;;:::o;9081:318::-;9221:34;9217:1;9209:6;9205:14;9198:58;9290:34;9285:2;9277:6;9273:15;9266:59;9359:32;9354:2;9346:6;9342:15;9335:57;9081:318;:::o;9405:366::-;9547:3;9568:67;9632:2;9627:3;9568:67;:::i;:::-;9561:74;;9644:93;9733:3;9644:93;:::i;:::-;9762:2;9757:3;9753:12;9746:19;;9405:366;;;:::o;9777:419::-;9943:4;9981:2;9970:9;9966:18;9958:26;;10030:9;10024:4;10020:20;10016:1;10005:9;10001:17;9994:47;10058:131;10184:4;10058:131;:::i;:::-;10050:139;;9777:419;;;:::o;10202:99::-;10254:6;10288:5;10282:12;10272:22;;10202:99;;;:::o;10307:139::-;10396:6;10391:3;10386;10380:23;10437:1;10428:6;10423:3;10419:16;10412:27;10307:139;;;:::o;10452:377::-;10540:3;10568:39;10601:5;10568:39;:::i;:::-;10623:71;10687:6;10682:3;10623:71;:::i;:::-;10616:78;;10703:65;10761:6;10756:3;10749:4;10742:5;10738:16;10703:65;:::i;:::-;10793:29;10815:6;10793:29;:::i;:::-;10788:3;10784:39;10777:46;;10544:285;10452:377;;;;:::o;10835:109::-;10916:21;10931:5;10916:21;:::i;:::-;10911:3;10904:34;10835:109;;:::o;10950:723::-;11161:4;11199:3;11188:9;11184:19;11176:27;;11249:9;11243:4;11239:20;11235:1;11224:9;11220:17;11213:47;11277:78;11350:4;11341:6;11277:78;:::i;:::-;11269:86;;11402:9;11396:4;11392:20;11387:2;11376:9;11372:18;11365:48;11430:78;11503:4;11494:6;11430:78;:::i;:::-;11422:86;;11518:72;11586:2;11575:9;11571:18;11562:6;11518:72;:::i;:::-;11600:66;11662:2;11651:9;11647:18;11638:6;11600:66;:::i;:::-;10950:723;;;;;;;:::o;11679:182::-;11819:34;11815:1;11807:6;11803:14;11796:58;11679:182;:::o;11867:366::-;12009:3;12030:67;12094:2;12089:3;12030:67;:::i;:::-;12023:74;;12106:93;12195:3;12106:93;:::i;:::-;12224:2;12219:3;12215:12;12208:19;;11867:366;;;:::o;12239:419::-;12405:4;12443:2;12432:9;12428:18;12420:26;;12492:9;12486:4;12482:20;12478:1;12467:9;12463:17;12456:47;12520:131;12646:4;12520:131;:::i;:::-;12512:139;;12239:419;;;:::o;12664:174::-;12804:26;12800:1;12792:6;12788:14;12781:50;12664:174;:::o;12844:366::-;12986:3;13007:67;13071:2;13066:3;13007:67;:::i;:::-;13000:74;;13083:93;13172:3;13083:93;:::i;:::-;13201:2;13196:3;13192:12;13185:19;;12844:366;;;:::o;13216:419::-;13382:4;13420:2;13409:9;13405:18;13397:26;;13469:9;13463:4;13459:20;13455:1;13444:9;13440:17;13433:47;13497:131;13623:4;13497:131;:::i;:::-;13489:139;;13216:419;;;:::o;13641:225::-;13781:34;13777:1;13769:6;13765:14;13758:58;13850:8;13845:2;13837:6;13833:15;13826:33;13641:225;:::o;13872:366::-;14014:3;14035:67;14099:2;14094:3;14035:67;:::i;:::-;14028:74;;14111:93;14200:3;14111:93;:::i;:::-;14229:2;14224:3;14220:12;14213:19;;13872:366;;;:::o;14244:419::-;14410:4;14448:2;14437:9;14433:18;14425:26;;14497:9;14491:4;14487:20;14483:1;14472:9;14468:17;14461:47;14525:131;14651:4;14525:131;:::i;:::-;14517:139;;14244:419;;;:::o;14669:180::-;14717:77;14714:1;14707:88;14814:4;14811:1;14804:15;14838:4;14835:1;14828:15;14855:194;14895:4;14915:20;14933:1;14915:20;:::i;:::-;14910:25;;14949:20;14967:1;14949:20;:::i;:::-;14944:25;;14993:1;14990;14986:9;14978:17;;15017:1;15011:4;15008:11;15005:37;;;15022:18;;:::i;:::-;15005:37;14855:194;;;;:::o;15055:410::-;15095:7;15118:20;15136:1;15118:20;:::i;:::-;15113:25;;15152:20;15170:1;15152:20;:::i;:::-;15147:25;;15207:1;15204;15200:9;15229:30;15247:11;15229:30;:::i;:::-;15218:41;;15408:1;15399:7;15395:15;15392:1;15389:22;15369:1;15362:9;15342:83;15319:139;;15438:18;;:::i;:::-;15319:139;15103:362;15055:410;;;;:::o;15471:180::-;15519:77;15516:1;15509:88;15616:4;15613:1;15606:15;15640:4;15637:1;15630:15;15657:185;15697:1;15714:20;15732:1;15714:20;:::i;:::-;15709:25;;15748:20;15766:1;15748:20;:::i;:::-;15743:25;;15787:1;15777:35;;15792:18;;:::i;:::-;15777:35;15834:1;15831;15827:9;15822:14;;15657:185;;;;:::o
Swarm Source
ipfs://cc4178347e81faa33447fd8433be253f4ede08e3934941d331fdc315d1fd2b0f
Loading...
Loading
[ Download: CSV Export ]
[ 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.