ERC-20
Overview
Max Total Supply
14,137,100.000000000000001 CASHNIP
Holders
164
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0 CASHNIPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CashNip
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-08 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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 whether 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 whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method 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/ethereum/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 whether 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); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); 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 virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + 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 virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface INudieStaker { function claimStakedRewards(address owner) external returns(uint256); } contract CashNip is ERC20, Ownable { using SafeMath for uint256; INudieStaker public NudieStaker; uint256 private _totalSupply; uint256 supplyLimit = 5000000000 *10**18; bool pauseRewards = true; mapping(address => bool) public allowedAddresses; address private NudieBurner; constructor() ERC20("CashNip", "CASHNIP") { } function setNudiesBurnerAddress(address _NudieBurnerAddress) external onlyOwner { NudieBurner = _NudieBurnerAddress; } function burn(address user, uint256 amount) external { require(allowedAddresses[msg.sender] || msg.sender == address(NudieBurner), "Address does not have permission to burn"); _burn(user, amount); } function claimReward() external { require(!pauseRewards, "Claiming reward has been paused"); uint256 amount = NudieStaker.claimStakedRewards(msg.sender)*10**18; require((_totalSupply + amount) <= supplyLimit, "Max supply reached"); _totalSupply = _totalSupply.add(amount); _mint(msg.sender, amount); } function setNudieStaker(address Nudiestaker) external onlyOwner { NudieStaker = INudieStaker(Nudiestaker); } function setAllowedAddresses(address _address, bool _access) public onlyOwner { allowedAddresses[_address] = _access; } function pauseReward() public onlyOwner{ pauseRewards = !pauseRewards; } function giftTokens(address reciever, uint256 giftAmount) public onlyOwner{ _mint(reciever, giftAmount); } function tokenGiftList(address[] calldata giftAddresses, uint256[] calldata giftAmount) external onlyOwner { for(uint256 i; i < giftAddresses.length; i++){ giftTokens(giftAddresses[i], giftAmount[i]); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"inputs":[],"name":"NudieStaker","outputs":[{"internalType":"contract INudieStaker","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":"","type":"address"}],"name":"allowedAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"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":"reciever","type":"address"},{"internalType":"uint256","name":"giftAmount","type":"uint256"}],"name":"giftTokens","outputs":[],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_access","type":"bool"}],"name":"setAllowedAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Nudiestaker","type":"address"}],"name":"setNudieStaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_NudieBurnerAddress","type":"address"}],"name":"setNudiesBurnerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"giftAddresses","type":"address[]"},{"internalType":"uint256[]","name":"giftAmount","type":"uint256[]"}],"name":"tokenGiftList","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526b1027e72f1f128130880000006008556001600960006101000a81548160ff0219169083151502179055503480156200003c57600080fd5b506040518060400160405280600781526020017f436173684e6970000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f434153484e4950000000000000000000000000000000000000000000000000008152508160039081620000ba91906200043d565b508060049081620000cc91906200043d565b505050620000ef620000e3620000f560201b60201c565b620000fd60201b60201c565b62000524565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200024557607f821691505b6020821081036200025b576200025a620001fd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000286565b620002d1868362000286565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200031e620003186200031284620002e9565b620002f3565b620002e9565b9050919050565b6000819050919050565b6200033a83620002fd565b62000352620003498262000325565b84845462000293565b825550505050565b600090565b620003696200035a565b620003768184846200032f565b505050565b5b818110156200039e57620003926000826200035f565b6001810190506200037c565b5050565b601f821115620003ed57620003b78162000261565b620003c28462000276565b81016020851015620003d2578190505b620003ea620003e18562000276565b8301826200037b565b50505b505050565b600082821c905092915050565b60006200041260001984600802620003f2565b1980831691505092915050565b60006200042d8383620003ff565b9150826002028217905092915050565b6200044882620001c3565b67ffffffffffffffff811115620004645762000463620001ce565b5b6200047082546200022c565b6200047d828285620003a2565b600060209050601f831160018114620004b55760008415620004a0578287015190505b620004ac85826200041f565b8655506200051c565b601f198416620004c58662000261565b60005b82811015620004ef57848901518255600182019150602085019450602081019050620004c8565b868310156200050f57848901516200050b601f891682620003ff565b8355505b6001600288020188555050505b505050505050565b612a4180620005346000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806389781912116100c3578063a9059cbb1161007c578063a9059cbb146103c7578063b88a802f146103f7578063c4c50acf14610401578063dd62ed3e1461041d578063de524be81461044d578063f2fde38b1461045757610158565b806389781912146103055780638da5cb5b1461032157806395d89b411461033f5780639c0202cf1461035d5780639dc29fac1461037b578063a457c2d71461039757610158565b8063395093511161011557806339509351146102335780634120657a146102635780635728c56e1461029357806370a08231146102af578063715018a6146102df5780637f8cc50e146102e957610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c95780632d5151ed146101f9578063313ce56714610215575b600080fd5b610165610473565b6040516101729190611b46565b60405180910390f35b61019560048036038101906101909190611c06565b610505565b6040516101a29190611c61565b60405180910390f35b6101b3610523565b6040516101c09190611c8b565b60405180910390f35b6101e360048036038101906101de9190611ca6565b61052d565b6040516101f09190611c61565b60405180910390f35b610213600480360381019061020e9190611db4565b61064c565b005b61021d61073a565b60405161022a9190611e51565b60405180910390f35b61024d60048036038101906102489190611c06565b610743565b60405161025a9190611c61565b60405180910390f35b61027d60048036038101906102789190611e6c565b6107ef565b60405161028a9190611c61565b60405180910390f35b6102ad60048036038101906102a89190611e6c565b61080f565b005b6102c960048036038101906102c49190611e6c565b6108cf565b6040516102d69190611c8b565b60405180910390f35b6102e7610917565b005b61030360048036038101906102fe9190611e6c565b61099f565b005b61031f600480360381019061031a9190611ec5565b610a5f565b005b610329610b36565b6040516103369190611f14565b60405180910390f35b610347610b60565b6040516103549190611b46565b60405180910390f35b610365610bf2565b6040516103729190611f8e565b60405180910390f35b61039560048036038101906103909190611c06565b610c18565b005b6103b160048036038101906103ac9190611c06565b610d0a565b6040516103be9190611c61565b60405180910390f35b6103e160048036038101906103dc9190611c06565b610df5565b6040516103ee9190611c61565b60405180910390f35b6103ff610e13565b005b61041b60048036038101906104169190611c06565b610f92565b005b61043760048036038101906104329190611fa9565b61101c565b6040516104449190611c8b565b60405180910390f35b6104556110a3565b005b610471600480360381019061046c9190611e6c565b61114b565b005b60606003805461048290612018565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae90612018565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610519610512611242565b848461124a565b6001905092915050565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610579611242565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106355782811015610620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610617906120bb565b60405180910390fd5b6106348561062c611242565b85840361124a565b5b610640858585611413565b60019150509392505050565b610654611242565b73ffffffffffffffffffffffffffffffffffffffff16610672610b36565b73ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90612127565b60405180910390fd5b60005b84849050811015610733576107208585838181106106ec576106eb612147565b5b90506020020160208101906107019190611e6c565b84848481811061071457610713612147565b5b90506020020135610f92565b808061072b906121a5565b9150506106cb565b5050505050565b60006012905090565b60006107e5610750611242565b84846001600061075e611242565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107e091906121ed565b61124a565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b610817611242565b73ffffffffffffffffffffffffffffffffffffffff16610835610b36565b73ffffffffffffffffffffffffffffffffffffffff161461088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088290612127565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61091f611242565b73ffffffffffffffffffffffffffffffffffffffff1661093d610b36565b73ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90612127565b60405180910390fd5b61099d6000611692565b565b6109a7611242565b73ffffffffffffffffffffffffffffffffffffffff166109c5610b36565b73ffffffffffffffffffffffffffffffffffffffff1614610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290612127565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a67611242565b73ffffffffffffffffffffffffffffffffffffffff16610a85610b36565b73ffffffffffffffffffffffffffffffffffffffff1614610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad290612127565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b6f90612018565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9b90612018565b8015610be85780601f10610bbd57610100808354040283529160200191610be8565b820191906000526020600020905b815481529060010190602001808311610bcb57829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610cbd5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf3906122b5565b60405180910390fd5b610d068282611758565b5050565b60008060016000610d19611242565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90612347565b60405180910390fd5b610dea610de1611242565b8585840361124a565b600191505092915050565b6000610e09610e02611242565b8484611413565b6001905092915050565b600960009054906101000a900460ff1615610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a906123b3565b60405180910390fd5b6000670de0b6b3a7640000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633e9e1602336040518263ffffffff1660e01b8152600401610ec99190611f14565b6020604051808303816000875af1158015610ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0c91906123e8565b610f169190612415565b905060085481600754610f2991906121ed565b1115610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f61906124bb565b60405180910390fd5b610f7f8160075461192e90919063ffffffff16565b600781905550610f8f3382611944565b50565b610f9a611242565b73ffffffffffffffffffffffffffffffffffffffff16610fb8610b36565b73ffffffffffffffffffffffffffffffffffffffff161461100e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100590612127565b60405180910390fd5b6110188282611944565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110ab611242565b73ffffffffffffffffffffffffffffffffffffffff166110c9610b36565b73ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690612127565b60405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b611153611242565b73ffffffffffffffffffffffffffffffffffffffff16611171610b36565b73ffffffffffffffffffffffffffffffffffffffff16146111c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111be90612127565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122d9061254d565b60405180910390fd5b61123f81611692565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b0906125df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90612671565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114069190611c8b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147990612703565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e890612795565b60405180910390fd5b6114fc838383611aa3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157990612827565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461161591906121ed565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116799190611c8b565b60405180910390a361168c848484611aa8565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be906128b9565b60405180910390fd5b6117d382600083611aa3565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118509061294b565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546118b0919061296b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119159190611c8b565b60405180910390a361192983600084611aa8565b505050565b6000818361193c91906121ed565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa906129eb565b60405180910390fd5b6119bf60008383611aa3565b80600260008282546119d191906121ed565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a2691906121ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a8b9190611c8b565b60405180910390a3611a9f60008383611aa8565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ae7578082015181840152602081019050611acc565b83811115611af6576000848401525b50505050565b6000601f19601f8301169050919050565b6000611b1882611aad565b611b228185611ab8565b9350611b32818560208601611ac9565b611b3b81611afc565b840191505092915050565b60006020820190508181036000830152611b608184611b0d565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b9d82611b72565b9050919050565b611bad81611b92565b8114611bb857600080fd5b50565b600081359050611bca81611ba4565b92915050565b6000819050919050565b611be381611bd0565b8114611bee57600080fd5b50565b600081359050611c0081611bda565b92915050565b60008060408385031215611c1d57611c1c611b68565b5b6000611c2b85828601611bbb565b9250506020611c3c85828601611bf1565b9150509250929050565b60008115159050919050565b611c5b81611c46565b82525050565b6000602082019050611c766000830184611c52565b92915050565b611c8581611bd0565b82525050565b6000602082019050611ca06000830184611c7c565b92915050565b600080600060608486031215611cbf57611cbe611b68565b5b6000611ccd86828701611bbb565b9350506020611cde86828701611bbb565b9250506040611cef86828701611bf1565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112611d1e57611d1d611cf9565b5b8235905067ffffffffffffffff811115611d3b57611d3a611cfe565b5b602083019150836020820283011115611d5757611d56611d03565b5b9250929050565b60008083601f840112611d7457611d73611cf9565b5b8235905067ffffffffffffffff811115611d9157611d90611cfe565b5b602083019150836020820283011115611dad57611dac611d03565b5b9250929050565b60008060008060408587031215611dce57611dcd611b68565b5b600085013567ffffffffffffffff811115611dec57611deb611b6d565b5b611df887828801611d08565b9450945050602085013567ffffffffffffffff811115611e1b57611e1a611b6d565b5b611e2787828801611d5e565b925092505092959194509250565b600060ff82169050919050565b611e4b81611e35565b82525050565b6000602082019050611e666000830184611e42565b92915050565b600060208284031215611e8257611e81611b68565b5b6000611e9084828501611bbb565b91505092915050565b611ea281611c46565b8114611ead57600080fd5b50565b600081359050611ebf81611e99565b92915050565b60008060408385031215611edc57611edb611b68565b5b6000611eea85828601611bbb565b9250506020611efb85828601611eb0565b9150509250929050565b611f0e81611b92565b82525050565b6000602082019050611f296000830184611f05565b92915050565b6000819050919050565b6000611f54611f4f611f4a84611b72565b611f2f565b611b72565b9050919050565b6000611f6682611f39565b9050919050565b6000611f7882611f5b565b9050919050565b611f8881611f6d565b82525050565b6000602082019050611fa36000830184611f7f565b92915050565b60008060408385031215611fc057611fbf611b68565b5b6000611fce85828601611bbb565b9250506020611fdf85828601611bbb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061203057607f821691505b60208210810361204357612042611fe9565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006120a5602883611ab8565b91506120b082612049565b604082019050919050565b600060208201905081810360008301526120d481612098565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612111602083611ab8565b915061211c826120db565b602082019050919050565b6000602082019050818103600083015261214081612104565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121b082611bd0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121e2576121e1612176565b5b600182019050919050565b60006121f882611bd0565b915061220383611bd0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561223857612237612176565b5b828201905092915050565b7f4164647265737320646f6573206e6f742068617665207065726d697373696f6e60008201527f20746f206275726e000000000000000000000000000000000000000000000000602082015250565b600061229f602883611ab8565b91506122aa82612243565b604082019050919050565b600060208201905081810360008301526122ce81612292565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612331602583611ab8565b915061233c826122d5565b604082019050919050565b6000602082019050818103600083015261236081612324565b9050919050565b7f436c61696d696e672072657761726420686173206265656e2070617573656400600082015250565b600061239d601f83611ab8565b91506123a882612367565b602082019050919050565b600060208201905081810360008301526123cc81612390565b9050919050565b6000815190506123e281611bda565b92915050565b6000602082840312156123fe576123fd611b68565b5b600061240c848285016123d3565b91505092915050565b600061242082611bd0565b915061242b83611bd0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561246457612463612176565b5b828202905092915050565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b60006124a5601283611ab8565b91506124b08261246f565b602082019050919050565b600060208201905081810360008301526124d481612498565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612537602683611ab8565b9150612542826124db565b604082019050919050565b600060208201905081810360008301526125668161252a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125c9602483611ab8565b91506125d48261256d565b604082019050919050565b600060208201905081810360008301526125f8816125bc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061265b602283611ab8565b9150612666826125ff565b604082019050919050565b6000602082019050818103600083015261268a8161264e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006126ed602583611ab8565b91506126f882612691565b604082019050919050565b6000602082019050818103600083015261271c816126e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061277f602383611ab8565b915061278a82612723565b604082019050919050565b600060208201905081810360008301526127ae81612772565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612811602683611ab8565b915061281c826127b5565b604082019050919050565b6000602082019050818103600083015261284081612804565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006128a3602183611ab8565b91506128ae82612847565b604082019050919050565b600060208201905081810360008301526128d281612896565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612935602283611ab8565b9150612940826128d9565b604082019050919050565b6000602082019050818103600083015261296481612928565b9050919050565b600061297682611bd0565b915061298183611bd0565b92508282101561299457612993612176565b5b828203905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006129d5601f83611ab8565b91506129e08261299f565b602082019050919050565b60006020820190508181036000830152612a04816129c8565b905091905056fea2646970667358221220c1bc83e0143ed1f7ad4089a7826320395c9215b04a7ff73933710b294511e16b64736f6c634300080f0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c806389781912116100c3578063a9059cbb1161007c578063a9059cbb146103c7578063b88a802f146103f7578063c4c50acf14610401578063dd62ed3e1461041d578063de524be81461044d578063f2fde38b1461045757610158565b806389781912146103055780638da5cb5b1461032157806395d89b411461033f5780639c0202cf1461035d5780639dc29fac1461037b578063a457c2d71461039757610158565b8063395093511161011557806339509351146102335780634120657a146102635780635728c56e1461029357806370a08231146102af578063715018a6146102df5780637f8cc50e146102e957610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c95780632d5151ed146101f9578063313ce56714610215575b600080fd5b610165610473565b6040516101729190611b46565b60405180910390f35b61019560048036038101906101909190611c06565b610505565b6040516101a29190611c61565b60405180910390f35b6101b3610523565b6040516101c09190611c8b565b60405180910390f35b6101e360048036038101906101de9190611ca6565b61052d565b6040516101f09190611c61565b60405180910390f35b610213600480360381019061020e9190611db4565b61064c565b005b61021d61073a565b60405161022a9190611e51565b60405180910390f35b61024d60048036038101906102489190611c06565b610743565b60405161025a9190611c61565b60405180910390f35b61027d60048036038101906102789190611e6c565b6107ef565b60405161028a9190611c61565b60405180910390f35b6102ad60048036038101906102a89190611e6c565b61080f565b005b6102c960048036038101906102c49190611e6c565b6108cf565b6040516102d69190611c8b565b60405180910390f35b6102e7610917565b005b61030360048036038101906102fe9190611e6c565b61099f565b005b61031f600480360381019061031a9190611ec5565b610a5f565b005b610329610b36565b6040516103369190611f14565b60405180910390f35b610347610b60565b6040516103549190611b46565b60405180910390f35b610365610bf2565b6040516103729190611f8e565b60405180910390f35b61039560048036038101906103909190611c06565b610c18565b005b6103b160048036038101906103ac9190611c06565b610d0a565b6040516103be9190611c61565b60405180910390f35b6103e160048036038101906103dc9190611c06565b610df5565b6040516103ee9190611c61565b60405180910390f35b6103ff610e13565b005b61041b60048036038101906104169190611c06565b610f92565b005b61043760048036038101906104329190611fa9565b61101c565b6040516104449190611c8b565b60405180910390f35b6104556110a3565b005b610471600480360381019061046c9190611e6c565b61114b565b005b60606003805461048290612018565b80601f01602080910402602001604051908101604052809291908181526020018280546104ae90612018565b80156104fb5780601f106104d0576101008083540402835291602001916104fb565b820191906000526020600020905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b6000610519610512611242565b848461124a565b6001905092915050565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610579611242565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106355782811015610620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610617906120bb565b60405180910390fd5b6106348561062c611242565b85840361124a565b5b610640858585611413565b60019150509392505050565b610654611242565b73ffffffffffffffffffffffffffffffffffffffff16610672610b36565b73ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90612127565b60405180910390fd5b60005b84849050811015610733576107208585838181106106ec576106eb612147565b5b90506020020160208101906107019190611e6c565b84848481811061071457610713612147565b5b90506020020135610f92565b808061072b906121a5565b9150506106cb565b5050505050565b60006012905090565b60006107e5610750611242565b84846001600061075e611242565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107e091906121ed565b61124a565b6001905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b610817611242565b73ffffffffffffffffffffffffffffffffffffffff16610835610b36565b73ffffffffffffffffffffffffffffffffffffffff161461088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088290612127565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61091f611242565b73ffffffffffffffffffffffffffffffffffffffff1661093d610b36565b73ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90612127565b60405180910390fd5b61099d6000611692565b565b6109a7611242565b73ffffffffffffffffffffffffffffffffffffffff166109c5610b36565b73ffffffffffffffffffffffffffffffffffffffff1614610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290612127565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a67611242565b73ffffffffffffffffffffffffffffffffffffffff16610a85610b36565b73ffffffffffffffffffffffffffffffffffffffff1614610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad290612127565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b6f90612018565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9b90612018565b8015610be85780601f10610bbd57610100808354040283529160200191610be8565b820191906000526020600020905b815481529060010190602001808311610bcb57829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610cbd5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf3906122b5565b60405180910390fd5b610d068282611758565b5050565b60008060016000610d19611242565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90612347565b60405180910390fd5b610dea610de1611242565b8585840361124a565b600191505092915050565b6000610e09610e02611242565b8484611413565b6001905092915050565b600960009054906101000a900460ff1615610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a906123b3565b60405180910390fd5b6000670de0b6b3a7640000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633e9e1602336040518263ffffffff1660e01b8152600401610ec99190611f14565b6020604051808303816000875af1158015610ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0c91906123e8565b610f169190612415565b905060085481600754610f2991906121ed565b1115610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f61906124bb565b60405180910390fd5b610f7f8160075461192e90919063ffffffff16565b600781905550610f8f3382611944565b50565b610f9a611242565b73ffffffffffffffffffffffffffffffffffffffff16610fb8610b36565b73ffffffffffffffffffffffffffffffffffffffff161461100e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100590612127565b60405180910390fd5b6110188282611944565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110ab611242565b73ffffffffffffffffffffffffffffffffffffffff166110c9610b36565b73ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690612127565b60405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b611153611242565b73ffffffffffffffffffffffffffffffffffffffff16611171610b36565b73ffffffffffffffffffffffffffffffffffffffff16146111c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111be90612127565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122d9061254d565b60405180910390fd5b61123f81611692565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b0906125df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90612671565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114069190611c8b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147990612703565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e890612795565b60405180910390fd5b6114fc838383611aa3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157990612827565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461161591906121ed565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116799190611c8b565b60405180910390a361168c848484611aa8565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be906128b9565b60405180910390fd5b6117d382600083611aa3565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611859576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118509061294b565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546118b0919061296b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119159190611c8b565b60405180910390a361192983600084611aa8565b505050565b6000818361193c91906121ed565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa906129eb565b60405180910390fd5b6119bf60008383611aa3565b80600260008282546119d191906121ed565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a2691906121ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a8b9190611c8b565b60405180910390a3611a9f60008383611aa8565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ae7578082015181840152602081019050611acc565b83811115611af6576000848401525b50505050565b6000601f19601f8301169050919050565b6000611b1882611aad565b611b228185611ab8565b9350611b32818560208601611ac9565b611b3b81611afc565b840191505092915050565b60006020820190508181036000830152611b608184611b0d565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b9d82611b72565b9050919050565b611bad81611b92565b8114611bb857600080fd5b50565b600081359050611bca81611ba4565b92915050565b6000819050919050565b611be381611bd0565b8114611bee57600080fd5b50565b600081359050611c0081611bda565b92915050565b60008060408385031215611c1d57611c1c611b68565b5b6000611c2b85828601611bbb565b9250506020611c3c85828601611bf1565b9150509250929050565b60008115159050919050565b611c5b81611c46565b82525050565b6000602082019050611c766000830184611c52565b92915050565b611c8581611bd0565b82525050565b6000602082019050611ca06000830184611c7c565b92915050565b600080600060608486031215611cbf57611cbe611b68565b5b6000611ccd86828701611bbb565b9350506020611cde86828701611bbb565b9250506040611cef86828701611bf1565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112611d1e57611d1d611cf9565b5b8235905067ffffffffffffffff811115611d3b57611d3a611cfe565b5b602083019150836020820283011115611d5757611d56611d03565b5b9250929050565b60008083601f840112611d7457611d73611cf9565b5b8235905067ffffffffffffffff811115611d9157611d90611cfe565b5b602083019150836020820283011115611dad57611dac611d03565b5b9250929050565b60008060008060408587031215611dce57611dcd611b68565b5b600085013567ffffffffffffffff811115611dec57611deb611b6d565b5b611df887828801611d08565b9450945050602085013567ffffffffffffffff811115611e1b57611e1a611b6d565b5b611e2787828801611d5e565b925092505092959194509250565b600060ff82169050919050565b611e4b81611e35565b82525050565b6000602082019050611e666000830184611e42565b92915050565b600060208284031215611e8257611e81611b68565b5b6000611e9084828501611bbb565b91505092915050565b611ea281611c46565b8114611ead57600080fd5b50565b600081359050611ebf81611e99565b92915050565b60008060408385031215611edc57611edb611b68565b5b6000611eea85828601611bbb565b9250506020611efb85828601611eb0565b9150509250929050565b611f0e81611b92565b82525050565b6000602082019050611f296000830184611f05565b92915050565b6000819050919050565b6000611f54611f4f611f4a84611b72565b611f2f565b611b72565b9050919050565b6000611f6682611f39565b9050919050565b6000611f7882611f5b565b9050919050565b611f8881611f6d565b82525050565b6000602082019050611fa36000830184611f7f565b92915050565b60008060408385031215611fc057611fbf611b68565b5b6000611fce85828601611bbb565b9250506020611fdf85828601611bbb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061203057607f821691505b60208210810361204357612042611fe9565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006120a5602883611ab8565b91506120b082612049565b604082019050919050565b600060208201905081810360008301526120d481612098565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612111602083611ab8565b915061211c826120db565b602082019050919050565b6000602082019050818103600083015261214081612104565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121b082611bd0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121e2576121e1612176565b5b600182019050919050565b60006121f882611bd0565b915061220383611bd0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561223857612237612176565b5b828201905092915050565b7f4164647265737320646f6573206e6f742068617665207065726d697373696f6e60008201527f20746f206275726e000000000000000000000000000000000000000000000000602082015250565b600061229f602883611ab8565b91506122aa82612243565b604082019050919050565b600060208201905081810360008301526122ce81612292565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612331602583611ab8565b915061233c826122d5565b604082019050919050565b6000602082019050818103600083015261236081612324565b9050919050565b7f436c61696d696e672072657761726420686173206265656e2070617573656400600082015250565b600061239d601f83611ab8565b91506123a882612367565b602082019050919050565b600060208201905081810360008301526123cc81612390565b9050919050565b6000815190506123e281611bda565b92915050565b6000602082840312156123fe576123fd611b68565b5b600061240c848285016123d3565b91505092915050565b600061242082611bd0565b915061242b83611bd0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561246457612463612176565b5b828202905092915050565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b60006124a5601283611ab8565b91506124b08261246f565b602082019050919050565b600060208201905081810360008301526124d481612498565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612537602683611ab8565b9150612542826124db565b604082019050919050565b600060208201905081810360008301526125668161252a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125c9602483611ab8565b91506125d48261256d565b604082019050919050565b600060208201905081810360008301526125f8816125bc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061265b602283611ab8565b9150612666826125ff565b604082019050919050565b6000602082019050818103600083015261268a8161264e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006126ed602583611ab8565b91506126f882612691565b604082019050919050565b6000602082019050818103600083015261271c816126e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061277f602383611ab8565b915061278a82612723565b604082019050919050565b600060208201905081810360008301526127ae81612772565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612811602683611ab8565b915061281c826127b5565b604082019050919050565b6000602082019050818103600083015261284081612804565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006128a3602183611ab8565b91506128ae82612847565b604082019050919050565b600060208201905081810360008301526128d281612896565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612935602283611ab8565b9150612940826128d9565b604082019050919050565b6000602082019050818103600083015261296481612928565b9050919050565b600061297682611bd0565b915061298183611bd0565b92508282101561299457612993612176565b5b828203905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006129d5601f83611ab8565b91506129e08261299f565b602082019050919050565b60006020820190508181036000830152612a04816129c8565b905091905056fea2646970667358221220c1bc83e0143ed1f7ad4089a7826320395c9215b04a7ff73933710b294511e16b64736f6c634300080f0033
Deployed Bytecode Sourcemap
23014:1850:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12582:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14922:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13702:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15684:573;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24621:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13544:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16666:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23248:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23399:132;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13873:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10985:103;;;:::i;:::-;;24128:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24258:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10334:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12801:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23091:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23539:221;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17384:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14213:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23768:352;;;:::i;:::-;;24493:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14451:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24399:86;;;:::i;:::-;;11243:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12582:100;12636:13;12669:5;12662:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12582:100;:::o;14922:169::-;15005:4;15022:39;15031:12;:10;:12::i;:::-;15045:7;15054:6;15022:8;:39::i;:::-;15079:4;15072:11;;14922:169;;;;:::o;13702:108::-;13763:7;13790:12;;13783:19;;13702:108;:::o;15684:573::-;15824:4;15841:24;15868:11;:19;15880:6;15868:19;;;;;;;;;;;;;;;:33;15888:12;:10;:12::i;:::-;15868:33;;;;;;;;;;;;;;;;15841:60;;15936:17;15916:16;:37;15912:265;;15998:6;15978:16;:26;;15970:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16093:57;16102:6;16110:12;:10;:12::i;:::-;16143:6;16124:16;:25;16093:8;:57::i;:::-;15912:265;16189:36;16199:6;16207:9;16218:6;16189:9;:36::i;:::-;16245:4;16238:11;;;15684:573;;;;;:::o;24621:240::-;10565:12;:10;:12::i;:::-;10554:23;;:7;:5;:7::i;:::-;:23;;;10546:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24743:9:::1;24739:115;24758:13;;:20;;24754:1;:24;24739:115;;;24799:43;24810:13;;24824:1;24810:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24828:10;;24839:1;24828:13;;;;;;;:::i;:::-;;;;;;;;24799:10;:43::i;:::-;24780:3;;;;;:::i;:::-;;;;24739:115;;;;24621:240:::0;;;;:::o;13544:93::-;13602:5;13627:2;13620:9;;13544:93;:::o;16666:215::-;16754:4;16771:80;16780:12;:10;:12::i;:::-;16794:7;16840:10;16803:11;:25;16815:12;:10;:12::i;:::-;16803:25;;;;;;;;;;;;;;;:34;16829:7;16803:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;16771:8;:80::i;:::-;16869:4;16862:11;;16666:215;;;;:::o;23248:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;23399:132::-;10565:12;:10;:12::i;:::-;10554:23;;:7;:5;:7::i;:::-;:23;;;10546:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23504:19:::1;23490:11;;:33;;;;;;;;;;;;;;;;;;23399:132:::0;:::o;13873:127::-;13947:7;13974:9;:18;13984:7;13974:18;;;;;;;;;;;;;;;;13967:25;;13873:127;;;:::o;10985:103::-;10565:12;:10;:12::i;:::-;10554:23;;:7;:5;:7::i;:::-;:23;;;10546:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11050:30:::1;11077:1;11050:18;:30::i;:::-;10985:103::o:0;24128:122::-;10565:12;:10;:12::i;:::-;10554:23;;:7;:5;:7::i;:::-;:23;;;10546:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24230:11:::1;24203;;:39;;;;;;;;;;;;;;;;;;24128:122:::0;:::o;24258:133::-;10565:12;:10;:12::i;:::-;10554:23;;:7;:5;:7::i;:::-;:23;;;10546:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24376:7:::1;24347:16;:26;24364:8;24347:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24258:133:::0;;:::o;10334:87::-;10380:7;10407:6;;;;;;;;;;;10400:13;;10334:87;:::o;12801:104::-;12857:13;12890:7;12883:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12801:104;:::o;23091:31::-;;;;;;;;;;;;;:::o;23539:221::-;23611:16;:28;23628:10;23611:28;;;;;;;;;;;;;;;;;;;;;;;;;:66;;;;23665:11;;;;;;;;;;;23643:34;;:10;:34;;;23611:66;23603:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;23733:19;23739:4;23745:6;23733:5;:19::i;:::-;23539:221;;:::o;17384:413::-;17477:4;17494:24;17521:11;:25;17533:12;:10;:12::i;:::-;17521:25;;;;;;;;;;;;;;;:34;17547:7;17521:34;;;;;;;;;;;;;;;;17494:61;;17594:15;17574:16;:35;;17566:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17687:67;17696:12;:10;:12::i;:::-;17710:7;17738:15;17719:16;:34;17687:8;:67::i;:::-;17785:4;17778:11;;;17384:413;;;;:::o;14213:175::-;14299:4;14316:42;14326:12;:10;:12::i;:::-;14340:9;14351:6;14316:9;:42::i;:::-;14376:4;14369:11;;14213:175;;;;:::o;23768:352::-;23820:12;;;;;;;;;;;23819:13;23811:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;23880:14;23940:6;23897:11;;;;;;;;;;;:30;;;23928:10;23897:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:49;;;;:::i;:::-;23880:66;;23992:11;;23981:6;23966:12;;:21;;;;:::i;:::-;23965:38;;23957:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;24052:24;24069:6;24052:12;;:16;;:24;;;;:::i;:::-;24037:12;:39;;;;24087:25;24093:10;24105:6;24087:5;:25::i;:::-;23800:320;23768:352::o;24493:120::-;10565:12;:10;:12::i;:::-;10554:23;;:7;:5;:7::i;:::-;:23;;;10546:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24578:27:::1;24584:8;24594:10;24578:5;:27::i;:::-;24493:120:::0;;:::o;14451:151::-;14540:7;14567:11;:18;14579:5;14567:18;;;;;;;;;;;;;;;:27;14586:7;14567:27;;;;;;;;;;;;;;;;14560:34;;14451:151;;;;:::o;24399:86::-;10565:12;:10;:12::i;:::-;10554:23;;:7;:5;:7::i;:::-;:23;;;10546:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24465:12:::1;;;;;;;;;;;24464:13;24449:12;;:28;;;;;;;;;;;;;;;;;;24399:86::o:0;11243:201::-;10565:12;:10;:12::i;:::-;10554:23;;:7;:5;:7::i;:::-;:23;;;10546:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11352:1:::1;11332:22;;:8;:22;;::::0;11324:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11408:28;11427:8;11408:18;:28::i;:::-;11243:201:::0;:::o;6611:98::-;6664:7;6691:10;6684:17;;6611:98;:::o;21068:380::-;21221:1;21204:19;;:5;:19;;;21196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21302:1;21283:21;;:7;:21;;;21275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21386:6;21356:11;:18;21368:5;21356:18;;;;;;;;;;;;;;;:27;21375:7;21356:27;;;;;;;;;;;;;;;:36;;;;21424:7;21408:32;;21417:5;21408:32;;;21433:6;21408:32;;;;;;:::i;:::-;;;;;;;;21068:380;;;:::o;18287:733::-;18445:1;18427:20;;:6;:20;;;18419:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18529:1;18508:23;;:9;:23;;;18500:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18584:47;18605:6;18613:9;18624:6;18584:20;:47::i;:::-;18644:21;18668:9;:17;18678:6;18668:17;;;;;;;;;;;;;;;;18644:41;;18721:6;18704:13;:23;;18696:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18842:6;18826:13;:22;18806:9;:17;18816:6;18806:17;;;;;;;;;;;;;;;:42;;;;18894:6;18870:9;:20;18880:9;18870:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;18935:9;18918:35;;18927:6;18918:35;;;18946:6;18918:35;;;;;;:::i;:::-;;;;;;;;18966:46;18986:6;18994:9;19005:6;18966:19;:46::i;:::-;18408:612;18287:733;;;:::o;11604:191::-;11678:16;11697:6;;;;;;;;;;;11678:25;;11723:8;11714:6;;:17;;;;;;;;;;;;;;;;;;11778:8;11747:40;;11768:8;11747:40;;;;;;;;;;;;11667:128;11604:191;:::o;20039:591::-;20142:1;20123:21;;:7;:21;;;20115:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20195:49;20216:7;20233:1;20237:6;20195:20;:49::i;:::-;20257:22;20282:9;:18;20292:7;20282:18;;;;;;;;;;;;;;;;20257:43;;20337:6;20319:14;:24;;20311:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20456:6;20439:14;:23;20418:9;:18;20428:7;20418:18;;;;;;;;;;;;;;;:44;;;;20500:6;20484:12;;:22;;;;;;;:::i;:::-;;;;;;;;20550:1;20524:37;;20533:7;20524:37;;;20554:6;20524:37;;;;;;:::i;:::-;;;;;;;;20574:48;20594:7;20611:1;20615:6;20574:19;:48::i;:::-;20104:526;20039:591;;:::o;2411:98::-;2469:7;2500:1;2496;:5;;;;:::i;:::-;2489:12;;2411:98;;;;:::o;19307:399::-;19410:1;19391:21;;:7;:21;;;19383:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;19461:49;19490:1;19494:7;19503:6;19461:20;:49::i;:::-;19539:6;19523:12;;:22;;;;;;;:::i;:::-;;;;;;;;19578:6;19556:9;:18;19566:7;19556:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;19621:7;19600:37;;19617:1;19600:37;;;19630:6;19600:37;;;;;;:::i;:::-;;;;;;;;19650:48;19678:1;19682:7;19691:6;19650:19;:48::i;:::-;19307:399;;:::o;22048:125::-;;;;:::o;22777:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:117::-;4580:1;4577;4570:12;4594:117;4703:1;4700;4693:12;4717:117;4826:1;4823;4816:12;4857:568;4930:8;4940:6;4990:3;4983:4;4975:6;4971:17;4967:27;4957:122;;4998:79;;:::i;:::-;4957:122;5111:6;5098:20;5088:30;;5141:18;5133:6;5130:30;5127:117;;;5163:79;;:::i;:::-;5127:117;5277:4;5269:6;5265:17;5253:29;;5331:3;5323:4;5315:6;5311:17;5301:8;5297:32;5294:41;5291:128;;;5338:79;;:::i;:::-;5291:128;4857:568;;;;;:::o;5448:::-;5521:8;5531:6;5581:3;5574:4;5566:6;5562:17;5558:27;5548:122;;5589:79;;:::i;:::-;5548:122;5702:6;5689:20;5679:30;;5732:18;5724:6;5721:30;5718:117;;;5754:79;;:::i;:::-;5718:117;5868:4;5860:6;5856:17;5844:29;;5922:3;5914:4;5906:6;5902:17;5892:8;5888:32;5885:41;5882:128;;;5929:79;;:::i;:::-;5882:128;5448:568;;;;;:::o;6022:934::-;6144:6;6152;6160;6168;6217:2;6205:9;6196:7;6192:23;6188:32;6185:119;;;6223:79;;:::i;:::-;6185:119;6371:1;6360:9;6356:17;6343:31;6401:18;6393:6;6390:30;6387:117;;;6423:79;;:::i;:::-;6387:117;6536:80;6608:7;6599:6;6588:9;6584:22;6536:80;:::i;:::-;6518:98;;;;6314:312;6693:2;6682:9;6678:18;6665:32;6724:18;6716:6;6713:30;6710:117;;;6746:79;;:::i;:::-;6710:117;6859:80;6931:7;6922:6;6911:9;6907:22;6859:80;:::i;:::-;6841:98;;;;6636:313;6022:934;;;;;;;:::o;6962:86::-;6997:7;7037:4;7030:5;7026:16;7015:27;;6962:86;;;:::o;7054:112::-;7137:22;7153:5;7137:22;:::i;:::-;7132:3;7125:35;7054:112;;:::o;7172:214::-;7261:4;7299:2;7288:9;7284:18;7276:26;;7312:67;7376:1;7365:9;7361:17;7352:6;7312:67;:::i;:::-;7172:214;;;;:::o;7392:329::-;7451:6;7500:2;7488:9;7479:7;7475:23;7471:32;7468:119;;;7506:79;;:::i;:::-;7468:119;7626:1;7651:53;7696:7;7687:6;7676:9;7672:22;7651:53;:::i;:::-;7641:63;;7597:117;7392:329;;;;:::o;7727:116::-;7797:21;7812:5;7797:21;:::i;:::-;7790:5;7787:32;7777:60;;7833:1;7830;7823:12;7777:60;7727:116;:::o;7849:133::-;7892:5;7930:6;7917:20;7908:29;;7946:30;7970:5;7946:30;:::i;:::-;7849:133;;;;:::o;7988:468::-;8053:6;8061;8110:2;8098:9;8089:7;8085:23;8081:32;8078:119;;;8116:79;;:::i;:::-;8078:119;8236:1;8261:53;8306:7;8297:6;8286:9;8282:22;8261:53;:::i;:::-;8251:63;;8207:117;8363:2;8389:50;8431:7;8422:6;8411:9;8407:22;8389:50;:::i;:::-;8379:60;;8334:115;7988:468;;;;;:::o;8462:118::-;8549:24;8567:5;8549:24;:::i;:::-;8544:3;8537:37;8462:118;;:::o;8586:222::-;8679:4;8717:2;8706:9;8702:18;8694:26;;8730:71;8798:1;8787:9;8783:17;8774:6;8730:71;:::i;:::-;8586:222;;;;:::o;8814:60::-;8842:3;8863:5;8856:12;;8814:60;;;:::o;8880:142::-;8930:9;8963:53;8981:34;8990:24;9008:5;8990:24;:::i;:::-;8981:34;:::i;:::-;8963:53;:::i;:::-;8950:66;;8880:142;;;:::o;9028:126::-;9078:9;9111:37;9142:5;9111:37;:::i;:::-;9098:50;;9028:126;;;:::o;9160:147::-;9231:9;9264:37;9295:5;9264:37;:::i;:::-;9251:50;;9160:147;;;:::o;9313:173::-;9421:58;9473:5;9421:58;:::i;:::-;9416:3;9409:71;9313:173;;:::o;9492:264::-;9606:4;9644:2;9633:9;9629:18;9621:26;;9657:92;9746:1;9735:9;9731:17;9722:6;9657:92;:::i;:::-;9492:264;;;;:::o;9762:474::-;9830:6;9838;9887:2;9875:9;9866:7;9862:23;9858:32;9855:119;;;9893:79;;:::i;:::-;9855:119;10013:1;10038:53;10083:7;10074:6;10063:9;10059:22;10038:53;:::i;:::-;10028:63;;9984:117;10140:2;10166:53;10211:7;10202:6;10191:9;10187:22;10166:53;:::i;:::-;10156:63;;10111:118;9762:474;;;;;:::o;10242:180::-;10290:77;10287:1;10280:88;10387:4;10384:1;10377:15;10411:4;10408:1;10401:15;10428:320;10472:6;10509:1;10503:4;10499:12;10489:22;;10556:1;10550:4;10546:12;10577:18;10567:81;;10633:4;10625:6;10621:17;10611:27;;10567:81;10695:2;10687:6;10684:14;10664:18;10661:38;10658:84;;10714:18;;:::i;:::-;10658:84;10479:269;10428:320;;;:::o;10754:227::-;10894:34;10890:1;10882:6;10878:14;10871:58;10963:10;10958:2;10950:6;10946:15;10939:35;10754:227;:::o;10987:366::-;11129:3;11150:67;11214:2;11209:3;11150:67;:::i;:::-;11143:74;;11226:93;11315:3;11226:93;:::i;:::-;11344:2;11339:3;11335:12;11328:19;;10987:366;;;:::o;11359:419::-;11525:4;11563:2;11552:9;11548:18;11540:26;;11612:9;11606:4;11602:20;11598:1;11587:9;11583:17;11576:47;11640:131;11766:4;11640:131;:::i;:::-;11632:139;;11359:419;;;:::o;11784:182::-;11924:34;11920:1;11912:6;11908:14;11901:58;11784:182;:::o;11972:366::-;12114:3;12135:67;12199:2;12194:3;12135:67;:::i;:::-;12128:74;;12211:93;12300:3;12211:93;:::i;:::-;12329:2;12324:3;12320:12;12313:19;;11972:366;;;:::o;12344:419::-;12510:4;12548:2;12537:9;12533:18;12525:26;;12597:9;12591:4;12587:20;12583:1;12572:9;12568:17;12561:47;12625:131;12751:4;12625:131;:::i;:::-;12617:139;;12344:419;;;:::o;12769:180::-;12817:77;12814:1;12807:88;12914:4;12911:1;12904:15;12938:4;12935:1;12928:15;12955:180;13003:77;13000:1;12993:88;13100:4;13097:1;13090:15;13124:4;13121:1;13114:15;13141:233;13180:3;13203:24;13221:5;13203:24;:::i;:::-;13194:33;;13249:66;13242:5;13239:77;13236:103;;13319:18;;:::i;:::-;13236:103;13366:1;13359:5;13355:13;13348:20;;13141:233;;;:::o;13380:305::-;13420:3;13439:20;13457:1;13439:20;:::i;:::-;13434:25;;13473:20;13491:1;13473:20;:::i;:::-;13468:25;;13627:1;13559:66;13555:74;13552:1;13549:81;13546:107;;;13633:18;;:::i;:::-;13546:107;13677:1;13674;13670:9;13663:16;;13380:305;;;;:::o;13691:227::-;13831:34;13827:1;13819:6;13815:14;13808:58;13900:10;13895:2;13887:6;13883:15;13876:35;13691:227;:::o;13924:366::-;14066:3;14087:67;14151:2;14146:3;14087:67;:::i;:::-;14080:74;;14163:93;14252:3;14163:93;:::i;:::-;14281:2;14276:3;14272:12;14265:19;;13924:366;;;:::o;14296:419::-;14462:4;14500:2;14489:9;14485:18;14477:26;;14549:9;14543:4;14539:20;14535:1;14524:9;14520:17;14513:47;14577:131;14703:4;14577:131;:::i;:::-;14569:139;;14296:419;;;:::o;14721:224::-;14861:34;14857:1;14849:6;14845:14;14838:58;14930:7;14925:2;14917:6;14913:15;14906:32;14721:224;:::o;14951:366::-;15093:3;15114:67;15178:2;15173:3;15114:67;:::i;:::-;15107:74;;15190:93;15279:3;15190:93;:::i;:::-;15308:2;15303:3;15299:12;15292:19;;14951:366;;;:::o;15323:419::-;15489:4;15527:2;15516:9;15512:18;15504:26;;15576:9;15570:4;15566:20;15562:1;15551:9;15547:17;15540:47;15604:131;15730:4;15604:131;:::i;:::-;15596:139;;15323:419;;;:::o;15748:181::-;15888:33;15884:1;15876:6;15872:14;15865:57;15748:181;:::o;15935:366::-;16077:3;16098:67;16162:2;16157:3;16098:67;:::i;:::-;16091:74;;16174:93;16263:3;16174:93;:::i;:::-;16292:2;16287:3;16283:12;16276:19;;15935:366;;;:::o;16307:419::-;16473:4;16511:2;16500:9;16496:18;16488:26;;16560:9;16554:4;16550:20;16546:1;16535:9;16531:17;16524:47;16588:131;16714:4;16588:131;:::i;:::-;16580:139;;16307:419;;;:::o;16732:143::-;16789:5;16820:6;16814:13;16805:22;;16836:33;16863:5;16836:33;:::i;:::-;16732:143;;;;:::o;16881:351::-;16951:6;17000:2;16988:9;16979:7;16975:23;16971:32;16968:119;;;17006:79;;:::i;:::-;16968:119;17126:1;17151:64;17207:7;17198:6;17187:9;17183:22;17151:64;:::i;:::-;17141:74;;17097:128;16881:351;;;;:::o;17238:348::-;17278:7;17301:20;17319:1;17301:20;:::i;:::-;17296:25;;17335:20;17353:1;17335:20;:::i;:::-;17330:25;;17523:1;17455:66;17451:74;17448:1;17445:81;17440:1;17433:9;17426:17;17422:105;17419:131;;;17530:18;;:::i;:::-;17419:131;17578:1;17575;17571:9;17560:20;;17238:348;;;;:::o;17592:168::-;17732:20;17728:1;17720:6;17716:14;17709:44;17592:168;:::o;17766:366::-;17908:3;17929:67;17993:2;17988:3;17929:67;:::i;:::-;17922:74;;18005:93;18094:3;18005:93;:::i;:::-;18123:2;18118:3;18114:12;18107:19;;17766:366;;;:::o;18138:419::-;18304:4;18342:2;18331:9;18327:18;18319:26;;18391:9;18385:4;18381:20;18377:1;18366:9;18362:17;18355:47;18419:131;18545:4;18419:131;:::i;:::-;18411:139;;18138:419;;;:::o;18563:225::-;18703:34;18699:1;18691:6;18687:14;18680:58;18772:8;18767:2;18759:6;18755:15;18748:33;18563:225;:::o;18794:366::-;18936:3;18957:67;19021:2;19016:3;18957:67;:::i;:::-;18950:74;;19033:93;19122:3;19033:93;:::i;:::-;19151:2;19146:3;19142:12;19135:19;;18794:366;;;:::o;19166:419::-;19332:4;19370:2;19359:9;19355:18;19347:26;;19419:9;19413:4;19409:20;19405:1;19394:9;19390:17;19383:47;19447:131;19573:4;19447:131;:::i;:::-;19439:139;;19166:419;;;:::o;19591:223::-;19731:34;19727:1;19719:6;19715:14;19708:58;19800:6;19795:2;19787:6;19783:15;19776:31;19591:223;:::o;19820:366::-;19962:3;19983:67;20047:2;20042:3;19983:67;:::i;:::-;19976:74;;20059:93;20148:3;20059:93;:::i;:::-;20177:2;20172:3;20168:12;20161:19;;19820:366;;;:::o;20192:419::-;20358:4;20396:2;20385:9;20381:18;20373:26;;20445:9;20439:4;20435:20;20431:1;20420:9;20416:17;20409:47;20473:131;20599:4;20473:131;:::i;:::-;20465:139;;20192:419;;;:::o;20617:221::-;20757:34;20753:1;20745:6;20741:14;20734:58;20826:4;20821:2;20813:6;20809:15;20802:29;20617:221;:::o;20844:366::-;20986:3;21007:67;21071:2;21066:3;21007:67;:::i;:::-;21000:74;;21083:93;21172:3;21083:93;:::i;:::-;21201:2;21196:3;21192:12;21185:19;;20844:366;;;:::o;21216:419::-;21382:4;21420:2;21409:9;21405:18;21397:26;;21469:9;21463:4;21459:20;21455:1;21444:9;21440:17;21433:47;21497:131;21623:4;21497:131;:::i;:::-;21489:139;;21216:419;;;:::o;21641:224::-;21781:34;21777:1;21769:6;21765:14;21758:58;21850:7;21845:2;21837:6;21833:15;21826:32;21641:224;:::o;21871:366::-;22013:3;22034:67;22098:2;22093:3;22034:67;:::i;:::-;22027:74;;22110:93;22199:3;22110:93;:::i;:::-;22228:2;22223:3;22219:12;22212:19;;21871:366;;;:::o;22243:419::-;22409:4;22447:2;22436:9;22432:18;22424:26;;22496:9;22490:4;22486:20;22482:1;22471:9;22467:17;22460:47;22524:131;22650:4;22524:131;:::i;:::-;22516:139;;22243:419;;;:::o;22668:222::-;22808:34;22804:1;22796:6;22792:14;22785:58;22877:5;22872:2;22864:6;22860:15;22853:30;22668:222;:::o;22896:366::-;23038:3;23059:67;23123:2;23118:3;23059:67;:::i;:::-;23052:74;;23135:93;23224:3;23135:93;:::i;:::-;23253:2;23248:3;23244:12;23237:19;;22896:366;;;:::o;23268:419::-;23434:4;23472:2;23461:9;23457:18;23449:26;;23521:9;23515:4;23511:20;23507:1;23496:9;23492:17;23485:47;23549:131;23675:4;23549:131;:::i;:::-;23541:139;;23268:419;;;:::o;23693:225::-;23833:34;23829:1;23821:6;23817:14;23810:58;23902:8;23897:2;23889:6;23885:15;23878:33;23693:225;:::o;23924:366::-;24066:3;24087:67;24151:2;24146:3;24087:67;:::i;:::-;24080:74;;24163:93;24252:3;24163:93;:::i;:::-;24281:2;24276:3;24272:12;24265:19;;23924:366;;;:::o;24296:419::-;24462:4;24500:2;24489:9;24485:18;24477:26;;24549:9;24543:4;24539:20;24535:1;24524:9;24520:17;24513:47;24577:131;24703:4;24577:131;:::i;:::-;24569:139;;24296:419;;;:::o;24721:220::-;24861:34;24857:1;24849:6;24845:14;24838:58;24930:3;24925:2;24917:6;24913:15;24906:28;24721:220;:::o;24947:366::-;25089:3;25110:67;25174:2;25169:3;25110:67;:::i;:::-;25103:74;;25186:93;25275:3;25186:93;:::i;:::-;25304:2;25299:3;25295:12;25288:19;;24947:366;;;:::o;25319:419::-;25485:4;25523:2;25512:9;25508:18;25500:26;;25572:9;25566:4;25562:20;25558:1;25547:9;25543:17;25536:47;25600:131;25726:4;25600:131;:::i;:::-;25592:139;;25319:419;;;:::o;25744:221::-;25884:34;25880:1;25872:6;25868:14;25861:58;25953:4;25948:2;25940:6;25936:15;25929:29;25744:221;:::o;25971:366::-;26113:3;26134:67;26198:2;26193:3;26134:67;:::i;:::-;26127:74;;26210:93;26299:3;26210:93;:::i;:::-;26328:2;26323:3;26319:12;26312:19;;25971:366;;;:::o;26343:419::-;26509:4;26547:2;26536:9;26532:18;26524:26;;26596:9;26590:4;26586:20;26582:1;26571:9;26567:17;26560:47;26624:131;26750:4;26624:131;:::i;:::-;26616:139;;26343:419;;;:::o;26768:191::-;26808:4;26828:20;26846:1;26828:20;:::i;:::-;26823:25;;26862:20;26880:1;26862:20;:::i;:::-;26857:25;;26901:1;26898;26895:8;26892:34;;;26906:18;;:::i;:::-;26892:34;26951:1;26948;26944:9;26936:17;;26768:191;;;;:::o;26965:181::-;27105:33;27101:1;27093:6;27089:14;27082:57;26965:181;:::o;27152:366::-;27294:3;27315:67;27379:2;27374:3;27315:67;:::i;:::-;27308:74;;27391:93;27480:3;27391:93;:::i;:::-;27509:2;27504:3;27500:12;27493:19;;27152:366;;;:::o;27524:419::-;27690:4;27728:2;27717:9;27713:18;27705:26;;27777:9;27771:4;27767:20;27763:1;27752:9;27748:17;27741:47;27805:131;27931:4;27805:131;:::i;:::-;27797:139;;27524:419;;;:::o
Swarm Source
ipfs://c1bc83e0143ed1f7ad4089a7826320395c9215b04a7ff73933710b294511e16b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.