Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 337 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19886212 | 74 days ago | IN | 0 ETH | 0.00013802 | ||||
Approve | 18712531 | 239 days ago | IN | 0 ETH | 0.0016632 | ||||
Approve | 18340658 | 291 days ago | IN | 0 ETH | 0.00024177 | ||||
Approve | 18328068 | 293 days ago | IN | 0 ETH | 0.0003453 | ||||
Approve | 18263472 | 302 days ago | IN | 0 ETH | 0.00126513 | ||||
Approve | 17991556 | 340 days ago | IN | 0 ETH | 0.00076909 | ||||
Approve | 17891534 | 354 days ago | IN | 0 ETH | 0.00116758 | ||||
Approve | 17875734 | 356 days ago | IN | 0 ETH | 0.00080719 | ||||
Approve | 17870046 | 357 days ago | IN | 0 ETH | 0.00086889 | ||||
Approve | 17805729 | 366 days ago | IN | 0 ETH | 0.00091789 | ||||
Approve | 17795878 | 367 days ago | IN | 0 ETH | 0.00075202 | ||||
Approve | 17781023 | 369 days ago | IN | 0 ETH | 0.00117238 | ||||
Approve | 17732597 | 376 days ago | IN | 0 ETH | 0.00074267 | ||||
Transfer | 17706714 | 380 days ago | IN | 0 ETH | 0.00144818 | ||||
Approve | 17680051 | 383 days ago | IN | 0 ETH | 0.00125673 | ||||
Approve | 17667097 | 385 days ago | IN | 0 ETH | 0.00073847 | ||||
Approve | 17642511 | 389 days ago | IN | 0 ETH | 0.0024992 | ||||
Approve | 17598099 | 395 days ago | IN | 0 ETH | 0.00068126 | ||||
Approve | 17575327 | 398 days ago | IN | 0 ETH | 0.00078194 | ||||
Approve | 17498065 | 409 days ago | IN | 0 ETH | 0.00073018 | ||||
Approve | 17487219 | 410 days ago | IN | 0 ETH | 0.0010867 | ||||
Approve | 17485128 | 411 days ago | IN | 0 ETH | 0.00077282 | ||||
Approve | 17471324 | 413 days ago | IN | 0 ETH | 0.00071393 | ||||
Approve | 17446499 | 416 days ago | IN | 0 ETH | 0.00086443 | ||||
Approve | 17429149 | 419 days ago | IN | 0 ETH | 0.00162441 |
Loading...
Loading
Contract Name:
BabaDoge
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-26 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } 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 { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } 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) private _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); } 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); } 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); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract BabaDoge is ERC20, Ownable { using Address for address payable; using Address for address; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => bool) private _isExcludedFromFees; uint256 public marketingFeeOnBuy; uint256 public marketingFeeOnSell; uint256 public walletToWalletTransferFee; address public marketingWallet; uint256 public swapTokensAtAmount; bool private swapping; event ExcludeFromFees(address indexed account, bool isExcluded); event MarketingWalletChanged(address marketingWallet); event UpdateBuyFees(uint256 marketingFeeOnBuy); event UpdateSellFees(uint256 marketingFeeOnSell); event UpdateWalletToWalletTransferFee(uint256 walletToWalletTransferFee); event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend); event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount); constructor () ERC20("BabaDoge", "BABADOGE") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); marketingFeeOnBuy = 0; marketingFeeOnSell = 0; walletToWalletTransferFee = 0; marketingWallet = 0x9E111A3802431B152b230924598e9030cF9adBFd; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(0xdead)] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[marketingWallet] = true; _mint(owner(), 100000000000000 * (10 ** decimals())); swapTokensAtAmount = totalSupply() / 1000; } receive() external payable { } function claimStuckTokens(address token) external onlyOwner { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } function excludeFromFees(address account, bool excluded) external onlyOwner{ require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function removeFees(uint256 _marketingFeeOnBuy, uint256 _marketingFeeOnSell ) external onlyOwner { marketingFeeOnBuy = _marketingFeeOnBuy; marketingFeeOnSell = _marketingFeeOnSell; } function updateWalletToWalletTransferFee(uint256 _walletToWalletTransferFee) external onlyOwner{ walletToWalletTransferFee = _walletToWalletTransferFee; emit UpdateWalletToWalletTransferFee(walletToWalletTransferFee); } function changeMarketingWallet(address _marketingWallet) external onlyOwner{ require(_marketingWallet != marketingWallet,"Marketing wallet is already that address"); require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address"); marketingWallet = _marketingWallet; emit MarketingWalletChanged(marketingWallet); } //------------------Transfer------------------// function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance > 0 && !swapping && to == uniswapV2Pair) { swapping = true; swapAndSendMarketing(contractTokenBalance); swapping = false; } uint256 _totalFees; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]|| swapping) { _totalFees = 0; } else if (from == uniswapV2Pair) { _totalFees = marketingFeeOnBuy; } else if (to == uniswapV2Pair) { _totalFees = marketingFeeOnSell; } else { _totalFees = walletToWalletTransferFee; } if (_totalFees > 0) { uint256 fees = (amount * _totalFees) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } //------------------Swap------------------// function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{ require(newAmount > totalSupply() / 1000000, "SwapTokensAtAmount must be greater than 0.0001% of total supply"); swapTokensAtAmount = newAmount; emit SwapTokensAtAmountUpdated(swapTokensAtAmount); } function swapAndSendMarketing(uint256 tokenAmount) private { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; payable(marketingWallet).sendValue(newBalance); emit SwapAndSendMarketing(tokenAmount, newBalance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"UpdateWalletToWalletTransferFee","type":"event"},{"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":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"removeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_walletToWalletTransferFee","type":"uint256"}],"name":"updateWalletToWalletTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600881526020017f42616261446f67650000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f42414241444f474500000000000000000000000000000000000000000000000081525081600390816200008f919062000c3e565b508060049081620000a1919062000c3e565b5050506000620000b66200062c60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e2919062000d8f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000270919062000d8f565b6040518363ffffffff1660e01b81526004016200028f92919062000dd2565b6020604051808303816000875af1158015620002af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d5919062000d8f565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ae30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200063460201b60201c565b60006009819055506000600a819055506000600b81905550739e111a3802431b152b230924598e9030cf9adbfd600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000620004316200080560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005ff620005c26200080560201b60201c565b620005d26200082f60201b60201c565b600a620005e0919062000f8f565b655af3107a4000620005f3919062000fe0565b6200083860201b60201c565b6103e862000612620009b060201b60201c565b6200061e91906200105a565b600d819055505050620012ae565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620006a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200069d9062001119565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000718576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200070f90620011b1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620007f89190620011e4565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a19062001251565b60405180910390fd5b620008be60008383620009ba60201b60201c565b8060026000828254620008d2919062001273565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000929919062001273565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009909190620011e4565b60405180910390a3620009ac60008383620009bf60201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a4657607f821691505b60208210810362000a5c5762000a5b620009fe565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ac67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a87565b62000ad2868362000a87565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b1f62000b1962000b138462000aea565b62000af4565b62000aea565b9050919050565b6000819050919050565b62000b3b8362000afe565b62000b5362000b4a8262000b26565b84845462000a94565b825550505050565b600090565b62000b6a62000b5b565b62000b7781848462000b30565b505050565b5b8181101562000b9f5762000b9360008262000b60565b60018101905062000b7d565b5050565b601f82111562000bee5762000bb88162000a62565b62000bc38462000a77565b8101602085101562000bd3578190505b62000beb62000be28562000a77565b83018262000b7c565b50505b505050565b600082821c905092915050565b600062000c136000198460080262000bf3565b1980831691505092915050565b600062000c2e838362000c00565b9150826002028217905092915050565b62000c4982620009c4565b67ffffffffffffffff81111562000c655762000c64620009cf565b5b62000c71825462000a2d565b62000c7e82828562000ba3565b600060209050601f83116001811462000cb6576000841562000ca1578287015190505b62000cad858262000c20565b86555062000d1d565b601f19841662000cc68662000a62565b60005b8281101562000cf05784890151825560018201915060208501945060208101905062000cc9565b8683101562000d10578489015162000d0c601f89168262000c00565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d578262000d2a565b9050919050565b62000d698162000d4a565b811462000d7557600080fd5b50565b60008151905062000d898162000d5e565b92915050565b60006020828403121562000da85762000da762000d25565b5b600062000db88482850162000d78565b91505092915050565b62000dcc8162000d4a565b82525050565b600060408201905062000de9600083018562000dc1565b62000df8602083018462000dc1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e8d5780860481111562000e655762000e6462000dff565b5b600185161562000e755780820291505b808102905062000e858562000e2e565b945062000e45565b94509492505050565b60008262000ea8576001905062000f7b565b8162000eb8576000905062000f7b565b816001811462000ed1576002811462000edc5762000f12565b600191505062000f7b565b60ff84111562000ef15762000ef062000dff565b5b8360020a91508482111562000f0b5762000f0a62000dff565b5b5062000f7b565b5060208310610133831016604e8410600b841016171562000f4c5782820a90508381111562000f465762000f4562000dff565b5b62000f7b565b62000f5b848484600162000e3b565b9250905081840481111562000f755762000f7462000dff565b5b81810290505b9392505050565b600060ff82169050919050565b600062000f9c8262000aea565b915062000fa98362000f82565b925062000fd87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e96565b905092915050565b600062000fed8262000aea565b915062000ffa8362000aea565b92508282026200100a8162000aea565b9150828204841483151762001024576200102362000dff565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010678262000aea565b9150620010748362000aea565b9250826200108757620010866200102b565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200110160248362001092565b91506200110e82620010a3565b604082019050919050565b600060208201905081810360008301526200113481620010f2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200119960228362001092565b9150620011a6826200113b565b604082019050919050565b60006020820190508181036000830152620011cc816200118a565b9050919050565b620011de8162000aea565b82525050565b6000602082019050620011fb6000830184620011d3565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001239601f8362001092565b9150620012468262001201565b602082019050919050565b600060208201905081810360008301526200126c816200122a565b9050919050565b6000620012808262000aea565b91506200128d8362000aea565b9250828201905080821115620012a857620012a762000dff565b5b92915050565b6136e180620012be6000396000f3fe6080604052600436106101bb5760003560e01c806375f0a874116100ec578063c02466681161008a578063dd7e06a611610064578063dd7e06a614610643578063e2f456051461066c578063f2fde38b14610697578063f9d0831a146106c0576101c2565b8063c0246668146105b2578063dc4c7dbc146105db578063dd62ed3e14610606576101c2565b8063a457c2d7116100c6578063a457c2d7146104e6578063a9059cbb14610523578063afa4f3b214610560578063bb85c6d114610589576101c2565b806375f0a874146104655780638da5cb5b1461049057806395d89b41146104bb576101c2565b806349bd5a5e1161015957806364c98c441161013357806364c98c44146103bd578063702509fd146103e657806370a0823114610411578063715018a61461044e576101c2565b806349bd5a5e1461032a5780634fbee193146103555780635fc2e59614610392576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd14610285578063313ce567146102c257806339509351146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106e9565b6040516101e99190612560565b60405180910390f35b3480156101fe57600080fd5b506102196004803603810190610214919061261b565b61077b565b6040516102269190612676565b60405180910390f35b34801561023b57600080fd5b50610244610799565b60405161025191906126f0565b60405180910390f35b34801561026657600080fd5b5061026f6107bf565b60405161027c919061271a565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612735565b6107c9565b6040516102b99190612676565b60405180910390f35b3480156102ce57600080fd5b506102d76108e8565b6040516102e491906127a4565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f919061261b565b6108f1565b6040516103219190612676565b60405180910390f35b34801561033657600080fd5b5061033f61099d565b60405161034c91906127ce565b60405180910390f35b34801561036157600080fd5b5061037c600480360381019061037791906127e9565b6109c3565b6040516103899190612676565b60405180910390f35b34801561039e57600080fd5b506103a7610a19565b6040516103b4919061271a565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190612816565b610a1f565b005b3480156103f257600080fd5b506103fb610af9565b604051610408919061271a565b60405180910390f35b34801561041d57600080fd5b50610438600480360381019061043391906127e9565b610aff565b604051610445919061271a565b60405180910390f35b34801561045a57600080fd5b50610463610b47565b005b34801561047157600080fd5b5061047a610c9f565b60405161048791906127ce565b60405180910390f35b34801561049c57600080fd5b506104a5610cc5565b6040516104b291906127ce565b60405180910390f35b3480156104c757600080fd5b506104d0610cef565b6040516104dd9190612560565b60405180910390f35b3480156104f257600080fd5b5061050d6004803603810190610508919061261b565b610d81565b60405161051a9190612676565b60405180910390f35b34801561052f57600080fd5b5061054a6004803603810190610545919061261b565b610e6c565b6040516105579190612676565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190612816565b610e8a565b005b34801561059557600080fd5b506105b060048036038101906105ab91906127e9565b610fbb565b005b3480156105be57600080fd5b506105d960048036038101906105d4919061286f565b6111ee565b005b3480156105e757600080fd5b506105f06113c0565b6040516105fd919061271a565b60405180910390f35b34801561061257600080fd5b5061062d600480360381019061062891906128af565b6113c6565b60405161063a919061271a565b60405180910390f35b34801561064f57600080fd5b5061066a600480360381019061066591906128ef565b61144d565b005b34801561067857600080fd5b506106816114f6565b60405161068e919061271a565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b991906127e9565b6114fc565b005b3480156106cc57600080fd5b506106e760048036038101906106e291906127e9565b6116c2565b005b6060600380546106f89061295e565b80601f01602080910402602001604051908101604052809291908181526020018280546107249061295e565b80156107715780601f1061074657610100808354040283529160200191610771565b820191906000526020600020905b81548152906001019060200180831161075457829003601f168201915b5050505050905090565b600061078f610788611931565b8484611939565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610815611931565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108d157828110156108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b390612a01565b60405180910390fd5b6108d0856108c8611931565b858403611939565b5b6108dc858585611b02565b60019150509392505050565b60006012905090565b60006109936108fe611931565b84846001600061090c611931565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461098e9190612a50565b611939565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b610a27611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aad90612ad0565b60405180910390fd5b80600b819055507f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b600b54604051610aee919061271a565b60405180910390a150565b600b5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b4f611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590612ad0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610cfe9061295e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2a9061295e565b8015610d775780601f10610d4c57610100808354040283529160200191610d77565b820191906000526020600020905b815481529060010190602001808311610d5a57829003601f168201915b5050505050905090565b60008060016000610d90611931565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4490612b62565b60405180910390fd5b610e61610e58611931565b85858403611939565b600191505092915050565b6000610e80610e79611931565b8484611b02565b6001905092915050565b610e92611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890612ad0565b60405180910390fd5b620f4240610f2d6107bf565b610f379190612bb1565b8111610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90612c54565b60405180910390fd5b80600d819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600d54604051610fb0919061271a565b60405180910390a150565b610fc3611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990612ad0565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d990612ce6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890612d78565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516111e391906127ce565b60405180910390a150565b6111f6611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90612ad0565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90612e0a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516113b49190612676565b60405180910390a25050565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611455611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db90612ad0565b60405180910390fd5b8160098190555080600a819055505050565b600d5481565b611504611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158a90612ad0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f990612e9c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116ca611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175090612ad0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be90612f2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361182957611824473373ffffffffffffffffffffffffffffffffffffffff16611ea290919063ffffffff16565b61192e565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161186991906127ce565b602060405180830381865afa158015611886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118aa9190612f63565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016118e7929190612f90565b6020604051808303816000875af1158015611906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192a9190612fce565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f9061306d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e906130ff565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611af5919061271a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6890613191565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd790613223565b60405180910390fd5b60008103611bf957611bf483836000611f96565b611e9d565b6000611c0430610aff565b9050600081118015611c235750600e60009054906101000a900460ff16155b8015611c7c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611cc1576001600e60006101000a81548160ff021916908315150217905550611ca581612215565b6000600e60006101000a81548160ff0219169083151502179055505b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d645750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d7b5750600e60009054906101000a900460ff165b15611d895760009050611e4f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611de8576009549050611e4e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e4757600a549050611e4d565b600b5490505b5b5b6000811115611e8f57600060648285611e689190613243565b611e729190612bb1565b90508084611e809190613285565b9350611e8d863083611f96565b505b611e9a858585611f96565b50505b505050565b80471015611ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edc90613305565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611f0b90613356565b60006040518083038185875af1925050503d8060008114611f48576040519150601f19603f3d011682016040523d82523d6000602084013e611f4d565b606091505b5050905080611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906133dd565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffc90613191565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90613223565b60405180910390fd5b61207f8383836124c6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fc9061346f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121989190612a50565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121fc919061271a565b60405180910390a361220f8484846124cb565b50505050565b60004790506000600267ffffffffffffffff8111156122375761223661348f565b5b6040519080825280602002602001820160405280156122655781602001602082028036833780820191505090505b509050308160008151811061227d5761227c6134be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190613502565b8160018151811061235c5761235b6134be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016123fa959493929190613628565b600060405180830381600087803b15801561241457600080fd5b505af1158015612428573d6000803e3d6000fd5b505050506000824761243a9190613285565b905061248781600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ea290919063ffffffff16565b7f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e6299984826040516124b8929190613682565b60405180910390a150505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561250a5780820151818401526020810190506124ef565b60008484015250505050565b6000601f19601f8301169050919050565b6000612532826124d0565b61253c81856124db565b935061254c8185602086016124ec565b61255581612516565b840191505092915050565b6000602082019050818103600083015261257a8184612527565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125b282612587565b9050919050565b6125c2816125a7565b81146125cd57600080fd5b50565b6000813590506125df816125b9565b92915050565b6000819050919050565b6125f8816125e5565b811461260357600080fd5b50565b600081359050612615816125ef565b92915050565b6000806040838503121561263257612631612582565b5b6000612640858286016125d0565b925050602061265185828601612606565b9150509250929050565b60008115159050919050565b6126708161265b565b82525050565b600060208201905061268b6000830184612667565b92915050565b6000819050919050565b60006126b66126b16126ac84612587565b612691565b612587565b9050919050565b60006126c88261269b565b9050919050565b60006126da826126bd565b9050919050565b6126ea816126cf565b82525050565b600060208201905061270560008301846126e1565b92915050565b612714816125e5565b82525050565b600060208201905061272f600083018461270b565b92915050565b60008060006060848603121561274e5761274d612582565b5b600061275c868287016125d0565b935050602061276d868287016125d0565b925050604061277e86828701612606565b9150509250925092565b600060ff82169050919050565b61279e81612788565b82525050565b60006020820190506127b96000830184612795565b92915050565b6127c8816125a7565b82525050565b60006020820190506127e360008301846127bf565b92915050565b6000602082840312156127ff576127fe612582565b5b600061280d848285016125d0565b91505092915050565b60006020828403121561282c5761282b612582565b5b600061283a84828501612606565b91505092915050565b61284c8161265b565b811461285757600080fd5b50565b60008135905061286981612843565b92915050565b6000806040838503121561288657612885612582565b5b6000612894858286016125d0565b92505060206128a58582860161285a565b9150509250929050565b600080604083850312156128c6576128c5612582565b5b60006128d4858286016125d0565b92505060206128e5858286016125d0565b9150509250929050565b6000806040838503121561290657612905612582565b5b600061291485828601612606565b925050602061292585828601612606565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061297657607f821691505b6020821081036129895761298861292f565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006129eb6028836124db565b91506129f68261298f565b604082019050919050565b60006020820190508181036000830152612a1a816129de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a5b826125e5565b9150612a66836125e5565b9250828201905080821115612a7e57612a7d612a21565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612aba6020836124db565b9150612ac582612a84565b602082019050919050565b60006020820190508181036000830152612ae981612aad565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612b4c6025836124db565b9150612b5782612af0565b604082019050919050565b60006020820190508181036000830152612b7b81612b3f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bbc826125e5565b9150612bc7836125e5565b925082612bd757612bd6612b82565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000612c3e603f836124db565b9150612c4982612be2565b604082019050919050565b60006020820190508181036000830152612c6d81612c31565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000612cd06028836124db565b9150612cdb82612c74565b604082019050919050565b60006020820190508181036000830152612cff81612cc3565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612d62602b836124db565b9150612d6d82612d06565b604082019050919050565b60006020820190508181036000830152612d9181612d55565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612df4602a836124db565b9150612dff82612d98565b604082019050919050565b60006020820190508181036000830152612e2381612de7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e866026836124db565b9150612e9182612e2a565b604082019050919050565b60006020820190508181036000830152612eb581612e79565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000612f186037836124db565b9150612f2382612ebc565b604082019050919050565b60006020820190508181036000830152612f4781612f0b565b9050919050565b600081519050612f5d816125ef565b92915050565b600060208284031215612f7957612f78612582565b5b6000612f8784828501612f4e565b91505092915050565b6000604082019050612fa560008301856127bf565b612fb2602083018461270b565b9392505050565b600081519050612fc881612843565b92915050565b600060208284031215612fe457612fe3612582565b5b6000612ff284828501612fb9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130576024836124db565b915061306282612ffb565b604082019050919050565b600060208201905081810360008301526130868161304a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130e96022836124db565b91506130f48261308d565b604082019050919050565b60006020820190508181036000830152613118816130dc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061317b6025836124db565b91506131868261311f565b604082019050919050565b600060208201905081810360008301526131aa8161316e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061320d6023836124db565b9150613218826131b1565b604082019050919050565b6000602082019050818103600083015261323c81613200565b9050919050565b600061324e826125e5565b9150613259836125e5565b9250828202613267816125e5565b9150828204841483151761327e5761327d612a21565b5b5092915050565b6000613290826125e5565b915061329b836125e5565b92508282039050818111156132b3576132b2612a21565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006132ef601d836124db565b91506132fa826132b9565b602082019050919050565b6000602082019050818103600083015261331e816132e2565b9050919050565b600081905092915050565b50565b6000613340600083613325565b915061334b82613330565b600082019050919050565b600061336182613333565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006133c7603a836124db565b91506133d28261336b565b604082019050919050565b600060208201905081810360008301526133f6816133ba565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006134596026836124db565b9150613464826133fd565b604082019050919050565b600060208201905081810360008301526134888161344c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134fc816125b9565b92915050565b60006020828403121561351857613517612582565b5b6000613526848285016134ed565b91505092915050565b6000819050919050565b600061355461354f61354a8461352f565b612691565b6125e5565b9050919050565b61356481613539565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61359f816125a7565b82525050565b60006135b18383613596565b60208301905092915050565b6000602082019050919050565b60006135d58261356a565b6135df8185613575565b93506135ea83613586565b8060005b8381101561361b57815161360288826135a5565b975061360d836135bd565b9250506001810190506135ee565b5085935050505092915050565b600060a08201905061363d600083018861270b565b61364a602083018761355b565b818103604083015261365c81866135ca565b905061366b60608301856127bf565b613678608083018461270b565b9695505050505050565b6000604082019050613697600083018561270b565b6136a4602083018461270b565b939250505056fea26469706673582212208a1f5c7d6f1d121b7a383919cd806e38bb35eaa28330f8e4f8929b22d664bedf64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c806375f0a874116100ec578063c02466681161008a578063dd7e06a611610064578063dd7e06a614610643578063e2f456051461066c578063f2fde38b14610697578063f9d0831a146106c0576101c2565b8063c0246668146105b2578063dc4c7dbc146105db578063dd62ed3e14610606576101c2565b8063a457c2d7116100c6578063a457c2d7146104e6578063a9059cbb14610523578063afa4f3b214610560578063bb85c6d114610589576101c2565b806375f0a874146104655780638da5cb5b1461049057806395d89b41146104bb576101c2565b806349bd5a5e1161015957806364c98c441161013357806364c98c44146103bd578063702509fd146103e657806370a0823114610411578063715018a61461044e576101c2565b806349bd5a5e1461032a5780634fbee193146103555780635fc2e59614610392576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd14610285578063313ce567146102c257806339509351146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106e9565b6040516101e99190612560565b60405180910390f35b3480156101fe57600080fd5b506102196004803603810190610214919061261b565b61077b565b6040516102269190612676565b60405180910390f35b34801561023b57600080fd5b50610244610799565b60405161025191906126f0565b60405180910390f35b34801561026657600080fd5b5061026f6107bf565b60405161027c919061271a565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612735565b6107c9565b6040516102b99190612676565b60405180910390f35b3480156102ce57600080fd5b506102d76108e8565b6040516102e491906127a4565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f919061261b565b6108f1565b6040516103219190612676565b60405180910390f35b34801561033657600080fd5b5061033f61099d565b60405161034c91906127ce565b60405180910390f35b34801561036157600080fd5b5061037c600480360381019061037791906127e9565b6109c3565b6040516103899190612676565b60405180910390f35b34801561039e57600080fd5b506103a7610a19565b6040516103b4919061271a565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190612816565b610a1f565b005b3480156103f257600080fd5b506103fb610af9565b604051610408919061271a565b60405180910390f35b34801561041d57600080fd5b50610438600480360381019061043391906127e9565b610aff565b604051610445919061271a565b60405180910390f35b34801561045a57600080fd5b50610463610b47565b005b34801561047157600080fd5b5061047a610c9f565b60405161048791906127ce565b60405180910390f35b34801561049c57600080fd5b506104a5610cc5565b6040516104b291906127ce565b60405180910390f35b3480156104c757600080fd5b506104d0610cef565b6040516104dd9190612560565b60405180910390f35b3480156104f257600080fd5b5061050d6004803603810190610508919061261b565b610d81565b60405161051a9190612676565b60405180910390f35b34801561052f57600080fd5b5061054a6004803603810190610545919061261b565b610e6c565b6040516105579190612676565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190612816565b610e8a565b005b34801561059557600080fd5b506105b060048036038101906105ab91906127e9565b610fbb565b005b3480156105be57600080fd5b506105d960048036038101906105d4919061286f565b6111ee565b005b3480156105e757600080fd5b506105f06113c0565b6040516105fd919061271a565b60405180910390f35b34801561061257600080fd5b5061062d600480360381019061062891906128af565b6113c6565b60405161063a919061271a565b60405180910390f35b34801561064f57600080fd5b5061066a600480360381019061066591906128ef565b61144d565b005b34801561067857600080fd5b506106816114f6565b60405161068e919061271a565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b991906127e9565b6114fc565b005b3480156106cc57600080fd5b506106e760048036038101906106e291906127e9565b6116c2565b005b6060600380546106f89061295e565b80601f01602080910402602001604051908101604052809291908181526020018280546107249061295e565b80156107715780601f1061074657610100808354040283529160200191610771565b820191906000526020600020905b81548152906001019060200180831161075457829003601f168201915b5050505050905090565b600061078f610788611931565b8484611939565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610815611931565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108d157828110156108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b390612a01565b60405180910390fd5b6108d0856108c8611931565b858403611939565b5b6108dc858585611b02565b60019150509392505050565b60006012905090565b60006109936108fe611931565b84846001600061090c611931565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461098e9190612a50565b611939565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60095481565b610a27611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aad90612ad0565b60405180910390fd5b80600b819055507f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b600b54604051610aee919061271a565b60405180910390a150565b600b5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b4f611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590612ad0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610cfe9061295e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2a9061295e565b8015610d775780601f10610d4c57610100808354040283529160200191610d77565b820191906000526020600020905b815481529060010190602001808311610d5a57829003601f168201915b5050505050905090565b60008060016000610d90611931565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4490612b62565b60405180910390fd5b610e61610e58611931565b85858403611939565b600191505092915050565b6000610e80610e79611931565b8484611b02565b6001905092915050565b610e92611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890612ad0565b60405180910390fd5b620f4240610f2d6107bf565b610f379190612bb1565b8111610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90612c54565b60405180910390fd5b80600d819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600d54604051610fb0919061271a565b60405180910390a150565b610fc3611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990612ad0565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d990612ce6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114890612d78565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516111e391906127ce565b60405180910390a150565b6111f6611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127c90612ad0565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130e90612e0a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516113b49190612676565b60405180910390a25050565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611455611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114db90612ad0565b60405180910390fd5b8160098190555080600a819055505050565b600d5481565b611504611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158a90612ad0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f990612e9c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6116ca611931565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175090612ad0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be90612f2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361182957611824473373ffffffffffffffffffffffffffffffffffffffff16611ea290919063ffffffff16565b61192e565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161186991906127ce565b602060405180830381865afa158015611886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118aa9190612f63565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016118e7929190612f90565b6020604051808303816000875af1158015611906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192a9190612fce565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f9061306d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0e906130ff565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611af5919061271a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6890613191565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd790613223565b60405180910390fd5b60008103611bf957611bf483836000611f96565b611e9d565b6000611c0430610aff565b9050600081118015611c235750600e60009054906101000a900460ff16155b8015611c7c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611cc1576001600e60006101000a81548160ff021916908315150217905550611ca581612215565b6000600e60006101000a81548160ff0219169083151502179055505b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d645750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d7b5750600e60009054906101000a900460ff165b15611d895760009050611e4f565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611de8576009549050611e4e565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e4757600a549050611e4d565b600b5490505b5b5b6000811115611e8f57600060648285611e689190613243565b611e729190612bb1565b90508084611e809190613285565b9350611e8d863083611f96565b505b611e9a858585611f96565b50505b505050565b80471015611ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edc90613305565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611f0b90613356565b60006040518083038185875af1925050503d8060008114611f48576040519150601f19603f3d011682016040523d82523d6000602084013e611f4d565b606091505b5050905080611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906133dd565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffc90613191565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b90613223565b60405180910390fd5b61207f8383836124c6565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fc9061346f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121989190612a50565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121fc919061271a565b60405180910390a361220f8484846124cb565b50505050565b60004790506000600267ffffffffffffffff8111156122375761223661348f565b5b6040519080825280602002602001820160405280156122655781602001602082028036833780820191505090505b509050308160008151811061227d5761227c6134be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190613502565b8160018151811061235c5761235b6134be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016123fa959493929190613628565b600060405180830381600087803b15801561241457600080fd5b505af1158015612428573d6000803e3d6000fd5b505050506000824761243a9190613285565b905061248781600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ea290919063ffffffff16565b7f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e6299984826040516124b8929190613682565b60405180910390a150505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561250a5780820151818401526020810190506124ef565b60008484015250505050565b6000601f19601f8301169050919050565b6000612532826124d0565b61253c81856124db565b935061254c8185602086016124ec565b61255581612516565b840191505092915050565b6000602082019050818103600083015261257a8184612527565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125b282612587565b9050919050565b6125c2816125a7565b81146125cd57600080fd5b50565b6000813590506125df816125b9565b92915050565b6000819050919050565b6125f8816125e5565b811461260357600080fd5b50565b600081359050612615816125ef565b92915050565b6000806040838503121561263257612631612582565b5b6000612640858286016125d0565b925050602061265185828601612606565b9150509250929050565b60008115159050919050565b6126708161265b565b82525050565b600060208201905061268b6000830184612667565b92915050565b6000819050919050565b60006126b66126b16126ac84612587565b612691565b612587565b9050919050565b60006126c88261269b565b9050919050565b60006126da826126bd565b9050919050565b6126ea816126cf565b82525050565b600060208201905061270560008301846126e1565b92915050565b612714816125e5565b82525050565b600060208201905061272f600083018461270b565b92915050565b60008060006060848603121561274e5761274d612582565b5b600061275c868287016125d0565b935050602061276d868287016125d0565b925050604061277e86828701612606565b9150509250925092565b600060ff82169050919050565b61279e81612788565b82525050565b60006020820190506127b96000830184612795565b92915050565b6127c8816125a7565b82525050565b60006020820190506127e360008301846127bf565b92915050565b6000602082840312156127ff576127fe612582565b5b600061280d848285016125d0565b91505092915050565b60006020828403121561282c5761282b612582565b5b600061283a84828501612606565b91505092915050565b61284c8161265b565b811461285757600080fd5b50565b60008135905061286981612843565b92915050565b6000806040838503121561288657612885612582565b5b6000612894858286016125d0565b92505060206128a58582860161285a565b9150509250929050565b600080604083850312156128c6576128c5612582565b5b60006128d4858286016125d0565b92505060206128e5858286016125d0565b9150509250929050565b6000806040838503121561290657612905612582565b5b600061291485828601612606565b925050602061292585828601612606565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061297657607f821691505b6020821081036129895761298861292f565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006129eb6028836124db565b91506129f68261298f565b604082019050919050565b60006020820190508181036000830152612a1a816129de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a5b826125e5565b9150612a66836125e5565b9250828201905080821115612a7e57612a7d612a21565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612aba6020836124db565b9150612ac582612a84565b602082019050919050565b60006020820190508181036000830152612ae981612aad565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612b4c6025836124db565b9150612b5782612af0565b604082019050919050565b60006020820190508181036000830152612b7b81612b3f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bbc826125e5565b9150612bc7836125e5565b925082612bd757612bd6612b82565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b6000612c3e603f836124db565b9150612c4982612be2565b604082019050919050565b60006020820190508181036000830152612c6d81612c31565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000612cd06028836124db565b9150612cdb82612c74565b604082019050919050565b60006020820190508181036000830152612cff81612cc3565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000612d62602b836124db565b9150612d6d82612d06565b604082019050919050565b60006020820190508181036000830152612d9181612d55565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000612df4602a836124db565b9150612dff82612d98565b604082019050919050565b60006020820190508181036000830152612e2381612de7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e866026836124db565b9150612e9182612e2a565b604082019050919050565b60006020820190508181036000830152612eb581612e79565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000612f186037836124db565b9150612f2382612ebc565b604082019050919050565b60006020820190508181036000830152612f4781612f0b565b9050919050565b600081519050612f5d816125ef565b92915050565b600060208284031215612f7957612f78612582565b5b6000612f8784828501612f4e565b91505092915050565b6000604082019050612fa560008301856127bf565b612fb2602083018461270b565b9392505050565b600081519050612fc881612843565b92915050565b600060208284031215612fe457612fe3612582565b5b6000612ff284828501612fb9565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130576024836124db565b915061306282612ffb565b604082019050919050565b600060208201905081810360008301526130868161304a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130e96022836124db565b91506130f48261308d565b604082019050919050565b60006020820190508181036000830152613118816130dc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061317b6025836124db565b91506131868261311f565b604082019050919050565b600060208201905081810360008301526131aa8161316e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061320d6023836124db565b9150613218826131b1565b604082019050919050565b6000602082019050818103600083015261323c81613200565b9050919050565b600061324e826125e5565b9150613259836125e5565b9250828202613267816125e5565b9150828204841483151761327e5761327d612a21565b5b5092915050565b6000613290826125e5565b915061329b836125e5565b92508282039050818111156132b3576132b2612a21565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006132ef601d836124db565b91506132fa826132b9565b602082019050919050565b6000602082019050818103600083015261331e816132e2565b9050919050565b600081905092915050565b50565b6000613340600083613325565b915061334b82613330565b600082019050919050565b600061336182613333565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006133c7603a836124db565b91506133d28261336b565b604082019050919050565b600060208201905081810360008301526133f6816133ba565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006134596026836124db565b9150613464826133fd565b604082019050919050565b600060208201905081810360008301526134888161344c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134fc816125b9565b92915050565b60006020828403121561351857613517612582565b5b6000613526848285016134ed565b91505092915050565b6000819050919050565b600061355461354f61354a8461352f565b612691565b6125e5565b9050919050565b61356481613539565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61359f816125a7565b82525050565b60006135b18383613596565b60208301905092915050565b6000602082019050919050565b60006135d58261356a565b6135df8185613575565b93506135ea83613586565b8060005b8381101561361b57815161360288826135a5565b975061360d836135bd565b9250506001810190506135ee565b5085935050505092915050565b600060a08201905061363d600083018861270b565b61364a602083018761355b565b818103604083015261365c81866135ca565b905061366b60608301856127bf565b613678608083018461270b565b9695505050505050565b6000604082019050613697600083018561270b565b6136a4602083018461270b565b939250505056fea26469706673582212208a1f5c7d6f1d121b7a383919cd806e38bb35eaa28330f8e4f8929b22d664bedf64736f6c63430008110033
Deployed Bytecode Sourcemap
24611:6101:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19896:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20810:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24729:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20217:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20987:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20116:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21568:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24777:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27397:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24877:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27743:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24960:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20333:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19083:148;;;;;;;;;;;;;:::i;:::-;;25010:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18869:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20004:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21791:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20468:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29754:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27993:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27099:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24917:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20651:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27530:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25050:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19239:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26626:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19896:100;19950:13;19983:5;19976:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19896:100;:::o;20810:169::-;20893:4;20910:39;20919:12;:10;:12::i;:::-;20933:7;20942:6;20910:8;:39::i;:::-;20967:4;20960:11;;20810:169;;;;:::o;24729:41::-;;;;;;;;;;;;;:::o;20217:108::-;20278:7;20305:12;;20298:19;;20217:108;:::o;20987:573::-;21127:4;21144:24;21171:11;:19;21183:6;21171:19;;;;;;;;;;;;;;;:33;21191:12;:10;:12::i;:::-;21171:33;;;;;;;;;;;;;;;;21144:60;;21239:17;21219:16;:37;21215:265;;21301:6;21281:16;:26;;21273:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;21396:57;21405:6;21413:12;:10;:12::i;:::-;21446:6;21427:16;:25;21396:8;:57::i;:::-;21215:265;21492:36;21502:6;21510:9;21521:6;21492:9;:36::i;:::-;21548:4;21541:11;;;20987:573;;;;;:::o;20116:93::-;20174:5;20199:2;20192:9;;20116:93;:::o;21568:215::-;21656:4;21673:80;21682:12;:10;:12::i;:::-;21696:7;21742:10;21705:11;:25;21717:12;:10;:12::i;:::-;21705:25;;;;;;;;;;;;;;;:34;21731:7;21705:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;21673:8;:80::i;:::-;21771:4;21764:11;;21568:215;;;;:::o;24777:29::-;;;;;;;;;;;;;:::o;27397:125::-;27462:4;27486:19;:28;27506:7;27486:28;;;;;;;;;;;;;;;;;;;;;;;;;27479:35;;27397:125;;;:::o;24877:33::-;;;;:::o;27743:242::-;19006:12;:10;:12::i;:::-;18996:22;;:6;;;;;;;;;;;:22;;;18988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27877:26:::1;27849:25;:54;;;;27919:58;27951:25;;27919:58;;;;;;:::i;:::-;;;;;;;;27743:242:::0;:::o;24960:41::-;;;;:::o;20333:127::-;20407:7;20434:9;:18;20444:7;20434:18;;;;;;;;;;;;;;;;20427:25;;20333:127;;;:::o;19083:148::-;19006:12;:10;:12::i;:::-;18996:22;;:6;;;;;;;;;;;:22;;;18988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19190:1:::1;19153:40;;19174:6;;;;;;;;;;;19153:40;;;;;;;;;;;;19221:1;19204:6;;:19;;;;;;;;;;;;;;;;;;19083:148::o:0;25010:31::-;;;;;;;;;;;;;:::o;18869:79::-;18907:7;18934:6;;;;;;;;;;;18927:13;;18869:79;:::o;20004:104::-;20060:13;20093:7;20086:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20004:104;:::o;21791:413::-;21884:4;21901:24;21928:11;:25;21940:12;:10;:12::i;:::-;21928:25;;;;;;;;;;;;;;;:34;21954:7;21928:34;;;;;;;;;;;;;;;;21901:61;;22001:15;21981:16;:35;;21973:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;22094:67;22103:12;:10;:12::i;:::-;22117:7;22145:15;22126:16;:34;22094:8;:67::i;:::-;22192:4;22185:11;;;21791:413;;;;:::o;20468:175::-;20554:4;20571:42;20581:12;:10;:12::i;:::-;20595:9;20606:6;20571:9;:42::i;:::-;20631:4;20624:11;;20468:175;;;;:::o;29754:300::-;19006:12;:10;:12::i;:::-;18996:22;;:6;;;;;;;;;;;:22;;;18988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29869:7:::1;29853:13;:11;:13::i;:::-;:23;;;;:::i;:::-;29841:9;:35;29833:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;29976:9;29955:18;:30;;;;30001:45;30027:18;;30001:45;;;;;;:::i;:::-;;;;;;;;29754:300:::0;:::o;27993:377::-;19006:12;:10;:12::i;:::-;18996:22;;:6;;;;;;;;;;;:22;;;18988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28107:15:::1;;;;;;;;;;;28087:35;;:16;:35;;::::0;28079:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28213:1;28185:30;;:16;:30;;::::0;28177:85:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28291:16;28273:15;;:34;;;;;;;;;;;;;;;;;;28323:39;28346:15;;;;;;;;;;;28323:39;;;;;;:::i;:::-;;;;;;;;27993:377:::0;:::o;27099:290::-;19006:12;:10;:12::i;:::-;18996:22;;:6;;;;;;;;;;;:22;;;18988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27225:8:::1;27193:40;;:19;:28;27213:7;27193:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;27185:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27321:8;27290:19;:28;27310:7;27290:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;27363:7;27347:34;;;27372:8;27347:34;;;;;;:::i;:::-;;;;;;;;27099:290:::0;;:::o;24917:34::-;;;;:::o;20651:151::-;20740:7;20767:11;:18;20779:5;20767:18;;;;;;;;;;;;;;;:27;20786:7;20767:27;;;;;;;;;;;;;;;;20760:34;;20651:151;;;;:::o;27530:205::-;19006:12;:10;:12::i;:::-;18996:22;;:6;;;;;;;;;;;:22;;;18988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27658:18:::1;27638:17;:38;;;;27708:19;27687:18;:40;;;;27530:205:::0;;:::o;25050:34::-;;;;:::o;19239:244::-;19006:12;:10;:12::i;:::-;18996:22;;:6;;;;;;;;;;;:22;;;18988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19348:1:::1;19328:22;;:8;:22;;::::0;19320:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19438:8;19409:38;;19430:6;;;;;;;;;;;19409:38;;;;;;;;;;;;19467:8;19458:6;;:17;;;;;;;;;;;;;;;;;;19239:244:::0;:::o;26626:465::-;19006:12;:10;:12::i;:::-;18996:22;;:6;;;;;;;;;;;:22;;;18988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26722:4:::1;26705:22;;:5;:22;;::::0;26697:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26819:3;26802:21;;:5;:21;;::::0;26798:127:::1;;26840:52;26870:21;26848:10;26840:29;;;;:52;;;;:::i;:::-;26907:7;;26798:127;26935:17;26962:5;26935:33;;26979:15;26997:10;:20;;;27026:4;26997:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26979:53;;27043:10;:19;;;27063:10;27075:7;27043:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26686:405;;19066:1;26626:465:::0;:::o;18192:98::-;18245:7;18272:10;18265:17;;18192:98;:::o;23959:380::-;24112:1;24095:19;;:5;:19;;;24087:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24193:1;24174:21;;:7;:21;;;24166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24277:6;24247:11;:18;24259:5;24247:18;;;;;;;;;;;;;;;:27;24266:7;24247:27;;;;;;;;;;;;;;;:36;;;;24315:7;24299:32;;24308:5;24299:32;;;24324:6;24299:32;;;;;;:::i;:::-;;;;;;;;23959:380;;;:::o;28432:1264::-;28545:1;28529:18;;:4;:18;;;28521:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28622:1;28608:16;;:2;:16;;;28600:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28698:1;28688:6;:11;28684:93;;28716:28;28732:4;28738:2;28742:1;28716:15;:28::i;:::-;28759:7;;28684:93;28783:28;28814:24;28832:4;28814:9;:24::i;:::-;28783:55;;28878:1;28855:20;:24;:37;;;;;28884:8;;;;;;;;;;;28883:9;28855:37;:60;;;;;28902:13;;;;;;;;;;;28896:19;;:2;:19;;;28855:60;28851:196;;;28943:4;28932:8;;:15;;;;;;;;;;;;;;;;;;28962:42;28983:20;28962;:42::i;:::-;29030:5;29019:8;;:16;;;;;;;;;;;;;;;;;;28851:196;29059:18;29092:19;:25;29112:4;29092:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;29121:19;:23;29141:2;29121:23;;;;;;;;;;;;;;;;;;;;;;;;;29092:52;:63;;;;29147:8;;;;;;;;;;;29092:63;29088:360;;;29185:1;29172:14;;29088:360;;;29216:13;;;;;;;;;;;29208:21;;:4;:21;;;29204:244;;29259:17;;29246:30;;29204:244;;;29304:13;;;;;;;;;;;29298:19;;:2;:19;;;29294:154;;29347:18;;29334:31;;29294:154;;;29411:25;;29398:38;;29294:154;29204:244;29088:360;29477:1;29464:10;:14;29460:183;;;29495:12;29534:3;29520:10;29511:6;:19;;;;:::i;:::-;29510:27;;;;:::i;:::-;29495:42;;29570:4;29561:6;:13;;;;:::i;:::-;29552:22;;29589:42;29605:4;29619;29626;29589:15;:42::i;:::-;29480:163;29460:183;29655:33;29671:4;29677:2;29681:6;29655:15;:33::i;:::-;28510:1186;;28432:1264;;;;:::o;11225:317::-;11340:6;11315:21;:31;;11307:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11394:12;11412:9;:14;;11434:6;11412:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11393:52;;;11464:7;11456:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11296:246;11225:317;;:::o;22212:733::-;22370:1;22352:20;;:6;:20;;;22344:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22454:1;22433:23;;:9;:23;;;22425:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22509:47;22530:6;22538:9;22549:6;22509:20;:47::i;:::-;22569:21;22593:9;:17;22603:6;22593:17;;;;;;;;;;;;;;;;22569:41;;22646:6;22629:13;:23;;22621:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22767:6;22751:13;:22;22731:9;:17;22741:6;22731:17;;;;;;;;;;;;;;;:42;;;;22819:6;22795:9;:20;22805:9;22795:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;22860:9;22843:35;;22852:6;22843:35;;;22871:6;22843:35;;;;;;:::i;:::-;;;;;;;;22891:46;22911:6;22919:9;22930:6;22891:19;:46::i;:::-;22333:612;22212:733;;;:::o;30062:647::-;30132:22;30157:21;30132:46;;30191:21;30229:1;30215:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30191:40;;30260:4;30242;30247:1;30242:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30286:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30276:4;30281:1;30276:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30321:15;;;;;;;;;;;:66;;;30402:11;30428:1;30444:4;30471;30491:15;30321:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30520:18;30565:14;30541:21;:38;;;;:::i;:::-;30520:59;;30592:46;30627:10;30600:15;;;;;;;;;;;30592:34;;;;:46;;;;:::i;:::-;30656:45;30677:11;30690:10;30656:45;;;;;;;:::i;:::-;;;;;;;;30121:588;;;30062:647;:::o;24347:125::-;;;;:::o;24480:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:474::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7583:474;;;;;:::o;8063:::-;8131:6;8139;8188:2;8176:9;8167:7;8163:23;8159:32;8156:119;;;8194:79;;:::i;:::-;8156:119;8314:1;8339:53;8384:7;8375:6;8364:9;8360:22;8339:53;:::i;:::-;8329:63;;8285:117;8441:2;8467:53;8512:7;8503:6;8492:9;8488:22;8467:53;:::i;:::-;8457:63;;8412:118;8063:474;;;;;:::o;8543:180::-;8591:77;8588:1;8581:88;8688:4;8685:1;8678:15;8712:4;8709:1;8702:15;8729:320;8773:6;8810:1;8804:4;8800:12;8790:22;;8857:1;8851:4;8847:12;8878:18;8868:81;;8934:4;8926:6;8922:17;8912:27;;8868:81;8996:2;8988:6;8985:14;8965:18;8962:38;8959:84;;9015:18;;:::i;:::-;8959:84;8780:269;8729:320;;;:::o;9055:227::-;9195:34;9191:1;9183:6;9179:14;9172:58;9264:10;9259:2;9251:6;9247:15;9240:35;9055:227;:::o;9288:366::-;9430:3;9451:67;9515:2;9510:3;9451:67;:::i;:::-;9444:74;;9527:93;9616:3;9527:93;:::i;:::-;9645:2;9640:3;9636:12;9629:19;;9288:366;;;:::o;9660:419::-;9826:4;9864:2;9853:9;9849:18;9841:26;;9913:9;9907:4;9903:20;9899:1;9888:9;9884:17;9877:47;9941:131;10067:4;9941:131;:::i;:::-;9933:139;;9660:419;;;:::o;10085:180::-;10133:77;10130:1;10123:88;10230:4;10227:1;10220:15;10254:4;10251:1;10244:15;10271:191;10311:3;10330:20;10348:1;10330:20;:::i;:::-;10325:25;;10364:20;10382:1;10364:20;:::i;:::-;10359:25;;10407:1;10404;10400:9;10393:16;;10428:3;10425:1;10422:10;10419:36;;;10435:18;;:::i;:::-;10419:36;10271:191;;;;:::o;10468:182::-;10608:34;10604:1;10596:6;10592:14;10585:58;10468:182;:::o;10656:366::-;10798:3;10819:67;10883:2;10878:3;10819:67;:::i;:::-;10812:74;;10895:93;10984:3;10895:93;:::i;:::-;11013:2;11008:3;11004:12;10997:19;;10656:366;;;:::o;11028:419::-;11194:4;11232:2;11221:9;11217:18;11209:26;;11281:9;11275:4;11271:20;11267:1;11256:9;11252:17;11245:47;11309:131;11435:4;11309:131;:::i;:::-;11301:139;;11028:419;;;:::o;11453:224::-;11593:34;11589:1;11581:6;11577:14;11570:58;11662:7;11657:2;11649:6;11645:15;11638:32;11453:224;:::o;11683:366::-;11825:3;11846:67;11910:2;11905:3;11846:67;:::i;:::-;11839:74;;11922:93;12011:3;11922:93;:::i;:::-;12040:2;12035:3;12031:12;12024:19;;11683:366;;;:::o;12055:419::-;12221:4;12259:2;12248:9;12244:18;12236:26;;12308:9;12302:4;12298:20;12294:1;12283:9;12279:17;12272:47;12336:131;12462:4;12336:131;:::i;:::-;12328:139;;12055:419;;;:::o;12480:180::-;12528:77;12525:1;12518:88;12625:4;12622:1;12615:15;12649:4;12646:1;12639:15;12666:185;12706:1;12723:20;12741:1;12723:20;:::i;:::-;12718:25;;12757:20;12775:1;12757:20;:::i;:::-;12752:25;;12796:1;12786:35;;12801:18;;:::i;:::-;12786:35;12843:1;12840;12836:9;12831:14;;12666:185;;;;:::o;12857:250::-;12997:34;12993:1;12985:6;12981:14;12974:58;13066:33;13061:2;13053:6;13049:15;13042:58;12857:250;:::o;13113:366::-;13255:3;13276:67;13340:2;13335:3;13276:67;:::i;:::-;13269:74;;13352:93;13441:3;13352:93;:::i;:::-;13470:2;13465:3;13461:12;13454:19;;13113:366;;;:::o;13485:419::-;13651:4;13689:2;13678:9;13674:18;13666:26;;13738:9;13732:4;13728:20;13724:1;13713:9;13709:17;13702:47;13766:131;13892:4;13766:131;:::i;:::-;13758:139;;13485:419;;;:::o;13910:227::-;14050:34;14046:1;14038:6;14034:14;14027:58;14119:10;14114:2;14106:6;14102:15;14095:35;13910:227;:::o;14143:366::-;14285:3;14306:67;14370:2;14365:3;14306:67;:::i;:::-;14299:74;;14382:93;14471:3;14382:93;:::i;:::-;14500:2;14495:3;14491:12;14484:19;;14143:366;;;:::o;14515:419::-;14681:4;14719:2;14708:9;14704:18;14696:26;;14768:9;14762:4;14758:20;14754:1;14743:9;14739:17;14732:47;14796:131;14922:4;14796:131;:::i;:::-;14788:139;;14515:419;;;:::o;14940:230::-;15080:34;15076:1;15068:6;15064:14;15057:58;15149:13;15144:2;15136:6;15132:15;15125:38;14940:230;:::o;15176:366::-;15318:3;15339:67;15403:2;15398:3;15339:67;:::i;:::-;15332:74;;15415:93;15504:3;15415:93;:::i;:::-;15533:2;15528:3;15524:12;15517:19;;15176:366;;;:::o;15548:419::-;15714:4;15752:2;15741:9;15737:18;15729:26;;15801:9;15795:4;15791:20;15787:1;15776:9;15772:17;15765:47;15829:131;15955:4;15829:131;:::i;:::-;15821:139;;15548:419;;;:::o;15973:229::-;16113:34;16109:1;16101:6;16097:14;16090:58;16182:12;16177:2;16169:6;16165:15;16158:37;15973:229;:::o;16208:366::-;16350:3;16371:67;16435:2;16430:3;16371:67;:::i;:::-;16364:74;;16447:93;16536:3;16447:93;:::i;:::-;16565:2;16560:3;16556:12;16549:19;;16208:366;;;:::o;16580:419::-;16746:4;16784:2;16773:9;16769:18;16761:26;;16833:9;16827:4;16823:20;16819:1;16808:9;16804:17;16797:47;16861:131;16987:4;16861:131;:::i;:::-;16853:139;;16580:419;;;:::o;17005:225::-;17145:34;17141:1;17133:6;17129:14;17122:58;17214:8;17209:2;17201:6;17197:15;17190:33;17005:225;:::o;17236:366::-;17378:3;17399:67;17463:2;17458:3;17399:67;:::i;:::-;17392:74;;17475:93;17564:3;17475:93;:::i;:::-;17593:2;17588:3;17584:12;17577:19;;17236:366;;;:::o;17608:419::-;17774:4;17812:2;17801:9;17797:18;17789:26;;17861:9;17855:4;17851:20;17847:1;17836:9;17832:17;17825:47;17889:131;18015:4;17889:131;:::i;:::-;17881:139;;17608:419;;;:::o;18033:242::-;18173:34;18169:1;18161:6;18157:14;18150:58;18242:25;18237:2;18229:6;18225:15;18218:50;18033:242;:::o;18281:366::-;18423:3;18444:67;18508:2;18503:3;18444:67;:::i;:::-;18437:74;;18520:93;18609:3;18520:93;:::i;:::-;18638:2;18633:3;18629:12;18622:19;;18281:366;;;:::o;18653:419::-;18819:4;18857:2;18846:9;18842:18;18834:26;;18906:9;18900:4;18896:20;18892:1;18881:9;18877:17;18870:47;18934:131;19060:4;18934:131;:::i;:::-;18926:139;;18653:419;;;:::o;19078:143::-;19135:5;19166:6;19160:13;19151:22;;19182:33;19209:5;19182:33;:::i;:::-;19078:143;;;;:::o;19227:351::-;19297:6;19346:2;19334:9;19325:7;19321:23;19317:32;19314:119;;;19352:79;;:::i;:::-;19314:119;19472:1;19497:64;19553:7;19544:6;19533:9;19529:22;19497:64;:::i;:::-;19487:74;;19443:128;19227:351;;;;:::o;19584:332::-;19705:4;19743:2;19732:9;19728:18;19720:26;;19756:71;19824:1;19813:9;19809:17;19800:6;19756:71;:::i;:::-;19837:72;19905:2;19894:9;19890:18;19881:6;19837:72;:::i;:::-;19584:332;;;;;:::o;19922:137::-;19976:5;20007:6;20001:13;19992:22;;20023:30;20047:5;20023:30;:::i;:::-;19922:137;;;;:::o;20065:345::-;20132:6;20181:2;20169:9;20160:7;20156:23;20152:32;20149:119;;;20187:79;;:::i;:::-;20149:119;20307:1;20332:61;20385:7;20376:6;20365:9;20361:22;20332:61;:::i;:::-;20322:71;;20278:125;20065:345;;;;:::o;20416:223::-;20556:34;20552:1;20544:6;20540:14;20533:58;20625:6;20620:2;20612:6;20608:15;20601:31;20416:223;:::o;20645:366::-;20787:3;20808:67;20872:2;20867:3;20808:67;:::i;:::-;20801:74;;20884:93;20973:3;20884:93;:::i;:::-;21002:2;20997:3;20993:12;20986:19;;20645:366;;;:::o;21017:419::-;21183:4;21221:2;21210:9;21206:18;21198:26;;21270:9;21264:4;21260:20;21256:1;21245:9;21241:17;21234:47;21298:131;21424:4;21298:131;:::i;:::-;21290:139;;21017:419;;;:::o;21442:221::-;21582:34;21578:1;21570:6;21566:14;21559:58;21651:4;21646:2;21638:6;21634:15;21627:29;21442:221;:::o;21669:366::-;21811:3;21832:67;21896:2;21891:3;21832:67;:::i;:::-;21825:74;;21908:93;21997:3;21908:93;:::i;:::-;22026:2;22021:3;22017:12;22010:19;;21669:366;;;:::o;22041:419::-;22207:4;22245:2;22234:9;22230:18;22222:26;;22294:9;22288:4;22284:20;22280:1;22269:9;22265:17;22258:47;22322:131;22448:4;22322:131;:::i;:::-;22314:139;;22041:419;;;:::o;22466:224::-;22606:34;22602:1;22594:6;22590:14;22583:58;22675:7;22670:2;22662:6;22658:15;22651:32;22466:224;:::o;22696:366::-;22838:3;22859:67;22923:2;22918:3;22859:67;:::i;:::-;22852:74;;22935:93;23024:3;22935:93;:::i;:::-;23053:2;23048:3;23044:12;23037:19;;22696:366;;;:::o;23068:419::-;23234:4;23272:2;23261:9;23257:18;23249:26;;23321:9;23315:4;23311:20;23307:1;23296:9;23292:17;23285:47;23349:131;23475:4;23349:131;:::i;:::-;23341:139;;23068:419;;;:::o;23493:222::-;23633:34;23629:1;23621:6;23617:14;23610:58;23702:5;23697:2;23689:6;23685:15;23678:30;23493:222;:::o;23721:366::-;23863:3;23884:67;23948:2;23943:3;23884:67;:::i;:::-;23877:74;;23960:93;24049:3;23960:93;:::i;:::-;24078:2;24073:3;24069:12;24062:19;;23721:366;;;:::o;24093:419::-;24259:4;24297:2;24286:9;24282:18;24274:26;;24346:9;24340:4;24336:20;24332:1;24321:9;24317:17;24310:47;24374:131;24500:4;24374:131;:::i;:::-;24366:139;;24093:419;;;:::o;24518:410::-;24558:7;24581:20;24599:1;24581:20;:::i;:::-;24576:25;;24615:20;24633:1;24615:20;:::i;:::-;24610:25;;24670:1;24667;24663:9;24692:30;24710:11;24692:30;:::i;:::-;24681:41;;24871:1;24862:7;24858:15;24855:1;24852:22;24832:1;24825:9;24805:83;24782:139;;24901:18;;:::i;:::-;24782:139;24566:362;24518:410;;;;:::o;24934:194::-;24974:4;24994:20;25012:1;24994:20;:::i;:::-;24989:25;;25028:20;25046:1;25028:20;:::i;:::-;25023:25;;25072:1;25069;25065:9;25057:17;;25096:1;25090:4;25087:11;25084:37;;;25101:18;;:::i;:::-;25084:37;24934:194;;;;:::o;25134:179::-;25274:31;25270:1;25262:6;25258:14;25251:55;25134:179;:::o;25319:366::-;25461:3;25482:67;25546:2;25541:3;25482:67;:::i;:::-;25475:74;;25558:93;25647:3;25558:93;:::i;:::-;25676:2;25671:3;25667:12;25660:19;;25319:366;;;:::o;25691:419::-;25857:4;25895:2;25884:9;25880:18;25872:26;;25944:9;25938:4;25934:20;25930:1;25919:9;25915:17;25908:47;25972:131;26098:4;25972:131;:::i;:::-;25964:139;;25691:419;;;:::o;26116:147::-;26217:11;26254:3;26239:18;;26116:147;;;;:::o;26269:114::-;;:::o;26389:398::-;26548:3;26569:83;26650:1;26645:3;26569:83;:::i;:::-;26562:90;;26661:93;26750:3;26661:93;:::i;:::-;26779:1;26774:3;26770:11;26763:18;;26389:398;;;:::o;26793:379::-;26977:3;26999:147;27142:3;26999:147;:::i;:::-;26992:154;;27163:3;27156:10;;26793:379;;;:::o;27178:245::-;27318:34;27314:1;27306:6;27302:14;27295:58;27387:28;27382:2;27374:6;27370:15;27363:53;27178:245;:::o;27429:366::-;27571:3;27592:67;27656:2;27651:3;27592:67;:::i;:::-;27585:74;;27668:93;27757:3;27668:93;:::i;:::-;27786:2;27781:3;27777:12;27770:19;;27429:366;;;:::o;27801:419::-;27967:4;28005:2;27994:9;27990:18;27982:26;;28054:9;28048:4;28044:20;28040:1;28029:9;28025:17;28018:47;28082:131;28208:4;28082:131;:::i;:::-;28074:139;;27801:419;;;:::o;28226:225::-;28366:34;28362:1;28354:6;28350:14;28343:58;28435:8;28430:2;28422:6;28418:15;28411:33;28226:225;:::o;28457:366::-;28599:3;28620:67;28684:2;28679:3;28620:67;:::i;:::-;28613:74;;28696:93;28785:3;28696:93;:::i;:::-;28814:2;28809:3;28805:12;28798:19;;28457:366;;;:::o;28829:419::-;28995:4;29033:2;29022:9;29018:18;29010:26;;29082:9;29076:4;29072:20;29068:1;29057:9;29053:17;29046:47;29110:131;29236:4;29110:131;:::i;:::-;29102:139;;28829:419;;;:::o;29254:180::-;29302:77;29299:1;29292:88;29399:4;29396:1;29389:15;29423:4;29420:1;29413:15;29440:180;29488:77;29485:1;29478:88;29585:4;29582:1;29575:15;29609:4;29606:1;29599:15;29626:143;29683:5;29714:6;29708:13;29699:22;;29730:33;29757:5;29730:33;:::i;:::-;29626:143;;;;:::o;29775:351::-;29845:6;29894:2;29882:9;29873:7;29869:23;29865:32;29862:119;;;29900:79;;:::i;:::-;29862:119;30020:1;30045:64;30101:7;30092:6;30081:9;30077:22;30045:64;:::i;:::-;30035:74;;29991:128;29775:351;;;;:::o;30132:85::-;30177:7;30206:5;30195:16;;30132:85;;;:::o;30223:158::-;30281:9;30314:61;30332:42;30341:32;30367:5;30341:32;:::i;:::-;30332:42;:::i;:::-;30314:61;:::i;:::-;30301:74;;30223:158;;;:::o;30387:147::-;30482:45;30521:5;30482:45;:::i;:::-;30477:3;30470:58;30387:147;;:::o;30540:114::-;30607:6;30641:5;30635:12;30625:22;;30540:114;;;:::o;30660:184::-;30759:11;30793:6;30788:3;30781:19;30833:4;30828:3;30824:14;30809:29;;30660:184;;;;:::o;30850:132::-;30917:4;30940:3;30932:11;;30970:4;30965:3;30961:14;30953:22;;30850:132;;;:::o;30988:108::-;31065:24;31083:5;31065:24;:::i;:::-;31060:3;31053:37;30988:108;;:::o;31102:179::-;31171:10;31192:46;31234:3;31226:6;31192:46;:::i;:::-;31270:4;31265:3;31261:14;31247:28;;31102:179;;;;:::o;31287:113::-;31357:4;31389;31384:3;31380:14;31372:22;;31287:113;;;:::o;31436:732::-;31555:3;31584:54;31632:5;31584:54;:::i;:::-;31654:86;31733:6;31728:3;31654:86;:::i;:::-;31647:93;;31764:56;31814:5;31764:56;:::i;:::-;31843:7;31874:1;31859:284;31884:6;31881:1;31878:13;31859:284;;;31960:6;31954:13;31987:63;32046:3;32031:13;31987:63;:::i;:::-;31980:70;;32073:60;32126:6;32073:60;:::i;:::-;32063:70;;31919:224;31906:1;31903;31899:9;31894:14;;31859:284;;;31863:14;32159:3;32152:10;;31560:608;;;31436:732;;;;:::o;32174:831::-;32437:4;32475:3;32464:9;32460:19;32452:27;;32489:71;32557:1;32546:9;32542:17;32533:6;32489:71;:::i;:::-;32570:80;32646:2;32635:9;32631:18;32622:6;32570:80;:::i;:::-;32697:9;32691:4;32687:20;32682:2;32671:9;32667:18;32660:48;32725:108;32828:4;32819:6;32725:108;:::i;:::-;32717:116;;32843:72;32911:2;32900:9;32896:18;32887:6;32843:72;:::i;:::-;32925:73;32993:3;32982:9;32978:19;32969:6;32925:73;:::i;:::-;32174:831;;;;;;;;:::o;33011:332::-;33132:4;33170:2;33159:9;33155:18;33147:26;;33183:71;33251:1;33240:9;33236:17;33227:6;33183:71;:::i;:::-;33264:72;33332:2;33321:9;33317:18;33308:6;33264:72;:::i;:::-;33011:332;;;;;:::o
Swarm Source
ipfs://8a1f5c7d6f1d121b7a383919cd806e38bb35eaa28330f8e4f8929b22d664bedf
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.