More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 4,116 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Token | 20101077 | 202 days ago | IN | 0 ETH | 0.00018339 | ||||
Buy Token | 16945943 | 645 days ago | IN | 0.011 ETH | 0.00053451 | ||||
Withdraw Token | 16917341 | 649 days ago | IN | 0 ETH | 0.00147435 | ||||
Withdraw Token | 16587707 | 695 days ago | IN | 0 ETH | 0.00243837 | ||||
Withdraw Token | 16587054 | 695 days ago | IN | 0 ETH | 0.00234093 | ||||
Withdraw Token | 16586855 | 695 days ago | IN | 0 ETH | 0.00293418 | ||||
Withdraw Token | 16585361 | 695 days ago | IN | 0 ETH | 0.00445748 | ||||
Withdraw Token | 16584255 | 695 days ago | IN | 0 ETH | 0.00201482 | ||||
Withdraw Token | 16583871 | 695 days ago | IN | 0 ETH | 0.00183396 | ||||
Withdraw Token | 16583417 | 696 days ago | IN | 0 ETH | 0.00198917 | ||||
Withdraw Token | 16583166 | 696 days ago | IN | 0 ETH | 0.00207295 | ||||
Withdraw Token | 16583160 | 696 days ago | IN | 0 ETH | 0.00197956 | ||||
Withdraw Token | 16582888 | 696 days ago | IN | 0 ETH | 0.00199788 | ||||
Withdraw Token | 16582605 | 696 days ago | IN | 0 ETH | 0.00191567 | ||||
Withdraw Token | 16581924 | 696 days ago | IN | 0 ETH | 0.00246535 | ||||
Withdraw Token | 16581781 | 696 days ago | IN | 0 ETH | 0.00221486 | ||||
Withdraw Token | 16581308 | 696 days ago | IN | 0 ETH | 0.00261596 | ||||
Withdraw Token | 16581278 | 696 days ago | IN | 0 ETH | 0.00130807 | ||||
Withdraw Token | 16581278 | 696 days ago | IN | 0 ETH | 0.00255 | ||||
Withdraw Token | 16580451 | 696 days ago | IN | 0 ETH | 0.00280891 | ||||
Withdraw Token | 16580334 | 696 days ago | IN | 0 ETH | 0.00313861 | ||||
Withdraw Token | 16580273 | 696 days ago | IN | 0 ETH | 0.00298981 | ||||
Withdraw Token | 16580259 | 696 days ago | IN | 0 ETH | 0.00319717 | ||||
Withdraw Token | 16579413 | 696 days ago | IN | 0 ETH | 0.00399401 | ||||
Withdraw Token | 16578871 | 696 days ago | IN | 0 ETH | 0.00186993 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16493335 | 708 days ago | 35.66498683 ETH | ||||
16479593 | 710 days ago | 50.84462978 ETH | ||||
16434949 | 716 days ago | 144.95186185 ETH | ||||
16219952 | 746 days ago | 131.56779284 ETH | ||||
16048325 | 770 days ago | 38.778359 ETH | ||||
16015647 | 775 days ago | 11.6136 ETH | ||||
15995710 | 778 days ago | 29.63447452 ETH | ||||
15964744 | 782 days ago | 25.37071324 ETH | ||||
15943662 | 785 days ago | 6.43739 ETH | ||||
15927078 | 787 days ago | 49.68682402 ETH | ||||
15879592 | 794 days ago | 44.74961214 ETH | ||||
15843849 | 799 days ago | 61.33053836 ETH | ||||
15798770 | 805 days ago | 13.4252 ETH | ||||
15793401 | 806 days ago | 39.47694299 ETH | ||||
15779263 | 808 days ago | 9.6528 ETH | ||||
15769654 | 809 days ago | 3.06 ETH | ||||
15769030 | 809 days ago | 0.832 ETH | ||||
15767119 | 810 days ago | 9.60205 ETH | ||||
15763889 | 810 days ago | 4.5235 ETH | ||||
15759351 | 811 days ago | 14.82 ETH | ||||
15759120 | 811 days ago | 18.7 ETH | ||||
15759054 | 811 days ago | 23.51729 ETH | ||||
15754591 | 811 days ago | 6.836684 ETH | ||||
15743485 | 813 days ago | 2.33542772 ETH | ||||
15701344 | 819 days ago | 0.0756 ETH |
Loading...
Loading
Contract Name:
ToonPresale
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-05 */ /*################## ############# ############# ### #### ################## ## ## ## ## ## ## ## ### ## ## ## ## ## ## ## ### ## ##### ## ## ##### ## ## ## ## ### ## # # ## ## # # ## ## ## ## ### ## ##### ## ## ##### ## ## ## ## ### ## ## ## ## ## ## ## ### ## ## ## ## ## # ## ### ############# ############# #### ### ########## #### ### ## ## ### ## ####### ####### ## ## ## # ## ## # ## # ## ## ## ###### ## ## # ## ## # ## # ## ## ##### ## ## ## # ## ## # # # ## # ## ## ## ## ## ## ### ## # ## ### ## ## ## #### ## ## ## # ## ## ####### ####### */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; 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; } } } pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.0; contract OwnerWithdrawable is Ownable { using SafeMath for uint256; receive() external payable {} fallback() external payable {} function withdraw(address token, uint256 amt) public onlyOwner { IERC20(token).transfer(msg.sender, amt); } function withdrawAll(address token) public onlyOwner { uint256 amt = IERC20(token).balanceOf(address(this)); withdraw(token, amt); } function withdrawCurrency(uint256 amt) public onlyOwner { payable(msg.sender).transfer(amt); } } pragma solidity ^0.8.0; 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); } } } } pragma solidity ^0.8.0; library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } pragma solidity ^0.8.0; interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } pragma solidity ^0.8.0; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IRouter is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } pragma solidity ^0.8.0; contract ToonPresale is OwnerWithdrawable { using SafeMath for uint256; using SafeERC20 for IERC20; using SafeERC20 for IERC20Metadata; IRouter public router; uint256 public rate; address public saleToken; uint public saleTokenDec; uint256 public totalTokensforSale; mapping(address => bool) public tokenWL; mapping(address => uint256) public tokenPrices; uint256 public preSaleStartTime; uint256 public preSaleEndTime; uint256 public lockingPeriod1; uint256 public lockingPeriod2; uint256 public percentTokens1; address[] public buyers; mapping(address => BuyerTokenDetails) public buyersAmount; uint256 public totalTokensSold; struct BuyerTokenDetails { uint amount; bool lockingPeriod1Claimed; } constructor() { } modifier saleStarted(){ if(preSaleStartTime != 0){ require(block.timestamp < preSaleStartTime); } _; } modifier saleDuration(){ require(block.timestamp > preSaleStartTime); require(block.timestamp < preSaleEndTime); _; } modifier saleValid( uint256 _preSaleStartTime, uint256 _preSaleEndTime, uint256 _lockingPeriod1, uint256 _lockingPeriod2 ){ require(block.timestamp < _preSaleStartTime); require(_preSaleStartTime < _preSaleEndTime); require(_preSaleEndTime < _lockingPeriod1); require(_lockingPeriod1 < _lockingPeriod2); _; } function setSaleTokenParams( address _saleToken, uint256 _totalTokensforSale, uint256 _rate )external onlyOwner saleStarted{ require(_rate != 0); rate = _rate; saleToken = _saleToken; saleTokenDec = IERC20Metadata(saleToken).decimals(); totalTokensforSale = _totalTokensforSale; IERC20(saleToken).safeTransferFrom(msg.sender, address(this), totalTokensforSale); } function setSalePeriodParams( uint256 _preSaleStartTime, uint256 _preSaleEndTime, uint256 _lockingPeriod1, uint256 _lockingPeriod2, uint256 _percentTokens1 )external onlyOwner saleStarted saleValid(_preSaleStartTime, _preSaleEndTime, _lockingPeriod1, _lockingPeriod2){ preSaleStartTime = _preSaleStartTime; preSaleEndTime = _preSaleEndTime; lockingPeriod1 = _lockingPeriod1; lockingPeriod2 = _lockingPeriod2; percentTokens1 = _percentTokens1; } function addWhiteListedToken( address[] memory _tokens, uint256[] memory _prices ) external onlyOwner saleStarted{ require( _tokens.length == _prices.length, "Presale: tokens & prices arrays length mismatch" ); for (uint256 i = 0; i < _tokens.length; i++) { require(_prices[i] != 0); tokenWL[_tokens[i]] = true; tokenPrices[_tokens[i]] = _prices[i]; } } function updateTokenRate( address[] memory _tokens, uint256[] memory _prices, uint256 _rate )external onlyOwner{ require( _tokens.length == _prices.length, "Presale: tokens & prices arrays length mismatch" ); if(_rate != 0){ rate = _rate; } for(uint256 i = 0; i < _tokens.length; i+=1){ require(tokenWL[_tokens[i]] == true); require(_prices[i] != 0); tokenPrices[_tokens[i]] = _prices[i]; } } function stopSale() external onlyOwner { require(block.timestamp > preSaleStartTime); if(block.timestamp < preSaleEndTime){ preSaleEndTime = block.timestamp; } } function getTokenAmount(address token, uint256 amount) public view returns (uint256) { uint256 amtOut; if(token != address(0)){ require(tokenWL[token] == true); uint256 price = tokenPrices[token]; amtOut = amount.mul(10**saleTokenDec).div(price); } else{ amtOut = amount.mul(10**saleTokenDec).div(rate); } return amtOut; } function buyToken(address _token, uint256 _amount) external payable saleDuration{ uint256 saleTokenAmt; if(_token != address(0)){ require(_amount > 0); require(tokenWL[_token] == true); saleTokenAmt = getTokenAmount(_token, _amount); require((totalTokensSold + saleTokenAmt) < totalTokensforSale); IERC20(_token).safeTransferFrom(msg.sender, address(this), _amount); } else{ saleTokenAmt = getTokenAmount(address(0), msg.value); require((totalTokensSold + saleTokenAmt) < totalTokensforSale); } totalTokensSold += saleTokenAmt; buyersAmount[msg.sender].amount += saleTokenAmt; } function withdrawToken()external { uint256 tokensforWithdraw; if(block.timestamp < lockingPeriod2){ require(!buyersAmount[msg.sender].lockingPeriod1Claimed); require(block.timestamp > lockingPeriod1); tokensforWithdraw = buyersAmount[msg.sender].amount * percentTokens1 / 100; buyersAmount[msg.sender].lockingPeriod1Claimed = true; } else { tokensforWithdraw = buyersAmount[msg.sender].amount; buyersAmount[msg.sender].lockingPeriod1Claimed = true; } buyersAmount[msg.sender].amount -= tokensforWithdraw; IERC20(saleToken).safeTransfer(msg.sender, tokensforWithdraw); } function setUniSwapRouterAddress(address _router) external onlyOwner{ require(_router != address(0)); router = IRouter(_router); } function addLiquidity(uint256 amountSaleToken) external payable onlyOwner returns (uint256, uint256, uint256){ IERC20(saleToken).safeTransferFrom(msg.sender, address(this), amountSaleToken); IERC20(saleToken).approve(address(router), amountSaleToken); (uint256 amountA , uint256 amountB ,uint256 amounts) = router.addLiquidityETH{ value: msg.value }(saleToken, amountSaleToken, 0, 0, msg.sender, 2 * block.timestamp); return(amountA, amountB, amounts); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"uint256","name":"amountSaleToken","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"}],"name":"addWhiteListedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buyToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"buyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"buyersAmount","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"lockingPeriod1Claimed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockingPeriod1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockingPeriod2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentTokens1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleTokenDec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_preSaleStartTime","type":"uint256"},{"internalType":"uint256","name":"_preSaleEndTime","type":"uint256"},{"internalType":"uint256","name":"_lockingPeriod1","type":"uint256"},{"internalType":"uint256","name":"_lockingPeriod2","type":"uint256"},{"internalType":"uint256","name":"_percentTokens1","type":"uint256"}],"name":"setSalePeriodParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_saleToken","type":"address"},{"internalType":"uint256","name":"_totalTokensforSale","type":"uint256"},{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"setSaleTokenParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setUniSwapRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenWL","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensforSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"updateTokenRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdrawCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5062000032620000266200003860201b60201c565b6200004060201b60201c565b62000104565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6132bf80620001146000396000f3fe6080604052600436106101dc5760003560e01c80638da5cb5b11610102578063e36b0b3711610095578063f3fef3a311610064578063f3fef3a314610677578063f6f89c63146106a0578063f887ea40146106cb578063fa09e630146106f6576101e3565b8063e36b0b37146105cf578063e985e367146105e6578063f2aa821814610611578063f2fde38b1461064e576101e3565b8063b765ef59116100d1578063b765ef591461053b578063ca628c7814610564578063cce29ea71461057b578063d99a170f146105a6576101e3565b80638da5cb5b146104915780639238c722146104bc578063a78cebc3146104e7578063ace1741c14610510576101e3565b80633c00a36c1161017a57806368f8fc101161014957806368f8fc10146103f65780636bcedf9c14610412578063715018a61461043d5780638ce0b9d214610454576101e3565b80633c00a36c1461033257806351c6590a1461035b57806354a9f1021461038d57806363b20117146103cb576101e3565b8063204120bc116101b6578063204120bc146102765780632c4e722e146102b35780633115329e146102de5780633a137ba814610307576101e3565b806306d65af3146101e55780630c1453f114610210578063115ece4c14610239576101e3565b366101e357005b005b3480156101f157600080fd5b506101fa61071f565b6040516102079190612cbf565b60405180910390f35b34801561021c57600080fd5b5061023760048036038101906102329190612543565b610725565b005b34801561024557600080fd5b50610260600480360381019061025b9190612507565b610916565b60405161026d9190612cbf565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906124de565b610a6b565b6040516102aa9190612cbf565b60405180910390f35b3480156102bf57600080fd5b506102c8610a83565b6040516102d59190612cbf565b60405180910390f35b3480156102ea57600080fd5b50610305600480360381019061030091906125fe565b610a89565b005b34801561031357600080fd5b5061031c610d2e565b6040516103299190612cbf565b60405180910390f35b34801561033e57600080fd5b50610359600480360381019061035491906126a6565b610d34565b005b610375600480360381019061037091906126a6565b610dfa565b60405161038493929190612d03565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af91906124de565b6110a1565b6040516103c2929190612cda565b60405180910390f35b3480156103d757600080fd5b506103e06110d2565b6040516103ed9190612cbf565b60405180910390f35b610410600480360381019061040b9190612507565b6110d8565b005b34801561041e57600080fd5b5061042761128c565b6040516104349190612cbf565b60405180910390f35b34801561044957600080fd5b50610452611292565b005b34801561046057600080fd5b5061047b600480360381019061047691906124de565b61131a565b6040516104889190612ba7565b60405180910390f35b34801561049d57600080fd5b506104a661133a565b6040516104b39190612acb565b60405180910390f35b3480156104c857600080fd5b506104d1611363565b6040516104de9190612cbf565b60405180910390f35b3480156104f357600080fd5b5061050e600480360381019061050991906124de565b611369565b005b34801561051c57600080fd5b50610525611463565b6040516105329190612cbf565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190612592565b611469565b005b34801561057057600080fd5b50610579611710565b005b34801561058757600080fd5b5061059061198c565b60405161059d9190612cbf565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190612747565b611992565b005b3480156105db57600080fd5b506105e4611a89565b005b3480156105f257600080fd5b506105fb611b27565b6040516106089190612acb565b60405180910390f35b34801561061d57600080fd5b50610638600480360381019061063391906126a6565b611b4d565b6040516106459190612acb565b60405180910390f35b34801561065a57600080fd5b50610675600480360381019061067091906124de565b611b8c565b005b34801561068357600080fd5b5061069e60048036038101906106999190612507565b611c84565b005b3480156106ac57600080fd5b506106b5611d92565b6040516106c29190612cbf565b60405180910390f35b3480156106d757600080fd5b506106e0611d98565b6040516106ed9190612bc2565b60405180910390f35b34801561070257600080fd5b5061071d600480360381019061071891906124de565b611dbe565b005b60085481565b61072d611ed5565b73ffffffffffffffffffffffffffffffffffffffff1661074b61133a565b73ffffffffffffffffffffffffffffffffffffffff16146107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890612c5f565b60405180910390fd5b6000600854146107ba5760085442106107b957600080fd5b5b60008114156107c857600080fd5b8060028190555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561087857600080fd5b505afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b091906127be565b60ff16600481905550816005819055506109113330600554600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611edd909392919063ffffffff16565b505050565b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610a295760011515600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146109aa57600080fd5b6000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a2181610a13600454600a610a049190612ecf565b87611f6690919063ffffffff16565b611f7c90919063ffffffff16565b915050610a61565b610a5e600254610a50600454600a610a419190612ecf565b86611f6690919063ffffffff16565b611f7c90919063ffffffff16565b90505b8091505092915050565b60076020528060005260406000206000915090505481565b60025481565b610a91611ed5565b73ffffffffffffffffffffffffffffffffffffffff16610aaf61133a565b73ffffffffffffffffffffffffffffffffffffffff1614610b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afc90612c5f565b60405180910390fd5b8151835114610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090612c3f565b60405180910390fd5b60008114610b5957806002819055505b60005b8351811015610d28576001151560066000868481518110610ba6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610c0257600080fd5b6000838281518110610c3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610c5057600080fd5b828181518110610c89577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160076000868481518110610cce577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610d219190612df5565b9050610b5c565b50505050565b600b5481565b610d3c611ed5565b73ffffffffffffffffffffffffffffffffffffffff16610d5a61133a565b73ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790612c5f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610df6573d6000803e3d6000fd5b5050565b6000806000610e07611ed5565b73ffffffffffffffffffffffffffffffffffffffff16610e2561133a565b73ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7290612c5f565b60405180910390fd5b610eca333086600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611edd909392919063ffffffff16565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401610f49929190612b1d565b602060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9b919061267d565b506000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a600080334260026110159190612fed565b6040518863ffffffff1660e01b815260040161103696959493929190612b46565b6060604051808303818588803b15801561104f57600080fd5b505af1158015611063573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061108891906126f8565b9250925092508282829550955095505050509193909250565b600e6020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600f5481565b60085442116110e657600080fd5b60095442106110f457600080fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111ec576000821161113657600080fd5b60011515600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461119357600080fd5b61119d8383610916565b905060055481600f546111b09190612df5565b106111ba57600080fd5b6111e73330848673ffffffffffffffffffffffffffffffffffffffff16611edd909392919063ffffffff16565b611215565b6111f7600034610916565b905060055481600f5461120a9190612df5565b1061121457600080fd5b5b80600f60008282546112279190612df5565b9250508190555080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546112809190612df5565b92505081905550505050565b60055481565b61129a611ed5565b73ffffffffffffffffffffffffffffffffffffffff166112b861133a565b73ffffffffffffffffffffffffffffffffffffffff161461130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590612c5f565b60405180910390fd5b6113186000611f92565b565b60066020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b611371611ed5565b73ffffffffffffffffffffffffffffffffffffffff1661138f61133a565b73ffffffffffffffffffffffffffffffffffffffff16146113e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dc90612c5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561141f57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b611471611ed5565b73ffffffffffffffffffffffffffffffffffffffff1661148f61133a565b73ffffffffffffffffffffffffffffffffffffffff16146114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90612c5f565b60405180910390fd5b6000600854146114fe5760085442106114fd57600080fd5b5b8051825114611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990612c3f565b60405180910390fd5b60005b825181101561170b576000828281518110611589577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151141561159c57600080fd5b6001600660008584815181106115db577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081818151811061166d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600760008584815181106116b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808061170390613139565b915050611545565b505050565b6000600b5442101561184257600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff161561177657600080fd5b600a54421161178457600080fd5b6064600c54600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546117d69190612fed565b6117e09190612e4b565b90506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506118e3565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546119359190613047565b925050819055506119893382600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120569092919063ffffffff16565b50565b60095481565b61199a611ed5565b73ffffffffffffffffffffffffffffffffffffffff166119b861133a565b73ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590612c5f565b60405180910390fd5b600060085414611a27576008544210611a2657600080fd5b5b84848484834210611a3757600080fd5b828410611a4357600080fd5b818310611a4f57600080fd5b808210611a5b57600080fd5b886008819055508760098190555086600a8190555085600b8190555084600c81905550505050505050505050565b611a91611ed5565b73ffffffffffffffffffffffffffffffffffffffff16611aaf61133a565b73ffffffffffffffffffffffffffffffffffffffff1614611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc90612c5f565b60405180910390fd5b6008544211611b1357600080fd5b600954421015611b2557426009819055505b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d8181548110611b5d57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b94611ed5565b73ffffffffffffffffffffffffffffffffffffffff16611bb261133a565b73ffffffffffffffffffffffffffffffffffffffff1614611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff90612c5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6f90612bff565b60405180910390fd5b611c8181611f92565b50565b611c8c611ed5565b73ffffffffffffffffffffffffffffffffffffffff16611caa61133a565b73ffffffffffffffffffffffffffffffffffffffff1614611d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf790612c5f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611d3b929190612b1d565b602060405180830381600087803b158015611d5557600080fd5b505af1158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d919061267d565b505050565b600a5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611dc6611ed5565b73ffffffffffffffffffffffffffffffffffffffff16611de461133a565b73ffffffffffffffffffffffffffffffffffffffff1614611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190612c5f565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e759190612acb565b60206040518083038186803b158015611e8d57600080fd5b505afa158015611ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec591906126cf565b9050611ed18282611c84565b5050565b600033905090565b611f60846323b872dd60e01b858585604051602401611efe93929190612ae6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506120dc565b50505050565b60008183611f749190612fed565b905092915050565b60008183611f8a9190612e4b565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6120d78363a9059cbb60e01b8484604051602401612075929190612b1d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506120dc565b505050565b600061213e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121a39092919063ffffffff16565b905060008151111561219e578080602001905181019061215e919061267d565b61219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490612c9f565b60405180910390fd5b5b505050565b60606121b284846000856121bb565b90509392505050565b606082471015612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f790612c1f565b60405180910390fd5b612209856122cf565b612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f90612c7f565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122719190612ab4565b60006040518083038185875af1925050503d80600081146122ae576040519150601f19603f3d011682016040523d82523d6000602084013e6122b3565b606091505b50915091506122c38282866122e2565b92505050949350505050565b600080823b905060008111915050919050565b606083156122f257829050612342565b6000835111156123055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123399190612bdd565b60405180910390fd5b9392505050565b600061235c61235784612d6b565b612d3a565b9050808382526020820190508285602086028201111561237b57600080fd5b60005b858110156123ab57816123918882612421565b84526020840193506020830192505060018101905061237e565b5050509392505050565b60006123c86123c384612d97565b612d3a565b905080838252602082019050828560208602820111156123e757600080fd5b60005b8581101561241757816123fd888261249f565b8452602084019350602083019250506001810190506123ea565b5050509392505050565b6000813590506124308161322d565b92915050565b600082601f83011261244757600080fd5b8135612457848260208601612349565b91505092915050565b600082601f83011261247157600080fd5b81356124818482602086016123b5565b91505092915050565b60008151905061249981613244565b92915050565b6000813590506124ae8161325b565b92915050565b6000815190506124c38161325b565b92915050565b6000815190506124d881613272565b92915050565b6000602082840312156124f057600080fd5b60006124fe84828501612421565b91505092915050565b6000806040838503121561251a57600080fd5b600061252885828601612421565b92505060206125398582860161249f565b9150509250929050565b60008060006060848603121561255857600080fd5b600061256686828701612421565b93505060206125778682870161249f565b92505060406125888682870161249f565b9150509250925092565b600080604083850312156125a557600080fd5b600083013567ffffffffffffffff8111156125bf57600080fd5b6125cb85828601612436565b925050602083013567ffffffffffffffff8111156125e857600080fd5b6125f485828601612460565b9150509250929050565b60008060006060848603121561261357600080fd5b600084013567ffffffffffffffff81111561262d57600080fd5b61263986828701612436565b935050602084013567ffffffffffffffff81111561265657600080fd5b61266286828701612460565b92505060406126738682870161249f565b9150509250925092565b60006020828403121561268f57600080fd5b600061269d8482850161248a565b91505092915050565b6000602082840312156126b857600080fd5b60006126c68482850161249f565b91505092915050565b6000602082840312156126e157600080fd5b60006126ef848285016124b4565b91505092915050565b60008060006060848603121561270d57600080fd5b600061271b868287016124b4565b935050602061272c868287016124b4565b925050604061273d868287016124b4565b9150509250925092565b600080600080600060a0868803121561275f57600080fd5b600061276d8882890161249f565b955050602061277e8882890161249f565b945050604061278f8882890161249f565b93505060606127a08882890161249f565b92505060806127b18882890161249f565b9150509295509295909350565b6000602082840312156127d057600080fd5b60006127de848285016124c9565b91505092915050565b6127f08161307b565b82525050565b6127ff8161308d565b82525050565b600061281082612dc3565b61281a8185612dd9565b935061282a818560208601613106565b80840191505092915050565b61283f816130d0565b82525050565b61284e816130f4565b82525050565b600061285f82612dce565b6128698185612de4565b9350612879818560208601613106565b6128828161320f565b840191505092915050565b600061289a602683612de4565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612900602683612de4565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612966602f83612de4565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b60006129cc602083612de4565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612a0c601d83612de4565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612a4c602a83612de4565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b612aae816130b9565b82525050565b6000612ac08284612805565b915081905092915050565b6000602082019050612ae060008301846127e7565b92915050565b6000606082019050612afb60008301866127e7565b612b0860208301856127e7565b612b156040830184612aa5565b949350505050565b6000604082019050612b3260008301856127e7565b612b3f6020830184612aa5565b9392505050565b600060c082019050612b5b60008301896127e7565b612b686020830188612aa5565b612b756040830187612845565b612b826060830186612845565b612b8f60808301856127e7565b612b9c60a0830184612aa5565b979650505050505050565b6000602082019050612bbc60008301846127f6565b92915050565b6000602082019050612bd76000830184612836565b92915050565b60006020820190508181036000830152612bf78184612854565b905092915050565b60006020820190508181036000830152612c188161288d565b9050919050565b60006020820190508181036000830152612c38816128f3565b9050919050565b60006020820190508181036000830152612c5881612959565b9050919050565b60006020820190508181036000830152612c78816129bf565b9050919050565b60006020820190508181036000830152612c98816129ff565b9050919050565b60006020820190508181036000830152612cb881612a3f565b9050919050565b6000602082019050612cd46000830184612aa5565b92915050565b6000604082019050612cef6000830185612aa5565b612cfc60208301846127f6565b9392505050565b6000606082019050612d186000830186612aa5565b612d256020830185612aa5565b612d326040830184612aa5565b949350505050565b6000604051905081810181811067ffffffffffffffff82111715612d6157612d606131e0565b5b8060405250919050565b600067ffffffffffffffff821115612d8657612d856131e0565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612db257612db16131e0565b5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000612e00826130b9565b9150612e0b836130b9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e4057612e3f613182565b5b828201905092915050565b6000612e56826130b9565b9150612e61836130b9565b925082612e7157612e706131b1565b5b828204905092915050565b6000808291508390505b6001851115612ec657808604811115612ea257612ea1613182565b5b6001851615612eb15780820291505b8081029050612ebf85613220565b9450612e86565b94509492505050565b6000612eda826130b9565b9150612ee5836130b9565b9250612f127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f1a565b905092915050565b600082612f2a5760019050612fe6565b81612f385760009050612fe6565b8160018114612f4e5760028114612f5857612f87565b6001915050612fe6565b60ff841115612f6a57612f69613182565b5b8360020a915084821115612f8157612f80613182565b5b50612fe6565b5060208310610133831016604e8410600b8410161715612fbc5782820a905083811115612fb757612fb6613182565b5b612fe6565b612fc98484846001612e7c565b92509050818404811115612fe057612fdf613182565b5b81810290505b9392505050565b6000612ff8826130b9565b9150613003836130b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561303c5761303b613182565b5b828202905092915050565b6000613052826130b9565b915061305d836130b9565b9250828210156130705761306f613182565b5b828203905092915050565b600061308682613099565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006130db826130e2565b9050919050565b60006130ed82613099565b9050919050565b60006130ff826130b9565b9050919050565b60005b83811015613124578082015181840152602081019050613109565b83811115613133576000848401525b50505050565b6000613144826130b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561317757613176613182565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b6132368161307b565b811461324157600080fd5b50565b61324d8161308d565b811461325857600080fd5b50565b613264816130b9565b811461326f57600080fd5b50565b61327b816130c3565b811461328657600080fd5b5056fea2646970667358221220b797a93f7f3ed8be790155eb8ad390f2345c92c9e5cf78d27010b916d026156b64736f6c63430008000033
Deployed Bytecode
0x6080604052600436106101dc5760003560e01c80638da5cb5b11610102578063e36b0b3711610095578063f3fef3a311610064578063f3fef3a314610677578063f6f89c63146106a0578063f887ea40146106cb578063fa09e630146106f6576101e3565b8063e36b0b37146105cf578063e985e367146105e6578063f2aa821814610611578063f2fde38b1461064e576101e3565b8063b765ef59116100d1578063b765ef591461053b578063ca628c7814610564578063cce29ea71461057b578063d99a170f146105a6576101e3565b80638da5cb5b146104915780639238c722146104bc578063a78cebc3146104e7578063ace1741c14610510576101e3565b80633c00a36c1161017a57806368f8fc101161014957806368f8fc10146103f65780636bcedf9c14610412578063715018a61461043d5780638ce0b9d214610454576101e3565b80633c00a36c1461033257806351c6590a1461035b57806354a9f1021461038d57806363b20117146103cb576101e3565b8063204120bc116101b6578063204120bc146102765780632c4e722e146102b35780633115329e146102de5780633a137ba814610307576101e3565b806306d65af3146101e55780630c1453f114610210578063115ece4c14610239576101e3565b366101e357005b005b3480156101f157600080fd5b506101fa61071f565b6040516102079190612cbf565b60405180910390f35b34801561021c57600080fd5b5061023760048036038101906102329190612543565b610725565b005b34801561024557600080fd5b50610260600480360381019061025b9190612507565b610916565b60405161026d9190612cbf565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906124de565b610a6b565b6040516102aa9190612cbf565b60405180910390f35b3480156102bf57600080fd5b506102c8610a83565b6040516102d59190612cbf565b60405180910390f35b3480156102ea57600080fd5b50610305600480360381019061030091906125fe565b610a89565b005b34801561031357600080fd5b5061031c610d2e565b6040516103299190612cbf565b60405180910390f35b34801561033e57600080fd5b50610359600480360381019061035491906126a6565b610d34565b005b610375600480360381019061037091906126a6565b610dfa565b60405161038493929190612d03565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af91906124de565b6110a1565b6040516103c2929190612cda565b60405180910390f35b3480156103d757600080fd5b506103e06110d2565b6040516103ed9190612cbf565b60405180910390f35b610410600480360381019061040b9190612507565b6110d8565b005b34801561041e57600080fd5b5061042761128c565b6040516104349190612cbf565b60405180910390f35b34801561044957600080fd5b50610452611292565b005b34801561046057600080fd5b5061047b600480360381019061047691906124de565b61131a565b6040516104889190612ba7565b60405180910390f35b34801561049d57600080fd5b506104a661133a565b6040516104b39190612acb565b60405180910390f35b3480156104c857600080fd5b506104d1611363565b6040516104de9190612cbf565b60405180910390f35b3480156104f357600080fd5b5061050e600480360381019061050991906124de565b611369565b005b34801561051c57600080fd5b50610525611463565b6040516105329190612cbf565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d9190612592565b611469565b005b34801561057057600080fd5b50610579611710565b005b34801561058757600080fd5b5061059061198c565b60405161059d9190612cbf565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190612747565b611992565b005b3480156105db57600080fd5b506105e4611a89565b005b3480156105f257600080fd5b506105fb611b27565b6040516106089190612acb565b60405180910390f35b34801561061d57600080fd5b50610638600480360381019061063391906126a6565b611b4d565b6040516106459190612acb565b60405180910390f35b34801561065a57600080fd5b50610675600480360381019061067091906124de565b611b8c565b005b34801561068357600080fd5b5061069e60048036038101906106999190612507565b611c84565b005b3480156106ac57600080fd5b506106b5611d92565b6040516106c29190612cbf565b60405180910390f35b3480156106d757600080fd5b506106e0611d98565b6040516106ed9190612bc2565b60405180910390f35b34801561070257600080fd5b5061071d600480360381019061071891906124de565b611dbe565b005b60085481565b61072d611ed5565b73ffffffffffffffffffffffffffffffffffffffff1661074b61133a565b73ffffffffffffffffffffffffffffffffffffffff16146107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890612c5f565b60405180910390fd5b6000600854146107ba5760085442106107b957600080fd5b5b60008114156107c857600080fd5b8060028190555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561087857600080fd5b505afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b091906127be565b60ff16600481905550816005819055506109113330600554600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611edd909392919063ffffffff16565b505050565b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610a295760011515600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146109aa57600080fd5b6000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a2181610a13600454600a610a049190612ecf565b87611f6690919063ffffffff16565b611f7c90919063ffffffff16565b915050610a61565b610a5e600254610a50600454600a610a419190612ecf565b86611f6690919063ffffffff16565b611f7c90919063ffffffff16565b90505b8091505092915050565b60076020528060005260406000206000915090505481565b60025481565b610a91611ed5565b73ffffffffffffffffffffffffffffffffffffffff16610aaf61133a565b73ffffffffffffffffffffffffffffffffffffffff1614610b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afc90612c5f565b60405180910390fd5b8151835114610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090612c3f565b60405180910390fd5b60008114610b5957806002819055505b60005b8351811015610d28576001151560066000868481518110610ba6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610c0257600080fd5b6000838281518110610c3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610c5057600080fd5b828181518110610c89577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160076000868481518110610cce577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610d219190612df5565b9050610b5c565b50505050565b600b5481565b610d3c611ed5565b73ffffffffffffffffffffffffffffffffffffffff16610d5a61133a565b73ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790612c5f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610df6573d6000803e3d6000fd5b5050565b6000806000610e07611ed5565b73ffffffffffffffffffffffffffffffffffffffff16610e2561133a565b73ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7290612c5f565b60405180910390fd5b610eca333086600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611edd909392919063ffffffff16565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401610f49929190612b1d565b602060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9b919061267d565b506000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71934600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a600080334260026110159190612fed565b6040518863ffffffff1660e01b815260040161103696959493929190612b46565b6060604051808303818588803b15801561104f57600080fd5b505af1158015611063573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061108891906126f8565b9250925092508282829550955095505050509193909250565b600e6020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600f5481565b60085442116110e657600080fd5b60095442106110f457600080fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111ec576000821161113657600080fd5b60011515600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461119357600080fd5b61119d8383610916565b905060055481600f546111b09190612df5565b106111ba57600080fd5b6111e73330848673ffffffffffffffffffffffffffffffffffffffff16611edd909392919063ffffffff16565b611215565b6111f7600034610916565b905060055481600f5461120a9190612df5565b1061121457600080fd5b5b80600f60008282546112279190612df5565b9250508190555080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546112809190612df5565b92505081905550505050565b60055481565b61129a611ed5565b73ffffffffffffffffffffffffffffffffffffffff166112b861133a565b73ffffffffffffffffffffffffffffffffffffffff161461130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590612c5f565b60405180910390fd5b6113186000611f92565b565b60066020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b611371611ed5565b73ffffffffffffffffffffffffffffffffffffffff1661138f61133a565b73ffffffffffffffffffffffffffffffffffffffff16146113e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dc90612c5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561141f57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045481565b611471611ed5565b73ffffffffffffffffffffffffffffffffffffffff1661148f61133a565b73ffffffffffffffffffffffffffffffffffffffff16146114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90612c5f565b60405180910390fd5b6000600854146114fe5760085442106114fd57600080fd5b5b8051825114611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990612c3f565b60405180910390fd5b60005b825181101561170b576000828281518110611589577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151141561159c57600080fd5b6001600660008584815181106115db577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081818151811061166d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600760008584815181106116b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808061170390613139565b915050611545565b505050565b6000600b5442101561184257600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff161561177657600080fd5b600a54421161178457600080fd5b6064600c54600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546117d69190612fed565b6117e09190612e4b565b90506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506118e3565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546119359190613047565b925050819055506119893382600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120569092919063ffffffff16565b50565b60095481565b61199a611ed5565b73ffffffffffffffffffffffffffffffffffffffff166119b861133a565b73ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590612c5f565b60405180910390fd5b600060085414611a27576008544210611a2657600080fd5b5b84848484834210611a3757600080fd5b828410611a4357600080fd5b818310611a4f57600080fd5b808210611a5b57600080fd5b886008819055508760098190555086600a8190555085600b8190555084600c81905550505050505050505050565b611a91611ed5565b73ffffffffffffffffffffffffffffffffffffffff16611aaf61133a565b73ffffffffffffffffffffffffffffffffffffffff1614611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc90612c5f565b60405180910390fd5b6008544211611b1357600080fd5b600954421015611b2557426009819055505b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d8181548110611b5d57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b94611ed5565b73ffffffffffffffffffffffffffffffffffffffff16611bb261133a565b73ffffffffffffffffffffffffffffffffffffffff1614611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff90612c5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6f90612bff565b60405180910390fd5b611c8181611f92565b50565b611c8c611ed5565b73ffffffffffffffffffffffffffffffffffffffff16611caa61133a565b73ffffffffffffffffffffffffffffffffffffffff1614611d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf790612c5f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611d3b929190612b1d565b602060405180830381600087803b158015611d5557600080fd5b505af1158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d919061267d565b505050565b600a5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611dc6611ed5565b73ffffffffffffffffffffffffffffffffffffffff16611de461133a565b73ffffffffffffffffffffffffffffffffffffffff1614611e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3190612c5f565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e759190612acb565b60206040518083038186803b158015611e8d57600080fd5b505afa158015611ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec591906126cf565b9050611ed18282611c84565b5050565b600033905090565b611f60846323b872dd60e01b858585604051602401611efe93929190612ae6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506120dc565b50505050565b60008183611f749190612fed565b905092915050565b60008183611f8a9190612e4b565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6120d78363a9059cbb60e01b8484604051602401612075929190612b1d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506120dc565b505050565b600061213e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121a39092919063ffffffff16565b905060008151111561219e578080602001905181019061215e919061267d565b61219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490612c9f565b60405180910390fd5b5b505050565b60606121b284846000856121bb565b90509392505050565b606082471015612200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f790612c1f565b60405180910390fd5b612209856122cf565b612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f90612c7f565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122719190612ab4565b60006040518083038185875af1925050503d80600081146122ae576040519150601f19603f3d011682016040523d82523d6000602084013e6122b3565b606091505b50915091506122c38282866122e2565b92505050949350505050565b600080823b905060008111915050919050565b606083156122f257829050612342565b6000835111156123055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123399190612bdd565b60405180910390fd5b9392505050565b600061235c61235784612d6b565b612d3a565b9050808382526020820190508285602086028201111561237b57600080fd5b60005b858110156123ab57816123918882612421565b84526020840193506020830192505060018101905061237e565b5050509392505050565b60006123c86123c384612d97565b612d3a565b905080838252602082019050828560208602820111156123e757600080fd5b60005b8581101561241757816123fd888261249f565b8452602084019350602083019250506001810190506123ea565b5050509392505050565b6000813590506124308161322d565b92915050565b600082601f83011261244757600080fd5b8135612457848260208601612349565b91505092915050565b600082601f83011261247157600080fd5b81356124818482602086016123b5565b91505092915050565b60008151905061249981613244565b92915050565b6000813590506124ae8161325b565b92915050565b6000815190506124c38161325b565b92915050565b6000815190506124d881613272565b92915050565b6000602082840312156124f057600080fd5b60006124fe84828501612421565b91505092915050565b6000806040838503121561251a57600080fd5b600061252885828601612421565b92505060206125398582860161249f565b9150509250929050565b60008060006060848603121561255857600080fd5b600061256686828701612421565b93505060206125778682870161249f565b92505060406125888682870161249f565b9150509250925092565b600080604083850312156125a557600080fd5b600083013567ffffffffffffffff8111156125bf57600080fd5b6125cb85828601612436565b925050602083013567ffffffffffffffff8111156125e857600080fd5b6125f485828601612460565b9150509250929050565b60008060006060848603121561261357600080fd5b600084013567ffffffffffffffff81111561262d57600080fd5b61263986828701612436565b935050602084013567ffffffffffffffff81111561265657600080fd5b61266286828701612460565b92505060406126738682870161249f565b9150509250925092565b60006020828403121561268f57600080fd5b600061269d8482850161248a565b91505092915050565b6000602082840312156126b857600080fd5b60006126c68482850161249f565b91505092915050565b6000602082840312156126e157600080fd5b60006126ef848285016124b4565b91505092915050565b60008060006060848603121561270d57600080fd5b600061271b868287016124b4565b935050602061272c868287016124b4565b925050604061273d868287016124b4565b9150509250925092565b600080600080600060a0868803121561275f57600080fd5b600061276d8882890161249f565b955050602061277e8882890161249f565b945050604061278f8882890161249f565b93505060606127a08882890161249f565b92505060806127b18882890161249f565b9150509295509295909350565b6000602082840312156127d057600080fd5b60006127de848285016124c9565b91505092915050565b6127f08161307b565b82525050565b6127ff8161308d565b82525050565b600061281082612dc3565b61281a8185612dd9565b935061282a818560208601613106565b80840191505092915050565b61283f816130d0565b82525050565b61284e816130f4565b82525050565b600061285f82612dce565b6128698185612de4565b9350612879818560208601613106565b6128828161320f565b840191505092915050565b600061289a602683612de4565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612900602683612de4565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612966602f83612de4565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b60006129cc602083612de4565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612a0c601d83612de4565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612a4c602a83612de4565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b612aae816130b9565b82525050565b6000612ac08284612805565b915081905092915050565b6000602082019050612ae060008301846127e7565b92915050565b6000606082019050612afb60008301866127e7565b612b0860208301856127e7565b612b156040830184612aa5565b949350505050565b6000604082019050612b3260008301856127e7565b612b3f6020830184612aa5565b9392505050565b600060c082019050612b5b60008301896127e7565b612b686020830188612aa5565b612b756040830187612845565b612b826060830186612845565b612b8f60808301856127e7565b612b9c60a0830184612aa5565b979650505050505050565b6000602082019050612bbc60008301846127f6565b92915050565b6000602082019050612bd76000830184612836565b92915050565b60006020820190508181036000830152612bf78184612854565b905092915050565b60006020820190508181036000830152612c188161288d565b9050919050565b60006020820190508181036000830152612c38816128f3565b9050919050565b60006020820190508181036000830152612c5881612959565b9050919050565b60006020820190508181036000830152612c78816129bf565b9050919050565b60006020820190508181036000830152612c98816129ff565b9050919050565b60006020820190508181036000830152612cb881612a3f565b9050919050565b6000602082019050612cd46000830184612aa5565b92915050565b6000604082019050612cef6000830185612aa5565b612cfc60208301846127f6565b9392505050565b6000606082019050612d186000830186612aa5565b612d256020830185612aa5565b612d326040830184612aa5565b949350505050565b6000604051905081810181811067ffffffffffffffff82111715612d6157612d606131e0565b5b8060405250919050565b600067ffffffffffffffff821115612d8657612d856131e0565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612db257612db16131e0565b5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000612e00826130b9565b9150612e0b836130b9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e4057612e3f613182565b5b828201905092915050565b6000612e56826130b9565b9150612e61836130b9565b925082612e7157612e706131b1565b5b828204905092915050565b6000808291508390505b6001851115612ec657808604811115612ea257612ea1613182565b5b6001851615612eb15780820291505b8081029050612ebf85613220565b9450612e86565b94509492505050565b6000612eda826130b9565b9150612ee5836130b9565b9250612f127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f1a565b905092915050565b600082612f2a5760019050612fe6565b81612f385760009050612fe6565b8160018114612f4e5760028114612f5857612f87565b6001915050612fe6565b60ff841115612f6a57612f69613182565b5b8360020a915084821115612f8157612f80613182565b5b50612fe6565b5060208310610133831016604e8410600b8410161715612fbc5782820a905083811115612fb757612fb6613182565b5b612fe6565b612fc98484846001612e7c565b92509050818404811115612fe057612fdf613182565b5b81810290505b9392505050565b6000612ff8826130b9565b9150613003836130b9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561303c5761303b613182565b5b828202905092915050565b6000613052826130b9565b915061305d836130b9565b9250828210156130705761306f613182565b5b828203905092915050565b600061308682613099565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006130db826130e2565b9050919050565b60006130ed82613099565b9050919050565b60006130ff826130b9565b9050919050565b60005b83811015613124578082015181840152602081019050613109565b83811115613133576000848401525b50505050565b6000613144826130b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561317757613176613182565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b6132368161307b565b811461324157600080fd5b50565b61324d8161308d565b811461325857600080fd5b50565b613264816130b9565b811461326f57600080fd5b50565b61327b816130c3565b811461328657600080fd5b5056fea2646970667358221220b797a93f7f3ed8be790155eb8ad390f2345c92c9e5cf78d27010b916d026156b64736f6c63430008000033
Deployed Bytecode Sourcemap
17896:6489:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18321:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19483:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21768:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18266:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18084:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20979:567;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18437:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6111:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23883:499;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;18545:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;18611:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22241:741;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18176:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5115:103;;;;;;;;;;;;;:::i;:::-;;18218:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4892:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18475:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23722:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18143:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20483:488;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22990:724;;;;;;;;;;;;;:::i;:::-;;18361:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19927:548;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21554:206;;;;;;;;;;;;;:::i;:::-;;18112:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18513:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5226:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5819:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18399:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18054:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5948:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18321:31;;;;:::o;19483:436::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18838:1:::1;18818:16;;:21;18815:95;;18881:16;;18863:15;:34;18855:43;;;::::0;::::1;;18815:95;19648:1:::2;19639:5;:10;;19631:19;;;::::0;::::2;;19668:5;19661:4;:12;;;;19696:10;19684:9;;:22;;;;;;;;;;;;;;;;;;19747:9;;;;;;;;;;;19732:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19717:51;;:12;:51;;;;19800:19;19779:18;:40;;;;19830:81;19865:10;19885:4;19892:18;;19837:9;;;;;;;;;;;19830:34;;;;:81;;;;;;:::i;:::-;19483:436:::0;;;:::o;21768:465::-;21871:7;21896:14;21941:1;21924:19;;:5;:19;;;21921:281;;21985:4;21967:22;;:7;:14;21975:5;21967:14;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;21959:31;;;;;;22005:13;22021:11;:18;22033:5;22021:18;;;;;;;;;;;;;;;;22005:34;;22063:39;22096:5;22063:28;22078:12;;22074:2;:16;;;;:::i;:::-;22063:6;:10;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;22054:48;;21921:281;;;;22152:38;22185:4;;22152:28;22167:12;;22163:2;:16;;;;:::i;:::-;22152:6;:10;;:28;;;;:::i;:::-;:32;;:38;;;;:::i;:::-;22143:47;;21921:281;22219:6;22212:13;;;21768:465;;;;:::o;18266:46::-;;;;;;;;;;;;;;;;;:::o;18084:19::-;;;;:::o;20979:567::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21173:7:::1;:14;21155:7;:14;:32;21133:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;21289:1;21280:5;:10;21277:53;;21313:5;21306:4;:12;;;;21277:53;21346:9;21342:197;21365:7;:14;21361:1;:18;21342:197;;;21432:4;21409:27;;:7;:19;21417:7;21425:1;21417:10;;;;;;;;;;;;;;;;;;;;;;21409:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;21401:36;;;::::0;::::1;;21474:1;21460:7;21468:1;21460:10;;;;;;;;;;;;;;;;;;;;;;:15;;21452:24;;;::::0;::::1;;21517:7;21525:1;21517:10;;;;;;;;;;;;;;;;;;;;;;21491:11;:23;21503:7;21511:1;21503:10;;;;;;;;;;;;;;;;;;;;;;21491:23;;;;;;;;;;;;;;;:36;;;;21384:1;21381:4;;;;;:::i;:::-;;;21342:197;;;;20979:567:::0;;;:::o;18437:29::-;;;;:::o;6111:108::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6186:10:::1;6178:28;;:33;6207:3;6178:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;6111:108:::0;:::o;23883:499::-;23966:7;23975;23984;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24003:78:::1;24038:10;24058:4;24065:15;24010:9;;;;;;;;;;;24003:34;;;;:78;;;;;;:::i;:::-;24101:9;;;;;;;;;;;24094:25;;;24128:6;;;;;;;;;;;24137:15;24094:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24167:15;24185::::0;24202::::1;24221:6;;;;;;;;;;;:22;;;24252:9;24264;;;;;;;;;;;24275:15;24292:1;24295::::0;24298:10:::1;24314:15;24310:1;:19;;;;:::i;:::-;24221:109;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24166:164;;;;;;24348:7;24357;24366;24341:33;;;;;;;;;23883:499:::0;;;;;:::o;18545:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18611:30::-;;;;:::o;22241:741::-;18997:16;;18979:15;:34;18971:43;;;;;;19051:14;;19033:15;:32;19025:41;;;;;;22334:20:::1;22386:1:::0;22368:20:::1;;:6;:20;;;22365:510;;22422:1;22412:7;:11;22404:20;;;::::0;::::1;;22466:4;22447:23;;:7;:15;22455:6;22447:15;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;22439:32;;;::::0;::::1;;22503:31;22518:6;22526:7;22503:14;:31::i;:::-;22488:46;;22592:18;;22576:12;22558:15;;:30;;;;:::i;:::-;22557:53;22549:62;;;::::0;::::1;;22626:67;22658:10;22678:4;22685:7;22633:6;22626:31;;;;:67;;;;;;:::i;:::-;22365:510;;;22749:37;22772:1;22776:9;22749:14;:37::i;:::-;22734:52;;22844:18;;22828:12;22810:15;;:30;;;;:::i;:::-;22809:53;22801:62;;;::::0;::::1;;22365:510;22904:12;22885:15;;:31;;;;;;;:::i;:::-;;;;;;;;22962:12;22927;:24;22940:10;22927:24;;;;;;;;;;;;;;;:31;;;:47;;;;;;;:::i;:::-;;;;;;;;19077:1;22241:741:::0;;:::o;18176:33::-;;;;:::o;5115:103::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5180:30:::1;5207:1;5180:18;:30::i;:::-;5115:103::o:0;18218:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;4892:87::-;4938:7;4965:6;;;;;;;;;;;4958:13;;4892:87;:::o;18475:29::-;;;;:::o;23722:153::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23828:1:::1;23809:21;;:7;:21;;;;23801:30;;;::::0;::::1;;23859:7;23842:6;;:25;;;;;;;;;;;;;;;;;;23722:153:::0;:::o;18143:24::-;;;;:::o;20483:488::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18838:1:::1;18818:16;;:21;18815:95;;18881:16;;18863:15;:34;18855:43;;;::::0;::::1;;18815:95;20670:7:::2;:14;20652:7;:14;:32;20630:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;20781:9;20776:188;20800:7;:14;20796:1;:18;20776:188;;;20858:1;20844:7;20852:1;20844:10;;;;;;;;;;;;;;;;;;;;;;:15;;20836:24;;;::::0;::::2;;20897:4;20875:7;:19;20883:7;20891:1;20883:10;;;;;;;;;;;;;;;;;;;;;;20875:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20942:7;20950:1;20942:10;;;;;;;;;;;;;;;;;;;;;;20916:11;:23;20928:7;20936:1;20928:10;;;;;;;;;;;;;;;;;;;;;;20916:23;;;;;;;;;;;;;;;:36;;;;20816:3;;;;;:::i;:::-;;;;20776:188;;;;20483:488:::0;;:::o;22990:724::-;23034:25;23091:14;;23073:15;:32;23070:502;;;23130:12;:24;23143:10;23130:24;;;;;;;;;;;;;;;:46;;;;;;;;;;;;23129:47;23121:56;;;;;;23218:14;;23200:15;:32;23192:41;;;;;;23319:3;23302:14;;23268:12;:24;23281:10;23268:24;;;;;;;;;;;;;;;:31;;;:48;;;;:::i;:::-;:54;;;;:::i;:::-;23248:74;;23386:4;23337:12;:24;23350:10;23337:24;;;;;;;;;;;;;;;:46;;;:53;;;;;;;;;;;;;;;;;;23070:502;;;23461:12;:24;23474:10;23461:24;;;;;;;;;;;;;;;:31;;;23441:51;;23556:4;23507:12;:24;23520:10;23507:24;;;;;;;;;;;;;;;:46;;;:53;;;;;;;;;;;;;;;;;;23070:502;23617:17;23582:12;:24;23595:10;23582:24;;;;;;;;;;;;;;;:31;;;:52;;;;;;;:::i;:::-;;;;;;;;23645:61;23676:10;23688:17;23652:9;;;;;;;;;;;23645:30;;;;:61;;;;;:::i;:::-;22990:724;:::o;18361:29::-;;;;:::o;19927:548::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18838:1:::1;18818:16;;:21;18815:95;;18881:16;;18863:15;:34;18855:43;;;::::0;::::1;;18815:95;20175:17:::2;20194:15;20211;20228;19276:17;19258:15;:35;19250:44;;;::::0;::::2;;19333:15;19313:17;:35;19305:44;;;::::0;::::2;;19386:15;19368;:33;19360:42;;;::::0;::::2;;19439:15;19421;:33;19413:42;;;::::0;::::2;;20276:17:::3;20257:16;:36;;;;20321:15;20304:14;:32;;;;20364:15;20347:14;:32;;;;20407:15;20390:14;:32;;;;20450:15;20433:14;:32;;;;18920:1:::2;;;;19927:548:::0;;;;;:::o;21554:206::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21630:16:::1;;21612:15;:34;21604:43;;;::::0;::::1;;21679:14;;21661:15;:32;21658:95;;;21726:15;21709:14;:32;;;;21658:95;21554:206::o:0;18112:24::-;;;;;;;;;;;;;:::o;18513:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5226:201::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5335:1:::1;5315:22;;:8;:22;;;;5307:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5391:28;5410:8;5391:18;:28::i;:::-;5226:201:::0;:::o;5819:121::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5900:5:::1;5893:22;;;5916:10;5928:3;5893:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5819:121:::0;;:::o;18399:29::-;;;;:::o;18054:21::-;;;;;;;;;;;;;:::o;5948:155::-;5038:12;:10;:12::i;:::-;5027:23;;:7;:5;:7::i;:::-;:23;;;5019:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6012:11:::1;6033:5;6026:23;;;6058:4;6026:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6012:52;;6075:20;6084:5;6091:3;6075:8;:20::i;:::-;5098:1;5948:155:::0;:::o;4411:98::-;4464:7;4491:10;4484:17;;4411:98;:::o;10099:248::-;10243:96;10263:5;10293:27;;;10322:4;10328:2;10332:5;10270:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10243:19;:96::i;:::-;10099:248;;;;:::o;2538:98::-;2596:7;2627:1;2623;:5;;;;:::i;:::-;2616:12;;2538:98;;;;:::o;2644:::-;2702:7;2733:1;2729;:5;;;;:::i;:::-;2722:12;;2644:98;;;;:::o;5435:191::-;5509:16;5528:6;;;;;;;;;;;5509:25;;5554:8;5545:6;;:17;;;;;;;;;;;;;;;;;;5609:8;5578:40;;5599:8;5578:40;;;;;;;;;;;;5435:191;;:::o;9880:211::-;9997:86;10017:5;10047:23;;;10072:2;10076:5;10024:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9997:19;:86::i;:::-;9880:211;;;:::o;11591:335::-;11674:23;11700:69;11728:4;11700:69;;;;;;;;;;;;;;;;;11708:5;11700:27;;;;:69;;;;;:::i;:::-;11674:95;;11804:1;11784:10;:17;:21;11780:139;;;11841:10;11830:30;;;;;;;;;;;;:::i;:::-;11822:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11780:139;11591:335;;;:::o;6992:229::-;7129:12;7161:52;7183:6;7191:4;7197:1;7200:12;7161:21;:52::i;:::-;7154:59;;6992:229;;;;;:::o;7497:510::-;7667:12;7725:5;7700:21;:30;;7692:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;7792:18;7803:6;7792:10;:18::i;:::-;7784:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7858:12;7872:23;7899:6;:11;;7918:5;7925:4;7899:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7857:73;;;;7948:51;7965:7;7974:10;7986:12;7948:16;:51::i;:::-;7941:58;;;;7497:510;;;;;;:::o;6278:198::-;6338:4;6357:12;6424:7;6412:20;6404:28;;6467:1;6460:4;:8;6453:15;;;6278:198;;;:::o;9237:550::-;9387:12;9416:7;9412:368;;;9447:10;9440:17;;;;9412:368;9514:1;9494:10;:17;:21;9490:279;;;9597:10;9591:17;9658:15;9645:10;9641:2;9637:19;9630:44;9545:148;9740:12;9733:20;;;;;;;;;;;:::i;:::-;;;;;;;;9237:550;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:622::-;;790:80;805:64;862:6;805:64;:::i;:::-;790:80;:::i;:::-;781:89;;890:5;918:6;911:5;904:21;944:4;937:5;933:16;926:23;;969:6;1019:3;1011:4;1003:6;999:17;994:3;990:27;987:36;984:2;;;1036:1;1033;1026:12;984:2;1064:1;1049:236;1074:6;1071:1;1068:13;1049:236;;;1141:3;1169:37;1202:3;1190:10;1169:37;:::i;:::-;1164:3;1157:50;1236:4;1231:3;1227:14;1220:21;;1270:4;1265:3;1261:14;1254:21;;1109:176;1096:1;1093;1089:9;1084:14;;1049:236;;;1053:14;771:520;;;;;;;:::o;1297:139::-;;1381:6;1368:20;1359:29;;1397:33;1424:5;1397:33;:::i;:::-;1349:87;;;;:::o;1459:303::-;;1579:3;1572:4;1564:6;1560:17;1556:27;1546:2;;1597:1;1594;1587:12;1546:2;1637:6;1624:20;1662:94;1752:3;1744:6;1737:4;1729:6;1725:17;1662:94;:::i;:::-;1653:103;;1536:226;;;;;:::o;1785:303::-;;1905:3;1898:4;1890:6;1886:17;1882:27;1872:2;;1923:1;1920;1913:12;1872:2;1963:6;1950:20;1988:94;2078:3;2070:6;2063:4;2055:6;2051:17;1988:94;:::i;:::-;1979:103;;1862:226;;;;;:::o;2094:137::-;;2179:6;2173:13;2164:22;;2195:30;2219:5;2195:30;:::i;:::-;2154:77;;;;:::o;2237:139::-;;2321:6;2308:20;2299:29;;2337:33;2364:5;2337:33;:::i;:::-;2289:87;;;;:::o;2382:143::-;;2470:6;2464:13;2455:22;;2486:33;2513:5;2486:33;:::i;:::-;2445:80;;;;:::o;2531:139::-;;2617:6;2611:13;2602:22;;2633:31;2658:5;2633:31;:::i;:::-;2592:78;;;;:::o;2676:262::-;;2784:2;2772:9;2763:7;2759:23;2755:32;2752:2;;;2800:1;2797;2790:12;2752:2;2843:1;2868:53;2913:7;2904:6;2893:9;2889:22;2868:53;:::i;:::-;2858:63;;2814:117;2742:196;;;;:::o;2944:407::-;;;3069:2;3057:9;3048:7;3044:23;3040:32;3037:2;;;3085:1;3082;3075:12;3037:2;3128:1;3153:53;3198:7;3189:6;3178:9;3174:22;3153:53;:::i;:::-;3143:63;;3099:117;3255:2;3281:53;3326:7;3317:6;3306:9;3302:22;3281:53;:::i;:::-;3271:63;;3226:118;3027:324;;;;;:::o;3357:552::-;;;;3499:2;3487:9;3478:7;3474:23;3470:32;3467:2;;;3515:1;3512;3505:12;3467:2;3558:1;3583:53;3628:7;3619:6;3608:9;3604:22;3583:53;:::i;:::-;3573:63;;3529:117;3685:2;3711:53;3756:7;3747:6;3736:9;3732:22;3711:53;:::i;:::-;3701:63;;3656:118;3813:2;3839:53;3884:7;3875:6;3864:9;3860:22;3839:53;:::i;:::-;3829:63;;3784:118;3457:452;;;;;:::o;3915:693::-;;;4090:2;4078:9;4069:7;4065:23;4061:32;4058:2;;;4106:1;4103;4096:12;4058:2;4177:1;4166:9;4162:17;4149:31;4207:18;4199:6;4196:30;4193:2;;;4239:1;4236;4229:12;4193:2;4267:78;4337:7;4328:6;4317:9;4313:22;4267:78;:::i;:::-;4257:88;;4120:235;4422:2;4411:9;4407:18;4394:32;4453:18;4445:6;4442:30;4439:2;;;4485:1;4482;4475:12;4439:2;4513:78;4583:7;4574:6;4563:9;4559:22;4513:78;:::i;:::-;4503:88;;4365:236;4048:560;;;;;:::o;4614:838::-;;;;4806:2;4794:9;4785:7;4781:23;4777:32;4774:2;;;4822:1;4819;4812:12;4774:2;4893:1;4882:9;4878:17;4865:31;4923:18;4915:6;4912:30;4909:2;;;4955:1;4952;4945:12;4909:2;4983:78;5053:7;5044:6;5033:9;5029:22;4983:78;:::i;:::-;4973:88;;4836:235;5138:2;5127:9;5123:18;5110:32;5169:18;5161:6;5158:30;5155:2;;;5201:1;5198;5191:12;5155:2;5229:78;5299:7;5290:6;5279:9;5275:22;5229:78;:::i;:::-;5219:88;;5081:236;5356:2;5382:53;5427:7;5418:6;5407:9;5403:22;5382:53;:::i;:::-;5372:63;;5327:118;4764:688;;;;;:::o;5458:278::-;;5574:2;5562:9;5553:7;5549:23;5545:32;5542:2;;;5590:1;5587;5580:12;5542:2;5633:1;5658:61;5711:7;5702:6;5691:9;5687:22;5658:61;:::i;:::-;5648:71;;5604:125;5532:204;;;;:::o;5742:262::-;;5850:2;5838:9;5829:7;5825:23;5821:32;5818:2;;;5866:1;5863;5856:12;5818:2;5909:1;5934:53;5979:7;5970:6;5959:9;5955:22;5934:53;:::i;:::-;5924:63;;5880:117;5808:196;;;;:::o;6010:284::-;;6129:2;6117:9;6108:7;6104:23;6100:32;6097:2;;;6145:1;6142;6135:12;6097:2;6188:1;6213:64;6269:7;6260:6;6249:9;6245:22;6213:64;:::i;:::-;6203:74;;6159:128;6087:207;;;;:::o;6300:596::-;;;;6453:2;6441:9;6432:7;6428:23;6424:32;6421:2;;;6469:1;6466;6459:12;6421:2;6512:1;6537:64;6593:7;6584:6;6573:9;6569:22;6537:64;:::i;:::-;6527:74;;6483:128;6650:2;6676:64;6732:7;6723:6;6712:9;6708:22;6676:64;:::i;:::-;6666:74;;6621:129;6789:2;6815:64;6871:7;6862:6;6851:9;6847:22;6815:64;:::i;:::-;6805:74;;6760:129;6411:485;;;;;:::o;6902:844::-;;;;;;7078:3;7066:9;7057:7;7053:23;7049:33;7046:2;;;7095:1;7092;7085:12;7046:2;7138:1;7163:53;7208:7;7199:6;7188:9;7184:22;7163:53;:::i;:::-;7153:63;;7109:117;7265:2;7291:53;7336:7;7327:6;7316:9;7312:22;7291:53;:::i;:::-;7281:63;;7236:118;7393:2;7419:53;7464:7;7455:6;7444:9;7440:22;7419:53;:::i;:::-;7409:63;;7364:118;7521:2;7547:53;7592:7;7583:6;7572:9;7568:22;7547:53;:::i;:::-;7537:63;;7492:118;7649:3;7676:53;7721:7;7712:6;7701:9;7697:22;7676:53;:::i;:::-;7666:63;;7620:119;7036:710;;;;;;;;:::o;7752:280::-;;7869:2;7857:9;7848:7;7844:23;7840:32;7837:2;;;7885:1;7882;7875:12;7837:2;7928:1;7953:62;8007:7;7998:6;7987:9;7983:22;7953:62;:::i;:::-;7943:72;;7899:126;7827:205;;;;:::o;8038:118::-;8125:24;8143:5;8125:24;:::i;:::-;8120:3;8113:37;8103:53;;:::o;8162:109::-;8243:21;8258:5;8243:21;:::i;:::-;8238:3;8231:34;8221:50;;:::o;8277:373::-;;8409:38;8441:5;8409:38;:::i;:::-;8463:88;8544:6;8539:3;8463:88;:::i;:::-;8456:95;;8560:52;8605:6;8600:3;8593:4;8586:5;8582:16;8560:52;:::i;:::-;8637:6;8632:3;8628:16;8621:23;;8385:265;;;;;:::o;8656:163::-;8759:53;8806:5;8759:53;:::i;:::-;8754:3;8747:66;8737:82;;:::o;8825:147::-;8920:45;8959:5;8920:45;:::i;:::-;8915:3;8908:58;8898:74;;:::o;8978:364::-;;9094:39;9127:5;9094:39;:::i;:::-;9149:71;9213:6;9208:3;9149:71;:::i;:::-;9142:78;;9229:52;9274:6;9269:3;9262:4;9255:5;9251:16;9229:52;:::i;:::-;9306:29;9328:6;9306:29;:::i;:::-;9301:3;9297:39;9290:46;;9070:272;;;;;:::o;9348:370::-;;9511:67;9575:2;9570:3;9511:67;:::i;:::-;9504:74;;9608:34;9604:1;9599:3;9595:11;9588:55;9674:8;9669:2;9664:3;9660:12;9653:30;9709:2;9704:3;9700:12;9693:19;;9494:224;;;:::o;9724:370::-;;9887:67;9951:2;9946:3;9887:67;:::i;:::-;9880:74;;9984:34;9980:1;9975:3;9971:11;9964:55;10050:8;10045:2;10040:3;10036:12;10029:30;10085:2;10080:3;10076:12;10069:19;;9870:224;;;:::o;10100:379::-;;10263:67;10327:2;10322:3;10263:67;:::i;:::-;10256:74;;10360:34;10356:1;10351:3;10347:11;10340:55;10426:17;10421:2;10416:3;10412:12;10405:39;10470:2;10465:3;10461:12;10454:19;;10246:233;;;:::o;10485:330::-;;10648:67;10712:2;10707:3;10648:67;:::i;:::-;10641:74;;10745:34;10741:1;10736:3;10732:11;10725:55;10806:2;10801:3;10797:12;10790:19;;10631:184;;;:::o;10821:327::-;;10984:67;11048:2;11043:3;10984:67;:::i;:::-;10977:74;;11081:31;11077:1;11072:3;11068:11;11061:52;11139:2;11134:3;11130:12;11123:19;;10967:181;;;:::o;11154:374::-;;11317:67;11381:2;11376:3;11317:67;:::i;:::-;11310:74;;11414:34;11410:1;11405:3;11401:11;11394:55;11480:12;11475:2;11470:3;11466:12;11459:34;11519:2;11514:3;11510:12;11503:19;;11300:228;;;:::o;11534:118::-;11621:24;11639:5;11621:24;:::i;:::-;11616:3;11609:37;11599:53;;:::o;11658:271::-;;11810:93;11899:3;11890:6;11810:93;:::i;:::-;11803:100;;11920:3;11913:10;;11792:137;;;;:::o;11935:222::-;;12066:2;12055:9;12051:18;12043:26;;12079:71;12147:1;12136:9;12132:17;12123:6;12079:71;:::i;:::-;12033:124;;;;:::o;12163:442::-;;12350:2;12339:9;12335:18;12327:26;;12363:71;12431:1;12420:9;12416:17;12407:6;12363:71;:::i;:::-;12444:72;12512:2;12501:9;12497:18;12488:6;12444:72;:::i;:::-;12526;12594:2;12583:9;12579:18;12570:6;12526:72;:::i;:::-;12317:288;;;;;;:::o;12611:332::-;;12770:2;12759:9;12755:18;12747:26;;12783:71;12851:1;12840:9;12836:17;12827:6;12783:71;:::i;:::-;12864:72;12932:2;12921:9;12917:18;12908:6;12864:72;:::i;:::-;12737:206;;;;;:::o;12949:807::-;;13236:3;13225:9;13221:19;13213:27;;13250:71;13318:1;13307:9;13303:17;13294:6;13250:71;:::i;:::-;13331:72;13399:2;13388:9;13384:18;13375:6;13331:72;:::i;:::-;13413:80;13489:2;13478:9;13474:18;13465:6;13413:80;:::i;:::-;13503;13579:2;13568:9;13564:18;13555:6;13503:80;:::i;:::-;13593:73;13661:3;13650:9;13646:19;13637:6;13593:73;:::i;:::-;13676;13744:3;13733:9;13729:19;13720:6;13676:73;:::i;:::-;13203:553;;;;;;;;;:::o;13762:210::-;;13887:2;13876:9;13872:18;13864:26;;13900:65;13962:1;13951:9;13947:17;13938:6;13900:65;:::i;:::-;13854:118;;;;:::o;13978:254::-;;14125:2;14114:9;14110:18;14102:26;;14138:87;14222:1;14211:9;14207:17;14198:6;14138:87;:::i;:::-;14092:140;;;;:::o;14238:313::-;;14389:2;14378:9;14374:18;14366:26;;14438:9;14432:4;14428:20;14424:1;14413:9;14409:17;14402:47;14466:78;14539:4;14530:6;14466:78;:::i;:::-;14458:86;;14356:195;;;;:::o;14557:419::-;;14761:2;14750:9;14746:18;14738:26;;14810:9;14804:4;14800:20;14796:1;14785:9;14781:17;14774:47;14838:131;14964:4;14838:131;:::i;:::-;14830:139;;14728:248;;;:::o;14982:419::-;;15186:2;15175:9;15171:18;15163:26;;15235:9;15229:4;15225:20;15221:1;15210:9;15206:17;15199:47;15263:131;15389:4;15263:131;:::i;:::-;15255:139;;15153:248;;;:::o;15407:419::-;;15611:2;15600:9;15596:18;15588:26;;15660:9;15654:4;15650:20;15646:1;15635:9;15631:17;15624:47;15688:131;15814:4;15688:131;:::i;:::-;15680:139;;15578:248;;;:::o;15832:419::-;;16036:2;16025:9;16021:18;16013:26;;16085:9;16079:4;16075:20;16071:1;16060:9;16056:17;16049:47;16113:131;16239:4;16113:131;:::i;:::-;16105:139;;16003:248;;;:::o;16257:419::-;;16461:2;16450:9;16446:18;16438:26;;16510:9;16504:4;16500:20;16496:1;16485:9;16481:17;16474:47;16538:131;16664:4;16538:131;:::i;:::-;16530:139;;16428:248;;;:::o;16682:419::-;;16886:2;16875:9;16871:18;16863:26;;16935:9;16929:4;16925:20;16921:1;16910:9;16906:17;16899:47;16963:131;17089:4;16963:131;:::i;:::-;16955:139;;16853:248;;;:::o;17107:222::-;;17238:2;17227:9;17223:18;17215:26;;17251:71;17319:1;17308:9;17304:17;17295:6;17251:71;:::i;:::-;17205:124;;;;:::o;17335:320::-;;17488:2;17477:9;17473:18;17465:26;;17501:71;17569:1;17558:9;17554:17;17545:6;17501:71;:::i;:::-;17582:66;17644:2;17633:9;17629:18;17620:6;17582:66;:::i;:::-;17455:200;;;;;:::o;17661:442::-;;17848:2;17837:9;17833:18;17825:26;;17861:71;17929:1;17918:9;17914:17;17905:6;17861:71;:::i;:::-;17942:72;18010:2;17999:9;17995:18;17986:6;17942:72;:::i;:::-;18024;18092:2;18081:9;18077:18;18068:6;18024:72;:::i;:::-;17815:288;;;;;;:::o;18109:283::-;;18175:2;18169:9;18159:19;;18217:4;18209:6;18205:17;18324:6;18312:10;18309:22;18288:18;18276:10;18273:34;18270:62;18267:2;;;18335:18;;:::i;:::-;18267:2;18375:10;18371:2;18364:22;18149:243;;;;:::o;18398:311::-;;18565:18;18557:6;18554:30;18551:2;;;18587:18;;:::i;:::-;18551:2;18637:4;18629:6;18625:17;18617:25;;18697:4;18691;18687:15;18679:23;;18480:229;;;:::o;18715:311::-;;18882:18;18874:6;18871:30;18868:2;;;18904:18;;:::i;:::-;18868:2;18954:4;18946:6;18942:17;18934:25;;19014:4;19008;19004:15;18996:23;;18797:229;;;:::o;19032:98::-;;19117:5;19111:12;19101:22;;19090:40;;;:::o;19136:99::-;;19222:5;19216:12;19206:22;;19195:40;;;:::o;19241:147::-;;19379:3;19364:18;;19354:34;;;;:::o;19394:169::-;;19512:6;19507:3;19500:19;19552:4;19547:3;19543:14;19528:29;;19490:73;;;;:::o;19569:305::-;;19628:20;19646:1;19628:20;:::i;:::-;19623:25;;19662:20;19680:1;19662:20;:::i;:::-;19657:25;;19816:1;19748:66;19744:74;19741:1;19738:81;19735:2;;;19822:18;;:::i;:::-;19735:2;19866:1;19863;19859:9;19852:16;;19613:261;;;;:::o;19880:185::-;;19937:20;19955:1;19937:20;:::i;:::-;19932:25;;19971:20;19989:1;19971:20;:::i;:::-;19966:25;;20010:1;20000:2;;20015:18;;:::i;:::-;20000:2;20057:1;20054;20050:9;20045:14;;19922:143;;;;:::o;20071:848::-;;;20163:6;20154:15;;20187:5;20178:14;;20201:712;20222:1;20212:8;20209:15;20201:712;;;20317:4;20312:3;20308:14;20302:4;20299:24;20296:2;;;20326:18;;:::i;:::-;20296:2;20376:1;20366:8;20362:16;20359:2;;;20791:4;20784:5;20780:16;20771:25;;20359:2;20841:4;20835;20831:15;20823:23;;20871:32;20894:8;20871:32;:::i;:::-;20859:44;;20201:712;;;20144:775;;;;;;;:::o;20925:285::-;;21009:23;21027:4;21009:23;:::i;:::-;21001:31;;21053:27;21071:8;21053:27;:::i;:::-;21041:39;;21099:104;21136:66;21126:8;21120:4;21099:104;:::i;:::-;21090:113;;20991:219;;;;:::o;21216:1073::-;;21461:8;21451:2;;21482:1;21473:10;;21484:5;;21451:2;21510:4;21500:2;;21527:1;21518:10;;21529:5;;21500:2;21596:4;21644:1;21639:27;;;;21680:1;21675:191;;;;21589:277;;21639:27;21657:1;21648:10;;21659:5;;;21675:191;21720:3;21710:8;21707:17;21704:2;;;21727:18;;:::i;:::-;21704:2;21776:8;21773:1;21769:16;21760:25;;21811:3;21804:5;21801:14;21798:2;;;21818:18;;:::i;:::-;21798:2;21851:5;;;21589:277;;21975:2;21965:8;21962:16;21956:3;21950:4;21947:13;21943:36;21925:2;21915:8;21912:16;21907:2;21901:4;21898:12;21894:35;21878:111;21875:2;;;22031:8;22025:4;22021:19;22012:28;;22066:3;22059:5;22056:14;22053:2;;;22073:18;;:::i;:::-;22053:2;22106:5;;21875:2;22146:42;22184:3;22174:8;22168:4;22165:1;22146:42;:::i;:::-;22131:57;;;;22220:4;22215:3;22211:14;22204:5;22201:25;22198:2;;;22229:18;;:::i;:::-;22198:2;22278:4;22271:5;22267:16;22258:25;;21276:1013;;;;;;:::o;22295:348::-;;22358:20;22376:1;22358:20;:::i;:::-;22353:25;;22392:20;22410:1;22392:20;:::i;:::-;22387:25;;22580:1;22512:66;22508:74;22505:1;22502:81;22497:1;22490:9;22483:17;22479:105;22476:2;;;22587:18;;:::i;:::-;22476:2;22635:1;22632;22628:9;22617:20;;22343:300;;;;:::o;22649:191::-;;22709:20;22727:1;22709:20;:::i;:::-;22704:25;;22743:20;22761:1;22743:20;:::i;:::-;22738:25;;22782:1;22779;22776:8;22773:2;;;22787:18;;:::i;:::-;22773:2;22832:1;22829;22825:9;22817:17;;22694:146;;;;:::o;22846:96::-;;22912:24;22930:5;22912:24;:::i;:::-;22901:35;;22891:51;;;:::o;22948:90::-;;23025:5;23018:13;23011:21;23000:32;;22990:48;;;:::o;23044:126::-;;23121:42;23114:5;23110:54;23099:65;;23089:81;;;:::o;23176:77::-;;23242:5;23231:16;;23221:32;;;:::o;23259:86::-;;23334:4;23327:5;23323:16;23312:27;;23302:43;;;:::o;23351:158::-;;23450:53;23497:5;23450:53;:::i;:::-;23437:66;;23427:82;;;:::o;23515:129::-;;23614:24;23632:5;23614:24;:::i;:::-;23601:37;;23591:53;;;:::o;23650:121::-;;23741:24;23759:5;23741:24;:::i;:::-;23728:37;;23718:53;;;:::o;23777:307::-;23845:1;23855:113;23869:6;23866:1;23863:13;23855:113;;;23954:1;23949:3;23945:11;23939:18;23935:1;23930:3;23926:11;23919:39;23891:2;23888:1;23884:10;23879:15;;23855:113;;;23986:6;23983:1;23980:13;23977:2;;;24066:1;24057:6;24052:3;24048:16;24041:27;23977:2;23826:258;;;;:::o;24090:233::-;;24152:24;24170:5;24152:24;:::i;:::-;24143:33;;24198:66;24191:5;24188:77;24185:2;;;24268:18;;:::i;:::-;24185:2;24315:1;24308:5;24304:13;24297:20;;24133:190;;;:::o;24329:180::-;24377:77;24374:1;24367:88;24474:4;24471:1;24464:15;24498:4;24495:1;24488:15;24515:180;24563:77;24560:1;24553:88;24660:4;24657:1;24650:15;24684:4;24681:1;24674:15;24701:180;24749:77;24746:1;24739:88;24846:4;24843:1;24836:15;24870:4;24867:1;24860:15;24887:102;;24979:2;24975:7;24970:2;24963:5;24959:14;24955:28;24945:38;;24935:54;;;:::o;24995:102::-;;25084:5;25081:1;25077:13;25056:34;;25046:51;;;:::o;25103:122::-;25176:24;25194:5;25176:24;:::i;:::-;25169:5;25166:35;25156:2;;25215:1;25212;25205:12;25156:2;25146:79;:::o;25231:116::-;25301:21;25316:5;25301:21;:::i;:::-;25294:5;25291:32;25281:2;;25337:1;25334;25327:12;25281:2;25271:76;:::o;25353:122::-;25426:24;25444:5;25426:24;:::i;:::-;25419:5;25416:35;25406:2;;25465:1;25462;25455:12;25406:2;25396:79;:::o;25481:118::-;25552:22;25568:5;25552:22;:::i;:::-;25545:5;25542:33;25532:2;;25589:1;25586;25579:12;25532:2;25522:77;:::o
Swarm Source
ipfs://b797a93f7f3ed8be790155eb8ad390f2345c92c9e5cf78d27010b916d026156b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | 100.00% | $714.05 | 0.1236 | $88.26 |
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.