Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 32 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Buy Token | 18407619 | 374 days ago | IN | 0 ETH | 0.00224747 | ||||
Buy Token | 18407265 | 374 days ago | IN | 0.005 ETH | 0.00115901 | ||||
Buy Token | 18405601 | 375 days ago | IN | 0.072 ETH | 0.00036168 | ||||
Buy Token | 18401647 | 375 days ago | IN | 0.017 ETH | 0.00099447 | ||||
Buy Token | 18401437 | 375 days ago | IN | 0.175 ETH | 0.0004599 | ||||
Buy Token | 18383154 | 378 days ago | IN | 0.002 ETH | 0.00067491 | ||||
Buy Token | 18380705 | 378 days ago | IN | 0.019 ETH | 0.00112301 | ||||
Buy Token | 18379531 | 378 days ago | IN | 0.07 ETH | 0.00115956 | ||||
Buy Token | 18379283 | 378 days ago | IN | 0.15 ETH | 0.00143879 | ||||
Set Sale Token | 18364696 | 380 days ago | IN | 0 ETH | 0.00048635 | ||||
Add Payable Toke... | 18364677 | 380 days ago | IN | 0 ETH | 0.00048029 | ||||
Buy Token | 18362756 | 381 days ago | IN | 0.02 ETH | 0.00083898 | ||||
Buy Token | 18355731 | 382 days ago | IN | 0.05 ETH | 0.00067596 | ||||
Buy Token | 18343491 | 383 days ago | IN | 0.084 ETH | 0.00105844 | ||||
Buy Token | 18341495 | 384 days ago | IN | 0.084 ETH | 0.00121089 | ||||
Buy Token | 18336294 | 384 days ago | IN | 0.0653 ETH | 0.00142751 | ||||
Buy Token | 18336053 | 384 days ago | IN | 0.17 ETH | 0.00148793 | ||||
Buy Token | 18334861 | 385 days ago | IN | 0.03 ETH | 0.00065872 | ||||
Buy Token | 18334313 | 385 days ago | IN | 0 ETH | 0.00124884 | ||||
Buy Token | 18334067 | 385 days ago | IN | 0 ETH | 0.00104629 | ||||
Buy Token | 18333989 | 385 days ago | IN | 0.078 ETH | 0.0007352 | ||||
Buy Token | 18333830 | 385 days ago | IN | 0.05 ETH | 0.00077668 | ||||
Buy Token | 18333649 | 385 days ago | IN | 0.012 ETH | 0.00043116 | ||||
Buy Token | 18333427 | 385 days ago | IN | 0.001 ETH | 0.00041943 | ||||
Buy Token | 18333403 | 385 days ago | IN | 0.0001 ETH | 0.00040136 |
Latest 22 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18407265 | 374 days ago | 0.005 ETH | ||||
18405601 | 375 days ago | 0.072 ETH | ||||
18401647 | 375 days ago | 0.017 ETH | ||||
18401437 | 375 days ago | 0.175 ETH | ||||
18383154 | 378 days ago | 0.002 ETH | ||||
18380705 | 378 days ago | 0.019 ETH | ||||
18379531 | 378 days ago | 0.07 ETH | ||||
18379283 | 378 days ago | 0.15 ETH | ||||
18362756 | 381 days ago | 0.02 ETH | ||||
18355731 | 382 days ago | 0.05 ETH | ||||
18343491 | 383 days ago | 0.084 ETH | ||||
18341495 | 384 days ago | 0.084 ETH | ||||
18336294 | 384 days ago | 0.0653 ETH | ||||
18336053 | 384 days ago | 0.17 ETH | ||||
18334861 | 385 days ago | 0.03 ETH | ||||
18333989 | 385 days ago | 0.078 ETH | ||||
18333830 | 385 days ago | 0.05 ETH | ||||
18333649 | 385 days ago | 0.012 ETH | ||||
18333427 | 385 days ago | 0.001 ETH | ||||
18333403 | 385 days ago | 0.0001 ETH | ||||
18333386 | 385 days ago | 0.001 ETH | ||||
18326282 | 386 days ago | 0.001 ETH |
Loading...
Loading
Contract Name:
Presale
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-11 */ // 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; using SafeERC20 for IERC20; receive() external payable {} fallback() external payable {} function withdraw(address token, uint256 amt) public onlyOwner { IERC20(token).safeTransfer(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); } // function deposit(address token, uint256 amt) public onlyOwner { // uint256 allowance = IERC20(token).allowance(msg.sender, address(this)); // require(allowance >= amt, "Check the token allowance"); // IERC20(token).transferFrom(owner(), address(this), 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; contract Presale is OwnerWithdrawable { using SafeMath for uint256; using SafeERC20 for IERC20; using SafeERC20 for IERC20Metadata; uint256 public rate; address public saleToken; uint public saleTokenDec; uint256 public totalTokensforSale; mapping(address => bool) public payableTokens; mapping(address => uint256) public tokenPrices; bool public saleStatus; address[] public buyers; mapping(address => BuyerDetails) public buyersDetails; uint256 public totalBuyers; uint256 public totalTokensSold; struct BuyerDetails { uint amount; bool exists; } struct BuyerAmount { uint amount; address buyer; } constructor() { saleStatus = false; } modifier saleEnabled() { require(saleStatus == true, "Presale: is not enabled"); _; } modifier saleStoped() { require(saleStatus == false, "Presale: is not stopped"); _; } function setSaleToken( uint256 _decimals, uint256 _totalTokensforSale, uint256 _rate, bool _saleStatus ) external onlyOwner { require(_rate != 0); rate = _rate; saleStatus = _saleStatus; saleTokenDec = _decimals; totalTokensforSale = _totalTokensforSale; } function stopSale() external onlyOwner saleEnabled { saleStatus = false; } function resumeSale() external onlyOwner saleStoped { saleStatus = true; } function addPayableTokens( address[] memory _tokens, uint256[] memory _prices ) external onlyOwner { require( _tokens.length == _prices.length, "Presale: tokens & prices arrays length mismatch" ); for (uint256 i = 0; i < _tokens.length; i++) { require(_prices[i] != 0); payableTokens[_tokens[i]] = true; tokenPrices[_tokens[i]] = _prices[i]; } } function payableTokenStatus( address _token, bool _status ) external onlyOwner { require(payableTokens[_token] != _status); payableTokens[_token] = _status; } 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(payableTokens[_tokens[i]] == true); require(_prices[i] != 0); tokenPrices[_tokens[i]] = _prices[i]; } } function getTokenAmount( address token, uint256 amount ) public view returns (uint256) { uint256 amtOut; if (token != address(0)) { require(payableTokens[token] == true, "Presale: Token not allowed"); uint256 price = tokenPrices[token]; amtOut = amount.mul(10 ** saleTokenDec).div(price); } else { amtOut = amount.mul(10 ** saleTokenDec).div(rate); } return amtOut; } function transferETH() private { payable(owner()).transfer(msg.value); } function transferToken(address _token, uint256 _amount) private { IERC20(_token).safeTransferFrom( msg.sender, owner(), _amount ); } function buyToken( address _token, uint256 _amount ) external payable saleEnabled { uint256 saleTokenAmt = _token != address(0) ? getTokenAmount(_token, _amount) : getTokenAmount(address(0), msg.value); require(saleTokenAmt != 0, "Presale: Amount is 0"); require( (totalTokensSold + saleTokenAmt) < totalTokensforSale, "Presale: Not enough tokens to be sale" ); if (_token != address(0)) { transferToken(_token, _amount); } else { transferETH(); } totalTokensSold += saleTokenAmt; if (!buyersDetails[msg.sender].exists) { buyers.push(msg.sender); buyersDetails[msg.sender].exists = true; totalBuyers += 1; } buyersDetails[msg.sender].amount += saleTokenAmt; } function buyersAmountList( uint _from, uint _to ) external view returns (BuyerAmount[] memory) { require(_from < _to, "Presale: _from should be less than _to"); uint to = _to > totalBuyers ? totalBuyers : _to; uint from = _from > totalBuyers ? totalBuyers : _from; BuyerAmount[] memory buyersAmt = new BuyerAmount[](to - from); for (uint i = from; i < to; i += 1) { buyersAmt[i].amount = buyersDetails[buyers[i]].amount; buyersAmt[i].buyer = buyers[i]; } return buyersAmt; } }
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":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"}],"name":"addPayableTokens","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":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"buyersAmountList","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct Presale.BuyerAmount[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"buyersDetails","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"exists","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"payableTokenStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"payableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"resumeSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_totalTokensforSale","type":"uint256"},{"internalType":"uint256","name":"_rate","type":"uint256"},{"internalType":"bool","name":"_saleStatus","type":"bool"}],"name":"setSaleToken","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":[],"name":"totalBuyers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5062000032620000266200005360201b60201c565b6200005b60201b60201c565b6000600760006101000a81548160ff0219169083151502179055506200011f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61329f806200012f6000396000f3fe6080604052600436106101855760003560e01c806380655eef116100d1578063e985e3671161008a578063f3fef3a311610064578063f3fef3a314610543578063f4739ee31461056c578063f9020e33146105aa578063fa09e630146105d55761018c565b8063e985e367146104b2578063f2aa8218146104dd578063f2fde38b1461051a5761018c565b806380655eef146103a2578063807ea425146103df5780638da5cb5b14610408578063ace1741c14610433578063c76a0f111461045e578063e36b0b371461049b5761018c565b80633abd01361161013e57806363b201171161011857806363b201171461031957806368f8fc10146103445780636bcedf9c14610360578063715018a61461038b5761018c565b80633abd01361461029c5780633c00a36c146102c75780635413c1c8146102f05761018c565b8063115ece4c1461018e578063204120bc146101cb57806329d429a8146102085780632c4e722e146102315780633115329e1461025c57806333e364cb146102855761018c565b3661018c57005b005b34801561019a57600080fd5b506101b560048036038101906101b09190612307565b6105fe565b6040516101c29190612cf7565b60405180910390f35b3480156101d757600080fd5b506101f260048036038101906101ed91906122a2565b610789565b6040516101ff9190612cf7565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906122cb565b6107a1565b005b34801561023d57600080fd5b506102466108d5565b6040516102539190612cf7565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e91906123af565b6108db565b005b34801561029157600080fd5b5061029a610b80565b005b3480156102a857600080fd5b506102b1610c6f565b6040516102be9190612cf7565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612457565b610c75565b005b3480156102fc57600080fd5b5061031760048036038101906103129190612343565b610d3b565b005b34801561032557600080fd5b5061032e610fc9565b60405161033b9190612cf7565b60405180910390f35b61035e60048036038101906103599190612307565b610fcf565b005b34801561036c57600080fd5b506103756112fd565b6040516103829190612cf7565b60405180910390f35b34801561039757600080fd5b506103a0611303565b005b3480156103ae57600080fd5b506103c960048036038101906103c491906122a2565b61138b565b6040516103d69190612b3a565b60405180910390f35b3480156103eb57600080fd5b50610406600480360381019061040191906124e5565b6113ab565b005b34801561041457600080fd5b5061041d61146a565b60405161042a9190612a9d565b60405180910390f35b34801561043f57600080fd5b50610448611493565b6040516104559190612cf7565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906124a9565b611499565b6040516104929190612b18565b60405180910390f35b3480156104a757600080fd5b506104b061178f565b005b3480156104be57600080fd5b506104c761187e565b6040516104d49190612a9d565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190612457565b6118a4565b6040516105119190612a9d565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c91906122a2565b6118e3565b005b34801561054f57600080fd5b5061056a60048036038101906105659190612307565b6119db565b005b34801561057857600080fd5b50610593600480360381019061058e91906122a2565b611a86565b6040516105a1929190612d12565b60405180910390f35b3480156105b657600080fd5b506105bf611ab7565b6040516105cc9190612b3a565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f791906122a2565b611aca565b005b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107475760011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90612b97565b60405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061073f81610731600354600a6107229190612f09565b87611be190919063ffffffff16565b611bf790919063ffffffff16565b91505061077f565b61077c60015461076e600354600a61075f9190612f09565b86611be190919063ffffffff16565b611bf790919063ffffffff16565b90505b8091505092915050565b60066020528060005260406000206000915090505481565b6107a9611c0d565b73ffffffffffffffffffffffffffffffffffffffff166107c761146a565b73ffffffffffffffffffffffffffffffffffffffff161461081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490612c77565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561087a57600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60015481565b6108e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661090161146a565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90612c77565b60405180910390fd5b815183511461099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290612c17565b60405180910390fd5b600081146109ab57806001819055505b60005b8351811015610b7a5760011515600560008684815181106109f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610a5457600080fd5b6000838281518110610a8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610aa257600080fd5b828181518110610adb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000868481518110610b20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610b739190612e2f565b90506109ae565b50505050565b610b88611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610ba661146a565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390612c77565b60405180910390fd5b60001515600760009054906101000a900460ff16151514610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612bd7565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b600a5481565b610c7d611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610c9b61146a565b73ffffffffffffffffffffffffffffffffffffffff1614610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce890612c77565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d37573d6000803e3d6000fd5b5050565b610d43611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610d6161146a565b73ffffffffffffffffffffffffffffffffffffffff1614610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90612c77565b60405180910390fd5b8051825114610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290612c17565b60405180910390fd5b60005b8251811015610fc4576000828281518110610e42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610e5557600080fd5b600160056000858481518110610e94577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110610f26577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000858481518110610f6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610fbc90613130565b915050610dfe565b505050565b600b5481565b60011515600760009054906101000a900460ff16151514611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c90612cb7565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561106b576110666000346105fe565b611076565b61107583836105fe565b5b905060008114156110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390612c37565b60405180910390fd5b60045481600b546110cd9190612e2f565b1061110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490612c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111505761114b8383611c15565b611159565b611158611c4d565b5b80600b600082825461116b9190612e2f565b92505081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1661129f576008339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001600a60008282546112979190612e2f565b925050819055505b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546112f19190612e2f565b92505081905550505050565b60045481565b61130b611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661132961146a565b73ffffffffffffffffffffffffffffffffffffffff161461137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690612c77565b60405180910390fd5b6113896000611c9d565b565b60056020528060005260406000206000915054906101000a900460ff1681565b6113b3611c0d565b73ffffffffffffffffffffffffffffffffffffffff166113d161146a565b73ffffffffffffffffffffffffffffffffffffffff1614611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90612c77565b60405180910390fd5b600082141561143557600080fd5b8160018190555080600760006101000a81548160ff021916908315150217905550836003819055508260048190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b60608183106114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490612bb7565b60405180910390fd5b6000600a5483116114ee57826114f2565b600a545b90506000600a5485116115055784611509565b600a545b9050600081836115199190613081565b67ffffffffffffffff811115611558577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561159157816020015b61157e6120dd565b8152602001906001900390816115765790505b50905060008290505b838110156117825760096000600883815481106115e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154828281518110611682577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000018181525050600881815481106116cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110611730577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060018161177b9190612e2f565b905061159a565b5080935050505092915050565b611797611c0d565b73ffffffffffffffffffffffffffffffffffffffff166117b561146a565b73ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290612c77565b60405180910390fd5b60011515600760009054906101000a900460ff16151514611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890612cb7565b60405180910390fd5b6000600760006101000a81548160ff021916908315150217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600881815481106118b457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118eb611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661190961146a565b73ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612c77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690612b77565b60405180910390fd5b6119d881611c9d565b50565b6119e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611a0161146a565b73ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90612c77565b60405180910390fd5b611a8233828473ffffffffffffffffffffffffffffffffffffffff16611d619092919063ffffffff16565b5050565b60096020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600760009054906101000a900460ff1681565b611ad2611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611af061146a565b73ffffffffffffffffffffffffffffffffffffffff1614611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90612c77565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b819190612a9d565b60206040518083038186803b158015611b9957600080fd5b505afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612480565b9050611bdd82826119db565b5050565b60008183611bef9190613027565b905092915050565b60008183611c059190612e85565b905092915050565b600033905090565b611c4933611c2161146a565b838573ffffffffffffffffffffffffffffffffffffffff16611de7909392919063ffffffff16565b5050565b611c5561146a565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611c9a573d6000803e3d6000fd5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611de28363a9059cbb60e01b8484604051602401611d80929190612aef565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b505050565b611e6a846323b872dd60e01b858585604051602401611e0893929190612ab8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b50505050565b6000611ed2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f379092919063ffffffff16565b9050600081511115611f325780806020019051810190611ef2919061242e565b611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890612cd7565b60405180910390fd5b5b505050565b6060611f468484600085611f4f565b90509392505050565b606082471015611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90612bf7565b60405180910390fd5b611f9d85612063565b611fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd390612c97565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516120059190612a86565b60006040518083038185875af1925050503d8060008114612042576040519150601f19603f3d011682016040523d82523d6000602084013e612047565b606091505b5091509150612057828286612076565b92505050949350505050565b600080823b905060008111915050919050565b60608315612086578290506120d6565b6000835111156120995782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd9190612b55565b60405180910390fd5b9392505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600061212061211b84612d6c565b612d3b565b9050808382526020820190508285602086028201111561213f57600080fd5b60005b8581101561216f578161215588826121e5565b845260208401935060208301925050600181019050612142565b5050509392505050565b600061218c61218784612d98565b612d3b565b905080838252602082019050828560208602820111156121ab57600080fd5b60005b858110156121db57816121c18882612278565b8452602084019350602083019250506001810190506121ae565b5050509392505050565b6000813590506121f481613224565b92915050565b600082601f83011261220b57600080fd5b813561221b84826020860161210d565b91505092915050565b600082601f83011261223557600080fd5b8135612245848260208601612179565b91505092915050565b60008135905061225d8161323b565b92915050565b6000815190506122728161323b565b92915050565b60008135905061228781613252565b92915050565b60008151905061229c81613252565b92915050565b6000602082840312156122b457600080fd5b60006122c2848285016121e5565b91505092915050565b600080604083850312156122de57600080fd5b60006122ec858286016121e5565b92505060206122fd8582860161224e565b9150509250929050565b6000806040838503121561231a57600080fd5b6000612328858286016121e5565b925050602061233985828601612278565b9150509250929050565b6000806040838503121561235657600080fd5b600083013567ffffffffffffffff81111561237057600080fd5b61237c858286016121fa565b925050602083013567ffffffffffffffff81111561239957600080fd5b6123a585828601612224565b9150509250929050565b6000806000606084860312156123c457600080fd5b600084013567ffffffffffffffff8111156123de57600080fd5b6123ea868287016121fa565b935050602084013567ffffffffffffffff81111561240757600080fd5b61241386828701612224565b925050604061242486828701612278565b9150509250925092565b60006020828403121561244057600080fd5b600061244e84828501612263565b91505092915050565b60006020828403121561246957600080fd5b600061247784828501612278565b91505092915050565b60006020828403121561249257600080fd5b60006124a08482850161228d565b91505092915050565b600080604083850312156124bc57600080fd5b60006124ca85828601612278565b92505060206124db85828601612278565b9150509250929050565b600080600080608085870312156124fb57600080fd5b600061250987828801612278565b945050602061251a87828801612278565b935050604061252b87828801612278565b925050606061253c8782880161224e565b91505092959194509250565b60006125548383612a39565b60408301905092915050565b612569816130b5565b82525050565b612578816130b5565b82525050565b600061258982612dd4565b6125938185612e02565b935061259e83612dc4565b8060005b838110156125cf5781516125b68882612548565b97506125c183612df5565b9250506001810190506125a2565b5085935050505092915050565b6125e5816130c7565b82525050565b60006125f682612ddf565b6126008185612e13565b93506126108185602086016130fd565b80840191505092915050565b600061262782612dea565b6126318185612e1e565b93506126418185602086016130fd565b61264a81613206565b840191505092915050565b6000612662602683612e1e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126c8601a83612e1e565b91507f50726573616c653a20546f6b656e206e6f7420616c6c6f7765640000000000006000830152602082019050919050565b6000612708602683612e1e565b91507f50726573616c653a205f66726f6d2073686f756c64206265206c65737320746860008301527f616e205f746f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061276e601783612e1e565b91507f50726573616c653a206973206e6f742073746f707065640000000000000000006000830152602082019050919050565b60006127ae602683612e1e565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612814602f83612e1e565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b600061287a601483612e1e565b91507f50726573616c653a20416d6f756e7420697320300000000000000000000000006000830152602082019050919050565b60006128ba602583612e1e565b91507f50726573616c653a204e6f7420656e6f75676820746f6b656e7320746f20626560008301527f2073616c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612920602083612e1e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612960601d83612e1e565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006129a0601783612e1e565b91507f50726573616c653a206973206e6f7420656e61626c65640000000000000000006000830152602082019050919050565b60006129e0602a83612e1e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b604082016000820151612a4f6000850182612a68565b506020820151612a626020850182612560565b50505050565b612a71816130f3565b82525050565b612a80816130f3565b82525050565b6000612a9282846125eb565b915081905092915050565b6000602082019050612ab2600083018461256f565b92915050565b6000606082019050612acd600083018661256f565b612ada602083018561256f565b612ae76040830184612a77565b949350505050565b6000604082019050612b04600083018561256f565b612b116020830184612a77565b9392505050565b60006020820190508181036000830152612b32818461257e565b905092915050565b6000602082019050612b4f60008301846125dc565b92915050565b60006020820190508181036000830152612b6f818461261c565b905092915050565b60006020820190508181036000830152612b9081612655565b9050919050565b60006020820190508181036000830152612bb0816126bb565b9050919050565b60006020820190508181036000830152612bd0816126fb565b9050919050565b60006020820190508181036000830152612bf081612761565b9050919050565b60006020820190508181036000830152612c10816127a1565b9050919050565b60006020820190508181036000830152612c3081612807565b9050919050565b60006020820190508181036000830152612c508161286d565b9050919050565b60006020820190508181036000830152612c70816128ad565b9050919050565b60006020820190508181036000830152612c9081612913565b9050919050565b60006020820190508181036000830152612cb081612953565b9050919050565b60006020820190508181036000830152612cd081612993565b9050919050565b60006020820190508181036000830152612cf0816129d3565b9050919050565b6000602082019050612d0c6000830184612a77565b92915050565b6000604082019050612d276000830185612a77565b612d3460208301846125dc565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715612d6257612d616131d7565b5b8060405250919050565b600067ffffffffffffffff821115612d8757612d866131d7565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612db357612db26131d7565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612e3a826130f3565b9150612e45836130f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e7a57612e79613179565b5b828201905092915050565b6000612e90826130f3565b9150612e9b836130f3565b925082612eab57612eaa6131a8565b5b828204905092915050565b6000808291508390505b6001851115612f0057808604811115612edc57612edb613179565b5b6001851615612eeb5780820291505b8081029050612ef985613217565b9450612ec0565b94509492505050565b6000612f14826130f3565b9150612f1f836130f3565b9250612f4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f54565b905092915050565b600082612f645760019050613020565b81612f725760009050613020565b8160018114612f885760028114612f9257612fc1565b6001915050613020565b60ff841115612fa457612fa3613179565b5b8360020a915084821115612fbb57612fba613179565b5b50613020565b5060208310610133831016604e8410600b8410161715612ff65782820a905083811115612ff157612ff0613179565b5b613020565b6130038484846001612eb6565b9250905081840481111561301a57613019613179565b5b81810290505b9392505050565b6000613032826130f3565b915061303d836130f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561307657613075613179565b5b828202905092915050565b600061308c826130f3565b9150613097836130f3565b9250828210156130aa576130a9613179565b5b828203905092915050565b60006130c0826130d3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561311b578082015181840152602081019050613100565b8381111561312a576000848401525b50505050565b600061313b826130f3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561316e5761316d613179565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b61322d816130b5565b811461323857600080fd5b50565b613244816130c7565b811461324f57600080fd5b50565b61325b816130f3565b811461326657600080fd5b5056fea26469706673582212205034f30d91c1d82585b273b6817ccd3f01bc8689be010534c4239986ab7a4fe564736f6c63430008000033
Deployed Bytecode
0x6080604052600436106101855760003560e01c806380655eef116100d1578063e985e3671161008a578063f3fef3a311610064578063f3fef3a314610543578063f4739ee31461056c578063f9020e33146105aa578063fa09e630146105d55761018c565b8063e985e367146104b2578063f2aa8218146104dd578063f2fde38b1461051a5761018c565b806380655eef146103a2578063807ea425146103df5780638da5cb5b14610408578063ace1741c14610433578063c76a0f111461045e578063e36b0b371461049b5761018c565b80633abd01361161013e57806363b201171161011857806363b201171461031957806368f8fc10146103445780636bcedf9c14610360578063715018a61461038b5761018c565b80633abd01361461029c5780633c00a36c146102c75780635413c1c8146102f05761018c565b8063115ece4c1461018e578063204120bc146101cb57806329d429a8146102085780632c4e722e146102315780633115329e1461025c57806333e364cb146102855761018c565b3661018c57005b005b34801561019a57600080fd5b506101b560048036038101906101b09190612307565b6105fe565b6040516101c29190612cf7565b60405180910390f35b3480156101d757600080fd5b506101f260048036038101906101ed91906122a2565b610789565b6040516101ff9190612cf7565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906122cb565b6107a1565b005b34801561023d57600080fd5b506102466108d5565b6040516102539190612cf7565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e91906123af565b6108db565b005b34801561029157600080fd5b5061029a610b80565b005b3480156102a857600080fd5b506102b1610c6f565b6040516102be9190612cf7565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612457565b610c75565b005b3480156102fc57600080fd5b5061031760048036038101906103129190612343565b610d3b565b005b34801561032557600080fd5b5061032e610fc9565b60405161033b9190612cf7565b60405180910390f35b61035e60048036038101906103599190612307565b610fcf565b005b34801561036c57600080fd5b506103756112fd565b6040516103829190612cf7565b60405180910390f35b34801561039757600080fd5b506103a0611303565b005b3480156103ae57600080fd5b506103c960048036038101906103c491906122a2565b61138b565b6040516103d69190612b3a565b60405180910390f35b3480156103eb57600080fd5b50610406600480360381019061040191906124e5565b6113ab565b005b34801561041457600080fd5b5061041d61146a565b60405161042a9190612a9d565b60405180910390f35b34801561043f57600080fd5b50610448611493565b6040516104559190612cf7565b60405180910390f35b34801561046a57600080fd5b50610485600480360381019061048091906124a9565b611499565b6040516104929190612b18565b60405180910390f35b3480156104a757600080fd5b506104b061178f565b005b3480156104be57600080fd5b506104c761187e565b6040516104d49190612a9d565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190612457565b6118a4565b6040516105119190612a9d565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c91906122a2565b6118e3565b005b34801561054f57600080fd5b5061056a60048036038101906105659190612307565b6119db565b005b34801561057857600080fd5b50610593600480360381019061058e91906122a2565b611a86565b6040516105a1929190612d12565b60405180910390f35b3480156105b657600080fd5b506105bf611ab7565b6040516105cc9190612b3a565b60405180910390f35b3480156105e157600080fd5b506105fc60048036038101906105f791906122a2565b611aca565b005b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107475760011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90612b97565b60405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061073f81610731600354600a6107229190612f09565b87611be190919063ffffffff16565b611bf790919063ffffffff16565b91505061077f565b61077c60015461076e600354600a61075f9190612f09565b86611be190919063ffffffff16565b611bf790919063ffffffff16565b90505b8091505092915050565b60066020528060005260406000206000915090505481565b6107a9611c0d565b73ffffffffffffffffffffffffffffffffffffffff166107c761146a565b73ffffffffffffffffffffffffffffffffffffffff161461081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490612c77565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561087a57600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60015481565b6108e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661090161146a565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90612c77565b60405180910390fd5b815183511461099b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099290612c17565b60405180910390fd5b600081146109ab57806001819055505b60005b8351811015610b7a5760011515600560008684815181106109f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610a5457600080fd5b6000838281518110610a8f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610aa257600080fd5b828181518110610adb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000868481518110610b20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610b739190612e2f565b90506109ae565b50505050565b610b88611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610ba661146a565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390612c77565b60405180910390fd5b60001515600760009054906101000a900460ff16151514610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990612bd7565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b600a5481565b610c7d611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610c9b61146a565b73ffffffffffffffffffffffffffffffffffffffff1614610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce890612c77565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d37573d6000803e3d6000fd5b5050565b610d43611c0d565b73ffffffffffffffffffffffffffffffffffffffff16610d6161146a565b73ffffffffffffffffffffffffffffffffffffffff1614610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90612c77565b60405180910390fd5b8051825114610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290612c17565b60405180910390fd5b60005b8251811015610fc4576000828281518110610e42577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610e5557600080fd5b600160056000858481518110610e94577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110610f26577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000858481518110610f6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610fbc90613130565b915050610dfe565b505050565b600b5481565b60011515600760009054906101000a900460ff16151514611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c90612cb7565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561106b576110666000346105fe565b611076565b61107583836105fe565b5b905060008114156110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390612c37565b60405180910390fd5b60045481600b546110cd9190612e2f565b1061110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490612c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111505761114b8383611c15565b611159565b611158611c4d565b5b80600b600082825461116b9190612e2f565b92505081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1661129f576008339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001600a60008282546112979190612e2f565b925050819055505b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546112f19190612e2f565b92505081905550505050565b60045481565b61130b611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661132961146a565b73ffffffffffffffffffffffffffffffffffffffff161461137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690612c77565b60405180910390fd5b6113896000611c9d565b565b60056020528060005260406000206000915054906101000a900460ff1681565b6113b3611c0d565b73ffffffffffffffffffffffffffffffffffffffff166113d161146a565b73ffffffffffffffffffffffffffffffffffffffff1614611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90612c77565b60405180910390fd5b600082141561143557600080fd5b8160018190555080600760006101000a81548160ff021916908315150217905550836003819055508260048190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b60608183106114dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d490612bb7565b60405180910390fd5b6000600a5483116114ee57826114f2565b600a545b90506000600a5485116115055784611509565b600a545b9050600081836115199190613081565b67ffffffffffffffff811115611558577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561159157816020015b61157e6120dd565b8152602001906001900390816115765790505b50905060008290505b838110156117825760096000600883815481106115e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154828281518110611682577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000018181525050600881815481106116cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110611730577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060018161177b9190612e2f565b905061159a565b5080935050505092915050565b611797611c0d565b73ffffffffffffffffffffffffffffffffffffffff166117b561146a565b73ffffffffffffffffffffffffffffffffffffffff161461180b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180290612c77565b60405180910390fd5b60011515600760009054906101000a900460ff16151514611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890612cb7565b60405180910390fd5b6000600760006101000a81548160ff021916908315150217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600881815481106118b457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118eb611c0d565b73ffffffffffffffffffffffffffffffffffffffff1661190961146a565b73ffffffffffffffffffffffffffffffffffffffff161461195f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195690612c77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690612b77565b60405180910390fd5b6119d881611c9d565b50565b6119e3611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611a0161146a565b73ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90612c77565b60405180910390fd5b611a8233828473ffffffffffffffffffffffffffffffffffffffff16611d619092919063ffffffff16565b5050565b60096020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600760009054906101000a900460ff1681565b611ad2611c0d565b73ffffffffffffffffffffffffffffffffffffffff16611af061146a565b73ffffffffffffffffffffffffffffffffffffffff1614611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90612c77565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b819190612a9d565b60206040518083038186803b158015611b9957600080fd5b505afa158015611bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd19190612480565b9050611bdd82826119db565b5050565b60008183611bef9190613027565b905092915050565b60008183611c059190612e85565b905092915050565b600033905090565b611c4933611c2161146a565b838573ffffffffffffffffffffffffffffffffffffffff16611de7909392919063ffffffff16565b5050565b611c5561146a565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611c9a573d6000803e3d6000fd5b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611de28363a9059cbb60e01b8484604051602401611d80929190612aef565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b505050565b611e6a846323b872dd60e01b858585604051602401611e0893929190612ab8565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611e70565b50505050565b6000611ed2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f379092919063ffffffff16565b9050600081511115611f325780806020019051810190611ef2919061242e565b611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890612cd7565b60405180910390fd5b5b505050565b6060611f468484600085611f4f565b90509392505050565b606082471015611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90612bf7565b60405180910390fd5b611f9d85612063565b611fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd390612c97565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516120059190612a86565b60006040518083038185875af1925050503d8060008114612042576040519150601f19603f3d011682016040523d82523d6000602084013e612047565b606091505b5091509150612057828286612076565b92505050949350505050565b600080823b905060008111915050919050565b60608315612086578290506120d6565b6000835111156120995782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd9190612b55565b60405180910390fd5b9392505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600061212061211b84612d6c565b612d3b565b9050808382526020820190508285602086028201111561213f57600080fd5b60005b8581101561216f578161215588826121e5565b845260208401935060208301925050600181019050612142565b5050509392505050565b600061218c61218784612d98565b612d3b565b905080838252602082019050828560208602820111156121ab57600080fd5b60005b858110156121db57816121c18882612278565b8452602084019350602083019250506001810190506121ae565b5050509392505050565b6000813590506121f481613224565b92915050565b600082601f83011261220b57600080fd5b813561221b84826020860161210d565b91505092915050565b600082601f83011261223557600080fd5b8135612245848260208601612179565b91505092915050565b60008135905061225d8161323b565b92915050565b6000815190506122728161323b565b92915050565b60008135905061228781613252565b92915050565b60008151905061229c81613252565b92915050565b6000602082840312156122b457600080fd5b60006122c2848285016121e5565b91505092915050565b600080604083850312156122de57600080fd5b60006122ec858286016121e5565b92505060206122fd8582860161224e565b9150509250929050565b6000806040838503121561231a57600080fd5b6000612328858286016121e5565b925050602061233985828601612278565b9150509250929050565b6000806040838503121561235657600080fd5b600083013567ffffffffffffffff81111561237057600080fd5b61237c858286016121fa565b925050602083013567ffffffffffffffff81111561239957600080fd5b6123a585828601612224565b9150509250929050565b6000806000606084860312156123c457600080fd5b600084013567ffffffffffffffff8111156123de57600080fd5b6123ea868287016121fa565b935050602084013567ffffffffffffffff81111561240757600080fd5b61241386828701612224565b925050604061242486828701612278565b9150509250925092565b60006020828403121561244057600080fd5b600061244e84828501612263565b91505092915050565b60006020828403121561246957600080fd5b600061247784828501612278565b91505092915050565b60006020828403121561249257600080fd5b60006124a08482850161228d565b91505092915050565b600080604083850312156124bc57600080fd5b60006124ca85828601612278565b92505060206124db85828601612278565b9150509250929050565b600080600080608085870312156124fb57600080fd5b600061250987828801612278565b945050602061251a87828801612278565b935050604061252b87828801612278565b925050606061253c8782880161224e565b91505092959194509250565b60006125548383612a39565b60408301905092915050565b612569816130b5565b82525050565b612578816130b5565b82525050565b600061258982612dd4565b6125938185612e02565b935061259e83612dc4565b8060005b838110156125cf5781516125b68882612548565b97506125c183612df5565b9250506001810190506125a2565b5085935050505092915050565b6125e5816130c7565b82525050565b60006125f682612ddf565b6126008185612e13565b93506126108185602086016130fd565b80840191505092915050565b600061262782612dea565b6126318185612e1e565b93506126418185602086016130fd565b61264a81613206565b840191505092915050565b6000612662602683612e1e565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006126c8601a83612e1e565b91507f50726573616c653a20546f6b656e206e6f7420616c6c6f7765640000000000006000830152602082019050919050565b6000612708602683612e1e565b91507f50726573616c653a205f66726f6d2073686f756c64206265206c65737320746860008301527f616e205f746f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061276e601783612e1e565b91507f50726573616c653a206973206e6f742073746f707065640000000000000000006000830152602082019050919050565b60006127ae602683612e1e565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612814602f83612e1e565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b600061287a601483612e1e565b91507f50726573616c653a20416d6f756e7420697320300000000000000000000000006000830152602082019050919050565b60006128ba602583612e1e565b91507f50726573616c653a204e6f7420656e6f75676820746f6b656e7320746f20626560008301527f2073616c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612920602083612e1e565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612960601d83612e1e565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006129a0601783612e1e565b91507f50726573616c653a206973206e6f7420656e61626c65640000000000000000006000830152602082019050919050565b60006129e0602a83612e1e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b604082016000820151612a4f6000850182612a68565b506020820151612a626020850182612560565b50505050565b612a71816130f3565b82525050565b612a80816130f3565b82525050565b6000612a9282846125eb565b915081905092915050565b6000602082019050612ab2600083018461256f565b92915050565b6000606082019050612acd600083018661256f565b612ada602083018561256f565b612ae76040830184612a77565b949350505050565b6000604082019050612b04600083018561256f565b612b116020830184612a77565b9392505050565b60006020820190508181036000830152612b32818461257e565b905092915050565b6000602082019050612b4f60008301846125dc565b92915050565b60006020820190508181036000830152612b6f818461261c565b905092915050565b60006020820190508181036000830152612b9081612655565b9050919050565b60006020820190508181036000830152612bb0816126bb565b9050919050565b60006020820190508181036000830152612bd0816126fb565b9050919050565b60006020820190508181036000830152612bf081612761565b9050919050565b60006020820190508181036000830152612c10816127a1565b9050919050565b60006020820190508181036000830152612c3081612807565b9050919050565b60006020820190508181036000830152612c508161286d565b9050919050565b60006020820190508181036000830152612c70816128ad565b9050919050565b60006020820190508181036000830152612c9081612913565b9050919050565b60006020820190508181036000830152612cb081612953565b9050919050565b60006020820190508181036000830152612cd081612993565b9050919050565b60006020820190508181036000830152612cf0816129d3565b9050919050565b6000602082019050612d0c6000830184612a77565b92915050565b6000604082019050612d276000830185612a77565b612d3460208301846125dc565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715612d6257612d616131d7565b5b8060405250919050565b600067ffffffffffffffff821115612d8757612d866131d7565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612db357612db26131d7565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612e3a826130f3565b9150612e45836130f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e7a57612e79613179565b5b828201905092915050565b6000612e90826130f3565b9150612e9b836130f3565b925082612eab57612eaa6131a8565b5b828204905092915050565b6000808291508390505b6001851115612f0057808604811115612edc57612edb613179565b5b6001851615612eeb5780820291505b8081029050612ef985613217565b9450612ec0565b94509492505050565b6000612f14826130f3565b9150612f1f836130f3565b9250612f4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f54565b905092915050565b600082612f645760019050613020565b81612f725760009050613020565b8160018114612f885760028114612f9257612fc1565b6001915050613020565b60ff841115612fa457612fa3613179565b5b8360020a915084821115612fbb57612fba613179565b5b50613020565b5060208310610133831016604e8410600b8410161715612ff65782820a905083811115612ff157612ff0613179565b5b613020565b6130038484846001612eb6565b9250905081840481111561301a57613019613179565b5b81810290505b9392505050565b6000613032826130f3565b915061303d836130f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561307657613075613179565b5b828202905092915050565b600061308c826130f3565b9150613097836130f3565b9250828210156130aa576130a9613179565b5b828203905092915050565b60006130c0826130d3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561311b578082015181840152602081019050613100565b8381111561312a576000848401525b50505050565b600061313b826130f3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561316e5761316d613179565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b61322d816130b5565b811461323857600080fd5b50565b613244816130c7565b811461324f57600080fd5b50565b61325b816130f3565b811461326657600080fd5b5056fea26469706673582212205034f30d91c1d82585b273b6817ccd3f01bc8689be010534c4239986ab7a4fe564736f6c63430008000033
Deployed Bytecode Sourcemap
12597:5197:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15475:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12941:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14674:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12751:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14888:579;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14094:88;;;;;;;;;;;;;:::i;:::-;;13119:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5289:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14190:476;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13152:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16271:913;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12845:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4223:103;;;;;;;;;;;;;:::i;:::-;;12887:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13643:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4000:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12812:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17192:599;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13998:88;;;;;;;;;;;;;:::i;:::-;;12779:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13027:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4334:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4993:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13057:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;12996:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5126:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15475:492;15576:7;15596:14;15642:1;15625:19;;:5;:19;;;15621:315;;15693:4;15669:28;;:13;:20;15683:5;15669:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;15661:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15743:13;15759:11;:18;15771:5;15759:18;;;;;;;;;;;;;;;;15743:34;;15801:41;15836:5;15801:30;15818:12;;15812:2;:18;;;;:::i;:::-;15801:6;:10;;:30;;;;:::i;:::-;:34;;:41;;;;:::i;:::-;15792:50;;15621:315;;;;15884:40;15919:4;;15884:30;15901:12;;15895:2;:18;;;;:::i;:::-;15884:6;:10;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15875:49;;15621:315;15953:6;15946:13;;;15475:492;;;;:::o;12941:46::-;;;;;;;;;;;;;;;;;:::o;14674:206::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14820:7:::1;14795:32;;:13;:21;14809:6;14795:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;14787:41;;;::::0;::::1;;14865:7;14841:13;:21;14855:6;14841:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;14674:206:::0;;:::o;12751:19::-;;;;:::o;14888:579::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15084:7:::1;:14;15066:7;:14;:32;15044:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;15199:1;15190:5;:10;15186:55;;15224:5;15217:4;:12;;;;15186:55;15258:9;15253:207;15277:7;:14;15273:1;:18;15253:207;;;15353:4;15324:33;;:13;:25;15338:7;15346:1;15338:10;;;;;;;;;;;;;;;;;;;;;;15324:25;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;15316:42;;;::::0;::::1;;15395:1;15381:7;15389:1;15381:10;;;;;;;;;;;;;;;;;;;;;;:15;;15373:24;;;::::0;::::1;;15438:7;15446:1;15438:10;;;;;;;;;;;;;;;;;;;;;;15412:11;:23;15424:7;15432:1;15424:10;;;;;;;;;;;;;;;;;;;;;;15412:23;;;;;;;;;;;;;;;:36;;;;15298:1;15293:6;;;;;:::i;:::-;;;15253:207;;;;14888:579:::0;;;:::o;14094:88::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13582:5:::1;13568:19;;:10;;;;;;;;;;;:19;;;13560:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14170:4:::2;14157:10;;:17;;;;;;;;;;;;;;;;;;14094:88::o:0;13119:26::-;;;;:::o;5289:108::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5364:10:::1;5356:28;;:33;5385:3;5356:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;5289:108:::0;:::o;14190:476::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14363:7:::1;:14;14345:7;:14;:32;14323:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;14470:9;14465:194;14489:7;:14;14485:1;:18;14465:194;;;14547:1;14533:7;14541:1;14533:10;;;;;;;;;;;;;;;;;;;;;;:15;;14525:24;;;::::0;::::1;;14592:4;14564:13;:25;14578:7;14586:1;14578:10;;;;;;;;;;;;;;;;;;;;;;14564:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14637:7;14645:1;14637:10;;;;;;;;;;;;;;;;;;;;;;14611:11;:23;14623:7;14631:1;14623:10;;;;;;;;;;;;;;;;;;;;;;14611:23;;;;;;;;;;;;;;;:36;;;;14505:3;;;;;:::i;:::-;;;;14465:194;;;;14190:476:::0;;:::o;13152:30::-;;;;:::o;16271:913::-;13467:4;13453:18;;:10;;;;;;;;;;;:18;;;13445:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;16387:20:::1;16428:1:::0;16410:20:::1;;:6;:20;;;;:120;;16493:37;16516:1;16520:9;16493:14;:37::i;:::-;16410:120;;;16446:31;16461:6;16469:7;16446:14;:31::i;:::-;16410:120;16387:143;;16567:1;16551:12;:17;;16543:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;16661:18;;16645:12;16627:15;;:30;;;;:::i;:::-;16626:53;16604:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16779:1;16761:20;;:6;:20;;;16757:129;;16798:30;16812:6;16820:7;16798:13;:30::i;:::-;16757:129;;;16861:13;:11;:13::i;:::-;16757:129;16917:12;16898:15;;:31;;;;;;;:::i;:::-;;;;;;;;16947:13;:25;16961:10;16947:25;;;;;;;;;;;;;;;:32;;;;;;;;;;;;16942:174;;16996:6;17008:10;16996:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17069:4;17034:13;:25;17048:10;17034:25;;;;;;;;;;;;;;;:32;;;:39;;;;;;;;;;;;;;;;;;17103:1;17088:11;;:16;;;;;;;:::i;:::-;;;;;;;;16942:174;17164:12;17128:13;:25;17142:10;17128:25;;;;;;;;;;;;;;;:32;;;:48;;;;;;;:::i;:::-;;;;;;;;13510:1;16271:913:::0;;:::o;12845:33::-;;;;:::o;4223:103::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4288:30:::1;4315:1;4288:18;:30::i;:::-;4223:103::o:0;12887:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13643:347::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13836:1:::1;13827:5;:10;;13819:19;;;::::0;::::1;;13856:5;13849:4;:12;;;;13885:11;13872:10;;:24;;;;;;;;;;;;;;;;;;13922:9;13907:12;:24;;;;13963:19;13942:18;:40;;;;13643:347:::0;;;;:::o;4000:87::-;4046:7;4073:6;;;;;;;;;;;4066:13;;4000:87;:::o;12812:24::-;;;;:::o;17192:599::-;17288:20;17337:3;17329:5;:11;17321:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17396:7;17412:11;;17406:3;:17;:37;;17440:3;17406:37;;;17426:11;;17406:37;17396:47;;17454:9;17474:11;;17466:5;:19;:41;;17502:5;17466:41;;;17488:11;;17466:41;17454:53;;17520:30;17576:4;17571:2;:9;;;;:::i;:::-;17553:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;17520:61;;17599:6;17608:4;17599:13;;17594:161;17618:2;17614:1;:6;17594:161;;;17667:13;:24;17681:6;17688:1;17681:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17667:24;;;;;;;;;;;;;;;:31;;;17645:9;17655:1;17645:12;;;;;;;;;;;;;;;;;;;;;;:19;;:53;;;;;17734:6;17741:1;17734:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17713;17723:1;17713:12;;;;;;;;;;;;;;;;;;;;;;:18;;:30;;;;;;;;;;;17627:1;17622:6;;;;;:::i;:::-;;;17594:161;;;;17774:9;17767:16;;;;;17192:599;;;;:::o;13998:88::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13467:4:::1;13453:18;;:10;;;;;;;;;;;:18;;;13445:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14073:5:::2;14060:10;;:18;;;;;;;;;;;;;;;;;;13998:88::o:0;12779:24::-;;;;;;;;;;;;;:::o;13027:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4334:238::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4457:1:::1;4437:22;;:8;:22;;;;4415:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;4536:28;4555:8;4536:18;:28::i;:::-;4334:238:::0;:::o;4993:125::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5067:43:::1;5094:10;5106:3;5074:5;5067:26;;;;:43;;;;;:::i;:::-;4993:125:::0;;:::o;13057:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12996:22::-;;;;;;;;;;;;;:::o;5126:155::-;4146:12;:10;:12::i;:::-;4135:23;;:7;:5;:7::i;:::-;:23;;;4127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5190:11:::1;5211:5;5204:23;;;5236:4;5204:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5190:52;;5253:20;5262:5;5269:3;5253:8;:20::i;:::-;4206:1;5126:155:::0;:::o;1539:98::-;1597:7;1628:1;1624;:5;;;;:::i;:::-;1617:12;;1539:98;;;;:::o;1645:::-;1703:7;1734:1;1730;:5;;;;:::i;:::-;1723:12;;1645:98;;;;:::o;3494:::-;3547:7;3574:10;3567:17;;3494:98;:::o;16069:194::-;16144:111;16190:10;16215:7;:5;:7::i;:::-;16237;16151:6;16144:31;;;;:111;;;;;;:::i;:::-;16069:194;;:::o;15975:86::-;16025:7;:5;:7::i;:::-;16017:25;;:36;16043:9;16017:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15975:86::o;4580:191::-;4654:16;4673:6;;;;;;;;;;;4654:25;;4699:8;4690:6;;:17;;;;;;;;;;;;;;;;;;4754:8;4723:40;;4744:8;4723:40;;;;;;;;;;;;4580:191;;:::o;9823:214::-;9906:123;9940:5;9983:23;;;10008:2;10012:5;9960:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9906:19;:123::i;:::-;9823:214;;;:::o;10045:285::-;10189:133;10223:5;10266:27;;;10295:4;10301:2;10305:5;10243:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10189:19;:133::i;:::-;10045:285;;;;:::o;11892:419::-;11973:23;11999:106;12041:4;11999:106;;;;;;;;;;;;;;;;;12007:5;11999:27;;;;:106;;;;;:::i;:::-;11973:132;;12140:1;12120:10;:17;:21;12116:188;;;12195:10;12184:30;;;;;;;;;;;;:::i;:::-;12158:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;12116:188;11892:419;;;:::o;6570:229::-;6707:12;6739:52;6761:6;6769:4;6775:1;6778:12;6739:21;:52::i;:::-;6732:59;;6570:229;;;;;:::o;7171:571::-;7341:12;7413:5;7388:21;:30;;7366:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;7503:18;7514:6;7503:10;:18::i;:::-;7495:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7569:12;7583:23;7610:6;:11;;7629:5;7650:4;7610:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7568:97;;;;7683:51;7700:7;7709:10;7721:12;7683:16;:51::i;:::-;7676:58;;;;7171:571;;;;;;:::o;5759:196::-;5819:4;5836:12;5903:7;5891:20;5883:28;;5946:1;5939:4;:8;5932:15;;;5759:196;;;:::o;9180:550::-;9330:12;9359:7;9355:368;;;9390:10;9383:17;;;;9355:368;9457:1;9437:10;:17;:21;9433:279;;;9540:10;9534:17;9601:15;9588:10;9584:2;9580:19;9573:44;9488:148;9683:12;9676:20;;;;;;;;;;;:::i;:::-;;;;;;;;9180:550;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::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:133::-;;2175:6;2162:20;2153:29;;2191:30;2215:5;2191:30;:::i;:::-;2143:84;;;;:::o;2233:137::-;;2318:6;2312:13;2303:22;;2334:30;2358:5;2334:30;:::i;:::-;2293:77;;;;:::o;2376:139::-;;2460:6;2447:20;2438:29;;2476:33;2503:5;2476:33;:::i;:::-;2428:87;;;;:::o;2521:143::-;;2609:6;2603:13;2594:22;;2625:33;2652:5;2625:33;:::i;:::-;2584:80;;;;:::o;2670:262::-;;2778:2;2766:9;2757:7;2753:23;2749:32;2746:2;;;2794:1;2791;2784:12;2746:2;2837:1;2862:53;2907:7;2898:6;2887:9;2883:22;2862:53;:::i;:::-;2852:63;;2808:117;2736:196;;;;:::o;2938:401::-;;;3060:2;3048:9;3039:7;3035:23;3031:32;3028:2;;;3076:1;3073;3066:12;3028:2;3119:1;3144:53;3189:7;3180:6;3169:9;3165:22;3144:53;:::i;:::-;3134:63;;3090:117;3246:2;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3217:115;3018:321;;;;;:::o;3345:407::-;;;3470:2;3458:9;3449:7;3445:23;3441:32;3438:2;;;3486:1;3483;3476:12;3438:2;3529:1;3554:53;3599:7;3590:6;3579:9;3575:22;3554:53;:::i;:::-;3544:63;;3500:117;3656:2;3682:53;3727:7;3718:6;3707:9;3703:22;3682:53;:::i;:::-;3672:63;;3627:118;3428:324;;;;;:::o;3758:693::-;;;3933:2;3921:9;3912:7;3908:23;3904:32;3901:2;;;3949:1;3946;3939:12;3901:2;4020:1;4009:9;4005:17;3992:31;4050:18;4042:6;4039:30;4036:2;;;4082:1;4079;4072:12;4036:2;4110:78;4180:7;4171:6;4160:9;4156:22;4110:78;:::i;:::-;4100:88;;3963:235;4265:2;4254:9;4250:18;4237:32;4296:18;4288:6;4285:30;4282:2;;;4328:1;4325;4318:12;4282:2;4356:78;4426:7;4417:6;4406:9;4402:22;4356:78;:::i;:::-;4346:88;;4208:236;3891:560;;;;;:::o;4457:838::-;;;;4649:2;4637:9;4628:7;4624:23;4620:32;4617:2;;;4665:1;4662;4655:12;4617:2;4736:1;4725:9;4721:17;4708:31;4766:18;4758:6;4755:30;4752:2;;;4798:1;4795;4788:12;4752:2;4826:78;4896:7;4887:6;4876:9;4872:22;4826:78;:::i;:::-;4816:88;;4679:235;4981:2;4970:9;4966:18;4953:32;5012:18;5004:6;5001:30;4998:2;;;5044:1;5041;5034:12;4998:2;5072:78;5142:7;5133:6;5122:9;5118:22;5072:78;:::i;:::-;5062:88;;4924:236;5199:2;5225:53;5270:7;5261:6;5250:9;5246:22;5225:53;:::i;:::-;5215:63;;5170:118;4607:688;;;;;:::o;5301:278::-;;5417:2;5405:9;5396:7;5392:23;5388:32;5385:2;;;5433:1;5430;5423:12;5385:2;5476:1;5501:61;5554:7;5545:6;5534:9;5530:22;5501:61;:::i;:::-;5491:71;;5447:125;5375:204;;;;:::o;5585:262::-;;5693:2;5681:9;5672:7;5668:23;5664:32;5661:2;;;5709:1;5706;5699:12;5661:2;5752:1;5777:53;5822:7;5813:6;5802:9;5798:22;5777:53;:::i;:::-;5767:63;;5723:117;5651:196;;;;:::o;5853:284::-;;5972:2;5960:9;5951:7;5947:23;5943:32;5940:2;;;5988:1;5985;5978:12;5940:2;6031:1;6056:64;6112:7;6103:6;6092:9;6088:22;6056:64;:::i;:::-;6046:74;;6002:128;5930:207;;;;:::o;6143:407::-;;;6268:2;6256:9;6247:7;6243:23;6239:32;6236:2;;;6284:1;6281;6274:12;6236:2;6327:1;6352:53;6397:7;6388:6;6377:9;6373:22;6352:53;:::i;:::-;6342:63;;6298:117;6454:2;6480:53;6525:7;6516:6;6505:9;6501:22;6480:53;:::i;:::-;6470:63;;6425:118;6226:324;;;;;:::o;6556:692::-;;;;;6712:3;6700:9;6691:7;6687:23;6683:33;6680:2;;;6729:1;6726;6719:12;6680:2;6772:1;6797:53;6842:7;6833:6;6822:9;6818:22;6797:53;:::i;:::-;6787:63;;6743:117;6899:2;6925:53;6970:7;6961:6;6950:9;6946:22;6925:53;:::i;:::-;6915:63;;6870:118;7027:2;7053:53;7098:7;7089:6;7078:9;7074:22;7053:53;:::i;:::-;7043:63;;6998:118;7155:2;7181:50;7223:7;7214:6;7203:9;7199:22;7181:50;:::i;:::-;7171:60;;7126:115;6670:578;;;;;;;:::o;7254:295::-;;7402:104;7502:3;7494:6;7402:104;:::i;:::-;7538:4;7533:3;7529:14;7515:28;;7392:157;;;;:::o;7555:108::-;7632:24;7650:5;7632:24;:::i;:::-;7627:3;7620:37;7610:53;;:::o;7669:118::-;7756:24;7774:5;7756:24;:::i;:::-;7751:3;7744:37;7734:53;;:::o;7861:964::-;;8067:83;8144:5;8067:83;:::i;:::-;8166:115;8274:6;8269:3;8166:115;:::i;:::-;8159:122;;8305:85;8384:5;8305:85;:::i;:::-;8413:7;8444:1;8429:371;8454:6;8451:1;8448:13;8429:371;;;8530:6;8524:13;8557:121;8674:3;8659:13;8557:121;:::i;:::-;8550:128;;8701:89;8783:6;8701:89;:::i;:::-;8691:99;;8489:311;8476:1;8473;8469:9;8464:14;;8429:371;;;8433:14;8816:3;8809:10;;8043:782;;;;;;;:::o;8831:109::-;8912:21;8927:5;8912:21;:::i;:::-;8907:3;8900:34;8890:50;;:::o;8946:373::-;;9078:38;9110:5;9078:38;:::i;:::-;9132:88;9213:6;9208:3;9132:88;:::i;:::-;9125:95;;9229:52;9274:6;9269:3;9262:4;9255:5;9251:16;9229:52;:::i;:::-;9306:6;9301:3;9297:16;9290:23;;9054:265;;;;;:::o;9325:364::-;;9441:39;9474:5;9441:39;:::i;:::-;9496:71;9560:6;9555:3;9496:71;:::i;:::-;9489:78;;9576:52;9621:6;9616:3;9609:4;9602:5;9598:16;9576:52;:::i;:::-;9653:29;9675:6;9653:29;:::i;:::-;9648:3;9644:39;9637:46;;9417:272;;;;;:::o;9695:370::-;;9858:67;9922:2;9917:3;9858:67;:::i;:::-;9851:74;;9955:34;9951:1;9946:3;9942:11;9935:55;10021:8;10016:2;10011:3;10007:12;10000:30;10056:2;10051:3;10047:12;10040:19;;9841:224;;;:::o;10071:324::-;;10234:67;10298:2;10293:3;10234:67;:::i;:::-;10227:74;;10331:28;10327:1;10322:3;10318:11;10311:49;10386:2;10381:3;10377:12;10370:19;;10217:178;;;:::o;10401:370::-;;10564:67;10628:2;10623:3;10564:67;:::i;:::-;10557:74;;10661:34;10657:1;10652:3;10648:11;10641:55;10727:8;10722:2;10717:3;10713:12;10706:30;10762:2;10757:3;10753:12;10746:19;;10547:224;;;:::o;10777:321::-;;10940:67;11004:2;10999:3;10940:67;:::i;:::-;10933:74;;11037:25;11033:1;11028:3;11024:11;11017:46;11089:2;11084:3;11080:12;11073:19;;10923:175;;;:::o;11104:370::-;;11267:67;11331:2;11326:3;11267:67;:::i;:::-;11260:74;;11364:34;11360:1;11355:3;11351:11;11344:55;11430:8;11425:2;11420:3;11416:12;11409:30;11465:2;11460:3;11456:12;11449:19;;11250:224;;;:::o;11480:379::-;;11643:67;11707:2;11702:3;11643:67;:::i;:::-;11636:74;;11740:34;11736:1;11731:3;11727:11;11720:55;11806:17;11801:2;11796:3;11792:12;11785:39;11850:2;11845:3;11841:12;11834:19;;11626:233;;;:::o;11865:318::-;;12028:67;12092:2;12087:3;12028:67;:::i;:::-;12021:74;;12125:22;12121:1;12116:3;12112:11;12105:43;12174:2;12169:3;12165:12;12158:19;;12011:172;;;:::o;12189:369::-;;12352:67;12416:2;12411:3;12352:67;:::i;:::-;12345:74;;12449:34;12445:1;12440:3;12436:11;12429:55;12515:7;12510:2;12505:3;12501:12;12494:29;12549:2;12544:3;12540:12;12533:19;;12335:223;;;:::o;12564:330::-;;12727:67;12791:2;12786:3;12727:67;:::i;:::-;12720:74;;12824:34;12820:1;12815:3;12811:11;12804:55;12885:2;12880:3;12876:12;12869:19;;12710:184;;;:::o;12900:327::-;;13063:67;13127:2;13122:3;13063:67;:::i;:::-;13056:74;;13160:31;13156:1;13151:3;13147:11;13140:52;13218:2;13213:3;13209:12;13202:19;;13046:181;;;:::o;13233:321::-;;13396:67;13460:2;13455:3;13396:67;:::i;:::-;13389:74;;13493:25;13489:1;13484:3;13480:11;13473:46;13545:2;13540:3;13536:12;13529:19;;13379:175;;;:::o;13560:374::-;;13723:67;13787:2;13782:3;13723:67;:::i;:::-;13716:74;;13820:34;13816:1;13811:3;13807:11;13800:55;13886:12;13881:2;13876:3;13872:12;13865:34;13925:2;13920:3;13916:12;13909:19;;13706:228;;;:::o;14004:508::-;14149:4;14144:3;14140:14;14238:4;14231:5;14227:16;14221:23;14257:63;14314:4;14309:3;14305:14;14291:12;14257:63;:::i;:::-;14164:166;14413:4;14406:5;14402:16;14396:23;14432:63;14489:4;14484:3;14480:14;14466:12;14432:63;:::i;:::-;14340:165;14118:394;;;:::o;14518:108::-;14595:24;14613:5;14595:24;:::i;:::-;14590:3;14583:37;14573:53;;:::o;14632:118::-;14719:24;14737:5;14719:24;:::i;:::-;14714:3;14707:37;14697:53;;:::o;14756:271::-;;14908:93;14997:3;14988:6;14908:93;:::i;:::-;14901:100;;15018:3;15011:10;;14890:137;;;;:::o;15033:222::-;;15164:2;15153:9;15149:18;15141:26;;15177:71;15245:1;15234:9;15230:17;15221:6;15177:71;:::i;:::-;15131:124;;;;:::o;15261:442::-;;15448:2;15437:9;15433:18;15425:26;;15461:71;15529:1;15518:9;15514:17;15505:6;15461:71;:::i;:::-;15542:72;15610:2;15599:9;15595:18;15586:6;15542:72;:::i;:::-;15624;15692:2;15681:9;15677:18;15668:6;15624:72;:::i;:::-;15415:288;;;;;;:::o;15709:332::-;;15868:2;15857:9;15853:18;15845:26;;15881:71;15949:1;15938:9;15934:17;15925:6;15881:71;:::i;:::-;15962:72;16030:2;16019:9;16015:18;16006:6;15962:72;:::i;:::-;15835:206;;;;;:::o;16047:489::-;;16286:2;16275:9;16271:18;16263:26;;16335:9;16329:4;16325:20;16321:1;16310:9;16306:17;16299:47;16363:166;16524:4;16515:6;16363:166;:::i;:::-;16355:174;;16253:283;;;;:::o;16542:210::-;;16667:2;16656:9;16652:18;16644:26;;16680:65;16742:1;16731:9;16727:17;16718:6;16680:65;:::i;:::-;16634:118;;;;:::o;16758:313::-;;16909:2;16898:9;16894:18;16886:26;;16958:9;16952:4;16948:20;16944:1;16933:9;16929:17;16922:47;16986:78;17059:4;17050:6;16986:78;:::i;:::-;16978:86;;16876:195;;;;:::o;17077:419::-;;17281:2;17270:9;17266:18;17258:26;;17330:9;17324:4;17320:20;17316:1;17305:9;17301:17;17294:47;17358:131;17484:4;17358:131;:::i;:::-;17350:139;;17248:248;;;:::o;17502:419::-;;17706:2;17695:9;17691:18;17683:26;;17755:9;17749:4;17745:20;17741:1;17730:9;17726:17;17719:47;17783:131;17909:4;17783:131;:::i;:::-;17775:139;;17673:248;;;:::o;17927:419::-;;18131:2;18120:9;18116:18;18108:26;;18180:9;18174:4;18170:20;18166:1;18155:9;18151:17;18144:47;18208:131;18334:4;18208:131;:::i;:::-;18200:139;;18098:248;;;:::o;18352:419::-;;18556:2;18545:9;18541:18;18533:26;;18605:9;18599:4;18595:20;18591:1;18580:9;18576:17;18569:47;18633:131;18759:4;18633:131;:::i;:::-;18625:139;;18523:248;;;:::o;18777:419::-;;18981:2;18970:9;18966:18;18958:26;;19030:9;19024:4;19020:20;19016:1;19005:9;19001:17;18994:47;19058:131;19184:4;19058:131;:::i;:::-;19050:139;;18948:248;;;:::o;19202:419::-;;19406:2;19395:9;19391:18;19383:26;;19455:9;19449:4;19445:20;19441:1;19430:9;19426:17;19419:47;19483:131;19609:4;19483:131;:::i;:::-;19475:139;;19373:248;;;:::o;19627:419::-;;19831:2;19820:9;19816:18;19808:26;;19880:9;19874:4;19870:20;19866:1;19855:9;19851:17;19844:47;19908:131;20034:4;19908:131;:::i;:::-;19900:139;;19798:248;;;:::o;20052:419::-;;20256:2;20245:9;20241:18;20233:26;;20305:9;20299:4;20295:20;20291:1;20280:9;20276:17;20269:47;20333:131;20459:4;20333:131;:::i;:::-;20325:139;;20223:248;;;:::o;20477:419::-;;20681:2;20670:9;20666:18;20658:26;;20730:9;20724:4;20720:20;20716:1;20705:9;20701:17;20694:47;20758:131;20884:4;20758:131;:::i;:::-;20750:139;;20648:248;;;:::o;20902:419::-;;21106:2;21095:9;21091:18;21083:26;;21155:9;21149:4;21145:20;21141:1;21130:9;21126:17;21119:47;21183:131;21309:4;21183:131;:::i;:::-;21175:139;;21073:248;;;:::o;21327:419::-;;21531:2;21520:9;21516:18;21508:26;;21580:9;21574:4;21570:20;21566:1;21555:9;21551:17;21544:47;21608:131;21734:4;21608:131;:::i;:::-;21600:139;;21498:248;;;:::o;21752:419::-;;21956:2;21945:9;21941:18;21933:26;;22005:9;21999:4;21995:20;21991:1;21980:9;21976:17;21969:47;22033:131;22159:4;22033:131;:::i;:::-;22025:139;;21923:248;;;:::o;22177:222::-;;22308:2;22297:9;22293:18;22285:26;;22321:71;22389:1;22378:9;22374:17;22365:6;22321:71;:::i;:::-;22275:124;;;;:::o;22405:320::-;;22558:2;22547:9;22543:18;22535:26;;22571:71;22639:1;22628:9;22624:17;22615:6;22571:71;:::i;:::-;22652:66;22714:2;22703:9;22699:18;22690:6;22652:66;:::i;:::-;22525:200;;;;;:::o;22731:283::-;;22797:2;22791:9;22781:19;;22839:4;22831:6;22827:17;22946:6;22934:10;22931:22;22910:18;22898:10;22895:34;22892:62;22889:2;;;22957:18;;:::i;:::-;22889:2;22997:10;22993:2;22986:22;22771:243;;;;:::o;23020:311::-;;23187:18;23179:6;23176:30;23173:2;;;23209:18;;:::i;:::-;23173:2;23259:4;23251:6;23247:17;23239:25;;23319:4;23313;23309:15;23301:23;;23102:229;;;:::o;23337:311::-;;23504:18;23496:6;23493:30;23490:2;;;23526:18;;:::i;:::-;23490:2;23576:4;23568:6;23564:17;23556:25;;23636:4;23630;23626:15;23618:23;;23419:229;;;:::o;23654:161::-;;23773:3;23765:11;;23803:4;23798:3;23794:14;23786:22;;23755:60;;;:::o;23821:143::-;;23951:5;23945:12;23935:22;;23924:40;;;:::o;23970:98::-;;24055:5;24049:12;24039:22;;24028:40;;;:::o;24074:99::-;;24160:5;24154:12;24144:22;;24133:40;;;:::o;24179:142::-;;24310:4;24305:3;24301:14;24293:22;;24283:38;;;:::o;24327:213::-;;24489:6;24484:3;24477:19;24529:4;24524:3;24520:14;24505:29;;24467:73;;;;:::o;24546:147::-;;24684:3;24669:18;;24659:34;;;;:::o;24699:169::-;;24817:6;24812:3;24805:19;24857:4;24852:3;24848:14;24833:29;;24795:73;;;;:::o;24874:305::-;;24933:20;24951:1;24933:20;:::i;:::-;24928:25;;24967:20;24985:1;24967:20;:::i;:::-;24962:25;;25121:1;25053:66;25049:74;25046:1;25043:81;25040:2;;;25127:18;;:::i;:::-;25040:2;25171:1;25168;25164:9;25157:16;;24918:261;;;;:::o;25185:185::-;;25242:20;25260:1;25242:20;:::i;:::-;25237:25;;25276:20;25294:1;25276:20;:::i;:::-;25271:25;;25315:1;25305:2;;25320:18;;:::i;:::-;25305:2;25362:1;25359;25355:9;25350:14;;25227:143;;;;:::o;25376:848::-;;;25468:6;25459:15;;25492:5;25483:14;;25506:712;25527:1;25517:8;25514:15;25506:712;;;25622:4;25617:3;25613:14;25607:4;25604:24;25601:2;;;25631:18;;:::i;:::-;25601:2;25681:1;25671:8;25667:16;25664:2;;;26096:4;26089:5;26085:16;26076:25;;25664:2;26146:4;26140;26136:15;26128:23;;26176:32;26199:8;26176:32;:::i;:::-;26164:44;;25506:712;;;25449:775;;;;;;;:::o;26230:285::-;;26314:23;26332:4;26314:23;:::i;:::-;26306:31;;26358:27;26376:8;26358:27;:::i;:::-;26346:39;;26404:104;26441:66;26431:8;26425:4;26404:104;:::i;:::-;26395:113;;26296:219;;;;:::o;26521:1073::-;;26766:8;26756:2;;26787:1;26778:10;;26789:5;;26756:2;26815:4;26805:2;;26832:1;26823:10;;26834:5;;26805:2;26901:4;26949:1;26944:27;;;;26985:1;26980:191;;;;26894:277;;26944:27;26962:1;26953:10;;26964:5;;;26980:191;27025:3;27015:8;27012:17;27009:2;;;27032:18;;:::i;:::-;27009:2;27081:8;27078:1;27074:16;27065:25;;27116:3;27109:5;27106:14;27103:2;;;27123:18;;:::i;:::-;27103:2;27156:5;;;26894:277;;27280:2;27270:8;27267:16;27261:3;27255:4;27252:13;27248:36;27230:2;27220:8;27217:16;27212:2;27206:4;27203:12;27199:35;27183:111;27180:2;;;27336:8;27330:4;27326:19;27317:28;;27371:3;27364:5;27361:14;27358:2;;;27378:18;;:::i;:::-;27358:2;27411:5;;27180:2;27451:42;27489:3;27479:8;27473:4;27470:1;27451:42;:::i;:::-;27436:57;;;;27525:4;27520:3;27516:14;27509:5;27506:25;27503:2;;;27534:18;;:::i;:::-;27503:2;27583:4;27576:5;27572:16;27563:25;;26581:1013;;;;;;:::o;27600:348::-;;27663:20;27681:1;27663:20;:::i;:::-;27658:25;;27697:20;27715:1;27697:20;:::i;:::-;27692:25;;27885:1;27817:66;27813:74;27810:1;27807:81;27802:1;27795:9;27788:17;27784:105;27781:2;;;27892:18;;:::i;:::-;27781:2;27940:1;27937;27933:9;27922:20;;27648:300;;;;:::o;27954:191::-;;28014:20;28032:1;28014:20;:::i;:::-;28009:25;;28048:20;28066:1;28048:20;:::i;:::-;28043:25;;28087:1;28084;28081:8;28078:2;;;28092:18;;:::i;:::-;28078:2;28137:1;28134;28130:9;28122:17;;27999:146;;;;:::o;28151:96::-;;28217:24;28235:5;28217:24;:::i;:::-;28206:35;;28196:51;;;:::o;28253:90::-;;28330:5;28323:13;28316:21;28305:32;;28295:48;;;:::o;28349:126::-;;28426:42;28419:5;28415:54;28404:65;;28394:81;;;:::o;28481:77::-;;28547:5;28536:16;;28526:32;;;:::o;28564:307::-;28632:1;28642:113;28656:6;28653:1;28650:13;28642:113;;;28741:1;28736:3;28732:11;28726:18;28722:1;28717:3;28713:11;28706:39;28678:2;28675:1;28671:10;28666:15;;28642:113;;;28773:6;28770:1;28767:13;28764:2;;;28853:1;28844:6;28839:3;28835:16;28828:27;28764:2;28613:258;;;;:::o;28877:233::-;;28939:24;28957:5;28939:24;:::i;:::-;28930:33;;28985:66;28978:5;28975:77;28972:2;;;29055:18;;:::i;:::-;28972:2;29102:1;29095:5;29091:13;29084:20;;28920:190;;;:::o;29116:180::-;29164:77;29161:1;29154:88;29261:4;29258:1;29251:15;29285:4;29282:1;29275:15;29302:180;29350:77;29347:1;29340:88;29447:4;29444:1;29437:15;29471:4;29468:1;29461:15;29488:180;29536:77;29533:1;29526:88;29633:4;29630:1;29623:15;29657:4;29654:1;29647:15;29674:102;;29766:2;29762:7;29757:2;29750:5;29746:14;29742:28;29732:38;;29722:54;;;:::o;29782:102::-;;29871:5;29868:1;29864:13;29843:34;;29833:51;;;:::o;29890:122::-;29963:24;29981:5;29963:24;:::i;:::-;29956:5;29953:35;29943:2;;30002:1;29999;29992:12;29943:2;29933:79;:::o;30018:116::-;30088:21;30103:5;30088:21;:::i;:::-;30081:5;30078:32;30068:2;;30124:1;30121;30114:12;30068:2;30058:76;:::o;30140:122::-;30213:24;30231:5;30213:24;:::i;:::-;30206:5;30203:35;30193:2;;30252:1;30249;30242:12;30193:2;30183:79;:::o
Swarm Source
ipfs://5034f30d91c1d82585b273b6817ccd3f01bc8689be010534c4239986ab7a4fe5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.