ERC-20
Overview
Max Total Supply
10,000,000,000 TFT
Holders
847
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
TimingFox
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2025-02-14 */ /** *Submitted for verification at Etherscan.io on 2024-12-10 */ /** *Submitted for verification at Etherscan.io on 2024-11-05 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } library StringUtils { function toString(bytes32 data) internal pure returns (string memory) { bytes memory bytesString = new bytes(64); for (uint256 i = 0; i < 32; i++) { bytesString[i * 2] = _char(bytes1(uint8(data[i]) >> 4)); bytesString[1 + i * 2] = _char(bytes1(uint8(data[i]) & 0x0f)); } return string(bytesString); } function _char(bytes1 b) internal pure returns (bytes1 c) { if (uint8(b) < 10) { return bytes1(uint8(b) + 0x30); } else { return bytes1(uint8(b) + 0x57); } } function substring(string memory str, uint startIndex, uint endIndex) internal pure returns (string memory) { bytes memory strBytes = bytes(str); bytes memory result = new bytes(endIndex - startIndex); for (uint i = startIndex; i < endIndex; i++) { result[i - startIndex] = strBytes[i]; } return string(result); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library Address { function sendValue(address payable recipient, uint256 amount) internal returns(bool){ require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); return success; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } 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; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } 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; } 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); } /* * @notice Creates new tokens and adds them to the specified account. * @dev The function creates a specified amount of tokens and adds them to the specified account, increasing the total supply accordingly. * @param account The account to which the tokens will be minted. * @param amount The amount of tokens to be minted. * @return It emits a Transfer event indicating the minting of tokens from the zero address to the specified account. */ 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); } /* * @notice Burns a specific amount of tokens from the specified account. * @dev The function reduces the balance of the specified account by the specified amount and decreases the total supply accordingly. * @param account The account from which the tokens will be burned. * @param amount The amount of tokens to be burned. * @return It emits a Transfer event indicating the burning of tokens from the account to the zero address. */ 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); } 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); } /* * @notice Hook that is called before transferring tokens. * @dev This function is called before transferring tokens from one account to another. * @param from The account from which the tokens are being transferred. * @param to The account to which the tokens are being transferred. * @param amount The amount of tokens being transferred. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface ITimingFoxNFT{ function mint(address to, uint256 quantity, uint8 level) external; } contract TimingFox is ERC20, Ownable { using SafeMath for uint256; uint256 private mintAmount = 250000 * 10**uint256(decimals()); uint256 private constant mintETHAmount = 0.1 ether; bool public publicSaleEnabled = false; mapping(address => uint256) private userETHDeposits; // Record the accumulated amount of ETH deposited by users uint256[] private rewardThresholds = [5 ether, 10 ether, 20 ether, 30 ether]; // reward threshold uint256[] private rewardAmounts = [125000, 625000, 2500000, 6000000]; // Corresponding number of reward tokens mapping(address => uint256) private claimedRewards; // Record the total amount of rewards that the user has received // User reward collection record: User address -> Reward level -> Whether it has been received mapping(address => mapping(uint8 => bool)) private rewardMinted; ITimingFoxNFT public TTimingFoxNFTContract; uint256 private eventCounter; event CreativeEnergy(uint256 indexed eventId, address indexed sender, uint256 indexed value); constructor () ERC20("TimingFox", "TFT") { _mint(address(this), 1e10 * (10 ** decimals())); eventCounter = 0; } receive() external payable {} function mint() external payable { require(!publicSaleEnabled, "Public sale has ended"); require(owner() != address(0), "Owner address is zero, operation not allowed"); require(msg.value >= mintETHAmount, "Insufficient ETH sent"); // Dynamically calculate the number of tokens a user deserves uint256 mintQuantity = msg.value.mul(mintAmount).div(mintETHAmount); address contractAddress = address(this); require(balanceOf(contractAddress) >= mintQuantity, "Owner does not have enough tokens"); // Transfer tokens from owner to user super._transfer(contractAddress, msg.sender, mintQuantity); // Update the user's cumulative deposit amount userETHDeposits[msg.sender] = userETHDeposits[msg.sender].add(msg.value); // Check whether the reward threshold is reached and issue the reward checkAndReward(msg.sender); eventCounter++; emit CreativeEnergy(eventCounter, msg.sender, msg.value); } function checkAndReward(address user) internal { uint256 totalReward = 0; // Total token rewards currently due uint256 userDeposit = userETHDeposits[user]; // Accumulated deposits of users // Traverse reward levels for (uint8 level = 1; level <= 4; level++) { uint256 threshold = rewardThresholds[level - 1]; uint256 reward = rewardAmounts[level - 1] * (10**decimals()); // Check if the reward level is reached if (userDeposit >= threshold) { // Update token rewards totalReward = reward; // Check if mint method needs to be called if (address(TTimingFoxNFTContract) != address(0)) { if (!rewardMinted[user][level]) { rewardMinted[user][level] = true; // Mark the reward for this level as received TTimingFoxNFTContract.mint(user, 1, level); // Call NFT mint method } } } else { break; // User deposit is not enough to reach the next level } } // Check the total amount of token rewards claimed uint256 claimedReward = claimedRewards[user]; // If the total token reward is greater than the received reward, the difference will be reissued if (totalReward > claimedReward) { address contractAddress = address(this); uint256 rewardToSend = totalReward - claimedReward; // Calculate the difference require(balanceOf(contractAddress) >= rewardToSend, "Owner does not have enough tokens for rewards"); claimedRewards[user] = totalReward; // Update the total amount of rewards claimed super._transfer(contractAddress, user, rewardToSend); // Issue token rewards } } function setNftContract(address _contract) external onlyOwner { TTimingFoxNFTContract = ITimingFoxNFT(_contract); } function sendAirdrops(address[] memory recipients, uint256 amount) external onlyOwner{ require(owner() != address(0), "Owner address is zero, operation not allowed"); for (uint i = 0; i < recipients.length; i++) { super._transfer(address(this), recipients[i], amount); } } function endedPublicSaleEnabled() external onlyOwner{ require(!publicSaleEnabled, "Public sale has ended"); publicSaleEnabled = true; } function isContract(address _addr) internal view returns (bool) { uint32 size; assembly { size := extcodesize(_addr) } return (size > 0); } function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); if (isContract(to) && (from != owner() && !publicSaleEnabled)) { revert("Only the owner can add liquidity before public sale ends."); } if (amount == 0) { super._transfer(from, to, 0); return; } super._transfer(from, to, amount); } function claimStuckTokens(address token, uint256 amount) external onlyOwner { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); if (token == address(0)) { require(amount <= address(this).balance, "Insufficient contract balance"); payable(msg.sender).transfer(amount); return; } IERC20 ERC20token = IERC20(token); uint256 contractBalance = ERC20token.balanceOf(address(this)); require(amount <= contractBalance, "Insufficient token balance in contract"); ERC20token.transfer(msg.sender, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"uint256","name":"eventId","type":"uint256"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CreativeEnergy","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":"TTimingFoxNFTContract","outputs":[{"internalType":"contract ITimingFoxNFT","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimStuckTokens","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":[],"name":"endedPublicSaleEnabled","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":"mint","outputs":[],"stateMutability":"payable","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":"publicSaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendAirdrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setNftContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526100126102a860201b60201c565b60ff16600a610021919061064e565b6203d09061002f9190610698565b6006555f60075f6101000a81548160ff0219169083151502179055506040518060800160405280674563918244f4000068ffffffffffffffffff168152602001678ac7230489e8000068ffffffffffffffffff1681526020016801158e460913d0000068ffffffffffffffffff1681526020016801a055690d9db8000068ffffffffffffffffff1681525060099060046100ca929190610424565b5060405180608001604052806201e84862ffffff1681526020016209896862ffffff168152602001622625a062ffffff168152602001625b8d8062ffffff16815250600a90600461011c92919061047c565b50348015610128575f80fd5b506040518060400160405280600981526020017f54696d696e67466f7800000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f544654000000000000000000000000000000000000000000000000000000000081525081600390816101a4919061090a565b5080600490816101b4919061090a565b5050505f6101c66102b060201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35061029c306102756102a860201b60201c565b600a61028191906109e5565b6402540be4006102919190610698565b6102b760201b60201c565b5f600e81905550610b02565b5f6012905090565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031c90610a89565b60405180910390fd5b6103365f838361041a60201b60201c565b8060025f8282546103479190610aa7565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546103999190610aa7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103fd9190610ae9565b60405180910390a36104165f838361041f60201b60201c565b5050565b505050565b505050565b828054828255905f5260205f2090810192821561046b579160200282015b8281111561046a578251829068ffffffffffffffffff16905591602001919060010190610442565b5b50905061047891906104ce565b5090565b828054828255905f5260205f209081019282156104bd579160200282015b828111156104bc578251829062ffffff1690559160200191906001019061049a565b5b5090506104ca91906104ce565b5090565b5b808211156104e5575f815f9055506001016104cf565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561056b57808604811115610547576105466104e9565b5b60018516156105565780820291505b808102905061056485610516565b945061052b565b94509492505050565b5f82610583576001905061063e565b81610590575f905061063e565b81600181146105a657600281146105b0576105df565b600191505061063e565b60ff8411156105c2576105c16104e9565b5b8360020a9150848211156105d9576105d86104e9565b5b5061063e565b5060208310610133831016604e8410600b84101617156106145782820a90508381111561060f5761060e6104e9565b5b61063e565b6106218484846001610522565b92509050818404811115610638576106376104e9565b5b81810290505b9392505050565b5f819050919050565b5f61065882610645565b915061066383610645565b92506106907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610574565b905092915050565b5f6106a282610645565b91506106ad83610645565b92508282026106bb81610645565b915082820484148315176106d2576106d16104e9565b5b5092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061075457607f821691505b60208210810361076757610766610710565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026107c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261078e565b6107d3868361078e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61080e61080961080484610645565b6107eb565b610645565b9050919050565b5f819050919050565b610827836107f4565b61083b61083382610815565b84845461079a565b825550505050565b5f90565b61084f610843565b61085a81848461081e565b505050565b5b8181101561087d576108725f82610847565b600181019050610860565b5050565b601f8211156108c2576108938161076d565b61089c8461077f565b810160208510156108ab578190505b6108bf6108b78561077f565b83018261085f565b50505b505050565b5f82821c905092915050565b5f6108e25f19846008026108c7565b1980831691505092915050565b5f6108fa83836108d3565b9150826002028217905092915050565b610913826106d9565b67ffffffffffffffff81111561092c5761092b6106e3565b5b610936825461073d565b610941828285610881565b5f60209050601f831160018114610972575f8415610960578287015190505b61096a85826108ef565b8655506109d1565b601f1984166109808661076d565b5f5b828110156109a757848901518255600182019150602085019450602081019050610982565b868310156109c457848901516109c0601f8916826108d3565b8355505b6001600288020188555050505b505050505050565b5f60ff82169050919050565b5f6109ef82610645565b91506109fa836109d9565b9250610a277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610574565b905092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610a73601f83610a2f565b9150610a7e82610a3f565b602082019050919050565b5f6020820190508181035f830152610aa081610a67565b9050919050565b5f610ab182610645565b9150610abc83610645565b9250828201905080821115610ad457610ad36104e9565b5b92915050565b610ae381610645565b82525050565b5f602082019050610afc5f830184610ada565b92915050565b6132eb80610b0f5f395ff3fe60806040526004361061012d575f3560e01c806370a08231116100aa578063a9059cbb1161006e578063a9059cbb146103d2578063b26baf441461040e578063bc66a72d14610436578063c6acc77a1461044c578063dd62ed3e14610474578063f2fde38b146104b057610134565b806370a08231146102f0578063715018a61461032c5780638da5cb5b1461034257806395d89b411461036c578063a457c2d71461039657610134565b80632ab91bba116100f15780632ab91bba1461020e578063313ce56714610238578063395093511461026257806352f5ad771461029e578063606a1be8146102c657610134565b806306fdde0314610138578063095ea7b3146101625780631249c58b1461019e57806318160ddd146101a857806323b872dd146101d257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104d8565b6040516101599190611fd7565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612095565b610568565b60405161019591906120ed565b60405180910390f35b6101a6610585565b005b3480156101b3575f80fd5b506101bc61081c565b6040516101c99190612115565b60405180910390f35b3480156101dd575f80fd5b506101f860048036038101906101f3919061212e565b610825565b60405161020591906120ed565b60405180910390f35b348015610219575f80fd5b5061022261093f565b60405161022f91906120ed565b60405180910390f35b348015610243575f80fd5b5061024c610951565b6040516102599190612199565b60405180910390f35b34801561026d575f80fd5b5061028860048036038101906102839190612095565b610959565b60405161029591906120ed565b60405180910390f35b3480156102a9575f80fd5b506102c460048036038101906102bf91906121b2565b610a00565b005b3480156102d1575f80fd5b506102da610ad9565b6040516102e79190612238565b60405180910390f35b3480156102fb575f80fd5b50610316600480360381019061031191906121b2565b610afe565b6040516103239190612115565b60405180910390f35b348015610337575f80fd5b50610340610b43565b005b34801561034d575f80fd5b50610356610c96565b6040516103639190612260565b60405180910390f35b348015610377575f80fd5b50610380610cbe565b60405161038d9190611fd7565b60405180910390f35b3480156103a1575f80fd5b506103bc60048036038101906103b79190612095565b610d4e565b6040516103c991906120ed565b60405180910390f35b3480156103dd575f80fd5b506103f860048036038101906103f39190612095565b610e34565b60405161040591906120ed565b60405180910390f35b348015610419575f80fd5b50610434600480360381019061042f91906123b9565b610e51565b005b348015610441575f80fd5b5061044a610f9e565b005b348015610457575f80fd5b50610472600480360381019061046d9190612095565b61109f565b005b34801561047f575f80fd5b5061049a60048036038101906104959190612413565b6113a7565b6040516104a79190612115565b60405180910390f35b3480156104bb575f80fd5b506104d660048036038101906104d191906121b2565b611429565b005b6060600380546104e79061247e565b80601f01602080910402602001604051908101604052809291908181526020018280546105139061247e565b801561055e5780601f106105355761010080835404028352916020019161055e565b820191905f5260205f20905b81548152906001019060200180831161054157829003601f168201915b5050505050905090565b5f61057b6105746115eb565b84846115f2565b6001905092915050565b60075f9054906101000a900460ff16156105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb906124f8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff166105f3610c96565b73ffffffffffffffffffffffffffffffffffffffff1603610649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064090612586565b60405180910390fd5b67016345785d8a0000341015610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068b906125ee565b60405180910390fd5b5f6106c467016345785d8a00006106b6600654346117b590919063ffffffff16565b6117ca90919063ffffffff16565b90505f309050816106d482610afe565b1015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070c9061267c565b60405180910390fd5b6107208133846117df565b6107703460085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a5490919063ffffffff16565b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506107ba33611a69565b600e5f8154809291906107cc906126c7565b9190505550343373ffffffffffffffffffffffffffffffffffffffff16600e547fe30efae2a15b2de1829a1c4059a6ea65c2ccb04ff1676eb919cc936f17536b6a60405160405180910390a45050565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61086d6115eb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109285782811015610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a9061277e565b60405180910390fd5b6109278561091f6115eb565b8584036115f2565b5b610933858585611e10565b60019150509392505050565b60075f9054906101000a900460ff1681565b5f6012905090565b5f6109f66109656115eb565b848460015f6109726115eb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109f1919061279c565b6115f2565b6001905092915050565b610a086115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90612819565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b4b6115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd090612819565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ccd9061247e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf99061247e565b8015610d445780601f10610d1b57610100808354040283529160200191610d44565b820191905f5260205f20905b815481529060010190602001808311610d2757829003601f168201915b5050505050905090565b5f8060015f610d5b6115eb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c906128a7565b60405180910390fd5b610e29610e206115eb565b858584036115f2565b600191505092915050565b5f610e47610e406115eb565b8484611e10565b6001905092915050565b610e596115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede90612819565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16610f06610c96565b73ffffffffffffffffffffffffffffffffffffffff1603610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390612586565b60405180910390fd5b5f5b8251811015610f9957610f8c30848381518110610f7e57610f7d6128c5565b5b6020026020010151846117df565b8080600101915050610f5e565b505050565b610fa66115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90612819565b60405180910390fd5b60075f9054906101000a900460ff1615611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a906124f8565b60405180910390fd5b600160075f6101000a81548160ff021916908315150217905550565b6110a76115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90612819565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90612962565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112625747811115611219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611210906129ca565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561125c573d5f803e3d5ffd5b506113a3565b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112a09190612260565b602060405180830381865afa1580156112bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112df91906129fc565b905080831115611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90612a97565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b815260040161135f929190612ab5565b6020604051808303815f875af115801561137b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139f9190612b06565b5050505b5050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114316115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b690612819565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490612ba1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165790612c2f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c590612cbd565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117a89190612115565b60405180910390a3505050565b5f81836117c29190612cdb565b905092915050565b5f81836117d79190612d49565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184490612de9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290612e77565b60405180910390fd5b6118c6838383611f46565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194090612f05565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119d7919061279c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a3b9190612115565b60405180910390a3611a4e848484611f4b565b50505050565b5f8183611a61919061279c565b905092915050565b5f8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600190505b60048160ff1611611d12575f6009600183611acc9190612f23565b60ff1681548110611ae057611adf6128c5565b5b905f5260205f20015490505f611af4610951565b600a611b009190613086565b600a600185611b0f9190612f23565b60ff1681548110611b2357611b226128c5565b5b905f5260205f200154611b369190612cdb565b9050818410611cf6578094505f73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf157600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8460ff1660ff1681526020019081526020015f205f9054906101000a900460ff16611cf0576001600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8560ff1660ff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636112e8ac876001866040518463ffffffff1660e01b8152600401611cc293929190613109565b5f604051808303815f87803b158015611cd9575f80fd5b505af1158015611ceb573d5f803e3d5ffd5b505050505b5b611cfd565b5050611d12565b50508080611d0a9061313e565b915050611ab1565b505f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905080831115611e0a575f3090505f8285611d6d9190613166565b905080611d7983610afe565b1015611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db190613209565b60405180910390fd5b84600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e078287836117df565b50505b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7590612de9565b60405180910390fd5b611e8782611f50565b8015611ede5750611e96610c96565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611edd575060075f9054906101000a900460ff16155b5b15611f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1590613297565b60405180910390fd5b5f8103611f3557611f3083835f6117df565b611f41565b611f408383836117df565b5b505050565b505050565b505050565b5f80823b90505f8163ffffffff1611915050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611fa982611f67565b611fb38185611f71565b9350611fc3818560208601611f81565b611fcc81611f8f565b840191505092915050565b5f6020820190508181035f830152611fef8184611f9f565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61203182612008565b9050919050565b61204181612027565b811461204b575f80fd5b50565b5f8135905061205c81612038565b92915050565b5f819050919050565b61207481612062565b811461207e575f80fd5b50565b5f8135905061208f8161206b565b92915050565b5f80604083850312156120ab576120aa612000565b5b5f6120b88582860161204e565b92505060206120c985828601612081565b9150509250929050565b5f8115159050919050565b6120e7816120d3565b82525050565b5f6020820190506121005f8301846120de565b92915050565b61210f81612062565b82525050565b5f6020820190506121285f830184612106565b92915050565b5f805f6060848603121561214557612144612000565b5b5f6121528682870161204e565b93505060206121638682870161204e565b925050604061217486828701612081565b9150509250925092565b5f60ff82169050919050565b6121938161217e565b82525050565b5f6020820190506121ac5f83018461218a565b92915050565b5f602082840312156121c7576121c6612000565b5b5f6121d48482850161204e565b91505092915050565b5f819050919050565b5f6122006121fb6121f684612008565b6121dd565b612008565b9050919050565b5f612211826121e6565b9050919050565b5f61222282612207565b9050919050565b61223281612218565b82525050565b5f60208201905061224b5f830184612229565b92915050565b61225a81612027565b82525050565b5f6020820190506122735f830184612251565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6122b382611f8f565b810181811067ffffffffffffffff821117156122d2576122d161227d565b5b80604052505050565b5f6122e4611ff7565b90506122f082826122aa565b919050565b5f67ffffffffffffffff82111561230f5761230e61227d565b5b602082029050602081019050919050565b5f80fd5b5f612336612331846122f5565b6122db565b9050808382526020820190506020840283018581111561235957612358612320565b5b835b81811015612382578061236e888261204e565b84526020840193505060208101905061235b565b5050509392505050565b5f82601f8301126123a05761239f612279565b5b81356123b0848260208601612324565b91505092915050565b5f80604083850312156123cf576123ce612000565b5b5f83013567ffffffffffffffff8111156123ec576123eb612004565b5b6123f88582860161238c565b925050602061240985828601612081565b9150509250929050565b5f806040838503121561242957612428612000565b5b5f6124368582860161204e565b92505060206124478582860161204e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061249557607f821691505b6020821081036124a8576124a7612451565b5b50919050565b7f5075626c69632073616c652068617320656e64656400000000000000000000005f82015250565b5f6124e2601583611f71565b91506124ed826124ae565b602082019050919050565b5f6020820190508181035f83015261250f816124d6565b9050919050565b7f4f776e65722061646472657373206973207a65726f2c206f7065726174696f6e5f8201527f206e6f7420616c6c6f7765640000000000000000000000000000000000000000602082015250565b5f612570602c83611f71565b915061257b82612516565b604082019050919050565b5f6020820190508181035f83015261259d81612564565b9050919050565b7f496e73756666696369656e74204554482073656e7400000000000000000000005f82015250565b5f6125d8601583611f71565b91506125e3826125a4565b602082019050919050565b5f6020820190508181035f830152612605816125cc565b9050919050565b7f4f776e657220646f6573206e6f74206861766520656e6f75676820746f6b656e5f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612666602183611f71565b91506126718261260c565b604082019050919050565b5f6020820190508181035f8301526126938161265a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6126d182612062565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127035761270261269a565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612768602883611f71565b91506127738261270e565b604082019050919050565b5f6020820190508181035f8301526127958161275c565b9050919050565b5f6127a682612062565b91506127b183612062565b92508282019050808211156127c9576127c861269a565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612803602083611f71565b915061280e826127cf565b602082019050919050565b5f6020820190508181035f830152612830816127f7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612891602583611f71565b915061289c82612837565b604082019050919050565b5f6020820190508181035f8301526128be81612885565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e65722063616e6e6f7420636c61696d20636f6e747261637427732062615f8201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b5f61294c603783611f71565b9150612957826128f2565b604082019050919050565b5f6020820190508181035f83015261297981612940565b9050919050565b7f496e73756666696369656e7420636f6e74726163742062616c616e63650000005f82015250565b5f6129b4601d83611f71565b91506129bf82612980565b602082019050919050565b5f6020820190508181035f8301526129e1816129a8565b9050919050565b5f815190506129f68161206b565b92915050565b5f60208284031215612a1157612a10612000565b5b5f612a1e848285016129e8565b91505092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f5f8201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b5f612a81602683611f71565b9150612a8c82612a27565b604082019050919050565b5f6020820190508181035f830152612aae81612a75565b9050919050565b5f604082019050612ac85f830185612251565b612ad56020830184612106565b9392505050565b612ae5816120d3565b8114612aef575f80fd5b50565b5f81519050612b0081612adc565b92915050565b5f60208284031215612b1b57612b1a612000565b5b5f612b2884828501612af2565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612b8b602683611f71565b9150612b9682612b31565b604082019050919050565b5f6020820190508181035f830152612bb881612b7f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c19602483611f71565b9150612c2482612bbf565b604082019050919050565b5f6020820190508181035f830152612c4681612c0d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612ca7602283611f71565b9150612cb282612c4d565b604082019050919050565b5f6020820190508181035f830152612cd481612c9b565b9050919050565b5f612ce582612062565b9150612cf083612062565b9250828202612cfe81612062565b91508282048414831517612d1557612d1461269a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d5382612062565b9150612d5e83612062565b925082612d6e57612d6d612d1c565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dd3602583611f71565b9150612dde82612d79565b604082019050919050565b5f6020820190508181035f830152612e0081612dc7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e61602383611f71565b9150612e6c82612e07565b604082019050919050565b5f6020820190508181035f830152612e8e81612e55565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612eef602683611f71565b9150612efa82612e95565b604082019050919050565b5f6020820190508181035f830152612f1c81612ee3565b9050919050565b5f612f2d8261217e565b9150612f388361217e565b9250828203905060ff811115612f5157612f5061269a565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612fac57808604811115612f8857612f8761269a565b5b6001851615612f975780820291505b8081029050612fa585612f57565b9450612f6c565b94509492505050565b5f82612fc4576001905061307f565b81612fd1575f905061307f565b8160018114612fe75760028114612ff157613020565b600191505061307f565b60ff8411156130035761300261269a565b5b8360020a91508482111561301a5761301961269a565b5b5061307f565b5060208310610133831016604e8410600b84101617156130555782820a9050838111156130505761304f61269a565b5b61307f565b6130628484846001612f63565b925090508184048111156130795761307861269a565b5b81810290505b9392505050565b5f61309082612062565b915061309b8361217e565b92506130c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612fb5565b905092915050565b5f819050919050565b5f6130f36130ee6130e9846130d0565b6121dd565b612062565b9050919050565b613103816130d9565b82525050565b5f60608201905061311c5f830186612251565b61312960208301856130fa565b613136604083018461218a565b949350505050565b5f6131488261217e565b915060ff820361315b5761315a61269a565b5b600182019050919050565b5f61317082612062565b915061317b83612062565b92508282039050818111156131935761319261269a565b5b92915050565b7f4f776e657220646f6573206e6f74206861766520656e6f75676820746f6b656e5f8201527f7320666f72207265776172647300000000000000000000000000000000000000602082015250565b5f6131f3602d83611f71565b91506131fe82613199565b604082019050919050565b5f6020820190508181035f830152613220816131e7565b9050919050565b7f4f6e6c7920746865206f776e65722063616e20616464206c69717569646974795f8201527f206265666f7265207075626c69632073616c6520656e64732e00000000000000602082015250565b5f613281603983611f71565b915061328c82613227565b604082019050919050565b5f6020820190508181035f8301526132ae81613275565b905091905056fea26469706673582212203a555722e898968c81c0791542a61a30917b6e541379e1c1a4b4cf9fcceaf1ca64736f6c634300081a0033
Deployed Bytecode
0x60806040526004361061012d575f3560e01c806370a08231116100aa578063a9059cbb1161006e578063a9059cbb146103d2578063b26baf441461040e578063bc66a72d14610436578063c6acc77a1461044c578063dd62ed3e14610474578063f2fde38b146104b057610134565b806370a08231146102f0578063715018a61461032c5780638da5cb5b1461034257806395d89b411461036c578063a457c2d71461039657610134565b80632ab91bba116100f15780632ab91bba1461020e578063313ce56714610238578063395093511461026257806352f5ad771461029e578063606a1be8146102c657610134565b806306fdde0314610138578063095ea7b3146101625780631249c58b1461019e57806318160ddd146101a857806323b872dd146101d257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104d8565b6040516101599190611fd7565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612095565b610568565b60405161019591906120ed565b60405180910390f35b6101a6610585565b005b3480156101b3575f80fd5b506101bc61081c565b6040516101c99190612115565b60405180910390f35b3480156101dd575f80fd5b506101f860048036038101906101f3919061212e565b610825565b60405161020591906120ed565b60405180910390f35b348015610219575f80fd5b5061022261093f565b60405161022f91906120ed565b60405180910390f35b348015610243575f80fd5b5061024c610951565b6040516102599190612199565b60405180910390f35b34801561026d575f80fd5b5061028860048036038101906102839190612095565b610959565b60405161029591906120ed565b60405180910390f35b3480156102a9575f80fd5b506102c460048036038101906102bf91906121b2565b610a00565b005b3480156102d1575f80fd5b506102da610ad9565b6040516102e79190612238565b60405180910390f35b3480156102fb575f80fd5b50610316600480360381019061031191906121b2565b610afe565b6040516103239190612115565b60405180910390f35b348015610337575f80fd5b50610340610b43565b005b34801561034d575f80fd5b50610356610c96565b6040516103639190612260565b60405180910390f35b348015610377575f80fd5b50610380610cbe565b60405161038d9190611fd7565b60405180910390f35b3480156103a1575f80fd5b506103bc60048036038101906103b79190612095565b610d4e565b6040516103c991906120ed565b60405180910390f35b3480156103dd575f80fd5b506103f860048036038101906103f39190612095565b610e34565b60405161040591906120ed565b60405180910390f35b348015610419575f80fd5b50610434600480360381019061042f91906123b9565b610e51565b005b348015610441575f80fd5b5061044a610f9e565b005b348015610457575f80fd5b50610472600480360381019061046d9190612095565b61109f565b005b34801561047f575f80fd5b5061049a60048036038101906104959190612413565b6113a7565b6040516104a79190612115565b60405180910390f35b3480156104bb575f80fd5b506104d660048036038101906104d191906121b2565b611429565b005b6060600380546104e79061247e565b80601f01602080910402602001604051908101604052809291908181526020018280546105139061247e565b801561055e5780601f106105355761010080835404028352916020019161055e565b820191905f5260205f20905b81548152906001019060200180831161054157829003601f168201915b5050505050905090565b5f61057b6105746115eb565b84846115f2565b6001905092915050565b60075f9054906101000a900460ff16156105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb906124f8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff166105f3610c96565b73ffffffffffffffffffffffffffffffffffffffff1603610649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064090612586565b60405180910390fd5b67016345785d8a0000341015610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068b906125ee565b60405180910390fd5b5f6106c467016345785d8a00006106b6600654346117b590919063ffffffff16565b6117ca90919063ffffffff16565b90505f309050816106d482610afe565b1015610715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070c9061267c565b60405180910390fd5b6107208133846117df565b6107703460085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a5490919063ffffffff16565b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506107ba33611a69565b600e5f8154809291906107cc906126c7565b9190505550343373ffffffffffffffffffffffffffffffffffffffff16600e547fe30efae2a15b2de1829a1c4059a6ea65c2ccb04ff1676eb919cc936f17536b6a60405160405180910390a45050565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61086d6115eb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109285782811015610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a9061277e565b60405180910390fd5b6109278561091f6115eb565b8584036115f2565b5b610933858585611e10565b60019150509392505050565b60075f9054906101000a900460ff1681565b5f6012905090565b5f6109f66109656115eb565b848460015f6109726115eb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109f1919061279c565b6115f2565b6001905092915050565b610a086115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90612819565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b4b6115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd090612819565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ccd9061247e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf99061247e565b8015610d445780601f10610d1b57610100808354040283529160200191610d44565b820191905f5260205f20905b815481529060010190602001808311610d2757829003601f168201915b5050505050905090565b5f8060015f610d5b6115eb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c906128a7565b60405180910390fd5b610e29610e206115eb565b858584036115f2565b600191505092915050565b5f610e47610e406115eb565b8484611e10565b6001905092915050565b610e596115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede90612819565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16610f06610c96565b73ffffffffffffffffffffffffffffffffffffffff1603610f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5390612586565b60405180910390fd5b5f5b8251811015610f9957610f8c30848381518110610f7e57610f7d6128c5565b5b6020026020010151846117df565b8080600101915050610f5e565b505050565b610fa66115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90612819565b60405180910390fd5b60075f9054906101000a900460ff1615611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a906124f8565b60405180910390fd5b600160075f6101000a81548160ff021916908315150217905550565b6110a76115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90612819565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90612962565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112625747811115611219576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611210906129ca565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561125c573d5f803e3d5ffd5b506113a3565b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112a09190612260565b602060405180830381865afa1580156112bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112df91906129fc565b905080831115611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90612a97565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b815260040161135f929190612ab5565b6020604051808303815f875af115801561137b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139f9190612b06565b5050505b5050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6114316115eb565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b690612819565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490612ba1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165790612c2f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c590612cbd565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117a89190612115565b60405180910390a3505050565b5f81836117c29190612cdb565b905092915050565b5f81836117d79190612d49565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184490612de9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290612e77565b60405180910390fd5b6118c6838383611f46565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194090612f05565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119d7919061279c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a3b9190612115565b60405180910390a3611a4e848484611f4b565b50505050565b5f8183611a61919061279c565b905092915050565b5f8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600190505b60048160ff1611611d12575f6009600183611acc9190612f23565b60ff1681548110611ae057611adf6128c5565b5b905f5260205f20015490505f611af4610951565b600a611b009190613086565b600a600185611b0f9190612f23565b60ff1681548110611b2357611b226128c5565b5b905f5260205f200154611b369190612cdb565b9050818410611cf6578094505f73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf157600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8460ff1660ff1681526020019081526020015f205f9054906101000a900460ff16611cf0576001600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8560ff1660ff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636112e8ac876001866040518463ffffffff1660e01b8152600401611cc293929190613109565b5f604051808303815f87803b158015611cd9575f80fd5b505af1158015611ceb573d5f803e3d5ffd5b505050505b5b611cfd565b5050611d12565b50508080611d0a9061313e565b915050611ab1565b505f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905080831115611e0a575f3090505f8285611d6d9190613166565b905080611d7983610afe565b1015611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db190613209565b60405180910390fd5b84600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e078287836117df565b50505b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7590612de9565b60405180910390fd5b611e8782611f50565b8015611ede5750611e96610c96565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611edd575060075f9054906101000a900460ff16155b5b15611f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1590613297565b60405180910390fd5b5f8103611f3557611f3083835f6117df565b611f41565b611f408383836117df565b5b505050565b505050565b505050565b5f80823b90505f8163ffffffff1611915050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611fa982611f67565b611fb38185611f71565b9350611fc3818560208601611f81565b611fcc81611f8f565b840191505092915050565b5f6020820190508181035f830152611fef8184611f9f565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61203182612008565b9050919050565b61204181612027565b811461204b575f80fd5b50565b5f8135905061205c81612038565b92915050565b5f819050919050565b61207481612062565b811461207e575f80fd5b50565b5f8135905061208f8161206b565b92915050565b5f80604083850312156120ab576120aa612000565b5b5f6120b88582860161204e565b92505060206120c985828601612081565b9150509250929050565b5f8115159050919050565b6120e7816120d3565b82525050565b5f6020820190506121005f8301846120de565b92915050565b61210f81612062565b82525050565b5f6020820190506121285f830184612106565b92915050565b5f805f6060848603121561214557612144612000565b5b5f6121528682870161204e565b93505060206121638682870161204e565b925050604061217486828701612081565b9150509250925092565b5f60ff82169050919050565b6121938161217e565b82525050565b5f6020820190506121ac5f83018461218a565b92915050565b5f602082840312156121c7576121c6612000565b5b5f6121d48482850161204e565b91505092915050565b5f819050919050565b5f6122006121fb6121f684612008565b6121dd565b612008565b9050919050565b5f612211826121e6565b9050919050565b5f61222282612207565b9050919050565b61223281612218565b82525050565b5f60208201905061224b5f830184612229565b92915050565b61225a81612027565b82525050565b5f6020820190506122735f830184612251565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6122b382611f8f565b810181811067ffffffffffffffff821117156122d2576122d161227d565b5b80604052505050565b5f6122e4611ff7565b90506122f082826122aa565b919050565b5f67ffffffffffffffff82111561230f5761230e61227d565b5b602082029050602081019050919050565b5f80fd5b5f612336612331846122f5565b6122db565b9050808382526020820190506020840283018581111561235957612358612320565b5b835b81811015612382578061236e888261204e565b84526020840193505060208101905061235b565b5050509392505050565b5f82601f8301126123a05761239f612279565b5b81356123b0848260208601612324565b91505092915050565b5f80604083850312156123cf576123ce612000565b5b5f83013567ffffffffffffffff8111156123ec576123eb612004565b5b6123f88582860161238c565b925050602061240985828601612081565b9150509250929050565b5f806040838503121561242957612428612000565b5b5f6124368582860161204e565b92505060206124478582860161204e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061249557607f821691505b6020821081036124a8576124a7612451565b5b50919050565b7f5075626c69632073616c652068617320656e64656400000000000000000000005f82015250565b5f6124e2601583611f71565b91506124ed826124ae565b602082019050919050565b5f6020820190508181035f83015261250f816124d6565b9050919050565b7f4f776e65722061646472657373206973207a65726f2c206f7065726174696f6e5f8201527f206e6f7420616c6c6f7765640000000000000000000000000000000000000000602082015250565b5f612570602c83611f71565b915061257b82612516565b604082019050919050565b5f6020820190508181035f83015261259d81612564565b9050919050565b7f496e73756666696369656e74204554482073656e7400000000000000000000005f82015250565b5f6125d8601583611f71565b91506125e3826125a4565b602082019050919050565b5f6020820190508181035f830152612605816125cc565b9050919050565b7f4f776e657220646f6573206e6f74206861766520656e6f75676820746f6b656e5f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612666602183611f71565b91506126718261260c565b604082019050919050565b5f6020820190508181035f8301526126938161265a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6126d182612062565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127035761270261269a565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612768602883611f71565b91506127738261270e565b604082019050919050565b5f6020820190508181035f8301526127958161275c565b9050919050565b5f6127a682612062565b91506127b183612062565b92508282019050808211156127c9576127c861269a565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612803602083611f71565b915061280e826127cf565b602082019050919050565b5f6020820190508181035f830152612830816127f7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612891602583611f71565b915061289c82612837565b604082019050919050565b5f6020820190508181035f8301526128be81612885565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e65722063616e6e6f7420636c61696d20636f6e747261637427732062615f8201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b5f61294c603783611f71565b9150612957826128f2565b604082019050919050565b5f6020820190508181035f83015261297981612940565b9050919050565b7f496e73756666696369656e7420636f6e74726163742062616c616e63650000005f82015250565b5f6129b4601d83611f71565b91506129bf82612980565b602082019050919050565b5f6020820190508181035f8301526129e1816129a8565b9050919050565b5f815190506129f68161206b565b92915050565b5f60208284031215612a1157612a10612000565b5b5f612a1e848285016129e8565b91505092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f5f8201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b5f612a81602683611f71565b9150612a8c82612a27565b604082019050919050565b5f6020820190508181035f830152612aae81612a75565b9050919050565b5f604082019050612ac85f830185612251565b612ad56020830184612106565b9392505050565b612ae5816120d3565b8114612aef575f80fd5b50565b5f81519050612b0081612adc565b92915050565b5f60208284031215612b1b57612b1a612000565b5b5f612b2884828501612af2565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612b8b602683611f71565b9150612b9682612b31565b604082019050919050565b5f6020820190508181035f830152612bb881612b7f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c19602483611f71565b9150612c2482612bbf565b604082019050919050565b5f6020820190508181035f830152612c4681612c0d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612ca7602283611f71565b9150612cb282612c4d565b604082019050919050565b5f6020820190508181035f830152612cd481612c9b565b9050919050565b5f612ce582612062565b9150612cf083612062565b9250828202612cfe81612062565b91508282048414831517612d1557612d1461269a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d5382612062565b9150612d5e83612062565b925082612d6e57612d6d612d1c565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dd3602583611f71565b9150612dde82612d79565b604082019050919050565b5f6020820190508181035f830152612e0081612dc7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e61602383611f71565b9150612e6c82612e07565b604082019050919050565b5f6020820190508181035f830152612e8e81612e55565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612eef602683611f71565b9150612efa82612e95565b604082019050919050565b5f6020820190508181035f830152612f1c81612ee3565b9050919050565b5f612f2d8261217e565b9150612f388361217e565b9250828203905060ff811115612f5157612f5061269a565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612fac57808604811115612f8857612f8761269a565b5b6001851615612f975780820291505b8081029050612fa585612f57565b9450612f6c565b94509492505050565b5f82612fc4576001905061307f565b81612fd1575f905061307f565b8160018114612fe75760028114612ff157613020565b600191505061307f565b60ff8411156130035761300261269a565b5b8360020a91508482111561301a5761301961269a565b5b5061307f565b5060208310610133831016604e8410600b84101617156130555782820a9050838111156130505761304f61269a565b5b61307f565b6130628484846001612f63565b925090508184048111156130795761307861269a565b5b81810290505b9392505050565b5f61309082612062565b915061309b8361217e565b92506130c87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612fb5565b905092915050565b5f819050919050565b5f6130f36130ee6130e9846130d0565b6121dd565b612062565b9050919050565b613103816130d9565b82525050565b5f60608201905061311c5f830186612251565b61312960208301856130fa565b613136604083018461218a565b949350505050565b5f6131488261217e565b915060ff820361315b5761315a61269a565b5b600182019050919050565b5f61317082612062565b915061317b83612062565b92508282039050818111156131935761319261269a565b5b92915050565b7f4f776e657220646f6573206e6f74206861766520656e6f75676820746f6b656e5f8201527f7320666f72207265776172647300000000000000000000000000000000000000602082015250565b5f6131f3602d83611f71565b91506131fe82613199565b604082019050919050565b5f6020820190508181035f830152613220816131e7565b9050919050565b7f4f6e6c7920746865206f776e65722063616e20616464206c69717569646974795f8201527f206265666f7265207075626c69632073616c6520656e64732e00000000000000602082015250565b5f613281603983611f71565b915061328c82613227565b604082019050919050565b5f6020820190508181035f8301526132ae81613275565b905091905056fea26469706673582212203a555722e898968c81c0791542a61a30917b6e541379e1c1a4b4cf9fcceaf1ca64736f6c634300081a0033
Deployed Bytecode Sourcemap
12755:6209:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6590:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7504:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14017:1029;;;:::i;:::-;;6911:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7681:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12958:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6810:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8262:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16959:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13632:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7027:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5774:148;;;;;;;;;;;;;:::i;:::-;;5560:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6698:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8485:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7162:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17102:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17427:158;;;;;;;;;;;;;:::i;:::-;;18298:657;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7345:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5930:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6590:100;6644:13;6677:5;6670:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6590:100;:::o;7504:169::-;7587:4;7604:39;7613:12;:10;:12::i;:::-;7627:7;7636:6;7604:8;:39::i;:::-;7661:4;7654:11;;7504:169;;;;:::o;14017:1029::-;14070:17;;;;;;;;;;;14069:18;14061:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14151:1;14132:21;;:7;:5;:7::i;:::-;:21;;;14124:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;12942:9;14221;:26;;14213:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14357:20;14380:44;12942:9;14380:25;14394:10;;14380:9;:13;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;14357:67;;14435:23;14469:4;14435:39;;14523:12;14493:26;14503:15;14493:9;:26::i;:::-;:42;;14485:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14631:58;14647:15;14664:10;14676:12;14631:15;:58::i;:::-;14788:42;14820:9;14788:15;:27;14804:10;14788:27;;;;;;;;;;;;;;;;:31;;:42;;;;:::i;:::-;14758:15;:27;14774:10;14758:27;;;;;;;;;;;;;;;:72;;;;14920:26;14935:10;14920:14;:26::i;:::-;14957:12;;:14;;;;;;;;;:::i;:::-;;;;;;15028:9;15016:10;14987:51;;15002:12;;14987:51;;;;;;;;;;14050:996;;14017:1029::o;6911:108::-;6972:7;6999:12;;6992:19;;6911:108;:::o;7681:573::-;7821:4;7838:24;7865:11;:19;7877:6;7865:19;;;;;;;;;;;;;;;:33;7885:12;:10;:12::i;:::-;7865:33;;;;;;;;;;;;;;;;7838:60;;7933:17;7913:16;:37;7909:265;;7995:6;7975:16;:26;;7967:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8090:57;8099:6;8107:12;:10;:12::i;:::-;8140:6;8121:16;:25;8090:8;:57::i;:::-;7909:265;8186:36;8196:6;8204:9;8215:6;8186:9;:36::i;:::-;8242:4;8235:11;;;7681:573;;;;;:::o;12958:37::-;;;;;;;;;;;;;:::o;6810:93::-;6868:5;6893:2;6886:9;;6810:93;:::o;8262:215::-;8350:4;8367:80;8376:12;:10;:12::i;:::-;8390:7;8436:10;8399:11;:25;8411:12;:10;:12::i;:::-;8399:25;;;;;;;;;;;;;;;:34;8425:7;8399:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8367:8;:80::i;:::-;8465:4;8458:11;;8262:215;;;;:::o;16959:129::-;5697:12;:10;:12::i;:::-;5687:22;;:6;;;;;;;;;;;:22;;;5679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17070:9:::1;17032:21;;:48;;;;;;;;;;;;;;;;;;16959:129:::0;:::o;13632:42::-;;;;;;;;;;;;;:::o;7027:127::-;7101:7;7128:9;:18;7138:7;7128:18;;;;;;;;;;;;;;;;7121:25;;7027:127;;;:::o;5774:148::-;5697:12;:10;:12::i;:::-;5687:22;;:6;;;;;;;;;;;:22;;;5679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5881:1:::1;5844:40;;5865:6;;;;;;;;;;;5844:40;;;;;;;;;;;;5912:1;5895:6;;:19;;;;;;;;;;;;;;;;;;5774:148::o:0;5560:79::-;5598:7;5625:6;;;;;;;;;;;5618:13;;5560:79;:::o;6698:104::-;6754:13;6787:7;6780:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6698:104;:::o;8485:413::-;8578:4;8595:24;8622:11;:25;8634:12;:10;:12::i;:::-;8622:25;;;;;;;;;;;;;;;:34;8648:7;8622:34;;;;;;;;;;;;;;;;8595:61;;8695:15;8675:16;:35;;8667:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8788:67;8797:12;:10;:12::i;:::-;8811:7;8839:15;8820:16;:34;8788:8;:67::i;:::-;8886:4;8879:11;;;8485:413;;;;:::o;7162:175::-;7248:4;7265:42;7275:12;:10;:12::i;:::-;7289:9;7300:6;7265:9;:42::i;:::-;7325:4;7318:11;;7162:175;;;;:::o;17102:317::-;5697:12;:10;:12::i;:::-;5687:22;;:6;;;;;;;;;;;:22;;;5679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17225:1:::1;17206:21;;:7;:5;:7::i;:::-;:21;;::::0;17198:78:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17292:6;17287:125;17308:10;:17;17304:1;:21;17287:125;;;17347:53;17371:4;17378:10;17389:1;17378:13;;;;;;;;:::i;:::-;;;;;;;;17393:6;17347:15;:53::i;:::-;17327:3;;;;;;;17287:125;;;;17102:317:::0;;:::o;17427:158::-;5697:12;:10;:12::i;:::-;5687:22;;:6;;;;;;;;;;;:22;;;5679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17499:17:::1;;;;;;;;;;;17498:18;17490:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17573:4;17553:17;;:24;;;;;;;;;;;;;;;;;;17427:158::o:0;18298:657::-;5697:12;:10;:12::i;:::-;5687:22;;:6;;;;;;;;;;;:22;;;5679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18410:4:::1;18393:22;;:5;:22;;::::0;18385:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18517:1;18500:19;;:5;:19;;::::0;18496:197:::1;;18554:21;18544:6;:31;;18536:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18632:10;18624:28;;:36;18653:6;18624:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18675:7;;18496:197;18705:17;18732:5;18705:33;;18749:23;18775:10;:20;;;18804:4;18775:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18749:61;;18839:15;18829:6;:25;;18821:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;18908:10;:19;;;18928:10;18940:6;18908:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18374:581;;5757:1;18298:657:::0;;:::o;7345:151::-;7434:7;7461:11;:18;7473:5;7461:18;;;;;;;;;;;;;;;:27;7480:7;7461:27;;;;;;;;;;;;;;;;7454:34;;7345:151;;;;:::o;5930:244::-;5697:12;:10;:12::i;:::-;5687:22;;:6;;;;;;;;;;;:22;;;5679:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6039:1:::1;6019:22;;:8;:22;;::::0;6011:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6129:8;6100:38;;6121:6;;;;;;;;;;;6100:38;;;;;;;;;;;;6158:8;6149:6;;:17;;;;;;;;;;;;;;;;;;5930:244:::0;:::o;4883:98::-;4936:7;4963:10;4956:17;;4883:98;:::o;11609:390::-;11762:1;11745:19;;:5;:19;;;11737:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11843:1;11824:21;;:7;:21;;;11816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11937:6;11907:11;:18;11919:5;11907:18;;;;;;;;;;;;;;;:27;11926:7;11907:27;;;;;;;;;;;;;;;:36;;;;11975:7;11959:32;;11968:5;11959:32;;;11984:6;11959:32;;;;;;:::i;:::-;;;;;;;;11609:390;;;:::o;1554:98::-;1612:7;1643:1;1639;:5;;;;:::i;:::-;1632:12;;1554:98;;;;:::o;1660:::-;1718:7;1749:1;1745;:5;;;;:::i;:::-;1738:12;;1660:98;;;;:::o;8906:733::-;9064:1;9046:20;;:6;:20;;;9038:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9148:1;9127:23;;:9;:23;;;9119:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9203:47;9224:6;9232:9;9243:6;9203:20;:47::i;:::-;9263:21;9287:9;:17;9297:6;9287:17;;;;;;;;;;;;;;;;9263:41;;9340:6;9323:13;:23;;9315:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9461:6;9445:13;:22;9425:9;:17;9435:6;9425:17;;;;;;;;;;;;;;;:42;;;;9513:6;9489:9;:20;9499:9;9489:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9554:9;9537:35;;9546:6;9537:35;;;9565:6;9537:35;;;;;;:::i;:::-;;;;;;;;9585:46;9605:6;9613:9;9624:6;9585:19;:46::i;:::-;9027:612;8906:733;;;:::o;1342:98::-;1400:7;1431:1;1427;:5;;;;:::i;:::-;1420:12;;1342:98;;;;:::o;15054:1895::-;15112:19;15183;15205:15;:21;15221:4;15205:21;;;;;;;;;;;;;;;;15183:43;;15310:11;15324:1;15310:15;;15305:909;15336:1;15327:5;:10;;;15305:909;;15363:17;15383:16;15408:1;15400:5;:9;;;;:::i;:::-;15383:27;;;;;;;;;;:::i;:::-;;;;;;;;;;15363:47;;15425:14;15474:10;:8;:10::i;:::-;15470:2;:14;;;;:::i;:::-;15442:13;15464:1;15456:5;:9;;;;:::i;:::-;15442:24;;;;;;;;;;:::i;:::-;;;;;;;;;;:43;;;;:::i;:::-;15425:60;;15572:9;15557:11;:24;15553:650;;15657:6;15643:20;;15788:1;15746:44;;15754:21;;;;;;;;;;;15746:44;;;15742:346;;15820:12;:18;15833:4;15820:18;;;;;;;;;;;;;;;:25;15839:5;15820:25;;;;;;;;;;;;;;;;;;;;;;;;;15815:254;;15902:4;15874:12;:18;15887:4;15874:18;;;;;;;;;;;;;;;:25;15893:5;15874:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15979:21;;;;;;;;;;;:26;;;16006:4;16012:1;16015:5;15979:42;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15815:254;15742:346;15553:650;;;16128:5;;;;15553:650;15348:866;;15339:7;;;;;:::i;:::-;;;;15305:909;;;;16286:21;16310:14;:20;16325:4;16310:20;;;;;;;;;;;;;;;;16286:44;;16468:13;16454:11;:27;16450:492;;;16498:23;16532:4;16498:39;;16552:20;16589:13;16575:11;:27;;;;:::i;:::-;16552:50;;16683:12;16653:26;16663:15;16653:9;:26::i;:::-;:42;;16645:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;16783:11;16760:14;:20;16775:4;16760:20;;;;;;;;;;;;;;;:34;;;;16855:52;16871:15;16888:4;16894:12;16855:15;:52::i;:::-;16483:459;;16450:492;15101:1848;;;15054:1895;:::o;17794:493::-;17907:1;17891:18;;:4;:18;;;17883:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17976:14;17987:2;17976:10;:14::i;:::-;:57;;;;;18003:7;:5;:7::i;:::-;17995:15;;:4;:15;;;;:37;;;;;18015:17;;;;;;;;;;;18014:18;17995:37;17976:57;17972:157;;;18050:67;;;;;;;;;;:::i;:::-;;;;;;;;17972:157;18155:1;18145:6;:11;18141:93;;18173:28;18189:4;18195:2;18199:1;18173:15;:28::i;:::-;18216:7;;18141:93;18246:33;18262:4;18268:2;18272:6;18246:15;:33::i;:::-;17794:493;;;;:::o;12388:125::-;;;;:::o;12521:124::-;;;;:::o;17593:193::-;17651:4;17668:11;17734:5;17722:18;17714:26;;17776:1;17769:4;:8;;;17761:17;;;17593:193;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:60::-;5109:3;5130:5;5123:12;;5081:60;;;:::o;5147:142::-;5197:9;5230:53;5248:34;5257:24;5275:5;5257:24;:::i;:::-;5248:34;:::i;:::-;5230:53;:::i;:::-;5217:66;;5147:142;;;:::o;5295:126::-;5345:9;5378:37;5409:5;5378:37;:::i;:::-;5365:50;;5295:126;;;:::o;5427:148::-;5499:9;5532:37;5563:5;5532:37;:::i;:::-;5519:50;;5427:148;;;:::o;5581:175::-;5690:59;5743:5;5690:59;:::i;:::-;5685:3;5678:72;5581:175;;:::o;5762:266::-;5877:4;5915:2;5904:9;5900:18;5892:26;;5928:93;6018:1;6007:9;6003:17;5994:6;5928:93;:::i;:::-;5762:266;;;;:::o;6034:118::-;6121:24;6139:5;6121:24;:::i;:::-;6116:3;6109:37;6034:118;;:::o;6158:222::-;6251:4;6289:2;6278:9;6274:18;6266:26;;6302:71;6370:1;6359:9;6355:17;6346:6;6302:71;:::i;:::-;6158:222;;;;:::o;6386:117::-;6495:1;6492;6485:12;6509:180;6557:77;6554:1;6547:88;6654:4;6651:1;6644:15;6678:4;6675:1;6668:15;6695:281;6778:27;6800:4;6778:27;:::i;:::-;6770:6;6766:40;6908:6;6896:10;6893:22;6872:18;6860:10;6857:34;6854:62;6851:88;;;6919:18;;:::i;:::-;6851:88;6959:10;6955:2;6948:22;6738:238;6695:281;;:::o;6982:129::-;7016:6;7043:20;;:::i;:::-;7033:30;;7072:33;7100:4;7092:6;7072:33;:::i;:::-;6982:129;;;:::o;7117:311::-;7194:4;7284:18;7276:6;7273:30;7270:56;;;7306:18;;:::i;:::-;7270:56;7356:4;7348:6;7344:17;7336:25;;7416:4;7410;7406:15;7398:23;;7117:311;;;:::o;7434:117::-;7543:1;7540;7533:12;7574:710;7670:5;7695:81;7711:64;7768:6;7711:64;:::i;:::-;7695:81;:::i;:::-;7686:90;;7796:5;7825:6;7818:5;7811:21;7859:4;7852:5;7848:16;7841:23;;7912:4;7904:6;7900:17;7892:6;7888:30;7941:3;7933:6;7930:15;7927:122;;;7960:79;;:::i;:::-;7927:122;8075:6;8058:220;8092:6;8087:3;8084:15;8058:220;;;8167:3;8196:37;8229:3;8217:10;8196:37;:::i;:::-;8191:3;8184:50;8263:4;8258:3;8254:14;8247:21;;8134:144;8118:4;8113:3;8109:14;8102:21;;8058:220;;;8062:21;7676:608;;7574:710;;;;;:::o;8307:370::-;8378:5;8427:3;8420:4;8412:6;8408:17;8404:27;8394:122;;8435:79;;:::i;:::-;8394:122;8552:6;8539:20;8577:94;8667:3;8659:6;8652:4;8644:6;8640:17;8577:94;:::i;:::-;8568:103;;8384:293;8307:370;;;;:::o;8683:684::-;8776:6;8784;8833:2;8821:9;8812:7;8808:23;8804:32;8801:119;;;8839:79;;:::i;:::-;8801:119;8987:1;8976:9;8972:17;8959:31;9017:18;9009:6;9006:30;9003:117;;;9039:79;;:::i;:::-;9003:117;9144:78;9214:7;9205:6;9194:9;9190:22;9144:78;:::i;:::-;9134:88;;8930:302;9271:2;9297:53;9342:7;9333:6;9322:9;9318:22;9297:53;:::i;:::-;9287:63;;9242:118;8683:684;;;;;:::o;9373:474::-;9441:6;9449;9498:2;9486:9;9477:7;9473:23;9469:32;9466:119;;;9504:79;;:::i;:::-;9466:119;9624:1;9649:53;9694:7;9685:6;9674:9;9670:22;9649:53;:::i;:::-;9639:63;;9595:117;9751:2;9777:53;9822:7;9813:6;9802:9;9798:22;9777:53;:::i;:::-;9767:63;;9722:118;9373:474;;;;;:::o;9853:180::-;9901:77;9898:1;9891:88;9998:4;9995:1;9988:15;10022:4;10019:1;10012:15;10039:320;10083:6;10120:1;10114:4;10110:12;10100:22;;10167:1;10161:4;10157:12;10188:18;10178:81;;10244:4;10236:6;10232:17;10222:27;;10178:81;10306:2;10298:6;10295:14;10275:18;10272:38;10269:84;;10325:18;;:::i;:::-;10269:84;10090:269;10039:320;;;:::o;10365:171::-;10505:23;10501:1;10493:6;10489:14;10482:47;10365:171;:::o;10542:366::-;10684:3;10705:67;10769:2;10764:3;10705:67;:::i;:::-;10698:74;;10781:93;10870:3;10781:93;:::i;:::-;10899:2;10894:3;10890:12;10883:19;;10542:366;;;:::o;10914:419::-;11080:4;11118:2;11107:9;11103:18;11095:26;;11167:9;11161:4;11157:20;11153:1;11142:9;11138:17;11131:47;11195:131;11321:4;11195:131;:::i;:::-;11187:139;;10914:419;;;:::o;11339:231::-;11479:34;11475:1;11467:6;11463:14;11456:58;11548:14;11543:2;11535:6;11531:15;11524:39;11339:231;:::o;11576:366::-;11718:3;11739:67;11803:2;11798:3;11739:67;:::i;:::-;11732:74;;11815:93;11904:3;11815:93;:::i;:::-;11933:2;11928:3;11924:12;11917:19;;11576:366;;;:::o;11948:419::-;12114:4;12152:2;12141:9;12137:18;12129:26;;12201:9;12195:4;12191:20;12187:1;12176:9;12172:17;12165:47;12229:131;12355:4;12229:131;:::i;:::-;12221:139;;11948:419;;;:::o;12373:171::-;12513:23;12509:1;12501:6;12497:14;12490:47;12373:171;:::o;12550:366::-;12692:3;12713:67;12777:2;12772:3;12713:67;:::i;:::-;12706:74;;12789:93;12878:3;12789:93;:::i;:::-;12907:2;12902:3;12898:12;12891:19;;12550:366;;;:::o;12922:419::-;13088:4;13126:2;13115:9;13111:18;13103:26;;13175:9;13169:4;13165:20;13161:1;13150:9;13146:17;13139:47;13203:131;13329:4;13203:131;:::i;:::-;13195:139;;12922:419;;;:::o;13347:220::-;13487:34;13483:1;13475:6;13471:14;13464:58;13556:3;13551:2;13543:6;13539:15;13532:28;13347:220;:::o;13573:366::-;13715:3;13736:67;13800:2;13795:3;13736:67;:::i;:::-;13729:74;;13812:93;13901:3;13812:93;:::i;:::-;13930:2;13925:3;13921:12;13914:19;;13573:366;;;:::o;13945:419::-;14111:4;14149:2;14138:9;14134:18;14126:26;;14198:9;14192:4;14188:20;14184:1;14173:9;14169:17;14162:47;14226:131;14352:4;14226:131;:::i;:::-;14218:139;;13945:419;;;:::o;14370:180::-;14418:77;14415:1;14408:88;14515:4;14512:1;14505:15;14539:4;14536:1;14529:15;14556:233;14595:3;14618:24;14636:5;14618:24;:::i;:::-;14609:33;;14664:66;14657:5;14654:77;14651:103;;14734:18;;:::i;:::-;14651:103;14781:1;14774:5;14770:13;14763:20;;14556:233;;;:::o;14795:227::-;14935:34;14931:1;14923:6;14919:14;14912:58;15004:10;14999:2;14991:6;14987:15;14980:35;14795:227;:::o;15028:366::-;15170:3;15191:67;15255:2;15250:3;15191:67;:::i;:::-;15184:74;;15267:93;15356:3;15267:93;:::i;:::-;15385:2;15380:3;15376:12;15369:19;;15028:366;;;:::o;15400:419::-;15566:4;15604:2;15593:9;15589:18;15581:26;;15653:9;15647:4;15643:20;15639:1;15628:9;15624:17;15617:47;15681:131;15807:4;15681:131;:::i;:::-;15673:139;;15400:419;;;:::o;15825:191::-;15865:3;15884:20;15902:1;15884:20;:::i;:::-;15879:25;;15918:20;15936:1;15918:20;:::i;:::-;15913:25;;15961:1;15958;15954:9;15947:16;;15982:3;15979:1;15976:10;15973:36;;;15989:18;;:::i;:::-;15973:36;15825:191;;;;:::o;16022:182::-;16162:34;16158:1;16150:6;16146:14;16139:58;16022:182;:::o;16210:366::-;16352:3;16373:67;16437:2;16432:3;16373:67;:::i;:::-;16366:74;;16449:93;16538:3;16449:93;:::i;:::-;16567:2;16562:3;16558:12;16551:19;;16210:366;;;:::o;16582:419::-;16748:4;16786:2;16775:9;16771:18;16763:26;;16835:9;16829:4;16825:20;16821:1;16810:9;16806:17;16799:47;16863:131;16989:4;16863:131;:::i;:::-;16855:139;;16582:419;;;:::o;17007:224::-;17147:34;17143:1;17135:6;17131:14;17124:58;17216:7;17211:2;17203:6;17199:15;17192:32;17007:224;:::o;17237:366::-;17379:3;17400:67;17464:2;17459:3;17400:67;:::i;:::-;17393:74;;17476:93;17565:3;17476:93;:::i;:::-;17594:2;17589:3;17585:12;17578:19;;17237:366;;;:::o;17609:419::-;17775:4;17813:2;17802:9;17798:18;17790:26;;17862:9;17856:4;17852:20;17848:1;17837:9;17833:17;17826:47;17890:131;18016:4;17890:131;:::i;:::-;17882:139;;17609:419;;;:::o;18034:180::-;18082:77;18079:1;18072:88;18179:4;18176:1;18169:15;18203:4;18200:1;18193:15;18220:242;18360:34;18356:1;18348:6;18344:14;18337:58;18429:25;18424:2;18416:6;18412:15;18405:50;18220:242;:::o;18468:366::-;18610:3;18631:67;18695:2;18690:3;18631:67;:::i;:::-;18624:74;;18707:93;18796:3;18707:93;:::i;:::-;18825:2;18820:3;18816:12;18809:19;;18468:366;;;:::o;18840:419::-;19006:4;19044:2;19033:9;19029:18;19021:26;;19093:9;19087:4;19083:20;19079:1;19068:9;19064:17;19057:47;19121:131;19247:4;19121:131;:::i;:::-;19113:139;;18840:419;;;:::o;19265:179::-;19405:31;19401:1;19393:6;19389:14;19382:55;19265:179;:::o;19450:366::-;19592:3;19613:67;19677:2;19672:3;19613:67;:::i;:::-;19606:74;;19689:93;19778:3;19689:93;:::i;:::-;19807:2;19802:3;19798:12;19791:19;;19450:366;;;:::o;19822:419::-;19988:4;20026:2;20015:9;20011:18;20003:26;;20075:9;20069:4;20065:20;20061:1;20050:9;20046:17;20039:47;20103:131;20229:4;20103:131;:::i;:::-;20095:139;;19822:419;;;:::o;20247:143::-;20304:5;20335:6;20329:13;20320:22;;20351:33;20378:5;20351:33;:::i;:::-;20247:143;;;;:::o;20396:351::-;20466:6;20515:2;20503:9;20494:7;20490:23;20486:32;20483:119;;;20521:79;;:::i;:::-;20483:119;20641:1;20666:64;20722:7;20713:6;20702:9;20698:22;20666:64;:::i;:::-;20656:74;;20612:128;20396:351;;;;:::o;20753:225::-;20893:34;20889:1;20881:6;20877:14;20870:58;20962:8;20957:2;20949:6;20945:15;20938:33;20753:225;:::o;20984:366::-;21126:3;21147:67;21211:2;21206:3;21147:67;:::i;:::-;21140:74;;21223:93;21312:3;21223:93;:::i;:::-;21341:2;21336:3;21332:12;21325:19;;20984:366;;;:::o;21356:419::-;21522:4;21560:2;21549:9;21545:18;21537:26;;21609:9;21603:4;21599:20;21595:1;21584:9;21580:17;21573:47;21637:131;21763:4;21637:131;:::i;:::-;21629:139;;21356:419;;;:::o;21781:332::-;21902:4;21940:2;21929:9;21925:18;21917:26;;21953:71;22021:1;22010:9;22006:17;21997:6;21953:71;:::i;:::-;22034:72;22102:2;22091:9;22087:18;22078:6;22034:72;:::i;:::-;21781:332;;;;;:::o;22119:116::-;22189:21;22204:5;22189:21;:::i;:::-;22182:5;22179:32;22169:60;;22225:1;22222;22215:12;22169:60;22119:116;:::o;22241:137::-;22295:5;22326:6;22320:13;22311:22;;22342:30;22366:5;22342:30;:::i;:::-;22241:137;;;;:::o;22384:345::-;22451:6;22500:2;22488:9;22479:7;22475:23;22471:32;22468:119;;;22506:79;;:::i;:::-;22468:119;22626:1;22651:61;22704:7;22695:6;22684:9;22680:22;22651:61;:::i;:::-;22641:71;;22597:125;22384:345;;;;:::o;22735:225::-;22875:34;22871:1;22863:6;22859:14;22852:58;22944:8;22939:2;22931:6;22927:15;22920:33;22735:225;:::o;22966:366::-;23108:3;23129:67;23193:2;23188:3;23129:67;:::i;:::-;23122:74;;23205:93;23294:3;23205:93;:::i;:::-;23323:2;23318:3;23314:12;23307:19;;22966:366;;;:::o;23338:419::-;23504:4;23542:2;23531:9;23527:18;23519:26;;23591:9;23585:4;23581:20;23577:1;23566:9;23562:17;23555:47;23619:131;23745:4;23619:131;:::i;:::-;23611:139;;23338:419;;;:::o;23763:223::-;23903:34;23899:1;23891:6;23887:14;23880:58;23972:6;23967:2;23959:6;23955:15;23948:31;23763:223;:::o;23992:366::-;24134:3;24155:67;24219:2;24214:3;24155:67;:::i;:::-;24148:74;;24231:93;24320:3;24231:93;:::i;:::-;24349:2;24344:3;24340:12;24333:19;;23992:366;;;:::o;24364:419::-;24530:4;24568:2;24557:9;24553:18;24545:26;;24617:9;24611:4;24607:20;24603:1;24592:9;24588:17;24581:47;24645:131;24771:4;24645:131;:::i;:::-;24637:139;;24364:419;;;:::o;24789:221::-;24929:34;24925:1;24917:6;24913:14;24906:58;24998:4;24993:2;24985:6;24981:15;24974:29;24789:221;:::o;25016:366::-;25158:3;25179:67;25243:2;25238:3;25179:67;:::i;:::-;25172:74;;25255:93;25344:3;25255:93;:::i;:::-;25373:2;25368:3;25364:12;25357:19;;25016:366;;;:::o;25388:419::-;25554:4;25592:2;25581:9;25577:18;25569:26;;25641:9;25635:4;25631:20;25627:1;25616:9;25612:17;25605:47;25669:131;25795:4;25669:131;:::i;:::-;25661:139;;25388:419;;;:::o;25813:410::-;25853:7;25876:20;25894:1;25876:20;:::i;:::-;25871:25;;25910:20;25928:1;25910:20;:::i;:::-;25905:25;;25965:1;25962;25958:9;25987:30;26005:11;25987:30;:::i;:::-;25976:41;;26166:1;26157:7;26153:15;26150:1;26147:22;26127:1;26120:9;26100:83;26077:139;;26196:18;;:::i;:::-;26077:139;25861:362;25813:410;;;;:::o;26229:180::-;26277:77;26274:1;26267:88;26374:4;26371:1;26364:15;26398:4;26395:1;26388:15;26415:185;26455:1;26472:20;26490:1;26472:20;:::i;:::-;26467:25;;26506:20;26524:1;26506:20;:::i;:::-;26501:25;;26545:1;26535:35;;26550:18;;:::i;:::-;26535:35;26592:1;26589;26585:9;26580:14;;26415:185;;;;:::o;26606:224::-;26746:34;26742:1;26734:6;26730:14;26723:58;26815:7;26810:2;26802:6;26798:15;26791:32;26606:224;:::o;26836:366::-;26978:3;26999:67;27063:2;27058:3;26999:67;:::i;:::-;26992:74;;27075:93;27164:3;27075:93;:::i;:::-;27193:2;27188:3;27184:12;27177:19;;26836:366;;;:::o;27208:419::-;27374:4;27412:2;27401:9;27397:18;27389:26;;27461:9;27455:4;27451:20;27447:1;27436:9;27432:17;27425:47;27489:131;27615:4;27489:131;:::i;:::-;27481:139;;27208:419;;;:::o;27633:222::-;27773:34;27769:1;27761:6;27757:14;27750:58;27842:5;27837:2;27829:6;27825:15;27818:30;27633:222;:::o;27861:366::-;28003:3;28024:67;28088:2;28083:3;28024:67;:::i;:::-;28017:74;;28100:93;28189:3;28100:93;:::i;:::-;28218:2;28213:3;28209:12;28202:19;;27861:366;;;:::o;28233:419::-;28399:4;28437:2;28426:9;28422:18;28414:26;;28486:9;28480:4;28476:20;28472:1;28461:9;28457:17;28450:47;28514:131;28640:4;28514:131;:::i;:::-;28506:139;;28233:419;;;:::o;28658:225::-;28798:34;28794:1;28786:6;28782:14;28775:58;28867:8;28862:2;28854:6;28850:15;28843:33;28658:225;:::o;28889:366::-;29031:3;29052:67;29116:2;29111:3;29052:67;:::i;:::-;29045:74;;29128:93;29217:3;29128:93;:::i;:::-;29246:2;29241:3;29237:12;29230:19;;28889:366;;;:::o;29261:419::-;29427:4;29465:2;29454:9;29450:18;29442:26;;29514:9;29508:4;29504:20;29500:1;29489:9;29485:17;29478:47;29542:131;29668:4;29542:131;:::i;:::-;29534:139;;29261:419;;;:::o;29686:191::-;29724:4;29744:18;29760:1;29744:18;:::i;:::-;29739:23;;29776:18;29792:1;29776:18;:::i;:::-;29771:23;;29818:1;29815;29811:9;29803:17;;29842:4;29836;29833:14;29830:40;;;29850:18;;:::i;:::-;29830:40;29686:191;;;;:::o;29883:102::-;29925:8;29972:5;29969:1;29965:13;29944:34;;29883:102;;;:::o;29991:848::-;30052:5;30059:4;30083:6;30074:15;;30107:5;30098:14;;30121:712;30142:1;30132:8;30129:15;30121:712;;;30237:4;30232:3;30228:14;30222:4;30219:24;30216:50;;;30246:18;;:::i;:::-;30216:50;30296:1;30286:8;30282:16;30279:451;;;30711:4;30704:5;30700:16;30691:25;;30279:451;30761:4;30755;30751:15;30743:23;;30791:32;30814:8;30791:32;:::i;:::-;30779:44;;30121:712;;;29991:848;;;;;;;:::o;30845:1073::-;30899:5;31090:8;31080:40;;31111:1;31102:10;;31113:5;;31080:40;31139:4;31129:36;;31156:1;31147:10;;31158:5;;31129:36;31225:4;31273:1;31268:27;;;;31309:1;31304:191;;;;31218:277;;31268:27;31286:1;31277:10;;31288:5;;;31304:191;31349:3;31339:8;31336:17;31333:43;;;31356:18;;:::i;:::-;31333:43;31405:8;31402:1;31398:16;31389:25;;31440:3;31433:5;31430:14;31427:40;;;31447:18;;:::i;:::-;31427:40;31480:5;;;31218:277;;31604:2;31594:8;31591:16;31585:3;31579:4;31576:13;31572:36;31554:2;31544:8;31541:16;31536:2;31530:4;31527:12;31523:35;31507:111;31504:246;;;31660:8;31654:4;31650:19;31641:28;;31695:3;31688:5;31685:14;31682:40;;;31702:18;;:::i;:::-;31682:40;31735:5;;31504:246;31775:42;31813:3;31803:8;31797:4;31794:1;31775:42;:::i;:::-;31760:57;;;;31849:4;31844:3;31840:14;31833:5;31830:25;31827:51;;;31858:18;;:::i;:::-;31827:51;31907:4;31900:5;31896:16;31887:25;;30845:1073;;;;;;:::o;31924:281::-;31982:5;32006:23;32024:4;32006:23;:::i;:::-;31998:31;;32050:25;32066:8;32050:25;:::i;:::-;32038:37;;32094:104;32131:66;32121:8;32115:4;32094:104;:::i;:::-;32085:113;;31924:281;;;;:::o;32211:85::-;32256:7;32285:5;32274:16;;32211:85;;;:::o;32302:158::-;32360:9;32393:61;32411:42;32420:32;32446:5;32420:32;:::i;:::-;32411:42;:::i;:::-;32393:61;:::i;:::-;32380:74;;32302:158;;;:::o;32466:147::-;32561:45;32600:5;32561:45;:::i;:::-;32556:3;32549:58;32466:147;;:::o;32619:450::-;32772:4;32810:2;32799:9;32795:18;32787:26;;32823:71;32891:1;32880:9;32876:17;32867:6;32823:71;:::i;:::-;32904:80;32980:2;32969:9;32965:18;32956:6;32904:80;:::i;:::-;32994:68;33058:2;33047:9;33043:18;33034:6;32994:68;:::i;:::-;32619:450;;;;;;:::o;33075:167::-;33112:3;33135:22;33151:5;33135:22;:::i;:::-;33126:31;;33179:4;33172:5;33169:15;33166:41;;33187:18;;:::i;:::-;33166:41;33234:1;33227:5;33223:13;33216:20;;33075:167;;;:::o;33248:194::-;33288:4;33308:20;33326:1;33308:20;:::i;:::-;33303:25;;33342:20;33360:1;33342:20;:::i;:::-;33337:25;;33386:1;33383;33379:9;33371:17;;33410:1;33404:4;33401:11;33398:37;;;33415:18;;:::i;:::-;33398:37;33248:194;;;;:::o;33448:232::-;33588:34;33584:1;33576:6;33572:14;33565:58;33657:15;33652:2;33644:6;33640:15;33633:40;33448:232;:::o;33686:366::-;33828:3;33849:67;33913:2;33908:3;33849:67;:::i;:::-;33842:74;;33925:93;34014:3;33925:93;:::i;:::-;34043:2;34038:3;34034:12;34027:19;;33686:366;;;:::o;34058:419::-;34224:4;34262:2;34251:9;34247:18;34239:26;;34311:9;34305:4;34301:20;34297:1;34286:9;34282:17;34275:47;34339:131;34465:4;34339:131;:::i;:::-;34331:139;;34058:419;;;:::o;34483:244::-;34623:34;34619:1;34611:6;34607:14;34600:58;34692:27;34687:2;34679:6;34675:15;34668:52;34483:244;:::o;34733:366::-;34875:3;34896:67;34960:2;34955:3;34896:67;:::i;:::-;34889:74;;34972:93;35061:3;34972:93;:::i;:::-;35090:2;35085:3;35081:12;35074:19;;34733:366;;;:::o;35105:419::-;35271:4;35309:2;35298:9;35294:18;35286:26;;35358:9;35352:4;35348:20;35344:1;35333:9;35329:17;35322:47;35386:131;35512:4;35386:131;:::i;:::-;35378:139;;35105:419;;;:::o
Swarm Source
ipfs://3a555722e898968c81c0791542a61a30917b6e541379e1c1a4b4cf9fcceaf1ca
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.