Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Redeem | 21330846 | 56 days ago | IN | 0 ETH | 0.00132937 | ||||
Set Enable Fee | 20013173 | 240 days ago | IN | 0 ETH | 0.0005259 | ||||
Set Manager | 19723587 | 280 days ago | IN | 0 ETH | 0.0003997 | ||||
Set Manager | 19324543 | 336 days ago | IN | 0 ETH | 0.0015281 | ||||
Set Manager | 18989003 | 383 days ago | IN | 0 ETH | 0.00079574 | ||||
Set Manager | 18989000 | 383 days ago | IN | 0 ETH | 0.00046759 | ||||
Set Manager | 18943358 | 390 days ago | IN | 0 ETH | 0.00088331 | ||||
Set Manager | 18782154 | 412 days ago | IN | 0 ETH | 0.00180368 | ||||
Set Manager | 18763441 | 415 days ago | IN | 0 ETH | 0.0018997 | ||||
Set Manager | 18763433 | 415 days ago | IN | 0 ETH | 0.00186511 | ||||
Transfer Ownersh... | 18763383 | 415 days ago | IN | 0 ETH | 0.00116373 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x82448241...2F77B8Bab The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
LCBridgev2LQDX
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-11 */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.0 <0.9.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, uint256 amount ) external returns (bool); } library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } 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 { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } interface IERC20Permit { function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function nonces(address owner) external view returns (uint256); function DOMAIN_SEPARATOR() external view returns (bytes32); } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface ILQDX is IERC20 { function mint(address account, uint256 amount) external; function burn(address account, uint256 amount) external; } contract LCBridgev2LQDX is Ownable { using SafeERC20 for IERC20; using SafeERC20 for ILQDX; address public poolToken; uint256 public chainId; address public treasury; mapping (address => bool) public noFeeWallets; mapping (address => bool) public managers; bool public enableFee = false; uint256 public swapFee = 5000; uint256 private constant coreDecimal = 1000000; struct SwapVoucher { uint256 amount; uint256 outChain; address toAccount; address refundAccount; } uint256 private swapIndex = 1; mapping (uint256 => SwapVoucher) public voucherLists; modifier onlyManager() { require(managers[msg.sender], "LCBridgev2: !manager"); _; } event Swap(address operator, address receiver, address refund, uint256 amount, uint256 srcChainId, uint256 desChainId, uint256 swapIndex); event Redeem(address operator, address account, uint256 amount, uint256 srcChainId, uint256 swapIndex); event Refund(address operator, address account, uint256 index, uint256 amount); event CutFee(address treasury, uint256 treasuryFee); constructor( address _poolToken, uint256 _chainId, address _treasury ) { require(_poolToken != address(0), "LCBridgev2: Treasury"); require(_treasury != address(0), "LCBridgev2: Treasury"); poolToken = _poolToken; chainId = _chainId; treasury = _treasury; managers[msg.sender] = true; } function swap(address _to, uint256 _amount, address _refund, uint256 _outChainID) public payable returns(uint256) { uint256 amount = IERC20(poolToken).balanceOf(address(this)); IERC20(poolToken).safeTransferFrom(msg.sender, address(this), _amount); amount = IERC20(poolToken).balanceOf(address(this)) - amount; if (enableFee && noFeeWallets[msg.sender] == false) { amount = _cutFee(amount); } voucherLists[swapIndex] = SwapVoucher(amount, _outChainID, _to, _refund); emit Swap(msg.sender, _to, _refund, amount, chainId, _outChainID, swapIndex); swapIndex ++; return amount; } function redeem(address account, uint256 amount, uint256 srcChainId, uint256 _swapIndex, uint256 operatorFee) public onlyManager returns(uint256) { require(amount >= operatorFee, "LCBridgev2: Few redeem liquidity"); amount -= operatorFee; if (amount > 0) { uint256 balance = ILQDX(poolToken).balanceOf(address(this)); if (balance < amount) { ILQDX(poolToken).mint(address(this), amount - balance); } ILQDX(poolToken).safeTransfer(account, amount); emit Redeem(msg.sender, account, amount, srcChainId, _swapIndex); } return amount; } function refund(uint256 _index) public onlyManager returns(uint256) { uint256 amount = voucherLists[_index].amount; uint256 balance = ILQDX(poolToken).balanceOf(address(this)); if (balance < amount) { ILQDX(poolToken).mint(address(this), amount - balance); } ILQDX(poolToken).mint(voucherLists[_index].refundAccount, amount); emit Refund(msg.sender, voucherLists[_index].refundAccount, _index, amount); return amount; } function setManager(address account, bool access) public onlyOwner { managers[account] = access; } function setNoFeeWallets(address account, bool access) public onlyManager { noFeeWallets[account] = access; } function setSwapFee(uint256 _swapFee) public onlyManager { swapFee = _swapFee; } function setEnableFee(bool _enableFee) public onlyManager { enableFee = _enableFee; } function setTreasury(address _treasury) public onlyManager { treasury = _treasury; } function _cutFee(uint256 _amount) internal returns(uint256) { if (_amount > 0) { uint256 fee = _amount * swapFee / coreDecimal; if (fee > 0) { IERC20(poolToken).safeTransfer(treasury, fee); } emit CutFee(treasury, fee); return _amount - fee; } return 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_poolToken","type":"address"},{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"treasury","type":"address"},{"indexed":false,"internalType":"uint256","name":"treasuryFee","type":"uint256"}],"name":"CutFee","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":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"srcChainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapIndex","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"address","name":"refund","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"srcChainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"desChainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapIndex","type":"uint256"}],"name":"Swap","type":"event"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"managers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noFeeWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"srcChainId","type":"uint256"},{"internalType":"uint256","name":"_swapIndex","type":"uint256"},{"internalType":"uint256","name":"operatorFee","type":"uint256"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"refund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableFee","type":"bool"}],"name":"setEnableFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"access","type":"bool"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"access","type":"bool"}],"name":"setNoFeeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapFee","type":"uint256"}],"name":"setSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_refund","type":"address"},{"internalType":"uint256","name":"_outChainID","type":"uint256"}],"name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"voucherLists","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outChain","type":"uint256"},{"internalType":"address","name":"toAccount","type":"address"},{"internalType":"address","name":"refundAccount","type":"address"}],"stateMutability":"view","type":"function"}]
Deployed Bytecode
0x6080604052600436106101145760003560e01c80639a8a0592116100a0578063d8e0027111610064578063d8e0027114610350578063e3e715b414610370578063f0f4426014610390578063f2fde38b146103b0578063fdff9b4d146103d057600080fd5b80639a8a05921461025c578063a49fdb4914610272578063a5e90eee14610292578063c0e34105146102b2578063cbdf382c1461033057600080fd5b806354cf2aeb116100e757806354cf2aeb146101c857806361d027b3146101de578063715018a6146102165780638a0ccd561461022b5780638da5cb5b1461023e57600080fd5b8063278ecde1146101195780632df28dac1461014c57806330d2091d1461018c57806334e19907146101a6575b600080fd5b34801561012557600080fd5b50610139610134366004611021565b610400565b6040519081526020015b60405180910390f35b34801561015857600080fd5b5061017c610167366004611051565b60046020526000908152604090205460ff1681565b6040519015158152602001610143565b34801561019857600080fd5b5060065461017c9060ff1681565b3480156101b257600080fd5b506101c66101c1366004611021565b610621565b005b3480156101d457600080fd5b5061013960075481565b3480156101ea57600080fd5b506003546101fe906001600160a01b031681565b6040516001600160a01b039091168152602001610143565b34801561022257600080fd5b506101c6610655565b61013961023936600461106c565b610669565b34801561024a57600080fd5b506000546001600160a01b03166101fe565b34801561026857600080fd5b5061013960025481565b34801561027e57600080fd5b5061013961028d3660046110b0565b61089c565b34801561029e57600080fd5b506101c66102ad366004611100565b610a99565b3480156102be57600080fd5b506103016102cd366004611021565b6009602052600090815260409020805460018201546002830154600390930154919290916001600160a01b03918216911684565b6040805194855260208501939093526001600160a01b0391821692840192909252166060820152608001610143565b34801561033c57600080fd5b506001546101fe906001600160a01b031681565b34801561035c57600080fd5b506101c661036b366004611137565b610acc565b34801561037c57600080fd5b506101c661038b366004611100565b610b0e565b34801561039c57600080fd5b506101c66103ab366004611051565b610b68565b3480156103bc57600080fd5b506101c66103cb366004611051565b610bb9565b3480156103dc57600080fd5b5061017c6103eb366004611051565b60056020526000908152604090205460ff1681565b3360009081526005602052604081205460ff166104385760405162461bcd60e51b815260040161042f90611154565b60405180910390fd5b6000828152600960205260408082205460015491516370a0823160e01b81523060048201529092916001600160a01b0316906370a0823190602401602060405180830381865afa158015610490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b49190611182565b905081811015610539576001546001600160a01b03166340c10f19306104da84866111b1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561052057600080fd5b505af1158015610534573d6000803e3d6000fd5b505050505b600154600085815260096020526040908190206003015490516340c10f1960e01b81526001600160a01b039182166004820152602481018590529116906340c10f1990604401600060405180830381600087803b15801561059957600080fd5b505af11580156105ad573d6000803e3d6000fd5b5050506000858152600960209081526040918290206003015482513381526001600160a01b0390911691810191909152908101869052606081018490527f82c4addd7df9bb5b801dcdeb0a67eb8bda3d9e213af78965d584b0be8cb63660915060800160405180910390a15090505b919050565b3360009081526005602052604090205460ff166106505760405162461bcd60e51b815260040161042f90611154565b600755565b61065d610c32565b6106676000610c8c565b565b6001546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156106b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106da9190611182565b6001549091506106f5906001600160a01b0316333088610cdc565b6001546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa15801561073d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107619190611182565b61076b91906111b1565b60065490915060ff16801561079057503360009081526004602052604090205460ff16155b156107a15761079e81610d4d565b90505b604080516080808201835283825260208083018781526001600160a01b038b81168587018181528b8316606080890182815260088054600090815260098a528c90209a518b55965160018b015592516002808b0180549288166001600160a01b031993841617905593516003909a0180549a909616991698909817909355549254875133815294850191909152958301529281018590529081019190915260a0810185905260c08101919091527f0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db9060e00160405180910390a16008805490600061088b836111ca565b90915550909150505b949350505050565b3360009081526005602052604081205460ff166108cb5760405162461bcd60e51b815260040161042f90611154565b8185101561091b5760405162461bcd60e51b815260206004820181905260248201527f4c4342726964676576323a204665772072656465656d206c6971756964697479604482015260640161042f565b61092582866111b1565b94508415610a8f576001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610976573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099a9190611182565b905085811015610a1f576001546001600160a01b03166340c10f19306109c0848a6111b1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015610a0657600080fd5b505af1158015610a1a573d6000803e3d6000fd5b505050505b600154610a36906001600160a01b03168888610df7565b604080513381526001600160a01b038916602082015290810187905260608101869052608081018590527f215abfcd108b85fbee47f26fda2de66f90f14fa5fcaf0201698ad8ac9323545f9060a00160405180910390a1505b5092949350505050565b610aa1610c32565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b3360009081526005602052604090205460ff16610afb5760405162461bcd60e51b815260040161042f90611154565b6006805460ff1916911515919091179055565b3360009081526005602052604090205460ff16610b3d5760405162461bcd60e51b815260040161042f90611154565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b3360009081526005602052604090205460ff16610b975760405162461bcd60e51b815260040161042f90611154565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b610bc1610c32565b6001600160a01b038116610c265760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042f565b610c2f81610c8c565b50565b6000546001600160a01b031633146106675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052610d479085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610e2c565b50505050565b60008115610def576000620f424060075484610d6991906111e3565b610d7391906111fa565b90508015610d9857600354600154610d98916001600160a01b03918216911683610df7565b600354604080516001600160a01b039092168252602082018390527f65a4757744f091de9e03e6f677c42621cdbe4eb8d7e8b5db0abef44cdfdbfcd4910160405180910390a1610de881846111b1565b9392505050565b506000919050565b6040516001600160a01b038316602482015260448101829052610e2790849063a9059cbb60e01b90606401610d10565b505050565b6000610e81826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610efe9092919063ffffffff16565b805190915015610e275780806020019051810190610e9f919061121c565b610e275760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161042f565b6060610894848460008585600080866001600160a01b03168587604051610f25919061125d565b60006040518083038185875af1925050503d8060008114610f62576040519150601f19603f3d011682016040523d82523d6000602084013e610f67565b606091505b5091509150610f7887838387610f83565b979650505050505050565b60608315610ff2578251600003610feb576001600160a01b0385163b610feb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161042f565b5081610894565b61089483838151156110075781518083602001fd5b8060405162461bcd60e51b815260040161042f9190611279565b60006020828403121561103357600080fd5b5035919050565b80356001600160a01b038116811461061c57600080fd5b60006020828403121561106357600080fd5b610de88261103a565b6000806000806080858703121561108257600080fd5b61108b8561103a565b9350602085013592506110a06040860161103a565b9396929550929360600135925050565b600080600080600060a086880312156110c857600080fd5b6110d18661103a565b97602087013597506040870135966060810135965060800135945092505050565b8015158114610c2f57600080fd5b6000806040838503121561111357600080fd5b61111c8361103a565b9150602083013561112c816110f2565b809150509250929050565b60006020828403121561114957600080fd5b8135610de8816110f2565b6020808252601490820152732621a13934b233b2bb191d1010b6b0b730b3b2b960611b604082015260600190565b60006020828403121561119457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156111c4576111c461119b565b92915050565b6000600182016111dc576111dc61119b565b5060010190565b80820281158282048414176111c4576111c461119b565b60008261121757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561122e57600080fd5b8151610de8816110f2565b60005b8381101561125457818101518382015260200161123c565b50506000910152565b6000825161126f818460208701611239565b9190910192915050565b6020815260008251806020840152611298816040850160208701611239565b601f01601f1916919091016040019291505056fea26469706673582212206bd0b203596b0717615eb4bdde5dc6e183fc49bff006658f0ce3feb0aa72f24464736f6c63430008130033
Deployed Bytecode Sourcemap
8360:4039:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11083:464;;;;;;;;;;-1:-1:-1;11083:464:0;;;;;:::i;:::-;;:::i;:::-;;;345:25:1;;;333:2;318:18;11083:464:0;;;;;;;;8549:45;;;;;;;;;;-1:-1:-1;8549:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;915:14:1;;908:22;890:41;;878:2;863:18;8549:45:0;750:187:1;8647:29:0;;;;;;;;;;-1:-1:-1;8647:29:0;;;;;;;;11788:88;;;;;;;;;;-1:-1:-1;11788:88:0;;;;;:::i;:::-;;:::i;:::-;;8681:29;;;;;;;;;;;;;;;;8519:23;;;;;;;;;;-1:-1:-1;8519:23:0;;;;-1:-1:-1;;;;;8519:23:0;;;;;;-1:-1:-1;;;;;1106:32:1;;;1088:51;;1076:2;1061:18;8519:23:0;942:203:1;803:97:0;;;;;;;;;;;;;:::i;9833:630::-;;;;;;:::i;:::-;;:::i;584:81::-;;;;;;;;;;-1:-1:-1;630:7:0;653:6;-1:-1:-1;;;;;653:6:0;584:81;;8492:22;;;;;;;;;;;;;;;;10469:608;;;;;;;;;;-1:-1:-1;10469:608:0;;;;;:::i;:::-;;:::i;11553:106::-;;;;;;;;;;-1:-1:-1;11553:106:0;;;;;:::i;:::-;;:::i;8929:52::-;;;;;;;;;;-1:-1:-1;8929:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8929:52:0;;;;;;;;;;;2691:25:1;;;2747:2;2732:18;;2725:34;;;;-1:-1:-1;;;;;2833:15:1;;;2813:18;;;2806:43;;;;2885:15;2880:2;2865:18;;2858:43;2678:3;2663:19;8929:52:0;2460:447:1;8463:24:0;;;;;;;;;;-1:-1:-1;8463:24:0;;;;-1:-1:-1;;;;;8463:24:0;;;11882:93;;;;;;;;;;-1:-1:-1;11882:93:0;;;;;:::i;:::-;;:::i;11665:117::-;;;;;;;;;;-1:-1:-1;11665:117:0;;;;;:::i;:::-;;:::i;11981:92::-;;;;;;;;;;-1:-1:-1;11981:92:0;;;;;:::i;:::-;;:::i;906:191::-;;;;;;;;;;-1:-1:-1;906:191:0;;;;;:::i;:::-;;:::i;8599:41::-;;;;;;;;;;-1:-1:-1;8599:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11083:464;9035:10;11142:7;9026:20;;;:8;:20;;;;;;;;9018:53;;;;-1:-1:-1;;;9018:53:0;;;;;;;:::i;:::-;;;;;;;;;11158:14:::1;11175:20:::0;;;:12:::1;:20;::::0;;;;;:27;11233:9:::1;::::0;11227:41;;-1:-1:-1;;;11227:41:0;;11262:4:::1;11227:41;::::0;::::1;1088:51:1::0;11175:27:0;;11158:14;-1:-1:-1;;;;;11233:9:0::1;::::0;11227:26:::1;::::0;1061:18:1;;11227:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11209:59;;11289:6;11279:7;:16;11275:93;;;11312:9;::::0;-1:-1:-1;;;;;11312:9:0::1;11306:21;11336:4;11343:16;11352:7:::0;11343:6;:16:::1;:::i;:::-;11306:54;::::0;-1:-1:-1;;;;;;11306:54:0::1;::::0;;;;;;-1:-1:-1;;;;;4153:32:1;;;11306:54:0::1;::::0;::::1;4135:51:1::0;4202:18;;;4195:34;4108:18;;11306:54:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11275:93;11380:9;::::0;::::1;11396:20:::0;;;:12:::1;:20;::::0;;;;;;:34:::1;;::::0;11374:65;;-1:-1:-1;;;11374:65:0;;-1:-1:-1;;;;;11396:34:0;;::::1;11374:65;::::0;::::1;4135:51:1::0;4202:18;;;4195:34;;;11380:9:0;::::1;::::0;11374:21:::1;::::0;4108:18:1;;11374:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;11470:20:0::1;::::0;;;:12:::1;:20;::::0;;;;;;;;:34:::1;;::::0;11451:70;;11458:10:::1;4509:34:1::0;;-1:-1:-1;;;;;11470:34:0;;::::1;4559:18:1::0;;;4552:43;;;;4611:18;;;4604:34;;;4669:2;4654:18;;4647:34;;;11451:70:0::1;::::0;-1:-1:-1;4458:3:1;4443:19;11451:70:0::1;;;;;;;-1:-1:-1::0;11535:6:0;-1:-1:-1;9078:1:0::1;11083:464:::0;;;:::o;11788:88::-;9035:10;9026:20;;;;:8;:20;;;;;;;;9018:53;;;;-1:-1:-1;;;9018:53:0;;;;;;;:::i;:::-;11852:7:::1;:18:::0;11788:88::o;803:97::-;551:13;:11;:13::i;:::-;864:30:::1;891:1;864:18;:30::i;:::-;803:97::o:0;9833:630::-;9978:9;;9971:42;;-1:-1:-1;;;9971:42:0;;10007:4;9971:42;;;1088:51:1;9938:7:0;;;;-1:-1:-1;;;;;9978:9:0;;;;9971:27;;1061:18:1;;9971:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10027:9;;9954:59;;-1:-1:-1;10020:70:0;;-1:-1:-1;;;;;10027:9:0;10055:10;10075:4;10082:7;10020:34;:70::i;:::-;10113:9;;10106:42;;-1:-1:-1;;;10106:42:0;;10142:4;10106:42;;;1088:51:1;10151:6:0;;-1:-1:-1;;;;;10113:9:0;;10106:27;;1061:18:1;;10106:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;10168:9;;10097:60;;-1:-1:-1;10168:9:0;;:46;;;;-1:-1:-1;10194:10:0;10181:24;;;;:12;:24;;;;;;;;:33;10168:46;10164:93;;;10234:15;10242:6;10234:7;:15::i;:::-;10225:24;;10164:93;10289:46;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10289:46:0;;;;;;;;;;;;;;;;;;;10276:9;;;-1:-1:-1;10263:23:0;;;:12;:23;;;;;:72;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10263:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10386:7;10408:9;;10347:71;;10352:10;5045:34:1;;5095:18;;;5088:43;;;;5147:18;;;5140:43;5199:18;;;5192:34;;;5242:19;;;5235:35;;;;5025:3;5286:19;;5279:35;;;5345:3;5330:19;;5323:35;;;;10347:71:0;;4994:3:1;4979:19;10347:71:0;;;;;;;10425:9;:12;;;:9;:12;;;:::i;:::-;;;;-1:-1:-1;10451:6:0;;-1:-1:-1;;9833:630:0;;;;;;;:::o;10469:608::-;9035:10;10606:7;9026:20;;;:8;:20;;;;;;;;9018:53;;;;-1:-1:-1;;;9018:53:0;;;;;;;:::i;:::-;10640:11:::1;10630:6;:21;;10622:66;;;::::0;-1:-1:-1;;;10622:66:0;;5711:2:1;10622:66:0::1;::::0;::::1;5693:21:1::0;;;5730:18;;;5723:30;5789:34;5769:18;;;5762:62;5841:18;;10622:66:0::1;5509:356:1::0;10622:66:0::1;10697:21;10707:11:::0;10697:21;::::1;:::i;:::-;::::0;-1:-1:-1;10729:10:0;;10725:325:::1;;10774:9;::::0;10768:41:::1;::::0;-1:-1:-1;;;10768:41:0;;10803:4:::1;10768:41;::::0;::::1;1088:51:1::0;10750:15:0::1;::::0;-1:-1:-1;;;;;10774:9:0::1;::::0;10768:26:::1;::::0;1061:18:1;;10768:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10750:59;;10832:6;10822:7;:16;10818:97;;;10857:9;::::0;-1:-1:-1;;;;;10857:9:0::1;10851:21;10881:4;10888:16;10897:7:::0;10888:6;:16:::1;:::i;:::-;10851:54;::::0;-1:-1:-1;;;;;;10851:54:0::1;::::0;;;;;;-1:-1:-1;;;;;4153:32:1;;;10851:54:0::1;::::0;::::1;4135:51:1::0;4202:18;;;4195:34;4108:18;;10851:54:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10818:97;10929:9;::::0;10923:46:::1;::::0;-1:-1:-1;;;;;10929:9:0::1;10953:7:::0;10962:6;10923:29:::1;:46::i;:::-;10983:59;::::0;;10990:10:::1;6167:34:1::0;;-1:-1:-1;;;;;6237:15:1;;6232:2;6217:18;;6210:43;6269:18;;;6262:34;;;6327:2;6312:18;;6305:34;;;6370:3;6355:19;;6348:35;;;10983:59:0::1;::::0;6116:3:1;6101:19;10983:59:0::1;;;;;;;10741:309;10725:325;-1:-1:-1::0;11065:6:0;;10469:608;-1:-1:-1;;;;10469:608:0:o;11553:106::-;551:13;:11;:13::i;:::-;-1:-1:-1;;;;;11627:17:0;;;::::1;;::::0;;;:8:::1;:17;::::0;;;;:26;;-1:-1:-1;;11627:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11553:106::o;11882:93::-;9035:10;9026:20;;;;:8;:20;;;;;;;;9018:53;;;;-1:-1:-1;;;9018:53:0;;;;;;;:::i;:::-;11947:9:::1;:22:::0;;-1:-1:-1;;11947:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11882:93::o;11665:117::-;9035:10;9026:20;;;;:8;:20;;;;;;;;9018:53;;;;-1:-1:-1;;;9018:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11746:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:30;;-1:-1:-1;;11746:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11665:117::o;11981:92::-;9035:10;9026:20;;;;:8;:20;;;;;;;;9018:53;;;;-1:-1:-1;;;9018:53:0;;;;;;;:::i;:::-;12047:8:::1;:20:::0;;-1:-1:-1;;;;;;12047:20:0::1;-1:-1:-1::0;;;;;12047:20:0;;;::::1;::::0;;;::::1;::::0;;11981:92::o;906:191::-;551:13;:11;:13::i;:::-;-1:-1:-1;;;;;991:22:0;::::1;983:73;;;::::0;-1:-1:-1;;;983:73:0;;6596:2:1;983:73:0::1;::::0;::::1;6578:21:1::0;6635:2;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;-1:-1:-1;;;6725:18:1;;;6718:36;6771:19;;983:73:0::1;6394:402:1::0;983:73:0::1;1063:28;1082:8;1063:18;:28::i;:::-;906:191:::0;:::o;671:126::-;630:7;653:6;-1:-1:-1;;;;;653:6:0;175:10;731:23;723:68;;;;-1:-1:-1;;;723:68:0;;7003:2:1;723:68:0;;;6985:21:1;;;7022:18;;;7015:30;7081:34;7061:18;;;7054:62;7133:18;;723:68:0;6801:356:1;1103:177:0;1173:16;1192:6;;-1:-1:-1;;;;;1205:17:0;;;-1:-1:-1;;;;;;1205:17:0;;;;;;1234:40;;1192:6;;;;;;;1234:40;;1173:16;1234:40;1166:114;1103:177;:::o;6100:224::-;6249:68;;-1:-1:-1;;;;;7420:15:1;;;6249:68:0;;;7402:34:1;7472:15;;7452:18;;;7445:43;7504:18;;;7497:34;;;6222:96:0;;6242:5;;-1:-1:-1;;;6272:27:0;7337:18:1;;6249:68:0;;;;-1:-1:-1;;6249:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;6249:68:0;-1:-1:-1;;;;;;6249:68:0;;;;;;;;;;6222:19;:96::i;:::-;6100:224;;;;:::o;12079:317::-;12130:7;12150:11;;12146:230;;12172:11;8754:7;12196;;12186;:17;;;;:::i;:::-;:31;;;;:::i;:::-;12172:45;-1:-1:-1;12230:7:0;;12226:79;;12281:8;;;12257:9;12250:45;;-1:-1:-1;;;;;12257:9:0;;;;12281:8;12291:3;12250:30;:45::i;:::-;12325:8;;12318:21;;;-1:-1:-1;;;;;12325:8:0;;;4135:51:1;;4217:2;4202:18;;4195:34;;;12318:21:0;;4108:18:1;12318:21:0;;;;;;;12355:13;12365:3;12355:7;:13;:::i;:::-;12348:20;12079:317;-1:-1:-1;;;12079:317:0:o;12146:230::-;-1:-1:-1;12389:1:0;;12079:317;-1:-1:-1;12079:317:0:o;5903:191::-;6029:58;;-1:-1:-1;;;;;4153:32:1;;6029:58:0;;;4135:51:1;4202:18;;;4195:34;;;6002:86:0;;6022:5;;-1:-1:-1;;;6052:23:0;4108:18:1;;6029:58:0;3961:274:1;6002:86:0;5903:191;;;:::o;7886:313::-;7963:23;7989:69;8017:4;7989:69;;;;;;;;;;;;;;;;;7997:5;-1:-1:-1;;;;;7989:27:0;;;:69;;;;;:::i;:::-;8069:17;;7963:95;;-1:-1:-1;8069:21:0;8065:129;;8120:10;8109:30;;;;;;;;;;;;:::i;:::-;8101:85;;;;-1:-1:-1;;;8101:85:0;;8389:2:1;8101:85:0;;;8371:21:1;8428:2;8408:18;;;8401:30;8467:34;8447:18;;;8440:62;-1:-1:-1;;;8518:18:1;;;8511:40;8568:19;;8101:85:0;8187:406:1;2588:217:0;2717:12;2747:52;2769:6;2777:4;2783:1;2786:12;2717;3325;3339:23;3366:6;-1:-1:-1;;;;;3366:11:0;3385:5;3392:4;3366:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3324:73;;;;3411:69;3438:6;3446:7;3455:10;3467:12;3411:26;:69::i;:::-;3404:76;3063:423;-1:-1:-1;;;;;;;3063:423:0:o;4520:413::-;4687:12;4712:7;4708:220;;;4734:10;:17;4755:1;4734:22;4730:109;;-1:-1:-1;;;;;2055:19:0;;;4769:60;;;;-1:-1:-1;;;4769:60:0;;9754:2:1;4769:60:0;;;9736:21:1;9793:2;9773:18;;;9766:30;9832:31;9812:18;;;9805:59;9881:18;;4769:60:0;9552:353:1;4769:60:0;-1:-1:-1;4854:10:0;4847:17;;4708:220;4887:33;4895:10;4907:12;5304:17;;:21;5300:209;;5385:10;5379:17;5434:15;5421:10;5417:2;5413:19;5406:44;5300:209;5488:12;5481:20;;-1:-1:-1;;;5481:20:0;;;;;;;;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;381:173::-;449:20;;-1:-1:-1;;;;;498:31:1;;488:42;;478:70;;544:1;541;534:12;559:186;618:6;671:2;659:9;650:7;646:23;642:32;639:52;;;687:1;684;677:12;639:52;710:29;729:9;710:29;:::i;1150:397::-;1236:6;1244;1252;1260;1313:3;1301:9;1292:7;1288:23;1284:33;1281:53;;;1330:1;1327;1320:12;1281:53;1353:29;1372:9;1353:29;:::i;:::-;1343:39;;1429:2;1418:9;1414:18;1401:32;1391:42;;1452:38;1486:2;1475:9;1471:18;1452:38;:::i;:::-;1150:397;;;;-1:-1:-1;1442:48:1;;1537:2;1522:18;1509:32;;-1:-1:-1;;1150:397:1:o;1552:460::-;1647:6;1655;1663;1671;1679;1732:3;1720:9;1711:7;1707:23;1703:33;1700:53;;;1749:1;1746;1739:12;1700:53;1772:29;1791:9;1772:29;:::i;:::-;1762:39;1848:2;1833:18;;1820:32;;-1:-1:-1;1899:2:1;1884:18;;1871:32;;1950:2;1935:18;;1922:32;;-1:-1:-1;2001:3:1;1986:19;1973:33;;-1:-1:-1;1552:460:1;-1:-1:-1;;;1552:460:1:o;2017:118::-;2103:5;2096:13;2089:21;2082:5;2079:32;2069:60;;2125:1;2122;2115:12;2140:315;2205:6;2213;2266:2;2254:9;2245:7;2241:23;2237:32;2234:52;;;2282:1;2279;2272:12;2234:52;2305:29;2324:9;2305:29;:::i;:::-;2295:39;;2384:2;2373:9;2369:18;2356:32;2397:28;2419:5;2397:28;:::i;:::-;2444:5;2434:15;;;2140:315;;;;;:::o;2912:241::-;2968:6;3021:2;3009:9;3000:7;2996:23;2992:32;2989:52;;;3037:1;3034;3027:12;2989:52;3076:9;3063:23;3095:28;3117:5;3095:28;:::i;3158:344::-;3360:2;3342:21;;;3399:2;3379:18;;;3372:30;-1:-1:-1;;;3433:2:1;3418:18;;3411:50;3493:2;3478:18;;3158:344::o;3507:184::-;3577:6;3630:2;3618:9;3609:7;3605:23;3601:32;3598:52;;;3646:1;3643;3636:12;3598:52;-1:-1:-1;3669:16:1;;3507:184;-1:-1:-1;3507:184:1:o;3696:127::-;3757:10;3752:3;3748:20;3745:1;3738:31;3788:4;3785:1;3778:15;3812:4;3809:1;3802:15;3828:128;3895:9;;;3916:11;;;3913:37;;;3930:18;;:::i;:::-;3828:128;;;;:::o;5369:135::-;5408:3;5429:17;;;5426:43;;5449:18;;:::i;:::-;-1:-1:-1;5496:1:1;5485:13;;5369:135::o;7542:168::-;7615:9;;;7646;;7663:15;;;7657:22;;7643:37;7633:71;;7684:18;;:::i;7715:217::-;7755:1;7781;7771:132;;7825:10;7820:3;7816:20;7813:1;7806:31;7860:4;7857:1;7850:15;7888:4;7885:1;7878:15;7771:132;-1:-1:-1;7917:9:1;;7715:217::o;7937:245::-;8004:6;8057:2;8045:9;8036:7;8032:23;8028:32;8025:52;;;8073:1;8070;8063:12;8025:52;8105:9;8099:16;8124:28;8146:5;8124:28;:::i;9005:250::-;9090:1;9100:113;9114:6;9111:1;9108:13;9100:113;;;9190:11;;;9184:18;9171:11;;;9164:39;9136:2;9129:10;9100:113;;;-1:-1:-1;;9247:1:1;9229:16;;9222:27;9005:250::o;9260:287::-;9389:3;9427:6;9421:13;9443:66;9502:6;9497:3;9490:4;9482:6;9478:17;9443:66;:::i;:::-;9525:16;;;;;9260:287;-1:-1:-1;;9260:287:1:o;9910:396::-;10059:2;10048:9;10041:21;10022:4;10091:6;10085:13;10134:6;10129:2;10118:9;10114:18;10107:34;10150:79;10222:6;10217:2;10206:9;10202:18;10197:2;10189:6;10185:15;10150:79;:::i;:::-;10290:2;10269:15;-1:-1:-1;;10265:29:1;10250:45;;;;10297:2;10246:54;;9910:396;-1:-1:-1;;9910:396:1:o
Swarm Source
ipfs://6bd0b203596b0717615eb4bdde5dc6e183fc49bff006658f0ce3feb0aa72f244
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.