Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
grapefruitUSD
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-11 */ // File: contracts/grapefruitUSDStorage.sol // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; contract grapefruitUSDStorage { /** WARNING: NEVER RE-ORDER VARIABLES! * Always double-check that new variables are added APPEND-ONLY. * Re-ordering variables can permanently BREAK the deployed proxy contract. */ bool public initialized; mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; mapping(address => bool) public blacklist; uint256 internal _totalSupply; string public constant name = "GrapefruitUSD"; string public constant symbol = "GrapefruitUSD"; uint256 public multiplier; uint8 public constant decimals = 18; address public admin; uint256 internal constant deci = 1e18; bool internal getpause; } // File: contracts/Proxiable.sol pragma solidity ^0.6.0; contract Proxiable { // Code position in storage is keccak256("PROXIABLE") = "0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7" function updateCodeAddress(address newAddress) internal { require( bytes32( 0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7 ) == Proxiable(newAddress).proxiableUUID(), "Not compatible" ); assembly { // solium-disable-line sstore( 0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7, newAddress ) } } function proxiableUUID() public pure returns (bytes32) { return 0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7; } } // File: contracts/grapefruitUSD.sol pragma solidity ^0.6.0; interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whBTCer the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whBTCer the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this mBTCod brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/BTCereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whBTCer the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() internal {} function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/BTCereum/solidity/issues/2691 return msg.data; } } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract LibraryLock is grapefruitUSDStorage { // Ensures no one can manipulate the Logic Contract once it is deployed. // PARITY WALLET HACK PREVENTION modifier delegatedOnly() { require( initialized == true, "The library is locked. No direct 'call' is allowed." ); _; } function initialize() internal { initialized = true; } } contract grapefruitUSD is grapefruitUSDStorage, Context, IERC20, Proxiable, LibraryLock { using SafeMath for uint256; event fTokenBlacklist(address indexed account, bool blocked); event ChangeMultiplier(uint256 multiplier); event AdminChanged(address admin); event CodeUpdated(address indexed newCode); function initialize(uint256 _totalsupply) public { require(!initialized, "The library has already been initialized."); LibraryLock.initialize(); admin = msg.sender; multiplier = 1 * deci; _totalSupply = _totalsupply; _balances[msg.sender] = _totalSupply; } /// @dev Update the logic contract code function updateCode(address newCode) external onlyAdmin delegatedOnly { updateCodeAddress(newCode); emit CodeUpdated(newCode); } function setMultiplier(uint256 _multiplier) external onlyAdmin() ispaused() { require( _multiplier > multiplier, "the multiplier should be greater than previous multiplier" ); multiplier = _multiplier; emit ChangeMultiplier(multiplier); } function totalSupply() public override view returns (uint256) { return _totalSupply.mul(multiplier).div(deci); } function setTotalSupply(uint256 inputTotalsupply) external onlyAdmin() { require( inputTotalsupply > totalSupply(), "the input total supply is not greater than present total supply" ); multiplier = (inputTotalsupply.mul(deci)).div(_totalSupply); emit ChangeMultiplier(multiplier); } function balanceOf(address account) public override view returns (uint256) { uint256 externalAmt; externalAmt = _balances[account].mul(multiplier).div(deci); return externalAmt; } function transfer(address recipient, uint256 amount) public virtual override Notblacklist(msg.sender) Notblacklist(recipient) ispaused() returns (bool) { uint256 internalAmt; uint256 externalAmt = amount; internalAmt = (amount.mul(deci)).div(multiplier); _transfer(msg.sender, recipient, externalAmt); return true; } function allowance(address owner, address spender) public virtual override view returns (uint256) { uint256 internalAmt; uint256 maxapproval = 115792089237316195423570985008687907853269984665640564039457584007913129639935; maxapproval = maxapproval.div(multiplier).mul(deci); if(_allowances[owner][spender] > maxapproval){ internalAmt = 115792089237316195423570985008687907853269984665640564039457584007913129639935; }else{ internalAmt = (_allowances[owner][spender]).mul(multiplier).div(deci); } return internalAmt; } function approve(address spender, uint256 amount) public virtual override Notblacklist(spender) Notblacklist(msg.sender) ispaused() returns (bool) { uint256 internalAmt; uint256 externalAmt = amount; _approve(msg.sender, spender, externalAmt); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public Notblacklist(spender) Notblacklist(msg.sender) ispaused() returns (bool) { uint256 externalAmt = allowance(_msgSender(),spender) ; _approve(_msgSender(), spender, externalAmt.add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public Notblacklist(spender) Notblacklist(msg.sender) ispaused() returns (bool) { uint256 externalAmt = allowance(_msgSender(),spender) ; _approve(_msgSender(), spender, externalAmt.sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override Notblacklist(sender) Notblacklist(msg.sender) Notblacklist(recipient) ispaused() returns (bool) { uint256 externalAmt = allowance(sender,_msgSender()); _transfer(sender, recipient, amount); _approve( sender, _msgSender(), externalAmt.sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function _transfer( address sender, address recipient, uint256 externalAmt ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 internalAmt = externalAmt.mul(deci).div(multiplier); _balances[sender] = _balances[sender].sub( internalAmt, "ERC20: transfer internalAmt exceeds balance" ); _balances[recipient] = _balances[recipient].add(internalAmt); emit Transfer(sender, recipient, externalAmt); } function mint(address mintTo, uint256 amount) public virtual onlyAdmin() ispaused() returns (bool) { uint256 externalAmt = amount; uint256 internalAmt = externalAmt.mul(deci).div(multiplier); _mint(mintTo, internalAmt, externalAmt); return true; } function _mint( address account, uint256 internalAmt, uint256 externalAmt ) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(internalAmt); _balances[account] = _balances[account].add(internalAmt); emit Transfer(address(0), account, externalAmt); } function burn(address burnFrom, uint256 amount) public virtual onlyAdmin() ispaused() returns (bool) { uint256 internalAmt; uint256 externalAmt = amount; internalAmt = externalAmt.mul(deci).div(multiplier); _burn(burnFrom, internalAmt, externalAmt); return true; } function _burn( address account, uint256 internalAmt, uint256 externalAmt ) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub( internalAmt, "ERC20: burn internaAmt exceeds balance" ); _totalSupply = _totalSupply.sub(internalAmt); emit Transfer(account, address(0), externalAmt); } function _approve( address owner, address spender, uint256 externalAmt ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); uint256 internalAmt; uint256 maxapproval = 115792089237316195423570985008687907853269984665640564039457584007913129639935; maxapproval = maxapproval.div(multiplier).mul(deci); if(externalAmt > maxapproval){ internalAmt = 115792089237316195423570985008687907853269984665640564039457584007913129639935; }else{ internalAmt = externalAmt.mul(deci).div(multiplier); } _allowances[owner][spender] = internalAmt; emit Approval(owner, spender,externalAmt); } function TransferOwnerShip(address account) public onlyAdmin() { require(account != address(0), "account cannot be zero address"); require(msg.sender == admin, "you are not the admin"); admin = account; emit AdminChanged(admin); } function pause() external onlyAdmin() { getpause = true; } function unpause() external onlyAdmin() { getpause = false; } // pause unpause modifier ispaused() { require(getpause == false, "the contract is paused"); _; } modifier onlyAdmin() { require(msg.sender == admin, "you are not the admin"); _; } function AddToBlacklist(address account) external onlyAdmin() { blacklist[account] = true; emit fTokenBlacklist(account, true); } function RemoveFromBlacklist(address account) external onlyAdmin() { blacklist[account] = false; emit fTokenBlacklist(account, false); } modifier Notblacklist(address account) { require(!blacklist[account], "account is blacklisted"); _; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"ChangeMultiplier","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newCode","type":"address"}],"name":"CodeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"blocked","type":"bool"}],"name":"fTokenBlacklist","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"RemoveFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"TransferOwnerShip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"burnFrom","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalsupply","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"mintTo","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"multiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"setMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"inputTotalsupply","type":"uint256"}],"name":"setTotalSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCode","type":"address"}],"name":"updateCode","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50613a01806100206000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063641579a6116100f9578063a9059cbb11610097578063f7ea7a3d11610071578063f7ea7a3d1461084d578063f851a4401461087b578063f9f92be4146108af578063fe4b84df14610909576101a9565b8063a9059cbb1461072d578063b1eb346814610791578063dd62ed3e146107d5576101a9565b80638456cb59116100d35780638456cb59146105d857806395d89b41146105e25780639dc29fac14610665578063a457c2d7146106c9576101a9565b8063641579a61461050e5780636b713f4f1461053c57806370a0823114610580576101a9565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a1461043e57806340c10f191461044857806346951954146104ac57806352d1902d146104f0576101a9565b8063313ce5671461037557806339509351146103965780633afada39146103fa576101a9565b806306fdde03146101ae578063095ea7b314610231578063158ef93e1461029557806318160ddd146102b55780631b3ed722146102d357806323b872dd146102f1575b600080fd5b6101b6610937565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610970565b60405180821515815260200191505060405180910390f35b61029d610b9c565b60405180821515815260200191505060405180910390f35b6102bd610bad565b6040518082815260200191505060405180910390f35b6102db610be5565b6040518082815260200191505060405180910390f35b61035d6004803603606081101561030757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610beb565b60405180821515815260200191505060405180910390f35b61037d610f26565b604051808260ff16815260200191505060405180910390f35b6103e2600480360360408110156103ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f2b565b60405180821515815260200191505060405180910390f35b61043c6004803603602081101561041057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117e565b005b6104466112ed565b005b6104946004803603604081101561045e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113cd565b60405180821515815260200191505060405180910390f35b6104ee600480360360208110156104c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061156a565b005b6104f86116e6565b6040518082815260200191505060405180910390f35b61053a6004803603602081101561052457600080fd5b8101908080359060200190929190505050611711565b005b61057e6004803603602081101561055257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118fa565b005b6105c26004803603602081101561059657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a69565b6040518082815260200191505060405180910390f35b6105e0611ae5565b005b6105ea611bc5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561062a57808201518184015260208101905061060f565b50505050905090810190601f1680156106575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106b16004803603604081101561067b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bfe565b60405180821515815260200191505060405180910390f35b610715600480360360408110156106df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d9a565b60405180821515815260200191505060405180910390f35b6107796004803603604081101561074357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612007565b60405180821515815260200191505060405180910390f35b6107d3600480360360208110156107a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612264565b005b610837600480360360408110156107eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612540565b6040518082815260200191505060405180910390f35b6108796004803603602081101561086357600080fd5b81019080803590602001909291905050506126fe565b005b610883612891565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108f1600480360360208110156108c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128b7565b60405180821515815260200191505060405180910390f35b6109356004803603602081101561091f57600080fd5b81019080803590602001909291905050506128d7565b005b6040518060400160405280600d81526020017f477261706566727569745553440000000000000000000000000000000000000081525081565b600082600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b33600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610af4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514610b7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b600080859050610b8e3388836129e6565b600194505050505092915050565b60008054906101000a900460ff1681565b6000610be0670de0b6b3a7640000610bd2600554600454612c9890919063ffffffff16565b612d1e90919063ffffffff16565b905090565b60055481565b600083600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610cae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b33600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b84600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514610eb9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b6000610ecc88610ec7612d68565b612540565b9050610ed9888888612d70565b610f1788610ee5612d68565b610f128960405180606001604052806028815260200161386a602891398661305e9092919063ffffffff16565b6129e6565b60019450505050509392505050565b601281565b600082600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b33600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514611138576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b600061114b611145612d68565b87612540565b9050611171611158612d68565b8761116c888561311e90919063ffffffff16565b6129e6565b6001935050505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f20fe26e62bba36b5afff8a39e3e59ba2b90f6f0b963037740d55af2d93dd3435600060405180821515815260200191505060405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6000600660146101000a81548160ff021916908315150217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611492576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff1615151461151b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b60008290506000611551600554611543670de0b6b3a764000085612c9890919063ffffffff16565b612d1e90919063ffffffff16565b905061155e8582846131a6565b60019250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461162d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6001151560008054906101000a900460ff16151514611697576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806139116033913960400191505060405180910390fd5b6116a081613364565b8073ffffffffffffffffffffffffffffffffffffffff167f34459cf4c63f38e9b4af4ff8f74035bad6157484e669ffde70188afdf9917c6860405160405180910390a250565b60007fc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf760001b905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff1615151461185d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b60055481116118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806138926039913960400191505060405180910390fd5b806005819055507fd1ac89bfc464ce49c894c4e2379f1ca2b062aff1a640e929764ac1157fa13f0f6005546040518082815260200191505060405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f20fe26e62bba36b5afff8a39e3e59ba2b90f6f0b963037740d55af2d93dd3435600160405180821515815260200191505060405180910390a250565b600080611ada670de0b6b3a7640000611acc600554600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9890919063ffffffff16565b612d1e90919063ffffffff16565b905080915050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ba8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6001600660146101000a81548160ff021916908315150217905550565b6040518060400160405280600d81526020017f477261706566727569745553440000000000000000000000000000000000000081525081565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514611d4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b600080839050611d81600554611d73670de0b6b3a764000084612c9890919063ffffffff16565b612d1e90919063ffffffff16565b9150611d8e8583836134a2565b60019250505092915050565b600082600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b33600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514611fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b6000611fba611fb4612d68565b87612540565b9050611ffa611fc7612d68565b87611ff5886040518060600160405280602581526020016139a7602591398661305e9092919063ffffffff16565b6129e6565b6001935050505092915050565b600033600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b83600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561218b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514612214576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b60008085905061224960055461223b670de0b6b3a764000089612c9890919063ffffffff16565b612d1e90919063ffffffff16565b9150612256338883612d70565b600194505050505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612327576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6163636f756e742063616e6e6f74206265207a65726f2061646472657373000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461248d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60008060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050612597670de0b6b3a764000061258960055484612d1e90919063ffffffff16565b612c9890919063ffffffff16565b905080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612645577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506126f3565b6126f0670de0b6b3a76400006126e2600554600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9890919063ffffffff16565b612d1e90919063ffffffff16565b91505b819250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6127c9610bad565b8111612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180613968603f913960400191505060405180910390fd5b61284f600454612841670de0b6b3a764000084612c9890919063ffffffff16565b612d1e90919063ffffffff16565b6005819055507fd1ac89bfc464ce49c894c4e2379f1ca2b062aff1a640e929764ac1157fa13f0f6005546040518082815260200191505060405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900460ff161561293b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806138206029913960400191505060405180910390fd5b61294361365d565b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a764000060010260058190555080600481905550600454600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806139446024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612af2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137d86022913960400191505060405180910390fd5b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050612b47670de0b6b3a7640000612b3960055484612d1e90919063ffffffff16565b612c9890919063ffffffff16565b905080831115612b79577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612bab565b612ba8600554612b9a670de0b6b3a764000086612c9890919063ffffffff16565b612d1e90919063ffffffff16565b91505b81600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a35050505050565b600080831415612cab5760009050612d18565b6000828402905082848281612cbc57fe5b0414612d13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138496021913960400191505060405180910390fd5b809150505b92915050565b6000612d6083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613679565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612df6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806138ec6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061378a6023913960400191505060405180910390fd5b6000612ead600554612e9f670de0b6b3a764000085612c9890919063ffffffff16565b612d1e90919063ffffffff16565b9050612f1b816040518060600160405280602b81526020016137ad602b9139600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305e9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fb081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311e90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600083831115829061310b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130d05780820151818401526020810190506130b5565b50505050905090810190601f1680156130fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008082840190508381101561319c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61325e8260045461311e90919063ffffffff16565b6004819055506132b682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311e90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156133aa57600080fd5b505afa1580156133be573d6000803e3d6000fd5b505050506040513d60208110156133d457600080fd5b81019080805190602001909291905050507fc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf760001b1461347c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420636f6d70617469626c6500000000000000000000000000000000000081525060200191505060405180910390fd5b807fc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf75550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138cb6021913960400191505060405180910390fd5b613594826040518060600160405280602681526020016137fa60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305e9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135ec8260045461373f90919063ffffffff16565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60016000806101000a81548160ff021916908315150217905550565b60008083118290613725576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136ea5780820151818401526020810190506136cf565b50505050905090810190601f1680156137175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161373157fe5b049050809150509392505050565b600061378183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061305e565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a207472616e7366657220696e7465726e616c416d7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e20696e7465726e61416d7420657863656564732062616c616e6365546865206c6962726172792068617320616c7265616479206265656e20696e697469616c697a65642e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365746865206d756c7469706c6965722073686f756c642062652067726561746572207468616e2070726576696f7573206d756c7469706c69657245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373546865206c696272617279206973206c6f636b65642e204e6f20646972656374202763616c6c2720697320616c6c6f7765642e45524332303a20617070726f76652066726f6d20746865207a65726f206164647265737374686520696e70757420746f74616c20737570706c79206973206e6f742067726561746572207468616e2070726573656e7420746f74616c20737570706c7945524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220be54e8f167306817c0297a6cb704957012742531df0ebd63d0ee4a1978a63d2c64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c8063641579a6116100f9578063a9059cbb11610097578063f7ea7a3d11610071578063f7ea7a3d1461084d578063f851a4401461087b578063f9f92be4146108af578063fe4b84df14610909576101a9565b8063a9059cbb1461072d578063b1eb346814610791578063dd62ed3e146107d5576101a9565b80638456cb59116100d35780638456cb59146105d857806395d89b41146105e25780639dc29fac14610665578063a457c2d7146106c9576101a9565b8063641579a61461050e5780636b713f4f1461053c57806370a0823114610580576101a9565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a1461043e57806340c10f191461044857806346951954146104ac57806352d1902d146104f0576101a9565b8063313ce5671461037557806339509351146103965780633afada39146103fa576101a9565b806306fdde03146101ae578063095ea7b314610231578063158ef93e1461029557806318160ddd146102b55780631b3ed722146102d357806323b872dd146102f1575b600080fd5b6101b6610937565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610970565b60405180821515815260200191505060405180910390f35b61029d610b9c565b60405180821515815260200191505060405180910390f35b6102bd610bad565b6040518082815260200191505060405180910390f35b6102db610be5565b6040518082815260200191505060405180910390f35b61035d6004803603606081101561030757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610beb565b60405180821515815260200191505060405180910390f35b61037d610f26565b604051808260ff16815260200191505060405180910390f35b6103e2600480360360408110156103ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f2b565b60405180821515815260200191505060405180910390f35b61043c6004803603602081101561041057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117e565b005b6104466112ed565b005b6104946004803603604081101561045e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113cd565b60405180821515815260200191505060405180910390f35b6104ee600480360360208110156104c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061156a565b005b6104f86116e6565b6040518082815260200191505060405180910390f35b61053a6004803603602081101561052457600080fd5b8101908080359060200190929190505050611711565b005b61057e6004803603602081101561055257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118fa565b005b6105c26004803603602081101561059657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a69565b6040518082815260200191505060405180910390f35b6105e0611ae5565b005b6105ea611bc5565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561062a57808201518184015260208101905061060f565b50505050905090810190601f1680156106575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106b16004803603604081101561067b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bfe565b60405180821515815260200191505060405180910390f35b610715600480360360408110156106df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d9a565b60405180821515815260200191505060405180910390f35b6107796004803603604081101561074357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612007565b60405180821515815260200191505060405180910390f35b6107d3600480360360208110156107a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612264565b005b610837600480360360408110156107eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612540565b6040518082815260200191505060405180910390f35b6108796004803603602081101561086357600080fd5b81019080803590602001909291905050506126fe565b005b610883612891565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108f1600480360360208110156108c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128b7565b60405180821515815260200191505060405180910390f35b6109356004803603602081101561091f57600080fd5b81019080803590602001909291905050506128d7565b005b6040518060400160405280600d81526020017f477261706566727569745553440000000000000000000000000000000000000081525081565b600082600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610a33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b33600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610af4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514610b7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b600080859050610b8e3388836129e6565b600194505050505092915050565b60008054906101000a900460ff1681565b6000610be0670de0b6b3a7640000610bd2600554600454612c9890919063ffffffff16565b612d1e90919063ffffffff16565b905090565b60055481565b600083600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610cae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b33600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b84600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514610eb9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b6000610ecc88610ec7612d68565b612540565b9050610ed9888888612d70565b610f1788610ee5612d68565b610f128960405180606001604052806028815260200161386a602891398661305e9092919063ffffffff16565b6129e6565b60019450505050509392505050565b601281565b600082600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610fee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b33600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514611138576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b600061114b611145612d68565b87612540565b9050611171611158612d68565b8761116c888561311e90919063ffffffff16565b6129e6565b6001935050505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f20fe26e62bba36b5afff8a39e3e59ba2b90f6f0b963037740d55af2d93dd3435600060405180821515815260200191505060405180910390a250565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6000600660146101000a81548160ff021916908315150217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611492576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff1615151461151b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b60008290506000611551600554611543670de0b6b3a764000085612c9890919063ffffffff16565b612d1e90919063ffffffff16565b905061155e8582846131a6565b60019250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461162d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6001151560008054906101000a900460ff16151514611697576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806139116033913960400191505060405180910390fd5b6116a081613364565b8073ffffffffffffffffffffffffffffffffffffffff167f34459cf4c63f38e9b4af4ff8f74035bad6157484e669ffde70188afdf9917c6860405160405180910390a250565b60007fc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf760001b905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff1615151461185d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b60055481116118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806138926039913960400191505060405180910390fd5b806005819055507fd1ac89bfc464ce49c894c4e2379f1ca2b062aff1a640e929764ac1157fa13f0f6005546040518082815260200191505060405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f20fe26e62bba36b5afff8a39e3e59ba2b90f6f0b963037740d55af2d93dd3435600160405180821515815260200191505060405180910390a250565b600080611ada670de0b6b3a7640000611acc600554600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9890919063ffffffff16565b612d1e90919063ffffffff16565b905080915050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ba8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6001600660146101000a81548160ff021916908315150217905550565b6040518060400160405280600d81526020017f477261706566727569745553440000000000000000000000000000000000000081525081565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514611d4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b600080839050611d81600554611d73670de0b6b3a764000084612c9890919063ffffffff16565b612d1e90919063ffffffff16565b9150611d8e8583836134a2565b60019250505092915050565b600082600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b33600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514611fa7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b6000611fba611fb4612d68565b87612540565b9050611ffa611fc7612d68565b87611ff5886040518060600160405280602581526020016139a7602591398661305e9092919063ffffffff16565b6129e6565b6001935050505092915050565b600033600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b83600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561218b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6163636f756e7420697320626c61636b6c69737465640000000000000000000081525060200191505060405180910390fd5b60001515600660149054906101000a900460ff16151514612214576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f74686520636f6e7472616374206973207061757365640000000000000000000081525060200191505060405180910390fd5b60008085905061224960055461223b670de0b6b3a764000089612c9890919063ffffffff16565b612d1e90919063ffffffff16565b9150612256338883612d70565b600194505050505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612327576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f6163636f756e742063616e6e6f74206265207a65726f2061646472657373000081525060200191505060405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461248d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60008060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050612597670de0b6b3a764000061258960055484612d1e90919063ffffffff16565b612c9890919063ffffffff16565b905080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612645577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506126f3565b6126f0670de0b6b3a76400006126e2600554600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9890919063ffffffff16565b612d1e90919063ffffffff16565b91505b819250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f796f7520617265206e6f74207468652061646d696e000000000000000000000081525060200191505060405180910390fd5b6127c9610bad565b8111612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180613968603f913960400191505060405180910390fd5b61284f600454612841670de0b6b3a764000084612c9890919063ffffffff16565b612d1e90919063ffffffff16565b6005819055507fd1ac89bfc464ce49c894c4e2379f1ca2b062aff1a640e929764ac1157fa13f0f6005546040518082815260200191505060405180910390a150565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900460ff161561293b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806138206029913960400191505060405180910390fd5b61294361365d565b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a764000060010260058190555080600481905550600454600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806139446024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612af2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806137d86022913960400191505060405180910390fd5b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050612b47670de0b6b3a7640000612b3960055484612d1e90919063ffffffff16565b612c9890919063ffffffff16565b905080831115612b79577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612bab565b612ba8600554612b9a670de0b6b3a764000086612c9890919063ffffffff16565b612d1e90919063ffffffff16565b91505b81600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a35050505050565b600080831415612cab5760009050612d18565b6000828402905082848281612cbc57fe5b0414612d13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138496021913960400191505060405180910390fd5b809150505b92915050565b6000612d6083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613679565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612df6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806138ec6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061378a6023913960400191505060405180910390fd5b6000612ead600554612e9f670de0b6b3a764000085612c9890919063ffffffff16565b612d1e90919063ffffffff16565b9050612f1b816040518060600160405280602b81526020016137ad602b9139600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305e9092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fb081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311e90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600083831115829061310b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156130d05780820151818401526020810190506130b5565b50505050905090810190601f1680156130fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008082840190508381101561319c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61325e8260045461311e90919063ffffffff16565b6004819055506132b682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311e90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b8073ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156133aa57600080fd5b505afa1580156133be573d6000803e3d6000fd5b505050506040513d60208110156133d457600080fd5b81019080805190602001909291905050507fc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf760001b1461347c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420636f6d70617469626c6500000000000000000000000000000000000081525060200191505060405180910390fd5b807fc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf75550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138cb6021913960400191505060405180910390fd5b613594826040518060600160405280602681526020016137fa60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305e9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135ec8260045461373f90919063ffffffff16565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60016000806101000a81548160ff021916908315150217905550565b60008083118290613725576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136ea5780820151818401526020810190506136cf565b50505050905090810190601f1680156137175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161373157fe5b049050809150509392505050565b600061378183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061305e565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a207472616e7366657220696e7465726e616c416d7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e20696e7465726e61416d7420657863656564732062616c616e6365546865206c6962726172792068617320616c7265616479206265656e20696e697469616c697a65642e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365746865206d756c7469706c6965722073686f756c642062652067726561746572207468616e2070726576696f7573206d756c7469706c69657245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373546865206c696272617279206973206c6f636b65642e204e6f20646972656374202763616c6c2720697320616c6c6f7765642e45524332303a20617070726f76652066726f6d20746865207a65726f206164647265737374686520696e70757420746f74616c20737570706c79206973206e6f742067726561746572207468616e2070726573656e7420746f74616c20737570706c7945524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220be54e8f167306817c0297a6cb704957012742531df0ebd63d0ee4a1978a63d2c64736f6c634300060c0033
Deployed Bytecode Sourcemap
10438:9988:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13486:367;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;355:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11654:126;;;:::i;:::-;;;;;;;;;;;;;;;;;;;713:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15530:652;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;745:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14270:350;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20132:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19641:75;;;:::i;:::-;;16841:338;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11147:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1626:160;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11309:337;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19972:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12145:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19561:72;;;:::i;:::-;;659:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17586:366;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15123:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12364:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19282:271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12808:670;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11788:349;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;787:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;519:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10777:316;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;607:45;;;;;;;;;;;;;;;;;;;:::o;13486:367::-;13690:4;13609:7;20358:9;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13640:10:::1;20358:9;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19799:5:::2;19787:17;;:8;;;;;;;;;;;:17;;;19779:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;13712:19:::3;13742::::0;13764:6:::3;13742:28;;13781:42;13790:10;13802:7;13811:11;13781:8;:42::i;:::-;13841:4;13834:11;;;;20414:1:::1;13486:367:::0;;;;;:::o;355:23::-;;;;;;;;;;;;:::o;11654:126::-;11707:7;11734:38;847:4;11734:28;11751:10;;11734:12;;:16;;:28;;;;:::i;:::-;:32;;:38;;;;:::i;:::-;11727:45;;11654:126;:::o;713:25::-;;;;:::o;15530:652::-;15823:4;15710:6;20358:9;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15740:10:::1;20358:9;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;15774:9:::2;20358;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;19799:5:::3;19787:17;;:8;;;;;;;;;;;:17;;;19779:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;15845:19:::4;15867:30;15877:6;15884:12;:10;:12::i;:::-;15867:9;:30::i;:::-;15845:52;;15908:36;15918:6;15926:9;15937:6;15908:9;:36::i;:::-;15955:197;15978:6;15999:12;:10;:12::i;:::-;16025:116;16059:6;16025:116;;;;;;;;;;;;;;;;;:11;:15;;:116;;;;;:::i;:::-;15955:8;:197::i;:::-;16170:4;16163:11;;;20414:1:::2;::::1;15530:652:::0;;;;;;:::o;745:35::-;778:2;745:35;:::o;14270:350::-;14447:4;14364:7;20358:9;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14395:10:::1;20358:9;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19799:5:::2;19787:17;;:8;;;;;;;;;;;:17;;;19779:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;14465:19:::3;14487:31;14497:12;:10;:12::i;:::-;14510:7;14487:9;:31::i;:::-;14465:53;;14530:60;14539:12;:10;:12::i;:::-;14553:7;14562:27;14578:10;14562:11;:15;;:27;;;;:::i;:::-;14530:8;:60::i;:::-;14608:4;14601:11;;;20414:1:::1;14270:350:::0;;;;;:::o;20132:159::-;19913:5;;;;;;;;;;;19899:19;;:10;:19;;;19891:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20231:5:::1;20210:9;:18;20220:7;20210:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20268:7;20252:31;;;20277:5;20252:31;;;;;;;;;;;;;;;;;;;;20132:159:::0;:::o;19641:75::-;19913:5;;;;;;;;;;;19899:19;;:10;:19;;;19891:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19703:5:::1;19692:8;;:16;;;;;;;;;;;;;;;;;;19641:75::o:0;16841:338::-;16979:4;19913:5;;;;;;;;;;;19899:19;;:10;:19;;;19891:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19799:5:::1;19787:17;;:8;;;;;;;;;;;:17;;;19779:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17001:19:::2;17023:6;17001:28;;17040:19;17062:37;17088:10;;17062:21;847:4;17062:11;:15;;:21;;;;:::i;:::-;:25;;:37;;;;:::i;:::-;17040:59;;17110:39;17116:6;17124:11;17137;17110:5;:39::i;:::-;17167:4;17160:11;;;;16841:338:::0;;;;:::o;11147:154::-;19913:5;;;;;;;;;;;19899:19;;:10;:19;;;19891:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10246:4:::1;10231:19;;:11;::::0;::::1;;;;;;;;:19;;;10208:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11229:26:::2;11247:7;11229:17;:26::i;:::-;11284:7;11272:20;;;;;;;;;;;;11147:154:::0;:::o;1626:160::-;1672:7;1712:66;1692:86;;;;1626:160;:::o;11309:337::-;19913:5;;;;;;;;;;;19899:19;;:10;:19;;;19891:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19799:5:::1;19787:17;;:8;;;;;;;;;;;:17;;;19779:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;11464:10:::2;;11450:11;:24;11428:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11583:11;11570:10;:24;;;;11610:28;11627:10;;11610:28;;;;;;;;;;;;;;;;;;11309:337:::0;:::o;19972:152::-;19913:5;;;;;;;;;;;19899:19;;:10;:19;;;19891:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20066:4:::1;20045:9;:18;20055:7;20045:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;20102:7;20086:30;;;20111:4;20086:30;;;;;;;;;;;;;;;;;;;;19972:152:::0;:::o;12145:211::-;12211:7;12231:19;12275:44;847:4;12275:34;12298:10;;12275:9;:18;12285:7;12275:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;:38;;:44;;;;:::i;:::-;12261:58;;12337:11;12330:18;;;12145:211;;;:::o;19561:72::-;19913:5;;;;;;;;;;;19899:19;;:10;:19;;;19891:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19621:4:::1;19610:8;;:15;;;;;;;;;;;;;;;;;;19561:72::o:0;659:47::-;;;;;;;;;;;;;;;;;;;:::o;17586:366::-;17726:4;19913:5;;;;;;;;;;;19899:19;;:10;:19;;;19891:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19799:5:::1;19787:17;;:8;;;;;;;;;;;:17;;;19779:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17748:19:::2;17778::::0;17800:6:::2;17778:28;;17831:37;17857:10;;17831:21;847:4;17831:11;:15;;:21;;;;:::i;:::-;:25;;:37;;;;:::i;:::-;17817:51;;17881:41;17887:8;17897:11;17910;17881:5;:41::i;:::-;17940:4;17933:11;;;;17586:366:::0;;;;:::o;15123:399::-;15304:4;15222:7;20358:9;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15253:10:::1;20358:9;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19799:5:::2;19787:17;;:8;;;;;;;;;;;:17;;;19779:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;15321:19:::3;15343:31;15353:12;:10;:12::i;:::-;15366:7;15343:9;:31::i;:::-;15321:53;;15386:106;15395:12;:10;:12::i;:::-;15409:7;15418:73;15434:15;15418:73;;;;;;;;;;;;;;;;;:11;:15;;:73;;;;;:::i;:::-;15386:8;:106::i;:::-;15510:4;15503:11;;;20414:1:::1;15123:399:::0;;;;;:::o;12364:436::-;12573:4;12490:10;20358:9;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12524:9:::1;20358;:18;20368:7;20358:18;;;;;;;;;;;;;;;;;;;;;;;;;20357:19;20349:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19799:5:::2;19787:17;;:8;;;;;;;;;;;:17;;;19779:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;12595:19:::3;12625::::0;12647:6:::3;12625:28;;12678:34;12701:10;;12679:16;847:4;12679:6;:10;;:16;;;;:::i;:::-;12678:22;;:34;;;;:::i;:::-;12664:48;;12725:45;12735:10;12747:9;12758:11;12725:9;:45::i;:::-;12788:4;12781:11;;;;20414:1:::1;12364:436:::0;;;;;:::o;19282:271::-;19913:5;;;;;;;;;;;19899:19;;:10;:19;;;19891:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19383:1:::1;19364:21;;:7;:21;;;;19356:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19453:5;;;;;;;;;;;19439:19;;:10;:19;;;19431:53;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19503:7;19495:5;;:15;;;;;;;;;;;;;;;;;;19526:19;19539:5;;;;;;;;;;;19526:19;;;;;;;;;;;;;;;;;;;;19282:271:::0;:::o;12808:670::-;12942:7;12967:19;12998;13020:78;12998:100;;13124:37;847:4;13124:27;13140:10;;13124:11;:15;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;13110:51;;13205:11;13175;:18;13187:5;13175:18;;;;;;;;;;;;;;;:27;13194:7;13175:27;;;;;;;;;;;;;;;;:41;13172:261;;;13245:78;13231:92;;13172:261;;;13366:55;847:4;13366:45;13400:10;;13367:11;:18;13379:5;13367:18;;;;;;;;;;;;;;;:27;13386:7;13367:27;;;;;;;;;;;;;;;;13366:33;;:45;;;;:::i;:::-;:49;;:55;;;;:::i;:::-;13352:69;;13172:261;13459:11;13452:18;;;;12808:670;;;;:::o;11788:349::-;19913:5;;;;;;;;;;;19899:19;;:10;:19;;;19891:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11911:13:::1;:11;:13::i;:::-;11892:16;:32;11870:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12039:46;12072:12;;12040:26;847:4;12040:16;:20;;:26;;;;:::i;:::-;12039:32;;:46;;;;:::i;:::-;12026:10;:59;;;;12101:28;12118:10;;12101:28;;;;;;;;;;;;;;;;;;11788:349:::0;:::o;787:20::-;;;;;;;;;;;;;:::o;519:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;10777:316::-;10846:11;;;;;;;;;;10845:12;10837:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10915:24;:22;:24::i;:::-;10958:10;10950:5;;:18;;;;;;;;;;;;;;;;;;847:4;10992:1;:8;10979:10;:21;;;;11026:12;11011;:27;;;;11073:12;;11049:9;:21;11059:10;11049:21;;;;;;;;;;;;;;;:36;;;;10777:316;:::o;18440:834::-;18598:1;18581:19;;:5;:19;;;;18573:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18679:1;18660:21;;:7;:21;;;;18652:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18732:19;18763;18785:78;18763:100;;18889:37;847:4;18889:27;18905:10;;18889:11;:15;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;18875:51;;18954:11;18940;:25;18937:226;;;18994:78;18980:92;;18937:226;;;19114:37;19140:10;;19114:21;847:4;19114:11;:15;;:21;;;;:::i;:::-;:25;;:37;;;;:::i;:::-;19100:51;;18937:226;19203:11;19173;:18;19185:5;19173:18;;;;;;;;;;;;;;;:27;19192:7;19173:27;;;;;;;;;;;;;;;:41;;;;19246:7;19230:36;;19239:5;19230:36;;;19254:11;19230:36;;;;;;;;;;;;;;;;;;18440:834;;;;;:::o;6790:471::-;6848:7;7098:1;7093;:6;7089:47;;;7123:1;7116:8;;;;7089:47;7148:9;7164:1;7160;:5;7148:17;;7193:1;7188;7184;:5;;;;;;:10;7176:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7252:1;7245:8;;;6790:471;;;;;:::o;7729:132::-;7787:7;7814:39;7818:1;7821;7814:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7807:46;;7729:132;;;;:::o;4833:98::-;4878:15;4913:10;4906:17;;4833:98;:::o;16190:643::-;16353:1;16335:20;;:6;:20;;;;16327:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16437:1;16416:23;;:9;:23;;;;16408:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16490:19;16512:37;16538:10;;16512:21;847:4;16512:11;:15;;:21;;;;:::i;:::-;:25;;:37;;;;:::i;:::-;16490:59;;16580:118;16616:11;16580:118;;;;;;;;;;;;;;;;;:9;:17;16590:6;16580:17;;;;;;;;;;;;;;;;:21;;:118;;;;;:::i;:::-;16560:9;:17;16570:6;16560:17;;;;;;;;;;;;;;;:138;;;;16732:37;16757:11;16732:9;:20;16742:9;16732:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;16709:9;:20;16719:9;16709:20;;;;;;;;;;;;;;;:60;;;;16802:9;16785:40;;16794:6;16785:40;;;16813:11;16785:40;;;;;;;;;;;;;;;;;;16190:643;;;;:::o;6313:226::-;6433:7;6466:1;6461;:6;;6469:12;6453:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6493:9;6509:1;6505;:5;6493:17;;6530:1;6523:8;;;6313:226;;;;;:::o;5426:181::-;5484:7;5504:9;5520:1;5516;:5;5504:17;;5545:1;5540;:6;;5532:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5598:1;5591:8;;;5426:181;;;;:::o;17187:391::-;17350:1;17331:21;;:7;:21;;;;17323:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17416:29;17433:11;17416:12;;:16;;:29;;;;:::i;:::-;17401:12;:44;;;;17477:35;17500:11;17477:9;:18;17487:7;17477:18;;;;;;;;;;;;;;;;:22;;:35;;;;:::i;:::-;17456:9;:18;17466:7;17456:18;;;;;;;;;;;;;;;:56;;;;17549:7;17528:42;;17545:1;17528:42;;;17558:11;17528:42;;;;;;;;;;;;;;;;;;17187:391;;;:::o;1115:503::-;1325:10;1315:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1230:66;1204:107;;:148;1182:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1575:10;1490:66;1465:135;1414:197;:::o;17960:472::-;18123:1;18104:21;;:7;:21;;;;18096:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18197:114;18234:11;18197:114;;;;;;;;;;;;;;;;;:9;:18;18207:7;18197:18;;;;;;;;;;;;;;;;:22;;:114;;;;;:::i;:::-;18176:9;:18;18186:7;18176:18;;;;;;;;;;;;;;;:135;;;;18337:29;18354:11;18337:12;;:16;;:29;;;;:::i;:::-;18322:12;:44;;;;18408:1;18382:42;;18391:7;18382:42;;;18412:11;18382:42;;;;;;;;;;;;;;;;;;17960:472;;;:::o;10360:70::-;10417:4;10403:11;;:18;;;;;;;;;;;;;;;;;;10360:70::o;8349:379::-;8469:7;8568:1;8564;:5;8571:12;8556:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8595:9;8611:1;8607;:5;;;;;;8595:17;;8719:1;8712:8;;;8349:379;;;;;:::o;5882:136::-;5940:7;5967:43;5971:1;5974;5967:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5960:50;;5882:136;;;;:::o
Swarm Source
ipfs://be54e8f167306817c0297a6cb704957012742531df0ebd63d0ee4a1978a63d2c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.